;------------------------------------------------------------
; Código assembler 
; Proyecto: Rutinas para Nextion
; Autor: Esteban Mariano Folcher Cividini
; Colaboración; KILLERJC de todopic
;		Pinonillo 16 de todopic
;	
; Fecha: 27/08/2018
; PIC: 16F877A
; Velocidad de reloj: 4 Mhz
;------------------------------------------------------------
PUERTO_TX	    EQU		6	;PIN DE TRANSMICION
PUERTO_RC	    EQU		7	;PINDE RECEPCION			
O_Text		    EQU	d'1'
O_Scrolling_Text    EQU d'2'
O_123_Number	    EQU	d'3'
O_Button	    EQU	d'4'	
O_Progress_Bar	    EQU	d'5'	
O_Picture	    EQU	d'6'	
O_Crop		    EQU	d'7'
O_Hotspot	    EQU	d'8'
O_Gauge		    EQU	d'9'
O_waveform	    EQU	d'10'
O_Slider	    EQU	d'11'
O_Timer		    EQU	d'12' 
O_Variavle	    EQU	d'13'
O_Dual_State_Button EQU	d'14'
O_Checkbox	    EQU	d'15'
O_Radio		    EQU	d'16'
O_QRcode	    EQU	d'17'
;-------------------------------------------------------------------------------
F_en		    EQU	d'1'
F_pw		    EQU	d'2'
F_fin		    EQU	d'3'
F_bco		    EQU	d'4'
F_pco		    EQU	d'5'
F_txt		    EQU	d'6'
F_dir		    EQU	d'7'
F_tim		    EQU	d'8'
F_dis		    EQU	d'9'
F_val		    EQU	d'10'
F_pic		    EQU	d'11' 
F_hig		    EQU	d'12'  
F_wid		    EQU	d'13'
F_gdc		    EQU	d'14'   
F_gdw		    EQU	d'15'
F_gdh		    EQU	d'16'
F_pco0		    EQU	d'17'
F_isbr		    EQU	d'18'
F_bco0		    EQU	d'19'
F_bco1		    EQU	d'20'
F_font		    EQU	d'21'
F_xcen		    EQU	d'22'
F_ycen		    EQU	d'23'
F_bco2		    EQU	d'24'
F_pco2		    EQU	d'25'
F_picc		    EQU	d'26'
F_maxval	    EQU	d'27'
F_minval	    EQU	d'28'
F_pic2		    EQU	d'29'
F_format	    EQU	d'30'
F_lenth		    EQU	d'31'
F_rest		    EQU	d'32'
F_picc2		    EQU	d'33'
F_bpic		    EQU	d'34'
F_ppic		    EQU	d'35'
F_tm		    EQU	d'36'
F_pco3		    EQU	d'37'
F_pco1		    EQU d'38'
F_add		    EQU	d'39'
F_bauds		    EQU	d'40'
F_pic0		    EQU	d'41'
F_pic1		    EQU	d'42'
F_picc0		    EQU	d'43'
F_picc1		    EQU	d'44'
;-------------------------------------------------------------------------------
S_igual			    EQU d'1'
S_punto			    EQU d'2'
S_comillas		    EQU d'3'
S_mas			    EQU	d'4'
S_menos			    EQU	d'5'
S_igual_comillas	    EQU	d'6'
S_mas_igual		    EQU	d'7'
S_menos_igual		    EQU	d'8'
S_mas_igual_comillas	    EQU	d'9'
S_menos_igual_comillas	    EQU	d'10'
S_igual_comillasX2	    EQU	d'11'
S_multiplica_igual	    EQU	d'12'
S_divide_igual		    EQU	d'13'
	   
		    CBLOCK 
		    Temporal_1
		    Temporal_2
		    Temporal_3
		    N_OBJETO
		    AUX_PCLATH
