打印

关于单片机RAM ROM的简单问题

[复制链接]
2626|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sioca|  楼主 | 2009-5-21 15:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟初涉单片机,使用STC12C5410AD(兼容51),10K ROM  512 RAM,用KEILUVISION编译,按照STC建议,UVISION中的目标器件选择8052AH(8K ROM 256 RAM),
但是不知道在MemoryModal 和 Code Rom Size里如何选择,默认都是SMALL,结果编译的时候,DATA超过128就报错了,后来两个都选择LARGE就不错了。但是编译以后的PROGRAM SIZE 里确是data = 9.3 xdata = 162 code = 10045.    
不太明白的是我的芯片没有XDATA外部存储器啊,这样编译为什么程序还能运行呢,另外发现有变量在掉电再上电时并没有清零,还是保持上次的值,不知道为什么。
最后一个问题是我如何保证程序可以在我的芯片上运行,是要自己检查CODE和DATA区不超过10K和512么?如果是这样的话,那么DATA区是不是等于DATA+XDATA?
多谢大家帮忙释疑

相关帖子

沙发
walkrain| | 2009-5-21 16:36 | 只看该作者

回答其中的几个问题

1.至于编译超过128就报错,我也不知道为什么,尽管我的cpu ram为256
2.若选择large,则为显式声明的变量全部存储在xdata,所以不会报错,且data很小,xdata很大
3.我用过的STC单片机几乎片内均带外部存储器,细看datasheet就知道了
4.掉电再上电没有清零,可能是因为你仿真的原因,而且startup.a51文件没有配置
5.data是指内部数据存储区,xdata是指外部数据存储区,不一样

使用特权

评论回复
板凳
sioca|  楼主 | 2009-5-21 17:00 | 只看该作者

谢谢

**,RAM还真是多,内部有256, 外部又有512,这下完全够用了,多谢楼上大虾,但是CODE和DATA是都要自己注意的吧,超过512是不是也不会报错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

122

主题

419

帖子

1

粉丝