私のプロジェクトではPIC16F84AをプログラムするのにMPLABを使用しています。 RB4-7ビットがボタンに接続されているため、入力として使用されるアセンブリコードがあります。新しい割込み(ボタンが押されたとき)を処理するために、割込みサブルーチンが実装されています。すべてがうまくいきます。ボタンを押すと、指定したサブルーチンが表示されます。しかし、今私がサブルーチンに入っているときに、フラグ(INTCON-RBIF)をクリアしなければならないが、クリアされていないが、INTCONレジスタ内の他のビットをクリアすると正常に動作する。だから何をすべきか?ここで MPLAB、ビットをクリアしようとしても残ります1
は私のコードです: ORG 0X00
GOTO START
ORG 0x04
BTFSC INTCON,RBIF
GOTO RBX_INT
START CLRF PORTA
MOVLW B'10001000'
MOVWF INTCON
BSF STATUS,RP0
CLRF TRISA
MOVLW B'11110000'
MOVWF TRISB
MOVLW B'10000111'
MOVWF OPTION_REG
BCF STATUS,RP0
MAIN GOTO MAIN
そして、これは私のサブルーチンである:あなたがそうでなければ、新たな割り込みが既にながら発生することが、割り込みから復帰する直前にあなたがビットをクリアする必要があり
RBX_INT BCF INTCON,RBIF
MOVLW D'156'
CALL DELAY
RETFIE
これが「変更時の割り込み」の場合は、状態を知る必要がなくても実際に**ポートを**読み込む必要があります。そうしないと、割り込みを発生させるロジックは起動し続けます。 –
@RogerRowlandはい、それが問題でした。 – kamal