Sie sind auf Seite 1von 23

TEMA 5

LA MEMORIA DE DATOS
MEMORIA RAM

D.P.E. DESARROLLO DE PROYECTOS

Estructura De La Memoria Ram (1)


La memoria de datos RAM est dividida en dos partes
diferenciadas:
1.- Zona SFR o zona de Registros de Funciones eSpeciales
2.- Zona de Registros de Propsito General o zona GPR
Ambas partes estn organizadas en dos bancos de registros
de 128 bytes cada uno aunque solo los primeros 80 bytes se
encuentran implementados.
Todos los registros tienen un tamao de 1 byte
D.P.E. DESARROLLO DE PROYECTOS

Estructura De La Memoria Ram (2)


Los Bancos De Registros
En la fig. podemos observar la
disposicin de los dos bancos de
memoria, el primero va desde la
direccin 0h hasta la 7Fh,
mientras que le segundo lo hace
desde la 80h hasta FFh.
Dentro de cada uno de los
bancos, y en las posiciones mas
bajas se encuentran los SFR, en
el banco 0, desde la direccin 0h
hasta la 0Bh, y en el banco 1
desde la 80h hasta 8Bh.

Estructura De La Memoria Ram (3)


Los Bancos De Registros
Como se puede verificar, la zona SFR posee un total de 24
registros, aunque dos no son accesibles (dir 07h y 87h), y
algunos se encuentran duplicados en ambos bancos.
La zona de GPR implementada dentro del banco 0 va
desde 0Ch hasta 4Fh, que hace un total de 68 registros,
La zona GPR del banco 1 est mapeada sobre el banco 0
por lo que , cuando se apunta a un registro general de
este banco, se accede al mismo registro pero del banco 0.
Para seleccionar el banco activo hay que programar el bit
RP0 del registro de STATUS.
RP0 = 0 banco 0;

D.P.E. DESARROLLO DE PROYECTOS

RP0 = 1 banco 1

Estructura De La Memoria Ram (4)


Los Registros SFR del Banco 0
En la figura que sigue se dan los registros del banco 0 que componen
su zona SFR.
El registro cuya direccin es 07H no est implementado. Mientras
que los siguientes estn duplicados en el banco 1: INDF, PCL,
STATUS, FSR, PCLATCH, INTCON.

D.P.E. DESARROLLO DE PROYECTOS

Estructura De La Memoria Ram (4)


Los Registros SFR del Banco 1
En la figura que sigue se dan los registros del banco 1 que componen
su zona SFR.
El registro cuya direccin es 87h no est implementado. Mientras que
los siguientes estn duplicados en el banco 0: INDF, PCL, STATUS,
FSR, PCLATCH, INTCON.

D.P.E. DESARROLLO DE PROYECTOS

Los Registros SFR (1)


Seguidamente damos una descripcin de los registros
SFR mas utilizados, el resto de los registros se irn
explicando segn se haga preciso.
Las claves utilizadas para los valores de los bits son:
R Bit de lectura
W Bit de escritura
Valores tras un reset:
-

No implementado se lee 0

Desconocido

No se modifica, mantiene el valor anterior

Su valor depende de cual fu la causa del reset

D.P.E. DESARROLLO DE PROYECTOS

Los Registros SFR (2)


Registro de STATUS (1)
El registro STATUS, es un registro, que contiene una serie
de banderas que indican si una cierta condicin se ha
producido tras la ejecucin de la ltima instruccin y otras
informaciones que se detallan a continuacin.
Direccin: 03h del banco 0 y 83h del banco1
Bit 0: C flag de acarreo en el octavo bit (R, W, X)
1: Acarreo en la suma y no se debe en la resta.
0: No acarreo en la suma y se debe en la resta
Bit 1: DC flag de acarreo en el cuarto bit (R, W, X)
1: Acarreo en la suma

0: No acarreo en la suma

En la resta al contrario, se utiliza en operaciones en BCD

Los Registros SFR (3)


Registro de STATUS (2)
Bit 2: Z flag de cero (R, W, X)
1: El resultado de la ltima operacin lgica o
aritmtica fue 0.
0: El resultado de la ltima operacin fue <> de 0.
Bit 3: PD flag Power Down (R, 1)
1: Tras conectar VDD, o al ejecutar CLRWDT
0: Al ejecutar la instruccin SLEEP
Bit 4: TO flag Timer Out (R, 1)
1: Tras conectar VDD o ejecutar CLRWDT o SLEEP
0: Al desbordarse el timer del WDT

