EEprom pic16f688

Boa noite Pessoal;
Estou com com problema na gravação \ leitura da eeprom do pic16F688.
como mando gravar\ler em seguida "" aparentemente está ok o programa.
não achei nda no forum ref.. a eeprom 16f688
1 teste :
aparentemente ta gravando e lendo ok.
asm code
2. teste o dado lido não correspoende ao dado gravado anteriormente.
asm code
asm code
OBS. independete se gravo usando interrupão\eepron ou espero EEcon1,WR =0. da o memso erro.
No __config ta tudo desabilitado para codigo de proteção, tambem teentei a sorte habilitando mesmo e nada feito.
Obrigo Tiago
Estou com com problema na gravação \ leitura da eeprom do pic16F688.
como mando gravar\ler em seguida "" aparentemente está ok o programa.
não achei nda no forum ref.. a eeprom 16f688
1 teste :
aparentemente ta gravando e lendo ok.
asm code
GRAVA_TECLA:
CLRF PORTC
CLRF DADO_LIDO_MEMO
; GOTO TEEE
MOVLW 25H
MOVWF ENDE_MEMO
MOVLW B'11111010'
MOVWF DADO_MEMO ; dado a ser gravado
CALL GRAVA_MEMO
;CALL DELAY_INICIA
TEEE:
CLRF DADO_LIDO_MEMO
CLRF DADO_MEMO
MOVLW 25H
MOVWF ENDE_MEMO
CALL LE_MEMO
MOVF DADO_LIDO_MEMO,W
MOVWF PORTC
CALL DELAY_INICIA
GOTO $
RETURN
2. teste o dado lido não correspoende ao dado gravado anteriormente.
asm code
GRAVA_TECLA:
CLRF PORTC
CLRF DADO_LIDO_MEMO
GOTO TEEE
MOVLW 25H
MOVWF ENDE_MEMO
MOVLW B'11111010'
MOVWF DADO_MEMO ; dado a ser gravado
CALL GRAVA_MEMO
;CALL DELAY_INICIA
TEEE:
CLRF DADO_LIDO_MEMO
CLRF DADO_MEMO
MOVLW 25H
MOVWF ENDE_MEMO
CALL LE_MEMO
MOVF DADO_LIDO_MEMO,W
MOVWF PORTC
CALL DELAY_INICIA
GOTO $
RETURN
asm code
LE_MEMO:
BANK0
MOVF ENDE_MEMO,W
BANK1
MOVWF EEADR ; Data Memory; Address to read
BCF EECON1, EEPGD ; Point to DATA; memory
BSF EECON1, RD ; EE Read
NOP
NOP
BTFSC EECON1, RD
GOTO $-1
MOVF EEDAT, W
BSF EECON1, RD
BANK0
MOVWF DADO_LIDO_MEMO
RETURN
GRAVA_MEMO:
BANK0
MOVF ENDE_MEMO,W
BANK1
MOVWF EEADR ; Data Memory Address to write
BANK0
MOVF DADO_MEMO,W
BANK1
MOVWF EEDAT ; Data Memory Value to write
BCF PIE1,EEIE
BCF EECON1, EEPGD ; Point to DATA memory
BSF EECON1, WREN ; Enable writes
BCF INTCON, GIE ; Disable INTs.
MOVLW 055h ;
MOVWF EECON2 ; Write 55h
MOVLW 0AAh ;
MOVWF EECON2 ; Write AAh
BSF EECON1, WR ; Set WR bit to begin write
BCF INTCON, GIE ; Enable INTs.
NOP
NOP
BTFSC EECON1, WR
GOTO $-1
BCF EECON1, WREN
BANK0
;BTFSS PIR1,EEIF
;GOTO $-1
;BCF PIE1,EEIE
RETURN
OBS. independete se gravo usando interrupão\eepron ou espero EEcon1,WR =0. da o memso erro.
No __config ta tudo desabilitado para codigo de proteção, tambem teentei a sorte habilitando mesmo e nada feito.
Obrigo Tiago