임베디드 시스템과 펌웨어
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 점멸 등에 자주 사용합니다. 마이크로컨트롤러에 따라서는 값을 쓰기만 해도 비트를 반전할 수 있는 전용 레지스터를 가진 것도 있습니다.