TB040. Fast Integer Square Root THE ALGORITHM INTRODUCTION SQUARE ROOT FLOW CHART



Similar documents
How to Implement ICSP Using PIC12C5XX OTP MCUs VDD. GP3/MCLR/VPP ICSP Connector. To application circuit Isolation circuits

Technical Brief Secure Learning RKE Systems Using KEELOQ Encoders

AN709. System Level Design Considerations When Using I 2 C TM Serial EEPROM Devices INTRODUCTION INSURING BUS-FREE DURING POWER-UP

TB026. Calculating Program Memory Checksums Using a PIC16F87X ACCESSING MEMORY INTRODUCTION. PIC16C7X vs. PIC16F87X. Microchip Technology Inc.

AN562. Using Endurance Predictive Software. Using the Microchip Endurance Predictive Software INTRODUCTION TOTAL ENDURANCE PREDICTIVE SOFTWARE

M Floating Point to ASCII Conversion

AN688. Layout Tips for 12-Bit A/D Converter Application GETTING A GOOD START INTRODUCTION. Microchip Technology Inc. / 2 MCP602

M Floating Point to ASCII Conversion

AN680. Passive RFID Basics INTRODUCTION DEFINITIONS. Modulation. Reader. Tag. Carrier. Microchip Technology Inc.

AN831. Matching Small Loop Antennas to rfpic Devices INTRODUCTION CALCULATING THE LOOP RADIATION RESISTANCE AND LOSS RESISTANCE EQUATION 2:

AN717. Building a 10-bit Bridge Sensing Circuit using the PIC16C6XX and MCP601 Operational Amplifier

AN723. Operational Amplifier AC Specifications and Applications INTRODUCTION FREQUENCY DOMAIN SPECIFICATIONS

AN699. Anti-Aliasing, Analog Filters for Data Acquisition Systems ANALOG VERSUS DIGITAL FILTERS INTRODUCTION. Microchip Technology Inc.

AN713. Controller Area Network (CAN) Basics INTRODUCTION CAN PROTOCOL BASICS CAN OVERVIEW

TCM809/TCM Pin Microcontroller Reset Monitors. General Description. Features. Applications. Pin Configurations. Typical Application Circuit

Operational Amplifier Topologies and DC Specifications

Interfacing Pressure Sensors to Microchip s Analog Peripherals V OUT- Silicon Substrate

AN844. Simplified Thermocouple Interfaces and PICmicro MCUs INTRODUCTION. Linearization THERMOCOUPLE CIRCUITS. Absolute Temperature Reference.

Voltage-to-Frequency/Frequency-to-Voltage Converter

FLASH Memory Programming Specification TABLE 1-1: PIN DESCRIPTIONS (DURING PROGRAMMING): PIC16F72

TCM V To ±10V Voltage Converter. General Description. Features. Applications. Package Type. Typical Operating Circuit

Code Hopping Decoder Using a PIC16C56

A CAN Physical Layer Discussion

How To Use A Temperature Sensor On A Microchip Computer (For Microchip)

TC652/TC653. Integrated Temperature Sensor & Brushless DC Fan Controller with FanSense Detect & Over-Temperature. Features.

Driving Power MOSFETs in High-Current, Switch Mode Regulators V GS(TH) In equation form: and. I G = Q G /t (transition) where: For example:

AN679. Temperature Sensing Technologies SO MANY TEMPERATURE SENSORS INTRODUCTION. Microchip Technology Inc.

AN730. CRC Generating and Checking INTRODUCTION THEORY OF OPERATION EXAMPLE 1: MODULO-2 CALCULATION. Example Calculation. Microchip Technology Inc.

AN685. Thermistors in Single Supply Temperature Sensing Circuits INTRODUCTION THERMISTOR OVERVIEW. Current-Over-Time Mode. Voltage-Versus-Current Mode

AVR305: Half Duplex Compact Software UART. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

AN826. Crystal Oscillator Basics and Crystal Selection for rfpic TM and PICmicro Devices INTRODUCTION OSCILLATOR MODELS. Microchip Technology Inc.

AN880. Converting from 8051 to Microchip Assembler: A Quick Reference INTRODUCTION

TB056. Demonstrating the Set_Report Request With a PS/2 to USB Keyboard Translator Example INTRODUCTION. The Set_Report Request.