Los Registros SFR (4)


Registro de STATUS (3)

Bit
5:
RP0
Seleccin
del
direccionamiento directo (R,W, 0)

banco

para

0 Banco 0 (00h-7Fh); 1 Banco 1 (80h-FFh)


Bit 6 : RP1 En este no se utiliza.
Bit 7 : IRP En este no se utiliza.
Tanto RP1 como IRP no deben usarse como bits
de uso general para garantizar la compatibilidad
con futuros PIC.
D.P.E. DESARROLLO DE PROYECTOS

10

Los Registros SFR (5)


Registro INTCON
Direccin: 0Bh del banco 0 y 8Bh del banco1
El registro INTCON, es un registro de lectura escritura,
que contiene las habilitaciones para las diferentes fuentes
de interrupcin, as como las banderas que indican que
una cierta causa de interrupcin se ha producido.
Tras un reset todas las interrupciones se prohben.
Bit 7: GIE Activacin global de interrupciones (R, W, 0)
1: Permite todas las interrupciones no enmascaradas.
0: Todas las interrupciones estn prohibidas.
El resto de los bits de este registro se explicarn en el
tema de interrupciones.

Los Registros SFR (6)


Registros INDF y FSR (1)
Direccin: INDF 0h del banco 0 y 80h del banco1
Direccin: FSR 04h del banco 0 y 84h del banco1
El registro INDF, no es un registro fsico, direccionando
INDF, realmente se seala al registro cuya direccin est
contenida en el registro FSR; FSR es un puntero.
Ambos registros se utilizan en conjunto para realizar
direccionamientos indirectos.
Al no estar implementado INDF, su lectura dar todo 0.
El valor de FSR tras el Power On Reset (POR) es XXh,
mientras que para las otras causa de reset no modifica su
valor.

Los Registros SFR (7)


Registros INDF y FSR (2)
Ejemplo de direccionamiento indirecto facilitado por Microchip.
Este programa pone a cero lo registros entre 20h y 2FH.
........
movlw 0x20 ;inicializo FSR que actuar de puntero
OTRO

movwf FSR

;el valor inicial de FSR=20h

clrf INDF

;pon a 0 el registro sealado por FSR

incf FSR

;FSR seala a la siguiente posicin

btfss FSR,4 ;control para ver si se ha llegado a 2Fh


goto OTRO

; si no he llegado a 2Fh vete a OTRO


.............

Los Registros SFR (8)


Registros PCL y PCLATCH (1)
Direccin: PCL 02h del banco 0 y 82h del banco1
Direccin: PCLATH 0Ah del banco 0 y 8Ah del banco1
Como ya se indic en el tema de memoria de programas,
su unin forma el Contador de Programas.
PCL es un registro de lectura\escritura y su valor tras el
reset es 00h.
PCLATH solo tiene implementados los 5 bits de menor
peso, siendo un registro esclavo del PC <12:8>, el
contenido de PCLATH puede ser transferido al byte alto
del PC, pero nunca al contrario.
Su valor tras el reset es de todo 0.

Los Registros SFR (9)


Registros PORTA y TRISA (1)
Direccin: PORTA 05h del banco 0
Direccin: TRISA 85h del banco 1
TRISA es el registro de configuracin del PUERTO A.
Poniendo en cualquier bit de TRISA un 1, hacemos que el
bit correspondiente del PUERTO A quede configurado
como una entrada. Poniendo a 0 un bit de TRISA, se
configura el pin correspondiente como salida.
Como el PORTA, TRISA solo tiene implementados los cinco
bits de menor peso.
Tras el reset TRISA toma el valor 1Fh, por lo que el puerto
queda configurado con todos sus pines como entradas.

Los Registros SFR (10)


Registros PORTA y TRISA (2)
PORTA es un registro que solo tiene implementados los
cinco bits de menos peso. Y es el latch donde se escribe
el valor que se desea enviar a los pines del PUERTO A.
Cuando se lee del PUERTO A, se lee el estado de cada
uno de los pines de dicho puerto, siempre y cuando
estuviesen configurados como entradas.
Cuando se escribe en el puerto, se escribe en el latch y
hay que tener en cuenta que son escrituras del tipo readmodify-write.
Tras el reset POR, el valor del PORTA es indeterminado,
mientras que cualquier otro reset hace que no se
modifique su valor
D.P.E. DESARROLLO DE PROYECTOS

