1. REPUBLICA BOLIVARIANA DE VENEZUELA
MINISTERIO DE EDUCACION SUPERIOR
INSTITUTO UNIVERSITARIO DE TECNOLOGIA
“ANTONIO JOSE DE SUCRE”
EXTENSIÓN MARACAIBO
ARQUITECTURA Y OPERACIÓN DEL
PIC16F877
Autor: Br. JESUS BRACHO
Maracaíbo, Noviembre de 2016
2. Microcontrolador PIC16F877
28/40 Pin 8-Bit CMOS FLASH.
El PIC16F877 es un microcontrolador con memoria de programa tipo FLASH, lo
que representa gran facilidad en el desarrollo de prototipos y en su aprendizaje ya
que no se requiere borrarlo con luz ultravioleta como las versiones EPROM, sino
que permite reprogramarlo nuevamente sin ser borrado con anterioridad.
El PIC16F877 es un microcontrolador de Microchip Technology fabricado en
tecnología CMOS, su consumo de potencia es muy bajo y además es
completamente estático, esto quiere decir que el reloj puede detenerse y los datos
de la memoria no se pierden.
Características principales
• CPU RISC de alta performance
• Set de35 instrucciones
• Todas las instrucciones son de un ciclo
salvo aquellas que incluyen saltos que son
de 2 ciclos.
• Velocidad de Trabajo:
DC - 20 MHz clock input DC - 200 ns ciclo de instrucción
• Hasta 8K x 14 words de FLASH Program Memory,
Hasta 368 x 8 bytes de Data Memory (RAM)
Hasta 256 x 8 bytes de EEPROM Data
Memory
• Manejo de Interrupciones (hasta 14 fuentes)
• Stack de hardware de 8 niveles
• Modo de direccionamiento directo, indirecto y relativo.
• Power-on Reset (POR)
• Power-up Timer (PWRT) y Oscillator Startup
Timer (OST)
• Watchdog Timer (WDT) con el reloj RC interno para mejor seguridad.
• Protección de código programable.
3. • Programación serial via 2 pines, In-Circuit Serial Programming____ (ICSP)
• In-Circuit Debugging via 2 pines
• Amplio rango de voltaje de trabajo: 2.0V a 5.5V
Características periféricas
• Timer0: 8-bit timer/counter con 8-bit prescaler
• Timer1: 16-bit timer/counter con prescaler,
que puede ser incrementado durante el
modo SLEEP via reloj externo.
• Timer2: 8-bit timer/counter con registro de
período de 8-bit, prescaler y postscaler
• Dos módulos Capture, Compare, PWM
- Capture es de 16-bit, max. resolución: 12.5ns
- Compare es de 16-bit, max. resolución: 200 ns
- PWM max. resolución: 10-bit
• Convertidor Analógico a Digital de 10-bit
multi-channel
• Synchronous Serial Port (SSP) con
SPI (Master mode) e I2C (Master/Slave)
• Universal Synchronous Asynchronous
Receiver Transmitter (USART/SCI) con
detección de direcciones de 9-bit
• Parallel Slave Port (PSP) de 8-bits de
ancho, con controles externos de RD, WR y
CS (solo 40/44-pin)
• Brown-out detection circuitry para Brown-out
Reset (BOR)
Organización de la memoria
Existen tres bloques de memoria dentro de un PIC16F87X. La memoria de
programa y la memoria de datos tienen buses separadas por lo que es posible el
acceso a las mismas en forma concurrente. El tercer bloque de memoria es la
memoria de datos EEPROM.
4. El dispositivo PIC16F87X tiene un program counter de 13-bit capaz de direccionar
8K x 14 direcciones de memoria. Los dispositivos
PIC16F877/876 tienen 8K x 14 palabras de FLASH program memory y los
dispositivos PIC16F873/874 tienen 4K x 14.
El vector de RESET (por donde comienza a ejecutar el PIC) esta en la dirección
0000h y el vector de interrupciones se encuentra en la
dirección 0004h.
Organización de la memoria de datos
La memoria de datos está particionada en múltiples bancos que contienen los
registros de propósito general (General Purpose Registers) y los registros de
funciones especiales (Special Function Registers).
Registros de funciones especiales
Los registros de funciones especiales son usados por la CPU y los módulos
periféricos para controlar las operaciones del dispositivo. Los registros de
funciones especiales pueden ser
clasificados en dos conjuntos: core (CPU) y periféricos.
Resumen del Set de instrucciones
Cada instrucción del PIC16F87X es una palabra de 14-bit, dividida en un
OPCODE quien
especifica la instrucción y uno o más operandos. El set de instrucciones es
altamente
ortogonal y se encuentra agrupado en tres categorías básicas:
_ Operaciones orientadas a Byte (Byte-oriented)
_ Operaciones orientadas a bit (Bit-oriented)
_ Operaciones Literales y control.
Para las instrucciones Byte-oriented, ‘f’ representa un designador de registro de
archivo y ‘d’
representa el designador de destino. El designador de archivo especifica que
registro debe
ser usado por la instrucción. El designador de destino especifica donde colocar el
resultado
5. de la operación. Si ‘d’ es cero, el resultado se coloca en el registro de trabajo W. Si
‘d’ es uno,
el resultado se coloca el registro de archivo especificado en la instrucción.
Para las instrucciones Bit-oriented, ‘b’ representa un designador de bit quien
selecciona el
número de bit afectado por la operación, mientras ‘f’ representa la dirección del
archivo en
donde se encuentra el bit.
Para las operaciones literales y control, ‘k’
representa un valor constante o literal de ocho o nueve
La Familia del PIC16F877
El microcontrolador PIC16F877 de Microchip pertenece a una gran familia de
microcontroladores de 8 bits (bus de datos) que tienen las siguientes
características generales que los distinguen de otras familias:
- Arquitectura Harvard
- Tecnología RISC
- Tecnología CMOS
Estas características se conjugan para lograr un dispositivo altamente eficiente en
el uso de la memoria de datos y programa y por lo tanto en la velocidad de
ejecución.
Variantes principales
Los microcontroladores que produce Microchip cubren una amplio rango de
dispositivos cuyas características pueden variar como sigue:
- Empaquetado (desde 8 patitas hasta 68 patitas)
- Tecnología de la memoria incluída (EPROM, ROM, Flash)
- Voltajes de operación (desde 2.5 v. Hasta 6v)
- Frecuencia de operación (Hasta 20 Mhz)
Empaquetados
Aunque cada empaquetado tiene variantes, especialmente en lo relativo a las
dimensiones del espesor del paquete, en general se pueden encontrar paquetes
6. tipo PDIP (Plastic Dual In Line Package), PLCC (Plastic Leaded Chip
Carrier)
Descripción de la CPU
La CPU es la responsable de la interpretación y ejecución de la información
(instrucciones) guardada en la memoria de programa. Muchas de estas
instrucciones operan sobre la memoria de datos. Para operar sobre la memoria de
datos además, si se van a realizar operaciones lógicas o aritméticas, requieren
usar la Unidad de Lógica y Aritmética (ALU). La ALU controla los bits de estado
(Registro STATUS), los bits de este registro se alteran dependiendo del resultado
de algunas instrucciones.
Reset
En los microcontroladores se requiere un pin de reset para reiniciar el
funcionamiento
del sistema cuando sea necesario, ya sea por una falla que se presente o porque
así se
haya diseñado el sistema. El pin de reset en los PIC es llamado MCLR (master
clear).
Existen varias formas de resetear o reiniciar el sistema:
• Al encendido (Power On Reset)
• Pulso en el pin MCLR durante operación normal
• Pulso en el pin MCLR durante el modo de bajo consumo (modo sleep)
• El rebase del conteo del circuito de vigilancia (watchdog) durante operación
normal
• El rebase del conteo del circuito de vigilancia (watchdog) durante el modo de
bajo
consumo (sleep)
El reset al encendido se consigue gracias a dos temporizadores. El primero de
ellos es el
OST (Oscillator Start-Up Timer: Temporizador de encendido del oscilador),
orientado a
7. mantener el microcontrolador en reset hasta que el oscilador del cristal es estable.
El
segundo es el PWRT (Power-Up Timer: Temporizador de encendido), que provee
un
retardo fijo de 72 ms (nominal) en el encendido únicamente, diseñado para
mantener el
dispositivo en reset mientras la fuente se estabiliza. Para utilizar estos
temporizadores,
sólo basta con conectar el pin MCLR a la fuente de alimentación, evitándose
utilizar las
tradicionales redes de resistencias externas en el pin de reset.
Arquitectura interna del microcontrolador
Este término se refiere a los bloques funcionales internos que conforman el
microcontrolador y la forma en que están conectados, por ejemplo la memoria
FLASH
(de programa), la memoria RAM (de datos), los puertos, la lógica de control que
permite que todo el conjunto funcione, etc.
Memoria de programa (FLASH)
Es una memoria de 8K de longitud con datos de 14 bits en cada posición. Como
es
del tipo FLASH se puede programar y borrar eléctricamente, lo que facilita el
desarrollo
de los programas y la experimentación. En ella se graba o almacena el programa
o
códigos que el microcontrolador debe ejecutar. En la figura 3.8 se muestra el
mapa de
la memoria de programa.
La memoria de programa está dividida en cuatro bancos o páginas de 2K cada
uno.
8. El primero va de la posición de memoria 0000h a la 07FFh, el segundo va de la
0800h
a la 0FFFh, el tercero de la 1000h a la 17FFh y el cuarto de la 1800h a la 1FFFh.
Vector de reset. Cuando ocurre un reset al microcontrolador, el contador de
programa
se pone en ceros (0000H). Por esta razón, en la primera dirección del programa se
debe
escribir todo lo relacionado con la iniciación del mismo.
Vector de interrupción. Cuando el microcontrolador recibe una señal de
interrupción, el
contador de programa apunta a la dirección 04H de la memoria de programa, por
eso, allí se
debe escribir toda la programación necesaria para atender dicha interrupción.
Pila (Stack)
Estos registros no forman parte de ningún banco de memoria y no permiten el
acceso
por parte del usuario. Se usan para guardar el valor del contador de programa
cuando se hace un llamado a una subrutina o cuando se atiende una interrupción;
luego, cuando el micro regresa a seguir ejecutando su tarea normal, el contador
de
programa recupera su valor leyéndolo nuevamente desde la pila.