Microprosedador

11

Click here to load reader

Transcript of Microprosedador

Page 1: Microprosedador

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

Page 2: Microprosedador

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.

Page 3: Microprosedador

• 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.

Page 4: Microprosedador

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

Page 5: Microprosedador

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

Page 6: Microprosedador

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

Page 7: Microprosedador

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.

Page 8: Microprosedador

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.