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

/* プログラム名;静止型自動検索装置         */
/* 使用マイコン 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 */
/*どこに不具合があるのかわかりません御教授下さい。

A 回答 (2件)

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

    • good
    • 0

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

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