Gast
#73044
Hallo Forumsteilnehmer, habe bereits vor zwei Wochen mal mein Problem geschildert und auch gute Hilfe bekommen, bin beim Programmieren eines ATTiny12 aber auf noch ein Problem gestossen das ich gar nicht verstehe. Ich will anhand eines Wertes einen anderen Wert aus einer Tabelle im ROM auslesen. Hier meine zwei Beispiele, eines funktioniert, das andere nicht: ;************************************ ;so geht es... .def var = R21 .def delay = R23 ldi Zh, $02 ;setzt Zeiger auf $200 mov Zl, var ;pickt mir meinen Wert aus der Tabelle ab $200 lpm ;kopiert Wert aus Tabelle in R0 mov delay, R0 ;kopiert diesen Wert in meine Variable delay ;*************************************** ;hier bekomme ich als Ergebnis immer 0 in delay .def var = R21 .def delay = R23 ldi Zh, $02 ;setzt Zeiger auf $200 mov Zl, var ;pickt mir meinen Wert aus der Tabelle ab $200 lpm delay, Z ;kopiert Wert aus Tabelle angeblich direkt in delay (R23) ;Ergebnis hier: delay ist IMMER 0 !!! ; Meine Tabelle: .org $100 .DB 0,0,0,0,0,0,0,0,0,0,0,0,132,131,131,130,130,129,129,128 .DB 127 ; und so weiter, insgeamt 256 werte Der Befehl lpm delay, Z ist legal für den ATTiny12 und bringt keine Fehlermeldung. Der Simulator macht es (AVRStudio), das Register ist mit dem ausgelesenen Wert gefüllt. Mein delay im richtigen Leben ist aber immer 0, ist das ein Bug bei ATMEL? Warum muß ich über den Umweg R0 gehen? Frohe Ostern noch und danke für Eure Hilfe. Gruß Thomas