MCS51单片机定时器计数器.ppt

上传人:牧羊曲112 文档编号:5439672 上传时间:2023-07-07 格式:PPT 页数:62 大小:461.50KB
返回 下载 相关 举报
MCS51单片机定时器计数器.ppt_第1页
第1页 / 共62页
MCS51单片机定时器计数器.ppt_第2页
第2页 / 共62页
MCS51单片机定时器计数器.ppt_第3页
第3页 / 共62页
MCS51单片机定时器计数器.ppt_第4页
第4页 / 共62页
MCS51单片机定时器计数器.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《MCS51单片机定时器计数器.ppt》由会员分享,可在线阅读,更多相关《MCS51单片机定时器计数器.ppt(62页珍藏版)》请在三一办公上搜索。

1、1,第5章 MCS-51单片机定时器/计数器,主要内容 定时/计数器的工作原理模式 定时/计数器的工作方式 定时/计数器的应用,2,(1)定时器/计数器的概念,(2)MCS-51的定时器/计数器简介实质就是加计数器,可以编程控制。定时/计数器工作在定时模式时,计数脉冲信号来自单片机的内部,计数速率是晶振频率的1/12,当计数器启动后,每个机器周期计数器自动加1。定时/计数器工作在计数模式时,计数器对外部脉冲进行计数,计数器计数P3.4(T0脚)P3.5(T1脚)负跳变的次数。每产生一次负跳变,计数器自动加1。,5.1 概述,3,MCS-51定时器/计数器的逻辑结构,5.1 概述,4,5.2 定

2、时器/计数器的控制方法,(一)定时/计数器的工作方式寄存器(TMOD,89H),5,定时器和计数器方式选择位 0,定时器方式,每一个机器周期计数器自动加1。1,计数器方式,在单片机T0引脚上每发生一次负跳变,计数器自动加1。GATE0,定时/计数器工作不受外部控制。GATE1,定时/计数器T0的起停受INT0引脚的控制。,TMOD各位的定义(以定时器/计数器T0为例),5.2 定时器/计数器的控制方法,(一)定时/计数器的工作方式寄存器(TMOD,89H),(一)定时/计数器的工作方式寄存器(TMOD,89H),6,5.2 定时器/计数器的控制方法,(二)定时/计数器控制寄存器(TCON)控制

3、定时/计数器的起停,反映定时/计数器是否计满。,7,(二)定时/计数器控制寄存器(TCON)单片机复位时,特殊功能寄存器TCON被清0。TFx(x=0,1)和TRx(x=0,1)由软件方法置1或清0。既可按单元操作的方式,也可以按位操作方式。如启动定时/计数器T0和T1,清除溢出标志位TF0和TF1操作如下:SETB TR0 SETB TR1 CLR TF0 CLR TF1 或:MOV TCON,#01010000B,5.2 定时器/计数器的控制方法,8,注意:使用定时器/计数器时应注意以下几个方面:(1)MCS51的定时器/计数器为加1计数器。(2)定时器/计数器T1的工作方式没有方式3,如

4、果设置它为方式3(M1M0=11),定时器/计数器T1停止工作。(3)一般情况下,定时器/计数器T1溢出后,TF1自动置1,可以以此为判断标志,检测定时或计数是否完成,但在定时器/计数器T0设置为方式3时,TF1为1时意味着8位计数器TH0溢出,TF0为1表示8位计数器TL0溢出。(4)在计数器模式时,计数脉冲的频率不高于振荡器频率的1/24.,5.2 定时器/计数器的控制方法,(二)定时/计数器控制寄存器(TCON),9,方式0,5.3 定时器/计数器的工作方式,10,当GATE=0时,只要TR0为1,TL0及TH0组成的13位计数器就开始计数;当GATE=1时,仅当TR0为1,且引脚输入信

5、号状态为1时,13位计数器开始计数。计数器开始工作时,当13位计数器从初始值开始加1计数,当13位计数器各位全1以后,再计数1次,计数器就产生溢出,则TF0位由硬件自动置1,同时把计数器清0。在方式0下,计数器计数范围是18192(213)。定时时间范围为18192个机器周期。,5.3 定时器/计数器的工作方式,方式0,11,(1)计数器工作模式计数N次,要求计数器溢出,设初始值为,则:,那么,预先给计数器装入初始值,当计数器计数 次后,溢出标志TF0为1。,5.3 定时器/计数器的工作方式及工作原理,方式0,12,(2)定时器模式 定时td,要求计数器溢出。首先计算定时td需要多少个机器周期

