Problema en la escritura de datos en la memoria EEPROM del PIC

#1
Hola a tod@s!
Os cuento mi caso:
Yo quería escribir datos en la memoria EEPROM del PIC16F88, busqué en el datasheet del pic en cuestión y este ya trae un ejemplo de como escribir datos en la eeprom. El problema viene ahora, porque al querer simular el programa con el MPLAB no me escribe el dato correcto en la eeprom...
Simulé paso a paso y el fallo está cuando se ejecuta la intruccion --> "MOVF DIRECCION, W" al ejecutar esta instrucción en vez de pasar a W el valor de DIRECCION pasa un 0. Porqué? Aquí está mi problema, alguién tiene alguna idea?
Ayuda por favor!

El codigo del programa es este:
Código:
LIST P=16F88
	RADIX HEX
	INCLUDE <P16F88.INC>


VALOR		EQU 0x30		
DIRECCION	EQU	0x31


	ORG 0x00

INICIO
	
	MOVLW	d'3'
	MOVWF	VALOR	
	MOVLW	0x11
	MOVWF	DIRECCION

ESCRIBIR
	BANKSEL	EECON1 		; Select Bank of EECON1
						 
	BTFSC 	EECON1, WR 	; Wait for write
	GOTO 	$-1 		        ; to complete
	BANKSEL EEADR 		; Select Bank of
						; EEADR

	MOVF 	DIRECCION, W 	; AQUI ME PONE UN CERO EN W ! PORQUE?

	MOVWF 	EEADR 		; Data Memory
						; Address to write
	MOVF 	VALOR, W 	; Poner Valor!
	MOVWF 	EEDATA 		; Data Memory Value
						; to write
	BANKSEL EECON1 		; Select Bank of
						; EECON1
	BCF 	EECON1, EEPGD	; Point to DATA
						; memory
	BSF 	EECON1, WREN ; Enable writes

	BCF 	INTCON, GIE 	; Disable INTs.
	MOVLW 	55h 		;
	MOVWF 	EECON2 		; Write 55h
	MOVLW 	0AAh 		;
	MOVWF 	EECON2 		; Write AAh
	BSF 	EECON1, WR 	; Set WR bit to begin write
						
	BSF INTCON, GIE 	; Enable INTs.
	BCF EECON1, WREN 	; Disable writes
	
	END
 
#2
El problema es muy sencillo. Estás trabajando en el banco 2. AL poner mov DIRECCION, W lo que hace lee en la pocición equivalente sobre este banco. Para solucionar esto tenes que volver al banco 0 antes de leer la pocición de memoria DIRECCION o renombra una pocición de memoria en el banco 2

¿Me explico?
 
Arriba