Also zur gewünschten Funktionsweise des Programms:
Am Int0 ist ein Taster angeschlossen, und wenn der gedrückt wird, dann sollen bestimmte An - Aus - Sequenzen einer weißen LED durchlaufen werden.
Wenn man den Taster nochmal drückt, dann soll der Durchlauf beendet werden.
Und wenn man den Durchlauf ausschaltet, dann soll die LED sofort ausgehen, und nicht erst nach der Wartezeit?
Man könnt doch einfach in die ISR schreiben:
Code:
Onint0:
Toggle B3
If B3 = 0 then
Weiss = 0
End If
Return
Dann würde die LED sofort ausgehen, wenn man den Taster drückt, um den Durchlauf auszuschalten. Das einzige Problem ist, dass man die Wartezeit noch abwarten muss, bis man den Durchlauf wieder einschalten kann.
Eine Warteschleife zu Unterbrechen geht glaub ich nicht so einfach, ich habe zumindest nichts gefunden.
Wenn man es unbedingt braucht, dann muss man entweder auf einen Timer zurückgreifen oder man baut sich eine Warteschleife nach, die eben nur wartet, wenn die Flag auch wirklich gesetzt ist.
Also eine Schleife, die eine Varible runterzählt, und das aber nur, wenn B3 = 1. Wenn B3 = 0 dann hört die "nachgebaute" Schleife auf, zu zählen.
Es wird also überprüft, ob B3 = 1, wenn nein, dann sofort beenden, wenn ja, dann eine Millisekunde warten und von einer Variable eins subtrahieren. Dann das ganze wieder von vorne... (also in einer Do - Loop schleife)
Mfg Thegon
Lesezeichen