Mensajes recientes

Páginas: [1] 2 3 4 5 6 7 8 9 10
1
- Niple - / Re:Es posible hacer funcionar un display TFT con NIPLE?
« Último mensaje por cicloide2 en 19 de Agosto de 2018, 20:49:07 »
Estaria bueno pedir que las agreguen  :lol:
2
Almacén del Assembler / Re:Subrutina para el manejo de pantalla Nextion
« Último mensaje por KILLERJC en 19 de Agosto de 2018, 11:17:05 »
buenas.

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

Para el compilador, una etiqueta es la direccion de una instruccion. Es decir es un numero. Si en mi tabla de opciones, todas fueran de 3 letras como en el codigo que pase:

Código: ASM
  1. OBTENER_OPT:
  2.     ADDWF PCL, F
  3. TXT_OPT_TXT:    DT "txt",0x00    
  4. TXT_OPT_BCO:    DT "bco",0x00
  5. TXT_OPT_PCO:    DT "pco",0x00  
  6. TXT_OPT_FNT:    DT "fnt",0x00
( OBTENER_OPT es en realidad la direccion de la instruccion ADDWF PCL,F )

No necesitaria de 2 tablas, ya que podria precalcular donde comienza mi segunda, o tercera opcion (multiplicando por 4, shift a la izquierda 2 veces ). Es decir, supongamos que tenes el primer opcion que es txt, entonces le pasas un 0, para la opcion BCO, le pasas un 4 en W, para la opcion PCO le pasas un 8 en W. Esto es lo mismo que opcion*4

Yo no sabia todas las opciones, y es un codigo "general" para que sirva para cualquier opcion y longitud de la misma, que ocurre si tenemos algo asi ahora:

Código: ASM
  1. OBTENER_OPT:
  2.     ADDWF PCL, F
  3. TXT_OPT_TXT:    DT "text",0x00    
  4. TXT_OPT_BCO:    DT "bco",0x00
  5. TXT_OPT_PCO:    DT "pco",0x00  
  6. TXT_OPT_FNT:    DT "font",0x00

En que algunos son 3, otros son 4, etc. Podrias tener varios enfoques para solucionar este problema.
Uno simple seria poner todos los de 3 al comienzo y luego los de 4 al final, pasado cierto numero de opciones empezas a sumarle por 5 en ves de 4. Es una opción, pero al agregar alguna opción de 3 mas, tenes que modificar ese limite.
Otra opciones es contar los 0x00, para saber cuando es que comienza tu opcion, el problema de esto es que realizas muchísimos saltos, si es la ultima de las opciones, realizas 2 saltos por cada caracter que le precede, y ni hablar que los saltos son de 2 ciclos cada uno. Es MUCHO tiempo que tal ves no afecte, pero es mala practica realizarlo si existe alguna otra forma mejor.

En cambio con el uso de una tabla mas:

Código: ASM
  1. OPT_TABLA:
  2.     ADDWF PCL, F
  3.     RETLW   TXT_OPT_TXT - TXT_OPT_TXT    
  4.     RETLW   TXT_OPT_BCO - TXT_OPT_TXT
  5.     RETLW   TXT_OPT_PCO - TXT_OPT_TXT
  6.     RETLW   TXT_OPT_FNT - TXT_OPT_TXT

Puedo tener el offset de mi otra tabla, es decir, cuanto le debo agregar al 0 para que me de justo el comienzo de mi opción, y pasarle ese resultado por W.

Supongamos que TXT_OPT_TXT es la direccion 150, y que TXT_OPT_PCO es la 160. Entonces lo que genero ahi es una resta de las 2 direcciones, quedandome un RETLW 10. Y que eso es lo que se le suma al PCL. Pudiendo modificar el texto de las opciones sin modificar nada mas.
Obviamente esto posee un limite, en caso de que supere los 255 caracteres si es que esta puesta al comienzo de la pagina la tabla, vas a necesitar agregar codigo adicional para que esto funcione correctamente, ahora con opciones de 4 caracteres (incluido el 0), tenes una buena cantidad de opciones para agregar (63 para ser exactos).

-----------------

Mi idea del código es que sea fácilmente escalable, que agregarle algun elemento mas, no implique ningún cambio significativo. Entonces vos terminas pasando a la misma función esto:

Tipo de elemento ( t,g,etc), Numero de elemento. Y ya te genera todo la parte inicial
Envías el mensaje, sea Numero o Texto, esto va aparte, porque sino implica que debas separar las opciones en las que admiten texto y las que admiten números. Se lo dejas al usuario, es responsabilidad del usuario, no de la libreria.
Envia el final.

Tu forma de realizarlo para mi lo que veo es generar una subrutina para cada una de las opciones.
Si... es mas "directo", en ves de rellenar con las opciones, le das una lista larga de subrutinas, pero es muy repetitivo, ocupa mas espacio y si terminas generando codigo para que luego pueda ser retirado, termina siendo mas engorroso que tenerlo todo mas compacto. Mi codigo le faltan muchas cosas, lo hice en un momento y no mire si habia errores o no, me di cuenta de algunos mientras estaba escribiendo aca en el foro, pero era para que tengas de referencia, como ves le faltan muchas cosas, como el manejo de las paginas, ORG, etc, que eso lo vas a tener que agregar las instrucciones para que funcione correctamente en cualquier parte del codigo.

A diferencia de la programación de un PLC, en lo que respecta a informática y/o electrónica (hay casos especiales obviamente) si se repite el código, algo mal estas haciendo.

Son posturas distintas, por eso bien dije cuando te puse el codigo:

