本帖最后由 学海泛舟 于 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;
}
} |