Hallo,
Das
incr D
ist so falsch !
Dein Do ... Loop wird tausende male pro Sekunde durchlaufen, nicht nur dann wenn C incrementiert wurde !!
1. Da C im Interrupt incrementiert wird, solltest du C initialisieren, bevor du den Timer startest.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 [...]
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)







Zitieren

Lesezeichen