Hola BrunoF!
Como lo indique, estoy trabajando con un pic 16F84A...
He hecho algunos ensayos, aparentemente solo me esta quemando el primer dato... el siguiente simplemente no lo escribe... esto lo pude mirar utilizando el WinPic800 para mirar los datos almacenados
Para que no sea tan dificil de entender, la variable vuelta esta compuesta por una parte alta y una baja (vuelta_L y vuelta_H), ademas el registro llamado DIR_EEPROM, es el ancargado de almacenar por un momento la direccion donde deseo que se almacene el dato
Este es el codigo de la rutina para escribir la eeprom:
ESCRIBIR_EEPROM
BANKSEL EEDATA
MOVF VUELTA_L, W
MOVWF EEDATA
MOVF DIR_EEPROM,W
MOVWF EEADR
BCF INTCON, GIE
BANKSEL EECON1
BSF EECON1, WREN
MOVLW H'55'
MOVWF EECON2
MOVLW H'AA'
MOVWF EECON2
BSF EECON1, WR
BSF INTCON, GIE
BCF EECON1, WREN
BCF EECON1, EEIF
RETURN
Esta es la subrutina que utiliza dos veces el codigo anterior para crear 2 registros eeprom
BORRAR_EEPROM
MOVLW B'11101000'
MOVWF VUELTA_L
MOVLW B'00000000'
MOVWF DIR_EEPROM
CALL ESCRIBIR_EEPROM
MOVLW B'00000011'
MOVWF VUELTA_L
MOVLW B'00000001'
MOVWF DIR_EEPROM
CALL ESCRIBIR_EEPROM
RETFIE
Este es el final de la subrutina que se ejecuta despues de cada reset
....(otro codigo)...
BANKSEL INTCON
MOVLW B'10111000'
MOVWF INTCON
BSF CONTROL_DISPLAY, DIG_UNIDAD
CALL LEER_EEPROM
RETURN
Y por ultimo, esta es la subrutina leer_eeprom
LEER_EEPROM
BANKSEL EEADR
MOVLW B'00000000'
MOVWF EEADR
BANKSEL EECON1
BSF EECON1, RD
BANKSEL EEDATA
MOVF EEDATA, W
MOVWF VUELTA_L
MOVLW B'00000001'
MOVWF EEADR
BANKSEL EECON1
BSF EECON1, RD
BANKSEL EEDATA
MOVF EEDATA, W
MOVWF VUELTA_H
RETURN
Como pueden ver, es todo lo que dice en el pdf de microchip.
De nuevo muchas gracias!!
Pepe-grillo