第六章 MCS-51 定时器 / 计数器
Click here to load reader
-
Upload
georgia-kemp -
Category
Documents
-
view
89 -
download
15
description
Transcript of 第六章 MCS-51 定时器 / 计数器
1
第六章 MCS-51 定时器 / 计数器
66.1.1 定时器定时器 // 计数器结构及工作方计数器结构及工作方式式
1
66.2.2 定时器应用举例定时器应用举例2
2
§6.1 定时器 /计数器结构及工作方式
3
学习内容
1
结构 工作方式
2
寄存器
3
1 、 MCS-51 单片机内有两个可编程的两个可编程的定时器 / 计数器 T0 、 T1 ,其逻辑结构如下图所示 :
图 6-1 MCS-51 定时器 / 计数器逻辑结构图
一、定时器 /计数器结构
T0T0 :是 1616 位加法位加法计数器,分别由两个八位专用寄存器 TH0TH0 和 TL0TL0 组成。
T1T1 :是 1616 位加法位加法计数器,分别由两个八位专用寄存器 TH1TH1 和 TL1TL1 组成。
用来设置定时器的工作工作方式方式。。
用来控制定时器的启启动、停止及中断动、停止及中断。
4
2 、定时器 / 计数器功能定时器 是通过内部计数器的计数来实现的,计数脉冲计数脉冲来
自单片机的内部内部,其频率是振荡(晶体)频率的 1
/12 ,即每个机器周期每个机器周期产生一个计数脉冲,计数器计数器加加 11 ,直至计满溢出。
5
计数器 是对外来脉冲来脉冲进行计数。计数器对来自输入引脚 P
3.4 和 P3.5 的外部信号计数,外部脉冲的负跳变负跳变(下降沿)触发计数触发计数。
检测一个由 1 到 0 的负跳变需要两个机器周期。所以最高计数频率为晶体频率的 1/24 。
6
问题的提出
晶振频率为 12MHz 时,定时器和计数器的最高计数频率各是多少?
7
回答:
晶振频率为 12MHz 时,定时器和计数器的最高计数频率各为 1MHz 、 500KHz .
8
分三类: 定时器 / 计数器方式寄存器: TMOD
定时器 / 计数器控制寄存器: TCON
定时器初值寄存器: TH0 TL0 TH1 TL1
二、定时器 /计数器寄存器
9
1 、定时器 / 计数器方式寄存器 TMOD ( 89H )
TMOD GATE C/T M1 M0 GATE C/T M0M1
D7 D6 D5 D4 D3 D1D2 D0
T1方式控制 T0方式控制
图6-2 TMOD 寄存器各位定义
•GATE :门控位,用来控制定时器 / 计数器的启动是否受外部中断请求信号的影响。GATE=0 ,不受影响,仅由控制位 TRx 控制;GATE=1 ,受 TRx 和外部中断请求信号共同控制。
10
•C/T :定时或计数功能选择位。C/T=1 ,为计数器方式;C/T=0 ,为定时器方式。
•M1M0: 定时器四种工作方式选择 :
00: 方式 0 : 13 位定时器 / 计数器01: 方式 1 : 16 位定时器 / 计数器10: 方式 2 :自动重装初值的 8 位定时器 / 计数器11: 方式 3 : T0 分成两个 8 位定时器 / 计数器
11
[ 例 6-1]: 某一系统使 T1 作为定时器,采用方式 2 ,使T0 作为计数器采用方式 1 , T0 、 T1 的门控位均为 0 ,请设置 TMOD 的值。
0 0 1 0 0 1 0 1
即: TMOD=25H.
TMOD GATE C/T M1 M0 GATE C/T M0M1
D7 D6 D5 D4 D3 D1D2 D0
T1方式控制 T0方式控制
12
2 、定时器 / 计数器控制寄存器 TCON(88H ,可位寻址 )
•TRx: Tx 的运行控制位。 TRx=1 ,启动定时器 / 计数器TRx=0 ,关闭定时器 / 计数器
TCON
D7 D2 D1 D0D4D5D6 D3
TF1 TR1 TF0 TR0 I E1 I T1 I E0 I T0
图6-3 TCON寄存器各位定义用于外部中断
x=0 、1
13
3 、定时器初值寄存器 TH0 TL0 TH1 TL1
用于存放计数初值,具有自动加 1 功能,加满后溢出,它们的字节地址是 :
TH1(8TH1(8 位位 ) TL1(8) TL1(8 位位 ) TH0(8) TH0(8 位位 ) TL0) TL0
(8(8 位位 ))
8DH 8BH 8CH 8AH8DH 8BH 8CH 8AH
根据定时器 / 计数器工作方式,计数长度可分别选择 :8 位, 13 位, 16 位。
14
MCS-51 的定时器 / 计数器共有四种工作方式,其中:T0 有方式 0 、 1 、 2 、 3 四种;T1 有方式 0 、 1 、 2 三种。
三、工作方式
15
1 、工作方式 0 (以 T0 为例)— 13 位定时器 / 计数器
TMOD
0
0
M0
M1
C/ T
GATE
INT0(P3.2)
T0(P3.4) C/ T=1
C/T=0振荡器 ÷ 12
控
制
TL0
(低 5 位)
TH0
TCON
TF0
TR0
中
断
图 6- 4 方式 0(13位计数器 )
(高 8 位)
S1
S2
TL0 的高 3位没有用。。
16
C/T=1 , S1 接下面, T0 作计数器,对 P3.4 引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加 1 ,计数值公式为:
N=213 – x=8192 – x
其中: N 为计数值, x 是 THx 、 TLx 的初值。 x=8191(1FFFH)8191(1FFFH) 时, N 最小值 =11;
x=00 时, N 最大值 =81928192 。 则 N 的范围: 11 ~~ 81928192 。
17
C/T=0 时, S1 接上面, T0 作定时器,对机器周期脉冲 Tcy 计数。 求定时时间由下式确定: t=N·Tcy=(213 – x)Tcy= (8192 – x)Tcy
其中: t 为定时时间。 求计数初值计算公式: x=213 – t/Tcy=8192 – t/Tcy
18
2 、工作方式 1 (以 T0 为例)— 16 位定时器 / 计数器
TMOD
1
0
M0
M1
C/T
GATE
INT0(P3.2)
T0(P3.4) C/T=1
C/T=0振荡器 ÷12
控
制
TL0
( 8 位)
TH0
( 8 位)
TCON
TF0
TR0
中
断
图 6-5 方式 1 ( 16 位计数器)
19
C/T=1 , S1 接下面, T0 作计数器,对 P3.4 引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加 1 ,计数值公式为:
N=216 – x=65536 – x
其中: N 为计数值, x 是 THx 、 TLx 的初值。 x=65535(FFFFH)65535(FFFFH) 时, N 最小值 =11;
x=00 时, N 最大值 =6553665536;
则 N 的范围: 11 ~~ 6553665536 。
20
C/T=0 时, S1 接上面, T0 作定时器,对机器周期脉冲 Tcy 计数。 求定时时间由下式确定: t=N·Tcy=(216 – x)Tcy= (65536 – x)Tcy
其中: t 为定时时间。 求计数初值计算公式: x=216 – t/Tcy=65536 – t/Tcy
21
3 、工作方式 2 (以 T0 为例)— 8 位定时器 / 计数器
TMOD0
1
M0M1
C/ TGATE
I NT0
T0 C/ T=1
C/ T=0振荡器 ÷ 12
控制
TL0(8位)
TCONTF0
TR0中断
图6-6 方式2(初始常数自动装入)
TH0(8位)
重新装入
TL0 作为 8 位加法计数器, TH0 作为初值寄存器用。 TL0 加法计数器溢出时置 TF0=1 ,而且发出重装载信号,使三态门打开,将 TH0 中的初值自动送入 TL0 。
22
C/T=1 , S1 接下面, T0 作计数器,对 P3.4 引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加 1 ,计数值公式为:
N=28 – x=256 – x
其中: N 为计数值, x 是 THx 、 TLx 的初值。 x=255(FFH)255(FFH) 时, N 最小值 =11;
x=00 时, N 最大值 =256256;
则 N 的范围: 11 ~~ 256256 。
23
C/T=0 时, S1 接上面, T0 作定时器,对机器周期脉冲 Tcy 计数。 求定时时间由下式确定: t=N·Tcy=(28 – x)Tcy= (256 – x)Tcy
其中: t 为定时时间。 求计数初值计算公式: x=28 – t/Tcy=256– t/Tcy
24
① 工作方式 0 : x= 213 – t/Tcy=213 –500us/2us
=8192 – 250=7942=1F06H
=1111100000110B
则 TL0=00000110B=06H , TH0=11111000B=0F8H
[ 例 6-2]: 已知晶振 6MHz ,要求定时 0.5ms ,试分别求出 T0 工作于方式 0 、方式 1 、方式 2 时的定时初值。解:机器周期 Tcy=12/fosc=12/6MHz=2us;
定时 t=0.5ms=500us.
25
② 工作方式 1 : x= 216 – t/Tcy=216 –500us/2us
=65536 – 250=65286=FF06H
则 TL0=06H , TH0=0FFH
③ 工作方式 2 : x= 28 – t/Tcy=28 –500us/2us=256 – 250=6=6H
则 TL0=06H
TH0=06H (重装初值寄存器,其值不变)
26
§6.2 定时器应用举例
学习内容
1
应用步骤
2
应用举例
27
1 、 T0 、 T1 的选择使用;2 、合理选择工作方式—— TMOD ;3 、计算初值 ;
x=2n –t/Tcy
其中, n 与工作方式有关, 方式 0 , n=13 ; 方式 1 , n=16 ; 方式 2 、 3 时, n=8 。
一、定时器应用步骤
28
4 、编制应用程序:① 定时器 / 计数器的初始化:
写 TMOD ; 写入定时初值; 设置中断系统的 IP 、 IE ; 启动定时器运行( TRx )。
② 正确编制定时器 / 计数器中断服务程序。
一、定时器应用步骤
29
[ 例 6-3]: 设单片机晶振频率 fosc=12MHz ,使用 T0以方式 0 产生周期为 1ms 的方波,并由 P1.0 输出。以中断方式完成编程。解:11 、、 TMODTMOD 配置配置 T1 不用,有关位设置为 0 ; T0 的 GATE=0 , C/T=0 , M1M0 = 00 (方式0 )。 则 TMOD 初始化设置为 00000000B ,即 00H 。
二、定时器编程举例
30
2 、计算初值 产生 1ms 的方波,只需在 P1.0 端以 0.5ms 为周期
交替输出高低电平即可,因此定时时间为 0.5ms 。
Tcy=12/fosc=12/12MHz=1us
x=213–t/Tcy=8192-500us/1us=8192-500=7692
=1E0CH=1 1110 0000 1100B , TH0=11110000B=0F0H ; TL0=00001100B=0CH
3 、启动和中断 定时器 T0 的启动由 TR0 控制,即 TR0=1 启动。 定时器 T0 的中断允许由 ET0 和 EA 控制, 即 ET0=1 、 EA=1 。
31
4 、程序设计 ORG 0000H LJMP MAIN ORG 000BH LJMP DS0 ORG 0100HMAIN: MOV SP, #30H MOV TL0, #0CH MOV TH0, #0F0H MOV TMOD, #00H SETB ET0 SETB EA SETB TR0 SJMP $DS0: MOV TL0, #0CH MOV TH0, #0F0H CPL P1.0 RETI
32
练习题:设单片机晶振频率 fosc=6MHz ,使用 T1 以方式 2 产生周期为 1ms 的方波,并由 P1.0 输出。以中断方式完成。