Estructura de un programa escrito en C para el compilador PIC C Introducción Para crear un programa independientemente, del tipo y lenguaje utilizado hay que seguir los siguientes pasos: 1. Especificar lo que deseamos que haga el programa. 2. Realizar el organigrama 3. Escribir el código Fuente en ensamblador, C, etc. 4. Ensamblar o Compilar 5. Depurar los errores En nuestro caso particularizamos para un programa escrito en C y en el entorno de PIC C CCFF D.P.E. MÓDULO DE PROYECTOS 2 Todos los programas escritos en C tienen una estructura como la que sigue: /* comentarios*/ cabecera declaraciones globales prototipos de funciones main(){ variables locales; bloque de sentencias; llamadas a las funciones; } funcion_1{ ……. } ……… funcion_n{ …… CCFF D.P.E. MÓDULO DE PROYECTOS } 3 Hay que tener en cuenta que todo lo descrito anteriormente es exportable a cualquier compilador, con mínimas diferencias. Expliquemos cada uno de los bloques descritos anteriormente 1. /* comentarios*/ En este bloque hacemos una breve descripción de la finalidad del programa, debe comenzar con /* y acabar con */ . Tenga en cuenta que los comentarios no generan código ejecutable ni ocupan espacio de memoria, y que son obligatorios para todo programador, en algunos compiladores un comentario de una línea es todo lo que sigue a dos caracteres // Ejemplo : /* parpadeo.c Programa que hace parpadear los leds conectados al puerto b con una cadencia de 1 segundo, un comentario puede ocupar mas de un línea */ CCFF D.P.E. MÓDULO DE PROYECTOS 4 2. Cabecera (header) En esta sección se incluyen los archivos de cabecera y las directivas. ej. : #include <16F84.h> /* tipo de PIC que utilizaremos*/ #include “fichero.h” /*fichero de cabecera*/ #use delay (clock= 4000000) /*directiva reloj de 4MHz*/ #use fast_io (a) #use fast_io(b) /*directiva*/ /*directiva*/ El símbolo # es una orden para el preprocesador El efecto que se produce con #include es el mismo que si incluyéramos todo el código del fichero *.h al principio del programa. CCFF D.P.E. MÓDULO DE PROYECTOS 5 3. Declaraciones globales Una variable es una posición de memoria con nombre, que contendrá un valor que puede ser modificado por el programa. En C antes de utilizar una variable es obligatorio declararla. Las variables que se declaran dentro de una función solo tienen existencia en ella, por lo que se les denomina LOCALES mientras que las que se declaran fuera de ellas se denominan GLOBALES y pueden ser utilizadas en cualquier parte del código. CCFF D.P.E. MÓDULO DE PROYECTOS 6 EJ.: byte contador; // contador es una variable global y es del tipo byte LONG valor; //aquí almacenamos el valor para INT entrada; //variable que almacena situación del puerto INT entrada_aux; //variable auxiliar para cuando hacemos la //máscara INT i= 6; //variable para movernos en el array LONG modula[7]={300, 400, 500, 600, 700, 800, 100}; /*array donde tenemos los valores*/ byte, LONG, INT, indican el tipo (tamaño) de la variable. CCFF D.P.E. MÓDULO DE PROYECTOS 7 4. Prototipos de funciones En este apartado se indican las funciones que posteriormente serán llamadas, desde main() EJ.: /* DECLARACIÓN DE FUNCIONES */ void derecha (void); // ilumina los leds de derecha a izquierdas void izquierda (void); // ilumina los leds de izdas a derechas void fuera-dentro (void); // ilumina los leds de fuera hacia dentro void dentro-fuera (void); // ilumina los leds de dentro hacia fuera CCFF D.P.E. MÓDULO DE PROYECTOS 8 4. main() { int captura; // variable local a main() setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); set_tris_a(0x1f); set_tris_b(0x00); while (true){ captura=input_a(); output_b(captura); } } Es la función principal y solo existe una (generalmente, es la primera que se escribe). Esta función permite la llamada a otras funciones ( ), que devuelven resultados que serán utilizados por el programa principal main ( ). CCFF D.P.E. MÓDULO DE PROYECTOS 9