| 
 
| 大家好,本人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--);
 }
 | 
 |