问几个KEIL 的弱弱的问题

[复制链接]
 楼主| dudongdao 发表于 2009-8-8 08:57 | 显示全部楼层 |阅读模式
一直用KEIL, 程序也能跑起来 一直没有关心过这问题~~
堆栈指针存放的范围,是0X7F以内还是0XFF以内呢?
为什么有时候编译器提示 DATA OVER的时候,把一些变量放到IDATA就没事了呢?
如果SP可以0XFF,应该不会提示数据溢出啊。
chen3bing 发表于 2009-8-8 13:18 | 显示全部楼层
DATA和IDATA是不同的存储区。
 楼主| dudongdao 发表于 2009-8-8 13:30 | 显示全部楼层
嗯,是的~~  
看名字看出来了~~
不过我还是没想通啊~
冷漠 发表于 2009-8-8 19:50 | 显示全部楼层
IDATA包含了DATA。必定或>或等于DATA。DATA=低128字节,IDATA却根据设置或128,或256字节。

如何设置?

到STARTUP.A51中去找。
 楼主| dudongdao 发表于 2009-8-9 00:32 | 显示全部楼层
嗯~~  那SP可以放到高128是吗?  
请教冷漠大侠,如果不加那个启动文件,默认是什么样的,是不是默认SP存放在低128的,这样吗?
我现在建立工程都不加那个启动文件了,发现加了不加程序都行啊,哪种习惯好点,加了有什么好处呢?
冷漠 发表于 2009-8-9 11:20 | 显示全部楼层
你不人为加,编译器是缺省加的,STARTUP.A51在C51?.LIB库中,我见过LZ在工程中加入C51S.LIB,其实是多余的。关键是加还是不加STARTUP.A51:

建立一个新项目时,系统都提问你加不加入STARTUP.A51。
如果不加,系统默认C51S.LIB等库,其内的STARTUP是默认设置在80H-也就是128字节的。像8031之类。

如果你用的是8032/89C52之类,(现在的片子都是至少256字节IDATA了吧。)那就应该(也许不是必须)加入STARTUP.A51 以修改IDATALEN长度为100H。

但是如果你在DEVICE项选择的片子正确:例如89C52,是不是应该系统自动就设置了RAM=100H ?(系统设计原则:对用户的系统设置要求或知识要求应该降到最少。)要检验一下很简单:
1、在程序编译连接后的仿真代码下看一看STARTUP.51(当然是系统默认的)程序初始化RAM区为全“0”时是多少字节。
2、BL51链接标签下有指示TO **x(256RAM)什么的。

评分

参与人数 1威望 +6 收起 理由
程序匠人 + 6

查看全部评分

冷漠 发表于 2009-8-9 11:46 | 显示全部楼层
本帖最后由 冷漠 于 2009-8-9 12:07 编辑

贴图麻烦

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
冷漠 发表于 2009-8-9 11:57 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
冷漠 发表于 2009-8-9 12:20 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| dudongdao 发表于 2009-8-9 15:25 | 显示全部楼层
我试验了,看来还是加上好点,都是0X7F不是0XFF
您需要登录后才可以回帖 登录 | 注册

本版积分规则

90

主题

413

帖子

1

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