Data Movement Between Big-Endian and Little-Endian Devices

PIC16F877A. FLASH Memory Programming Specification 1.0 PROGRAMMING THE PIC16F87XA

Installing and Licensing MPLAB XC C Compilers

8-bit RISC Microcontroller. Application Note. AVR236: CRC Check of Program Memory

AVR32138: How to optimize the ADC usage on AT32UC3A0/1, AT32UC3A3 and AT32UC3B0/1 series. 32-bit Microcontrollers. Application Note.

TB3016. Using the PIC MCU CTMU for Temperature Measurement IMPLEMENTATION BASIC PRINCIPLE MEASUREMENT CIRCUIT

AVR1309: Using the XMEGA SPI. 8-bit Microcontrollers. Application Note. Features. 1 Introduction SCK MOSI MISO SS

AN1303. Software Real-Time Clock and Calendar Using PIC16F1827 DATA INTERFACE INTRODUCTION IMPLEMENTATION INTERNAL REGISTER MAP


AN2680 Application note

AN1286. Water-Resistant Capacitive Sensing INTRODUCTION THEORY OF OPERATION. Sensing Steps. Sensing Steps Description DESIGN

AN734. Using the PICmicro SSP for Slave I 2 C TM Communication INTRODUCTION THE I 2 C BUS SPECIFICATION

AVR32701: AVR32AP7 USB Performance. 32-bit Microcontrollers. Application Note. Features. 1 Introduction

Using CryptoMemory in Full I 2 C Compliant Mode. Using CryptoMemory in Full I 2 C Compliant Mode AT88SC0104CA AT88SC0204CA AT88SC0404CA AT88SC0808CA

AVR319: Using the USI module for SPI communication. 8-bit Microcontrollers. Application Note. Features. Introduction

APPLICATION NOTE. Atmel AVR134: Real Time Clock (RTC) Using the Asynchronous Timer. Atmel AVR 8-bit Microcontroller. Introduction.

AVR1318: Using the XMEGA built-in AES accelerator. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

8-bit RISC Microcontroller. Application Note. AVR182: Zero Cross Detector

AVR317: Using the Master SPI Mode of the USART module. 8-bit Microcontrollers. Application Note. Features. Introduction

8-bit Microcontroller. Application Note. AVR201: Using the AVR Hardware Multiplier

AN905. Brushed DC Motor Fundamentals INTRODUCTION PRINCIPLES OF OPERATION. Stator. Rotor SIMPLE TWO-POLE BRUSHED DC MOTOR. Microchip Technology Inc.

TB055. PS/2 to USB Mouse Translator IMPLEMENTATION OVERVIEW. Hardware FIGURE 1: PS/2 TO USB MOUSE TRANSLATOR HARDWARE DIAGRAM (1)

8-bit Microcontroller. Application Note. AVR222: 8-point Moving Average Filter

TC110. PFM/PWM Step-Up DC/DC Controller. Features. General Description. Applications. Functional Block Diagram. Device Selection Table

AN873. Using the MCP2515 CAN Developer s Kit INTRODUCTION. PC Node. PICmicro Node BLOCK DIAGRAM OF MCP2515 DEVELOPMENT BOARD

AVR1510: Xplain training - XMEGA USART. 8-bit Microcontrollers. Application Note. Prerequisites. 1 Introduction

Atmel AVR4921: ASF - USB Device Stack Differences between ASF V1 and V2. 8-bit Atmel Microcontrollers. Application Note. Features.

BlackBerry Business Cloud Services. Version: Release Notes

AVR353: Voltage Reference Calibration and Voltage ADC Usage. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

AVR1900: Getting started with ATxmega128A1 on STK bit Microcontrollers. Application Note. 1 Introduction

8-bit Microcontroller. Application Note. AVR400: Low Cost A/D Converter

AN3998 Application note

