
	LIST P=16F628
	INCLUDE	<P16F628.INC>
	__CONFIG   3F61	;_CP_OFF & _LVP_OFF & _BOREN_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT & _DATA_CP_OFF



;################################
;DECLARACION DE VARIABLES	#
;################################

	DEL00	EQU	20H
	DEL01	EQU	21H
	CONTA00	EQU	22H
	CONT01	EQU	23H
	INCR	EQU 24H
	
	ORG 0X00
	GOTO	INICIO


;################################
;TABLAS PARA LAS SECUENCIAS	#
;################################
SECU01	ADDWF 	PCL,1
	RETLW	B'00010001'
	RETLW	B'00001010'
	RETLW	B'00000100'
	RETLW	B'00001010'
	RETLW	B'00010001'
	RETLW	B'00000000'

SECU02	ADDWF	PCL,1
	RETLW	B'00000001'
	RETLW	B'00000011'
	RETLW	B'00000101'
	RETLW	B'00000111'
	RETLW	B'00001001'
	RETLW	B'00010010'

SECU03	ADDWF	PCL,1
	RETLW	B'00000001'
	RETLW	B'00000011'
	RETLW	B'00000111'
	RETLW	B'00001111'
	RETLW	B'00011111'
	RETLW	B'00011110'

SECU04	ADDWF	PCL,1
	RETLW	B'00000010'
	RETLW	B'00000100'
	RETLW	B'00001000'
	RETLW	B'00010000'
	RETLW	B'00001000'
	RETLW	B'00000100'

SECU05	ADDWF	PCL,1
	RETLW	B'00000100'
	RETLW	B'00001110'
	RETLW	B'00011111'
	RETLW	B'00011011'
	RETLW	B'00010001'
	RETLW	B'00000000'

SECU06	ADDWF	PCL,1
	RETLW	B'00010000'
	RETLW	B'00001000'
	RETLW	B'00000100'
	RETLW	B'00000010'
	RETLW	B'00000001'
	RETLW	B'00000010'

SECU07	ADDWF	PCL,1
	RETLW	B'00000010'
	RETLW	B'00000010'
	RETLW	B'00000100'
	RETLW	B'00000010'
	RETLW	B'00000110'
	RETLW	B'00001000'

SECU08	ADDWF	PCL,1
	RETLW	B'00011100'
	RETLW	B'00001110'
	RETLW	B'00000111'
	RETLW	B'00001111'
	RETLW	B'00011110'
	RETLW	B'00011111'

SECU09	ADDWF	PCL,1
	RETLW	B'00011000'
	RETLW	B'00001010'
	RETLW	B'00010011'
	RETLW	B'00001110'
	RETLW	B'00010001'
	RETLW	B'00011110'
	
SECU10	ADDWF	PCL,1
	RETLW	B'00011111'
	RETLW	B'00000001'
	RETLW	B'00011110'
	RETLW	B'00000101'
	RETLW	B'00011001'
	RETLW	B'00001010'

;################################
;CONFIGURACION DE PUERTOS	#
;################################
INICIO	CLRF	PORTA
	MOVLW	0X07
	MOVWF	CMCON
	BSF	STATUS,5
	MOVLW	B'00011100'
	MOVWF	TRISA
	MOVLW	B'00000000'
	MOVWF	TRISB
	BCF	STATUS,5
	CLRF	CONTA00
	CLRF	PORTB
	GOTO	PROGRAMA

;################################
;INICIO DEL PROGRAMA		#
;################################
PROGRAMA	CLRF	CONTA00
		CLRF	CONT01
		BTFSC	PORTA,2
		GOTO	AUTOMATICO
		GOTO	MANUAL
		

;################################
;PROCEDIMIENTO MANUAL		#
;################################

MANUAL	CLRF	CONT01
	MOVLW	0X00
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	GOTO	SEC01
	MOVLW	0X01
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	GOTO	SEC02
	MOVLW	0X02
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	GOTO	SEC03
	MOVLW	0X03
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	GOTO	SEC04
	MOVLW	0X04
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	GOTO	SEC05
	MOVLW	0X05
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	GOTO	SEC06
	MOVLW	0X06
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	GOTO	SEC07
	MOVLW	0X07
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	GOTO	SEC08
	MOVLW	0X08
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	GOTO	SEC09
	MOVLW	0X09
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	GOTO	SEC10
	GOTO	MANUAL
;-------------------------------
SEC01	MOVF	CONT01,0
	CALL	SECU01
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVF	CONT01,0
	CALL	SECU01
	MOVWF	PORTB
	CALL	RETARDO1
	BTFSC	PORTA,2
	GOTO	AUTOMATICO
	BTFSC	PORTA,3
	GOTO	INCRE
	BTFSC	PORTA,4
	GOTO	DECRE
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	CLRF	CONT01
	GOTO	SEC01
