Microcontrolador PIC16F877: Arquitectura, Memoria y Registros Especiales

Enviado por Chuletator online y clasificado en Electricidad y Electrónica

Escrito el en español con un tamaño de 6,17 KB

Microcontrolador PIC16F877: Características Fundamentales

Especificaciones Generales

  • Memoria de Programa: Flash.
  • Fabricante: Microchip Technology. Utiliza tecnología CMOS (consumo bajo y estático).
  • Encapsulado: DIP (Dual In-Line Pin) de 40 pines. También disponible en montaje superficial.
  • Variantes de Frecuencia de Cristal:
    • PIC16F877-04: Cristal de hasta 4 MHz.
    • PIC16F877-20: Cristal de hasta 20 MHz.
    • PIC16F877-I: Versión industrial, cristal de hasta 20 MHz.
  • Pines de Entrada/Salida (E/S): 33.

Puertos y Capacidad de Corriente

El PIC16F877 dispone de los siguientes puertos:

  • Puerto A: 6 pines (incluye canales ADC).
  • Puerto B: 8 pines (incluye el pin B0 para interrupción externa - INT).
  • Puerto C: 8 pines (incluye pines para comunicación serial Rx, Tx).
  • Puerto D: 8 pines.
  • Puerto E: 3 pines (incluye canales ADC).

La configuración de los pines se establece como: 0 = SALIDA, 1 = ENTRADA.

Capacidad Máxima de Corriente

La máxima capacidad de corriente por pin es de 25 mA. La capacidad máxima por puerto, sin importar si opera en modo “sumidero – sink” o “fuente – source”, es:

  • Puerto A: 150 mA.
  • Puertos B, C, D: 200 mA.

Consumo de Potencia

El consumo depende del voltaje de alimentación y de la carga conectada a cada pin. Por ejemplo, para un oscilador de 4 MHz, el consumo es de 2 mA aproximadamente. En modo sleep, el consumo puede reducirse a 40 µA.

Oscilador Externo

El microcontrolador soporta varios modos de oscilación externa:

  1. RC: Utiliza una resistencia y un condensador.
  2. XT: Cristal de frecuencia estándar (de 1 a 4 MHz).
  3. HS: Cristal de alta frecuencia (de 10 a 20 MHz).
  4. LP: Cristal de baja frecuencia y bajo consumo de potencia.

Arquitectura y Estructura de Memoria

Arquitectura Harvard

El PIC16F877 se basa en la arquitectura Harvard, la cual permite que el programa y los datos se manejen con buses y memorias separadas. Esto posibilita que las instrucciones y los datos posean longitudes diferentes. Esta estructura también permite la superposición de los ciclos de búsqueda y ejecución de las instrucciones (pipelining), lo que se traduce en una mayor velocidad del microcontrolador.

Memoria de Datos EEPROM

El PIC16F877 incluye un bloque especial de memoria de datos del tipo EEPROM, con una capacidad de 256 bytes, además de los bloques principales de memoria de programa y de datos (RAM).

Memoria de Programa (FLASH)

  • Es una memoria de 8K de longitud.
  • Los datos en cada posición son de 14 bits.
  • La memoria de programa está dividida en cuatro bancos o páginas de 2K cada uno:
    • Banco 1: 0000h a 07FFh.
    • Banco 2: 0800h a 0FFFh.
    • Banco 3: 1000h a 17FFh.
    • Banco 4: 1800h a 1FFFh.

Pila (Stack)

El PIC16F877 tiene una pila de 8 niveles, lo que significa que se pueden anidar hasta 8 llamados a subrutina sin generar problemas de desbordamiento.

Memoria de Datos (RAM)

El PIC16F877 posee cuatro bancos de memoria RAM, cada banco con 128 bytes. Esta memoria se divide en:

  • Registros de Propósito Especial (SFR): Los primeros 32 bytes (hasta 1Fh) de cada banco. Cumplen un propósito específico en el control y configuración del microcontrolador.
  • Registros de Uso General (GPR): Los 96 bytes restantes. Se utilizan para guardar datos temporales de la tarea en ejecución.

Registros Especiales y Funcionalidad

INDF (00h): Registro para Direccionamiento Indirecto de Datos

Este registro no está disponible físicamente. Utiliza el contenido del registro FSR y los bits RP0 y RP1 del registro STATUS para seleccionar indirectamente la memoria de datos. La instrucción que lo acompañe determinará la operación a realizar con el registro señalado.

TMR0 (01h): Temporizador/Contador de 8 bits

Este es un contador que puede ser incrementado por una señal externa aplicada al pin RA4/TOCKI o por una señal interna proveniente del reloj de instrucciones del microcontrolador. La rata de incremento del registro se puede determinar por medio de un preescalador o divisor de frecuencia, localizado en el registro OPTION. Una mejora clave es la generación de interrupción cuando se rebasa la cuenta (el paso de 0FFh a 00h).

PCL (02h): Contador de Programa

Se utiliza para direccionar las palabras de 14 bits del programa almacenado en la memoria ROM. Este contador de programas es de 13 bits de ancho. Sobre el byte bajo, se puede escribir o leer directamente, mientras que el byte alto se maneja mediante el registro PCLATH (0Ah). Ante una condición de reset, el microcontrolador inicia el contador de programa con todos sus bits en “cero”. Durante la ejecución normal, y dado que todas las instrucciones ocupan solo una posición de memoria, el contador se incrementa en uno con cada instrucción, a menos que se trate de alguna instrucción de salto.

Módulo Convertidor Análogo a Digital (ADC)

Este módulo permite la conversión de una señal de entrada análoga a su correspondiente valor numérico de 10 bits.

Entradas relacionadas: