-
REGISTROS (Memoria Ram)
|
El PIC 16F84 direcciona 128 posiciones
de memoria RAM, pero tiene
implementado físicamente los primeros 80 (0 a 4Fh). De estos los primeros 12 son
registros que cumplen un propósito especial en el control del PIC y los 68
siguientes son registros de uso general que se pueden usar para guardar los
datos temporales de la tarea que se ejecuta. Los registros están organizados
como dos bancos (paginas) de 128 posiciones de 8 bits cada una (128 x 8);
todas las posiciones se pueden accesar directa o indirectamente (estas
ultimas a través del registro FSR). Para seleccionar que pagina de registro
se trabaja en un momento determinado se utiliza el bit RP0 del registro
STATUS.
00h o INDO: Registro para el direccionamiento indirecto
de datos. Este no es un registro disponible físicamente; utiliza el contenido
del FSR y el bit RP0 del registro STATUS para seleccionar indirectamente la
memoria de datos o RAM del usuario; la instrucción determinara que se debe
señalar con el registro señalado.
01h o TMR0: Temporizador/contador de 8 bits. Este se
puede incrementar con una señal externa aplicada al pin RA4/TOCKI o de a
cuerdo a una señal interna proveniente del reloj de instrucciones del
microcontrolador. La rata o tasa de incremento del registro se puede
determinar por medio de un preescalador, localizado en el registro OPTION.
Los anteriores microcontroladores no contaban con la generación de una
interrupción cuando se rebasaba 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 del usuario que se encuentra almacenado en la memoria ROM; este
contador tiene un tamaño de 13 bits. Sobre el byte bajo, se puede escribir o
leer a voluntad directamente, mientras que en el byte alto, no. El byte alto
se maneja mediante el registro PCLATH (0Ah). A diferencia de los PIC de
primera generación el 16F84 ante una condición de reset 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 solo una posición de
memoria, el contador se incrementa con cada instrucción, a menos que se trate
de alguna instrucción de salto.
|
04h o FSR: REGISTRO SELECTOR DE
REGISTROS. En asocio con el registro IND0, se utiliza para seleccionar
indirectamente los otros registros disponibles. Mientras que los antecesores
del PIC 16F84 solo poseían 5 bits activos, en este microcontrolador se poseen
solo 8 bits. Si en el programa no se utilizan llamadas indirectas, este
registro se puede utilizar como un registro de propósito general.
03h o STATUS: REGISTRO DE ESTADO. Contiene
el estado Aritmético de la ALU,
la causa de reset y los bits de preselección de pagina para la memoria de
datos. En la figura se muestran los bits correspondientes
a este registro. Los bits 5 y 6 (RP0 y RP1) son los bits de selección de pagina
(Bank 0 y Bank 1), para el direccionamiento directo de la memoria de datos;
solamente RP0 se usa en los PIC 16F84. 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
ocasiono el ultimo reset.
IRP bit 7
|
RP1 bit 6
|
RP0 bit 5
|
T0 bit 4
|
PD bit 3
|
Z bit 2
|
DC bit 1
|
C bit 0
|
IRP
|
Selector de
página para direccionamiento indirecto. Este bit no se utiliza efectivamente
en el PIC 16F84, por lo que se puede utilizar como un bit de propósito
general.
|
||||||
RP1,0
|
Selectores de
página para un seleccionamiento directo. Solamente RP0 se utiliza en el PIC
16F84. RP1 se puede utilizar como un bit de propósito general.
|
||||||
T0
|
Time Out o bit de
finalización del temporizador. Se coloca en 0 cuando el circuito de
vigilancia Watchdog finaliza la temporización
|
||||||
PD
|
Power Down o bit
de bajo consumo. Se coloca en 0 por la instrucción sleep.
|
||||||
Z
|
Zero o bit de
cero. Se coloca en 1 cuando el resultado de una operación aritmética o lógica
es cero.
|
||||||
DC
|
Digit Carry o bit
de acarreo de dígito. En operaciones aritméticas se activa cuando hay un
acarreo entre el bit 3 y 4, es decir cuando hay acarreo entre el nible de
menor y de mayor peso.
|
||||||
C
|
Carry o bit de
acarreo. En instrucciones aritméticas se activa cuando se acarrea desde el bit más significativo del
resultado.
|
05h o PORTA: PUERTO DE ENTRADA/SALIDA DE 5
BITS (RA0~ RA4). 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 esta
localizado en la pagina 1 (Banco 1), en la posición 85h y se llama TRISA.
06h o PORTB: PUERTO DE ENTRADA/SALIDA DE 8
BITS (RB0~RB7). 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 pagina 1
(Banco 1), en la dirección 86h y se llama TRISB.
08h o EEDATA: REGISTRO DE DATOS DE LA EEPROM. Este registro
contiene el dato que se va a escribir en la memoria EEPROM de datos o el que se
leyó de ésta.
09h o EEADR: REGISTRO DE DIRECCION DE LA EEPROM. Aquí se
mantiene la dirección de la
EEPROM de datos que se van a trabajar, bien sea para una
operación de lectura o para una de escritura
0Ah o PCLATH: REGISTRO PARA LA PARTE ALTA DE LA DIRECCION. Este
registro contiene la parte alta del contador de programa y no se puede acceder
directamente.
0Bh o INTCON: REGISTRO PARA EL CONTROL DE
INTERRUPCIONES. Es el encargado del manejo de las interrupciones y contiene los
bits que se muestran en la figura.
GIE Bit 7
|
EEIE bit 6
|
TOIE bit 5
|
INTE bit 4
|
RBIE bit 3
|
TOIF bit 2
|
INTF bit 1
|
RBIF bit 0
|
GIE
|
Global Interrup
Enable o Habilitador general de interrupciones.
0: Deshabilita
todas las interrupciones 1: Habilita
las interrupciones
|
||||||
EEIE
|
EEPROM Write
Interrup Enable o Habilitación de interrupción por escritura de la EEPROM.
0: La
deshabilita 1: La habilita
|
||||||
T0IE
|
TMR0 Interrup
Enable o Habilitación de interrupción del temporizador TMR0.
0: La
deshabilita 1: La habilita
|
||||||
INTE
|
INT Interrup
Enable o Habilitación de la interrupción INT.
0: La
deshabilita 1: La habilita
|
||||||
RBIE
|
RBIF Interrup
Enable o Habilitación de la interrupción RBIF.
0: La
deshabilita 1: La habilita
|
||||||
TOIF
|
TMR0 Overflow
Interrup Flag o Bandera de la interrupción por desbordamiento del TMR0.
Se coloca en 1
cuando el TMR0 pasa de 0FFh a 00h; ésta debe ser puesta a 0 por programa.
|
||||||
INTF
|
INT Interrup Flag
o Bandera de interrupción INT.
Se coloca en 1
cuando la interrupción INT ocurre; ésta debe ser puesta cero por programa.
|
||||||
RBIF
|
RB Port Change
Interrup Flag o Bandera de interrupción por cambio en el puerto B. Se coloca
en 1 cuando una de las entradas (RB4 a RB7) cambia; ésta debe ser puesta a 0
por programa
|
81h u OPTION: REGISTRO DE CONFIGURACION
MULTIPLE. Posee varios bits para configurar el preescalador, la interrupción
externa, el timer y las características del Puerto B. Los bits que contiene y
las funciones que realiza este registro se muestran en la figura. El preescalador es compartido entre el TMR0 y el
WDT; su asignación es mutuamente excluyente ya que solamente puede uno de ellos
ser preescalado a la vez.
RBPU
bit 7
|
INTEDG
bit 6
|
GRTS
bit 5
|
RTE
bit 4
|
PSA
bit 3
|
PS2
bit 2
|
PS1
bit 1
|
PS0
bit 0
|
||
RBPU
|
Portb Pull-up
Enable o Habilitación de pull-up del puerto B.
0: Habilita las
pull-ups internas 1: Las deshabilita
|
||||||||
INTEDG
|
INT Interrup Edge
Select o Selector de flanco de la interrupción INT.
0: Flanco de
bajada 1: Flanco de subida
|
||||||||
RTS
|
TMR0 Signal
Source o Fuente de señal del TMR0.
0: Ciclo de
instrucciones interno (Temporizador)
1: Transición en
el pin RA4/TOCKI (Contador)
|
||||||||
RTE
|
TMR0 Signal Edge
o Flanco de la señal del TMR0
0: Incremento de
transición de bajo a alto 1:
Incremento en transición
|
||||||||
PSA
|
Preescaler
Assignment o Asignación del preescalador
0: TMR0 (Contador
/ Temporizador) 1: WDT (Circuito de
vigilancia)
|
||||||||
PS2, 1, 0
|
Preescaler Value
o Valores del preescalador.
|
||||||||
Valor
|
TMR0
|
WDT
|
|||||||
000
001
010
011
100
101
110
111
|
1:2
1:4
1:8
1:16
1:32
1:64
1:128
1:256
|
1:1
1:2
1:4
1:8
1:16
1:32
1:64
1:128
|
|||||||
85h o TRISA: REGISTRO DE CONFIGURACION DEL
PUERTO A. 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 CONFIGURACION DEL
PUERTO B. Es el registro de control para el puerto B. Un "cero" en el
bit correspondiente al pin lo configura como salida, mientras que un
"uno" lo hace como entrada.
88h o EECON1: REGISTRO DE PARA EL CONTROL
DE LA MEMORIA EEPROM
DE DATOS. Este es el registro de control para la memoria de datos y solo destina
cinco bits para ello, los más bajos; los tres bits superiores permanecen sin
implementar. En la figura se muestran las funciones de estos
bits.

