El microcontrolador PIC16F877 consta de un procesador, memoria de programa y memoria de datos, periféricos de entrada / salida, convertidores de AD y DA, módulos de transmisión y recepción de datos.
La arquitectura del microcontrolador es cerrada debido a que no se puede tener ningún contacto directo con el procesador interno del microcontrolador, en cambio en un microprocesador la arquitectura es abierta, debido a que podemos agregar mas dispositivos en hardware dependiendo de las necesidades.
Los microcontroladores PIC16F877 cuentan con un set de instrucciones reducido en cambio la mayoría de los microprocesadores tienen gran cantidad de instrucciones. La mayoría de los microcontroladores posee una arquitectura Harvard mientras los microprocesadores poseen una arquitectura Von Neuman.
Los microcontroladores se aplicación en las industrias para resolver problemas específicos por ejemplo: los electrodomésticos, en la industria automotriz, en el procesamiento de imagen y video entre otros.
Cracterísticas PIC 16F877A
- Procesador de arquitectura RISC avanzada
- Juego de 35 instrucciones con 14 bits de longitud.
- Todas las instrucciones de un solo ciclo, excepto para el programa ramas, que son de dos tiempos
- Frecuencia de 20 Mhz
- Hasta 8K palabras de 14 bits para la memoria de código, tipo flash.
- Hasta 368 bytes de memoria de datos RAM
- Hasta 256 bytes de memoria de datos EEPROM
- Hasta 14 fuentes de interrupción internas y externas
- Pila con 8 niveles
- Código de protección programable
- Modo Sleep de bajo consumo
- Programación serie en circuito con 2 patitas
- Voltaje de alimentación comprendido entre 2 y 5.5 voltios
- Bajo consumo (menos de 2 mA a 5 V y 5 Mhz)
- Hasta 256 x 8 bytes de memoria EEPROM de datos
- Perro guardián (WDT)
- Modos de direccionamiento directo, indirecto y relativo
ARQUITECTURA INTERNA DEL PIC 16F877A
El PIC16F877A es un procesador tipo RICS que es un procesador de instrucciones reducidas, por su pequeño número de instrucciones, además casi todas se realiza en la misma cantidad de tiempo, posee unidades que trabajan en paralelo conectadas por pipes o tuberias. Este procesador emplea una arquitectura Harvard lo que significa que trabaja las zonas de memoria de programa y datos en forma separada.
La memoria del Programa en la parte superior izquierda con 8K posiciones por 14 bits, también esta la memoria de datos (RAM) de 368 posiciones por 8 bits. La memoria EEPROM 256 posiciones x 8 bits. El procesador que está formado por la ALU (unidad aritmetica lógica) el registro de trabajo W. Tambien están los periféricos I/O Port A, B, C, D, E el TMR0 (temporizador contador de eventos), TMR1 y TMR2 entre otros. También observamos un registro de instrucción que se carga cada vez que el ALU solicita una nueva instrucción a procesar.
La memoria del Programa en la parte superior izquierda con 8K posiciones por 14 bits, también esta la memoria de datos (RAM) de 368 posiciones por 8 bits. La memoria EEPROM 256 posiciones x 8 bits. El procesador que está formado por la ALU (unidad aritmetica lógica) el registro de trabajo W. Tambien están los periféricos I/O Port A, B, C, D, E el TMR0 (temporizador contador de eventos), TMR1 y TMR2 entre otros. También observamos un registro de instrucción que se carga cada vez que el ALU solicita una nueva instrucción a procesar.
En la parte intermedia encontramos el Status Reg. que es el registro de estado encargado de anotar el estado actual del sistema, cada vez que se ejecuta una instrucción se llevan a cabo cambios dentro del PIC 16F877A como desborde, acarreo, etc. Cada uno de esos eventos está asociado a un bit de este registro. Existe el Program Counter o contador de programa este registro indica la dirección de la instrucción a ejecutar. El registro en cuestión no es necesariamente secuencial, esto es no se incrementa necesariamente de uno en uno ya que puede darse el caso en el que salte dependiendo si hay una instrucción de bifurcación de por medio o puede haber alguna instrucción de llamada a función y/o procedimiento. También tenemos el bloque de la pila, cuya función es ser un buffer temporal en el que se guarda el contador de programa cada vez que se suscita una llamada a un procedimiento y/o función (incluyendo interrupciones). Por tanto el nivel de anidamineto es de hasta 8 llamadas.
ORGANIZACION DE MEMORIA DEL PIC 16F877A
La memoria del PIC 16F877A se divide en memoria de datos y programa. La de datos a su vez se divide en:
• SFR (Registros de propósito especial) :Son registros que ayudan a configurar el hardware interno asi como sirven para escribir o leer valores de los diferentes componente que constituyen el PIC 16F877A. Por ejemplo con el registro “TRISB” podemos configurar el modo de trabajo de las líneas del puerto B
• GFR (Registros de propósito general): Estos son posiciones de memoria que podemos usar para almacenar valores que emplean nuestros programa.
La memoria de datos del PIC 16F877A se divide en cuatro bancos. Las posiciones bajas siempre están reservadas para los SFR en tanto que las altas para los GFR.
El PIC 16F877A también cuenta con una memoria EEPROM, con 256 posiciones, para acceder a la memoria no podemos leer o escribir directamente es decir colocar la dirección y obtener o dejar el valor. Para eso haremos uso de registros adicionales de tal manera que la usaremos indirectamente.
INSTRUCCIONES PIC 16F877A
Este PIC 16F877A consta de 35 instrucciones con las cuales las podemos dividir en tres grupos
Instrucciones orientadas a byte : Estas reservan los 7 bits de menor peso donde se indica la dirección del registro que será operado. Realizada la operación usamos el bit d para indicar donde será almacenado el resultado.
Instrucciones orientas a bit: Estas se encargan escribir o leer una posición (bit) dentro de un registro. Una los 7 bits inferiores son destinados para indicar la dirección de registro que vamos a operar y los siguientes tres bit especifican el bit dentro del registro.