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

你可能感兴趣的:(avr 单片机中的指令_BV(i))