Buenos dias, basandome en un tutorial de Migsantiago, trate de dividir mi buffer en varias secciones (8 diferentes arreglos para cubrir los 60 diferentes numeros de parte), despues desde un Void tratar de enviarlos al Lcd segun sea el valor de la variable Cadena direccionando previamente el menu (8 diferentes) en el cual se encuentra el elemento a deplegar con una instruccióon IF.
Me trabaja bien, hace exactamenmte lo que quiero, me imprime el valor del elemento que yo quiero de las diferentes cadenas ,pero me consume hasta el 60 % de memoria ROM y como pienso dejar el programa preparado para en el futuro cubrir hasat 100 numeros de parte pues hice algunas pruebas, como verán (mas abajo pongo esa parte del codigo) yo utilizo 4 instrucciones IF (menu<=a un contador) y cada una lleva cuatro instrucciones : dos lcd_goto y dos prinf.
Ahora bien haciendo una prueba y dejando activas todas las cadenas y solo la primera seccion del Void :la primer instruccion IF(menu<=15)(dos lcd_goto y dos prinf) y poniendo como comentario todo el bloque cubriendo las otras tres situaciones cubiertas por las otras instrucciones IF. Mando a compilar y el programa y me consume 38% de ROM.
Y si yo sigo haciendo pruebas y le deshabilito esa unica instruccion If (no mandar a deplegar datos al Lcd), me consume solo el 30%.
Por lo que veo que el uso de las cuatro instrucciones en cada seccion de los IF en este programa me consumen muchos recursos . Hace tiempo desarrollé un programa en el que tambien use varias veces grupos de 4 instrucciones (dos lcd_goto y 2 prinf) y en ese programa con las pruebas que hice semejantes a las realizadas esta vez: deshabilitando esa seccion del programa, se me traduzco a solo 1% de ahorro de ROM) en aquel caso no estaban utilizando pointers y cadenas para la selección de lo que se iba a imprimir.
Por lo que no se si dependiendo del tipo de datos que se manden a desplegar ( int, charts,char constant, elementos de cadenas, etc) sea del consumo de recursos.
Mi pregunta es si ¿acaso existe alguna forma de utilizar en mi caso solo una sola vez las instrucciones que estan en el primer IF (2 lcd-goto y dos prinf ) para imprimir todas las otras cadenas tambien? Explicado de otra forma, como puedo hacer que el valor de menup0 adopte el nombre de menup1, o el de menup2, etc, para asi yo mandar a llamar en el programa a la cadena de una forma general menu(numero pointer a utilizar) y ya solo preocuparme por asignarle el valor a: (numero de pointer a utilizar). Y no hacer llamados individuales de cada cadena menup1, menup2, menup3, menup4, etc. lo cual implica el uso de mas veces de las instrucciones prinf.
O sea como ir variando el nombre de menup1 por el nombre de menup2, etc, ya que se tratan de pinters.
Hasta luego y espero su ayuda.
Void ImprimeLCD(int x, int y, int menu, int cadena)
{
//lcd_gotoxy(1,2);
cadena=CNT;
IF (MENU<=15){
lcd_gotoxy(1,1); //para imprimir en la primeroa linea del Lcd
printf(lcd_putc, "%s", menup0[cadena]); //imprime el valor del elemento (cadena) del menup0
lcd_gotoxy(1,2); //para imprimir en la segunda linea del Lcd
printf(lcd_putc, "%s", menup6[cadena]);} //imprime el valor del elemento (cadena) del menup0
/*
IF ((MENU>15)&&(MENU<=31)){
lcd_gotoxy(1,1);
printf(lcd_putc, "%s", menup1[cadena]); //imprime el valor del elemento (cadena) del menup1
lcd_gotoxy(1,2);
printf(lcd_putc, "%s", menup7[cadena]);} //imprime el valor del elemento (cadena) del menup7
IF ((MENU>31)&&(MENU<=47)){
lcd_gotoxy(1,1);
printf(lcd_putc, "%s", menup2[cadena]); //imprime el valor del elemento (cadena) del menup2
lcd_gotoxy(1,2);
printf(lcd_putc, "%s", menup8[cadena]);} //imprime el valor del elemento (cadena) del menup8
IF ((MENU>47)&&(MENU<=59)){
lcd_gotoxy(1,1);
printf(lcd_putc, "%s", menup3[cadena]); //imprime el valor del elemento (cadena) del menup3
lcd_gotoxy(1,2);
printf(lcd_putc, "%s", menup9[cadena]);} //imprime el valor del elemento (cadena) del menup9
NOTA: los menus: menup4,menup5 no los tengo declarados , y no los utilizo por el momento, porque los deje de reserva para en el futuro meter mas numeros de parte en esas cadenas,