Also wenn Du noch anderen Code hast, der mag dann funktionieren, der Gezeigte dürfte das nicht.
folgt ein paar Takte aufeinander und somit wird der Else-ZweigCode:Hallimpuls = 0
If Hallimpuls = 0 Then
unter normalen Umständen nie durchlaufen und damit wird die Led auch nicht ausgeschaltet.Code:Else
Portd.1 = 0
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.Code:Hallimpuls = 0
So in etwa wär's besser:
Der Zugriff auf eine Variable größer 8 Bit muss gekapselt werden, sobald ein Interrupt sie verändern kann.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
Einen Fehler daraus würdest Du allerdings bei den gezeigten kleinen Werten nicht bemerken.
Warum benötigst Du ein Idle ? Batteriebetrieb ?