Hallo zusammen!
Ich will gerade den Befehl icall nutzen um ein menü einzurichten.
Habe allerdings anscheinend ein Problem mit zl und zh.
AVRStudio gibt mir immer den Fehler "syntax error, unexpected REGDEF"
aus.
Könnte da mal jemand einen Blick darauf werfen, wo ich da etwas falsch
mache?
Hier der komplette code:
---------------------------CODE ANFANG-------------------------------
.include "m162def.inc"
.def dashier = r16
ldi dashier, 0x02
;----in der nächsten Zeile wird der Fehler angezeigt----
ldi zl,low (dashier*2) ;hier z.B. 0x02 statt "dashier*2 oder
ldi zh,high(dashier*2) ;"dashier", dann gehts ohne Fehler.
;Allerdings kann ich damit nicht anfangen
icall ;auch mit ijmp ändert sich nichts
ret
punkt1:
nop
ret
punkt2:
nop
ret
punkt3:
nop
ret
dashier:
rjmp punkt1
rjmp punkt2
rjmp punkt3
ende: rjmp ende
---------------------------CODE ENDE--------------------------------
MFG
Samtox
Du musst den Z-Pointer mit einer Konstante laden, nicht mit einer Variable. Die Konstante ist das Label, an dem deine Sprungtabelle beginnt. Und das *2 ist wohl auch nur bei LPM nötig, da hier der wordweise organisierte Flash byteweise angesprochen werden muss. Bei IJMP/ICALL wird der Flash wordweise angesprochen. Siehe: http://www.hanneslux.de/avr/stopuhr/index.html oder http://www.hanneslux.de/avr/zuenduhr/index.html Die Steuerung des Menüs müsste in beiden Codes zu finden sein. ...
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.