MANEJO DE LA MEMORIA EEPROM El Uc PIC 16f84 cuenta con 64 Bytes de memoria EEPROM, que pueden ser utilizado por el programador. Esta memoria es de escritura y lectura, puden ser escrita más de 1’000.000 de veces y guarda el dato hasta más de 40 Años. Los registros asociados con está memoria son: EEDATA, EEADR (Banco 0) EECON1, EECON2(Banco 1) El Registro EEDATA contiene el dato leido o el dato que se quiere escribir en la memoria, analogamente los hace el registro EEADR con la direcci´pon deseada.
Para realizar una lectura hay que configurar el registro EECON1 y sus bits son los siguientes.
El bit 0=RD se utiliza para inicializar una lectura y se debe colocar en uno cada vez que se quiera leer El bit 1=WR, seutiliza para inicializar una escritura en la memoria. El bit 2= WREN, sirve para habilitar la escritura de la memoria=1 El bit3=WRERR se coloca en uno cuando no se realiza satisfactoriamente la escritura. El bit4= EEIF, se coloca en uno cuando la lectura termina y es capaz de utilizado como bandera de INT si ésta es habilitada. Es el utilizado para saber cuando el Uc terminó de escribir la memoria.
A continuación se presenta una rutina para escribir en la EEPROM. LEER MOVF DIR,W MOVWF EEADR BSF STATUS,RP0 BSF EECON1,RD BCF STATUS,RP0 MOVF EEDATA,W MOVWF REG_AUX RETURN Para la utilización de esta rutina primero hay que declarar los registros: DIR y REG_AUX. Luego se carga a DIR con la direción deseada y se llama CALL LEER y el dato de la memoria se obtiene en REG_AUX
Por ejemplo que se quiera leer el dato de la posición 30 de la memoria. El código será. MOVLW MOVWF CALL MOVF
.30 DIR LEER REGAUX,W
En el santerior código leemos la direción 30 y el dato lo gurdamois en el acumulador.
De manera similar se presenta una rutina para escribir en la memoria . ESCRIBIR MOVF DIR,W MOVWF EEADR MOVF DATO,W MOVWF EEDATA BSF STATUS,RP0 BCF EECON1,EEIF BCF INTCON,7 BSF EECON1,WREN MOVLW 55h MOVWF EECON2 MOVLW 0AAh MOVWF EECON2 BSF EECON1,WR NADA BTFSS EECON1,EEIF GOTO NADA BCF EECON1,EEIF BCF STATUS,RP0 RETURN
Esta rutina es un poco más complicada ya sigue un protocolo que el Uc necesita para poder gurdar y además se encierra en un ciclo llamado NADA hasta que no se haya escrito la memoria, ya que está demora unos cuantos mSeg. Para trabajar con esta rutina primero se deben declarar los registros: DIR y DATO Luego se debe cargar DIR con la dirección deseada y DATO con el dato que se quiera guardar, y luego si se llama la rutina CALL ESCRIBIR Por Ejemplo que se quiera escribir el numero 48 en la posición de memoria numero 12 el código será. MOVLW .12 MOVWF DIR MOVLW .48 MOVWF DATO CALL ESCRIBIR
Entre las muchas aplicaciones que se pueden implementar con la memoria EEPROM, estan las alarmas codificadas, las cerradura electronica,ientificación de equipos y la implementación de la vida utíl de un equipo, o controlar las veces que se utiliza un equipo.
Cabe destarcar que antes de cargar el programa que manipule una aplicación especifica, se deben: carga un programa primero con los datos iniciales de la memoria EEprom usada. Y posteriormente si se puede quemar el programa deseado, y cada vez que se olvide la clave se deberá cargar el programa inicial, seguido del original.