English
Language : 

PIC16F882-I Datasheet, PDF (117/328 Pages) Microchip Technology – 28/40/44-Pin, Enhanced Flash-Based 8-Bit CMOS Microcontrollers
PIC16F882/883/884/886/887
10.1.4 READING THE FLASH PROGRAM
MEMORY
To read a program memory location, the user must
write the Least and Most Significant address bits to the
EEADR and EEADRH registers, set the EEPGD con-
trol bit of the EECON1 register, and then set control bit
RD. Once the read control bit is set, the program mem-
ory Flash controller will use the second instruction
cycle to read the data. This causes the second instruc-
tion immediately following the “BSF EECON1,RD”
instruction to be ignored. The data is available in the
very next cycle, in the EEDAT and EEDATH registers;
therefore, it can be read as two bytes in the following
instructions.
EEDAT and EEDATH registers will hold this value until
another read or until it is written to by the user.
Note 1: The two instructions following a program
memory read are required to be NOPs.
This prevents the user from executing a
two-cycle instruction on the next
instruction after the RD bit is set.
2: If the WR bit is set when EEPGD = 1, it
will be immediately reset to ‘0’ and no
operation will take place.
EXAMPLE 10-3: FLASH PROGRAM READ
BANKSEL EEADR
MOVLW MS_PROG_EE_ADDR
MOVWF EEADRH
MOVLW LS_PROG_EE_ADDR
MOVWF EEADR
BANKSEL EECON1
BSF
EECON1, EEPGD
BSF
EECON1, RD
;
NOP
NOP
;
BANKSEL EEDAT
MOVF EEDAT, W
MOVWF LOWPMBYTE
MOVF EEDATH, W
MOVWF HIGHPMBYTE
BCF
STATUS, RP1
;
;
;MS Byte of Program Address to read
;
;LS Byte of Program Address to read
;
;Point to PROGRAM memory
;EE Read
;First instruction after BSF EECON1,RD executes normally
;Any instructions here are ignored as program
;memory is read in second cycle after BSF EECON1,RD
;
;W = LS Byte of Program Memory
;
;W = MS Byte of Program EEDAT
;
;Bank 0
© 2009 Microchip Technology Inc.
DS41291F-page 115