Embedded Systems und Firmware

Welche C-Schreibweise setzt nur Bit 3 des Registers reg auf 1 und lässt die übrigen Bits unverändert?

  1. Areg |= (1 << 3);
  2. Breg = (1 << 3);
  3. Creg &= (1 << 3);
Antwort und Erläuterung anzeigen

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

„1 << 3“ ist binär 00001000, eine Maske, in der nur Bit 3 gleich 1 ist. Wird sie per ODER (|) mit dem Registerwert verknüpft, wird Bit 3 stets 1, und die übrigen Bits behalten ihren ursprünglichen Wert. Eine Zuweisung (=) überschreibt auch die anderen Bits mit 0 und zerstört andere Einstellungen der Peripherie. Die Bitnummern werden ab 0 für das niederwertigste Bit gezählt.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Embedded Systems und Firmware

  1. Welche C-Schreibweise setzt nur Bit 3 des Registers reg auf 0 und lässt die übrigen Bits unverändert?
  2. Das Bit eines Ausgangspins mit angeschlossener LED soll bei jeder Ausführung zwischen Ein und Aus umgeschaltet werden. Welche C-Schreibweise ist korrekt?
  3. Welche C-Bedingung prüft, ob Bit 5 des Eingaberegisters in gleich 1 ist?
  4. Der obige Code ändert ein Einstellungsfeld mit mehreren Bits des Registers reg. Was tut er?
  5. Das Hauptprogramm manipuliert ein Registerbit mit „reg |= mask;“ (Lesen, Ändern, Schreiben), während ein Interrupt-Handler ein anderes Bit desselben Registers ändert. Welche Kombination aus möglichem Problem und Gegenmaßnahme ist korrekt?

Vergleiche zu diesem Thema