• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マイコンビルドエラー修正方法を教えて下さい。)

マイコンビルドエラー修正方法

このQ&Aのポイント
  • マイコンビルドエラーの修正方法について教えてください。
  • AVR studio 4を使用している際に発生するマイコンビルドエラーの修正方法を教えてください。
  • マイコン型式がAT90S2323/2343の場合、マイコンビルドエラーを修正するにはどうすればよいですか。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

http://okwave.jp/qa/q7920705.html で、「括弧の数があっているか確認を」という回答がありましたが…身についていないみたいですね。 main()の{に対応する}があります? >#include <avr\io.h> /にするべき。 という指摘は受け入れられませんね。 >if (pa>=10); 無意味な条件判定ですが、よろしいので? >if (tm2==100) >if (kk<=4) > >ke1 = pa*k10; ke1の算出はtm2が100でkkが4未満の時だけでいいということでOKですか? >if (kk==5) >if (ka==ke) 無意味な条件判定ですが、必要ですか? >while(!(PINB &_BV (PB0)) >/* 異常(1)../micrv001.c:30: error: expected ')' before '{' token-----*/ '('が3個、')'が2個で対応取れているのですか? 「エラーメッセージは'{'の前に')'が足りない。」と言っていますが。 >} /*異常(2)../micrv001.c:78: error: expected declaration or statement at end of input----*/ main()の'}'で閉じられる前にファイルが終端に達したようです。 さんざん指摘されている括弧の数の対応をないがしろにした結果です。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.5

とりあえずビルドを通すだけなら、全部削除して int main(void) { return 0; } だけにすればOKです。

全文を見る
すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.4

>ke1の算出はtm2が100でkkが4未満の時だけでいいということでOKですか? 4「以下」だった。 まぁ、いずれにしろke1の算出は常に実行されるわけではない。ですが。 #2さんの指摘する「初心者はif文で{}を書かない手抜きをしちゃダメ。全部のif文に{}を書きましょう。」を実践していればわかりやすくなりますが。 とか、さんざん指摘しても反応ないんでしょうねぇ……。 そのうち回答してくれる人が居なくなってしまうかも知れませんので注意した方がいいですよ。 # ま、別の誰かが回答してくれるでしょうけど。 今回のプログラム、結構前からハマっているようですが…まさか仕事ではないですよね???

全文を見る
すると、全ての回答が全文表示されます。
  • chie65535
  • ベストアンサー率43% (8533/19397)
回答No.3

