大家好,我在ICCAVR编译时遇到了一点问题 请高手指点一下,先上程序:
#include<iom128v.h>
#include <macros.h>
unsigned int flash image[0x4000]={
0XDD,0XFD,0XBC,0XF5,0XFC,0XED,0X33,0XA4,0X63,0X20,0X42,0X10,0X41,0X10,0X41,0X10,
0XA2,0X20,0XE3,0X28,0X25,0X31,0X86,0X39,0XE8,0X49,0X08,0X4A,0XE7,0X49,0XC7,0X49,
0XA6,0X41,0XC7,0X49,0XE7,0X49,0XE7,0X49,0XE7,0X49,0XE7,0X49,0XE7,0X49,0X07,0X52,
0X28,0X5A,0X07,0X52,0XC6,0X49,0X88,0X6A,0XEA,0X72,0XEA,0X7A,0X68,0X6A,0XEA,0X7A,
0XA8,0X72,0XC8,0X72,0XA9,0X72,0XA9,0X6A,0XA9,0X6A,0XAA,0X6A,0X28,0X5A,0X86,0X41,
0X65,0X39,0X24,0X31,0X25,0X31,0X25,0X31,0XE4,0X28,0XA3,0X20,0X82,0X18,0X62,0X18,
0X21,0X10,0X01,0X10,0X21};
unsigned int flash image1[0x3000]={
0XDD,0XFD,0XBC,0XF5,0XFC,0XED,0X33,0XA4,0X63,0X20,0X42,0X10,0X41,0X10,0X41,0X10,
0XA2,0X20,0XE3,0X28,0X25,0X31,0X86,0X39,0XE8,0X49,0X08,0X4A,0XE7,0X49,0XC7,0X49,
0XA6,0X41,0XC7,0X49,0XE7,0X49,0XE7,0X49,0XE7,0X49,0XE7,0X49,0XE7,0X49,0X07,0X52,
0X28,0X5A,0X07,0X52,0XC6,0X49,0X88,0X6A,0XEA,0X72,0XEA,0X7A,0X68,0X6A,0XEA,0X7A,
0XA8,0X72,0XC8,0X72,0XA9,0X72,0XA9,0X6A,0XA9,0X6A,0XAA,0X6A,0X28,0X5A,0X86,0X41,
0X65,0X39,0X24,0X31,0X25,0X31,0X25,0X31,0XE4,0X28,0XA3,0X20,0X82,0X18,0X62,0X18,
0X21,0X10,0X01,0X10,0X21};
void main()
{
DDRD = 0XFF;
PORTD = 0X00; PD口只接了一个LED,为了方便就直接操作PD口了;
DDRB = 0X01;
PORTB = 0X01; PB0口只接了一个蜂鸣器;
while(1);
}
问题:1 将上面两个大的数组屏蔽掉,LED和蜂鸣器可以正常工作;
2 加上两个数组,编译完成 Device 43% full ,采用ISP 烧录进去LED和蜂鸣器不能正常工作,并且加上校验在0X8000位置校验不过,请教一下高手出现这种现象是怎么回事,谢谢
3 如果将第二个数组加大到[0x4000],编译就会出错,超出范围! |