PIC12C5XX In-Circuit Serial ProgrammingTM for PIC12C5XX OTP MCUs This document includes the programming specifications for the following devices: 1.0 * PIC12C508A * PIC12C509A * PIC12CE518 * PIC12CE519 PROGRAMMING THE PIC12C5XX PDIP, SOIC, JW VDD 1 GP5/OSC1/CLKIN 2 GP4/OSC2/CLKOUT 3 GP3/MCLR/VPP 4 PIC12C5XX PIC12C5XXA PIC12CE5XXA * PIC12C508 * PIC12C509 Pin Diagram 8 VSS 7 GP0 6 GP1 5 GP2/T0CKI The PIC12C5XX can be programmed using a serial method. Due to this serial programming, the PIC12C5XX can be programmed while in the user's system, increasing design flexibility. This programming specification applies to PIC12C5XX devices in all packages. 1.1 Hardware Requirements The PIC12C5XX requires two programmable power supplies, one for VDD (2.0V to 6.5V recommended) and one for VPP (12V to 14V). Both supplies should have a minimum resolution of 0.25V. 1.2 Programming Mode The Programming mode for the PIC12C5XX allows programming of user program memory, special locations used for ID, and the configuration word for the PIC12C5XX. 2001 Microchip Technology Inc. DS30557F-page 1 PIC12C5XX 2.0 PROGRAM MODE ENTRY 5. The Program/Verify Test mode is entered by holding pins DB0 and DB1 low, while raising MCLR pin from VIL to VIHH. Once in this Test mode, the user program memory and the test program memory can be accessed and programmed in a serial fashion. The first selected memory location is the fuses. GP0 and GP1 are Schmitt Trigger inputs in this mode. 6. Incrementing the PC once (using the increment address command), selects location 0x000 of the regular program memory. Afterwards, all other memory locations from 0x001-01FF (PIC12C508/CE518), 0x001-03FF (PIC12C509/CE519) can be addressed by incrementing the PC. If the program counter has reached the last user program location and is incremented again, the on-chip special EPROM area will be addressed. (See Figure 22 to determine where the special EPROM area is located for the various PIC12C5XX devices.) 2.1 Programming Method The programming technique is described in the following section. It is designed to guarantee good programming margins. It does, however, require a variable power supply for VCC. 2.1.1 Verify all locations (using Speed Verify mode) at VDD = VDDMIN. Verify all locations at VDD = VDDMAX. VDDMIN is the minimum operating voltage spec. for the part. VDDMAX is the maximum operating voltage spec. for the part. 2.1.2 Clearly, to implement this technique, the most stringent requirements will be that of the power supplies: VPP: VPP can be a fixed 13.0V to 13.25V supply. It must not exceed 14.0V to avoid damage to the pin and should be current limited to approximately 100mA. VDD: 2.0V to 6.5V with 0.25V granularity. Since this method calls for verification at different VDD values, a programmable VDD power supply is needed. Current Requirement: 40mA maximum Microchip may release devices in the future with different VDD ranges, which make it necessary to have a programmable VDD. It is important to verify an EPROM at the voltages specified in this method to remain consistent with Microchip's test screening. For example, a PIC12C5XX specified for 4.5V to 5.5V should be tested for proper programming from 4.5V to 5.5V. PROGRAMMING METHOD DETAILS Note: Essentially, this technique includes the following steps: 1. 2. a) b) Perform blank check at VDD = VDDMIN. Report failure. The device may not be properly erased. Program location with pulses and verify after each pulse at VDD = VDDP: where VDDP = VDD range required during programming (4.5V - 5.5V). Programming condition: VPP = 13.0V to 13.25V VDD = VDDP = 4.5V to 5.5V VPP must be VDD + 7.25V to keep "Programming mode" active. Verify condition: VDD = VDDP VPP VDD + 7.5V but not to exceed 13.25V If location fails to program after "N" pulses (suggested maximum program pulses of 8), then report error as a programming failure. Note: 3. 4. Device must be verified at minimum and maximum specified operating voltages as specified in the data sheet. Once location passes "Step 2", apply 11X over programming, i.e., apply 11 times the number of pulses that were required to program the location. This will insure a solid programming margin. The over programming should be made "software programmable" for easy updates. Program all locations. DS30557F-page 2 SYSTEM REQUIREMENTS 2.1.3 Any programmer not meeting the programmable VDD requirement and the verify at VDDMAX and VDDMIN requirement, may only be classified as a "prototype" or "development" programmer, but not a production programmer. SOFTWARE REQUIREMENTS Certain parameters should be programmable (and therefore, easily modified) for easy upgrade. a) b) c) 2.2 Pulse width. Maximum number of pulses, present limit 8. Number of over-programming pulses: should be = (A * N) + B, where N = number of pulses required in regular programming. In our current algorithm A = 11, B = 0. Programming Pulse Width Program Memory Cells: When programming one word of EPROM, a programming pulse width (TPW) of 100s is recommended. The maximum number of programming attempts should be limited to 8 per word. After the first successful verify, the same location should be over-programmed with 11X over-programming. Configuration Word: The configuration word for oscillator selection, WDT (Watchdog Timer) disable and code protection, and MCLR enable, requires a programming pulse width (TPWF) of 10ms. A series of 100s pulses is preferred over a single 10ms pulse. 2001 Microchip Technology Inc. PIC12C5XX FIGURE 2-1: PROGRAMMING METHOD FLOW CHART Start Blank Check @ VDD = VDDMIN Report Possible Erase Failure Continue Programming at user's option No Pass? Report Programming Failure Yes Yes Program 1 Location @ VPP = 13.0V to 13.25V VDD = VDDP No Pass? No N > 8? N=N+1 (N = # of program pulses) Yes Increment PC to point to next location, N = 0 Apply 11N additional program pulses No All locations done? Yes Verify all locations @ VDD = VDDMIN No Pass? Report verify failure @ VDDMIN Yes Verify all locations VDD max. @VDD VDD= = VDDMAX No Pass? Report verify failure @ VDDMAX Yes Now program Configuration Word Verify Configuration Word @ VDDMAX & VDDMIN Done 2001 Microchip Technology Inc. DS30557F-page 3 PIC12C5XX FIGURE 2-2: PIC12C5XX SERIES PROGRAM MEMORY MAP IN PROGRAM/VERIFY MODE Address 11 (HEX) 000 NNN Bit Number 0 User Program Memory (NNN + 1) x 12 bit TTT 0 0 ID0 TTT + 1 0 0 0 0 ID1 ID2 0 0 ID3 TTT + 2 TTT + 3 For Customer Use (4 x 4 bit usable) For Factory Use TTT + 3F (FFF) Configuration Word 5 bits NNN Highest normal EPROM memory address. NNN = 0x1FF for PIC12C508/CE518. NNN = 0x3FF for PIC12C509/CE519. Note that some versions will have an oscillator calibration value programmed at NNN. TTT Start address of special EPROM area and ID locations. DS30557F-page 4 2001 Microchip Technology Inc. PIC12C5XX 2.3 Special Memory Locations The highest address of program memory space is reserved for the internal RC oscillator calibration value. This location should not be overwritten except when this location is blank, and it should be verified, when programmed, that it is a MOVLW XX instruction. The ID Locations area is only enabled if the device is in Programming/Verify mode. Thus, in normal operation mode, only the memory location 0x000 to 0xNNN will be accessed and the Program Counter will just rollover from address 0xNNN to 0x000 when incremented. The configuration word can only be accessed immediately after MCLR going from VIL to VHH. The Program Counter will be set to all '1's upon MCLR = VIL. Thus, it has the value "0xFFF" when accessing the configuration EPROM. Incrementing the Program Counter once causes the Program Counter to rollover to all '0's. Incrementing the Program Counter 4K times after RESET (MCLR = VIL) does not allow access to the configuration EPROM. 2.3.1 CUSTOMER ID CODE LOCATIONS Per definition, the first four words (address TTT to TTT + 3) are reserved for customer use. It is recommended that the customer use only the four lower order bits (bits 0 through 3) of each word and filling the eight higher order bits with '0's. A user may want to store an identification code (ID) in the ID locations and still be able to read this code after the code protection bit was programmed. EXAMPLE 2-1: The Customer ID code "0xD1E2" should be stored in the ID locations 0x200-0x203 like this (PIC12C508/ 508A/CE518): 200: 201: 202: 203: 0000 0000 0000 0000 0000 0000 0000 0000 1101 0001 1110 0010 Reading these four memory locations, even with the code protection bit programmed, would still output on GP0 the bit sequence "1101", "0001", "1110", "0010" which is "0xD1E2". Note: 2.4 All other locations in PICmicro(R) MCU configuration memory are reserved and should not be programmed. Program/Verify Mode The Program/Verify mode is entered by holding pins GP1 and GP0 low, while raising MCLR pin from VIL to VIHH (high voltage). Once in this mode, the user program memory and the configuration memory can be accessed and programmed in serial fashion. The mode of operation is serial. GP0 and GP1 are Schmitt Trigger inputs in this mode. The sequence that enters the device into the Programming/Verify mode places all other logic into the RESET state (the MCLR pin was initially at VIL). This means that all I/O are in the RESET state (High impedance inputs). Note: 2001 Microchip Technology Inc. CUSTOMER CODE 0xD1E2 The MCLR pin should be raised from VIL to VIHH within 9 ms of VDD rise. This is to ensure that the device does not have the PC incremented while in valid operation range. DS30557F-page 5 PIC12C5XX 2.4.1 PROGRAM/VERIFY OPERATION All commands are transmitted LSb first. Data words are also transmitted LSb first. The data is transmitted on the rising edge and latched on the falling edge of the clock. To allow for decoding of commands and reversal of data pin configuration, a time separation of at least 1 s is required between a command and a data word (or another command). The GP1 pin is used as a clock input pin, and the GP0 pin is used for entering command bits and data input/ output during serial operation. To input a command, the clock pin (GP1) is cycled six times. Each command bit is latched on the falling edge of the clock with the Least Significant bit (LSb) of the command being input first. The data on pin GP0 is required to have a minimum setup and hold time (see AC/DC specs), with respect to the falling edge of the clock. Commands that have data associated with them (read and load) are specified to have a minimum delay of 1 s between the command and the data. After this delay, the clock pin is cycled 16 times with the first cycle being a START bit and the last cycle being a STOP bit. Data is also input and output LSb first. Therefore, during a read operation, the LSb will be transmitted onto pin GP0 on the rising edge of the second cycle, and during a load operation, the LSb will be latched on the falling edge of the second cycle. A minimum 1 s delay is also specified between consecutive commands. TABLE 2-1: The commands that are available are listed in Table 2-1. COMMAND MAPPING Command Mapping (MSb ... LSb) Data Load Data 0 0 0 0 1 0 0, data(14), 0 Read Data 0 0 0 1 0 0 0, data(14), 0 Increment Address 0 0 0 1 1 0 Begin programming 0 0 1 0 0 0 End Programming 0 0 1 1 1 0 Note: The clock must be disabled during in-circuit programming. DS30557F-page 6 2001 Microchip Technology Inc. PIC12C5XX 2.4.1.1 Load Data After receiving this command, the chip will load in a 14-bit "data word" when 16 cycles are applied, as described previously. Because this is a 12-bit core, the two MSb's of the data word are ignored. A timing diagram for the load data command is shown in Figure 5-1. 2.4.1.2 Read Data After receiving this command, the chip will transmit data bits out of the memory currently accessed, starting with the second rising edge of the clock input. The GP0 pin will go into output mode on the second rising clock edge, and it will revert back to input mode (hi-impedance) after the 16th rising edge. Because this is a 12bit core, the two MSb's of the data are unused and read as '0'. A timing diagram of this command is shown in Figure 5-2. 2.4.1.3 Increment Address The PC is incremented when this command is received. A timing diagram of this command is shown in Figure 5-3. 2.4.1.4 2.5 Programming Algorithm Requires Variable VDD The PIC12C5XX uses an intelligent algorithm. The algorithm calls for program verification at VDDMIN, as well as VDDMAX. Verification at VDDMIN guarantees good "erase margin". Verification at VDDMAX guarantees good "program margin". The actual programming must be done with VDD in the VDDP range (4.75 - 5.25V). VDDP = VCC range required during programming. VDDMIN = minimum operating VDD spec for the part. VDDMAX = maximum operating VDD spec for the part. Programmers must verify the PIC12C5XX at its specified VDDMAX and VDDMIN levels. Since Microchip may introduce future versions of the PIC12C5XX with a broader VDD range, it is best that these levels are user selectable (defaults are ok). Note: Any programmer not meeting these requirements may only be classified as a "prototype" or "development" programmer, but not a "production" quality programmer. Begin Programming A load data command must be given before every begin programming command. Programming of the appropriate memory (test program memory or user program memory) will begin after this command is received and decoded. Programming should be performed with a series of 100s programming pulses. A programming pulse is defined as the time between the begin programming command and the end programming command. 2.4.1.5 End Programming After receiving this command, the chip stops programming the memory (configuration program memory or user program memory) that it was programming at the time. 2001 Microchip Technology Inc. DS30557F-page 7 PIC12C5XX 3.0 CONFIGURATION WORD The PIC12C5XX family members have several configuration bits. These bits can be programmed (reads '0'), or left unprogrammed (reads '1'), to select various device configurations. Figure 3-1 provides an overview of configuration bits. FIGURE 3-1: Bit Number: PIC12C5XX CONFIGURATION WORD BIT MAP 11 10 9 8 7 6 5 4 3 -- -- -- -- -- -- -- MCLRE CP 2 1 0 WDTE FOSC1 FOSC0 bit 11-5: Reserved: Write as '0' for PIC12C5XX bit 4: MCLRE: Master Clear Enable bit 1 = MCLR pin enabled 0 = MCLR internally connected to VDD bit 3: CP: Code Protect Enable bit 1 = Code memory unprotected 0 = Code memory protected bit 2: WDTE, WDT Enable bit 1 = WDT enabled 0 = WDT disabled bit 1-0: FOSC<1:0>, Oscillator Selection Bit 11 = External RC oscillator 10 = Internal RC oscillator 01 = XT oscillator 00 = LP oscillator DS30557F-page 8 2001 Microchip Technology Inc. PIC12C5XX 4.0 CODE PROTECTION The program code written into the EPROM can be protected by writing to the CP bit of the configuration word. vented from further programming. All unprotected segments, including ID locations and configuration word, read normally. These locations can be programmed. In PIC12C5XX, it is still possible to program and read locations 0x000 through 0x03F, after code protection. Once code protection is enabled, all protected segments read '0's (or "garbage values") and are pre- Once code protection is enabled, all code protected locations read 0's. All unprotected segments, including the internal oscillator calibration value, ID, and configuration word read as normal. 4.1 Embedding Configuration Word and ID Information in the HEX File To allow portability of code, the programmer is required to read the configuration word and ID locations from the HEX file when loading the HEX file. If configuration word information was not present in the HEX file, then a simple warning message may be issued. Similarly, while saving a HEX file, configuration word and ID information must be included. An option to not include this information may be provided. Microchip Technology Inc. feels strongly that this feature is important for the benefit of the end customer. TABLE 4-1: CODE PROTECTION PIC12C508 To code protect: * (CP enable pattern: XXXXXXXX0XXX) Program Memory Segment R/W in Protected Mode R/W in Unprotected Mode Configuration Word (0xFFF) Read Enabled, Write Enabled Read Enabled, Write Enabled [0x00:0x3F] Read Enabled, Write Enabled Read Enabled, Write Enabled [0x40:0x1FF] Read Disabled (all 0's), Write Disabled Read Enabled, Write Enabled ID Locations (0x200 : 0x203) Read Enabled, Write Enabled Read Enabled, Write Enabled PIC12C508A To code protect: * (CP enable pattern: XXXXXXXX0XXX) Program Memory Segment R/W in Protected Mode R/W in Unprotected Mode Configuration Word (0xFFF) Read Enabled, Write Enabled Read Enabled, Write Enabled [0x00:0x3F] Read Enabled, Write Enabled Read Enabled, Write Enabled [0x40:0x1FE] Read Disabled (all 0's), Write Disabled Read Enabled, Write Enabled 0x1FF Oscillator Calibration Value Read Enabled, Write Enabled Read Enabled, Write Enabled ID Locations (0x200 : 0x203) Read Enabled, Write Enabled Read Enabled, Write Enabled PIC12C509 To code protect: * (CP enable pattern: XXXXXXXX0XXX) Program Memory Segment R/W in Protected Mode R/W in Unprotected Mode Configuration Word (0xFFF) Read Enabled, Write Enabled Read Enabled, Write Enabled [0x00:0x3F] Read Enabled, Write Enabled Read Enabled, Write Enabled [0x40:0x3FF] Read Disabled (all 0's), Write Disabled Read Enabled, Write Enabled ID Locations (0x400 : 0x403) Read Enabled, Write Enabled Read Enabled, Write Enabled 2001 Microchip Technology Inc. DS30557F-page 9 PIC12C5XX PIC12C509A To code protect: * (CP enable pattern: XXXXXXXX0XXX) Program Memory Segment R/W in Protected Mode R/W in Unprotected Mode Configuration Word (0xFFF) Read Enabled, Write Enabled Read Enabled, Write Enabled [0x00:0x3F] Read Enabled, Write Enabled Read Enabled, Write Enabled [0x40:0x3FE] Read Disabled (all 0's), Write Disabled Read Enabled, Write Enabled 0x3FF Oscillator Calibration Value Read Enabled, Write Enabled Read Enabled, Write Enabled ID Locations (0x400 : 0x403) Read Enabled, Write Enabled Read Enabled, Write Enabled PIC12CE518 To code protect: * (CP enable pattern: XXXXXXXX0XXX) Program Memory Segment R/W in Protected Mode R/W in Unprotected Mode Configuration Word (0xFFF) Read Enabled, Write Enabled Read Enabled, Write Enabled [0x00:0x3F] Read Enabled, Write Enabled Read Enabled, Write Enabled [0x40:0x1FE] Read Disabled (all 0's), Write Disabled Read Enabled, Write Enabled 0x1FF Oscillator Calibration Value Read Enabled, Write Enabled Read Enabled, Write Enabled ID Locations (0x200 : 0x203) Read Enabled, Write Enabled Read Enabled, Write Enabled PIC12CE519 To code protect: * (CP enable pattern: XXXXXXXX0XXX) Program Memory Segment R/W in Protected Mode R/W in Unprotected Mode Configuration Word (0xFFF) Read Enabled, Write Enabled Read Enabled, Write Enabled [0x00:0x3F] Read Enabled, Write Enabled Read Enabled, Write Enabled [0x40:0x3FF] Read Disabled (all 0's), Write Disabled Read Enabled, Write Enabled ID Locations (0x400 : 0x403) Read Enabled, Write Enabled Read Enabled, Write Enabled DS30557F-page 10 2001 Microchip Technology Inc. PIC12C5XX 4.2 Checksum 4.2.1 CHECKSUM CALCULATIONS Checksum is calculated by reading the contents of the PIC12C5XX memory locations and adding up the opcodes up to the maximum user addressable location (not including the last location which is reserved for the oscillator calibration value), e.g., 0x1FE for the PIC12C508/CE518. Any carry bits exceeding 16-bits are neglected. Finally, the configuration word (appropriately masked) is added to the checksum. Checksum computation for each member of the PIC12C5XX family is shown in Table 4-2. The following table describes how to calculate the checksum for each device. Note that the checksum calculation differs depending on the code protect setting. Since the program memory locations read out differently depending on the code protect setting, the table describes how to manipulate the actual program memory values to simulate the values that would be read from a protected device. When calculating a checksum by reading a device, the entire program memory can simply be read and summed. The configuration word and ID locations can always be read. The oscillator calibration value location is not used in the above checksums. The checksum is calculated by summing the following: * The contents of all program memory locations * The configuration word, appropriately masked * Masked ID locations (when applicable) The Least Significant 16-bits of this sum are the checksum. TABLE 4-2: CHECKSUM COMPUTATION Code Protect Checksum* Blank Value 0x723 at 0 and Max Address PIC12C508 OFF ON SUM[0x000:0x1FE] + CFGW & 0x01F SUM[0x000:0x03F] + CFGW & 0x01F + SUM(IDS) EE20 EDF7 DC68 D363 PIC12C508A OFF ON SUM[0x000:0x1FE] + CFGW & 0x01F SUM[0x000:0x03F] + CFGW & 0x01F + SUM(IDS) EE20 EDF7 DC68 D363 PIC12C509 OFF ON SUM[0x000:0x3FE] + CFGW & 0x01F SUM[0x000:0x03F] + CFGW & 0x01F + SUM(IDS) EC20 EBF7 DA68 D163 PIC12C509A OFF ON SUM[0x000:0x3FE] + CFGW & 0x01F SUM[0x000:0x03F] + CFGW & 0x01F + SUM(IDS) EC20 EBF7 DA68 D163 PIC12CE518 OFF ON SUM[0x000:0x1FE] + CFGW & 0x01F SUM[0x000:0x03F] + CFGW & 0x01F + SUM(IDS) EE20 EDF7 DC68 D363 PIC12CE519 OFF ON SUM[0x000:0x3FE] + CFGW & 0x01F SUM[0x000:0x03F] + CFGW & 0x01F + SUM(IDS) EC20 EBF7 DA68 D163 Device Legend: CFGW = Configuration Word SUM[a:b] = [Sum of locations a through b inclusive] SUM_ID = ID locations masked by 0xF then made into a 16-bit value with ID0 as the most significant nibble. For example, ID0 = 0x12, ID1 = 0x37, ID2 = 0x4, ID3 = 0x26, then SUM_ID = 0x2746. *Checksum = [Sum of all the individual expressions] MODULO [0xFFFF] + = Addition & = Bitwise AND 2001 Microchip Technology Inc. DS30557F-page 11 PIC12C5XX 5.0 PROGRAM/VERIFY MODE ELECTRICAL CHARACTERISTICS TABLE 5-1: AC/DC CHARACTERISTICS TIMING REQUIREMENTS FOR PROGRAM/VERIFY MODE Standard Operating Conditions Operating Temperature: +10C TA +40C, unless otherwise stated, (20C recommended) Operating Voltage: 4.5V VDD 5.5V, unless otherwise stated. Parameter No. Sym. Characteristic Min. Typ. Max. Units 4.75 5.0 5.25 V 20 mA Conditions General PD1 VDDP Supply voltage during programming PD2 IDDP PD3 VDDV Supply voltage during verify VDDMIN VDDMAX V (Note 1) PD4 VIHH1 Voltage on MCLR/VPP during programming 12.75 13.25 V (Note 2) PD5 VIHH2 Voltage on MCLR/VPP during verify VDD + 4.0 13.5 Supply current (from VDD) during programming 50 mA PD6 IPP Programming supply current (from VPP) PD9 VIH1 (GP1, GP0) input high level 0.8 VDD V Schmitt Trigger input PD8 VIL1 (GP1, GP0) input low level 0.2 VDD V Schmitt Trigger input P1 TR MCLR/VPP rise time (VSS to VHH) 8.0 s P2 Tf MCLR fall time 8.0 s Serial Program Verify P3 Tset1 Data in setup time before clock 100 ns P4 Thld1 Data in hold time after clock 100 ns P5 Tdly1 Data input not driven to next clock input (delay required between command/data or command/command) 1.0 s P6 Tdly2 Delay between clock to clock of next command or data 1.0 s P7 Tdly3 Clock to date out valid (during read data) 200 ns P8 Thld0 Hold time after MCLR 2 s Note 1: Program must be verified at the minimum and maximum VDD limits for the part. 2: VIHH must be greater than VDD + 4.5V to stay in Programming/Verify mode. DS30557F-page 12 2001 Microchip Technology Inc. PIC12C5XX FIGURE 5-1: LOAD DATA COMMAND (PROGRAM/VERIFY) VIHH MCLR/VPP 100ns P8 GP1 (Clock) 1 GP0 (Data) P6 2 0 1 3 4 5 100ns 0 0 0 2 1s min. 1 6 4 5 15 0 0 0 P5 P3 P4 P3 1s min. P4 } } } } 100ns min. 100ns min. Program/Verify Mode RESET FIGURE 5-2: 3 READ DATA COMMAND (PROGRAM/VERIFY) VIHH MCLR/VPP 100ns P8 GP1 (Clock) GP0 (Data) 1 P6 2 0 0 3 4 5 100ns 1 0 0 2 1s min. 1 6 3 4 5 15 P7 0 P5 P3 P4 1s min. } } 100ns min. GP0 Input GP0 = Output Program/Verify Mode RESET FIGURE 5-3: INCREMENT ADDRESS COMMAND (PROGRAM/VERIFY) VIHH MCLR/VPP P6 1 2 0 1 3 4 5 6 0 0 0 1s min. Next Command 1 2 GP1 (Clock) GP0 (Data) 1 0 0 P5 P3 P4 1s min. } } 100ns min RESET 2001 Microchip Technology Inc. Program/Verify Mode DS30557F-page 13 PIC12C5XX NOTES: DS30557F-page 14 2001 Microchip Technology Inc. "All rights reserved. Copyright (c) 2001, Microchip Technology Incorporated, USA. Information contained in this publication regarding device applications and the like is intended through suggestion only and may be superseded by updates. No representation or warranty is given and no liability is assumed by Microchip Technology Incorporated with respect to the accuracy or use of such information, or infringement of patents or other intellectual property rights arising from such use or otherwise. Use of Microchip's products as critical components in life support systems is not authorized except with express written approval by Microchip. No licenses are conveyed, implicitly or otherwise, under any intellectual property rights. The Microchip logo and name are registered trademarks of Microchip Technology Inc. in the U.S.A. and other countries. All rights reserved. All other trademarks mentioned herein are the property of their respective companies. No licenses are conveyed, implicitly or otherwise, under any intellectual property rights." Trademarks The Microchip name, logo, PIC, PICmicro, PICMASTER, PICSTART, PRO MATE, KEELOQ, SEEVAL, MPLAB and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. Total Endurance, ICSP, In-Circuit Serial Programming, FilterLab, MXDEV, microID, FlexROM, fuzzyLAB, MPASM, MPLINK, MPLIB, PICDEM, ICEPIC, Migratable Memory, FanSense, ECONOMONITOR and SelectMode are trademarks of Microchip Technology Incorporated in the U.S.A. Serialized Quick Term Programming (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. (c) 2001, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. Microchip received QS-9000 quality system certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona in July 1999. The Company's quality system processes and procedures are QS-9000 compliant for its PICmicro(R) 8-bit MCUs, KEELOQ(R) code hopping devices, Serial EEPROMs and microperipheral products. In addition, Microchip's quality system for the design and manufacture of development systems is ISO 9001 certified. DS30557F - page 15 2001 Microchip Technology Inc. WORLDWIDE SALES AND SERVICE AMERICAS New York Corporate Office 150 Motor Parkway, Suite 202 Hauppauge, NY 11788 Tel: 631-273-5305 Fax: 631-273-5335 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 Technical Support: 480-792-7627 Web Address: http://www.microchip.com Rocky Mountain 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7966 Fax: 480-792-7456 Atlanta San Jose Microchip Technology Inc. 2107 North First Street, Suite 590 San Jose, CA 95131 Tel: 408-436-7950 Fax: 408-436-7955 Toronto 6285 Northam Drive, Suite 108 Mississauga, Ontario L4V 1X5, Canada Tel: 905-673-0699 Fax: 905-673-6509 500 Sugar Mill Road, Suite 200B Atlanta, GA 30350 Tel: 770-640-0034 Fax: 770-640-0307 ASIA/PACIFIC Austin Australia Analog Product Sales 8303 MoPac Expressway North Suite A-201 Austin, TX 78759 Tel: 512-345-2030 Fax: 512-345-6085 Boston 2 Lan Drive, Suite 120 Westford, MA 01886 Tel: 978-692-3848 Fax: 978-692-3821 Boston Analog Product Sales Unit A-8-1 Millbrook Tarry Condominium 97 Lowell Road Concord, MA 01742 Tel: 978-371-6400 Fax: 978-371-0050 Microchip Technology Australia Pty Ltd Suite 22, 41 Rawson Street Epping 2121, NSW Australia Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 China - Beijing Microchip Technology Beijing Office Unit 915 New China Hong Kong Manhattan Bldg. No. 6 Chaoyangmen Beidajie Beijing, 100027, No. China Tel: 86-10-85282100 Fax: 86-10-85282104 China - Shanghai 333 Pierce Road, Suite 180 Itasca, IL 60143 Tel: 630-285-0071 Fax: 630-285-0075 Dallas Hong Kong 4570 Westgrove Drive, Suite 160 Addison, TX 75001 Tel: 972-818-7423 Fax: 972-818-2924 Microchip Asia Pacific RM 2101, Tower 2, Metroplaza 223 Hing Fong Road Kwai Fong, N.T., Hong Kong Tel: 852-2401-1200 Fax: 852-2401-3431 Dayton Two Prestige Place, Suite 130 Miamisburg, OH 45342 Tel: 937-291-1654 Fax: 937-291-9175 Detroit Tri-Atria Office Building 32255 Northwestern Highway, Suite 190 Farmington Hills, MI 48334 Tel: 248-538-2250 Fax: 248-538-2260 Los Angeles 18201 Von Karman, Suite 1090 Irvine, CA 92612 Tel: 949-263-1888 Fax: 949-263-1338 Mountain View Analog Product Sales 1300 Terra Bella Avenue Mountain View, CA 94043-1836 Tel: 650-968-9241 Fax: 650-967-1590 Korea Microchip Technology Korea 168-1, Youngbo Bldg. 3 Floor Samsung-Dong, Kangnam-Ku Seoul, Korea Tel: 82-2-554-7200 Fax: 82-2-558-5934 Singapore Microchip Technology Singapore Pte Ltd. 200 Middle Road #07-02 Prime Centre Singapore, 188980 Tel: 65-334-8870 Fax: 65-334-8850 Taiwan Microchip Technology Shanghai Office Room 701, Bldg. B Far East International Plaza No. 317 Xian Xia Road Shanghai, 200051 Tel: 86-21-6275-5700 Fax: 86-21-6275-5060 Chicago ASIA/PACIFIC (continued) India Microchip Technology Inc. India Liaison Office Divyasree Chambers 1 Floor, Wing A (A3/A4) No. 11, O'Shaugnessey Road Bangalore, 560 025, India Tel: 91-80-2290061 Fax: 91-80-2290062 Japan Microchip Technology Intl. Inc. Benex S-1 6F 3-18-20, Shinyokohama Kohoku-Ku, Yokohama-shi Kanagawa, 222-0033, Japan Tel: 81-45-471- 6166 Fax: 81-45-471-6122 Microchip Technology Taiwan 11F-3, No. 207 Tung Hua North Road Taipei, 105, Taiwan Tel: 886-2-2717-7175 Fax: 886-2-2545-0139 EUROPE Denmark Microchip Technology Denmark ApS Regus Business Centre Lautrup hoj 1-3 Ballerup DK-2750 Denmark Tel: 45 4420 9895 Fax: 45 4420 9910 France Arizona Microchip Technology SARL Parc d'Activite du Moulin de Massy 43 Rue du Saule Trapu Batiment A - ler Etage 91300 Massy, France Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 Germany Arizona Microchip Technology GmbH Gustav-Heinemann Ring 125 D-81739 Munich, Germany Tel: 49-89-627-144 0 Fax: 49-89-627-144-44 Germany Analog Product Sales Lochhamer Strasse 13 D-82152 Martinsried, Germany Tel: 49-89-895650-0 Fax: 49-89-895650-22 Italy Arizona Microchip Technology SRL Centro Direzionale Colleoni Palazzo Taurus 1 V. Le Colleoni 1 20041 Agrate Brianza Milan, Italy Tel: 39-039-65791-1 Fax: 39-039-6899883 United Kingdom Arizona Microchip Technology Ltd. 505 Eskdale Road Winnersh Triangle Wokingham Berkshire, England RG41 5TU Tel: 44 118 921 5869 Fax: 44-118 921-5820 01/30/01 All rights reserved. (c) 2001 Microchip Technology Incorporated. Printed in the USA. 2/01 Printed on recycled paper. Information contained in this publication regarding device applications and the like is intended through suggestion only and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. No representation or warranty is given and no liability is assumed by Microchip Technology Incorporated with respect to the accuracy or use of such information, or infringement of patents or other intellectual property rights arising from such use or otherwise. Use of Microchip's products as critical components in life support systems is not authorized except with express written approval by Microchip. No licenses are conveyed, implicitly or otherwise, except as maybe explicitly expressed herein, under any intellectual property rights. The Microchip logo and name are registered trademarks of Microchip Technology Inc. in the U.S.A. and other countries. All rights reserved. All other trademarks mentioned herein are the property of their respective companies. DS30557F-page 16 2001 Microchip Technology Inc.