我花了很多时间用完整的 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。
编译/组装:
最佳答案
我认为它在提示 PORTB 而不是位数 (0)。你是如何定义 PORTB 的?它需要在 0..31 范围内。如果您的端口定义在 32..63 范围内,您可能需要从 PORTB 中减去 32 ?
关于assembly - AVR sbi 命令 - 错误 : number must be positive and less than 32,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2612843/