Problema con la memoria eeprom de pic16f876

problema con la memoria eeprom de pic16f876

El problema es que cuando intento grabar los datos en la eeprom no lo hace con un 16f84 si puedo, pero con el 16f876 no. Les dejo la rutina que utilizo y si pueden pasarme un ejemplo lo agradecería y la rutina la simulo con el proteus.

Código:
EDITNDO	BSF 	STATUS,RP1 ;     Salto desde el programa para editar
	
	MOVF	conta,W		;dato a guardar
	MOVWF	0X19		
	MOVF	0x18,W		;Dirección de eeprom '0 a 3'
	MOVWF	EEADR		;cargo dirección
	MOVF	0X19,W		;Didito del teclado
	MOVWF	EEDATA		;Cargo digito
	BSF 	STATUS,RP0
	BcF 	EECON1,EEPGD
	BSF	EECON1,WREN
	MOVLW	0x55
	MOVWF	EECON2
	MOVLW	0xAA
	MOVWF	EECON2
	BSF	EECON1,WR
ESPERO	BTFSC	EECON1,WR	;espero que grabe
	GOTO	ESPERO		;
	BCF 	EECON1,WREN
	BCF	EECON1,EEIF
	BCF	STATUS,RP0

	BCF	STATUS,RP1
	
;ESTA PARTE ES PARA INCREMENTAR LA DIRECCIN DE LA EEPROM
	BSF	PORTC,7
	INCF	0x18,F		;incremento dirección de eeprom
	MOVF	0X018,W		;direccion de eeprom 0 a 3
	XORLW	0X04		;comparo direción con 4
	BTFSS	STATUS,2	;si es 4 Z es 1 y salt
	BSF	PORTC,3
	GOTO	DIGEE		;sino sigo editando
	BCF	TETEE,0
	GOTO	RESET		;fin de edicion de eeprom


GRACIAS!
 
Creo que te falta seleccionar bien la pagina de los registros EEADR y EEDATA se encuentran en la pagina 2 de los registros de función especial y EECON1,EECON2 en la pagina 3, en el 16F876 es diferente que el 16F84. Dale un vistazo a la hoja de datos de Microchip donde encontraras ejemplos de como leer y escribir en la EEPROM.
 
Mirá si te sirve acá te dejo un ejemplo de lectura/escritura con memoria EEPROM del pic 16f876 en lenguaje c, lo probe en proteus y funciona
 

Adjuntos

  • eeprom_207.c
    2.2 KB · Visitas: 107
Moyano Jonathan dijo:
Mirá si te sirve acá te dejo un ejemplo de lectura/escritura con memoria EEPROM del pic 16f876 en lenguaje c, lo probe en proteus y funciona

hola amigo, no se muy bien el funcionamiento del foro y es por eso que te pongo aqui el problema por si me puedes ayudar

Hola Amigos tengo lo que para mi es un gran problema y espero que no tanto para vosotros
siempre he programado sobre el pic 16f84 y ahora necesito el 16f876 pero por mas que miro en los libros no se descifrar cuales son las direcciones de la ram y de la eeprom donde puedo escribir
os ruego si me podeis ayudar que me mandeis estos datos

miles de gracias
 
Trabajando con Assembler, para no errarle el banco de la RAM donde está el registro es muy útil la macro banksel. Evita tener que andar seteando los bits RP0 y RP1.
Se debe invocar inmediatamente antes de usar un registro, no importa si es del usuario o del sistema.

Ejemplo:
Código:
banksel  trisa
movfw    trisa
banksel  porta
clrf   porta
 
Hola de Nuevo,
no se si era para mi el mensaje anterior pero sio fuese asi aparte de agradecido, dire que no lo entiendo en los manuales, tengo muchos manuales pero no lo pone bien o al menos de forma que yo lo entienda

necesito saber la direccion de todos los registros de ram ejemplo 0x0c y de eeprom ya no se ninguno

me gustaria saber esto porque me hace muchisima falta, necesito escribir en al menos en 40 registros de la eeprom y en otros tantos de la ram

gracias de nuevo
 
JJ-ROTOR dijo:
Hola de Nuevo,
no se si era para mi el mensaje anterior pero sio fuese asi aparte de agradecido, dire que no lo entiendo en los manuales, tengo muchos manuales pero no lo pone bien o al menos de forma que yo lo entienda

necesito saber la direccion de todos los registros de ram ejemplo 0x0c y de eeprom ya no se ninguno

me gustaria saber esto porque me hace muchisima falta, necesito escribir en al menos en 40 registros de la eeprom y en otros tantos de la ram

gracias de nuevo

Disculpa pero recién veo este mensaje.
Las dimensiones de memoria las encontrás en las hojas de datos que se pueden bajar del sitio de microchip.
Tanto el Pic 16F876 como su versión A (876A) tienen:
368 registros de 8 bits en memoria Flash para datos de usuario,
256 registros de 8 bits en memoria EEPROM.

La EEPROM tiene las direcciones numeradas desde la 00 hasta FF.
Para la memoria de datos tenés un mapa de direcciones en:
la página 13 de la hoja de datos del PIC16F876,
y la página 17 de la hoja de datos del PIC16F876A.
 
vos el problema lo tenes que solucionar si o si en asm o en c tamabien lo podes? ya que el ejemplo que te deje graba perfectamente la eeprom interna. En asm es mas complicado el tema pero estuve viendo tu codigo y tendría que funcionar
 
Atrás
Arriba