当前位置:首页 >> 信息与通信 >>

51单片机定时器


定时器/计数器及其应用

定时器/计数器及其应用
?

定时器/计数器的应用场合: 定时或延时控制、对外部事件的检测、计数 等;
MCS-51系列8031、8051单片机有两个 16位定时器/计数器(即T0和T1); 8032、8052单片机有3个16位定时器/计 数器(即T0、 T1和T2);

?

?

2

定时器/计数器及其应用
? ?

?

所谓计数器就是对外部输入脉冲的计数; 所谓定时器也是对脉冲进行计数完成的,计 数的是MCS-51内部产生的标准脉冲,通过 计数脉冲个数实现定时。 所以,定时器和计数器本质上是一致的,在 以后的叙述中将定时器/计数器笼统称为定 时器。

3

4

第5章 定时器/计数器及其应用
?

?
?

5.1 定时器的结构及工作原理 5.2 定时器的TMOD和TCON寄存器 5.3 定时器的工作方式
? ? ? ?

5.3.1 5.3.2 5.3.3 5.3.4

方式0 方式1 方式2 方式3

?

5.4 定时器的编程和应用

5

第5章 定时器/计数器及其应用

?5.1 定时器的结构及工作原理

6

5.1 定时器的结构及工作原理
内 部 结定 构时 框器 图
?

组成:两个16位的定时器T0和T1,以及他们的工作方式寄存器 TMOD和控制寄存器TCON等组成。内部通过总线与CPU相连。 定时器T0和T1各由两个8位特殊功能寄存器TH0、TL0、TH1、 TL1构成。 工作方式寄存器TMOD:用于设置定时器的工作模式和工作方式; 控制寄存器TCON:用于启动和停止定时器的计数,并控制定时器 的状态; 单片机复位时,两个寄存器的所有位都被清0。
7

8051

?

?

?

?

5.1 定时器的结构及工作原理
? ?

两个可编程的定时器/计数器T1、T0。 每个定时器内部结构实际上就是一个可编程的加法计数器, 由编程来设置它工作在定时状态还是计数状态。

两种工作模式: (1) 计数器工作模式
就是对外部事件进行计数。计数脉冲来自相应的外部输入引脚T0 (P3.4)或T1(P3.5)。当输入信号发生由1至0的负跳变(下降沿)时, 计数器(TH0,TL0或TH1,TL1)的值增1。计数的最高频率一般为 振荡频率的1/24。Why?

(2) 定时器工作模式
也是通过计数实现的。计数脉冲来自内部时钟脉冲,每个机器周期 计数值增1,每个机器周期=12个振荡周期,因此计数频率为振荡频 率的1/12。所以定时时间=计数值×机器周期。

4种工作方式 (方式0-方式3) 。
8

5.1 定时器的结构及工作原理
f0
f ? f 0 /12
加1计数器 定时

计数

THx

TLx

TFx

Tx TRx

控制信号K “1”启动,计数器运行; “0”停止,计数器停止;

?

定时器/计数器原理框图 INTx 当控制信号 C/T = 0 定时器工作在定时方式;加1计数器对脉冲f 进行计数,每来一个脉冲,计数器加1,直到计时器计满溢出; 因为 f ? f 0 /12 ,即一个计数脉冲的周期就是一个机器周期;计数 器计数的是机器周期脉冲个数。从而实现定时。

?

当控制信号 C/T = 1 定时器工作在计数方式;加1计数器对来自输 入引脚T0(P3.4)和T1(P3.5)的外信号脉冲进行计数,每来一个 脉冲,计数器加1,直到计时器计满溢出;
9

TCON(88H)

?

控制信号K可以控制计数器的“启动”和“停止”,

K = TRx(INTx + GATE)
10

