请问我用的是AT89C52单片机,在写程序时,定义了8个数组,每个数组元素个数是36
,在用KEILC时,选用的存储形式是data区,因为AT89C52的RAM大小是256bytes;编译结果是data区存放不了这么多数据。可是当我把存储形式选为XDATA...
,在用KEIL C时,选用的存储形式是data区,因为AT89C52的RAM大小是256bytes;编译结果是data区存放不了这么多数据。可是当我把存储形式选为XDATA区时,编译没问题了,可是程序却运行不出结果,是不是往单片机里下程序时,放在XDATA区的数据都丢失了。可是学单片机课本时,不是说,51单片机有64k bytes的外部RAM寻址空间么?怎么我把数据存入xdata区时,程序运行不出结果。为什么呀?谁懂啊?讲讲吧。谢谢
展开
展开全部
xdata是外部扩展RAM,变量的访问是用movx @dptr语句,如果没有扩展RAM的话,你的变量存储就将出错,但编译本身是不关心你的硬件环境的,所以编译不会出错。运行时由于没有外部RAM,因此不能有效改变你的变量,写入时不知道写到何处,读出时也是随机量。 其实你可以选择一款带扩展RAM的单片机如STC12C5A60S2就有1K的RAM。
追问
外部扩展的RAM是指FM24C64等EEPROM么?
追答
外部扩展RAM是指实地址扩展的RAM,如6264,62256等不是如FM24C64这些靠串行IIC读写的EEPROM
展开全部
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。
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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询