用Keil uVision2编译时变量数超过限制怎么办啊?

[复制链接]
 楼主| gmgmgm 发表于 2010-2-27 17:39 | 显示全部楼层 |阅读模式
在用Keil uVision2编译时,变量会超过限制,多增加个变量就编译不了,少一个就行了,到底Keil uVision2中最大充许多少个变量?
shanyu20 发表于 2010-2-27 18:48 | 显示全部楼层
多少个变量跟你使用的单片机有关,即单片机有多少的RAM
gx_huang 发表于 2010-2-27 22:27 | 显示全部楼层
把部分data类型的变量定义成idata或者xdata。
Mindor 发表于 2010-2-28 07:41 | 显示全部楼层
学习了~~
 楼主| gmgmgm 发表于 2010-3-9 13:54 | 显示全部楼层
我现在是使用STC的单片机,根据它手册写的SRAM数量为1280字节,按理说最多应该有1280个8位的变量才对?普通51内核的只有512或256字节,它是用Keil uVision2编译器来代替的,怎么样也不能让这1280个字节全使用上吧?我估计也就限制在256了。怎办?
123654789 发表于 2010-3-9 14:06 | 显示全部楼层
我现在是使用STC的单片机,根据它手册写的SRAM数量为1280字节,按理说最多应该有1280个8位的变量才对?普通51内核的只有512或256字节,它是用Keil uVision2编译器来代替的,怎么样也不能让这1280个字节全使用上吧? ...
gmgmgm 发表于 2010-3-9 13:54


老西,有xdata的啊!!
engineerlibing 发表于 2010-3-10 12:59 | 显示全部楼层
1# gmgmgm
51单片机片内只有128个字节RAM,单片机工作至少需要一个寄存器组8个字节(R0 - R7),所以可供应用程序使用的只有120个字节,如下定义,实际使用中因程序不同,可能定义不了120字节的数组。

unsigned char data ucData[120];  //默认即为data,定义时可省略


52单片机内有256个字节,多出来的128个字节需要用idata定义,如下:

unsigned char idata ucData[128]; //idata不能省略

除上述两部分RAM外,现在多数单片机在内部集成了一些RAM,相当于外扩的,只是由芯片厂家放到片内了,访问时做为外部存储器对待,不同型号集成的RAM大小不同。定义时用xdata,如下:

unsigned char xdata ucData[N]; //N为存储器大小
lyn3210 发表于 2010-3-10 15:25 | 显示全部楼层
STC除了内部的256字节,其余都是外部的,应采用xdata定义。
yanghans1983 发表于 2010-3-12 20:22 | 显示全部楼层
学习了,这两天也正为这个迷茫中,明明1280咋就不够用呢!
HonMe 发表于 2010-3-14 09:19 | 显示全部楼层
呵呵,顶一下!
j-ason 发表于 2010-3-15 22:25 | 显示全部楼层
学习了
mengyujun888 发表于 2010-3-15 23:52 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

766

帖子

2

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