请问我用的是AT89C52单片机,在写程序时,定义了8个数组,每个数组元素个数是36

,在用KEILC时,选用的存储形式是data区,因为AT89C52的RAM大小是256bytes;编译结果是data区存放不了这么多数据。可是当我把存储形式选为XDATA... ,在用KEIL C时,选用的存储形式是data区,因为AT89C52的RAM大小是256bytes;编译结果是data区存放不了这么多数据。可是当我把存储形式选为XDATA区时,编译没问题了,可是程序却运行不出结果,是不是往单片机里下程序时,放在XDATA区的数据都丢失了。可是学单片机课本时,不是说,51单片机有64k bytes的外部RAM寻址空间么?怎么我把数据存入xdata区时,程序运行不出结果。为什么呀?谁懂啊?讲讲吧。谢谢 展开
 我来答
zhxiufan
2012-08-09 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38385
国家科技进步奖

向TA提问 私信TA
展开全部
xdata是外部扩展RAM,变量的访问是用movx @dptr语句,如果没有扩展RAM的话,你的变量存储就将出错,但编译本身是不关心你的硬件环境的,所以编译不会出错。运行时由于没有外部RAM,因此不能有效改变你的变量,写入时不知道写到何处,读出时也是随机量。 其实你可以选择一款带扩展RAM的单片机如STC12C5A60S2就有1K的RAM。
追问
外部扩展的RAM是指FM24C64等EEPROM么?
追答
外部扩展RAM是指实地址扩展的RAM,如6264,62256等不是如FM24C64这些靠串行IIC读写的EEPROM
fgale
2012-08-09 · TA获得超过1450个赞
知道小有建树答主
回答量:1857
采纳率:50%
帮助的人:538万
展开全部
51单片机可以寻址 64k bytes的外部RAM寻址空间 前提是你得扩展外部的ram。没有硬件是不行的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-08-09
展开全部
1)数据总线宽度为8位,由P0口提供;
2)地址总线宽度为16位,可寻址范围2的16次,也就是64K。低8位A7~A0由P0口经地址锁存器提供,高8位A15~A8由P2口提供。由于P0口是数据、地址分时复用,所以P0口输出的低8位必须用地址锁存器进行锁存;
3)控制总线由RD、WR、PSEN、ALE和EA等信号组成,用于读/写控制、片外RAM选通、地址锁存控制和片内、片外RAM选择。
地址锁存器一般选用带三态输出缓冲输出的8D锁存器74LS373。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式