;-------------------------------
SEC02	MOVF	CONT01,0
	CALL	SECU02
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVF	CONT01,0
	CALL	SECU02
	MOVWF	PORTB
	CALL	RETARDO1
	BTFSC	PORTA,2
	GOTO	AUTOMATICO
	BTFSC	PORTA,3
	GOTO	INCRE
	BTFSC	PORTA,4
	GOTO	DECRE
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	CLRF	CONT01
	GOTO	SEC02
;-------------------------------
SEC03	MOVF	CONT01,0
	CALL	SECU03
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVF	CONT01,0
	CALL	SECU03
	MOVWF	PORTB
	CALL	RETARDO1
	BTFSC	PORTA,2
	GOTO	AUTOMATICO
	BTFSC	PORTA,3
	GOTO	INCRE
	BTFSC	PORTA,4
	GOTO	DECRE
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	CLRF	CONT01
	GOTO	SEC03
;-------------------------------
SEC04	MOVF	CONT01,0
	CALL	SECU04
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVF	CONT01,0
	CALL	SECU04
	MOVWF	PORTB
	CALL	RETARDO1
	BTFSC	PORTA,2
	GOTO	AUTOMATICO
	BTFSC	PORTA,3
	GOTO	INCRE
	BTFSC	PORTA,4
	GOTO	DECRE
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	CLRF	CONT01
	GOTO	SEC04
;-------------------------------
SEC05	MOVF	CONT01,0
	CALL	SECU05
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVF	CONT01,0
	CALL	SECU05
	MOVWF	PORTB
	CALL	RETARDO1
	BTFSC	PORTA,2
	GOTO	AUTOMATICO
	BTFSC	PORTA,3
	GOTO	INCRE
	BTFSC	PORTA,4
	GOTO	DECRE
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	CLRF	CONT01
	GOTO	SEC05
;-------------------------------
SEC06	MOVF	CONT01,0
	CALL	SECU06
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVF	CONT01,0
	CALL	SECU06
	MOVWF	PORTB
	CALL	RETARDO1
	BTFSC	PORTA,2
	GOTO	AUTOMATICO
	BTFSC	PORTA,3
	GOTO	INCRE
	BTFSC	PORTA,4
	GOTO	DECRE
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	CLRF	CONT01
	GOTO	SEC06
;-------------------------------
SEC07	MOVF	CONT01,0
	CALL	SECU07
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVF	CONT01,0
	CALL	SECU07
	MOVWF	PORTB
	CALL	RETARDO1
	BTFSC	PORTA,2
	GOTO	AUTOMATICO
	BTFSC	PORTA,3
	GOTO	INCRE
	BTFSC	PORTA,4
	GOTO	DECRE
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	CLRF	CONT01
	GOTO	SEC07
;-------------------------------
SEC08	MOVF	CONT01,0
	CALL	SECU08
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVF	CONT01,0
	CALL	SECU08
	MOVWF	PORTB
	CALL	RETARDO1
	BTFSC	PORTA,2
	GOTO	AUTOMATICO
	BTFSC	PORTA,3
	GOTO	INCRE
	BTFSC	PORTA,4
	GOTO	DECRE
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	CLRF	CONT01
	GOTO	SEC08
;-------------------------------
SEC09	MOVF	CONT01,0
	CALL	SECU09
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVF	CONT01,0
	CALL	SECU09
	MOVWF	PORTB
	CALL	RETARDO1
	BTFSC	PORTA,2
	GOTO	AUTOMATICO
	BTFSC	PORTA,3
	GOTO	INCRE
	BTFSC	PORTA,4
	GOTO	DECRE
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	CLRF	CONT01
	GOTO	SEC09
;-------------------------------
SEC10	MOVF	CONT01,0
	CALL	SECU10
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVF	CONT01,0
	CALL	SECU10
	MOVWF	PORTB
	CALL	RETARDO1
	BTFSC	PORTA,2
	GOTO	AUTOMATICO
	BTFSC	PORTA,3
	GOTO	INCRE
	BTFSC	PORTA,4
	GOTO	DECRE
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	CLRF	CONT01
	GOTO	SEC10
;-------------------------------
INCRE	INCF	CONTA00,1
	MOVLW	0X0A
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	CLRF	CONTA00
	GOTO	MANUAL

DECRE	MOVLW	0X00
	XORWF	CONTA00,0
	BTFSC	STATUS,Z
	GOTO	$+3
	DECF	CONTA00,1
	GOTO	MANUAL
	MOVLW	0X9
	MOVWF	CONTA00
	GOTO	MANUAL

;################################
;SECUANECIA AUTOMATICA		#
;################################

