Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: tanemone en 05 de Diciembre de 2016, 07:44:51
Título: info ccs: organizar programas
Publicado por: tanemone en 05 de Diciembre de 2016, 07:44:51
hola, alguien tiene info sobre como organizar programas para que el main no quede tan abultado? es decir, por ejemplo hacer "programas" a parte del main para hacer los init del micro (como por ejemplo, llamar a init_port, init_lcd, init_interrupciones, etc etc
que quede una cosa asi mas o menos: #include .... variables
void main() init micro();
y en init micro que llame a un fichero generico para dicho micro que contenga el init_lcd, init_port, init_interrupciones, init_adc ... asi cada vez que quiera acceder a como esta inicializado el micro miro tal fichero y ya esta, no tengo que buscarlo por el programa principal...
aunque no se si esto es posible.. gracias de antemano...
Título: Re:info ccs: organizar programas
Publicado por: KILLERJC en 05 de Diciembre de 2016, 08:06:52
- Crear otro archivo .c : Aca pondrias tus funciones como init_micro(void)
- Crear un archivo cabecera .h : aca pondrias el prototipo de la funcion y lo incluis en ambos .c. Ejemplo.
main.c
Código: C
#include "micabecera.h"
#include ....
//Aca defino mis variables
void main(void)
{
init_main();
while(1)
{
//Aca codigo de main
funcion2();
}
}
micabecera.h
Código: C
#ifdef MICABECERA_H
#define MICABECERA_H
void init_main(void);
void funcion2(void);
#endif // MICABECERA_H
miarchivo.c
Código: C
#include "micabecera.h"
#include ..... // lo que sea que uses aca
// Aca variables que se usan aca nomas
void init_main(void)
{
//Aca el codigo de tu init
}
void funcion2(void)
{
// Aca el codigo de tu funcion2
}
La idea es que las variables que se usan en el archivo "miarchivo.c" solamente se usen ahi, y lo mismo para el main.c, Si aun asi necesitas compartir una variable se debe declararla como extern. Ejemplo, si declaras una variable en main.c y lo queres usar en miarchivo.c quedaria asi:
main.c
Código: C
int variable;
miarchivo.c
Código: C
externint variable;
Mas que obvio que esto se intenta evitar.. y por eso se les pone el static de esa forma su alcanze se encuentra unicamente en el archivo en cuestion.