;-------------------Multiplica			
		    MULTI_DATO_1
		    MULTI_DATO_2
		    MULTI_8x8_BITS_L
		    MULTI_8x8_BITS_H
		    MULTI_T_1
		    MULTI_T_2
		    MULTI_T_5
		    MULTI_T_6
		    MULTI_T_9
		    MULTI_T_10
		    MULTI_T_11
		    MULTI_T_12
		    MULTI_T_13
;------------------ Objeto, Funcion, Simbolo			
		    ORIGEN_DATO_H
		    ORIGEN_DATO_L
;------------------ Administra_envia			
		    DATO_O_F_S
		    TEMP_DATO_H
		    TEMP_DATO_L
		    DATO_TABLA
;-------------------N_Objeto
		    NUM_OBJETO_UNI
		    NUM_OBJETO_DEC
		    NUM_OBJETO_CEN
		    AUX_OBJETO
;-------------------BIN_a_BCD_8_16_24_32
		    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
;-------------------Prepara_Envia_Mensaje
		    MENSAJE_MEMORISA        
		    GUARDA_CARACTER
		    AUX_SALVA_MENSAJE
		    ENDC


;--------------------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
;------------------ESTA RUTINA LE BYT A BYT EL MENSAJE Y LO ENVIA 
			
;Prepara_Envia_Mensaje	MOVF	AUX_SALVA_MENSAJE,W			
Envia_Mensaje		MOVWF	MENSAJE_MEMORISA   
Envia_Mensaje_1		MOVF	MENSAJE_MEMORISA,W
			CALL	Mensajes_Nextion
			MOVWF	GUARDA_CARACTER
			MOVF	GUARDA_CARACTER,F
			BTFSS	STATUS,Z
			GOTO	Envia_Mensaje_2
			RETURN	
Envia_Mensaje_2		CALL	Envia_USART
			INCF	MENSAJE_MEMORISA,F
			GOTO    Envia_Mensaje_1
;--------------------CRIBA DE CEROS PARA EL NUMERO DE OBJETO--------------------
;		    EN NEXTION EL NUMERO DE OBJETO NO PERMITE CEROS POR DELANTE
Envia_Variable_BDC  MOVF    BIN_BCD_UNI_BILLON,W
		    BTFSC   STATUS,Z
		    GOTO    Criba_9_Digitos
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_BILLON,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN_MILLON,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC_MILLON,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_MILLON,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI,W
		    CALL    Envia_USART
		    RETURN
		    
Criba_9_Digitos	    MOVF    BIN_BCD_CEN_MILLON,W
		    BTFSC   STATUS,Z
		    GOTO    Criba_8_Digitos
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN_MILLON,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC_MILLON,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_MILLON,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI,W
		    CALL    Envia_USART
		    RETURN
		    
Criba_8_Digitos	    MOVF    BIN_BCD_DEC_MILLON,W
		    BTFSC   STATUS,Z
		    GOTO    Criba_7_Digitos
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC_MILLON,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_MILLON,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI,W
		    CALL    Envia_USART
		    RETURN
		    
Criba_7_Digitos	    MOVF    BIN_BCD_UNI_MILLON,W
		    BTFSC   STATUS,Z
		    GOTO    Criba_6_Digitos
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_MILLON,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI,W
		    CALL    Envia_USART
		    RETURN
		    
Criba_6_Digitos	    MOVF    BIN_BCD_CEN_MIL,W
		    BTFSC   STATUS,Z
		    GOTO    Criba_5_Digitos
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI,W
		    CALL    Envia_USART
		    RETURN
		    
Criba_5_Digitos	    MOVF    BIN_BCD_DEC_MIL,W
		    BTFSC   STATUS,Z
		    GOTO    Criba_4_Digitos
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI,W
		    CALL    Envia_USART
		    RETURN
		    
Criba_4_Digitos	    MOVF    BIN_BCD_UNI_MIL,W
		    BTFSC   STATUS,Z
		    GOTO    Criba_3_Digitos
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI_MIL,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI,W
		    CALL    Envia_USART
		    RETURN

