Funcionamiento del siguiente programa:
Cada vez que pulsamos el boton reset o apagamos y volvemos a encender el circuito incrementa un contador guardado en la EEPROM que luego se muestra en un display.
bueno mi pregunta es si cuando trabajo con la EEPROM, ya sea de un pic, o un circuito integrado independiente, en este caso un PIC 16F84A , cargo el programa , pero al apagar y volver a iniciar la simulacion la EEPROM vuelve a su estado inicial, proteus no guarda la EEPROM al apagar la simulacion? o como podria hacer eso? les dejo mi programa para que puedan verlo, he escuchado que si guarda,pero no se por que en este caso no
incluso al comienzo tuve un pequeño error, y en vez de indicar la direccion de la eepron donde lo cargue con 0x00, lei la direccion siguiente, es decir .14 en vez de .13 en el siguiente codigo
y gracias a ese error si guardaba los datos a la eeprom simulando proteus aunque lo apagara y volviera a encender
... raro, obviamente que comenzaba desde un numero raro, ya que esa direccion originalmente viene cargada con 0xFF si no me equivoco, igual que en cualquier otra direccion no utilizada
la cuestion es que aumentaba normal con el Contador, (supongo que se desbordo) y al detener la simulacion y volver a iniciar mostraba el valor en que se quedó, pero con el codigo actual no pasa eso, alguien sabe por que?
Cada vez que pulsamos el boton reset o apagamos y volvemos a encender el circuito incrementa un contador guardado en la EEPROM que luego se muestra en un display.
bueno mi pregunta es si cuando trabajo con la EEPROM, ya sea de un pic, o un circuito integrado independiente, en este caso un PIC 16F84A , cargo el programa , pero al apagar y volver a iniciar la simulacion la EEPROM vuelve a su estado inicial, proteus no guarda la EEPROM al apagar la simulacion? o como podria hacer eso? les dejo mi programa para que puedan verlo, he escuchado que si guarda,pero no se por que en este caso no
Código:
;ZONA DE DATOS*************************************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK 0x0C
Contador
ENDC
ORG 0x2100
DE "Primer eeprom",0x00
NumeroSecreto EQU .13
;ZONA DE CODIGOS***********************************************************************************
ORG 0
Inicio
call LCD_Inicializa
movlw .13 ;es la posicion despues del mensaje grabado "Primer eeprom"
call EEPROM_LeeDato ;lee la primera posicion de EEPROM
movwf Contador
movlw NumeroSecreto
subwf Contador,W
btfsc STATUS,Z ;comprobamos si llego al maximo
goto MicroBloqueado ;alcanzado maximo de reseteos, se bloquea
movf Contador,W ;no se alcanzo el maximo, sigue rutina
call BIN_a_BCD
call LCD_Byte
movlw MensajeReseteado
call LCD_Mensaje
incf Contador,W
call EEPROM_EscribeDato
Principal
sleep
goto Principal
MicroBloqueado
movlw MensajeBloqueado
call LCD_Mensaje
goto Principal
Mensajes
addwf PCL,F
MensajeReseteado
DT " Reseteados. ",0x00
MensajeBloqueado
DT "Estoy Bloqueado",0x00
incluso al comienzo tuve un pequeño error, y en vez de indicar la direccion de la eepron donde lo cargue con 0x00, lei la direccion siguiente, es decir .14 en vez de .13 en el siguiente codigo
movlw .13 ;es la posicion despues del mensaje grabado "Primer eeprom"
y gracias a ese error si guardaba los datos a la eeprom simulando proteus aunque lo apagara y volviera a encender
la cuestion es que aumentaba normal con el Contador, (supongo que se desbordo) y al detener la simulacion y volver a iniciar mostraba el valor en que se quedó, pero con el codigo actual no pasa eso, alguien sabe por que?
Adjuntos
Última edición: