Suppi!
Danke, mein Code funktioniert.
Für alle, die es interessiert, der Code sieht jetzt so aus!
Code:$regfile = "m48def.dat" ' ATmega48, Alternativ: ATmega88 o. ATmega168 $hwstack = 32 $swstack = 32 $framesize = 32 $crystal = 20000000 ' CPU kann 20MHz Dim SubRoutine as word ' Adresse Subroutine (wird in ISR_Horizontal aufgerufen) SubRoutine = Loadlabel(Test_Routine2) ' Adresse Sub-Routine setzen print hex(SubRoutine) !call Test_Routine1 'SubRoutine = SubRoutine \ 2 print hex(SubRoutine) on int0 ISR_Horizontal nosave enable int0 enable interrupts do nop loop ' Horizontal-Interrupt ISR_Horizontal: push r24 ' r24 sichern lds r24,sreg ' Statusregister nach r24 push r24 ' Statusregister sichern push r30 ' Register Z sichern push r31 lds ZL , {SubRoutine} ' Adresse von SubRoutine nach Z lds ZH , {SubRoutine+1} LSR ZH ' R31 ROR ZL ' R30 Icall ' SubRoutine aufrufen pop r31 ' Z-Register restaurieren pop r30 pop r24 ' Statusregister vom Stack holen sts sreg,r24 ' Statusregister restaurieren pop r24 ' r24 restaurieren Return Test_Routine1: nop Return Test_Routine2: nop Return







Zitieren

Lesezeichen