【电子资讯】位域实例讲解
位域定义与结构定义相仿,其形式为:
struct 位域结构名
{位域列表};
其中,位域列表的形式为:
类型说明符 位域名:位域长度
例如:
这里成员列表的位域的类型都是unsigned,则其成员列表的类型必须是unsigned或signed中之一。
x和y变量均为占用一个字节的存储空间。定义后可以直接使用其为变量,例如:
x.bit0=1;
y.bit2=1;
由于ICCAVR集成开打环境中,编译器没有充分利用AVR单片机对于寄存器所具有的位寻址功能,在使用位变量结构体时,编译器将位变量结构体定位于数据存储器而不是寄存器中。因此生成的代码量大,执行效率低,这也是ICCAVR目前的一个不足之处。
ICCAVR集成开发环境的头文件macros.h中,定义了一个“#define BIT(x)(1<<(x))”宏,用该宏来操作位变量,编译后生成的代码质量更高。在使用BIT(x)之前,应在源文件中加入“#include”编译预处理命令。
电子街推荐阅读