Hallo zusammen,

Ich habe eine Frage bezüglich Interrupt-Flag Anforderungen. Ich habe in dem Buch von Roland Walter gelesen, dass ein Interrupt nicht während der Ausführung eines Interrupts abgearbeitet werden kann. Hier wird eine Interrupt-Flag-Anforderung gesetzt, die nach der Return-Funktion abgearbeitet wird.
So weit so gut...
Das ganze wollte ich einmal ausprobieren...und siehe da es klappt nicht:
- Die Gelbe LED soll leuchten
- Bei Interrupt0 (Taste1) soll nur die Grüne LED für 5 Sek leuchten
- Bei Interrupt1 (Taste2) soll nur die Rote LED für 5 Sek leuchten
Der Code unten funktionier auch wie gewollt, nur dass die Interrupt-Flag nicht gesetzt oder ausgeführt wird, wenn ich zwei Tasten hintereinander drücke.
Kann das einer erklären?

Hier der Code:

$regfile "m8def.dat"
$crystal = 3686400

Ddrd = &B00000000 'PD2 und PD3 sind Eingänge
Portd = &B11111111 'PD2 und 3 PullUP ein

Ddrb = &B00001110 'PB 1-3 Ausgänge
Portb = &B00000000 'PB1-7 auf LOW

On Int0 Interrupt0 'INT0 definieren und Labeln
On Int1 Interrupt1 'INT1 definieren und Labeln

Mcucr = &B00000000 'INT0 und INT1 wiederhoen solange L-Pegel
Gicr = &B11000000 'Int einschalten
Sreg.7 = 1 'Int global freigeben

Do
Portb.1 = 0 'Grüne LED aus
Portb.2 = 1 'Gelbe LED ein
Portb.3 = 0 'Rote LED aus
Loop

Interrupt0:
Portb.2 = 0 'Gelbe LED aus
Portb.1 = 1 'Grüne LED für 5 Sek ein
Waitms 5000
Return

Interrupt1:
Portb.2 = 0 'Gelbe LED aus
Portb.3 = 1 'Rote LED für 5 Sek ein
Waitms 5000
Return