首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于寄存器的定义

关于寄存器的定义

typedef union uPORTA
  {
  UINT8  byte;
  struct
    {
    UINT8 pta0    :1;     /*i/o port pins */
    UINT8 pta1    :1;
    UINT8 pta2    :1;
    UINT8 pta3    :1;
    UINT8 pta4    :1;
    UINT8 pta5    :1;
    UINT8 pta6    :1;
    UINT8 pta7    :1;
    }bit;
  }tPORTA;


上面的冒号是什么意思啊


是不是只有在codewarrior中才支持这种操作?

代表位定义吧,
不断学习,摸索中进步!
冒号可以理解成结构体成员访问的说明符,说明该结构体成员是访问1个bit
按照从低位到高位的顺序排列,这样整个结构体变量bit占用8bit,一个字节的空间。

加上冒号使得编译器只会分配一个bit的空间给此成员变量,因为整个寄存器用union类型定义,所以这样做可以减少对内存的浪费。

这样在从C语言编译成汇编语句后,对位的操作就会转成对应bset或者bclr语句。

应该不是CW独家支持这种用法,很多编译器都会支持的。

seuafu2005说的对

seuafu2005说的对,
标准C语言就支持位域。
经常翻翻讲标准C的书,也很有好处的。

 边凿磨边用
 
 经验同分享
返回列表