PIC16F87XA
following the “BSF EECON1,RD” instruction to be
ignored. The data is available in the very next cycle, in
the EEDATA and EEDATH registers; therefore, it can be
read as two bytes in the following instructions. EEDATA
and EEDATH registers will hold this value until another
read or until it is written to by the user (during a write
operation).
3.5
Reading FLASH Program Memory
To read a program memory location, the user must write
two bytes of the address to the EEADR and EEADRH
registers, set the EEPGD control bit (EECON1<7>),
and then set control bit RD (EECON1<0>). Once the
read control bit is set, the program memory FLASH con-
troller will use the next two instruction cycles to read the
data. This causes these two instructions immediately
EXAMPLE 3-3:
FLASH PROGRAM READ
BSF
BCF
STATUS, RP1
STATUS, RP0
MS_PROG_EE_ADDR
EEADRH
LS_PROG_EE_ADDR
EEADR
STATUS, RP0
EECON1, EEPGD
EECON1, RD
;
; Bank 2
;
MOVLW
MOVWF
MOVLW
MOVWF
BSF
; MS Byte of Program Address to read
;
; LS Byte of Program Address to read
; Bank 3
; Point to PROGRAM memory
; EE Read
BSF
BSF
;
NOP
NOP
; Any instructions here are ignored as program
; memory is read in second cycle after BSF EECON1,RD
;
BCF
STATUS, RP0
EEDATA, W
DATAL
EEDATH, W
DATAH
;
MOVF
MOVWF
MOVF
MOVWF
; W = LS Byte of Program EEDATA
;
; W = MS Byte of Program EEDATA
;
DS39582A-page 34
Advance Information
2001 Microchip Technology Inc.