2012-03-11 17 views
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

答えて

0

あなたのプラグマ/コンパイラ/リンカ設定では、XXkサイズROM/EEPROMのために構築していることを示しているように見えるが、あなたのプログラムは> XXkサイズのデバイスを必要とします。ターゲットデバイスのサイズを設定する設定ファイルやヘッダーファイルの設定を探します。

+0

私が前に言ったように、私はこの主題には新しいので、あなたが言ったことはほとんど理解できません。ただし、ヘッダーファイルの設定を変更することと関係がある場合、静的(変更できない)設定のハードウェア(この場合はPIC16F628A)に基づいて記述されているため、動作しないと思われます。 –

+0

それはヘッダーファイルを除外します。このデバイスは、128バイトのEEPROMデータメモリと3.5KBのプログラムメモリを備えています。あなたのプログラムは単にデバイスには大きすぎますか? – Java42

+0

私はハードウェアのページと#別のコマンドについて述べましたが、実際には分かりませんでした。http://www.ccsinfo.com/faq.php?page=out_of_rom –

関連する問題