5.1 定时器的结构及工作原理
指令周期 S1 S2 机器周期 S3 S4 S5 S6 S1 S2 机器周期 S4 S3 S5 S6 P P P P XTAL2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 1 P2 P1 P2 1 P2 1 P2 1 P2 P1 P2 P1 P2 (OSC) 振荡周期 状态周期
? ?

在每个机器周期的S5P2期间采样检测引脚输入电平。 若前一个机器周期采样值为“1”,后一个机器周期采样值 为“0”,则计数器加1。 新的计数值在检测到输入引脚电平发生“1”到“0”的负 跳变(下降沿)后,于下一个机器周期的S3P1期间装入计 数器中。

?

?

由于CPU需要两个机器周期来识别一个“1”到“0”的跳变 信号,所以最高的计数频率为振荡周期的1/24。

12

5.1 定时器的结构及工作原理
?

定时/计数器对输入信号的要求
1.

外部计数脉冲的最高频率为系统振荡器频率的1/24,例如 选用12MHz频率的晶体,则可输入500KHz的外部脉冲。
输入信号的高、低电平至少要分别保持一个机器周期。 如图所示,图中Tcy为机器周期。

2.

13

5.1 定时器的结构及工作原理
?

可编程定时器的工作方式、启动、停止、溢出标 志、计数器等都是可编程的——通过设置寄存器 TMOD,TCON,TH0,TL0,TH1和TL1 实现。
当设置了定时器的工作方式并启动定时器工作后, 定时器就按被设定好的工作方式独立工作,不再 占用CPU,只有在计数器计满溢出时才向CPU申 请中断,占用CPU。 由此可见,定时器是单片机中工作效率高且应用 灵活的部件。
14

?

?

第5章 定时器/计数器及其应用

?5.2 定时器的TMOD和TCON 寄存器

15

5.2 定时器的TMOD和TCON寄存器
?

8051单片机定时器主要有几个特殊功能寄存器组 成: TMOD,TCON,TH0,TL0,TH1,TL1。 TMOD:设置定时器的工作方式; TCON:控制定时器的启动和停止; TH0和TL0 :存放定时器T0的初值或计数结果; TH0存放高8位,TL0 存放低8位; TH1和TL1 :存放定时器T1的初值或计数结果; TH1存放高8位,TL1 存放低8位;
16

?
? ?

?

5.2.1 工作方式控制寄存器TMOD

(3) M1、M0计数器模式和定时器模式选择位 (2)8位分为两组,高4位控制T1,低4位控制T0。 (4) C/T* — — 工作方式选择位 TMOD无位地址,不能位寻址。 工 (1)M1 定时器模式。 作 方 式 GATE — (5) 0: M0 门控位 复位时,TMOD所有位均为“0”。 0 0 方式0,13位定时器/计数器。 0: 计数器模式。 1: 以TRX (X=0,1) 来启动定时器/计数器运行。 0 1 方式1,16位定时器/计数器。 1: 用外中断引脚 (INT0*或INT1*) 上的高电平和 1 0 方式2,8位常数自动重新装载 TRX来启 动定时器/计数器运行。 1 1 方式3,仅适用于T0,
T0分成两个8位计数器,T1停止计数。
17

5.2.2 控制寄存器TCON

低4位与外部中断有关,后面介绍。高4位的功能如下: (1) TF1、TF0 —计数溢出标志位 定时器T0或T1计数溢出时,由硬件自动将此位置“1”; TFx可以由程序查询,也是定时中断的请求源; (2) TR1、TR0 —计数运行控制位 TRx=1: 启动定时器/计数器工作 TRx=0: 停止定时器/计数器工作

18

5.2.3 定时/计数器的初始化
MCS-51单片机的定时器/计数器是可编程的,但在进行定 时或计数之前要对程序进行初始化,具体步骤如下: (1)对TMOD赋值,以确定定时器的工作模式; (2)置定时/计数器初值,直接将初值写入寄存器的TH0、 TL0或TH1、TL1; (3)根据需要,对IE置初值,开放定时器中断;

