第5章定时计数器_第1页
第5章定时计数器_第2页
第5章定时计数器_第3页
第5章定时计数器_第4页
第5章定时计数器_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第5 5章章 定时定时/ /计数器计数器5.1 5.1 定时定时/ /计数器计数器0 0和和1 15.3 5.3 定时定时/ /计数器的应用计数器的应用5.1 5.1 定时定时/ /计数器计数器0 0和和1 15.1.1 5.1.1 定时定时/ /计数器的结构及功能计数器的结构及功能5.1.2 5.1.2 定时定时/ /计数器计数器0 0和和1 1的控制状态寄存器的控制状态寄存器5.1.3 T05.1.3 T0和和T1T1的的4 4种工作模式种工作模式5.1.1 5.1.1 定时定时/ /计数器的结构及功能计数器的结构及功能1 1、定时、定时/ /计数器的结构计数器的结构微处理器微处理器(C

2、PUCPU)TH1TH1TMODTMODTCONTCONTL0TL0TH0TH0TL1TL1T1T1部分部分T0T0部分部分P3.5(T1)P3.5(T1)P3.4(T0)P3.4(T0)图图5-1 5-1 定时定时/ /计数器的结构计数器的结构2 2、T0T0和和T1T1的功能选择的功能选择(1 1)计数功能)计数功能 就是对外部事件进行计数。计数脉冲来自相应就是对外部事件进行计数。计数脉冲来自相应的外部输入引脚的外部输入引脚T0T0(P3.4)P3.4)或或T1(P3.5)T1(P3.5)。当输入。当输入信号发生由信号发生由1 1至至0 0的负跳变时,计数器(的负跳变时,计数器(TH0TH

3、0,TL0TL0或或TH1TH1,TL1TL1)的值增)的值增1 1。计数的最高频率一计数的最高频率一般为振荡频率的般为振荡频率的1/241/24。(2 2)定时功能)定时功能 也是通过计数实现的。计数脉冲来自内部时钟也是通过计数实现的。计数脉冲来自内部时钟脉冲,每个机器周期计数值增脉冲,每个机器周期计数值增1 1,每个机器周期,每个机器周期=12=12个振荡周期,因此计数频率为振荡频率的个振荡周期,因此计数频率为振荡频率的1/121/12。所以计数值乘以机器周期就是定时时间。所以计数值乘以机器周期就是定时时间。5.1.2 定时定时/ /计数器计数器0 0和和1 1的控制状态寄存器的控制状态寄

4、存器1 1、模式控制寄存器、模式控制寄存器TMODTMOD 格式如下:格式如下:(1 1)GATEGATE位:门控位。当位:门控位。当GATE=1GATE=1时,只有时,只有INTOINTO或或INT1INT1为高电平且为高电平且TR0TR0或或TR1TR1置置1 1时,相应的定时时,相应的定时/ /计数器才被选通工作,可用于测量在计数器才被选通工作,可用于测量在INTXINTX端出端出现的正脉冲的宽度;当现的正脉冲的宽度;当GATE=0GATE=0,则只要,则只要TR0TR0和和TR1TR1置置1 1,定时,定时/ /计数器就被选通。计数器就被选通。GATE C/T M1 M0 GATE C

5、/T M1 M0控制控制T1T1控制控制T0T0 (2 2)C/TC/T位:计数位:计数/ /定时功能选择位。定时功能选择位。C/T=0C/T=0,设置位定时器方式,计数器的输入是内部时钟设置位定时器方式,计数器的输入是内部时钟脉冲,其周期等于机器周期。脉冲,其周期等于机器周期。C/T=1C/T=1,设置为计,设置为计数器方式,计数器输入来自数器方式,计数器输入来自T0T0(P3.4)P3.4)或或T1(P3.5)T1(P3.5)端外部脉冲。端外部脉冲。 M1M1、M0M0位:工作模式选择位。位:工作模式选择位。2 2位形成位形成4 4种编码,种编码,对应对应4 4种工作模式。见表种工作模式。

6、见表5-15-1。模式模式1 1。TLXTLX与与THXTHX构成构成1616位计数器。计满溢出时,位计数器。计满溢出时,1616位计位计数器回零。数器回零。模式模式2 2。8 8位自动重装载的定时位自动重装载的定时/ /计数器,每当计数器计数器,每当计数器TLXTLX溢出时,溢出时,THXTHX中的内容重新装载到中的内容重新装载到TLXTLX。表表5-1 5-1 定时定时/ /计数器工作模式计数器工作模式M1 M0M1 M0功功 能能 描描 述述0 00 0模式模式0 0。TLXTLX中低中低5 5位与位与THXTHX中的中的8 8位构成位构成1313位计数器。计满位计数器。计满溢出时,溢出