Citar
Disculpa si hay un error, pero esto es masomenos lo que te puedo ayudar, de ahi queda en vos:
3
Todo en microcontroladores PIC / Re:memcpy_p adaptado a CCS
« Último mensaje por KILLERJC en 19 de Agosto de 2018, 09:33:14 »
Luego de que se ejecute el memcpy, si deberias tener un 3, si es que el caracter es el espacio. Veo que en el printf usaste "buff" cuando es "buffer", si lo estas enviando por RS232, tal ves asi sea mejor:

Código: C
  1. void printCharWithShift(char c, int shift_speed){
  2.   if (c < 32) return;
  3.   printf("char: %c",c);
  4.   c -= 32;
  5.   memcpy_P(buffer, CH + 7*c, 7);
  6.   printf ("Buf= %u,%u,%u,%u,%u\r",buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],buffer[5]);  //Para el caracter Espacio se muestra un 4
  7.   m.writeSprite(maxInUse*8, 0, buffer);
  8.   m.setColumn(maxInUse*8 + buffer[0], 0);
  9.  
  10.   for (int i = 0; i < buffer[0]+1; i++)
  11.   {
  12.     delay(shift_speed);
  13.     m.shiftLeft(false, false);
  14.   }
  15. }
4
- Niple - / Re:Es posible hacer funcionar un display TFT con NIPLE?
« Último mensaje por Fer_TACA en 19 de Agosto de 2018, 08:48:02 »
Directamente con módulos creados específicamente por Nple para el manejo de LCD, no se puede pues el LCD mas grande que tiene implementado es de 20x4.

Otra cosa es que por SPI te curres, a piñón, todo el software y con todo y eso me da que va a ser harto difícil conseguirlo.
5
Almacén del Assembler / Re:Subrutina para el manejo de pantalla Nextion
« Último mensaje por estebanfolcher 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

6
Todo en microcontroladores PIC / Re:memcpy_p adaptado a CCS
« Último mensaje por jesusm en 19 de Agosto de 2018, 00:23:56 »
Estoy haciendo pruebas con proteus y me gustaria ver esa variable buffer correctamente. Utilizo:

Código: C++
  1. printf ("Buffer[0] = %d\r", buff[0]);  //Para el caracter Espacio se muestra un 4

Es posible que para el caracter Espacio me aparezca esto? O algo que me pueda valer para identificar la validez de memcpy?

Código: C++
  1. 3, 8, 0x00, 0x00, 0x00, 0x00, 0x00,
7
Lenguaje Basic para microcontroladores PIC / Re:Error al compilar en Pic Basic Pro
« Último mensaje por pic_877a en 18 de Agosto de 2018, 23:37:57 »


hola amigo si amigo estoy utilizando 4800bps, que es igual a 188 baudios, bueno acá te paso la simulación en proteus y el código en basic, y el código hex y la simulacion del proteus, mediante de este link en mega, y codigo esta en Microbasic pro.

https://mega.nz/#F!WSwlXBJa!V3jVUuEk2gpHowHFvXd2pA

DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTE
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTE
DEFINE LCD_EBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

DEFINE ADC_BITS 8
DEFINE ADC_CLOCK 3
DEFINE ADC_ SAMPLEUS 50

TRISC.6 = 0 
TRISC.7 = 1
TRISA = 255
ADCON1 = %00000010
TRISB.6 = %0

LED VAR PORTB.6
B1 VAR WORD
B2 VAR WORD
VALOR1 VAR BYTE
VALOR2 VAR BYTE

COMENZAR:
         ADCIN 1, B1
         ADCIN 2, B2
         VALOR1=B1/9
         VALOR2=B2/12
         
         SEROUT2  PORTC.6,188,["$", "$", DEC4 B1,"$", "$",DEC4 B2,10,13]
         LCDOUT  $FE,2,"  FUENTE SIMETRICA   "
         LCDOUT  $FE,$C0,"   JOSE LUIS       "
         LCDOUT  $FE,$94,"VOLTAJE NEGATIVO:-",DEC2 VALOR1
         LCDOUT  $FE,$D4,"VOLTAJE POSITIVO:+",DEC2 VALOR2
         HIGH LED
         GOTO COMENZAR
         
        bueno amigo seguimos en contacto jose

 ;-)         
8
Lenguaje Basic para microcontroladores PIC / Re:Error al compilar en Pic Basic Pro
« Último mensaje por elreypic2 en 18 de Agosto de 2018, 22:49:23 »
Me da la impresion que no has configurado la terminal correctamente. En tu codigo estas utilizando 4800bps, tienes configurada la terminal a ese baud rate?

Podrias colgar el archivo de tu simulacion del proteus y tu codigo de basic?

elreypic
9
Lenguaje Basic para microcontroladores PIC / Re:Error al compilar en Pic Basic Pro
« Último mensaje por pic_877a en 18 de Agosto de 2018, 21:51:48 »


amigo gracias por responder de nuevo, bueno ya me estudie la tabla de pic 16f877a de la  pagina 128, y mire la forma como configurar los pines AN1 y AN2.

luego de corregir el código compile y volví a simular y me arroja la siguiente mensaje, y en la virtual Terminal sale con letras verdes,  puedes mirar de nuevo por favor y gracias.

bueno esos 2 signos de admiración a que se referencia amigo y disculpa, a penas estoy aprendiendo a programar micros
 :?
jose
10
Todo en microcontroladores PIC / Re:memcpy_p adaptado a CCS
« Último mensaje por KILLERJC en 18 de Agosto de 2018, 21:03:18 »
En los archivos

a.c
Código: C
  1. int8 variable = 8;

b.c
Código: C
  1. extern int8 variable;

Pero CCS tiene un poco de problemas al compilar con varios .c, pero esta es la forma que lo podrias hacer con cualquier compilador
Páginas: [1] 2 3 4 5 6 7 8 9 10