6、,即:设初始值为X,则:,预先给计数器装入初始值,当计数器计个机器周 期后,溢出标志TF0为1,定时时间到。,5.3 定时器/计数器的工作方式及工作原理,方式0,13,定时器计数器T0工作方式1的逻辑结构,5.3 定时器/计数器的工作方式及工作原理,方式1,14,当GATE=0时,只要TR0为1,TL0及TH0组成的16位计数器就开始计数;当GATE=1时,仅当TR0为1,且引脚输入信号状态为1时,16位计数器开始计数。计数器开始工作时,当16位计数器从初始值开始加1计数,当16位计数器各位全1以后,再计1次,计数器就产生溢出,则硬件自动把TF0位置1,同时把计数器清0。,5.3 定时器/计数

7、器的工作方式及工作原理,方式1,15,(1)计数器工作模式 计数N次,要求计数器溢出,设初始值为X,则:,那么,预先给计数器装入初始值,当计数器计数N次后,溢出标志TF0为1。,5.3 定时器/计数器的工作方式及工作原理,方式1,16,(2)定时器工作模式 定时td秒,要求计数器溢出。首先计算定时td需要多少个机器周期才能实现,即:设初始值为X,则:,那么,。预先给计数器装入初始值,当计数器计N个机器周期后,溢出标志TF0为1,定时时间到。方式1时,定时/计数器的最大计数次数为65536(初始值为0),最大定时时间为65536TM(初始值为0)。,5.3 定时器/计数器的工作方式及工作原理,方

8、式1,17,定时器计数器0在工作方式2的逻辑结构,5.3 定时器/计数器的工作方式及工作原理,方式2,18,当GATE=0时,只要TR0为1,计数器TL0开始计数;当GATE=1时,仅当TR0为1,且引脚输入信号状态为1时,计数器TL0开始计数。计数器开始工作时,当8位计数器TL0从初始值开始加1计数,当计数器各位全“1”以后,再计1次,计数器产生溢出,则TF0位由硬件自动置1,同时把TH0的内容装载到TL0。,5.3 定时器/计数器的工作方式及工作原理,方式2,19,(1)计数器工作模式 计数N次,要求计数器溢出,设初始值为X,则:,那么,预先给计数器装入初始值,当计数器计数N次后,溢出标志

9、TF0为1。,5.3 定时器/计数器的工作方式及工作原理,方式2,20,(2)定时器工作模式 定时td秒,要求计数器溢出。首先计算定时td需 要多少个机器周期才能实现,即:。设初始值为X,则:,那么,。预先给计数器装入初始值,当计数器计N 个机器周期后,溢出标志TF0为1,定时时间到。方式2时,定时/计数器的最大计数次数为256(初始值为0),最大定时时间为256TM(初始值为 0)。,5.3 定时器/计数器的工作方式及工作原理,方式2,21,当M1M0设置为11时,定时/计数器T0的工作方式为方式3。只有定时/计数器T0有方式3,定时/计数器T1没有工作方式3,如果把T1设置为方式3,计数器

10、将停止工作。在工作方式3下,定时器/计数器T0被拆分成2个独立的8位计数器TL0和TH0。,5.3 定时器/计数器的工作方式及工作原理,方式3,22,5.3 定时器/计数器的工作方式及工作原理,方式3,23,5.3 定时器/计数器的工作方式及工作原理,方式3,24,5.4.1 定时器计数器初始化 定时/计数器的初始化包括:1、设置工作方式,对TMOD赋值、预置计数器定时器计数初始值、设置中断控制位等、启动定时/计数器 定时和计数可以采用查询方式和中断方式实现。,5.4 定时器/计数器的编程应用举例,25,(一)采用查询方式实现定时和计数(1)确定工作方式、计数器或定时器模式及启动控制方式,构造

11、方式控制码并写入特殊功能寄存器TMOD:MOV TMOD,#控制码。(2)计算定时器或计数器的计数初始值,根据工作方式把初始值送人TH0、TL0或TH1、TL1。(3)启动定时/计数器:SETB TRx,x=0,1。定时/计数器开始工作,通过查询TFx是否为1来判断定时或计数是否达到要求。,5.4 定时器/计数器的编程应用举例,5.4.1 定时器计数器初始化,26,(二)采用中断方式实现定时和计数(1)确定工作方式、计数器或定时器模式及启动控制方式,构造控制码并写入特殊功能寄存器TMOD。(2)计算定时器或计数器的计数初始值,根据工作方式把初始值送人TH0、TL0或TH1、TL1。(3)开放C

