LIST       P=16F84A
INCLUDE    <P16F84A.INC>

   CBLOCK 0X0C
    CONT
    R1; CONTADOR DEL RETARDO DE 500ms Y 1sg
    U; UNIDADES
	MIN
	ENDC
	
  
ORG 0
BSF STATUS,RP0
MOVLW B'00000011'
MOVWF TRISA
CLRF TRISB
MOVLW B'00000111'
MOVWF OPTION_REG
BCF STATUS,RP0

CLRF CONT
CLRF R1
CLRF U
CLRF PORTA
CLRF PORTB


BOTON
BTFSC PORTA,1
GOTO SOLOVERIFICAR
CALL RETARDO_500ms
CLRF R1
CALL RETARDO_500ms
CLRF R1
BTFSS PORTA,0
GOTO BOTON
GOTO VERIFICAR

VERIFICAR:
BTFSC PORTA,1
GOTO BOTON
MOVFW CONT
SUBLW D'4'
BTFSS STATUS,Z
GOTO AUMENTAR
GOTO SEPASO


SEPASO:
CLRF PORTB
BCF PORTA,2
BCF PORTA,3
CLRF CONT
GOTO BOTON

AUMENTAR:
INCF CONT
MOVFW CONT
SUBLW D'4'
BTFSS STATUS,Z
GOTO ESTAEN3
GOTO ESTAEN4

SOLOVERIFICAR:
MOVFW CONT
SUBLW D'4'
BTFSS STATUS,Z
GOTO ESTAEN3
GOTO ESTAEN4

ESTAEN4:
BCF PORTA,2
BSF PORTA,3
MOVLW B'00000000'
MOVWF PORTB
BTFSC PORTA,1
GOTO START2
GOTO BOTON

ESTAEN3:
MOVFW CONT
SUBLW D'3'
BTFSS STATUS,Z
GOTO ESTAEN2
GOTO UNOTREINTA


ESTAEN2:
MOVFW CONT
SUBLW D'2'
BTFSS STATUS,Z
GOTO ESTAEN1
GOTO UNMIN

ESTAEN1:
MOVFW CONT
SUBLW D'1'
BTFSS STATUS,Z
GOTO ESTAEN1
GOTO TREINTA

ESTAEN0:
CLRF PORTB
BCF PORTA,2
BCF PORTA,3
CLRF CONT
GOTO BOTON

TREINTA:
BCF PORTA,2
BCF PORTA,3
MOVLW B'0110000'
MOVWF PORTB
BTFSC PORTA,1
GOTO START30
GOTO BOTON

UNMIN:
BSF PORTA,2
BCF PORTA,3
MOVLW B'00000000'
MOVWF PORTB
BTFSC PORTA,1
GOTO START1
GOTO BOTON

UNOTREINTA:
BSF PORTA,2
BCF PORTA,3
MOVLW B'00110000'
MOVWF PORTB
BTFSC PORTA,1
GOTO START130
GOTO BOTON



START2:
BCF PORTA,2
BSF PORTA,3
MOVLW D'59'
MOVWF MIN
CICLOMINUTOS1:
MOVFW MIN
ANDLW B'01111111'
CALL TABLA1MIN
MOVWF PORTB
CLRF R1
CALL RETARDO_1sg
CLRF R1
BTFSS PORTA,1
GOTO BOTON
DECFSZ MIN
GOTO CICLOMINUTOS1
BSF PORTA,2
BCF PORTA,3
CLRF PORTB
CLRF R1
CALL RETARDO_1sg
CLRF R1
DECF CONT
DECF CONT
BCF PORTA,2
BCF PORTA,3
MOVLW D'59'
MOVWF MIN
ANDLW B'01111111'
CICLOMINUTOS2:
MOVFW MIN
ANDLW B'01111111'
CALL TABLA1MIN
MOVWF PORTB
CLRF R1
CALL RETARDO_1sg
CLRF R1
BTFSS PORTA,1
GOTO BOTON
DECFSZ MIN
GOTO CICLOMINUTOS2
CLRF PORTB
CLRF CONT
GOTO BOTON


START130:
BSF PORTA,2
BCF PORTA,3
MOVLW D'29'
MOVWF MIN
ANDLW B'01111111'
CICLOMINUTOS3:
MOVFW MIN
ANDLW B'01111111'
CALL TABLA30
MOVWF PORTB
CLRF R1
CALL RETARDO_1sg
CLRF R1
BTFSS PORTA,1
GOTO BOTON
DECFSZ MIN
GOTO CICLOMINUTOS3
DECF CONT
MOVLW D'59'
MOVWF MIN
ANDLW B'01111111'
BCF PORTA,2
BCF PORTA,3
CICLOMINUTOS4:
MOVFW MIN
ANDLW B'01111111'
CALL TABLA1MIN
MOVWF PORTB
CLRF R1
CALL RETARDO_1sg
CLRF R1
BTFSS PORTA,1
GOTO BOTON
DECFSZ MIN
GOTO CICLOMINUTOS4
CLRF CONT
GOTO BOTON

