系列单片机定时器计数器.ppt
《系列单片机定时器计数器.ppt》由会员分享,可在线阅读,更多相关《系列单片机定时器计数器.ppt(63页珍藏版)》请在三一办公上搜索。
1、第七章 51系列单片机的定时器/计数器,71 定时器/计数器概述,711 定时方法,在单片机控制系统中,定时的方法有:1.软件定时 靠执行一个循环程序以进行时间延迟。特点是:时间精确,且不需外加硬件电路。缺点是:定时时要占用CPU,增加CPU的开销。2硬件定时 使用硬件电路来完成。方法是:定时功能全部由硬件电路完成,不占CPU的时间。缺点是:定时参数一旦设定,修改比较困难。适用于:时间较长的定时3可编程定时器 通过系统对时钟脉冲的计数来实现。通过程序可以改变计数值,也就改变了定时时间。同时可编程定时器具有定时和计数功能。,7.1.2 定时器/计数器的结构,MCS-51系列单片机有两个16位的定
2、时器,分别为T0和T1。它们都有定时和事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。,T0由两个8位特殊功能寄存器TH0和TL0构成;T1由TH1和TL1构成。T0、T1由软件设置为定时器工作方式或计数方式及其他灵活多样的可控功能方式。T0、T1的功能都由特殊功能寄存器TMOD和TCON所控制。,AT89C51定时器结构:,定时器工作方式:每个机器周期使定时器(T0或T1)的数值加1直至计数溢出。,计数器工作方式:在每个机器周期的S5P2期间采样T0和T1引脚,若某一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。最高计数频率为振荡频率的1/24。,8位寄存器
3、TMOD和TCON,用来设置T0和T1的操作模式和控制功能。当系统复位时,两个寄存器所有位被清0。,72 定时器/计数器的控制,GATE C/T M1 M0 GATE C/T M1 M0,1.工作模式寄存器TMOD(89H,不能位寻址只能由字节设置定时器工作模式),定时器T0工作模式定义,M1、M0:工作模式控制位(定义4 种方式):,0 0:模式0 13位定时器作用不大0 1:模式1 16位定时器经常用到1 0:模式2 可自动重装的8位定时器经常用到1 1:模式3 T0分为2个8位定时器;T1不工作几乎无用,定时器T1工作模式定义,C/T:计数器/定时器选择位 0 片内时钟定时器。对机器周期
4、脉冲计数定时 1 外部事件计数器。对T0(T1)引脚的负脉冲计数;,GATE C/T M1 M0 GATE C/T M1 M0,T1,T0,GATE门控位:定时器可由软件与硬件两者控制 GATE=0 普通用法 定时器的启/停由软件对TR0(TR1)位写“1”/“0”控制,不管INT0、INT1的电平。,(89H),GATE=1 门控用法 INT0或INT1引脚为高电平且由软件使TR0或TR1置1时,才能启动定时器工作。,2.定时器控制寄存器TCON(88H,可位寻址),TF0(TF1):定时器0/1计数溢出标志位。=1 计数溢出;=0 计数未满 TF0(TF1)可用于申请中断或供CPU查询。在
5、进入中断服务程序时会自动清零;但在查询方式时必须软件清零。,TR0(TR1):定时器0/1运行控制位。=1 启动计数;=0 停止计数 在程序中用指令“SETB TR1”使TR1位置1,定时器T1便开始计数。,IT0,IE0,IT1,IE1,TR0,TF0,TR1,TF1,88H,89H,8AH,8BH,8CH,8DH,8EH,8FH,定时器T0/T1 中断申请过程,在已经开放T0/T1中断允许且已被启动的前提下:T0/T1加满溢出时 TF0/TF1标志位自动置“1”检测到TCON中TF0/TF1变“1”后,将产生指令:LCALL 000BH/LCALL 001BH 执行中断服务程序,TF0/T
6、F1标志位会自动清“0”,以备下次中断申请。,定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数,7.3 定时器计数器的四种工作模式及应用,1.模式0及应用(以T0为例),振荡器,12,TL0 TH0(5位)(8位),TF0,申请中断,TR0,GATE,INT0端,1,&,C/T=0,C/T=1,控制=1开关接通,或门,与门,T0引脚,M0(0),M1(0),C/T,定时器(T0或T1)的高8位和低5位(其余三位为0)组成一个13位定时器/计数器。当TL0的低5位溢出时,向TH0进位;TH0溢出时,向中断标志位TF0进位(硬件置TF0),并申请中断。,C/T=0
7、时定时器工作方式,控制开关接通振荡器12分频输出端,T0对机器周期计数。其定时时间为:t=(213T0初值)X振荡周期X 12 当C/T=1时作外部事件计数器,控制开关使引脚T0(P3.4)与13位计数器相连,外部计数脉冲下降沿使计数器加1。,0,1,1,GATE=0时,INT0信号无效。B点电位取决于TR0的状态,于是,由TR0一位就可控制计数开关K,开启或关断T0。若软件使TR0置1,便接通计数开关K,启动T0在原值上加1计数,直至溢出。若TR0=0,则关断计数开关K,停止计数。,GATE=1时,必须 INT0=1且TR0=1时,B点才是高电平,计数开关K闭合,T0开始计数。INT0由1变
8、0时,T0停止计数。,设定时器T0工作于模式0,定时时间为1ms,fosc=6MHZ。试确定T0的初值,计算最大定时时间T。解:当T0为工作模式0时,加1计数器为13位。设T0的初值为X。则(213X)1/(6106)12=110-3S(213X)12/6=1000 X=7692转换为二进制数:X=1111000001100B T0的低5位:01100B=0CH T0的高 8位:11110000B=F0HT0的最大定时时间应于13位计数器各位全为1,即(TH0)=FFH,(TL0)=1FH。即X=0。则 T=21312/6MHZ=16.384ms,例1:,利用T0工作于模式0产生1ms的定时,
9、在P1.0引脚上输出周期为2ms的方波。设单片机晶振频率fosc=12MHZ。解:(1)选择工作模式 要在P1.0引脚上输出周期为2ms的方波,只要使P1.0每隔1ms取反一次即可。T0模式字为TMOD=00H,即T0模式0,为定时状态,不受INT0控制,TR0作为开关。(2)计算1ms定时时T0的值 设T0的计数初值为X,则(213X)110-6s=1 X 10-3 X=7192D=11100000 11000B=E018H TH0初值为E0H,TL0初值为18H。,例2:,(3)查询方式 查询方式在定时器计数过程中,CPU要不断查询溢出标志位TF0的状态。这就占用了很多CPU的工作时间,使
10、CPU的效率下降。程序清单:MOV TMOD,#00H;设置T0为模式0 MOV TL0,#18H;送初值 MOV TH0,#0E0H;SETB TR0;启动T0LOOP:JBC TF0,NEXT;查询定时时间到期否?SJMP LOOPNEXT:MOV TL0,#18H;重装时间常数 MOV TH0,#0E0H;CPL P1.0;输出取反 SJMP LOOP;重复循环,#includemain()P1_0=0;TMOD=0X00;TL0=0X18;TH0=0XE0;TR0=1;while(1)if(TF0=1)TF0=0;TL0=0X18;TH0=0XE0;P1_0=P1_0;,(4)定时器溢
11、出中断程序程序清单如下:主程序:MAIN:MOV TMOD,#00H;设置T0模式0 MOV TL0,#18H;送初值 MOV TH0,#0E0H;SETB EA;CPU开中断 SETB ET0;T0中断允许 SETB TR0;启动T0HERE:SJMP HERE;等待中断,返回主程序中断服务程序:ORG 000BH;T0中断的入口 AJMP CTC0;跳转CTC0:MOV TL0,#18H;重装初值 MOV TH0,#0E0H;CPL P1.0;输出方波 RETI;中断返回,#includemain()P1_0=0;TMOD=0X00;TL0=0X18;TH0=0XE0;EA=1;ET0=1
12、;TR0=1;while(1);void inte_T0()interrupt 1TL0=0X18;TH0=0XE0;P1_0=P1_0;,振荡器,12,TL0 TH0(8位)(8位),TF0,申请中断,TR0,GATE,INT0端,1,&,C/T=0,C/T=1,控制=1开关接通,或门,与门,T0引脚,M0(1),M1(0),C/T,2、模式1及其应用(以T0为例),TH0/TL0赋初值:TH0赋高8位,TL0赋低8位,TMOD选方式:写“M1,M0”=01 选方式1,若不用门控位,直接用软件写TR0控制T0计数启/停 若使用门控位,先置位TR0,然后由INT0端的高/低电平来控制其启/停,
13、若要允许中断,还须先置位ET0、EA等中断允许控制位,并编写中断服务程序 若不用中断,可查询“计数溢出标志TF0”的方式工作,但溢出标志TF0须软件清0,与模式0唯一的差别是:在模式1中,寄存器TH0和TL0是以全部16位参与操作。用于定时工作方式时,定时时间为:t=(216T0初值)X 振荡周期X 12用于计数方式时,计数长度为:216=65536(个外部脉冲),例3:用定时器T1产生一个50HZ的方波,由P1.1输出的方波波形如图7.3-3所示。仍使用程序查询方式,fosc=12MHZ。,解:方波周期T=1/50HZ=0.02s=20ms,用T1定时10ms。计数初值X为:X=21612
14、X 10 X 1000/12=6553610000=55536=0D8F0H源程序如下:MOV TMOD,#10H;T1模式1,定时 SETB TR1;启动T1LOOP:MOV TH1,#0D8H;装入T1计数初值 MOV TL1,#0F0H JNB TF1,$;T1没有溢出等待 CLR TF1;产生溢出清标志位 CPL P1.1;P1.1取反 SJMP LOOP;循环,#includemain()P1_1=1;TMOD=0 x10;TH1=0XD8;TL1=0XF0;TR1=1;while(1)if(TF1)TR1=0;TF1=0;TH1=0XD8;TL1=0XF0;P1_1=P1_1;TR
15、1=1;,分析:已知fosc=6MHz 则:(振荡周期)1Tc=1/6MHz(机器周期)1Tm=12Tc=12/6MHz=2S 粗略地说:Tmin 2S 16位定时器最大数值为:216=65536=0FFFFH+1 故选择方式 1 工作可以得到:Tmax=655362=131072S131.072mS,若晶振频率为6MHz,计算单片机的最小与最大定时时间:,附录:,振荡器,12,TR0,GATE,INT0端,1,&,C/T=0,C/T=1,控制=1开关接通,或门,与门,T0引脚,M0(0),M1(1),C/T,TL0(8位),TF0,申请中断,TH0(8位),溢出位,门开,三、模式2及应用(以
16、T0为例),16位计数器被拆成两个,TL0作8位计数器,TH0用以保存初值。TL0计数溢出量,不仅使TF0置1,而且还把TH0中的内容重新装入TL0中,继续计数,循环重复。在程序初始化时,TL0和TH0由软件赋予相同的初值。在定时器工作方式时,其定时时间(TF0溢出周期)为:t=(28TH0初值)X 振荡周期X 12 在计数方式时,最大的计数长度为28=256(个外部脉冲)。这种工作模式可省去用户软件中重装常数的语句,并可产生相当准确的定时时间,特别适用于串行口波特率发生器。,例4:当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500s的同步脉冲。请编写程序实现该功能。,解:(1)模式
17、选择 选T0为模式2,对外部事件计数方式。当P3.4引脚上出现负脉冲,T0计数器加1,TF0置1;使T0为500s定时工作方式,并使P1.0输出由1变为0。T0定时到产生溢出,使P1.0恢复高电平,T0恢复外部事件计数方式。,如图7.3-5所示。,(2)计算初值 T0工作在外部事件计数方式,当计数器初值为0FFH时,再加1计数器就会溢出。T0工作在定时器方式时,设晶体振荡频率为6MHZ,500s相当于250个机器周期。因此,初值X为(28X)2s=500sX=28250=6=06H,(3)程序清单START:MOV TMOD,#06H;设置T0为模式2,外部计数方式 MOV TH0,#0FFH
18、;T0计数初值 MOV TL0,#0FFH SETB TR0;启动T0计数LOOP1:JBC TF0,PTF01;查询T0溢出标志,TF0=1时转移 JMP LOOP1;TF0=0等待PTF01:CLR TR0;停止计数 MOV TMOD,#02H;设置T0模式2,定时器方式 MOV TH0,#06H;T0定时500s初值 MOV TLO,#06H CLR P1.0;P1.0清0 SETB TR0;启动定时500sLOOP2:JBC TF0,PTF02;查询溢出标志,定时到TF0=1转移 SJMP LOOP2;TF0=0等待PTF02:SETB P1.0;P1.0置 1(到了第一个500s)C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系列 单片机 定时器 计数器

链接地址:https://www.31ppt.com/p-5811526.html