(4)对TCON寄存器中的TR0或TR1置位,启动定时/计数
器,置位以后,计数器即按规定的工作模式和初值进行计 数或开始定时。
20

5.2.3 定时/计数器的初始化
初值计算:
设计数器的最大值为M,则置入的初值X为: 计数方式:X=M-计数值 定时方式:由(M-X)T=定时值,得X=M-定时值/T T为计数周期,是单片机的机器周期。

(模式0: M为213,模式1: M为216,模式2和3: M为28)
例如:机器周期为1μs 时, 若工作在模式0,则最大定时值为:213×1μs =8.192ms 若工作在模式1,则最大定时值为: 216×1μs =65.536ms
21

第5章 定时器/计数器及其应用

?5.3 定时器的工作方式

22

5.3 定时器的工作方式
? MCS-51的定时器T0有4种工作方式:

即:方式0,方式1,方式2,方式3。
? MCS-51的定时器T1有3种工作方式:

即:方式0,方式1,方式2。

23

5.3 定时器的工作方式——方式0
5.2.1 方式0
M1、M0设置为00 ,为13位计数器,以T1为例, 其框图如下:

计数脉 冲输入

加1计数器

24

5.3 定时器的工作方式——方式0
TH1
D12 D11 D10 D9 D8 D7 D6 D5

TL1
× × ×
D4 D3 D2 D1 D0

? 在这种方式下,16位寄存器TH1和TL1只用13位,

由TH1的8位和TL1的低5位组成。TL1的高3位不定。 ? 当TL1的低5位计数溢出时,向TH1进位。而TH1计 数溢出时,则向中断标志位TF1进位(即硬件将TF1 置1),并请求中断。 ? 可通过查询TF1是否置“1”或考察中断是否发生来 判定定时器T1的操作完成与否。
25

5.3 定时器的工作方式——方式0
?

当C/T=0时,为定时工作模式,开关接到振荡器 的12分频器输出上,计数器对机器周期脉冲计数。 其定时时间为: (213-初值)×振荡周期×12
例如:若晶振频率为12MHz,则最长的定时时间 为(213-0)×(1/12)×12us=8.191ms

?

当C/T=1时,为计数工作模式,开关与外部引脚 T1(P3.5)接通,计数器对来自外部引脚的输入脉 冲计数。当外部信号发生负跳变时计数器加1。

26

5.3 定时器的工作方式——方式0
?

GATE控制定时器Tx(T1或T0)的条件:

(1) 当GATE=0时,“或门”输出恒为1,“与门”的输 出信号K由TRx决定(即此时K=TRx),定时器不受INTx 输入电平的影响,由TRx直接控制定时器的启动和停止。 TRx=1;计数启动; TRx=0;计数停止;

(2) 当GATE=1时, “与门”的输出信号K由INTx输入 电平和TRx位的状态一起决定(即此时K=TRx·INTx),
当且仅当TRx=1且INTx=1(高电平)时,计数启动; 否则,计数停止。

返回

27

5.3 定时器的工作方式——方式1
5.3.2 方式1
M1、M0=01,为16位的计数器,除位数外,其他与方式0相同。

?

其定时时间为: (216-初值)×振荡周期×12 例如:若晶振频率为12MHz,则最长的定时时间为 (216-0)×(1/12)×12us=65.536ms
28

5.3 定时器的工作方式——方式2
5.3.3 方式2
M1、M0=10 ,为自动恢复初值的8位计数器,等效框图如 下: TLx作为8位计数器,THx作为重置初值的缓冲器。

THx 作为常数缓冲器,当 TLx 计数溢出时,在置“ 1 ”溢出标志 TFx 的同时,还自动的将 THx 中的初值送至 TLx ,使 TLx从初值开 始重新计数。定时器/计数器的方式2工作过程如图 (x=0, 1) 。
29

