iar c语言语法,终于搞明白了 IAR C 的位操作了,很方便!

在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;

}

。。。

希望对大家有帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值