Hola
La forma utilizando una unión seria asi:
typedef struct {
unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
unsigned b3:1;
unsigned b4:1;
unsigned b5:1;
unsigned b6:1;
unsigned b7:1;
}TIPO_ESTRUCT; //Creamos un nuevo tipo
union{
unsigned int8 Val;
TIPO_ESTRUCT bits; //Usamos el nuevo tipo para declarar bits
}var;
var.Val=0b01010101; //Le asignamos un byte completo
//Ahora podemos usar var.bits.bx para refereirnos a cada bit individual
printf("\n\r%u%u%u%u%u%u%u%u",var.bits.b7,var.bits.b6,var.bits.b5,var.bits.b4,var.bits.b3,var.bits.b2,var.bits.b1,var.bits.b0);
Aunque seria mas fácil hacer esto:
struct {
unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
unsigned b3:1;
unsigned b4:1;
unsigned b5:1;
unsigned b6:1;
unsigned b7:1;
}pru; //Declaramos pru como una estructura
bits=0b10101010; //Le pasamos un byte completo a la estructura
//Ahora podemos usar pru.bx para refereirnos a cada bit individual
printf("\n\r%u%u%u%u%u%u%u%u",pru.b7,pru.b6,pru.b5,pru.b4,pru.b3,pru.b2,pru.b1,pru.b0);
Saludos