Criba_3_Digitos	    MOVF    BIN_BCD_CEN,W
		    BTFSC   STATUS,Z
		    GOTO    Criba_2_Digitos
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_CEN,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI,W
		    CALL    Envia_USART
		    RETURN
		    
Criba_2_Digitos	    MOVF    BIN_BCD_DEC,W
		    BTFSC   STATUS,Z
		    GOTO    Criba_1_Digitos
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_DEC,W
		    CALL    Envia_USART
		    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI,W
		    CALL    Envia_USART
		    RETURN
		    
Criba_1_Digitos	    MOVLW   d'48'
		    ADDWF   BIN_BCD_UNI,W
		    CALL    Envia_USART
		    RETURN
;--------------------COMBERTIDOR DE BINARIO A BCD Y PASA A ASCII----------------

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

;--------------------MULTIPLICA 8 BITS POR 8 BITS RESULTADO 16 BITS-------------			
			
Multiplicacion_1    MOVWF  MULTI_DATO_1
		    RETURN
Multiplicacion_2    MOVWF  MULTI_DATO_2	    
		    movf MULTI_DATO_1,W; 
		    btfsc STATUS,Z	    ; SI EL CONTENIDO DE COLUMNA ES 0 ATIVA FAG Z A 1 
		    goto Multiplica_da_0    ; PREGUNTA SI FLAG Z ES 0, SI SALTA NO CONTINUA 
paso5_d		    movf MULTI_DATO_2,W
		    btfsc STATUS,Z
		    goto Multiplica_da_0
paso5_c		    movf MULTI_DATO_1,W
		    movwf MULTI_T_1
		    clrf MULTI_T_2
		    movf MULTI_DATO_2,W
		    movwf MULTI_T_5
		    clrf MULTI_T_6
		    clrf MULTI_8x8_BITS_L
		    clrf MULTI_8x8_BITS_H
		    clrf MULTI_T_10
		    clrf MULTI_T_11
		    clrf MULTI_T_12
		    clrf MULTI_T_13
		    movlw .8
		    movwf MULTI_T_9
paso5_a		    btfss MULTI_T_5,0
		    goto paso5_b
		    movf MULTI_T_1,W
		    addwf MULTI_T_10,1
		    bcf STATUS,Z
		    btfsc STATUS,C
		    incf MULTI_T_11,1
		    movf MULTI_T_2,W
		    addwf MULTI_T_11,1
paso5_b		    bcf STATUS,C
		    rlf MULTI_T_1,1
		    rlf MULTI_T_2,1
		    bcf STATUS,C
		    btfsc MULTI_T_5,0
		    bsf STATUS,C
		    rrf MULTI_T_6,1
		    rrf MULTI_T_5,1
		    decfsz MULTI_T_9,1
		    goto paso5_a
		    movf MULTI_T_10,W
		    movwf MULTI_8x8_BITS_L
		    movf MULTI_T_11,W
		    movwf MULTI_8x8_BITS_H
		    goto paso5_s
Multiplica_da_0	    clrf MULTI_8x8_BITS_L
		    clrf MULTI_8x8_BITS_H
paso5_s		    return
;--------------------TRABAJAMOS SOBRE LA TABLA FUNCION--------------------------		    
Funcion		    MOVWF   DATO_O_F_S
		    MOVLW   HIGH    Tabla_Funcion
		    MOVWF   ORIGEN_DATO_H
		    MOVLW   LOW	    Tabla_Funcion
		    MOVWF   ORIGEN_DATO_L
		    CLRF    TEMP_DATO_H
		    CLRF    TEMP_DATO_L
		    MOVF    PCLATH,W		;--
		    MOVWF   AUX_PCLATH		;--
		    CALL    Administra_Tablas
		    MOVWF   DATO_TABLA		;--
		    MOVF    AUX_PCLATH,W	;--
		    MOVWF   PCLATH		;--
		    MOVF    DATO_TABLA,W	;--
		    CALL    Administra_envia
		    RETURN
