一、使用位定义的方法定义寄存器
1. 位域的定义与位域变量的说明
Struct 位域结构名
{
类型说明符 位域名1: 位域长度;
类型说明符 位域名2: 位域长度;
.......
类型说明符 位域名n: 位域长度;
};
说明:
1)位域的定义必须按从右向左的顺序,也就是说从最低位开始定义
2)一个位域必须存储在同一个字节中,不能跨两个字节。如果一个字节的剩余空间不够存放另一个位域时,
应该从另一个字节开始存放该域,如下例
3)位域的长度不能超过一个字节,也就是说一个位域不能超过8位
4)位域可以无位域名,这时,它只用作填充或者调整位置。无名的位域不能使用,如下例
Struct bs
{
int a: 4;
int : 0; // 空域
int b: 5; // 从下一个字节开始存放该域
int c: 3;
};
Struct bs
{
int a: 5;
int : 3; // 无名的位域无法使用
int b: 6;
int c: 2;
};
用位域方式定义SCICCR
Struct SCICCR_BITS
{
Uint16 SCICHAR: 3; // 2 : 0 字符长度控制位
Uint16 ADDRIDLE_MODE: 1; // 3 多处理器模式控制位
U