Hallo,
Das
incr D
ist so falsch !
Dein Do ... Loop wird tausende male pro Sekunde durchlaufen, nicht nur dann wenn C incrementiert wurde !!
Code:
[...]
C = 0
D = 0
K = 915
Enable Interrupts
Start Timer0
Do
Select Case D
Case 0 : K = 915
Case 1 : K = 916
Case 2 : K = 915
Case 3 : K = 915
Case 4 : K = 916
Case 5 : K = 916
Case 6 : K = 916
Case 7 : K = 916
Case 8 : K = 915
End Select
If C >= K Then
C = 0
Incr D
If D > 8 Then
D = 0
End If
Toggle B
[...]
1. Da C im Interrupt incrementiert wird, solltest du C initialisieren, bevor du den Timer startest.
2. Bei solchen Zählern sollt man immer auf grösser als oder grösser gleich abfragen ( If D > 8 Then).
Falls D irgendwie einen Wert ausserhalb von 0 bis 8 annimmt, läuft deine Schlaufe sonst über 65'000 mal durch, D ist Word, also 16 Bit, bis D endlich auf 0 gesetzt wird!
MfG Peter(TOO)
Lesezeichen