beautypg.com

Timers/counters, 1 timer/counter operations, 2 timer 0 – Rainbow Electronics T89C51CC01 User Manual

Page 53

background image

53

T89C51CC01

Rev. D – 17-Dec-01

12. Timers/Counters

The T89C51CC01 implements two general-purpose, 16-bit Timers/Counters. Such are
identified as Timer 0 and Timer 1, and can be independently configured to operate in a
variety of modes as a Timer or an event Counter. When operating as a Timer, the
Timer/Counter runs for a programmed length of time, then issues an interrupt request.
When operating as a Counter, the Timer/Counter counts negative transitions on an
external pin. After a preset number of counts, the Counter issues an interrupt request.
The various operating modes of each Timer/Counter are described in the following
sections.

12.1 Timer/Counter
Operations

A basic operation is Timer registers THx and TLx (x= 0, 1) connected in cascade to form
a 16-bit Timer. Setting the run control bit (TRx) in TCON register (see Figure 20) turns
the Timer on by allowing the selected input to increment TLx. When TLx overflows it
increments THx; when THx overflows it sets the Timer overflow flag (TFx) in TCON reg-
ister. Setting the TRx does not clear the THx and TLx Timer registers. Timer registers
can be accessed to obtain the current count or to enter preset values. They can be read
at any time but TRx bit must be cleared to preset their values, otherwise the behavior of
the Timer/Counter is unpredictable.

The C/Tx# control bit selects Timer operation or Counter operation by selecting the
divided-down peripheral clock or external pin Tx as the source for the counted signal.
TRx bit must be cleared when changing the mode of operation, otherwise the behavior
of the Timer/Counter is unpredictable.
For Timer operation (C/Tx#= 0), the Timer register counts the divided-down peripheral
clock. The Timer register is incremented once every peripheral cycle (6 peripheral clock
periods). The Timer clock rate is F

PER

/ 6, i.e. F

OSC

/ 12 in standard mode or F

OSC

/ 6 in

X2 mode.
For Counter operation (C/Tx#= 1), the Timer register counts the negative transitions on
the Tx external input pin. The external input is sampled every peripheral cycles. When
the sample is high in one cycle and low in the next one, the Counter is incremented.
Since it takes 2 cycles (12 peripheral clock periods) to recognize a negative transition,
the maximum count rate is F

PER

/ 12, i.e. F

OSC

/ 24 in standard mode or F

OSC

/ 12 in X2

mode. There are no restrictions on the duty cycle of the external input signal, but to
ensure that a given level is sampled at least once before it changes, it should be held for
at least one full peripheral cycle.

12.2 Timer 0

Timer 0 functions as either a Timer or event Counter in four modes of operation.
Figure 22 to Figure 25 show the logical configuration of each mode.

Timer 0 is controlled by the four lower bits of TMOD register (see Figure 21) and bits 0,
1, 4 and 5 of TCON register (see Figure 20). TMOD register selects the method of Timer
gating (GATE0), Timer or Counter operation (T/C0#) and mode of operation (M10 and
M00). TCON register provides Timer 0 control functions: overflow flag (TF0), run control
bit (TR0), interrupt flag (IE0) and interrupt type control bit (IT0).
For normal Timer operation (GATE0= 0), setting TR0 allows TL0 to be incremented by
the selected input. Setting GATE0 and TR0 allows external pin INT0# to control Timer
operation.
Timer 0 overflow (count rolls over from all 1s to all 0s) sets TF0 flag generating an inter-
rupt request.
It is important to stop Timer/Counter before changing mode.

12.2.1 Mode 0 (13-bit Timer)

Mode 0 configures Timer 0 as an 13-bit Timer which is set up as an 8-bit Timer (TH0
register) with a modulo 32 prescaler implemented with the lower five bits of TL0 register
(see Figure 22). The upper three bits of TL0 register are indeterminate and should be
ignored. Prescaler overflow increments TH0 register.