	list p=16f877
	include "p16f877.inc"
	__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_ON & _BODEN_OFF & _LVP_OFF

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Programa para probar las diferentes interrupciones que me ayudarán a controlar el ;
; teclado 4x4 através de puerto b.													;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	org 0x00
	goto Inicio
	org	0x04
Tratamiento_Interrupción
btfss	INTCON,RBIF	; Fue la interrupción de cambio??
goto	Final		; no, interrupción en falso, regrsa.
bsf		PORTB,1
call	Retardo_1s
nop
bcf		PORTB,1
Final
movf	PORTB,0
bcf		INTCON,RBIF ; Repara el fag de la interrupción.
retfie				; Retorno de la interrupción 


Inicio
bsf	STATUS,RP0	;
bcf	STATUS,RP1	; Pasa al banco 1
movlw	0xF0
movwf	TRISB	; Puerto B funciona como entradas.

bcf	STATUS,RP0	; regresa al banco 0
movf	PORTB,0	; adquiere el valor de puerto b para saber si algún valor cambió.
movlw b'10001000'
movwf	INTCON	; Activa GIE y RBIE.
Loop
nop
sleep
goto	Loop

include "Retardos.inc"
end

