12.3.8 Erasing the Data EEPROM Memory
Data EEPROM Memory can be erased by writing 0xFF to all locations in the Data EEPROM Memory that need to be erased.
Data EEPROM Erase Routine
CLRF NVMADRL ; Clear address low byte
CLRF NVMADRH ; Clear address high byte (if applicable)
BCF NVMCON1, NVMREG0 ; Set access for EEPROM
BCF NVMCON1, NVMREG1 ; Set access for EEPROM
SETF NVMDAT ; Load 0xFF to data register
BCF INTCON, GIE ; Disable interrupts
BSF NVMCON1, WREN ; Enable writes
Loop: ; Loop to refresh array
MOVLW 0x55 ; Initiate unlock sequence
MOVWF NVMCON2 ;
MOVLW 0xAA ;
MOVWF NVMCON2 ;
BSF NVMCON1, WR ; Set WR bit to begin write
BTFSC NVMCON1, WR ; Wait for write to complete
BRA $-2
INCFSZ NVMADRL, F ; Increment address low byte
BRA Loop ; Not zero, do it again
; The following 4 lines of code are not
needed if the part doesn't have
NVMADRH register
INCF NVMADRH, F ; Decrement address high byte
MOVLW 0x03 ; Move 0x03 to working register
CPFSGT NVMADRH ; Compare address high byte with working
register
BRA Loop ; Skip if greater than working register
; Else go back to erase loop
BCF NVMCON1, WREN ; Disable writes
BSF INTCON, GIE ; Enable interrupts