Hey Xbert, danke für deine Antwort,

PORTC = var&0b11111100; //bzw PORTC |= var&0b11111100 wenn die letzten 2 bit belassen werden sollen
PORTD = var&0b00000011;
0)
frage: sollte das nicht so etwa sein ?:
PORTC = (var & 0x3F);//bzw. var & 0x0b00111111
PORTD = ((var & 0xC0) >> 2);//bzw var&0b11000000
Gut. aber die anderen Pins werden überschrieben.

1)
Beispiel : am portc habe ich 0b00000000 und
portd 0b11110001

danke !
und var ist 0b00001110

Nach diesen Zuweisungen PORTC = var&0b11111100; und PORTD = var&0b00000011; habe ich Portc =00001100 und Portd= 00000010 mit LSB von Var am PD0 und MSB am pc6(reset).

2) falls ich die zuweisung so durchführe:
PORTC |= (variable & 0x3F);//bzw. variable & 0b00111111
PORTD |= ((variable & 0xC0) >> 2);//...
mit portc = 0b11111111 ,portd = 0b00001111 undvar =0b00000000 dann habe ich am Portc =0b11111111 und Portd=0b00001111;

in den beiden letzten Fälle, fals ich mich nicht irre bekomme ich nicht meine var am Pc0...5 und Pd4,5.

3)
kann man nicht auf einzelne Pin zugreifen zum beispiel PC0 = Var&0b00000001 ?
4)
wenn var eine uint16_t ist muss ich die zuweisung wie folgt durchführen ?:
PORTC = uint8_t (var & 0x3F);//bzw. var & 0x0b00111111
PORTD = uint8_t((var & 0xC0) >> 2);//bzw var&0b11000000