查看: 1073|回复: 1
打印 上一主题 下一主题

IAR C 的位操作

[复制链接]
跳转到指定楼层
沙发
发表于 2014-8-7 15:07:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看着某大神做的不错,分享一下;在IAR的iomacro.h里面有这样一段说明:
#define SFR_B_N(_ADDR, _NAME, _B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0) \
                 SFR_B_BITS_N(_NAME, _ADDR, \
                              Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
                              _B0,_B1,_B2,_B3,_B4,_B5,_B6,_B7)
/*
  SFR_B_N(0x3F,SREG,I,T,H,S,V,N,Z,C) Expands to:
  __io union {
              unsigned char   SREG;          // The sfrb as 1 byte
              struct {                        // The sfrb as 8 bits
                      unsigned char SREG_Bit0:1,
                                    SREG_Bit1:1,
                                    SREG_Bit2:1,
                                    SREG_Bit3:1,
                                    SREG_Bit4:1,
                                    SREG_Bit5:1,
                                    SREG_Bit6:1,
                                    SREG_Bit7:1;
                     };
              struct {                        // The sfrb as 8 bits
                      unsigned char SREG_C:1,
                                    SREG_Z:1,
                                    SREG_N:1,
                                    SREG_V:1,
                                    SREG_S:1,
                                    SREG_H:1,
                                    SREG_T:1,
                                    SREG_I:1;
                     };
             } @ 0x3F;
*/
然后在iom162.h里面引用这个定义:(我用的是M162)
。。。
SFR_B_N(0x07,PORTE,Dummy7,Dummy6,Dummy5,Dummy4,Dummy3,PORTE2,PORTE1,PORTE0)
SFR_B_N(0x06,DDRE,Dummy7,Dummy6,Dummy5,Dummy4,Dummy3,DDE2,DDE1,DDE0)
SFR_B_N(0x05,PINE,Dummy7,Dummy6,Dummy5,Dummy4,Dummy3,PINE2,PINE1,PINE0)
。。。
在程序里面的用法是:
。。。
        if(PINE_PINE2)
        {
            PORTE_PORTE2 = 0;
        }
        else
        {
            PORTE_PORTE2 = 1;
        }
。。。
或者:
。。。

        if(PINE_Bit2)
        {
            PORTE_Bit2 = 0;
        }
        else
        {
            PORTE_Bit2 = 1;
        }
。。。


回复

使用道具 举报

板凳
发表于 2014-8-7 16:16:33 | 只看该作者
如此高大上..有点不好理解
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表