60
TIMERS / COUNTERS - Two 16 bit timer/counters - Can be programmed independently as – timer or event counter. - Four-SFR’s connected with TIMER/COUNTER operation - TMOD – Timer Mode Register - TCON – Timer Control Register - TH0, TL0 – Timer/Counter - 0 - TH1, TL1 – Timer/Counter - 1 - Two pins of 8051 connected with Timer/counter. T0 – Timer 0 external input – P3.4 T1 – Timer 1 external input – P3.5 - INT0 and INT1 are also used for controlling the timer/counters.

8051 Timers and Counters

Embed Size (px)

DESCRIPTION

Learn about 8051 microcontroller's Timer and Counter Applications.

Citation preview

Page 1: 8051 Timers and Counters

TIMERS / COUNTERS

- Two 16 bit timer/counters- Can be programmed independently as – timer or event counter.- Four-SFR’s connected with TIMER/COUNTER operation- TMOD – Timer Mode Register- TCON – Timer Control Register- TH0, TL0 – Timer/Counter - 0- TH1, TL1 – Timer/Counter - 1- Two pins of 8051 connected with Timer/counter.

T0 – Timer 0 external input – P3.4T1 – Timer 1 external input – P3.5

- INT0 and INT1 are also used for controlling the timer/counters.

Page 2: 8051 Timers and Counters

Timer OperationTimer Register (TH0, TL0 or TH1, TL1) incremented every m/c cycle. Thus working at increment frequency of 1/12 of oscillator frequency ( for 12 oscillator machine cycle ). Any preset value i.e. initial count can be loaded to TH0, TL0 or TH1, TL1.

For Example – Clock frequency = 12 MHZClock period = 1/12 µ secMachine cycle time = 1 µ sec

Thus timer register will be incremented every microsecond.- If timer is initialized to 0000HMax. count = FFFFHmax. time measured = 216 µ sec

= 26 x 210 µ sec ≈ 26 millisecond ≈ 64 millisecond = 65.5 millisecond

Page 3: 8051 Timers and Counters

- Counts pulses occurring at T0 pin (Timer/Counter 0) and/or T1 pin (Timer/counter 1).

- May correspond to event like• Passing of railway coach from a point – axle counter • Rotation of speedometer cable

– speedometer of vehicle • No. of persons visiting exhibition.

- T0, T1 scanned every m/c cycle• nth m/c cycle – T1 or T0 = High• (n+1)th m/c – T1 or T0 = Low• Timer 0 or timer 1 incremented in (n+1)th m/c cycle

- Count frequency = min 2 m/c cycle per count- T0- P3.4, T1- P3.5

Counter Operation

Page 4: 8051 Timers and Counters

In 12 MHz 8051 – m/c cycle = 1 µ sec- 8051 can count at the rate of 2 µ sec per count or higher- Any event when takes less than 2 µ sec may go unnoticed- C/T bit of TMOD selects Timer or counter operation for Timer 0

or Timer 1.- Timer/Counter operations are controlled by

- Gate bit of TMOD- TR0 bit of TCONWhen Gate = 0 then

TR0, TR1 act as Timer run control bits.

2 m/c cycle

Page 5: 8051 Timers and Counters

- Thus make Gate = 0 in TMOD By making TR0 (TCON. 4) or TR1 (TCON. 6) = 1 . through instruction, Timer/Counter 0 or Timer/Counter 1 may be started.

- For starting and stopping the Timer/Counter from outside through hardware. Make Gate = 1, TR0 = 1 through software.

- By making INT0 or INT1 pin High will start Timer/Counter 0 or Timer/Counter 1 Make INT0 or INT1 Low to stop the Timer/Counter. INT0 - P3.2 INT1 - P3.3

Page 6: 8051 Timers and Counters

As value in Timer register rolls from all ones (i.e. FFFFH) to all zero’s (i.e. 0000H) interrupt flag (TF0 or TF1) will be set.

