8051 Timer and Counters

September 12, 2017 | Author: Patricio Lima | Category: Timer, Electronic Circuits, Computer Engineering, Digital Electronics, Electronics
Share Embed Donate


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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF