Datasheet

2009 Microchip Technology Inc. DS41396A-page 7
PIC12F609/12F615/12F617/16F610/16F616 AND PIC12HV609/12HV615/16HV610/16HV616
4.1.1 ONE-WORD PROGRAMMING
The PIC12F615, PIC12F609, PIC16F616 and
PIC16F610 program memories can be written one
word at a time to allow compatibility with other 8-pin
and 14-pin Flash PIC
®
devices. Configuration memory
(>0x2000) must be written one word (or byte) at a time.
The sequences for programming one word of program
memory at a time is:
1. Load a word at the current program memory
address using the Load Data For Program
Memory command.
2. Issue a Begin Programming (externally timed)
command.
3. Wait T
PROG1.
4. Issue End Programming command.
5. Issue an Increment Address command.
6. Repeat this sequence as required to write
program, calibration or configuration memory.
See Figure 4-12 for more information.
4.1.2 FOUR-WORD PROGRAMMING
The PIC16F616/PIC12F617 program memory can be
written four words at a time using the four-word algo-
rithm. Configuration memory (addresses >0x2000) and
non-aligned (addresses modulo 4 not equal to zero)
starting addresses must use the one-word
programming algorithm.
This algorithm writes four sequential addresses in
program memory. The four addresses must point to a
four-word block which address modulo 4 of 0, 1, 2 and
3. For example, programming address 4 through 7 can
be programmed together. Programming addresses 2
through 5 will create an unexpected result.
The sequence for programming four words of program
memory at a time is:
1. Load a word at the current program memory
address using the Load Data For Program Mem-
ory command. This location must be address
modulo 4 equal to 0.
2. Issue an Increment Address command to point
to the next address in the block.
3. Load a word at the current program memory
address using the Load Data For Program
Memory command.
4. Issue an Increment Address command to point
to the next address in the block.
5. Load a word at the current program memory
address using the Load Data For Programming
Memory command.
6. Issue and Increment Address command to point
to the next address in the book.
7. Load a word at the current program memory
address using the Load Data For Programming
Memory command.
8. Issue a Begin Programming command
externally timed.
9. Wait T
PROG1.
10. Issue End Programming.
11. Wait T
DIS.
12. Issue an Increment Address command to point
to the start of the next block of addresses.
13. Repeat steps 1 through 12 as required to write
the desired range of program memory.
See Figure 4-12 for more information.
Note: Only the PIC16F616 and PIC12F617 pro-
gram memory can be written to using the
four-word programming algorithm.