8051 Timer and Counters
Short Description
Timers/Counter 8051...
Description
8051 Timers / Counters José Borges ,Patrício Lima, Marcos Brito, Marek Mastyło, Jakub Nyk
GROUP 4 DEEC –MPIN FEUP April, 2010
April 10
Outlines
1. 2. 3. 4. 5. 6. 7.
Introduction 8051 Timer/Counter Operating Modes Timer Vs Counter T/C and Interruptions Application Examples Conclusion
April 10
2
Introduction General Function: • Calculating the amounts of time between events • Counting events • Generating baud rate for serial port
April 10
3
Introduction Applications: •
Communication ̵
Generating rectangular pulses (signal modulation) Watchdog timers ̵
•
Manufacturing Industry -
•
Counting objects Measuring intervals
Etc
April 10
4
Introduction 8051 contains two 16-bits timers • •
T0 T1
Two different types of operation: • •
Timer Counter
Maximum value is 65536 Initial state can be set by user
April 10
5
Timer/Counter Special Function Registers
Timers/Counters can be operated by user with special function registers T0 and T1 share two SFRs: TMOD and TCON Each timer has also two registers dedicated to itself: TH0/TL0 and TH1/TL1
April 10
6
Timer/Counter Special Function Registers-TMOD
TMOD (Timer Mode Register) is a non-bitaddressable, 8-bit register:
Reference: http://fivedots.coe.psu.ac.th/~cj/asm/slides/mcs51/timer2.pdf
April 10
7
Timer/Counter Special Function Registers-TMOD
Lower 4 bits are for Timer0 Upper 4 bits are for Timer1 GATE bit is used for choice of internal or external control: • •
GATE=0 is for internal control, start and stop are controlled by software GATE=1 is for external control, start and stop are controlled by software and external source
C/T bit decides about timer type: interval timer or counter
April 10
8
Timer/Counter Special Function Registers-TMOD
M0 and M1 bits are used to set timer mode (the same for Timer0 and Timer1) 8051 delivers 4 timer modes: M1
M0
Mode
Description
0
0
Mode 0
13-bit timer
0
1
Mode 1
16-bit timer
1
0
Mode 2
8-bit auto reload
1
1
Mode 3
Split timer mode
April 10
9
Timer/Counter Special Function Registers-TCON
TCON (Timer Control Register) is a bitaddressable, 8-bit register where 4 upper bits are responsible for timers/counters:
Reference: http://fivedots.coe.psu.ac.th/~cj/asm/slides/mcs51/timer2.pdf
April 10
10
Timer/Counter Special Function Registers-TCON
TR0 and TR1 are set by user to turn on (or turn off) Timer0 or Timer1: • •
TR=0 – turn off TR=1 – turn on
TF0 and TF1 are Timer Flags informing about overflow (then TF=1 and interrupt could be activated if it’s set, should be cleaned)
April 10
11
Timer/Counter Special Function Registers-TCON
Equivalent instructions for TCON: •
Timer0: -
•
SETB CLR SETB CLR
TR0 TR0 TF0 TF0
= = = =
SETB CLR SETB CLR
TR1 TR1 TF1 TF1
= = = =
SETB CLR SETB CLR
TCON.4 TCON.4 TCON.5 TCON.5
Timer1 -
SETB CLR SETB CLR
TCON.6 TCON.6 TCON.7 TCON.7
April 10
12
Timer/Counter Special Function Registers-TL/TH
TH0 and TL0 are upper and lower registers of Timer0 TH1 and TL1 are upper and lower registers of Timer1 They help to set initial value of timer/counter
April 10
13
Timer Vs Counter Differences
Timer •
Counts machine cycles
Counters: •
Counts events as a result of falling slope of external input signal put on a pin
Timer mode and counter mode are relative to machine cycle
April 10
14
Timer Vs Counter Differences
Timer •
Input from internal system clock
Counters: • • • • •
Show the number of events on registers External input from T0 input pin (P3.4) for Counter 0 External input from T1 input pin (P3.5) for Counter 1 External input from Tx input pin. We use Tx to denote T0 or T1
April 10
15
T/C Modes Mode 0
Mode 0 is identical for Timer0 and Timer1 Timers work as 13-bit counters, an interrupt is generated when counter overflows. It takes 8192 input pulses to generate the next interrupt Timers use 8 bits of THi and 5 lower bits of TLi After timer overflows TFi (Timer Flag in TCON) is set, an interrupt occurs Where i=0,1
April 10
16
T/C Modes Mode 0
Structure of Timer1 in mode 0:
Reference: Tomasz Starecki; Mikrokontrolery 8051 w praktyce, Twarda oprawa, 2002. ISBN: 83-910067-4-3, Pic. 3.1
April 10
17
T/C Modes Mode 1
Similar to mode 0 Timers use 8 bits of THi and 8 bits of Tli The T/C is a 16-bit counter, and it takes a max. of 65536 input pulses to generate the next interrupt Improved capacity
April 10
18
T/C Modes Mode 1
Structure of Timer0 in mode 1:
April 10
19
T/C Modes Mode 2
Timers are 8-bit auto reload Timer is operated by TLi, when TLi overflows TFi is set TLi is auto reloaded with Thi value when overflows THi is never modified when TLi overflows
April 10
20
T/C Modes Mode 2
Structure of Timer1 in mode 2:
Reference: Tomasz Starecki; Mikrokontrolery 8051 w praktyce, Twarda oprawa, 2002. ISBN: 83-910067-4-3, Pic. 3.1
April 10
21
T/C Modes Mode 3
Split-timer mode Timer1 can be put in other modes Timer0 operates TL0 and TH0 as two separate 8-bit timers/counters TL0 works as a 8-bit timer/counter TH0 is a 8-bit timer which counts machine cycles Timer0 is operated with TF0 and TR0, TF1 and TR1 are not used
April 10
22
T/C Modes Mode 3
Structure of Timer1 in mode 3:
Reference: Tomasz Starecki; Mikrokontrolery 8051 w praktyce, Twarda oprawa, 2002. ISBN: 83-910067-4-3, Pic. 3.1
April 10
23
T/C Modes Example
Choose mode 1 for Timer: MOV TMOD,#01H Set the value of TH0 and TL0: MOV TH0,#FFH MOV TL0,#FCH Clear Timer flag and start the timer: CLR TF0 SETB TR0
April 10
24
T/C Modes Example
The 8051 starts to count up by incrementing the TH0-TL0 TH0-TL0= FFFCH,FFFDH,FFFEH,FFFFH,0000H
Reference: http://www.iau-neyshabur.ac.ir/nokhodchian/5-timer(part%201).ppt
April 10
25
How does a timer count? Timer/Counter counts up It is incremented by microcontroller • •
Timer is incremented every machine cycle Counter is incremented when event is detected
April 10
26
How does a timer count? A single machine cycle consists of 12 crystal pulses, thus timer will count:
11 059 000 / 12 = 921 583 per second
April 10
27
How does a timer count? Example: How many times will the timer be incremented in 0.05 seconds? 0.05 * 921 583 = 46 079.15 times
Accuracy is not perfect
April 10
28
How does a timer count? Timer/Counter counts up It is incremented by microcontroller • •
Timer is incremented every machine cycle Coutner is incremented when event is detected
April 10
29
How does a timer count? A single machine cycle consists of 12 crystal pulses, thus timer will count:
11 059 000 / 12 = 921 583 per second
April 10
30
How does a timer count? Example: How many times will the timer be incremented in 0.05 seconds? 0.05 * 921 583 = 46 079.15 times
Accuracy is not perfect
April 10
31
Timer/ Counter and Interruptions Timer/ Counter can be configured to start an interruption routine
Reference: Philips Semiconductors – Family 8051
April 10
32
How a timer interruption occurs Some Special Registers are used • ET0 and ET1 from Interruption Enable Register • PT0 and PT1 from Interruption Priority Register • TF0 and TF1 from T/C Control Register
April 10
April 10
33 33
How a timer interruption occurs Timer/counter interruption process : • ET bit must be set • TR bit must be set to run the timer • The interruption is requested when overflow occurs
April 10
April 10
34 34
How a timer interruption occurs Upon acceptance the Timer overflow Flag is cleared by hardware
Reference: Philips Semiconductors – Family 8051
April 10
35
Software overflow detection How the overflow can be detected if interruption is not enable? • In some cases ,it’s not necessary to enable an interruption • In this case the overflow is detected by software • A routine is necessary to check constantly the overflow occurrence
April 10
36
Software overflow detection • The overflow occurs when the TF is high • TF flag must be cleared by software for the next round
April 10
37
Software overflow detention Delay routine example without enable interruption: cseg at 0000h jmp main … main: … … setb tr0 acall delay50ms … … delay50ms: mov TL0,#low(46080) mov TH0,#high(46080) clr TF0 jnb TF0,$ ret
April 10
38
Application Example Digital Clock
Circuit schematic •
Interface with LCD
display and serial port.
April 10
39
Application Example Digital Clock
Interruption configuration •
IE mov IE,#10010010b Or setb EA setb ES setb ET0
April 10
40
Application Example Digital Clock
Interruption configuration •
TCON orl TCON,#00101000b Or setb TR0 setb TR1
April 10
41
Application Example Digital Clock
Interruption configuration •
TMOD mov TMOD,#00100001b Not bit adressable
April 10
42
Application Example Digital Clock
Interruption configuration •
SCON mov SCON,#01110000b Or setb SM1 setb SM2 setb REN
April 10
43
Application Example Digital Clock
Interruption configuration • •
Serial port baud rate TH1 = TL1=253 𝑏𝑎𝑢𝑑 𝑟𝑎𝑡𝑒 = 2 ∗
mov TH1,#0xFD mov TH1, TL1
11.0592𝑀𝐻𝑧 32 ∗ 12 ∗ 256 − 253
𝑏𝑎𝑢𝑑 𝑟𝑎𝑡𝑒 = 19200
April 10
44
Application Example Digital Clock
Interruption configuration Problem : •
8051 only count up to 65535 us
How we count 1 second ?
April 10
45
Application Example Digital Clock
Interruption configuration Solution :
TIMER
•
mov TL0,#high(TIMER) mov TH0,#low(TIMER)
Count 20*50ms
equ
65536-46080
12 50000𝑢𝑠 = ∗ 𝐶𝑖𝑐𝑙𝑒𝑠 11.0592𝑀ℎ𝑧 𝑐𝑖𝑐𝑙𝑒𝑠 = 46080
April 10
46
Application Example Digital Clock
Interruption configuration mov mov orl mov mov mov mov mov
IE,#10010010b TMOD,#00100001b TCON,#00101000b SCON,#01110000b TH1,#0xFD TH1, TL1 TL0,#high(TIMER) TH0,#low(TIMER)
April 10
47
Application Example Digital Clock
C1
C2
33p
33p
X1
19
11.0592MHz
18
9
1 2 3 4 5 6 7 8
XTAL1
XTAL2
RST
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
RS RW E
D0 D1 D2 D3 D4 D5 D6 D7 7 8 9 10 11 12 13 14
mov mov orl U1 mov mov mov mov mov
4 5 6
1 2 3
VSS VDD VEE
DIGITAL CLOCK
IE,#10010010b TMOD,#00100001b TCON,#00101000b SCON,#01110000b TH1,#0xFD TH1, TL1 TL0,#high(TIMER) TH0,#low(TIMER) GND VDD
RXD TXD RTS CTS
AD[0..7] A[8..15]
ALE EA PSEN
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
30 31 29
10 11 12 13 14 15 16 17
8051
April 10
48
Application Example Counter w/ Ext. Enabler
+1
1 0
1 0 1 0
1 0
April 10
49
Application Example Leds equ P1 overflow equ R0 cseg at 00h jmp main cseg at 1bh jmp Timer1 cseg at 40h Timer1: inc overflow reti main: mov IE,#88H mov TMOD,#0E0h mov TH1,#00h mov TL1,#00h setb TR1 Led: mov Leds,TL1 jmp Led end
Counter w/ Ext. Enabler
Initialization
;Counter/ Timer 1 Int.
;Do a Task
Counter Interrupt TF1
Leds = TL1
Return
;Enables the Timer1 ;Gate =1, Counter selected, Mode 2 ;With 00h it counts 255 times
Do a Task
;Begin to count
; shows the value with Leds of the actual count
April 10
50
Application Example Digital Clock
References: •
http://www.8052.com/tuttimer.phtml
•
http://www.8052.com/tutlcd2.php
•
http://www.8051projects.net/lcdinterfacing/introduction.php
•
Philips Semiconductors - 80C51 Family
April 10
51
Thank you!
April 10
52
View more...
Comments