51单片机比较精确延时程序大集合.doc

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

51单片机比较精确延时程序大集合 以下程序说是精确延时,实际上都不对。调用一次差个几微秒、几百微秒,一天下来差好几分钟。 精确延时计算公式: 延时时间=[(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; DJ

文档评论(0)

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

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

1亿VIP精品文档

相关文档