第6章定时器计数器
单片机原理及应用 第06章定时计数器
20
6.5 定时器/计数器的编程
初始化
1 根据要求给方式寄存器TMOD送一个方式控制 字,以设定定时器的工作方式; 2 根据需要给TH和TL选送初值,以确定需要的 定时时间或计数的初值; 3 根据需要给中断允许寄存器IE送中断控制字, 以开放相应的中断和设定中断优先级;
也可用查询方式来响应定时器。
JBC TF1,RP1 SJMP DEL2
30
6.6.4 长定时时间的产生
例 假设系统时钟为6MHz,编写定时器T0产生 1秒定时的程序。 (1)T0工作方式的确定 定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出: 方式0最长可定时16.384ms;
方式1最长可定时131.072ms; 方式2最长可定时512μs。 选方式1,每隔100ms中断一次,中断10次为1s。
8
6.3 定时/计数器的4种工作方式 方式0、方式1(13位、16位定时计数方式)
T1工作于方式0的等效框图(M1M0=00、01)
GATE=0、A=1、TR1=1 GATE=1、INT1=1、TR1=1。注意定时器初值与定时时间的不同
9
6.3.1 方式0、方式1的说明 定时/计数器T1工作在方式0时,为13位的计数器,由TL1 的低5位和TH1的8位所构成。TL1低5位溢出向TH1进 位,TH1计数溢出置位TCON中的溢出标志位TF1。 GATE位的状态决定定时/计数器运行控制取决于TR1 一个条件还是TR1和INT1引脚这两个条件。 当GATE=0时,A点电位恒为1,则只要TR1被置为1,B 点电位即为1,定时/计数器被控制为允许计数(定时/计 数器的计数控制仅由TR1的状态确定,TR1=1计数, TR1=0停止计数)。 当GATE=1时,B点电位由INT1输入的电平和TR1的状 态确定,当TR1=1,且INT1=1时,B点电平才为1,才 允许定时器/计数器计数(计数控制由TR1和INT1二个条 件控制)。 方式1时,TL1的8位都参与计数,因而属于16位 定时/计数器。其控制方式,等效电路与方式0完全相 10 同。
单片机第六章定时器
这种方式下,计数寄存器由13位组成,即THx高八位(作计数器)
和TLx的低5位构成。TLx的高3位未用。
计数时,TLx的低5位溢出后向THx进位,THx溢出后 将TFx置位,并向CPU申请中断。
用软件控制,置 l时,启动 T1;清0时,停止 T1。
TF0(TCON.5)——T0的溢出标志。
TR0(TCON.4)——T0的运行控制位。
用软件控制,置1时,启动T0;清 0时,停止 T0。
• IE1(TCON.3)——外部中断1中断请求标志位。
• IE0(TCON.1)——外部中断0中断请求标志位。
器之外,还可用作串行接口的波特率发生器。
6.2
定时器/计数器T0、T1
T0、T1 的内部结构简图示于图6-1中。从图中 可以看出,T0、T1由以下几部分组成:
• 计数器TH0、TL0和TH1、TL1;
•
•
特殊功能寄存器TMOD、TCON;
时钟分频器;
•
输入引脚T0、T1。
6.2.1 与定时器/计数器T0、T1有关的 特殊功能寄存器
⑵定时器/计数器T1
T0方式3时,T1可以工作在方式0、1、2三种方式 T1的结构如图6–6所示。 由于T0占用了原来T1的启动位TR1和溢出标志TF1, 所以此时T1溢出时不能置位溢出标志,不能申请中断, 其溢出信号送给串行口,此时T1作为波特率发生器。
T1的启停由写入方式字控制,当写入方式0/1/2 时,T1立即启动,写入方式3 时,立即停止工作。
分析:设置T0工作在方式2,计数功能,每记满100个外 部脉冲,从P1.0输出一个低电平脉冲信号(简化的打包 操作)。
第6章AT89C51定时器计数器
所示 , 图中Tcy为机器周期。
图6- 12
6.4 定时器/计数器的编程和应用 4种工作方式中 ,方式0与方式1基本相同 , 由于方式0是为兼容
MCS-48而设 ,初值计算复杂 ,在实际应用中 ,一般不用方式 0 ,而采用方式1。 6.4. 1 方式1应用 例6- 1 假设系统时钟频率采用6MHz ,要在P1.0上输出一个周期 为2ms 的方波 ,如图6- 13所示。
M1 、M0=01 , 16位的计数器。
图6-5 6.2.3 方式2 计数满后自动装入计数初值。
M1 、M0= 10 ,等效框图如下:
图6-6
TLX作为常数缓冲器 , 当TLX计数溢出时 ,在置“ 1 ”溢出标志 TFX的同时 ,还自动的将THX中的初值送至TLX ,使TLX从初 值开始重新计数。
定时器/计数器的方式2工作过程如图6-7 (X=0, 1) 。
图6-7 省去用户软件中重装初值的程序 ,来精确定时。
6.2.4 方式3 增加一个附加的8位定时器/计数器 , 从而具有3个定时器/计数
器。
只适用于定时器/计数器T0 。T1不能工作在方式3 。 T1方式3时相当于TR1=0 ,停止计数(此时T1可用来作串行口
图6-8( a)
图6-8(b)
2. T0工作在方式3下T1的各种工作方式 当T1用作串行口的波特率发生器时 , T0才工作在方式3 。 T0为方式3时 , T1可定为方式0 、方式1和方式2 ,用来作为串
行口的波特率发生器 , 或不需要中断的场合。 ( 1)T1工作在方式0
图6-9
(2) T1工作在方式1
第六章单片微机的定时器计数器原理及应用
中断矢量001BH
⑴T0方式3下的T0
在方式3情况下,T0被拆成二个独立的8位计数器TH0、TL0。 ▲ TL0:8位定时/计数器,使用T0原有的控制寄存器资 源:TF0,TR0,GATE,C/T,INT0,中断矢量等; ▲ TH0:8位定时器,占用T1的中断溢出标志TF1,运行控 制开关TR1,中断矢量001BH,只能对片内机器周期脉冲计数
复位后,两个寄存器全部清零。
6.3.2 定时器/计数器T2的工作方式
T2的工作方式用控制位CP/RL2(T2CON.0)和RCLK +TCLK来选择。T2有3种工作方式,如表6-2所示:捕获方式、 自动重装载方式和波特率发生器方式。
⒈ 捕获方式
在一定条件下,自动将计数器TH2和TL2的数据读入捕获寄存器 RCAP2H和RCAP2L,亦即TH2和TL2内容的捕获是通过捕获寄 存器RCAP2H和RCAP2L来实现的。其工作原理可参见图6-7。
当CP/RL2=0时,选择自动重装载方式。 若T2的中断是被允许的,则无论发生TF2=1还是EXF2 =1,CPU都会响应中断,此中断向量的地址为002BH。响应 中断后,应用软件撤除中断申请。TF2 和EXF2都是直接可寻 址位,可采用CLR TF2和CLR EXF2指令实现撤除中断申请的 功能。
触发 方式
89H IE0
中断 标志
88H IT0
触发 方式
⒊ T0、T1 的数据寄存器——TH1、TL1,TH0、TL0 ⒋ 定时器/计数器中断
⑴ 中断允许寄存器IE
⑵ 中断矢量 ⑶ 中断优先级寄存器IP
6.2.2 定时器/计数器T0、T1 的工作方式
T0:有4种工作方式可选(方式0,1,2,3)
当CP/RL2=l时,选择捕获方式。
51单片机定时器计数器详解
51单⽚机定时器计数器详解第六章定时器/计数器6.1 定时器的结构及⼯作原理6.2 定时器的控制6.3 定时器的⼯作模式及其应⽤第六章定时器/计数器实现定时⼀般有多种⽅法:1. 利⽤软件实现(延时程序)优点:简单,控制⽅便;缺点:CPU效率低。
2. 外部硬件实现:单稳态定时器、计数定时器优点:CPU效率⾼;缺点:修改参数⿇烦。
3. 利⽤计数器实现输⼊脉冲定时器/计数器作⽤主要包括产⽣各种时标间隔、记录外部事件的数量等,是单⽚机中最常⽤、最基本的部件之⼀。
外来脉冲定时计数定时器/计数器功能⽰意图6.1 定时器/计数器的结构及⼯作原理6.1.1 定时器/计数器的基本结构MCS-51单⽚机有⼆个定时器/计数器,每个定时器/计数器由⼏个专⽤寄存器组成。
TMOD(89H )⾼四位TMOD(89H )低四位⽅式寄存器TCON(88H)TCON(88H)控制寄存器*8DH 8BH 8CH 8AH TH1 TL1TH0 TL0数据寄存器(16位)定时器T1定时器T0定时器/计数器的结构如下图所⽰。
定时器/计数器的基本结构框图申请P3.5or P3.4or 8DH 8BH8CH 8AH6.1.2 定时器/计数器的⼯作原理定时器/计数器结构原理图INTx P3.YGATE :门控制位:定时/计数控制位TC/x=0,1Y=2,3Z=4,5⼀. 对外部输⼊信号的计数功能当T0或T1设置为计数⼯作⽅式时,计数器对来⾃输⼊引脚P3.4(T0)和P3.5(T1)的外部信号计数。
若前⼀个机器周期采样值为1,后⼀个机器周期采样值为0,则计数器加1。
所以计数器计数的频率最⾼为fosc 的1/24。
BDEHT H >1个机器周期T L >1个机器周期L⼆. 定时功能:定时器/计数器的定时功能也是通过计数实现的,它的计数脉冲是由单⽚机的⽚内振荡器输出经12分频后产⽣的信号,即为对机器周期计数。
INTx P3.Y例如:晶振频率=12MHz 机器周期=1us ,计数1次=1us ,计数频为=1MHz 。
定时器计数器讲解
TR1位(或TR0位)=1,启动定时器工作的必要条件。 TR1位(或TR0位)=0,停止定时器工作。 该位可由软件置“1”或清“0”。
10
6.2 定时器/计数器的4种工作方式 4种工作方式分别介绍如下。
6.2.1 方式0 当M1、M0为00时,定时器/计数器被设置为工作方式0,
这时定时器/计数器的等效逻辑结构框图如图6-4所示(以定 时器/计数器T1为例,TMOD.5、TMOD.4 = 00)。
(1)GATE=0时,A点(见图6-4)电位恒为1,B点电位仅 取决于TRx状态。TRx = 1,B点为高电平,控制端控制电子 开关闭合,允许T1(或T0)对脉冲计数。TRx = 0,B点为低 电平,电子开关断开,禁止T1(或T0)计数。
(2)GATE=1时,B点电位由INTX*(x = 0,1)的输入电 平和TRx的状态两个条件来定。当TRx=1,且INTX*=1时,B 点才为1,控制端控制电子开关闭合,允许T1(或T0)计数。 故这种情况下计数器是否计数是由TRx和INTX*两个条件来共 同控制。
图6-1 AT89S51单片机的定时器/计数器结构框图
4
只不过计数信号的来源不同。 计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上
的外部脉冲进行计数(见图6-1) 定时器模式是对单片机的系统时钟信号经片内12分频后的
内部脉冲信号(机器周期)计数。由于时钟频率是定值,所 以可根据对内部脉冲信号的计数值可计算出定时时间。
本例由于采用定时器T0中断,因此需将IE寄存器中的EA、 ET0位置1。 (4)启动和停止定时器T0
单片机原理及其接口技术--第6章 MCS-51单片机定时器计数器
单片机原理及其接口技术
T/C方式2的逻辑结构图
1
TH1/TH0
T8
T7
T6
T5
T4
T3
T2
T1
寄存器 计数器
束
TL1/TL0
T8
T7
T6
T5
T4
T3
T2
T1
主目录
上一页
下一页
结
单片机原理及其接口技术
4、方式3 M1M0=11 T0和T1有不同的工作方式
C/T0:
TH0和TL0被拆成2个独立的8位计数器。
28),向CPU申请中断,标志位TF1自动置位,若中
断是开放的,则CPU响应定时器中断。当CPU响应
中断转向中断服务程序时,由硬件自动将该位清0。
&
加1计数器 & 1
主目录
上一页
下一页
结
束
EA
ET1
单片机原理及其接口技术
2个模拟的位开关,前者决定了T/C的工作状态:当1单片机有2个特殊功能寄存器TCON和TMOD: TCON:用于控制定时器的启动与停止,中断标志。 TMOD:用于设置T/C的工作方式。
主目录
上一页
下一页
结
束
单片机原理及其接口技术
1.定时器控制寄存器TCON
88H TCON
位地址
D7
D6
D5
D4
D3
D2
D1
D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 8F 8E 8D 8C 8B 8A 89 88
过实时计算求得对应的转速。
主目录 上一页 下一页 结 束
单片机原理及其接口技术 对于定时/计数器来说,不管是独立的定时器芯片还是单
单片机原理及应用教程(C语言版)-第6章 MCS-51单片机的定时器计数器
6.1.1 单片机定时器/计数器的结构
MCS-51单片机定时器/计数器的原理结构图
T0(P3.4) 定时器0 定时器1 T1(P3.5) 定时器2 T2EX(P1.1)
T2(P1.0)
TH0
溢 出 控 制
TL0
模 式 溢 出
TH1
控 制
TL1
模 式 溢 出
TH2
TL2
重装 捕获
RCAP 2H
RCAP 2L
6.2.2 T0、T1的工作模式
信号源 C/T设为1,为计数器,用P3.4引脚脉冲 C/T设为0,为定时器,用内部脉冲 运行控制 GATE=1,由外部信号控制运行 此时应该设置TR0=1 P3.2引脚为高电平,T0运行 GATE=0, 由内部控制运行 TR0设置为1,T0运行
6.2.2 T0、T1的工作模式
6.2.3 T0、T1的使用方法
例6-1 对89C52单片机编程,使用定时器/计 数器T0以模式1定时,以中断方式实现从P1.0引 脚产生周期为1000µ s的方波。设单片机的振荡频 率为12MHz。 分析与计算 (1)方波产生原理 将T0设为定时器,计算出合适的初值,定 时到了之后对P1.0引脚取反即可。 (2)选择工作模式 计算计数值N
6.2.1 T0、T1的特殊功能寄存器
TR1、TR0:T1、T0启停控制位。 置1,启动定时器; 清0,关闭定时器。
注意: GATE=1 ,TRx与P3.2(P3.3)的配合控制。
IE1、IE0:外部中断1、0请求标志位 IT1、IT0:外部中断1、0触发方式选择位
6.2.2 T0、T1的工作模式
6.2.1 T0、T1的特殊功能寄存器
GATE=0,禁止外部信号控制定时器/计数器。 C/T——定时或计数方式选择位 C/T=0,为定时器;C/T=1,为计数器 计数采样:CPU在每机器周期的S5P2期间,对 计数脉冲输入引脚进行采样。
第六章 MCS-51单片机内部定时器
6.3.1 模式0及应用
在这种模式下,16位寄存器只用了13位。 其中,TL0的高3位未用,TH0占8位。当 TL0的低5位溢出时,向TH0进位。当TH0 溢出时,向中断标志位TF0进位,并申请中 断。 因此,可通过查询TF0 是否置位或考 察中断是否发生来判断定时器/计数器0的 操作完成与否。
(2)计算1ms定时T0的初值:
机器周期为(1/fOSC)×12=[1/(12×106)]×12=1μs, 设T0的 计数初值为X,则 (213-X)×1×10-6=1×10-3ms
X=213-1×10-3/(1×10) -6 =8192-1000=7192D=1110000011000
高8位: E0H 低5位: 18H
fosc=12MHz, 采用查询方式。
解:方波周期 T=1/100Hz=0.01s=10ms 用T1定时5ms 计数初值 X为: X=216-12×5×103/12=60536=EC78H 程序如下:
MOV TMOD, #10H ;T1模式1,定时方式
SETB TR1 LOOP:MOV TH1,#0ECH
例:晶振为12MHZ ,则计数周期为
T=12/(12*106)Hz =1微秒
最短的定时 周期
计数器工作方式:
当定时器/计数器为计数工作方式时,通过
引脚T0和T1对外部信号计数,外部脉冲的下降
沿触发计数
在每个机器周期的
采样过程:
S5P2期间采样引脚
当输入脉冲信号从1到0的负跳变时,计数器就 自动加1。 由于检测一个由1到0的跳变需要两 个机器周期,所以 计数的最高频率为振荡频 率的1/24。为了确保给定电平在变化前至少被 采样一次,外部计数脉冲的高低电平均需保持 一个机器周期以上。(占空比没有限制)
第六章习题参考答案
第六章 MCS-51的定时/计数器1. 如果采用晶振的频率为3MHz ,定时器/计数器工作方式0、1、2下,其最大的定时时间为多少? 解答:因为机器周期)(410312126s f T OSC cy μ=⨯==, 所以定时器/计数器工作方式0下,其最大定时时间为)(768.321042261313ms T T C MAX =⨯⨯=⨯=-;同样可以求得方式1下的最大定时时间为262.144ms ;方式2下的最大定时时间为1.024ms 。
2. 定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关?答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。
定时时间与时钟频率和定时初值有关。
3. 定时/计数器用作定时器时,对外界计数频率有何限制?答:由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
4.采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。
定时1ms 后,又转为计数方式,如此循环不止。
假定MCS-51单片机的晶体振荡器的频率为6MHz ,请使用方式1实现,要求编写出程序。
解:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。
除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。
编写程序如下:ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: M OV TMOD,#06H ;定时器/计数器T0为计数方式2 MOV TL0,#156 ;计数100个脉冲的初值赋值MOV TH0,#156SETB GATE ;打开计数门SETB TR0 ;启动T0,开始计数SETB ET0 ;允许T0中断SETB EA ;CPU开中断CLR F0 ;设置下一轮为定时方式的标志位W AIT: AJMP W AITIT0P: CLR EA ;关中断JB F0,COUNT ;F0=1,转计数方式设置MOV TMOD,#00H ;定时器/计数器T0为定时方式0MOV TH0,#0FEH ;定时1ms初值赋值MOV TL0,#0CHSETB EA RETICOUNT: MOV TMOD,#06HMOV TL0,#156SETB EARETI5. 定时器/计数器的工作方式2有什么特点?适用于哪些应用场合? 答:定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,比如波特率的产生。
接口技术06定时器计数器8253-5
0
0
0
1
1
0
传送方式
写入计数器0的初始值 写入计数器1的初始值 写入计数器2的初始值 写入控制寄存器控制字
读自计数器0的OL 读自计数器1的OL 读自计数器2的OL
五、8253 的控制字格式:
D7
D6
D5
D4
D3
D2
D1 D0
SC1 SC0 RW1 RW0 M2
M1
M0 BCD
计数器选 择
工作方式
计数初值开始工作,见图6.5所示③。21组1
CLK
WR ① GATE
OUT
n=4
43
0 21
②
GATE OUT
0
4
4321
WR ③
n=3
GATE
OUT2 工作在1方式,进行8位二进制计数, 并设计 数 初值的低8位为BYTEL。
其初始化程序段为
MOV DX,307H
计数器:
在时钟信号作用下,进行减“1”计数,计数次数到 (减“1”计数回零),从输出端输出一个脉冲信号。
计数举例: •①对零件和产品的计数; •②对大桥和高速公路上车流量的统计,等等。
Intel8253在微机系统中可用作定时器和计数 器。定时时间与计数次数是由用户事 先设定。
2、 8253 定时与计数器与CPU的关系 8253 定时与计数操作过程与CPU相互独立,
计数器 2
GATE2 OUT2
定时器/计数器的内部结构:
①数据总线缓冲器。它是一个三态、双向 8位寄存器,用于将8253与系统数据总线 D0~D7 相连。 ②读/写逻辑。 ③控制命令寄存器。它接受CPU送来的控 制字。 ④计数器。8253有3个独立的计数器(计 数通道),其内部结构完全相同,
第6章 定时计数器件组件及其应用(三版)习题及答案
第六章定时器及应用
定时时间为: t=计数值×机器周期 =(216-T0初值)×振荡周期×12
(二)模式 1 工作特点
当C/ T =1时,T0对外部输入计数。计数长度为: L=(216-T0初值)(个外部脉冲)
T 1初 值 2 16
T 1初 值 2
16
20ms
t
振 荡 周 期 12
10m s 1 12 6 6 10
T 1初值 60536 EC78H
∴(TH1)=ECH,(TL1)=78H
解:2)确定工作模式寄存器TMOD的值 ∵ 定时器T1工作于模式1的定时器工作方式, ∴ 高四位: GATE=0,C/T=0,M1M0=01 ,低四位:取0。 ∴ (TMOD)=0001 0000 B = 10H
因此:(TL0)=0B0H
(TH0)=3CH
源程序清单(使发光二极管闪烁,每1S闪烁1次) #include<at89x51.h> unsigned char temp=5; main() void timer_0( )interrupt 1 { { TMOD=0x01; TH0=0X3C; TL0=0XB0; TH0=0X3C; temp--; TL0=0XB0; if(temp==0) ET0=1; { EA=1; temp=5; TR0=1; P1_0=~P1_0; P1_0=1; } while(1); } }
3)编程(定时器溢出中断方式) #include <at89x51.h> 思考:设定时器T0用于定 void main() { 时10ms,晶振为6MHz。 TMOD=0x10; 编程实现:P1.0输出周期 TH1=0xec; TL1=0x78; 为40ms,高电平宽为10ms, ET1=1; EA=1; TR1=1; 低电平宽为30ms的矩形波。 P1_1=1; 如何编程? while(1); } void timer_1() interrupt 3 { TH1=0xec; TL1=0x78; P1_1=~P1_1; }
第6章 定时器计数器
期间,计数器加1。由于确认一次负跳变要花 个机器周期, 确认一次负跳变要花2个机器周期 确认一次负跳变要花 因此外部输入的计数脉冲的最高频率为系统振荡器频率的 外部输入的计数脉冲的最高频率为系统振荡器频率的 外部输入的计数脉冲的最高频率 1/24。 例如,选用6MHz频率的晶体,允许输入的脉冲频率最高为 250kHz。如果选用12MHz频率的晶体,则可输入最高频 率为500kHz的外部脉冲。 对于外部输入信号的占空比并没有什么限制,但为了确保某 占空比并没有什么限制 占空比并没有什么限制 一给定电平在变化之前能被采样一次,则这一电平至少要 至少要 保持一个机器周期。 保持一个机器周期
T 、GATE、TR0、
22
TF0 ,而TH0被固定为一个 位定时器 固定为一个8位定时器 固定为一个 位定时器(不能作为外部计数 模式),并使用定时器T1的状态控制位TR1和TF1,同时 占用定时器T1的中断请求源TF1。 2.T0工作在方式 时T1的各种工作方式 . 工作在方式 工作在方式3时 的各种工作方式 一般情况下,当T1用作串行口的波特率发生器时,T0才工 当 用作串行口的波特率发生器时 用作串行口的波特率发生器时, 才工 作在方式3。 作在方式 。T0处于工作方式3时,T1可定为方式0、方式 1和方式2,用来作为串行口的波特率发生器,或不需要中 断的场合。
18
定时器/计数器的方式 为自动恢复初值 方式2为自动恢复初值 方式 为自动恢复初值(初值自动装入)的 8位定时器/计数器 位定时器 计数器 计数器。 TLx(x = 0,1)作为常数缓冲器,当TLx计数溢出时,在溢出 自动将THx中的初值送至 中的初值送至TLx, 标志TFx置“1”的同时,还自动将 自动将 中的初值送至 使TLx从初值开始重新计数。定时器/计数器的方式2工作 过程如图6-7所示。
第6章 定时器计数器习题
20
IT0P:
CLR
TR0
;T0中断服务程序,停止T0计数
;把T0引脚接收过负脉冲标志F0置1, ;即接收过负跳变
SETB F0
RETI IT1P: CPL RETI P1.0 ;T1中断服务程序,P1.0位取反
程序说明:当单片机复位时,从0000H跳向主程序 MAIN处执行程序。其中调用了对T0,T1初始化子程序 PT0M2。子程序返回后执行标号LOOP处指令,循环等待 T0引脚上负脉冲的到来。由于负脉冲到来的标志位F0的
;装初值的高8位
;允许T0中断 ;总中断允许 ;启动T0 ;中断子程序,T0重装初值 ;P1.0的状态取反
程序说明:当单片机复位时,从程序入口0000H跳向主 程序MAIN处执行。其中调用了T0初始化子程序PT0M0。
6
子程序返回后,程序执行“AJMP HERE”指令,则
循环等待。 当响应T0定时中断时,则跳向T0中断入口,再从T0中 断入口跳向IT0P标号处执行T0中断服务子程序。 当执行完中断返回的指令“RETI”后,又返回断点处 继续执行循环指令“AJMP HERE”。在实际的程序中, “AJMP HERE” 实际上是一段主程序。当下一次定时 器T0的1ms定时中断发生时,再跳向T0中断入口,从而重
基本思想:设为方式2(自动装入常数方式)计数模式,
TH0、TL0初值均为0FFH。当T0脚发生负跳变时,T0计 数溢出,TF0置“1”,单片机发出中断请求。
13
初始化程序:
ORG 0000H ;跳到初始化程序 ;跳到外中断处理程序 AJMP IINI
ORG
IINI: MOV
000BH
TMOD,#06H ;设置T0为方式2
复执行上述过程。
第6章 计数器和定时
+1计数器
溢出
中断
控制 开关
计数原理——定时器 单片机内部脉冲每输入一个脉冲,计数器加1,当 加到计数器各位都为1时,再输入一个脉冲,计数 器各位全变为0,溢出,中断标志置1(SFR中 TCON的TF0、TF1),从而向CPU申请中断。 由预置计数值就可以算出从加1计数器启动到计满 溢出所需的时间,即定时时间。 8位28 = 256;13位213 = 8192;16位 216 = 65536
可编程定时/计数器。
6.1 定时/计数技术概述
在单片微机应用系统中,常常会需要定时或计数,通常采用以 下三种方法来实现: 1.硬件法 硬件定时功能完全由硬件电路完成,不占用 CPU 时间。但 当要求改变定时时间时,只能通过改变电路中的元件参数来实 现,很不灵活。 2.软件法 软件定时是执行一段循环程序来进行时间延时,优点是无 额外的硬件开销,时间比较精确。但牺牲了CPU的时间,所以软 件延时时间不宜长,而在实时控制等对响应时间敏感的场合也 不能使用。
8E
TF0
8D
TR0
8C
IE1
8B
IT1
8A
IE0
89
IT0
88
• 8位寄存器,可位寻址 • 低4位用于外部中断INT0、INT1控制 • 高4位用于T0、T1控制
3、定时/计数器控制寄存器TCON
TCON
位地址
TF1
8F
TR1
8E
TF0
8D
TR0
8C
IE1
8BIT18A NhomakorabeaIE0
89
IT0
88
• TR0(TCON.4):T0的运行控制位 当GATE=0时,TR0=0则T0停止运行;TR0=1时 T0允许运行 • TF0(TCON.5):T0溢出兼中断申请标志
第6章 单片机的定时器计数器题解
第6章单片机的定时器/计数器习题1.MCS-51系列的8051单片机内有几个定时/计数器?每个定时/计数器有几种工作方式?如何选择?答:MCS-51系列的8051单片机内有2个定时/计数器,即T0和T1,每个都可以编程为定时器或计数器,T0有四种工作方式(方式0—13位、方式1—16位、方式2-可自动装入初值的8位、方式3-两个8位),T1有三种工作方式(与T0相同的前三种),通过对TMOD的设置选择,其高四位选择T1,低四位选择T0。
2.如果采用的晶振频率为3MHz,定时/计数器TO分别工作在方式0、1和2下,其最大的定时时间各为多少?答:如果采用的晶振频率为3MHz,机器周期为12×1/(3*106)=4us,由于定时/计数器TO工作在方式0、1和2时,其最大的计数次数为8192、65536和256所以,其最大定时时间分别是:方式0为8192×4us=32.768ms、方式1为65536×4us=262.144ms、方式2为256×4us=1024us。
3.定时/计数器TO作为计数器使用时,其计数频率不能超过晶振频率的多少?答:由于定时/计数器TO作为计数器使用时,是对外部引脚输入的脉冲进行计数,CPU在每个机器周期采样一次引脚,当前一次采样为高电平,后一次采样为低电平,则为一次有效计数脉冲,所以如果晶振频率为fosc,则其采样频率fosc/12,两次采样才能决定一次计数有效,所以计数频率不能超过fosc/24。
4.简单说明定时/计数器在不同工作模式下的特点。
答:方式0为13位的定时/计数器,由THx的8位和TLx的低5位构成、方式1为16位的定时/计数器,由THx的8位和TLx的8位构成,方式2为8位的定时/计数器,TLx为加1计数器,THx为计数初值寄存器。
方式3只能用于T0,是将T0的低8位用作一个独立的定时/计数器,而高8位的TH0用作一个独立的定时器,并借用T1的TR1和TF1作为高8位定时器的启停控制位和溢出标志位。
第6章定时器计数器
系统 时钟 ÷12 C/ T =0
计数器+1
TH TL5
TL的低5位 TFi 溢出 标志
外部引脚Ti
模式控制C/ T=1 TRi
启动 控制 工作方式选择 M1 M0=00
GATE + 外部引脚INTi
&
方式1
系统 时钟 ÷12 计数器+1
中断
TFi 溢出 标志
TL TH
外部引脚Ti 模式控制C/ T TRi & 启动 控制 工作方式选择 M1 M0=01
TF1
TR1
TF0 TR0
IE1
IT1
IE0
IT0
高4位管理定时器控制器,低4位管理外部中断
TF1:定时器1溢出标志位。当定时器1计满溢出 时,由硬件自动使TF1置1,并申请中断。
TR1:定时器1启停控制位。
GATE=0时,用软件使TR1置1即启动定时器1 ,若用软件使TR1清0则停止定时器1 GATE=1时,用软件使TR1置1的同时外部中断 INT1的引脚输入高电平才能启动定时器1。
GATE=0:用指令使TCON中的TR1置1即可启动 定时器1。 GATE=1:软件和硬件共同启动定时器,即用指 令使TCON中的TR1置1时,只有外部中断INT1引 脚输入高电平时才能启动定时器1。
(2) C/T:功能选择位 C/T=0时,以定时器方式工作。 C/T=1时,以计数器方式工作。 (3) M1、M0:方式选择位
6.2 定时器/计数器的控制
1.工作方式控制寄存器TMOD
定时器方式寄存器TMOD的作用是设置T0、T1 的工作方式。 TMOD字节地址为89H,不能位寻址
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
30
则5000=(216 ?X)? 12/11.0592 得:X = 60928,转换成16进制后为:0xee00,其中0xee装 入TH0,0x00装入TL0。 (3)设置IE寄存器
如图6-10所示。
图6-10 T0工作在方式3时T1为方式1的工作示意图
24
(3)T1工作在方式2 当T1的控制字中M1、M0 = 10时,T1的工作方式为方式2,
工作示意图如图6-11所示。
图6-11 T0工作在方式3时T1为方式2的工作示意图
25
(4)T1设置在方式3。 当T0设置在方式3时,再把T1也设置成方式3,此时T1停
15
图6-5 定时器/计数器方式1逻辑结构框图
16
6.2.3 方式2 方式0和方式1的最大特点是计数溢出后,计数器为全0。因
此在循环定时或循环计数应用时就存在用指令反复装入计数初 值的问题。这不仅影响定时精度,也给程序设计带来麻烦。方 式2就是解决此问题而设置的。
当M1、M0为10时,定时器/计数器处于工作方式2,这时定 时器/计数器的等效逻辑结构如图6-6所示(以定时器T1为例, x = 1)。
14
6.2.2 方式1 当M1、M0为01时,工作于方式1,方式1的等效电路逻辑
结构如图6-5所示。 方式1和方式0的差别仅仅在于计数器的位数不同,方式1为
16位计数器,由THx高8位和TLx低8位构成(x = 0,1), 方式0则为13位计数器,有关控制状态位的含义(GATE 、 C/T*、TFx、TRx)与方式0相同。
TR1位(或TR0位)=1,启动定时器工作的必要条件。 TR1位(或TR0位)=0,停止定时器工作。 该位可由软件置“1”或清“0”。
10
6.2 定时器/计数器的4种工作方式 4种工作方式分别介绍如下。
6.2.1 方式0 当M1、M0为00时,定时器/计数器被设置为工作方式0,
这时定时器/计数器的等效逻辑结构框图如图6-4所示(以定 时器/计数器T1为例,TMOD.5、TMOD.4 = 00)。
6-13所示,计数输入引脚T1(P3.5)上外接开关K1,作为 计数信号输入。按4次K1后,P1口的8只LED闪烁不停。 (1)设置TMOD寄存器
示。
7
(3)C/T* —计数器模式和定时器模式选择位。 C/T*=0,为定时器工作模式,对单片机的晶体振荡器12分频
后的脉冲进行计数。 C/T*=1,为计数器工作模式,计数器对外部输入引脚T0
(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数。
8
6.1.2 定时器/计数器控制寄存器TCON TCON字节地址为88H,可位寻址,位地址为88H~8FH,格
本例由于采用定时器T0中断,因此需将IE寄存器中的EA、 ET0位置1。 (4)启动和停止定时器T0
将定时器控制寄存器TCON中的TR0=1,则启动定时器T0; TR0=0,则停止定时器T0定时。
参考程序如下:
31
#include<reg51.h> Char i=100; void main( ) {TMOD=0x01; TH0=0xee; TL0=0x00; P1=0x00; EA=1; ET0=1; TR0=1; while(1) ; }
(1)GATE=0 时,A点(见图6-4)电位恒为1,B点电位仅 取决于TRx状态。TRx = 1,B点为高电平,控制端控制电子 开关闭合,允许T1(或T0)对脉冲计数。TRx = 0,B点为低 电平,电子开关断开,禁止T1(或T0)计数。
(2)GATE=1时,B点电位由INTX*(x = 0,1)的输入电 平和TRx的状态两个条件来定。当TRx=1,且INTX*=1时,B 点才为1,控制端控制电子开关闭合,允许T1(或T0)计数。 故这种情况下计数器是否计数是由TRx和INTX*两个条件来共 同控制。
28
6.4 定时器/计数器的编程和应用 在4种工作方式中,方式0与方式1基本相同,只是计数器的
计数位数不同。方式0为13位计数器,方式1为16位计数器。 由于方式0是为兼容MCS-48而设,且其计数初值计算复杂, 所以在实际应用中,一般不用方式0,而采用方式1。
6.4.1 P1口外接的8只LED每0.5s闪亮一次。 【例6-1】在AT89S51单片机的P1口上接有8只LED。下面
计数器的起始计数是从初值开始。单片机复位时计数器初 值为0,也可用指令给计数器装入一个新的初值。AT89S51 的 定时器/计数器属于增计数器。
5
6.1.1 工作方式控制寄存器TMOD AT89S51 定时器的工作方式寄存器TMOD用于选择工作模式
和工作方式,字节地址为89H,不能位寻址,其格式如图6-2所 示。
止计数。
6.3 对外部输入的计数信号的要求 当定时器/计数器工作在计数器模式时,计数脉冲来自外
部输入引脚T0或T1。当输入信号产生由1至0的跳变(即负 跳变)时,计数器值增1。每个机器周期的S5P2期间,都对 外部输入引脚T0或T1进行采样。如在第一个机器周期中采 得的值为1,而在下一个机器周期中采得的值为0,则在紧跟 着的再下一个机器周期S3P1期间,计数器加1。
由于确认一次负跳变花2个机器周期,即24个振荡周期,因 此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
图6-12 对外部计数输入信号的要求
27
例如,选用6MHz频率的晶体,允许输入的脉冲频率最高 为250kHz。如果选用12MHz频率的晶体,则可输入最高频 率为500kHz的外部脉冲。对于外部输入信号的占空比并没 有什么限制,但为了确保某一给定电平在变化之前能被采样 一次,则这一电平至少要保持一个机器周期。故对外部输入 信号的要求如图6-12所示,图中Tcy为机器周期。
第6章 AT89S51 单片机的 定时器/计数器
1
内容概要 在工业检测与控制中,许多场合要用到计数或定时功能。 例如,对外部脉冲进行计数或产生精确的定时时间等。片
内两个可编程的定时器/计数器T1、T0,可满足这方面的需 要。本章介绍AT89S51 单片机片内定时器/计数器的结构与 功能,两种工作模式和4种工作方式,以及与其相关的两个 特殊功能寄存器TMOD和TCON各位的定义及其编程,最后 介绍定时器/计数器的C51编程及应用实例。
此工作方式可省去用户软件中重装初值的指令的执行时间, 简化定时初值的计算方法,可相当精确地确定定时时间。
19
6.2.4 方式3
图6-7 方式2工作过程
方式3是为了增加一个附加的8位定时器/计数器而设置的, 从而使AT89S51单片机具有3个定时器/计数器。方式3只适用 于定时器/计数器T0,定时器/计数器T1不能工作在方式3。T1 处于方式3时相当于TR1 = 0,停止计数(此时T1可用来作为
{TH0=0xee;
/*给T0装入16位初值,计4608个数后,T0溢出*/
TL0=0x00;
i--;
/*循环次数减1*/
if(i<=0)
{P1=~P1;
/*P1口按位取反*/
i=Байду номын сангаас00;
/*重新设置循环次数*/
}
}
33
6.4.2 计数器的应用 【例6-2】 采用定时器T1的方式1的中断计数方式,如图
11
图6-4 定时器/计数器方式0逻辑结构框图
方式0时,为13位计数器,由TLx(x = 0,1)的低5位和THx 的高8位构成。TLx低5位溢出则向THx进位,THx计数溢出则 把TCON中的溢出标志位TFx置“1”。
图6-2中, C/T*位控制的电子开关决定了定时器/计数器的两 种工作模式。
图6-1 AT89S51单片机的定时器/计数器结构框图
4
只不过计数信号的来源不同。 计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上
的外部脉冲进行计数(见图6-1) 定时器模式是对单片机的系统时钟信号经片内12分频后的
内部脉冲信号(机器周期)计数。由于时钟频率是定值,所 以可根据对内部脉冲信号的计数值可计算出定时时间。
20
串行口波特率产生器)。 1.工作方式3下的T0
当TMOD的低2位为11时,T0的工作方式被选为方式3, 各引脚与T0的逻辑关系如图6-8所示。
T0分为两个独立的8位计数器TL0和TH0,TL0使用T0的 状态控制位C/T*、GATE、TR0,而TH0被固定为一个8位定 时器(不能作为外部计数模式),并使用T1的状态控制位 TR1和TF1,同时占用T1的中断请求源TF1。
21
图6-8 定时器/计数器T0方式3的逻辑结构框图
22
(1)T1工作在方式0 T1的控制字中M1、M0 = 00时,T1工作在方式0,工作示意图
如图6-9所示。
图6-9 T0工作在方式3时T1为方式0的工作示意图
23
(2)T1工作在方式1 当T1的控制字中M1、M0 = 01时,T1工作在方式1,工作示意图
17
图6-6 定时器/计数器方式2逻辑结构框图
18
定时器/计数器的方式2为自动恢复初值(初值自动装入)的 8位定时器/计数器,TLx(x = 0,1)作为常数缓冲器,当TLx 计数溢出时,在溢出标志 TFx置“1”的同时,还自动将 THx中 的初值送至TLx,使TLx从初值开始重新计数。定时器 /计数器 的方式2工作过程如图6-7所示。
(1)C/T*=0,电子开关打在上面位置,T1(或T0)为定时 器工作模式,把时钟振荡器12分频后的脉冲作为计数信号。
(2)C/T*=1,电子开关打在下面位置,T1(或T0)为计数 器工作模式,计数脉冲为P3.4(或P3.5)引脚上的外部输入脉 冲,当引脚上发生负跳变时,计数器加1。