流水灯定时控制定时器计数器.ppt

上传人:laozhun 文档编号:2676550 上传时间:2023-02-22 格式:PPT 页数:45 大小:781.53KB
返回 下载 相关 举报
流水灯定时控制定时器计数器.ppt_第1页
第1页 / 共45页
流水灯定时控制定时器计数器.ppt_第2页
第2页 / 共45页
流水灯定时控制定时器计数器.ppt_第3页
第3页 / 共45页
流水灯定时控制定时器计数器.ppt_第4页
第4页 / 共45页
流水灯定时控制定时器计数器.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《流水灯定时控制定时器计数器.ppt》由会员分享,可在线阅读,更多相关《流水灯定时控制定时器计数器.ppt(45页珍藏版)》请在三一办公上搜索。

1、任务三流水灯定时控制,任课教师:李靖,教学内容 MCS-51的中断系统 MCS-51的定时器/计数器 教学目标掌握中断技术的应用掌握定时器/计数器的应用,本任务,本讲主要内容,控制系统中实现定时,1、软件定时延时函数2、硬件定时例如:5553、可编程定时器例如:8253 DS1302,MCS51子系列:T0、T1MCS52子系列:T0、T1、T2,可实现定时、计数功能,有利于实时控制不占用CPU时间定时精度高,修改方便,AT89S系列有看门狗计数器(WatchDog Timer),一种计数装置计数内部的时钟脉冲定时器计数外部的脉冲计数器在应用时可采用中断方式,也可采用查询方式,8051的定时器

2、/计数器(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。计

3、数频率为晶振频率的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,定时/计数模式选

4、择位,功能选择位,门控位,定时器工作方式选择,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,二、方式寄存器和控制寄存器

5、,1、工作方式0 M1M0=?作定时器: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,以决定程序流程,中断方

6、式查询方式,方式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=1F83H TH1=0 xfc,TL1=0 x03,中断方式程序清单,#includesbit P10=P10;void main()TMOD=0;TH0=0 xfc;TL0=0X03;TR0=1;EA=1;ET0

7、=1;while(1),void itr_timer0(void)interrupt 1P10=P10;TH0=0 xfc;TL0=0 x03;,采用查询方式如何编程?,方式0使用范例2,例2:单片机晶振频率12MHz,利用T1的方式0实现1s延时,每隔1s时间P1.0引脚翻转一次,#includesbit P10=P10;unsigned int c=200;void main()TMOD=0;TH1=0 x63;TL1=0X18;TR1=1;EA=1;ET1=1;,while(1)void itr_timer1(void)interrupt 3c-;if(!c)c=200;P10=!P10

8、;TH1=0 x63;TL1=0 x18;,2、工作方式1 M1M0=?作定时器: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、工作方式2 M1M0=?作定时器:TMOD=?作计数器:TMOD=

9、?,三、定时器/计数器工作方式,00000010=0 x0200000110=0 x06,自动重装载的8位计数器,10,问题:从图中可以看出来哪个寄存器是计数寄存器,哪个寄存器始终存放的是计数初值?,方式2使用范例,某啤酒自动生产线,需要每生产12瓶执行装箱操作,将生产出的啤酒自动装箱,用单片机实现该控制要求。,分析:如果啤酒生产线上装有传感装置,每检测一瓶啤酒就向单片机发送一个脉冲信号,使用计数功能就可实现该控制要求。选定用T1,方式2使用范例,某啤酒自动生产线,需要每生产12瓶执行装箱操作,将生产出的啤酒自动装箱,用单片机实现该控制要求。,1)TMOD初始化2)计数初值3)启动4)中断初始

10、化设置5)中断服务函数,TMOD0 x60;TH1=TL1=0 xf4;TR11;EA=1;ET1=1;void isr_time1(void)interrupt 3,源程序见下页,方式2使用范例,#includesbit p37=P37;void main()TMOD=0 x60;TH1=0 xf4;TL1=0Xf4;TR1=1;EA=1;ET1=1;P37=1;while(1);,/驱动电机转动的程序void isr_timer1(void)interrupt 3int i,time=600;P37=0;/驱动电机转动while(time-)/假设装箱时间固定for(i=500;i0;i-

11、);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,

12、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作为计数器,

13、计数200次;初值28200=38H引进变量使TL0计数满后该变量加1,直至20则为1s,#includesbit P00=P00;sbit P34=P34;unsigned char count;void delay();main()TMOD=7;TH0=0 x06;TL0=0 x38;TR0=1;TR1=1;while(1)P00=P00;delay();,void delay()count=0;while(count20)while(TF0=0)while(TF1=0);P34=0;TH0=6;TF1=0;P34=1;TL0=0 x38;TF0=0;count+;,案例6 以定时方式控制

14、简单流水灯,已知系统晶振6MHz,采用定时器T0的工作方式1实现延时,控制P0口的8只发光二极管以100ms的间隔循环点亮。,定时器/计数器控制流水灯,定时器T0初值:定时时间:tmax=655362s=131.072,取100msT0 的 初值:=216-100000s/2s=15536=3CB0H TMOD=0000 0001B=01H,#include#includevoid isr_time0(void);unsigned char cword=0 x01;void main()TMOD=1;TH0=-500008;TL0=-50000;TR0=1;EA=1;ET0=1;P0=cwor

15、d;while(1);,void isr_time0()interrupt 1 TH0=-500008;TL0=-50000;cword=_crol_(cword,1);P0=cword;,单片机控制流水灯,要求:8只发光二极管以1s间隔循环点亮。已知:系统晶振为6MHz。,分析:TCY?工作方式0、1、2、3下定时时间最多为多少?能不能先定时一个较小的时间,再循环适当的次数,从而实现1s延时?,单片机控制流水灯,void isr_time0()interrupt 1 TH0=0 x3c;TL0=0 xb0;count-;if(count=0)output=1;if(output!=0 xfe

16、)output|=1;P1=output;count=10;,#includeunsigned char count=10,output=0 xfe;void main()TMOD=1;TH0=0 x3c;TL0=0 xb0;TR0=1;EA=1;ET0=1;P1=output;while(1),空调制冷系统案例,输出口启停压缩机,定时检测室内温度,按键中断设温度,输出口显示温度,练习,定时器/计数器的工作方式通过()寄存器编程设定定时器/计数器1的中断号为()若晶振为6MHz,定时器/计数器最大的定时时间是()8位自动重装载的定时器/计数器工作在方式()单片机振荡频率为6MHz,定时器/计数

17、器工作在方式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、作用 外界电磁场的干扰,造成单片机程序跑飞,陷入死循环,程序的正常运行

18、被打断,整个系统停滞。“看门狗”可以对单片机运行状态进行实时监测。2、原理 系统运行后若启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗。,补充:看门狗(watchdog)定时器,3、89S51的看门狗由一个14位定时器及WDTRST(地址为0 xA6)寄存器构成。预置状态为停用(disable)4、用法在头文件中增加:sfr WDTRST=0 xA6;初始化激活:WDTRST=0 x1E;WDTRST=0 xE1;/初始化看门狗 在WDT溢出前重置:WDTRST=0 x1E;WDTRST=0 xE1;/喂狗指令,

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号