Microprocessor Week 9: Timer and Counter

Post on 12-Apr-2017

181 views 6 download

Transcript of Microprocessor Week 9: Timer and Counter

MICROCONTROLLER MCS-51: TIMER / COUNTERArkhom JODTANGCivil Aviation Training Center

2

Timer / CounterContents Timer and Counter Timer Register Timer Mode Timer Mode 1 Sample: Daley Programming Sample: Pulse generation programming

3

MCS51 Timer / Counter The 8051 has two timers/counters are Timer 0 and

Timer 1 Both of them can be used either as timers to generate a

time delay or as counters to count events from external signal coming to microcontroller.

By Set interval value, enable timer to start running while monitoring overflow bit to know the completion interval.

Timer 0 Timer 1

4

Timer Register

TMOD (Timer operation Mode) register TCON (Timer Control) register THx Register (TH1 for Timer 1, TH0 for

Timer 0) TLx Register (TL1 for Timer 1, TL0 for

Timer 0)

5

Mode 1 Equivalent circuit

Modified from http://blog.circuits4you.com/2015/07/programming-timers-on-8051.html

/ 12

THx TLx

ClockGen. Machine Cycle

6

TMOD (Timer operation Mode) register

Gate: “0” : enable timer by TRx bit “1” : enable timer by TRx bit with external signal at pin INTx

C/T: Counter and Timer selector 1 for Count signal from Tx Pin (Counter) 0 for Count internal clock signal (Timer)

M1: Mode bit 1 (MSB) M0: Mode bit 0 (LSB)

TMODTimer 1 Timer 0

Gate C/T M1 M0 Gate C/T M1 M00 0 0 1 0 0 0 0

7

MCS51 Pin configuration

8

Mode of Operation

Mode 0: 13-bits THx (8-bits) and TLx (5-bits) combine as 13-

bits register Mode 1: 16-bits

THx and TLx combine as 16-bits register Mode 2: 8-bit Auto reload

THx is master value of TLx

Gate C/T M1 M0 Gate C/T M1 M00 1 1 0

9

Setting Mode OperationGate C/T M1 M0 Gate C/T M1 M0

0 1 0 1

Setting mode of operation by assign appropriate value to TMOD register

Timer 1 Mode 1 MOV TMOD, #00010000B MOV TMOD, #10H

Timer 0 Mode 1 MOV TMOD, #00000001B MOV TMOD, #01H

10

Example 9.1

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

x x x x x x x x

Find the value for TMOD if we want to program Timer 0 in mode 1, count from internal clock source, and use instructions to start and stop the timer. Timer 1 in mode 2, count from external and start counting by instruction.

01100001

11

Mode 1 Equivalent circuit

Modified from http://blog.circuits4you.com/2015/07/programming-timers-on-8051.html

/ 12

THx TLx

ClockGen. Machine Cycle

12

Example 9.1

TMODTimer 1 Timer 0

Gate C/T M1 M0 Gate C/T M1 M00 0 0 0 x x x x

Find the value for TMOD if we want to program Timer 0 in mode 1, count from internal clock source, and use instructions to start and stop the timer.Solution: Timer 0, So, we care only Timer 0

Nibble

13

Example 9.1

TMODTimer 1 Timer 0

Gate C/T M1 M0 Gate C/T M1 M00 0 0 0 x x 0 1

Find the value for TMOD if we want to program Timer 0 in mode 1, count from internal clock source, and use instructions to enable the timer.Solution: Timer 0: So, we care only Timer 0 Nibble Mode 1: M1 = 0, M0 = 1

14

Example 9.1

TMODTimer 1 Timer 0

Gate C/T M1 M0 Gate C/T M1 M00 0 0 0 x 0 0 1

Find the value for TMOD if we want to program Timer 0 in mode 1, count from internal clock source, and use instructions to enable the timer.Solution: Timer 0: So, we care only Timer 0 Nibble Mode 1: M1 = 0, M0 = 1 Internal Clock: That mean Timer. So, C/T = 0

15

Example 9.1

TMODTimer 1 Timer 0

Gate C/T M1 M0 Gate C/T M1 M00 0 0 0 0 0 0 1

Find the value for TMOD if we want to program Timer 0 in mode 1, count from internal clock source, and use instructions to enable the timer.Solution: Timer 0: So, we care only Timer 0 Nibble Mode 1: M1 = 0, M0 = 1 Internal Clock: That mean Timer. So, C/T = 0 Enable by TR0 bits: Gate = 0

16

Example 9.1

TMODTimer 1 Timer 0

Gate C/T M1 M0 Gate C/T M1 M00 0 0 0 0 0 0 1

Find the value for TMOD if we want to program Timer 0 in mode 1, count from internal clock source, and use instructions to enable the timer.Solution: Timer 0: So, we care only Timer 0 Nibble Mode 1: M1 = 0, M0 = 1 Internal Clock: That mean Timer. So, C/T = 0 Enable by TR0 bits: Gate = 0Answer: Value of TMOD is #00000001B or #01H(Use instruction MOV TMOD, #01H)

17

TCON (Timer Control register)

TF1: Timer 1 Over Flow bit This bit will set when timer is over flow

TR1: Timer 1 Enable bit Start running of Timer 1

TF0: Timer 0 Over Flow bit This bit will set when timer is over flow