12、PU中断,允许定时/计数器溢出中断CPU的工作:对IE寄存器编程。(4)启动定时/计数器:SETB TRx,x=0,1。当计数器溢出时,定时或计数达到要求,CPU响应中断,程序转移到相应的中断处理程序入口处。,5.4 定时器/计数器的编程应用举例,5.4.1 定时器计数器初始化,27,13位定时/计数器(方式0)最大计数次数为8192,当晶振频率时,最大定时时间为8.192 ms。16位定时/计数器(方式1)最大计数次数为65536,当晶振频率时,最大定时时间为65.536 ms。8位定时/计数器(方式2和方式3)最大计数次数为256,当晶振频率时,最大定时时间为0.256 ms。,5.4 定

13、时器/计数器的编程应用举例,5.4.2 定时器计数器应用,28,(一)方式0的应用,5.4 定时器/计数器的编程应用举例,5.4.2 定时器计数器应用,控制系统原理,29,(一)方式0的应用 例1:某生产线传送带上产品单向传送到包装机,传送带上的产品之间有间隔,使用光电开关检测产品个数,每计数到12个产品时,由气缸驱动的顶推装置把这批产品推入包装机包装,顶推装置的顶推气缸动作响应时间为50ms。系统采用单片机控制,采用定时/计数器实现产品计数。,5.4 定时器/计数器的编程应用举例,5.4.2 定时器计数器应用,30,解:(1)计数采用定时/计数器T1的方式0,则方式控制字为:即:(TMOD)

14、=01000000B。(2)期望计数的次数为12次,方式0实现计数,则计数初始值为:则(TH1)=11111111B,(TL1)=00010100B。,5.4 定时器/计数器的编程应用举例,31,(3)查询方式程序:CLR P1.0;顶推气缸复位MOV TMOD,#01000000B;设置工作方式0和计数器模式MOV TH1,#11111111B;设置计数初始值高8位MOV TL1,#00010100B;设置计数初始值低5位SETB TR1;计数器启动CNTING:JBC TF1,OK;检测是否溢出,若溢出,清溢出标志SJMP CNTING;等待,计数OK:MOV TH1,#11111111B

15、;重新装入计数常数值,以便下一;个计数循环同样计数12次溢出 MOV TL1,#00010100B,5.4 定时器/计数器的编程应用举例,32,SETB P1.0;顶推气缸动作ACALL DL50MS;控制信号保持50ms,以便气缸动作到位CLR P1.0;顶推气缸复位SJMP CNTING;延时50ms子程序,晶振频率为12M HzDL50MS:MOV R7,#50DL1MS:MOV R6,#200DL:NOPNOPNOP,5.4 定时器/计数器的编程应用举例,(3)查询方式程序:,DJNZ R6,DLDJNZ R7,DL1MSRET,33,例2:设单片机应用系统晶振频率为6MHz,使用定时

16、 器T0以方式0产生频率为500Hz的等宽方波连续脉冲,并从P1.0输出。,5.4 定时器/计数器的编程应用举例,34,解:等宽方波的高低电平持续时间相同,占空比为1:1。500Hz的等宽方波脉冲信号的周期为2ms,只需在P1.0引脚输出持续时间为1ms的高低电平交替变化的信号即可,则定时时间应为td=1ms。,5.4 定时器/计数器的编程应用举例,35,(1)计算计数初始值 因为系统的晶振频率为,则机器周期。设计数初始值为X:则(TH0)=11110000B0F0H,(TL0)=00001100B=0CH(2)设置工作方式 方式0:M1M0=00;定时器模式:;定时/计数器启动不受外部控制:

17、GATE=0;因此,(TMOD)=00H。,5.4 定时器/计数器的编程应用举例,36,(二)方式1的应用 例3:单片机应用系统的晶振频率为6M Hz,使用定时/计数器定时方法在P1.0引脚输出周期为100ms占空比1:4的信号序列。,5.4 定时器/计数器的编程应用举例,5.4.2 定时器计数器应用,P1.0引脚输出的信号序列,37,解:以20ms为一个基本定时单位,高电平保持1个基本定时单位之后,P1.0变为低电平,保持4个基本定时单位,然后,P1.0再次改变为高电平,周而复始地重复上述过程,就可以实现题目要求的信号序列。,5.4 定时器/计数器的编程应用举例,38,(1)计算计数初始值

