smhacker 发表于 2012-5-28 18:53:25

keil编译STC芯片大ram溢出问题求助!

本人编个程序需要用到比较大容量的ram,AT的芯片实现不了,所以选用了STC90C58AD,然后给keil添加了STC芯片库,但是编译的时候我该如何定义数据呢?

==1 idata unsigned char zf;
==2 xdata unsigned char zf;


一开始用==1 编译失败,然后换了==2 编译成功!但是问题来了,定义为xdata的话那应该是外部存储器了,那岂不是没什么作用了?另外定义成xdata的话 proteus也仿真不成功了。不知该怎么办?求解!

BXAK 发表于 2012-5-28 19:56:26

对于51
// data   固定指片内RAM:0x00~0x7F
// bdata固定指片内RAM:0x20~0x2F
// idata固定指片内RAM:0x00~0xFF
// xdata一般指扩展RAM:0x0000~0xFFFF(包括内部扩展,比如STC)
// code          指程序存储区ROM:0x0000~0xFFFF

至于“定义成xdata的话 proteus也仿真不成功”

proteus根本没有STC的模型,你用其它型号代替,还指望能完全实现STC的功能?建议还是实物操作调试

bbs2009 发表于 2012-5-28 19:57:59

bbs2009 发表于 2012-5-28 20:02:28

hamipeter 发表于 2012-5-29 00:18:59

51内核的单片机,内部RAM只有256字节,==1 idata unsigned char zf;肯定是溢出报错。
STC90C58AD没记错的话内部外扩了4KB的RAM,用xdata访问

goolloo 发表于 2012-5-29 08:09:54

所以。。。stc直接上实物验证

jetli 发表于 2012-5-29 08:49:22

要用   {:titter:} large 大端模式      编译!!!

XA144F 发表于 2012-5-29 08:54:40

要想在proteus中仿真就必须要加62256或者6264.
你定义的数据有320字节,肯定没法用idata放下。

smhacker 发表于 2012-5-29 12:37:46

多谢各位的热心帮助!有空我弄个STC芯片测试一下。

1358235647dcg 发表于 2013-3-18 19:33:31

还是不清楚啊,亲们?

error_dan 发表于 2013-3-18 20:01:33

其实最简单的办法,在proteus里面找个内置XDATA内存的51用呗。。。反正STC牛皮吹破的那些外设功能新型51上面也都有,功能实现了再移植回去呗。。。

mengfc 发表于 2013-3-19 08:53:51

必要的硬件基础还是要有的,请查看一些老书籍8031最小系统,那个芯片程序存储器、RAM存储器都需要外扩,看一看有利于了解底层工作原理。
页: [1]
查看完整版本: keil编译STC芯片大ram溢出问题求助!