CCE 131-Lecture 7
CCE 131-Lecture 7
CCE 131-Lecture 7
CCE131
Lecture 7
8051 Microcontroller-4
❑ The 8051 has two timers/counters, they can be used either as Timers to generate a time delay or as Event
counters to count events happening outside the microcontroller.
❑ Both Timer 0 and Timer 1 are 16 bits wide Since 8051 has an 8-bit architecture, each 16-bits timer is
accessed as two separate registers of low byte and high byte.
❑ The low byte register is called TL0/TL1 and the high byte register is called TH0/TH1.
❑ Both timers 0 and 1 use the same register, called TMOD (timer mode), to set the various timer operation
modes.
Example
Example
❑ Timers of 8051 do starting and stopping by either software or hardware control
❑ The start and stop of the timer are controlled by way of software by the TR (timer start) bits TR0 and TR1.
❑ The hardware way of starting and stopping the timer by an external source is achieved by making GATE=1
in the TMOD register.
Example
Mode 1 Programming
2. After TH and TL are loaded with a 16-bit initial value, the timer must be started. This is done by SETB
After the timer is started, it starts to count up It counts up until it reaches its limit of FFFFH.
3. When it rolls over from FFFFH to 0000, it sets high a flag bit called TF (timer flag) – Each timer has its
own timer flag: TF0 for timer 0, and TF1 for timer 1 – This timer flag can be monitored. When this timer flag
is raised, one option would be to stop the timer with the instructions CLR TR0 or CLR TR1, for timer 0 and
timer 1, respectively
4.After the timer reaches its limit and rolls over, in order to repeat the process. TH and TL must be reloaded
with the original value, and TF must be reloaded to 0.
1. Load the TMOD value register indicating which timer (timer 0 or timer 1) is to be used and which timer
mode (0 or 1) is selected.
2. Load registers TL and TH with initial count value.
4. Keep monitoring the timer flag (TF) with the JNB TFx, target instruction to see if it is raised. Get out of the loop
when TF becomes high.
5. Stop the timer.
1. It is an 8-bit timer; therefore, it allows only values of 00 to FFH to be loaded into the timer’s register TH.
2. After TH is loaded with the 8-bit value, the 8051 gives a copy of it to TL. Then the timer must be started,
this is done by the instruction SETB TR0 for timer 0 and SETB TR1 for timer 1.
3. After the timer is started, it starts to count up by incrementing the TL register. It counts up until it
reaches its limit of FFH. When it rolls over from FFH to 00, it sets high the TF (timer flag).
4. When the TL register rolls from FFH to 0 and TF is set to 1, TL is reloaded automatically with the original
value kept by the TH register. To repeat the process, we must simply clear TF and let it go without any need
by the programmer to reload the original value. This makes mode 2 an auto-reload, in contrast with mode 1
in which the programmer has to reload TH and TL.
To generate a time delay
1. Load the TMOD value register indicating which timer (timer 0 or timer 1) is to be used, and the timer mode
(mode 2) is selected.
2. Load the TH registers with the initial count value.
3. Start timer.
4. Keep monitoring the timer flag (TF) with the JNB TFx, target instruction to see whether it is raised Get out of
the loop when TF goes high.
❑ Timers can also be used as counters counting events happening outside the 8051. When it is used as a
counter, it is a pulse outside of the 8051 that increments the TH, TL registers. TMOD and TH, TL
registers are the same as for the timer discussed previously.
The C/T bit in the TMOD registers decides the source of the clock for the timer.
❑ When C/T = 1, the timer is used as a counter and gets its pulses from outside the 8051. The counter
counts up as pulses are fed from pins 14 and 15, these pins are called T0 (timer 0 input) and T1 (timer 1
input).
Example
Timer with external input (Mode 1)