51单片机C语言for循环延时程序时间计算

设晶振12MHz,即一个机器周期是1us。
for(i=0,i<100;i++)
for(j=0,j<100;j++)
我觉得时间是100*100*1us=10ms,怎么会是100ms

不可能的,是不是你的编译有错的啊

我改的晶振12M,在KEIL 4.0 里面编译的,为你得出的结果最大也就是40ms,这是软件的原因,

不可能出现100ms那么大的差距,是你的软件的原因。

不信你实际编写一个秒钟,利用原理计算编写一个烧进单片机和利用软件测试的秒程序烧进单片机,你会发现原理计算的程序是正确的

追问

我运行时都差不多100ms,后来想想估计是执行一次FOR语句,不只是简单的一个机器周期。要把它转场汇编是才能按机器周期来算。
还是挺谢你的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-14
一条for语句执行时间为10us
第2个回答  2019-06-22
一条for语句好像是占用10个机器周期
第3个回答  2011-02-27
,你发现那两个空循环后面是不是多了个“;”符号,那个就是循环的内容。
for循环后面没有大括号的话,就以最近的“;”符号算一次循环。
不知道你听明白没有
相似回答