打印

经典的延时子程序出现的问题

[复制链接]
2036|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
学海泛舟|  楼主 | 2010-3-25 11:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 学海泛舟 于 2010-3-25 20:48 编辑

对于单片机新手(比如我)经常写的延时子程序一般为:
void delay_ms(unsigned int ms)
{
unsigned int i, j;
for(i = 121; i > 0; i--)
{
  for(j = ms; j >0; j--)
  {
   ;//do nothing...
  }
}
}

看了一本书上这样写的延时子程序:
void delay_ms(unsigned int ms)
{
unsigned int i = 121;

while(i--)
{
  while(ms--)
  {
   ;//do nothing...
  }
}
}

对于像我这样的菜鸟来说,第二个程序貌似没问题,但是,实际上并不能起到延时的功能,而是一个死循环。

就这个问题,难为了我半个小时,最终借助于Debug才发现问题。

记得大学时期学 C语言的时候,根本不知道调试程序,更不知道GDB怎么用,唉~~~

更正:
void delay_ms(unsigned int ms)
{
unsigned int i = 121;
unsigned int t = ms;
while(i--)
{
  while(ms--)
  {
   ;//do nothing...
  }
   ms = t;
}
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:35岁之前拼的是精力, 35岁之后拼的是经历。

0

主题

64

帖子

1

粉丝