Dieser Befehl ist hilfreich, wenn die Adressen bestimmter Programmstellen benötigt werden. Dafür sind im Programmcode an den gefragten Punkten Programmmarken (Labels) zu platzieren. Mit der Ausführung von Loadlabel wird die entsprechende Programmspeicheradresse in die Zielvariable geschrieben. Die Empfängervariable muss von einem ganzzahligen Datentyp sein, Singles oder Doubles sind nicht erlaubt.
Syntax
Bei Controllertypen mit einem Flash-ROM <=64kB, bzw. ohne Rampenregister, genügt eine Variable vom Typ Word. Ab BASCOM-AVR 2.0.8.0 kann Loadlabel auch auf Systemen >64kB angewendet werden. Dazu wird zusätzlich der Index für das RAMPZ - Register ausgegeben, wenn die Zielvariable vom Typ DWord ist.
Bei älteren BASCOM Versionen ist Loadlabel nur auf Addressen unterhalb 8000hex anwendbar, bzw. auf die ersten verfügbaren 64kB Flash-ROM limitiert.
Als Zielvariable bietet sich dann am besten eine Variable vom Typ Word an.
Loadlabel erzeugt im Übrigen eine Wortadresse * 2 für die Byteadressierbarkeit - wie ADR2.
Beispiel
In diesem Beispiel wird der Typ der Zielvariablen durch bedingte Kompilierung unter Berücksichtigung der BASCOM-Version und der ROM-Größe gesetzt.
Alles anzeigen
Syntax
Typ | Beschreibung | |
Adresse | Word, DWord | Die Variable in der die zurückgegebene Adresse geschrieben wird. |
Labelname | Label | Eine Programmmarke im Programmtext. |
Bei Controllertypen mit einem Flash-ROM <=64kB, bzw. ohne Rampenregister, genügt eine Variable vom Typ Word. Ab BASCOM-AVR 2.0.8.0 kann Loadlabel auch auf Systemen >64kB angewendet werden. Dazu wird zusätzlich der Index für das RAMPZ - Register ausgegeben, wenn die Zielvariable vom Typ DWord ist.
Bei älteren BASCOM Versionen ist Loadlabel nur auf Addressen unterhalb 8000hex anwendbar, bzw. auf die ersten verfügbaren 64kB Flash-ROM limitiert.
Als Zielvariable bietet sich dann am besten eine Variable vom Typ Word an.
Loadlabel erzeugt im Übrigen eine Wortadresse * 2 für die Byteadressierbarkeit - wie ADR2.
Beispiel
In diesem Beispiel wird der Typ der Zielvariablen durch bedingte Kompilierung unter Berücksichtigung der BASCOM-Version und der ROM-Größe gesetzt.
BASCOM-Quellcode
- '$Regfile = "m2560def.dat" '>>64k
- $Regfile = "m88def.dat" '<<64k
- $Crystal = 16000000
- $hwstack=40
- $swstack = 16
- $framesize = 32
- #IF (_BUILD >=20800 AND _ROMSIZE>65536)
- dim adresse as dword
- #ELSE
- dim adresse as word
- #ENDIF
- dim var_data as byte
- '-------------------------------------------
- adresse = Loadlabel(Meinlabel)
- var_data = Cpeek(Adresse)
- end
- Meinlabel:
- Data 1 , 2 , 4 , 8 , 16 , 32 , 64 , 128
9.216 mal gelesen
Galahat -
Update gemäß BASCOM-AVR 2.0.8.0