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

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #15 en: 17 de Agosto de 2018, 23:44:48 »
buenas.

añado rutina atributo color fuentes

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #16 en: 18 de Agosto de 2018, 00:36:43 »
buenas.

añado rutina Nex_Texto_Passwor.

1 para password on y 0 para passwor off --> tXX.pw=Xÿÿÿ

si password on, intercambia todo el texto por asteriscos

NOTA: en un objeto texto no puede entra mas de 254 caracteres. ( voy haciendo comentarios en fusión a lo que aprendo)

PD: agradezco la rutina de binario a bcd 16 bits que subió  "suky" y a " Pinolillo16"binario a bcd 8 bits, las de la implemente y no di las gracias
si es posible me gustaría tener la de binario a bcd 16 bit bien explicada, porque la de 8 entiendo el funcionamiento y estoy seguro que tengo una bien explicada solo que por no buscar entre mis cosas  ya aproveche la de  Pinolillo16. pero la de 16 es diferente a la que tengo yo  pero esta es mas compacta y me gustaría entenderla

 
« Última modificación: 18 de Agosto de 2018, 01:03:22 por estebanfolcher »

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #17 en: 18 de Agosto de 2018, 02:12:36 »
buenas.

añado rutina       Nex_Texto_Pos_X --> tXXX.xcen=Xÿÿÿ

esta rutina posiciona nuestro texto  en el eje x. tiene 3 posiciones. si no se declara la posición o esta es mayor que 2, por defecto ella la pondrá en 0 (derecha).         

derecha      = 0
centro        = 1
izquierda    = 2

PD: estas instrucciones que en enviamos por usart, son las mismas que se pueden usar en el editor de Nextion, para los programas que hagan directamente en el edito, prescindiendo del pic
con la diferencia que al final no ay que poner ÿÿÿ 

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #18 en: 18 de Agosto de 2018, 02:29:25 »
buenas.

añado rutina       Nex_Texto_Pos_Y --> tXXX.ycen=Xÿÿÿ

esta rutina posiciona nuestro texto  en el eje y. tiene 3 posiciones. si no se declara la posición o esta es mayor que 2, por defecto ella la pondrá en 0 (up).         

up              = 0
centro        = 1
down          = 2

PD; en las pruebas con las rutinas de posicionamiento del texto, e detectado que si el marco del texto no es lo suficientemente grande, no se aprecia el movimiento.
aconsejo que para las pruebas no meter demacrado texto y extender el marco a una medida que os permita ver el funcionamiento.

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #19 en: 18 de Agosto de 2018, 03:37:11 »
buenas.

añado rutina Nex_Texto_Linea --> tXXX.isbr=Xÿÿÿ

esta rutina lo que hace es que pone el mensaje todo en una linea  o salta al renglón de a bajo cuando el mensaje supera en tamaño al marco.

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #20 en: 18 de Agosto de 2018, 11:39:34 »
buenas.

añado el ultimo atributo para el objeto texto.     Nex_Texto_Fuente -->   tXXX.font=Xÿÿÿ

con esta rutina ay que tener en cuenta la cantidad de fuentes cargadas en el editor de nextion. el máximo permitido son 255.

con esta rutina termino el objeto texto y pasare al objeto (text scrolling).
sintaxis;
gXXX.txt="aqui texto"ÿÿÿ   envía texto
gXXX.bco=XXXXXÿÿÿ          color fondo del maro           de 0 a 65535
gXXX.pco=XXXXXÿÿÿ          color de la fuente                de 0 a 65535
gXXX.font=XXXÿÿÿ             tipo de fuente                         de 0 a 255  en función de las cantidad de fuentes cargadas en el editor nextion
gXXX.xcen=Xÿÿÿ                posición en eje x del texto       0=derecha 1=centro 2=izquierda
gXXX.ycen=Xÿÿÿ                posición en eje y del texto       0=arriba 1=centro 2=abajo
gXXX.dir=Xÿÿÿ                   dirección en que se mueve      de arriba asía abajo, de abajo asía arriba, de derecha a izquierda, de izquierda a derecha (0, 1, 2 y 4 aun por determinar )
gXXX.tim=XXXXXÿÿÿ          tiempo de espera entre saltos  minimo 90 maximo 65534
gXXX.dis=XXÿÿÿ                distancia entre saltos               minimo 2 maximo 50
gXXX.en=Xÿÿÿ                   activado desplazamiento          0 off   1on

