初学AVR,请教AVR studio gcc 优化问题

2019-03-24 21:13发布

我使用-Os优化选项,发现编译后程序没法用。查看汇编代码,发现delay函数被优化没了。生成的汇编代码看起来很奇怪
如果不优化程序是没问题的。
请教是怎么回事?我该怎么办?

下面是我的代码:
#include <avr/io.h>
#define uchar unsigned char
#define uint  unsigned int
void delays(uint t)
{
uint j;
for(j=0;j<t;j++)
  ;
}

int main(void)
{
uchar  i;
DDRA=0xff;
for (i=0;i<8;i++)
{
   PORTA=i;
   delays(50);
}
}
附件是生成的汇编的截图: 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
tsunami
2019-03-25 11:40
是的,的确在uint j;前加volatile能有用
我也知道volatile但就是不知道在哪里加。
现在发现原来是for循环的问题,gcc把这个循环当做是没用意义的东西了。
在for循环里加入一些其他的语句,也没问题。

一周热门 更多>