首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2013-01-27 
AVR C程序的延时语句不起作用刚开始学AVR(atmega16),写了下面一个流水灯的程序,但下载后发现延时语句不起

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;
[解决办法]
一般不要关闭优化,这样对效率不好。不需要优化的代码自己处理一下就是了。

热点排行