微机接口 ppt Lecture09定时器计数器.ppt_第1页
微机接口 ppt Lecture09定时器计数器.ppt_第2页
微机接口 ppt Lecture09定时器计数器.ppt_第3页
微机接口 ppt Lecture09定时器计数器.ppt_第4页
微机接口 ppt Lecture09定时器计数器.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

MCS 51的定时器 计数器 2 学习目的及要求 熟悉MCS 51片内两个16位定时器 计数器T0和T1的硬件结构及其与CPU的关系 掌握T0和T1的两种工作方式 即计数方式与定时方式 四种工作模式 即计数器长度 牢记TMOD和TCON各位的含义 学会定时器控制及应用方法掌握定时器的四种模式的应用 3 计数概念的引入 从选票的统计谈起 画 正 这就是计数 生活中计数的例子处处可见 例 录音机上的计数器 家里用的电度表 汽车上的里程表等等 4 计数器的容量 单片机中的计数器有多大的容量呢 8051单片机中有两个计数器 分别称之为T0和T1 这两个计数器分别是由两个8位的RAM单元组成的 即每个计数器都是16位的计数器最大的计数量是65536 5 定时的概念 8051中的计数器除了可以作为计数之用外 还可以用作时钟 时钟的用途当然很大 如打铃器 电视机定时关机 空调定时开关等等 那么计数器是如何作为定时器来用的呢 一个闹钟 我将它定时在1个小时后闹响 换言之 也可以说是秒针走了 3600 次 所以时间就转化为秒针走的次数的 也就是计数的次数了 可见 计数的次数和时间之间的确十分相关 那么它们的关系是什么呢 那就是秒针每一次走动的时间正好是1秒 6 计数与定时 1 只要计数脉冲的间隔相等 则计数值就代表了时间的流逝 单片机中的定时器和计数器是同一个事物 只不过计数器是记录的外界发生的事情 而定时器则是由单片机提供一个非常稳定的计数源 那么提供给定时器的计数源是什么呢 是由单片机的晶振经过12分频后获得的一个脉冲源 问题 一个12M的晶振 它提供给计数器的脉冲时间间隔是多少呢 结论 计数脉冲的间隔与晶振有关 12M的晶振 12M 12等于1M 计数脉冲的间隔是1微秒 7 图1由单片机的晶振经过12分频后获得的一个脉冲源 计数与定时 2 T1引脚 P3 5 以T1计数 定时器为例 定时脉冲源 计数脉冲源 8 A TMP PSW B SP DPTR RAM PC ROM P1 P2 P3 P0 定时 中断 串口 IR PLA ID 振荡 X1X2 PSENRSTALEEA P0P1P2P3 ALU 外接晶振 产生时钟信号 控制CPU的工作速度 51系统下 最高12MHz 晶振与时钟周期 9 溢出的概念 水滴的例子 当水不断落下 盆中的水位不断升高 最终有一滴水使得盆中的水满了 这时如果再有一滴水落下 就会发生什么现象 水会漫出来 用个术语来讲就是 溢出 水溢出是流到地上 计数器溢出后将使得TCON寄存器中的TF0 TF1变为 1 一旦TF0 TF1由0变成1 就是产生了变化 产生了变化就会引发事件 就象定时的时间一到 闹钟就会响一样 现在我们来研究另一个问题 要有多少个计数脉冲才会溢出 即使TF0 TF1由0变为1 10 任意定时及计数的方法 刚才已讲过 计数器的容量是16位 也就是最大的计数值到65536 因此计数计到65536就会产生溢出 这个没有问题 问题是我们现实生活中 经常会有少于65536个计数值的要求 如包装线上 一打为12瓶 一瓶药片为100粒 怎么样来满足这个要求呢 提示 如果是一个空的盆要1万滴水滴进去才会满 我在开始滴水之前就先放入一勺水 还需要10000滴嘛 我们采用预置数的方法 我要计100 那我就先放进65436 再来100个脉冲 不就到了65536了吗 定时也是如此 每个脉冲是1微秒 则计满65536个脉冲需时65 536毫秒 但现在我只要10毫秒就可以了 怎么办 10个毫秒为10000个微秒 所以 只要在计数器里面放进55536就可以了 11 定时 计数器的方式控制字 单片机中的定时 计数器都可以有多种用途 那么我怎样才能让它们工作于我所需要的用途呢 这就要通过定时 计数器的方式控制字来设置 在单片机中有两个特殊功能寄存器与定时 计数有关 这就是TMOD和TCON TMOD和TCON是名称 我们在写程序时就可以直接用这个名称来指定它们 当然也可以直接用它们的地址89H和88H来指定它们 12 MCS 51定时 计数器 51系列内部有2个16位的定时 计数器T0 T1 52系列内部有3个16位的定时 计数器T0 T1 T2 定时 计数器的可编程特性 确定其工作方式是定时还是计数 预置定时或计数初值 当定时时间到或计数终止时 要不要发中断请求 如何启动定时或计数器工作 上页 下页 回目录 T2 可编程 可编程的 13 结构组成 T0由两个8位的TH0 8CH 和TL0 8AH 组成 T1由两个8位的TH1 8DH 和TL1 8BH 组成软件设置 计数初值 对TH1 TL1 TH0 和TL0的初始化编程 将它们设置成不同的工作方式 其计数长度 最大值 和计数方式都可变化 T0和T1都是16位的加1计数器 定时 计数器 T0和T1 的组成 14 CPU TCON 88H TMOD 89H 定时 计数器逻辑结构 上页 下页 回目录 定时 计数器的结构与工作原理 15 定时 计数器的工作方式 计数 定时 值 中断控制等都是由程序设定的特殊功能寄存器 TMOD 定时器方式控制寄存器 TCON 定时器控制寄存器 定时 计数器的控制方式 16 89H TMOD 控制T1 控制T0 门控位 功能选择位 工作方式选择00方式001方式1方式2方式3 方式寄存器TMOD GATE 0与 INTx无关1受 INTx限制 17 T1 P3 5 GATE TR1 INT1 TF1 中断 K 控制 计数方式的控制逻辑 A B 1 以T1为例 计数器 1 1 中断开放 定时 计数的启动受TCON寄存器中TR0 TR1 位的控制GATE起辅助作用 GATE 0 TR0 TR1 1启动计数GATE 1 还需 INT0和 INT1 1才能启动计数利用门控信号 可以来测量接在INT1端的正脉冲宽度 定时方式 C T 0 计数脉冲来自单片机的内部振荡脉冲的12分频计数方式 C T 1 计数器的时钟来自引脚T1 计数方式的控制逻辑 18 88H TCON T1 T0启 停控制位 T1 T0溢出标志位 0 停止 1 启动 1 有溢出 0 无溢出 可编程可控制 1 工作 记录有无溢出 控制寄存器TCON 溢出则申请中断中断响应后自动复0 19 0禁止 1允许 0禁止 1允许 总中断 总中断 中断 中断 IE A8H CPU IE的相应位被置 0 或 1 该相应中断即被 禁止 或 开放 中断允许控制寄存器IE与定时器中断有关的控制位 中断的允许或禁止是由片内的中断允许寄存器IE控制的 20 工作模式功能模式013位计数器模式116位计数器模式2可自动装入计数初值的8位重装计数器模式3T0分为两个8位计数器 T1停止计数 8031内部定时 计数工作方式 21 13位的定时计数器 由TH的8位和TL的低5位组成 TL4 0 工作过程 根据定时 计数值装入初值开始计数后 计数器按加法计数器工作计数器溢出时回到全0状态 计数或定时不再按预设值继续进行计数溢出时还产生中断申请信号 模式0 22 若要求计数值为1000 计数的初值应为213 1000 7192换算为二进制数为1110000011000 13位计数器 装入的计数初值13位二进制数 11100000 00011000 THTL初值高8位初值低5位 实际所置的初值应为 1110000000011000 模式0 23 模式0的应用 例1 试利用T0产生周期为1ms 宽度为一个机器周期的负脉冲串 并由P1 0送出假设系统晶振为12MHz 则计数周期为1 s 若计数器的初值为X 则要求1x10 3 213 C x1x10 6故X 7192 1110000011000B 其中高8位赋给TH0 低8位赋给TL0 所以TH0 0E0H TL0 18H 24 采用查询方式MOVTMOD 00H 设置定时器0模式0MOVTH0 0E0H 定时器高8位初值MOVTL0 18H 定时器低8位初值SETBTR0 启动定时器0T0INT JNBTF0 T0INT CLRTF0CLRP1 0SETBP1 0MOVTH0 0E0H 用软件重新装载TH0和TL0MOVTL0 18HSJMPT0INT 25 采用中断方式ORG0000HAJMPMAINORG000BHAJMPT0INTORG0100HMAIN MOVTMOD 00HMOVTH0 0E0H 送定时初值MOVTL0 18HMOVIE 82H 允许T0中断EA 1 ET0 1SETBTR0 启动定时器0LOOP SJMPLOOPORG0200HT0INT CLRP1 0 送负脉冲SETBP1 0MOVTH0 0DDH 用软件重新赋初值MOVTL0 18HRETIEND 26 16位的定时计数器 由TH的8位和TL的8位组成 工作过程 同方式0计数初值 高8位写入TH 低8位写入TL 若要求计数值为58344 计数的初值应为216 58344 7192换算为二进制数为0001110000011000 00011100 00011000 THTL初值高8位初值低8位 模式1 27 模式1的应用 例2 利用定时器0产生25Hz的方波 由P1 0口输出 假设CPU不做其他工作 采用查询方式进行控制 设晶振频率为12MHz 1 定时or计数 2 定时长度 3 运用哪种定时器工作模式 4 定时器初值 28 模式1的应用 查询方式下 ORG0000HAJMPMAINORG0100HMAIN MOVTMOD 01HMOVTH0 0B1HMOVTL0 0E0HSETBTR0LOOP JNBTF0 CLRTF0MOVTH0 0B1HMOVTL0 0E0HCPLP1 0SJMPLOOPEND 请写出中断方式下的程序 29 可自动重装载的8位计数器 TL为8位计数器 装入初值并启动后按8位加法计数器工作TH为8位寄存器 计数初值也装入TH当低8位计数器溢出时 除了可以申请中断 还将TH保存的内容向TL重新装入 以便于TL重新计数可连续计数 但计数长度有限 只有28 256 模式2 30 模式2的应用 例3 利用T1模式2进行计数 每计200次进行累加器加1操作计算计数器初值为28 200 56D 38H采用查询方式 31 ORG0000HAJMPMAINORG0100HMAIN MOVTMOD 60H 设置定时器1模式2MOVTH0 38H 保存计数初值MOVTL0 38H 设置计数初值SETBTR1 启动定时器1DEL JBCTF1 LOOP 查询是否计数溢出AJMPDELLOOP INCA 累加器加1AJMPDEL 循环END 请写出中断方式下的程序 32 定时器 计数器的编程和应用 编程步骤 使用定时器 计数器首先对其进行初始化 确定工作方式 即根据题目要求给TMOD送方式控制字 计算计数初值 定时初值 并写入TH0 TL0或TH1 TL1中 根据需要 对寄存器IE置初值 开放定时器中断 对TCON寄存器中的TR0或TR1置位 启动定时器 计数器 计数器即按规定的工作模式和初值进行计数或开始定时 33 设需要计数器计数的个数为X 计数初值为C 由此可得出如下计算计数初值的通式 计数初值 C M X式中 M为计数器的最大值 该值和计数器的工作方式有关 当方式0时M 当方式1时当方式2 3时 计数器初值的计算 34 在定时模式下 计数器对单片机振荡频率fosc经12分频后的机器周

温馨提示

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

评论

0/150

提交评论