	LIST		P=16F877	
	__CONFIG 	_CP_OFF& _WDT_OFF& _PWRTE_OFF& _XT_OSC& _BODEN_OFF& _LVP_OFF
	#INCLUDE		<P16F877.INC>

CBLOCK 0X20	

		d1
		d2
		d3
		AUX1
		DELAY3		
		DELAY2		
		DELAY1		
		DELAY
		AQUA
		AQUA1
		GUARDAR
	
		ENDC

		ORG 	 00H
		GOTO	CONFIGURACION

CONFIGURACION
		;bank1	
		BSF		STATUS,RP0
		BCF		STATUS,RP1		

		MOVLW	.25			;VELOCODAD DE TRANSMISION A
		MOVWF	SPBRG       		;9600 BAUDIOS 4 MHZ
		
		BSF		TXSTA,CSRC	; FUENTE DE RELOJ: INTERNO
		BCF		TXSTA,TX9	; 9NO BIT DE TRANSMISION : DESACTIVADO
		BCF		TXSTA,TXEN  ; BIT DE TRANSMISION ACTIVADO?: ACTIVADO 
		BCF		TXSTA,SYNC  ; MODO DE USART : ASINCRONO
		BSF		TXSTA,BRGH  ; VELOCIDAD DE TRANSMISION : ALTA
		BCF		TXSTA,TRMT  ; BIT DE ESTADO DE REGISTRO DE TRANSMISION : (SOLO LECTURA)
		BCF		TXSTA,TX9D  ; PARIDAD DE TRANSMISION DEL 9NO BIT: DESACTIVAD


		;CONFIGURACION DE LOS TRIS

		BSF		TRISC,7  	;ENTRADA PARA RX
		BCF		TRISC,6    	 ;SALIDA PARA  TX
		MOVLW	B'11111111'
		MOVWF	TRISD
		CLRF	TRISB
		CLRF	TRISA

		;BANK0
		BCF		STATUS,RP0
		BCF		STATUS,RP1
		BCF		PORTC,7  	;ENTRADA PARA RX
		BCF		PORTC,6    	 ;SALIDA PARA  TX

		BSF		RCSTA,SPEN ; BIT DE HABILITACION DE PUERTO SERIAL: ACTIVADO
		BCF		RCSTA,RX9  ; BIT DE RX PARA 9 BITS : DESACTIVADO
		BSF		RCSTA,SREN ; BIT DE HABILITACION DE RX SENCILLO : ACTIVADO
		BSF		RCSTA,CREN ; BIT DE RECEPCION CONTINUA : ACTIVADO
		BCF		RCSTA,ADDEN; BIT DE HABILITACION POR DETECCION DE DIRECCION : DESACTIVADO
		BCF		RCSTA,FERR ; BIT DE CUADRO DE ERROR :     (SOLO LECTURA)
		BCF		RCSTA,OERR ; BIT DE ERROR DE OVERRUN :    (SOLO LECTURA)
		BCF		RCSTA,RX9D ;  DATO RECIBIDO DEL 9NO BIT : (SOLO LECTURA)


		CLRF	PORTB
		CLRF	PORTC
		CLRF	PORTA


HOME1

CERO
		BTFSS	PORTD,0	
		GOTO	UNO
		BTFSS	PORTD,1	 	
		GOTO	CINCO
		BTFSS	PORTD,2 	
		GOTO	DIEZ	
		BTFSS	PORTD,3
		GOTO	QUINCE
		BSF		PORTB,0		;1111
		BSF		PORTB,1
		BSF		PORTB,2
		BSF		PORTB,3
		MOVLW	.15 			;15
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME	
		

UNO	
		BTFSS	PORTD,1
		GOTO	DOS
		BTFSS	PORTD,2
		GOTO	OCHO
		BTFSS	PORTD,3
		GOTO	CATORCE
		BSF		PORTB,0		;1110
		BSF		PORTB,1
		BSF		PORTB,2
		BCF		PORTB,3
			MOVLW	.14		;14 			
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME	

DOS
		BTFSS	PORTD,2
		GOTO	TRES
		BTFSS	PORTD,3
		GOTO	DOCE
		BCF		PORTB,0		; 1100
		BCF		PORTB,1
		BSF		PORTB,2
		BSF		PORTB,3
			MOVLW	.12 			;12
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME	
	

