第5章-MCS-51的定时器计数器..ppt_第1页
第5章-MCS-51的定时器计数器..ppt_第2页
第5章-MCS-51的定时器计数器..ppt_第3页
第5章-MCS-51的定时器计数器..ppt_第4页
第5章-MCS-51的定时器计数器..ppt_第5页
免费预览已结束,剩余48页可下载查看

下载本文档

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

文档简介

第5章MCS 51的定时 计数器 本章内容 5 1定时 计数器的结构5 2定时 计数器的功能5 3定时 计数器的工作方式和控制寄存器5 4定时 计数器的4种工作方式5 5定时 计数器的设计举例 5 1定时 计数器的结构 图4 4定时 计数器的结构框图 5 2定时 计数器的功能 T0和T1增量式 下降沿计数各位全都为1时 再输入一个脉冲溢出 回零TF0或TF1置位 发中断申请定时与计数的不同 时钟脉冲信号定时 内部的时钟振荡器计数 外部引脚 1 计数功能 原理对外部事件计数计数脉冲来自引脚T0 P3 4 或T1 P3 5 负跳变 由1变成0 时 计数值增加1对外部输入脉冲的要求被采样的电平至少要维持一个机器周期 否则会漏计数最高计数频率 晶振频率的1 24 2 定时功能 原理通过计数实现计数脉冲内部时钟脉冲每个机器周期 计数值加1定时时间 计数值 机器周期 5 3定时 计数器的工作方式和控制寄存器 1 方式寄存器TMOD2 控制寄存器TCON 不可位寻址 可位寻址 1 方式寄存器TMOD 表4 2定时 计数器工作方式设置表 C T定时器方式或计数器方式选择位C T 1 计数器C T 0 定时器 GATE门控标志位GATE 1TR0 TR1 1且 INT0 或 INT1 高电平 才工作用于测量 INT0 或 INT1 端出现的正脉冲的宽度GATE 0TR0 TR1 1 就工作 2 控制寄存器TCON TF0 TF1溢出标志位计满溢出时 由硬件置1中断响应后 硬件自动清0TR1 TR0运行控制位软件置1后 开始工作系统复位时 清0 5 4定时 计数器的4种工作方式 T04种 方式0 1 2 3T13种 方式0 1 2设置为方式3 将停止工作作为串行通信口的波特率发生器 方式2 1 方式0 TMOD的M1M0为0013位计数 TL0的低5位 高3位未用 TH0的8位TL0的低5位溢出时 向TH0进位TH0溢出时 置位TCON中的TF0标志 发出中断请求 计数个数M与计数初值NM 213 N213 溢出时的计数值定时时间tt M 机器周期 213 N 机器周期N 213 t 机器周期计数初值N 8191 0计数范围 1 8192 2 方式1 TMOD的M1M0为0116位 TL0 TH0计数个数M与计数初值N M 216 N定时时间t M 机器周期计数初值N 65535 0 计数范围 1 65536 3 方式2 TMOD的M1M0为10自动重装初值的8位计数方式 TL0 8位定时 计数器 TH0 8位初值寄存器计数个数M与计数初值N M 28 N定时时间t M 机器周期计数初值N 255 0 计数范围 1 256 较精确的脉冲信号发生器T1在方式2 作为波特率发生器 定时器 计数器的初值计算 设计数器计数的最大值 M计数值 N初值 XX的计算方法 计数状态 X M N 定时状态 X M 定时时间 TT 12 晶振频率 4 方式3 TMOD的M1M0为11只适用于T0T0分成为两个独立的8位计数器TL0 TH0 TL0 定时器和计数器占用T0的控制位TH0 定时器仅借用T1的TR1 TF1不受门控 启 停受TR1控制溢出时 置位TF1 T1 只能作定时器 波特率发生器原则上 仍可按方式0 1 2工作不能使用TR1和TF1 也不能发出中断请求方式设定后 自动运行 要停止工作 只需设定为方式3T1溢出判断通过在线 飞读 TH1和TL1 判断是否溢出 串行通信应用中T1 串行口波特率发生器 工作于方式2T0 工作于方式3可充分利用单片机的定时 计数器资源 5 5定时 计数器的设计举例 51单片机的定时 计数器 常工作于中断场合应用设计步骤 1 计算定时 计数器的初值 2 主程序中 初始化定时 计数器的初始化中断初始化TH0 TL0 TH1 TL1 TMOD TCON IP IE 3 中断服务程序设计 例1 方式1 利用定时 计数器T0的方式1 产生一个50Hz的方波 此方波由P1 0引脚输出 晶振频率为12MHz 思路 f 50Hz 则其周期为T 1 50 0 02s计满0 01s P1 0输出0 再计满0 01S P1 0输出1T0产生0 01s定时 实现方法查询方式 查TF0标志中断方式 中断服务程序 解题步骤 1 定时0 01s的初值计算机器周期 12 12MHz 1 s0 01s内T0需要计数N次N 0 01s 1 s 0 01 10 6 10000若用方式1的16位计数器 T0的初值X为X M N 216 10000 55536 2 T0的TMOD的初始化GATE 0 C T 0 M1M0 01 即 T0的方式1 3 实现方法查询的方法和中断的方法 实现方法 1 查询方式查询T0的TF0 为1 定时时间到 对P1 0取反操作缺点 占用CPU ORG0000HLJMPMAIN 跳转到主程序ORG0100H 主程序MAIN MOVTMOD 01H 置T0工作于方式1LOOP MOVTH0 0D8H 装入计数初值MOVTL0 0F0HSETBTR0 启动定时器T0JNBTF0 TF0 0 定时时间未到 等待CLRTF0 TF0 1 定时时间到 清TF0CPLP1 0 P1 0取反输出SJMPLOOPEND 2 中断方式定时到 TF0 1 向CPU申请中断 CPU响应中断后 执行中断程序 中断程序中对P1 0取反操作 ORG0000HLJMPMAIN 跳转到主程序ORG000BH T0的中断入口地址LJMPT0 INT 转向中断服务程序ORG0100HMAIN MOVTMOD 01H 置T0工作于方式1MOVTH0 0D8H 装入计数初值MOVTL0 0F0HSETBET0 T0开中断SETBEA CPU开中断SETBTR0 启动T0 继续执行主程序其它部分SJMP 等待中断 T0 INT P1 0取反输出CPLP1 0 重装入计数初值MOVTH0 0D8HMOVTL0 0F0H 中断返回RETIEND T0 INT 重装入计数初值MOVTH0 0D8HMOVTL0 0F0H P1 0取反输出CPLP1 0 中断返回RETIEND 例2 方式1 利用定时 计数器T1产生一个1Hz的方波 此方波由P0 0引脚输出 晶振频率为6MHz思路 f 1Hz T 1s此题转化为由定时器产生 0 5s定时 机器周期 12 6MHz 2 10 6s65536 2 10 6s 0 131072s 131072 s 0 5s定时 实现方法T1 方式1完成100ms定时在中断程序里设置一个 软时钟 即一个CLOCK 30H内存单元每中断一次 CLOCK加1 CLOCK累计5次 即0 5s 对P0 0取反操作 解题步骤 1 确定初值N计数值M t Tcy 100 10 3 2 10 6 50000N 216 M 65536 50000 15536 3CB0H即应将3CH送入TH1 0B0送入TL1中 2 初始化控制字TMODGATE 0 C T 0 M1M0 01 即 T1的方式1 实现程序 伪指令 LEDBITP0 0CLOCKDATA30H 主程序入口地址 ORG0000HLJMPMAIN 跳转至主程序 中断入口地址 ORG001BHLJMPT1 INT 跳转至T1中断服务程序 ORG0030HMAIN 中断初始化 MOVTMOD 10HMOVTH1 3CH 装入计数初值MOVTL1 0B0HSETBET1 开放T1中断SETBEA 开放总中断SETBTR1 启动T1时钟 继续执行主程序其它部分SJMP 等待中断 T1中断服务程序 T1 INT PUSHACC 保护现场PUSHPSWCLRTR1MOVTH1 3CH 重新装入计数初值MOVTL1 0B0HSETBTR1INCCLOCK 软时钟加1MOVA CLOCKCJNEA 5 TMPLTMPL JCRETURN 不到0 5s返回CPLLED 到0 5s闪烁变换MOVCLOCK 0 软时钟清零RETURN POPPSWPOPACCRETIEND 例3 方式2 利用定时 计数器T0产生一个1kHz的方波 此方波由P0 0引脚输出 晶振频率为6MHz机器周期 12 6MHz 2 10 6s思路 f 1kHz T 1ms此题转化为由定时器产生 500 s定时 500 s定时 实现方法T0 方式2即自动重装初值的8位计数方式开放T0中断 在中断程序里对P0 0取反操作 解题步骤 1 计数初值N计数值M t Tcy 500 10 6 2 10 6 250N 28 M 256 250 06H06H送入TH0和TL0 2 初始化控制字TMODGATE 0 C T 0 M1M0 10 即 T0的方式2 实现程序 伪指令 LEDBITP0 0 主程序入口地址 ORG0000HLJMPMAIN 跳转至主程序 中断入口地址 ORG00BHLJMPT0 INT 跳转至T1中断服务程序 ORG0100HMAIN 中断初始化 MOVTMOD 02HMOVTH0 06H 装入计数初值MOVTL0 06HSETBET0 开放T0中断SETBEA 开放总中断SETBTR0 启动T0时钟 继续执行主程序其它部分SJMP 等待中断 T0中断服务程序 T0 INT CPLLED 不需重新装入计数初值RETIEND 定时 计数器门控位GATE的应用 当GATE 0时定时 计数器的运行只受控于 TR0 或TR1 当GATE 1时定时 计数器的运行受控于 TR0 和TR1 和INT0 或INT1 在TR0 1 或TR1 1 时若INT0 1 或INT1 1 则启动计数 若INT0 0 或INT1 0 则停止计数 可以利用这一点测试外部输入脉冲的宽度 例4 GATE 1 利用T0的门控位GATE 编程实现检测外部输入脉冲的宽度 INT0 P3 2 TMOD 09HTH0 TL0 00h 等待INT0变低电平后TR0 1 T0开始计时 计时开始 计时停止 T0停止计时 源程序 ORG00hMOVTMOD 09H 设置T0为方式1 定时方式工作 GATE 1MOVTL0 00H 设计数初值为0MOVTH0 00HMOVR0 30H 地址指针送R0JBP3 2 等待INT0变低SETBTR0 启动定时器JNBP3 2 等待INT0变高电平JBP3 2 启动计数 并等待INT0再次变低CLRTR0 停止计数器MOV R0 TL0 读取计数值INCR0MOV R0 TH0 读取计数值SJMP END 不足 如果机器周期为1 12MHZ 则这种方法的最大被测脉冲宽度为65 536微秒由于靠软件启动和停止计数 有一定的测量误差 其中最大可能的误差由指令的时序确定 ORG0000HLJMPMAINORG000BHLJMPDVT0ORG0030HMAIN CLRR1 DVT0 INCR1RETI 定时 计数器用于外部中断扩展 扩展方法将定时 计数器设置为计数器方式计数初值设定为满程将待扩展的外部中断源接到定时 计数器的外部计数引脚从该引脚输入一个下降沿信号 计数器加1后便产生定时 计数器溢出中断 例5 定时 计数器扩展外部中断 利用T0扩展一个外部中断源步骤将T0设置为计数器方式 按方式2工作TH0 TL0的初值均为0FFHT0允许中断 CPU开放中断初始化程序MOVTMOD 06H 置T0为计数器方式2MOVTL0 0FFH 置计数初值MOVTH0 0FFHSETBEA CPU开中断SETBET0 允许T0中断SETBTR0 启动T0工作 例6 定时 计数器对外部事件计数 利用T1对外部事件计数要求计1000个脉冲后 点亮指示灯指示灯低电平点亮晶振频率为12MHz 解题步骤 计数方式计数初值N计数值M 1000N 216 M 65536 1000 FC18HGATE 0 C T 1 M1M0 01 ledbitP1 0 红灯org00h 主程序入口ljmpmainorg001Bh 定时器1中断入口地址ljmpi t1org030hmain setbled red 点亮红灯movtmod 51h T1工作在方式1 用于计数movTH1 0FCh 设定时器初值movTL1 018h 设定时器初值setbet1 中断T1允许setbea 总中断允许setbTR1 定时器T1开始计数sjmp 等待中断i t1 clrledclrTR1 定时器T1计数停止reti 中断返回end 小结 两个T C定时 计数四种工作方式 重点是方式1 2两个控制寄存器 TMOD TCON初值的计算典型应用作业 P123 5 8 5 9 5 10 例7 方式3 只适用于 定时器T02个8位定时器 计数器TH0借用了定时器T1的溢出中断标志TF1运行控制位TR1 例 假设有一个用户系统中 已经使用了两个外部中断源置定时器T1于方式2 作串行口波特率发生器用P1 0口输出一个5Hz的方波现要求 再增加一个外部中断源 假设 晶振频率6MHz 解题思路 1 在不增加其它硬件开销时 可把定时器 计数器T0置于工作方式3 利用外部引脚T0端作附加的外部中断输入端 2 把TL0预置为0FFH 这样在T0端出现由1至0的负跳变时 TL0立即溢出 申请中断 相当于边沿激活的外部中断源 3 在方式3下 TH0总是作8位定时器用 可以靠它来控制由P1 0输出的5kHz方波 4 置定时器T1于方式2 作串行口波特率发生器 解题步骤 1 由TH0控制 使P1 0输出的电平每隔100 s发生一次变化 TH0中的初始值X M N 256 100 2 206 2 TL0预置为0FFH 这样在T0端出现由1至0的负

温馨提示

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

最新文档

评论

0/150

提交评论