Embedded Systems und Firmware

Welche C-Schreibweise setzt nur Bit 3 des Registers reg auf 0 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 ein Wert, in dem nur Bit 3 gleich 0 und alle anderen 1 sind. Bei UND (&) mit diesem Wert wird Bit 3 stets 0, und die übrigen Bits bleiben wegen UND mit 1 unverändert. Setzen mit ODER, Löschen mit UND NOT, Invertieren mit XOR (^) und Prüfen mit UND sind die vier Grundformen der Registerzugriffe in Firmware.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Embedded Systems und Firmware

  1. Das Bit eines Ausgangspins mit angeschlossener LED soll bei jeder Ausführung zwischen Ein und Aus umgeschaltet werden. Welche C-Schreibweise ist korrekt?
  2. Welche C-Bedingung prüft, ob Bit 5 des Eingaberegisters in gleich 1 ist?
  3. Der obige Code ändert ein Einstellungsfeld mit mehreren Bits des Registers reg. Was tut er?
  4. 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?
  5. An einem Eingangspin eines Mikrocontrollers ist nur ein Schalter angeschlossen, ohne Pull-up- oder Pull-down-Widerstand. Was kann bei geöffnetem Schalter passieren?

Vergleiche zu diesem Thema