- 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;
|