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

上传人:小小飞 文档编号:3838038 上传时间:2019-09-28 格式: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、硬件定时 例如:555 3、可编程定时器 例如:8253 DS1302,MCS51子系列:T0、T1 MCS52子系列:T0、T1、T2,可实现定时、计数功能,有利于实时控制 不占用CPU时间 定时精度高,修改方便,AT89S系列有看门狗计数器 (WatchDog Timer),一种计数装置 计数内部的时钟脉冲定时器 计数外部的脉冲计数器 在应用时可采用中断方式, 也可

2、采用查询方式,8051的定时器/计数器(timer/counter),一、定时/计数器的结构及工作原理,1、定时/计数器的结构,结构组成部分,两个16位的二进制定时/计数器T0、T1 T0/T1分别由两个8位的计数器组成,均属SFR寄存器 T0由TH0、TL0构成,字节地址为8CH、8AH T1由TH1、TL1构成,字节地址为8DH、8BH 相关的控制寄存器 方式寄存器TMOD 控制寄存器TCON,2、定时/计数器的工作原理,定时功能 对片内机器周期进行计数,即每个机器周期产生一 个计数脉冲,计数加1。 实时控制、实时采样、定时控制等,计数功能 对片外从T0(P3.4)、T1(P3.5)引脚输

3、入的外部脉冲信号进行计数,下降沿计数加1。计数频率为晶振频率的1/24 生产线上产品计数、检测电机转速等功能,定时/计数器初值预置,初值X的计算方法 设定时器/计数器最大值为M, 计数值为N, 初值为X, 晶振频率fosc,则 计数器初始值: XMN 定时器初始值: XM定时时间/Tcy,问1:要求检测到100个脉冲,发中断请求,如何设置初值?,问2:定时器/计数器为8位加1计数器,要求每隔0.1ms,发一次中断请求(机器周期1us),如何设置初值?,定时功能,初值156,计数功能,初值156,二、方式寄存器和控制寄存器,1、方式控制寄存器TMOD SFR寄存器,地址89H 设定T0、T1的工

4、作方式 只能字节寻址,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

5、/TR0:T1/T0运行控制位。置1:启动T1/T0,二、方式寄存器和控制寄存器,1、工作方式0 M1M0= ? 作定时器:TMOD= ? 作计数器:TMOD= ?,三、定时器/计数器工作方式,00000000=0x00 00000100=0x04,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

6、.同中断方式的1-3 4.判断定时器/计数器的标志位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=1F83H TH1=0xfc,TL1=0x03,中断方式程序清单,#include sbit P1

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

8、 EA=1; ET1=1;,while(1) void itr_timer1(void) interrupt 3 c-; if(!c) c=200; P10=!P10; TH1=0x63; TL1=0x18; ,2、工作方式1 M1M0= ? 作定时器:TMOD= ? 作计数器:TMOD= ?,三、定时器/计数器工作方式,00000001=0x01 00000101=0x05,16位计数器 TH:8位 TL:8位,01,16位计数器,逻辑结构框图如下:,2、工作方式1,三、定时器/计数器工作方式,方式1使用范例,例1:已知单片机晶振频率6MHz,利用T0的方式1在P1.0引脚输出周期为500u

9、s的方波,例2:单片机晶振频率12MHz,利用T1的方式1实现1s延时,每隔1s时间P1.0引脚翻转一次,3、工作方式2 M1M0= ? 作定时器:TMOD= ? 作计数器:TMOD= ?,三、定时器/计数器工作方式,00000010=0x02 00000110=0x06,自动重装载的8位计数器,10,问题:从图中可以看出来哪个寄存器是计数寄存器,哪个寄存器始终存放的是计数初值?,方式2使用范例,某啤酒自动生产线,需要每生产12瓶执行装箱操作,将生产出的啤酒自动装箱,用单片机实现该控制要求。,分析:如果啤酒生产线上装有传感装置,每检测一瓶啤酒就向单片机发送一个脉冲信号,使用计数功能就可实现该控

