Sub Power_on
Do
Portb = Wejscie
Loop
End Sub
Sub Encoder:
Disable Int1
Enable Interrupts
If Pind.4 = 0 Then Incr Chanel
If Pind.4 = 1 Then Decr Chanel
If Chanel >= 7 Then Chanel = 1
If Chanel <= 0 Then Chanel = 6
In_encoder:
Select Case Chanel
Case 1 : Wejscie = 1
Case 2 : Wejscie = 2
Case 3 : Wejscie = 4
Case 4 : Wejscie = 8
Case 5 : Wejscie = 16
Case 6 : Wejscie = 32
Case Else : Wejscie = 1
End Select
Waitms 50
Enable Int1
Goto Power_on
End Sub
Wszytkie zmienne zadeklarowałem jako Byte, procedura Encoder wywoływana jest na przerwanie INT1. Problem jest taki: po wykonaniu 60 impulsów obojętnie w którą stronę na porcie pojawia się najpierw liczba 81 (61 impuls) potem 54 (62 impuls) a następnie 1 (63 impuls). Dalej sytuacja się powtarza co 60 impulsów.
Co może być przyczyną takiego zachowania programu
