《第5章定时计数器.ppt》由会员分享,可在线阅读,更多相关《第5章定时计数器.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章定时计数器 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望5.1 5.1 定时定时/计数器计数器0 0和和1 15.2 5.2 定时定时/计数器的应用计数器的应用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.
2、1 5.1.1 定时定时/计数器的结构及功能计数器的结构及功能1 1、定时、定时/计数器的结构计数器的结构微处理器微处理器(CPUCPU)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.
3、5)T1(P3.5)。当输入信号发生由。当输入信号发生由1 1至至0 0的负跳变时,的负跳变时,计数器(计数器(TH0TH0,TL0TL0或或TH1TH1,TL1TL1)的值增)的值增1 1。计数计数的最高频率一般为振荡频率的的最高频率一般为振荡频率的1/241/24。(2 2)定时功能)定时功能:也是通过计数实现的。计数脉冲也是通过计数实现的。计数脉冲来自内部时钟脉冲,每个机器周期计数值增来自内部时钟脉冲,每个机器周期计数值增1 1,每个机器周期每个机器周期=12=12个振荡周期,因此计数频率为个振荡周期,因此计数频率为振荡频率的振荡频率的1/121/12。所以计数值乘以机器周期就。所以计数
4、值乘以机器周期就是定时时间。是定时时间。5.1.2 定时定时/计数器计数器0 0和和1 1的控制状态寄存器的控制状态寄存器1 1、模式控制寄存器、模式控制寄存器TMODTMOD 格式如下:格式如下:(1 1)GATEGATE位:门控位。当位:门控位。当GATE=1GATE=1时,只有时,只有INTOINTO或或INT1INT1为高电平且为高电平且TR0TR0或或TR1TR1置置1 1时,相应的定时时,相应的定时/计数器才被选通工作,可用于测量在计数器才被选通工作,可用于测量在INTXINTX端出端出现的正脉冲的宽度;当现的正脉冲的宽度;当GATE=0GATE=0,则只要,则只要TR0TR0和和
5、TR1TR1置置1 1,定时,定时/计数器就被选通。计数器就被选通。GATE C/T M1 M0 GATE C/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)端外部脉冲。端外部脉冲。M1 M1、M0M0位:工作模式选择
6、位。位:工作模式选择位。2 2位形成位形成4 4种编码,种编码,对应对应4 4种工作模式。见表种工作模式。见表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
7、 5位与位与THXTHX中的中的8 8位构成位构成1313位计数器。计满位计数器。计满溢出时,溢出时,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运行控制位。由软件置位或清零,运行控制位。由软件置位或清零,置位时,定时置位时,定时/计数器接通工作计数器接通工作(前提是前提是GATE=0)GATE=0);清零时,停止工作。;清零时,停止工作。TF0 TF
9、0位:定时器位:定时器0 0溢出标志位,同溢出标志位,同TF1TF1。TR0 TR0位:定时器位:定时器0 0运行控制位,同运行控制位,同TR1TR1。字节地址为字节地址为88H88H,位地址为,位地址为88H88H8FH8FH。3 3、定时、定时/计数器的初始化计数器的初始化(1 1)对)对TMODTMOD赋值,以确定定时器的工作模式;赋值,以确定定时器的工作模式;(2 2)置定时)置定时/计数器初值,直接将初值写入寄存器的计数器初值,直接将初值写入寄存器的TH0TH0、TL0TL0或或TH1TH1、TL1TL1;(3 3)根据需要,对)根据需要,对IEIE置初值,开放定时器中断;置初值,开
10、放定时器中断;(4 4)对)对TCONTCON寄存器中的寄存器中的TR0TR0或或TR1TR1置位,启动定时置位,启动定时/计数器,计数器,置位以后,计数器即按规定的工作模式和初值进行计置位以后,计数器即按规定的工作模式和初值进行计数或开始定时。数或开始定时。初值计算:初值计算:设计数器的最大值为设计数器的最大值为M M,则置入的初值,则置入的初值X X为:为:计数方式:计数方式:X=M-X=M-计数值计数值 定时方式:由定时方式:由(M-X)T=(M-X)T=定时值定时值,得得X=M-X=M-定时值定时值/T/T T T为计数周期,是单片机的机器周期。为计数周期,是单片机的机器周期。(模式(
11、模式0 M0 M为为2 21313,模式,模式1 M1 M为为2 21616,模式,模式2 2和和3 M3 M为为2 28 8)例如:机器周期为例如:机器周期为1 1ss 时,工作在模式时,工作在模式0 0,则最大定时值,则最大定时值为为:2:2131311ss=8.192ms=8.192ms 若工作在模式若工作在模式1,1,则最大定时值为则最大定时值为:2:2161611ss=65.536ms=65.536ms5.1.3 T0 T0和和T1T1的的4 4种工作模式种工作模式1 1、模式、模式0 0TL1 TH1TL1 TH1(5 5位)(位)(8 8位)位)TF1TF111T1T1引脚引脚1
12、 1振荡器振荡器12TR1TR1GATEGATEINT1INT1引脚引脚控制控制C/T=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振荡器振荡器12TR1TR1GA
13、TEGATEINT1INT1引脚引脚控制控制C/T=0C/T=0C/T=1C/T=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=1TF0TF0中断中断1/12fOSC1/12fOSC1/12fOSC控制控制TR1TR1TH0 TH0(8 8位)位)TF1TF1中断中断图图5-5 5-5 定
14、时定时/计数器计数器0 0工作模式工作模式3 3(2 2个个8 8位计数器)位计数器)5.2 5.2 定时定时/计数器的应用计数器的应用5.2.1 5.2.1 定时定时/计数器模式计数器模式0 0的应用的应用5.2.2 5.2.2 定时定时/计数器模式计数器模式1 1的应用的应用5.2.3 5.2.3 定时定时/计数器模式计数器模式2 2的应用的应用5.2.4 5.2.4 定时定时/计数器门控位计数器门控位GATEGATE的应用的应用5.2.5 5.2.5 运行中读定时运行中读定时/计数器计数器5.2.1 定时定时/计数器模式计数器模式0 0的应用的应用【例【例5-1 5-1】试利用试利用T0
15、T0产生周期为产生周期为1ms1ms、宽度为一、宽度为一个机器周期的负脉冲串,并由个机器周期的负脉冲串,并由P1.0P1.0送出。送出。设系统晶振为设系统晶振为12MHz12MHz,则计数频率为,则计数频率为1MHz1MHz。设计数初值为设计数初值为X X,则由(,则由(M-XM-X)T=T=定时值定时值 即(即(2 21313-X-X)1010-6-6=110=110-3-3 得得:X=7192=1110000011000B:X=7192=1110000011000B。高高8 8位给位给TH0TH0,低,低5 5位给位给TL0TL0,则,则TH0=0E0HTH0=0E0H,TL0=18HTL
16、0=18H。采用查询方式,编程如下:采用查询方式,编程如下:MOV TMOD MOV TMOD,00H 00H ;设置定时器;设置定时器0 0模式模式0 0 MOV TH0 MOV TH0,0E0H 0E0H ;设置计数初值;设置计数初值 MOV TL0 MOV TL0,18H18H SETB TR0 SETB TR0 ;启动定时器;启动定时器0 0 T0INT T0INT: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;用软件重新
17、装载;用软件重新装载T0T0 MOV TL0 MOV TL0,18H18H SJMP T0INT SJMP T0INT5.2.2 定时定时/计数器模式计数器模式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/(502502)得得:X=55536=0D8F0H:X=55536
18、=0D8F0H。高高8 8位位0D8H0D8H给给TH0TH0,低,低8 8位位0F0H0F0H给给TL0TL0。采用查询方式,编程如下:采用查询方式,编程如下:MOV TMOD MOV TMOD,01H 01H ;设置定时器;设置定时器0 0模式模式1 1 SETB TR0 SETB TR0 ;启动定时器;启动定时器0 0LOOPLOOP:MOV TH0MOV TH0,0D8H 0D8H ;设置计数初值;设置计数初值 MOV TL0 MOV TL0,0F0H0F0H JNB TF0 JNB TF0,CLR TF0 CLR TF0 CPL P1.0 CPL P1.0 SJMP LOOP SJM
19、P LOOP5.2.3 定时定时/计数器模式计数器模式2 2的应用的应用【例【例5-35-3】利用利用T1T1模式模式2 2进行计数,每计进行计数,每计200200次进行次进行累加器加累加器加1 1操作。操作。计数初值:计数初值:X=M-X=M-计数值计数值=2=28 8-200=56D=38H-200=56D=38H采用查询方式,编程如下:采用查询方式,编程如下:MOV TMOD MOV TMOD,60H 60H ;设置;设置T1T1模式模式2 2计数功能计数功能 MOV TH1 MOV TH1,38H 38H ;保存计数初值;保存计数初值 MOV TL1 MOV TL1,38H 38H ;
20、设置计数初值;设置计数初值 SETB TR1 SETB TR1 ;启动计数;启动计数DEL:JBC TF1DEL:JBC TF1,LOOP LOOP ;查询是否计数溢出;查询是否计数溢出 AJMP DEL AJMP DELLOOP:INC ALOOP:INC A AJMP DEL AJMP DEL【例【例5-45-4】利用】利用T0T0的门控位的门控位GATEGATE,编程实现检测外,编程实现检测外部输入脉冲的宽度。部输入脉冲的宽度。解:外部脉冲由解:外部脉冲由INT0INT0(P3.2P3.2)输入,其宽度为)输入,其宽度为TPTP,如图,如图5-85-8。T0T0工作于定时方式,模式工作于
21、定时方式,模式1 1。测试时,当测试时,当INT0=0INT0=0时,时,TR0=1TR0=1;当;当INT0=1INT0=1时,启时,启动计数;当动计数;当INT0=0INT0=0时,停止计数。使时,停止计数。使TR0=0TR0=0,读,读出出TH0TH0、TL0TL0的计数值,用计数值乘以定时脉冲的计数值,用计数值乘以定时脉冲周期即得被检测正脉冲的宽度周期即得被检测正脉冲的宽度TPTP。5.2.4 定时定时/计数器门控位计数器门控位GATEGATE的应用的应用 编程如下:编程如下:MOV TMOD MOV TMOD,09H09H;设;设T0T0为模式为模式1 1,定时方式,定时方式,GAT
22、E=1 GATE=1 MOV TL0 MOV TL0,00H 00H ;设置计数初值为;设置计数初值为0 0 MOV TH0 MOV TH0,00H 00H MOV R0 MOV R0,30H 30H ;地址指针送;地址指针送R0R0 JB P3.2 JB P3.2,;等待;等待INT0INT0变低变低INT0INT0启动启动T0T0TPTPT0T0计时计时停止停止T0T0计时计时读取读取T0T0值值图图5-8 5-8 利用利用GATEGATE功能来检测脉冲的宽度功能来检测脉冲的宽度 SETB TR0 SETB TR0 ;准备启动定时器;准备启动定时器0 0 JNB P3.2 JNB P3.2
23、,;等待;等待INT0INT0变高变高 JB P3.2 JB P3.2,;变高,启动计数,;变高,启动计数,并等待并等待INT0INT0再次变低再次变低 CLR TR0 CLR TR0 ;停止计数;停止计数 MOV MOV R0R0,TL0 TL0 ;读取计数值;读取计数值 INC R0 INC R0 MOV MOV R0R0,TH0TH05.2.5 5.2.5 运行中读定时运行中读定时/计数器计数器读定时读定时/计数器方法:计数器方法:先读先读THXTHX,后读,后读TLXTLX,再读,再读THXTHX,若两次读得的,若两次读得的THXTHX没有变化,则读的内容是正确的。若前后两没有变化,则
24、读的内容是正确的。若前后两次读得的次读得的THXTHX有变化,则再重复读得的内容就应有变化,则再重复读得的内容就应该是正确的了。该是正确的了。看下面一段程序:看下面一段程序:RDTIMERDTIME:MOV A MOV A,TH0 TH0 ;读;读TH0TH0 MOV R0 MOV R0,TL0 TL0 ;读;读TL0TL0 CJNE A CJNE A,TH0TH0,RDTIMERDTIME;比较两次读得;比较两次读得TH0TH0,必要时重复上述过程必要时重复上述过程 MOV R1 MOV R1,A A RET RETExample 2Electronic camera shutter con
25、trolP2.0P3.0ButtonShutter80511=Pressed0=Normal0=Closed1=OpenPossible solution:1.Determine the working mode-2.Timer 1,Mode 1,TMOD=10H3.2.Calculate the initial values-3CB0H4.3.Open the interrupts-Disable,5.polling TF16.4.Start running-TR1.1 machine cycle=1 m ms 50 ms requires 50000 machine cycles Prel
26、oad Value=Maximum value+1-CountFor Count=50000Preload value=65535+1 50000=3CB0h BUTTONEQU P2.0 SHUTTER EQU P3.0 ORG0000H MAIN:SETBBUTTON MOVTMOD,#10h ;Timer1,Mode1 CLRTF1REPEAT:MOVTH1,#3Ch MOVTL1,#0B0h ;Load counter JNBBUTTON,$;Wait for button SETBSHUTTER ;Open shutter SETBTR1 ;Start timer JNBTF1,$;
27、Wait for overflow CLRTF1 CLRSHUTTER ;Close shutterJBBUTTON,$;Wait for Normal SJMPREPEAT 补充例题:P3.4 P3.4输入低频负脉冲信号,要求输入低频负脉冲信号,要求P3.4P3.4每次发生每次发生负跳变时,负跳变时,P1.0P1.0输出一个输出一个200200ss 的同步脉冲,的同步脉冲,设晶振为设晶振为6MHz 6MHz。(。(T0T0模式模式2 2)设计方法:初态设计方法:初态P1.0P1.0输出高电平,外部事件计输出高电平,外部事件计数初值为数初值为FFHFFH;P3.4P3.4发生负跳变时,发生负跳
28、变时,T0T0加加1 1计数计数溢出;程序查询到溢出;程序查询到TF0TF0为为1 1时,改变时,改变T0T0为为200200ss定时器工作方式,并使定时器工作方式,并使P1.0P1.0输出输出0 0。计数溢出。计数溢出后,使后,使P1.0P1.0恢复高电平,恢复高电平,T0T0恢复为外部事件计恢复为外部事件计数器。数器。定时方式定时方式(200s 200s)(外部计数)(外部计数)(初值(初值FFHFFH)P3.4P3.4P1.0P1.0编程如下:编程如下:STARTSTART:MOV TMODMOV TMOD,06H 06H;T0T0为方式为方式2 2外部计数外部计数 MOV TH0 MO
29、V TH0,0FFH 0FFH MOV TL0 MOV TL0,0FFH0FFH SETB TR0 SETB TR0 ;启动计数;启动计数LOOP1:JBC TF0LOOP1:JBC TF0,PTF01 PTF01 ;溢出否?;溢出否?AJMP LOOP1 AJMP LOOP1PTF01PTF01:CLR TR0CLR TR0 MOV TMOD MOV TMOD,#02H#02H ;T0T0为方式为方式2 2定时器定时器 MOV TH0MOV TH0,156 156 ;200s200s定时定时 MOV TL0 MOV TL0,156156 CLR P1.0 CLR P1.0 SETB TR0 SETB TR0LOOP2LOOP2:JBC TF0JBC TF0,PTF02 PTF02 ;溢出否?;溢出否?AJMP LOOP2 AJMP LOOP2PTF02PTF02:SETB P1.0SETB P1.0 CLR TR0 CLR TR0 AJMP START AJMP START