流水灯定时控制定时器计数器.ppt_第1页
流水灯定时控制定时器计数器.ppt_第2页
流水灯定时控制定时器计数器.ppt_第3页
流水灯定时控制定时器计数器.ppt_第4页
流水灯定时控制定时器计数器.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

任务三流水灯定时控制 任课教师 李靖 教学内容mcs 51的中断系统mcs 51的定时器 计数器教学目标掌握中断技术的应用掌握定时器 计数器的应用 本任务 本讲主要内容 控制系统中实现定时 1 软件定时 延时函数2 硬件定时例如 5553 可编程定时器例如 8253ds1302 mcs 51子系列 t0 t1mcs 52子系列 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 则计数器初始值 x m n定时器初始值 x m 定时时间 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 1f83h th1 0 xfc tl1 0 x03 中断方式程序清单 includesbitp10 p1 0 voidmain tmod 0 th0 0 xfc tl0 0x03 tr0 1 ea 1 et0 1 while 1 voiditr timer0 void interrupt1 p10 p10 th0 0 xfc tl0 0 x03 采用查询方式如何编程 方式0使用范例2 例2 单片机晶振频率12mhz 利用t1的方式0实现1s延时 每隔1s时间p1 0引脚翻转一次 includesbitp10 p1 0 unsignedintc 200 voidmain tmod 0 th1 0 x63 tl1 0x18 tr1 1 ea 1 et1 1 while 1 voiditr timer1 void interrupt3 c 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 中断服务函数 tmod 0 x60 th1 tl1 0 xf4 tr1 1 ea 1 et1 1 voidisr time1 void interrupt3 源程序见下页 方式2使用范例 includesbitp37 p3 7 voidmain tmod 0 x60 th1 0 xf4 tl1 0xf4 tr1 1 ea 1 et1 1 p37 1 while 1 驱动电机转动的程序voidisr timer1 void interrupt3 inti time 600 p37 0 驱动电机转动while time 假设装箱时间固定for i 500 i 0 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仍然可工作于方式0 2 c 控制位仍可使t1工作在定时器或计数器方式 只是由于其tr1 tf1被t0的th0占用 因而没有计数溢出标志可供使用 计数溢出时只能将输出结果送至串行口 即用作串行口波特率发生器 t0工作在方式3时 t1可工作于方式2 因定时初值能自动恢复 用作波特率发生器更为合适 若要停止t1 只需送一个设其为方式3的方式字 4 工作方式3 方式3使用范例 例 已知系统晶振12mhz 试用定时器0的方式3实现1s的延时 tmod初始化设置初值th0作为定时器 定时时间250us 初值28 250 06htl0作为计数器 计数200次 初值28 200 38h引进变量使tl0计数满后该变量加1 直至20则为1s includesbitp00 p0 0 sbitp34 p3 4 unsignedcharcount voiddelay main tmod 7 th0 0 x06 tl0 0 x38 tr0 1 tr1 1 while 1 p00 p00 delay voiddelay count 0 while count 20 while tf0 0 while tf1 0 p34 0 th0 6 tf1 0 p34 1 tl0 0 x38 tf0 0 count 案例6以定时方式控制简单流水灯 已知系统晶振6mhz 采用定时器t0的工作方式1实现延时 控制p0口的8只发光二极管以100ms的间隔循环点亮 定时器 计数器控制流水灯 定时器t0初值 定时时间 tmax 65536 2 s 131 072 取100mst0的初值 216 100000 s 2 s 15536 3cb0htmod 00000001b 01h include includevoidisr time0 void unsignedcharcword 0 x01 voidmain tmod 1 th0 50000 8 tl0 50000 tr0 1 ea 1 et0 1 p0 cword while 1 voidisr time0 interrupt1 th0 50000 8 tl0 50000 cword crol cword 1 p0 cword 单片机控制流水灯 要求 8只发光二极管以1s间隔循环点亮 已知 系统晶振为6mhz 分析 tcy 工作方式0 1 2 3下定时时间最多为多少 能不能先定时一个较小的时间 再循环适当的次数 从而实现1s延时 单片机控制流水灯 voidisr time0 interrupt1 th0 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

提交评论