- TF0 (for Timer 0) and TF1 (for Timer 1) are bits of TCON SFR. IF Timer 0 or Timer 1 interrupt is enabled then

program control will branch to interrupt servicing routine.

Page 7: 8051 Timers and Counters

Timer modes - 4 modesMode 0 - 13 bit counterMode 1 - 16 bit counterMode 2 - 8 bit counter + auto reloadMode 3 - Split operation – Timer 0

TimerRegister

TF0 Interrupt

Program

Timer ISR

RETI

Page 8: 8051 Timers and Counters

- Modes are set by M1 M0 bits of TMOD register. Mode 0 - 13 bit counter operation

- TH0, TL0 (for Timer 0) or TH1, TL1 (for Timer 1) used as 13 bit counter.

- All 8 bits of TH0 or TH1- 5 lower bits of TL0 or TL1

are used, for counting.- When count rolls over from all 1’s to all 0’s, - interrupt flag TF0 or TF1 is set.

Page 9: 8051 Timers and Counters

OSC ÷ 12

TH0(8 bits) TF0TL0

(5 bits)

C/T = 0

C/T = 1

T0 pinControl

Interrupt

TR0

Gate

INT0 pinFigure Timer 0, mode 0 - 13-bit counter

Page 10: 8051 Timers and Counters

In above figure when C/T = 0 - timer operation count incremented every m/c cycle.

providedTR0 (TCON. 4) or TR1 (TCON. 6) = 1

and Gate (TMOD. 3) or (TMOD. 7) = 0Other way is-

- TR0 or TR1 =1- Gate = 1 and INT0 or INT1 = 1

- Thus by sending Logic High signal on INT0 (or INT1) pins Timer 0 or Timer 1 can be started.

Page 11: 8051 Timers and Counters

- This can be used for finding pulse width in the following way. C/T = 0 – Timer operation TR0 or TR1 = 1Gate = 1Source of pulse connected to INT0 or INT1 pin

- When pulse goes high timer starts counting at the rate 1/12 clock frequency

- Which pulse goes low – Timer stops.INT0 or INT1 = Low - causes interrupt.

Page 12: 8051 Timers and Counters

- ISR can read the timer value.- ISR can store the timer value and process it as

required by the application.

TimerStarts

TimerStops

+ InterruptGenerated

Page 13: 8051 Timers and Counters

Mode 1 – 16 bit counter

Figure Timer 0, mode 1 - 16-bit counter.

OSC ÷ 12

TH0(8 bits) TF0TL0

(8 bits)

C/T = 0

C/T = 1

T0 pinControl

Interrupt

TR0

Gate

INT0 pin

Page 14: 8051 Timers and Counters

- Operation same as mode 0 except that all bits of TH0, TL0 or TH1, TL1 are used.When count rolls over from all 1’s to all 0’s – TF0 or TF1 interrupt flag is set.- Causes interrupt if enabled.

Page 15: 8051 Timers and Counters

Mode 2 – 8 bit operation with auto reload

Figure Timer 0, mode 2 - autoreload.

OSC ÷ 12

TL0(8 bits) TF0

C/T = 0

C/T = 1

T0 pinControl

Interrupt

TR0

Gate

INT0 pin

TH0(8 bits)

Page 16: 8051 Timers and Counters

- Only TL0 or TL1 are used i.e. 8 bit counting.- Initial preset value is loaded to TH0 or TH1 by

software.- The value is loaded to TL0 or TL1 by hardware

automatically before starts of counting.- When count rolls from all 1’s (i.e. FFH) to all 0’s (i.e.

00H)- TF0 or TF1 flag is set- Preset value in TH0 or TH1 is reloaded to TL0 or TL1

- Operation i.e. Counting starts automatically.

Page 17: 8051 Timers and Counters

Mode 3 – Split operation – Timer 0

Figure Timer 0, mode 3-split to two 8-bit counters.

OSC ÷ 12

TL0(8 bits) TF0

C/T = 0

C/T = 1

T0 pinControl

Interrupt

