微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 有关延时程序while和for语句的选用

有关延时程序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(I=0;I<100;I++)
For(;s>0;s--);

对啊。但你能够告诉我的问题吗?用while语句为什么电机转得很慢,单片机在读没一条指令所花的时间是一样的,麻烦你说的清楚点

你要反汇编看keil C编译出什么样的汇编代码,才可以比较的
不同的编译器又可能有点出入

延时程序最好用定时器来实现,因为用循环的方法的话,延时的时间与很多因素有关:
- 时钟频率
- (C) 代码的实现和编译优化
- 中断
- 。

明显是延时的时间不一样。你用keil模拟仿真一下,看看两个函数的运行时间就清楚了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top