[51单片机] C51如何根据一个立即数访问相应地址的SFR?????

[复制链接]
 楼主| ss掷弹专业 发表于 2015-11-3 15:34 | 显示全部楼层 |阅读模式
RT   比如我得到一个立即数0xf9    而SFR  P0M的地址恰好是0xf9    我该如何根据0xf9这个数值去访问地址为0xf9的SFR????
ayb_ice 发表于 2015-11-3 16:01 | 显示全部楼层
只能是
if(sfr_addr == 0xf9){
   return P0M;
}

评分

参与人数 1威望 +1 收起 理由
ss掷弹专业 + 1 多谢!

查看全部评分

xuyaqi 发表于 2015-11-3 16:08 | 显示全部楼层
先定义 sfr PCA0L         = 0xF9;
然后  x = PCA0L
znmcu 发表于 2015-11-4 16:42 | 显示全部楼层
C51无法将SFR作为参数
mcu5i51 发表于 2015-11-9 08:58 | 显示全部楼层
SFR只能是直接寻址,如果一定用变量的话,可以用一个多选命令,把用到的地址处理一下,这样一般都要牺牲时间和空间
123654789 发表于 2015-11-9 11:39 | 显示全部楼层
*(unsigned char *)0xf9=0xaa;  ///  往0xf9地址写入数据0xaa

temp=*(unsigned char *)0xf9;  ///  从0xf9地址读入数据
ayb_ice 发表于 2015-11-9 11:46 | 显示全部楼层
123654789 发表于 2015-11-9 11:39
*(unsigned char *)0xf9=0xaa;  ///  往0xf9地址写入数据0xaa

temp=*(unsigned char *)0xf9;  ///  从0xf9 ...

这是写RAM,不是写SFR

123654789 发表于 2015-11-9 12:13 | 显示全部楼层
ayb_ice 发表于 2015-11-9 11:46
这是写RAM,不是写SFR

RAM和SFR 统一编址
写RAM等于写SFR

评论

只能老老实实建128的表,它们在51里不统一  发表于 2015-11-9 12:19
ayb_ice 发表于 2015-11-9 13:30 | 显示全部楼层
123654789 发表于 2015-11-9 12:13
RAM和SFR 统一编址
写RAM等于写SFR

只能说你不懂51了
123654789 发表于 2015-11-10 08:54 | 显示全部楼层
我的答案错误了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

28

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

12

主题

28

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部