Q14.
ATmega328P 程式碼如下,下列敘述何者正確?
數位電子 · 甲級 · 程式語言 · Q14
難易度分析
2 / 5
需要先分辨 PIND 為輸入暫存器、PORTB 為輸出暫存器,並確認讀取位於 bit 2、輸出位於 bit 5,選項中只有此排列符合硬體資料表,故題目屬於簡單概念測驗。
正確答案:①從Port D 的bit 2 讀入1 位元值,再從Port B 的bit 5 輸出此位元值
① 從Port D 的bit 2 讀入1 位元值,再從Port B 的bit 5 輸出此位元值:PIND 暫存器用於讀取 Port D 的輸入狀態,PORTB 暫存器用於輸出至 Port B。程式碼中透過讀取 PIND 的 bit 2 取得輸入位元值,再將該值寫入 PORTB 的 bit 5 進行輸出,符合 AVR 微控制器 的 I/O 埠操作架構。
錯誤選項解析
- ② 從Port B 的bit 2 讀入1位元值,再從Port D 的bit 5 輸出此位元值:此選項將 Port B 與 Port D 的角色顛倒。實際上程式碼是從 Port D 讀入而非 Port B,輸出至 Port B 而非 Port D,屬於典型的 埠號混淆 錯誤。
- ③ 從Port B 的bit 5 讀入1 位元值,再從Port D 的bit 2 輸出此位元值:此選項不僅將 Port B 與 Port D 的角色顛倒,bit 位置 也與實際程式碼不符。正確操作應為從 Port D 的 bit 2 讀入,而非從 Port B 的 bit 5 讀入。
- ④ 從Port D 的bit 5 讀入1 位元值,再從Port D 的bit 2 輸出此位元值:此選項錯誤地將讀入與輸出都指定在 Port D 上。實際上程式碼涉及 跨埠操作,即從 Port D 讀入後輸出至 Port B,而非同一個埠內部的資料傳遞。
Learning Tip
"此類題型常考 AVR 微控制器 的 I/O 埠暫存器操作,需清楚區分 PINx(讀入)、PORTx(輸出)與 DDRx(方向設定)的功能差異。實務上應注意 位元遮罩運算(如 `_BV()` 或位移運算子)的正確使用,避免將不同 Port 的 bit 位置混淆。"
學員答題分佈
①從Port D 的bit 2 讀入1 位元值,再從Port B 的bit 5 輸出此位元值0%
②從Port B 的bit 2 讀入1位元值,再從Port D 的bit 5 輸出此位元值0%
③從Port B 的bit 5 讀入1 位元值,再從Port D 的bit 2 輸出此位元值0%
④從Port D 的bit 5 讀入1 位元值,再從Port D 的bit 2 輸出此位元值0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!