执行代码P4=P4^0x38后,为何 P4未变?

2020-03-06 19:43发布

如下图,C8051F580在keil4中仿真。
P4端口的原值为0xC7,执行 P4=P4^0x38 代码后,应该是:0xFF。
可是,实际的执行结果 却未变,仍然是0xC7 !

请问,这是 为什么 ?

谢谢!

备注:
0xC7 -> 1100 0111
0x38 -> 0011 1000
0xFF -> 1111 1111

附图
无标题.png

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
oufuqiang
1楼-- · 2020-03-06 20:34
你记错运算符了,或是|,异或是^
ElectronF0
2楼-- · 2020-03-07 01:43
oufuqiang 发表于 2020-2-2 23:41
你记错运算符了,或是|,异或是^

谢谢!

我需要的就是: 异或^;而非 或|;

巧合的是 ,此时,^和|的结果一样
ElectronF0
3楼-- · 2020-03-07 06:02
搞定了,可是原因还是不清楚,见附一

把XBR2初始化这行代码 打开就可以了,见附二

可是XBR2和P4毫无关系呀,好奇葩,见附图三
P0-P3都有对应的XBR,唯独P4没有

附图一
无标题2.png

附图二
无标题1.png

附图三
无标题3.png

幸福至上
4楼-- · 2020-03-07 09:17
可以先把P4的值先读到一个u8变量,异或运算完再写回P4,看是读取、运算、输出的哪个环节出的问题。
airwill
5楼-- · 2020-03-07 12:43
 精彩回答 2  元偷偷看……

一周热门 更多>