0% found this document useful (0 votes)
20 views42 pages

Microcontroller Timers

Uploaded by

Kamalesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views42 pages

Microcontroller Timers

Uploaded by

Kamalesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 42

1

THE 8051 MICROCONTROLLER


AND EMBEDDED SYSTEMS

8051 TIMER PROGRAMMING IN ASSEMBLY


OBJECTIVES
2

 List the timers of the 8051 and their


associated registers
 Describe the various modes of the 8051
timers
 Program the 8051 timers in Assembly to
generate time delay
PROGRAMMING 8051 TIMERS
3

 Basic registers of the timer


 Timer 0 and Timer 1 are 16 bits wide
 each 16-bit timer is accessed as two
separate registers of low byte and
high byte.
PROGRAMMING 8051 TIMERS
4

 Timer 0 registers
 low byte register is called TL0 (Timer 0 low byte)
and the high byte register is referred to as TH0
(Timer 0 high byte)
 can be accessed like any other register, such as A,
B, R0, R1, R2, etc.
 "MOV TL0, #4 FH" moves the value 4FH into TL0
 "MOV R5, TH0" saves TH0 (high byte of Timer 0) in
R5
PROGRAMMING 8051 TIMERS
5

Figure 9–1 Timer 0 Registers


PROGRAMMING 8051 TIMERS
6

 Timer 1 registers
 also 16 bits
 split into two bytes TL1 (Timer 1 low
byte) and TH1 (Timer 1 high byte)
 accessible in the same way as the
registers of Timer 0.
PROGRAMMING 8051 TIMERS
7

Figure 9–2 Timer 1 Registers


PROGRAMMING 8051 TIMERS
8

 TMOD (timer mode) register


 timers 0 and 1 use TMOD register to set operation
modes (only learn Mode 1 and 2)
 8-bit register
 lower 4 bits are for Timer 0
 upper 4 bits are for Timer 1
 lower 2 bits are used to set the timer mode
 (only learn Mode 1 and 2)
 upper 2 bits to specify the operation
 (only learn timer operation)
PROGRAMMING 8051 TIMERS
9

Figure 9–3 TMOD Register


PROGRAMMING 8051 TIMERS
10

 Clock source for timer


 timer needs a clock pulse to tick
 if C/T = 0, the crystal frequency attached to the 8051 is
the source of the clock for the timer
 frequency for the timer is always 1/12th the frequency of
the crystal attached to the 8051
 XTAL = 11.0592 MHz allows the 8051 system to
communicate with the PC with no errors
 In our case, the timer frequency is 1MHz since our
crystal frequency is 12MHz
PROGRAMMING 8051 TIMERS
11

 Mode 1 programming
 16-bit timer, values of 0000 to FFFFH
 TH and TL are loaded with a 16-bit initial value
 timer started by "SETB TR0" for Timer 0 and "SETB TR1"
for Timer l
 timer count ups until it reaches its limit of FFFFH
 rolls over from FFFFH to 0000H
 sets TF (timer flag)
 when this timer flag is raised, can stop the timer with
"CLR TR0" or "CLR TR1“
 after the timer reaches its limit and rolls over, the
registers TH and TL must be reloaded with the original
value and TF must be reset to 0
PROGRAMMING 8051 TIMERS
12

Figure 9–5a Timer 0 with External Input (Mode 1)


PROGRAMMING 8051 TIMERS (for
information only)
13

Figure 9–5b Timer 1 with External Input (Mode 1)


PROGRAMMING 8051 TIMERS
14

 Steps to program in mode 1


 Set timer mode 1 or 2
 Set TL0 and TH0 (for mode 1 16 bit
mode)
 Set TH0 only (for mode 2 8 bit auto
reload mode)
 Run the timer
 Monitor the timer flag bit
Example
In the following program, we are creating a square wave of 50%
duty cycle (with equal portions high and low) on the P1.5 bit.
Timer 0 is used to generate the time delay
15
Example
The following program generates a square wave on pin P 1.5 continuously
using Timer 1 for a time delay. Find the frequency of the square wave if
XTAL = 11.0592 MHz. In your calculation do not include the overhead due
16
to the timer setup instructions in the loop.
SECTION 9.1: PROGRAMMING 8051
TIMERS
17

 Finding values to be loaded into the


timer
 XTAL = 11.0592 MHz (12MHz)
 divide the desired time delay by
1.085s (1s) to get n
 65536 – n = N
 convert N to hex yyxx
 set TL = xx and TH = yy
Example
Assuming XTAL = 11.0592 MHz, write a program to generate a
square wave of 50 Hz frequency on pin P2.3.
18

 T = 1/50 Hz = 20 ms
 1/2 of it for the high and low portions of
the pulse = 10 ms
 10 ms / 1.085 us = 9216
 65536 - 9216 = 56320 in decimal =
DC00H
 TL = 00 and TH = DCH
 The calculation for 12MHz crystal uses
the same steps
Example (cont)
Assuming XTAL = 11.0592 MHz, write a program to generate a
square wave of 50 Hz frequency on pin P2.3.
19
PROGRAMMING 8051 TIMERS
20

 Generating a large time delay


 size of the time delay depends
 crystal frequency
 timer's 16-bit register in mode 1

 largest time delay is achieved by


