
Keil C程序中定义的一维数组字节过大该怎么办?
该程序的功能是左移循环显示十个汉字,需要先将汉字的编码存入缓存文件中,但是只能存入192个字节即6个汉字的编码能够编译成功,现在我想显示10个汉字也即是说要存入320个字...
该程序的功能是左移循环显示十个汉字,需要先将汉字的编码存入缓存文件中,但是只能存入192个字节即6个汉字的编码能够编译成功,现在我想显示10个汉字也即是说要存入320个字节到缓存数组当中去,但是Keil C程序编译如下:
MAIN.C(15): error C249: 'IDATA': SEGMENT TOO LARGE
Target not created
部分用到缓存数组的源程序如下:
unsigned char idata huancun[320];
tmp=~huancun[i*8+ia];
huancun[ia]<<=1;
if(huancun[ia+1]&0x80)
huancun[ia]++;
huancun[ia]<<=1; 展开
MAIN.C(15): error C249: 'IDATA': SEGMENT TOO LARGE
Target not created
部分用到缓存数组的源程序如下:
unsigned char idata huancun[320];
tmp=~huancun[i*8+ia];
huancun[ia]<<=1;
if(huancun[ia+1]&0x80)
huancun[ia]++;
huancun[ia]<<=1; 展开
展开全部
楼上则正解
做单片机的话, 还是必须要了解一下其存储结构, 最起码得知道data idata xdata所指的存储区域
idata 指向的片内ram ,大小范围为256字节,所以你一个数组定义在idata段内,不能超过256字节,超过就会报错。
xdata指向的片外ram,大小范围为64KB,你可以将你需要的大容量数组定义在该段内。
做单片机的话, 还是必须要了解一下其存储结构, 最起码得知道data idata xdata所指的存储区域
idata 指向的片内ram ,大小范围为256字节,所以你一个数组定义在idata段内,不能超过256字节,超过就会报错。
xdata指向的片外ram,大小范围为64KB,你可以将你需要的大容量数组定义在该段内。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询