我花了很长时间使用完整的 GCC 工具链设置我的 AVR 开发系统(一切都是最新的当前稳定版本),并且我已经解决了大多数问题,但只有一个。
下面的代码给了我一个我没有得到的错误。AVR 汇编手册指出 sbi 指令可以接受 0-7 作为常量表达式,但我仍然出错。任何人都可以解释一下为什么会这样吗?
#ifndef __AVR_ATmega168__
#define __AVR_ATmega168__
#endif
#include <avr/io.h>
rjmp Init
Init:
ser r16
out DDRB, r16
out DDRD, r16
clr r16
out PORTB, r16
out PORTD, r16
Start:
sbi PORTB, 0
rjmp Start
有问题的行是 sbi PORTB, 0。
编译/组装:
avr-gcc ledon.S -mmcu=atmega168