TRES
		BTFSS	PORTD,3		
		GOTO	CUATRO		
		BCF		PORTB,0		; 1000
		BCF		PORTB,1
		BCF		PORTB,2
		BSF		PORTB,3
			MOVLW	.08 			;8
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME	
	
	
CUATRO						; 0000
		BCF		PORTB,0
		BCF		PORTB,1
		BCF		PORTB,2
		BCF		PORTB,3
			MOVLW	.00 			;0
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME				

CINCO	
		BTFSS	PORTD,2 	
		GOTO	SEIS
		BTFSS	PORTD,3
		GOTO	TRECE
		BSF		PORTB,0		;1101
		BCF		PORTB,1
		BSF		PORTB,2
		BSF		PORTB,3
		MOVLW	.13 			;13
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME	

	
SEIS	
		BTFSS	PORTD,3
		GOTO	SIETE
		BSF		PORTB,0		; 1001
		BCF		PORTB,1
		BCF		PORTB,2
		BSF		PORTB,3
			MOVLW	.09 			;9
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME	

SIETE						; 0001
		BSF		PORTB,0
		BCF		PORTB,1
		BCF		PORTB,2
		BCF		PORTB,3
		MOVLW	.01 			;1
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME

OCHO
		BTFSS	PORTD,3
		GOTO	NUEVE
		BSF		PORTB,0		;1010
		BCF		PORTB,1
		BSF		PORTB,2
		BCF		PORTB,3
		MOVLW	.10 			;10
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME	

NUEVE						;0010
		BCF		PORTB,0
		BSF		PORTB,1
		BCF		PORTB,2
		BCF		PORTB,3
		MOVLW	.02 			;2
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME
		
DIEZ	
		BTFSS	PORTD,3
		GOTO	ONCE
		BSF		PORTB,0		;1011
		BSF		PORTB,1
		BCF		PORTB,2
		BSF		PORTB,3
		MOVLW	.11 			;11
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME	

ONCE						;0011
		BSF		PORTB,0
		BSF		PORTB,1
		BCF		PORTB,2
		BCF		PORTB,3
		MOVLW	.3			;3
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME
	
DOCE		
		BCF		PORTB,0		;0100
		BCF		PORTB,1
		BSF		PORTB,2
		BCF		PORTB,3
		MOVLW	.4 			;4
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME

TRECE						;0101
		BSF		PORTB,0
		BCF		PORTB,1
		BSF		PORTB,2
		BCF		PORTB,3
		MOVLW	.5 			;5
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME

CATORCE						;0110
		BCF		PORTB,0
		BSF		PORTB,1
		BSF		PORTB,2
		BCF		PORTB,3
		MOVLW	.6 			;6
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME

QUINCE						;0111
		BSF		PORTB,0
		BSF		PORTB,1
		BSF		PORTB,2
		BCF		PORTB,3
		MOVLW	.7 			;7
		MOVWF	AQUA
		CALL	CONVER	
		MOVFW	AQUA
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME

HOME

CERO1
		BTFSS	PORTD,4	
		GOTO	UNO1
		BTFSS	PORTD,5	 	
		GOTO	CINCO1
		BTFSS	PORTD,6 	
		GOTO	DIEZ1	
		BTFSS	PORTD,7
		GOTO	QUINCE1
		BSF		PORTB,4		;1111
		BSF		PORTB,5
		BSF		PORTB,6
		BSF		PORTB,7
		MOVLW	.31			;31
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1	
		

UNO1	
		BTFSS	PORTD,5
		GOTO	DOS1
		BTFSS	PORTD,6
		GOTO	OCHO1
		BTFSS	PORTD,7
		GOTO	CATORCE1
		BSF		PORTB,4		;1110
		BSF		PORTB,5
		BSF		PORTB,6
		BCF		PORTB,7
		MOVLW	.30 			;30
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1	

DOS1
		BTFSS	PORTD,6
		GOTO	TRES1
		BTFSS	PORTD,7
		GOTO	DOCE1
		BCF		PORTB,4		; 1100
		BCF		PORTB,5
		BSF		PORTB,6
		BSF		PORTB,7
		MOVLW	.28 			;28
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1
	

