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

下载本文档

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

文档简介

任务三流水灯定时控制,任课教师:李靖,教学内容MCS-51的中断系统MCS-51的定时器/计数器教学目标掌握中断技术的应用掌握定时器/计数器的应用,本任务,本讲主要内容,控制系统中实现定时,1、软件定时延时函数2、硬件定时例如:5553、可编程定时器例如:8253DS1302,MCS51子系列:T0、T1MCS52子系列:T0、T1、T2,可实现定时、计数功能,有利于实时控制不占用CPU时间定时精度高,修改方便,AT89S系列有看门狗计数器(WatchDogTimer),一种计数装置计数内部的时钟脉冲定时器计数外部的脉冲计数器在应用时可采用中断方式,也可采用查询方式,8051的定时器/计数器(timer/counter),一、定时/计数器的结构及工作原理,1、定时/计数器的结构,结构组成部分,两个16位的二进制定时/计数器T0、T1T0/T1分别由两个8位的计数器组成,均属SFR寄存器T0由TH0、TL0构成,字节地址为8CH、8AHT1由TH1、TL1构成,字节地址为8DH、8BH相关的控制寄存器方式寄存器TMOD控制寄存器TCON,2、定时/计数器的工作原理,定时功能对片内机器周期进行计数,即每个机器周期产生一个计数脉冲,计数加1。实时控制、实时采样、定时控制等,计数功能对片外从T0(P3.4)、T1(P3.5)引脚输入的外部脉冲信号进行计数,下降沿计数加1。计数频率为晶振频率的1/24生产线上产品计数、检测电机转速等功能,定时/计数器初值预置,初值X的计算方法设定时器/计数器最大值为M,计数值为N,初值为X,晶振频率fosc,则计数器初始值:XMN定时器初始值:XM定时时间/Tcy,问1:要求检测到100个脉冲,发中断请求,如何设置初值?,问2:定时器/计数器为8位加1计数器,要求每隔0.1ms,发一次中断请求(机器周期1us),如何设置初值?,定时功能,初值156,计数功能,初值156,二、方式寄存器和控制寄存器,1、方式控制寄存器TMODSFR寄存器,地址89H设定T0、T1的工作方式只能字节寻址,Timer1,Timer0,定时/计数模式选择位,功能选择位,门控位,定时器工作方式选择,M1和M0工作方式选择位,功能选择位和门控位,C/定时/计数功能选择位为“0”,定时器为“1”,计数器GATE:门控位,定义T1/T0的启动方式为0,非门控方式(内部启动):TR0/1=1,启动定时器工作TR0/1=0,停止定时器工作为1,门控方式(外部启动)TR0/1=1且引脚INT0/1=1才启动,2、状态控制寄存器TCON,SFR寄存器,地址88H即参与定时控制又参与中断控制与定时控制相关的有4位,TF1/TF0:当T1/T0计数溢出时,该位置1,TR1/TR0:T1/T0运行控制位。置1:启动T1/T0,二、方式寄存器和控制寄存器,1、工作方式0M1M0=?作定时器:TMOD=?作计数器:TMOD=?,三、定时器/计数器工作方式,00000000=0 x0000000100=0 x04,13位计数器TH:8位TL:低5位,高3位不用,00,方式0的工作原理,定时器/计数器初始化编程,定时器/计数器有两种应用方式:,1.设定工作方式(对TMOD写工作方式控制字)2.装入初值(TH0/TL0或TH1/TL1)3.启动定时器/计数器(置位TR0/TR1)4.中断设定(置位ET0/ET1、EA、IP)5.中断服务函数,1.-3.同中断方式的1-34.判断定时器/计数器的标志位TF1/TF0为1或0,以决定程序流程,中断方式查询方式,方式0的应用,计数初值最大计数值为213=8192定时时间:T=(213-T0的初值)Tcy计数个数:C=213-T0的初值,方式0使用范例1,解:1)TMOD初始化2)计数初值3)启动4)中断?查询,例1:已知单片机晶振频率6MHz,利用T0的方式0在P1.0引脚输出周期为500us的方波,计数初值=213-欲计数脉冲数=213-T/Tcy=213-250/2=1F83HTH1=0 xfc,TL1=0 x03,中断方式程序清单,#includesbitP10=P10;voidmain()TMOD=0;TH0=0 xfc;TL0=0X03;TR0=1;EA=1;ET0=1;while(1),voiditr_timer0(void)interrupt1P10=P10;TH0=0 xfc;TL0=0 x03;,采用查询方式如何编程?,方式0使用范例2,例2:单片机晶振频率12MHz,利用T1的方式0实现1s延时,每隔1s时间P1.0引脚翻转一次,#includesbitP10=P10;unsignedintc=200;voidmain()TMOD=0;TH1=0 x63;TL1=0X18;TR1=1;EA=1;ET1=1;,while(1)voiditr_timer1(void)interrupt3c-;if(!c)c=200;P10=!P10;TH1=0 x63;TL1=0 x18;,2、工作方式1M1M0=?作定时器:TMOD=?作计数器:TMOD=?,三、定时器/计数器工作方式,00000001=0 x0100000101=0 x05,16位计数器TH:8位TL:8位,01,16位计数器,逻辑结构框图如下:,2、工作方式1,三、定时器/计数器工作方式,方式1使用范例,例1:已知单片机晶振频率6MHz,利用T0的方式1在P1.0引脚输出周期为500us的方波,例2:单片机晶振频率12MHz,利用T1的方式1实现1s延时,每隔1s时间P1.0引脚翻转一次,3、工作方式2M1M0=?作定时器:TMOD=?作计数器:TMOD=?,三、定时器/计数器工作方式,00000010=0 x0200000110=0 x06,自动重装载的8位计数器,10,问题:从图中可以看出来哪个寄存器是计数寄存器,哪个寄存器始终存放的是计数初值?,方式2使用范例,某啤酒自动生产线,需要每生产12瓶执行装箱操作,将生产出的啤酒自动装箱,用单片机实现该控制要求。,分析:如果啤酒生产线上装有传感装置,每检测一瓶啤酒就向单片机发送一个脉冲信号,使用计数功能就可实现该控制要求。选定用T1,方式2使用范例,某啤酒自动生产线,需要每生产12瓶执行装箱操作,将生产出的啤酒自动装箱,用单片机实现该控制要求。,1)TMOD初始化2)计数初值3)启动4)中断初始化设置5)中断服务函数,TMOD0 x60;TH1=TL1=0 xf4;TR11;EA=1;ET1=1;voidisr_time1(void)interrupt3,源程序见下页,方式2使用范例,#includesbitp37=P37;voidmain()TMOD=0 x60;TH1=0 xf4;TL1=0Xf4;TR1=1;EA=1;ET1=1;P37=1;while(1);,/驱动电机转动的程序voidisr_timer1(void)interrupt3inti,time=600;P37=0;/驱动电机转动while(time-)/假设装箱时间固定for(i=500;i0;i-);P37=1;/装箱结束电机停止转动,4、工作方式3-只有T0有此工作方式M1M0=?作定时器:TMOD=?作计数器:TMOD=?,三、定时器/计数器工作方式,00000011=0 x0300000111=0 x07,T0为2个8位计数器:TH0,TL0T1停止计数,等价于执行了TR1=0;,11,T0和T1的设置和使用不同,4.工作方式3,仅作定时器用!,T0两个8位的计数器TL0:使用T0原有控制资源(C/T、GATE、TR0、TF0、P3.4脚、INT0脚,功能与方式0/1相同TH0:占用T1的TR1、TF1及T1的中断,只能对片内机器周期脉冲计数,作8位定时器T0初值计算同方式2,4、工作方式3,T0工作方式3时T1的工作:,T0方式3时,T1仍然可工作于方式02,C/控制位仍可使T1工作在定时器或计数器方式,只是由于其TR1、TF1被T0的TH0占用,因而没有计数溢出标志可供使用,计数溢出时只能将输出结果送至串行口,即用作串行口波特率发生器。T0工作在方式3时,T1可工作于方式2,因定时初值能自动恢复,用作波特率发生器更为合适。若要停止T1,只需送一个设其为方式3的方式字。,4、工作方式3,方式3使用范例,例:已知系统晶振12MHz,试用定时器0的方式3实现1s的延时,TMOD初始化设置初值TH0作为定时器,定时时间250us;初值28250=06HTL0作为计数器,计数200次;初值28200=38H引进变量使TL0计数满后该变量加1,直至20则为1s,#includesbitP00=P00;sbitP34=P34;unsignedcharcount;voiddelay();main()TMOD=7;TH0=0 x06;TL0=0 x38;TR0=1;TR1=1;while(1)P00=P00;delay();,voiddelay()count=0;while(count8;TL0=-50000;TR0=1;EA=1;ET0=1;P0=cword;while(1);,voidisr_time0()interrupt1TH0=-500008;TL0=-50000;cword=_crol_(cword,1);P0=cword;,单片机控制流水灯,要求:8只发光二极管以1s间隔循环点亮。已知:系统晶振为6MHz。,分析:TCY?工作方式0、1、2、3下定时时间最多为多少?能不能先定时一个较小的时间,再循环适当的次数,从而实现1s延时?,单片机控制流水灯,voidisr_time0()interrupt1TH0=0 x3c;TL0=0 xb0;count-;if(count=0)output=1;if(output!=0 xfe)output|=1;P1=output;count=10;,#includeunsignedcharcount=10,output=0 xfe;voidmain()TMOD=1;TH0=0 x3c;TL0=0 xb0;TR0=1;EA=1;ET0=1;P1=output;while(1),空调制冷系统案例,输出口启停压缩机,定时检测室内温度,按键中断设温度,输出口显示温度,练习,定时器/计数器的工作方式通过()寄存器编程设定定时器/计数器1的中断号为()若晶振为6MHz,定时器/计数器最大的定时时间是()8位自动重装载的定时器/计数器工作在方式()单片机振荡频率为6MHz,定时器/计数器工作在方式1需要定时1ms,则定时器初值应为(),作业:,1、已知晶振为12MHz,试编程使8051的P1.0和P1.1分别输出周期为2ms和500ms的方波2、已知晶振为6MHz,试用T0作为外部计数器,编程实现每当计数到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,如此反复循环。,上机:,P98工作单3-1(1)要求:带电路板及杜邦线,上机1:,要求用定时器/计数器实现每0.25s接在P1口的8个LED变换一次亮灯方式。亮灯方式为1357灯2468灯,补充:看门狗(watchdog)定时器,1、作用外界电磁场的干扰,造成单片机程序跑飞,陷入死循环,程序的正常运行被打断,整个系统停滞。“看门狗”可以对单片机运行状态进行实时监测。2、原理系统运行后若启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定

温馨提示

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

最新文档

评论

0/150

提交评论