×
嵌入式 > 嵌入式开发 > 详情

单片机中的位域操作

发布时间:2020-09-02 发布时间:
|
在一个工程项目中,有时候我们经常会用到许多状态标志位。很多时候我们会去程序中定义这些变量,而这些变量往往占用了一个字节(byte),然而我们需要的仅仅是一个状态位(bit)。这样去定义变量不仅浪费了存储空间,而且不利于变量管理。下面,介绍一种使用位域的方法定义状态标志的方法:

//定义联合体,同时命名别名为function

typedef union
{
u8 flagByte;
struct
{
u8 b0:1;
u8 b1:1;
u8 b2:1;
}bits;

}function;
function myflag;//定义联合体变量myflag

//变量操作

union _SYS_STATUS_
{
struct
{
unsignedm0: 1;

unsignedm1: 1;

unsignedm2: 1;

unsignedm3: 1;

unsignedm4: 1;

unsignedm5: 1;

unsignedm6: 1;

unsignedm7: 1;

unsignedi0: 1;

unsignedi1: 1;

unsignedi2: 1;

unsignedi3: 1;

unsignedi4: 1;

unsignedi5: 1;
unsignedi6: 1;

unsignedi7: 1;


};
struct
{
unsigned intsysStuAll;
};
}
externunion _SYS_STATUS_ sSysStatus;

void tempp()
{
myflag.flagByte=0;
myflag.flagByte=0xff;
myflag.bits.b0=0;
myflag.bits.b1=0;
}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
CC-Link现场总线及应用实例