- ベストアンサー
AVR Tudio上記のプログラムをC言語で作成
/* プログラム名;静止型自動検索装置 */ /* 使用マイコン AT90S2323-10pc */ #include <io.h> int main() if (reset ==0) /* reset=0 7 行目 */ { /************ 初期値 9 ***********************/ int kado =1111 ; int kens =0 ; int ketate =0 ; int palu =0 ; int ketaha =0 ; int ketaka =0 ; int time =0 ; int reset =0 ; int dami =0 ; /********** I/Oレジスターの指定 19 *******/ equ sing =r16 ; /* $16 Bポー入力ピンパルス信号 20 */ def ddrb =r17 ; /* $17 Bポートデータ方向レジスター 21*/ def portb =r18 ; /* $18 Bポータレジスタ 22*/ /********** ホートDとBを初期 23*********/ ser bpoto = $FE ; /* Bポート111111110設定 24 */ out ddrb = bpoto ; clr bpoto = $00 ; /* 出力LED 26 */ out portb = bpoto } ; /* 初期設定 27 */ /********** メイン処理ルーチン 28 *********/ eles if ( reset ==1) /* reset=1 29 */ { dami ++ ; } /* r30+1 30 */ sdis pind sing ; /* sing=1 31 */ { kens =kens + ketake } ; /* r2=r2+ r4 32 */ time = = 0 ; /* time=0 33 */ sbic pind sing ; /* sing=0 34 */ palu ++ ; /* r6=r6+1 35 */ time = 70 } ; /* 0.2sec 36 */ main2; sbic pind sing ; /* sing=1 36 */ { rjmp main1 sbic pind sing ; /* sing=0 39 */ { time -- } ; /* t1=t1-1 40 */ if ( time != 0 ) /* time ! =0 41 */ rjmp main2 if ( time ==0 ) { dami ++ ; } /* r30+1 43 */ if ( palu ! = 10 ) /* r6 !=10 44 */ { rjmp main3 } if ( palu ==10 ) /* r6=10 45 */ ketaha = ketate * 10 ; /* r8=r4x10 46 */ kens =kens - ketaha } ; /* r2=r2-r8 47 */ main3; palu = 0 ; /* r6=0 49 */ ketate = ketate * 10 ; /* r4=r4x10 50 */ if (ketaka == 5 ) /* r10=!5 51 */ { rjmp main1 } ; if (ketaka == 5 ) { dami + + ; } /* r30+1 54 */ if ( kabo !=kens ) /* r0 !=r2 55 */ { reset = 0 ; /* r28=0 56 */ rjmp main1 } ; if ( kabo =kens } /* r0=r2 58 */ { reset =3 ; } /* r28=3 59 */ main4; time = 800 ; } /* 0.8sec設定 61 */ main5 time -- ; /* t1-1 62 */ if ( time > 400 ) /* t1>400 63 */ { ori bpoto ,$10 ; out portb .bpoto } ; /* LED表示 65 */ if ( time <=400 ) /* t1<=400 66 */ { ori bpoto $00 ; out portb bpoto ; /* LED消灯表示 68 */ if (time ! = 0 ) /* time !=0 */ rjmp main5 } ; if ( time =0 ) { rjmp main4 ) ; /****** END of File 72 ***** */ /*AVR Tudio上記のプログラムをC言語で作成しコンパイルを行つたところ */ /*エラー数が436個もあります、一番数の多いのは下記2個がおおいです。 */ /*../test5.c:71: error: stray '\201' in program */ /*./test5.c:71: error: stray '@' in program */ /*どこに不具合があるのかわかりません御教授下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エラーメッセージに出ている行番号であたりをつけてください.
その他の回答 (1)
- paspas
- ベストアンサー率52% (47/90)
アセンブラプログラムをc言語に変換されているのでしょうか? 正しくc言語に変換されていないように思います。 不具合を少なくするためには、まずわかりやすく書くことが大切です。 int main() if (reset ==0) /* reset=0 7 行目 */ { の部分 main() { のようにmainあとに{をつけて、関数の中身をはっきりさせる。 /********** I/Oレジスターの指定 19 *******/ equ sing =r16 ; /* $16 Bポー入力ピンパルス信号 20 */ def ddrb =r17 ; /* $17 Bポートデータ方向レジスター 21*/ def portb =r18 ; /* $18 Bポータレジスタ 22*/ /********** ホートDとBを初期 23*********/ ser bpoto = $FE ; /* Bポート111111110設定 24 */ out ddrb = bpoto ; clr bpoto = $00 ; /* 出力LED 26 */ out portb = bpoto } ; /* 初期設定 27 */ この部分も半分アセンブラじゃないのでしょうか? eles if ( reset ==1) /* reset=1 29 */ これも else ? それ以外にも意味不明点がたくさんあります。 c言語の文法書を再確認されて、再度コードを確認された方がよいと思います。