TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: vasconinicolas en 20 de Junio de 2008, 23:11:57
-
Hola amigos, antes que nada quiero decirles que son mis maestros en la web en asuntos de PIC, aprendo analizando vustros trabajos.
Hoy les escribo por una duda que debe ser MUY basica pero para alguien que empieza a programar en C es un tanto enredado, el asunto es que deseo manejar mi funcion de LCD optimizadamente, es decir, algo asi
void lcd(void)
{
lcd_init(); //inicio lcd
printf(lcd_putc,"%Ld",primera_linea); //imprimo primera fila
lcd_gotoxy(1,2); //muevo cursor
printf(lcd_putc,"%Ld",segunda_linea); //imprimo segunda fila
return;
}
Pero no encuentro la manera de asignar a las variables, en este caso primera_linea y segunda_linea los valores necesarios, que van desde strings de caracteres, variables int e int32-
Actualmente escribo muchas funciones de LCD y eso me come mucha memoria, ya le voy a tenes que poner un disco duro al pic pa que me alcanze la rom jejejejeje
Alguna sugerencia?
Gracias
-
Los tipos los tienes en la instrucción print() del manual.
c, caracter; u entero; lu long etc.
¿Para qué sirve el return?
-
¿Para qué sirve el return?
Yo me estaba preguntando lo mismo... porque la función es tipo "void"... :?
Ahora nos toca esperar la respuesta de vasconinicolas...
Saludos, nos leemos! :mrgreen:
-
Hola fire, pocher y vasconinicolas.
El uso de return dentro de una función void esta contemplado en CCS dentro de los errores de compilación. Seguramente al tratar de compilarlo a vasco le dará el siguiente error:
"Return not allowed in void function"
0x01 saludo.
-
float pm; // variable float por cuestiones de calculos que hago antes de representar los resultados en la pantalla
char i;
void lcd_seteo_valores_iniciales_motor(void)
{
lcd_init();
printf(lcd_putc, "motor"); // represento un string
lcd_gotoxy(1,2);
printf(lcd_putc, "%ld", (int16)pm); // aqui convierto la variable float en entera porque come mucho menos memoria de programa
return;
}
void lcd_menu_inicio(void)
{
lcd_init();
printf(lcd_putc,"Configurar"); //imprimo primera fila string
lcd_gotoxy(1,2);
printf(lcd_putc,"Sistema?"); //imprimo segunda fila string
return;
}
void lcd_saludo(void)
{
do{
lcd_init();
printf(lcd_putc,"*SkyNIC*"); //imprimo primera fila string
lcd_gotoxy(1,2);
printf(lcd_putc,"%d",i); //represento la variable i
return;
}
Y de estas funciones tengo muchas, cada una es ligeramente diferente y lo que yo pretendia es hacer una sola funcion que representase 2 variables, una para la primera fila y otra para la segunda (del lcd). De esa forma yo cargo las variables y luego llamo la funciona LCD() y listo.
Por cierto, el return lo puse con la idea de volver al sitio desde donde llamé la funcion (en el programa principal) luego de terminada la misma, por costumbre de trabajar en ASM (call - return) pero no se si es necesario en C. Disculpen la ignorancia y aunque dispongo del manual en español de Andrés Cánovas López, para los que iniciamos en C algunas no las comprendemos muy bien hasta que no hechamos el moco ejeje
Saludos
-
El lcd_init() ponlo una sola vez en el main(), es suficiente.
-
Gracias pocher por la aclaracion. Respecto a mi problema, lo he solucionado asi
int saludo[]="hola", saludo2[]="mundo",vlcd;
void lcd(){
printf(lcd_putc,"%s",vlcd); //imprimo en lcd
}
void main(void){
vlcd=saludo; //cargo la cadena en la variable
lcd(); //imprimo hola en lcd
vlcd=saludo2;
lcd(); //imprimo mundo en lcd
}
Y asi, la cuestion era usar una misma variable para no tener que escribir muchas funciones lcd()
Gracias a todos una vez mas.
N