Hallo nochmal!
Vielen Dank erst einmal für die schnellen Antworten! Mit meiner obigen
Variante komme ich noch nicht zurecht.
Mit:
char struct {
unsigned char bit_0:1;
unsigned char bit_1:1;
unsigned char bit_2:1;
unsigned char bit_3:1;
unsigned char bit_4:1;
unsigned char bit_5:1;
unsigned char bit_6:1;
unsigned char bit_7:1;
} d;
d.bit_0=1;
d.bit_1=0;
d.bit_2=1;...
geht es zwar.
Nun kann ich nach Belieben die einzelnen Bits verschiedenen
Portausgängen zuweisen, z.B. Bit_0 an PortD.Pin0, Bit_1 nicht an
Portd.Pin1 sondern an Pin3 (deshalb, weil ich Pin 1 und Pin 2 für
Interrupts nutze).
Dies funktioniert mit:
PORTD |=(d.bit_0<<PD0)|(d.bit_1<<PD2)|(d.bit_2<<PD3)...
PORTB |=(d.bit_3<<PB0)|(d.bit_4<<PB1)...u.s.w.
Da es aber sehr umständlich ist die einzelnen Bits immer zu setzen,
möchte ich auf die einzelnen Bits einer (unsigned) char-Variable
zugreifen und diese bei der Zuweisung an die Ausgänmge einfach nur
auslesen.
Dazu habe ich dann folgendes versucht:
char d=5;
PORTD |= ((d & 0x01)<<PD0)|((d & 0x02)<<PD3)...
(1.Bit von d) (2.Bit von d)
Aber entweder ist der Code für die Auslesung der einzelnen Bits (d &
0x01) falsch oder es liegt ein anderer Fehler vor.