AVR汇编程序中的SBIC指令

时间:2016-04-22 23:26:14

标签: assembly avr

我开始学习汇编程序,我有这个疑问。我有以下代码段

LDI R16, 0
OUT DDRB, R16 ; Configures port B as an input port
SBIC PORTB, 0
LDI R18, 0xAA
OUT PORTC, R18
RETI

我已经读过SBIC正在检查(在这种情况下)端口B的位0是否清除。如果是,则跳过下一条指令。

我的问题是:

1) OUT DDRB, R16是否在端口B的所有位中写入0,或者它只是一个配置指令但它不会任何东西?换句话说:端口B的位都设置为0?

2)如果它们都设置为0,则会跳过SBIC之后的指令。但是,只有下一个跳过的指令,或者到达RETI之前的所有指令?

1 个答案:

答案 0 :(得分:1)

第一条指令在DDRB寄存器的所有位中写入0。我假设从注释和寄存器的名称,这使得端口B输入的所有引脚。这不会明确输出任何内容,但取决于设备如何电气配置,任何试图读取该点上任何端口B引脚的外部设备可能会看到值的变化,因为它们不再配置为读取。

下一条指令测试PORTB寄存器的第0位,其值取决于相应引脚连接的内容。如果清楚,则跳过下一条指令LDI R18, 0xAA。如果已设置,则执行下一条指令。

这意味着OUT PORTC, R18存储在PORTC寄存器中的值取决于端口B的第一个引脚的状态和示例代码执行开始时R18中包含的值。