-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