Můžeš to zkusit taky takhle :
typedef struct
{
unsigned char B0:1;
unsigned char B1:1;
unsigned char B2:1;
unsigned char B3:1;
unsigned char B4:1;
unsigned char B5:1;
unsigned char B6:1;
unsigned char B7:1;
} BAJT;
Pak si nadefinuješ :
BAJT Bity;
Pak k jednotlivým bitům můžeš přistupovat :
Bity.B0=1;
Bity.B1=0;
atd.
Nejsem si jistý pořadím jednotlivých bitů v “typedef” (B0->B7 nebo B7->B0).
Zápis celého bytu pak ale musíš provést přes memset :
memset((void*)&Bity, <zapisovaná hodnota>, sizeof(Bity));
V programu se pak o maskování nemusíš starat, máš jednodušší zápis, o maskování se stará překladač.
Mám to použito v programu napsaným v AVR Studiu 4.19 + WinAVR.