Timer Mode 0

Das Zählregister des Timers in Mode 0 ist 13 Bit lang (stammt noch aus uralten MCS-48-Zeiten ....), wodurch bei einem Zähltakt von 1 MHz alle 8192 µs ein Überlauf stattfindet, bei dem sich der Zähler wieder auf 0 zurücksetzt.

Umgeschaltet wird zwischen Counter- und Timerbetrieb in Mode 0, wie vielleicht schon bekannt, durch das Steuerbit C/!T. Standardmäßig ist in den meisten Fällen der Timerbetrieb durch den internen Tak aktiviert.

Damit der Timer überhaupt funktioniert, benötigt der Zähler Impulse. Diese bekommt er nur, wenn Schalter Sx aktiviert ist. Dafür muss Trx in TCON gesetzt werden (das x steht für den jeweiligen Timer). Damit der Timer 1 beispielsweise Impulse erhält, benötigt man folgenden Befehl:

MOV TCON, #01000000b
Damit wäre der Time 1 eingeschalten

Auch nicht zu vernachlässigen ist das GATE, das jeweils am „Anfang“ der beiden acht Bits gesetzt wird. Es ist das für den Timer zuständige Steuerbit. Ist es „0“, dann ist der Timer aktiviert. Ist es „1“, dann kann nur gezählt werden, wenn an dem, hoffentlich angeschlossenen, externen Anschluss eine „1“, bzw. „H“ anliegt.

Zu guter Letzt noch ein paar Worte zum Überlauf des Timers. Da ist nämlich das zugehörige Interrupt-Request-Flipflop TFx gesetzt. Bei einer Freigabe des entsprechenden Interrupts, wird in die ISR (Interrupt-Service-Routine) gesprungen und TFx automatisch wieder gelöscht.