Flash Memory Programming Specification
Flash Memory Programming Specification
PIC16F876A
PIC16F874A
PIC16F877A
1.0
PROGRAMMING THE
PIC16F87XA
1.1
Programming Algorithm
Requirements
VDD Range
Timing
Internal; 4 ms/op
External; 1 ms/op
Both algorithms can be used with the two available programming entry methods. The first method follows the
normal Microchip Programming mode entry of holding
pins RB6 and RB7 low, while raising MCLR pin from VIL
to VIHH (13V 0.5V). The second method, called Low
Voltage ICSPTM or LVP for short, applies VDD to MCLR
and uses the I/O pin RB3 to enter Programming mode.
When RB3 is driven to VDD from ground, the
PIC16F87XA device enters Programming mode.
1.2
PDIP, SOIC
MCLR/VPP
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
Vss
OSC1/CLKI
OSC2/CLKO
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
MCLR/VPP
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
VDD
VSS
OSC1/CLKI
OSC2/CLKO
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RD0/PSP0
RD1/PSP1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PIC16F876A/873A
PIC16F873A
Pin Diagrams
28
27
26
25
24
23
22
21
20
19
18
17
16
15
PIC16F877A/874A
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
RB7/PGD
RB6/PGC
RB5
RB4
RB3/PGM
RB2
RB1
RB0/INT
VDD
VSS
RC7/RX/DT
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RB7/PGD
RB6/PGC
RB5
RB4
RB3/PGM
RB2
RB1
RB0/INT
VDD
VSS
RD7/PSP7
RD6/PSP6
RD5/PSP5
RD4/PSP4
RC7/RX/DT
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RD3/PSP3
RD2/PSP2
Programming Mode
Advance Information
DS39589C-page 1
PIC16F87XA
TABLE 1-1:
Pin Name
Function
Pin Type
Pin Description
RB3
PGM
RB6
CLOCK
Clock input
RB7
DATA
I/O
MCLR
VTEST MODE
P*
Data input/output
Program Mode Select
VDD
VDD
Power Supply
VSS
VSS
Ground
DS39589C-page 2
Advance Information
PIC16F87XA
2.0
2.2
2.1
Device
# of Bytes
PIC16F873A
128
PIC16F874A
128
PIC16F876A
256
PIC16F877A
256
The contents of data EEPROM memory have the capability to be embedded into the HEX file.
The programmer should be able to read data EEPROM
information from a HEX file and conversely (as an
option), write data EEPROM contents to a HEX file,
along with program memory information and
configuration bit information.
The 256 data memory locations are logically mapped
starting at address 2100h. The format for data memory
storage is one data byte per address location, LSB
aligned.
Advance Information
DS39589C-page 3
PIC16F87XA
2.3
ID Locations
FIGURE 2-1:
8K word
devices
Implemented
Implemented
000h
2000h
2001h
ID Location
ID Location
Implemented
Implemented
3FFh
400h
7FFh
800h
2002h
ID Location
2003h
ID Location
2004h
Reserved
2005h
Reserved
Implemented
Implemented
Implemented
Implemented
BFFh
C00h
FFFh
1000h
Implemented
Reserved
Implemented
13FFh
1400h
17FFh
1800h
2006h
Device ID
2007h
Configuration Word
Implemented
1BFFh
1C00h
Implemented
1FFFh
2008h
Reserved
Reserved
2100h
Reserved
Reserved
3FFFh
DS39589C-page 4
Advance Information
PIC16F87XA
2.4
Program/Verify 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 all
I/O are in the RESET state (high impedance inputs).
A device RESET will clear the PC and set the address
to 0. The Increment Address command will increment the PC. The Load Configuration command will
set the PC to 2000h. The available commands are
shown in Table 2-1.
The normal sequence for programming eight program
memory words at a time is as follows:
1.
2.
3.
4.
5.
6.
7.
8.
9.
2.4.1
2.4.2
SERIAL PROGRAM/VERIFY
OPERATION
The RB6 pin is used as a clock input pin, and the RB7
pin is used to enter command bits, and to input or output data during serial operation. To input a command,
the clock pin (RB6) 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 RB7 is required to have a minimum
setup (tset1) and hold (thold1) time (see AC/DC specifications), with respect to the falling edge of the clock.
Commands with associated data (read and load) are
specified to have a minimum delay (tdly1) 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 (0) and the last cycle being a Stop bit
(0). Data is transferred LSb first.
During a read operation, the LSb will be transmitted
onto RB7 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
(tdly2) is specified between consecutive commands.
All commands and data words are transmitted LSb first.
The data is transmitted on the rising edge, and latched
on the falling edge of the clock. To allow decoding of
commands and reversal of data pin configuration, a
time separation of at least 1 s (tdly1) is required
between a command and a data word, or another
command.
The available commands are described in the following
paragraphs and listed in Table 2-1.
Advance Information
DS39589C-page 5
PIC16F87XA
2.4.2.1
Load Configuration
2.4.2.7
2.4.2.2
2.4.2.3
2.4.2.4
2.4.2.5
2.4.2.6
Increment Address
DS39589C-page 6
2.4.2.8
Note:
Advance Information
PIC16F87XA
2.4.2.9
End Programming
After receiving this command, the chip stops programming the memory (test program memory or user program memory) that it was programming at the time.
Note:
TABLE 2-1:
Command
Data
Voltage Range
Load Configuration
0, data (14), 0
2.2V - 5.5V
0, data (14), 0
2.2V - 5.5V
0, data (14), 0
2.2V - 5.5V
Increment Address
4 ms typical,
internally timed
2.2V - 5.5V
1 ms typical,
externally timed
4.5V - 5.5V
internally timed
4.5V - 5.5V
2.2V - 5.5V
internally timed
4.5V - 5.5V
Chip Erase
4 ms typical,
internally timed
4.5V - 5.5V
0, data (14), 0
2.2V - 5.5V
0, data (14), 0
2.2V - 5.5V
End Programming
Advance Information
DS39589C-page 7
PIC16F87XA
2.5
Depending on the state of the code protection bits, program and data memory will be erased using different
methods. The first two commands are used when both
program and data memories are not code-protected.
The third command is used when either memory is
code-protected, or if you want to also erase the fuse
locations, including the code-protect bits. A device programmer should determine the state of the code protection bits and then apply the proper command to
erase the desired memory.
2.5.1
2.5.1.1
2.5.1.2
DS39589C-page 8
2.5.1.3
Chip Erase
This command, when performed, will erase the program memory, EE data memory, and all of the fuse
locations, including the code protection bits. All
on-chip Flash and EEPROM memory is erased,
regardless of the address contained in the PC.
When a Chip Erase command is issued and the PC
points to (0000h - 1FFFh), the configuration word and
the user program memory will be erased, but not the
test row (see Section 2.5.2.1). Chip Erase can also be
used to erase code-protected memory, as described in
Section 2.5.2.
This command will also erase the code-protect and
code-protect data fuses if they are programmed. This
is the only command that allows a user to erase the
code-protect fuses.
The Chip Erase is internally self-timed to ensure that
all program and data memory is erased before the
code-protect bits are erased. A timing diagram for this
command is shown in Figure 6-10.
Note:
2.5.2
2.5.2.1
Chip Erase
This command, when performed, will erase the program memory, data EEPROM, and all of the fuse locations, including the code protection bits, code-protect
fuses, and code-protect data fuses. All on-chip Flash
and EEPROM memory is erased, regardless of the
address contained in the PC.
If the PC points to user memory, the test row (2000h
through 201Fh) is not erased with a Chip Erase command, except for the configuration word (at 2007h). If
the test row is to be completely erased, the address in
the PC must point to configuration memory.
When the PC points to 2000h - 201Fh, the configuration word, test program memory, and the user program
memory will all be erased with a Chip Erase command.
This allows the user to erase all program and configuration content, including the code-protect bits, without
compromising the user ID bits (2000h through 2004h),
or any pass codes stored in the test row.
Advance Information
PIC16F87XA
The Chip Erase is internally self-timed to ensure that all
program and data memory is erased before the
code-protect bits are erased.
FIGURE 2-2:
Load Data
Command
Increment
Address
Command
No
Eight Loads
Done?
Yes
Begin
Erase/Programming
Command
Wait tprog2
(8 ms)
Increment
Address
Command
No
All Locations
Done?
Verify all
Locations
Report Verify
Error
No
Data Correct?
End
Advance Information
DS39589C-page 9
PIC16F87XA
FIGURE 2-3:
Chip Erase
Sequence
Load Data
Command
Increment
Address
Command
No
Eight Loads
Done?
Yes
Begin
Programming Only
Command
Wait tprog1
(1 ms)
End
Programming
Command
Increment
Address
Command
No
All Locations
Done?
Yes
Verify all
Locations
Report Verify
Error
No
Data Correct?
Yes
End
DS39589C-page 10
Advance Information
PIC16F87XA
FLOWCHART PIC16F87XA CONFIGURATION MEMORY (2.0V VDD < 5.5V)
FIGURE 2-4:
PROGRAM
FOUR LOCATIONS
Start
Start
Load
Configuration
Data
(Set PC=2000h)
Load
Configuration
Data
Yes
Program ID
Location?
Program Four
Locations
Read Data
Command
No
Load Data
Command
Increment
Address
Command
No
Four Loads
Done?
Yes
Report
Programming
Failure
No
Data Correct?
Yes
Yes
Increment
Address
Command
Begin
Erase/Program
Command
Address =
2003h?
Wait tprog2
(8 ms)
No
Address =
2004h?
No
Increment
Address
Command
End
Yes
PROGRAM
CONFIGURATION WORD
Increment
Address
Command
Start
Increment
Address
Command
Report Program
Configuration
Word Error
No
Load Data
Command
Increment
Address
Command
Program
(Config. Word)
Data Correct?
Read Data
Command
Begin
Erase/Program
Command
Wait tprog2
(8 ms)
Yes
End
End
Advance Information
DS39589C-page 11
PIC16F87XA
FLOWCHART PIC16F87XA CONFIGURATION MEMORY (4.5V VDD 5.5V)
FIGURE 2-5:
PROGRAM
FOUR LOCATIONS
Start
Start
Load
Configuration
Data
(Set PC=2000h)
Load Data
Command
Load
Configuration
Data
Chip Erase
Yes
Program ID
Location?
Read Data
Command
Program Four
Locations
No
Report
Programming
Failure
No
Data Correct?
Increment
Address
Command
No
Four Loads
Done?
Yes
Begin
Program Only
Command
Yes
Yes
Increment
Address
Command
No
No
Address =
2004h?
Wait tprog1
(1 ms)
Address =
2003h?
Increment
Address
Command
End
Programming
Command
End
Yes
Increment
Address
Command
PROGRAM
CONFIGURATION WORD
Start
Increment
Address
Command
Report Program
Configuration
Word Error
No
Load Data
Command
Increment
Address
Command
Program
(Config. Word)
Data Correct?
Read Data
Command
Begin
Erase/Program
Command
Wait tprog2
(8 ms)
Yes
End
DS39589C-page 12
End
Advance Information
PIC16F87XA
3.0
CONFIGURATION WORD
TABLE 3-1:
3.1
R/P-1
U-1
CP
Device ID Value
Device
Device ID Word
REGISTER 3-1:
DEVICE ID VALUE
Dev
Rev
PIC16F873A
00 1110 0100
XXXX
PIC16F874A
00 1110 0110
XXXX
PIC16F876A
00 1110 0000
XXXX
PIC16F877A
00 1110 0010
XXXX
R/P-1
R/P-1
R/P-1
R/P-1
U-1
U-1
DEBUG WRT1
R/P-1
WRT0
CPD
LVP
BOREN
R/P-1
R/P-1
R/P-1
R/P-1
bit 13
bit 0
bit 13
bit 12
Unimplemented: Read as 1
bit 11
bit 10-9
bit 8
bit 7
bit 6
bit 5-4
Unimplemented: Read as 1
bit 3
bit 2
bit 1-0
Legend:
R = Readable bit
W = Writable bit
-n = Default value
1 = Bit is erased
0 = Bit is programmed
Advance Information
x = Bit is unknown
DS39589C-page 13
PIC16F87XA
4.0
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.
Specifically for the PIC16F87XA, the EEPROM data memory should also be embedded in the HEX file (see
Section 2.2).
Microchip Technology Inc. feels strongly that this feature is important for the benefit of the end customer.
DS39589C-page 14
Advance Information
PIC16F87XA
5.0
CHECKSUM COMPUTATION
TABLE 5-1:
CHECKSUM COMPUTATION
Blank
Value
25E6h at 0
and max
address
1FCF
EB9D
4F9E
1B6C
OFF
1FCF
EB9D
ON
4F9E
1B6C
OFF
0FCF
DB9D
ON
1F9E
EB6C
OFF
0FCF
DB9D
ON
1F9E
EB6C
Device
Code
Protect
PIC16F873A
OFF
ON
PIC16F874A
PIC16F876A
PIC16F877A
Legend: CFGW
SUM[a:b]
SUM_ID
=
=
=
*Checksum =
+
=
&
=
Checksum*
Configuration Word
[Sum of locations a to b inclusive]
ID locations masked by 0Fh then made into a 16-bit value with ID0 as the most significant nibble.
For example, ID0 = 01h, ID1 = 02h, ID3 = 03h, ID4 = 04h, then SUM_ID = 1234h
[Sum of all the individual expressions] MODULO [FFFFh]
Addition
Bitwise AND
Advance Information
DS39589C-page 15
PIC16F87XA
6.0
TABLE 6-1:
AC/DC CHARACTERISTICS
POWER SUPPLY PINS
Characteristics
Min
Typ
Max
Units
Conditions/Comments
General
VDD
2.0
5.5
VDD
2.0
5.5
4.5
5.5
tprog1
ms
Externally Timed
Begin Erase/Programming
tprog2
10 ms
ms
Internally Timed
tprog3
10 ms
ms
Internally Timed
VIHH
VDD + 3.5
13.5
tVHHR
1.0
VIH1
0.8 VDD
VIL1
0.2 VDD
tset0
100
ns
thld0
tset1
100
ns
thld1
100
ns
1.0
100
ns
1.0
100
ns
80
ns
Serial Program/Verify
tdly2
tdly3
DS39589C-page 16
Advance Information
PIC16F87XA
FIGURE 6-1:
VIHH
1 s min
MCLR
tset0
tdly2
RB6
(CLOCK)
15
16
thld0
1
RB7
(DATA)
strt_bit
tset1
stp_bit
tset1
tdly1
1 s min
thld1
}
}
}
}
thld1
100 ns min
100 ns min
Program/Verify Test Mode
RESET
FIGURE 6-2:
VIHH
1 s min
MCLR
tset0
tdly2
RB6
(CLOCK)
15
16
thld0
1
RB7
(DATA)
tset1
strt_bit
stp_bit
tset1
tdly1
1 s min
thld1
}
}
}
}
thld1
100 ns min
100 ns min
Program/Verify Test Mode
RESET
FIGURE 6-3:
VIHH
MCLR
tset0
tdly2
thld0
1
1 s min
2
RB6
(CLOCK)
RB7
(DATA)
15
16
tdly3
0
bit 13
bit 0
X
tdly1
tset1
thld1
}
}
1 s min
100 ns min
RB7 = output
RB7 = input
RESET
RB7
input
Advance Information
DS39589C-page 17
PIC16F87XA
FIGURE 6-4:
VIHH
MCLR
tdly2
tset0
thld0
1
1 s min
2
RB6
(CLOCK)
15
16
tdly3
RB7
(DATA)
tset1
bit 13
bit 0
X
tdly1
thld1
}
}
1 s min
100 ns min
RB7 = input
RB7 = output
RB7
input
RESET
FIGURE 6-5:
MCLR
tdly2
1 s min
1
Next Command
1
RB6
(CLOCK)
RB7
(DATA)
tset1
tdly1
thld1
1 s min
100 ns min
Program/Verify Test Mode
RESET
FIGURE 6-6:
MCLR
tprog2
Next Command
1
RB6
(CLOCK)
RB7
(DATA)
tset1
0
thld1
tdly1
100 ns min
RESET
DS39589C-page 18
Advance Information
PIC16F87XA
FIGURE 6-7:
MCLR
tprog1
1
RB6
(CLOCK)
tdly2
1 s min
RB7
(DATA)
tdly1
tset1
thld1
}
}
100 ns min
Program/Verify Test Mode
RESET
FIGURE 6-8:
MCLR
tdly2
1
1 s min
Begin Erase/Programming
Command
2
RB6
(CLOCK)
RB7
(DATA)
tset1
tdly1
thld1
100 ns min
RESET
FIGURE 6-9:
MCLR
tdly2
1
1 s min
Begin Erase/Programming
Command
2
RB6
(CLOCK)
RB7
(DATA)
tdly1
tset1
thld1
}
}
100 ns min
RESET
Advance Information
DS39589C-page 19
PIC16F87XA
FIGURE 6-10:
MCLR
tprog3
Next Command
1
RB6
(CLOCK)
RB7
(DATA)
tdly1
tset1
thld1
100 ns min
RESET
DS39589C-page 20
Advance Information
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 Microchips 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 Microchips 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.
Trademarks
The Microchip name and logo, the Microchip logo, dsPIC,
KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro, PICSTART,
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, 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, Octopus, Omniscient Code
Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit,
PICtail, PIC32 logo, 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.
2010, Microchip Technology Incorporated, Printed in the
U.S.A., All Rights Reserved.
Printed on recycled paper.
Advance Information
DS39589C-page 21
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://support.microchip.com
Web Address:
www.microchip.com
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
Kokomo
Kokomo, IN
Tel: 765-864-8360
Fax: 765-864-8387
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-8528-2100
Fax: 86-10-8528-2104
China - Chengdu
Tel: 86-28-8665-5511
Fax: 86-28-8665-7889
Korea - Daegu
Tel: 82-53-744-4301
Fax: 82-53-744-4302
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 - 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
China - Shanghai
Tel: 86-21-5407-5533
Fax: 86-21-5407-5066
Singapore
Tel: 65-6334-8870
Fax: 65-6334-8850
China - Shenyang
Tel: 86-24-2334-2829
Fax: 86-24-2334-2393
China - Shenzhen
Tel: 86-755-8203-2660
Fax: 86-755-8203-1760
Taiwan - Kaohsiung
Tel: 886-7-536-4818
Fax: 886-7-536-4803
China - Wuhan
Tel: 86-27-5980-5300
Fax: 86-27-5980-5118
Taiwan - Taipei
Tel: 886-2-2500-6610
Fax: 886-2-2508-0102
China - Xian
Tel: 86-29-8833-7252
Fax: 86-29-8833-7256
Thailand - Bangkok
Tel: 66-2-694-1351
Fax: 66-2-694-1350
Italy - Milan
Tel: 39-0331-742611
Fax: 39-0331-466781
Netherlands - Drunen
Tel: 31-416-690399
Fax: 31-416-690340
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 - Xiamen
Tel: 86-592-2388138
Fax: 86-592-2388130
China - Zhuhai
Tel: 86-756-3210040
Fax: 86-756-3210049
01/05/10
DS39589C-page 22
Advance Information