有关延时程序while和for语句的选用
时间:10-02
整理:3721RD
点击:
我在编写四线四拍步进电机的程序时,在调解电机转动大的速度时,即用延时程序调节速度,
用while语句电机转动的很慢,而用for就很好了,下面是我的两个不同例子:
while延时:
void Speed(uint s)
{
int j;
for(j=0; j <= 100; j++)
while(s--);
}
for延时
void Speed(uint s)
{
int i,j;
for(j=0; j <= s; j++)
for(i =0 ; i <= 100; i++);
}
这到底是while与for语句执行时间有关还是什么其他原因,差别这么大呢?
用while语句电机转动的很慢,而用for就很好了,下面是我的两个不同例子:
while延时:
void Speed(uint s)
{
int j;
for(j=0; j <= 100; j++)
while(s--);
}
for延时
void Speed(uint s)
{
int i,j;
for(j=0; j <= s; j++)
for(i =0 ; i <= 100; i++);
}
这到底是while与for语句执行时间有关还是什么其他原因,差别这么大呢?
这两段代码明显不能进行相比
while循环可以和以下代码进行对比
For(I=0;I<100;I++)
For(;s>0;s--);
对啊。但你能够告诉我的问题吗?用while语句为什么电机转得很慢,单片机在读没一条指令所花的时间是一样的,麻烦你说的清楚点
你要反汇编看keil C编译出什么样的汇编代码,才可以比较的
不同的编译器又可能有点出入
延时程序最好用定时器来实现,因为用循环的方法的话,延时的时间与很多因素有关:
- 时钟频率
- (C) 代码的实现和编译优化
- 中断
- 。
明显是延时的时间不一样。你用keil模拟仿真一下,看看两个函数的运行时间就清楚了。