大家看一下这两个语句有区别吗?
时间:10-02
整理:3721RD
点击:
while (1)
{
if(i<=1080*n) /*脉冲数*/
{
CLK1=!CLK1;
for(m=0;m<30;m++)
{
;
}
CLK1=!CLK1;
DelayMS(1);
i++;
}
}
/////////////////////////////////////////////////////
while(i<=1080*n)/*脉冲数*/
{
CLK=!CLK;
for(m=0;m<30;m++)
{
;
}
CLK=!CLK;
DelayMS(1);
i++;
}
{
if(i<=1080*n) /*脉冲数*/
{
CLK1=!CLK1;
for(m=0;m<30;m++)
{
;
}
CLK1=!CLK1;
DelayMS(1);
i++;
}
}
/////////////////////////////////////////////////////
while(i<=1080*n)/*脉冲数*/
{
CLK=!CLK;
for(m=0;m<30;m++)
{
;
}
CLK=!CLK;
DelayMS(1);
i++;
}
用while(1)就是死循环;
用while(i<=1080*n),只要i一直累加,就有可能满足i>1080*n,这时while(i<=1080*n)为假,就跳出while()循环了
楼上的说得对
发脉冲最好使用定时器中断来做,频率更稳定
可是我调试的结果正好相反呀
不可能正好相反的,
看下定义i的类型,1080*n这个数有可能很大,i不论怎么累加也没有超过1080*n这个数,比如你把i定义为char的类型
可是我让i<4按第二个语句结果也是停不下来
那基本和while(1)没区别,只要n大于0
我是大学新生,很喜欢电子设计,望大家多多指点。
一楼讲得不错,新手学习了
int i;
while(n--)
{
i=1080;
while(i--)
{
.
}
}
你的代码效率太低下了。