Hallo,
wenn man das Problem wirklich so angehen will, wie wäre es mit etwas in
der Art:
1 | PORTB = (array[0]<<0) | (array[1]<<1) | (array[2]<<2) | (array[3] << 3) |
|
2 | (array[4]<<4) | (array[5]<<5) | (array[6]<<6) | (array[7] << 7);
|
Wie das für PORTC aussieht, darfst Du Dir selbst ausdenken :-)
Für ein eigenes Programm würde ich mir das in eine Funktion packen, die
einen Teil des Arrays in ein Byte packt und zurück gibt:
1 | uint8_t array_range_to_byte(bool* array, size_t at_index);
|
Man müsste noch Fehlerbehandlung und Plausibilitätsprüfung betrachten:
Liegt at_index im Array? Was passiert, wenn ab at_index weniger als 8
Elemente vorhanden sind? Akzeptiert die Funktion besser nur Vielfache
von 8 (minus 1) als Index? Wie erhält der Aufrufer einen Fehler
rückgemeldet? Der Rückgabewert der Funktion ist ja schon in Benutzung .
Hmm, würde doch noch ein wenig anders aussehen ;-) Aber mal als Ansatz,
wenn das oben mal funktioniert...
Ansonsten schließe ich mich meinen Vorrednern an:
Walter S. schrieb:
> Ich empfehle ein C-Buch um Grundlagen zu lernen
mr. mo schrieb:
> Warum nimmst du bool Arrays?
Viele Grüsse,
Dirk