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?

  1. Aport |= (1 << 5);
  2. Bport ^= (1 << 5);
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Embedded systemen en firmware

  1. Welke voorwaarde in C test of bit 5 van invoerregister in gelijk is aan 1?
  2. De bovenstaande code herschrijft een instelveld van meerdere bits in register reg. Wat gebeurt er?
  3. Terwijl het hoofdprogramma een registerbit bewerkt met "reg |= mask;" (lezen, wijzigen, schrijven), wijzigt een interrupthandler een ander bit van hetzelfde register. Welke combinatie van mogelijk probleem en tegenmaatregel is juist?
  4. Aan een ingangspin van een microcontroller is alleen een schakelaar aangesloten, zonder pull-up- of pull-downweerstand. Wat kan er gebeuren als de schakelaar open is?
  5. Wat moet als eerste worden ingesteld wanneer een GPIO-pin (general-purpose input/output) van een microcontroller wordt gebruikt?

Vergelijkingen bij dit onderwerp