Resumen

Escribir tu primer programa en C para controlar un microcontrolador es uno de los pasos más emocionantes cuando trabajas con electrónica embebida. Aquí se explica paso a paso cómo crear un proyecto en MPLAB que haga parpadear un LED usando el PIC18F4550, desde la estructura del archivo hasta la compilación exitosa.

¿Cómo se crea el archivo principal del proyecto en MPLAB?

Dentro de MPLAB, en la carpeta Source Files, se crea un nuevo archivo llamado main.c [0:12]. Es fundamental recordar que solo puede existir un archivo main en todo el proyecto. Este archivo contendrá toda la lógica que ejecutará el microcontrolador.

Al inicio del archivo se utilizan directivas #include para importar librerías necesarias [0:37]. Se deben incluir dos archivos clave:

  • pic18f4550_configs.h: el archivo de configuraciones generado previamente.
  • xc.h: la librería oficial de Microchip que contiene las definiciones y funcionalidades del microcontrolador PIC18 [0:57].

Además, es necesario definir la frecuencia del cristal que se va a utilizar. Esto se hace con la directiva #define _CRYSTAL_FREQ 8000000, que representa ocho megahertz (ocho millones de hercios) [1:25]. Esta definición le indica al compilador a qué velocidad opera el reloj del sistema.

¿Qué es la instrucción TRIS y cómo configura los pines?

La instrucción TRIS permite definir si un pin del microcontrolador funcionará como entrada o salida [2:04]. La regla es sencilla:

  • Cero configura el pin como output (salida).
  • Uno configura el pin como input (entrada).

Por ejemplo, TRISB0 = 0 establece el pin B0 como salida [2:12], que es exactamente lo que se necesita para controlar un LED. Si quisieras conectar un botón o un sensor, el valor debería ser uno, ya que esos dispositivos introducen datos al microcontrolador [2:45].

¿Cómo funciona el bucle que enciende y apaga el LED?

Dentro de la función main, se crea un ciclo while(1) que se ejecuta indefinidamente [3:13]. Dentro de este bucle se coloca la lógica de parpadeo:

c while(1) { LATB = 1; // enciende el LED __delay_ms(1000); // espera 1 segundo LATB = 0; // apaga el LED __delay_ms(1000); // espera 1 segundo }

La función __delay_ms() genera un retardo en milisegundos [3:43]. Mil milisegundos equivalen a un segundo. Es importante no confundir milisegundos con microsegundos, ya que este último se representa con la letra "u" y se usa en otros contextos [3:51].

¿Por qué se usa LATB en lugar de RB0?

Al compilar inicialmente con RB0, el compilador muestra un warning indicando que esa variable está deprecada [4:38]. Microchip actualizó la nomenclatura en versiones recientes de XC8, por lo que la forma correcta ahora es usar LATB0 o simplemente LATB [5:07].

  • LATB0: controla únicamente el pin B0.
  • LATB: controla los ocho pines del puerto B simultáneamente [5:23].

Al cambiar a LATB, los warnings desaparecen y el código queda limpio [5:42].

¿Cómo se compila y se verifican errores en MPLAB?

Para compilar se presiona el botón del martillo (build) [4:18]. La terminal muestra información valiosa: porcentaje de memoria de programa utilizada, estado de los configuration bits y uso del data space [4:25].

Cuando existe un error, como un punto y coma faltante o una comilla sin cerrar, el compilador lo señala en el output con mensajes como "unexpected token" [6:16]. Aprender a leer estos logs de compilación es esencial para depurar código rápidamente [6:06].

Algunos errores comunes que debes vigilar:

  • Punto y coma olvidado al final de una instrucción.
  • Librerías mal importadas.
  • Comillas o paréntesis sin cerrar.

Una vez que la compilación es exitosa y no aparecen warnings ni errores, el código está listo para ser transferido al microcontrolador y probado en hardware físico [7:02]. ¿Ya tienes tu PIC18F4550 listo para programar? Comparte tu experiencia en los comentarios.

      Programación de Microcontroladores PIC: Control de LED Básico