大家好,本人AVR新手。写了一个很简单的LED闪烁程序如下。调试过程中发现程序进行到第一个delay(500)时,就停留在那里,导致LED长亮。
#include <iom128v.h>
#include <macros.h>
void delay( int z)
{ int i,j;
for(i=z;i>0;i--)
for(j=120;j>0;j--);
}
void main()
{ DDRB=0xff;
PORTB=0xff;
while(1)
{ PORTB=0x00;
delay(500);
PORTB=0xff;
delay(500);
}
}
但我把delay函数中的for循环移到主函数中,程序就正常运行了,像下面这样。是ICCAVR编译器问题吗,请高手指点。谢谢了。
while(1)
{ PORTB=0x00;
/// delay(500);
for(i=500;i>0;i--)
for(j=120;j>0;j--);
PORTB=0xff;
// delay(500);
for(i=500;i>0;i--)
for(j=120;j>0;j--);
} |