esta también ira rápido

por favor viendo  mas o menos como va el funcionamiento, si creéis que se puede mejorar el método díganmelo. y estudiaremos pros y contras para hacer la modificación que corresponda
saludos 

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #21 en: 18 de Agosto de 2018, 13:56:21 »
Disculpa si hay un error, pero esto es masomenos lo que te puedo ayudar, de ahi queda en vos:

Código: ASM
  1. ; Defines para el uso de la libreria
  2. NXT_TEXT_T      EQU  0
  3. NXT_TXTSC_T     EQU  1
  4.  
  5. NXT_TXT_OPT     EQU  0
  6. NXT_BCO_OPT     EQU  1 
  7. NXT_PCO_OPT     EQU  2
  8. NXT_FNT_OPT     EQU  3         
  9.        
  10.     ; Vars para la libreria
  11.    
  12.     CBLOCK 0x20
  13.     NXT_TIPO
  14.     NXT_NUMBER
  15.     NXT_OPTION
  16.     NumH        ; Binary a BCD
  17.     NumL
  18.     TenK        ; BCD Result
  19.     Thou
  20.     Hund
  21.     Tens
  22.     Ones
  23.     TMP         ; Temporal
  24.     ENDC
  25.  
  26. ;Comienzo de programa
  27.    
  28.     ;Vector de reset
  29.     ORG 0x00
  30.     GOTO INICIO
  31.     ;Vector de interrupcion
  32.     ORG 0x04
  33.     RETURN
  34.      
  35. TIPO_TABLA:
  36.     ADDWF  PCL, F
  37.     RETLW  't'
  38.     RETLW  'g'
  39.  
  40. OBTENER_OPT:
  41.     ADDWF PCL, F
  42. TXT_OPT_TXT:    DT "txt",0x00    
  43. TXT_OPT_BCO:    DT "bco",0x00
  44. TXT_OPT_PCO:    DT "pco",0x00  
  45. TXT_OPT_FNT:    DT "fnt",0x00
  46.        
  47. OPT_TABLA:
  48.     ADDWF PCL, F
  49.     RETLW   TXT_OPT_TXT - TXT_OPT_TXT
  50.     RETLW   TXT_OPT_BCO - TXT_OPT_TXT
  51.     RETLW   TXT_OPT_PCO - TXT_OPT_TXT
  52.     RETLW   TXT_OPT_FNT - TXT_OPT_TXT
  53.  
  54. OPT_STRING:
  55.         ;MOVLW 02H
  56.         ;MOVWF PCLATH
  57.         MOVF NXT_OPTION, W
  58.         CALL OPT_TABLA
  59.         MOVWF TMP      
  60.  
  61. OPT_STRING_1:
  62.         MOVF TMP, W
  63.         CALL OBTENER_OPT
  64.         ADDLW 0
  65.         BTFSC STATUS, Z
  66.         GOTO OPT_STRING_2
  67.         CALL ENVIAR_CHAR
  68.         INCF TMP, F
  69.         GOTO OPT_STRING_1
  70. OPT_STRING_2:
  71.         RETURN    
  72.    
  73. INICIO:
  74.  
  75.     CLRF NXT_TIPO
  76.     CLRF NXT_NUMBER
  77.     CLRF NXT_OPTION
  78.     CLRF NumH      
  79.     CLRF NumL
  80.     CLRF TenK
  81.     CLRF Thou
  82.     CLRF Hund
  83.     CLRF Tens
  84.     CLRF Ones
  85.  
  86.    
  87. PRINCIPAL:
  88.     MOVLW NXT_TEXT_T
  89.     MOVWF NXT_TIPO
  90.     MOVLW .12
  91.     MOVWF NXT_NUMBER
  92.     MOVLW NXT_PCO_OPT
  93.     MOVWF NXT_OPTION
  94.     CALL  NXT_ENVIAR_INICIO
  95.     CALL  NXT_ENVIAR_MENSAJE
  96.     CALL  NXT_ENVIAR_FINAL
  97.    
  98.    
  99.     GOTO PRINCIPAL
  100.    
  101. NXT_ENVIAR_INICIO:
  102.     MOVF    NXT_TIPO, W     ; Envio el tipo
  103.     CALL    TIPO_TABLA
  104.     CALL    ENVIAR_CHAR
  105.     CLRF    NumH
  106.     MOVF    NXT_NUMBER, W
  107.     MOVWF   NumL
  108.     CALL    BIN_BCD
  109.     CALL    ENVIAR_NUMERO   ; Envio el numero
  110.     MOVLW   '.'
  111.     CALL    ENVIAR_CHAR     ; Envio el .
  112.     CALL    OPT_STRING      ; Envio la opcion
  113.     MOVLW   '='
  114.     CALL    ENVIAR_CHAR     ; Envio el IGUAL
  115.     RETURN
  116.    
  117. NXT_ENVIAR_FINAL:
  118.     MOVLW   0xFF
  119.     CALL    ENVIAR_CHAR     ; Envio el final
  120.     MOVLW   0xFF
  121.     CALL    ENVIAR_CHAR    
  122.     MOVLW   0xFF
  123.     CALL    ENVIAR_CHAR
  124.     RETURN
  125.    
  126. ENVIAR_CHAR:
  127.     ;Aca enviar por UART.
  128.     RETURN
  129.    
  130. ENVIAR_NUMERO:
  131.     MOVLW   6
  132.     MOVWF   TMP
  133.     MOVLW   TenK
  134.     MOVWF   FSR
  135. ENVIAR_NUMERO_1:    
  136.     DECF    TMP, F
  137.     BTFSC   STATUS, Z
  138.     RETURN
  139.     MOVF    INDF, W
  140.     BTFSC   STATUS, Z
  141.     GOTO    ENVIAR_NUMERO_2
  142.     ADDLW   '0'
  143.     CALL    ENVIAR_CHAR
  144. ENVIAR_NUMERO_2:
  145.     INCF    FSR, F
  146.     GOTO    ENVIAR_NUMERO_1
  147.    
  148. NXT_ENVIAR_MENSAJE:
  149.     RETURN
  150.    
  151. ;Takes hex number in NumH:NumL  Returns decimal in ;TenK:Thou:Hund:Tens:Ones
  152. ;written by John Payson
  153.  
  154. ;input
  155. ;=A3*163 + A2*162 + A1*161 + A0*160
  156. ;=A3*4096 + A2*256 + A1*16 + A0
  157.  
  158. BIN_BCD:
  159.         swapf   NumH,;w  = A2*16+A3
  160.         andlw   0x0F     ;w  = A3               *** PERSONALLY, I'D REPLACE THESE 2
  161.         addlw   0xF0    ;w  = A3-16     *** LINES WITH "IORLW b'11110000B' " -AW
  162.         movwf   Thou    ;B3 = A3-16
  163.         addwf   Thou,;B3 = 2*(A3-16) = 2A3 - 32
  164.         addlw   .226    ;w  = A3-16 - 30 = A3-46
  165.         movwf   Hund    ;B2 = A3-46
  166.         addlw   .50     ;w  = A3-46 + 50 = A3+4
  167.         movwf   Ones    ;B0 = A3+4
  168.  
  169.         movf    NumH,;w  = A3*16+A2
  170.         andlw   0x0F    ;w  = A2
  171.         addwf   Hund,;B2 = A3-46 + A2 = A3+A2-46
  172.         addwf   Hund,;B2 = A3+A2-46  + A2 = A3+2A2-46
  173.         addwf   Ones,;B0 = A3+4 + A2 = A3+A2+4
  174.         addlw   .233    ;w  = A2 - 23
  175.         movwf   Tens    ;B1 = A2-23
  176.         addwf   Tens,;B1 = 2*(A2-23)
  177.         addwf   Tens,;B1 = 3*(A2-23) = 3A2-69 (Doh! thanks NG)
  178.  
  179.         swapf   NumL,;w  = A0*16+A1
  180.         andlw   0x0F    ;w  = A1
  181.         addwf   Tens,;B1 = 3A2-69 + A1 = 3A2+A1-69 range -69...-9
  182.         addwf   Ones,;B0 = A3+A2+4 + A1 = A3+A2+A1+4 and Carry = 0 (thanks NG)
  183.  
  184.         rlf     Tens,;B1 = 2*(3A2+A1-69) + C = 6A2+2A1-138 and Carry is now 1 as tens register had to be negitive
  185.         rlf     Ones,;B0 = 2*(A3+A2+A1+4) + C = 2A3+2A2+2A1+9 (+9 not +8 due to the carry from prev line, Thanks NG)
  186.         comf    Ones,;B0 = ~(2A3+2A2+2A1+9) = -2A3-2A2-2A1-10 (ones complement plus 1 is twos complement. Thanks SD)
  187. ;;Nikolai Golovchenko [golovchenko at MAIL.RU] says: comf can be regarded like:
  188. ;;      comf Ones, f
  189. ;;      incf Ones, f
  190. ;;      decf Ones, f
  191. ;;First two instructions make up negation. So,
  192. ;;Ones  = -1 * Ones - 1
  193. ;;      = - 2 * (A3 + A2 + A1) - 9 - 1
  194. ;;      = - 2 * (A3 + A2 + A1) - 10
  195.         rlf     Ones,;B0 = 2*(-2A3-2A2-2A1-10) = -4A3-4A2-4A1-20
  196.  
  197.         movf    NumL,;w  = A1*16+A0
  198.         andlw   0x0F    ;w  = A0
  199.         addwf   Ones,;B0 = -4A3-4A2-4A1-20 + A0 = A0-4(A3+A2+A1)-20 range -215...-5 Carry=0
  200.         rlf     Thou,;B3 = 2*(2A3 - 32) = 4A3 - 64
  201.  
  202.         movlw   0x07    ;w  = 7
  203.         movwf   TenK    ;B4 = 7
  204.  
  205. ;B0 = A0-4(A3+A2+A1)-20 ;-5...-200
  206. ;B1 = 6A2+2A1-138       ;-18...-138
  207. ;B2 = A3+2A2-46         ;-1...-46
  208. ;B3 = 4A3-64            ;-4...-64
  209. ;B4 = 7                 ;7
  210. ; At this point, the original number is
  211. ; equal to TenK*10000+Thou*1000+Hund*100+Tens*10+Ones
  212. ; if those entities are regarded as two's compliment
  213. ; binary.  To be precise, all of them are negative
  214. ; except TenK.  Now the number needs to be normal-
  215. ; ized, but this can all be done with simple byte
  216. ; arithmetic.
  217.  
  218.         movlw   .10     ;w  = 10
  219. Lb1:                    ;do
  220.         addwf   Ones,; B0 += 10
  221.         decf    Tens,; B1 -= 1
  222.         btfss   3,0
  223.         ;skip no carry
  224.          goto   Lb1     ; while B0 < 0
  225.         ;jmp carry
  226. Lb2:                    ;do
  227.         addwf   Tens,; B1 += 10
  228.         decf    Hund,; B2 -= 1
  229.         btfss   3,0
  230.          goto   Lb2     ; while B1 < 0
  231. Lb3:                    ;do
  232.         addwf   Hund,; B2 += 10
  233.         decf    Thou,; B3 -= 1
  234.         btfss   3,0
  235.          goto   Lb3     ; while B2 < 0
  236. Lb4:                    ;do
  237.         addwf   Thou,; B3 += 10
  238.         decf    TenK,; B4 -= 1
  239.         btfss   3,0
  240.          goto   Lb4     ; while B3 < 0
  241.  
  242.         retlw   0
  243.     END

