PUERTO_TX	    EQU		6	;PIN DE TRANSMICION
PUERTO_RC	    EQU		7	;PINDE RECEPCION		    
		    CBLOCK
		    Temporal_1
		    Temporal_2
		    Temporal_3
		    DATO_HHH
		    DATO_HH
		    DATO_H
		    DATO_L
		    CONT_BITS
		    DIGI_0_1
		    DIGI_2_3
		    DIGI_4_5
		    DIGI_6_7
		    DIGI_8_9
		    TEMP_BIN_BCD
		    BIN_BCD_UNI
		    BIN_BCD_DEC
		    BIN_BCD_CEN
		    BIN_BCD_UNI_MIL
		    BIN_BCD_DEC_MIL
		    BIN_BCD_CEN_MIL
		    BIN_BCD_UNI_MILLON
		    BIN_BCD_DEC_MILLON
		    BIN_BCD_CEN_MILLON
		    BIN_BCD_UNI_BILLON
		    ENDC
		    
BIN_a_BCD_32_HHH    MOVWF   DATO_HHH	    ;SINTAXIS
		    RETURN		    ;MOVLW  X
BIN_a_BCD_32_HH	    MOVWF   DATO_HH	    ;CALL   BIN_a_BCD_32_HHH
		    RETURN		    ;MOVLW  X
BIN_a_BCD_32_H	    MOVWF   DATO_H	    ;CALL   BIN_a_BCD_32_HH		    
		    RETURN		    ;MOVLW  X
BIN_a_BCD_32_L	    MOVWF   DATO_L	    ;CALL   BIN_a_BCD_32_H
		    MOVLW   d'32'	    ;MOVLW  X
		    MOVWF   CONT_BITS	    ;CALL   BIN_a_BCD_32_L
		    GOTO    BIN_a_BCD
;-------------------------------------------------------------------------------		    
BIN_a_BCD_24_HH	    MOVWF   DATO_HHH	    ;SINTAXIS
		    RETURN		    ;MOVLW  X
BIN_a_BCD_24_H	    MOVWF   DATO_HH	    ;CALL   BIN_a_BCD_24_HH	    
		    RETURN		    ;MOVLW  X
BIN_a_BCD_24_L	    MOVWF   DATO_H	    ;CALL   BIN_a_BCD_24_H
		    MOVLW   d'24'	    ;MOVLW  X
		    MOVWF   CONT_BITS		    ;CALL   BIN_a_BCD_24_L
		    CLRF    DATO_L
		    GOTO    BIN_a_BCD		    
;-------------------------------------------------------------------------------		    
BIN_a_BCD_16_H	    MOVWF   DATO_HHH	    
		    RETURN		    ;SINTAXIS
BIN_a_BCD_16_L	    MOVWF   DATO_HH	    ;MOVLW  X
		    MOVLW   d'16'	    ;CALL   BIN_a_BCD_16_H
		    MOVWF   CONT_BITS	    ;MOVLW  X
		    CLRF    DATO_L
		    CLRF    DATO_H
		    GOTO    BIN_a_BCD	    ;CALL   BIN_a_BCD_16_L
;-------------------------------------------------------------------------------		    
BIN_a_BCD_8	    MOVWF   DATO_HHH	    ;SINTAXIS
		    MOVLW   d'8'		    
		    MOVWF   CONT_BITS
		    CLRF    DATO_L	    ;MOVLW  X
		    CLRF    DATO_HH	    ;CALL   BIN_a_BCD_8
		    CLRF    DATO_H
;-------------------------------------------------------------------------------		    
BIN_a_BCD	    BCF	    STATUS,C
		    CLRF    DIGI_0_1
		    CLRF    DIGI_2_3
		    CLRF    DIGI_4_5
		    CLRF    DIGI_6_7
		    CLRF    DIGI_8_9
		    
Rota_Datos	    BCF	    STATUS,C
		    RLF	    DATO_L,F	    ;ROTAMOS A LA IZQUIERDA TODO EL CONTENIDO 
		    RLF	    DATO_H,F	    ;DE DATO, EN CADA ACARREO DEL BIT "C" SE DESPLAZA
		    RLF	    DATO_HH,F	    ;AL SIGIENTE REGISTRO
		    RLF	    DATO_HHH,F
		    RLF	    DIGI_0_1,F
		    RLF	    DIGI_2_3,F
		    RLF	    DIGI_4_5,F
		    RLF	    DIGI_6_7,F
		    RLF	    DIGI_8_9,F
		    DECFSZ  CONT_BITS,F	    ;DECREMENTAMOS EL CONTARO DE BITS ASTA QUE DE 
		    GOTO    Apuntador	    ;CERO. SI ES ASI TERMINAMOS LA CONVERCION
		    GOTO    Organiza_BCD
