嵌入式與韌體
想讓連接LED的輸出腳位的位元,每執行一次就在亮與滅之間切換。下列何種C語言寫法正確?
- Aport |= (1 << 5);
- Bport ^= (1 << 5);
- 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,不會切換。