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)