This is what I use to store EEPROM data. If writes are done more than approx. 10mS apart then the 'wtloop' can be deleted. bsf status,rp0 ; ram page 1 bcf eecon1,4 ; clear write completion bit bsf eecon1,2 ; set WREN bit = 1 nop movlw 55h ; eeprom write movwf eecon2 movlw 0xaa movwf eecon2 bsf eecon1,1 ; set WR bit to initiate write ; wtloop btfss eecon1,4 ; wait until write is finished (~10mS) goto wtloop ; bcf eecon1,2 ; clear WREN bit bcf status,rp0 ; ram page 0 incf eeadr ; set for next eeprom address Regards Tony Just when I thought I knew it all, I learned that I didn't.