problema resuelto.....
ha sido un poco lío con tanto cambio de bancos...... ahí he tenido todos los problemas.
pero ya me funciona a la perfeccion. claro que podria optimizar el codigo, pero bueno, lo que quería (que funcionara) ya está. gracias!
aqui mi codigo:
;********************************
;* Escribir Dato en la EEPROM *
;********************************
escribir_eeprom
bcf STATUS,RP0 ;Seleccionamos Banco 2
bsf STATUS,RP1
movlw adresseeprom ;Ponemos en W la dirección que vamos a escribir
movwf EEADR ;y la guardamos en EEADR
bcf STATUS,RP1 ;Seleccionamos Banco 0
movf contador,w ;Ponemos ahora el dato a escribir en W
bsf STATUS,RP1 ;Seleccionamos Banco 2
movwf EEDATA ;y lo guardamos en EEDATA
bsf STATUS,RP0 ;Seleccionamos Banco 3
bcf EECON1,EEPGD
bsf EECON1,WREN ;Colocamos el permiso de escritura (WREN) en EECON1 a 1
;Aquí da inicio la secuencia de escritura
movlw 0x55 ;Inicio de las intrucciones para EECON2
movwf EECON2
movlw 0xAA
movwf EECON2 ;Fin de las intrucciones para EECON2
bsf EECON1,WR ;Comienza la escritura propiamente dicha.
btfsc EECON1,WR ;esperar a que termine (10 ms)
goto $-1
bcf STATUS,RP0 ;cambiar a Banco 0
bcf STATUS,RP1
return