English
Language : 

PIC16F72 Datasheet, PDF (30/136 Pages) Microchip Technology – 28-Pin, 8-Bit CMOS FLASH MCU with A/D Converter
PIC16F72
4.3 Reading the FLASH Program
Memory
To read a program memory location, the user must
write two bytes of the address to the PMADRL and
PMADRH registers and then set control bit, RD
(PMCON1<0>). Once the read control bit is set, the
program memory FLASH controller will use the second
instruction cycle after to read the data. This causes the
second instruction immediately following the “BSF
PMCON1,RD” instruction to be ignored. The data is
available in the very next cycle in the PMDATL and
PMDATH registers; therefore, it can be read as two
bytes in the following instructions. PMDATL and
PMDATH registers will hold this value until another
read, or until it is written to by the user (during a write
operation).
4.4 Operation During Code Protect
The FLASH program memory control can read any-
where within the program memory, whether or not the
program memory is code protected.
This does not compromise the code, because there is
no way to rewrite a portion of the program memory, or
leave contents of a program memory read in a register
while changing modes.
EXAMPLE 4-1: FLASH PROGRAM READ
BANKSEL
MOVLW
MOVWF
MOVLW
MOVWF
BANKSEL
BSF
NOP
NOP
BANKSEL
MOVF
MOVF
PMADRH
MS_PROG_EE_ADDR
PMADRH
LS_PROG_EE_ADDR
PMADRL
PMCON1
PMCON1, RD
PMDATL
PMDATL, W
PMDATH, W
; Select Bank for PMADRH
;
; MS Byte of Program Address to read
;
; LS Byte of Program Address to read
; Select Bank for PMCON1
; EE Read
;
; Any instructions here are ignored as program
; memory is read in second cycle after BSF PMCON1,RD
;
; First instruction after BSF PMCON1,RD executes normally
; Select Bank for PMDATL
; W = LS Byte of Program PMDATL
; W = MS Byte of Program PMDATL
TABLE 4-1: REGISTERS ASSOCIATED WITH PROGRAM FLASH
Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
10Dh PMADRL Address Register Low Byte
10Fh
PMADRH
—
—
— Address Register High Byte
10Ch PMDATL Data Register Low Byte
10Eh
18Ch
PMDATH
PMCON1
—
—(1)
— Data Register High Byte
—
—
—
—
—
— RD
Legend: x = unknown, u = unchanged, r = reserved, - = unimplemented, read as '0'.
Shaded cells are not used during FLASH access.
Note 1: This bit always reads as a ‘1’.
Value on
POR, BOR
Value on
all other
RESETS
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
1--- ---0 1--- ---0
DS39597B-page 28
 2002 Microchip Technology Inc.