Перейти к содержанию
    

can't find 0x895 words for psect...

Привет!

пишу на HT-PICC 9.60PL3 для контроллера PIC16F887. У него на борту 8 кБ программной памяти. Пока программа была маленькой, то все нормально, но тут надо было увеличить программу и компилер выдал ошибку: can't find 0x895 words (0x895 withtotal) for psect "text2" in segment "CODE"

Читал инет, но так и не понял причину. То ли компилятор не дает больше 2 кБ компилить, то ли моя функция main() слишком длинная. В main() перечисляются куча операторов сравнения. Нет вызовов никаких функций.

Вопрос: как же мне победить эту ошибку? Если все же моя main() длинная, то как указать компилятору чтобы он начал использовать и оставшуюся память?

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос: как же мне победить эту ошибку?

Прочитать расталдычку по этой ошибке (указывайте номер ошибки в дальнейшем) в <path_to_picc9.60>\docs\manual.pdf.

Обратить внимание на

These functions may need to be placed in new modules.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прочитать расталдычку по этой ошибке (указывайте номер ошибки в дальнейшем) в <path_to_picc9.60>\docs\manual.pdf.

Обратить внимание на

 

Спасибо за расталдычку :) Не знал что там есть дока.

В отдельный модуль тоже не знаю как засунуть. Понимаю что мой огромный цикл надо как то разбить на функции и засунуть функции в отдельный файл. Я правильно понимаю? Сам цикл у меня по тактам расчитан. Наверное все это сдвинется...

Не дадите пример простой как подключить файл и описать переменные?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сам цикл у меня по тактам расчитан. Наверное все это сдвинется...

естественно!

Не дадите пример простой как подключить файл и описать переменные?

Если есть затруднения при создании много-файлового проекта, можно и в один файл несколько функций поместить, нет в этом ничего страшного.

void f1(void);  // Простейший прототип
void f2(void);
void f3(void);

void main(void)
{
while(1)
   {
  f1();
  f2();
  f3();
   }
}
void f1(void) { /* ваши объявления и расчеты*/ }
void f2(void) { /* ваши объявления и расчеты*/ }
void f3(void) { /* ваши объявления и расчеты*/ }

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Функции как определять то я знаю.

В общем выделил блоки в функции и все уместилось как надо. еще половина памяти свободно.

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...