- 締切済み
PIC 初心者で行き詰まりました(汗、、、)
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 何日も堂々巡りをしてまして埒があかないので質問させていただきました。 どこが間違えているのでしょうか???? よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- naw_ok
- ベストアンサー率100% (1/1)
ENDは"プログラムの終了”ですが、プログラム実行の終了ではなくアッセンブラ(ここではMPLAB)に対してアッセンブラプログラムの記述が終了しましたので機械語への翻訳を開始して下さいと言う指示だと思います。 プログラム実行の終了は、RETURN (EXIT? HALT?)だったと思います。 あなたのプログラムでは、MAINはGOTO LOOPとなり、電源を切るまで終了しないのが正解です。 OPENやCLOSEの最後のENDは、TIMERnの様にRETURNとする。 最終行だけがENDで良いと思います。 途中にENDが見付かると、それ以降が無効となり、飛び先(OPEN、CLOSE、TIMER3等)が解決出来ないのでしょう。 間違ったらごめんなさい。
- mitoneko
- ベストアンサー率58% (469/798)
ものすごく、冗談みたいですけど、ひとつ確認してください。 数字の「0」とアルファベット大文字の「O」 それから、 数字の「1」とアルファベット大文字の「I」 間違ってませんね。 必要なら、カット&ペーストで、メモ帳にコピーして確認してください。 このMPLABのエディタ・・・確か、この二つの確認は至難の技だった記憶が・・・・