U bit 7
|
U bit 6
|
U bit 5
|
EEIF bit 4
|
WRERR bit 3
|
WREN bit 2
|
WR bit 1
|
RD bit 0
|
U
|
Unimplemented. No
implementados.
|
||||||
EEIF
|
EEPROM Write
Completion Interrup Flag o Bandera de finalización de la escritura. Se coloca
en "1" cuando finaliza con éxito la escritura de la EEPROM de datos; se debe
colocar en "0" por programa. El bit de habilitación correspondiente
es el EEIE, localizado en el registro INTCON.
|
||||||
WRERR
|
Write Error Flag
o Bandera de error de escritura. Si se coloca en "1" cuando la
operación de escritura termina prematuramente, debido a cualquier condición
de reset.
|
||||||
WREN
|
Write Enable o
habilitación de escritura. Si se coloca en "0" no permite las
operaciones de escritura; en "1" las habilita.
|
||||||
WR
|
Write Control o
Control de escritura. Al colocarse en "1" inicia un ciclo de
escritura. Este bit sólo es puesto a "0" por hardware, una vez la
escritura termina.
|
||||||
RD
|
Read Control o
Control de lectura. Al colocarse en "1" se inicia una lectura de la EEPROM de datos, la cual
toma un ciclo de reloj de instrucciones. Este bit sólo se limpia (colocar en
"0") por hardware, al finalizar la lectura de la posición de la
EEPROM.
|
89h o EECON2: REGISTRO AUXILIAR PARA EL
CONTROL DE LA MEMORIA
EEPROM DE DATOS. Este registro no es implementado físicamente
por el microcontrolador, pero que es necesario en las operaciones de escritura
en la EEPROM de
datos; ante cualquier intento de lectura se tendrán "ceros".
0Ch a 4Fh: REGISTRO DE PROPOSITO GENERAL.
Estas 68 posiciones están implementadas en la memoria RAM estática, la cual
conforma el área de trabajo del usuario; a ellas también se accede cuando en la
pagina 1 (Banco 1) se direccionan las posiciones 8Ch a CFh. Esto se ha diseñado
así para evitar un excesivo cambio de paginas en el manejo de la RAM del usuario, agilizando
los procesos que se estén llevando a cabo y descomplicando la labor del programador.
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 casi todo el
programa y por consiguiente en la mayoría de las instrucciones.
No hay comentarios:
Publicar un comentario