2719|1

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

C51 128K的SRAM 数据分页错误, A16脚怎么参与编址的啊。 [复制链接]

我用STC89C58RD+ 的单片机, 外加了128K的现代的SRAM, P0 和P2标准的接法连接A0--A15 和 D0--7 373作锁存, A16接P1.0,

添加 L51_BANK.A51 修改
?B_NBANKS       EQU  2,
?B_MODE         EQU  0,
?B_VAR_BANKING  EQU  1,
?B_PORT         EQU     P1 ,
?B_FIRSTBIT     EQU     0
程序里面定义了两个 大的数组
main.c 定义了 unsigned char volatile far dtarr[30000];
Mon.c 定义了 unsigned char volatile far lgarr[50000];
调试程序的时候发现 修改 dtarr[1] = 1; 的同时 lgarr[1] 也变成了1, 我跟踪了生成的汇编代码, 发现 P1.0的设置 好像是正确的, 访问不通的数组的时候 , P1.0 分别设置为1 和0 了, 但是好像SRAM 并没有切换到不同的页,读写的还是同一个地址, 不知为什么, 大家一定要帮帮忙啊, 困扰我好几天了。谢谢,  

最新回复

补充一下, 我的LX51 定义 了存储范围 XDATA (X:0x0-X:0x00FF), CODE (C:0x0-C:0xFFFF), HDATA (X:0x020100-X:0x02FFFF, X:0x030100-X:0x03FFFF) 调试的时候 dtarr的地址为 X:0x030100,  lgarr 的地址为X:0x020100 , 测量了一下A16的引脚的电压也是 高低对应的。 同样的硬件设备, 如果不管A16脚,不使用数据分页,不使用FAR类型的数据空间定义, 使用64K以内的XDATA数据空间定义数组存取是正常的, 好象就是使用A16 无法使SRAM切换到不同的RAM页。  详情 回复 发表于 2007-11-3 17:07
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
补充一下, 我的LX51 定义 了存储范围
XDATA (X:0x0-X:0x00FF), CODE (C:0x0-C:0xFFFF),
HDATA (X:0x020100-X:0x02FFFF, X:0x030100-X:0x03FFFF)
调试的时候 dtarr的地址为 X:0x030100,  lgarr 的地址为X:0x020100 , 测量了一下A16的引脚的电压也是 高低对应的。

同样的硬件设备, 如果不管A16脚,不使用数据分页,不使用FAR类型的数据空间定义, 使用64K以内的XDATA数据空间定义数组存取是正常的, 好象就是使用A16
无法使SRAM切换到不同的RAM页。
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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