Saludos!!!
Estoy haciendo un programilla en ensamblador para el PIC 16f84, y no soy capaz de que me detecte las interrupciones externas, Tengo conectado un pulsador en la patilla 6 (RBO/INT). Os paso el código de la función principal que es donde m tendria q detectar la interrupción para llamar a una subrutina.
GRACIAS.
LIST p=16f84
RADIX HEX
PUL EQU 0C
#include"p16f84a.inc"
ORG 0
goto inicio
ORG 6
inicio bsf INTCON,GIE ;Permite interrupciones,GIE=1.
bsf INTCON,RBIE ;Permite interrupciones de PORTB, RBIE=1.
bsf INTCON,INTE ;Permite interrupciones externas, INTE=1.
bcf STATUS,RP0 ;Cambio a banco 0, pone RP0 a 0
movlw b'00000000'
movwf PORTA
bsf STATUS,RP0 ;Cambio a banco 1, pone RP0 a 1
movlw b'11110001' ;Pone las 4 líneas de mayor peso y la de menor peso de PORTB como entrada.
movwf TRISB ;Mueve el contenido de W al TRISB.
movlw b'00000000' ;Pone las 4 líneas de menor peso de PORTA como salida.
movwf TRISA ;Mueve el contenido de W al TRISA.
bcf STATUS,RP0 ;Cambio a banco 0, pone RP0 a 0
bcf INTCON,INTF ;Borra el flag de interrupción externa.
s1 btfss INTCON,INTF ;Se salta la siguiente instrucción si INTF=1.
goto s1
nop
bcf INTCON,INTF ;Borra el flag de interrupción externa.
s2 btfss INTCON,RBIE ;Se salta la siguiente instrucción si RBIE=1.
goto s2
call pulsadores
goto s1
Estoy haciendo un programilla en ensamblador para el PIC 16f84, y no soy capaz de que me detecte las interrupciones externas, Tengo conectado un pulsador en la patilla 6 (RBO/INT). Os paso el código de la función principal que es donde m tendria q detectar la interrupción para llamar a una subrutina.
GRACIAS.
LIST p=16f84
RADIX HEX
PUL EQU 0C
#include"p16f84a.inc"
ORG 0
goto inicio
ORG 6
inicio bsf INTCON,GIE ;Permite interrupciones,GIE=1.
bsf INTCON,RBIE ;Permite interrupciones de PORTB, RBIE=1.
bsf INTCON,INTE ;Permite interrupciones externas, INTE=1.
bcf STATUS,RP0 ;Cambio a banco 0, pone RP0 a 0
movlw b'00000000'
movwf PORTA
bsf STATUS,RP0 ;Cambio a banco 1, pone RP0 a 1
movlw b'11110001' ;Pone las 4 líneas de mayor peso y la de menor peso de PORTB como entrada.
movwf TRISB ;Mueve el contenido de W al TRISB.
movlw b'00000000' ;Pone las 4 líneas de menor peso de PORTA como salida.
movwf TRISA ;Mueve el contenido de W al TRISA.
bcf STATUS,RP0 ;Cambio a banco 0, pone RP0 a 0
bcf INTCON,INTF ;Borra el flag de interrupción externa.
s1 btfss INTCON,INTF ;Se salta la siguiente instrucción si INTF=1.
goto s1
nop
bcf INTCON,INTF ;Borra el flag de interrupción externa.
s2 btfss INTCON,RBIE ;Se salta la siguiente instrucción si RBIE=1.
goto s2
call pulsadores
goto s1