プロが教えるわが家の防犯対策術!

PIC初心者です。よろしくお願いします。

PIC16F84Aを使って
「ポートA 0bIt 」 に入力があったとき(1になったとき)
ラベルの「OPEN」に飛びポートBのLEDが一秒点灯。

「ポートA 1bit 」に入力があったとき
ラベルの「CLOSE」に飛びポートBのLEDが一秒点灯。

これだけのプログラムなのですが

MPLAB IDE v8.63で

Debug all すると

;の記述のところで表記のエラーが出ます。

プログラムはこちらです。


list P=pic16f84a
include "p16f84a.inc"

__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

CNT1     EQU   0CH
CNT2    EQU   0DH
CNT3     EQU  0EH

      ORG    0

     GOTO    MAIN
         
MAIN
     BSF    STATUS,RP0
     MOVWF    TRISA
     CLRF    TRISB
     BCF    STATUS,RP0
     CLRF    PORTB

     CLRW
LOOP
     BTFSC    PORTA,0
     GOTO   OPEN

     BTFSC   PORTA,1
     GOTO    CLOSE     ;ここで「Symbol not previously defined (CLOSE)」 のエラー                  
     GOTO    LOOP

OPEN
     MOVLW    010H
     MOVWF    PORTB
     CALL   TIMER3    ;ここでSymbol not previously defined (TIMER3)エラー                       
     CLRF    PORTB
     END

CLOSE   MOVLW    020H
     MOVWF    PORTB
     CALL   TIMER3
     CLRF   PORTB
     END

TIMER1     MOVLW    D'62'
      MOVWF    CNT1
LOOP1     NOP
      DECFSZ    CNT1,1
      LOOP1
      RETURN

TIMER2     MOVLW    D'100'
      MOVWF    CNT2
LOOP2     NOP
      CALL    TIMER1
      DECFSZ    CNT2,1
      goto     LOOP2
      RETURN

TIMER3     MOVLW    D'100'

      MOVWF    CNT3
LOOP3     NOP
      CALL    TIMER2
      DECFSZ    CNT3,1
      goto     LOOP3
      RETURN

     END

何日も堂々巡りをしてまして埒があかないので質問させていただきました。
どこが間違えているのでしょうか????

よろしくお願いいたします。

A 回答 (2件)

全然詳しくないですが、見たところ


該当エラーが出るラベルの書き方が、エラーが出てない箇所と比べる

「ラベル名の後が改行されてない」
点が気になります。
「ラベルの後ろは改行すること」のような文法上の規則がありませんか?
というか、「理由は後からついてくる」ので、理屈抜きにやってみるのが早道で現実的です。

debug all との関連はわかりませんが、ラベル判定方法が違ってくるのかも知れません。

TIMER1 以下サブルーチンのラベルは全て同様ですが、まだそこまで届いてないから
ひっかからないだけで、上のエラーを修正すれば次はひっかかってくるでしょう。

あと本質問には関係ないですが、サブルーチン LOOP1 内3行目が
LOOP1
とだけですが GOTO か何か抜けてませんか。
    • good
    • 0
この回答へのお礼

umamimiさま。

当方の愚問にコメント有難うございます。

「ラベルの後ろは改行」という法則はないようです。

色々とやってみましたが、どうしても改善されません。

何か基本的な所で引っかかってるような気がします。

>あと本質問には関係ないですが、サブルーチン LOOP1 内3行目が
 LOOP1
 とだけですが GOTO か何か抜けてませんか

 全くその通りでした(汗、、、)

 有難うございました。

お礼日時:2012/09/10 08:36

PICのことはほとんどわからないのですが・・・


確かにエラーなしでうまくいきそうなソースに見えます。
もしかして、飛び先のラベルの前にスペースが入っていたり、半角スペースの代わりに全角スペースを使ってしまっていたりしないでしょうか

http://mycomputer.cqpub.co.jp/pic004/2009/05/pic …
http://www006.upp.so-net.ne.jp/picbegin/proj1/p1 …

この回答への補足

遅くなりましたが原因がわかりました。

教えていただいたURLの中でテキストエディタの紹介が
ありました。
TERA PADというソフトで読み直しましたら
余計なスペースが見つかりました。

ありがとうございました。

補足日時:2012/09/22 10:05
    • good
    • 0
この回答へのお礼

遅くなりましてすみませんでした。

私もそのことは気をつけて再度入力し直したのですが
結果は同じでした。

もっと簡単な数行だけのプログラムでも何故か

「goto 文」で引っかかってしまいます。

参考URLありがとうございます。

また質問させていただきますので、その節はよろしくお願いします。

お礼日時:2012/09/12 12:12

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