单片机的位操作问题

2020-01-27 11:39发布

位于单片机内存的80001011H处,寄存器长度为1字节,需要改写其bit1为0,bit5为1,(最低位为bit0)其他位不变,怎么操作啊,可以分两次操作的么,先改写其中的一位,然后再改写剩下的一位,网上的都是只改写一位的啊,怎么处理啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
犬火
1楼-- · 2020-01-28 14:38
chencc8 发表于 2013-7-18 16:33
char *p = 0x80001011;
*p = (*p | (char)(1

你好像搞反了吧,位5置一,位1清零啊
犬火
2楼-- · 2020-01-28 16:49
wjwjwjwj98 发表于 2013-7-18 15:49
单片机内存的80001011H
地址是不是有误?

这是个面试题目啊,有没有错误我就不知道了啊
犬火
3楼-- · 2020-01-28 17:33
 精彩回答 2  元偷偷看……
dz20062008
4楼-- · 2020-01-28 20:58
直接使用可以位寻址的单元使用布尔操作就可以了,或者使用逻辑操作,先用逻辑与清零你所要修改的位,然后用另一个其余位为0修改位为你所需的数的一个数进行或操作就可以了
chencc8
5楼-- · 2020-01-28 22:24
犬火 发表于 2013-7-18 22:10
你好像搞反了吧,位5置一,位1清零啊

没仔细看~
unsigned的话加更好,不加也没问题,反正&|操作对有无符号不敏感。加的话(1 << 5)也要改成(1u << 5u)才显得正规点。
犬火
6楼-- · 2020-01-28 22:39
chencc8 发表于 2013-7-19 10:29
没仔细看~
unsigned的话加更好,不加也没问题,反正&|操作对有无符号不敏感。加的话(1  ...

但当中产生移位右移的时候就会出问题,不过基本都是左移的

一周热门 更多>