Programación PIC 16F84A

En este post voy a intentar hacer un breve repaso a todo lo que he necesitado para programar un PIC. El PIC en cuestión es un 16F84A (datasheet) y tiene las siguientes patillas:

Esquema PIC16F84A

No voy a entrar en detalles sobre cuales son las características del microcontrolador, porque sobre eso hay muchísima información en internet. De lo que sí hablaré es de como programarlo.

Todo lo que he necesitado ha sido:

  • Un PIC 16F84A, obvio.
  • Un programador de PICs. En mi caso, he utilizado un TE-20. Es un programador bastante común, que se puede comprar o montar, ya que el esquema se encuentra fácilmente en google. Es un programador que no necesita alimentación externa.
  • Varios componentes básicos para montar un circuito de pruebas y ver que, efectivamente, el PIC se había programado.
  • El software PIC C Compiler. Necesario para escribir código en C y compilarlo, obteniendo así un archivo con extensión .hex
  • El software IC-Prog  (gratuito). Necesario para volcar el archivo .hex en la memoria interna del PIC.

Ahora que esto ya está claro, empecemos:

Lo primero de todo es crear el programa que grabaremos. Este programa será extremadamente sencillo: encenderá un LED conectado y lo apagará repetidamente. Para crear el programa con el PIC C Compiler, necesitamos crear un nuevo proyecto indicando nuestro modelo de PIC (16F84A) y la frecuencia del oscilador. En este caso, 4Mhz. El código en cuestión del programa es:

#include «main.h»        // fichero creado por el PIC C Compiler.
#byte port_b=0x06  // direccion fisico del puerto B en el registro.

void main()
{
set_tris_b(0);    // configura el puerto B como salida.
port_b = 0;         // apaga el puerto B.

while(true) {
delay_ms(500);  // espera 500 ms.
port_b = 0xff;      // enciende el puerto B.
delay_ms(500);
port_b = 0x00;
}
}

Una vez que hemos compilado el código y hemos obtenido el archivo .hex, el siguiente paso es volcar ese archivo a la memoria del PIC. Para ello, utilizamos el programador TE-20:

Programador TE-20

Se puede ver que el PIC está montado en un zócalo (es el único microchip que se ve). Los otros dos zócalos son para programar memorias EEPROMs y PICs con más patillas. En este caso no las necesitamos.

Una vez que el TE-20 está conectado al puerto serie del ordenador, con el software IC-Prog lo programaremos. Para ello, detectamos primero en que puerto COM está conectado el programador TE-20, cargamos el programa .hex y lo grabamos. Las opciones (Settings > Hardware) que hay que configurar para que este programador en particular funcione están en la imagen (hay que fijarse en que el programador seleccionado es el JDM y que está seleccionada la casilla invert VCC).

IC-Prog 16F84A

También hay que observar que hemos seleccionado el PIC correcto. Las casillas de la derecha del programa principal son los fuses, unos registros especiales que manejan ciertas cosas. Mientras el WDT (Watch Dog) esté desactivado, no hay problema.

Con el PIC grabado con nuestro programa, ya podemos probarlo en un circuito. Yo he utilizado el siguiente esquema:

Esquema prueba 16F84A

Notemos que faltan las conexiones de alimentación del PIC (VDD a 5v  y VSS a masa)

En realidad, el LED se podría conectar en cualquiera de los pines marcados como del puerto B, ya que en el programa se activan todos. Para la alimentación he utilizado 4 pilas AA (de las normales, vamos). Para acabar, una foto con el circuito montado y el LED encendido:

Circuito prueba 16F84A

Podéis encontrar todos los archivos necesarios para programar el PIC (código fuente y archivo .hex) aqui:

Parpadeo LED (Ejemplo código PIC)
1.9 KiB
222 Downloads
Details

3 respuestas a «Programación PIC 16F84A»

  1. hola, quisiera saber como hago para usar el reloj interno del micro sin usarlo externamente.. y que pasa si no pongo ese reloj de cuarzo de 4mhz y son capacitores?

Los comentarios están cerrados.