AUTOMATICO	CLRF	CONT01
		MOVLW	0X00
		XORWF	CONTA00,0
		BTFSC	STATUS,Z
		GOTO	SEC11
		MOVLW	0X01
		XORWF	CONTA00,0
		BTFSC	STATUS,Z
		GOTO	SEC12
		MOVLW	0X02
		XORWF	CONTA00,0
		BTFSC	STATUS,Z
		GOTO	SEC13
		MOVLW	0X03
		XORWF	CONTA00,0
		BTFSC	STATUS,Z
		GOTO	SEC14
		MOVLW	0X04
		XORWF	CONTA00,0
		BTFSC	STATUS,Z
		GOTO	SEC15
		MOVLW	0X05
		XORWF	CONTA00,0
		BTFSC	STATUS,Z
		GOTO	SEC16
		MOVLW	0X06
		XORWF	CONTA00,0
		BTFSC	STATUS,Z
		GOTO	SEC17
		MOVLW	0X07
		XORWF	CONTA00,0
		BTFSC	STATUS,Z
		GOTO	SEC18
		MOVLW	0X08
		XORWF	CONTA00,0
		BTFSC	STATUS,Z
		GOTO	SEC19
		MOVLW	0X09
		XORWF	CONTA00,0
		BTFSC	STATUS,Z
		GOTO	SEC20
		GOTO	PROGRAMA
;-------------------------------
SEC11	MOVF	CONT01,0
	CALL	SECU01
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVWF	PORTB
	NOP
	BTFSS	PORTA,2
	GOTO	PROGRAMA
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	GOTO	$+2
	GOTO	SEC11
	INCF	CONTA00,1
	GOTO	AUTOMATICO

;-------------------------------
SEC12	MOVF	CONT01,0
	CALL	SECU02
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVWF	PORTB
	NOP
	BTFSS	PORTA,2
	GOTO	PROGRAMA
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	GOTO	$+2
	GOTO	SEC12
	INCF	CONTA00,1
	GOTO	AUTOMATICO
;-------------------------------
SEC13	MOVF	CONT01,0
	CALL	SECU03
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVWF	PORTB
	NOP
	BTFSS	PORTA,2
	GOTO	PROGRAMA
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	GOTO	$+2
	GOTO	SEC13
	INCF	CONTA00,1
	GOTO	AUTOMATICO
;-------------------------------
SEC14	MOVF	CONT01,0
	CALL	SECU04
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVWF	PORTB
	NOP
	BTFSS	PORTA,2
	GOTO	PROGRAMA
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	GOTO	$+2
	GOTO	SEC14
	INCF	CONTA00,1
	GOTO	AUTOMATICO
;-------------------------------
SEC15	MOVF	CONT01,0
	CALL	SECU05
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVWF	PORTB
	NOP
	BTFSS	PORTA,2
	GOTO	PROGRAMA
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	GOTO	$+2
	GOTO	SEC15
	INCF	CONTA00,1
	GOTO	AUTOMATICO
;-------------------------------
SEC16	MOVF	CONT01,0
	CALL	SECU06
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVWF	PORTB
	NOP
	BTFSS	PORTA,2
	GOTO	PROGRAMA
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	GOTO	$+2
	GOTO	SEC16
	INCF	CONTA00,1
	GOTO	AUTOMATICO
;-------------------------------
SEC17	MOVF	CONT01,0
	CALL	SECU07
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVWF	PORTB
	NOP
	BTFSS	PORTA,2
	GOTO	PROGRAMA
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	GOTO	$+2
	GOTO	SEC17
	INCF	CONTA00,1
	GOTO	AUTOMATICO
;-------------------------------
SEC18	MOVF	CONT01,0
	CALL	SECU08
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVWF	PORTB
	NOP
	BTFSS	PORTA,2
	GOTO	PROGRAMA
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	GOTO	$+2
	GOTO	SEC18
	INCF	CONTA00,1
	GOTO	AUTOMATICO
;-------------------------------
SEC19	MOVF	CONT01,0
	CALL	SECU09
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVWF	PORTB
	NOP
	BTFSS	PORTA,2
	GOTO	PROGRAMA
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	GOTO	$+2
	GOTO	SEC19
	INCF	CONTA00,1
	GOTO	AUTOMATICO
;-------------------------------
SEC20	MOVF	CONT01,0
	CALL	SECU10
	MOVWF	PORTB
	CALL	RETARDO1
	CLRF	PORTB
	CALL	RETARDO1
	MOVWF	PORTB
	NOP
	BTFSS	PORTA,2
	GOTO	PROGRAMA	
	INCF	CONT01,1
	MOVLW	0X06
	XORWF	CONT01,0
	BTFSC	STATUS,Z
	GOTO	$+2
	GOTO	SEC20
	INCF	CONTA00,1
	GOTO	AUTOMATICO
;################################
;SECUENCIA DE RETARTO		#
;################################

RETARDO1			;RETARDO DE APROX 60 MILISEG
	MOVLW     .121   	; 1 set numero de repeticion  (B)
        MOVWF     DEL00      	; 1 |
Loop    MOVLW     .164      	; 1 set numero de repeticion  (A)
        MOVWF     DEL01      	; 1 |
        DECFSZ    DEL01,1    	; 1 + (1) es el tiempo 0  ? (A)
        GOTO      $-1       	; 2 
        DECFSZ    DEL00,1    	; 1 + (1) es el tiempo 0  ? (B)
        GOTO      Loop      	; 2 no, loop
        RETURN              	; 2+2 Fin.	CALL	VERIFICAR


	END