举例:
===================================================
/** INITRM - Initialization of internal ram position register; 0x0000 0010 **/ typedef union { byte Byte; struct { byte RAMHAL :1; byte :1; byte :1; byte RAM11 :1; byte RAM12 :1; byte RAM13 :1; byte RAM14 :1; byte RAM15 :1; } Bits; struct { byte :1; byte :1; byte :1; byte grpRAM_11 :5; }MergedBits; } INITRMSTR;
那么赋值方式就有三种,比如直接给INITRMSTR赋值
INITRMSTR = 0xEF;
也可以位字段赋值
INITRMSTR.Bits.RAM15 = 1;
也可以多位的位字段赋值
INITRMSTR.MergedBits.grpRAM_11 = 26
(26是十进制,转换成二进制是11010, 直接表示 RAM_11 = 0, RAM_12 = 1, RAM_13 = 0, RAM_14 = 1, RAM_15 = 1)
需要注意的是,在二进制中顺序是从右向左,在这个结构体中是从上向下.