;--------------------TRABAJAMOS SOBRE LA TABLA SIMBOLO--------------------------		    
Simbolo		    MOVWF   DATO_O_F_S
		    MOVLW   HIGH    Tabla_Operadores
		    MOVWF   ORIGEN_DATO_H
		    MOVLW   LOW	    Tabla_Operadores
		    MOVWF   ORIGEN_DATO_L
		    CLRF    TEMP_DATO_H
		    CLRF    TEMP_DATO_L
		    MOVF    PCLATH,W		;--
		    MOVWF   AUX_PCLATH		;--
		    CALL    Administra_Tablas
		    MOVWF   DATO_TABLA		;--
		    MOVF    AUX_PCLATH,W	;--
		    MOVWF   PCLATH		;--
		    MOVF    DATO_TABLA,W	;--
		    CALL    Administra_envia
		    RETURN
;-------------------TRABAJAMOS SOBRE LA TABLA OBJETO----------------------------
Objeto		    MOVWF   DATO_O_F_S
		    MOVLW   HIGH    Tabla_Objeto
		    MOVWF   ORIGEN_DATO_H
		    MOVLW   LOW	    Tabla_Objeto
		    MOVWF   ORIGEN_DATO_L
		    CLRF    TEMP_DATO_H
		    CLRF    TEMP_DATO_L
		    MOVF    PCLATH,W		;--
		    MOVWF   AUX_PCLATH		;--
		    CALL    Administra_Tablas
		    MOVWF   DATO_TABLA		;--
		    MOVF    AUX_PCLATH,W	;--
		    MOVWF   PCLATH		;--
		    MOVF    DATO_TABLA,W	;--
		    CALL    Administra_envia
		    RETURN
;-------------------------------------------------------------------------------		    
Administra_envia    CALL    Multiplicacion_1
		    MOVF    DATO_O_F_S,W
		    CALL    Multiplicacion_2
		    MOVF    MULTI_8x8_BITS_H,W  
		    MOVWF   TEMP_DATO_H
		    MOVF    MULTI_8x8_BITS_L,W  
		    MOVWF   TEMP_DATO_L
		    
Sigue_o_Fin	    MOVF    PCLATH,W		;--
		    MOVWF   AUX_PCLATH		;--
		    CALL    Administra_Tablas
		    MOVWF   DATO_TABLA
		    MOVF    AUX_PCLATH,W	;--
		    MOVWF   PCLATH		;--
		    MOVF    DATO_TABLA,W	    ;SI EL CONTENIDO DE 
		    BTFSC   STATUS,Z		    ;DATO_TABLA ES CERO (NO ASCII)
		    GOTO    Fin_Administra_Envia    ;CONTINUA POR GOTO FIN
		    CALL    Envia_USART		    ;ASI FINALIZO EL ENVIO
		    INCF    TEMP_DATO_L
		    GOTO    Sigue_o_Fin
Fin_Administra_Envia
		    RETURN
Administra_Tablas      
		    MOVF    ORIGEN_DATO_H,W
		    ADDWF   TEMP_DATO_H,W   
		    MOVWF   PCLATH
		    MOVF    ORIGEN_DATO_L,W
		    ADDWF   TEMP_DATO_L,W
		    BTFSC   STATUS,C
		    INCF    PCLATH,F
		    MOVWF   PCL
;-------------------------------------------------------------------------------
		    ORG 0X1900	
