Ad Code

What are the timer and its registers?

What are the timers and its registers?

banner for what is timer

  • As their name suggests, the main purpose of a timer is to measure time and count external events.
  • The 8051 microcontrollers have 2 timer/counters called T0 and T1.
  • Timers can be used for generating clock pulses used for serial communication i.e. Baudrate.

Some Timer registers are

  1. Load registers
  2. TMOD registers
  3. TCON registers

1. Load registers


explanation of load registers

  • Load registers are used to load timer counts.
  • These registers are of 16 bit.
  • The lower bit registers are called TL0/TL1.
  • The higher bit registers are called TH0/TH1.
  • TH0/TL0 is called timer 0.
  • TH1/TL1 is called timer 1.

2. TMOD (Timer mode) register

explanation of TMOD register

  • Both timer 0 and timer 1 use the same register called TMOD (Timer mode) to set the various timer operation modes.
  • TMOD is an 8-bit register.
  • The lower 4 bit for timer 0 and upper 4 bit for timer 1.
  • The upper 2 bits i.e. Gate and C/T are used to specify the operation.
  • The lower 2 bits i.e. M0 and M1 are used to set timer modes.

Different modes of timer

Mode            M1           M2            Operation

0                    0               0               13 bits
1                    0               1               16 bits
2                    1               0                8 bits
3                    1               1                split 

3. TCON ( Timer control ) register

explanation of TCON register


  • The upper 4 bits are used to store the TF and TR bits of both timer 0 and timer 1.
  • The lower 4 bits are used for controlling the interrupt bits.

For Timer 1

  • TF1 = 1 (flag bit is 1 i.e. counting is completed)
  • TF1 = 0 (flag bit is zero)
  • TR1 = 1 (start counting in timer 1)
  • TR1 = 0 (stop counting in timer 1)

For Timer 0

  • TF0 = 1 (flag bit is 1 i.e. counting completed)
  • TF0 = 0 (flag bit is 0)
  • TR0 = 1 (start counting in Timer 0)
  • TR0 = 0 (stop counting in Timer 0)