7、时,1313位计数器回零。位计数器回零。0 10 11 01 01 11 1模式模式3 3。对定时器。对定时器0 0,分成,分成2 2个个8 8位计数器,对于定时器位计数器,对于定时器1 1,停止计数。停止计数。TMODTMOD寄存器的单元地址为寄存器的单元地址为89H89H,不能位寻址。,不能位寻址。2 2、控制寄存器、控制寄存器TCONTCON格式如下:格式如下:TF1TF1位:定时器位:定时器1 1溢出标志位。溢出标志位。 当定时当定时/ /计数器计数器1 1溢出时,由硬件置溢出时,由硬件置1 1。在查询。在查询方式时,做状态位供查询,查询有效后由软方式时,做状态位供查询,查询有效后由软

8、件清零;在中断方式时,做中断申请标志位件清零;在中断方式时,做中断申请标志位进入中断服务后由硬件自动清零。进入中断服务后由硬件自动清零。TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TR1TR1位:定时器位:定时器1 1运行控制位。由软件置位或清运行控制位。由软件置位或清零,置位时,定时零,置位时,定时/ /计数器接通工作;清零时,计数器接通工作;清零时,停止工作。停止工作。 TF0TF0位:定时器零溢出标志位,同位:定时器零溢出标志位,同TF1TF1。 TR0TR0位:定时器零运行控制位,同位:定时器零运行控制位

9、,同TR1TR1。 字节地址为字节地址为88H88H,位地址为,位地址为8888H H8FH8FH。3 3、定时、定时/ /计数器的初始化计数器的初始化(1 1)对)对TMODTMOD赋值,以确定定时器的工作模式;赋值,以确定定时器的工作模式;(2 2)置定时)置定时/ /计数器初值,直接将初值写入寄存计数器初值,直接将初值写入寄存器的器的TH0TH0、TL0TL0或或TH1TH1、TL1TL1;(3 3)根据需要,对)根据需要,对IEIE置初值,开放定时器中断;置初值,开放定时器中断;(4 4)对)对TCONTCON寄存器中的寄存器中的TR0TR0或或TR1TR1置位,启动定置位,启动定时时

10、/ /计数器,置位以后,计数器即按规定的工计数器,置位以后,计数器即按规定的工作模式和初值进行计数或开始定时。作模式和初值进行计数或开始定时。 初值计算:初值计算: 设计数器的最大值为设计数器的最大值为M M,则置入的初值,则置入的初值X X为:为: 计数方式:计数方式:X=M-X=M-计数值计数值 定时方式:由定时方式:由(M-X)T=(M-X)T=定时值定时值, ,得得X=M-X=M-定时值定时值/ /T T T T为计数周期,是单片机的机器周期。为计数周期,是单片机的机器周期。(模式(模式0 M0 M为为2 21313,模式,模式1 M1 M为为2 21616,模式,模式2 2和和3 M

11、3 M为为2 28 8)例如:机器周期为例如:机器周期为1 1ss 时,工作在模式时,工作在模式0 0,则最,则最大定时值为大定时值为:2:213131 1ss =8.192ms =8.192ms 若工作在模式若工作在模式1,1,则最大定时值为则最大定时值为: : 2 216161 1ss =65.536ms =65.536ms5.1.3 T0 T0和和T1T1的的4 4种工作模式种工作模式1 1、模式、模式0 0TL1 TH1TL1 TH1(5 5位)(位)(8 8位)位)TF1TF111T1T1引脚引脚1 1振荡器振荡器12TR1TR1GATEGATEINT1INT1引脚引脚控制控制C/T

12、=0C/T=0C/T=1C/T=1中断中断图图5-3 5-3 定时定时/ /计数器计数器1 1工作模式工作模式0 0(1313位计数器)位计数器)2 2、模式、模式1 1TL1 TH1TL1 TH1(8 8位)(位)(8 8位)位)TF1TF111T1T1引脚引脚1 1振荡器振荡器12TR1TR1GATEGATEINT1INT1引脚引脚控制控制C/T=0C/T=0C/T=1C/T=1中断中断3 3、模式、模式2 2TL1 TL1 (8 8位)位)TF1TF111T1T1引脚引脚1 1振荡器振荡器12TR1TR1GATEGATEINT1INT1引脚引脚控制控制C/T=0C/T=0C/T=1C/T

