c语言中置位作用,[转载]C语言中常用的置位操作(置0或置1)

写成宏,方便移植

#define setbit(x,y) x|=(1<

//将X的第Y位置1

#define clrbit(x,y) x&=~(1<

方法二:

C语言位运算除了可以提高运算效率外,在嵌入式系统的编程中,它的另一个最典型的应用,而且十分广泛地正在被使用着的是位间的与(&)、或(|)、非(~)操作,这跟嵌入式系统的编程特点有很大关系。我们通常要对硬件寄存器进行位设置

譬如,我们通过将AM186ER型80186处理器的中断屏蔽控制寄存器的

第6位设置为0(开中断2),最通用的做法是:

#define INT_I2_MASK 0x0040

wTemp = inword(INT_MASK);

outword(INT_MASK, wTemp &~INT_I2_MASK);

而将该位设置为1的做法是:

#define INT_I2_MASK 0x0040

wTemp = inword(INT_MASK);

outword(INT_MASK, wTemp | INT_I2_MASK);

判断该位是否为1的做法是:

#define INT_I2_MASK 0x0040

wTemp = inword(INT_MASK);

if(wTemp & INT_I2_MASK)

{

}

方法三:

int a|=(1<

a|=(1<<4)

int b&=~(1<

x=x|0x0100 //把第三位置1

x=x&0x1011 //把第三位置0

#define BitGet(Number,pos) ((Number) >> (pos)&1))

//用宏得到某数的某位

#define BitGet(Number,pos) ((Number) |= 1<

//把某位置1

#define BitGet(Number,pos) ((Number) &= ~(1<

//把某位置0

#define BitGet(Number,pos) ((Number) ^= 1<

//把Number的POS位取反

典型操作有:

WTCON |= (1 << 5)

//WTCON的第五位清1

WTCON &= ~(1 << 5)

//WTCON的第五位清0

补充:

//常用函数

#define

SETBIT(C_Sou,C_Bit) (C_Sou |= (0x00000001 << C_Bit))

#define

CLRBIT(C_Sou,C_Bit) (C_Sou &= ~(0x00000001 << C_Bit))

#define

GETBIT(C_Sou,C_Bit) ((C_Sou & (0x00000001 << C_Bit))?1:0)

上述方法在嵌入式系统的编程中是非常常见的,我们需要牢固掌握。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值