网站大量收购独家精品文档,联系QQ:2885784924

51单片机精确延时程序大集合.docVIP

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

51单片机精确延时程序大集合以下程序说是精确延时,实际上都不对。调用一次差个几微秒、几百微秒,一天下来差好几分钟。加我的QQ群有精确版本哦,不同频率的晶振都适用。群2008-04-24 12:10:26, 在论坛上看到不少不错的延时程序,整理如下共同分享: 精确延时计算公式: 延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5 ;延时5秒左右 DELAY5S:PUSH 04H;2个机器周期 PUSH 05H;2个机器周期 PUSH 06H;2个机器周期 MOV R4,#50;1个机器周期 DELAY5S_0:MOV R5,#200;1个机器周期 DELAY5S_1:MOV R6,#245;1个机器周期 DJNZ R6,$;2×245=490个机器周期 DJNZ R5,DELAY5S_1;这条2个机器周期,这层循环包含R5×(490+1)+2×R5=98600个机器周期 DJNZ R4,DELAY5S_0;这条2个机器周期 ,这层循环包含R4×(98600+1)+2×R4=4930150个机器周期 POP 06H;2个机器周期 POP 05H;2个机器周期 POP 04H;2个机器周期 RET;2个机器周期 ;(共2+2+2+1+4930150+2+2+2+2=4930165个机器周期 ) ;513微秒延时程序 DELAY: MOV R2,#0FEH;1个机器周期 JUZINAIYOU: DJNZ R2,JUZINAIYOU;2×R21即2×245 RET;2个机器周期 ;(实际上是493个机器周期) ;10毫秒延时程序 DL10MS: MOV R3,#14H DL10MS1:LCALL DELAY DJNZ R3,DL10MS1 RET ;(缺DELAY) ;0.1s延时程序12MHz DELAY: MOV R6,#250 DL1: MOV R7,#200 DL2: DJNZ R6,DL2 DJNZ R7,DL1 RET ;延时1046549微秒(12MHz) ;具体的计算公式是: ;((((r7*2+1)+2)*r6+1)+2)*r5+1+4 = ((r7*2+3)*r6+3)*r5+5 DEL : MOV R5,#08H DEL1: MOV R6,#0FFH DEL2: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DEL2 DJNZ R5,DEL1 RET ;1秒延时子程序是以12MHz晶振 Delay1S:mov r1,#50 del0: mov r2,#91 del1: mov r3,#100 djnz r3,$ djnz r2,del1 djnz r1,del0 Ret ;1秒延时子程序是以12MHz晶振为例算指令周期耗时 KK: MOV R5,#10 ;1指令周期×1 K1: MOV R6,#0FFH ;1指令周期×10 K2: MOV R7,#80H ;1指令周期256×10=2560 K3: NOP ;1指令周期 ;128*256*10=327680 DJNZ R7,K3 ;2指令周期 2*128*256*10=655360 DJNZ R6,K2 ;2指令周期 2*256*10=5120 DJNZ R5,K1 ;2指令周期2*10=20 RET;2指令周期 ;21+10+2560+327680+655360+5120+20+2=990753 ;约等于1秒=1000000微秒 ;这个算下来也只有0.998抄 T_0: MOV R7,#10; D1: MOV R6,#200; D2: MOV R5,#248; DJNZ R5,$ DJNZ R6,D2; DJNZ R7,D1; RET ;这样算下来应该是1.000011秒 T_0: MOV R7,#10; D1: MOV R6,#200; D2: NOP MOV R5,#248; DJNZ R5,$ DJNZ R6,D2; DJNZ R7,D1; RET DELAY_2S: ;10MS(11.0592mhz) MOV R3,#200 JMP DELAY10MS DELAY_100MS: ;100MS(11.0592mhz) MOV R3,#10 JMP DELAY10MS DELAY_10MS: MOV R3,#1 DELAY10MS: ;去抖动10MS (11.0592mhz) MOV R4,#20 DELAY10MSA: MOV R5,#247 DJNZ R5,$ DJNZ R4,DELAY10MSA DJNZ R3,DELAY10MS RET DELAY_500MS: ;500MS MOV R2,#208 JMP DELAY_MS DELAY_175MS: ;

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档