16

Los Registros SFR (11)


Registros PORTB y TRISB (1)
Direccin: PORTB 06h del banco 0
Direccin: TRISB 86h del banco 1
TRISB es el registro de configuracin del PUERTO B,
poniendo en cualquier bit de TRISB un 1, hacemos que el
bit correspondiente del PUERTO B quede configurado
como una entrada. Poniendo a 0 un bit de TRISB se
configura el pin correspondiente del PORB como salida.
Tanto el PORTB, como TRISB tienen un ancho de 8 bits.
Tras el reset TRISB toma el valor FFh, por lo que el puerto
queda configurado con todos sus pines como entradas.
D.P.E. DESARROLLO DE PROYECTOS

17

Los Registros SFR (12)


Registros PORTB y TRISB (2)
PORTB es un registro de 8 bits. Y es el latch donde se
escribe el valor que se desea enviar a los pines del
PUERTO B.
Cuando se lee del PUERTO B se lee el estado de cada uno
de los pines de dicho puerto, siempre y cuando estuviesen
configurados como entradas
Tras el reset POR, el valor del PORTB es indeterminado,
mientras que cualquier otro reset hace que no se
modifique su valor

D.P.E. DESARROLLO DE PROYECTOS

18

Los Registros SFR (13)


Registro OPTION (1)
Direccin: 81h del banco1
El registro OPTION, es un registro de lectura escritura,
que contiene bits de control para configurar el preescaler
de TIMER0/WDT , la interrupcin externa, el TIMER0 y las
resistencias de pull-up del PORTB
Independientemente de la causa del reset adquiere
siempre el valor FFh.
Bit 7: RBPU#: Bit de habilitacin de las resistencias de Pull
Up del puerto B (W, R, 1).
1: Desactiva las resistencias de pull-up (valor de reset)
0: Activa las resistencias de pull-up.

Los Registros SFR (14)


Registro OPTION (2)
Bit 6: INTEDG: Bit de seleccin de flanco activo para las
interrupciones externas RB0/INT (W, R, 1).
1: Flanco de subida

(valor por defecto).

0: flanco de bajada".
Bit 5: TOCS: Bit de seleccin de los impulsos a contar por
TMR0 (contador/temporizador) (W, R, 1).
1: Pulsos introducidos a travs de RA4/TOCKI (contador,
valor por defecto)
0: Pulsos del reloj interno Fosc/4 (temporizador).
D.P.E. DESARROLLO DE PROYECTOS

20

Los Registros SFR (15)


Registro OPTION (3)
Bit 4: TOSE: Bit de seleccin de flanco activo para
RA4/TOCKI (TMR0 como contador).
1: Flanco de subida

(valor por defecto).

0: flanco de bajada".
Bit 3: PSA: Asignacin del divisor del preescaler (W, R, 1).
1: El divisor de frecuencia (preescaler) se asigna a WDT
(valor tras el reset).
0: El divisor de frecuencia se asigna a TMR0.
Cuando el preescaler est asignado a WDT, el preescaler
para TMR0 es 1:1.
D.P.E. DESARROLLO DE PROYECTOS

21

Los Registros SFR (16)


Registro OPTION (4)
Bit 2:0 PS2, PS1, PS0: Bits de seleccin del rango con el
que acta el preescaler
PS2 PS1 PS0

rango para TMR0 rango para WDT

1:2

1:1

1:4

1:2

1:8

1:4

1:16

1:8

1:32

1:16

1:64

1:32

1:128

1:64

1:256

1:128

Los Registros SFR (18)


Registros EEDATA, EEADR, EECON1 y EECON2

La memoria EEPROM de datos, que incorpora el


16F84 es una memoria de lectura/escritura de 64
bytes y direcciones de la 0 a 3fh,
Esta memoria no est mapeada en el espacio de
registros especiales. Para operar en ella, es
necesario utilizar los registros especiales:
EECON1, EECON2, EEDATA y EEADR

Dichos registros as como la memoria EEPROM se


describirn con mas profundidad en un tema
especfico
23

Das könnte Ihnen auch gefallen