打印
[MCU]

这句为什么要这样写啊?

[复制链接]
689|40
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiahy|  楼主 | 2019-11-8 21:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
lizye| | 2019-11-8 21:36 | 只看该作者
有啥问题?

使用特权

评论回复
板凳
shimx| | 2019-11-8 21:39 | 只看该作者
为什么不直接写成PORTB |=0x??格式呢?

使用特权

评论回复
地板
jiaxw| | 2019-11-8 21:41 | 只看该作者
看自己的使用习惯吧

使用特权

评论回复
5
spark周| | 2019-11-8 21:46 | 只看该作者
原来是习惯问题啊,我还以为又是什么抠时间的问题呢

使用特权

评论回复
6
jiahy|  楼主 | 2019-11-8 21:50 | 只看该作者
嗯,或者又是些老鸟故作深沉的伎俩 呵呵

使用特权

评论回复
7
spark周| | 2019-11-8 21:53 | 只看该作者

1<<2表示bit2
直观,可读性强,不容易出错

使用特权

评论回复
8
liliang9554| | 2019-11-8 21:56 | 只看该作者

对,也不用自己计算

使用特权

评论回复
9
午夜粪车| | 2019-11-8 21:58 | 只看该作者

比如bit10是多少,至少你要计算一下才知道是多少,但是(1<<10)是不会错的

使用特权

评论回复
10
zhaoxqi| | 2019-11-8 22:01 | 只看该作者

楼上几位一句道破天机,哈哈

使用特权

评论回复
11
huangchui| | 2019-11-8 22:07 | 只看该作者
PORTB |=(1u<<2) 保险点

使用特权

评论回复
12
jiajs| | 2019-11-8 22:10 | 只看该作者
编译器执行,不影响效率,看你习惯了

使用特权

评论回复
13
zhanghqi| | 2019-11-8 22:12 | 只看该作者


这样写容易读,一下就看出操作的事B口的第2脚,而且不影响执行效率,因为这个左移是编译器完成的。

使用特权

评论回复
14
zhenykun| | 2019-11-8 22:16 | 只看该作者
这是对单独的某一位进行操作,不会影响PORTB口的其它位。

使用特权

评论回复
15
wyjie| | 2019-11-8 22:19 | 只看该作者
C语言中移位操作要比乘法运算和逻辑运算要快,所以这样写!其实你自己说的扣时间是对的!

使用特权

评论回复
评论
R2D2 2019-11-10 15:03 回复TA
胡说八道。单片机不存在移位运算,编译期间已经把1<<2翻译成4了。 
16
jiahy|  楼主 | 2019-11-8 22:23 | 只看该作者
谢谢各位指点,我非常明白了

使用特权

评论回复
17
wyjie| | 2019-11-8 22:34 | 只看该作者

PORTB |=(1<<2)
首先1<<2,你要懂,就是0000 0001移位两次是多少??就是BIT2,就是0000 0100,也就是把这个第三位取或,如果PORTB第三位是个1,那就是1,不是1就变成1,其他位不变。

使用特权

评论回复
18
liliang9554| | 2019-11-8 22:44 | 只看该作者
这样只是改变PB1这个IO

使用特权

评论回复
19
wyjie| | 2019-11-8 22:48 | 只看该作者
这样是单一操纵IO

使用特权

评论回复
20
jiajs| | 2019-11-8 22:52 | 只看该作者
移位计算是最快的

使用特权

评论回复
评论
R2D2 2019-11-10 15:02 回复TA
胡说八道。不存在移位运算,编译期间已经把1<<2翻译成4了。 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

862

主题

9861

帖子

4

粉丝