kramann.info
© Guido Kramann

Login: Passwort:










3.4 Bitmasken für den Ausgang

Wie kann man bei Ausgängen einzelne Bits setzen oder löschen, ohne die anderen Bits zu beeinflussen?

  • Es ist in vielen Anwendungsfällen nicht möglich sämtliche Bits eines Ports als Ausgang oder sämtliche als Eingang zu benutzen.
  • Oft muß das Byte aufgeteilt werden.
  • Beispiel: DDRB = 0b11110000; - Die niederwertigen vier Bit von Port B werden als Ein- die höherwertigen als Ausgänge verwendet.
  • Will man für die Eingänge die Pullup-Widerstände aktivieren, so schreibt man PORTB = 0b00001111;
  • Sollen nun einzelne Bits des Ausgangs von Port B (Bit 3 bis Bit 7) gesetzt werden, so dürfen dabei die niederwertigen Bits, die die Pullup-Widerstände dort aktiv halten nicht verändert werden.
  • Wie kann man das machen?
  • Man muß den aktuellen Zustand von Port B lesen und den gelesenen Zustand wieder Port B zuweisen, allerdings unter Verwendung einer Maske, die dann nur das gewünschte Bit verändert.
  • Beispiel Bit4 (5. Bit) setzen, ohne die anderen Bits zu verändern: PORTB |= 0b00010000;
  • Beispiel Bit7 (8. Bit) setzen, ohne die anderen Bits zu verändern: PORTB = PORTB | 0b00010000;
  • Beispiel Bit5 (6. Bit) löschen, ohne die anderen Bits zu verändern: PORTB = PORTB & 0b11011111;
  • Beispiel Bit4 (5. Bit) löschen, ohne die anderen Bits zu verändern: PORTB &= 0b11101111;
Die Beispiele werden während der Vorlesung an der Tafel besprochen