Tmod & Tcon
Tmod & Tcon
Tmod & Tcon
Introduction -
1
Timer/Counter Registers:
• The timer section itself has some registers which are:
This pair forms the timer/counter. There are two such type of pairs for timer
0 and timer 1 which are named as TH0 and TL0 for timer 0 and similarly
TH1 and TL1 for timer 1.
Each register is 8 bits so a pair forms a 16-bit timer.
While used as timer, these registers hold the starting point of timer whereas
in counter, it contains the final count.
Timer0 registers
Timer0 registers is a 16 bits register and accessed as low byte and high byte.
The low byte is referred as a TL0 and the high byte is referred as TH0. These
registers can be accessed like any other registers.
Timer1 registers
Timer1 registers is also a 16 bits register and is split into two bytes,
referred to as TL1 and TH1.
2
TMOD (timer mode) Register:
TMOD is timer mode register. As the name indicates, it is used to select the
mode of timer.
This is an 8-bit register which is used by both timers 0 and 1 to set the
various timer modes.
Both the timer’s timer 0 and timer 1 use the same register.
In this TMOD register, lower 4 bits are set aside for timer0 and the upper
4 bits are set aside for timer1.
In each case, the lower 2 bits are used to set the timer mode and upper 2
bits to specify the operation.
GATE:
Both the timers have this GATE bit. Every timer has a means of starting
and stopping. Some timers do by software, some by hardware, and some
have both software and hardware controls.
C/T (Counter/Timer):
The second bit is C/T bit and is used to decide whether a timer is used as
a time delay generator or an event counter.
If this bit is 0 then it is used as a timer and if it is 1 then it is used as a
counter.
M1, M0:
3
In upper or lower 4 bits, the last bits third and fourth are known as M1
and M0 respectively. These are used to select the timer mode.
M1 M0 Mode Description
13-bit timer mode. (80-bit timer/counter THx with TLx as 5-bit
0 0 0
prescaler)
16-bit timer mode. 1-bit timer/counters THx and TLx are cascaded,
0 1 1
there is no prescaler.
8-bit auto reload. (8-bit auto reload timer/counter, THx holds a value
1 0 2
that is to be reloaded into TLx each time it overflows.
Mode 1-
• It is a 16-bit timer; therefore it allows values from 0000 to FFFFH to be
loaded into the timer’s registers TL and TH.
• After TH and TL are loaded with a 16-bit initial value, the timer must be
started. We can do it by “SETB TR0” for timer 0 and “SETB TR1” for
timer 1.
4
Mode0-
• Mode 0 is exactly same like mode 1 except that it is a 13-bit timer instead of
16-bit. The 13-bit counter can hold values between 0000 to 1FFFH in TH-
TL.
5
Mode 2-
• It is an 8 bit timer that allows only values of 00 to FFH to be loaded into the
timer’s register TH.
• After TH is loaded with 8 bit value, the 8051 gives a copy of it to TL. Then
the timer must be started. It is done by the instruction “SETB TR0” for timer
0 and “SETB TR1” for timer1. This is like mode 1.
Mode3-
• Mode 3 is also known as a split timer mode. Timer 0 and 1 may be
programmed to be in mode 0, 1 and 2 independently of similar mode for
other timer.
• This is not true for mode 3; timers do not operate independently if mode 3 is
chosen for timer 0.
The hardware way of starting and stopping the timer by an external source is
achieved by making GATE=1 in TMOD register.
6
7
TCON Register
8
TR1: Timer 1 run control (TCON.6TCON Register)
10