- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章定时计数器2015
MOV TH0,#06H ;重置定时初值 MOV TL0,#06H SETB P1.1 ; P1.1置1 CLR P1.0 ; P1.0清0 SETB TR0 ; 启动定时计数器 DEL2: JBC TF0, RESP2 ;检测第一次500us到否 AJMP DEL2 RESP: SETB P1.0 ;P1.0恢复1 DEL3: JBC TF0,RESP3 ;检测第二次500us到否 AJMP DEL3 RESP3: CLR P1.1 ; P1.1复0 CLR TR0 AJMP BEGIN 6.4.4 门控位的应用 门控位GATE为1时,TRx=1,INTx=1才能启动定时器。利用这个特性可以测量外部输入脉冲的宽度。 例7-4 利用T0门控位测试 INT0引脚上出现的正脉冲宽度,已知晶振频率为12MHz,将所测得值最高位 存入片内71H单元,低位存入70H单元。 解:设外部脉冲 由(P3.2)输入,T0工作于定时方式 1 (16位计数),GATE设为1。测试时,应在INT0 低电平时,设置TR0为1(16位计数);当INT0 变为高电平时,就启动计数; 再次变低时,停止计数。此计数值与机器周期的乘积即为被测正脉冲的宽度。因fosc=12MHZ,机器周期为1us,测试过程如下。 源程序如下: MOV TMOD,#09H ; 设T0为方式1 MOV TL0,#00H ;设计初值取最大值 MOV TH0,#00H MOV R0,#70H JB P3.2, $ ;等P3.2(INT0 )变低 SETB TR0 ;启动T0准备工作 JNB P3.2, $ ;等待P3.2(INT0 ) JB P3.2,$ ; 等待P3.2(INT0 ) CLR TR0 ;停止计数 T0从0 开始计数 INT0 09H (TMOD) 1 TR0 0 TR0 T0停止计数 MOV @R0,TL0 ;存放结果 INC R0 MOV @R0,TH0 SJMP $ 读者不难编出C语言程序。这种方案被测脉冲的宽度最大为65535个机器周期。由于靠软件启动和停止计数,有一定的测量误差。其可能的最大误差与指令的执行时间有关。 此例中,在读取定时器的计数之前,已把它停住。但在某些情况下,不希望在读计数值时打断定时的过程,由于我们不可能在同一时刻读取THX和TLX的内容。读取一个时恰好另一个产生溢出,在这种情况下,读取的计数值有可能是错的。可以解决错读的方法是: 先读THX后读TLX,若两次读得的THx没有发生变化,则可确定读到的内容是正确的。若前后两次读到的THx有变化,则再重复上述过程,重复读到的内容就应该是正确的了。下面是按此…思路编写的程序段,读到的TH0 和TL0放在R1和R0内: RP:MOV A,TH0; MOV R0,TL0; CJNE A,TH0,RP; MOV R1,A … … … … 6. 6 小 结 定时计数器应用非常广泛,如定时采样、时间测量、产生音响、作脉冲源、制作日历时钟、测量波形的频率和占空比、检测电机转速等。因此应很好掌握。 51系列单片机既有两个16位的定时计数器,有四种不同的工作方式,归纳于下表: 28=256 =100H 28=256 =100H 216=65536 =10000H 213=81
文档评论(0)