La idea es que configures, que tipo de elemento queres ( t,g,etc) Luego cargues el numero de elemento asi es enviado. Teniendo toda una tabla de opciones, puedas elegir cual es la que queres enviar, se envia el '=' y luego donde dice ENVIAR_MENSAJE es donde o envias el texto o envias el numero, si es el numero podes usar la misma rutina que hay que se llama ENVIAR_NUMERO. Y finalmente donde dice ENVIAR_FINAL que es para terminar el mensaje. Aunque te sirva para ver como se puede hacer de otra forma.

La rutina binario a BCD lo saque de internet. La conversion de numeros es de 16bits a BCD todos separados. Y la funcion ENVIA_NUMERO procede a enviar si es que no hay un cero, hay un error ya que la numeracion 10 por ejemplo solo quedaria el 1. lo hice rapido sin pensarlo demasiado, ya que lo importante era el tema de las tablas.

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #22 en: 18 de Agosto de 2018, 13:56:39 »
buenas.

os dejo aquí un linck donde podéis descargar el editor que es gratuito y un archivo llamado prueba.HMI para

probar las subrutinas  de texto

https://drive.google.com/drive/folders/1mt9vtgACS-u02btLq0ngW_EgJd8fFvlt

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #23 en: 18 de Agosto de 2018, 14:00:31 »
ok dame unas horas que lo mire.

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #24 en: 18 de Agosto de 2018, 14:40:30 »
mira esta mañana empece algo parecido, es mas fácil crear tablas con los tipos de objetos  tablas para las funciones  etc etc

