ISR:
;Aca codigo de guardado de registros W,STATUS,PCLATH
BTFSC INTCON, TMR0IF
CALL TIEMPO_CUMPLIDO ;SE CUMPLIO TIEMPO
BTFSC INTCON, INTF
CALL BOTON_START_PRESIONADO ; BOTON START
BTFSC INTCON, RBIF
CALL REVISAR_BOTONES ; BOTON PAUSA O RESET
;Aca codigo de resutaracion de registros W,STATUS,PCLATH
TIEMPO_CUMPLIDO:
BTFSS MIFLAGS,0 ; En caso de estar apagado por los botones salir
RETURN
;Incremento el Contador
;Muestro en leds
RETURN
BOTON_START_PRESIONADO
BSF MIFLAGS,0
BCF INTCON, INTF
RETURN
REVISAR_BOTONES
MOVF PORTB, W
ANDLW 0B11000000 ; Solo dejo los bits de mi interes.
MOVWF TEMP ; Lo muevo a un registro Temporal
; Comienzo a revisar pin a pin
BTFSC VALOR_ANTERIOR,6 ; El valor anterior del puerto, era 0 ?
GOTO REVISAR_BOTONES_7 ; Si era 1, entonces no me interesa, y voy a ver el otro boton
BTFSS TEMP, 6 ; Ahora reviso el valor actual, si es 1, significa flanco ascendente
GOTO REVISAR_BOTONES_7 ; Este GOTO es por si no hubo flanco ascendente
BCF MIFLAGS,0 ; Paro el contador, si no se quiere parar se comenta esta linea
CLRF CONTAR_20MS ; Limpio el contador ( porque RB6 era el reset )
REVISAR_BOTONES_7: ; Y por las dudas continuo para ver el boton RB7
BTFSC VALOR_ANTERIOR,7 ; Ahora RB7, El valor anterior del puerto, era 0 ?
GOTO REVISAR_BOTONES_FIN ; Si era 1, entonces no me interesa, ya vi los 2 botones, salgo y limpio
BTFSS TEMP, 7 ; Ahora reviso el valor actual, si es 1, significa flanco ascendente
GOTO REVISAR_BOTONES_FIN ; Este GOTO es por si no hubo flanco ascendente
MOVLW 0x01
XORWF MIFLAGS, F ; Simplemente pauso o reanudo, es decir invierto el valor del bit.
REVISAR_BOTONES_FIN:
; Termine de revisar los botones, limpio flag, Actualizo el ultimo valor del puerto y salgo.
MOVF TEMP, W ; Actualizo el ultimo valor del puerto
MOVWF VALOR_ANTERIOR
BCF INTCON, RBIF
RETURN