Memoria de datos (RAM)
El PIC16F877 posee cuatro bancos de memoria RAM, cada
banco posee 128 bytes. De estos 128 los primeros 32 (hasta el 1Fh) son
registros que cumplen un propósito especial en el control del microcontrolador y en su
configuración. Los 96 siguientes son registros de uso general que se pueden usar para
guardar los datos temporales de la tarea que se está ejecutando(figura 3.9.)
Todas las posiciones o registros de memoria se pueden
acceder directa o indirectamente(esta última forma a través del registro selector
FSR). Para seleccionar que página o banco de memoria se trabaja en un momento determinado
se utilizan los bits RP0 y RP1
del registro STATUS.
Resumen de algunos de los registros de configuración
BANCO 0:
- TMR0: Registro del temporizador/contador de 8 bits.
- PCL: Byte menos significativo del contador de
programa (PC).
- STATUS: Contiene banderas (bits) que indican el
estado del procesador después de una operación aritmética/lógica.
- FSR: Registro de direccionamiento indirecto.
- PORTA, PORTB, PORTC, PORTD, PORTE: Registro de
puertos de E/S de datos. Conectan con los pines físicos del micro.
- PCLATH: Byte alto (más significativo) del contador
de programa (PC).
- INTCON: Registro de control de las interrupciones.
- ADRESH: Parte alta del resultado de la conversión
A/D.
- ADCON0: Controla la operación del módulo de
conversión A/D
BANCO 1:
- OPTION: Registro de control de frecuencia del TMR0.
- TRISA, TRISB, TRISC, TRISD. TRISE: Registros de
configuración de la operación de los pines de los puertos.
- ADRESL: Parte baja del resultado de la conversión
A/D.
- ADCON1: Controla la configuración de los pines de
entrada análoga.
BANCO 2:
- TMR0: Registro del temporizador/contador de 8 bits.
- PCL: Byte menos significativo del contador de
programa (PC).
- FSR: Registro de direccionamiento indirecto.
- EEDATA: Registro de datos de la memoria EEPROM.
- EEADR: Registro de dirección de la memoria EEPROM.
- PCLATH: Byte alto (más significativo) del contador
de programa (PC).
- INTCON: Registro de control de las interrupciones.
BANCO 3:
- OPTION: Registro de control de frecuencia del TMR0.
- EECON1: Control de lectura/escritura de la memoria
EEPROM de datos.
- EECON2: No es un registro físico.
Función de algunos registros especiales
00h o INDF: Registro para direccionamiento indirecto
de datos. Este no es un registro disponible físicamente; utiliza el contenido
del registro FSR y los bits RP0 y RP1 del registro STATUS para seleccionar indirectamente la
memoria de datos, la instrucción que lo acompañe determinará que se debe realizar con
el registro señalado.
01h o TMR0. Temporizador/contador de 8 bits. Este es
un contador que se puede incrementar con una señal externa aplicada al
pin RA4/TOCKI o de acuerdo a una señal interna proveniente del reloj de
instrucciones del microcontrolador. La rata de incremento del registro se puede determinar por
medio de un preescalador o divisor de frecuencia, localizado en el registro
OPTION. Como una mejora con respecto a referencias anteriores, se le ha agregado la
generación de interrupción cuando se rebasa
la cuenta (el paso de 0FFh a 00h).
02h o PCL: Contador de programa. Se utiliza para
direccionar las palabras de 14 bits del programa que se encuentra almacenado en la memoria
ROM; este contador de programas es de 13 bits de ancho, figura 3.10. Sobre
el byte bajo, se puede escribir o leer
directamente, mientras que sobre el byte alto, no. El
byte alto se maneja mediante el registro PCLATH (0Ah). Ante una condición de reset el
microcontrolador inicia el contador de programa con todos sus bits en “cero”. Durante la
ejecución normal del programa, y dado que todas las instrucciones ocupan sólo una posición
de memoria, el contador se incrementa en uno con cada instrucción, a menos que se
trate de alguna instrucción de
salto.
En una instrucción CALL o GOTO la dirección de memoria
a donde se quiere ir, es decir,los bits 12 a 0 del contador de programa se cargan
desde el código de operación de la instrucción.
En algunas instrucciones donde la parte baja del
contador de programa, es decir los ocho bits bajos del registro PCL, es el destino, los otros cinco
bits se cargan directamente desde el PCLATH (bits 4 a 0), por ejemplo en el
caso de la instrucción ADDWF. Esto se debe tener en cuenta cuando se desea hacer lectura de
tablas usando el comando:
ADDWF PC,1 , en este caso se debe tener en cuenta que
la tabla debe estar comprendida dentro de un solo bloque de 256 bytes (0-255,
256-511, etc.).
03h o STATUS: Registro de estados. Contiene el estado
aritmético de la ALU, la causa del reset y los bits de preselección de página para la
memoria de datos.(figura 3.11) muestra los bits correspondientes a este registro. Los
bits 5 y 6 (RP0 y RP1) son los bits de selección de página para el direccionamiento directo
de la memoria de datos; solamente RP0 se usa en los PIC16F84. RP1 se puede utilizar como
un bit de propósito general de lectura/escritura. Los bits TO y PD no se pueden
modificar por un proceso de escritura; ellos muestran la condición por la cual se ocasionó el
último reset.
05h o PORTA: Puerto de Entrada/Salida de 6 bits. Este
puerto, al igual que todos sus similares en los PIC, puede leerse o
escribirse como si se tratara de un registro cualquiera. El registro que controla el
sentido (entrada o salida) de los
pines de este puerto está localizado en la página 1,
en la posición 85h y se llama TRISA. El puerto A también puede ser configurado para
que trabaje como entradas análogas para el convertidor Análogo a
Digital interno del
microcontrolador.
06h o PORTB: Puerto de entrada/salida de 8 bits. Al
igual que en todos los PIC,este puede leerse o escribirse como si se tratara de
un registro cualquiera; algunos de sus pines tienen funciones alternas en la generación
de interrupciones. El registro de control para la configuración de la función de sus
pines se localiza en la página 1, en la dirección 86h y se llama TRISB. Puede ser configurado
también para cumplir otras funciones.
07h o PORTC: Puerto de entrada/salida de 8 bits. Al
igual que en todos los PIC, este puede leerse o escribirse como si se tratara de
un registro cualquiera; algunos de sus pines tienen funciones alternas. El registro de
control para la configuración de la
función de sus pines se localiza en la página 1, en la
dirección 87h y se llama TRISC.
Puede ser configurado también para cumplir otras
funciones.
08h o PORTD: Puerto de entrada/salida de 8 bits. Al
igual que en todos los PIC, este puede leerse o escribirse como si se tratara de
un registro cualquiera; algunos de sus pines tienen funciones alternas cuando se utiliza
el micro en modo microprocesador.
El registro de control para la configuración de la
función de sus pines se localiza en la página 1, en la dirección 88h y se llama TRISD. Puede
ser configurado también para cumplir otras funciones.
09h o PORTE: Puerto de Entrada/Salida de 3 bits. Este
puerto, al igual que todos sus similares en los PIC, puede leerse o escribirse como si se tratara de un registro cualquiera. El registro que
controla el sentido (entrada o salida) de los
pines de este puerto está localizado en la página 1,
en la posición 89h y se llama TRISE. El puerto E también puede ser configurado para
que trabaje como entradas análogas para el convertidor Análogo a
Digital interno del microcontrolador o para que maneje las señales de
control en el modo microprocesador.
85h o TRISA: Registro de configuración del puerto A.
Como ya se mencionó, es el registro de control para el puerto A. Un “cero” en el
bit correspondiente al pin lo configura como salida, mientras que un “uno” lo hace
como entrada.
86h o TRISB: Registro de configuración del puerto B.
Orientado hacia el control del puerto B. Son válidas las mismas consideraciones
del registro TRISA.
87h o TRISC: Registro de configuración del puerto C.
Orientado hacia el control del puerto C. Son válidas las mismas consideraciones
del registro TRISA.
88h o TRISD: Registro de configuración del puerto D.
Orientado hacia el control del puerto D. Son válidas las mismas consideraciones
del registro TRISA.
89h o TRISE: Registro de configuración del puerto E.
Orientado hacia el control del puerto E. Son válidas las mismas consideraciones
del registro TRISA.
020h a 7Fh: Registros de propósito general. Estas 96
posiciones están implementadas en la memoria RAM estática, la cual
conforma el área de trabajo del usuario. Pueden ser utilizadas para almacenar
cualquier dato de 8 bits.
Registro de trabajo W. Este es el registro de trabajo
principal, se comporta de manera similar al acumulador en los microprocesadores.
Este registro participa en la mayoría de la:
• Memoria de
programa : FLASH, 8 K de instrucciones de 14 bits c/u.
• Memoria de datos : 368 bytes RAM, 256 bytes EEPROM.
• Pila (Stack) : 8 niveles (14 bits).
• Fuentes de interrupción : 13
• Instrucciones : 35
• Encapsulado : DIP de 40 pines.
• Frecuencia oscilador : 20 MHz (máxima)
• Temporizadores/Contadores: 1 de 8 bits (Timer 0); 1
de 16 bits (Timer 1); 1 de 8
bits (Timer 2) con pre y post escalador. Un perro
guardián (WDT)
• Líneas de E/S : 6 del puerto A, 8 del puerto B, 8
del puerto C, 8 del puerto D y 3
del puerto E, además de 8 entradas análogas.
• Dos módulos de Captura, Comparación y PWM:
- Captura: 16 bits. Resolución máx. = 12.5 nseg.
- Comparación: 16 bits. Resolución máx. = 200 nseg.
- PWM: Resolución máx. = 10 bits.
• Convertidor Análogo/Digital de 10 bits multicanal (8
canales de entrada).
• Puerto serial síncrono (SSP) con bus SPI (modo
maestro) y bus I²C
(maestro/esclavo).
• USART (Universal Synchronous Asynchronous Receiver
Transmitter) con dirección
de detección de 9 bits.
• Corriente máxima absorbida/suministrada
(sink/source) por línea (pin): 25 mA
• Oscilador : Soporta 4 configuraciones diferentes:
XT, RC, HS, LP.
• Tecnología de Fabricación: CMOS
• Voltaje de alimentación: 3.0 a 5.5 V DC
• Puede operar en modo microprocesador



No hay comentarios:
Publicar un comentario