第五章 mcs-51定时、计数器、串行口、中断系统.ppt

第五章 mcs-51定时、计数器、串行口、中断系统.ppt

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 mcs-51定时、计数器、串行口、中断系统

第五章MCS-51定时/计数器、串行口及中断系统 5.1 MCS-51定时/计数器 计数概念的引入1 生活中计数的例子处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等。再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。 计数器的容量1 从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计到999….那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。 计数与定时 8031中的计数器除了可以作为计数之用外,还可以用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢? 一个闹钟,将它定时在1个小时后闹响,换言之,也可以说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。 因此只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。 溢出1 让我们再来看水滴的例子,当水不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。这时如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。 水溢出是流到地上,而计数器溢出后将使得TF0变为“1”。至于TF0是什么我们稍后再谈。一旦TF0由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。至于会引发什么事件,我们下次课再介绍,现在我们来研究另一个问题:要有多少个计数脉冲才会使TF0由0变为1。 任意定时及计数的方法 刚才已研究过,计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。问题是在现实生活中,经常会有少于65536个计数值的要求,如包装线上,一打为12瓶,一瓶药片为100粒,怎么样来满足这个要求呢? 提示:如果是一个空的盆要1万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要10000滴嘛? 我们采用预置数的方法,要计数100次,那就先放进65436,再来100个脉冲,不就到了65536了吗。 定时也是如此,每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒。如果现在只要10毫秒定时怎么办? 10个毫秒为10000个微秒,所以,只要在计数器里面放进65536-10000=55536就可以了。 MCS-51中的16位可预置加法计数器 计数器真值表 5.1.2 MCS-51定时/计数器的组成 与定时/计数器相关的SFR 5.1.6 定时计数器总结 5.3 MCS-51单片机中断系统 中断过程 4)???? 查询方式: 还可以使CPU采用查询TF0的方式处理T/C0定时溢出,编程简单,但效率较低。 程序中查询采用JNB TF0,$ 指令,目的是当判到TF1=1后,必须用软件复位TF1,为下次计数器回零溢出做好准备,这条指令具有判TF1为1后清零的双重功能。 [例5-2] 利用GATE门控位测量从INT1引脚输入的正脉冲宽度。解:1. 确定工作方式 (1)送方式控制字 (TMOD)=1001 0000B=90H ; T/C1定时,方式1 ,GATE=1 。 (2)计算初值 由于被测正脉冲宽度未知, 假设宽度<= 65.536ms,fosc=12MHz ,则: 计数个数:X=65536(最大) 定时初值:C=65536-X=65536-65536=0, (TH1)=00H,(TL1)=00H。 (3)编程方法 对P3.3(INT1)引脚输入的脉冲采用查询的方法。 P3.3 (INT1) 被测脉宽 置1 TR1 TH1TL1从0开始计数 清0 TR1,停止T/C1计数 脉冲测试原理 ORG 0000H SJMP 0030H

文档评论(0)

sandaolingcrh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档