8051 timer counter

15,800 views 24 slides Jul 22, 2016
Slide 1
Slide 1 of 24
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24

About This Presentation

8051 timer counter
Introduction�
TMOD Register

TCON Register �
Modes of Operation�
Counters
The microcontroller 8051 has two 16 bit Timer/ Counter registers namely Timer 0 (T0) and Timer 1 (T1) .
When used as a “Timer” the microcontroller is programmed to count the internal clock pulse.
W...


Slide Content

8051 Timer / Counter

Introduction TMOD Register TCON Register Modes of Operation Counters Topics

Introduction The microcontroller 8051 has two 16 bit Timer/ Counter registers namely Timer 0 (T0) and Timer 1 (T1) . When used as a “Timer” the microcontroller is programmed to count the internal clock pulse. When used as a “Counter” the microcontroller is programmed to count external pulses. Maximum count rate is 1/24 of the oscillator frequency.

The 8051 has 2 timers/counters: Timer/Counter 0 Timer/Counter 1 Registers Used in the Timer : Timer 0 registers: TH , TL Exclusive Timer 1 registers: TH 1 , TL 1 TMOD (Timer mode register) Shared by both TCON (Timer control register)

Basic Registers Registers TH x & TL x They are 16 bit wide. These registers store: The time delay as a timer. The number of events as a counter. Timer 0: TH & TL Timer 0 high byte , timer 0 low byte Timer 1: TH 1 & TL 1 Timer 1 high byte, timer 1 low byte

Timer Registers D15 D8 D9 D10 D11 D12 D13 D14 D7 D0 D1 D2 D3 D4 D5 D6 TH0 TL0 D15 D8 D9 D10 D11 D12 D13 D14 D7 D0 D1 D2 D3 D4 D5 D6 TH1 TL1 Timer 0 Timer 1

Timer mode register = TMOD An 8-bit register lower 4 bits : Timer 0 Mode setting (0000 : not used) upper 4 bits : Timer 1 Mode setting (0000 : not used) Not bit-addressable TMOD Register

Functions of individual bits of TMOD GATE C/T M1 M0 GATE C/T M1 M0 Timer 1 Timer 0 (MSB) (LSB) BIT NAME EXPLANATION OF THE FUNCTION TIMER 7 GATE1 When this bit is set the timer will only run when INT1 (P3.3) is high. When this bit is clear the timer will run regardless of the state of INT1. 1 6 C/T1 When this bit is set the timer will count events on T1 (P3.5). When this bit is clear the timer will be incremented every machine cycle. 1 5 T1M1 Timer mode bit 1 4 T1M0 Timer mode bit 1 3 GATE0 When this bit is set the timer will only run when INT0 (P3.2) is high. When this bit is clear the timer will run regardless of the state of INT0. 2 C/T0 When this bit is set the timer will count events on T0 (P3.4). When this bit is clear the timer will be incremented every machine cycle. 1 T0M1 Timer mode bit T0M0 Timer mode bit

0 : Timer operation (clock : Machine cycle) 1 : Counter operation (clock : Tx input pin) C / T GATE C/T M1 M0 GATE C/T M1 M0 Timer 1 Timer 0 (MSB) (LSB)

M0 and M1 select the timer mode for timers 0 & 1. M1 M0 Mode Operating Mode 0 0 13-bit timer mode 8-bit TH x + 5-bit TL x (x= 0 or 1) 0 1 1 16-bit timer mode 8-bit TH x + 8-bit TL x 1 0 2 8-bit auto reload 8-bit auto reload timer/counter; TH x holds a value which is to be reloaded into TL x each time it overflows. 1 1 3 Split timer mode M0,M1

Modes of operation T x M1 T x M0 Timer Mode Description of Mode 13-bit Timer 1 1 16-bit Timer 1 2 8-bit Auto Reload 1 1 3 Split Timer Mode 4 Operating Modes

Timer mode – 0 (The 13 bit Timer) This is a relic mode. Included in 8051 to maintain compatibility with its predecessor 8048. The counters are counting up: TL x will count from 0 to 31. When TL x is incremented from 31, it will “reset” (overflow) to 0. Now TH x will be incremented. Hence effectively only 13 bits are used. Bits 0-4 of TL x . Bits 0-7 of TH x . .

Timer mode – 1 (The 16 bit Timer) This is the most commonly used mode. This mode operates in a fashion almost like the Mode 0, only this time all 16 bits are used. The counting: TL x is incremented from 0(00h) to 255( FFh ). When TL x is incremented from 255, it resets to 0 and causes TH x to be incremented by 1. Hence we have a maximum count of ‘65,025’ (255*255) machine cycles.

Mode 1- Programming ÷ 12 TR TH TL TF Timer overflow flag C/T = 0 TF goes high when FFFF XTAL oscillator

Timer Mode – 2 (8 bit Auto Reload) When a timer is in mode 2, TH x holds the "reload value" and TL x is the timer itself. Thus the counting proceeds as: TL x starts counting up. TL x reaches 255 and is subsequently incremented. Now instead of resetting to 0 (as in the case of modes 0 and 1), it will be reset to the value stored in TH x .

Mode 2 With Internal Input XTAL oscillator ÷ 12 TR1 TL1 TH1 TF1 overflow flag reload C/T = 0

When Timer 0 is placed in mode 3, it essentially becomes two separate 8-bit timers. That is to say, Timer 0 is TL and Timer 1 is TH . Both timers count from 0 to 255 and overflow back to 0 independently. What happens to timer1? All the bits that are related to Timer 1 will now be tied to TH . While Timer 0 is in split mode, the real Timer 1 (i.e. TH 1 and TL 1 ) can be put into modes 0, 1 or 2 normally. However, you may not start or stop the real timer 1 since the bits that do that are now linked to TH . The real timer 1, in this case, will be incremented every machine cycle no matter what . Timer Mode – 3 (Split Timer)

Mode 3 With Internal Input

Finally, there is one more SFR that controls the two timers and provides valuable information about them. Timer control register: TCON Upper nibble : TIMER Lower nibble : INTERRUPTS TCON

The Register bits represent the following values : BIT NAME BIT ADDRESS EXPLANATION OF THE FUNCTION TIMER 7 TF1 8Fh Timer 1 Overflow. This bit is set by the microcontroller when Timer 1 overflows. 1 6 TR1 8Eh Timer 1 Run . When this bit is set Timer 1 is turned on. When this bit is clear Timer 1 is off. 1 5 TF0 8Dh Timer 0 Overflow . This bit is set by the microcontroller when Timer 0 overflows. 4 TR0 8Ch Timer 0 Run . When this bit is set Timer 0 is turned on. When this bit is clear Timer 0 is off.

TCON Register TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Timer 1 Timer0 for Interrupt (MSB) (LSB)

Counters As far as the use of a timer/counter as an event counter is concerned ,everything that we have talked about in the last section also applies to programming it as a counter ,except the source of the frequency. When used as a timer ,the 8051’s crystal is used as the source of the frequency. However ,when used as a counter ,it is a pulse outside of the 8051 that increments the TH,TL registers. These timers can also be used as counters counting events happening outside the 8051.

Port 3 Pins Used for Timers 0 and 1 Pin Port Pin Function Description 14 P3.4 T0 Timer/Counter 0 external input 15 P3.5 T1 Timer/Counter 1 external input GATE C/T=1 M1 M0 GATE C/T=1 M1 M0 Timer 1 Timer 0 (MSB) (LSB)

THANK YOU
Tags