Вы находитесь на странице: 1из 5

Laboratorio de Microcontroladores

UNIVERSIDAD DE GUANAJUATO
F. I. M. E. E.

Laboratorio de Microcontroladores
Prctica de Laboratorio No. 6:
Acceso a la memoria EEPROM

Gustavo Cerda Villafaa, Sergio Ledesma Orozco, Miguel Torres Cisneros

F.I.M.E.E.

Laboratorio de Microcontroladores

F.I.M.E.E.

Prctica de Laboratorio No. 6


ACCESO A LA MEMORIA EEPROM
Objetivo:
Programar el microcontrolador para que utilice la memoria de datos EEPROM.

Componentes:
1
8
8
1
1
1

Microcontrolador PIC 16F883 o 16F887


LEDs
resistores de 220
resistor menor a 40K
resistor mayor a 1K
capacitor electroltico de cualquier valor

Equipo:
1
1
1
1

Fuente de +5V
Punta lgica
Multmetro
Plantilla

1.1 Introduccin.
En esta prctica se programar el PIC para que acceda a la memoria de datos EEPROM. Ya que esta memoria no
se borra si se desconecta la alimentacin al microcontrolador, permite guardar datos que no se quieran perder.
La memoria EEPROM es una memoria no voltil, permitiendo almacenar datos que no se quieran perder si se le
corta la alimentacin al microcontrolador. Tanto para el PIC16F883 como para el PIC16F887 el tamao es de
256 bytes con las direcciones 00h a FFh.
El acceso a esta memoria es indirecto y se lleva a cabo mediante el manejo de los siguientes registros:
BANCO 2
EEDATA (10Ch)
EEADR (10Dh)

BANCO 3
EECON1 (18Ch)
EECON2 (18Dh)

EEADR Este registro se carga con la direccin de memoria a la que se quiere escribir o de la que se
quiere leer.
EEDATA Este registro se carga con el dato que se quiere guardar o, al realizar un proceso de lectura,
guarda el dato almacenado en la direccin especificada en EEADR.
EECON1 Es el registro de control
EECON2 No es un registro fsico. Se utiliza solamente en la secuencia de escritura de la EEPROM.

Registro EECON1
R/W-x
EEPGD
bit 7
bit 7

U-0
-

U-0
-

U-0
-

R/W-x
WRERR

EEPGD: bit selector de memoria de programa/datos


1 = Acceso a la memoria de programa

Gustavo Cerda Villafaa, Sergio Ledesma Orozco, Miguel Torres Cisneros

R/W-0
WREN

R/S-0
WR

R/S-0
RD
bit 0

Laboratorio de Microcontroladores

F.I.M.E.E.

0 = Acceso a la memoria de datos


bit 6-4 No impementados: Se leen como 0
bit 3
WRERR: bit de bandera de error de EEPROM

bit 2

bit 1

bit 0

1 = Una operacin de escritura fue interrumpida ( MCLR o reinicio por el WDT en operacin normal).
0 = Operacin de escritura completada
WREN: bit de habilitacin de escritura de la EEPROM
1 = Permite ciclos de escritura
0 = No permite escribir en la EEPROM
WR: bit de control de escritura
1 = Inicia un ciclo de escritura. El bit se limpia por hardware al finalizar
0 = Ciclo de escritura de la EEPROM completo
RD: bit de control de lectura
1 = Inicia la lectura de la EEPROM; se limpia por hardware
0 = No se inicia la lectura de la EEPROM

1.2 Desarrollo.
A. El cdigo a implementar generar un contador como en la prctica 1. El valor del contador se ira guardando
en la memoria EEPROM, de tal forma que al interrumpir momentneamente la alimentacin del
microcontrolador este continuar en el valor que el contador llevaba antes de la interrupcin. El cdigo en
ensamblador es el siguiente (en caso de duda de cmo hacerlo consulte la Prctica No. 1)
; Programa que lee y guarda el valor de un contador en
; la memoria EEPROM
LIST P = 16f883
#include "P16F883.INC"

; Comando que indica el PIC usado

__CONFIG _CONFIG1, _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON &
_CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF;
__CONFIG _CONFIG2, _WRT_OFF & _BOR40V;
RADIX

HEX

; Los valores se representan en hexadecimal

AUX1 EQU 0x20


AUX2 EQU 0x21
AUX3 EQU 0x22
inicio
bsf
bsf
clrf
clrf
bcf
movlw
movwf
clrf
bcf
clrf

STATUS,5
STATUS,6
ANSEL
ANSELH
STATUS,6
0xFF
TRISA
TRISB
STATUS,5

; Pone a 1 los bits 5 y 6 de STATUS para cambiar


