/PIC16F887

Practicas con el PIC16F887

Primary LanguageAssembly

PIC16F887


El PIC16F887 es un poderoso y económico microcontrolador de 40 terminales, tiene una arquitectura de 8 bits, ADC, PWM, comunicación serial, oscilador interno, entre otras muchas características, lo hacen un reemplazo obvio del antiguo PIC16F877A.
El microcontrolador tiene una memoria de 8 KB, suficiente para aplicaciones en la industria o en dispositivos electrónicos donde se requiera conectar varios periféricos, pues cuenta hasta con 36 líneas de entrada/salida‏

Características del PIC

  • Arquitectura RISC
    • El microcontrolador cuenta con solo 35 instrucciones diferentes
    • Todas las instrucciones son uni-ciclo excepto por las de ramificación
  • Frecuencia de operación 0-20 MHz
  • Oscilador interno de alta precisión
    • Calibrado de fábrica
    • Rango de frecuencia de 8MHz a 31KHz seleccionado por software
  • Voltaje de la fuente de alimentación de 2.0V a 5.5V
    • Consumo: 220uA (2.0V, 4MHz), 11uA (2.0 V, 32 KHz) 50nA (en modo de espera)
  • Ahorro de energía en el Modo de suspensión
  • Brown-out Reset (BOR) con opción para controlar por software
  • 35 pines de entrada/salida
    • Alta corriente de fuente y de drenador para manejo de LED
    • Resistencias pull-up programables individualmente por software
    • Interrupción al cambiar el estado del pin
  • Memoria ROM de 8K con tecnología FLASH
    • El chip se puede re-programar hasta 100.000 veces
  • Opción de programación serial en el circuito
    • El chip se puede programar incluso incorporado en el dispositivo destino.
  • 256 bytes de memoria EEPROM
    • Los datos se pueden grabar más de 1.000.000 veces
  • 368 bytes de memoria RAM
  • Convertidor A/D:
    • 14 canales
    • resolución de 10 bits
  • 3 temporizadores/contadores independientes
  • Temporizador perro guardián
  • Módulo comparador analógico con
    • Dos comparadores analógicos
    • Referencia de voltaje fija (0.6V)
    • Referencia de voltaje programable en el chip
  • Módulo PWM incorporado
  • Módulo USART mejorado
    • Soporta las comunicaciones seriales RS-485, RS-232 y LIN2.0
    • Auto detección de baudios
  • Puerto Serie Síncrono Maestro (MSSP)
    • Soporta los modos SPI e I2C

Diagramas

Descripcion de pines

La mayoría de los pines del microcontrolador PIC16F887 son multipropósito como se muestra en la figura anterior. Por ejemplo, la asignación RA3/AN3/Vref+/C1IN+ para el quinto pin del microcontrolador indica que éste dispone de las siguientes funciones:

  • RA3 Tercera entrada/salida digital del puerto A
  • AN3 Tercera entrada analógica
  • Vref+ Referencia positiva de voltaje
  • C1IN+ Entrada positiva del comparador C1

La funcionalidad de los pines presentados anteriormente es muy útil puesto que permite un mejor aprovechamiento de los recursos del microcontrolador sin afectar a su funcionamiento. Estas funciones de los pines no se pueden utilizar simultáneamente, sin embargo se pueden cambiar en cualquier instante durante el funcionamiento.

al-mundo-de-los-microcontroladores-chapter-03-fig3-4

al-mundo-de-los-microcontroladores-chapter-03-fig3-5

al-mundo-de-los-microcontroladores-chapter-03-fig3-6

UNIDAD CENTRAL DE PROCESAMIENTO (CPU)

Con el propósito de explicar en forma clara y concisa, sin describir profundamente el funcionamiento de la CPU, vamos a hacer constar que la CPU está fabricada con la tecnología RISC ya que esto es un factor importante al decidir qué microcontrolador utilizar.

RISC es un acrónimo derivado del inglés Reduced Instruction Set Computer, lo que proporciona al PIC16F887 dos grandes ventajas:

  • La CPU cuenta con sólo 35 instrucciones simples. Cabe decir que para poder programar otros microcontroladores en lenguaje ensamblador es necesario saber más de 200 instrucciones
  • El tiempo de ejecución es igual para casi todas las instrucciones y tarda 4 ciclos de reloj. La frecuencia del oscilador se estabiliza por un cristal de cuarzo. Las instrucciones de salto y de ramificación tardan ocho ciclos de reloj en ejecutarse. Esto significa que si la velocidad de operación del microcontrolador es 20 MHz, el tiempo de ejecución de cada instrucción será 200nS, o sea, ¡el programa ejecutará 5millones de instrucciones por segundo!
al-mundo-de-los-microcontroladores-chapter-03-fig3-7

MEMORIA

El PIC16F887 tiene tres tipos de memoria: ROM, RAM y EEPROM. Como cada una tiene las funciones, características y organización específicas, vamos a presentarlas por separado.

MEMORIA ROM

La memoria ROM se utiliza para guardar permanente el programa que se está ejecutando. Es la razón por la que es frecuentemente llamada “memoria de programa”. El PIC16F887 tiene 8Kb de memoria ROM (en total 8192 localidades). Como la memoria ROM está fabricada con tecnología FLASH, su contenido se puede cambiar al proporcionarle un voltaje de programación especial (13V).

No obstante, no es necesario explicarlo en detalles puesto que se realiza automáticamente por un programa especial en la PC y un simple dispositivo electrónico denominado programador.

al-mundo-de-los-microcontroladores-chapter-03-fig3-8

Memoria EEPROM

Similar a la memoria de programa, el contenido de memoria EEPROM está permanentemente guardado al apagar la fuente de alimentación. Sin embargo, a diferencia de la ROM, el contenido de la EEPROM se puede cambiar durante el funcionamiento del microcontrolador. Es la razón por la que esta memoria (256 localidades) es perfecta para guardar permanentemente algunos resultados creados y utilizados durante la ejecución del programa.

Memoria RAM

Es la tercera y la más compleja parte de la memoria del microcontrolador. En este caso consiste en dos partes: en registros de propósito general y en los registros de funciones especiales (SFR). Todos estos registros se dividen en cuatro bancos de memoria de los que vamos a hablar más tarde en este capítulo.

A unque los dos grupos de registros se ponen a cero al apagar la fuente de alimentación, además están fabricados de la misma forma y se comportan de la manera similar, sus funciones no tienen muchas cosas en común.

al-mundo-de-los-microcontroladores-chapter-03-fig3-9

REGISTROS DE PROPÓSITO GENERAL

Los registros de propósito general se utilizan para almacenar los datos temporales y los resultados creados durante el funcionamiento. Por ejemplo, si el programa realiza el conteo (de los productos en una cadena de montaje), es necesario tener un registro que representa lo que en la vida cotidiana llamamos “suma”. Como el microcontrolador no es nada creativo, es necesario especificar la dirección de un registro de propósito general y asignarle esa función. Se debe crear un programa simple para incrementar el valor de este registro por 1, después de que cada producto haya pasado por el sensor.

Ahora el microcontrolador puede ejecutar el programa ya que sabe qué es y dónde está la suma que se va a incrementar. De manera similar, a cada variable de programa se le debe pre-asignar alguno de los registros de propósito general.

Mas información

Para saber mas informacion del PIC te dejo los siguientes enlaces:

Sobre el proyecto

Este proyecto lo inicie para poder ayudar a las personas a utilizar el PIC16f887 ya que no hay mucha informacion en internet y mucho menos en español, espero les sea de ayuda, si tienen alguna duda o sugerencia pueden contactarme a mi cuenta de Telegram.