TR0

Gate

INT0 pin

(1/12) fosc

(1/12) fosc

TH0(8 bits) TF1

Control

Interrupt(1/12) fosc

TR1

Page 18: 8051 Timers and Counters

- When Timer 0 is put in mode 3 - Acts as two 8 bit counters i.e. TL0 and TH0

become two separate counter.

TL0 – 8 bit operation in mode 0 or mode 1 (Timer or Counter) controlled by C/T, TR0, Gate, INT0– Sets TF0 when count rolls to all 0’s from all 1’s.

TH0 – Timer function only. – Controlled by TR1 i.e. starts when TR1 = 1.When count rolls to all 0’s from all 1’s – TF1 flag is

set.

Page 19: 8051 Timers and Counters

Note – TR1 and TF1 are used in Timer 0 (TH0) even though they are

bits for Timer 1. When Timer 1 is put in mode 3 – It

just holds the preset count – same as TR0 = 0 i.e. opening the

switch.[Modes 0, 1 and 2 are mostly used]

Page 20: 8051 Timers and Counters

Timer Mode Control Register - TMOD

7 6 5 4 3 2 1 0

Gate C/T M1 M0 Gate C/T M1 M0

Timer 1 Timer 0Bit no.

M1 and M0 specify the mode as follows:M1 M0 Mode Description in brief

0 0 0 13-bit counter

0 1 1 16-bit counter

1 0 2 8-bit counter with autoreload

1 1 3 Split Timer 0 into two 8-bit counters or to stop Timer 1

Symbol

Page 21: 8051 Timers and Counters

If C/T = 1, the timers function as counters to count the negative transitions at T0 or T1 pins.If C/T = 0, the timers function as timers, that is, they basically count the number of machine cycles.Gate = 0 means that the timer is controlled by TR1 or TR0 only, irrespective of INT0 or INT1.Gate = 1 means that the timer control will depend on INT0 or INT1 and also on TR0 or TR1 bits

Page 22: 8051 Timers and Counters

When data is written it gets latched.TMOD is used for setting mode bits M1, M0, Gate bit and C/T for Timer 0 and Timer 1.Bit 0 to 3 for Timer 0.Bit 4 to 7 for Timer 1.

Page 23: 8051 Timers and Counters

Timer Control Register - TCONBit 0 to 3 – used for interrupt functionsBit 4 to 7 – used for setting TR0, TR1 by software- Setting TF0, TF1 by counter i.e. hardware When count rolls from all 1’s to all 0’s.

Page 24: 8051 Timers and Counters

7 6 5 4 3 2 1 0

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0Bit no.

Symbol

TF1: Timer 1 overflow flag. Set by hardware when the timer/counter overflows.Cleared by hardware when the processor vectors to the interrupt routine.

TR1: Timer 1 run control bit. Set/cleared by software to turn the timer/counter on/off.

TF0: Timer 0 overflow flag. Set by hardware when the timer/counter overflows.Cleared by hardware when the processor vectors to the interrupt routine.

TR0: Timer 0 run control bit. Set/cleared by software to turn the timer/counter on/off.

Page 25: 8051 Timers and Counters

Example – a. Configuring Timer/Counter using TMOD

7 6 5 4 3 2 1 0

Gate C/T M1 M0 Gate C/T M1 M0

Timer 1 Timer 0

Page 26: 8051 Timers and Counters

C/T = 0M1 M0 = 00Gate = 0

C/T = 1M1 M0 = 01Gate = 0

TR1 TR0

TMOD = 0 0 0 0 0 1 0 1 = 0 5 H MOV TMOD, #05H

TIMER 1 - TIMERMode = 00(13 bit operation)

TIMER 0 - CounterMode = 01(16 bit operation)

Page 27: 8051 Timers and Counters

- Work out the preset value = ABCDH – Timer 0- Load the preset value = 0000H - Timer 1

MOV TL0, #CDHMOV TH0, #ABHMOV TL1, #00HMOV TH1, #00H