5.3 定时器的工作方式——方式2
? 优点:

方式0和方式1用于循环重复定时或计数 时,在每次计数器挤满溢出后,计数器 复0。若要进行新一轮的计数,就得重 新装入计数初值。这样一来不仅造成编 程麻烦,而且影响定时精度。而方式2 具有初值自动装入的功能,避免了这个 缺点,可实现精确的定时。
? 缺点:

只有8位计数器,定时时间短、计数范 围小。其定时时间为: (28-初值)×振荡周期×12
若晶振频率为12MHz,则最长的定时时间为 (28-0)×(1/12)×12us=0.256ms
方式2工作过程图 (x=0, 1) 。
30

5.3 定时器的工作方式——方式3
5.3.4 方式3 只适用于定时器/计数器T0。T1不能工作在方式3。 如果将T1置为方式3,则相当于TR1=0,停止计数 (此时T1 可用来作串行口波特率产生器) 。 1. 工作方式3下的T0 T0在方式3时被拆成两个独立的8位计数器:TH0和TL0。
? ?

8位计数器TL0使用T0的状态控制位C/T*、GATE、TR0、 INT0,它既可以工作在定时方式,也可以工作在计数方式。 8位定时器TH0被固定为一个8位定时器(不能作外部计数模 式) ,并使用定时器T1的状态控制位TR1,同时占用定时器 T1的中断请求源TF1。此时,定时器TH0的启动或停止只受 TR1控制。 TR1=1时,启动TH0的计数; TR1=0时,停止TH0的计数
31

5.3 定时器的工作方式
各引脚与T0的逻辑关系如图所示:

32

5.3 定时器的工作方式
2. T0工作在方式3下T1的各种工作方式 注意:当T0处于方式3时, T1仍可设置为方式0、方式1和方式2。
?

当时由于TR1、TF1和T1的中断源都已被定时器T0(中的TH0)占 用,所以定时器T1 仅有控制位C/T来决定其工作在定时方式或 计数方式。 当计数器计满溢出时,不能置位“TF1”,而只能将输出送往串 口。所以,此时定时器T1一般用作串口的波特率发生器,或不 需要中断的场合。 (1) T1工作在方式0

?

33

5.3 定时器的工作方式
(2) T1工作在方式1

(3) T1工作在方式2

34

第5章 定时器/计数器及其应用

?5.4 定时器的编程和应用

35

5.4 定时器的编程和应用
?

编程说明

MCS-51单片机的定时器是可编程的,但在进行定时或计数之前要对程 序进行初始化,具体步骤如下:

(1)确定工作方式字:对TMOD寄存器正确赋值;
(2)确定定时初值:计算初值,直接将初值写入寄存器的TH0、TL0或 TH1、TL1; 初值计算: 设计数器的最大值为M,则置入的初值X为: 计数方式:X=M-计数值 定时方式:由(M-X)T=定时值,得X=M-定时值/T T为计数周期,是单片机的机器周期。 (模式0 M为213,模式1 M为216,模式2和3 M为28) (3)根据需要,对IE置初值,开放定时器中断; (4)启动定时/计数器,对TCON寄存器中的TR0或TR1置位,置位以 后,计数器即按规定的工作模式和初值进行计数或开始定时。
36

5.4 定时器的编程和应用
例5-1 要在P1.0上输出一个周期为2ms的方 波,假设系统振荡频率采用12MHz。

利用T0方式0产生1ms的定时

即要使P1.0 每隔1ms取反 一次。

方波的周期用T0来确定,让T0每隔1ms计数溢出1 次,即TF0=1;查询到TF0=1 则CPU对P1.0取反。
37

5.4 定时器的编程和应用
第一步: 确定工作方式字

方式0 (13位)最长可定时 8.192ms; 方式1 (16位)最长可定时 65.536ms; 方式2 (8位)最长可定时 256?s。
? ? ? ? ?

