Conosci i bitfield?

Lo sapevo che si poteva fare, però l'avevo studiato moooooooooooolti anni fa in qualche libro di C e onestamente
avendo rispolverato il C di recente me ne ero anche dimenticato smiley-roll-blue

Sono di quelle cose che studi ma consideri di poca importanza, anche perché sul pc ordierni di ram c'è a iosa, ma qui la ram scarsegia e lo sketch non gallegia :P.

ottimo, non sapevo che si potessero dimensionare delle variabili in bit! farò tesoro del suggerimento!
ma i : si devono usare per forza all'interno di una struct?

Ho cercato un tipo di dato bit e non l'ho trovato, so che altri compilatori hanno questi tipo ma avr-gcc no.

Quindi deve essere un membro di una struttura, del resto è pure comodo mettere insieme dei flag nella stessa struttura anziché una decina o più variabili sparse a destra e a manca.

Si può anche usare come variabile di ritorno per le funzioni, e non ci dovrebbe essere consumo di clicli cpu quando fa la copia di ritorno perché in effetti deve compiare solo i membri che se sono 8 è come ritornare un byte.

La struttura si può anche inizializzare così
struct lcdpin {
db0:1;
db1:1;
db2:1;
db3:1;
} lcdport { 0,0,0,0 };

E' vero, però occupano un solo byte. Ho visto che ci sono le funzioni BitRead, BitWrite, etc.. per lavorare sui byte ma la tua soluzione sembra interessante e pulita.

Non conosco queste funzioni, probabile siano delle macro ed in tal caso sono rapide in esecuzione più delle funzioni.