You are on page 1of 9

La memoria EEPROM

(c) Domingo Llorente 2010

Caractersticas
Los pics de la familia 16F87x disponen de una zona de memoria especial (EEPROM), donde podemos guardar nuestros datos sin temor a perderlos cuando dejamos de alimentar el dispositivo. La memoria EEPROM no est mapeada en el mapa de memoria y se accede a ella a travs de unos registros especiales. Tambin es posible acceder a la memoria flash de programa en tiempo de ejecucin del programa. Cantidad de EEPROM implementada segn el modelo de pic:

(c) Domingo Llorente 2010

Registros asociados (I)


Son un total de 8 registros los que intervienen, en mayor o menor medida en el control de la lectura/escritura de la memoria EEPROM.

(c) Domingo Llorente 2010

El registro EECON1

(c) Domingo Llorente 2010

Leer datos de la EEPROM


Procedimiento de lectura: 1.- Escribir en el registro EEADR la direccin de la memoria que queremos leer. 2.- Poner a cero el bit EEPGD del registro EECON1. 3.- Poner a uno el bit RD del registro EECON1. 4.- Leer el dato del registro EEDATA.

(c) Domingo Llorente 2010

Escribir datos en la EEPROM


1.- Escribir la direccin donde queremos escribir en el registro EEADR. 2.- Escribir el dato en el registro EEDATA. 3.- Poner a cero el bit EEPGD del registro EECON1. 4.- Poner a uno el bit WREN del registro EECON1. 5.- Deshabilitar las interrupciones (si estn habilitadas). 6.- Ejecutar la siguiente secuencia de instrucciones: Escribir el dato 55h en el registro EECON2 en dos pasos, primero cargarlo en el acumulador y luego en el registro EECON2. Escribir el dato AAh en el registro EECON2 en dos pasos, primero cargarlo en el acumulador y luego en el registro EECON2. Poner a uno el bit WR del registro EECON1 para iniciar la escritura. 7.- Habilitar las interrupciones (si se deshabilitaron). 8.- Poner a cero el bit WREN del registro EECON1. Al trmino del ciclo de escritura (varios milisegundos) el bit WR se pone a cero y la bandera EEIF se pone a uno.
(c) Domingo Llorente 2010 6

Lectura/Escritura EEPROM en CCS


El compilador CCS se encarga de realizar los procedimientos de lectura / escritura de la EEPROM a travs de dos funciones: Para leer de la EEPROM: valor=read_eeprom (direccin); // valor debe ser del tipo int8 Para escribir un dato en la EEPROM: write_eeprom (direccin,dato); Ej: write_eeprom(0x00,0x01); // Guarda el dato 1 en la pos. 0x00 Nota: Poner especial atencin para no leer/escribir de/en una posicin de memoria NO implementada. Para 16F877A, el rango es: 00-FF (256 posiciones)
(c) Domingo Llorente 2010 7

Ejercicio de aplicacin
Disear un programa que incremente el valor decimal (0-9) del display de siete segmentos de la placa de perifricos con cada flanco descendente en RC0. Guardar el estado del display de forma que si se apaga el entrenador al volverlo a conectar mantenga el valor con el que se apag.

(c) Domingo Llorente 2010

Solucin propuesta

(c) Domingo Llorente 2010

You might also like