
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
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