T0为方式0, ? M1M0=00 定时工作状态, ? C/T=0 GATE=0,不受INT0控制, T1不用全部取“0”值。 故TMOD=00H
38

5.4 定时器的编程和应用
第二步: 计算1ms定时的初值X 设初值为X,则有: (213-X) ×12×10-6 ×1/12=1×10-3 可求得:X=8192-1000=7192 X化为16进制, 即X=1C18H=1,1100,000 1,1000B。 所以,T0的初值为:

TH0
1 1 1 0 0 0 0 0

TL0
× × ×
1 1 0 0 0

TH0=E0H TL0=18H
39

5.4 定时器的编程和应用
第三步: 程序设计
采用查询TF0的状态来控制P1.0的输出,同时要重新 装入初值。

40

参考程序:
ORG MAIN: MOV MOV MOV SETB LOOP: JBC SJMP NEXT: MOV MOV CPL SJMP END 0100H TMOD, #00H TL0, #18H TH0, #0E0H TR0 TF0, NEXT LOOP TL0, #18H TH0, #0E0H P1.0 LOOP

;设置T0为方式0 ;送计数初值 ;送计数初值 ;启动T0 ;查询定时时间到,转NEXT,同时清TF0 ;重复循环 ;T0重置初值 ;T0重置初值 ;P1.0的状态取反 ;重复循环

41

5.4 定时器的编程和应用
例5-2 将[例5-1]中的输出方波周期改为1秒。 分析: 周期为1s的方波要求500ms的定时。
(1) T0工作方式的确定

因定时时间较长,采用哪一种工作方式?由各种工作方 式的特性,可计算出: 方式0 (13位)最长可定时 8.192ms; 以上各方式 方式1 (16位)最长可定时 65.536ms; 都不满足要求 方式2 (8位)最长可定时 256?s。
所以采用定时器定时加软件计数的方法来实现延长定时。 选方式1,定时50ms,软件计数10次。 50ms ×10=500ms。 所以,TMOD=01H

42

5.4 定时器的编程和应用
(2) 计算计数初值 因为: (216-X)×12×10-6 ×1/12=50×10-3 所以: X=15536=3CB0H 因此: TH0=3CH,TL0=B0H (3) 10次计数的实现 设计一个软件计数器,初始值设为10。每隔 50ms定时时间到,产生溢出标志TF0,程序查询 到TF0=1,则软件计数器减1。这样减到0时就获 得了500ms的定时。
43

(4) 程序设计(参考程序)
MAIN: MOV MOV MOV MOV SETB LOOP: JBC SJMP NEXT: TMOD, #01H TL0, #0B0H TH0, #3CH R7, #10 TR0 TF0, NEXT LOOP ;设T0工作在方式1 ;给T0设初值 ;软件计数器初值 ;启动T0 ;查询定时时间到,转NEXT,同时清TF0 ;R7不等于0,则不对P1.0取反 ;重置软件计数器初值 ;T0中断子程序,重装初值

DJNZ R7,EXIT CPL P1.0 MOV R7,#10

EXIT: MOV TL0,#0B0H MOV TH0,#3CH SJMP LOOP END

44

5.4 定时器的编程和应用
? 以上的定时程序中,程序都要重置计时器初值,这

样从定时器溢出发出溢出标志,到重装完定时器初 值,在开始计数,之间总会有一段时间间隔,使定 时时间增加了若干微秒,造成定时不够精确。
? 为了减小这种定时误差,单片机中设置了工作方式

2( 自动重装初值 ) ,则可避免上述因素,省去程序 中重装初值的指令,实现精确定时。 受到很大限制。

? 但是工作方式2的缺点是只有8位计数器,定时时间

45

