Zitat von
hunikuni
Ich Glaube jetzt funktionietrs.
Also wenn Du noch anderen Code hast, der mag dann funktionieren, der Gezeigte dürfte das nicht.
Code:
Hallimpuls = 0
If Hallimpuls = 0 Then
folgt ein paar Takte aufeinander und somit wird der Else-Zweig
unter normalen Umständen nie durchlaufen und damit wird die Led auch nicht ausgeschaltet.
Es gibt nur eine einzige Ausnahme, nämlich wenn der Int0 genau nach
triggert und das dürfte eher nicht der Fall sein, die Wahrscheinlichkeit dafür beträgt eins zu mehreren Millionen.
So in etwa wär's besser:
Code:
Led:
Disable Int0 ' wird im restlichen Code Int0 nicht erlaubt, so kann dieser Befehl entfallen
EIFR = Bits(INTF0) ' löscht anstehende Interrupts
Hallimpuls = 0
Portd.1 = 1
Do
Enable Int0
Idle
Disable Int0
Loop Until Hallimpuls = 10
Portd.1 = 0
Return
Der Zugriff auf eine Variable größer 8 Bit muss gekapselt werden, sobald ein Interrupt sie verändern kann.
Einen Fehler daraus würdest Du allerdings bei den gezeigten kleinen Werten nicht bemerken.
Warum benötigst Du ein Idle ? Batteriebetrieb ?
Lesezeichen