Битовые поля по стандарту упаковываются группами в 16 бит (или в
группу равную int - тут я забыл, у меня было это одинаково) Вот как
у меня union{
struct { //
unsigned short ErrorTIME :1; ///< \brief 0й бит 1- (TRUE)- Ошибка при опросе ИМС времени
unsigned short PUSTO :1; ///< \brief 1й бит 1- (TRUE)- Ошибки в таймере нет
unsigned short ErrorULIC :1; ///< \brief 2й бит 1- (TRUE)- Ошибка при опросе уличного датчика темп.
unsigned short ErrorDOP :1; ///< \brief 3й бит 1- (TRUE)- Ошибка при опросе дополнительного датчика темп.
unsigned short ErrorTATM :1; ///< \brief 4й бит 1- (TRUE)- Ошибка при опросе дополнительного датчика темп.
unsigned short ErrorPUSTO :3; ///< \brief й бит 1- (TRUE)-
unsigned short RedyTIME :1; ///< \brief 0й бит 1- (TRUE)- Готовы данные с ИМС времени
unsigned short TimerOn :1; ///< \brief 1й бит 1- (TRUE)- Таймер включон
unsigned short RedyULIC :1; ///< \brief 2й бит 1- (TRUE)- Готовы данные с уличного датчика темп.
unsigned short RedyDOP :1; ///< \brief 3й бит 1- (TRUE)- Готовы данные с дополнительного датчика темп.
unsigned short RedyTATM :1; ///< \brief 4й бит 1- (TRUE)- Готовы данные с дополнительного датчика темп.
unsigned short RedyPUSTO :3; ///< \brief й бит 1- (TRUE)- 1- (TRUE)-
};
struct {
unsigned char Error;
unsigned char Redy;
};
unsigned short All;
} TDatchikiFlag;
ErrorPUSTO и RedyPUSTO - это не используемые биты, причом RedyPUSTO можно было не писать :)