buenas noches mis hermanos, como estan, mi cuestionamiento es como sigue: estoy realizando un proyecto de contador de turno son un pic 16f873a, es necesario que ante un repentino corte de energia, en el micro quede guardado el ultimo turno, bueno, hasta aqui bien, hice las rutinas de configuracion de lectura escritura de la memoria flash del pic: QUE SON ESTAS:
LECTURA
BSF estado,6
BCF estado,5 ; Selecciona banco 2
MOVF MEM1_BAJO,0 ; Dirección a leer de
MOVWF EEADR ; la EEPROM PARTE BAJA
MOVF MEM1_ALTO,0 ; Dirección a leer de
MOVWF EEADRH ; la EEPROM PARTE ALTA
BSF estado,5 ; Selecciona banco 3
BSF EECON1,7 ; se selecciona el acceso a la flash
BSF EECON1,0 ; Activar lectura RD
ESPERA BTFSC EECON1,0 ; Espera final de lectura
GOTO ESPERA ; a que baje la bandera
BCF estado,5 ; Selecciona banco 2
MOVF EEDATA,0 ; W se carga con el valor
BCF estado,6 ; Selecciona banco 0
movwf registro ; leído en eeprom
goto bucle
ESCRITURA
BSF estado,6 ;pasamos al banco 2
bcf estado,5 ; Establecer EEADR y EEDATA
MOVF MEM1_BAJO,0
MOVWF EEADR ; Escribe la dirección en EEADR
MOVF MEM1_ALTO,0
MOVWF EEADRH ; Escribe la dirección en EEADR
MOVF registro,0
MOVWF EEDATA ; Se escribe el dato en EEDATA
BSF estado,5 ; Selecciona el banco 3
BSF EECON1,7 ; se selecciona el acceso a la flash
BSF EECON1,2 ; Permiso de escritura activado
;Comienzo de la secuencia de escritura
MOVLW 0x55
MOVWF EECON2 ; Se escribe el dato 55 h en EECON2
MOVLW 0xAA
MOVWF EECON2 ; Se escribe AA h en EECON2
BSF EECON1,1 ; Comienza la escritura
BCF EECON1,2 ; Permiso de escritura desactivado
CALL retardo
ESPERA_2 BTFSC EECON1,1 ; Espera a que termine la escritura
GOTO ESPERA_2
BCF estado,6 ; Selecciona el banco 0
BCF estado,5 ; Selecciona el banco 0
RETURN
compilo y todo bien,lo quiero simular en proteus pero el problema es que hay un aviso de que este esta protegido contra escritura, segun puedo notar se lee el dato de la eeprom, pero no puede ser escrita, el error dice
attempt to write program EEPROM 0X00EF not allowed - memory 0x0800-0x0FFF is market as qrite protected in configuration word.
lei al respecto y me dice que en este tipo de pic solo se puede escribir durante la ejecucion, y hay varios fuses para configurar el trabajo del micro, como ser el oscilador, perro guardian, el CP, etc, etc, y tambien hay uno que dice WRT, que segun lei es el que habilita la escritura, entonces puse lo siguiente al principio del programa:
list P=16F873A
include <p16F873A.inc>
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC
_WRT_OFF esta deshabilitado, por lo tanto deberia simulaR y escribir en el micro, pero no lo logro muchachos, me podrian dar una mano, y ver que podria estar haciendo mal?, gracias desde ya