Embedded Systems und Firmware

Das Bit eines Ausgangspins mit angeschlossener LED soll bei jeder Ausführung zwischen Ein und Aus umgeschaltet werden. Welche C-Schreibweise ist korrekt?

  1. Aport |= (1 << 5);
  2. Bport ^= (1 << 5);
  3. Cport &= ~(1 << 5);
Antwort und Erläuterung anzeigen

Antwort: B. port ^= (1 << 5);

Beim exklusiven ODER (XOR, ^) wird das Bit durch XOR mit 1 invertiert, bei XOR mit 0 bleibt es unverändert. Bei jeder Ausführung von „port ^= (1 << 5)“ wechselt daher nur Bit 5 zwischen 0 und 1. Das wird häufig für blinkende LEDs genutzt. Manche Mikrocontroller besitzen auch spezielle Register, mit denen sich Bits allein durch Schreiben invertieren lassen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Embedded Systems und Firmware

  1. Welche C-Bedingung prüft, ob Bit 5 des Eingaberegisters in gleich 1 ist?
  2. Der obige Code ändert ein Einstellungsfeld mit mehreren Bits des Registers reg. Was tut er?
  3. 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?
  4. An einem Eingangspin eines Mikrocontrollers ist nur ein Schalter angeschlossen, ohne Pull-up- oder Pull-down-Widerstand. Was kann bei geöffnetem Schalter passieren?
  5. Was muss bei der Verwendung eines GPIO-Pins (Allzweck-Ein-/Ausgang) eines Mikrocontrollers zuerst eingestellt werden?

Vergleiche zu diesem Thema