嵌入式與韌體

想讓連接LED的輸出腳位的位元,每執行一次就在亮與滅之間切換。下列何種C語言寫法正確?

  1. Aport |= (1 << 5);
  2. Bport ^= (1 << 5);
  3. Cport &= ~(1 << 5);
查看答案與解析

正確答案:B. port ^= (1 << 5);

互斥或(XOR、^)與1做XOR時位元會反轉,與0做XOR則不變。因此每執行一次「port ^= (1 << 5)」,只有位元5會在0與1之間切換,常用於LED閃爍等用途。部分微控制器還備有專用暫存器,只要寫入就能反轉位元。

  • A. 這只會一律設為1,不會切換。
  • B. 正確。以XOR反轉為1的位元。
  • C. 這只會一律設為0,不會切換。
練習這個領域 前往領域頁面

嵌入式與韌體的其他題目

  1. 檢查輸入用暫存器in的位元5是否為1,下列何種C語言條件正確?
  2. 上面的程式碼正在改寫暫存器reg中多位元的設定欄位。它做了什麼?
  3. 主程式正以「reg |= mask;」(讀取、修改、寫回)操作暫存器的位元時,中斷處理常式改寫了同一暫存器的另一個位元,可能發生的問題與對策的組合,下列何者正確?
  4. 在微控制器的輸入腳位只接了開關,沒有加上上拉或下拉電阻。開關斷開時可能發生下列何種情況?
  5. 使用微控制器的GPIO(通用輸入輸出)腳位時,首先必須設定的是下列何者?

這個領域的比較