在C/C++中,一般for循环中执行一次需要多少时间?

在C/C++中,一般for循环中执行一次需要多少时间?比如for(i=0;i<10000;i++){;}12M的晶振的机器周期是1/12M*12,就是1us其次不同的单片... 在C/C++中,一般for循环中执行一次需要多少时间?
比如
for (i=0;i<10000;i++)
{
;
}12M的晶振的机器周期是1/12M*12,就是1us

其次不同的单片机执行语句的机器周期也不一定一样(比如:Atmel 51系列及大多数51的一个机器周期是12个时钟周期,华邦的只需要4个时钟周期)。不过大体来说,一条for循环大概8个机器周期,在12M晶振下,通常用以下代码实现1ms的延时:

void delayms(unsigned int ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
大概算一下,120*8*1us=1ms,如果需要精确的定时,还是得用定时器。

如果是for (i=0;i<10000;i++);的话,
那么
大概算一下,10000*8*1us=80ms我这么算对不?
展开
 我来答
szwpvz
推荐于2017-10-03 · TA获得超过640个赞
知道小有建树答主
回答量:374
采纳率:0%
帮助的人:252万
展开全部
对于确定机器周期为12M晶振的计算机可以用这种方法进行估算,但不能推广到其他机器周期的计算机。

而且for循环的运行时间还需要看你的for循环中包含的语句数。一般来说,12M晶振的计算机每执行一个基本语句所花的时间大致是10^(-8)s,也就是1亿次执行约需1秒的时间。
所以对于12M晶振的计算机,一次for循环执行的时间约等于:(循环包含语句执行时间单位+8)除以1亿(秒)。
匿名用户
2013-11-12
展开全部
这个方法肯定不准确,就像上面说的,一个机器周期不一定是12个时钟周期。不过,如果你确定了单片机的型号,倒是可以这么用,如果不会出现中断,那这个计时还是比较正确的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式