单片机汇编语言延时函数时间该如何计算?

单片机汇编语言延时函数时间该如何计算?,第1张

第一个延时,mov指令一个时钟,第二个DJNZ跳转是三个时钟,不跳转两个时钟,从255(0FFH)开始每次减一,255次,共255*3-1=764次,最后一次不跳转,只有两个时钟,所以减一,再加上第一条指令的一个时钟,结果是255个时钟,如果时钟周期是一微秒,那么延时了255微秒。第二个延时程序有两个循环,结果是(765+3)*765个时钟,再乘以时钟周期就是延时时间了。自己分析吧。

延时程序的时间,与每条指令的机器周期数有关,例如题目中出现的

MOV Rn,data指令为1个机器周期,

DJNZ Rn,LOOP指令为2个机器周期。

而每个机器周期的时间,又由系统的时钟频率决定。以经典的51单片机为例,一个机器周期为12个系统时钟周期。若系统时钟频率为10M,即1个系统时钟周期为1us,则一个机器周期的时间为12us。

计算程序的延时时间,要先对照指令表,查出每条指令的机器周期数,再结合程序中出现的机循环次数,统计出程序总的机器周数。将总机器周期数乗以一个机器周期的时间,就得到了程序总的延时时间。

对于现在一些改良的51兼容单片机,1个机器周期已不再是12个系统时钟。例如STC的单片机中,就有4个系统时钟,甚至1个系统时钟的产品。所以在真正地计算延时的时候,必须要依据所选用单片机的芯片手册所提供的参数,以及电路设计的系统时钟频率进行。

一条条指令的时间数出来的,看循环一次的指令要多久,乘以循环次数,这种原地延时的程序,延时时间也都是个大概,循环执行中间,来中断的话,延时程序的时间就会加长,一般用在时间要求不用太准的地方。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7917796.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存