Den Sprung von 201 auf 11 kann ich (noch) nicht erklären aber es gibt einiger Programmier-Fehler in dein Programm umsonst.

Code:
...
unsigned char umschaltpunkt;
...
if(Gettime() > umschaltpunkt)
{
    umschaltpunkt += 1000;
...
Du vergleichst ein Gettime Wert (unsigned long) mit umschaltpunkt (ein unsigned char) das bis jetzt noch kein Anfangswert bekommen hat! Ein unsigned long, das von 0 bis 4294967295 zahlen kann, ist oft größer als ein Wert das von 0 bis 255 sein kann. Das letzte ist aber im Prinzip kein Problem. Nur den Anfangswert ist, weil niemand ahnen kann wann das passieren soll.

Den Erhöhung von umschaltpunkt mit 1000 ist aber ein Problem. 1000 ist großer als den maximale wert das es enthalten kan (255). Genau welcher wert es bekommt nach dieses befehl weiss ich nicht genau. Aber es wurde ungefähr gleich sein als ein Reduktion mit 24. (vielleicht einiger werten mehr oder weniger wegen 2-Komplement Rechnung (Wiki) ).Das soll sicher Kompilier Fehler oder Warnungen gegeben haben müssen!