13、=1中断中断TH1 TH1 (8 8位)位)重装载重装载图图5-4 5-4 定时定时/ /计数器计数器1 1工作模式工作模式2 2(8 8位自动装载模式)位自动装载模式)4 4、模式、模式3 3TL0 TL0 (8 8位)位)11T0T0引脚引脚1 1振荡器振荡器12TR0TR0GATEGATEINT0INT0引脚引脚控制控制C/T=0C/T=0C/T=1C/T=1TF1TF1中断中断1/12fOSC1/12fOSC1/12fOSC控制控制TR1TR1TH0 TH0 (8 8位)位)TF1TF1中断中断图图5-5 5-5 定时定时/ /计数器计数器0 0工作模式工作模式3 3(2 2个个8 8

14、位计数器)位计数器)5.2 定时计数器2 -52子系列单片机有一个具有自动重装载和捕获能力的16位定时/计数器2,简称T2。在特殊功能寄存器组里,有5个SFR与T2有关:控制寄存器T2CON、捕获寄存器RCAP2H和RCAP2L、定时寄存器高低字节TH2和TL2。5.2.1 T2控制寄存器T2CONTF2(T2CON.7)位:T2溢出标志位。T2计数溢出时置位,并申请中断。该位只能靠软件清零。但在波特率发生器方式下,T2溢出不置位。 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T CP/RL2 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T CP/RL2 E

15、XF2(T2CON.6)位:T2外部触发中断标志位。当EXEN2=1且T2EX引脚出现负跳变而造成捕获或重装载时,EXF2置位,并申请中断。该位只能靠软件清零。RCLK(T2CON.5)位:接收时钟选择位。靠软件置1或清0,以选择T2或T1做串行口接收波特率发生器。1:选择T2,0:选择T1。TCLK(T2CON.4)位:发送时钟选择位。靠软件置1或清0,以选择T2或T1做串行口发送波特率发生器。1:选择T2,0:选择T1。EXEN2(T2CON.3)位:T2外部触发允许标志。靠 软件置1或清0。当EXEN2=1时,若T2未用做串行口波特率发生器,则在T2EX引脚出现负跳变时,将造成T2捕获或

16、重装载操作,并置EXF2位,请求中断;EXEN2=0时,T2EX引脚信号不起作用。TR2(T2CON.2)位:T2的运行控制位,由软件置位或清零。TR2=1,启动T2运行,TR2=0,关闭T2。C/T(T2CON.1)位:定时/计数方式选择位。C/T=1时,对T2CLK外引脚脉冲计数;C/T =0时,对内部机器计数。 CP/RL2(T2CON.0)位:捕获重装载标志位。CP/ RL2=1时,选择捕获功能,此时若EXEN2=1,且T2EX引脚出现负跳变,则发生捕获操作,即把TH2及TL2内容传送给RCAP2H及RCAP2L;当CP/ RL2=0时,选择重装载操作,此时T2溢出或EXEN2=1条件

17、下,有T2EX负跳变,都会产生重装载操作,即把RCAP2H及RCAP2L内容传送给TH2及TL2。当RCLK=1或TCLK=1时,该位不起作用。5.2.2 定时/计数器T2的工作方式T2有两种工作方式:定时/计数器方式和波特率发生器方式。1、T2的定时/计数器工作方式 T2定时/计数方式下的逻辑如图所示。在该方式下,C/T2决定是定时方式还是计数方式。C/T2 =0时,对机器周期计数,作定时器使用;当C/ T2=1时,对T2CLK引脚脉冲计数,用作计数器。 该方式与T0和T1完全一样。 CP/RL2用来选择捕获还是重装载。捕获时,数据由TH2及TL2传送给RCAP2H及RCAP2L;重装载时,

18、数据传送方向与之相反。 捕获或重装载发生在下述情况之下:(1)T2计数溢出时,若CP/RL2=0,则捕获。 (2)当EXEN2=1且T2EX引脚出现负跳变时,根据CP/RL2是0还是1,产生捕获或重装载操作。 若T2的中断是被允许的,则T2计数溢出或捕获及重装载都会引发T2中断。T2的中断标志必须由软件清除。2、波特率发生器方式 当RCLK=1或TCLK=1时,T2工作在波特率发生器方式,此时的T2逻辑框图如图5-7所示。 此时的计数脉冲来源由C/T2决定,而此时的CP/RL2位将不起作用。 5.3 5.3 定时定时/ /计数器的应用计数器的应用5.3.1 5.3.1 定时定时/ /计数器模式

