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

[复制链接]
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部