Datasheet

2007-2012 Microchip Technology Inc. DS39778E-page 103
PIC18F87J11 FAMILY
7.5.2 FLASH PROGRAM MEMORY WRITE
SEQUENCE (WORD
PROGRAMMING).
The PIC18F87J11 family of devices have a feature that
allows programming a single word (two bytes). This
feature is enable when the WPROG bit is set. If the
memory location is already erased, the following
sequence is required to enable this feature:
1. Load the Table Pointer register with the address
of the data to be written
2. Write the 2 bytes into the holding registers and
perform a table write
3. Set the WREN bit (EECON1<2>) to enable byte
writes.
4. Disable interrupts.
5. Write H
'55' to EECON2.
6. Write H
'AA' to EECON2.
7. Set the WR bit. This will begin the write cycle.
8. The CPU will stall for duration of the write for TIW
(see Parameter D133A).
9. Re-enable interrupts.
EXAMPLE 7-4: SINGLE-WORD WRITE TO FLASH PROGRAM MEMORY
MOVLW CODE_ADDR_UPPER ; Load TBLPTR with the base address
MOVWF TBLPTRU
MOVLW CODE_ADDR_HIGH
MOVWF TBLPTRH
MOVLW CODE_ADDR_LOW
MOVWF TBLPTRL
MOVLW DATA0
MOVWF TABLAT
TBLWT*+
MOVLW DATA1
MOVWF TABLAT
TBLWT*
PROGRAM_MEMORY
BSF EECON1, WPROG ; enable single word write
BSF EECON1, WREN ; enable write to memory
BCF INTCON, GIE ; disable interrupts
MOVLW H'55'
Required MOVWF EECON2 ; write H'55'
Sequence MOVLW H'AA'
MOVWF EECON2 ; write H'AA'
BSF EECON1, WR ; start program (CPU stall)
BSF INTCON, GIE ; re-enable interrupts
BCF EECON1, WPROG ; disable single word write
BCF EECON1, WREN ; disable write to memory