>マイコンビルドエラー修正方法を教えて下さい。 まず、エラーメッセージの内容を良く読め! error: expected ')' before '{' token これは「)が来る前に{が来ているぞ」って言ってる。 その意味が解らないなら「)が来る前に{が来ているぞ」ってのを100回声に出して読め! 100回声に出しても解らないなら、もう質問するな。貴方にはC言語は無理だ(つ~か、英語も日本語も無理だ) error: expected declaration or statement at end of input これは「宣言や文が終わらないままソースファイルの入力が尽きた」って言ってる。 例えば「{があるのに}が無い」って場合だ。 そう言われて「どうすれば良いか判らない」ってなら、もう質問するな。貴方にはC言語は(以下同文) 呆れてあいた口が塞がらんわ。

全文を見る
すると、全ての回答が全文表示されます。
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

マイコンというよりC言語として間違っている。 1.のエラー while( !( PINB & _BV ( PB0 ) ) 括弧の数があっていない。 2.のエラー 初心者はif文で{}を書かない手抜きをしちゃダメ。全部のif文に{}を書きましょう。 これも{}の対応が変になっている。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マイコンソフトビルド異常修正方法を教えてください。

    /*------ 自動□□装置        ------------*/ /*------ 2013年02月06日 MICR-V1   -----------*/ /*------ AVR TOOLS    AVR studio 4 ----------*/ /*------ マイコン型式    AT90S2323/2343 --------*/ #include <stdio.h> long ka; long ke; long ke1; long k10; int kk; int pa; long tm1; long tm2; long tm3; #include <avr\io.h> #define _PORT PORTB #define _DDR DDRB #define _PIN PINB /*---------------------メインプログラム------------------*/ int main(void) { DDRB = 0xfe; /*---- 11111110 PB0;入力 PB1;出力--*/ /*------------------ PB0入力有り-------------------*/ if (!(PINB &_BV (PB0)) { /*異常(1)../micrv001.c:31: error: expected ')' before '{' token ------*/ {tm2 = 0; tm1++; pa=tm1/100; } if (pa>=10) { ka =12345; /* ------ □ NO ka=1~99999 ---------*/ ke = 0; /*------- 検索アドレス ---------*/ ke1 = 0; /*------- 桁検索アドレス ---------*/ k10 = 1; /*------- 桁x10 ---------*/ kk = 0; /*------- 桁カウンタ ---------*/ pa = 0; /*------- 信号カウンタ ---------*/ tm1 = 0; /*------- 信号ONタイマ ---------*/ tm2 = 0; /*------- 信号OFFタイマ ---------*/ tm3 = 0; /*--------LED,ON-OFFタイマ ---------*/ return (0); } else if return (0); /* ----------------PB0入力無し---------------------*/ else ((PINB &_BV (PB0)) {tm1=0; tm2++; } if {(tm2!=100) return (0);} else (tm2==100) if {(kk>=5) return (0);} else if (kk<=4) { ke1 = pa*k10; ke = ke+ke1; k10 = k10*10; kk ++; pa = 0; ke1 = 0; tm2 = 0; } if (kk!=5) return (0); else if (kk==5) if (ka!=ke) return (0); else if (ka==ke) /*-------------------LED表示 ---------------------*/ do { tm3=800; do { tm3--; if (tm3>400) POBTB 0xff; else if (tm3<400) PORTB 0xfe; } while (tm3 !=0); } while (tm3 ==0); } /*異常(2)../micrv001.c:79: error: expected declaration or statement at end of input ----*/ /* ------------------- end of file ---------------*/ /* Build failed with 2 errors and 0 warnings... */

  • プログラムをBuildすると、エラーが発生

    /* 自動□□装置           */ /* 2013年01月31日 MICR-V1      */ /* AVR TOOLS    AVR studio 4   */ /* マイコン型式    AT90S2323/2343   */ #include <avr/io.h> #include <stdio.h> int main (void) long ka; long ke; long ke1; long k10; int kk; int pa; long tm1; long tm2; long tm3; #define _PORT PORTB #define _DDR DDRB #define _PIN PINB DDRB = 0xfe; /* 11111110 PB0;入力 PB1;出力 */ /* .c:23: error: expected declaration specifiers before '(' token */ if (!(PINB &_BV (PB0)) /*  PB0入力有り  */ /* .c:26: error: expected declaration specifiers before 'if' */ { {tm2=0; tm1++; pa=tm1/100;} if (pa>=10) { ka =12345; /* カルテNO ka=1~99999 */ ke = 0; /* 検索アドレス */ ke1 = 0; /* 桁検索アドレス */ k10 = 1; /* 桁x10 */ kk = 0; /* 桁カウンタ   */ pa = 0; /* 信号カウンタ */ tm1 = 0; /* 信号ONタイマ */ tm2 = 0; /* 信号OFFタイマ */ tm3 = 0; /* LED,ON-OFFタイマ */ else return 0; else ((PINB &_BV (PB0)) /* PB0入力無し */ { {tm1=0; tm2++;} if {(tm2!=100) return 0;} else (tm2==100) if {(kk>=5) return 0; } else if (kk<=4) { ke1 = pa*k10; ke = ke+ke1; k10 = k10*10; kk ++; pa = 0; ke1 =0; tm2 = 0; } if (kk!=5) return 0; else if (kk==5) if (ka !=ke) return 0; } else if (ka==ke) do{ tm3=800; do{ tm3--; if (tm3>400) POBTB 0xff; else if (tm3<400) PORTB 0xfe; } while (tm3 !=0); } while (tm3 ==0); /* end of file */ /* 77: error: old-style parameter declarations in prototyped function definition */ /* Build failed with 3 errors and 0 warnings... * 上記のプログラムをBuildすると、エラーが23、26、77行に発生します、どう訂正すれば良いか具体的に教えてください。

  • C言語 間違ったところを見つけてください

    /* 自動検索装置        */ /* 2012年9月4日  MICR0904  */ /* AT90S2323/2343       */ #include <avr\io.h> int main (void) /*   汎用レジスターの指定     */ { long ka; long ke; long ke1; long k10; int kk; int pa; long tm1; long tm2; long tm3; DDRB = 0xfe; /* 11111110 PB0;入力 PB1;出力 */ if (!(PINB && BV(PB0)) tm2=0; tm1++; pa=tm1/100; if (pa>=10) { ka =12345; /* カルテNO ka=1~99999 */ ke = 0; /* 検索アドレス */ ke1 = 0; /* 桁検索アドレス */ k10 = 1; /* 桁x10 */ kk = 0; /* 桁カウンタ   */ pa = 0; /* 信号カウンタ */ tm1 = 0; /* 信号ONタイマ */ tm2 = 0; /* 信号OFFタイマ */ tm3 = 0; /* LED,ON-OFFタイマ */ } return 0; else ( (PINB && BV (PB0)) tm1=0; tm2++; if {(tm2!=100) return 0;} else if (tm2==100) if {(kk>5) return 0; } else if (kk<=4) ke1 = pa*k10; ke = ke+ke1; k10 = k10*10; kk ++; pa = 0; ke1 =0; tm2 = 0; if (kk!=5) return 0; else if (kk==5) if( !(PINB & BV (PB0)) return 0; else if ((PINB && BV (PB0)) if (ka !=ke) return 0; else if (ka==ke) do{ tm3=800; do{ tm3--; if (tm3>400) POBTB 0xff; else if (tm3<400) PORTB 0xfe; } while (tm3 !=0); } while (tm3 ==0); /* end of file */ } 流れ図は/* 自動検索装置        */ /* 2012年9月4日  MICR0904  */ /* AT90S2323/2343       */ #include <avr\io.h> int main (void) /*   汎用レジスターの指定     */ { long ka; long ke; long ke1; long k10; int kk; int pa; long tm1; long tm2; long tm3; DDRB = 0xfe; /* 11111110 PB0;入力 PB1;出力 */ if (!(PINB && BV(PB0)) tm2=0; tm1++; pa=tm1/100; if (pa>=10) { ka =12345; /* カルテNO ka=1~99999 */ ke = 0; /* 検索アドレス */ ke1 = 0; /* 桁検索アドレス */ k10 = 1; /* 桁x10 */ kk = 0; /* 桁カウンタ   */ pa = 0; /* 信号カウンタ */ tm1 = 0; /* 信号ONタイマ */ tm2 = 0; /* 信号OFFタイマ */ tm3 = 0; /* LED,ON-OFFタイマ */ } return 0; else ( (PINB && BV (PB0)) tm1=0; tm2++; if {(tm2!=100) return 0;} else if (tm2==100) if {(kk>5) return 0; } else if (kk<=4) ke1 = pa*k10; ke = ke+ke1; k10 = k10*10; kk ++; pa = 0; ke1 =0; tm2 = 0; if (kk!=5) return 0; else if (kk==5) if( !(PINB & BV (PB0)) return 0; else if ((PINB && BV (PB0)) if (ka !=ke) return 0; else if (ka==ke) do{ tm3=800; do{ tm3--; if (tm3>400) POBTB 0xff; else if (tm3<400) PORTB 0xfe; } while (tm3 !=0); } while (tm3 ==0); /* end of file */ } マイクロチップの型式は/* AT90S2323/2343        ネットに書いてあるAVRISP mkllとAVR Studio 4で始めるAVRマイコン開発でAVR Studio 4をインストールして打ち込んだものです。 AVRISP mkllとAVR Studio 4で始めるAVRマイコン開発にかいてあることが間違っている場合は どの本を買えばいいんですか

  • C言語 間違ったところを見つけてください。

    /* 自動検索装置        */ /* 2012年9月4日  MICR0904  */ /* AT90S2323/2343       */ #include <avr\io.h> int main (void) /*   汎用レジスターの指定     */ { long ka; long ke; long ke1; long k10; int kk; int pa; long tm1; long tm2; long tm3; DDRB = 0xfe; /* 11111110 PB0;入力 PB1;出力 */ if (!(PINB && BV(PB0)) tm2=0; tm1++; pa=tm1/100; if (pa>=10) { ka =12345; /* カルテNO ka=1~99999 */ ke = 0; /* 検索アドレス */ ke1 = 0; /* 桁検索アドレス */ k10 = 1; /* 桁x10 */ kk = 0; /* 桁カウンタ   */ pa = 0; /* 信号カウンタ */ tm1 = 0; /* 信号ONタイマ */ tm2 = 0; /* 信号OFFタイマ */ tm3 = 0; /* LED,ON-OFFタイマ */ } return 0; else ( (PINB && BV (PB0)) tm1=0; tm2++; if {(tm2!=100) return 0;} else if (tm2==100) if {(kk>5) return 0; } else if (kk<=4) ke1 = pa*k10; ke = ke+ke1; k10 = k10*10; kk ++; pa = 0; ke1 =0; tm2 = 0; if (kk!=5) return 0; else if (kk==5) if( !(PINB & BV (PB0)) return 0; else if ((PINB && BV (PB0)) if (ka !=ke) return 0; else if (ka==ke) do{ tm3=800; do{ tm3--; if (tm3>400) POBTB 0xff; else if (tm3<400) PORTB 0xfe; } while (tm3 !=0); } while (tm3 ==0); /* end of file */ }

  • C言語間違っている所を見つけてください。

    /* 自動□□装置           */ /* 2013年01月08日 MICR-V1      */ /* AVR TOOLS    AVR studio 4   */ /* マイコン型式    AT90S2323/2343   */ #include <avr\io.h> int main(void) long ka; long ke; long ke1; long k10; int kk; int pa; long tm1; long tm2; long tm3; DDRB =0xfe; /* 11111110 PB0;入力 PB1;出力*/ /* 1箇所エラー */ if (!(PINB&_BV(PB0)) /*  PB0入力有り  */ /* 1箇所エラー */ { {tm2=0; tm1++; pa=tm1/100;} if (pa>=10) { ka =12345; /* カルテNO ka=1~99999 */ ke = 0; /* 検索アドレス */ ke1 = 0; /* 桁検索アドレス */ k10 = 1; /* 桁x10 */ kk = 0; /* 桁カウンタ   */ pa = 0; /* 信号カウンタ */ tm1 = 0; /* 信号ONタイマ */ tm2 = 0; /* 信号OFFタイマ */ tm3 = 0; /* LED,ON-OFFタイマ */ return 0; else return 0;} else if((PINB &_BV(PB0)) /* PB0入力無し */ { {tm1=0; tm2++;} if {(tm2!=100) return 0;} else if (tm2==100) if {(kk>=5) return 0; } else if (kk<=4) { ke1 = pa*k10; ke = ke+ke1; k10 = k10*10; kk ++; pa = 0; ke1 =0; tm2 = 0; } if (kk!=5) return 0; else if (kk==5) if (ka !=ke) return 0; } else if (ka==ke) do{ tm3=800; do{ tm3--; if (tm3>400) POBTB 0xff; else if (tm3<400) PORTB 0xfe; } while (tm3 !=0); } while (tm3 ==0); /* end of file */ /* Build failed with 3 errors and 0 warnings...*/ /* 1箇所エラー */

  • AVRマイコン開発

    #include <avr/io.h> int main(void) { volatile long i; PORTB = 0xff; DDRB = 0xff; while(1) { P1NB |= _BV(PB0); for (i = 5000; i > 0; i--); } return 0; } Build failed... No build tools defined. こんなエラーがでたのですがどこが間違っているのでしょうか?

  • マイコン(AVR)で、ある式を記述すると hex データが跳ね上がってしまう

    サインカーブを算出するために以下の質問をし、計算式を回答していただきました http://okwave.jp/qa4751105.html ですが、別の問題にあたってしまいました 上記回答の計算式をプログラムに書き込むと、コンパイル後の容量が跳ね上がってしまいます 同様の計算式で、x y に直接数字を指定すると容量が跳ね上がることはなさそうです ですが、変数を指定できなければ意味がありません なぜこのようなことが起こるのでしょうか? また、解決方法はありますか? #define F_CPU 800000UL #include <avr/io.h> #define sbi(BYTE,BIT) BYTE|=_BV(BIT) #define cbi(BYTE,BIT) BYTE&=~_BV(BIT) #include <math.h> const int sin_max1 = 127, sin_max2 = 255; int main(void) { DDRA = 0b111; DDRB = 0b11111111; DDRD = 0b1111100; PORTA = 0; PORTB = 0; cbi(PORTD, PD2); cbi(PORTD, PD3); cbi(PORTD, PD4); cbi(PORTD, PD5); cbi(PORTD, PD6); int i = 0; while (1) { sin_get(sin_max1, i); i++; if (i > sin_max1) i = 0; } } void sin_get(const int x, const int y) { int z; z = 127.5 * sin(2 * M_PI * y / x) + 127.5; // y x を直接数字に置き換えると容量は跳ね上がらない PORTB = z; }

  • ATmega168でリアルタイムにADC

    WinAVRとATmega168でAD変換をしようとしているのですが、リアルタイムに後進されません。ソースは #include <avr/io.h> int main(){ DDRB = 0xff; DDRC = 0x00; ADCSRA = 0b10000000; ADMUX = 0b00000001; while(1){ ADCSRA |= 0x40; while(ADCSRA & 0x40); PORTB = ADCL; ADCSRA = 0x00; } return 0; } というプログラムです。最初の一回はPORTBの値が変わって変換らしきことをしていることは確認できたのですが、その後に電圧を与えてみても変化がありません。電源を切ってから電圧を変えて又電源をつけると値が変わっています。一回で終了ではなくてリアルタイムに変換するためにはどこら辺をどうすれば良いのかアドバイスください。 よろしくお願いします。

  • PICマイコンで時間測定の方法を教えて!

    PICマイコン初心者です。時間を正確に測定して表示させたいのですが、時間を正確に測定する方法が分からず苦慮しています。教えてください。  デバイスはPIC16F877、プログラミング言語はMPLABに付属していた  Cコンパイラ(HI-TECH PICC Lite)です。 現在、考えてうまく動作していない記述を下記に示します。ご指摘頂きたく。  Buildは成功するのですが動作せず???? 私が考えていたのはRC0がLOWのときにdelay(100ms)をカウントしていき、 それをバイナリでPORTBに表示する方法です。 測定レンジは0.1 - 60secぐらいまでです。 ***************************************************************************** #include <pic.h> #define _XTAL_FREQ 16000000 __CONFIG(HS & DEBUGDIS & LVPDIS & BORDIS & PWRTEN & WDTDIS ); int main(void){ unsigned long T1 = 0 ; // iの変数設定 TRISC = 0b00000001 ; // RC0入力 その他は出力設定 TRISB = 0x00 ; // PORT B 出力 PORTC = 0xff    ; // PORTCをall 1を設定 PORTB = 0x00 ; // PORTBを"0"Resetする if ( RC0 == 1 ) { } else { __delay_ms(100) ; // 100ms wait T1++ ; // T1 = T1 + 1 PORTB = T1 ; } }

  • AVRマイコンでのアップダウンカウンターについて

    以下のプログラムはポートDの6番にタクトスイッチを付けてカウントアップさせるプログラムですが、 ポートDの5番にもう1つタクトスイッチを付けてカウントダウンさせたいのですがどのようにプログラムを 追加したら良いでしょうか? 変更前 #include <avr/io.h> int main( void ) { volatile uint16_t i; uint8_t cnt,s0,s1; cnt=0x0;    /* カウント値の初期値=0 */ s1=0b01000000; /* 最初は押されていない状態をセット */ DDRB=0xff; /* PortBをすべて出力に設定する PortDはデフォルトで入力設定 */ PORTD=0b01000000; /* 入力設定になっているポートにHを書くとプルアップされる */ for (;;) { /* 無限ループ */ PORTB=cnt; /* カウント値ををPortBに出力 */ s0=s1; /* 前回のデータを保存して */ s1=(PIND & 0b01000000); /* ポートBと01000000のandをとるとB6の0/1だけがs1に代入される */ if(s0>s1){ /* 前回=64(off) 今回=0(on)のときswが押されたと判断 */ cnt++; /* カウントをインクリメント */ } } } よろしくお願いします。