第5章定时计数器.ppt

上传人:本田雅阁 文档编号:2566841 上传时间:2019-04-09 格式:PPT 页数:34 大小:520.01KB
返回 下载 相关 举报
第5章定时计数器.ppt_第1页
第1页 / 共34页
第5章定时计数器.ppt_第2页
第2页 / 共34页
第5章定时计数器.ppt_第3页
第3页 / 共34页
第5章定时计数器.ppt_第4页
第4页 / 共34页
第5章定时计数器.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《第5章定时计数器.ppt》由会员分享,可在线阅读,更多相关《第5章定时计数器.ppt(34页珍藏版)》请在三一文库上搜索。

1、在控制系统中,常常要求有一些定时或延时控制,如定时输出、定时检测和定时扫描等;也往往需要有计数功能,能对外部事件进行计数。 要实现上述功能,一般可以采用下面3种方法。 软件定时 硬件定时 可编程的定时器 MCS-51系列单片机的硬件上集成有16位的可编程定时/计数器。51系列有T0和T1两个定时/计数器。52系列有3个定时/计数器:T0、T1和T2。,第5章 定时/计数器,5.1 定时/计数器0和1,5.2 定时/计数器的应用,5.1 定时/计数器0和1,5.1.1 定时/计数器的结构及功能 5.1.2 定时/计数器0和1的控制状态寄存器 5.1.3 T0和T1的4种工作模式,5.1.1 定时

2、/计数器的结构及功能,1、定时/计数器的结构,图5-1 定时/计数器的结构,2、T0和T1的功能选择 (1)计数功能:就是对外部事件进行计数。计数脉冲来自相应的外部输入引脚T0(P3.4)或T1(P3.5)。当输入信号发生由1至0的负跳变时,计数器(TH0,TL0或TH1,TL1)的值增1。计数的最高频率一般为振荡频率的1/24。 (2)定时功能:也是通过计数实现的。计数脉冲来自内部时钟脉冲,每个机器周期计数值增1,每个机器周期=12个振荡周期,因此计数频率为振荡频率的1/12。所以计数值乘以机器周期就是定时时间。,5.1.2 定时/计数器0和1的控制状态寄存器,1、模式控制寄存器TMOD 格

3、式如下: (1)GATE位:门控位。当GATE=1时,只有INTO或INT1为高电平且TR0或TR1置1时,相应的定时/计数器才被选通工作,可用于测量在INTX端出现的正脉冲的宽度;当GATE=0,则只要TR0和TR1置1,定时/计数器就被选通。,控制T1,控制T0,(2)C/T位:计数/定时功能选择位。C/T=0,设置位定时器方式,计数器的输入是内部时钟脉冲,其周期等于机器周期。C/T=1,设置为计数器方式,计数器输入来自T0(P3.4)或T1(P3.5)端外部脉冲。 M1、M0位:工作模式选择位。2位形成4种编码,对应4种工作模式。见表5-1。,模式1。TLX与THX构成16位计数器。计满

4、溢出时,16位计 数器回零。,模式2。8位自动重装载的定时/计数器,每当计数器TLX 溢出时,THX中的内容重新装载到TLX。,2、控制寄存器TCON 格式如下: TF1位:定时器1溢出标志位。 当定时/计数器1溢出时,由硬件置1。在查询方式时,做状态位供查询,查询有效后由软件清零;在中断方式时,做中断申请标志位进入中断服务后由硬件自动清零。,TR1位:定时器1运行控制位。由软件置位或清零,置位时,定时/计数器接通工作(前提是GATE=0);清零时,停止工作。 TF0位:定时器0溢出标志位,同TF1。 TR0位:定时器0运行控制位,同TR1。 字节地址为88H,位地址为88H8FH。,3、定时

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

6、则最大定时值为:2131s =8.192ms 若工作在模式1,则最大定时值为:2161s =65.536ms,5.1.3 T0和T1的4种工作模式,1、模式0,图5-3 定时/计数器1工作模式0(13位计数器),2、模式1,3、模式2,图5-4 定时/计数器1工作模式2(8位自动装载模式),4、模式3,TL0 (8位),1,T0引脚,振荡器,12,TR0,GATE,控制,1/12fOSC,1/12fOSC,图5-5 定时/计数器0工作模式3(2个8位计数器),5.2 定时/计数器的应用,5.2.1 定时/计数器模式0的应用 5.2.2 定时/计数器模式1的应用 5.2.3 定时/计数器模式2的

7、应用 5.2.4 定时/计数器门控位GATE的应用 5.2.5 运行中读定时/计数器,5.2.1 定时/计数器模式0的应用,【例5-1 】试利用T0产生周期为1ms、宽度为一个机器周期的负脉冲串,并由P1.0送出。 设系统晶振为12MHz,则计数频率为1MHz。 设计数初值为X,则由(M-X)T=定时值 即(213-X)10-6=110-3 得:X=7192=1110000011000B。 高8位给TH0,低5位给TL0,则TH0=0E0H,TL0=18H。,采用查询方式,编程如下: MOV TMOD,00H ;设置定时器0模式0 MOV TH0,0E0H ;设置计数初值 MOV TL0,18