5.4 定时器的编程和应用
例5-3 利用T0方式2产生250us的定时,在P1.0引脚上输出周 期为500us的方波(要求精确定时)。(设系统振荡为12MHz) (1) 工作方式选择 实现精确定时,采用方式2。 对于12MHz晶振,方式2的最大计数时间为28=256us, 所以可实现250us的精确定时。 故,设置TMOD=02H。 (2) 计算初值 设初值为X: 则 (28-X) ×12×10-6×1/12=250×10-6 X=28-250=6=06H (3) 程序设计 采用查询TF0的状态来控制P1.0的输出。
46

5.4 定时器的编程和应用
(4) 参考程序
MAIN: MOV TMOD, #02H MOV TH0, #06H MOV TL0, #06H SETB TR0 ;置T0方式2 ;送计数初值 ;启动T0

LOOP: JBC TF0, NEXT ;查询定时时间到,转NEXT,同时清TF0 SJMP LOOP NEXT: CPL P1.0 ;输出取反 SJMP LOOP ;重复循环 END
47

门控制位GATE的应用—测量脉冲宽度
? GATE门可使定时器Tx(T0或T1)的启动计数
回顾

受INTx*的控制,可测量引脚INTx*(P3.2或 P3.3) 上正脉冲的宽度(机器周期数) 。

? 以T1为例:

K

当GATE=1时,K=TRx· INTx
48

门控制位GATE的应用—测量脉冲宽度
例5-4 利用T1门控位GATE测试INT1*(P3.3)引脚上出现的正脉冲

的宽度。 分析: ? 根据设计要求,将T1设定为定时工作模式、方式1、GATE=1; ? 当TR1=1时,一旦INT1*(P3.3)引脚上出现高电平就开始计 数,直到出现低电平为止。 ? 然后读取TH1、TL1中的计数值,分别送到寄存器A和B中。 ? 由于T1工作在定时方式,计数器计数的是机器周期的脉冲数; ? 将脉冲数转化成时间,就可得到正脉冲的宽度。

49

参考程序:
ORG MAIN: MOV MOV MOV LOOP: JB SETB LOOP1: JNB LOOP2: JB CLR MOV MOV …… 0100H TMOD, #90H TL1, #00H TH1, #00H P3.3, LOOP TR1 P3.3, LOOP1 P3.3, LOOP2 TR1 A, TL1 B, TH1

;T1为方式1定时控制字 ;计数器初值为0
;等待INT1*低 ;如INT1*为低,启动T1 ;等待INT1*升高,开始计数 ;等待INT1*降低,停止计数 ;停止T1计数 ;T1计数值的低8位送A ;T1计数值的高8位送B

由于定时器最长为16位计数器,因此被测脉冲高电平的宽度不能超过 65536个机器周期。
50

5.4 定时器的编程和应用
例5-5 当T0(P3.4) 引脚上发生负跳变时,从P1.0引脚上 输出一个周期为 1ms 的方波 , 如图所示。 ( 系统振荡为 6MHz) 两个计数器同时使用

51

5.4 定时器的编程和应用
(1) 工作方式选择
?

T0为方式1计数,初值 0FFFFH,即外部计数输入端 T0(P3.4) 发生一次负跳变时,T0加1且溢出,溢出标志TF0 置“1”,发中断请求。在进入T0中断程序后,把F0标志置 “1”,说明T0引脚上已接收了负跳变信号。 T1定义为方式2定时。在T0引脚产生一次负跳变后,启动T1 每500?s产生一次中断,在中断服务程序中对P1.0求反,使 P1.0产生周期1ms的方波。 TMOD=0010,0101=25H 设T1的初值为X: 则 (28-X) ×2×10-6=5×10-4

?

?

(2) 计算T1初值

X=28-250=6=06H

52

(3) 程序设计
MAIN: MOV TMOD, #25H ;初始化,T1为方式2定时,T0为方 式1计数 MOV TL0, #0FFH ;T0置初值 MOV TH0, #0FFH SETB TR0 ;启动T0 MOV TL1, #06H ;T1置初值 MOV TH1, #06H

