在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我这么算对不? 展开
比如
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我这么算对不? 展开
2个回答
2013-11-12
展开全部
这个方法肯定不准确,就像上面说的,一个机器周期不一定是12个时钟周期。不过,如果你确定了单片机的型号,倒是可以这么用,如果不会出现中断,那这个计时还是比较正确的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询