START1:
CLRF PORTA
MOVLW D'59'
MOVWF U
CICLOMINUTOS5:
MOVFW U
ANDLW B'01111111'
CALL TABLA1MIN
MOVWF PORTB
CLRF R1
CALL RETARDO_1sg
CLRF R1
BTFSS PORTA,1
GOTO BOTON
DECFSZ U
GOTO CICLOMINUTOS5
CLRF PORTB
CLRF CONT
GOTO BOTON

START30:
BCF PORTA,2
BCF PORTA,3
MOVLW D'29'
MOVWF MIN
ANDLW B'01111111'
CICLOMINUTOS6:
MOVFW MIN
ANDLW B'01111111'
CALL TABLA30
MOVWF PORTB
CLRF R1
CALL RETARDO_1sg
CLRF R1
BTFSS PORTA,1
GOTO BOTON
DECFSZ MIN
GOTO CICLOMINUTOS6
CLRF PORTB
CLRF CONT
GOTO BOTON

TABLA30:
ADDWF PCL,F
RETLW B'00000000'
RETLW B'00000001'
RETLW B'00000010'
RETLW B'00000011'
RETLW B'00000100'
RETLW B'00000101'
RETLW B'00000110'
RETLW B'00000111'
RETLW B'00001000'
RETLW B'00001001'
RETLW B'00010000'
RETLW B'00010001'
RETLW B'00010010'
RETLW B'00010011'
RETLW B'00010100'
RETLW B'00010101'
RETLW B'00010110'
RETLW B'00010111'
RETLW B'00011000'
RETLW B'00011001'
RETLW B'00100000'
RETLW B'00100001'
RETLW B'00100010'
RETLW B'00100011'
RETLW B'00100100'
RETLW B'00100101'
RETLW B'00100110'
RETLW B'00100111'
RETLW B'00101000'
RETLW B'00101001'
RETURN


TABLA1MIN:
ADDWF PCL,F
RETLW B'00000000'
RETLW B'00000001'
RETLW B'00000010'
RETLW B'00000011'
RETLW B'00000100'
RETLW B'00000101'
RETLW B'00000110'
RETLW B'00000111'
RETLW B'00001000'
RETLW B'00001001'
RETLW B'00010000'
RETLW B'00010001'
RETLW B'00010010'
RETLW B'00010011'
RETLW B'00010100'
RETLW B'00010101'
RETLW B'00010110'
RETLW B'00010111'
RETLW B'00011000'
RETLW B'00011001'
RETLW B'00100000'
RETLW B'00100001'
RETLW B'00100010'
RETLW B'00100011'
RETLW B'00100100'
RETLW B'00100101'
RETLW B'00100110'
RETLW B'00100111'
RETLW B'00101000'
RETLW B'00101001'
RETLW B'00110000'
RETLW B'00110001'
RETLW B'00110010'
RETLW B'00110011'
RETLW B'00110100'
RETLW B'00110101'
RETLW B'00110110'
RETLW B'00110111'
RETLW B'00111000'
RETLW B'00111001'
RETLW B'01000000'
RETLW B'01000001'
RETLW B'01000010'
RETLW B'01000011'
RETLW B'01000100'
RETLW B'01000101'
RETLW B'01000110'
RETLW B'01000111'
RETLW B'01001000'
RETLW B'01001001'
RETLW B'01010000'
RETLW B'01010001'
RETLW B'01010010'
RETLW B'01010011'
RETLW B'01010100'
RETLW B'01010101'
RETLW B'01010110'
RETLW B'01010111'
RETLW B'01011000'
RETLW B'01011001'
RETLW B'01011010' 
RETURN

RETARDO_1sg:
INCF R1
MOVFW R1
SUBLW D'20'
BTFSC STATUS,Z
RETURN
CALL RETARDO_50ms
GOTO RETARDO_1sg

RETARDO_500ms:
INCF R1
MOVFW R1
SUBLW D'10'
BTFSC STATUS,Z
RETURN
CALL RETARDO_50ms
GOTO RETARDO_500ms



RETARDO_50ms:
MOVLW D'60'
MOVWF TMR0
BCF INTCON,T0IF
ESPERA:
BTFSS INTCON,T0IF
GOTO ESPERA
RETURN 


 END
