Embedded systemen en firmware

Welke schrijfwijze in C zet alleen bit 3 van register reg op 1 en laat de overige bits ongewijzigd?

  1. Areg |= (1 << 3);
  2. Breg = (1 << 3);
  3. Creg &= (1 << 3);
Antwoord en toelichting tonen

Antwoord: A. reg |= (1 << 3);

"1 << 3" is binair 00001000, een waarde (masker) waarin alleen bit 3 gelijk is aan 1. Wordt dit met de registerwaarde samengevoegd met OR (|), dan is bit 3 altijd 1 en blijven de overige bits ongewijzigd. Bij toewijzing (=) worden ook de andere bits met 0 overschreven, waardoor andere instellingen van randschakelingen worden verstoord. Bitnummers worden geteld vanaf 0 voor het minst significante bit.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Embedded systemen en firmware

  1. Welke schrijfwijze in C zet alleen bit 3 van register reg op 0 en laat de overige bits ongewijzigd?
  2. 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?
  3. Welke voorwaarde in C test of bit 5 van invoerregister in gelijk is aan 1?
  4. De bovenstaande code herschrijft een instelveld van meerdere bits in register reg. Wat gebeurt er?
  5. 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?

Vergelijkingen bij dit onderwerp