English
Language : 

PIC16F87XA Datasheet, PDF (38/234 Pages) Microchip Technology – 28/40/44-Pin Enhanced Flash Microcontrollers
PIC16F87XA
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 controller
will use the next two instruction cycles to read the data.
This causes these two instructions immediately follow-
ing 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).
EXAMPLE 3-3:
BSF
BCF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
BSF
BSF
;
NOP
NOP
;
BCF
MOVF
MOVWF
MOVF
MOVWF
FLASH PROGRAM READ
STATUS, RP1
STATUS, RP0
MS_PROG_EE_ADDR
EEADRH
LS_PROG_EE_ADDR
EEADR
STATUS, RP0
EECON1, EEPGD
EECON1, RD
;
; Bank 2
;
; MS Byte of Program Address to read
;
; LS Byte of Program Address to read
; Bank 3
; Point to PROGRAM memory
; EE Read
STATUS, RP0
EEDATA, W
DATAL
EEDATH, W
DATAH
; Any instructions here are ignored as program
; memory is read in second cycle after BSF EECON1,RD
; Bank 2
; W = LS Byte of Program EEDATA
;
; W = MS Byte of Program EEDATA
;
DS39582B-page 36
 2003 Microchip Technology Inc.