
PIC16(L)F1512/3
DS41624B-page 90
Preliminary
2012 Microchip Technology Inc.
11.2.1
READING THE FLASH PROGRAM
MEMORY
To read a program memory location, the user must:
1.
Write
the
desired
address
to
the
PMADRH:PMADRL register pair.
2.
Clear the CFGS bit of the PMCON1 register.
3.
Then, set control bit RD of the PMCON1 register.
Once the read control bit is set, the program memory
Flash controller will use the second instruction cycle 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 PMDATH:PMDATL register pair; therefore, it can
be read as two bytes in the following instructions.
PMDATH:PMDATL register pair will hold this value until
another read or until it is written to by the user.
FIGURE 11-1:
FLASH PROGRAM
MEMORY READ
FLOWCHART
TABLE 11-1:
FLASH MEMORY
ORGANIZATION BY DEVICE
Device
Row Erase
(words)
Write
Latches
(words)
PIC16(L)F1516
32
PIC16(L)F1517
PIC16(L)F1518
PIC16(L)F1519
Note:
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.
Start
Read Operation
Select
Program or Configuration Memory
(CFGS)
Select
Word Address
(PMADRH:PMADRL)
End
Read Operation
Instruction Fetched ignored
NOP execution forced
Instruction Fetched ignored
NOP execution forced
Initiate Read operation
(RD = 1)
Data read now in
PMDATH:PMDATL