(单片机原理、接口技术及应用)第6章MCS-51系列单片机的定时器计数器.ppt

(单片机原理、接口技术及应用)第6章MCS-51系列单片机的定时器计数器.ppt

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.1 定时器/计数器结构 6.2 定时器/计数器的初始化 6.3 定时器/计数器的应用 习题与思考题 6.1.1 定时器/计数器的工作原理与控制寄存器   1.定时器/计数器的工作原理   MCS-51单片机内部有两个16位可编程的定时器/计数器,既可用作定时器方式,又可用作计数器方式。定时器/计数器有四种工作模式,其工作方式的选择及控制都由两个特殊功能寄存器(TMOD和TCON)的内容来决定。   当特殊功能寄存器TMOD决定定时器/计数器工作于定时状态时,此时输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器也可看做是对计算机机器周期的计数器(因为每个机器周期包含12个振荡周期,故每一个机器周期定时器加1,可以把输入的时钟脉冲看成机器周期信号),故其定时计数频率为晶振频率的1/12。如果晶振频率为12?MHz,则定时器每接收一个输入脉冲的时间为1?μs,即在此脉冲频率下,定时器计数初值加1。   当它用作对外部事件计数时,接相应的外部输入引脚T0(P3.4)或T1(P3.5)。在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1(它在每个机器周期的S5P2时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,则计数器加1)。加1操作发生在检测到这种跳变后的一个机器周期中的S3P1,因此需要两个机器周期来识别一个从“1”到“0”的跳变,故最高计数频率为晶振频率的1/24。这就要求输入信号的电平要在跳变后至少应在一个机器周期内保持不变,以保证在给定的电平再次变化前至少被采样一次。   8051单片机的定时或计数,以及开始启动功能是由内部的特殊功能寄存器某些位控制的,当计数溢出时,产生溢出标志,进行中断请求。其工作原理如图6-2所示。    2.定时器/计数器的控制寄存器   1) 定时器/计数器的方式寄存器TMOD   特殊功能寄存器TMOD为定时器的方式控制寄存器,字节地址为89H,其格式如下:   寄存器中每位的定义如下(高4位用于定时器1,低4位用于定时器0):   ① ?M1,M0:定时器/计数器四种工作模式选择如表6-1所示。   2) 定时器控制寄存器TCON   特殊功能寄存器TCON用于控制定时器的操作及对定时器中断的控制,字节地址为88H,位地址是88H~8FH(TCON.0~TCON.7)。TCON寄存器中与定时、计数有关的位如下所示:   2.模式1   模式1和模式0的工作相同,唯一的差别是TH0和TL0组成一个16位计数器。工作结构图可以参考图6-3。   3.模式2   模式2把TL0配置成一个可以自动恢复初值(初始常数自动重新装入)的8位计数器,TH0作为常数缓冲器,TH0由软件预置值。当TL0产生溢出时,一方面使溢出标志TF0置1,同时又把TH0中的8位数据重新装入TL0中。   模式2常用于定时控制,作为串行口波特率发生器。图6-4给出了定时器/计数器T0在模式2时的工作结构图(T1与此相同,略)。   图6-5给出了定时器/计数器T0在模式3时的工作结构图。   通常,当T1用作串行口波特率发生器时,T0才定义为模式3,以增加一个8位计数器。   (3) 根据需要给中断允许寄存器IE选送中断控制字和给中断优先级寄存器IP选送中断优先级字,以开放相应中断和设定中断优先级。   (4) 给定时器控制寄存器TCON送命令字,以启动或禁止定时器/计数器的运行。   2.计数器初值的计算   定时器/计数器可用软件随时随地启动和关闭,启动时它就自动加1计数,一直计到满,即全为1,若不停止,计数值从全1变为全0,同时将计数溢出位置1并向CPU发出定时器溢出中断申请。对于各种不同的工作模式,最大的定时时间和计数数值不同。这里在使用中就会出现两个问题:   一是要产生比定时器最长的定时时间还要短的时间和计数器最多的计数次数还要少的计数次数;   二是要产生比定时器最长的定时时间还要长的时间和计数器最多的计数次数还要多的计数次数。   解决第一个问题只要给定时器/计数器一个非零初值,开定时器/计数器时,定时器/计数器不从0开始,而是从初值开始,这样在定时方式时就可得到比定时器/计数器最长的定时时间还要短的时间和比定时器/计数器最多的计数次数还要少的计数次数。解决第二个问题就要用到循环程序了,循环几次就相当于乘几。例如,要产生1?s的定时,可先用定时器产生50?ms的定时,再循环20次(因为1?s?=?1000?ms),也可用其他的组合。有时也可采用中断来实现。由上可见,解决问题的基本出路在于初值的计算,下面就来具体讨论计数器的初值计算和最大值的计算。   根据13位定时器/计数器特性,先把低5位0CH送TL0,TL0的高三位置零,高8位F0H送至

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档