单片机延时如下程序: for m=0;m<250;m++ for n=0;n<250;n+

单片机延时如下程序:
for m=0;m<250;m++
for n=0;n<250;n++
;
晶振频率是11.0592 MHz,结果书上说这段延时200ms,怎么算出来的?
还有最近在看串口,感觉很理不清思路,能不能给个大致的思路,重点?谢谢。

第1个回答  推荐于2017-10-24
看样子是51单片机啊?
首先这个是c语言,实际计算这段程序的延时时间即为其所实现指令运行需花的时间,而单片机执行每条指令的时间是固定的,因此该颜色时间的计算最终就是算这段代码让cpu执行了多少条指令。
这里51单片机是12指令周期的,即一条指令最快要花12个时钟,而此处时钟为11.0592mhz,所以1s内可以执行11.0592m/12=921.6k条单指令,再说这个for循环,汇编后应该是三条指令:加1、比较、跳转,一共250*250=62500个for循环,大约62500*3=187500条指令(大约的计算),约花时间187500/921600=0.20345s=203.45ms。
这里重点是51单片机是12指令周期的,而一个空for循环汇编后3条单指令实现,不知道说清楚了吗,望采纳。本回答被提问者和网友采纳
相似回答