Keil C51中Small Memory Model能不能使用高128B的间接寻址内存吗????

2020-01-30 13:45发布

我用的芯片是W78E516B,共有RAM 128+128+256B
Memory Model设为Compact时编译输出:Program Size: data=14.7 xdata=154 code=6422
Memory Model设为Small时编译报错:T9_YG_4.C(1658): error C249: 'DATA': SEGMENT TOO LARGE

可是明明我的程序中变量只有154+14.7字节,而片上明明有256字节的IRAM,为什么选择Small就编译不过去呢??

难道说,Small Memory Model不能使用高128B的间接寻址内存吗????
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
xiaobendan
1楼-- · 2020-01-30 16:52
好像是在变量前边加一个idata的关键字吧
XIAN1987
2楼-- · 2020-01-30 17:25
我去网上查了一下,好像还真是这样子的:
变量type有data、idata、pdata和xdata之分,
当把Memory Model设为Small时,变量type默认是data
当把Memory Model设为Compact时,变量type默认是pdata
当把Memory Model设为Large时,变量type默认是xdata

但是我很奇怪,为什么没有一种Memory Model把变量的type默认为idata呢??

继续网上搜索,继续学习......................
hwb_study
3楼-- · 2020-01-30 18:03
mbass51
4楼-- · 2020-01-30 18:33
 精彩回答 2  元偷偷看……
绿茶山人
5楼-- · 2020-01-30 21:55
mbass51 发表于 2013-4-12 17:50
data128b
idata 另128b

data:0x00~0x7f 128字节RAM; idata:0x00~0xff 258字节RAM,前128字节空间和data相同,只是访问方式不同。

一周热门 更多>