延时子程序算法详解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
延时子程序算法详解

x延时子程序算法详解 在利用MCS-51汇编语言编写单片机应用程序的时候,经常会用延时子程序来配合主程序功能的实现。大部分的延时子程序采用由MOV、NOP、DJNZ指令构成的多重循环程序来实现,然而由于个人编程思路的不同,表现出延时子程序的多样性,使得延时子程序的计算呈现出不定性和复杂性。尤其对于初学者来说,编制一段易于扩展、易于移植的延时程序,掌握延时程序延时长度的计算有一定的困难,因此,研究软件延时程序的模块化、时间长度计算的公式化显得十分必要。笔者在教学过程中,总结出延时程序编写模式(模块)和计算方法,以供广大读者参考。 所举的例子全部假设晶振频率为12MHz ,机器周期为1μS。 单重循环延时程序 该延时程序总的延迟时间为 t = R7 *2 +3 =100 * 2 +3 = 203 μS ≈ 200 μS 两重循环延时程序 该延时程序总的延迟时间为 t =(R7 * 2 + 3)* R6 + 3 =(125*2+3)* 200 + 3 = 50603 μS ≈ 50 mS 三重延时程序 该延时程序总的延迟时间 t = [(R7 * 2 + 3)* R6 + 3 ] * R5 + 3 =[(125 *2 +3) * 200 + 3 )] * 100 + 3 =5060.303 mS ≈5 S 由上面例子我们可概括出一般循环延时程序的结构: 上述程序的计算公式没有考虑调用延时程序的指令所占用的机器周期,在对于时间精度要求较高的情况下,必须将该调用指令所占用的时间考虑进去。ACALL、L CALL都占用2个机器周期,所以上述公式最后需加上2 μS 。 若对时间精度要求不高,可以将上述公式简化如下: t = 循环1次数 * 循环2次数 * 循环3次数 * … * 循环n次数 * 2 μS 。设计循环次数时,尽可能使内循环次数大,外循环次数小,这样采用简化公式计算时,可减小定时误差。

文档评论(0)

zhanghc + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档