软件延时,延时1ms
作者:互联网
软件延时:有误差
使用多层循环,和利用指令的机器周期,来实现延时
源代码:
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,MOV,晶振,延时,软件,时钟 来源: https://www.cnblogs.com/nanfengnan/p/14958301.html