プロが教える店舗&オフィスのセキュリティ対策術

C言語(CCS)でPICに書き込むためのプログラムを書いているのですが、
main関数内でfloat a[10]と宣言するとエラーは出ないのでが、
float a[100]にするとエラーが出てしまいます。
実数の配列を100個以上宣言したいのですが、doubleは使えないので
どうすれば良いのかわかりません。
よろしくお願いします。

A 回答 (3件)

SOKUTEI1.C のエラー行近辺のソースはどうなっていますか?

この回答への補足

プログラムはPICのAD変換を使って電圧測定を行うもので
エラー行近辺のソースは

#include<16f877.h>
#fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP
#device ADC=10

#use delay(CLOCK=20000000)
#use rs232(BAUD=9600, XMIT=PIN_C6, RCV=PIN_C7)

void main()
{

float a[10],ave,bunsan;
int i;
char cmd;
setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_DIV_32);

このようになっています。

補足日時:2006/11/01 12:57
    • good
    • 0
この回答へのお礼

a[20]までなら実行できたのでこれで測定することにしました。
お返事ありがとうございました。

お礼日時:2006/11/02 11:18

>float a[100]にするとエラーが出てしまいます。


どんなエラーメッセージが出ていますか?

この回答への補足

お返事ありがとうございます。float a[100]にすると
Building SOKUTEI1.HEX...

Compiling SOKUTEI1.C:
Command line: "C:\PROGRA~1\PICC\CCSC.EXE +FM +t C:\PROGRA~1\MPLAB\E14043\SOKUTEI1\SOKUTEI1.C"
Error[45] C:\PROGRA~1\MPLAB\E14043\SOKUTEI1\SOKUTEI1.C 11 : Subscript out of range

MPLAB is unable to find output file "SOKUTEI1.HEX". This may be due to a compile, assemble, or link process failure.

Build failed.

このようなエラーメッセージが出てきます。

補足日時:2006/10/31 16:31
    • good
    • 0

非常にタイトな環境でスタック領域が非常に小さいか、


ローカルに配列を作れない制限があるのでしょうか。
静的にする(static)とか動的にする(malloc())など、
環境に応じて試してみてはいかがでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!