• ベストアンサー

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 */ /*どこに不具合があるのかわかりません御教授下さい。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

エラーメッセージに出ている行番号であたりをつけてください.

その他の回答 (1)

  • paspas
  • ベストアンサー率52% (47/90)
回答No.2

アセンブラプログラムを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言語の文法書を再確認されて、再度コードを確認された方がよいと思います。

関連するQ&A