b. To load initial count as preset value

Timer 0

Timer 1

Page 28: 8051 Timers and Counters

Make TR0 = 1, TR1 = 1TCON = 0 1 0 1 0 0 0 0 = 5 0 H MOV TCON, #50H or SETB TCON.4

SETB TCON.6

c. Start Timer/Counter through TR0, TR1

TCON =

7 6 5 4 3 2 1 0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Timer Interrupt

Page 29: 8051 Timers and Counters

- Following tasks need to be done.Preset value to be loaded to Timer RegisterTimer interrupt flag (TF0 or TF1) to be cleared

d. When count value in Timer Register transits from all 1’s to all 0’s

For continuous operation of Timer/CounterTime clockPulse train generation etc.

Page 30: 8051 Timers and Counters

- Can be achieved in 2 ways:

1. - Check Timer interrupt flag in loop. JNB TCON.5, $ or JNB TCON.7, $- When interrupt flag is set then clear the flag. CLR

TCON.5 or CLR TCON.7- Load the preset count and restart

SJMP to b

Page 31: 8051 Timers and Counters

2. Write ISR for Timer 0 or Timer 1 and store at location 000BH (for Timer 0) or 001BH (for Timer 1)- Enable Timer 0 or Timer 1 interrupt by making bits ET0 (IE.1) or ET1(IE.3) = 1. SETB IE.1 or SETB IE.3- When TF0 or TF1 is set- Interrupt will occur and program will branch to ISR location (000BH for Timer 0) or (001BH for Timer 1).

Page 32: 8051 Timers and Counters

- ISR- clear flag TF0 or TF1- load preset value- Restart timer/counter RETI

Step d will be different for different applications.

Example -1- Generate a square wave of 50% duty cycle at pin p1.7. Use

Timer 1 to generate time delay. Clock frequency = 12 MHz, 12 oscillator clock. Pulse width = 50 millisecond.

- Let us work out the initial preset value.

Page 33: 8051 Timers and Counters

1 m/c cycle = 1 microsecond50 millisecond = 50 x 103 microsecond = 50, 000 m/c cycleFFFF = 65535Difference = 65535 - 50000 = 15535 m/c cycle

- Since count will roll from FFFF to 0000 additional m/c cycle will be required to set TF0 or TF1 .

50 ms 50 ms

Page 34: 8051 Timers and Counters

Thus initial count must be 15536 i.e. = 3CB0H By putting initial preset count of 3CB0H (or 15536 decimal), the register will

reach FFFF in 49999 m/c cycle and roll over to 0000 in 50,000th m/c cycle accounting for 50 millisecond

Page 35: 8051 Timers and Counters

a. Configure Timer 1 7 6 5 4 3 2 1 0 0 0 0 1 0 0 0 0 = 1 0 H

Gate = 0, C/T = 0, Mode = 01(16 bit operator)

MOV TMOD , # 1 0 HMake P1.7 = Low initially

CLR P1.7

b. Load Preset Value

KK : MOV TL1, #B0H MOV TH1, #3CH

Page 36: 8051 Timers and Counters

c. Complement P1.7CPL P1.7

d. Start Timer 1 (TR1 = 1) SETB TCON.6

e. Check for TF1=1 in loop JNB TCON.7, $

f. TF1=1, Make TF1=0 CLR TCON.7

g. Stop Timer 1 Make TR1=0 CLR TCON.6

h. SJMP KK To reload preset value Complement P1.7 Start Timer 1.

Page 37: 8051 Timers and Counters

Steps d to g can be written as subroutine.

Modified ProgramMOV TMOD, #10HCLR P1.7

AK. MOV TL1, #B0HMOV TH1, #3CHCPL P1.7ACALL TDELYSJMP KK

Page 38: 8051 Timers and Counters

TDELY: SETB TCON.6JNB TCON.7, $CLR TCON.7CLR TCON.6RET

Page 39: 8051 Timers and Counters

Example -2- Generate a square wave of ON time of 3 ms and