LOOP0: JBC TF0, NEXT0 ;查询T0有无负跳变,有则转到NEXT0 SJMP LOOP0 NETX0: CPL P1.0 ;P1.0取反 SETB TR1 ;启动T1 LOOP1: JBC TF1, NEXT1 ;查询T1定时时间到否,到则转到NEXT1 SJMP LOOP1 NEXT1: CPL P1.0 ;P1.0取反 SJMP LOOP1 END 53

5.4 定时器的编程和应用
? T0

方式3时,TL0和TH0被分成两个独 立的8位定时器/计数器。其中,
?
?

TL0: 8位定时器/计数器;
TH0: 8位定时器。

? 当T1作串行口波特率发生器时,T0才

设置为方式3。

54

5.4 定时器的编程和应用
?

以上例题均采用查询的方法,这种方法很简单, 但是在定时器整个计数的过程中,CPU要不断 地查询溢出标志TFx的状态,很难执行其他操 作,占用了CPU的工作时间,使得CPU的工作 效率不高。 若采用中断的方式来实现,可大大提高CPU的 工作效率。

?

?

我们下一章学习中断,学习完之后再返回来分 析和比较两者的区别与特点。

55

本 章 结 束!

56

5.4 定时器的编程和应用
例5-6 假设某MCS-51应用系统的两个外中断源已被占用, 设置T1工作在方式2,作波特率发生器用。现要求增加 一个外部中断源,并控制P1.0引脚输出一个5kHz的方 波。设系统振荡为6MHz。

57

5.4.3 方式3的应用
(1) 选择工作方式 TL0为方式3计数,把T0引脚(P3.4) 作附加的外中断输入端, TL0初值设为 0FFH,当检测到 T0引脚电平出现负跳变时, TL0溢出,申请中断,这相当于跳沿触发的外部中断源。 TH0为8位方式3定时,控制P1.0输出5kHz的方波信号。如 图所示。

58

5.4.3 方式3的应用
(2) 初值计算 TL0的初值设为0FFH。 5kHz的方波的周期为200?s,TH0的定时时间为100?s。 TH0初值X计算如下: (28-X) ×2×10-6=1×10-4 X=28-100=156=9CH (3) 程序设计 ORG LJMP ORG LJMP ORG T1的中断 LJMP 0000H MAIN 000BH TL0INT 001BH TH0INT

;T0中断入口 ;跳T0中断服务程序 ;在 T1 方式 3 时, TH0 占用 ;跳TH0中断服务程序
59

5.4.3 方式3的应用
ORG MAIN: MOV MOV MOV MOV MOV MOV 发 MOV 0100H ;T0方式3计数,T1方式2定时 TMOD, #27H TL0, #0FFH ;置TL0初值 TH0, #9CH ;置TH0初值 TL1, #dataL ;data为波特率常数 TH1, #dataH TCON, #55H;启动T0、T1,设置外部中断为跳沿触

IE, #9FH ;开中断 ┆ TL0INT: MOV TL0, #0FFH ; TL0 中断服务程序, TL0 重新 装入初值

中断处理
TH0INT: MOV TH0, #9CH ;TH0中断服务程序,TH0重新装入初 值 CPL P1.0 ;P1.0位取反输出 60 RETI

5.4.5 实时时钟的设计
1. 实时时钟实现的基本思想 如何获得1秒的定时,可把定时时间定为100ms,采 用中断方式进行溢出次数的累计,计满10次,即得到 秒计时。

片内RAM中规定3个单元作为秒、分、时单元,具体 安排如下:
42H: “秒”单元 ;41H: “分”单元;40H: “时” 单元 从秒到分,从分到时是通过软件累加并进行比较的方 法来实现的。
61

5.4.5 实时时钟的设计
2. 程序设计 (1) 主程序的设计 流程如图所示。

62

