Buenas a todos, tengo funcionando un pequeño programita en CCS para un 18F4550 que dependiendo del valor que le llega por RS232 muestra una pantalla u otra por el GLCD (fast_glcd encendido). Lo tengo funcionando con las pantallas definidas en global y una función para cada una. Así llamo a la función de la imagen que quiero mostrar y punto. Ahora quiero dejarlo algo más "aseado" y lo que quiero hacer es una única función a la que se le envía la imagen a mostrar... no se en que me estoy equivocando, a ver si alguien me puede ilustrar...
void glcd_imagen(const int8 imagenx[64][16]) //el error me lo da en esta línea: expecting an identifier y unos cuantos errores más
{
char i,j;
signed char k;
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
for( i = 0 ; i < 64 ; i ++ )
{
for( j = 0 ; j < 16 ; j ++)
{
for(k=7;k>-1;k--)
{
if( bit_test(imagenx[i][j] ,7-k ))
glcd_pixel( j*8+k,i, ON );
}
}
}
}
void main()
{
char pantalla[3];
int numpant;
const int8 imagen_1[64][16] = {
/*
OMITO ESTE CODIGO YA QUE SIMPLEMENTE SON LAS IMAGENES...
*/
glcd_init(ON); // INICIAMOS EL LCD
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
while(TRUE){
get_string(pantalla,3); //LEEMOS LA PANTALLA QUE NOS ENVÍA EL PLC.
numpant = atoi(pantalla); //PASAMOS EL STRING A UN ENTERO.
delay_ms(100);
switch(numpant) //DEPENDIENDO DEL NUMERO DE PANTALLA RECIVIDO, MOSTRAREMOS UNA IMAGEN U OTRA.
{
case 1:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_1);
glcd_update();
delay_ms(100);
break;
case 2:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_2);
glcd_update();
delay_ms(100);
break;
case 3:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_3);
glcd_update();
delay_ms(100);
break;
case 4:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_4);
glcd_update();
delay_ms(100);
break;
case 5:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_5);
glcd_update();
delay_ms(100);
break;
case 6:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_6);
glcd_update();
delay_ms(100);
break;
case 7:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_7);
glcd_update();
delay_ms(100);
break;
case 8:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_8);
glcd_update();
delay_ms(100);
break;
case 9:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_9);
glcd_update();
delay_ms(100);
break;
case 10:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_10);
glcd_update();
delay_ms(100);
break;
case 11:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_11);
glcd_update();
delay_ms(100);
break;
case 12:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_12);
glcd_update();
delay_ms(100);
break;
case 13:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_13);
glcd_update();
delay_ms(100);
break;
case 14:
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
glcd_imagen(imagen_14);
glcd_update();
delay_ms(100);
break;
default:
break;
}
}
}
Si creeis que hay más cosas a mejorar se aceptan sugerencias xD.
Un saludo y muchas gracias.