TR0: Timer 0 Enable bit Start running of Timer 0

IE1, IT1, IE0, IT0 will describe in next chapter

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT00 0 0 1 0 0 0 0

18

Mode 1’s OperationTHx TLx

0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1

THx and TLx store start value Timer operation always count-up (increase) on [THx, TLX] each

machine cycle SETB TRx instruction to start running timer Over flow when Increase FFFF to 0000

Interval value = FFFF – [TH,TL] FFFF give minimum interval time 0000 give maximum interval time Example:

MOV TH0, #22H MOV TL0, #00H ; Then interval is FFFF – 2200 = DDFF Machine Cycle.

Tips: Monitor TFx with instruction “MonitorLable : JNB TFx, MonitorLable”

19

Example 9.2Calculate amount of time delay in the DELAY subroutine below generated by the timer. Assume that XTAL = 11.0592 MHz.

Delay:MOV TMOD, #01MOV TL0, #0F2HMOV TH0, #0FFHSETB TR0MonitorTX : JNB TF0, MonitorTXCLR TR0CLR TF0RET

20

Example 9.2Solution:The timer works with a clock frequency of 1/12 of the X’TAL frequency; therefore, we have 11.0592 MHz / 12 = 921.6 kHz as the timer (Machine Cycle) frequency.As a result, each clock has a period of T = 1 / 921.6 kHz = 1.085 (is. In other words, Timer 0 counts up each 1.085 s resulting in delay = number of counts x 1.085 s.

21

Example 9.2Solution:As the timer counts up, it goes through the states of FFF3, FFF4, FFF5, FFF6, FFF7, FFF8, FFF9, FFFA, FFFB, FFFC, FFFD, FFFE, and FFFFH. One more clock rolls it to 0000, raising the timer flag (TF0 = 1). At that point, the JNB instruction falls through.Timer 0 is stopped by the instruction “CLR TRO”. The DELAY subroutine ends

22

Example 9.2Place Machine cycle to the code:

Delay:MOV TMOD, #01 2MOV TL0, #0F2H 2MOV TH0, #0FFH 2SETB TR01MonitorTX : JNB TF0, MonitorTX 14CLR TR0 1CLR TF0 1RET 2Total = 25

23

Example 9.2From total machine cycle used was 25 machine cycles.

25 x 1.058 s. = 27.125 s.So, This subroutine generate delay for 27.125 s.

Conclusion: Total Machine cycle to overflow is Machine Cycle = 1 + FFFF – Interval (TH,TL)

value

24

Workshop 9.1Calculate amount of time delay in the DELAY subroutine below generated by the timer. Assume that XTAL = 22.1184 MHz.

Delay:MOV TMOD, #01MOV TL0, #034HMOV TH0, #012HSETB TR0MonitorTX : JNB TF0, MonitorTXCLR TR0CLR TF0RET

25

Example 9.3Connect Port 3.0 with Input Switch and Port 1.0 with LED Display

Write Program for MCS51 to Turn ON LED for 2 Second after user press input switch.

Show calculate delay generate by MCS51. Assume that X’TAL = 11.0592 MHz.

Start

TMOD

End

P3.0 = 1

ON Display

Delay 2 Seconds

OFF Display

WaitSW:R3

=33D

DJNZ R3, Loop

Delay

Loop:

26

Example 9.3Connect Port 3.0 with Input Switch and Port 1.0 with LED DisplayFrom code below calculate delay generate by MCS51. Assume that X’TAL = 11.0592 MHz.

MOV TMOD, #10H ; Set Timer ModeCLR P1.0WaitSW: JB P3.0, WaitSW

SETB P1.0ACALL DelayCLR P1.0SJMP $

Delay:MOV R3,#31D

MainProcess:MOV TL1,#08HMOV TH1,#1HSETB TR1

Monitoring: JNB TF1, Monitoring CLR TR1CLR TF1DJNZ R3, MainProcessRET

END

27

28

DJNZ (Sample) ; DJNZ is very convenion for ; specified number of turn

for some process.

MOV R3,#31D Loop: ; Process here DJNZ R3, Loop END

Start

R5 =10D

End

Loop:

DJNZ R5, Loop

Process

29

Example 9.4From code below calculate frequency of signal generate by MCS51. Assume that X’TAL = 11.0592 MHz.

MOV TMOD, #10HLoop:

CPL P1.1ACALL DelayJMP Loop ; All Loop All Delay + 7 = FF04H = 65286D Machine cycle

Delay:MOV TL1,#08HMOV TH1,#1HSETB TR1

Monitoring: JNB TF1, MonitoringCLR TR1CLR TF1RET ; All Delay code FEFF

END

30

Example 9.5Write assembly program for MCS51 to generate Pulse signal with duty cycle 20% to pin P1.1

MOV TMOD, #10HLoop: SETB P1.1

ACALL DelayONCLR P1.1ACALL DelayOFFJMP Loop

DelayON: MOV TL1,#00DMOV TH1,#236D ; 256-20SETB TR1

MonitoringOn: JNB TF1, MonitoringOnCLR TR1CLR TF1RET

DelayOFF: MOV TL1,#00DMOV TH1,#176D ; 256-80SETB TR1

MonitoringOff: JNB TF1, MonitoringOffCLR TR1CLR TF1RET

END