OFF time of 2 ms on P1.0. Clock frequency = 16 MHz, 12 clock m/c cycle

- 16 MHz Frequency using Timer 1. 1 clock period = 1/16 µ sec

Page 40: 8051 Timers and Counters

- 1 m/c cycle = 12/16 µ sec = ¾ µ sec 1 ms = 1000 µ sec = 4000/3 m/c cycle ≈ 1333 m/c cycle

- 2 ms ≈ 2666 m/c cycle. Accounting for additional m/c cycle – 2665

- 3 ms ≈ 4000 m/c cycle. Accounting for additional m/c cycle – 3999

Page 41: 8051 Timers and Counters

Count can be very well represented in 16 bits. Thus for 2 ms delay –

65535 – 2665 = 62870 =F596H for 3 ms delay – 65535 – 3999 = 61536 = F060H

; Configure Timer 1MOV TMOD, #10H

0 0 0 1 0 0 0 0 = 10HTMOD =

Page 42: 8051 Timers and Counters

; Load preset value for 3 msKK : MOV TL1, #60H

MOV TH1, #F0H; Make P1.0 = High

SETB P1.0; Start Timer 1

SETB TCON.6; Check for TF1 in loop

JNB TCON.7, $; Make P1.0 = Low

CLR P1.0

Page 43: 8051 Timers and Counters

; TF1 = 1, Make TF1 = 0CLR TCON.7

; Stop Timer 1, Take TR1 = 0CLR TCON.6

; Repeat for 2 ms......SJMPKK.

MOV TL1, #96HMOV TH1, #F5HSETB TCON.6JNB TCON.7, $

Page 44: 8051 Timers and Counters

Example – 8051 with clock frequency = 18 MHza. Generate a square wave of frequency 2 KHz

on pin P1.0 using mode 2.b. Calculate the smallest frequency possible

without using software counter. Clock frequency = 18 MHz Clock period = 1/18 µ sec. 1 m/c cycle = 12/18 µ sec = 2/3 µ sec.

Page 45: 8051 Timers and Counters

2 KHz square wave clock period = ½ 10-3 sec. = 0.5 millisecond

Up time = 0.25 msDn time = 0.25 ms

Up time = 0.25 ms = 0.25 x 103 µ secNo. of m/c cycles in up time = (¼ x 103)/(2/3)

= ¼ x 103 x 3/2 = 3/8 x 103

= 3000/8 = (30 x 25)/2= 15 x 25 = 375

<- - - - - - 0.5 ms - - - - ->

Page 46: 8051 Timers and Counters

- Delay of 375 m/c cycle can be achieved in many ways.375/3 = 125 – Generate delay of 125 m/c cycle 3 times375/5 = 75 – Generate delay of 75 m/c cycle 5 times375/15 = 25 – Generate delay of 25 m/c cycle 15 times: ::We can take any of the options. Let us take 1st one.

Page 47: 8051 Timers and Counters

To generate delay of 125 m/c cyclePreset = (FFH) 255 – 125 = 130

Accounting for additional m/c cyclePreset = 131 = 83H

; Configure TMOD.Let us use Timer 0

MOV TMOD, #02H

0 0 0 0 0 0 1 0 = 02HTMOD =

Page 48: 8051 Timers and Counters

; Set P1.0 = HighSETB P1.0

; Load preset countMOV TH0, #83H

; Declare software counter;Loop: MOV R3, 03H; Start Timer

Page 49: 8051 Timers and Counters

KK: SETB TCON.4; Check TF0 in loop

JNB TCON.5, $; Stop timer by making TR0=0

CLR TCON.4; Clear TF0 Flag

CLR TCON.5; Decrement and Branch to start timer.

DJNZ R3, KK.; Delay of 375 m/c cycle completed.

CPL P1.0SJMP Loop.

Page 50: 8051 Timers and Counters

b. – Frequency is smallest when clock period = maximum

i.e. Up time and Down time = maximumi.e. Delay is maximum.