llamar a cada una en función de la necesidad e ir enviado datos,  no te mentiré es una excelente idea pero aquí mis dudas:

la primera en en que afate esto al tiempo de envió entre byte y byte ay que recordar que estamos trabajando con un estándar  rs232
(mi caso agrupa todo y luego envía) tu caso si no me equivoco usa menos pila y ademas es menos extenso

la segunda  es mas una pregunta  ¿ la directiva DT no tiene que esta obligatoria-mente en el programa principal  al principio o al final ?
si la respuesta es si para una subrutina no si es muy aconsejable.  abría mas preguntas que respuestas. recuerda que mi idea es crear una subrutina que en cualquier programa principal
solo aya que ingresar un dato mínimo y llamar a la subrutina  como muestro en cada ejemplo.

si la respuesta es no. esto lo cambia todo (y lo ciento pero te recuerdo que mi nivel de assembles no es muy alto, me defiendo pero no iré a la luna)
tendría crear una subrutina nueva utilizando este método  la subiría y comentaríamos el resultado, pero esta claro que si es así seria mas rápido porque solo abría que agregar cosas a la tabla y un par de llamadas y listo
pero para mi lo importante es que nuestro programa principal no se llene de lineas que dependen de la subrutina y que la subrutina dependa del programa principal

de momento tengo estas inquietudes se agradece mucho vuestra colaboración.

