Para comenzar a programar microcontroladores PIC, el PIC que se utilizará (es decir, el que utilizaré en este sitio) será el 16F628 (16F628a), que como ya se mencionó anteriormente presenta algunas ventajas que lo hacen superior (desde el punto de vista de un principiante) a otros PIC.

Antes que otra cosa es necesario ver algo de "teoría" sobre el PIC, sin embargo aquí solamente mencionaré las características principales, para información más detallada es recomendable consultar la hoja de datos proporcionada por Microchip.

El PIC 16F628 incorpora tres características importantes que son:
  • Procesador tipo RISC (Procesador con un Conjunto Reducido de Instrucciones)
  • Procesador segmentado
  • Arquitectura HARVARD
Con estos recursos el PIC es capaz de ejecutar instrucciones solamente en un ciclo de instrucción. Con la estructura segmentada se pueden realizar simultáneamente las dos fases en que se descompone cada instrucción, ejecución de la instrucción y busqueda de la siguiente.
La separación de los dos tipos de memoria son los pilares de la arquitectura Harvard, esto permite acceder en forma simultánea e independiente a la memoria de datos y a la de instrucciones. El tener memorias separadas permite que cada una tenga el ancho y tamaño más adecuado. Así en el PIC 16F628 el ancho de los datos es de un byte, mientras que la de las instrucciones es de 14 bits.

Características principales
  • Conjunto reducido de instrucciones (RISC). Sólamente 35 instrucciones que aprender a utilizar
  • Oscilador interno de 4MHz
  • Las instrucciones se ejecutan en un sólo ciclo de máquina excepto los saltos (goto y call), que requieren 2 ciclos. Aquí hay que especificar que un ciclo de máquina se lleva 4 ciclos de reloj, si se utiliza el reloj interno de 4MHz, los ciclos de máquina se realizarán con una frecuencia de 1MHz, es decir que cada instrucción se ejecutará en 1uS (microsegundo)
  • Opera con una frecuencia de reloj de hasta 20 MHz (ciclo de máquina de 200 ns)
  • Memoria de programa: 2048 locaciones de 14 bits
  • Memoria de datos: Memoria RAM de 224 bytes (8 bits por registro)
  • Memoria EEPROM: 128 bytes (8 bits por registro)
  • Stack de 8 niveles
  • 16 Terminales de I/O que soportan corrientes de hasta 25 mA
  • 3 Temporizadores
  • Módulos de comunicación serie, comparadores, PWM
Otra característica de los PICs es el manejo de los bancos de registros. En línea general, los registros se clasifican como de uso general (GPR) y de uso específico o de funciones especiales (SFR).
  • Los registros de uso general pueden ser usados directamente por el usuario, sin existir restricciones. Pueden servir para almacenar resultados que se reciben desde el registro W (acumulador), datos que provienen de las puertas de entradas, etc.
  • Los registros de uso específicos no pueden ser usados directamente por el usuario. Estos registros controlan prácticamente todo el funcionamiento del microcontrolador, pues toda la configuración necesaria para funcionamiento del microcontrolador es hecho a través de algún tipo de SFR.
Pines de I/O (Entrada/Salida)

Diagrama de pines del PIC16F628

PORTA: RA0-RA7:
  • Los pines RA0-RA4 y RA6–RA7 son bidireccionales y manejan señales TTL
  • El pin RA5 es una entrada Schmitt Trigger que sirve también para entrar en el modo de programación cuando se aplica una tensión igual a Vpp (13,4V mínimo)
  • El terminal RA4 puede configurarse como reloj de entrada para el contador TMR0
  • Los pines RA0-RA3 sirven de entrada para el comparador analógico
PORTB: RB0-RB7:
  • Los pines RB0-RB7 son bidireccionales y manejan señales TTL
  • Por software se pueden activar las resistencias de pull-up internas, que evitan el uso de resistencias externas en caso de que los terminales se utilicen como entrada (permite, en algunos casos, reducir el número de componentes externos)
  • El pin RB0 se puede utilizar como entrada de pulsos para provocar una interrupción externa
  • Los pines RB4-RB7 están diseñados para detectar una interrupción por cambio de estado. Esta interrupción puede utilizarse para controlar un teclado matricial, por poner un ejemplo
Otros pines
  • VDD: Pin de alimentación positiva. De 2 a 5,5 Vcc
  • VSS: Pin de alimentación negativa. Se conecta a tierra o a 0 Vcc
  • MCLR: Master Clear (Reset). Si el nivel lógico de este terminal es bajo (0 Vcc), el microcontrolador permanece inactivo. Este Reset se controla mediante la palabra de configuración del PIC
  • OSC1/CLKIN: Entrada de oscilador externo
  • OSC2/CLKOUT: Salida del oscilador. El PIC 16F628 dependiendo de cómo se configure puede proporcionar una salida de reloj por medio de este pin
En la próxima entrega se dará una introducción al ambiente de desarrollo MPLAB y se realizará el primer programa. También se verá el conjunto de instrucciones del PIC y las directivas del ensamblador MPASM.

Para más información consultar las hojas de datos de Microchip: 16F628 y 16F628A