【发布时间】:2016-04-24 21:16:09
【问题描述】:
我正在使用 MPLAB 为我的项目编程 PIC16F84A。我有一个汇编代码,其中 RB4-7 位连接到按钮,因此用作输入。实现一个中断子程序来处理任何新的中断(当按下按钮时)。一切正常,当按下按钮时,图片转到指定的子程序。但是现在当我在子程序中时,我必须清除标志(INTCON - RBIF)但它没有被清除,但清除 INTCON 寄存器中的任何其他位都可以正常工作。那我该怎么办?
这是我的代码:
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 是的,这就是问题所在。