8051 Timer Counter
8051 Timer Counter
8051 Timer Counter
8051 - Timer/Counter
A timer is a specialized type of clock which is used to measure time intervals. A timer that
counts from zero upwards for measuring time elapsed is often called a stopwatch. It is a device
that counts down from a specified time interval and used to generate a time delay, for example,
an hourglass is a timer.
A counter is a device that stores (and sometimes displays) the number of times a particular event
or process occurred, with respect to a clock signal. It is used to count the events happening
outside the microcontroller. In electronics, counters can be implemented quite easily using
register-type circuits such as a flip-flop.
Timer Counter
The register incremented for every The register is incremented considering 1 to 0 transition
machine cycle. at its corresponding to an external input pin (T0, T1).
Maximum count rate is 1/12 of the Maximum count rate is 1/24 of the oscillator frequency.
oscillator frequency.
A timer uses the frequency of the A counter uses an external signal to count pulses.
internal clock, and generates delay.
Timer 1 Register
The 16-bit register of Timer 1 is accessed as low- and high-byte. The low-byte register is called
TL1 (Timer 1 low byte) and the high-byte register is called TH1 (Timer 1 high byte). These
registers can be accessed like any other register. For example, the instruction MOV TL1,
#4H moves the value into the low-byte of Timer 1.
Gate − When set, the timer only runs while INT(0,1) is high.
C/T − Counter/Timer select bit.
M1 − Mode bit 1.
M0 − Mode bit 0.
GATE
Every timer has a means of starting and stopping. Some timers do this by software, some by
hardware, and some have both software and hardware controls. 8051 timers have both software
and hardware controls. The start and stop of a timer is controlled by software using the
instruction SETB TR1 and CLR TR1 for timer 1, and SETB TR0 and CLR TR0 for timer 0.
The SETB instruction is used to start it and it is stopped by the CLR instruction. These
instructions start and stop the timers as long as GATE = 0 in the TMOD register. Timers can be
started and stopped by an external source by making GATE = 1 in the TMOD register.
M1 / M2
M1 M2 Mode
1 1 Spilt mode.
The benefit of auto-reload mode is that you can have the timer to always contain a value from
200 to 255. If you use mode 0 or 1, you would have to check in the code to see the overflow and,
in that case, reset the timer to 200. In this case, precious instructions check the value and/or get
reloaded. In mode 2, the microcontroller takes care of this. Once you have configured a timer in
mode 2, you don't have to worry about checking to see if the timer has overflowed, nor do you
have to worry about resetting the value because the microcontroller hardware will do it all for
you. The auto-reload mode is used for establishing a common baud rate.
Reading a Timer
A 16-bit timer can be read in two ways. Either read the actual value of the timer as a 16-bit
number, or you detect when the timer has overflowed.