ee168 发表于 2007-10-16 17:03:59

winavr 下 _BV() 是个什么函数?

winavr 下 _BV() 是个什么函数?

它放在什么头函数里面的,我怎么找不到的啊?

usbfish 发表于 2007-10-16 17:05:06

没记错的话,应该是位操作吧

1181zjf 发表于 2007-10-16 17:50:17

置位

ATmega32 发表于 2007-10-16 18:55:14

#define _BV(A)            (1<<(A))

asdfasdf 发表于 2007-10-16 19:25:16

_BV(PA1)   : 置位 PA1
~_BV(PA1): 清PA1

shark 发表于 2007-10-17 02:27:52

3楼正确,4楼错误。

bg4uvr 发表于 2007-10-17 08:28:47

_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)

ee168 发表于 2007-10-17 09:06:02

呵呵,谢谢各位了

shanyao 发表于 2010-1-8 15:35:33

了解了!
mark下

IamPolaris 发表于 2012-5-15 16:02:12

7楼是正解呀。

chenchengtao 发表于 2012-9-8 09:48:20

{:smile:}{:sad:}

qinpenglai 发表于 2012-9-10 22:00:40

—BV我一直认为是宏定义
页: [1]
查看完整版本: winavr 下 _BV() 是个什么函数?