делаю так:
/*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-битныими. Посоветуйте - как досклеить структуру.
|