TRES1
		BTFSS	PORTD,7		
		GOTO	CUATRO1		
		BCF		PORTB,4		; 1000
		BCF		PORTB,5
		BCF		PORTB,6
		BSF		PORTB,7
		MOVLW	.24				;24
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1
	
	
CUATRO1						; 0000
		BCF		PORTB,4
		BCF		PORTB,5
		BCF		PORTB,6
		BCF		PORTB,7
		MOVLW	.16 			;16
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1				

CINCO1	
		BTFSS	PORTD,6 	
		GOTO	SEIS1
		BTFSS	PORTD,7
		GOTO	TRECE1
		BSF		PORTB,4		;1101
		BCF		PORTB,5
		BSF		PORTB,6
		BSF		PORTB,7
		MOVLW	.29 			;29
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1	

	
SEIS1	
		BTFSS	PORTD,7
		GOTO	SIETE1
		BSF		PORTB,4		; 1001
		BCF		PORTB,5
		BCF		PORTB,6
		BSF		PORTB,7
		MOVLW	.25 			;25
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1	

SIETE1						; 0001
		BSF		PORTB,4
		BCF		PORTB,5
		BCF		PORTB,6
		BCF		PORTB,7
		MOVLW	.17 			;17
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1

OCHO1
		BTFSS	PORTD,7
		GOTO	NUEVE1
		BSF		PORTB,4		;1010
		BCF		PORTB,5
		BSF		PORTB,6
		BCF		PORTB,7
		MOVLW	.26 			;26
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1	

NUEVE1						;0010
		BCF		PORTB,4
		BSF		PORTB,5
		BCF		PORTB,6
		BCF		PORTB,7
		MOVLW	.18			;18
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1
		
DIEZ1	
		BTFSS	PORTD,7
		GOTO	ONCE1
		BSF		PORTB,4		;1011
		BSF		PORTB,5
		BCF		PORTB,6
		BSF		PORTB,7
		MOVLW	.27 			;27
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1	

ONCE1						;0011
		BSF		PORTB,4
		BSF		PORTB,5
		BCF		PORTB,6
		BCF		PORTB,7
		MOVLW	.19 			;19
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1
	
DOCE1		
		BCF		PORTB,4		;0100
		BCF		PORTB,5
		BSF		PORTB,6
		BCF		PORTB,7
		MOVLW	.20 			;20
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1

TRECE1						;0101
		BSF		PORTB,4
		BCF		PORTB,5
		BSF		PORTB,6
		BCF		PORTB,7
		MOVLW	.21 			;21
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1

CATORCE1						;0110
		BCF		PORTB,4
		BSF		PORTB,5
		BSF		PORTB,6
		BCF		PORTB,7
		MOVLW	.22 			;22
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
	GOTO	HOME1

QUINCE1						;0111
		BSF		PORTB,4
		BSF		PORTB,5
		BSF		PORTB,6
		BCF		PORTB,7
		MOVLW	.23 			;23
		MOVWF	AQUA1
		CALL	CONVER	
		MOVFW	AQUA1
		CALL	CONVER1	
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO
		CALL	RETARDO

	GOTO	HOME1

RETARDO		movlw	0x01
			movwf	DELAY3
			clrf	DELAY2
			clrf	DELAY1
loop		decfsz	DELAY1,1
			goto	loop
			decfsz	DELAY2,1
			goto	loop
			decfsz	DELAY3,1
			goto	loop
			return

CONVER		bsf		STATUS,5
			bcf		STATUS,6		;banco 1
			bsf		TRISC,6			;salida TX
			bsf		TRISC,7			;entrada RX
			movlw	b'00011001'
			movwf	SPBRG			;generador 9600 baudios, alta velocidad, 4Mhz
			bsf		TXSTA,2			;BRGH alta velocidad asincronico
			bcf		TXSTA,4			;SYNC modo asincrono
			bcf		STATUS,5		;banco 0
			bsf		RCSTA,7			;SPEN configuracion portc
			bsf		STATUS,5
			bcf		STATUS,6		;banco1
			bcf		TXSTA,6			;TX9 transmicion 8 bit
			bsf		TXSTA,5			;TXE activa la transmicion
			bcf		STATUS,5		;banco 0
			RETURN
CONVER1		movwf	TXREG			;registro transmicion USART
			bsf		STATUS,5
			bcf		STATUS,6		;banco 1
INICIO3		btfss	TXSTA,1			;TRMT verifica si TSR esta vacio
			goto	INICIO3
			bcf		STATUS,5		;banco 0
			RETURN

END

