26
Registros de la CPU. Registro PC.- Registro de 13 bits que siempre apunta a la siguiente instrucción a ejecutarse. Registro de Instrucción.- Registro de 14 bits. Todas las instrucciones se colocan en él para ser decodificadas por la CPU antes de ejecutarlas. PIC16F877A Pag 7

PIC16F877A - PARTE 1.pdf

Embed Size (px)

Citation preview

Page 1: PIC16F877A - PARTE 1.pdf

Registros  de  la  CPU.  

•  Registro PC.- Registro de 13 bits que siempre apunta a la siguiente instrucción a ejecutarse.

•  Registro de Instrucción.- Registro de 14 bits. Todas las instrucciones se colocan en él para ser decodificadas por la CPU antes de ejecutarlas.

PIC16F877A Pag 7

Page 2: PIC16F877A - PARTE 1.pdf

Organización de la memoria

•  8k x 14 words Memoria de programa FLASH de

•  368 x 8 bytes Memoria de datos RAM •  256 x 8 bytes Memoria de datos

EEPROM

Page 3: PIC16F877A - PARTE 1.pdf

Memoria  de  Programa    

•  La memoria de programa FLASH está subdividido en 4 páginas de 2K x 14.

•  El vector de reset se encuentra en la dirección 0000h

•  El vector de interrupción de encuentra en la dirección 0004h. Por lo que en la memoria de programa se encuentran reservadas las primeras 5 localidades de memoria y se debe de empezar a programar el PIC a partir de la dirección 0005h.

Page 4: PIC16F877A - PARTE 1.pdf

MAPA DE MEMORIA DE PROGRAMA

Page 5: PIC16F877A - PARTE 1.pdf

Manejo  del  Contador  del  Programa  (PC)  

•  El registro contador del programa (PC) especifica la dirección de la instrucción que la CPU buscará para ejecutarla. El PC se encuentra separado en dos partes:

El registro PCH <12:8> no se puede leer o escribir directamente todas sus actualizaciones deben ser hechas a

través del registro PCLATH.

Page 6: PIC16F877A - PARTE 1.pdf

Paginación

•  Para saltar entre una página y otra, los bits más significativos del PC deberán ser modificados. Debido a que las instrucciones GOTO y CALL sólo pueden direccionar un bloque de 2K (pues usan una dirección de 11 bits) deben existir otros dos bits que completen los 13 bits del PC para moverse sobre los 8K de memoria de programa.

•  Estos dos bits extra se encuentran en un registro de función especial denominado PCLATH (Program Counter Latch High) en sus bits PCLATH<4:3>.

•  Por esto antes de un GOTO o un CALL hay que asegurarse que estos bits apunten a la página deseada.

Si las instrucciones se ejecutan secuencialmente el PC cruza libremente los límites de página sin necesidad de que el usuario

escriba en el PCLATH

Page 7: PIC16F877A - PARTE 1.pdf

Memoria  de  Stack  

•  La memoria de stack es una área de memoria completamente separada de la memoria de datos y la memoria de programa. El stack consta de 8 niveles de 13 bits cada uno. Esta memoria es usada por la CPU para almacenar las direcciones de retorno de subrutinas. El apuntador de stack no puede ser leído ni escrito.

Page 8: PIC16F877A - PARTE 1.pdf

•  Cuando se ejecuta una instrucción CALL o es reconocida una interrupción el PC es guardado en el stack y el apuntador de stack es incrementado en 1 para apuntar a la siguiente posición vacía.

Page 9: PIC16F877A - PARTE 1.pdf

La  Memoria  de  Datos  

Registros de Propósito Especial (SFR)

Registro de Propósito General (GPR)

La memoria de datos está particionada dentro de 4 bancos de 128 bytes c/u

Page 10: PIC16F877A - PARTE 1.pdf

Registros de Propósito General

•  Los registros de propósito general pueden ser accesados directa o indirectamente

•  Los GPR son memoria RAM de uso general

Page 11: PIC16F877A - PARTE 1.pdf

Registros  de  Funciones  Especiales  

Los registros de funciones especiales son registros usados por el CPU y módulos periféricos para controlar la operación deseada del dispositivo. Cada uno de los registros de propósito especial, está asociado a un dispositivo interno del μC.