8、H SETB TR0 ;启动定时器0 T0INT:JNB TF0,T0INT CLR TF0 CLR P1.0 SETB P1.0 MOV TH0,0E0H ;用软件重新装载T0 MOV TL0,18H SJMP T0INT,5.2.2 定时/计数器模式1的应用,【例5-2】利用T0模式1产生一个50Hz的方波,由P1.0输出。 设系统晶振为12MHZ,则计数频率为1MHZ,计数器初值为X,由 (M-X)T=定时值 (216-X)10-6=1/(502) 得:X=55536=0D8F0H。 高8位0D8H给TH0,低8位0F0H给TL0。,采用查询方式,编程如下: MOV TMOD,01H ;

9、设置定时器0模式1 SETB TR0 ;启动定时器0 LOOP:MOV TH0,0D8H ;设置计数初值 MOV TL0,0F0H JNB TF0, CLR TF0 CPL P1.0 SJMP LOOP,5.2.3 定时/计数器模式2的应用,【例5-3】利用T1模式2进行计数,每计200次进行累加器加1操作。 计数初值:X=M-计数值=28-200=56D=38H 采用查询方式,编程如下: MOV TMOD,60H ;设置T1模式2计数功能 MOV TH1,38H ;保存计数初值 MOV TL1,38H ;设置计数初值 SETB TR1 ;启动计数 DEL: JBC TF1,LOOP ;查询是

10、否计数溢出 AJMP DEL LOOP:INC A AJMP DEL,【例5-4】利用T0的门控位GATE,编程实现检测外部输入脉冲的宽度。 解:外部脉冲由INT0(P3.2)输入,其宽度为TP,如图5-8。T0工作于定时方式,模式1。 测试时,当INT0=0时,TR0=1;当INT0=1时,启动计数;当INT0=0时,停止计数。使TR0=0,读出TH0、TL0的计数值,用计数值乘以定时脉冲周期即得被检测正脉冲的宽度TP。,5.2.4 定时/计数器门控位GATE的应用,编程如下: MOV TMOD,09H;设T0为模式1, 定时方式,GATE=1 MOV TL0,00H ;设置计数初值为0 M

11、OV TH0,00H MOV R0,30H ;地址指针送R0 JB P3.2, ;等待INT0变低,图5-8 利用GATE功能来检测脉冲的宽度,SETB TR0 ;准备启动定时器0 JNB P3.2, ;等待INT0变高 JB P3.2, ;变高,启动计数, 并等待INT0再次变低 CLR TR0 ;停止计数 MOV R0,TL0 ;读取计数值 INC R0 MOV R0,TH0,5.2.5 运行中读定时/计数器,读定时/计数器方法: 先读THX,后读TLX,再读THX,若两次读得的THX没有变化,则读的内容是正确的。若前后两次读得的THX有变化,则再重复读得的内容就应该是正确的了。 看下面一

12、段程序: RDTIME: MOV A,TH0 ;读TH0 MOV R0,TL0 ;读TL0 CJNE A,TH0,RDTIME;比较两次读得TH0, 必要时重复上述过程 MOV R1,A RET,Example 2 Electronic camera shutter control,P2.0,P3.0,Button,Shutter,8051,1 = Pressed,0 = Normal,0 = Closed,1 = Open,Possible solution:,Determine the working mode- Timer 1, Mode 1,TMOD=10H 2.Calculate t

13、he initial values - 3CB0H 3.Open the interrupts - Disable, polling TF1 4.Start running - TR1.,1 machine cycle = 1 ms 50 ms requires 50000 machine cycles Preload Value = Maximum value +1 - Count For Count = 50000 Preload value = 65535 + 1 50000 = 3CB0h,BUTTON EQU P2.0 SHUTTER EQU P3.0 ORG 0000H MAIN:

14、 SETB BUTTON MOV TMOD,#10h ; Timer1, Mode1 CLR TF1 REPEAT: MOV TH1,#3Ch MOV TL1,#0B0h ; Load counter JNB BUTTON,$ ; Wait for button SETB SHUTTER ; Open shutter SETB TR1 ; Start timer JNB TF1, $ ; Wait for overflow CLR TF1 CLR SHUTTER ; Close shutter JB BUTTON, $ ; Wait for Normal SJMP REPEAT,补充例题: P

15、3.4输入低频负脉冲信号,要求P3.4每次发生负跳变时,P1.0输出一个200s 的同步脉冲,设晶振为6MHz 。(T0模式2) 设计方法:初态P1.0输出高电平,外部事件计数初值为FFH;P3.4发生负跳变时,T0加1计数溢出;程序查询到TF0为1时,改变T0为200s定时器工作方式,并使P1.0输出0。计数溢出后,使P1.0恢复高电平,T0恢复为外部事件计数器。,编程如下: START:MOV TMOD,06H ;T0为方式2外部计数 MOV TH0,0FFH MOV TL0,0FFH SETB TR0 ;启动计数 LOOP1: JBC TF0,PTF01 ;溢出否? AJMP LOOP1 PTF01:CLR TR0 MOV TMOD,#02H ;T0为方式2定时器,MOV TH0,156 ;200s定时 MOV TL0,156 CLR P1.0 SETB TR0 LOOP2:JBC TF0,PTF02 ;溢出否? AJMP LOOP2 PTF02:SETB P1.0 CLR TR0 AJMP START,本章到此结束!,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1