English
Language : 

PIC16F722 Datasheet, PDF (189/302 Pages) Microchip Technology – 28/40/44-Pin Flash Microcontrollers with nanoWatt XLP Technology
PIC16F72X/PIC16LF72X
18.0 PROGRAM MEMORY READ
The Flash program memory is readable during normal
operation over the full VDD range of the device. To read
data from Program Memory, five Special Function
Registers (SFRs) are used:
• PMCON1
• PMDATL
• PMDATH
• PMADRL
• PMADRH
The value written to the PMADRH:PMADRL register
pair determines which program memory location is
read. The read operation will be initiated by setting the
RD bit of the PMCON1 register. The program memory
flash controller takes two instructions to complete the
read, causing the second instruction after the setting
the RD bit will be ignored. To avoid conflict with pro-
gram execution, it is recommended that the two instruc-
tions following the setting of the RD bit are NOP. When
the read completes, the result is placed in the
PMDATLH:PMDATL register pair. Refer to
Example 18-1 for sample code.
Note:
Code-protect does not effect the CPU
from performing a read operation on the
program memory. For more information,
refer to Section 8.2 “Code Protection”
EXAMPLE 18-1: PROGRAM MEMORY READ
BANKSEL
MOVF
MOVWF
MOVF
MOVWF
BANKSEL
BSF
NOP
NOP
BANKSEL
MOVF
MOVWF
MOVF
MOVWF
PMADRL
;
MS_PROG_ADDR, W ;
PMADRH
;MS Byte of Program Address to read
LS_PROG_ADDR, W ;
PMADRL
;LS Byte of Program Address to read
PMCON1
;
PMCON1, RD
;Initiate Read
PMDATL
PMDATL, W
LOWPMBYTE
PMDATH, W
HIGHPMBYTE
;Any instructions here are ignored as program
;memory is read in second cycle after BSF
;
;W = LS Byte of Program Memory Read
;
;W = MS Byte of Program Memory Read
;
© 2009 Microchip Technology Inc.
DS41341E-page 189