单片机延时程序是怎么实现的?
比如DELAYMOVR2,#0FAHL1:MOVR3,#0FAHL2;DJNZR3,L2DJNZR2,L1RET这个延时是什么意思或者说怎么实现延迟的,没看懂能不能给个详...
比如DELAY MOV R2,#0FAH
L1:MOV R3,#0FAH
L2;DJNZ R3,L2
DJNZ R2,L1
RET
这个延时是什么意思或者说怎么实现延迟的,没看懂能不能给个详细点的解释,初学者求教! 展开
L1:MOV R3,#0FAH
L2;DJNZ R3,L2
DJNZ R2,L1
RET
这个延时是什么意思或者说怎么实现延迟的,没看懂能不能给个详细点的解释,初学者求教! 展开
2个回答
展开全部
延时是靠CPU执行无关指令,把时间浪费掉。
具体来说,DJNZ指令需要2个周期,循环250次就是500个周期,两层循环就是500*500个周期,你调用一次DELAY子程序,CPU就空转250000个周期(注意这个计算不精确),如果晶振是12MHz,那就意味着时间过去了250ms,也就是延时250ms
具体来说,DJNZ指令需要2个周期,循环250次就是500个周期,两层循环就是500*500个周期,你调用一次DELAY子程序,CPU就空转250000个周期(注意这个计算不精确),如果晶振是12MHz,那就意味着时间过去了250ms,也就是延时250ms
追问
那250ms怎么从250000变过来的,麻烦你再说一下
追答
标准51单片机12分频的。
使用12MHz晶振,12分频以后,实际运行使用的时钟频率是1MHz。
频率1MHz,即1个周期是1us。
250,000个周期,就是250,000us,也就是250ms。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询