首页 > 其他 > 详细

软件延时,延时1ms

时间:2021-07-01 14:37:55      阅读:12      评论:0      收藏:0      [点我收藏+]

软件延时:有误差

使用多层循环,和利用指令的机器周期,来实现延时

 

源代码:

ORG 0000H
LJMP MAIN
ORG 0100H

MAIN:
    MOV A,#12H
    LCALL DELAY  ;调用延时子程序,延时1ms
    SJMP $

DELAY: MOV R0,#10  ;1个时钟周期
DL2:   MOV R1,#24  ;1个时钟周期
DL1:   NOP         ;1个时钟周期
       NOP      ;1个时钟周期
       DJNZ R1,DL1 ;2个时钟周期
       DJNZ R0,DL2 ;2个时钟周期
       
       RET         ;2个时钟周期
    
END

 

误差分析:

延时时间主要和晶振大小和延时程序中的延时次数有关系

整个延时子程序的耗费的机器周期数为:晶振采用12MHZ,12分频后,所以机器周期为1us

1+[1+(1+1+2)*24+2]*10+2=993us,误差为:7us

所以基本上延时了1ms。

晶振(震荡)频率=1/2状态频率=1/12机器频率

周期=1/频率

软件延时,延时1ms

原文:https://www.cnblogs.com/nanfengnan/p/14958301.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!