Criado por Yael García Cuesta
aproximadamente 4 anos atrás
|
||
La memoria de datos del PIC16F84 está dividida en dos: 1. El área de registros de funciones especiales (SFR) (parte superior) 2. El área de Registros de propósito general (GPR). (parte inferior)
Los registros de funciones especiales SFR (parte superior) controlan el funcionamiento del dispositivo.
El área GPR es un área de memoria RAM de más de 116 bytes para almacenar información de propósito general (Datos del usuario).
La actividad en los bancos requiere el uso de bits de control para la selección de bancos. Estos bits de control se encuentran en el registro STATUS y son los bits RP0 y RP1.
Para entrar al banco 0 o al banco 1 del PIC será necesario cambiar el bit RP0 del registro STATUS a 0 o a 1 según corresponda. Esto se hace a través del programa en ensamblador.
Al iniciar el PIC este se encuentra normalmente en el banco 0, por tanto, si se requiere configurar los puertos, debemos cambiar de banco, al banco 1.
En el banco 0 encontramos los registros de propósito especial del 00h al 0Bh (nomenclatura hexadecimal). Cada uno de ellos tienen una función particular.
Cada registro de propósito especial y todos los demás registros tienen una dirección en la memoria de datos.
El registro STATUS o ESTADO se encuentra en la dirección de memoria número 03h. Dentro de él se encuentra el bit RP0 que sirve para cambiar de banco.
Cuando deseamos sacar o meter información desde o hacia los puertos, esta se queda temporalmente almacenada en los registros llamados PORTA y PORTB (registros 05h y 06h).
En el Banco1 están los registros desde la 80h hasta la FFh. Los registros de la 80h a la 8Bh son registros de propósito especial.
Cuando deseamos sacar o meter información desde o hacia los puertos, estos se deben configurar como entradas o como salidas. Esta configuración se hace en los registros TRISA y TRISB (registros 85h y 86h)
El registro INDF (00h-80h) no es un registro físico. El direccionamiento INDF en realidad se dirige al registro cuya dirección está contenida en el registro FSR (FSR es un puntero). Este es un direccionamiento indirecto.
Si se escribe el registro(01h) TMR0, el incremento se inhibe durante los siguientes dos ciclos de instrucción.
El contador de programa (PC) especifica la dirección de la instrucción a buscar para su ejecución. La PC tiene 13 bits de ancho. El byte bajo se llama registro(02h y 82h) PCL. Este registro se puede leer y escribir.
Registro(94h y 84h) selector de registros. En asocio con el registro INDF, se utiliza para seleccionar indirectamente los otros registros disponibles. En este microcontrolador se poseen los 8 bits.
Los datos están disponibles, en el ciclo siguiente, en el registro(08h) EEDATA; por lo tanto, se puede leer en la siguiente instrucción.
EEDATA mantendrá este valor hasta otra lectura o hasta que el usuario lo escriba (durante una operación de escritura).
EEADR contiene la dirección de la ubicación EEPROM a la que se accede. Para escribir una ubicación de datos EEPROM, el usuario primero debe escribir la dirección en el registro(09h) EEADR y los datos en el registro EEDATA.
Registro(88h) EECON1 para el control de la memoria EEPROM de datos. Este es el registro de control de la memoria de datos y sólo destina cinco bits para ello, los más bajos; los tres bits superiores permanecen sin implementar.
Registro(89h) EECON2 auxiliar para control de la memoria EEPROM de datos. Registro que no está implementado físicamente en el microcontrolador, pero que es necesario en las operaciones de escritura en la EEPROM de datos; ante cualquier intento de lectura se obtendrán “ceros”.
Registro(0Ah y 8Ah) para la parte alta de la dirección. Este contiene la parte alta del contador de programa y no se puede acceder directamente.
El registro(0Bh y 8Bh) INTCON es un registro que se puede leer y escribir y que contiene los distintos bits de habilitación para todas las fuentes de interrupción.
El registro(81h) OPTION es un registro legible y escribible que contiene varios bits de control para configurar el preescalador TMR0 / WDT, la interrupción INT externa, TMR0 y los pull-ups débiles en PORTB.