Gast
#4497
Hi liebe Leute, mal eine allgemeine Frage zu Interrupts: .org $0000 rjmp initio rjmp alarm rjmp testo .org $000f main: ldi r27,$00 ldi r28,$70 rjmp main Dies ist das Beispiel-Hauptprogramm und die Interrupttabelle. Alle Register zum Auslösen der externen Interrupts sind gesetzt. Nach dem Auslösen des Interrupts INT1 wird die Routine "testo" angesprungen: testo: in r0,$3f push r0 nop nop ..... ..... rcall abc rcall efg nop ..... rjmp rde rjmp ztr ..... irq_end: pop r0 out $3f,r0 reti Aus dieser Interruptroutine wird ja nun weiter in Sub-Routinen gesprungen, z.B nach rde. Aus den Sub-Routinen nach dem Sprung wird entweder mit ret oder mit rjmp und Branch-Befehlen nach "irq_end" zurückgehüpft. Eigentlich sollte dann das Hauptprogramm normal weiterlaufen bis zum nächsten Interrupt, aber das tut es nicht. Es funktioniert nur ein einziges mal...... Warum nur? Ich danke euch. Gruß, Günter