Aufgabe: LEDs blinken lassen, mit 0,1 sec Puls-Dauer (5 Hz) sbit LED1 = P1^0; /* Bit 0 von Port P1 */ #define TH0_Startwert 0xfc /* 65536 - 1000 (1 msec)*/ #define TL0_Startwert 0x18 /* ergibt fc18 als Startwert */ /* Hauptprogramm */ void main(void) { char zaehler; TMOD = 0x01; /* Timer 0 als 16 Bit Timer initialisieren */ TH0 = TH0_Startwert; TL0 = TL0_Startwert; zaehler = 0; /* Zähler für die Schleifendurchläufe */ TF0 = 0; /* Timer 0 Überlauf-Flag löschen */ TR0 = 1; /* Timer 0 Run-Bit setzen (Timer starten) */ while (1) /* Endlosschleife */ { if (TF0 == 1) /* d.h.: Timer abgelaufen */ { TF0 = 0; TH0 = TH0_Startwert; TL0 = TL0_Startwert; zaehler++; if (zaehler > 100) /* 100 ms */ { LED1 = ~LED1; /* LED-Bit invertieren */ zaehler = 0; } } } }