CCS PIC16F628A Недостаточно памяти в ПЗУ, сегмент или программа - PullRequest
0 голосов
/ 11 марта 2012

Я не уверен, должен ли этот вопрос касаться электроники или нет, но, поскольку речь идет о программировании, я задал его здесь.

Я делаю цифровые часы, используя светодиоды, работающие от сдвигового регистра вместо 7-сегментного дисплея. В любом случае при компиляции кода с использованием CCS я получаю следующую ошибку:

***Error 71 "test.c" Line 195(0,1) Out of ROM, A segment or the program is too large  num
Seg 00004-007FF, 07DC left, need 07EA
Seg 00000-00003, 0000 left, need 07EA

и вот мой код:

#include <16f628a.h>
#use delay (crystal=32768)

//to display a number on the LEDs using the 74164 shift register accordingly
void num(int rnum, char out, char clk) {

//start clear shift register   
   output_high(clk);
   output_low(clk);
   output_high(clk);
   output_low(clk);
   output_high(clk);
   output_low(clk);
   output_high(clk);
   output_low(clk);
   output_high(clk);
   output_low(clk);
   output_high(clk);
   output_low(clk);
   output_high(clk);
   output_low(clk);
   output_high(clk);
   output_low(clk);
//end clear shift register

   switch(rnum) {
      case 0:
         output_high(out);
         output_high(clk);
         output_low(clk);
         output_high(clk);
         output_low(clk);
         output_high(clk);
         output_low(clk);
         output_high(clk);
         output_low(clk);
         output_low(out);
         output_high(clk);
         output_low(clk);
         output_high(out);
         output_high(clk);
         output_low(clk);
         output_high(clk);
         output_low(clk);
         output_high(clk);
         output_low(clk);
         output_low(out);

         break;
      case 1:
         output_low(out);
         output_high(clk);
         output_low(clk);
         output_high(clk);
         output_low(clk);
         output_high(clk);
         output_low(clk);
         output_high(out);
         output_high(clk);
         output_low(clk);
         output_low(out);
         output_high(clk);
         output_low(clk);
         output_high(out);
         output_high(clk);
         output_low(clk);
         output_low(out);
         output_high(clk);
         output_low(clk);
         output_high(clk);
         output_low(clk);
         break;
      case 2:
         output_high(out);//7
         output_high(clk);
         output_low(clk);
         output_low(out);//6
         output_high(clk);
         output_low(clk);
         output_high(out);//5
         output_high(clk);
         output_low(clk);
         output_high(clk);//4
         output_low(clk);
         output_high(clk);//3
         output_low(clk);
         output_low(out);//2
         output_high(clk);
         output_low(clk);
         output_high(out);
         output_high(clk);
         output_low(clk);
         output_low(out);
         output_high(clk);
         output_low(clk);
      break;
      case 3:
         output_high(out);//7
         output_high(clk);
         output_low(clk);
         output_high(clk);//6
         output_low(clk);
         output_high(clk);//5
         output_low(clk);
         output_low(out);//4
         output_high(clk);
         output_low(clk);
         output_high(out);//3
         output_high(clk);
         output_low(clk);
         output_low(out);//2
         output_high(clk);
         output_low(clk);
         output_high(out);//1
         output_high(clk);
         output_low(clk);
         output_low(out);
         output_high(clk);
         output_low(clk);
      break;
      case 4:
         output_high(out);//7
         output_high(clk);
         output_low(clk);
         output_high(out);//6
         output_high(clk);
         output_low(clk);
         output_low(out);//5
         output_high(clk);
         output_low(clk);
         output_low(out);//4
         output_high(clk);
         output_low(clk);
         output_high(out);//3
         output_high(clk);
         output_low(clk);
         output_high(out);//2
         output_high(clk);
         output_low(clk);
         output_low(out);//1
         output_high(clk);
         output_low(clk);
         output_high(clk);
         output_low(clk);
      break;
      case 5:
         output_low(out);//7
         output_high(clk);
         output_low(clk);
         output_high(out);//6
         output_high(clk);
         output_low(clk);
         output_high(out);//5
         output_high(clk);
         output_low(clk);
         output_low(out);//4
         output_high(clk);
         output_low(clk);
         output_high(out);//3
         output_high(clk);
         output_low(clk);
         output_high(out);//2
         output_high(clk);
         output_low(clk);
         output_high(out);//1
         output_high(clk);
         output_low(clk);
         output_low(out);//reset
         output_high(clk);
         output_low(clk);
      break;
   }
}

//==============================


void main() {
   while(true) {
      num(0, pin_a1, pin_a0);
      delay_ms(2000);
      num(1, pin_a1, pin_a0);
      delay_ms(2000);
      num(2, pin_a1, pin_a0);
      delay_ms(2000);
      num(3, pin_a1, pin_a0);
      delay_ms(2000);
      num(4, pin_a1, pin_a0);
      delay_ms(2000);
      num(5, pin_a1, pin_a0);
      delay_ms(2000);
   }
}

Может кто-нибудь помочь мне с этой проблемой, касающейся того, что я новичок в этой теме?

Заранее спасибо.

Неважно, http://www.ccsinfo.com/forum/viewtopic.php?p=159335

1 Ответ

0 голосов
/ 11 марта 2012

Ваши настройки pragma / complier / linker, кажется, указывают на то, что вы создаете ROM / EEPROM размером XXk, но вашей программе требуется устройство размером> XXk. Найдите параметры файла конфигурации и / или заголовка, которые устанавливают размер целевого устройства.

...