Page 12: PIC16F877A - PARTE 1.pdf

Map

a de

A

rchi

vo d

e R

egis

tros

La memoria de datos STATUS STATUS STATUS STATUS

PORTB PORTB

Page 13: PIC16F877A - PARTE 1.pdf

RE

GIS

TRO

STA

TUS

Page 14: PIC16F877A - PARTE 1.pdf

Direccionamiento de la memoria de datos

Direccionamiento directo

Para acceder a una posición de memoria mediante direccionamiento directo, la CPU simplemente usa la dirección indicada en los 7 bits menos significativos del código de operación y la selección de banco de los bits RP1:RP0 del registro STATUS

Page 15: PIC16F877A - PARTE 1.pdf

Direccionamiento indirecto Permite acceder una localidad de memoria

de datos usando una dirección de memoria variable por medio del registro INDF (00H) a diferencia del direccionamiento directo, en que la dirección es fija.

El registro FSR (04H) es un puntero

seleccionador de registros.

Page 16: PIC16F877A - PARTE 1.pdf
Page 17: PIC16F877A - PARTE 1.pdf

Ejemplo  de  Direccionamiento  Indirecto  

•  El Registro 05 contiene el valor 10h •  El Registro 06 contiene el valor 0Ah •  Se Carga el valor 05 en el registro FSR (FSR = 05) •  La lectura del registro INDF retornará el valor 10h •  Se Incrementa el valor del registro FSR en 1 (FSR = 06) •  La lectura del registro INDF retornará el valor 0Ah.

Page 18: PIC16F877A - PARTE 1.pdf

OSCILADORES

•  Los uC, disponen de las siguientes opciones para el oscilador principal: – Oscilador de cristal – Oscilador RC – Oscilador externo El tipo de oscilador a utilizar se selecciona

mediante los bits de configuración del PIC. El PIC puede ser operado en cuatro diferentes

modos de operación.

Page 19: PIC16F877A - PARTE 1.pdf

•  LP. Low Power Crystal, se selecciona en aplicaciones de baja potencia, en el rango de 32kHz a 200KHz

•  XT. Crystal/Resonator, se ajusta a aplicaciones de frecuencias medias de 200 kHz a 4MHz)

•  HS. High Speed Crystal/Resonator , usado en aplicaciones de alta frecuencia, entre 4MHz a 20MHz)

•  RC. Resistor/Capacitor, red RC externa, esta es una opción de bajo costo, apropiada cuando la precisión y la estabilidad en el valor de la frecuencia no son esenciales, hasta 4MHz

Page 20: PIC16F877A - PARTE 1.pdf

OSCILADOR DE CRISTAL

Page 21: PIC16F877A - PARTE 1.pdf

OSCILADOR RC

n  En aplicaciones donde la precisión a la hora de medir tiempo o temporizar no tiene porqué ser muy elevada, la opción RC es una solución válida y de bajo coste. En este caso se conectan externamente una resistencia y un condensador tal y como se indica en la figura.

n  La frecuencia de oscilación depende de la tensión de alimentación VDD, del valor de la resistencia REXT, del valor del condensador CEXT.

Page 22: PIC16F877A - PARTE 1.pdf

OSCILADOR EXTERNO

La tercera opción es utilizar un oscilador externo como fuente de reloj

Page 23: PIC16F877A - PARTE 1.pdf

Bits de configuración

•  Permiten al usuario programar ciertas características del PIC para adaptarlo mejor a las necesidades de una aplicación.

•  No son accesibles durante el funcionamiento normal del uC, es decir una vez programados no pueden ser modificados por el programa de la aplicación

•  Los bits de configuración se agrupan en una palabra de configuración que ocupa la dirección 2007h de la memoria del programa.

Page 24: PIC16F877A - PARTE 1.pdf

Características que se programan en los bits de configuración:

– Tipo de oscilador – Habilitación o no del perro guardián – Protección de la memoria del programa – Protección de la memoria EEPROM de datos – Características de reset – Alimentación del dispositivo, etc.

Page 25: PIC16F877A - PARTE 1.pdf
Page 26: PIC16F877A - PARTE 1.pdf