Embedded systemen en firmware
Een bit van een uitgangspoort waarop een LED is aangesloten, moet bij elke uitvoering tussen aan en uit wisselen. Welke schrijfwijze in C is juist?
- Aport |= (1 << 5);
- Bport ^= (1 << 5);
- Cport &= ~(1 << 5);
Antwoord en toelichting tonen
Antwoord: B. port ^= (1 << 5);
Bij exclusieve OR (XOR, ^) wordt een bit omgekeerd bij XOR met 1 en blijft ongewijzigd bij XOR met 0. Bij elke uitvoering van "port ^= (1 << 5)" wisselt daarom alleen bit 5 tussen 0 en 1. Dit wordt vaak gebruikt voor knipperende LED's. Sommige microcontrollers hebben een speciaal register waarmee een bit alleen door te schrijven kan worden omgekeerd.