18、系统的晶振频率为fosc=6MHz,机器周期TM=2s。选用定时/计数器T0的方式1实现,确定定时时间为td=20ms,设计数初始值为X:则(TH0)=0D8H,(TL0)=0F0H。(2)设置工作方式 方式1:M1M0=01;定时器模式:;定时/计数器启动不受外部控制:GATE=0;因此,(TMOD)=01H。,5.4 定时器/计数器的编程应用举例,39,例4:利用定时/计数器T0测量引脚上出现的正脉冲宽度,已知系统的晶振频率为12MHz,将所测得值高位存入片内71H,低位存入片内70H。,5.4 定时器/计数器的编程应用举例,40,解:当特殊功能寄存器TMOD中的GATE位为1时,MCS-

19、51单片机的定时/计数器的启动和停止受外部信号的控制,T0受控制,T1受控制。测量引脚上出现的正脉冲宽度是一个定时/计数器T0受控制的定时方式,当 时,定时/计数器启动计数,当 时,停止计数。,5.4 定时器/计数器的编程应用举例,脉冲宽度测量原理,41,(1)设置工作方式 方式1:M1M0=01,定时器模式:,定时/计数器启动受外部控制:GATE=1,因此,(TMOD)=09H(2)设置计数初始值 因为统计脉冲宽度,因此,计数器从0开始计数,(TH0)=00H,(TL0)=00H。,5.4 定时器/计数器的编程应用举例,42,例5:低频信号T0(P3.4)引脚输入,要求当T0(P3.4发生负

20、跳变时,从P1.0引脚上输出1个500的同步脉冲。设系统的晶振频率为6M Hz。,5.4 定时器/计数器的编程应用举例,(三)方式2的应用,5.4.2 定时器计数器应用,43,解:采用定时/计数器计数方式和定时方式结合的方法。当P3.4引脚出现负跳变时,计数器溢出,此时,使P1.0引脚输出低电平,并且改变定时/计数器的工作方式为定时方式,使低电平保持500(延时),当计数器再次溢出时,使P1.0引脚输出高电平,同时把定时/计数器的工作方式改变为计数方式,原理如下图所示。选用定时/计数器T0的方式2实现上述要求。,5.4 定时器/计数器的编程应用举例,(三)方式2的应用,5.4.2 定时器计数器

21、应用,44,5.4 定时器/计数器的编程应用举例,同步脉冲输出原理,45,(1)外部事件计数的初始化 工作方式:M1M010,GATE=0,计数方式:,则(TMOD)=06H。计数初始值:由于P3.4引脚上的信号,每发生一次负跳变,要求计数器溢出,所以,(TL0)=0FFH,同时,令(TH0)=0FFH,以便下一个负跳变出现时,计数器也可溢出。,5.4 定时器/计数器的编程应用举例,46,(2)500 定时的初始化 工作方式:M1M010,GATE=0,定时方式:,则(TMOD)=02H。计数初始值计算:系统晶振频率为6MHz,则机器周期为2,方式2时计数器为8位,则定时500 所需的机器周期

22、个数为:计数器初始值为:因此,(TL0)=06H,同时,令(TH0)=06H,5.4 定时器/计数器的编程应用举例,47,例8:采用定时/计数器T0的方式3分别产生2路周期为400s和800s的方波。设单片机应用系统的晶振频率为6M Hz。,5.4 定时器/计数器的编程应用举例,(四)方式3的应用,5.4.2 定时器计数器应用,48,解:方式3时,定时/计数器T0被剖分为2个8位的定时/计数器TL0和TH0。2路方波信号的周期为400s和800s,分别采用TH0和TL0实现200s和400s的定时,2路方波信号分别从P1.0和P1.1输出。采用中断方式实现。(1)工作方式 定时/计数器T0的方

23、式3定时模式:M1M0=11,GATE=0 因此,(TMOD)03H,5.4 定时器/计数器的编程应用举例,49,(2)计数初始值 方式3时,TH0和TL0为2个独立的8位定时/计数器,因此,200定时由TH0实现,而400定时由TL0完成,计数初始值计算如下:时,则(TH0)=9CH 时,则(TL0)=38H,5.4 定时器/计数器的编程应用举例,50,(3)中断控制字及初始化 方式3时,定时/计数器TL0使用了T0所有的标志位和控制位,而定时/计数器TH0仅使用了定时/计数器T1的启停控制位TR1和溢出标志位TF1,此时,TH0仅仅能够作为一个8位的定时器使用,中断允许控制寄存器IE的内容

24、设置如下:因此,(IE)8AH,5.4 定时器/计数器的编程应用举例,51,例9:设MCS-51单片机系统时钟频率为6MHZ,请利用定时/计数器产生1秒的定时。使指示灯以1秒为间隔闪烁。解:MCS-51单片机的定时/计数器T0和T1作为定时/计数器使用时,所得到的定时时间比较短,当系统晶振频率为6MHz时,最长的延时时间约为131ms(方式1)。因此,直接由定时/计数器定时无法实现这么长时间的延时。,5.4 定时器/计数器的编程应用举例,(五)综合应用,5.4.2 定时器计数器应用,52,方法一:采用2个定时/计数器联合使用的方案实现1秒 的定时。首先采用定时/计数器T0以方式1产生100ms

25、的定时,从P1.0引脚输出周期为200ms的连续方波信号。然后,把此信号作为定时/计数器T1的外部计数输入信号输入到引脚T1(P3.5),设置T1为计数模式,以方式2计数,T1计数5次即可实现1秒的定时。指示灯L由P1.2控制。,5.4 定时器/计数器的编程应用举例,53,产生1秒定时及指示灯驱动显示的原理,5.4 定时器/计数器的编程应用举例,54,(1)工作方式:根据以上分析,设置T0定时器模式、方式1,T1为计数器模式、方式2,那么,TMOD特殊功能寄存器设置如下:则:(TMOD)61H,5.4 定时器/计数器的编程应用举例,55,(2)计数初始值计算 单片机系统的晶振频率为6MHz,需

26、要定时100ms,定时/计数器T0的计数初始值X1为:转换为二进制数X1 3CB0H。对于定时/计数器T1来说,每计数5次需要计数器溢出,采用方式2时,计数初始值为:,转换为二进制数。,5.4 定时器/计数器的编程应用举例,56,方法二:采用定时/计数器T0以方式1定时100ms,定时/计数器T0溢出10次后,即可实现1秒的定时。这种方法的优点在于节省了MCS-51单片机宝贵的定时/计数器资源,用存储单元作为计数器。当实现较长时间的延时时,延时时间为定时/计数器溢出次数乘以它的定时时间。,5.4 定时器/计数器的编程应用举例,57,例10:频率测量。设单片机应用系统的晶振频率为12MHz。解:

27、频率的物理含义为每秒多少次。每按动一次开关K,测量一次方波信号的频率,使得定时/计数器工作在受引脚输入信号电平控制的计数方式,通过单片机定时产生持续时间为1秒的引脚高电平输入信号。用定时/计数器T0统计被测信号的负跳变次数,由定时/计数器T1实现定时,输出引脚所需脉宽为1秒的高电平信号。1秒定时采用例9的方法二实现。当1秒定时时间到时,立即关闭定时/计数器,以保证1秒的脉宽。,5.4 定时器/计数器的编程应用举例,58,频率测量原理,5.4 定时器/计数器的编程应用举例,59,(1)定时/计数器工作方式的设定 T0为受外部控制的计数模式,假定的频率范围为0200K Hz,工作方式设置为方式1。

28、T1为定时模式,为了实现50ms的定时,它的工作方式设置为方式1,启停且不受外部控制,则 得到:(TMOD)00011101B=1DH,5.4 定时器/计数器的编程应用举例,60,(2)计数初始值的计算(TH0)00H,(TL0)00H,采用1个存储单元FRE_CNT统计T0的溢出次数,则信号的频率为:溢出次数65536当前计数器(TH0)(TL0)的内容。T1需要基本定时50ms,溢出20次后实现1秒的定时。则计数初始值计算如下:,5.4 定时器/计数器的编程应用举例,61,总结 MCS-51单片机内部有2个可编程的16位定时/计数器T0和T1,它们既可以作为定时器,又可以作为外部事件的计数

29、器,还可以作为串行口的波特率发生器。T0有4种工作方式,而T1有3种工作方式。定时/计数器T0的计数器由TL0和TH0构成;定时/计数器T1的计数器由TL1和TH1构成。T0和T1有多种工作方式,由定时/计数器方式寄存器TMOD设置。,5.4 定时器/计数器的编程应用举例,62,5.4 定时器/计数器的编程应用举例,总结 T0和T1的启动和停止由定时/计数器控制寄存器TCON控制,当计数器计数溢出时,其溢出标志位TF0和TF1被置1,并可以以此标志向CPU提出中断请求。定时/计数器工作在计数模式时,计数输入信号通过T0(P3.4)、T1(P3.5)两个引脚输入,信号发生1到0负跳变时,计数器自动加1。计数输入信号的频率不能高于晶振频率的1/24。定时/计数器工作在定时模式时,每个机器周期产生一个计数脉冲,计数器自动加1,计数速率是晶振频率的1/12。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号