Microchip Technology DV164136 Data Sheet

Page of 466
 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 T
IW
(see Parameter 
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