Q17.
欲將Arduino pin 13(PB5)設定成輸出腳位,下列敘述何者正確?
數位電子 · 甲級 · 程式語言 · Q17
難易度分析
2 / 5
題目要求在 Arduino 上將 pin 13 設為輸出,只需了解 pin 13 對應的 AVR 端口位元,以及正確使用 DDRB 設定方向。問題的難度主要在於記憶映射關係,沒有多重選項或計算步驟,因而評為「2」。
正確答案:②DDRB |= _BV(5);
② DDRB |= _BV(5);:DDRB(Data Direction Register B)是 Port B 的資料方向暫存器,將對應位元設為 1 即可設定該腳位為輸出模式。`_BV(5)` 是 AVR 巨集,等價於 `(1 << 5)`,正確設定 PB5 位元為輸出,符合 Arduino pin 13 對應 PB5 的硬體映射關係。
錯誤選項解析
- ① PORTB |= (1 >> 5);:PORTB 是資料輸出暫存器,用於設定腳位的高低電平輸出,而非用來設定腳位方向。此外,`(1 >> 5)` 使用的是右移運算,會得到 0,無法設定任何位元。正確應使用 DDRB 搭配左移運算。
- ③ PORTB |= (1 << 13);:PORTB 是輸出資料暫存器,非方向暫存器。且 `(1 << 13)` 使用 Arduino 腳位編號 13 而非 Port B 的位元編號 5,會錯誤操作到超出 Port B 範圍的位元。應使用 DDRB 並指定位元 5。
- ④ DDRB |= _BV(13);:雖然使用了正確的 DDRB 方向暫存器,但 `_BV(13)` 中的數值 13 是 Arduino 腳位編號,而非 Port B 的位元位置。Arduino pin 13 對應的是 PB5(位元 5),使用 13 會設定到錯誤的位元,可能導致未預期的硬體行為。
Learning Tip
"此類題型常考 AVR 暫存器操作與 Arduino 腳位映射的對應關係。關鍵區分:DDRx 設定方向(1=輸出、0=輸入),PORTx 設定輸出值或啟用上拉電阻。Arduino 腳位編號與 AVR Port 位元編號不同,例如 pin 13 對應 PB5,操作時必須使用位元編號 5 而非 13。`_BV(n)` 巨集等價於 `(1 << n)`,是 AVR 程式設計的標準寫法。"
學員答題分佈
①PORTB |= (1 >> 5);0%
②DDRB |= _BV(5);0%
③PORTB |= (1 << 13);0%
④DDRB |= _BV(13);0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!