> Any idea what could be going wrong here? Neildude, I use this 628 routine, a little different to yours but it works OK. Note that bank0 and bank1 macros or BANKSEL address both RP bits bank1 movwf eedata ;data already in W bank0 movf eea,w ;eea is a Bank0 variable bank1 movwf eeadr bcf intcon,gie bsf eecon1,wren movlw 0x55 movwf eecon2 movlw 0xaa movwf eecon2 bsf eecon1,wr ;initiate write bank0 btfss pir1,eeif ;wait for write complete goto $-1 bcf pir1,eeif return I wonder if there's a complication with the timers in your app ? Maybe when you re-enable the interupts there's a flag set that causes an ISR to be executed. Perhaps test the flags before you re-enable GIE -- http://www.piclist.com#nomail Going offline? Don't AutoReply us! email listserv@mitvma.mit.edu with SET PICList DIGEST in the body