
MOV Rn,data指令为1个机器周期,
DJNZ Rn,LOOP指令为2个机器周期。
而每个机器周期的时间,又由系统的时钟频率决定。以经典的51单片机为例,一个机器周期为12个系统时钟周期。若系统时钟频率为10M,即1个系统时钟周期为1us,则一个机器周期的时间为12us。
计算程序的延时时间,要先对照指令表,查出每条指令的机器周期数,再结合程序中出现的机循环次数,统计出程序总的机器周数。将总机器周期数乗以一个机器周期的时间,就得到了程序总的延时时间。
对于现在一些改良的51兼容单片机,1个机器周期已不再是12个系统时钟。例如STC的单片机中,就有4个系统时钟,甚至1个系统时钟的产品。所以在真正地计算延时的时候,必须要依据所选用单片机的芯片手册所提供的参数,以及电路设计的系统时钟频率进行。
一条条指令的时间数出来的,看循环一次的指令要多久,乘以循环次数,这种原地延时的程序,延时时间也都是个大概,循环执行中间,来中断的话,延时程序的时间就会加长,一般用在时间要求不用太准的地方。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)