PD de todas formas probare con una sola rutina  este método

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #25 en: 18 de Agosto de 2018, 15:05:49 »
Citar
a primera en en que afate esto al tiempo de envió entre byte y byte ay que recordar que estamos trabajando con un estándar  rs232
(mi caso agrupa todo y luego envía) tu caso si no me equivoco usa menos pila y ademas es menos extenso

Un CALL y un RETURN son 4 ciclos de reloj mas,,, o sea no vas a notar gran diferencia de velocidad.

Citar
la segunda  es mas una pregunta  ¿ la directiva DT no tiene que esta obligatoria-mente en el programa principal  al principio o al final ?

La directiva DT en realidad para los PIC16 crea una tabla con RETLW,, si vos haces:

Código: ASM
  1. EJEM: DT "hola",0x00

Eso se traduce a :

Código: ASM
  1. EJEM:
  2.     RETLW 'h'
  3.     RETLW 'o'
  4.     RETLW 'l'
  5.     RETLW 'a'
  6.     RETLW 0x00

Que es "identico" a una tabla.

Entonces cual es el problema, o de donde sale eso de que es necesario si o si que este al comienzo o al final?
Para indexar una tabla necesitas sumarle al PCL, el problema es que el PCL son 8 bits nomas. Lo cual limita las tablas y los saltos a 255 en este caso, se puede crear un codigo que salte esta limitacion porsupuesto. La parte superior luego de calcularse el PCL se toma de PCLATH. Esto limitaria la capacidad de direccionamiento de la tabla, asi que una solucion y no usar el PCLATH es mantenerlo menor a 255 y ubicarlas al comienzo de las paginas 0x100, 0x200, 0x300, 0x2100 etc

El otro limitante es donde va a estar este codigo... Ya que los CALL y GOTO solo poseen 10 bits en su operando, es decir faltarian 2 bits los cuales son tomados desde el PCLATH.
Asi que si haces un GOTO y tu subrutina o tablas se encuentran al final, seguramente tengas problemas y no vaya a donde queres. A no ser que tengas en cuenta de modificar el PCLATH.

El RETURN no tiene problema, ya que devuelve todos los bits al Contador de programa ( PC )


Citar
mi idea es crear una subrutina que en cualquier programa principal
solo aya que ingresar un dato mínimo y llamar a la subrutina  como muestro en cada ejemplo.

