定时器用法.doc

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

定时器用法 一、定时器相关寄存器 和定时器有关的寄存器都在下面了。 TCON 的高4位 TF1 TR1 TF0 TR0 TF1(TCON.7):定时器1的溢出中断标志位 TR1(TCON.6):定时器1的运行控制位 TF0(TCON.5):定时器0的溢出中断标志位 TR0(TCON.4):定时器0的运行控制位 TMOD GATE1 C/T1 M1 M0 GATE0 C/T0 M1 M0 定时器1 | 定时器0 TH0、TL0、TH1、TL1 这个不用说了吧 中断允许控制寄存器IE中的三位。 ET0(IE.1)、ET1(IE.4)、EA(IE.7) 定时器的结构(以T0为例) 把定时器分为六个部分来研究。 脉冲源 控制端 计数器 中断请求位 中断允许控制 中断服务程序 晶振或T0 TH0、TL0 TF0 ET0 EA void Tm0() interrup1 using 1 脉冲源:用作定时器时,取晶振作为脉冲源。每12个振荡周期(即一个机器周期)计数器(即TH0、TL0)加一。用作计数器时T0脚出现下降沿(管脚从1到0)跳变时,计数器加一。定时器与计数器的区别就是脉冲源不同,除此之外其他的工作过程完全相同。 配置TMOD的C/T0可以选择脉冲源。置0是定时器,置1是计数器。 控制端:相当于一个开关,开关打开时,脉冲源的信号才能传到计数器(TH0,TL0)中,计数器会不断增一。关闭这个开关,脉冲源的信号不能使计数器(TH0,TL0)增一。控制端的开启与关闭状态由TR0、GATE0与INT0脚电平决定。控制端的开启条件是TR0(~GATE0 | INT0)如下图。 图片:11.jpg 控制端的开启条件是TR0(~GATE0 | INT0)如图。 一般情况下 令TR0=1 GATE0=0 开启控制端。TR0=0关闭控制端。 当需要INT0引脚控制计数器时 令TR0=1 GATE0=1 这样INT0脚为高电平时计数,低电平时停止计数,这样可以很方便的测量脉冲宽度。在任何一本51书中的定时器部分都有详述。也可以使用本文配套的小软件,来体会控制端的逻辑。GATE=1的这种用法,我以前也没有注意过,在整理本文时才发现的。这也是我最新的学习收获。 计数器,中断请求位:这里说的计数器是指TH0、TL0这两个寄存器。 每收到一个脉冲源输出的脉冲,这个计数器就会增一。计数器计满溢出时,会置位TF0,产生中断请求。注意,这里只是产生中断请求,是否能够进入中断程序,还要由中断允许位决定。 直接对TF0置位,也可以产生中断请求。 计数器TH0、TL0一共有四种计数方式 方式0(M1=0 M0=0)13位计数器。它由TH0的8位与TL0的低5位构成。TL0大于0x1F时就向TH0进位。TH0计满溢出就向TF0置位请求中断。 方式1(M1=0 M0=1)16位计数器。和方式1差不多。由TH0的8位与TL0的8位构成。TH0计满溢出就向TF0置位请求中断 方式2(M1=1 M0=0)8位定时器。TL0计满溢出时,置位TF0请求中断,并且将TH0中的数值重新装入TL0中。 方式3(M1=1 M0=1)这个方式只有定时器0有,把定时器0当成两个8位定时器来用。这部分很有趣,你可以使用演示软件研究。 定时器1没有方式3,如果设成方式3就相当于停掉了定时器1。 中断允许控制:上一步产生中断请求(TF0被置1),并不代表会响应中断。还要看中断允许控制位,这是一个开关,只有开关在开启状态,中断才会响应。每个中断源都有自己的分开关,比如T0的中断允许位是ET0,T1的中断允许位是ET1.还有一个总开总EA,它关闭时所有的中断都被禁止。必须是分开关与总开关都打开时,才能进入中断服务程序。 图片:开定时器.jpg 开定时器 图片:关定时器.jpg 关定时器 开启与关闭定时器控制端,你可以点击小软件来体会逻辑关系。 中断服务程序:如果中断条件都允许,程序跳转到中断服务程序。 ORG 0000 AJMP Main ORG 000BH LJMP Tim0 ORG 100H Main: MOV SP,#30H MOV TMOD,#01H MOV TH0,#0EEH MOV TL0,#00H SETB ET0 SETB EA SETB TR0 WHILE: 。。。主程序 LJMP WHILE TIM0:;TIMER0中断服务程序 PUSH A

文档评论(0)

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

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

1亿VIP精品文档

相关文档