若单片机的晶振频率为6MHZ,则下列子程序的延时时间是:

如题所述

你应该说明是什么单片机,用c语言还是用汇编语言
如果是at89s51的话,6mhz晶振,经单片机12分频后,得到的cpu时钟是0.5mhz。故一个nop操作的时间是2us,所以要2000个nop操作。
前面的回答中,一次循环里有两个nop,所以应该是循环1000次,再扣去循环体消耗的时间,估计只需要循环900次。借用前面的程序,把"uchar
i"
改为"unsigned
int
i",for里面i<900;
其实keil里面在软件debug的时间是可以看到执行消耗了多少时间的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-22
楼上的算法忽略了循环外部的几条指令的执行时间,精度影响不大。
但是对循环内部的指令的执行时间,计算有误。
指令
DJNZ
R3,$
的指令周期为2个机器周期!
晶振频率为6MHz,则机器周期为2微秒;
Y=62248×2×2微秒=124496×2微秒=124.496×2毫秒=0.249秒。