making both TH and TL zero
 what if that is not enough?
PROGRAMMING 8051 TIMERS
21

 Using Windows calculator to find TH, TL


 Windows scientific calculator can be use to find the TH,
TL values
 Lets say we would like to find the TH, TL values for a
time delay that uses 35,000 clocks of 1.085s
1. open scientific calculator and select decimal
2. enter 35,000
3. select hex - converts 35,000 to hex 88B8H
4. select +/- to give -35000 decimal (7748H)
5. the lowest two digits (48) of this hex value are for TL and
the next two (77) are for TH
Example
Examine the following program and find the time delay in seconds.
Exclude the time delay due to the instructions in the loop.
22
PROGRAMMING 8051 TIMERS (for
information only)
23

 Mode 0
 works like mode 1
 13-bit timer instead of 16­bit
 13-bit counter hold values 0000 to
1FFFH
 when the timer reaches its maximum
of 1FFFH, it rolls over to 0000, and TF
is set
PROGRAMMING 8051 TIMERS
24

 Mode 2 programming
 8-bit timer, allows values of 00 to FFH
 TH is loaded with the 8-bit value
 a copy is given to TL
 timer is started by ,"SETB TR0" or "SETB TR1“
 starts to count up by incrementing the TL register
 counts up until it reaches its limit of FFH
 when it rolls over from FFH to 00, it sets high TF
 TL is reloaded automatically with the value in TH
 To repeat, clear TF
 mode 2 is an auto-reload mode
PROGRAMMING 8051 TIMERS
25

 Steps to program in mode 2


1. load TMOD, select mode 2
2. load the TH
3. start timer
4. monitor the timer flag (TF) with
"JNB”
5. get out of the loop when TF=1
6. clear TF
7. go back to Step 4 since mode 2 is
auto-reload
Example
Assuming that XTAL = 11.0592 MHz, find (a) the frequency of the
square wave generated on pin P1.0 and (b) the smallest frequency
achievable in this program, and the TH value to do that.
26
PROGRAMMING 8051 TIMERS
27

 Assemblers and negative values


 can let the assembler calculate the
value for TH and TL which makes
the job easier
 "MOV TH1, # -100", the assembler
will calculate the -100 = 9CH
 "MOV TH1,#high(-10000) "
 "MOV TL1,#low(-10000) "
COUNTER PROGRAMMING (for information
only)
28

 C/T bit in TMOD register


 used as a timer, the 8051's crystal is
used as the source of the fre­quency
 used as a counter, pulse outside the
8051 increments the TH, TL registers
 counter mode, TMOD and TH, TL
registers are the same as for the timer
 timer modes are the same as well
COUNTER PROGRAMMING (for information
only)
29

 C/T bit in TMOD register


 C/T bit in the TMOD register decides the source of the clock for
the timer
 C/T = 0, timer gets pulses from crystal
 C/T = 1, the timer used as counter and gets pulses from
outside the 8051
 C/T = 1, the counter counts up as pulses are fed from pins 14
and 15
 pins are called T0 (Timer 0 input) and T1 (Timer 1 input)
 these two pins belong to port 3
 Timer 0, when C/T = 1, pin P3.4 provides the clock pulse and
the counter counts up for each clock pulse coming from that
pin
 Timer 1, when C/T = 1 each clock pulse coming in from pin
P3.5 makes the counter count up
COUNTER PROGRAMMING
30

Table 9–1 Port 3 Pins Used For Timers 0 and 1


Example 18
Assuming that clock pulses are fed into pin T1, write a program for
counter 1 in mode 2 to count the pulses and display the state of
the TL1 count on P2. (for information only)
31

to LEDs

P2 is connected to 8 LEDs and input T1 to pulse.


COUNTER PROGRAMMING
32

Figure 9–6 Timer 0 with External Input (Mode 2)


COUNTER PROGRAMMING
33

Figure 9–7 Timer 1 with External Input (Mode 2)


COUNTER PROGRAMMING
34
COUNTER PROGRAMMING
35
COUNTER PROGRAMMING
36

Table 9–1 Port 3 Pins Used For Timers 0 and 1


COUNTER PROGRAMMING
37

 TCON register
 TR0 and TR1 flags turn on or off the timers
 bits are part of a register called TCON (timer
control)
 upper four bits are used to store the TF and TR
bits of both Timer 0 and Timer 1
 lower four bits are set aside for controlling the
interrupt bits
 "SETB TRl" and "CLR TRl“
 "SETB TCON. 6" and "CLR TCON. 6“
COUNTER PROGRAMMING
38

Table 9–2 Equivalent Instructions for the Timer Control Register (TCON)
COUNTER PROGRAMMING
39

 The case of GATE = 1 in TMOD


 GATE = 0, the timer is started with
instructions "SETB TR0" and "SETB TR1“
 GATE = 1, the start and stop of the
timers are done externally through
pins P3.2 and P3.3
 allows us to start or stop the timer
externally at any time via a simple
switch
COUNTER PROGRAMMING
40

Figure 9–8 Timer/Counter 0


COUNTER PROGRAMMING
41

Figure 9–9 Timer/Counter 1


42

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy