Autor Tema: error de compilacion  (Leído 1380 veces)

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

Desconectado yipi

  • PIC12
  • **
  • Mensajes: 79
error de compilacion
« en: 28 de Diciembre de 2009, 17:46:30 »
Hola  a todos y felices fiestas,

Estoy haciendo un programilla en C para un pic 16f877 y lo que sucede es que en mi programa durante la rutina de atencion a la interrupcion, hago una llamada a dos funciones, que  tengo definidas fuera de la rutina de interrupcion, y lo que pasa es que el compilador que uso que es el CCX5 me saca un error en cada una de las llamadas a la funcion.

Las funciones estan bien pues si las llamo desde el main funcionan perfectamente pero necesito poder llamarlas desde la rutina de atencion a la interrupcion.

La duda que tengo es si tienen que estar definidas en algun lugar especial del programa por ejemplo cuando no tengo interrupcion las funciones las defino antes del main pero cuando utilizo las interrupciones tengo que incluir la rutina de atencion a la interrupcion justo despues de la directiva #pragma origin 4 (que viene siendo un ORG 0x04 en ensamblador) y por tanto no se donde colocar las definiciones de las funciones que voy a utilizar dentro de dicha rutina..

Bueno haber si me podeis ayudar.Gracias

Desconectado Zardoz

  • PIC10
  • *
  • Mensajes: 18
    • ZardoZ the Technomage
Re: error de compilacion
« Respuesta #1 en: 28 de Diciembre de 2009, 19:48:24 »
No estoy seguro de si tu problema viene por esto pero en C de toda la vida, antes de llamar una función, tienes que tenerla definida, o al menos haber escribo el prototipo de la función.

Explicado de otra forma :


MAL :
Código: [Seleccionar]
main()
{
  .....
  TuFuncion();
}


int TuFuncion()
{
  .....
}


BIEN :
Código: [Seleccionar]

int TuFuncion()
{
  .....
}

main()
{
  .....
  TuFuncion();
}




Mejor todavia :
Código: [Seleccionar]
int TuFuncion();

main()
{
  .....
  TuFuncion();
}


int TuFuncion()
{
  .....
}


Desconectado yipi

  • PIC12
  • **
  • Mensajes: 79
Re: error de compilacion
« Respuesta #2 en: 29 de Diciembre de 2009, 12:39:16 »
Hola zardoz ya esta todo resuelto gracias a tu ejemplo, el fallo era que estaba escribiendo los prototipos como si fueran llamadas a funciones ( funcion (); ), en lugar de escribir ( void funcion (); ), gracias a tu ejemplo me di cuenta del error y ya he podido compilar sin ningun problema.

Gracias.