Autor Tema: Nombres de variable variables (Variable Variable names)  (Leído 3603 veces)

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

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Nombres de variable variables (Variable Variable names)
« Respuesta #15 en: 18 de Enero de 2008, 11:52:18 »
Pero jfmateos2, lo que no me queda claro es que si no tienes espacio para las constantes en rom, el código que te genera el uso de punteros a ram debe ser similar.

Si estas muy muy jugado de espacio solo me queda sugerirte que hagas algo del código en assembly o bien si usas un pic que pueda autoleer la flash, podrías ingeniartelas para almacenar como código la tabla de constantes lo cual te ahorrará mucho espacio.

En los 16F una instruccion de programa tiene 14bits, si con 14bits puedes almacenar nro de posición y numero de indice, entonces podrías leer una posición de la flash como si fuera 'dato'.  claro que necesitaras espacio para la rutina de lectura de la flash pero si tienes muchos datos te aseguro que a fin de cuentas te ahorras espacio en memoria.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Nombres de variable variables (Variable Variable names)
« Respuesta #16 en: 18 de Enero de 2008, 17:19:23 »
talvez te sirva la idea, mira yo use esa declaración para guardar los datos que mostraria por una matriz de leds 8x8

y entonces cada letra es 8 bytes, y se que cada 8 bytes viene una nueva letra, entonces con un for puedo ir mostrando cada byte para cada fila de la matriz, y si quiero otra letra, solo calculo su posición, en mi caso como era una prueba nada mas, las posiciones las defini solo al inicio y de ahi voy sumandod e ocho en ocho en el programa, espero se haya entendido, pero bueno te dejo el codigo para que veas como lo estaba haciendo

Código: [Seleccionar]
for(j=0;j<max;j++)
{
     for(i=min;i<maxi;i++)
     {
         output_a(cont);       // esta era la linea para activar un decodificador segun la fila en la qeu estabamos
         output_b(data[i]);   //data es la declaracion qeu de teje antes
         delay_ms(1);
         cont++;
     }
}
output_b(0);
delay_ms(500);
min=maxi;
maxi=maxi+8;
cont=0;
if(maxi>208)
{
    min=0;
    maxi=8;
}

con ello logro ver todo el alfabeto que esta guardado en el array data, todo con referencia al indice i
.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Nombres de variable variables (Variable Variable names)
« Respuesta #17 en: 18 de Enero de 2008, 18:33:49 »
Cryn voy a calcular si con tu método consigo ahorrar algo de memoria.

El problema es que mis datos no tienen todos el mismo número de elementos, los tengo con 1, 2, 3, 4, 5, 6, ... elementos, de modo que para aplicar tu método tendré que rellenar con elementos dummy para que todos midan lo mismo. Aún así, quizás consiga ahorrar algo de memoria, pues como me ha dicho maunix, con mi método ya estoy derrochando dos bytes más para el puntero de cada dato.

Haré unas cuentas y aplicaré el método que mejor me resulte.

Gracias.


 

anything