Apuntador	    MOVLW   DIGI_0_1	    ;PONGO EN EL PUNTERO FSR EL REGISTRO  
		    MOVWF   FSR		    ;LO QUE OPERE SOBRE INDF SERA SOBRE LA DIRECCION
		    CALL    Pregunta_Suma   ;APUNTADA EN FSR. EN ESTE CASO DIRECCION DONDE 
		    MOVLW   DIGI_2_3	    ;ESTA EL CONTENIDO DE DATO_X_X
		    MOVWF   FSR
		    CALL    Pregunta_Suma 
		    MOVLW   DIGI_4_5
		    MOVWF   FSR
		    CALL    Pregunta_Suma 
		    MOVLW   DIGI_6_7
		    MOVWF   FSR
		    CALL    Pregunta_Suma
		    MOVLW   DIGI_8_9
		    MOVWF   FSR
		    CALL    Pregunta_Suma 
		    GOTO    Rota_Datos
Pregunta_Suma	    MOVF    INDF,W
		    MOVLW   d'3'
		    ADDWF   INDF, w
		    MOVWF   TEMP_BIN_BCD
		    BTFSC   TEMP_BIN_BCD, 3
		    MOVWF   INDF
		    MOVLW   d'48'
		    ADDWF   INDF, w
		    MOVWF   TEMP_BIN_BCD
		    BTFSC   TEMP_BIN_BCD, 7
		    MOVWF   INDF
		    RETURN
Organiza_BCD	    MOVF    DIGI_0_1,W
		    ANDLW   d'15'
		    MOVWF   BIN_BCD_UNI
		    SWAPF   DIGI_0_1,W
		    ANDLW   d'15'
		    MOVWF   BIN_BCD_DEC
		    MOVF    DIGI_2_3,W
		    ANDLW   d'15'
		    MOVWF   BIN_BCD_CEN
		    SWAPF   DIGI_2_3,W
		    ANDLW   d'15'
		    MOVWF   BIN_BCD_UNI_MIL
		    MOVF    DIGI_4_5,W
		    ANDLW   d'15'
		    MOVWF   BIN_BCD_DEC_MIL
		    SWAPF   DIGI_4_5,W
		    ANDLW   d'15'
		    MOVWF   BIN_BCD_CEN_MIL
		    MOVF    DIGI_6_7,W
		    ANDLW   d'15'
		    MOVWF   BIN_BCD_UNI_MILLON
		    SWAPF   DIGI_6_7,W
		    ANDLW   d'15'
		    MOVWF   BIN_BCD_DEC_MILLON
		    MOVF    DIGI_8_9,W
		    ANDLW   d'15'
		    MOVWF   BIN_BCD_CEN_MILLON
		    SWAPF   DIGI_8_9,W
		    ANDLW   d'15'
		    MOVWF   BIN_BCD_UNI_BILLON
		    RETURN
;--------------------CONFIGURA COMUNICACION U USART-----------------------------
		   			
Configura_USART	    BSF	STATUS,RP0				
		    BCF	TRISC,PUERTO_TX	;PONE A (0) ESTE PIN COMO SALIDA 
		    BSF	TRISC,PUERTO_RC	;PONE A (1) ESTE PIN COMO ENTRADA
		    MOVLW   0x24		;TX HABILITADA, MODO ASINCRON0
		    MOVWF   TXSTA		;CON 8 BITS Y ALTA VELOCIDAD
		    MOVLW   0x19		;SET BAUDIOS A 9600  0x19 
		    MOVWF   SPBRG		;CON Fosc = 4MHz
		    BCF	STATUS,RP0	;ENTRO EN BANCO 0
		    MOVLW   0x90		;AJUSTA RECEPTOR A 8 BITS, RECEPCION
		    MOVWF   RCSTA		;CONTINUA HABILITADA USART EN ON
		    RETURN			;RETORNA
Envia_USART	    BSF	STATUS,RP0
		    BCF	STATUS,RP1
		    BTFSS   TXSTA,TRMT
		    GOTO    Envia_USART
		    BCF	STATUS,RP0
		    MOVWF	TXREG
		    BCF	STATUS,RP0
		    BCF	STATUS,RP1
		    RETURN
Recibe_USART	    BCF	STATUS,RP0
		    BTFSS   PIR1,RCIF
		    GOTO    Recibe_USART
		    MOVF    RCREG,W
DATO		    BCF	PIR1,RCIF
		    BSF	STATUS,RP0
		    RETURN


