这个位操作语法看不懂,求解释!
时间:10-02
整理:3721RD
点击:
我是在看一个单片机的书,有一句是这样写的:
PB_ODR = (1<<1) | (1<<0);
看不懂,求解释。
.
PB_ODR = (1<<1) | (1<<0);
看不懂,求解释。
.
1<<1 就是10,也就是2
1<<0,就是01,也就是1
| 相当于+,也就是3
左移+按位或,这样就只对要操作的位进行置1,不影响其它的位
结果就是3,二进制就是11 ?
这一句用在单片机上完整的意思是什么呢?
这一句用在单片机上完整的意思是什么呢?
为啥不直接赋值呢,要绕这么大个圈子
PB_ODR = (1<<1) | (1<<0);
如果我这么定义你肯定能看懂
#define BIT(X) (1 << X)//给B端口的第X位赋值为1
#define LED_ON PB_ODR &= ~BIT(X)//将第X位清0
#define LED_OFF PB_ODR |= BIT(X)//将第X位置1
PB_ODR = BIT(1)| BIT(0);
大概其就是这个意思啦。
可能是因为在阅读上有一些特殊的含义
继续求指导
就是一种习惯,有些芯片就是要16位或者32位操作的,你可能不知道其它位是干嘛的,这样操作就不会影响其它位,你也不需要去关心其它位具体是干嘛的,只对你当前需要赋值的位进行操作
说的有道理,非常谢谢