avr 单片机中的指令_BV(i)

关于这个_BV(i)指令的统一解释是:

#define _BV(bit) (1 << (bit))
_BV()是把1左移N位的函数。
_BV(7)相当于(1<<7)
本身和置位还是清零没有关系。不过这个函数,实际上却真的大多数应用于位的置位或清零。
比如:
PORTA|=_BV(PA7)
PORTB&=~_BV(PB6)
PORTC^=_BV(PC5)
分别相当于:
PORTA = PORTA | (1<<PA7)              //"|"是位或运算符
PORTB = PORTB & (~(1<<PB6))           //"&"是位与运算符
PORTC = PORTC ^ (1<<PC5)              //"^"是位异或运算符

 

下面举几个例子分析:

1、假如PORTB=0xFF

 PORTB = ~_BV(5);    //执行BV(5),-BV=01000000,执行~运算符以后,PORTB=10111111

2、假如PORTD=0x00

PORTD^=_BV(PD7);  //执行BV(PD7)后,-BV=10000000,则PORTD^_BV=00000000^10000000=10000000

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值