5.4.5 实时时钟的设计
(2) 中断服务程序的设计 中断服务程序的主要 功能是实现秒、分、 时的计时处理。参考 程序略。

63

5.4.6 运行中读定时器/计数器
在读取运行中的定时器/计数器时,需注意: 若恰好出 现TLX溢出向THX进位的情况,则读得的(TLX) 值就 完全不对。同样,先读(THX) 再读(TLX) 也可能出错。 方法: 先读(THX) ,后读(TLX) ,再读(THX) 。若两 次读得(THX) 相同,则读的内容正确。若前后两次读 的(THX) 有变化,则再重复上述过程,这次重复读得 的内容就应是正确的。下面是有关的程序,读得的 (TH0) 和(TL0) 放置在R1和R0内。

64

5.4.6 运行中读定时器/计数器
RDTIME: MOV A, TH0 ;读(TH0) MOV R0, TL0 ;读(TL0) CJNE A, TH0, RDTIME;比较2次读得的(TH0) ;不相等则重复读 MOV R1, A ;(TH0) 送入R1中 RET

65


相关文章:
51单片机定时器初值的计算
51单片机定时器初值的计算_电子/电路_工程科技_专业资料。51 单片机定时器初值的计算一。10MS 定时器初值的计算: 1.晶振 12M 12MHz 除 12 为 1MHz,也就是说一...
89C51单片机定时器所定时间的计算以及写法
89C51单片机定时器所定时间的计算以及写法_电子/电路_工程科技_专业资料。关于单片机定时是计算89C51 单片机定时器时间的计算以及写法今晚学单片机的时候,有一点儿问...
51单片机定时器初值的计算
51 单片机定时器初值的计算一。10MS 定时器初值的计算: 1.晶振 12M 12MHz 除 12 为 1MHz, 也就是说一秒=1000000 次机器 周期。10ms=10000 次 机器周期。 ...
51单片机定时器实验
51单片机定时器实验_理学_高等教育_教育专区。电子信息工程学系实验报告课程名称:单片机原理 成 实验项目名称:51 定时器实验 班级:测控 081 姓名: 实验时间:2012-...
51单片机定时器方式一12M和11
51单片机定时器方式一12M和11_电子/电路_工程科技_专业资料。51单片机定时器方式一12MHZ和11.0592MHZ定时赋初值51 单片机定时器方式一 12M 和 11.0592M 晶振初值...
51单片机定时器控制流水灯
51单片机定时器控制流水灯_电子/电路_工程科技_专业资料 暂无评价|0人阅读|0次下载|举报文档51单片机定时器控制流水灯_电子/电路_工程科技_专业资料。51单片机定时...
51单片机定时器_图文
51单片机定时器_信息与通信_工程科技_专业资料。51 单片机定时器(可实现定时功能,也可实现计数功能) +++ 51 单片机定时器(可实现定时功能,也可实现计数功能) ++...
基于51单片机定时器的设计与实现_图文
3 基于 51 单片机定时器的设计与实现 基于 51 单片机定时器的设计与实现 重庆三峡学院电子与信息工程学院电子信息工程专业 重庆万州 404000 摘要 本设计是一款关于...
51单片机定时器实验报告
51单片机定时器实验报告_工学_高等教育_教育专区。关于51单片机定时器实验报告的C语言程序和汇编程序以及定时器方式的不同之处。51 单片机定时器实验 实验内容:实验...
基于51单片机定时器的电子时钟设计
基于51单片机定时器的电子时钟设计_信息与通信_工程科技_专业资料 暂无评价|0人阅读|0次下载|举报文档 基于51单片机定时器的电子时钟设计_信息与通信_工程科技_专业...
更多相关标签:
80c51单片机的定时器 | 单片机51定时器中断 | at89c51单片机定时器 | 单片机定时器 | 单片机定时器初值计算 | 单片机定时器中断程序 | 单片机定时器程序 | 单片机定时器工作原理 |