微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机中的位域操作

单片机中的位域操作

时间:11-26 来源:互联网 点击:
在一个工程项目中,有时候我们经常会用到许多状态标志位。很多时候我们会去程序中定义这些变量,而这些变量往往占用了一个字节(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;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top