PIC18L4XK50 [MICROCHIP]

Flash Memory Programming Specification; 闪存编程规范
PIC18L4XK50
型号: PIC18L4XK50
厂家: MICROCHIP    MICROCHIP
描述:

Flash Memory Programming Specification
闪存编程规范

闪存
文件: 总44页 (文件大小:593K)
中文:  中文翻译
下载:  下载PDF数据表文档文件
PIC18(L)F2X/4XK50  
Flash Memory Programming Specification  
1.0  
DEVICE OVERVIEW  
Note 1: The High-Voltage ICSP mode is always  
available, regardless of the state of the  
LVP bit, by applying VIHH to the MCLR/  
VPP/RE3 pin.  
This  
document  
includes  
the  
programming  
specifications for the following devices:  
• PIC18F24K50  
• PIC18F25K50  
• PIC18F26K50  
• PIC18F45K50  
• PIC18F46K50  
• PIC18LF24K50  
• PIC18LF25K50  
2: While in Low-Voltage ICSP mode, MCLR  
is always enabled, regardless of the  
MCLRE bit, and the RE3 pin can no  
longer be used as a general purpose  
input.  
• PIC18LF26K50  
• PIC18LF45K50  
• PIC18LF46K50  
2.0  
PROGRAMMING OVERVIEW  
2.2  
Dedicated ICSP/ICD Port (44-Pin  
TQFP Only)  
The PIC18(L)F2X/4XK50 devices can be programmed  
using either the high-voltage In-Circuit Serial  
Programming™ (ICSP™) method or the low-voltage  
ICSP method. Both methods can be done with the  
device in the users’ system. The low-voltage ICSP  
method is slightly different than the high-voltage  
method and these differences are noted where  
applicable. This programming specification applies to  
the PIC18(L)F2X/4XK50 devices in all package types.  
The PIC18F45K50/46K50 44-pin TQFP devices are  
designed to support an alternate programming input:  
the dedicated ICSP/ICD port. The primary purpose of  
this port is to provide an alternate In-Circuit Debugging  
(ICD) option and free the pins (RB6, RB7 and MCLR)  
that would normally be used for debugging the  
application. In conjunction with ICD capability,  
however, the dedicated ICSP/ICD port also provides an  
alternate port for ICSP. Setting the ICPRT  
Configuration bit enables the dedicated ICSP/ICD port.  
The dedicated ICSP/ICD port functions the same as  
the default ICSP/ICD port; however, alternate pins are  
used instead. Table 2-2 identifies the functionally  
equivalent pins for ICSP purposes: The dedicated  
ICSP/ICD port is an alternate port. Thus, ICSP is still  
available through the default port even though the  
ICPRT Configuration bit is set.  
2.1  
Hardware Requirements  
In High-Voltage ICSP mode, the PIC18(L)F2X/4XK50  
devices require two programmable power supplies:  
one for VDD and one for MCLR/VPP/RE3. Both supplies  
should have a minimum resolution of 0.25V. Refer to  
Section 6.0  
“AC/DC  
Characteristics  
Timing  
Requirements for Program/Verify Test Mode” for  
additional information.  
2.1.1  
LOW-VOLTAGE ICSP  
PROGRAMMING  
Note:  
The ICPRT Configuration bit can only be  
programmed through the default ICSP port.  
By default the ICPORT Configuration bit is  
enabled. When the ICPRT Configuration bit  
is cleared (dedicated ICSP/ICD port is  
disabled), the ICDPORTS pin should be  
tied to either VDD or VSS on 44 TQFP  
packages only. The ICPRT Configuration  
bit must be maintained clear for all 28-pin  
and 40-pin devices; otherwise, unexpected  
operation may occur.  
In Low-Voltage ICSP mode, the PIC18(L)F2X/4XK50  
devices can be programmed using a single VDD source  
in the operating range. The MCLR/VPP/RE3 does not  
have to be brought to a different voltage, but can  
instead be left at the normal operating voltage. Refer to  
Section 2.7 “Entering and Exiting Low-Voltage  
ICSP Program/Verify Mode” for additional hardware  
parameters.  
2012 Microchip Technology Inc.  
DS41630B-page 1  
PIC18(L)F2X/4XK50  
2.2.1  
ICPORT DISABLED  
2.3  
Pin Diagrams  
Clearing the ICPRT bit in CONFIG4L disables the use  
of the dedicated port function and leaves the dedicated  
The pin diagrams for the PIC18(L)F2X/4XK50 family  
are shown in Figures 2-1 through 2-4.  
pins  
floating.  
High-voltage  
and  
low-voltage  
programming are performed using the MCLR/VPP,  
PGC and PGD pins as normal. This is otherwise known  
as the legacy interface mode, using the standard  
interface pins.  
2.2.2  
ICPORT ENABLED  
Setting the ICPRT bit in CONFIG4L enables the use of  
the dedicated port function through the dedicated pins.  
This is the default setting for the ICPRT bit upon start-  
up or Reset. When using devices in packages other  
than the 44-pin TQFP, the ICPRT bit must be cleared.  
The standard interface pins will remain operational,  
even after the dedicated pins are enabled, unless the  
user assigns another function to them in firmware. If  
another function is not assigned to the standard pins  
and both sets of pins remain operable for program-  
ming, whichever high-voltage entry pin (the standard  
VPP pin or the dedicated ICDVPP pin) is activated first  
will take priority.  
For high-voltage programming, if high-voltage is  
detected on the ICDVPP pin first, the standard MCLR/  
VPP pin will be ignored and programming must be  
performed using the ICDPGC and ICDPGD pins. If  
high-voltage is detected on the MCLR/VPP pin first, the  
dedicated ICDVPP pin will be ignored and programming  
must be performed using the PGC and PGD pins.  
These same rules apply to the low-voltage  
programming sequence.  
TABLE 2-1:  
PIN DESCRIPTIONS (DURING PROGRAMMING): PIC18(L)F2X/4XK50  
During Programming  
Pin Description  
Pin Name  
Pin  
Pin Type  
MCLR/VPP/RE3  
VPP  
VDD  
VSS  
P
P
Programming Enable  
Power Supply  
Ground  
(1)  
VDD  
(1)  
VSS  
P
RB6  
PGC  
PGD  
VPP  
I
Serial Clock  
RB7  
I/O  
P
Serial Data  
ICDRST/ICDVPP(2)  
ICDCLK/ICDPGC  
ICDDAT/ICDPGD(2)  
Programming Enable  
Serial Clock  
PGC  
PGD  
I
I/O  
Serial Data  
Legend: I = Input, O = Output, P = Power  
Note 1: All power supply (VDD) and ground (VSS) pins must be connected.  
2: Dedicated ICSP/ICD Port available on 44-pin TQFP only when the ICPRT bit in CONFIG4L is enabled.  
DS41630B-page 2  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
FIGURE 2-1:  
28-PIN SDIP, SSOP AND SOIC PIN DIAGRAMS  
SDIP, SSOP, SOIC  
RB7/PGD  
RB6/PGC  
RB5  
MCLR/VPP/RE3  
28  
27  
26  
25  
24  
23  
22  
21  
20  
19  
18  
17  
16  
15  
1
2
3
4
5
RA0  
RA1  
RB4  
RA2  
RB3  
RA3  
RB2  
RA4  
6
7
8
9
RB1  
RA5  
RB0  
VSS  
VDD  
RA7  
VSS  
RA6  
10  
11  
RC0  
RC7  
RC1  
RC6  
12  
13  
14  
RC2  
RC5  
VUSB3V3  
RC4  
Note:  
The following devices are included in 28-pin SDIP, SSOP and SOIC parts: PIC18F24K50, PIC18LF24K50,  
PIC18F25K50, PIC18LF25K50, PIC18F26K50, PIC18LF26K50.  
FIGURE 2-2:  
28-PIN QFN PIN DIAGRAMS  
28-Pin QFN  
28 27 26 25 24 2322  
RA2  
RA3  
RA4  
RA5  
VSS  
1
2
3
4
5
6
7
21  
20  
19  
18  
17  
16  
15  
RB3  
RB2  
RB1  
RB0  
VDD  
VSS  
PIC18F2XK50  
RA7  
RA6  
RC7  
8
9 10 11 12 13 14  
Note 1: The following devices are included in 28-pin QFN parts: PIC18F24K50, PIC18LF24K50, PIC18F25K50,  
PIC18LF25K50, PIC18F26K50, PIC18LF26K50.  
2012 Microchip Technology Inc.  
DS41630B-page 3  
PIC18(L)F2X/4XK50  
FIGURE 2-3:  
40-PIN PDIP PIN DIAGRAMS  
40-PIN PDIP (600 MIL)  
40  
39  
38  
37  
36  
35  
34  
33  
32  
31  
30  
29  
28  
27  
26  
25  
24  
23  
22  
21  
MCLR/VPP/RE3  
1
2
3
4
5
6
7
8
RB7/PGD  
RB6/PGC  
RB5  
RB4  
RB3  
RA0  
RA1  
RA2  
RA3  
RA4  
RA5  
RE0  
RE1  
RE2  
VDD  
VSS  
RA7  
RB2  
RB1  
RB0  
VDD  
VSS  
RD7  
RD6  
RD5  
RD4  
RC7  
RC6  
RC5  
RC4  
RD3  
RD2  
9
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
RA6  
RC0  
RC1  
RC2  
VUSB3V3  
RD0  
RD1  
Note:  
The following devices are included in 40-pin PDIP parts: PIC18F45K50, PIC18LF45K50, PIC18F46K50,  
PIC18LF46K50.  
FIGURE 2-4:  
40-PIN UQFN PIN DIAGRAM  
40-PIN UQFN  
RC0  
RA6  
RA7  
VSS  
VDD  
RE2  
RE1  
RE0  
RA5  
RA4  
30  
29  
28  
27  
26  
25  
24  
RC7  
RD4  
RD5  
RD6  
RD7  
VSS  
VDD  
RB0  
RB1  
RB2  
1
2
3
4
5
6
7
8
9
10  
PIC18(L)F4XK50  
23  
22  
21  
Note:  
The following devices are included in 40-pin UQFN parts: PIC18F45K50, PIC18LF45K50,  
PIC18F46K50, PIC18LF46K50.  
DS41630B-page 4  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
FIGURE 2-5:  
44-PIN TQFP(1)  
44-PIN TQFP PIN DIAGRAM  
(2)  
ICDRST/ICDVPP  
1
2
3
4
33  
32  
31  
30  
29  
28  
27  
26  
RC7  
RD4  
RD5  
RD6  
RD7  
VSS  
VDD  
RB0  
RB1  
RB2  
RB3  
RC0  
RA6  
RA7  
VSS  
VDD  
RE2  
RE1  
RE0  
RA5  
RA4  
5
PIC18F4XK50  
6
7
8
9
25  
24  
23  
10  
11  
Note 1: The following devices are included in 44-pin TQFP parts: PIC18F45K50, PIC18LF45K50,  
PIC18F46K50, PIC18LF46K50.  
2: These pins are NC (No Connect) for all devices listed above with the exception of the  
PIC18F45K50 and the PIC18F46K50 devices (see Section 2.2 “Dedicated ICSP/ICD Port  
(44-Pin TQFP Only)” for more information on programming these pins in these devices).  
2012 Microchip Technology Inc.  
DS41630B-page 5  
PIC18(L)F2X/4XK50  
TABLE 2-2:  
Device  
IMPLEMENTATION OF CODE  
MEMORY  
2.4  
Memory Maps  
For PIC18(L)F24K50 devices, the code memory space  
extends from 000000h to 003FFFh (16 Kbytes) in two  
4-Kbyte blocks. Addresses 000000h through 0007FFh,  
however, define a “Boot Block” region that is treated  
separately from Block 0. All of these blocks define code  
protection boundaries within the code memory space.  
Code Memory Size (Bytes)  
PIC18F24K50  
PIC18LF24K50  
000000h-003FFFh (16K)  
FIGURE 2-6:  
MEMORY MAP AND THE CODE MEMORY SPACE FOR PIC18(L)F24K50  
DEVICES  
000000h  
01FFFFh  
Code Memory  
MEMORY SIZE/DEVICE  
Address  
16 Kbytes  
Range  
000000h  
Boot Block  
0007FFh  
Unimplemented  
Read as ‘0’  
000800h  
Block 0  
001FFFh  
002000h  
Block 1  
003FFFh  
200000h  
Unimplemented  
Read ‘0’s  
Configuration  
and ID  
Space  
01FFFFh  
3FFFFFh  
Note:  
Sizes of memory areas not to scale.  
DS41630B-page 6  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
For PIC18(L)FX5K50 devices, the code memory space  
extends from 000000h to 007FFFh (32 Kbytes) in four  
8-Kbyte blocks. Addresses 000000h through 0007FFh,  
however, define a “Boot Block” region that is treated  
separately from Block 0. All of these blocks define code  
protection boundaries within the code memory space.  
TABLE 2-3:  
IMPLEMENTATION OF CODE  
MEMORY  
Device  
Code Memory Size (Bytes)  
PIC18F25K50  
PIC18LF25K50  
PIC18F45K50  
PIC18LF45K50  
000000h-007FFFh (32K)  
FIGURE 2-7:  
MEMORY MAP AND THE CODE MEMORY SPACE FOR PIC18(L)FX5K50  
DEVICES  
000000h  
01FFFFh  
Code Memory  
MEMORY SIZE/DEVICE  
Address  
32 Kbytes  
Range  
000000h  
Boot Block  
0007FFh  
Unimplemented  
Read as ‘0’  
000800h  
Block 0  
001FFFh  
002000h  
Block 1  
003FFFh  
004000h  
Block 2  
200000h  
005FFFh  
006000h  
Block 3  
007FFFh  
Configuration  
and ID  
Space  
Unimplemented  
Read ‘0’s  
01FFFFh  
3FFFFFh  
Note:  
Sizes of memory areas not to scale.  
2012 Microchip Technology Inc.  
DS41630B-page 7  
PIC18(L)F2X/4XK50  
For PIC18(L)FX6K50 devices, the code memory space  
extends from 000000h to 00FFFFh (64 Kbytes) in four  
16-Kbyte blocks. Addresses 000000h through  
0007FFh, however, define a “Boot Block” region that is  
treated separately from Block 0. All of these blocks  
define code protection boundaries within the code  
memory space.  
TABLE 2-4:  
Device  
IMPLEMENTATION OF CODE  
MEMORY  
Code Memory Size (Bytes)  
PIC18F26K50  
PIC18LF26K50  
PIC18F46K50  
PIC18LF46K50  
000000h-00FFFFh (64K)  
FIGURE 2-8:  
MEMORY MAP AND THE CODE MEMORY SPACE FOR PIC18(L)FX6K50  
DEVICES  
000000h  
01FFFFh  
Code Memory  
MEMORY SIZE/DEVICE  
Address  
64 Kbytes  
Range  
000000h  
Boot Block  
0007FFh  
Unimplemented  
Read as ‘0’  
000800h  
Block 0  
003FFFh  
004000h  
Block 1  
007FFFh  
008000h  
Block 2  
200000h  
00BFFFh  
00C000h  
Block 3  
0FFFFh  
Configuration  
and ID  
Space  
Unimplemented  
Read ‘0’s  
01FFFFh  
3FFFFFh  
Note:  
Sizes of memory areas not to scale.  
DS41630B-page 8  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
In addition to the code memory space, there are three  
blocks in the configuration and ID space that are  
accessible to the user through table reads and table  
writes. Their locations in the memory map are shown in  
Figure 2-9.  
2.4.1  
MEMORY ADDRESS POINTER  
Memory in the address space, 0000000h to 3FFFFFh,  
is addressed via the Table Pointer register, which is  
comprised of three Pointer registers:  
• TBLPTRU, at RAM address 0FF8h  
• TBLPTRH, at RAM address 0FF7h  
• TBLPTRL, at RAM address 0FF6h  
Users may store identification information (ID) in eight  
ID registers. These ID registers are mapped in  
addresses 200000h through 200007h. The ID locations  
read out normally, even after code protection is applied.  
TBLPTRU  
TBLPTRH  
Addr[15:8]  
TBLPTRL  
Addr[7:0]  
Locations 300000h through 30000Dh are reserved for  
the Configuration bits. These bits select various device  
options and are described in Section 5.0 “Configura-  
tion Word”. These Configuration bits read out  
normally, even after code protection.  
Addr[21:16]  
The 4-bit command, ‘0000’ (core instruction), is used to  
load the Table Pointer prior to using any read or write  
operations.  
Locations 3FFFFEh and 3FFFFFh are reserved for the  
device ID bits. These bits may be used by the  
programmer to identify what device type is being  
programmed and are described in Section 5.0  
“Configuration Word”. These device ID bits read out  
normally, even after code protection.  
FIGURE 2-9:  
CONFIGURATION AND ID LOCATIONS FOR PIC18(L)F2X/4XK50 DEVICES  
000000h  
Code Memory  
01FFFFh  
ID Location 1  
ID Location 2  
ID Location 3  
ID Location 4  
ID Location 5  
ID Location 6  
ID Location 7  
ID Location 8  
200000h  
200001h  
200002h  
200003h  
200004h  
200005h  
200006h  
200007h  
Unimplemented  
Read as ‘0’  
CONFIG1L  
CONFIG1H  
CONFIG2L  
CONFIG2H  
CONFIG3L  
CONFIG3H  
CONFIG4L  
CONFIG4H  
CONFIG5L  
CONFIG5H  
CONFIG6L  
CONFIG6H  
CONFIG7L  
CONFIG7H  
300000h  
300001h  
300002h  
300003h  
300004h  
300005h  
300006h  
300007h  
300008h  
300009h  
30000Ah  
30000Bh  
30000Ch  
30000Dh  
1FFFFFh  
Configuration  
and ID  
Space  
2FFFFFh  
Device ID1  
Device ID2  
3FFFFEh  
3FFFFFh  
3FFFFFh  
Note:  
Sizes of memory areas are not to scale.  
2012 Microchip Technology Inc.  
DS41630B-page 9  
PIC18(L)F2X/4XK50  
2.5  
High-Level Overview of the  
Programming Process  
2.6  
Entering and Exiting High-Voltage  
ICSP Program/Verify Mode  
Figure 2-10 shows the high-level overview of the  
programming process. First, a Bulk Erase is performed.  
Next, the code memory, ID locations and data  
EEPROM are programmed. These memories are then  
verified to ensure that programming was successful. If  
no errors are detected, the Configuration bits are then  
programmed and verified.  
As shown in Figure 2-11, the High-Voltage ICSP  
Program/Verify mode is entered by holding PGC and  
PGD low and then raising MCLR/VPP/RE3 to VIHH  
(high voltage). Once in this mode, the code memory,  
data EEPROM, ID locations and Configuration bits can  
be accessed and programmed in serial fashion.  
Figure 2-12 shows the exit sequence.  
The sequence that enters the device into the Program/  
Verify mode places all unused I/Os in the high-impedance  
state.  
FIGURE 2-10:  
HIGH-LEVEL  
PROGRAMMING FLOW  
Start  
FIGURE 2-11:  
ENTERINGHIGH-VOLTAGE  
PROGRAM/VERIFY MODE  
Perform Bulk  
Erase  
P13  
P1  
P12  
D110  
Program Memory  
Program IDs  
MCLR/VPP/RE3  
VDD  
PGD  
PGC  
Program Data EE  
Verify Program  
Verify IDs  
PGD = Input  
FIGURE 2-12:  
EXITING HIGH-VOLTAGE  
PROGRAM/VERIFY MODE  
P16  
P1  
P17  
Verify Data  
MCLR/VPP/RE3  
D110  
Program  
Configuration Bits  
VDD  
Verify  
Configuration Bits  
PGD  
PGC  
Done  
PGD = Input  
DS41630B-page 10  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
Once the key sequence is complete, VIH must be  
applied to MCLR and held at that level for as long as  
Program/Verify mode is to be maintained. An interval of  
at least time P20 and P15 must elapse before present-  
ing data on PGD. Signals appearing on PGD before  
P15 has elapsed may not be interpreted as valid.  
2.7  
Entering and Exiting Low-Voltage  
ICSP Program/Verify Mode  
As shown in Figure 2-13, entering ICSP Program/  
Verify mode requires three steps:  
1. Voltage is briefly applied to the MCLR pin.  
2. A 32-bit key sequence is presented on PGD.  
3. Voltage is reapplied to MCLR.  
On successful entry, the program memory can be  
accessed and programmed in serial fashion. While in  
the Program/Verify mode, all unused I/Os are placed in  
the high-impedance state.  
The programming voltage applied to MCLR is VIH, or  
usually, VDD. There is no minimum time requirement for  
holding at VIH. After VIH is removed, an interval of at  
least P18 must elapse before presenting the key  
sequence on PGD.  
Exiting Program/Verify mode is done by removing VIH  
from MCLR, as shown in Figure 2-14. The only  
requirement for exit is that an interval, P16, should  
elapse between the last clock and the program signals  
on PGC and PGD before removing VIH.  
The key sequence is a specific 32-bit pattern,  
0100 1101 0100 0011 0100 1000 0101 0000’  
(more easily remembered as 4D434850h in hexa-  
decimal). The device will enter Program/Verify mode  
only if the sequence is valid. The Most Significant bit of  
the Most Significant nibble must be shifted in first.  
When VIH is reapplied to MCLR, the device will enter  
the ordinary operational mode and begin executing the  
application instructions.  
FIGURE 2-13:  
ENTERING LOW-VOLTAGE PROGRAM/VERIFY MODE  
P13  
P20  
P15  
VIH  
VIH  
MCLR  
VDD  
Program/Verify Entry Code = 4D434850h  
0
1
0
0
1
0
b3  
0
b2  
0
b1  
0
b0  
...  
PGD  
b31 b30 b29 b28 b27  
PGC  
P2B  
P2A  
P18  
FIGURE 2-14:  
EXITING LOW-VOLTAGE  
PROGRAM/VERIFY MODE  
P16  
VIH  
MCLR  
VDD  
VIH  
PGD  
PGC  
PGD = Input  
2012 Microchip Technology Inc.  
DS41630B-page 11  
PIC18(L)F2X/4XK50  
2.8.2  
CORE INSTRUCTION  
2.8  
Serial Program/Verify Operation  
The core instruction passes a 16-bit instruction to the  
CPU core for execution. This is needed to set up  
registers as appropriate for use with other commands.  
The PGC pin is used as a clock input pin and the PGD  
pin is used for entering command bits and data input/  
output during serial operation. Commands and data are  
transmitted on the rising edge of PGC, latched on the  
falling edge of PGC and are Least Significant bit (LSb)  
first.  
TABLE 2-5:  
COMMANDS FOR  
PROGRAMMING  
4-Bit  
Command  
2.8.1  
4-BIT COMMANDS  
Description  
All instructions are 20 bits, consisting of a leading 4-bit  
command followed by a 16-bit operand, which depends  
on the type of command being executed. To input a  
command, PGC is cycled four times. The commands  
needed for programming and verification are shown in  
Table 2-5.  
Core Instruction  
0000  
(Shift in 16-bit instruction)  
Shift out TABLAT register  
Table Read  
0010  
1000  
1001  
1010  
1011  
1100  
1101  
1110  
Table Read, post-increment  
Table Read, post-decrement  
Table Read, pre-increment  
Table Write  
Depending on the 4-bit command, the 16-bit operand  
represents 16 bits of input data or 8 bits of input data  
and 8 bits of output data.  
Throughout this specification, commands and data are  
presented as illustrated in Table 2-6. The 4-bit  
command is shown Most Significant bit (MSb) first. The  
command operand, or “Data Payload”, is shown  
<MSB><LSB>. Figure 2-15 demonstrates how to  
serially present a 20-bit command/operand to the  
device.  
Table Write, post-increment by 2  
Table Write, start programming,  
post-increment by 2  
Table Write, start programming  
1111  
TABLE 2-6:  
SAMPLE COMMAND  
SEQUENCE  
4-Bit  
Data  
Core Instruction  
Command Payload  
1101 3C 40 Table Write,  
post-increment by 2  
FIGURE 2-15:  
TABLE WRITE, POST-INCREMENT TIMING DIAGRAM (1101)  
P2  
P2A  
P2B  
10 11 12 13 14 15 16  
2
3
4
1
2
3
4
1
2
3
4
5
6
7
8
9
1
PGC  
P5A  
P5  
P4  
P3  
n
n
n
n
PGD  
1
0
1
1
0
0
0
0
0
0
1
0
0
0
1
1
1
1
0
0
0
4
C
3
4-bit Command  
16-bit Data Payload  
Fetch Next 4-bit Command  
PGD = Input  
DS41630B-page 12  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
The code sequence to erase the entire device is shown  
in Table 3-2 and the flowchart is shown in Figure 3-1.  
3.0  
DEVICE PROGRAMMING  
Programming includes the ability to erase or write the  
various memory regions within the device.  
Note:  
A Bulk Erase is the only way to reprogram  
code-protect bits from an “on” state to an  
“off” state.  
In all cases, except high-voltage ICSP Bulk Erase, the  
EECON1 register must be configured in order to  
operate on a particular memory region.  
TABLE 3-2:  
BULK ERASE COMMAND  
SEQUENCE  
When using the EECON1 register to act on code  
memory, the EEPGD bit must be set (EECON1<7> = 1)  
and the CFGS bit must be cleared (EECON1<6> = 0).  
The WREN bit must be set (EECON1<2> = 1) to  
enable writes of any sort (e.g., erases) and this must be  
done prior to initiating a write sequence. The FREE bit  
must be set (EECON1<4> = 1) in order to erase the  
program space being pointed to by the Table Pointer.  
The erase or write sequence is initiated by setting the  
WR bit (EECON1<1> = 1). It is strongly recommended  
that the WREN bit only be set immediately prior to a  
program or erase.  
4-Bit  
Command  
Data  
Payload  
Core Instruction  
MOVLW 3Ch  
0E 3C  
0000  
0000  
0000  
0000  
0000  
0000  
1100  
0000  
0000  
0000  
0000  
0000  
0000  
6E F8  
0E 00  
6E F7  
0E 05  
6E F6  
0F 0F  
MOVWF TBLPTRU  
MOVLW 00h  
MOVWF TBLPTRH  
MOVLW 05h  
MOVWF TBLPTRL  
Write 0Fh to 3C0005h  
MOVLW 3Ch  
3.1  
ICSP Erase  
0E 3C  
6E F8  
0E 00  
6E F7  
0E 04  
6E F6  
3.1.1  
HIGH-VOLTAGE ICSP BULK ERASE  
MOVWF TBLPTRU  
MOVLW 00h  
Erasing code or data EEPROM is accomplished by  
configuring two Bulk Erase Control registers located at  
3C0004h and 3C0005h. Code memory may be erased  
portions at a time, or the user may erase the entire  
device in one action. Bulk Erase operations will also  
clear any code-protect settings associated with the  
memory block erased. Erase options are detailed in  
Table 3-1. When any one or more blocks of code space  
are code protected, then all code blocks will be erased  
by default. If data EEPROM is code-protected  
(CPD = 0), the user must request an erase of data  
EEPROM (e.g., 0084h as shown in Table 3-1).  
MOVWF TBLPTRH  
MOVLW 04h  
MOVWF TBLPTRL  
Write 8F8Fh TO 3C0004h  
to erase entire device.  
1100  
0000  
0000  
8F 8F  
00 00  
00 00  
NOP  
Hold PGD low until erase  
completes.  
TABLE 3-1:  
BULK ERASE OPTIONS  
Data  
FIGURE 3-1:  
BULK ERASE FLOW  
Description  
(3C0005h:3C0004h)  
Start  
Chip Erase  
0F8Fh  
0088h  
0084h  
0081h  
0082h  
0180h  
0280h  
0480h  
0880h  
Erase User ID  
Write 0F0Fh  
to 3C0005h  
Erase Data EEPROM  
Erase Boot Block  
Write 8F8Fh to  
3C0004h to Erase  
Entire Device  
Erase Config Bits  
Erase Code EEPROM Block 0  
Erase Code EEPROM Block 1  
Erase Code EEPROM Block 2  
Erase Code EEPROM Block 3  
Delay P11 + P10  
Time  
The actual Bulk Erase function is a self-timed  
operation. Once the erase has started (falling edge of  
the 4th PGC after the NOPcommand), serial execution  
will cease until the erase completes (parameter P11).  
During this time, PGC may continue to toggle but PGD  
must be held low.  
Done  
2012 Microchip Technology Inc.  
DS41630B-page 13  
PIC18(L)F2X/4XK50  
FIGURE 3-2:  
BULK ERASE TIMING DIAGRAM  
P10  
1
2
1
2
3
4
2
15 16  
1
2
3
4
1
1
2
15 16  
1
2
3
4
PGC  
PGD  
P5  
P5A  
P5A  
P5  
P11  
0
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
n
n
16-bit  
Data Payload  
4-bit Command  
16-bit  
Data Payload  
16-bit  
Data Payload  
Erase Time  
4-bit Command  
4-bit Command  
PGD = Input  
3.1.2  
LOW-VOLTAGE ICSP BULK ERASE  
3.1.3  
ICSP ROW ERASE  
When using low-voltage ICSP, the part must be  
supplied by the voltage specified in parameter D111 if a  
Bulk Erase is to be executed. All other Bulk Erase  
details apply as described above.  
Regardless of whether high or low-voltage ICSP is  
used, it is possible to erase one row (64 bytes of data),  
provided the block is not code or write-protected. Rows  
are located at static boundaries beginning at program  
memory address 000000h, extending to the internal  
program memory limit (see Section 2.4 “Memory  
Maps”).  
If it is determined that a program memory erase must  
be performed at a supply voltage below the Bulk Erase  
limit, refer to the erase methodology described in  
Section 3.1.3 “ICSP Row Erase” and Section 3.2.1  
“Modifying Code Memory”.  
The Row Erase duration is self-timed. After the WR bit  
in EECON1 is set, two NOPs are issued. Erase starts  
upon the 4th PGC of the second NOP. It ends when the  
WR bit is cleared by hardware.  
If it is determined that a data EEPROM erase must be  
performed at a supply voltage below the Bulk Erase  
limit, follow the methodology described in Section 3.3  
“Data EEPROM Programming” and write ‘1’s to the  
array.  
The code sequence to Row Erase is shown in Table 3-3.  
The flowchart shown in Figure 3-3 depicts the logic  
necessary to completely erase the device. The timing  
diagram for Row Erase is identical to the data EEPROM  
write timing shown in Figure 3-7.  
Note:  
The TBLPTR register can point at any  
byte within the row intended for erase.  
DS41630B-page 14  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
TABLE 3-3:  
ERASE CODE MEMORY CODE SEQUENCE  
Data Payload Core Instruction  
4-bit  
Command  
Step 1: Direct access to code memory and enable writes.  
0000  
0000  
0000  
8E A6  
9C A6  
84 A6  
BSF  
BCF  
BSF  
EECON1, EEPGD  
EECON1, CFGS  
EECON1, WREN  
Step 2: Point to first row in code memory.  
0000  
0000  
0000  
6A F8  
6A F7  
6A F6  
CLRF  
CLRF  
CLRF  
TBLPTRU  
TBLPTRH  
TBLPTRL  
Step 3: Enable erase and erase single row.  
0000  
0000  
0000  
0000  
88 A6  
82 A6  
00 00  
00 00  
BSF  
BSF  
NOP  
NOP  
EECON1, FREE  
EECON1, WR  
Erase starts on the 4th clock of this instruction  
Step 4: Poll WR bit. Repeat until bit is clear.  
0000  
0000  
0000  
0010  
50 A6  
6E F5  
00 00  
MOVF EECON1, W, 0  
MOVWF TABLAT  
NOP  
<MSB><LSB>  
Shift out data(1)  
Step 5: Hold PGC low for time P10.  
Step 6: Repeat Step 3 with Address Pointer incremented by 64 until all rows are erased.  
Step 7: Disable writes.  
0000  
94 A6  
BCF EECON1, WREN  
Note 1: See Figure 4-4 for details on shift out data timing.  
2012 Microchip Technology Inc.  
DS41630B-page 15  
PIC18(L)F2X/4XK50  
FIGURE 3-3:  
SINGLE ROW ERASE CODE MEMORY FLOW  
Start  
Addr = 0  
Configure  
Device for  
Row Erases  
Perform Erase  
Sequence  
Addr = Addr + 64  
No  
WR Bit  
Clear?  
Yes  
All  
Rows  
done?  
No  
Yes  
Done  
DS41630B-page 16  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
After PGC is brought low, the programming sequence  
is terminated. PGC must be held low for the time  
specified by parameter P10 to allow high-voltage  
discharge of the memory array.  
3.2  
Code Memory Programming  
Programming code memory is accomplished by first  
loading data into the write buffer and then initiating a  
programming sequence. The write and erase buffer  
sizes shown in Table 3-4 can be mapped to any  
location of the same size beginning at 000000h. The  
actual memory write sequence takes the contents of  
this buffer and programs the proper amount of code  
memory that contains the Table Pointer.  
The code sequence to program a device is shown in  
Table 3-5. The flowchart shown in Figure 3-4 depicts  
the logic necessary to completely write the device. The  
timing diagram that details the Start Programming  
command and parameters P9 and P10 is shown in  
Figure 3-5.  
The programming duration is externally timed and is  
controlled by PGC. After  
a
Start Programming  
Note:  
The TBLPTR register must point to the  
same region when initiating the  
programming sequence as it did when the  
write buffers were loaded.  
command is issued (4-bit command, ‘1111’), a NOPis  
issued, where the 4th PGC is held high for the duration  
of the programming time, P9.  
TABLE 3-4:  
WRITE AND ERASE BUFFER SIZES  
Devices  
Write Buffer Size  
(bytes)  
Erase Size  
(bytes)  
PIC18F24K50  
PIC18F25K50  
PIC18F26K50  
PIC18F45K50  
PIC18F46K50  
PIC18LF24K50  
PIC18LF25K50  
PIC18LF26K50  
PIC18LF45K50  
PIC18LF46K50  
64  
64  
TABLE 3-5:  
WRITE CODE MEMORY CODE SEQUENCE  
Data Payload  
4-bit  
Command  
Core Instruction  
Step 1: Direct access to code memory.  
0000  
0000  
0000  
8E A6  
9C A6  
84 A6  
BSF  
BCF  
BSF  
EECON1, EEPGD  
EECON1, CFGS  
EECON1, WREN  
Step 2: Point to row to write.  
0000  
0000  
0000  
0000  
0000  
0000  
0E <Addr[21:16]> MOVLW <Addr[21:16]>  
6E F8 MOVWF TBLPTRU  
0E <Addr[15:8]> MOVLW <Addr[15:8]>  
6E F7  
0E <Addr[7:0]>  
6E F6  
MOVWF TBLPTRH  
MOVLW <Addr[7:0]>  
MOVWF TBLPTRL  
Step 3: Load write buffer. Repeat for all but the last two bytes.  
1101 <MSB><LSB> Write 2 bytes and post-increment address by 2.  
Step 4: Load write buffer for last two bytes and start programming.  
1111  
0000  
<MSB><LSB>  
00 00  
Write 2 bytes and start programming.  
NOP - hold PGC high for time P9 and low for time P10.  
To continue writing data, repeat Steps 2 through 4, where the Address Pointer is incremented by two at each iteration  
of the loop.  
2012 Microchip Technology Inc.  
DS41630B-page 17  
PIC18(L)F2X/4XK50  
FIGURE 3-4:  
PROGRAM CODE MEMORY FLOW  
Start  
N = 1  
LoopCount = 0  
Configure  
Device for  
Writes  
Load 2 Bytes  
to Write  
Buffer at <Addr>  
N = N + 1  
All  
bytes  
No  
written?  
Yes  
N = 1  
LoopCount =  
LoopCount + 1  
Start Write Sequence  
and Hold PGC  
High until Done  
and Wait P9  
Hold PGC Low  
for Time P10  
All  
locations  
No  
done?  
Yes  
Done  
FIGURE 3-5:  
TABLE WRITE AND START PROGRAMMING INSTRUCTION  
TIMING DIAGRAM (1111)  
P10  
1
2
3
4
1
2
3
1
2
3
4
5
6
15 16  
1
2
3
4
P9(1)  
PGC  
P5A  
P5  
1
1
n
n
n
n
0
0
0
0
PGD  
1
1
n
n
n
n
0
0
0
16-bit  
Data Payload  
4-bit Command  
4-bit Command  
16-bit Data Payload  
PGD = Input  
Programming Time  
Note 1: Use P9A for User ID and Configuration Word programming.  
DS41630B-page 18  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
The appropriate number of bytes required for the erase  
buffer must be read out of code memory (as described  
in Section 4.2 “Verify Code Memory and ID  
Locations”) and buffered. Modifications can be made  
on this buffer. Then, the block of code memory that was  
read out must be erased and rewritten with the  
modified data.  
3.2.1  
MODIFYING CODE MEMORY  
The previous programming example assumed that the  
device has been Bulk Erased prior to programming  
(see Section 3.1.1 “High-Voltage ICSP Bulk Erase”).  
It may be the case, however, that the user wishes to  
modify only a section of an already programmed  
device.  
The WREN bit must be set if the WR bit in EECON1 is  
used to initiate a write sequence.  
TABLE 3-6:  
MODIFYING CODE MEMORY  
Data Payload  
4-bit  
Command  
Core Instruction  
Step 1: Direct access to code memory.  
0000  
0000  
8E A6  
9C A6  
BSF EECON1, EEPGD  
BCF EECON1, CFGS  
Step 2: Read code memory into buffer (Section 4.1 “Read Code Memory, ID Locations and Configuration Bits”).  
Step 3: Set the Table Pointer for the block to be erased.  
0000  
0000  
0000  
0000  
0000  
0000  
0E <Addr[21:16]>  
6E F8  
0E <Addr[8:15]>  
6E F7  
0E <Addr[7:0]>  
6E F6  
MOVLW <Addr[21:16]>  
MOVWF TBLPTRU  
MOVLW <Addr[8:15]>  
MOVWF TBLPTRH  
MOVLW <Addr[7:0]>  
MOVWF TBLPTRL  
Step 4: Enable memory writes and setup an erase.  
0000  
0000  
84 A6  
88 A6  
BSF  
BSF  
EECON1, WREN  
EECON1, FREE  
Step 5: Initiate erase.  
0000  
0000  
0000  
0000  
88 A6  
82 A6  
00 00  
00 00  
BSF  
BSF  
NOP  
NOP  
EECON1, FREE  
EECON1, WR  
Erase starts on the 4th clock of this instruction  
Step 6: Poll WR bit. Repeat until bit is clear.  
0000  
0000  
0000  
0000  
50 A6  
6E F5  
00 00  
MOVF  
MOVWF  
NOP  
EECON1, W, 0  
TABLAT  
(1)  
<MSB><LSB>  
Shift out data  
Step 7: Load write buffer. The correct bytes will be selected based on the Table Pointer.  
0000  
0000  
0000  
0000  
0000  
0000  
1101  
0E <Addr[21:16]>  
6E F8  
0E <Addr[8:15]>  
6E F7  
0E <Addr[7:0]>  
6E F6  
<MSB><LSB>  
MOVLW <Addr[21:16]>  
MOVWF TBLPTRU  
MOVLW <Addr[8:15]>  
MOVWF TBLPTRH  
MOVLW <Addr[7:0]>  
MOVWF TBLPTRL  
Write 2 bytes and post-increment address by 2.  
Repeat as many times as necessary to fill the write buffer  
Write 2 bytes and start programming.  
1111  
0000  
<MSB><LSB>  
00 00  
NOP - hold PGC high for time P9 and low for time P10.  
To continue modifying data, repeat Steps 2 through 6, where the Address Pointer is incremented by the appropriate number of bytes  
(see Table 3-4) at each iteration of the loop. The write cycle must be repeated enough times to completely rewrite the contents of the  
erase buffer.  
Step 8: Disable writes.  
0000  
94 A6  
BCF  
EECON1, WREN  
2012 Microchip Technology Inc.  
DS41630B-page 19  
PIC18(L)F2X/4XK50  
FIGURE 3-6:  
PROGRAM DATA FLOW  
3.3  
Data EEPROM Programming  
Start  
Data EEPROM is accessed one byte at a time via an  
Address Pointer (register pair EEADRH:EEADR) and a  
data latch (EEDATA). Data EEPROM is written by  
loading EEADRH:EEADR with the desired memory  
location, EEDATA, with the data to be written and initi-  
ating a memory write by appropriately configuring the  
EECON1 register. A byte write automatically erases the  
location and writes the new data (erase-before-write).  
Set Address  
Set Data  
Enable Write  
When using the EECON1 register to perform a data  
EEPROM write, both the EEPGD and CFGS bits must  
be cleared (EECON1<7:6> = 00). The WREN bit must  
be set (EECON1<2> = 1) to enable writes of any sort  
and this must be done prior to initiating a write  
sequence. The write sequence is initiated by setting the  
WR bit (EECON1<1> = 1).  
Start Write  
Sequence  
No  
WR bit  
clear?  
The write begins on the falling edge of the 24th PGC  
after the WR bit is set. It ends when the WR bit is  
cleared by hardware.  
Yes  
No  
done?  
Yes  
Done  
After the programming sequence terminates, PGC  
must be held low for the time specified by parameter  
P10 to allow high-voltage discharge of the memory  
array.  
FIGURE 3-7:  
DATA EEPROM WRITE TIMING DIAGRAM  
P10  
1
2
1
2
3
4
2
15 16  
1
PGC  
PGD  
P5A  
P11A  
P5  
P5A  
0
0
0
0
n
n
2 NOPcommands  
16-bit Data  
Payload  
4-bit Command BSF EECON1, WR  
Poll WR bit, Repeat until Clear  
(see below)  
PGD = Input  
1
2
3
4
2
15 16  
1
2
3
4
1
1
2
15 16  
PGC  
PGD  
P5  
P5A  
P5A  
P5  
Poll WR bit  
0
0
0
0
0
0
0
0
4-bit Command  
MOVWF TABLAT  
4-bit Command MOVF EECON1, W, 0  
Shift Out Data  
(see Figure 4-4)  
PGD = Input  
PGD = Output  
DS41630B-page 20  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
TABLE 3-7:  
PROGRAMMING DATA MEMORY  
Data Payload  
4-bit  
Command  
Core Instruction  
Step 1: Direct access to data EEPROM.  
0000  
0000  
9E A6  
9C A6  
BCF EECON1, EEPGD  
BCF EECON1, CFGS  
Step 2: Set the data EEPROM Address Pointer.  
0000  
0000  
0000  
0000  
0E <Addr>  
6E A9  
OE <AddrH>  
6E AA  
MOVLW <Addr>  
MOVWF EEADR  
MOVLW <AddrH>  
MOVWF EEADRH  
Step 3: Load the data to be written.  
0000  
0000  
0E <Data>  
6E A8  
MOVLW <Data>  
MOVWF EEDATA  
Step 4: Enable memory writes.  
0000  
84 A6  
BSF EECON1, WREN  
Step 5: Initiate write.  
0000  
0000  
0000  
82 A6  
00 00  
00 00  
BSF EECON1, WR  
NOP  
NOP ;write starts on 4th clock of this instruction  
Step 6: Poll WR bit, repeat until the bit is clear.  
0000  
0000  
0000  
0010  
50 A6  
6E F5  
00 00  
MOVF EECON1, W, 0  
MOVWF TABLAT  
NOP  
<MSB><LSB>  
Shift out data(1)  
Step 7: Hold PGC low for time P10.  
Step 8: Disable writes.  
0000  
94 A6  
BCF EECON1, WREN  
Repeat steps 2 through 8 to write more data.  
Note 1: See Figure 4-4 for details on shift out data timing.  
2012 Microchip Technology Inc.  
DS41630B-page 21  
PIC18(L)F2X/4XK50  
In order to modify the ID locations, refer to the  
methodology described in Section 3.2.1 “Modifying  
Code Memory”. As with code memory, the ID  
locations must be erased before being modified.  
3.4  
ID Location Programming  
The ID locations are programmed much like the code  
memory. The ID registers are mapped in addresses  
200000h through 200007h. These locations read out  
normally even after code protection.  
When VDD is below the minimum for Bulk Erase  
operation, ID locations can be cleared with the Row  
Erase method described in Section 3.1.3 “ICSP Row  
Erase”.  
Note:  
The user only needs to fill the first 8 bytes  
of the write buffer in order to write the ID  
locations.  
Table 3-8 demonstrates the code sequence required to  
write the ID locations.  
TABLE 3-8:  
WRITE ID SEQUENCE  
Data Payload  
4-bit  
Command  
Core Instruction  
Step 1: Direct access to code memory.  
0000  
0000  
0000  
8E A6  
9C A6  
84 A6  
BSF EECON1, EEPGD  
BCF EECON1, CFGS  
BSF EECON1, WREN  
Step 2: Set Table Pointer to ID. Load write buffer with 8 bytes and write.  
0000  
0000  
0000  
0000  
0000  
0000  
1101  
1101  
1101  
1111  
0000  
0E 20  
6E F8  
0E 00  
6E F7  
0E 00  
MOVLW 20h  
MOVWF TBLPTRU  
MOVLW 00h  
MOVWF TBLPTRH  
MOVLW 00h  
MOVWF TBLPTRL  
Write 2 bytes and post-increment address by 2.  
Write 2 bytes and post-increment address by 2.  
Write 2 bytes and post-increment address by 2.  
Write 2 bytes and start programming.  
NOP - hold PGC high for time P9 and low for time P10.  
6E F6  
<MSB><LSB>  
<MSB><LSB>  
<MSB><LSB>  
<MSB><LSB>  
00 00  
DS41630B-page 22  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
3.5  
Boot Block Programming  
3.6  
Configuration Bits Programming  
The code sequence detailed in Table 3-5 should be  
used, except that the address used in “Step 2” will be in  
the range of 000000h to 0007FFh.  
Unlike code memory, the Configuration bits are  
programmed a byte at a time. The Table Write, Begin  
Programming 4-bit command (‘1111’) is used, but only  
8 bits of the following 16-bit payload will be written. The  
LSB of the payload will be written to even addresses  
and the MSB will be written to odd addresses. The  
code sequence to program two consecutive configura-  
tion locations is shown in Table 3-9. See Figure 3-5 for  
the timing diagram.  
Note:  
The address must be explicitly written for  
each byte programmed. The addresses  
cannot be incremented in this mode.  
TABLE 3-9:  
SET ADDRESS POINTER TO CONFIGURATION LOCATION  
Data Payload Core Instruction  
4-bit  
Command  
Step 1: Direct access to config memory.  
0000  
0000  
0000  
8E A6  
8C A6  
84 A6  
BSF EECON1, EEPGD  
BSF EECON1, CFGS  
BSF EECON1, WREN  
Step 2(1): Set Table Pointer for config byte to be written. Write even/odd addresses.  
0000  
0000  
0000  
0000  
0000  
0000  
1111  
0000  
0000  
0000  
1111  
0000  
0E 30  
6E F8  
0E 00  
6E F7  
0E 00  
6E F6  
MOVLW 30h  
MOVWF TBLPTRU  
MOVLW 00h  
MOVWF TBLPRTH  
MOVLW 00h  
MOVWF TBLPTRL  
<MSB ignored><LSB> Load 2 bytes and start programming.  
00 00  
0E 01  
6E F6  
NOP - hold PGC high for time P9 and low for time P10.  
MOVLW 01h  
MOVWF TBLPTRL  
<MSB><LSB ignored> Load 2 bytes and start programming.  
00 00 NOP - hold PGC high for time P9A and low for time P10.  
Note 1: Enabling the write protection of Configuration bits (WRTC = 0in CONFIG6H) will prevent further writing of  
Configuration bits. Always write all the Configuration bits before enabling the write protection for  
Configuration bits.  
FIGURE 3-8:  
CONFIGURATION PROGRAMMING FLOW  
Start  
Start  
Load Even  
Load Odd  
Configuration  
Address  
Configuration  
Address  
Program  
LSB  
Program  
MSB  
Delay P9 and P10  
Time for Write  
Delay P9 and P10  
Time for Write  
Done  
Done  
2012 Microchip Technology Inc.  
DS41630B-page 23  
PIC18(L)F2X/4XK50  
input to an output. During this time, PGC must be held  
low (see Figure 4-1). This operation also increments  
the Table Pointer by one, pointing to the next byte in  
code memory for the next read.  
4.0  
4.1  
READING THE DEVICE  
Read Code Memory, ID Locations  
and Configuration Bits  
This technique will work to read any memory in the  
000000h to 3FFFFFh address space, so it also applies  
to the reading of the ID and Configuration registers.  
Code memory is accessed one byte at a time via the  
4-bit command, ‘1001’ (table read, post-increment).  
The contents of memory pointed to by the Table Pointer  
(TBLPTRU:TBLPTRH:TBLPTRL) are serially output on  
PGD.  
Note:  
When table read protection is enabled, the  
first read access to a protected block  
should be discarded and the read  
The 4-bit command is shifted in LSb first. The read is  
executed during the next 8 clocks, then shifted out on  
PGD during the last 8 clocks, LSb to MSb. A delay of  
P6 must be introduced after the falling edge of the 8th  
PGC of the operand to allow PGD to transition from an  
repeated  
to  
retrieve  
valid  
data.  
Subsequent reads of the same block can  
be performed normally.  
TABLE 4-1:  
READ CODE MEMORY SEQUENCE  
Data Payload  
4-bit  
Command  
Core Instruction  
Step 1: Set Table Pointer.  
0000  
0000  
0000  
0000  
0000  
0000  
0E <Addr[21:16]>  
MOVLW Addr[21:16]  
MOVWF TBLPTRU  
MOVLW <Addr[15:8]>  
MOVWF TBLPTRH  
MOVLW <Addr[7:0]>  
MOVWF TBLPTRL  
6E F8  
0E <Addr[15:8]>  
6E F7  
0E <Addr[7:0]>  
6E F6  
Step 2: Read memory and then shift out on PGD, LSb to MSb.  
1001  
00 00  
TBLRD *+  
FIGURE 4-1:  
TABLE READ POST-INCREMENT INSTRUCTION TIMING DIAGRAM (1001)  
9
1
2
3
4
10 11 12 13 14 15 16  
1
2
3
4
1
2
3
4
5
6
7
8
PGC  
PGD  
P5A  
P5  
P6  
P14  
(Note 1)  
3
4
5
6
MSb  
n
n
n
n
LSb  
1
2
1
0
0
1
Fetch Next 4-bit Command  
PGD = Input  
Shift Data Out  
PGD = Input  
PGD = Output  
Note 1: Magnification of the high-impedance delay between PGC and PGD is shown in Figure 4-6.  
DS41630B-page 24  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
The Table Pointer must be manually set to 200000h  
(base address of the ID locations) once the code  
memory has been verified. The post-increment feature  
of the table read 4-bit command cannot be used to  
increment the Table Pointer beyond the code memory  
space. In a 64-Kbyte device, for example, a post-  
increment read of address FFFFh will wrap the Table  
Pointer back to 000000h, rather than point to  
unimplemented address 010000h.  
4.2  
Verify Code Memory and ID  
Locations  
The verify step involves reading back the code memory  
space and comparing it against the copy held in the  
programmer’s buffer. Memory reads occur a single byte  
at a time, so two bytes must be read to compare  
against the word in the programmer’s buffer. Refer to  
Section 4.1 “Read Code Memory, ID Locations and  
Configuration Bits” for implementation details of  
reading code memory.  
FIGURE 4-2:  
VERIFY CODE MEMORY FLOW  
Start  
Set TBLPTR = 200000h  
Set TBLPTR = 0  
Read Low Byte  
Read Low Byte  
with Post-increment  
with Post-Increment  
Read High Byte  
with Post-increment  
Increment  
Pointer  
Read High byte  
with Post-Increment  
Does  
Does  
No  
No  
Word = Expect  
data?  
Word = Expect  
data?  
Failure,  
Report  
Error  
Failure,  
Report  
Error  
Yes  
Yes  
All  
All  
No  
No  
ID locations  
verified?  
code memory  
verified?  
Yes  
Yes  
Done  
2012 Microchip Technology Inc.  
DS41630B-page 25  
PIC18(L)F2X/4XK50  
FIGURE 4-3:  
READ DATA EEPROM  
FLOW  
4.3  
Verify Configuration Bits  
A configuration address may be read and output on  
PGD via the 4-bit command, ‘1001’. Configuration data  
is read and written in a byte-wise fashion, so it is not  
necessary to merge two bytes into a word prior to a  
compare. The result may then be immediately  
compared to the appropriate configuration data in the  
programmer’s memory for verification. Refer to  
Section 4.1 “Read Code Memory, ID Locations and  
Configuration Bits” for implementation details of  
reading configuration data.  
Start  
Set  
Address  
Read  
Byte  
4.4  
Read Data EEPROM Memory  
Move to TABLAT  
Shift Out Data  
Data EEPROM is accessed one byte at a time via an  
Address Pointer (register pair EEADRH:EEADR) and a  
data latch (EEDATA). Data EEPROM is read by loading  
EEADRH:EEADR with the desired memory location  
and initiating a memory read by appropriately configur-  
ing the EECON1 register. The data will be loaded into  
EEDATA, where it may be serially output on PGD via  
the 4-bit command, ‘0010’ (Shift Out Data Holding  
register). A delay of P6 must be introduced after the  
falling edge of the 8th PGC of the operand to allow  
PGD to transition from an input to an output. During this  
time, PGC must be held low (see Figure 4-4).  
No  
done?  
Yes  
Done  
The command sequence to read a single byte of data  
is shown in Table 4-2.  
TABLE 4-2:  
READ DATA EEPROM MEMORY  
Data Payload  
4-bit  
Command  
Core Instruction  
Step 1: Direct access to data EEPROM.  
0000  
0000  
9E A6  
9C A6  
BCF EECON1, EEPGD  
BCF EECON1, CFGS  
Step 2: Set the data EEPROM Address Pointer.  
0000  
0000  
0000  
0000  
0E <Addr>  
6E A9  
OE <AddrH>  
6E AA  
MOVLW <Addr>  
MOVWF EEADR  
MOVLW <AddrH>  
MOVWF EEADRH  
Step 3: Initiate a memory read.  
0000 80 A6  
BSF EECON1, RD  
Step 4: Load data into the Serial Data Holding register.  
0000  
0000  
0000  
0010  
50 A8  
6E F5  
00 00  
MOVF EEDATA, W, 0  
MOVWF TABLAT  
NOP  
(1)  
<MSB><LSB>  
Shift Out Data  
Note 1: The <LSB> is undefined. The <MSB> is the data.  
DS41630B-page 26  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
FIGURE 4-4:  
SHIFT OUT DATA HOLDING REGISTER TIMING DIAGRAM (0010)  
(Note 1)  
9
10 11 12 13 14 15 16  
1
2
3
4
1
2
3
4
1
2
3
4
5
6
7
8
PGC  
P5A  
P5  
P6  
P14  
(Note 1)  
MSb  
3
4
5
6
n
n
n
n
LSb  
1
2
PGD  
0
1
0
0
Fetch Next 4-bit Command  
PGD = Input  
Shift Data Out  
PGD = Output  
PGD = Input  
Note 1: Magnification of the High-Impedance delay between PGC and PGD is shown in Figure 4-5.  
FIGURE 4-5:  
HIGH-IMPEDANCE DELAY  
4.6  
Blank Check  
P3  
The term “Blank Check” means to verify that the device  
has no programmed memory cells. All memories must  
be verified: code memory, data EEPROM, ID locations  
and Configuration bits. The device ID registers  
(3FFFFEh:3FFFFFh) should be ignored.  
2
1
PGC  
PGD  
A “blank” or “erased” memory cell will read as a ‘1’.  
Therefore, Blank Checking a device merely means to  
verify that all bytes read as FFh except the Configura-  
tion bits. Unused (reserved) Configuration bits will read  
0’ (programmed). Refer to Table 5-1 for blank configu-  
ration expect data for the various PIC18(L)F2X/4XK50  
devices.  
n
n
MSb  
P19  
4.5  
Verify Data EEPROM  
Given that Blank Checking is merely code and data  
EEPROM verification with FFh expect data, refer to  
Section 4.4 “Read Data EEPROM Memory” and  
Section 4.2 “Verify Code Memory and ID Locations”  
for implementation details.  
A data EEPROM address may be read via a sequence  
of core instructions (4-bit command, ‘0000’) and then  
output on PGD via the 4-bit command, ‘0010’ (TABLAT  
register). The result may then be immediately  
compared to the appropriate data in the programmer’s  
memory for verification. Refer to Section 4.4 “Read  
Data EEPROM Memory” for implementation details of  
reading data EEPROM.  
FIGURE 4-6:  
BLANK CHECK FLOW  
Start  
Blank Check Device  
Is  
device  
blank?  
Yes  
Continue  
No  
Abort  
2012 Microchip Technology Inc.  
DS41630B-page 27  
PIC18(L)F2X/4XK50  
5.2  
Device ID Word  
5.0  
CONFIGURATION WORD  
The device ID word for the PIC18(L)F2X/4XK50  
devices is located at 3FFFFEh:3FFFFFh. These bits  
may be used by the programmer to identify what device  
type is being programmed and read out normally, even  
after code or read protection. See Table 5-2 for a  
complete list of device ID values.  
The PIC18(L)F2X/4XK50 devices have several  
Configuration Words. These bits can be set or cleared  
to select various device configurations. All other mem-  
ory areas should be programmed and verified prior to  
setting Configuration Words. These bits may be read  
out normally, even after read or code protection. See  
Table 5-1 for a list of Configuration bits and device IDs,  
and Table 5-3 for the Configuration bit descriptions.  
FIGURE 5-1:  
READ DEVICE ID WORD  
FLOW  
5.1  
User ID Locations  
Start  
A user may store identification information (ID) in eight  
ID locations mapped in 200000h:200007h. It is  
recommended that the Most Significant nibble of each  
ID be Fh. In doing so, if the user code inadvertently tries  
to execute from the ID space, the ID data will execute  
as a NOP.  
Set TBLPTR = 3FFFFE  
Read Low Byte  
with Post-Increment  
Read High Byte  
with Post-Increment  
Done  
TABLE 5-1:  
File Name  
CONFIGURATION BITS AND DEVICE IDs  
Default/  
Unprogrammed  
Value  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
(3)  
(3)  
300000h CONFIG1L  
USBLSDIV  
PCLKEN  
CPUDIV1 CPUDIV0  
PLLEN  
PLLMULT  
FOSC0  
--00 0-00  
001- 0101  
-1-1 1111  
--11 1111  
11-1 --11  
101- -1-1  
---- 1111  
11-- ----  
---- 1111  
111- ----  
---- 1111  
-1-- ----  
See Table 5-2  
See Table 5-2  
300001h CONFIG1H IESO FCMEN  
FOSC3  
BORV0  
FOSC2  
FOSC1  
300002h CONFIG2L  
300003h CONFIG2H  
LPBOR  
BORV1  
BOREN1 BOREN0  
PWRTEN  
WDTEN0  
CCP2MX  
STVREN  
CP0  
WDTPS3  
WDTPS2 WDTPS1 WDTPS0 WDTEN1  
300005h CONFIG3H MCLRE SDOMX  
300006h CONFIG4L DEBUG XINST  
T3CMX  
PBADEN  
ICPRT  
LVP  
(1)  
(1)  
300008h CONFIG5L  
300009h CONFIG5H CPD  
30000Ah CONFIG6L  
CPB  
CP3  
CP2  
CP1  
(1)  
(1)  
WRT3  
WRT2  
WRT1  
WRT0  
30000Bh CONFIG6H WRTD WRTB  
WRTC  
(1)  
(1)  
30000Ch CONFIG7L  
30000Dh CONFIG7H  
EBTR3  
EBTR2  
EBTR1  
EBTR0  
EBTRB  
DEV1  
(2)  
3FFFFEh DEVID1  
DEV2  
DEV0  
DEV8  
REV4  
DEV7  
REV3  
DEV6  
REV2  
DEV5  
REV1  
DEV4  
REV0  
DEV3  
(2)  
3FFFFFh DEVID2  
DEV10 DEV9  
Legend:  
Note 1:  
x= unknown, u= unchanged, – = unimplemented. Shaded cells are unimplemented, read as ‘0’.  
These bits are only implemented on specific devices. Refer to Section 2.4 “Memory Maps” to determine which bits apply based  
on available memory.  
2:  
3:  
DEVID registers are read-only and cannot be programmed by the user.  
When the 3x Multiplier mode is selected, the input frequency has to be 16 MHz. When the 4x Multiplier mode is selected, the  
input frequency has to be between 8 MHz and 16 MHz.  
DS41630B-page 28  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
TABLE 5-2:  
DEVICE ID VALUE  
Device  
Device ID Value  
DEVID1  
DEVID2  
PIC18F45K50  
PIC18LF45K50  
PIC18F25K50  
PIC18LF25K50  
PIC18F24K50  
PIC18LF24K50  
PIC18F26K50  
PIC18LF26K50  
PIC18F46K50  
PIC18LF46K50  
5Ch  
5Ch  
5Ch  
5Ch  
5Ch  
5Ch  
5Dh  
5Dh  
5Dh  
5Dh  
000x xxxx  
100x xxxx  
001x xxxx  
101x xxxx  
011x xxxx  
111x xxxx  
001x xxxx  
011x xxxx  
000x xxxx  
010x xxxx  
Note:  
The ‘x’s in DEVID1 contain the device revision code.  
2012 Microchip Technology Inc.  
DS41630B-page 29  
PIC18(L)F2X/4XK50  
TABLE 5-3:  
Bit Name  
PIC18(L)F2X/4XK50 BIT DESCRIPTIONS  
Configuration  
Words  
Description  
USBLSDIV  
CONFIG1L  
CONFIG1L  
USB Low-Speed Clock Selection bit  
Selects the clock source for Low-speed USB operation  
1 = USB clock source comes from the 48 MHz system clock divided by 8  
0 = USB clock source comes from the 24 MHz system clock divided by 4  
CPUDIV<1:0>  
CPU System Clock Selection bits  
11= CPU system clock divided by 6  
10= CPU system clock divided by 3  
01= CPU system clock divided by 2  
00= No CPU system clock divide  
PLLEN  
CONFIG1L  
CONFIG1L  
PLL Enable bit(2)  
1= Oscillator multiplied by 3 or 4, depending on the PLLMULT bit  
0= Oscillator used directly  
PLLMULT  
PLL Multiplier Selection bit(2)  
1= Output frequency is 3x the input frequency  
0= Output frequency is 4x the input frequency  
Internal External Switchover bit  
IESO  
CONFIG1H  
1= Internal External Switchover mode enabled  
0= Internal External Switchover mode disabled  
FCMEN  
CONFIG1H Fail-Safe Clock Monitor Enable bit  
1= Fail-Safe Clock Monitor enabled  
0= Fail-Safe Clock Monitor disabled  
PCLKEN  
CONFIG1H  
Primary Clock Enable bit  
1= Primary clock enabled  
0= Primary clock disabled  
FOSC<3:0>  
CONFIG1H Oscillator Selection bits  
1111= External RC oscillator, CLKOUT function on OSC2  
1110= External RC oscillator, CLKOUT function on OSC2  
1101= EC oscillator (low power)  
1100= EC oscillator, CLKOUT function on OSC2 (low power)  
1011= EC oscillator (medium power, 4 MHz-16 MHz)  
1010= EC oscillator, CLKOUT function on OSC2 (medium power, 4 MHz-16 MHz)  
1001= Internal RC oscillator, CLKOUT function on OSC2  
1000= Internal RC oscillator  
0111= External RC oscillator  
0110= External RC oscillator, CLKOUT function on OSC2  
0101= EC oscillator (high power, >16 MHz)  
0100= EC oscillator, CLKOUT function on OSC2 (high power, >16 MHz)  
0011= HS oscillator (medium power, 4 MHz-16 MHz)  
0010= HS oscillator (high power, >16 MHz)  
0001= XT oscillator  
0000= LP oscillator  
LPBOR  
CONFIG2L  
Low-Power Brown-out Reset Enable bits  
1= Low-Power Brown-out Reset disabled  
0= Low-Power Brown-out Reset enabled  
Note 1: Minimum VDD for F devices is 2.3V.  
2: When the 3x Multiplier mode is selected, the input frequency has to be 16 MHz. When the 4x Multiplier  
mode is selected, the input frequency has to be between 8 MHz and 16 MHz.  
3: The dedicated In-Circuit Port is available only on the 44-pin TQFP packaged devices. This bit should be  
programmed to a ‘0’ in all other devices. See Section 2.2 “Dedicated ICSP/ICD Port (44-Pin TQFP  
Only)” for more information.  
DS41630B-page 30  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
TABLE 5-3:  
Bit Name  
PIC18(L)F2X/4XK50 BIT DESCRIPTIONS (CONTINUED)  
Configuration  
Words  
Description  
BORV<1:0>  
CONFIG2L  
Brown-out Reset Voltage bits  
11= VBOR set to 1.9V(1)  
10= VBOR set to 2.2V(1)  
01= VBOR set to 2.5V  
00= VBOR set to 2.85V  
BOREN<1:0>  
CONFIG2L  
Brown-out Reset Enable bits  
11= Brown-out Reset enabled in hardware only (SBOREN is disabled)  
10= Brown-out Reset enabled in hardware only and disabled in Sleep mode  
(SBOREN is disabled)  
01= Brown-out Reset enabled and controlled by software (SBOREN is enabled)  
00= Brown-out Reset disabled in hardware and software  
Power-up Timer Enable bit  
PWRTEN  
CONFIG2L  
1= PWRT disabled  
0= PWRT enabled  
WDTPS<3:0>  
CONFIG2H Watchdog Timer Postscaler Select bits  
1111= 1:32,768  
1110= 1:16,384  
1101= 1:8,192  
1100= 1:4,096  
1011= 1:2,048  
1010= 1:1,024  
1001= 1:512  
1000= 1:256  
0111= 1:128  
0110= 1:64  
0101= 1:32  
0100= 1:16  
0011= 1:8  
0010= 1:4  
0001= 1:2  
0000= 1:1  
WDTEN<1:0>  
CONFIG2H Watchdog Timer Enable bits  
11= WDT enabled in hardware; SWDTEN bit is disabled  
10= WDT controlled by the SWDTEN bit  
01= WDT enabled when device is active, disabled when device is in Sleep;  
SWDTEN bit is disabled  
00= WDT disabled in hardware; SWDTEN bit is disabled  
MCLR Pin Enable bit  
MCLRE  
SDOMX  
T3CMX  
CONFIG3H  
CONFIG3H  
1= MCLR pin enabled, RE3 input pin disabled  
0= RE3 input pin enabled, MCLR pin disabled  
SDO Output MUX bit  
1= SDO is on RB3  
0= SDO is on RC7  
CONFIG3H Timer3 Clock Input MUX bit  
1= T3CKI is on RC0  
0= T3CKI is on RB5  
Note 1: Minimum VDD for F devices is 2.3V.  
2: When the 3x Multiplier mode is selected, the input frequency has to be 16 MHz. When the 4x Multiplier  
mode is selected, the input frequency has to be between 8 MHz and 16 MHz.  
3: The dedicated In-Circuit Port is available only on the 44-pin TQFP packaged devices. This bit should be  
programmed to a ‘0’ in all other devices. See Section 2.2 “Dedicated ICSP/ICD Port (44-Pin TQFP  
Only)” for more information.  
2012 Microchip Technology Inc.  
DS41630B-page 31  
PIC18(L)F2X/4XK50  
TABLE 5-3:  
Bit Name  
PIC18(L)F2X/4XK50 BIT DESCRIPTIONS (CONTINUED)  
Configuration  
Words  
Description  
PBADEN  
CONFIG3H PORTB A/D Enable bit  
1= PORTB A/D<5:0> pins are configured as analog input channels on Reset  
0= PORTB A/D<5:0> pins are configured as digital I/O on Reset  
CCP2 MUX bit  
CCP2MX  
DEBUG  
CONFIG3H  
CONFIG4L  
1= CCP2 input/output is multiplexed with RC1  
0= CCP2 input/output is multiplexed with RB3  
Background Debugger Enable bit  
1= Background debugger disabled, RB6 and RB7 configured as general  
purpose I/O pins  
0= Background debugger enabled, RB6 and RB7 are dedicated to In-Circuit  
Debug  
XINST  
CONFIG4L  
Extended Instruction Set Enable bit  
1= Instruction set extension and Indexed Addressing mode enabled  
0= Instruction set extension and Indexed Addressing mode disabled  
(Legacy mode)  
ICPRT  
LVP  
CONFIG4L  
CONFIG4L  
Dedicated In-Circuit (ICD/ICSP) Port Enable bit(3)  
1= ICPORT enabled  
0= ICPORT disabled  
Low-Voltage Programming Enable bit  
If MCLRE = 1, then:  
1= Low-voltage programming enabled  
0= Low-voltage programming disabled  
If MCLRE = 0, then:  
LVP is disabled  
STVREN  
CONFIG4L  
Stack Overflow/Underflow Reset Enable bit  
1= Reset on Stack Overflow/Underflow enabled  
0= Reset on Stack Overflow/Underflow disabled  
Note 1: Minimum VDD for F devices is 2.3V.  
2: When the 3x Multiplier mode is selected, the input frequency has to be 16 MHz. When the 4x Multiplier  
mode is selected, the input frequency has to be between 8 MHz and 16 MHz.  
3: The dedicated In-Circuit Port is available only on the 44-pin TQFP packaged devices. This bit should be  
programmed to a ‘0’ in all other devices. See Section 2.2 “Dedicated ICSP/ICD Port (44-Pin TQFP  
Only)” for more information.  
DS41630B-page 32  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
TABLE 5-3:  
Bit Name  
CP3  
PIC18(L)F2X/4XK50 BIT DESCRIPTIONS (CONTINUED)  
Configuration  
Words  
Description  
CONFIG5L  
CONFIG5L  
CONFIG5L  
CONFIG5L  
Code Protection bits (Block 3 code memory area)  
1= Block 3 is not code-protected  
0= Block 3 is code-protected  
CP2  
CP1  
CP0  
CPD  
CPB  
Code Protection bits (Block 2 code memory area)  
1= Block 2 is not code-protected  
0= Block 2 is code-protected  
Code Protection bits (Block 1 code memory area)  
1= Block 1 is not code-protected  
0= Block 1 is code-protected  
Code Protection bits (Block 0 code memory area)  
1= Block 0 is not code-protected  
0= Block 0 is code-protected  
CONFIG5H Code Protection bits (Data EEPROM)  
1= Data EEPROM is not code-protected  
0= Data EEPROM is code-protected  
CONFIG5H Code Protection bits (Boot Block memory area)  
1= Boot Block is not code-protected  
0= Boot Block is code-protected  
Write Protection bits (Block 3 code memory area)  
WRT3  
WRT2  
WRT1  
WRT0  
WRTD  
WRTB  
WRTC  
CONFIG6L  
CONFIG6L  
CONFIG6L  
CONFIG6L  
1= Block 3 is not write-protected  
0= Block 3 is write-protected  
Write Protection bits (Block 2 code memory area)  
1= Block 2 is not write-protected  
0= Block 2 is write-protected  
Write Protection bits (Block 1 code memory area)  
1= Block 1 is not write-protected  
0= Block 1 is write-protected  
Write Protection bits (Block 0 code memory area)  
1= Block 0 is not write-protected  
0= Block 0 is write-protected  
CONFIG6H Write Protection bit (Data EEPROM)  
1= Data EEPROM is not write-protected  
0= Data EEPROM is write-protected  
CONFIG6H Write Protection bit (Boot Block memory area)  
1= Boot Block is not write-protected  
0= Boot Block is write-protected  
CONFIG6H Write Protection bit (Configuration registers)  
1= Configuration registers are not write-protected  
0= Configuration registers are write-protected  
Note 1: Minimum VDD for F devices is 2.3V.  
2: When the 3x Multiplier mode is selected, the input frequency has to be 16 MHz. When the 4x Multiplier  
mode is selected, the input frequency has to be between 8 MHz and 16 MHz.  
3: The dedicated In-Circuit Port is available only on the 44-pin TQFP packaged devices. This bit should be  
programmed to a ‘0’ in all other devices. See Section 2.2 “Dedicated ICSP/ICD Port (44-Pin TQFP  
Only)” for more information.  
2012 Microchip Technology Inc.  
DS41630B-page 33  
PIC18(L)F2X/4XK50  
TABLE 5-3:  
Bit Name  
EBTR3  
PIC18(L)F2X/4XK50 BIT DESCRIPTIONS (CONTINUED)  
Configuration  
Words  
Description  
CONFIG7L  
CONFIG7L  
CONFIG7L  
CONFIG7L  
Table Read Protection bit (Block 3 code memory area)  
1= Block 3 is not protected from table reads executed in other blocks  
0= Block 3 is protected from table reads executed in other blocks  
EBTR2  
Table Read Protection bit (Block 2 code memory area)  
1= Block 2 is not protected from table reads executed in other blocks  
0= Block 2 is protected from table reads executed in other blocks  
EBTR1  
Table Read Protection bit (Block 1 code memory area)  
1= Block 1 is not protected from table reads executed in other blocks  
0= Block 1 is protected from table reads executed in other blocks  
EBTR0  
Table Read Protection bit (Block 0 code memory area)  
1= Block 0 is not protected from table reads executed in other blocks  
0= Block 0 is protected from table reads executed in other blocks  
EBTRB  
CONFIG7H Table Read Protection bit (Boot Block memory area)  
1= Boot Block is not protected from table reads executed in other blocks  
0= Boot Block is protected from table reads executed in other blocks  
DEV<10:3>  
DEV<2:0>  
REV<4:0>  
DEVID2  
DEVID1  
DEVID1  
Device ID bits  
These bits are used with the DEV<2:0> bits in the DEVID1 register to  
identify part number.  
Device ID bits  
These bits are used with the DEV<10:3> bits in the DEVID2 register to  
identify part number.  
Revision ID bits  
These bits are used to indicate the revision of the device.  
Note 1: Minimum VDD for F devices is 2.3V.  
2: When the 3x Multiplier mode is selected, the input frequency has to be 16 MHz. When the 4x Multiplier  
mode is selected, the input frequency has to be between 8 MHz and 16 MHz.  
3: The dedicated In-Circuit Port is available only on the 44-pin TQFP packaged devices. This bit should be  
programmed to a ‘0’ in all other devices. See Section 2.2 “Dedicated ICSP/ICD Port (44-Pin TQFP  
Only)” for more information.  
DS41630B-page 34  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
5.3  
Single-Supply ICSP Programming  
5.6  
Checksum Computation  
The LVP bit in Configuration register, CONFIG4L,  
enables Single-Supply (Low-Voltage) ICSP  
Programming. The LVP bit defaults to a ‘1’ (enabled)  
The checksum is calculated by summing the following:  
• The contents of all code memory locations  
• The Configuration Word, appropriately masked  
from the factory.  
• ID locations (Only if any portion of program  
memory is code-protected)  
If Single-Supply Programming mode is not used, the  
LVP bit can be programmed to a ‘0’. However, the LVP  
bit may only be programmed by entering the High-  
Voltage ICSP mode, where MCLR/VPP/RE3 is raised  
to VIHH. Once the LVP bit is programmed to a ‘0’, only  
the High-Voltage ICSP mode is available and only the  
High-Voltage ICSP mode can be used to program the  
device.  
The Least Significant 16 bits of this sum are the  
checksum.  
Code protection limits access to program memory by  
both external programmer (code-protect) and code  
execution (table read protect). The ID locations, when  
included in a code-protected checksum, contain the  
checksum of an unprotected part. The unprotected  
checksum is distributed: one nibble per ID location.  
Each nibble is right justified.  
Note 1: The High-Voltage ICSP mode is always  
available, regardless of the state of the  
LVP bit, by applying VIHH to the MCLR/  
VPP/RE3 pin.  
Table 5-4 describes how to calculate the checksum for  
each device.  
5.4  
Embedding Configuration Word  
Information in the HEX File  
Note:  
The  
checksum  
calculation  
differs  
depending on the code-protect setting.  
Since the code memory locations read out  
differently depending on the code-protect  
setting, the table describes how to  
manipulate the actual code memory  
values to simulate the values that would  
be read from a protected device. When  
calculating a checksum by reading a  
device, the entire code memory can  
simply be read and summed. The  
Configuration Word and ID locations can  
always be read.  
To allow portability of code, a programmer is required  
to read the Configuration Word locations from the hex  
file. If Configuration Word information is not present in  
the hex file, then a simple warning message should be  
issued. Similarly, while saving  
a hex file, all  
Configuration Word information must be included. An  
option to not include the Configuration Word  
information may be provided. When embedding  
Configuration Word information in the hex file, it should  
start at address 300000h.  
Microchip Technology Inc. feels strongly that this  
feature is important for the benefit of the end customer.  
5.5  
Embedding Data EEPROM  
Information In the HEX File  
To allow portability of code, a programmer is required  
to read the data EEPROM information from the hex file.  
If data EEPROM information is not present, a simple  
warning message should be issued. Similarly, when  
saving a hex file, all data EEPROM information must be  
included. An option to not include the data EEPROM  
information may be provided. When embedding data  
EEPROM information in the hex file, it should start at  
address F00000h.  
Microchip Technology Inc. believes that this feature is  
important for the benefit of the end customer.  
2012 Microchip Technology Inc.  
DS41630B-page 35  
PIC18(L)F2X/4XK50  
TABLE 5-4:  
CHECKSUM COMPUTATION  
0xAA at 0  
and Max  
Address  
Code-  
Protect  
Blank  
Value  
Device  
Checksum  
(1)  
None SUM[0000:07FF]+SUM[0800:1FFF]+SUM[2000:3FFF]+  
(CONFIG1L & 3Bh)+  
C404  
C35A  
(CONFIG1H & EFh)+(CONFIG2L & 5Fh)+(CONFIG2H & 3Fh)+  
(CONFIG3L & 00h)+(CONFIG3H & D3h)+(CONFIG4L & E5h)+  
(CONFIG4H & 00h)+(CONFIG5L & 03h)+(CONFIG5H & C0h)+  
(CONFIG6L & 03h)+(CONFIG6H & E0h)+(CONFIG7L & 03h)+  
(CONFIG7H & 40h)  
Boot SUM[0800:1FFF]+SUM[2000:3FFF]+  
CBD8  
E3D7  
03D5  
CB8D  
E38C  
03DF  
Block (CONFIG1L & 3Bh)+(CONFIG1H & EFh)+(CONFIG2L & 5Fh)+  
(CONFIG2H & 3Fh)+(CONFIG3L & 00h)+(CONFIG3H & D3h)+  
(CONFIG4L & E5h)+(CONFIG4H & 00h)+(CONFIG5L & 03h)+  
(CONFIG5H & C0h)+(CONFIG6L & 03h)+(CONFIG6H & E0h)+  
(CONFIG7L & 03h)+(CONFIG7H & 40h)+SUM_ID  
PIC18FX4K50  
PIC18LFX4K50  
Boot/ SUM[2000:3FFF]+(CONFIG1L & 3Bh)+  
Block 0 (CONFIG1H & EFh)+(CONFIG2L & 5Fh)+(CONFIG2H & 3Fh)+  
(CONFIG3L & 00h)+(CONFIG3H & D3h)+(CONFIG4L & E5h)+  
(CONFIG4H & 00h)+(CONFIG5L & 03h)+(CONFIG5H & C0h)+  
(CONFIG6L & 03h)+(CONFIG6H & E0h)+(CONFIG7L & 03h)+  
(CONFIG7H & 40h)+SUM_ID  
All  
(CONFIG1L & 3Bh)+(CONFIG1H & EFh)+(CONFIG2L & 5Fh)+  
(CONFIG2H & 3Fh)+(CONFIG3L & 00h)+(CONFIG3H & D3h)+  
(CONFIG4L & E5h)+(CONFIG4H & 00h)+(CONFIG5L & 03h)+  
(CONFIG5H & C0h)+(CONFIG6L & 03h)+(CONFIG6H & E0h)+  
(CONFIG7L & 03h)+(CONFIG7H & 40h)+SUM_ID  
Legend: Item  
Description  
CONFIGx = Configuration Word  
SUM[a:b] = Sum of locations, a to b inclusive  
SUM_ID  
+
&
=
=
=
Byte-wise sum of lower four bits of all customer ID locations  
Addition  
Bit-wise AND  
Note 1: 0xAA at address 0 and 0xFF at address 1 for the beginning of program memory; 0xAA at Max address  
and 0xFF at Max address -1 for the end of program memory.  
DS41630B-page 36  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
TABLE 5-4:  
CHECKSUM COMPUTATION (CONTINUED)  
0xAA at 0  
and Max  
Address  
Code-  
Protect  
Blank  
Value  
Device  
Checksum  
(1)  
None SUM[0000:07FF]+SUM[0800:1FFF]+SUM[2000:3FFF]+  
SUM[4000:5FFF]+SUM[6000:7FFF]+(CONFIG1L & 3Bh)+  
(CONFIG1H & EFh)+(CONFIG2L & 5Fh)+(CONFIG2H & 3Fh)+  
(CONFIG3L & 00h)+(CONFIG3H & D3h)+(CONFIG4L & E5h)+  
(CONFIG4H & 00h)+(CONFIG5L & 0Fh)+(CONFIG5H & C0h)+  
(CONFIG6L & 0Fh)+(CONFIG6H & E0h)+(CONFIG7L & 0Fh)+  
(CONFIG7H & 40h)  
8428  
837E  
Boot SUM[0800:1FFF]+SUM[2000:3FFF]+SUM[4000:5FFF]+SUM[6000:7  
Block FFF]+  
8BFE  
8BB3  
(CONFIG1L & 3Bh)+(CONFIG1H & EFh)+(CONFIG2L & 5Fh)+  
(CONFIG2H & 3Fh)+(CONFIG3L & 00h)+(CONFIG3H & D3h)+  
(CONFIG4L & E5h)+(CONFIG4H & 00h)+(CONFIG5L & 0Fh)+  
(CONFIG5H & C0h)+(CONFIG6L & 0Fh)+(CONFIG6H & E0h)+  
(CONFIG7L & 0Fh)+(CONFIG7H & 40h)+SUM_ID  
PIC18FX5K50  
PIC18LFX5K50  
Boot/ SUM[4000:5FFF]+SUM[6000:7FFF]+(CONFIG1L & 3Bh)+  
Block 0/ (CONFIG1H & EFh)+(CONFIG2L & 5Fh)+(CONFIG2H & 3Fh)+  
Block 1 (CONFIG3L & 00h)+(CONFIG3H & D3h)+(CONFIG4L & E5h)+  
(CONFIG4H & 00h)+(CONFIG5L & 0Fh)+(CONFIG5H & C0h)+  
(CONFIG6L & 0Fh)+(CONFIG6H & E0h)+(CONFIG7L & 0Fh)+  
(CONFIG7H & 40h)+SUM_ID  
C3FB  
03EF  
C3B0  
03F9  
All  
(CONFIG1L & 3Bh)+(CONFIG1H & EFh)+(CONFIG2L & 5Fh)+  
(CONFIG2H & 3Fh)+(CONFIG3L & 00h)+(CONFIG3H & D3h)+  
(CONFIG4L & E5h)+(CONFIG4H & 00h)+(CONFIG5L & 0Fh)+  
(CONFIG5H & C0h)+(CONFIG6L & 0Fh)+(CONFIG6H & E0h)+  
(CONFIG7L & 0Fh)+(CONFIG7H & 40h)+SUM_ID  
Legend: Item  
Description  
CONFIGx = Configuration Word  
SUM[a:b] = Sum of locations, a to b inclusive  
SUM_ID  
+
&
=
=
=
Byte-wise sum of lower four bits of all customer ID locations  
Addition  
Bit-wise AND  
Note 1: 0xAA at address 0 and 0xFF at address 1 for the beginning of program memory; 0xAA at Max address  
and 0xFF at Max address -1 for the end of program memory.  
2012 Microchip Technology Inc.  
DS41630B-page 37  
PIC18(L)F2X/4XK50  
TABLE 5-4:  
CHECKSUM COMPUTATION (CONTINUED)  
0xAA at 0  
and Max  
Address  
Code-  
Protect  
Blank  
Value  
Device  
Checksum  
(1)  
None SUM[0000:07FF]+SUM[0800:3FFF]+SUM[4000:7FFF]+  
SUM[8000:BFFF]+SUM[C000:FFFF]+(CONFIG1L & 3Bh)+  
(CONFIG1H & EFh)+(CONFIG2L & 5Fh)+(CONFIG2H & 3Fh)+  
(CONFIG3L & 00h)+(CONFIG3H & D3h)+(CONFIG4L & E5h)+  
(CONFIG4H & 00h)+(CONFIG5L & 0Fh)+(CONFIG5H & C0h)+  
(CONFIG6L & 0Fh)+(CONFIG6H & E0h)+(CONFIG7L & 0Fh)+  
(CONFIG7H & 40h)  
0428  
037E  
Boot SUM[0800:3FFF]+SUM[4000:7FFF]+SUM[8000:BFFF]+SUM[C000:  
Block FFFF]+  
0BF6  
0BAB  
(CONFIG1L & 3Bh)+(CONFIG1H & EFh)+(CONFIG2L & 5Fh)+  
(CONFIG2H & 3Fh)+(CONFIG3L & 00h)+(CONFIG3H & D3h)+  
(CONFIG4L & E5h)+(CONFIG4H & 00h)+(CONFIG5L & 0Fh)+  
(CONFIG5H & C0h)+(CONFIG6L & 0Fh)+(CONFIG6H & E0h)+  
(CONFIG7L & 0Fh)+(CONFIG7H & 40h)+SUM_ID  
PIC18FX6K50  
PIC18LFX6K50  
Boot/ SUM[8000:BFFF]+SUM[C000:FFFF]+(CONFIG1L & 3Bh)+  
Block 0/ (CONFIG1H & EFh)+(CONFIG2L & 5Fh)+(CONFIG2H & 3Fh)+  
Block 1 (CONFIG3L & 00h)+(CONFIG3H & D3h)+(CONFIG4L & E5h)+  
(CONFIG4H & 00h)+(CONFIG5L & 0Fh)+(CONFIG5H & C0h)+  
(CONFIG6L & 0Fh)+(CONFIG6H & E0h)+(CONFIG7L & 0Fh)+  
(CONFIG7H & 40h)+SUM_ID  
83F3  
03E7  
83A8  
03F1  
All  
(CONFIG1L & 3Bh)+(CONFIG1H & EFh)+(CONFIG2L & 5Fh)+  
(CONFIG2H & 3Fh)+(CONFIG3L & 00h)+(CONFIG3H & D3h)+  
(CONFIG4L & E5h)+(CONFIG4H & 00h)+(CONFIG5L & 0Fh)+  
(CONFIG5H & C0h)+(CONFIG6L & 0Fh)+(CONFIG6H & E0h)+  
(CONFIG7L & 0Fh)+(CONFIG7H & 40h)+SUM_ID  
Legend: Item  
Description  
CONFIGx = Configuration Word  
SUM[a:b] = Sum of locations, a to b inclusive  
SUM_ID  
+
&
=
=
=
Byte-wise sum of lower four bits of all customer ID locations  
Addition  
Bit-wise AND  
Note 1: 0xAA at address 0 and 0xFF at address 1 for the beginning of program memory; 0xAA at Max address  
and 0xFF at Max address -1 for the end of program memory.  
DS41630B-page 38  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
6.0  
AC/DC CHARACTERISTICS TIMING REQUIREMENTS FOR PROGRAM/  
VERIFY TEST MODE  
Standard Operating Conditions  
Operating Temperature: 25C is recommended  
Param  
No.  
Sym.  
Characteristic  
Min.  
Max.  
Units  
Conditions  
D110  
D111  
VIHH  
VDD  
High-Voltage Programming Voltage on MCLR/VPP/RE3  
8
1.8  
9
3.6  
V
V
V
V
Supply Voltage (VDDMIN, VDDMAX)  
PIC18LF  
PIC18F  
2.3  
5.5  
D111A VPEW Voltage during Write or Erase Operations PIC18LF  
PIC18F  
2.2V  
VDDMIN  
2.7  
VDDMAX  
VDDMAX  
VDDMAX  
300  
Row Erase/Write  
D111B VBULK Voltage during Bulk Erase Operations  
V
A  
mA  
V
Bulk Erase operations  
D112  
D113  
D031  
D041  
D080  
D090  
D012  
IPP  
Programming Current on MCLR/VPP/RE3  
Supply Current During Programming  
Input Low Voltage  
IDDP  
VIL  
10  
VSS  
0.2 VDD  
VDD  
VIH  
VOL  
VOH  
CIO  
Input High Voltage  
0.8 VDD  
V
Output Low Voltage  
0.6  
V
IOL = 8.5 mA @ 3.0V  
IOH = 3.0 mA @ 3.0V  
Output High Voltage  
VDD – 0.7  
V
Capacitive Loading on I/O pin (PGD)  
50  
pF To meet AC  
specifications  
P1  
P2  
TR  
MCLR/VPP/RE3 Rise Time to enter Program/Verify mode  
Serial Clock (PGC) Period  
100  
1
1.0  
s  
ns  
s  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
(Note 1)  
TPGC  
VDD = 3.6V  
VDD = 1.8V  
VDD = 3.6V  
VDD = 1.8V  
VDD = 3.6V  
VDD = 1.8V  
P2A  
P2B  
TPGCL  
TPGCH  
Serial Clock (PGC) Low Time  
Serial Clock (PGC) High Time  
40  
400  
40  
400  
15  
P3  
TSET1  
THLD1  
TDLY1  
Input Data Setup Time to Serial Clock   
P4  
Input Data Hold Time from PGC  
15  
P5  
Delay between 4-bit Command and Command Operand  
40  
P5A  
TDLY1A Delay between 4-bit Command Operand  
and next 4-bit Command  
40  
P6  
TDLY2  
Delay between Last PGC of Command Byte to First PGC  
of Read of Data Word  
20  
1
ns  
P9  
TDLY5  
PGC High Time (minimum programming  
time)  
ms Externally Timed  
P9A  
P10  
P11  
TDLY5A PGC High Time  
5
ms Configuration Word  
programming time  
TDLY6  
TDLY7  
PGC Low Time after Programming  
(high-voltage discharge time)  
200  
15  
s  
Delay to allow Self-Timed Bulk Erase to  
occur  
PIC18(L)FX5K50  
PIC18(L)FX6K50  
ms  
PIC18(L)F24K50  
12  
4
ms  
ms  
P11A TDRWT Data Write Polling Time  
Note 1: Do not allow excess time when transitioning MCLR between VIL and VIHH; this can cause spurious program executions  
to occur. The maximum transition time is:  
1 TCY + TPWRT (if enabled) + 1024 TOSC (for LP, HS, HS/PLL and XT modes only) + 2 ms (for HS/PLL mode only) + 1.5  
s (for EC mode only) where TCY is the instruction cycle time, TPWRT is the Power-up Timer period and TOSC is the  
oscillator period. For specific values, refer to the Electrical Characteristics section of the device data sheet for the  
particular device.  
2012 Microchip Technology Inc.  
DS41630B-page 39  
PIC18(L)F2X/4XK50  
6.0  
AC/DC CHARACTERISTICS TIMING REQUIREMENTS FOR PROGRAM/  
VERIFY TEST MODE (CONTINUED)  
Standard Operating Conditions  
Operating Temperature: 25C is recommended  
Param  
No.  
Sym.  
Characteristic  
Min.  
Max.  
Units  
Conditions  
P11B TDLY7B Delay for Self-Timed Memory Write  
2
2
ms  
P12  
THLD2  
Input Data Hold Time from MCLR/VPP/  
s  
RE3   
P13  
P14  
P15  
P16  
P17  
P18  
TSET2  
TVALID  
THLD4  
TDLY8  
THLD3  
TKEY1  
VDD Setup Time to MCLR/VPP/RE3   
Data Out Valid from PGC   
100  
10  
400  
0
ns  
ns  
s  
s
Input data hold time from MCLR   
Delay between Last PGC and MCLR/VPP/RE3   
MCLR/VPP/RE3 to VDD   
1
100  
ns  
ms  
Delay from First MCLR to first PGC for Key Sequence on  
PGD  
P19  
P20  
THIZ  
Delay from PGC to PGD High-Z  
3
10  
ns  
ns  
TKEY2  
Delay from Last PGC for Key Sequence on PGD to  
Second MCLR   
40  
Note 1: Do not allow excess time when transitioning MCLR between VIL and VIHH; this can cause spurious program executions  
to occur. The maximum transition time is:  
1 TCY + TPWRT (if enabled) + 1024 TOSC (for LP, HS, HS/PLL and XT modes only) + 2 ms (for HS/PLL mode only) + 1.5  
s (for EC mode only) where TCY is the instruction cycle time, TPWRT is the Power-up Timer period and TOSC is the  
oscillator period. For specific values, refer to the Electrical Characteristics section of the device data sheet for the  
particular device.  
DS41630B-page 40  
2012 Microchip Technology Inc.  
PIC18(L)F2X/4XK50  
APPENDIX A: REVISION HISTORY  
Revision A (06/2012)  
Initial release of this document.  
Revision B (08/2012)  
• Inserted Note 1 and updated the values in the  
“Blank Value” and “0xAA at 0 and Max Address”  
columns of Table 5-4.  
2012 Microchip Technology Inc.  
DS41630B-page 41  
PIC18(L)F2X/4XK50  
NOTES:  
DS41630B-page 42  
2012 Microchip Technology Inc.  
Note the following details of the code protection feature on Microchip devices:  
Microchip products meet the specification contained in their particular Microchip Data Sheet.  
Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the  
intended manner and under normal conditions.  
There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our  
knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data  
Sheets. Most likely, the person doing so is engaged in theft of intellectual property.  
Microchip is willing to work with the customer who is concerned about the integrity of their code.  
Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not  
mean that we are guaranteeing the product as “unbreakable.”  
Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our  
products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts  
allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.  
Information contained in this publication regarding device  
applications and the like is provided only for your convenience  
and may be superseded by updates. It is your responsibility to  
ensure that your application meets with your specifications.  
MICROCHIP MAKES NO REPRESENTATIONS OR  
WARRANTIES OF ANY KIND WHETHER EXPRESS OR  
IMPLIED, WRITTEN OR ORAL, STATUTORY OR  
OTHERWISE, RELATED TO THE INFORMATION,  
INCLUDING BUT NOT LIMITED TO ITS CONDITION,  
QUALITY, PERFORMANCE, MERCHANTABILITY OR  
FITNESS FOR PURPOSE. Microchip disclaims all liability  
arising from this information and its use. Use of Microchip  
devices in life support and/or safety applications is entirely at  
the buyer’s risk, and the buyer agrees to defend, indemnify and  
hold harmless Microchip from any and all damages, claims,  
suits, or expenses resulting from such use. No licenses are  
conveyed, implicitly or otherwise, under any Microchip  
intellectual property rights.  
Trademarks  
The Microchip name and logo, the Microchip logo, dsPIC,  
KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro, PICSTART,  
32  
PIC logo, rfPIC and UNI/O are registered trademarks of  
Microchip Technology Incorporated in the U.S.A. and other  
countries.  
FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor,  
MXDEV, MXLAB, SEEVAL and The Embedded Control  
Solutions Company are registered trademarks of Microchip  
Technology Incorporated in the U.S.A.  
Analog-for-the-Digital Age, Application Maestro, BodyCom,  
chipKIT, chipKIT logo, CodeGuard, dsPICDEM,  
dsPICDEM.net, dsPICworks, dsSPEAK, ECAN,  
ECONOMONITOR, FanSense, HI-TIDE, In-Circuit Serial  
Programming, ICSP, Mindi, MiWi, MPASM, MPLAB Certified  
logo, MPLIB, MPLINK, mTouch, Omniscient Code  
Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit,  
PICtail, REAL ICE, rfLAB, Select Mode, Total Endurance,  
TSHARC, UniWinDriver, WiperLock and ZENA are  
trademarks of Microchip Technology Incorporated in the  
U.S.A. and other countries.  
SQTP is a service mark of Microchip Technology Incorporated  
in the U.S.A.  
All other trademarks mentioned herein are property of their  
respective companies.  
© 2012, Microchip Technology Incorporated, Printed in the  
U.S.A., All Rights Reserved.  
Printed on recycled paper.  
ISBN: 978-1-62076-511-1  
QUALITY MANAGEMENT SYSTEM  
CERTIFIED BY DNV  
Microchip received ISO/TS-16949:2009 certification for its worldwide  
headquarters, design and wafer fabrication facilities in Chandler and  
Tempe, Arizona; Gresham, Oregon and design centers in California  
and India. The Company’s quality system processes and procedures  
are for its PIC® MCUs and dsPIC® DSCs, KEELOQ® code hopping  
devices, Serial EEPROMs, microperipherals, nonvolatile memory and  
analog products. In addition, Microchip’s quality system for the design  
and manufacture of development systems is ISO 9001:2000 certified.  
== ISO/TS 16949 ==  
2012 Microchip Technology Inc.  
DS41630B-page 43  
Worldwide Sales and Service  
AMERICAS  
ASIA/PACIFIC  
ASIA/PACIFIC  
EUROPE  
Corporate Office  
2355 West Chandler Blvd.  
Chandler, AZ 85224-6199  
Tel: 480-792-7200  
Fax: 480-792-7277  
Technical Support:  
http://www.microchip.com/  
support  
Asia Pacific Office  
Suites 3707-14, 37th Floor  
Tower 6, The Gateway  
Harbour City, Kowloon  
Hong Kong  
Tel: 852-2401-1200  
Fax: 852-2401-3431  
India - Bangalore  
Tel: 91-80-3090-4444  
Fax: 91-80-3090-4123  
Austria - Wels  
Tel: 43-7242-2244-39  
Fax: 43-7242-2244-393  
Denmark - Copenhagen  
Tel: 45-4450-2828  
Fax: 45-4485-2829  
India - New Delhi  
Tel: 91-11-4160-8631  
Fax: 91-11-4160-8632  
France - Paris  
Tel: 33-1-69-53-63-20  
Fax: 33-1-69-30-90-79  
India - Pune  
Tel: 91-20-2566-1512  
Fax: 91-20-2566-1513  
Australia - Sydney  
Tel: 61-2-9868-6733  
Fax: 61-2-9868-6755  
Web Address:  
www.microchip.com  
Germany - Munich  
Tel: 49-89-627-144-0  
Fax: 49-89-627-144-44  
Japan - Osaka  
Tel: 81-66-152-7160  
Fax: 81-66-152-9310  
Atlanta  
Duluth, GA  
Tel: 678-957-9614  
Fax: 678-957-1455  
China - Beijing  
Tel: 86-10-8569-7000  
Fax: 86-10-8528-2104  
Italy - Milan  
Tel: 39-0331-742611  
Fax: 39-0331-466781  
Japan - Yokohama  
Tel: 81-45-471- 6166  
Fax: 81-45-471-6122  
China - Chengdu  
Tel: 86-28-8665-5511  
Fax: 86-28-8665-7889  
Boston  
Westborough, MA  
Tel: 774-760-0087  
Fax: 774-760-0088  
Netherlands - Drunen  
Tel: 31-416-690399  
Fax: 31-416-690340  
Korea - Daegu  
Tel: 82-53-744-4301  
Fax: 82-53-744-4302  
China - Chongqing  
Tel: 86-23-8980-9588  
Fax: 86-23-8980-9500  
Chicago  
Itasca, IL  
Tel: 630-285-0071  
Fax: 630-285-0075  
Spain - Madrid  
Tel: 34-91-708-08-90  
Fax: 34-91-708-08-91  
Korea - Seoul  
China - Hangzhou  
Tel: 86-571-2819-3187  
Fax: 86-571-2819-3189  
Tel: 82-2-554-7200  
Fax: 82-2-558-5932 or  
82-2-558-5934  
UK - Wokingham  
Tel: 44-118-921-5869  
Fax: 44-118-921-5820  
Cleveland  
Independence, OH  
Tel: 216-447-0464  
Fax: 216-447-0643  
China - Hong Kong SAR  
Tel: 852-2401-1200  
Fax: 852-2401-3431  
Malaysia - Kuala Lumpur  
Tel: 60-3-6201-9857  
Fax: 60-3-6201-9859  
Dallas  
Addison, TX  
Tel: 972-818-7423  
Fax: 972-818-2924  
China - Nanjing  
Tel: 86-25-8473-2460  
Fax: 86-25-8473-2470  
Malaysia - Penang  
Tel: 60-4-227-8870  
Fax: 60-4-227-4068  
China - Qingdao  
Tel: 86-532-8502-7355  
Fax: 86-532-8502-7205  
Philippines - Manila  
Tel: 63-2-634-9065  
Fax: 63-2-634-9069  
Detroit  
Farmington Hills, MI  
Tel: 248-538-2250  
Fax: 248-538-2260  
China - Shanghai  
Tel: 86-21-5407-5533  
Fax: 86-21-5407-5066  
Singapore  
Tel: 65-6334-8870  
Fax: 65-6334-8850  
Indianapolis  
Noblesville, IN  
Tel: 317-773-8323  
Fax: 317-773-5453  
China - Shenyang  
Tel: 86-24-2334-2829  
Fax: 86-24-2334-2393  
Taiwan - Hsin Chu  
Tel: 886-3-5778-366  
Fax: 886-3-5770-955  
Los Angeles  
China - Shenzhen  
Tel: 86-755-8203-2660  
Fax: 86-755-8203-1760  
Taiwan - Kaohsiung  
Tel: 886-7-536-4818  
Fax: 886-7-330-9305  
Mission Viejo, CA  
Tel: 949-462-9523  
Fax: 949-462-9608  
China - Wuhan  
Tel: 86-27-5980-5300  
Fax: 86-27-5980-5118  
Taiwan - Taipei  
Tel: 886-2-2500-6610  
Fax: 886-2-2508-0102  
Santa Clara  
Santa Clara, CA  
Tel: 408-961-6444  
Fax: 408-961-6445  
China - Xian  
Tel: 86-29-8833-7252  
Fax: 86-29-8833-7256  
Thailand - Bangkok  
Tel: 66-2-694-1351  
Fax: 66-2-694-1350  
Toronto  
Mississauga, Ontario,  
Canada  
China - Xiamen  
Tel: 905-673-0699  
Fax: 905-673-6509  
Tel: 86-592-2388138  
Fax: 86-592-2388130  
China - Zhuhai  
Tel: 86-756-3210040  
Fax: 86-756-3210049  
11/29/11  
DS41630B-page 44  
2012 Microchip Technology Inc.  

相关型号:

PIC18LC242

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP

PIC18LC242-E/JW

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP

PIC18LC242-E/L

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP

PIC18LC242-E/P

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP

PIC18LC242-E/PT

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP

PIC18LC242-E/SO

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP

PIC18LC242-E/SP

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP

PIC18LC242-I/JW

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP

PIC18LC242-I/L

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP

PIC18LC242-I/P

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP

PIC18LC242-I/PT

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP

PIC18LC242-I/SO

High-Performance Microcontrollers with 10-Bit A/D
MICROCHIP