Tabla_Objeto	    DT	.3,.0,.0		;NUMERO DE COLUBMAS (MULTIPLICADOR)
	    	    DT  't',.0,.0		;OBJETO TEXTO
		    DT	'g',.0,.0
		    DT	'n',.0,.0
		    DT	'b',.0,.0
		    DT	'j',.0,.0
		    DT	'p',.0,.0
		    DT	'q',.0,.0
		    DT	'm',.0,.0
		    DT	'z',.0,.0
		    DT	's',.0,.0
		    DT	'h',.0,.0
		    DT	't','m',.0
		    DT	'v','a',.0
		    DT	'b','t',.0
		    DT	'c',.0,.0
		    DT	'r',.0,.0
		    DT	'q','r',.0

Tabla_Funcion	    DT	.7,.0,.0,.0,.0,.0,.0	;NUMERO DE COLUBMAS (MULTIPLICADOR)
		    DT	'e','n',.0,.0,.0,.0,.0
		    DT	'p','w',.0,.0,.0,.0,.0
		    DT	'˙','˙','˙',.0,.0,.0,.0
		    DT	'b','c','o',.0,.0,.0,.0
		    DT	'p','c','o',.0,.0,.0,.0
		    DT	't','x','t',.0,.0,.0,.0
		    DT	'd','i','r',.0,.0,.0,.0
		    DT	't','i','m',.0,.0,.0,.0
		    DT	'd','i','s',.0,.0,.0,.0
		    DT	'v','a','l',.0,.0,.0,.0
		    DT	'p','i','c',.0,.0,.0,.0
		    DT	'h','i','g',.0,.0,.0,.0
		    DT	'w','i','d',.0,.0,.0,.0
		    DT	'g','d','c',.0,.0,.0,.0
		    DT	'g','d','w',.0,.0,.0,.0
		    DT	'g','d','h',.0,.0,.0,.0
		    DT	'p','c','o','0',.0,.0,.0
		    DT	'i','s','b','r',.0,.0,.0
		    DT	'b','c','o','0',.0,.0,.0
		    DT	'b','c','o','1',.0,.0,.0
		    DT	'f','o','n','t',.0,.0,.0
		    DT	'x','c','e','n',.0,.0,.0
		    DT	'y','c','e','n',.0,.0,.0
		    DT	'b','c','o','2',.0,.0,.0
		    DT	'p','c','o','2',.0,.0,.0
		    DT	'p','i','c','c',.0,.0,.0
		    DT	'm','a','x','v','a','l',.0
		    DT	'm','i','n','v','a','l',.0
		    DT	'p','i','c','2',.0,.0,.0
		    DT	'f','o','r','m','a','t',.0
		    DT	'l','e','n','t','h',.0,.0
		    DT	'r','e','s','t',.0,.0,.0
		    DT	'p','i','c','c','2',.0,.0
		    DT	'b','p','i','c',.0,.0,.0
		    DT	'p','p','i','c',.0,.0,.0
		    DT	't','m',.0,.0,.0,.0,.0
		    DT	'p','c','o','3',.0,.0,.0
		    DT	'p','c','o','1',.0,.0,.0
		    DT	'a','d','d',.0,.0,.0,.0
		    DT	'b','a','u','d','s',.0,.0
		    DT	'p','i','c','0',.0,.0,.0
		    DT	'p','i','c','1',.0,.0,.0
		    DT	'p','i','c','c','0',.0,.0
		    DT	'p','i','c','c','1',.0,.0
		    
Tabla_Operadores    DT	.4,.0,.0,.0			;NUMERO DE COLUBMAS (MULTIPLICADOR)
		    DT	'=',.0,.0,.0
		    DT	'.',.0,.0,.0
		    DT	'"',.0,.0,.0
		    DT	'+',.0,.0,.0
		    DT	'-',.0,.0,.0
		    DT	'=','"',.0,.0
		    DT	'+','=',.0,.0
		    DT	'-','=',.0,.0
		    DT	'+','=','"',.0
		    DT	'-','=','"',.0
		    DT	'=','"','"',.0
		    DT	'*','=',.0,.0
		    DT	'/','=',.0,.0
		    
		    

			
			


	


			

	
			
			
			
			
			
