我使用-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);
}
}
附件是生成的汇编的截图:
此帖出自
小平头技术问答
我也知道volatile但就是不知道在哪里加。
现在发现原来是for循环的问题,gcc把这个循环当做是没用意义的东西了。
在for循环里加入一些其他的语句,也没问题。
一周热门 更多>