делаю так:
/*defines.h*/
typedef union
{unsigned long DPT_all;
struct
{
unsigned char A8 :8;
unsigned int A3 :3;
unsigned int B8 :8;
unsigned int B3 :3;
unsigned int D :8;
}part;
}dpt_word;
/*main.c/*
dpt_word DPT_word;
DPT_word.DPT_all=0;
DPT_word.part.A8 = 255;
DPT_word.part.A3 = 0;
DPT_word.part.B8 = 255;
DPT_word.part.B3 = 0;
DPT_word.part.D = 255;
***
и в симуляторе смотрю DPT_all
вижу 0b11111111 00000111 11111000 11111111
танцы вокруг char и int привели пока только к тому, что первое трехбитное слово все-таки склеилось с соседними 8-битныими. Посоветуйте - как досклеить структуру.