keil里位域的使用方法
1、结构体中使用位域是C语言的通用规范,基本上每一个合格的C编译器都应该支持,但这一方法存在一定缺陷,因为C语言并没有规定一个变量中位域的分配方向,也就是说你必须自己去保证你的程序在某个编译器中位域在某个变盯泪量中对应的具体位置。不过对于不需肤随要跨平台编译的程序这一缺陷就显得没那么重要了。
第一步:打开一个Keil工程,在其中定义一个无符号8位类型u8:
typedef unsigned char u8;

2、第二步:定义一个由位域构成的结构体TYPE_MY_BIT1:
typedef struct
{
u8 bit0:1; //第0位
u8 bit1:1; //第1位
u8 bit2:1; //第2位
u8 bit3:1; //第3位
u8 bit4:1; //第4位
u8 bit5:1; //第5位
u8 bit6:1; //第6位
u8 bit7:1; //第7位
}TYPE_MY_BIT;//定义带位域的结构体

3、第三步:对新类型进行测试,测试欠躲胆代码如下:
void main(void)
{
TYPE_MY_BIT testBit;
testBit.bit0 = 1;//给第0位赋值1
}

1、Keil提供一个名为sbit的关键词,它可以将定义在可位寻址区域的变量单独分配成一个位的变量,使得操作起来非常方便。
第一步:新建一个Keil工程,定义一个bdata区域的unsigned char便利,名为v:
bdata unsigned char v;//定义一个可位寻址的无符号字节型变量

2、第二步:将变量v的每个位通过sbit关键词赋予新的名称:
sbit v_bit0 = v^0;//将v的第0位分配给v_bit0
sbit v_bit1 = v^1;//将v的第1位分配给v_bit1
sbit v_bit2 = v^2;//将v的第2位分配给v_bit2
sbit v_bit3 = v^3;//将v的第3位分配给v_bit3
sbit v_bit4 = v^4;//将v的第4位分配给v_bit4
sbit v_bit5 = v^5;//将v的第5位分配给v_bit5
sbit v_bit6 = v^6;//将v的第6位分配给v_bit6
sbit v_bit7 = v^7;//将v的第7位分配给v_bit7

3、第三步:对上面的代码进行测试,比如:
v_bit0 = 1;//给v的第0位赋值1,等同于v |= 0x01;
v_bit3 = 0;//给v的第3位赋值0,等同于v &= ~(0x08);
