Organización de la memoria
Organización de la memoria de programa
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).
El bit RP1 (STATUS <6>) y RP0 (STATUS<5>) son los bits de selección de banco. Cada banco se extiende hasta 7Fh (128 bytes). Los lugares más bajos de cada banco están reservados para registros de funciones
especiales. Debajo de estos se encuentran los registros de propósito general, implementados como RAM estática. Todos los bancos implementados contenten registros de funciones especiales. Algunos de los registros de funciones especiales que son accedidos frecuentemente desde un banco pueden ser espejados en otro banco para reducir el código y lograr un acceso más rápido a los mismos.
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.
![](https://img.webme.com/pic/p/programacion-pic16f877a/memoria-pic16f877a.jpg)
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.
|