ATmega16问题

[复制链接]
1555|7
 楼主| lordblessing 发表于 2014-2-24 15:14 | 显示全部楼层 |阅读模式
PORTB|=(1<<0)为什么不直接写成PORTB=OX01这其中有什么说道吗?
wangch_sh 发表于 2014-2-24 15:27 | 显示全部楼层
位操作,更直观。
比如写PORTB|=(1<<0)|(1<<4)|(1<<6);
比写PORTB=0X51可以方便看出哪几位置一。
 楼主| lordblessing 发表于 2014-2-24 17:08 | 显示全部楼层

谢谢  PORTB=(1<<0)这样也行吧  为什么要或呢?
NE5532 发表于 2014-2-24 21:25 | 显示全部楼层
因为只需要操作其中1个位呀,直接用等号来做,不是把不想改变的位也一起改变了么。
sjnh 发表于 2014-2-25 07:20 | 显示全部楼层
楼上说的对,
PORTB|=(1<<0),相当于PORTB = PORTB | (1<<0); 只是把PB0设置成高,不影响其他7个IO口
如果是PORTB=(1<<0),其他7个IO口都成了低。
z755924843 发表于 2014-2-25 21:19 | 显示全部楼层
版主正解,相对PORTB = PORTB | (1<<0);代码量少。
liang5319 发表于 2014-2-25 22:08 | 显示全部楼层
PORTB|=(1<<0)  和  PORTB=OX01是不一样的,PORTB|=(1<<0)是把PB0置高,PB口的其他位,该是0还是0,该是1还是1.。
但是 PORTB=OX01,这个吧PB0置1,但是把其他都置零了。
所以呢,这两个不是随便用的哦!
wangtianmingok 发表于 2014-2-26 16:26 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部