搜索
bottom↓
回复: 24

io口定义求解释

[复制链接]

出0入0汤圆

发表于 2012-11-14 16:51:47 | 显示全部楼层 |阅读模式
DDRB |= (1 << DDB0);

PORTB = (1 << PB0);

PORTB |= (1 << PB0);

这个会在IO口定义的时候用到 后两句有什么区别呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-11-14 16:53:34 | 显示全部楼层
区别很明显 PORTB = (1<<PB0)改变了PORTB的八个口的工作状态
PORTB |= (1<<PB0) 却只改变了最低位PB0的状态

出0入0汤圆

发表于 2012-11-14 17:04:53 | 显示全部楼层
PORTB = (1 << PB0);  //只有写IO一个操作
PORTB |= (1 << PB0); // 包含读IO和写IO两个操作,等价于:
                                   //  tmp = PORTB;    //读
                                   //  PORTB = tmp+ (1 << PB0);   //写

出0入0汤圆

发表于 2012-11-14 22:15:14 | 显示全部楼层
PORTB = (1 << PB0);  //只将最低位PB0置1,其他位全部强制置0
PORTB |= (1 << PB0); // 只将最低位PB0置1,其他位保持原有状态,因为0与任何值相“或”都会保持原有的值

出0入0汤圆

发表于 2012-11-14 22:17:36 | 显示全部楼层
PORTB |= (1 << PB0) 等于 PORTB = PORTB | (1 << PB0), are you 明白?

出0入0汤圆

发表于 2012-11-15 22:39:41 | 显示全部楼层
kao。。。。。。。。首先PB0=0你知道吧,然后。。。1<<PB0-------->1<<0
PORTB = (1 << PB0);---------->PORTB=0X01;

PORTB |= (1 << PB0);----------->PORTB=PORTB|0X01;相当于把PB0置1.。。。。。。。。。。。。。。。。。

出0入0汤圆

发表于 2012-11-16 14:40:42 | 显示全部楼层
PORTB = (1 << PB0); 赋值

PORTB |= (1 << PB0); 置1

出0入0汤圆

 楼主| 发表于 2012-11-17 13:39:02 | 显示全部楼层

出0入0汤圆

发表于 2012-11-29 00:24:37 | 显示全部楼层
本来想回答的发现好多人都回答得很好了 只好做罢

出0入0汤圆

发表于 2012-12-3 19:32:33 | 显示全部楼层

DDRB |= (1 << DDB0);

PORTB = (1 << PB0);//更改8位,结果portb = 1

PORTB |= (1 << PB0);//只更改1位,结果portb= xxxx xxx1,x为原位值。

出0入0汤圆

发表于 2012-12-3 19:45:46 来自手机 | 显示全部楼层
不知道楼上想说什么,,,,

出0入0汤圆

发表于 2012-12-3 19:46:27 来自手机 | 显示全部楼层
不知道楼上想说什么,,,,

出0入0汤圆

发表于 2012-12-3 19:55:47 | 显示全部楼层
PORTB = (1 << PB0);==  PORTB=1;

PORTB |= (1 << PB0);== PORTB|=1;
一个是PORTB直接赋值,一个是或值。  

出0入0汤圆

发表于 2012-12-4 14:17:16 | 显示全部楼层
PORTB |= (1 << PB0);<==>PORTB = PORTB | (1 << PB0);基础C语言……

出0入0汤圆

发表于 2012-12-5 22:05:28 | 显示全部楼层
看看移位操作与 与或非 操作,以后经常会用到的;上面的回答都很好,如果你还看不明白,真得好好补补了

出0入0汤圆

发表于 2012-12-5 22:20:27 | 显示全部楼层
与相当于 乘
或相当于 加

出0入0汤圆

发表于 2012-12-5 23:41:03 | 显示全部楼层
看来我学到了不少!!!!

出0入0汤圆

发表于 2012-12-5 23:43:07 | 显示全部楼层
patli 发表于 2012-12-3 19:32
DDRB |= (1

   大哥,你和四楼说的怎么不一样,到底哪个对????

出0入0汤圆

发表于 2012-12-5 23:58:52 来自手机 | 显示全部楼层
本帖最后由 longwu537 于 2012-12-6 00:03 编辑
阿莫小子~ 发表于 2012-12-5 22:05
看看移位操作与 与或非 操作,以后经常会用到的;上面的回答都很好,如果你还看不明白,真得好好补补了 ...


哎吆,不错哦!
to楼主:楼上讲的都没错。PORTB=1<<PB0表示把1向左移0位同时赋给PORTB,结果是PORTB=1。第二种是用1和PORTB的当前值相或,只改变了PORTB的最低位,即最低位置1。4楼和10楼说法都是一样的意思只是描述不同

出0入0汤圆

发表于 2012-12-6 08:22:32 | 显示全部楼层
maximus811009 发表于 2012-11-14 22:15
PORTB = (1

这个回答比较通俗,同意

出0入0汤圆

发表于 2013-1-14 21:21:47 | 显示全部楼层
在C语言中“=”是赋值运算符,
“|=”是先进行或操作,再赋值。

出0入0汤圆

发表于 2013-1-14 21:58:39 | 显示全部楼层
用我的avr io 宏定义吧。超级简单 和51差不多

出0入0汤圆

发表于 2014-12-13 16:14:45 | 显示全部楼层
第二句:PORTB=(1<<PB0), 将PortB第0位置为1,高七位清零。相当于PortB=0x01;
第三句:PORTB|=(1<<PB1),只将PortB第0位置为1,高七位不变。相当于PortB=PortB|0x01;

出0入0汤圆

发表于 2014-12-13 20:51:44 | 显示全部楼层
PORTB = (1 << PB0);相当于PORTB = 0x01;PORTB的最低位置1,高7位清零。
PORTB |= (1 << PB0);PORTB的最低位置1,高7位为原来的值保持不变。

出0入0汤圆

发表于 2014-12-13 23:42:16 | 显示全部楼层
同意楼上观点
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 05:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表