Autor Tema: no consigo compilar el programa por un error  (Leído 4106 veces)

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

Desconectado GabRodVar

  • PIC10
  • *
  • Mensajes: 3
no consigo compilar el programa por un error
« en: 03 de Junio de 2013, 15:10:59 »
Es la primera vez que pido ayuda y espero que alguien me eche un cable. Poca idea tengo de programacion, pero sí mucha de electrónica, ya que toda mi vida laboral ha sido en este campo y ahora que estoy en puertas de jubilarme, pues me ha dado por aprender algo en algun lenguaje. Se trata de que quiero llevar a cabo realizar una cerradura con clave, con el 89C51RC2  consiguiendo un programa en la red  que a la hora de conseguir el codigo *.hex con Keil uVision obtengo los siguentes errores:

     CPROGRAM.C(34): warning C206: 'lcddata': missing function-prototype
     CPROGRAM.C(34): error C267: 'lcddata': requires ANSI-style prototype
 
El principio del programa lo pongo a continuacion:    La linea 34 donde me indica el error es concretamente:   lcddata("WELCOME"); está al final casi de esta parte del programa. Tambien comentar que creo que el error está en la 2ª linea donde se observa que falta definir un archivo: *.h
Espero que alguien se acuerde de mi, sino, abandonare el tema. Muchas gracias de antemano a todos. un saludo

#include <Reg51.h>
#include <           >
#define COL P3
#define ROW P0
sfr ldata=0x90;
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
sbit access=P2^3;
char master_password[6]="222222";
void delay(unsigned int itime);
void lcdcmd(unsigned char value);
void lcd_data(char *value);
void keyboard_reading(char );
void keyboard_key_press();
unsigned char keyboard[4][3]={ '1','2','3','4','5','6','7','8','9','*','0','#', };
char temporary_storage[6];
int i;
char ch;
void main()
{
while(1)
{
access=0;
lcdcmd(0x38);
delay(50);
lcdcmd(0x0e);
delay(50);
lcdcmd(0x01);
delay(25);
lcdcmd(0x06);
delay(50);
lcdcmd(0x81);
delay(250);
lcddata("WELCOME");
delay(250);
lcdcmd(0xc0);
lcddata("ENTER PASSWORD");
ch=0;
keyboard_key_press();




Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: no consigo compilar el programa por un error
« Respuesta #1 en: 03 de Junio de 2013, 15:21:11 »


En C, si llamas a una función antes de haberla definido, tienes que incluir el prototipo de esa función, o el compilador te dará error. El prototipo es la función pelada, solo sirve para que el compilador sepa que tipo de campo recibirá y devolverá esa función.

Reemplaza  void lcd_data(char *value);  por  void lcddata(char *value);


No obstante, te faltarán todas las funciones a las que llamas desde el main, osea:
void delay(unsigned int itime);
void lcdcmd(unsigned char value);
void lcddata(char *value);
void keyboard_reading(char );
void keyboard_key_press();


Si no están en el Reg51.h, las tendrás en ese otro include "fantasma", que debes de buscar e incluir, para que compile.


« Última modificación: 03 de Junio de 2013, 15:24:24 por planeta9999 »

Desconectado GabRodVar

  • PIC10
  • *
  • Mensajes: 3
Re: no consigo compilar el programa por un error
« Respuesta #2 en: 03 de Junio de 2013, 15:59:48 »


En C, si llamas a una función antes de haberla definido, tienes que incluir el prototipo de esa función, o el compilador te dará error. El prototipo es la función pelada, solo sirve para que el compilador sepa que tipo de campo recibirá y devolverá esa función.

Reemplaza  void lcd_data(char *value);  por  void lcddata(char *value);


No obstante, te faltarán todas las funciones a las que llamas desde el main, osea:
void delay(unsigned int itime);
void lcdcmd(unsigned char value);
void lcddata(char *value);
void keyboard_reading(char );
void keyboard_key_press();


Si no están en el Reg51.h, las tendrás en ese otro include "fantasma", que debes de buscar e incluir, para que compile.




Bien seguiré tu consejo (planeta 9999); intentare localizar dicho archivo fantasma aunque no se con qué criterio buscarlo. No obstante te agradezco enormemente tu prontitud en proporcionarme respuesta al tema . Un saludo.
 




Desconectado jim_17

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
    • Blog personal
Re: no consigo compilar el programa por un error
« Respuesta #3 en: 03 de Junio de 2013, 16:10:06 »
Ese es el problema que sucede cuando utilizas códigos de otra gente y no tienes las librerias.

Hay muchas librerias de lcd por ahí, si te lo curras un poco puedes utilizar una de ellas.

Un saludo.
Share the world !

Blog's

http://www.area0x33.com

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: no consigo compilar el programa por un error
« Respuesta #4 en: 03 de Junio de 2013, 16:14:14 »
Bien seguiré tu consejo (planeta 9999); intentare localizar dicho archivo fantasma aunque no se con qué criterio buscarlo. No obstante te agradezco enormemente tu prontitud en proporcionarme respuesta al tema . Un saludo.


¿ De donde has sacado ese programa ?
En esa página, de la que lo has descargado, debería de estar el fuente completo, con todas las librerias y ficheros .h y .c , a menos que solo hayas pegado parte del código fuente, y las funciones estén por debajo, por lo pronto en el fuente que pones, te faltan las llaves de cierre del main y del while. Tal vez no falte ningún archivo, si esas funciones están en la parte del fuente que te has comido al pegarlo aquí.



Desconectado GabRodVar

  • PIC10
  • *
  • Mensajes: 3
Re: no consigo compilar el programa por un error
« Respuesta #5 en: 03 de Junio de 2013, 16:31:21 »
Ese es el problema que sucede cuando utilizas códigos de otra gente y no tienes las librerias.

Hay muchas librerias de lcd por ahí, si te lo curras un poco puedes utilizar una de ellas.

Un saludo.



Te pido perdón (Jim17) si te ha molestado por haber copiado un código de otras gentes, como bien dices. Creo que al propio autor no le molesta , desde el momente que lo cuelga en la red . Creo que el servicio de red es para todos, incluyendo los ignorantes como yo y sobre todo cuando mi uso no es lucrativo sino educativo. Gracias por tu respuesta. Cuando lleves 40 años trabajando como yo, pensarás de otra manera. Gracias de nuevo, un saludo