Y por mas que lo hagas como quieras, si tenes un programa demasiado grande que supere los 10bits en lo que ocupa , vas a tener problema si es que no lo tenes en cuenta.

Citar
pero para mi lo importante es que nuestro programa principal no se llene de lineas que dependen de la subrutina y que la subrutina dependa del programa principal

Y tu codigo funciona si es que los textos se encuentran dentro de los 255 posiciones de memoria. Fuera de esto, ya no funcionaria mas, ni hablar si tenes varios textos que facilmente llevarian a superar esos 255 lugares.

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #26 en: 18 de Agosto de 2018, 16:53:18 »
buenas.

comprendo tu análisis.

ahora analizamos pro y contas.

tu método como dije antes es mas rápido y simple nos basamos en un mar o tres de tablas donde  encontraremos un conjunto de funciones  y objetos y alguna cosa mas.

lo malo que yo veo ( siempre recordado mi falta de experiencia) es  que en un programa principal  abría que colocar todas las tablas y alguna cosa mas, a demás de las llamadas.

en ambos métodos tenemos unas rutinas obligatorias  1) es la comunicación usart que es estándar (no se limita solo a la pantalla) 2) el conversor binario a bdc 16bits que también es estándar (teniendo el de 16 podemos eliminar el de 8 )

con mi método la  única rutina obligatoria es la de identificar el numero de objeto y el tren de datos , (de momento) porque el resto de rutinas son independiente una de la otra si solo quiero usar una rutina ,  el resto de rutinas las puedo anular.  las tablas estarían cargadas aunque solo use un dato de cada una.

como tu bien comentas si nos pasamos con los caracteres se nos van a salir letras por los pines del micro. en mi caso cada rutina tiene su constante ya ubicada, que no supera a mas de 10 caracteres y estas no dependen una de la otra. solo de las que son obligatorias para ambos métodos bin a bcd y configuración transmisor y recepción  usart, como dije son estándar .

ademas  cuando hablamos de mensajes. esta rutina es simplemente para mandar algún mensaje puntual. la pantalla nextion es auto gestionarle, de echo ay muchos programas por ay que no requieren de un procesador externo, para que la pantalla realice varios procesos, a demás de la función principal que es la parte táctil y la pantalla.

y otra cosa que veo yo, es que el otro método es mas difícil (no imponible ) de entender. el que uso yo, se limita a rutinas en bloques pequeños, que si se le dedica unos minutos se entiende rápido, para el que tienen poco manejo del assembler.
esta claro que para un producto final es mejor la tabla porque tu incluirás en ellas solo lo necesario y nada mas, pero para pruebas es mejor una estructura en bloques pequeños. como dije, que en nuestro programa principal podamos con uno o dos datos y una llamada resolver. 

ya me diréis como ven este análisis y continuamos.

PD: esta rutina de binario a bcd que esta con descripción en ingles  esta funcionando ?? te lo agradezco me va a venir bien para  saber como funciona
« Última modificación: 18 de Agosto de 2018, 17:01:39 por estebanfolcher »

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #27 en: 18 de Agosto de 2018, 18:13:43 »
buenas.

corrección en la ultima rutina (fuentes)

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #28 en: 18 de Agosto de 2018, 20:18:56 »
buenas

os dejo aquí un programa con todas las rutinas en marcha, del objeto texto y un linck
donde podéis descargar el archivo EJEMPLO_1HMI para simular

cuando tenga un segundo pondré en este mismo linck un vídeo

https://drive.google.com/open?id=1mt9vtgACS-u02btLq0ngW_EgJd8fFvlt

ya comentareis si es viable o no
saludos

PD: añadido una rutina mas para objeto txt   Nex_Texto_Borrar.
PD: ya esta el vídeo con una pantalla real todo en el linck
« Última modificación: 18 de Agosto de 2018, 20:31:05 por estebanfolcher »

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 71
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #29 en: 19 de Agosto de 2018, 06:40:42 »
buenas.

KILLER. podrías explicarme bien esta parte-  no comprendo la función del -


OPT_TABLA:
    ADDWF PCL, F
    RETLW   TXT_OPT_TXT - TXT_OPT_TXT   
    RETLW   TXT_OPT_BCO - TXT_OPT_TXT
    RETLW   TXT_OPT_PCO - TXT_OPT_TXT
    RETLW   TXT_OPT_FNT - TXT_OPT_TXT