10、制要求。选定用T1,方式2使用范例,某啤酒自动生产线,需要每生产12瓶执行装箱操作,将生产出的啤酒自动装箱,用单片机实现该控制要求。,1)TMOD初始化 2)计数初值 3)启动 4)中断初始化设置 5)中断服务函数,TMOD0x60; TH1=TL1=0xf4; TR11; EA=1; ET1=1; void isr_time1(void) interrupt 3 ,源程序见下页,方式2使用范例,#include sbit p37=P37; void main( ) TMOD=0x60; TH1=0xf4; TL1=0Xf4; TR1=1; EA=1;ET1=1; P37=1; while(1

11、); ,/驱动电机转动的程序 void isr_timer1(void) interrupt 3 int i,time=600; P37=0; /驱动电机转动 while(time -)/假设装箱时间固定 for(i=500;i0;i-); P37=1; /装箱结束电机停止转动 ,4、工作方式3 -只有T0有此工作方式 M1M0= ? 作定时器:TMOD= ? 作计数器:TMOD= ?,三、定时器/计数器工作方式,00000011=0x03 00000111=0x07,T0为2个8位计数器:TH0,TL0 T1停止计数,等价于执行了TR1=0;,11,T0和T1的设置和使用不同,4.工作方式3

12、,仅作定时器用!,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,因定时初值能自动恢复,用

13、作波特率发生器更为合适。若要停止T1,只需送一个设其为方式3的方式字。,4、工作方式3,方式3使用范例,例:已知系统晶振12MHz,试用定时器0的方式3实现1s的延时,TMOD初始化 设置初值 TH0作为定时器,定时时间250us; 初值28250=06H TL0作为计数器,计数200次; 初值28200=38H 引进变量 使TL0计数满后该变量加1,直至20则为1s,#include sbit P00=P00; sbit P34=P34; unsigned char count; void delay(); main() TMOD=7; TH0=0x06;TL0=0x38; TR0=1;TR

14、1=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=0x38; TF0=0; count+; ,案例6 以定时方式控制简单流水灯,已知系统晶振6MHz,采用定时器T0的工作方式1实现延时,控制P0口的8只发光二极管以100ms的间隔循环点亮。,定时器/计数器控制流水灯,定时器T0初值: 定时时间:tmax=655362s=131.072,取100ms T0 的 初值:=216-100000s/2

15、s =15536 =3CB0H TMOD =0000 0001B =01H,#include #include void isr_time0(void); unsigned char cword=0x01; void main() TMOD=1; TH0=-500008; TL0=-50000; TR0=1;EA=1;ET0=1; P0=cword; while(1); ,void isr_time0() interrupt 1 TH0=-500008; TL0=-50000; cword=_crol_(cword,1); P0=cword; ,单片机控制流水灯,要求:8只发光二极管以1s间隔

16、循环点亮。 已知:系统晶振为6MHz。,分析:TCY?工作方式0、1、2、3下定时时间最多为多少?能不能先定时一个较小的时间,再循环适当的次数,从而实现1s延时?,单片机控制流水灯,void isr_time0() interrupt 1 TH0=0x3c; TL0=0xb0; count-; if(count=0) output=1; if(output!=0xfe) output|=1; P1=output; count=10; ,#include unsigned char count=10, output=0xfe; void main() TMOD=1; TH0=0x3c; TL0=

17、0xb0; 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作

18、为外部计数器,编程实现每当计数到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,如此反复循环。,上机:,P98 工作单3-1(1) 要求:带电路板及杜邦线,上机1:,要求用定时器/计数器实现每0.25s接在P1口的8个LED变换一次亮灯方式。 亮灯方式为1357灯2468灯,补充:看门狗(watchdog)定时器,1、作用 外界电磁场的干扰,造成单片机程序跑飞,陷入死循环,程序的正常运行被打断,整个系统停滞。 “看门狗”可以对单片机运行状态进行实时监测。 2、原理 系统运行后若启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗。,补充:看门狗(watchdog)定时器,3、89S51的看门狗 由一个14位定时器及WDTRST(地址为0xA6)寄存器构成。 预置状态为停用(disable) 4、用法 在头文件中增加: sfr WDTRST = 0xA6; 初始化激活: WDTRST=0x1E; WDTRST=0xE1;/初始化看门狗 在WDT溢出前重置: WDTRST=0x1E; WDTRST=0xE1;/喂狗指令,

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

当前位置:首页 > 高中教育


经营许可证编号:宁ICP备18001539号-1