Write to EEPROM will not work if you step through it. You must run through it without interrupts. You can use "Run to here" function to run to the end. I've noticed an error in the way you set your bank select in the beginning (I presume TEMP is in the first bank). Also you are not switching GIE off. Very important if you are using interrupts. I've also used the example in the manual and modified it for my use. Very similar to your code. I include it here so you can see the difference in bank select: Quentin WRT_EE MACRO AV1 MOVWF TEMP4 MOVF AV1,W BSF STATUS,RP1 BCF STATUS,RP0 MOVWF EEADR BCF STATUS,RP1 MOVF TEMP4,W BSF STATUS,RP1 MOVWF EEDATA BSF STATUS,RP0 BCF EECON1,EEPGD BSF EECON1,WREN BCF INTCON,GIE MOVLW 0X055 MOVWF EECON2 MOVLW 0X0AA MOVWF EECON2 BSF EECON1,WR NOP BTFSC EECON1,WR GOTO $-1 BCF PIR2,EEIF BCF EECON1,WREN BSF INTCON,GIE BCF STATUS,RP0 BCF STATUS,RP1 ENDM -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu