AN1265

AN1265
KEELOQ® with AES Microcontroller-Based
Code Hopping Encoder
Authors:
Enrique Aleman
Michael Stuckey
Microchip Technology Inc.
INTRODUCTION
This application note describes the design of a
microcontroller-based KEELOQ® Hopping Encoder
using the AES encryption algorithm. This encoder is
implemented
on
the
Microchip
PIC16F636
microcontroller. A description of the encoding process,
the encoding hardware and description of the software
modules are included within this application note. The
software was designed to emulate an HCS365 dual
encoder. As it is, this design can be used to implement
a secure system transmitter that will have the flexibility
to be designed into various types of KEELOQ receiver/
decoders.
BACKGROUND
The Advanced Encryption Standard (AES) was developed in the 1990’s to replace the widely used DES.
AES algorithm is also called the “Rijndael” algorithm,
after its designers. AES is currently adopted by the
National Institute of Standards and Technology.
Rijndael/AES is a symmetric block cipher that utilizes a
single key to encrypt data. The implementation of AES
in this application note is based on a 16-byte block of
data and a 16-byte key size as described on application
note AN1044.
Operation:
•
•
•
•
•
•
•
•
•
•
2.0-5.5V operation
Four button inputs
15 functions available
Four selectable baud rates
Selectable minimum code word completion
Battery low signal transmitted to receiver
Nonvolatile synchronization data
PWM, VPWM, PPM, and Manchester modulation
Button queue information transmitted
Dual Encoder functionality
DUAL ENCODER OPERATION
This firmware contains two transmitter configurations
with separate serial numbers, encoder keys,
discrimination values, counters and seed values. This
means that the transmitter can be used as two
independent systems. The SHIFT(S3) input pin is used
to select between encoder configurations. A low on this
pin will select Encoder 1, and a high will select Encoder 2.
FUNCTIONAL INPUTS AND OUTPUTS
The software implementation makes use of the
following pin designations:
TABLE 1:
Label
Pin
Number
Input/
Output
Function
S0
2 (RA5)
Input
Switch Input S0
S1
3 (RA4)
Input
Switch input S1
S2
4 (RA3)
Input
Switch Input S2
S3
5 (RA2)
Input
Switch Input S3
RF_OUT
6 (RA1)
Output
Encoded transmitter
signal output
LED
7 (RA0)
Output
LED On/Off
TRANSMITTER OVERVIEW
As this is an emulation of the HCS365, the transmitter
has the following key features:
Security:
•
•
•
•
•
•
Two programmable 32-bit serial numbers
Two programmable 128-bit encryption keys
Two programmable 64-bit seed values
Each transmitter is unique
164-bit transmission code length
128-bit hopping code
© 2009-2011 Microchip Technology Inc.
FUNCTIONAL INPUTS AND
OUTPUTS
DS01265B-page 1
AN1265
OPERATION FLOW DIAGRAM
FIGURE 1:
OPERATION FLOW
DIAGRAM
START
Debounce Button
Inputs
Read
Configuration from
EEPROM
SAMPLE BUTTONS/WAKE-UP
Upon power-up, the transmitter verifies the state of the
buttons inputs and determines if a button is pressed. If
no button pressed is detected, the transmitter will go to
Sleep mode. The transmitter will wake-up whenever a
button is pressed. Wake-up is achieved by configuring
the input port to generate an interrupt-on-change. After
the wake event, the input buttons are debounced for
20 ms to make a determination on which buttons have
been pressed. The button input values are then placed
in the transmission buffer, in the appropriate section.
LOAD SYSTEM CONFIGURATION
Sample Buttons/
Set Function_TX
After waking up and debouncing the input switches, the
firmware will read the system Configuration bytes.
These Configuration bytes will determine what data
and modulation format will be for the transmission.
A
Increment
Counter
All the system Configuration bytes are stored in the
EEPROM. Below is the EEPROM mapping for the
PIC16F636 transmitter showing the configuration and
data bits stored.
Encrypt Data
Load Transmit
Buffer/ MTX/ Time Out Timer Reset
Transmit
Button
Time -Out?
NO
New Button
Pressed?
A
YES
NO
YES
Button Still
Pressed?
NO
MTX = 0?
NO
MTX = MTX-1
YES
SLEEP
DS01265B-page 2
© 2009-2011 Microchip Technology Inc.
AN1265
TABLE 2:
EEPROM MAPPING FOR THE PIC16F636 TRANSMITTER
Offset
Bytes
Bits
7
6
5
4
3
2
0x00
Sync Counter, Byte 0, Transmitter 0, Copy A
0x01
Sync Counter, Byte 1, Transmitter 0, Copy A
0x02
Sync Counter, Byte 2, Transmitter 0, Copy A
0x03
Sync Counter, Byte 3, Transmitter 0, Copy A
0x04
Sync Counter, Byte 0, Transmitter 0, Copy B
0x05
Sync Counter, Byte 1, Transmitter 0, Copy B
0x06
Sync Counter, Byte 2, Transmitter 0, Copy B
0x07
Sync Counter, Byte 3, Transmitter 0, Copy B
0x08
Sync Counter, Byte 0, Transmitter 0, Copy C
0x09
Sync Counter, Byte 1, Transmitter 0, Copy C
0x0A
Sync Counter, Byte 2, Transmitter 0, Copy C
0x0B
0x0C
—
—
—
—
—
Sync Counter, Byte 0, Transmitter 1, Copy A
0x0E
Sync Counter, Byte 1, Transmitter 1, Copy A
0x0F
Sync Counter, Byte 2, Transmitter 1, Copy A
0x10
Sync Counter, Byte 3, Transmitter 1, Copy A
0x11
Sync Counter, Byte 0, Transmitter 1, Copy B
0x12
Sync Counter, Byte 1, Transmitter 1, Copy B
0x13
Sync Counter, Byte 2, Transmitter 1, Copy B
0x14
Sync Counter, Byte 3, Transmitter 1, Copy B
0x15
Sync Counter, Byte 0, Transmitter 1, Copy C
0x16
Sync Counter, Byte 1, Transmitter 1, Copy C
0x17
Sync Counter, Byte 2, Transmitter 1, Copy C
0x18
MNEMONIC
EE_CNT0A
EE_CNT0B
EE_CNT0C
—
—
EE_CNT1A
EE_CNT1B
EE_CNT1C
Sync Counter, Byte 3, Transmitter 1, Copy C
—
—
0x1A
—
—
—
—
Serial Number, Byte 0, Transmitter 0
0x1B
Serial Number, Byte 1, Transmitter 0
0x1C
Serial Number, Byte 2, Transmitter 0
0x1D
Serial Number, Byte 3, Transmitter 0
0x1E
Seed Value, Byte 0, Transmitter 0
0x1F
Seed Value, Byte 1, Transmitter 0
0x20
Seed Value, Byte 2, Transmitter 0
0x21
Seed Value, Byte 3, Transmitter 0
0x22
Seed Value, Byte 4, Transmitter 0
0x23
Seed Value, Byte 5, Transmitter 0
0x24
Seed Value, Byte 6, Transmitter 0
0x25
0x26
0
Sync Counter, Byte 3, Transmitter 0, Copy C
—
0x0D
0x19
1
—
—
EE_SER
EE_SEED
Seed Value, Byte 7, Transmitter 0
STRTSEL_0
QUEN_0
XSER_0
HEADER_0
TMOD_0:1 TMOD_0:0
0x27
User Value, Byte 0, Transmitter 0
0x28
User Value, Byte 1, Transmitter 0
0x29
User Value, Byte 2, Transmitter 0
0x2A
User Value, Byte 3, Transmitter 0
0x2B
Encryption Key, Byte 0, Transmitter 0
0x2C
Encryption Key, Byte 1, Transmitter 0
© 2009-2011 Microchip Technology Inc.
TX0_CFG0
EE_DISC
EE_KEY
DS01265B-page 3
AN1265
TABLE 2:
EEPROM MAPPING FOR THE PIC16F636 TRANSMITTER (CONTINUED)
0x2D
Encryption Key, Byte 2, Transmitter 0
0x2E
Encryption Key, Byte 3, Transmitter 0
0x2F
Encryption Key, Byte 4, Transmitter 0
0x30
Encryption Key, Byte 5, Transmitter 0
0x31
Encryption Key, Byte 6, Transmitter 0
0x32
Encryption Key, Byte 7, Transmitter 0
0x33
Encryption Key, Byte 8, Transmitter 0
0x34
Encryption Key, Byte 9, Transmitter 0
0x35
Encryption Key, Byte 10, Transmitter 0
0x36
Encryption Key, Byte 11, Transmitter 0
0x37
Encryption Key, Byte 12, Transmitter 0
0x38
Encryption Key, Byte 13, Transmitter 0
0x39
Encryption Key, Byte 14, Transmitter 0
0x3A
Encryption Key, Byte 15, Transmitter 0
0x3B
Serial Number, Byte 0, Transmitter 1
0x3C
Serial Number, Byte 1, Transmitter 1
0x3D
Serial Number, Byte 2, Transmitter 1
0x3E
Serial Number, Byte 3, Transmitter 1
0x3F
Seed Value, Byte 0, Transmitter 1
0x40
Seed Value, Byte 1, Transmitter 1
0x41
Seed Value, Byte 2, Transmitter 1
0x42
Seed Value, Byte 3, Transmitter 1
0x43
Seed Value, Byte 4, Transmitter 1
0x44
Seed Value, Byte 5, Transmitter 1
0x45
Seed Value, Byte 6, Transmitter 1
0x46
0x47
B_EE_SEED
Seed Value, Byte 7, Transmitter 1
STRTSEL_1
QUEN_1
XSER_1
HEADER_1
TMOD_1:1 TMOD_1:0
0x48
User Value, Byte 0, Transmitter 1
0x49
User Value, Byte 1, Transmitter 1
0x4A
User Value, Byte 2, Transmitter 1
0x4B
User Value, Byte 3, Transmitter 1
0x4C
Encryption Key, Byte 0, Transmitter 1
0x4D
Encryption Key, Byte 1, Transmitter 1
0x4E
Encryption Key, Byte 2, Transmitter 1
0x4F
Encryption Key, Byte 3, Transmitter 1
0x50
Encryption Key, Byte 4, Transmitter 1
0x51
Encryption Key, Byte 5, Transmitter 1
0x52
Encryption Key, Byte 6, Transmitter 1
0x53
Encryption Key, Byte 7, Transmitter 1
0x54
Encryption Key, Byte 8, Transmitter 1
0x55
Encryption Key, Byte 9, Transmitter 1
0x56
Encryption Key, Byte 10, Transmitter 1
0x57
Encryption Key, Byte 11, Transmitter 1
0x58
Encryption Key, Byte 12, Transmitter 1
0x59
Encryption Key, Byte 13, Transmitter 1
0x5A
Encryption Key, Byte 14, Transmitter 1
0x5B
TX_CFG1
B_EE_DISC
B_EE_KEY
Encryption Key, Byte 15, Transmitter 1
0x5C
0x5D
B_EE_SER
GSEL_0
LEDOS_1
DS01265B-page 4
LEDBL_1
BSEL_0
TSEL
SDTM_0
RFENO
INDESEL
SDMD_0
SDLM_0
MTX
TX0_CFG1
SYSCFG1
© 2009-2011 Microchip Technology Inc.
AN1265
TABLE 2:
EEPROM MAPPING FOR THE PIC16F636 TRANSMITTER (CONTINUED)
0x5E
GSEL_1
0x5F
LEDOS_0
BSEL_1
LEDBL_0
PLLSEL
VLOWSEL
SDTM_1
VLOWL
SDMD_1
CNTSEL
SDLM_1
WAKE
TX1_CFG1
SYSCFG0
CONFIGURATION WORDS DESCRIPTION
TABLE 3:
TX0_CFG0 (FOR TRANSMITTER 0, FOR TRANSMITTER 1 USE TX1_CFG0)
BIT
Field
Description
Values
0
Not used
—
—
1
Not used
2
TMOD:0
Transmission Modulation Format
3
TMOD:1
00 = PWM
01 = Manchester
10 = VPWM
11 = PPM
4
HEADER
Time Length of Transmission Header
0 = 4*Te
1 = 10*Te
6
QUEN
Queue Counter Enable
0 = Disable
1 = Enable
7
STRTSEL
Start/Stop Pulse Enable
0 = Disable
1 = Enable
TABLE 4:
TX0_CFG1 (FOR TRANSMITTER 0, FOR TRANSMITTER 1 USE TX1_CFG1)
BIT
Field
Description
Values
0
SDLM
Limited Seed Enable
0 = Disable
1 = Enable
1
SDMD
Seed Mode
0 = User
1 = Production
2
SDTM <3:2>
Time Before Seed Code Word
00 = 0.0 sec
01 = 0.8 sec
10 = 1.6 sec
11 = 3.2 sec
BSEL <5:4>
Transmission Baud Rate Select
00 = 100 µs
01 = 200 µs
10 = 400 µs
11 = 800 µs
GSEL <7:6>
Guard Time Select
00 = 0.0 ms
01 = 6.4 ms
10 = 51.2 ms
11 = 102.4 ms
3
4
5
6
7
TABLE 5:
SYSCFG0
BIT
Field
Description
Values
0
WAKE <1:0>
Wake-up
00 = No wake-up
01 = 75ms 50%
10 = 50ms 33%
11 = 100ms 16.6%
3
VLOWL
Low-Voltage Latch Enable
0 = Disable
1 = Enable
4
VLOWSEL
Transmission Baud Rate Select
0 = 2.2V
1 = 3.2V
1
© 2009-2011 Microchip Technology Inc.
DS01265B-page 5
AN1265
TABLE 5:
SYSCFG0 (CONTINUED)
5
PLLSEL
PLL interface Select
0 = ASK
1 = FSK
6
LEDBL_0
Low-Voltage LED Blink
0 = Continuous
1 = Once
7
LEDOS_0
LED On Time Select
0 = 50 ms
1 = 100 ms
TABLE 6:
SYSCFG1
BIT
Field
Description
Values
0
MTX <1:0>
Maximum Code Words
00 = 1
01 = 2
10 = 4
11 = 8
2
INDESEL
Dual Encoder Enable
0 = Disable
1= Enable
3
RFEN0
RF Enable Output Select
0 = Disable
1 = Enable
4
TSEL
Time-out Select
00 = Disabled
01 = 0.8 sec
10 = 3.2 sec
11 = 25.6 sec
6
LEDBL_1
Low-Voltage LED Blink
0 = Continuos
1 = Once
7
LEDOS_1
LED On Time Select
0 = 50 ms
1 = 100 ms
1
5
EE_SER AND B_EE_SER
COUNTER-CODE DESCRIPTION
These locations store the 4 bytes of the 32-bit serial
number for transmitter 1 and transmitter 2. There are
32 bits allocated for the serial number and the serial
number is meant to be unique for every transmitter.
The following addresses save the counter checksum
values. The counter value is stored in the Counter
locations (COUNTA, COUNTB, COUNTC described on
the EEPROM table. This code is contained in module
CounterCode.inc.
EE_SEED AND B_EE_SEED
This is the 64-bit seed code that will be transmitted
when seed transmission is selected. EE_SEED for
transmitter 0 and B_EE_SEED for transmitter 1. This
allows for the implementation of the secure learning
scheme.
EE_KEY AND B_EE_KEY 128-BIT
ENCRYPTION KEY)
The 128-bit encryption key is used by the transmitter to
create the encrypted message transmitted to the
receiver. This key is created using a key generation
algorithm. The inputs to the key generation algorithm
are the secret manufacturer’s code, the serial number,
and/or the SEED value. The user may elect to use the
algorithm supplied by Microchip or to create their own
method of key generation.
DS01265B-page 6
BUTTON PRESS DURING TRANSMIT
If the device is in the process of transmitting and
detects that a new button is pressed, the current
transmission will be aborted, a new code word will be
generated based on the new button information and
transmitted. If all the buttons are released, a minimum
number of code words will be completed. If the time for
transmitting the minimum code words is longer than the
time-out time, or the button is pressed for that long, the
device will time-out.
© 2009-2011 Microchip Technology Inc.
AN1265
CODE TRANSMISSION FORMAT
TABLE 7:
The following is the data stream format transmitted
(Table 7):
KEELOQ®/AES PACKET FORMAT:
Plaintext: 40 bits
CRC
(7 bits)
VLOW
(1 bit)
Function
Code (4 bits)
Encrypted: 128 bits
Serial Number
(32 bits)
CRC
(16 bits)
Function Code
(16 bits)
Serial Number
(32 bits)
User
(32 bits)
Counter
(32 bits)
Plain text transmitted LSB first. Encrypted portion transmitted MSB first.
A KEELOQ/AES transmission consists of 128 bits of
hopping code data, 43 bits of fixed code data and 1 bit
of status information.
Each code word contains a preamble, header and data,
and is separated from another code by guard time. The
Guard Time Select (GSEL) configuration option can
select a time period of 0ms, 6.4ms, 51.2ms or 102.4ms.
HOPPING CODE PORTION
The hopping code portion is calculated by encrypting
the counter, discrimination value, and function code
with the Encoder Key (KEY). A new hopping code is
calculated every time a button press is pressed.
All other timing specifications are based on the timing
element (Te). This Te can be set to 100 µs, 200 µs,
400 µs or 800 µs with the Baud Rate Select (BSEL)
configuration. The calibration header time can be set
to 4*Te or 10*Te with the Header Select (HEADER)
configuration option.
The discrimination value can be programmed with any
fixed value to serve as a post decryption check on the
receiver end.
The firmware has four different transmission modulation formats available. The Modulation select (TMOD)
Configuration Option is used to select between:
• Pulse-Width Modulation (PWM) – Figure 2
• Manchester (MAN) – Figure 3
• Variable Pulse-Width Modulation (VPWM) –
Figure 4
• Pulse Position Modulation (PPM) – Figure 5
FIXED CODE PORTION
The 40 bits of fixed consist of 32 bits of serial number
and four bits of the 8-bit function code.
FIGURE 2:
PULSE-WIDTH MODULATION (PWM)
TE
TE
TE
LOGIC “0”
LOGIC “1”
TBP
1
16
4-10
xTE
Header
31xTE 50% Preamble
FIGURE 3:
Encrypted Portion
Fixed Code Portion
Guard
Time
MANCHESTER (MAN)
TE
TE
LOGIC “0”
LOGIC “1”
TBP
Start bit
bit 0 bit 1 bit 2
1
2
Stop bit
16
31xTE 50% Preamble
4 xTE
Header
© 2009-2011 Microchip Technology Inc.
Encrypted Portion
Fixed Code Portion
Guard
Time
DS01265B-page 7
AN1265
FIGURE 4:
VARIABLE PULSE-WIDTH MODULATION (VPWM)
LOGIC “0”
LOGIC “1”
TE
VPWM BIT ENCODING:
TE
on Transition Low-to-High
TBP
TBP
2XTE
on Transition High-to-Low
LOGIC “0”
TE
TBP
1
2
FIGURE 5:
TBP
2XTE
16
31xTE 50% Preamble
10xTE Header
Encrypted Portion
LOGIC “1”
TE TE
Fixed Code Portion
Guard
Time
PULSE POSITION MODULATION (PPM)
TE TE TE
LOGIC “0”
LOGIC “1”
TBP
3 X TE
Start bit
1
2
16
31xTE 50% Preamble
Stop bit
TBP
10xTE Header
If the Start/Stop Pulse Enable (STEN) configuration
option is enabled, the software will place a leading and
trailing ‘1’ on each code word. This bit is necessary for
modulation formats such as Manchester and PPM to
interpret the first and last data bit.
A receiver wake-up sequence can be transmitted
before the transmission starts. The wake-up sequence
is configured with the Wake-up (WAKE) configuration
option and can be disabled or set to 50 ms, 75 ms, or
100 ms of pulses of Te width.
Encrypted Portion
Fixed Code Portion
Guard
Time
FIRMWARE MODULES
The following files make up the KEELOQ transmitter
firmware:
- AES_KLQ 16F636.asm: this file contains the
main loop routine as well as the wake-up,
debounce, read configuration, load transmit
buffer and transmit routines.
- AES_KLQ encrypt.inc: this file runs the
AES encryption algorithm.
- AES_KLQ eeprom.inc: this file contains the
EEPROM data as specified on the EEPROM
data map.
- CounterCode.inc: Calculates the checksums and confirms the validity of the counter.
Because of statutory export license restrictions on
encryption software, the source code listings for the
AES algorithms are not provided here.
These applications may be ordered from Microchip
Technology Inc. through its sales offices, or through the
corporate web site: www.microchip.com.
DS01265B-page 8
© 2009-2011 Microchip Technology Inc.
AN1265
CONCLUSION
REFERENCES
This KEELOQ/AES transmitter firmware has all the
features of a standard hardware encoder. What makes
this firmware implementation useful to the designer is
that it gives the designer the power and flexibility of
modifying the encoding and/or transmission formats
and parameters to suit their security system.
C. Gübel, AN821, “Advanced Encryption Standard
Using the PIC16XXX” (DS00821), Microchip Technology Inc. 2002.
D. Flowers, AN953, “Data Encryption Routines for the
PIC18” (DS00953), Microchip Technology Inc., 2005.
D. Flowers, AN1044 “Data Encryption Routines for
PIC24 and dsPIC® Devices” (DS01044), Microchip
Technology Inc. 2006.
Institute for Applied Information Processing and Communications, Graz University of Technology, “AES
Lounge” (AES public home page),
http://www.iaik.tu-graz.ac.at/research/krypto/AES/
© 2009-2011 Microchip Technology Inc.
DS01265B-page 9
AN1265
ADDITIONAL INFORMATION
Microchip’s Secure Data Products are covered by
some or all of the following:
Code hopping encoder patents issued in European
countries and U.S.A.
Secure learning patents issued in European countries,
U.S.A. and R.S.A.
REVISION HISTORY
Revision B (June 2011)
• Added new section Additional Information
• Minor formatting and text changes were
incorporated throughout the document
DS01265B-page 10
© 2009-2011 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,
PIC32 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, 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.
© 2009-2011, Microchip Technology Incorporated, Printed in
the U.S.A., All Rights Reserved.
Printed on recycled paper.
ISBN: 978-1-61341-267-1
Microchip received ISO/TS-16949:2002 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.
© 2009-2011 Microchip Technology Inc.
DS01265B-page 11
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
Web Address:
www.microchip.com
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
India - New Delhi
Tel: 91-11-4160-8631
Fax: 91-11-4160-8632
Austria - Wels
Tel: 43-7242-2244-39
Fax: 43-7242-2244-393
Denmark - Copenhagen
Tel: 45-4450-2828
Fax: 45-4485-2829
India - Pune
Tel: 91-20-2566-1512
Fax: 91-20-2566-1513
France - Paris
Tel: 33-1-69-53-63-20
Fax: 33-1-69-30-90-79
Japan - Yokohama
Tel: 81-45-471- 6166
Fax: 81-45-471-6122
Germany - Munich
Tel: 49-89-627-144-0
Fax: 49-89-627-144-44
Atlanta
Duluth, GA
Tel: 678-957-9614
Fax: 678-957-1455
Boston
Westborough, MA
Tel: 774-760-0087
Fax: 774-760-0088
Chicago
Itasca, IL
Tel: 630-285-0071
Fax: 630-285-0075
Cleveland
Independence, OH
Tel: 216-447-0464
Fax: 216-447-0643
Dallas
Addison, TX
Tel: 972-818-7423
Fax: 972-818-2924
Detroit
Farmington Hills, MI
Tel: 248-538-2250
Fax: 248-538-2260
Indianapolis
Noblesville, IN
Tel: 317-773-8323
Fax: 317-773-5453
Los Angeles
Mission Viejo, CA
Tel: 949-462-9523
Fax: 949-462-9608
Santa Clara
Santa Clara, CA
Tel: 408-961-6444
Fax: 408-961-6445
Toronto
Mississauga, Ontario,
Canada
Tel: 905-673-0699
Fax: 905-673-6509
Australia - Sydney
Tel: 61-2-9868-6733
Fax: 61-2-9868-6755
China - Beijing
Tel: 86-10-8569-7000
Fax: 86-10-8528-2104
China - Chengdu
Tel: 86-28-8665-5511
Fax: 86-28-8665-7889
Netherlands - Drunen
Tel: 31-416-690399
Fax: 31-416-690340
China - Chongqing
Tel: 86-23-8980-9588
Fax: 86-23-8980-9500
Korea - Seoul
Tel: 82-2-554-7200
Fax: 82-2-558-5932 or
82-2-558-5934
China - Hangzhou
Tel: 86-571-2819-3180
Fax: 86-571-2819-3189
Malaysia - Kuala Lumpur
Tel: 60-3-6201-9857
Fax: 60-3-6201-9859
China - Hong Kong SAR
Tel: 852-2401-1200
Fax: 852-2401-3431
Malaysia - Penang
Tel: 60-4-227-8870
Fax: 60-4-227-4068
China - Nanjing
Tel: 86-25-8473-2460
Fax: 86-25-8473-2470
Philippines - Manila
Tel: 63-2-634-9065
Fax: 63-2-634-9069
China - Qingdao
Tel: 86-532-8502-7355
Fax: 86-532-8502-7205
Singapore
Tel: 65-6334-8870
Fax: 65-6334-8850
China - Shanghai
Tel: 86-21-5407-5533
Fax: 86-21-5407-5066
Taiwan - Hsin Chu
Tel: 886-3-6578-300
Fax: 886-3-6578-370
China - Shenyang
Tel: 86-24-2334-2829
Fax: 86-24-2334-2393
Taiwan - Kaohsiung
Tel: 886-7-213-7830
Fax: 886-7-330-9305
China - Shenzhen
Tel: 86-755-8203-2660
Fax: 86-755-8203-1760
Taiwan - Taipei
Tel: 886-2-2500-6610
Fax: 886-2-2508-0102
China - Wuhan
Tel: 86-27-5980-5300
Fax: 86-27-5980-5118
Thailand - Bangkok
Tel: 66-2-694-1351
Fax: 66-2-694-1350
Spain - Madrid
Tel: 34-91-708-08-90
Fax: 34-91-708-08-91
UK - Wokingham
Tel: 44-118-921-5869
Fax: 44-118-921-5820
China - Xian
Tel: 86-29-8833-7252
Fax: 86-29-8833-7256
China - Xiamen
Tel: 86-592-2388138
Fax: 86-592-2388130
China - Zhuhai
Tel: 86-756-3210040
Fax: 86-756-3210049
DS01265B-page 12
Italy - Milan
Tel: 39-0331-742611
Fax: 39-0331-466781
Korea - Daegu
Tel: 82-53-744-4301
Fax: 82-53-744-4302
05/02/11
© 2009-2011 Microchip Technology Inc.