How To Build A Project On An Eclipse Powerbook For Anarc (Powerbook) On An Ipa (Powerpoint) On A Microcontroller (Powerboard) On Microcontrollers (Powerstation) On Your Microcontroller 2 (Powerclock

8-bit. Application Note. Microcontrollers. AVR282: USB Firmware Upgrade for AT90USB

8-bit Microcontroller. Application Note. AVR134: Real-Time Clock (RTC) using the Asynchronous Timer. Features. Theory of Operation.

Application Note. Atmel CryptoAuthentication Product Uses. Atmel ATSHA204. Abstract. Overview

Uniformance. PHD Server. Specification Sheet R320

Flexible Active Shutter Control Interface using the MC1323x

AVR1922: Xplain Board Controller Firmware. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

AN974 APPLICATION NOTE

AVR1600: Using the XMEGA Quadrature Decoder. 8-bit Microcontrollers. Application Note. Features. 1 Introduction. Sensors

Global Real Estate Outlook

Application Note. Sharp Memory LCD Technology

M24LRxx/CR95HF application software installation guide

AT91 ARM Thumb Microcontrollers. Application Note. Interfacing a PC Card to an AT91RM9200-DK. Introduction. Hardware Interface

Atmel AVR4920: ASF - USB Device Stack - Compliance and Performance Figures. Atmel Microcontrollers. Application Note. Features.

AVR033: Getting Started with the CodeVisionAVR C Compiler. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

SPC5-FLASHER. Flash management tool for SPC56xx family. Description. Features

DERRY & TOMKEN BUSINESS CENTRE

ColorDesigner Database Builder

AVR1301: Using the XMEGA DAC. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

Cyclic Redundant Checker Calculation on Power Architecture Technology and Comparison of Big-Endian Versus Little-Endian

Programming Audio Applications in the i.mx21 MC9328MX21

Analog-to-Digital Converters

etpu Host Interface by:

MCP3021. Low Power 10-Bit A/D Converter With I 2 C Interface. Description. Features. Applications. Functional Block Diagram.

Remote Desktop Connection

Release Notes. BlackBerry Web Services. Version 12.1

AVR106: C functions for reading and writing to Flash memory. 8-bit Microcontrollers. Application Note. Features. Introduction

HCS200. KEELOQ Code Hopping Encoder DESCRIPTION FEATURES PACKAGE TYPES BLOCK DIAGRAM. Security. Operating. Other. Typical Applications

Local Interconnect Network (LIN) Physical Interface

Performance 2015: Global Stock Markets

8-bit Microcontroller. Application. Note. AVR204: BCD Arithmetics. Features. Introduction. 16-bit Binary to 5-digit BCD Conversion bin2bcd16

Transcription:

Fast Integer Square Root Author: Ross M. Fosler Microchip Technology Inc. algorithm demonstrates how the single cycle multiplier is useful in calculating a square root and at the same time, save processor time. INTRODUCTION One very common and relatively quick method for finding the square root of a number is the Newton-Raphson method. Although this method is quick in terms of mathematics, it also requires extensive use of division to produce results, usually iterating many times. In the PIC18CXX2 microcontroller family, though not difficult, division does requires several basic operations. However, with the help of the single cycle hardware multiplier, one of the many nice features in the PIC18CXX2 and the use of a technique different from the Newton- Raphson method, division is avoided. The following THE ALGORITHM Using the binary nature of the microcontroller, the square root of a fixed precision number can be found quickly. Each digit in a binary number represents a power of two. By successively rotating through each bit, or power of two and testing the result against the desired value, i.e. squaring the guess and checking if it is greater than the original argument, the approximate root gets closer and closer to the actual value. In conjunction with this, the value is achieved quickly. This is because each bit is tested rather than every possible 8-bit combination. The general technique is outlined in Figure 1. For a 16-bit integer, only nine program loops are required to completely test and produce a result. Example 1 is a demonstration of this procedure: FIGURE 1: SQUARE ROOT FLOW CHART Start First guess G = 0x80 G 2 Yes In range? No Shift bit right No Is ARG> G 2? Yes Start Yes In range? No Done 2000 Microchip Technology Inc. Preliminary DS91040A-page 1

EXAMPLE 1: 8-BIT EXAMPLE A = 0xCF48 or A 2 = 0xCF48 Step 1 2 3 4 5 6 7 8 9 A 1000 0000 (0x80) 1100 0000 (0xC0) 1110 0000 (0xE0) 1111 0000 (0xF0) shifted bit 1110 1000 (0xE8) shifted bit 1110 0100 (0xE4) 1110 0110 (0xE6) 1110 0111 (0xE7) bit shifted out 1110 0110 (0xE6) Description this squared is less than 0xCF48, start next cycle with a this squared is less than 0xCF48, start next cycle with a this squared is less than 0xCF48, start next cycle with a this is greater than 0xCF48, shift bit right this is greater than 0xCF48, shift bit right this squared is less than 0xCF48, start next cycle with a this squared is less than 0xCF48, start next cycle with a this is greater than 0xCF48, shift right right-most bit is thrown away for the integer approximation and the process is finished; otherwise, this could keep going for more accurate fractional approximation DS91040A-page 2 Preliminary 2000 Microchip Technology Inc.

ANALYSIS Following the flow of this algorithm, there are only nine loops for an 8-bit number. And summing all the mathematics involved, there is only one multiplication and one conditional test for each step; a conditional test is most likely a subtraction with some bit testing. Plus, there are some logical operations to perform the bit manipulations, again one per loop. This means there are three basic operations per loop, totaling to 27 operations for the complete routine. Of course, the actual number of operations goes up some when applied to a specific microcontroller, but subjectively speaking, this is still not bad when compared to the large number of steps required to perform any number of divisions as required by the Newton-Raphson method. The program in Appendix A is a functioning demonstration of the algorithm described above for 16-bit and 32-bit numbers. Table 1 gives the simulation results for these code examples. Also, the code is written specifically for the PIC18CXX2 series microcontrollers, but it can be modified to run on PIC17C microcontrollers that have a hardware multiplier. TABLE 1: 16-bit Square Root 32-bit Square Root CONCLUSION PERFORMANCE Max Cycles Time 40MHz 10MHz 4MHz 149 14.9us 59.6us 149us 1002 100.2us 400.8us 1002us This algorithm is just one possible way to compute the square root of a number. Its advantage is in the use of multiplication, a function easily performed on the PIC18CXX2 microcontroller, rather than division, an operation requiring a number of basic operations. In addition, the method and coding are extremely simple, requiring very little program and data memory. The end result is a fast and compact method to calculate the integer square root of a number. MEMORY REQUIREMENTS Section Info Section Type Address Location Size(Bytes) --------- --------- --------- --------- --------- R_Vctr code 0x000000 program 0x000004.cinit romdata 0x00002a program 0x000002 S_ROOT code 0x00002c program 0x0000f4 SRoot code 0x000120 program 0x000022 SimpMth udata 0x000000 data 0x000014 Program Memory Usage Start End --------- --------- 0x000000 0x000003 0x00002a 0x000141 284 out of 32786 program addresses used, program memory utilization is 0% 2000 Microchip Technology Inc. Preliminary DS91040A-page 3

Software License Agreement The software supplied herewith by Microchip Technology Incorporated (the Company ) for its PICmicro Microcontroller is intended and supplied to you, the Company s customer, for use solely and exclusively on Microchip PICmicro Microcontroller products. The software is owned by the Company and/or its supplier, and is protected under applicable copyright laws. All rights are reserved. Any use in violation of the foregoing restrictions may subject the user to criminal sanctions under applicable laws, as well as to civil liability for the breach of the terms and conditions of this license. THIS SOFTWARE IS PROVIDED IN AN AS IS CONDITION. NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATU- TORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICU- LAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. APPENDIX A: MAIN.ASM Title"Square Root Calling Routine Demo" ; *** Author: Ross Fosler *** ; *** Applications Engineer *** ; *** Microchip Technology Inc. *** ; *** Program:main.asm *** ; *** This routine calls the square root function *** ; *** to find the root of two arbritrary numbers. *** ; *** Last Rev:August 10, 2000 *** ; *** Ver 1.00 *** listp=18c252 #include P18C252.INC EXTERN ARGA0, ARGA1, ARGA2, ARGA3 EXTERN RES0, RES1 EXTERN Sqrt W equ 0 ; Standard constants F equ 1 a equ 0 R_Vctr CODE 0x0000 goto Main DS91040A-page 4 Preliminary 2000 Microchip Technology Inc.

; Calling Routine SRoot CODE Main 0xCF ARGA1, a 0x48 ARGA0, a call Sqrt ; Sqrt(0xCF48) ; RES0 should now contain 0xE6 0xE0 ARGA3, a 0x12 ARGA2, a 0xA1 ARGA1, a 0x40 ARGA0, a call Sqrt ; Sqrt(0xE012A140) ; RES1:RES0 should now contain 0xEF81 bra Main END 2000 Microchip Technology Inc. Preliminary DS91040A-page 5

APPENDIX B: SQRT.ASM Title"16/32 bit Integer Square Root" ; *** Author: Ross Fosler *** ; *** Applications Engineer *** ; *** Microchip Technology Inc. *** ; *** Program:sqrt.asm *** ; *** This module contains code to perform fast integer *** ; *** square root functions on either 16 or 32 bit *** ; *** values. *** ; *** Last Rev:August 10, 2000 *** ; *** Ver 1.00 *** #include P18C252.INC MSB equ 7 ; general literal constants LSB equ 0 W equ 0 F equ 1 a equ 0 SimpMth UDATA_ACS ARGA0 res 1 ; various argument registers ARGA1 res 1 ARGA2 res 1 ARGA3 res 1 GLOBAL ARGA0, ARGA1, ARGA2, ARGA3 ARG1H res 1 ARG1L res 1 ARG2H res 1 ARG2L res 1 GLOBAL ARG1H, ARG1L, ARG2H, ARG2L SARG1 res 1 ; signed arguments SARG2 res 1 GLOBAL SARG1, SARG2 RES1 res 1 ; result registers RES0 res 1 GLOBAL RES0, RES1 SQRES0 res 1 SQRES1 res 1 SQRES2 res 1 DS91040A-page 6 Preliminary 2000 Microchip Technology Inc.

SQRES3 res 1 GLOBAL SQRES0, SQRES1, SQRES2, SQRES3 BITLOC0 res 1 ; temporary registers BITLOC1 res 1 TEMP0 res 1 TEMP1 res 1 ; The function of this square root routine is to determine the root ; to the nearest integer. At the same time the root is found at the ; best possible speed; therefore, the root is found a little differently ; for the two basic sizes of numbers, 16-bit and 32-bit. The following ; differentiates the two and jumps to the appropriate function. ; Sqrt(ARGA3:ARGA2:ARGA1:ARGA0) = RES1:RES0 S_ROOT CODE Sqrt tstfsz ARGA3, a ; determine if the number is 16-bit bra Sqrt32 ; or 32-bit and call the best function tstfsz ARGA2, a bra Sqrt32 clrf RES1, a bra Sqrt16 GLOBAL Sqrt ; ******************** Square Root ********************************** ; Sqrt16(ARGA1:ARGA0) = RES0 Sqrt16 clrf TEMP0, a ; clear the temp solution 0x80 ; setup the first bit BITLOC0, a RES0, a Square8 movf RES0, W, a ; square the guess mulwf RES0, a movf PRODL, W, a ; ARGA - PROD test subwf ARGA0, W, a movf PRODH, W, a subwfb ARGA1, W, a btfsc STATUS, C, a bra NextBit ; if positive then next bit ; if negative then rotate right movff TEMP0, RES0 ; move last good value back into RES0 rrncf BITLOC0, F, a ; then rotote the bit and put it movf BITLOC0, W, a ; back into RES0 iorwf RES0, F, a btfsc BITLOC0, 7, a ; if last value was tested then get bra Done ; out bra Square8 ; elso go back for another test NextBit movff RES0, TEMP0 ; copy the last good approximation rrncf BITLOC0, F, a ; rotate the bit location register movf BITLOC0, W, a iorwf RES0, F, a 2000 Microchip Technology Inc. Preliminary DS91040A-page 7

btfsc BITLOC0, 7, a ; if last value was tested then get bra Done ; out bra Square8 Done movff TEMP0,RES0 ; put the final result in RES0 return GLOBAL Sqrt16 ; ******************** Square Root ********************************** ; Sqrt32(ARGA3:ARGA2:ARGA1:ARGA0) = RES1:RES0 Sqrt32 clrf TEMP0, a ; clear the temp solution clrf TEMP1, a clrf BITLOC0, a ; setup the first bit clrf RES0, a 0x80 BITLOC1, a ; BitLoc = 0x8000 RES1, a ; RES = 0x8000 Squar16 movff RES0, ARG1L ; square the guess movff RES1, ARG1H call Sq16 movf SQRES0, W, a ; ARGA - PROD test subwf ARGA0, W, a movf SQRES1, W, a subwfb ARGA1, W, a movf SQRES2, W, a subwfb ARGA2, W, a movf SQRES3, W, a subwfb ARGA3, W, a btfsc STATUS, C, a bra NxtBt16 ; if positive then next bit ; if negative then rotate right addlw 0x00 ; clear carry movff TEMP0, RES0 ; move last good value back into RES0 movff TEMP1, RES1 rrcf BITLOC1, F, a ; then rotote the bit and put it rrcf BITLOC0, F, a movf BITLOC1, W, a ; back into RES1:RES0 iorwf RES1, F, a movf BITLOC0, W, a iorwf RES0, F, a btfsc STATUS, C, a ; if last value was tested then get bra Done32 ; out bra Squar16 ; elso go back for another test NxtBt16 addlw 0x00 ; clear carry movff RES0, TEMP0 ; copy the last good approximation movff RES1, TEMP1 rrcf BITLOC1, F, a ; rotate the bit location register rrcf BITLOC0, F, a movf BITLOC1, W, a ; and put back into RES1:RES0 iorwf RES1, F, a movf BITLOC0, W, a iorwf RES0, F, a DS91040A-page 8 Preliminary 2000 Microchip Technology Inc.

btfsc STATUS, C, a ; if last value was tested then get bra Done32 ; out bra Squar16 Done32 movff TEMP0,RES0 ; put the final result in RES1:RES0 movff TEMP1,RES1 return GLOBAL Sqrt32 ; *********** 16 X 16 Unsigned Square ***************************** ; SQRES3:SQRES0 = ARG1H:ARG1L ^2 Sq16 movf ARG1L, W, a mulwf ARG1L ; ARG1L * ARG2L -> ; PRODH:PRODL movff PRODH, SQRES1 ; movff PRODL, SQRES0 ; movf ARG1H, W, a mulwf ARG1H ; ARG1H * ARG2H -> ; PRODH:PRODL movff PRODH, SQRES3 ; movff PRODL, SQRES2 ; movf ARG1L, W, a mulwf ARG1H ; ARG1L * ARG2H -> ; PRODH:PRODL movf PRODL, W, a ; addwf SQRES1, F, a ; Add cross movf PRODH, W, a ; products addwfc SQRES2, F, a ; clrf WREG, a ; addwfc SQRES3, F, a ; movf ARG1H, W, a ; mulwf ARG1L ; ARG1H * ARG2L -> ; PRODH:PRODL movf PRODL, W, a ; addwf SQRES1, F, a ; Add cross movf PRODH, W, a ; products addwfc SQRES2, F, a ; clrf WREG, W ; addwfc SQRES3, F, a ; return GLOBAL Sq16 end 2000 Microchip Technology Inc. Preliminary DS91040A-page 9

WORLDWIDE SALES AND SERVICE AMERICAS Corporate Office 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-786-7200 Fax: 480-786-7277 Technical Support: 480-786-7627 Web Address: http://www.microchip.com Rocky Mountain 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-786-7966 Fax: 480-786-7456 Atlanta 500 Sugar Mill Road, Suite 200B Atlanta, GA 30350 Tel: 770-640-0034 Fax: 770-640-0307 Boston 2 Lan Drive, Suite 120 Westford, MA 01886 Tel: 978-692-3838 Fax: 978-692-3821 Chicago 333 Pierce Road, Suite 180 Itasca, IL 60143 Tel: 630-285-0071 Fax: 630-285-0075 Dallas 4570 Westgrove Drive, Suite 160 Addison, TX 75001 Tel: 972-818-7423 Fax: 972-818-2924 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 New York 150 Motor Parkway, Suite 202 Hauppauge, NY 11788 Tel: 631-273-5305 Fax: 631-273-5335 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 ASIA/PACIFIC 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 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 Hong Kong 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 India Microchip Technology Inc. India Liaison Office Divyasree Chambers 1 Floor, Wing A (A3/A4) No. 11, O Shaugnessey Road Bangalore, 560 027, India Tel: 91-80-207-2165 Fax: 91-80-207-2171 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 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 ASIA/PACIFIC (continued) 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 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 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 9/01/00 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 8-bit MCUs, KEELOQ 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. All rights reserved. 2000 Microchip Technology Incorporated. Printed in the USA. 10/00 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. DS91040A-page 10 Preliminary 2000 Microchip Technology Inc.