用keil写程序时出现“C(162): error C249: 'DATA': SEGMENT TOO LARGE“的错误,怎么解决?

已经将单片机修改为64k

用keil写程序时出现错误解决方法:

1、在菜单栏的flash选项下选择configure flash tools子菜单出现如下界面选择对应的芯片就可以了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-16
如果你定义的数组不用更改就用 uchar code XX[10]=

根据你数据的用处,你可以有以下几种选择:
data:直接寻址的片内RAM区低128B(00H~7FH)

bdata:片内RAM的可位寻址区(20H~2FH),允许字节和位混合访问

idata:单片机间接访问的片内RAM区,允许访问全部片内RAM

pdata:Ri间接访问的片外RAM的低256B(00H~FFH)

xdata:用DPTR间接访问的片外RAM,允许访问全部64KB片外RAM(0000H~FFFFH)

code:单片机的64KB程序存储区ROM本回答被提问者和网友采纳
第2个回答  2012-11-15
你大概还没分清ROM和RAM。
另外你需要知道51核直接寻址的内部ram只有128字节。追问

嗯,我不管那么多,我只想编译这个程序,现在编译不了了,解决办法

追答

那得看你用的什么芯片,有些什么资源。

对于基本51来说,将部分全局变量声明到间接寻址空间。例如
unsigned char idata abc[16];

本回答被网友采纳