Cro*_*ent 3 assembly avr avr-gcc
我花了很长时间用我的AVR开发系统设置了完整的GCC工具链(一切都是最新的当前稳定版本),我用它解决了大多数问题.
以下代码给出了一个我没有得到的错误.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
Run Code Online (Sandbox Code Playgroud)
有问题的线是sbi PORTB,0.
编译/组装:
avr-gcc ledon.S -mmcu = atmega168
更新事实证明,在使用avr-libc时,您应该像这样编写汇编代码:
#include <avr/io.h>
sbi _SFR_IO_ADDR(PORTB), 0
Run Code Online (Sandbox Code Playgroud)
[已删除调试提示,没有实际解决方案]