关于KEILC51单片机延时问题

void mDelay(unsigned int Delay) { unsigned int i; for(;Delay>0;Delay--) { for(i=0;i<124;i++) {;} } } void main() { mDelay(500); } 请问通过上面的循环怎么就能实现500ms的延时,124是如何确定的,谢谢

第1个回答  2020-02-11
执行空语句执行124次,大概就能延时到1秒.不是很准的.经验值。
如要算的话:
比如51,mdelay函数想延时1ms,而执行for(i=0;i<124;i++),假设4个机器周期,每个机器周期时长为[12*(1/晶振频率)秒],若晶振为6MHz时,每个机器周期为2us,这样124*4*2是992us,加上for(;Delay>0;Delay--)需要的8us,正好延时1ms