社区导航

 

搜索
查看: 554|回复: 7
打印 上一主题 下一主题

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

[复制链接]

72

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

跳转到指定楼层
楼主
发表于 2020-2-2 22:28 | 只看该作者 |只看大图 |倒序浏览 |阅读模式

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

 

请问,这是 为什么 ?

谢谢!

 

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

 

附图

此帖出自单片机论坛
0

5706

TA的帖子

207

TA的资源

版主

Rank: 6Rank: 6

沙发
发表于 2020-2-3 12:00 | 只看该作者

P4实际上是两个寄存器,一个是输入,一个是输出,你读出来的未必是你写入的,所以没按预期工作,也是正常的。

上面仅是我的理解,因为51我也没用过。

EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,上班摸鱼场,释放压力好地方!商家勿入!加群暗号:喵


1071

TA的帖子

2

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

板凳
发表于 2020-2-3 13:01 | 只看该作者

你的这个表达式没有看明白。标准定义 sfr P4 = 0x90;        /* SFR for P4 */ 

sbit P4_0 = P4^0;

你的这种定义可以是语法错误P4=P4^0x38;


3549

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

4
发表于 2020-2-4 03:03 | 只看该作者

这么写应该是可以的,那个汇编窗口能再往上拉点就能看到汇编码了,你再贴一个汇编码

点评

谢谢版主!   P4=P4^0x38;对应的汇编代码如下图所示 版主凌晨3:.03回的帖子呀,辛苦了!   [attachimg]457785[/attachimg]  详情 回复 发表于 2020-2-4 11:08

72

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

5
 楼主| 发表于 2020-2-4 11:08 | 只看该作者
本帖最后由 yhyworld 于 2020-2-4 11:10 编辑
huo_hu 发表于 2020-2-4 03:03 这么写应该是可以的,那个汇编窗口能再往上拉点就能看到汇编码了,你再贴一个汇编码

谢谢版主!

 

P4=P4^0x38; 对应的汇编代码如下图所示

版主凌晨3:。03回的帖子呀,辛苦了!

 

P4=P4^0x38; 此行代码已执行,可是,P4的值还是0xC7,没有变化

 


1871

TA的帖子

1

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

6
发表于 2020-2-4 11:47 | 只看该作者

引入一个零食变量,直接赋值。

char pt = P4;

char pt2 = pt ^ 0x38;

P4 = pt2; // P4 = 0xff;

中间看变量变化。如果还是这样,考虑编译器的问题。

人已离开,无事别找,找也找不到。

72

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

7
 楼主| 发表于 2020-2-4 13:06 | 只看该作者

搞定了,可是原因还是不清楚,见附一


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

 

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

 

附图一


附图二


附图三


3549

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

8
发表于 2020-2-5 02:26 | 只看该作者
yhyworld 发表于 2020-2-4 11:08 huo_hu 发表于 2020-2-4 03:03 这么写应该是可以的,那个汇编窗口能再往上拉点就能看到汇编码了,你再贴 ...

这几天睡觉睡得黑白颠倒了,哈哈


您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( )

GMT+8, 2020-2-14 17:11 , Processed in 0.266703 second(s), 18 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表
湖北快3走势 快乐飞艇怎么玩 快乐赛车怎么买才能中 快乐赛车有没有分析的方法 快乐飞艇官方网站 快乐赛车注册网址 快乐赛车app下载 PC蛋蛋机器人 快乐飞艇全天计划图片 极速3D彩票