#include <stdio.h>
// объявляю тип
typedef union
{
unsigned char pole8;
struct
{
unsigned char bit0 :1;
unsigned char bit1 :1;
unsigned char bit2 :1;
unsigned char bit3 :1;
unsigned char bit4 :1;
unsigned char bit5 :1;
unsigned char bit6 :1;
unsigned char bit7 :1;
}bits;
}bitfield_t;
bitfield_t my; // я создал объект где-то в памяти.
// А тебе надо попробовать так: register bitfield_t my @ 10
// Напишу макросы для удобства обращения к битам
#define BIT0 my.bits.bit0
#define BIT1 my.bits.bit1
#define BIT2 my.bits.bit2
#define BIT3 my.bits.bit3
#define BIT4 my.bits.bit4
#define BIT5 my.bits.bit5
#define BIT6 my.bits.bit6
#define BIT7 my.bits.bit7
int main( void )
{
my.pole8 = 0xaa; // работаю с char (сразу со всем битовом полем)
printf( "%02x\n",my.pole8); // aa
//.... а теперь обращение к каждому биту по имени:
BIT0 = 1;
printf( "%02x\n",my.pole8); // ab
BIT6 = 1;
printf( "%02x\n",my.pole8); // eb
}