19、计数器模式0 0的应用的应用5.3.2 5.3.2 定时定时/ /计数器模式计数器模式1 1的应用的应用5.3.3 5.3.3 定时定时/ /计数器模式计数器模式2 2的应用的应用5.3.4 5.3.4 定时定时/ /计数器门控位计数器门控位GATEGATE的应用的应用5.3.5 5.3.5 运行中读定时运行中读定时/ /计数器计数器5.3.1 定时定时/ /计数器模式计数器模式0 0的应用的应用【例【例5-1 5-1 】试利用试利用T0T0产生周期为产生周期为1ms1ms、宽度为一、宽度为一个机器周期的负脉冲串,并由个机器周期的负脉冲串,并由P1.0P1.0送出。送出。 设系统晶振为设系统晶

20、振为12MHz12MHz,则计数频率为,则计数频率为1MHz1MHz。 设计数初值为设计数初值为X X,则由(,则由(M-XM-X)T=T=定时值定时值 即(即(2 21313- -X X)1010-6-6=1=11010-3-3 得得: :X=7192=1110000011000BX=7192=1110000011000B。 高高8 8位给位给TH0TH0,低,低5 5位给位给TL0TL0,则,则TH0=0E0HTH0=0E0H,TL0=18HTL0=18H。 采用查询方式,编程如下:采用查询方式,编程如下: MOV TMODMOV TMOD,00H 00H ;设置定时器;设置定时器0 0模

21、式模式0 0 MOV TH0 MOV TH0,0E0H 0E0H ;设置计数初值;设置计数初值 MOV TL0MOV TL0,18H18H SETB TR0 SETB TR0 ;启动定时器;启动定时器0 0 T0INTT0INT:JNB TF0JNB TF0,T0INTT0INT CLR TF0 CLR TF0 CLR P1.0 CLR P1.0 SETB P1.0 SETB P1.0 MOV TH0 MOV TH0,0E0H 0E0H ;用软件重新装载;用软件重新装载T0T0 MOV TL0 MOV TL0,18H18H SJMP T0INT SJMP T0INT5.3.2 定时定时/ /计

22、数器模式计数器模式1 1的应用的应用【例【例5-25-2】利用利用T0T0模式模式1 1产生一个产生一个50Hz50Hz的方波,由的方波,由P1.0P1.0输出。输出。 设系统晶振为设系统晶振为12MHZ12MHZ,则计数频率为,则计数频率为1MHZ1MHZ,计,计数器初值为数器初值为X X,由,由 (M-XM-X)T=T=定时值定时值 (2 21616- -X X)1010-6-6=1/=1/(50502 2) 得得: :X=55536=0D8F0HX=55536=0D8F0H。 高高8 8位位0D8H0D8H给给TH0TH0,低,低8 8位位0 0F0HF0H给给TL0TL0。 采用查询方

23、式,编程如下:采用查询方式,编程如下: MOV TMODMOV TMOD,01H 01H ;设置定时器;设置定时器0 0模式模式1 1 SETB TR0 SETB TR0 ;启动定时器;启动定时器0 0LOOPLOOP:MOV TH0MOV TH0,0D8H 0D8H ;设置计数初值;设置计数初值 MOV TL0MOV TL0,0F0H0F0H JNB TF0 JNB TF0, CLR TF0CLR TF0 CPL P1.0 CPL P1.0 SJMP LOOP SJMP LOOP5.3.3 定时定时/ /计数器模式计数器模式2 2的应用的应用【例【例5-35-3】利用利用T1T1模式模式2

24、2进行计数,每计进行计数,每计200200次进行次进行累加器加累加器加1 1操作。操作。计数初值:计数初值:X=M-X=M-计数值计数值=2=28 8-200=56-200=56D=38HD=38H采用查询方式,编程如下:采用查询方式,编程如下: MOV TMODMOV TMOD,60H 60H ;设置;设置T1T1模式模式2 2计数功能计数功能 MOV TH1MOV TH1,38H 38H ;保存计数初值;保存计数初值 MOV TL1MOV TL1,38H 38H ;设置计数初值;设置计数初值 SETB TR1 SETB TR1 ;启动计数;启动计数DELDEL:JBC TF1JBC TF1

25、,LOOP LOOP ;查询是否计数溢出;查询是否计数溢出 AJMP DELAJMP DELLOOPLOOP:INC AINC A AJMP DEL AJMP DEL【例【例5-45-4】利用】利用T0T0的门控位的门控位GATEGATE,编程实现检测外,编程实现检测外部输入脉冲的宽度。部输入脉冲的宽度。解:外部脉冲由解:外部脉冲由INT0INT0(P3.2P3.2)输入,其宽度为)输入,其宽度为TPTP,如图如图5-85-8。T0T0工作于定时方式,模式工作于定时方式,模式1 1。 测试时,当测试时,当INT0=0INT0=0时,时,TR0=1TR0=1;当;当INT0=1INT0=1时,时

26、,启动计数;当启动计数;当INT0=0INT0=0时,停止计数。使时,停止计数。使TR0=0TR0=0,读出读出TH0TH0、TL0TL0的计数值,用计数值乘以定时脉的计数值,用计数值乘以定时脉冲周期即得被检测正脉冲的宽度冲周期即得被检测正脉冲的宽度TPTP。5.3.4 定时定时/ /计数器门控位计数器门控位GATEGATE的应用的应用 编程如下:编程如下: MOV TMODMOV TMOD,09H 09H ;设;设T0T0为模式为模式1 1,定时方式,定时方式, GATE=1GATE=1 MOV TL0 MOV TL0,00H 00H ;设置计数初值为;设置计数初值为0 0 MOV TH0M

27、OV TH0,00H 00H MOV R0 MOV R0,30H 30H ;地址指针送;地址指针送R0R0 JB INT0 JB INT0, ;等待;等待INT0INT0变低变低INT0INT0启动启动T0T0TPTPT0T0计时计时停止停止T0T0计时计时读取读取T0T0值值图图5-8 5-8 利用利用GATEGATE功能来检测脉冲的宽度功能来检测脉冲的宽度 SETB TR0 SETB TR0 ;准备启动定时器;准备启动定时器0 0 JNB INT0 JNB INT0, ;等待;等待INT0INT0变高变高 JB INT0JB INT0, ;变高,启动计数,并等待;变高,启动计数,并等待 I

28、NT0INT0再次变低再次变低 CLR TR0 CLR TR0 ;停止计数;停止计数 MOV MOV R0R0,TL0 TL0 ;读取计数值;读取计数值 INC R0INC R0 MOV MOV R0R0,TH0TH05.3.5 5.3.5 运行中读定时运行中读定时/ /计数器计数器读定时读定时/ /计数器方法:计数器方法: 先读先读THXTHX,后读,后读TLXTLX,再读,再读THXTHX,若两次读得的,若两次读得的THXTHX没有变化,则读的内容是正确的。若前后两没有变化,则读的内容是正确的。若前后两次读得的次读得的THXTHX有变化,则再重复读得的内容就应有变化,则再重复读得的内容就应

29、该是正确的了。该是正确的了。看下面一段程序:看下面一段程序:RDTIMERDTIME:MOV AMOV A,TH0 TH0 ;读;读TH0TH0 MOV R0 MOV R0,TL0 TL0 ;读;读TL0TL0 CJNE A CJNE A,TH0TH0,RDTIMERDTIME;比较两次读得的;比较两次读得的TH0TH0, 必要时重复上述过程必要时重复上述过程 MOV R1MOV R1,A A RET RET举例:举例:1 1、应用、应用T0T0产生产生1ms1ms的定时,并使的定时,并使P1.0P1.0输出周期为输出周期为2ms2ms的方波,设晶振为的方波,设晶振为6MHz6MHz。(应用模

30、式。(应用模式0 0)编程如下:编程如下: STARTSTART:MOV TL0MOV TL0,0CH 0CH ;初值写入;初值写入T0T0 MOV TH0 MOV TH0,0F0H0F0H SETB TR0 SETB TR0 LOOP LOOP:JBC TF0JBC TF0,PTF0PTF0 AJMP LOOP AJMP LOOP PTF0 PTF0:MOV TL0MOV TL0,0CH 0CH ;计数初值重装;计数初值重装 MOV TH0MOV TH0,0F0H0F0H CPL P1.0 CPL P1.0 AJMP LOOP AJMP LOOP2 2、应用、应用T0T0产生产生1ms1ms

31、的定时,并使的定时,并使P1.0P1.0输出周期为输出周期为2ms2ms的方波,设晶振为的方波,设晶振为6MHz6MHz。 (应用模式(应用模式1 1)编程如下:编程如下: STARTSTART:MOV TMODMOV TMOD,01H01H;置工作方式;置工作方式1 1 MOV TL0 MOV TL0,0CH 0CH ;初值写入;初值写入T0T0 MOV TH0 MOV TH0,0FEH0FEH SETB TR0 SETB TR0 ;允许计数;允许计数 LOOPLOOP:JBC TF0JBC TF0,PTF0 PTF0 ;溢出否?;溢出否? AJMP LOOPAJMP LOOP PTF0 PTF0:MOV TL0MOV TL0,0CH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论