Autor Tema: Subrutina para el manejo de pantalla Nextion  (Leído 40161 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #45 en: 25 de Agosto de 2018, 08:28:37 »
Citar
y con un macro la llamada incluso seria mas entendible  CALL    NEXTION      Objeto,N_Objeto,Funcion,Variable o Mensaje, Fin (si no me equivoco esto seria asi si fuese todo en macros.

Si es mas entendible... Pero eso significa que en cada lugar donde pongas la macro se va a repetir por completo el mismo. suponete que el macro sea:

Código: ASM
  1. MOVLW
  2.  CALL
  3.  MOVWF
  4.  ADDWF
  5.  BTFSS
  6.   INCF
  7.  RETURN

Y en tu codigo tenes:

Código: ASM
  1. MOVLW
  2.  CALL MACRO
  3.  MOVLW
  4.  CALL MACRO

El macro es un simple reemplazo y quedaria:

Código: ASM
  1. MOVLW
  2.  ;Primer macro
  3.  MOVLW
  4.  CALL
  5.  MOVWF
  6.  ADDWF
  7.  BTFSS
  8.   INCF
  9.  RETURN
  10.  MOVLW
  11.  ;Segundo Macro
  12.  MOVLW
  13.  CALL
  14.  MOVWF
  15.  ADDWF
  16.  BTFSS
  17.   INCF
  18.  RETURN


La otra que te queda... es hacer el macro y dejar las funciones que ya tenes.. De esa forma tu macro lo explico con un ejemplo (rapido por que no poseo demasido tiempo para probarlo):

Código: ASM
  1. TuMacro macro objeto,numer,propiedad
  2.     MOVLW objeto               ;El objeto TEXT
  3.     MOVWF NXT_TIPO
  4.     MOVLW numero                             ; El numero de objeto
  5.     MOVWF NXT_NUMBER            
  6.     MOVLW propiedad            ; La propiedad del objeto
  7.     MOVWF NXT_OPTION
  8.     CALL  NXT_ENVIAR_INICIO      ; Que envie todo lo que pedi antes
  9.     CALL  NXT_ENVIAR_MENSAJE  ; Envio el mensaje o numero segun lo que corresponda
  10.     CALL  NXT_ENVIAR_FINAL       ; Envio la parte final, el cual se podria incluir en el anterior CALL

Entonces tu main quedaria simple como queres.

Citar
si el método para acede a la tabla  en los dos últimos ejemplos son buenos   

Si usas el modulo EEPROM si, no vas a tener limitantes de tabla. Y es mas simple de operar.
La discusion es sobre que poner o como poner en las tablas los datos. Si me limito a tus 2 opciones:
- Si queres que sea especifico (solo los envios que voy a usar ) a tu aplicacion entonces prefiero la que tiene completo el dato.
- Si lo que queres es algo mas generico, o que debas enviar muchos y distintos, y que se adapte a cualquier cosa, entonces prefiero el metodo de multiplicar.
« Última modificación: 25 de Agosto de 2018, 08:35:36 por KILLERJC »

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #46 en: 25 de Agosto de 2018, 14:14:24 »
KILLER.

mi pregunta es puedo llamar a un macro estando en un macro. si uso el método de tablas   multiplicando objeto / función  por el numero de columnas . queria meter un macro de multiplicación.

si esto es posible, el macro de multiplicación ¿también se multiplicaría por las veces que lo llamo dentro del pic?,¿ o mejor mantengo una rutina de multiplicación ?. colocar mínimo 3 tablas
tabla objeto, tabla función, tabla símbolos (tabla símbolo la coloco porque  el punto, el igual y las comillas se repiten mucho)

 

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #47 en: 26 de Agosto de 2018, 09:53:04 »
Nunca use macros anidadas, por lo que lei se puede realizar.

Citar
¿también se multiplicaría por las veces que lo llamo dentro del pic?

El/La MACRO su funcion es facilitar la lectura. Ya que vos creas una macro y se va a entender un poco mas, para no estar repitiendo como loco lo mismo siempre.
Pero en si, luego de que pasa el compilador hace un reemplazo, colocando TODO lo de la macro donde vos lo pusiste. Es decir lo va a repetir.

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #48 en: 26 de Agosto de 2018, 18:23:37 »
KIILLER.

dime como ves la administración de las tablas. el código funciona en el programa principal puse 4 cosas para la prueba de las tablas.

Código: ASM
  1. list            p=16f877A,f=inhx32
  2.         #include        <p16f877A.inc>   
  3.         __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _BOREN_ON & _LVP_ON & _CPD_OFF & _WRT_OFF & _CP_OFF
  4.          
  5. STAR                ORG         0x00        ;DIRECCION DE VECTOR RESET
  6.                     GOTO        COMIENZO
  7.                     ORG         0x05
  8.                    
  9.     ;INCLUDE    <MACROS_NEX.inc>
  10.  
  11.            
  12. COMIENZO        CALL    Configura_USART  
  13. ;               A PARTIR DE AQUI TODO ESTO IRIA EN UN MACRO    
  14. PRINCIPAL       MOVLW   O_Text
  15.                 CALL    Objeto
  16.                 MOVLW   S_punto
  17.                 CALL    Simbolo
  18.                 MOVLW   F_txt
  19.                 CALL    Funcion
  20.                 MOVLW   S_igual
  21.                 CALL    Simbolo
  22.                 MOVLW   S_comillas
  23.                 CALL    Simbolo
  24.                 MOVLW   S_comillas
  25.                 CALL    Simbolo
  26.                 MOVLW   F_fin
  27.                 CALL    Funcion
  28.                
  29.                
  30.                 GOTO    PRINCIPAL
  31.                    
  32.                 ;INCLUDE        RETARDOS.INC
  33.                 INCLUDE NEXTION_SUB_5.INC
  34.                 END

Código: ASM
  1. PUERTO_TX           EQU         6       ;PIN DE TRANSMICION
  2. PUERTO_RC           EQU         7       ;PINDE RECEPCION                       
  3. O_Text              EQU d'1'
  4. O_Scrolling_Text    EQU d'2'
  5. O_123_Number        EQU d'3'
  6. O_Button            EQU d'4'   
  7. O_Progress_Bar      EQU d'5'   
  8. O_Picture           EQU d'6'   
  9. O_Crop              EQU d'7'
  10. O_Hotspot           EQU d'8'
  11. O_Gauge             EQU d'9'
  12. O_waveform          EQU d'10'
  13. O_Sider             EQU d'11'
  14. O_Timer             EQU d'12'
  15. O_Variavle          EQU d'13'
  16. O_Dual_State_Button EQU d'14'
  17. O_Checkbox          EQU d'15'
  18. O_Radio             EQU d'16'
  19. O_QRcode            EQU d'17'
  20. F_en                EQU d'1'
  21. F_pw                EQU d'2'
  22. F_fin               EQU d'3'
  23. F_bco               EQU d'4'
  24. F_pco               EQU d'5'
  25. F_txt               EQU d'6'
  26. F_dir               EQU d'7'
  27. F_tim               EQU d'8'
  28. F_dis               EQU d'9'
  29. F_val               EQU d'10'
  30. F_pic               EQU d'11'
  31. F_hig               EQU d'12'  
  32. F_wid               EQU d'13'
  33. F_gdc               EQU d'14'  
  34. F_gdw               EQU d'15'
  35. F_gdh               EQU d'16'
  36. F_pco0              EQU d'17'
  37. F_isbr              EQU d'18'
  38. F_bco0              EQU d'19'
  39. F_bco1              EQU d'20'
  40. F_font              EQU d'21'
  41. F_xcen              EQU d'22'
  42. F_ycen              EQU d'23'
  43. F_bco2              EQU d'24'
  44. F_pco2              EQU d'25'
  45. F_picc              EQU d'26'
  46. F_maxval            EQU d'27'
  47. F_minval            EQU d'28'
  48. S_igual             EQU d'1'
  49. S_punto             EQU d'2'
  50. S_comillas          EQU d'3'
  51.                         CBLOCK 0x20
  52. ;                       ------------------Multiplica                   
  53.                         MULTI_DATO_1
  54.                         MULTI_DATO_2
  55.                         MULTI_8x8_BITS_L
  56.                         MULTI_8x8_BITS_H
  57.                         MULTI_T_1
  58.                         MULTI_T_2
  59.                         MULTI_T_5
  60.                         MULTI_T_6
  61.                         MULTI_T_9
  62.                         MULTI_T_10
  63.                         MULTI_T_11
  64.                         MULTI_T_12
  65.                         MULTI_T_13
  66. ;                       --------------- Objeto, Funcion, Simbolo                       
  67.                         ORIGEN_DATO_H
  68.                         ORIGEN_DATO_L
  69. ;                       --------------- Administra_envia                       
  70.                         DATO_O_F_S
  71.                         TEMP_DATO_H
  72.                         TEMP_DATO_L
  73.                         DATO_TABLA
  74.                         ENDC
  75.  
  76.  
  77. ;-------------------------------------------------------------------------------
  78.  
  79. ;                  CONFIGURA COMUNICACION U USART                      
  80. Configura_USART         BSF     STATUS,RP0                             
  81.                         BCF     TRISC,PUERTO_TX ;PONE A (0) ESTE PIN COMO SALIDA
  82.                         BSF     TRISC,PUERTO_RC ;PONE A (1) ESTE PIN COMO ENTRADA
  83.                         MOVLW   0x24            ;TX HABILITADA, MODO ASINCRON0
  84.                         MOVWF   TXSTA           ;CON 8 BITS Y ALTA VELOCIDAD
  85.                         MOVLW   0x19            ;SET BAUDIOS A 9600  0x19
  86.                         MOVWF   SPBRG           ;CON Fosc = 4MHz
  87.                         BCF     STATUS,RP0      ;ENTRO EN BANCO 0
  88.                         MOVLW   0x90            ;AJUSTA RECEPTOR A 8 BITS, RECEPCION
  89.                         MOVWF   RCSTA           ;CONTINUA HABILITADA USART EN ON
  90.                         RETURN                  ;RETORNA
  91. Envia_USART             BSF     STATUS,RP0
  92.                         BCF     STATUS,RP1
  93.                         BTFSS   TXSTA,TRMT
  94.                         GOTO    Envia_USART
  95.                         BCF     STATUS,RP0
  96.                         MOVWF   TXREG
  97.                         BCF     STATUS,RP0
  98.                         BCF     STATUS,RP1
  99.                         RETURN
  100. Recibe_USART            BCF     STATUS,RP0
  101.                         BTFSS   PIR1,RCIF
  102.                         GOTO    Recibe_USART
  103.                         MOVF    RCREG,W
  104. DATO                    BCF     PIR1,RCIF
  105.                         BSF     STATUS,RP0
  106.                         RETURN
  107. ;-------------------------------------------------------------------------------                       
  108.                        
  109. Multiplicacion_1    MOVWF  MULTI_DATO_1
  110.                     RETURN
  111. Multiplicacion_2    MOVWF  MULTI_DATO_2    
  112.                     movf MULTI_DATO_1,W;
  113.                     btfsc STATUS,Z          ; SI EL CONTENIDO DE COLUMNA ES 0 ATIVA FAG Z A 1
  114.                     goto Multiplica_da_0    ; PREGUNTA SI FLAG Z ES 0, SI SALTA NO CONTINUA
  115. paso5_d             movf MULTI_DATO_2,W
  116.                     btfsc STATUS,Z
  117.                     goto Multiplica_da_0
  118. paso5_c             movf MULTI_DATO_1,W
  119.                     movwf MULTI_T_1
  120.                     clrf MULTI_T_2
  121.                     movf MULTI_DATO_2,W
  122.                     movwf MULTI_T_5
  123.                     clrf MULTI_T_6
  124.                     clrf MULTI_8x8_BITS_L
  125.                     clrf MULTI_8x8_BITS_H
  126.                     clrf MULTI_T_10
  127.                     clrf MULTI_T_11
  128.                     clrf MULTI_T_12
  129.                     clrf MULTI_T_13
  130.                     movlw .8
  131.                     movwf MULTI_T_9
  132. paso5_a             btfss MULTI_T_5,0
  133.                     goto paso5_b
  134.                     movf MULTI_T_1,W
  135.                     addwf MULTI_T_10,1
  136.                     bcf STATUS,Z
  137.                     btfsc STATUS,C
  138.                     incf MULTI_T_11,1
  139.                     movf MULTI_T_2,W
  140.                     addwf MULTI_T_11,1
  141. paso5_b             bcf STATUS,C
  142.                     rlf MULTI_T_1,1
  143.                     rlf MULTI_T_2,1
  144.                     bcf STATUS,C
  145.                     btfsc MULTI_T_5,0
  146.                     bsf STATUS,C
  147.                     rrf MULTI_T_6,1
  148.                     rrf MULTI_T_5,1
  149.                     decfsz MULTI_T_9,1
  150.                     goto paso5_a
  151.                     movf MULTI_T_10,W
  152.                     movwf MULTI_8x8_BITS_L
  153.                     movf MULTI_T_11,W
  154.                     movwf MULTI_8x8_BITS_H
  155.                     goto paso5_s
  156. Multiplica_da_0     clrf MULTI_8x8_BITS_L
  157.                     clrf MULTI_8x8_BITS_H
  158. paso5_s             return
  159. ;-------------------------------------------------------------------------------                   
  160. Funcion             MOVWF   DATO_O_F_S
  161.                     MOVLW   HIGH    Tabla_Funcion
  162.                     MOVWF   ORIGEN_DATO_H
  163.                     MOVLW   LOW     Tabla_Funcion
  164.                     MOVWF   ORIGEN_DATO_L
  165.                     CLRF    TEMP_DATO_H
  166.                     CLRF    TEMP_DATO_L
  167.                     CALL    Administra_Tablas
  168.                     CLRF    PCLATH
  169.                     CALL    Administra_envia
  170.                     RETURN
  171. ;-------------------------------------------------------------------------------                   
  172. Simbolo             MOVWF   DATO_O_F_S
  173.                     MOVLW   HIGH    Tabla_Operadores
  174.                     MOVWF   ORIGEN_DATO_H
  175.                     MOVLW   LOW     Tabla_Operadores
  176.                     MOVWF   ORIGEN_DATO_L
  177.                     CLRF    TEMP_DATO_H
  178.                     CLRF    TEMP_DATO_L
  179.                     CALL    Administra_Tablas
  180.                     CLRF    PCLATH
  181.                     CALL    Administra_envia
  182.                     RETURN
  183. ;-------------------------------------------------------------------------------
  184. Objeto              MOVWF   DATO_O_F_S
  185.                     MOVLW   HIGH    Tabla_Objeto
  186.                     MOVWF   ORIGEN_DATO_H
  187.                     MOVLW   LOW     Tabla_Objeto
  188.                     MOVWF   ORIGEN_DATO_L
  189.                     CLRF    TEMP_DATO_H
  190.                     CLRF    TEMP_DATO_L
  191.                     CALL    Administra_Tablas
  192.                     CLRF    PCLATH
  193.                     CALL    Administra_envia
  194.                     RETURN
  195. ;-------------------------------------------------------------------------------                   
  196. Administra_envia    CALL    Multiplicacion_1
  197.                     MOVF    DATO_O_F_S,W
  198.                     CALL    Multiplicacion_2
  199.                     MOVF    MULTI_8x8_BITS_H,W  
  200.                     MOVWF   TEMP_DATO_H
  201.                     MOVF    MULTI_8x8_BITS_L,W  
  202.                     MOVWF   TEMP_DATO_L
  203. Sigue_o_Fin         CALL    Administra_Tablas
  204.                     CLRF    PCLATH
  205.                     MOVWF   DATO_TABLA
  206.                     MOVF    DATO_TABLA,W            ;SI EL CONTENIDO DE
  207.                     BTFSC   STATUS,Z                ;DATO_TABLA ES CERO (NO ASCII)
  208.                     GOTO    Fin_Administra_Envia    ;CONTINUA POR GOTO FIN
  209.                     CALL    Envia_USART             ;ASI FINALIZO EL ENVIO
  210.                     INCF    TEMP_DATO_L
  211.                     GOTO    Sigue_o_Fin
  212. Fin_Administra_Envia
  213.                     RETURN
  214. Administra_Tablas      
  215.                     MOVF    ORIGEN_DATO_H,W
  216.                     ADDWF   TEMP_DATO_H,W  
  217.                     MOVWF   PCLATH
  218.                     MOVF    ORIGEN_DATO_L,W
  219.                     ADDWF   TEMP_DATO_L,W
  220.                     BTFSC   STATUS, C
  221.                     INCF    PCLATH,F
  222.                     MOVWF   PCL
  223. ;-------------------------------------------------------------------------------
  224.                     ORG 0X1900 
  225. Tabla_Objeto        DT  .3,.0,.0                ;NUMERO DE COLUBMAS (MULTIPLICADOR)
  226.                     DT  't',.0,.0               ;OBJETO TEXTO
  227.                     DT  'g',.0,.0
  228.                     DT  'n',.0,.0
  229.                     DT  'b',.0,.0
  230.                     DT  'j',.0,.0
  231.                     DT  'p',.0,.0
  232.                     DT  'q',.0,.0
  233.                     DT  'm',.0,.0
  234.                     DT  'z',.0,.0
  235.                     DT  's',.0,.0
  236.                     DT  'h',.0,.0
  237.                     DT  't','m',.0
  238.                     DT  'v','a',.0
  239.                     DT  'b','t',.0
  240.                     DT  'c',.0,.0
  241.                     DT  'r',.0,.0
  242.                     DT  'q','r',.0
  243.  
  244. Tabla_Funcion       DT  .7,.0,.0,.0,.0,.0,.0    ;NUMERO DE COLUBMAS (MULTIPLICADOR)
  245.                     DT  'e','n',.0,.0,.0,.0,.0
  246.                     DT  'p','w',.0,.0,.0,.0,.0
  247.                     DT  'ÿ','ÿ','ÿ',.0,.0,.0,.0
  248.                     DT  'b','c','o',.0,.0,.0,.0
  249.                     DT  'p','c','o',.0,.0,.0,.0
  250.                     DT  't','x','t',.0,.0,.0,.0
  251.                     DT  'd','i','r',.0,.0,.0,.0
  252.                     DT  't','i','m',.0,.0,.0,.0
  253.                     DT  'd','i','s',.0,.0,.0,.0
  254.                     DT  'v','a','l',.0,.0,.0,.0
  255.                     DT  'p','i','c',.0,.0,.0,.0
  256.                     DT  'h','i','g',.0,.0,.0,.0
  257.                     DT  'w','i','d',.0,.0,.0,.0
  258.                     DT  'g','d','c',.0,.0,.0,.0
  259.                     DT  'g','d','w',.0,.0,.0,.0
  260.                     DT  'g','d','h',.0,.0,.0,.0
  261.                     DT  'p','c','o','0',.0,.0,.0
  262.                     DT  'i','s','b','r',.0,.0,.0
  263.                     DT  'b','c','o','0',.0,.0,.0
  264.                     DT  'b','c','o','1',.0,.0,.0
  265.                     DT  'f','o','n','t',.0,.0,.0
  266.                     DT  'x','c','e','n',.0,.0,.0
  267.                     DT  'y','c','e','n',.0,.0,.0
  268.                     DT  'b','c','o','2',.0,.0,.0
  269.                     DT  'p','c','o','2',.0,.0,.0
  270.                     DT  'p','i','c','c',.0,.0,.0
  271.                     DT  'm','a','x','v','a','l',.0
  272.                     DT  'm','i','n','v','o','l',.0
  273.                    
  274. Tabla_Operadores    DT  .2,.0                   ;NUMERO DE COLUBMAS (MULTIPLICADOR)
  275.                     DT  '=',.0
  276.                     DT  '.',.0
  277.                     DT  '"',.0

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #49 en: 26 de Agosto de 2018, 18:41:52 »
Esta bien, lo que si tengo una duda y una idea para vos...

La duda es... si usas el PCLATH, tenes que tener cuidado luego de volver, de poner los bits que corresponden, sino un al ejecutar un GOTO va a tomar los bits mas importantes del PCLATH. No creo que se restablezca por si solo. Es una duda, y deberias tenerlo en cuenta. Lo que podes hacer es tomar el valor del PCLATH, guardarlo, y luego restablecerlo al terminar de llamar a la tabla.

La idea es generar un macro para "resumir" esto:

Código: ASM
  1. PRINCIPAL       MOVLW   O_Text
  2.                 CALL    Objeto
  3.                 MOVLW   S_punto
  4.                 CALL    Simbolo
  5.                 MOVLW   F_txt
  6.                 CALL    Funcion
  7.                 MOVLW   S_igual
  8.                 CALL    Simbolo
  9.                 MOVLW   S_comillas
  10.                 CALL    Simbolo
  11.                 MOVLW   S_comillas
  12.                 CALL    Simbolo
  13.                 MOVLW   F_fin
  14.                 CALL    Funcion

Y el macro que sea:
Código: ASM
  1. Enviar_a_pantalla O_Text, F_txt

PD:

Si no queres escribir tantos EQU como tenes, podes usar CBLOCK 1, ejemplor:

Código: ASM
  1. S_igual             EQU d'1'
  2. S_punto             EQU d'2'
  3. S_comillas          EQU d'3'

por

Código: ASM
  1. CBLOCK 1
  2. S_igual
  3. S_punto
  4. S_comillas
  5. ENDC

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #50 en: 26 de Agosto de 2018, 18:47:11 »
gracias desconocía lo del cblock 1.

si lo del pclath como podes ver inmediatamente de retornar de la tabla  lo pongo a cero. 
CALL    Administra_Tablas
CLRF    PCLATH


pd; ¿cblock 1  finaliza igual con endc?

Pd falta acabar como veras aun queda por agregar el numero de objeto y las variables de texto o numéricas del usuario

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #51 en: 26 de Agosto de 2018, 18:53:22 »
El CBLOCK casi siempre uno lo usa para designar los registros..

Pero en realidad lo unico que es el CBLOCK, es un "bloque de constantes", para no tener que escribir uno por uno con EQU, uno le da el comienzo luego del CBLOCK.. y hace que el texto tenga un valor. El cual va a ser reemplazado ANTES de compilarse. Es como un paso de precompilacion. Cada texto va a incrementarse en 1 respecto al anterior.

Observaras que yo puedo definir varias constantes con el mismo numero, no importa si luego esa constantes las uso como direcciones a los registros.
La verdadera forma de definir variables es una en la cual el mismo linker define donde se van a ubicar. Pero creo que solo Microchip hace archivos de ASM con eso. Casi todos los tutoriales y gente que usa ASM, hace uso del CBLOCK o EQU.

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #52 en: 26 de Agosto de 2018, 19:12:36 »
el macro así me funciona .
Código: ASM
  1. list            p=16f877A,f=inhx32
  2.         #include        <p16f877A.inc>   
  3.         __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _BOREN_ON & _LVP_ON & _CPD_OFF & _WRT_OFF & _CP_OFF
  4.          
  5. STAR                ORG         0x00        ;DIRECCION DE VECTOR RESET
  6.                     GOTO        COMIENZO
  7.                     ORG         0x05
  8.                    
  9.     INCLUDE     <MACROS_NEX.inc>
  10.  
  11.            
  12. COMIENZO        CALL    Configura_USART  
  13. ;                  
  14. PRINCIPAL      
  15.                 Nex_Envia_texto
  16.                
  17.                
  18.                
  19.                 GOTO    PRINCIPAL
  20.                    
  21.                 ;INCLUDE        RETARDOS.INC
  22.                 INCLUDE NEXTION_SUB_5.INC
  23.                 END

Código: ASM
  1. Nex_Envia_texto                 MACRO          
  2.                         MOVLW   O_Text
  3.                         CALL    Objeto
  4.                         MOVLW   S_punto
  5.                         CALL    Simbolo
  6.                         MOVLW   F_txt
  7.                         CALL    Funcion
  8.                         MOVLW   S_igual
  9.                         CALL    Simbolo
  10.                         MOVLW   S_comillas
  11.                         CALL    Simbolo
  12.                         MOVLW   S_comillas
  13.                         CALL    Simbolo
  14.                         MOVLW   F_fin
  15.                         CALL    Funcion
  16.                         ENDM

PD yo dejo el macro armado ya solo pondré  las variables que se modifica numero objeto y mensaje o numero de objeto y variable numérica bcd--> ascii.
luego el usuario cuando vea la dinámica el ara sus propios macros o subrutinas.
que te párese??
« Última modificación: 26 de Agosto de 2018, 19:21:14 por estebanfolcher »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #53 en: 26 de Agosto de 2018, 21:29:48 »
El tema es que es tu libreria, vos vas a decidir que hacer y que no, que alguien luego use una libreria en ASM es mucho mas complicado que se llegue a lograr en C u otro lenguaje, porque es MUY especifico al micro que usas. Que posea todos los perifericos, que posea la memoria necesaria, etc. Por eso ASM es casi para uno mismo, o tal ves algun grupo de trabajo cerrado

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #54 en: 27 de Agosto de 2018, 07:07:52 »
buenas

el tema de dejar definida los macros baciscos para el manejo es porque esa es la combinación no ay mas,  si quiero mandar un texto por rs232 a nextion a de se así:

txxx.txt="AQUÍ MENSAJE"ÿÿÿ (donde las 3 x son el numero de objeto y AQUÍ MENSAJE el mensaje del usuario). no se puede hacer mas esta es la combinación.

si yo lo dejo preparado en un macro, el usuario solo se limitara a poner el numero de objeto y el mensaje que quiere. así no tendrá error.
si el usuario adquiere experiencia con la pantalla y ve que ay otro tipo de combinaciones a demás de las básicas presentadas aquí puede añadir mas objetos, funciones y símbolos a las tablas
y hacer su combinación en un macro nuevo o subrutina. solo tendrá que tener en cuenta que al añadir cosas a las tablas no supere la cantidad de caracteres mas cero, que indica en la tabla.
si es así lo único que ay que hacer es modificar el multiplicador de la tabla.

con respecto al micro usado. esta claro no todos los micros se pueden usar es recomendable mínimo que tenga puerto USART pero te diré que asta el 16f88 lo tiene y tiene 4 bancos y es de los baratos. solo tendrá que saetear binen los pines TX Y RC

en el caso de usar pic con comunicación USART por sofword tendrá que hacer unas modificaciones, pero solo a lo que refiere en comunicación porque lo demás sigue siendo lo mismo

pd dejo un ejemplo de dos macros  para que veas como queda. yo lo veo muy limpio sobre todo en el programa principal. la ventaja del macro es que si no usas los macros estos no se cargan en el micro.
ya comentaras como lo ves y mi análisis. saludos y gracias de nuevo

pd:ya iré subiendo el resto de macros ( para algunos objetos aun tengo que saber su funcionamiento)   

pd: para el que no tiene pantalla os dejo el linck donde podéis descargar el sofword de nextion y el EJEMPLO_1.HMI par las pruebas con el objeto texto
a medida que suba mas rutinas con otros objetos pondré los ejemplos aquí https://drive.google.com/open?id=1mt9vtgACS-u02btLq0ngW_EgJd8fFvlt
« Última modificación: 27 de Agosto de 2018, 07:22:25 por estebanfolcher »

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #55 en: 27 de Agosto de 2018, 08:15:33 »
buenas.


;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (0=OFF,1=ON)
   ; este macro no sé cuál sería el nombre más apropiado.
   ; su función es, cuando el mensaje es más largo que el ancho del
   ; recuadro, si está a cero el mensaje sigue viéndose en una línea
   ; si está a uno el mensa se escribe hasta el límite derecho y continua
   ; en la línea de abajo
   ; se acepta sugerencias

      Nex_Linea_Texto      d'3',d'1'

pd: aquí dejo todos los macros para el objeto texto. se puede hacer pruebas con el EJEMPLO_1.HMI
 
« Última modificación: 27 de Agosto de 2018, 08:22:57 por estebanfolcher »

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #56 en: 27 de Agosto de 2018, 15:12:24 »
buenas.

añado objeto scrollin text




PD; para las pruebas añadí un delay. https://drive.google.com/open?id=1mt9vtgACS-u02btLq0ngW_EgJd8fFvlt EJEMPLO_2.HMI
« Última modificación: 27 de Agosto de 2018, 15:23:19 por estebanfolcher »

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #57 en: 01 de Septiembre de 2018, 14:24:28 »
buenas.

se añaden modificaciones.

se cambia el convertido bcd 16 bits por uno de 32 bits. ( esto es debido a que el objeto numérico  ocupa 32 bits de dato y sera mas fácil para el usuario poder ingresar la constante o variable)

se añaden 3 macros a objeto texto y 3 mas a objeto scrolling texto.

PD: no las e probado todos los macros solo aquellos en los que influye mas  el convertidor. si detectáis algún caso en el que un macro no funcione avisen.
pronto añadiré el objeto numérico
sludos

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #58 en: 01 de Septiembre de 2018, 16:05:40 »
buenas.

aquí os dejo un macro con el objeto numerico.

me anticipo antes de tener todo el objeto completo porque quería consultar si se entiende la forma de ingresar un numero tan alto porque desconozco otro método

se que pata 16bit tenemos  HIGH y LOW pero para 32 no conozco el método si lo ay

NOTA: según nextion para para darle un valor a este objeto, indica Initial value(-2147483648 to 2147483647)
para evitar confusiones, en el macro tenemos que  indicar el signo.

PD: para probar este ejemplo esta ya compartido en el google drive el archivo EJEMPLO_3.HMI

 
« Última modificación: 01 de Septiembre de 2018, 16:09:42 por estebanfolcher »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #59 en: 01 de Septiembre de 2018, 16:30:20 »
Citar
se que pata 16bit tenemos  HIGH y LOW pero para 32 no conozco el método si lo ay

Solo conozco hasta 24 ( UPPER, HIGH, LOW ) que es todo lo que necesitas, sino lo tratas como si fueran 4 bytes, o 2 de 16 bits.
« Última modificación: 01 de Septiembre de 2018, 16:42:47 por KILLERJC »