在AVR中 BIT是如何用的 有什么特点啊?

如:BIT(PB0)是什么意思? 如:PORTB|=BIT(PB0) 难道不可以直接给PORTB
赋值吗?

第1个回答  推荐于2016-12-01
在学习AVR中常常发现有如类似PORTn&=~BIT(PBn)给某位置高或底的语句,那么它是如何实现的呢?首先我们可以看看BIT在ICC编译器中是如何定义的,头文件 <macros.h>中关于BIT的定义如下,
#ifndef BIT
#define BIT(x) (1 << (x))
#endif

大家看到后便一目了然了,举个简单的例子,如PORTB&=~BIT(0x01)时,是对PINB2置低 电平。执行该语句时,首先将0x01左移一位变为0x02,之后 取反后变为0xfd在和PORTB寄存器原来的值相与在赋给PORTB,这样就保证对某位置低电位的操作本回答被提问者采纳
第2个回答  2009-04-10
2L复制答案,无耻!!

在AVR中 BIT是如何用的 有什么特点啊?
大家看到后便一目了然了,举个简单的例子,如PORTB&=~BIT(0x01)时,是对PINB2置低 电平。执行该语句时,首先将0x01左移一位变为0x02,之后 取反后变为0xfd在和PORTB寄存器原来的值相与在赋给PORTB,这样就保证对某位置低电位的操作

AVR bit 用法
这个最好用"移位赋值",大量使用BIT函数会增加系统开销,有可能导致出现不可预知的意外(亲身经历,改成直接赋值后就正常了),但BIT()可以让程序看起来更简洁,更一目了然。BIT(n)可以用(1<<n)完全代替,例如BIT(2)与(1<<2)是一样的

在AVR单片机的c程序中,那个BIT 运算到底是怎么算的...时间太久忘了...
PORTB&=~BIT(2); \/\/B2口置0,其余各端口状态不变

在AVR单片机中BIT(PB3)是什么意思
应该是一个宏定义,可以单独操作8位IO口中的某一个位。例如:BIT(PB3) =1 ;就是PB口第3位置位为1

新手avr位操作
首先,AVR单片机是不能支持直接像51单片机一样的为操作,也就是没有SETB 和CLR BIT的 因此要对其中某一位置1或者清零,就只能使用"或","与"来实现 PORTA|=0X01 等价于 PORTA=PORTA | 0X01,也就是把PORA端口的最低位置一 PORTA &=~0X01等级与 PORTA=PORTA& (~0X01)=PORTA& 0XFE,最低位...

AVR(ATMEGA16)的一个语句
DDRC是设置PORTC的输入输出状态,而BIT(n)是设PCn脚输出,如BIT(0)是设PC0脚输出,因此该语句是设PC0,PC1和PC2脚输出

avr 中 有个句子 bit position ;然后就没了 这是什么意思
例如 字元位置 是 7, 那么 对应的 mask 是 0x80.bool my_bool = 1;SOME_REGISTER = (my_bool << 7); \/\/1 左移7位 得 mask 0x80.如果程序里 用了 bit position; 那么可能是声明 变量名 position 是 bit 型变量。我不熟悉avr, 不清楚 bit 型 是否 avr 里有定义,或者是程...

请教一下AVR单片机中有一段程序是PORTB&=BIT(2);其中BIT(2)是什么意思...
BIT(2)意思就是“ 1<<2 ”原来是0b00000001,现在是0b00000100 而PORTB&=BIT(2);就是 PORTB=PORTB&(0b00000100) 按位与 就是PORTB寄存器内对应0b00000100中1的那位的值保留,剩下全部清零,说的够详细的了吧 呵呵

AVR单片机串口代码while(!(UCSR0A&(BIT(UDRE0))) ;
UDREO既不是1,也不是0 ,而是5 。UCSR0A的Bit5-为1说明发送缓冲器为空,可以把下一个要发送的数据放进去。while(!(UCSR0A&(BIT(UDRE0))) ;\/\/ 等待发送缓冲区空 UDR0=data; \/\/ 发送

AVR单片机设置通讯
Bit2:1-UCSZ01:0:字符长度,当UCSZ02为0时,00表示5位,01表示6位,10表示7位,11表示8位.当UCSZ02为1时,11表示9位.(UCSZ02为UCSR0B里的一位寄存器 由上可知UCSR0C寄存器的BIT2:1位控制数据传输的位数,将此两位设为10就表示7位。不考虑其它位,UCSR0C值用二进制表示应为0xxxx10x(x为...

相似回答