1001|7

115

帖子

0

资源

一粒金砂(中级)

执行代码P4=P4^0x38后,为何 P4未变? [复制链接]

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

 

请问,这是 为什么 ?

谢谢!

 

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

 

附图

无标题.png

此帖出自单片机论坛

回复

5907

帖子

209

资源

版主

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

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

个人签名

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


回复

1376

帖子

2

资源

纯净的硅(高级)

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

sbit P4_0 = P4^0;

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


回复

3793

帖子

0

资源

版主

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

点评

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

回复

115

帖子

0

资源

一粒金砂(中级)

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

谢谢版主!

 

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

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

 

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

 

无标题.png


回复

2885

帖子

1

资源

五彩晶圆(初级)

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

char pt = P4;

char pt2 = pt ^ 0x38;

P4 = pt2; // P4 = 0xff;

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

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

回复

115

帖子

0

资源

一粒金砂(中级)

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


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

 

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

 

附图一

无标题2.png
附图二

无标题1.png
附图三
无标题3.png


回复

3793

帖子

0

资源

版主

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

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


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

最新文章 更多>>
    关闭
    站长推荐上一条 1/7 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表