0
この質問がエレクトロニクスに向かうかどうかはわかりませんが、プログラミングに関するものなのでここで尋ねました。CCS PIC16F628A ROMの不足、セグメントまたはプログラムが大きすぎます
私は、7セグメントディスプレイの代わりにシフトレジスタで電力供給されるLEDを使用してデジタル時計を作ります。 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
私が前に言ったように、私はこの主題には新しいので、あなたが言ったことはほとんど理解できません。ただし、ヘッダーファイルの設定を変更することと関係がある場合、静的(変更できない)設定のハードウェア(この場合はPIC16F628A)に基づいて記述されているため、動作しないと思われます。 –
それはヘッダーファイルを除外します。このデバイスは、128バイトのEEPROMデータメモリと3.5KBのプログラムメモリを備えています。あなたのプログラムは単にデバイスには大きすぎますか? – Java42
私はハードウェアのページと#別のコマンドについて述べましたが、実際には分かりませんでした。http://www.ccsinfo.com/faq.php?page=out_of_rom –