当前位置: 代码迷 >> 单片机 >> AVR C程序的延时语句不起作用解决思路
  详细解决方案

AVR C程序的延时语句不起作用解决思路

热度:84   发布时间:2016-04-28 15:34:48.0
AVR C程序的延时语句不起作用
刚开始学AVR(atmega16),写了下面一个流水灯的程序,但下载后发现延时语句不起作用,avrstudio里(软件仿真)调试的时候怎么也不执行延时的for语句,但编译能通过,不知道哪里出了问题。用的是avrstudio和winavr2010(2008的也用过),for语句有没有都一样。
#include <avr/io.h>
int main(void)
{
unsigned char i=0;
unsigned int x,y;

DDRA=0xff;
PORTA=0b00000001;
while(1)
{
PORTA=PORTA<<1;
for(x=0;x<1000;x++)
for(y=0;y<1000;y++);
}

    return 0;   
}

------解决方案--------------------
可能被优化掉了。这样试试:
volatile unsigned int x,y;
------解决方案--------------------
一般不要关闭优化,这样对效率不好。不需要优化的代码自己处理一下就是了。
  相关解决方案