atención a las interrupciones, debe también de escribirse un 0 en el bit de bandera correspondiente, para impedir que la misma
interrupción vuelva a activarse una y otra vez.
11. Programación de la EEPROM:
La memoria EEPROM residente en el chip 16F628, posee 128 bytes. Dichas localidades pueden ser leídas o bien,
puede escribirse en ellas durante la ejecución de un programa. Sus direcciones son de la 0 a la 3F H. El acceso a esta memoria es a
través de direccionamiento indirecto utilizando 4 de los registros SFR (Special Fuction Registers), que son los siguientes: EECON1,
EECON2, EEDAT, y EEADR.
EEDAT guarda el dato que habrá de escribirse en la EEPROM, mientras que EEADR guarda la dirección. EECON1
es un registro cuyos bits permiten al usuario habilitar o deshabilitar la lectura y escritura en la EEPROM. EECON2 es un registro de
control usado para evitar escrituras accidentales, de tal manera que deben escribirse en dicho registro los valores 55H y AAH, antes
de iniciar un ciclo de escritura. En seguida se muestran los bits de control del registro EECON1:
REGISTRO EECON1 (DIRECCION 88H)
-
Bit 7
-
para leer la EEPROM, debe de escribirse un 1 en el BIT 0 del registro. Este bit tomará automáticamente el valor de 0
después de haberse efectuado la lectura del dato.
-
Para iniciar el ciclo de escritura en la EEPROM, debe escribirse un 1 en el BIT 1 del registro. Una vez terminado el ciclo de
escritura, el bit tomará automáticamente el valor de 0.
-
El BIT 2 habilita o deshabilita el ciclo de escritura. Si vale 1, se habilita y si vale 0, se deshabilita.
-
El BIT 3, es una bandera que anuncia, después de un ciclo de escritura, que ésta fue completada en forma errónea ó exitosa.
Si el valor es 1, existió un error y si el valor es de 0, entonces la escritura fue completada sin error.
-
El BIT 4 es una bandera de interrupción asociada a la escritura en la EEPROM. Si el valor es de 1, el ciclo de escritura
terminó. Si el valor es de 0, el ciclo de escritura no ha iniciado ó no ha concluído.
-
Los bits 5, 6 y 7, no se usan.
Para leer o escribir en la EEPROM, debe seguirse la siguiente secuencia de instrucciones. Supongamos que deseamos
leer el dato de la dirección 1AH de la EPROM, y almacenarlo en el registro W.
LECTURA:
BCF
MOVLW
MOVWF
BSF
BSF
BCF
MOVF
Ahora supongamos que deseamos escribir en la dirección 2BH, el dato 1AH, previamente almacenado en W. El
16F628 cuenta con un mecanismo para proteger a la EPROM contra escrituras accidentales, mediante el cual deben primero escribirse
los valores 55H y AAH en el registro EECON2 para habilitar el ciclo de escritura.
ESCRITURA:
BSF
BCF
BSF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
BSF
-
-
EEIF
STATUS,RP0
1AH
EEADR
STATUS,RP0
EECON1,RD
STATUS,RP0
EEDATA,W
STATUS,RP0
INTCON,GIE
EECON1,WREN
55H
EECON2
AAH
EECON2
EECON1,WR
INTCON,GIE
EDUPIC 16F628 Punto Flotante, S.A. 2010
11
WRERR
WREN
;ELIJE EL BANCO 0 DE LOS REGISTROS ESPECIALES
;PREPARA LA DIRECCIÓN
;ESCRIBE VALOR EN EL REGISTRO EEADR
;ELIGE EL BANCO 1
;HABILITA EL BIT 0 (RD) DEL REGISTRO EECON1
;HABILITA EL BANCO 0
;LEE EL DATO EN EL REGISTRO EEDATA EN W,
;USANDO DIRECCIONAMIENTO INDIRECTO.
;HABILITA EL BANCO 1
;DESHABILITA INTERRUPCIONES
;HABILITA ESCRITURA EN EEPROM
;PREPARA SECUENCIA DE SEGURIDAD
;ESCRIBE PRIMER DATO DE SECUENCIA
;SEGUNDO DATO
;ESCRIBE SEGUNDO DATO DE SECUENCIA
;INICIA CICLO DE ESCRITURA
;HABILITA INTERRUPCIONES
WR
RD
Bit 0