Я не уверен, должен ли этот вопрос касаться электроники или нет, но, поскольку речь идет о программировании, я задал его здесь.
Я делаю цифровые часы, используя светодиоды, работающие от сдвигового регистра вместо 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