Embedded systemen en firmware

Welke schrijfwijze in C zet alleen bit 3 van register reg op 0 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 een waarde waarin alleen bit 3 gelijk is aan 0 en alle andere bits 1 zijn. Wordt hiermee een AND (&) uitgevoerd, dan is bit 3 altijd 0 en blijven de overige bits ongewijzigd, omdat ze met 1 worden ge-ANDed. Bits zetten met OR, bits wissen met AND NOT, bits omkeren met XOR (^) en bits testen met AND zijn de vier basisvormen voor het bedienen van registers in firmware.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Embedded systemen en firmware

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

Vergelijkingen bij dit onderwerp