微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 这个位操作语法看不懂,求解释!

这个位操作语法看不懂,求解释!

时间:10-02 整理:3721RD 点击:
我是在看一个单片机的书,有一句是这样写的:
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位操作的,你可能不知道其它位是干嘛的,这样操作就不会影响其它位,你也不需要去关心其它位具体是干嘛的,只对你当前需要赋值的位进行操作

说的有道理,非常谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top