打印

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

[复制链接]
3713|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gmgmgm|  楼主 | 2010-2-27 17:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
shanyu20| | 2010-2-27 18:48 | 只看该作者
多少个变量跟你使用的单片机有关,即单片机有多少的RAM

使用特权

评论回复
板凳
gx_huang| | 2010-2-27 22:27 | 只看该作者
把部分data类型的变量定义成idata或者xdata。

使用特权

评论回复
地板
Mindor| | 2010-2-28 07:41 | 只看该作者
学习了~~

使用特权

评论回复
5
gmgmgm|  楼主 | 2010-3-9 13:54 | 只看该作者
我现在是使用STC的单片机,根据它手册写的SRAM数量为1280字节,按理说最多应该有1280个8位的变量才对?普通51内核的只有512或256字节,它是用Keil uVision2编译器来代替的,怎么样也不能让这1280个字节全使用上吧?我估计也就限制在256了。怎办?

使用特权

评论回复
6
123654789| | 2010-3-9 14:06 | 只看该作者
我现在是使用STC的单片机,根据它手册写的SRAM数量为1280字节,按理说最多应该有1280个8位的变量才对?普通51内核的只有512或256字节,它是用Keil uVision2编译器来代替的,怎么样也不能让这1280个字节全使用上吧? ...
gmgmgm 发表于 2010-3-9 13:54


老西,有xdata的啊!!

使用特权

评论回复
7
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为存储器大小

使用特权

评论回复
8
lyn3210| | 2010-3-10 15:25 | 只看该作者
STC除了内部的256字节,其余都是外部的,应采用xdata定义。

使用特权

评论回复
9
yanghans1983| | 2010-3-12 20:22 | 只看该作者
学习了,这两天也正为这个迷茫中,明明1280咋就不够用呢!

使用特权

评论回复
10
HonMe| | 2010-3-14 09:19 | 只看该作者
呵呵,顶一下!

使用特权

评论回复
11
j-ason| | 2010-3-15 22:25 | 只看该作者
学习了

使用特权

评论回复
12
mengyujun888| | 2010-3-15 23:52 | 只看该作者
:(

使用特权

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

本版积分规则

135

主题

766

帖子

2

粉丝