Descripción del PIC16F877A "1"

Familia de PIC16F8XX

  • Los PIC16F8XX forman una subfamilia de microcontroladores PIC (PeripheralInterface Controller) de gama media de 8 bits, fabricados por Microchip Technology Inc.


  1. PIC16F870
  2. PIC16F871
  3. PIC16F872
  4. PIC16F873A
  5. PIC16F874A
  6. PIC16F876A
  7. PIC16F877A



  • La"A"final de los modelos PIC16F873A, PIC16F874A, PIC16F876A y PIC16F877A indica que estos modelos cuentan con módulos de comparación analógicos.
  • El hecho de que se clasifiquen como microcontroladores (MCU) de 8 bits hace referencia a la longitud de los datos que manejan las instrucciones, y que se corresponde con el tamaño del bus de datos y el de los registros de la CPU. A continuación vemos una tabla con los tamaños de memoria que tienen estos PIC:
  • CPU de arquitectura RISC (Reduced Instruction Set Computer). Conjunto de 35 instrucciones.
  • Frecuencia de reloj de hasta 20MHz (ciclo de instrucción de 200ns). Todas las instrucciones se ejecutan en un único ciclo de instrucción, excepto las de salto.
  • Hasta 8K x 14 bits de Memoria de Programa FLASH.
  • Hasta 368 x 8 bits de Memoria de Datos tipo RAM.
  • Hasta 256 x 8 bits de Memoria de Datos tipo EEPROM.
  • Hasta 15 fuentes de Interrupción posibles.
  • 8 niveles de profundidad en la pila o stack.
  • Modo de bajo consumo (Sleep).
  • Tipo de oscilador seleccionable (RC, HS, XT, LP y externo).
  • Rango de voltaje de operación desde 2,0V a 5,5V.
  • Conversor Analógico/Digital de 10 bits multicanal.
  • 3 Temporizadores.
  • Watchdog Timero Perro Guardián.
  • 2 módulos de captura/comparación/PWM.
  • Comunicaciones por interfaz USART(Universal Synchronous Asynchronous Receiver Transmitter).
  • Puerto Paralelo Esclavo de 8 bits(PSP).
  • Puerto Serie Síncrono (SSP) con SPI e I²C.



  1. Puerto A de 6 bits
  2. Puerto B de 8 bits
  3. Puerto C de 8 bits
  4. Puerto D de 8 bits
  5. Puerto E de 3 bits












  • Registro W: El registro de trabajo W (Working Register) es un registro relevante especial de 8 bits que participa en la mayoría de instrucciones. A diferencia de los SFR (Special Function Register), se encuentra dentro de la misma CPU, y puede ser accedido tanto para lectura como para escritura. 

  1. A diferencia de los microprocesadores, el resultado del ALU puede guardarse en el registro W o en otro registro. Esto se indica mediante la propia instrucción. 
  2. En las operaciones que realiza el ALU con dos operandos, siempre se tiene a W (registro de trabajo) como uno de ellos.
  3. En las operaciones de un solo operando se tiene al W o a cualquier otro registro.


  • Contador de Programa PC: El PC es un registro que indica la siguiente instrucción que debe ejecutar el CPU. Al arrancar microcontrolador, el PC vale 0x0000 y se va incrementando automáticamente, con lo que el PIC debería ejecutar una a una todas las instrucciones del programa. En los PIC´s de gama media el PC es de 13 bits, direccionando un máximo de 8k posiciones de memoria de programa.
  • Registro Pila o STACK: Es una zona de memoria que almacena temporalmente el valor del PC (Program Counter) cuando el programa llama a una subrutina o cuando salta al Vector de Interrupción, en una interrupción.
  1. En los PIC16F877A la Pila tiene únicamente 8 niveles y se administra a nivel hardware, esto es, no hay instrucciones para acceder a ella directamente. Su operación es enteramente en background. Se debe tener cuidado de no desbordar la pila ya que no se dispone de ningún flag (identificador o bandera) que indique un desbordamiento de la Pila.
  2. La única manera de cargar la Pila es a través de la instrucción CALL (llamada a subrutina) o por una interrupción que hace que con cada una de ellas, se cargue el contenido del PC en el valor superior de la Pila. Para recuperar el contenido de la Pila en el PC hay que ejecutar una instrucción RETURN, RETLW o RETFIE (vuelta del programa de atención a una subrutina o interrupción).
  • Registros TRISx: Después de un reset todos los puertos son inicializados con sus pines configurados como entradas. Cualquier puerto de PIC16F877A puede ser configurado como entrada o salida bit por bit. Esto se hace mediante los registros TRISx. Cada puerto tiene su correspondiente registro TRIS:

  1. PORTA - TRISA
  2. PORTB - TRISB
  3. PORTC - TRISC
  4. PORTD - TRISD
  5. PORTE - TRISE


No hay comentarios:

Publicar un comentario