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_Sider 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'
S_igual EQU d'1'
S_punto EQU d'2'
S_comillas EQU d'3'
CBLOCK 0x20
; ------------------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
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
;-------------------------------------------------------------------------------
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
;-------------------------------------------------------------------------------
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
CALL Administra_Tablas
CLRF PCLATH
CALL Administra_envia
RETURN
;-------------------------------------------------------------------------------
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
CALL Administra_Tablas
CLRF PCLATH
CALL Administra_envia
RETURN
;-------------------------------------------------------------------------------
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
CALL Administra_Tablas
CLRF PCLATH
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 CALL Administra_Tablas
CLRF PCLATH
MOVWF DATO_TABLA
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','o','l',.0
Tabla_Operadores DT .2,.0 ;NUMERO DE COLUBMAS (MULTIPLICADOR)
DT '=',.0
DT '.',.0
DT '"',.0