结构体和共用体操作(零存整取)
通过结构体和共用体(联合体)对寄存器进行位操作和整体操作实现零存整取。
//定义一个8位寄存器 M0
typedef struct
{
unsigned char M0_L : 4;//寄存器低4位
unsigned char M0_H : 4;//寄存器高4位
} Reg_t;
typedef union
{
Reg_t RegM0;
unsigned char ReadRegM0;
} RegMod_t;
int main(void)
{
RegMod_t MyReg;//定义联合体
MyReg.RegM0.M0_H = 0b1011;//赋值操作
MyReg.RegM0.M0_L = 0b0101;//赋值操作
/*访问结构体的方式*/
unsigned char*pt;
pt = (unsigned char*)&MyReg.RegM0;
printf("结构体的方式访问:The value of M0 is %#x\n",*pt);
//或者
Reg_t *pt2;
pt2 = &MyReg.RegM0;
printf("结构体的方式访问:The value of M0 is %#x\n",*pt2);
/*访问共用体的方式*/
printf("共用体的方式访问:The value of M0 is %#x\n",MyReg.ReadRegM0);
return 0;
}
运行结果如图: