问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于AVR单片机编程问题,为什么很多书上写设引脚为输入要DDRA&=OB11110111,DDRA=0X00 不行吗?求解~

发布网友 发布时间:2022-11-05 17:53

我来回答

4个回答

热心网友 时间:2023-10-23 08:08

你那么写不是不对,但是要看具体的情况.
你写的 DDRA = 0x00,是把A口全部设置成输入
而程序里的 DDRA &= 0B11110111,是把PA.3口设置成输入状态,至于A口其他引脚,原来是什么状态还保持什么状态,这样,只设置需要的PA.3,而不影响其他引脚.
DDRA &= 0B11110111这样写相对比较直观,不过看着不太舒服,如果写成
DDRA &= 0xF7;短小精悍,但是不直观.
其实,有个又直观,又短小的写法:
DDRA &= ~(1<<3); //将PA.3设置成输入,其他引脚不变
DDRA &= ~(1<<5); //将PA.5设置成输入,其他引脚不变

DDRA &= ~(1<<6); //将PA.6设置成输入,其他引脚不变追问额,那PA.3口设置成输出写DDRA=0XF7不行吗?为什么要加&呢(这个与有什么效果)?还有有些为什么加"|"啊,比如DDRA |=0B11110111

追答额,那PA.3口设置成输出写DDRA=0XF7不行吗?为什么要加&呢(这个与有什么效果)?还有有些为什么加"|"啊,比如DDRA |=0B11110111tangram_guid_1358952779097
举个例子,假设,原来的PA中,PA.0,PA.2是输入状态,PA.3是输出状态,现在我需要把PA.3改变为输入状态,那么,如果按照你的写法,DDRA = 0xF7,这句话的结果,PA.3的确如你所愿变成了输入,但是,同时,你也把PA.0,PA.2的状态改变了,这是不符合要求的.
你的C语言基础有待再扎实一下,&表示"位与"的意思,我随便举个例子:
例如: 0x55 & 0x67 = ?
这样算,把两个数字都打成二进制,然后一位一位的进行"与"运算,即双1才得1,有0则0
任何一位,不管它是1,还是0,只要是与 1相与,都保持不变,1&1 = 1,0&1 = 0
任何一位,不管它是1,还是0,只要是与 0相与,都要变成0 ,1&0 = 0,0&0 = 0
0x55 = 01010101
0x67 = 01100111
-------------------------------
01000101
所以 0x55 & 0x67 = 0x45
所以 DDRA &= 0xF7 ,0xF7 = 1111 0111
根据我说的,
任何一位,不管它是1,还是0,只要是与 1相与,都保持不变,1&1 = 1,0&1 = 0
任何一位,不管它是1,还是0,只要是与 0相与,都要变成0 ,1&0 = 0,0&0 = 0
所以,只有第三位变成了0,而其他位,因为是与"1"相与,所以保持原来状态不变.
所以,再达到第三位变成0的目的的同时,也没有改变其他位的状态.
而你后面提到的那个 "位或" ,就是"|"这个符号,与&的表现差不多,是按位进行"或"运算.
运算的原则是:双0才得0,有1即为1;
任何一位,不管它是1,还是0,只要是与 1相或,都要变成1, 1|1 = 1,0|1 = 1
任何一位,不管它是1,还是0,只要是与 0相或,都保持不变 ,1|0 = 1,0|0 = 0
所以,你明白:DDRA |=0B11110111为什么这么写了吗?

热心网友 时间:2023-10-23 08:09

采用读-修改-写操作,防止修改其它不应修改的位。

热心网友 时间:2023-10-23 08:09

简单些说&操作可以清0某些位而不会影响到其他位的原来状态,| 操作可以置1某些位而不影响其他位的原来状态。就是这样,一个是清0指定位,一个是置1指定位,两者都不会影响其他位的操作

热心网友 时间:2023-10-23 08:10

可以,
0B 开头是二进制的,0X开头是十六进制输入,都是一样的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
招商银行的美元天添金怎么样? 天添美蒸馒头为什么开裂呢 上海食堂送菜 邮政跨地区取款手续费多? 谁能告诉我邮政储蓄卡跨省取钱要不要收费啊? 自贡市龙盛世纪仿真模型制造有限公司公司简介 学PS真的很难吗 红烧萝卜牛筋 微信怎么转发公众号部分内容 转发公众号部分内容方法 微信公众号内的视频如何下载?一个F12搞定 作文:墙角里的父(母)爱400字 小学五年级作文墙角的爱 喝中药伤胃如何缓解喝中药伤胃缓解方法 每天一条正能量早安短句 每日一句的好句子 表白温柔短句? 烟火里的尘埃这首歌想要表达的是个什么意思? 很多人,终究会在时光里散场 好的说说触人心灵 好话大全 尘埃里的时光在哪里看 为什么说时光,是一首回眸的诗? 欠佳的反义词是什么 夏木友人帐漫画出到多少集了? our dream holiday英语作文? dream holiday 是什么意思 中国银行转账发送行无权限有什么影响 拥有惊人的集中力的感想 有没有像《你是天使我是谁》一样好听的青春类有声小说? 苹果手机下载什么软件可以查询手机信息 字节跳动上海几个公司 使用强生ob 不可以超过8小时? ob内置式卫生棉条使用时去除外导管不 迅速的吃一顿早餐。(用英语这么说)两种方式 英语翻译,快速的吃早餐 迅速吃晚饭 英文 有人去过昆山的台北风情拍过婚纱照吗?感觉怎么样啊。可以推荐几家昆山的影楼吗 与“心头好”意思相左的词是什么? 《经济学人》好文赏析:日本人口保卫战 有人知道压缩袋的手动抽气泵可以通用吗? 欲钱去买望鼠成龙的成语猜一生肖 收到大学录取通知书后的感受100字 关于举行英语短路大赛的通知书作文100字英语 怎么绑定公众 怎么和公众绑定啊!- 问一问 绵阳哪些外景适合拍婚纱照 精选复活优美句子 中秋去碧峰峡 高碑店玫瑰园二期的园林景观设计好吗?有什么亮点? 广元邦泰·天誉南区的景观设计是啥样的?有啥亮点? 王者荣耀怎么双开微信登录