-1
我开始学习汇编,我有这个疑问。我有下面的代码段AVR汇编程序中的SBIC指令
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
写0的所有端口B的位,或者是它只是一个配置指令,但它不写什么?换句话说:端口B的所有位都设置为0?
2)如果它们都设置为0,那么在SBIC
之后的指令将被跳过。但是,仅仅是第一个跳过的指令,或者直到RETI
才被触发?
正如注释所说,它将端口配置为输入。它不写任何东西。 'SBIC'将返回连接到端口引脚的外部电路提供的任何信息,它只检查一个位,它也只跳过一条指令。这全部写在手册中。 – Jester
是不是可以在端口的引脚上写入'LDI R16,0xFF',然后是'OUT PORTA,R16',并将1和0写入?在这种情况下,SBIC返回的内容不取决于外部电路,还是我错了?还有最后一件事:是否有可能知道'SBIC'是否会跳过下一条指令,只用我在问题中写的那段代码? – Tendero
如果端口配置为输入,写入它通常会控制内部上拉(但请查阅您的特定芯片文档以确保)。不,你不知道'SBIC'是否会跳过。如果可以的话,那里就不会有任何意义。 – Jester