以前做飞思卡尔的时候总是很想知道c语言里是怎么做到位寻址的PORTA_BIT0为什么就代表A口的最低位了呢?于是就看头文件。里面关于这方面的描述总有一些一个共用体里定义了一个成员和一个结构体这种形式。但是一直没看懂是什么意思。今天终于在看一个程序的时候领悟了。记录一下,见笑了!比如
union
{
uint8 port;
struct
{
byte BIT0 :1;
byte BIT1 :1;
byte BIT2 :1;
byte BIT3 :1;
byte BIT4 :1;
byte BIT5 :1;
byte BIT6 :1;
byte BIT7 :1;
}Bits;
}PORTA;
定义了之后,就可以用PORTA.Bits.BIT0来表示最低位了。当然,结构体了各个位的顺序也是特定的,是由高位到低位的。冒号后面的数字表示当前成员占几位。这个数字不一定为1。比如
union
{
uint16 Word;
struct
{
uint8 low :8;
uint8 high :8;
}bytes;
}angle;
这里皆可以引用angle.bytes.low和angle.bytes.high来分别访问angle的高低字节了。
用户1637240 2014-10-3 11:53