打印

data 应该是放在ram中吧 有个相关问题求教

[复制链接]
1854|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Autine|  楼主 | 2007-6-15 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原本是用89c4051 来写来着
结果 定义的全局变量太多了  主要有个uint8 SAVE[96];(实在压不掉)
编译一看 data=170.1   89c4051的ram是128的,自然放不下,于是在Device里把芯片改为 89s52 ram为256,但还是提示 如图

请教全局变量编译后 该是在ram中吧 ???
为什么使用89s52不行呢??
或者 是别的什么问题 求教!!

相关帖子

沙发
农民讲习所| | 2007-6-15 15:18 | 只看该作者

uint8 SAVE[96]; -> uint8 idata SAVE[96];(

使用特权

评论回复
板凳
农民讲习所| | 2007-6-15 15:21 | 只看该作者

数组是指针性质的

数组是指针性质的,用idata描述是合适的。而且高128RAM是idata指针访问的。

使用特权

评论回复
地板
gyt| | 2007-6-15 15:25 | 只看该作者

高!

这样就放到高地址部分去了。

使用特权

评论回复
5
Autine|  楼主 | 2007-6-15 16:04 | 只看该作者

谢谢 谢谢

我试了 uint8 data SAVE[96]; 不行  晕的要死不知道该怎么办

看了半天 
data  定义在片内数据存储区(00H~FFH)
bdata  定义在片内数据存储区(20H~2FH)
idata  定义在片内数据存储区,只能间接寻址

另 在small模式下  默认存储类型为data  最大128    

那么就是说 在small模式下 我们使用89s52 data超了128  它也不会自动用128~255区间存储,  只能自己把变量定义到128~255区间???

使用特权

评论回复
6
gyt| | 2007-6-15 16:08 | 只看该作者

对啊

使用特权

评论回复
7
Autine|  楼主 | 2007-6-15 16:21 | 只看该作者

又仔细看了下

谢谢各位的回复
找了本c51的书看看了
data  还是 00H~FFH   但从80H 开始被SFR占了   所以剩下128了 
而诸如 89s4051的256的ram  是00H~180H  为了兼容其中80H~FFH 是SFR  剩下256的用户RAM   可以这样理解吗???

使用特权

评论回复
8
ayb_ice| | 2007-6-15 18:27 | 只看该作者

看清楚了uint8 idata SAVE[96];

使用特权

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

本版积分规则

8

主题

64

帖子

0

粉丝