Embedded systemen en firmware

Welke voorwaarde in C test of bit 5 van invoerregister in gelijk is aan 1?

  1. Aif (in | (1 << 5))
  2. Bif (in == 5)
  3. Cif (in & (1 << 5))
Antwoord en toelichting tonen

Antwoord: C. if (in & (1 << 5))

"in & (1 << 5)" levert een waarde waarin alle bits behalve bit 5 0 zijn; is bit 5 gelijk aan 1, dan is het resultaat 32 (ongelijk aan 0, dus waar) en anders 0 (onwaar). In C is elke waarde ongelijk aan 0 waar, dus dit kan rechtstreeks als voorwaarde van een if-instructie worden gebruikt. Wil men het resultaat als 1 of 0, dan schrijft men "(in >> 5) & 1". Bij OR is het resultaat altijd ongelijk aan 0, dus er wordt niets getest.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Embedded systemen en firmware

  1. De bovenstaande code herschrijft een instelveld van meerdere bits in register reg. Wat gebeurt er?
  2. 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?
  3. 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?
  4. Wat moet als eerste worden ingesteld wanneer een GPIO-pin (general-purpose input/output) van een microcontroller wordt gebruikt?
  5. Hoe heet het verschijnsel dat bij het indrukken van een mechanische schakelaar de contacten licht stuiteren en in korte tijd meerdere keren aan en uit gaan?

Vergelijkingen bij dit onderwerp