Цитата(Andrеys @ Dec 23 2007, 18:33)

значит выход - EEPROM самого контроллера? но там на 1 адрес весь массив не запишешь..
я так понял EEPROM на одном адресе хранит 1 байт, т.е. мне адреса все перебирать... так и они могут тоже не влезть если их в массив и перебирать..?
или может последовательно забить в EEPROM все, и говорить пику с такого-то по такой адрес бери, а здесь вот отсюда... надо попробовать.
Судя по всему вам надо сначала почитать что-нибудь по основам адресации памяти. А потом data sheet на PIC16F877, раздел 2.0 MEMORY ORGANIZATION.
PIC16 восьмиразрядный контроллер, и все три адресных пространства (Flash, SRAM, EEPROM) адресуются ПОБАЙТНО. Т.е. именно как вы говорите, "на одном адресе хранит 1 байт". И адреса всех байт внутри массивов вам придется перебирать, как вы не крутитесь

Другое дело, что это может быть для вас скрыто внутри Си.
Чесно говоря не пойму чем у вас занята вся флэш, если это просто курсовик. В 8 кслов можно кроме дисплея с одним экраном забить ещё хренову тучу всего
Вот вам кое-что в качестве наводки:
объявление массива констант, находящихся во флэш:
Код
char __flash massO[]={0x00, 0x3e, 0x41, 0x41, 0x41, 0x3e};
то же для EEPROM:
Код
char __eeprom massO[]={0x00, 0x3e, 0x41, 0x41, 0x41, 0x3e};
процедура копирования массива из флэш во временный буфер в ОЗУ:
Код
unsigned char Temp_Buf[6]; // временный буфер
{ unsigned char i;
for (i=0; i<sizeof(Temp_Buf); i++) Temp_Buf[i] = massO[i];
}
p.s. Возможно в ИАРе для ПИКов с переменными в EEPROM и FLASH нужно работать через __intrinsic функции, точно не знаю, смотрите хелп. Для АВР это проходит.