Anexo 1 Programación XC8 - Borxo/Programming-PIC-Microcontrollers-Tutorial GitHub Wiki

Programación XC8

Se trata de un compilador creado por la empresa Microchip, el lenguaje que utiliza es C o C++ (solo en formato XC32) y se pueden encontrar 3 tipos de compiladores dependiendo de la gama del microcontrolador.

  • XC8: Compatible con los MCU PIC y AVR de 8 bits.
  • XC16: Compatible con los MCU PIC y dsPIC de 16 bits.
  • XC32: Compatible con MCU PIC y SAM de 32 bits. El lenguaje que se va a utilizar es C con todas sus características, pero incluye distintas mejoras facilitando así la programación de los microcontroladores PIC. Un ejemplo muy claro es la utilización de los nombres de los registros o de los bits, haciendo que el picar el código sea mucho más sencillo para el programador.

Proceso de compilación

El proceso de compilación se basa en coger el código generado en lenguaje C, pasa por varios pasos hasta convertirlo en lenguaje hexadecimal, el cual se carga en el microcontrolador. El primer paso donde interviene íntegramente el programador es la creación del archivo en C, se suele utilizar el IDE de MPLAB X, creado por Microchip, cuando ya se tiene el código pasa al preprocesador. El preprocesador es el encargado de buscar las líneas que empiecen por “#” dentro del código, denominadas directivas del preprocesador. El procesador lee estas líneas y según cada directiva va modificando el código, incluyendo los archivos, bibliotecas, definición de constantes. El inicio del preprocesador se realiza automáticamente cuando se ejecuta el compilador.

Después pasa el código modificado por el preprocesador por el analizador sintáctico, que se encarga de eliminar toda información inútil del código, como son los comentarios y los espacios en blanco. Cuando queda limpio el código entra en juego el compilador que traduce el código a código maquina (binario), después el enlazador es encarga de coger el archivo en código maquina y archivos externos necesarios para el programa y juntarlos en uno solo.

El último paso es coger el archivo final y pasarlo por un convertidor en hexadecimal, obteniendo así el archivo final, con el cual se puede programar el PIC en cualquier programador

Estructura de programa

Cabecera

Es donde el programador incluye toda la información relevante del programa, como puede ser el Nombre del programa, el autor, fecha, versión…etc. La idea de la utilización de la cabecera es que cuando alguien vea el código por primera vez, entienda de un vistazo el código. Estas líneas deben ir siempre comentadas, ya que sino saltaría un error en la compilación del programa. Mas adelante se explicará la utilización de los comentarios.

Las directivas del preprocesador

Como se ha explicado anteriormente, las directivas del preprocesador son las instrucciones que solo entiende el preprocesador, siempre empiezan por “#”. En este bloque se incluirá las palabras de configuración del PIC, las librerías que se van a utilizar, la velocidad del oscilador y alguna constante ahorrando así espacio en memoria.

Función main ()

Es la función principal del programa y obligatoria para que funcione el programa. La función “main”, se debe escribir de la siguiente manera “void main(void)”, siempre seguido de dos corchetes que contendrá el bruto del programa. Los programas generados suelen ser cíclicos, es decir, no tienen un principio y un fin, sino que se ejecuta en forma de bucle. Para realizar este bucle se encarga el “while(1)”, que se encuentra dentro de la función “main”. Dicho de otra manera, lo que se encuentre dentro del “main” pero antes del “while(1)”, se ejecutara una vez y lo que está dentro del “while(1)” se ejecutara siempre.

Comentarios

Los comentarios son una parte fundamental del programa, son aclaraciones e información relevante, que realiza el programador sobre el programa. Estas líneas solo son entendibles para las personas, ya que como se ha explicado en el proceso de complicación, estas líneas son omitidas es una totalidad.

Comentario multi linea

/*
 * Programa: Hola Mundo. 
 * Microcontrolador: PIC16F1936.
 * Autor: Borxo García.
 * Fecha: 07/07/2019.
 */

Comentario cortos

    //Oscilador//
    OSCCON=0b01101000; //4Mhz
    //Oscilador//
    OSCCON=0b01101000; //4Mhz