FB mit variablem Adresszugriff

FinalMistery

Level-1
Beiträge
37
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle zusammen,
ich habe ein kleines Problem, welches ich nicht selbst gelöst bekomme.

Ich möchte einen Funktionsbaustein erstellen, dem ich einen Wert übergebe, der für ein AnfangsByte einer Bytereihe (z.B AB0 bis AB4) steht.
Intern des FBs will ich anhand dieser Zahl nachfolgende Adressierungen beziehen.

Das heißt ich übergebe ihm eine "5" und will dann zugreifen auf AB5, AB6, usw.

mein Lösungsansatz wäre gewesen, dass ich ein DWord übergebe
dann wie folgt:
Code:
 L     #AdressLow_OUT // übergabewert
 T     #temp_AdressLow_OUT

 L     B#16#1   // wert den ich schreiben will
 T     AB [#temp_AdressLow_OUT]

////// Hochzählen des "Pointers"
      L     #temp_AdressLow_OUT
      L     DW#16#1
      +D    
      T     #temp_AdressLow_OUT // müsste ja eins höher sein jetzt
//////

 L     B#16#2 // wert den ich schreiben will
 T     AB [#temp_AdressLow_OUT] // ****1****

Doch leider bekomm ich immer einen Fehler, der in der Zeile entsteht, die mit "****1****" gekennzeichnet ist.
Also muss ihrgendwas mit dem Hochzählen schief gelaufen sein.

Kann mir da jemand weiter helfen??

Gruß
FinalMistery
 
Mit Addition von DW#16#1 hast Du nur die Bitadresse um 1 erhöht. Der folgende Zugriff auf ein Byte führt dann zum Fehler, weil die Bitadresse jetzt nicht mehr 0 ist. Wenn Dein Code so aussieht funktionierts:
l DW#16#1
sld 3
+D

oder so:
l p#1.0
+D

Gruss
HPE
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit Addition von DW#16#1 hast Du nur die Bitadresse um 1 erhöht. Der folgende Zugriff auf ein Byte führt dann zum Fehler, weil die Bitadresse jetzt nicht mehr 0 ist. Wenn Dein Code so aussieht funktionierts:
l DW#16#1
sld 3
+D

oder so:
l p#1.0
+D

Gruss
HPE

Er sollte aber auch gleich die Adresse die in seinen FB reinkommt mit SLD 3 verschieben!
 
schnell, schneller, "Ihr beiden"

Ja super Danke.

Wenn man zu viel C programmiert vergisst man solche wichtigen Einzelheiten ab und zu :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke nochmal Jungs. Wie Ihr es beschrieben habt, funktioniert es jetzt super.

Nur wie geh ich die ganze Sache an, wenn mein anzusprechender Adressbereich größer EB512 ist?
Gibts da eine Möglichkeit wie ich auf diese Adressen schreiben kann?

Gruß
FinalMistery
 
Zurück
Oben