Menu Principal:
µControladores PIC > Arquitectura
Memoria de programa:
La memoria de instrucciones puede tener una capacidad mínima de 512 palabras de 12 bits hasta una máxima de 2.048 palabras de la misma longitud. Durante la fase de búsqueda, la dirección de la instrucción la proporciona el PC, el cual normalmente se autoincrementa en la mayoría de las instrucciones, excepto en las de salto.
Hasta 512 posiciones la memoria se direccionan directamente con 9 bits, denominándose a dicho tamaño página. Las 512 primeras posiciones de la memoria configuran la página 0, el siguiente conjunto de otras 512 posiciones forman la página 1, etc.
En los modelos de PIC16C5X con mayor capacidad de memoria de instrucciones (2 k bytes) existen cuatro páginas.
En los modelos que sólo disponen de la página 0, bastan los 9 bits de menos peso del PC (A8-A0) para direccionar la instrucción en curso, que, si no es una de salto, provoca el autoincremento del mismo. En las instrucciones de salto el valor del PC se obtiene de diferentes formas según de la instrucción de que se trate.
GOTO : Los 9 bits de menos peso del PC se cargan directamente desde el código OP de la instrucción. Los 8 bits de menos peso (A7,AO) se ubican en un registro especial denominado PCL.
CALL : Los 8 bits de menos peso del PC se cargan desde el código OP de la instrucción. El noveno bit, A8, siempre toma el valor 0 lo que obliga a situar las rutinas, del programa en las 256 primeras posiciones de cada página.
Con las instrucciones CALL se carga la Pila con el valor inicial del PC incrementado una unidad. Posteriormente, la instrucción de retorno RETWL, situada al final de la rutina, devuelve el valor almacenado en la Pila al PC.
SALTO RELATIVO
Los 8 bits de menos peso del PC se cargan desde la salida de la ALU que ha sumado al valor inicial del PC el valor del salto que se halla situado dentro del código OP de la instrucción.
Los modelos de PIC con más de 512 posiciones en la memoria de programa precisan que el PC les suministre más de 9 bits. Así, el modelo PIC16C56 de 1k palabras precisa 10 bits y los PIC16C57 y PIC16C58 de 2 k palabras requieren 11 bits. Los nuevos bits del PC (Al0 y A9) sirven para determinar la página donde se halla la instrucción.
En las instrucciones GOTO y CALL usadas para modelos de PIC con mas de 512 palabras, el bit A9 del PC se obtiene del bit 5 del Registro de Estado, denominado PA0. El bit A10 se recibe desde el bit 6 del Registro de Estado, llamado PA1.
Memoria de Datos:
Los microcontroladores PIC funcionan con datos de 8 bits por lo que las posiciones de la memoria de datos tienen esa longitud. La capacidad de esta memoria varia entre 25 y 73 posiciones de un byte, en los modelos de la gama baja.
La memoria de datos se organiza en "bancos", pudiendo existir hasta cuatro en los modelos de mayor capacidad. El banco 0 tiene un tamaño de 32 bytes, mientras que todos los demás sólo disponen de 16. El banco 0 ocupa las 32 primeras posiciones de la memoria y lo poseen todos los modelos de PIC16C5X. Las 16 posiciones de menos peso de los bancos 1, 2 y 3 no son accesibles y cuando se direcciona desde el valor 00h al 0Fh, siempre se acude al banco 0. Cuando la dirección está comprendida entre la 10h y la 1Fh, hay que seleccionar a cuál de los cuatro posibles bancos corresponde con los bits 6 y 5 del registro FSR.
La memoria de datos funciona de forma similar al "banco de registros" de un procesador por lo cual sus posiciones implementan registros de propósito especial y propósito general. Las ocho primeras posiciones del banco 0 soportan registros específicos.
En esta anterior figura se presenta la organización de la memoria compuesta por cuatro bancos. Se indican los nombres de los registros específicos en las primeras posiciones del banco 0. Apréciese la representación del PC, que ocupa la posición 02 (PCL) a la que se añaden otros 3 bits (A10-A8). El PC transfiere su contenido a los dos niveles de la Pila en las instrucciones CALL. Con la instrucción RETLW la Pila devuelve al PC la información que contiene en el primer nivel, cargándose éste con el del segundo nivel.