重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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件)

ENDは"プログラムの終了”ですが、プログラム実行の終了ではなくアッセンブラ(ここではMPLAB)に対してアッセンブラプログラムの記述が終了しましたので機械語への翻訳を開始して下さいと言う指示だと思います。



プログラム実行の終了は、RETURN (EXIT? HALT?)だったと思います。
あなたのプログラムでは、MAINはGOTO LOOPとなり、電源を切るまで終了しないのが正解です。
OPENやCLOSEの最後のENDは、TIMERnの様にRETURNとする。
最終行だけがENDで良いと思います。 途中にENDが見付かると、それ以降が無効となり、飛び先(OPEN、CLOSE、TIMER3等)が解決出来ないのでしょう。  間違ったらごめんなさい。
    • good
    • 0

 ものすごく、冗談みたいですけど、ひとつ確認してください。


 数字の「0」とアルファベット大文字の「O」    
 それから、
 数字の「1」とアルファベット大文字の「I」

 間違ってませんね。
 必要なら、カット&ペーストで、メモ帳にコピーして確認してください。
 このMPLABのエディタ・・・確か、この二つの確認は至難の技だった記憶が・・・・
    • good
    • 0

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