huang137 发表于 2013-5-6 03:35:51

关于ICC编译时候的求助

我今天编写一个液晶显示函数,发现ICC有这样一个问题,函数功能是正确的,但是我在同一个地方调用这个函数,函数形参字符受到限制比如我在一个地方调用函数
lcd_Word(1,1,"灯亮灯灯灯亮",1);
lcd_Word(2,1,"亮亮亮亮亮亮",1);
lcd_Word(3,1,"灯灯灯灯灯灯",1);
lcd_Word(4,1,"学检查灯质",0);
lcd_Word(5,1,"灯亮灯灯",1);

lcd_Word(1,1,"灯亮灯灯灯亮灯亮灯灯灯",1);
lcd_Word(2,1,"亮亮亮亮亮亮",1);
lcd_Word(3,1,"灯灯灯灯灯灯",1);
lcd_Word(4,1,"学检查灯质",0);
//lcd_Word(5,1,"灯亮灯灯灯",1);

这里一共使用这个函数5次,一共用了27个中文字符,发现在这些中文字符里面在多加一个,就会出现编译错误,可以屏蔽掉一些,在别的地方加上去,总数不能超过27个中文字符
错误提示如下:
C:\iccv7avr\bin\imakew -f YAO.mak
    iccavr -c -e -D__ICC_VERSION=722 -DATMega16-l -g -MLongJump -MHasMul -MEnhanced -Wf-r20_23LCD.c
    iccavr -o YAO -g -e:0x4000 -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:30 -beeprom:0.512 -fihx_coff -S2 @YAO.lk   -lstudio -lcatmegagr
!E <library>(61): area 'bss' not large enough
want size 1
lo 1120 hi 1119 size 0
C:\iccv7avr\bin\imakew.exe: Error code 1
Done: there are error(s). Exit code: 1. Mon May 06 03:29:41 2013

但是如果我在每27个中间加入个函数,就能编译通过,比如:
lcd_Word(1,1,"灯亮灯灯灯亮",1);
lcd_Word(2,1,"亮亮亮亮亮亮",1);
lcd_Word(3,1,"灯灯灯灯灯灯",1);
lcd_Word(4,1,"学检查灯质",0);
lcd_Word(5,1,"灯亮灯灯灯",1);
lcdqing();
lcd_Word(1,1,"灯亮灯灯灯亮",1);
lcd_Word(2,1,"亮亮亮亮亮亮",1);
lcd_Word(3,1,"灯灯灯灯灯灯",1);
lcd_Word(4,1,"学检查灯质",0);
lcd_Word(5,1,"灯亮灯灯灯",1);
lcdqing();
lcd_Word(1,1,"灯亮灯灯灯亮",1);
lcd_Word(2,1,"亮亮亮亮亮亮",1);
lcd_Word(3,1,"灯灯灯灯灯灯",1);
lcd_Word(4,1,"学检查灯质",0);
lcd_Word(5,1,"灯亮灯灯灯",1);

请问这是怎么回事,其实我这样写在一起原因很简单,就是看看写满一屏液晶文字有没有错误的地方
函数原型是:
oid lcd_Word(uint8 x,uint8 y,uint_8 *word,uint_8 Anti)
编译器是ICCavr 7.22破解版


页: [1]
查看完整版本: 关于ICC编译时候的求助