; al banco 3 de la memoria de datos
; Se definen PORTA y PORTB como digitales
; Cambio al banco 1
; W <= ff (hex)
; W => TRISA (las lneas de PA como entradas)
; W => TRISB (las lneas de PB salidas)
; Cambio al banco 0

AUX1

; Se limpia el contador AUX1

; ****** subrutina de lectura de EEPROM *********


bsf
STATUS,RP1
; Cambio al banco 2
movlw
0x00
movwf
EEADR
; Direccin de memoria a leer

Gustavo Cerda Villafaa, Sergio Ledesma Orozco, Miguel Torres Cisneros

Laboratorio de Microcontroladores

F.I.M.E.E.

bsf
bcf
bsf
bcf
movf
bcf
movwf

STATUS,RP0
EECON1,EEPGD
EECON1,RD
STATUS,RP0
EEDATA,W
STATUS,RP1
AUX1

; Cambio al banco 3
; Selecciona memoria de datos
; Lee EEPROM
; Cambio al banco 2
; W <= Datos de EEPROM
; Cambio al banco 0
; AUX1 <= W

loop
btfsc
clrf
incf
movf
movwf
bsf
bcf
movwf
bsf
bcf
bsf
movlw
movwf
movlw
movwf
bsf
bcf
bcf
bcf
call
goto

PORTA,0
AUX1
AUX1,F
AUX1,w
PORTB
STATUS,RP1
STATUS,RP0
EEDATA
STATUS,RP0
EECON1,EEPGD
EECON1,WREN
0x55
EECON2
0xAA
EECON2
EECON1,WR
EECON1,WREN
STATUS,RP0
STATUS,RP1
retardo
loop

; Si bit 0 = 1 entonces resetea el contador


; Incrementa el contador
; W <= AUX1
; W => Puerta B.
; Cambio a banco 2
; en la memoria
; Cambio a banco 3
; Selecciona memoria de datos
; Habilita la escritura
;
; Linea obligatoria
;
; Linea obligatoria
; Inicio de escritura
; Deshabilita escritura
; Cambia a banco 0
; Llama subrutina de retardo
; Reinicia el ciclo

;********* SUBRUTINA DE RETARDO ************************


;Esta rutina se utiliza como un divisor de frecuencia, ya que no
;se puede utilizar la frecuencia del PIC de manera directa.
retardo
movlw
0xff
movwf
AUX2
;se lleva este valor a AUX2
one
call
retardo2
decfsz
AUX2,1
;Se decrementa AUX2 y se deposita en ella misma
goto
one
;si llega a cero sale de la rutina
return
;Una vez completados los ciclos se regresa ;al programa principal
retardo2
movlw
0xff
movwf
AUX3
;se lleva este valor a AUX3
two
decfsz
AUX3,1
;Se decrementa AUX3 y se deposita en ella misma
goto
two
;si llega a cero sale de la rutina
return
;Una vez completados los ciclos se regresa
;al programa principal
retfie
Directiva que indica el final del programa

B. Ya que se haya programado el PIC, este se inserta en la plantilla de trabajo y se conectar de acuerdo con el
siguiente diagrama que es para el PIC16F883. Si utiliza el PIC16F887 cambie los pines de acuerdo al diagrama
correspondiente en la hoja de datos. Tenga cuidado al manejar el PIC de no daarlo con electricidad esttica

Gustavo Cerda Villafaa, Sergio Ledesma Orozco, Miguel Torres Cisneros

Laboratorio de Microcontroladores

F.I.M.E.E.

(utilizar pinzas para su manejo). El voltaje que se utilizar es de 5V para VDD y 0V para VSS. Los LEDs se
conectaran a cada pin del PUERTO B con una resistencia de 220 en serie.

Los valores para los componentes descritos en la figura se dan en la siguiente tabla:
Smbolo
VDD
R1
R2
C1

Valor Min
5V
1K
ND

Valor Max
5V
40K
ND

Las resistencias R1, R2 y el capacitor C1 son recomendados por el fabricante para evitar que voltajes fuera de
rango lleven el dispositivo a reinicios o consumos de energa ms all de los especificados para el dispositivo.
Al estar operando el PIC se debe desconectar la fuente de alimentacin y, al volver a conectarse el
microcontrolador debe continuar la cuenta en el valor que se qued antes de desconectarlo. Presente este
procedimiento al profesor.

1.3 Ejercicios
1. Si se quiere acceder a la memoria de programa FLASH, qu otros registros se deben utilizar? Para qu
sirven?.
2. Al acceder a la memoria de programa FLASH el cdigo requiere dos lneas NOP (no operation) Para qu se
utilizan? Se requieren en el proceso de escritura en el de lectura?.

Gustavo Cerda Villafaa, Sergio Ledesma Orozco, Miguel Torres Cisneros

Вам также может понравиться