Loadlabel

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

Hinweis kann nach Kenntnisnahme deaktiviert werden!

  • Gibt die Adresse einer Programmmarke zurück.
    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

    BASCOM-Quellcode

    1. Adresse = Loadlabel(Labelname)

    TypBeschreibung
    AdresseWord, DWordDie Variable in der die zurückgegebene Adresse geschrieben wird.
    LabelnameLabelEine 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

    1. '$Regfile = "m2560def.dat" '>>64k
    2. $Regfile = "m88def.dat" '<<64k
    3. $Crystal = 16000000
    4. $hwstack=40
    5. $swstack = 16
    6. $framesize = 32
    7. #IF (_BUILD >=20800 AND _ROMSIZE>65536)
    8. dim adresse as dword
    9. #ELSE
    10. dim adresse as word
    11. #ENDIF
    12. dim var_data as byte
    13. '-------------------------------------------
    14. adresse = Loadlabel(Meinlabel)
    15. var_data = Cpeek(Adresse)
    16. end
    17. Meinlabel:
    18. Data 1 , 2 , 4 , 8 , 16 , 32 , 64 , 128
    Alles anzeigen

    9.201 mal gelesen

Kommentare 3

  • Galahat -

    Update gemäß BASCOM-AVR 2.0.8.0

  • tschoeatsch -

    und auch für restore?

  • tschoeatsch -

    Ist loadlabel der richtige Befehl, wenn ich bei lookup die labels umschalten möchte?