Delay is maximum when preset value =0i.e. No. of m/c cycles in Up time = FF+1

No. of m/c cycles in Dn time = FF+1Up time = 256 x 2/3 µ sec = 512/3 ≈ 170 µ secClock period = 341 µ sec.Frequency = 1/341 MHz = 1000/341 KHz

= 2.92 KHz

Page 51: 8051 Timers and Counters

Example – Counter Operation- Design a counter to count pulses input at P3.4.- Determine the no. of pulses received in 1 minute.- 8051 is 12 MHz, 12 Clock m/c cycle.-> P3.4 pin is T0 i.e. -> external input to Timer 0

0 0 0 0 0 1 0 1 = 05HTMOD =

C/T = 1 – Counter operationGate = 0, M1 M0 = 01 - 16 bit operation

Page 52: 8051 Timers and Counters

; MOV TMOD, #05H; Initialize Timer value to 0000HREPT: MOV TH0, #00H

MOV TL0, #00H; Start Counter by making TR0 = 1

SETB TCON.4ACALL DELIM

; Read timer value and output on P2, P1MOV A, TL0MOV P1, AMOV A, TH0MOV P2, ASJMP REPT

Page 53: 8051 Timers and Counters

DELIM : MOV R2, -MOV R3, -MOV R4, -DJNZ R4, -DJNZ R3, -DJNZ R2, -

Page 54: 8051 Timers and Counters

Let us calculate the maximum no. of pulses that can be counted.

- In 16 bit operation i.e. Mode 01 – (FFFF+1) = 65535 + 1 = 65536

- In 13 bit operation i.e. Mode 00 – 1FFF+1 = 8191 = 8192

- In 8 bit operation i.e. Mode 02 & Mode 03 – FF+1 = 255+1 = 256

Page 55: 8051 Timers and Counters

Let us assume that 1 pulse corresponds to – one rotation of is wheel – circumference of wheel = 1 meter

Max. distance travelled in 1 minute can be measured as 8 bit operation – 256 meter.13 bit operation – 8192 meter16 bit operation – 65536 meter.Considering that overflow takes place in 1 minute duration

Page 56: 8051 Timers and Counters

Max. distance travelled in 1 hour that can be measured with be 8 bit operation – 256 x 60 = 14760 meter

= 14.76 KMPH13 bit operation – 8192 x 60

= 491520 = 491.52 KMPH16 bit operation – 65536 x 60 = 3932160 meter.

= 3932.16 KMPH

Page 57: 8051 Timers and Counters

For measuring automobile speed – 13 bit or 16 bit operation will be o.k.

- Delay operation can also be managed using hardware timer so that micro controller is free for carrying out other tasks.

Let us assume that Timer 1 is used for incorporating 1 minute delay12 MHz clock1 m/c cycle = 1 µ sec1 second = 106 µ sec = 106 m/c cycle

= 220 m/c cycle = 24 x 216 m/c cycle.

Page 58: 8051 Timers and Counters

Thus 0000 to FFFF+1, counter has to repeat 16 times for delay of 1 sec.

For 1 Minute delay 1 minute = 60 x 16 x216 – 1 second delay must be repeated in loop by 60 times

Now, TMOD will become

C/T = 0 for Timer 1 – Timer operationMOV TMOD, #05H will get modified to MOV TMOD, #15H

0 0 0 1 0 1 0 1 = 15 H

Page 59: 8051 Timers and Counters

DELIM SubroutineDELIM: MOV R3, #3CH ; for 60 secondsLOOP1: MOV R4, #10H ; for 16 times

repeat for 1 secondLOOP2: MOV TH1, #00H

MOV TL1, #00H; Start Timer 1

SETB TCON.6JNB TCON.7, $CLR TCON.6CLR TCON.7DJNZ R4, LOOP2DJNZ R3, LOOP1RET

We could also use interrupt servicing routine of timer interrupt for this purpose.

Page 60: 8051 Timers and Counters

THE END