单片机BV用法
#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