00665A_2Book

Similar documents
00872a.book

untitled

untitled

untitled

untitled

01262B.book

PIC24 MSSP FRM Rev A.book

61127c_cn.book

21999a_cn.book

41632B.book

文件名

第5章:汇编语言程序设计

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC

2.5 idlocs PIC idloc idloc 0x1234 ; 0x config idloc HEX errorlevel errorlevel Error (Warning) Message HEX 3-14 errorlevel

MCP47x6_DaughterBoard.book

00513D_CN.FM

21928a.book

61146A.book

CTMU Temperature Measurement AN.book

PIC16F F MPLAB 08 16F LED 15 LED

PIC18F65J90/85J90 Product Brief

21498c_cn.book

21666b.book

00975A.book

untitled

00966A.book

TB3109 PIC32MX 器件中与 USB 模块相关的更改 USB 模块中断位 ( 即 USBIF USBIE USBIP 和 USBIS 位 ) 的位置变化会影响 PIC32MX 器件上的 USB 协议栈操作 表 1 给出了所列 PIC32MX 器件系列中 USBIF USBIE USBIP

TB3098 PIC16F170X 外设引脚选择 (PPS) 技术简介 作者 : 简介 Stephen Allen Microchip Technology Inc. 外设引脚选择 (Peripheral Pin Select,PPS) 可以使数字外设灵活地映射到各种外部引脚 在过去, 外设硬接线到

01018A.book

00686A.Book

01020B.book

0507A_Auto Tech_Microchip

2.0 MHz, 500 mA Synchronous Buck Regulator

01277A_cn.book

70641A.book

33023A.book(31001A_cn.fm)

39697b.book

01476A.book

工作原理 脉冲血氧仪基于氧合血红蛋白 (HbO 2 ) 和脱氧血红蛋白 (Hb) 的红光 ( 波长为 nm) 和红外光 ( 波长为 nm) 吸收特性来监测人体血液的氧饱和度 (SpO 2 ) 脉冲血氧仪会交替地闪烁红光和红外光, 光线穿过手指到达光电二极管 HbO

光 探 测 应 用 光 探 测 应 用 可 以 使 用 许 多 探 测 器, 例 如 光 电 二 极 管 光 电 晶 体 管 光 敏 电 阻 光 电 管 光 电 倍 增 管 电 荷 耦 合 器 件 等 本 应 用 笔 记 将 重 点 介 绍 光 电 二 极 管, 因 为 它 是 最 常 用 的 光

AN1487 DALI 控制装置 作者 : 简介 数字可寻址照明接口 (Digitally Addressable Lighting Interface,DALI) 已成为欧洲应对能源危机的一项标准, 主要针对商业和工业用途 DALI 是 IEC 规范的一部分, 具体与数控可调光荧光镇流

93004A.book

第10章:CCP捕捉/比较/脉宽调制

01236B.book

01096B.book

Using Microchip’s Micropower LDOs

MCP1630

AN579

MRF24WG0MAMB Software Migration

MCP Phase Energy Meter Reference Design Using PIC18F2520 Users Guide

RW Focus Asia Whitepaper CH1029

93002A.book

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

800 mA Fixed-Output CMOS LDO with Shutdown

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

INCF SEC1,F ; 將 SEC1+1 作查表取回對應數字 MOVF SEC1,W banksel STRING1 banksel PORTB RETFIE run_sec2: MOVF SEC2,W SUBLW.5 GOTO run_min ; 將秒個位數歸 0 CLRF SEC1 MOVL

2 PIC PIC 1 / CPU PIC MCU PIC RC

目录 简介 概念 解决方案 / 实现 相关资源... 7 Microchip 网站... 8 变更通知客户服务... 8 客户支持... 8 Microchip 器件代码保护功能... 8 法律声明... 9 商标... 9 DNV 认证的质量管理体系

「兆豐商業銀行」原交通銀行客戶重要權益手冊

01019A.book

AN901.book

Rotork E120E IQ brochure

00992A.book

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD

ICD ICD ICD ICD ICD

图 1 给出了 WWDT 的框图 为确保在最坏情况下能够通过程序主循环, 需要为定时器设置延时 定时器可通过控制寄存器进行配置 在定时器达到其设定的最大计数值并发生上溢前, 用户的应用程序应定期发出 CLRWDT 指令 如果用户的应用程序未能成功通过 CLRWDT 指令复位定时器, 则看门狗将发生上

LayoutPhyCS_cn.book

The DatasheetArchive - Datasheet Search Engine

RW Salary Survey China A4

Rotork new IQ brochure

SMSC LAN8700 Datasheet

模拟外设 : 10 位模数转换器 (Analog-to-Digital Converter, ): - 最多 17 路外部通道 - 可在休眠模式下进行转换 : - 最多 2 个 - 低功耗 / 高速模式 - ( 同相 ) 反相输入上的固定电压参考 - 可从外部访问输出 5 位数模转换器 (Digit

33023A.book(31005A_cn.fm)

93001A.book

MASTERs 06 Slide Template

物理传感器布线设计 基本设计要素包括传感器的尺寸 传感器相对于接地层和 / 或其他低阻抗走线的位置, 以及 mtouch/righttouch 器件中的具体设置 在遵守几个简单准则的前提下, 可以对器件进行独特的设计, 来检测用户接近或附近金属物体和高介电常数物体的移动 要实现具有高信号强度和低噪声

00884a_cn.book

什么是 SSC? 如何为音频应用配置 SSC TB3175 简介 同步串行控制器 (Synchronous Serial Controller,SSC) 是一种串行同步通信模块, 可用于 Microchip 32 位 ARM Cortex -M3 Cortex -M4 和 Cortex -M7 系列

21927a.book

24FJ256GB210 PB rev A.book

_LIT MAN USR LX380-L-CHI

untitled



MCU DSP MSO MCU DSP MSO MSO MSO MCU/DSP I/O MSO 16 Microchip IC18 turn-on MSO chirp MCU I/O I 2 C

51983a - MCP mA D2PAK UG.book

SMK环境报告书2009

12232A LED LED LED EL EL CCFL EL CCF

678859(ABC AR_Chi)_.indb

Hong Kong Pavilion.pdf

Application Note Transient Voltage Suppressors (TVS) for 表 1 VISHAY 的 SM6T 系列的电特性 25 C 型号 击穿电压 器件标识码 V BR AT I T I T 测试电流 (ma) 关态电压 V RM 漏电流 I RM AT V


<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

Microsoft Word - S153B.doc

DS21335.book

先进制造技术是近几年提得较多,叫得较响的一个专用词语,而且先进制造技术在机械制造业领域中的应用越来越广泛而深入,并取得了很大的成绩

目 录

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

AN510

2 12

Transcription:

使用 KEELOQ 产生跳码密码 作者 : 简介 Lucio Di Jasio Microchip Technology 本应用笔记的目的在于展示如何方便地使用 KEELOQ 跳码技术实现自动跳码密码发生器 / 键盘 通过使用 PIC12C508,HCS300 产生的跳码密码将被转换为 16 进制数组成的字符串 这一字符串随后通过键盘线传送到 PC, 这就好像依次按下了标准 PC/AT 键盘的按键一样 由于这一转换过程对所有应用都透明, 因此就好像用户在 PC/AT 型键盘上进行了输入 实现这一应用的理想情形是当传送信息至互联网 ( 即通过浏览器 ) 或一个 Java 程序时为通用访问控制安全登录创建一个 超级密码 跳码 的优点 基于密码的访问控制系统在当今是非常普遍的, 但人们对其提供的安全等级经常估计过高 基于密码的系统基本上采用单向传输的模式, 它存在两个不可忽视的缺陷可能导致未授权访问的发生 : 使用固定密码和可能的密码组合数目相对较少 通信线传输速度和系统计算能力的增加使得系统受到恶意攻击或 密码扫描 的风险增加 在使用不安全的传送方式时可能发生密码被盗取的现象 ( 即典型的通过电话线的调制解调器连接 ), 这使得使用固定密码的方法很不理想 注意, 在远程控制市场中同样存在这种情况, 从而推动了 跳码 概念进入这一市场 基本想法是通过一个序列使访问密码在每次使用时改变, 这样即使知道大量先前使用的密码也不能对新的密码进行预测 产生这样一个序列需要使用可靠的加密引擎 Microchip Technology 目前提供多种基于专有 KEELOQ 跳码技术的编码器 这些编码器使得产生跳码远程控制更为方便 后面我们还将看到, 这些编码器还能方便地用来以透明的方式向基于老式密码的访问控制系统添加跳码技术 图 1: HCS300 和 PIC12C508 的引脚分布图 HCS300 PIC12C508 S0 S1 S2 S3 1 2 3 4 HCS300 8 7 6 5 VDD LED PWM VSS VDD GP5/OSC1/CLKIN GP4/OSC2 GP3/MCLR/VPP 1 2 3 4 PIC12C508 8 7 6 5 VSS GP0 GP1 GP2/T0CKI KEELOQ 是 Microchip Technology Inc 的注册商标 Microchip 的安全数据产品受以下一些或全部专利保护 : 在欧洲 U.S.A. 和 R.S.A. 发布的跳码编码器专利 U.S.A.:5,517,187 ; 欧洲 : 0459781 ; R.S.A.:ZA93/4726 在 U.S.A. 和 R.S.A. 发布的安全学习专利 U.S.A.:5,686,904 ; R.S.A.:95/5429 IBM PC-AT IBM 和 AT 是国际商业机器公司 (IBM) 的注册商标 2007 Microchip Technology Inc. DS00665A_CN 第 1 页

KEELOQ 编码器简介 所有 KEELOQ 编码器使用 KEELOQ 跳码技术使编码器每次发送的数据都是独一无二的 编码器发送包括两个部分 : 第一部分在编码器每次被激活时发生改变, 称为跳码部分且被加密 第二部分是发送数据的非加密部分, 主要包括编码器序列号, 解码器通过该序列号对其进行识别 跳码包括功能信息 识别值和一个同步计数器 在发送这一信息之前需通过加密算法对其进行加密 加密算法使用 64 位加密密钥 如果加密数据中的一位发生改变, 将导致输出数据中平均有一半的位发生改变 这样, 每次发送时跳码将彻底改变因而无法对其进行预测 解码器使用同步信息来确定发送是有效的还是前一次发送的重复 前一次密码将被拒绝以防止密码被盗取 HSC300 和 HCS301 编码器发送两个溢出位, 它们可用来将同步计数器值的范围从 65,536 扩展到 196,608 次按钮操作 HCS300 和 HCS301 编码器发送数据的固定码部分包括 4 位功能信息和 2 个状态位 这两个状态位表明是否进行了重复发送以及电池电压是否过低 所有 Microchip HCSXXX 编码器都具有发送固定种子的能力 种子值将连同计数器值 密钥 序列号和其他信息一起在编码器首次初始化时通过编程写入编码器 不同编码器的种子长度也不同, HCS300 和 HCS301 具有 32 位的种子 图 2: KEELOQ 编码器密码字传送格式 逻辑 0 逻辑 1 位周期 发送报文发送报文防卫前导符报文头的加密部分的固定部分时间 TP TH THOP TFIX TG 图 3: KEELOQ 编码器密码字的组成 固定密码数据 加密密码数据 VLOW 和重复状态 (2 个位 ) 按钮状态 (4 个位 ) 28 位序列号 按钮状态 (4 个位 ) 溢出位 (2 个位 ) 识别位 (10 个位 ) 16 位同步值 使用块加密算法进行加密 2 个状态位 + 序列号和按钮状态 (32 个位 ) + 32 位的加密数据 发送方向 DS00665A_CN 第 2 页 2007 Microchip Technology Inc.

图 4: HCS300 框图 IBM PC-AT 键盘协议 LED PWM 振荡器 复位电路 LED 驱动器 i EEPROM 控制器 32 位移位寄存器 编码器 电源闭锁和开关 今天大多数 PC-AT 用来与键盘进行通信的同步串行协议是 IBM 首先引入的 这种目前使用的标准 5 孔屏蔽式连接器 ( 见图 5) 包括时钟线 数据线 地线和 +5V 电源线, 可以实现键盘和 PC 之间的双向数据传输 通常, 从键盘至 PC 的数据发送是通过按键或键释放完成的 然而, 某些配置数据 ( 即, 重复 延迟和速率 ) 可能反向传递 例如, 在系统引导过程中 键盘使用集电极开路驱动器对时钟线进行驱动 PC 可通过保持时钟线为低电平来禁止键盘 如果 PC 将数据线保持为低电平而此时时钟线为高电平, 计算机发送请求发送信号, 键盘进入接收模式 只有当时钟和数据线同时处于高电平时键盘才被允许发送数据 VSS VDD 按钮输入端口 图 5: 标准 5 孔连接器 S 3 S 2 S 1 S 0 1 4 2 3 5 1 = 时钟 2 = 数据 3 = 地 4 = 地 5 = +5V 图 6: AT 键盘协议 键盘时钟 1 2 3 4 5 6 7 8 9 10 11 键盘数据 PC 数据 起始位 起始位 LSB LSB MSB MSB 奇偶位停止位 奇偶位 停止位 键盘拉低 2007 Microchip Technology Inc. DS00665A_CN 第 3 页

键盘发送 键盘将数据线拉至低电平 ( 起始位 ) 并启动时钟 随后 8 个数据位 ( 从最低位开始 ) 将被依次移出, 紧接着是奇偶校验 ( 奇校验 ) 位和停止位 ( 高电平 ) 在时钟下降沿之后数据有效并在时钟上升沿之后改变 如果没有发送数据, 时钟线和数据线都将处于高电平 如果在第 10 位发送之前计算机将时钟线拉为低电平的时间等于或超过了 60 µs, 键盘将停止发送并将中止的数据存放在一个缓冲器中以便以后进行发送 键盘接收计算机将数据线拉为低电平 ( 起始位 ), 在此之后键盘开始在 15 ms 之内移出 11 个时钟脉冲 发送应在 2 ms 之内执行完毕 来自计算机的数据在时钟的下降沿后发生变化并在时钟上升沿前有效 在起始位后, 计算机按照键盘提供的时钟依次将 8 个数据位 ( 从最低位开始 ) 一个奇偶校验位 ( 奇校验 ) 和一个停止位 ( 高电平 ) 移出 键盘将时钟线拉低发出停止位以确认数据接收 如果出现发送错误 ( 奇偶校验或类似错误 ), 键盘将发出 RESEND ( 重新发送 ) 命令至 PC 键按下 / 释放编码按键信号与 PC 的通信是通过发送一个扫描码来实现的 表 1 列出了与键 0 至 F 相对应的扫描码 释键信号的通信则是通过发送中断码 (0F0) 后跟前次扫描码来实现的 表 1: 扫描码 码 键 45 0 16 1 1E 2 26 3 25 4 2E 5 36 6 3D 7 3E 8 46 9 1C A 32 B 21 C 23 D 24 E 2B F DS00665A_CN 第 4 页 2007 Microchip Technology Inc.

推荐一种演示性的键盘 \Dongle 实现方案 密码发生器安装于键盘和 PC 之间 一个 5 引脚插头连接到 PC, 并向器件供电, 而键盘插头插入到 5 引脚插座 ( 见图 7) PC 和键盘之间连接有时钟线和数据线, 允许键盘进行正常的操作 当 S1 被激活时,PIC12C508 接收 KEELOQ HCS300 编码器产生的新信息 (16 个 16 进制位 ) PIC12C508 随后将模仿键盘发送出正确序列的按键和释键信息至 PC 为防止键盘将此发送解读为来自 PC 的 请求发送, 因此有必要在发送期间将键盘与时钟线和数据线隔离 KEELOQ HCS300 编码器可以是 dongle 的一部分也可以像一把钥匙一样是可移除的, 从而允许方便地替换为具有不同加密密钥或序列号的不同编码器 功耗应尽量低以使传输线不会出现过载 还应使尺寸尽可能小 元件数尽可能少, 从而尽可能采用较小的封装 理想的情况是将整个电路安置在两个连接器间较小的间隙中 在我们推荐的实现方案中, HCS300 KEELOQ 跳码编码器连同 PIC12C508 单片机一起使用 为了简化电路, 采用了一个标准的 4 路双向 CMOS 开关 (4066) 来切换 dongle 或键盘与 PC 线的连接 HCS300 和 PIC12C508( 都采用 8 引脚 DIP 或 SOIC 封装形式 ) 消耗极低电流并都能在内部产生用于操作 dongle 的时钟 除一对用于时钟线和数据线上拉的电阻之外, 无需其他元件即可实现全功能的跳码密码 dongle ( 图 7) 图 7: 键盘 /DONGLE 原理图 至 PC 键盘插槽 5 1 2 3 5V GND 5V 5KΩ 5KΩ 100 nf 1 2 3 4 S0 S1 S2 S3 8 VDD LED 7 PWM 6 VSS 5 1 8 VDD VSS 2 LED CLK 7 3 HCSIN DATA 6 4 NU SWITCH 5 HCS300 PIC12C508 1K 4066 5V 2 4 1 3 GND 5,13 5 1 2 3 来自键盘 2007 Microchip Technology Inc. DS00665A_CN 第 5 页

软件实现 软件由三个较短的代码段组成 : 用于 KEELOQ HCS300 编码器的接收子程序 键盘仿真子程序 主循环程序 用于 HCS300 编码器的接收子程序 (RECEIVE) RECEIVE 子程序收集 HCS300 发送的最初 64 个数据位, 并将其填充至一个 8 字节的缓冲器 (Buffer0 至 Buffer7) 其中最后两个数据位 ( 重复和电池状态 ) 将被忽略, 这是因为它们不具有对本应用有用的信息 键盘仿真子程序 (Sendbit 和 SendKey) 这些程序根据 IBM-PC/AT 键盘协议实现键扫描码的发送 主循环 当 CMOS 开关将 PC 连接至键盘时钟和数据线时, 将对 LED 输出线进行连续采样以检测 HCS300 是否被激活 注 : 在按键弹出之后任何 4 种输入线的组合都将激活编码器 当 LED 线变为低电平时, CMOS 开关将被激活以使时钟和数据线与键盘隔离 RECEIVE 子程序将被调用 在成功接收到发送数据时, 程序将进入一个循环 在循环中来自接收缓冲器的 16 个 16 进制数字将作为一个由按键和释键信息组成的序列进行发送, 反复调用 SENDKEY, 中间加入适当的延时 软件采用最简化的形式开发, 因此可对其采取一些优化措施 例如 : 可使 PIC12C508 进入 休眠 状态以进一步减少功耗 编码器可能被移除, 因此应对编码器的接入 / 激活进行正确检测 为了简化, 本应用笔记中给出的 RECEIVE 子程序需要将编码器配置为采用 400 µs 的发送速度, 而其他应用笔记中可能使用更为灵活的多波特率子程序 由于没有解密过程, 因此没有其他方法可获知发送操作是否已失败 只能将第二个密码字与接收到的第一个密码字进行对比以确认是否出现发送错误 ( 尽管当编码器与 PIC12508 连接时出现错误的可能性极低 ) 解码选项倘若接收应用程序 ( 通常是在服务器上运行的一些软件 ) 能够执行一些简单的解码和校验步骤, 则跳码密码可用来对大量电子服务的访问进行验证 密码中固定的未加密部分 ( 最后 8 个数字 ) 可用来识别用户 (7 个数字 ) 和编码器中激活的功能 (15 个功能中的一个, 对应于最后一个数字 ) 应使用正确的 64 位解密密钥对跳码部分进行解密 根据所期望的安全等级, 可采用许多不同的密钥产生和管理技术 例如, 密钥可由用户 ID 和厂商密钥或是编码器的 种子 代码推导得出或仅仅是一个固定的 64 位常数 也可采用学习技术, 这样应用程序实际上将自动获取所需密钥并构建用户 ID 代码和解密密钥的数据库 有关进一步分析, 可参阅以下文献 : AN645 AN662 AN663 TB001 TB003 PIC16C57 Based Code Hopping Security System (DS00645B) KEELOQ Code Hopping Decoder Using Secure Learn (DS00662B) KEELOQ Simple Code Hopping Decoder (DS00663B) An Introduction to KeeLoq Code Hopping (DS91000A) An Introduction to KEELOQ Code Hopping (DS91002A) DS00665A_CN 第 6 页 2007 Microchip Technology Inc.

有关源代码的最新版本请查询 Microchip 全球网站 :www.microchip.com 软件许可协议 Microchip Technology Incorporated ( 以下简称 本公司 ) 在此提供的软件旨在向本公司客户提供专门用于 Microchip 生产的产品的软件 本软件为本公司及 / 或其供应商所有, 并受到适用的版权法保护 版权所有 使用时违反前述约束的用户可能会依法受到刑事制裁, 并可能由于违背本许可的条款和条件而承担民事责任 本软件是按 现状 提供的 任何形式的保证, 无论是明示的 暗示的或法定的, 包括但不限于有关适销性和特定用途的暗示保证, 均不适用于本软件 对于在任何情况下 因任何原因造成的特殊的 附带的或间接的损害, 本公司概不负责 附录 A: HOPPASW.LST MPASM 01.40 Released HOPPASW.ASM 2-20-1997 16:45:24 PAGE 1 LOC OBJECT CODE VALUE LINE SOURCE TEXT 00001 LIST n=0, c=132 00002 PROCESSOR PIC12C508 00003 RADIX HEX 00004 00005 ;* 文件名 :HOPPASW.ASM 00006 ;********************************************************************** 00007 ;* 作者 : Lucio Di Jasio 00008 ;* 公司 : Microchip Technology 00009 ;* 版本 : RevA0 00010 ;* 日期 : 96 年 9 月 4 日 00011 ;* 使用的汇编器 : MPASM rev. 1.40 00012 ;******************************************************* 00013 ;* 头文件 : 00014 ;* p12c508.inc 00015 ;* 00016 ;********************************************************************** 00017 ;* HCS300 与键盘的接口, 用于产生跳码 00018 ;* 00019 ;* / / 00020 ;* HCS300 5V 5V 00021 ;* +-------+ +--------+ 00022 ;* Key1-+S1 +-+ +-+Vdd +-----GND 00023 ;* Key2-+S2 LED+---------------------+LED +-----PCCLK 00024 ;* Key3-+S3 PWM+---------------------+HCSIN +-----DATA 00025 ;* Key4-+S4 +-+ -+nc +-----SWITCH 00026 ;* +-------+ +--------+ 00027 ;* 00028 ;* VGnd 00029 ;* 00030 ;****************************************************************** 00031 00032 INCLUDE \pic\include\p12c508.inc 00001 LIST 00002 ; P12C508.INC 标准头文件, 1.01 版本 Microchip Technology. Inc. 00103 LIST 2007 Microchip Technology Inc. DS00665A_CN 第 7 页

00033 0FFF 0FEA 00034 CONFIG _IntRC_OSC & _MCLRE_OFF & _CP_OFF & _WDT_OFF 01FF 0000 0003 0001 00035 IDLOCS H 0312 0002 00036 00037 ;********************************************************************** 00038 ;* 内部 4MHz 时钟 00039 ;* 内部复位 00040 ;* 无代码保护 (?) 00041 ;* 无看门狗 00042 ;* ID 代码是 0312 00043 ;********************************************************************** 00044 00045 ; 00046 ; 引脚说明 00047 ; 00048 #define LED GPIO,5 ; Led 来自 HCS300 00049 #define HCSIN GPIO,4 ; PWM 来自 HCS300 00050 #define NC GPIO,3 ; 未用 00051 #define SWITCH GPIO,2 ; 检测到 / 来自 PC 的时钟线 00052 #define DATA GPIO,1 ; 到 PC 的数据 00053 00054 #define PCCLK 0 ; 到 PC 的时钟 00055 00056 #define MASKDEF b 11111011 ; 只有 SWITCH 引脚处于输出状态 00057 #define MASKLOW b 11111001 ; 准备低位数据 00058 #define MASKHIGH b 11111011 ; 准备高位数据 00059 00060 ; 00061 ; RAM 分配 00062 ; 00063 CBLOCK 07 00000007 00064 BUFFER0 ; 准备存放 hcs300 数据的接收缓冲器 00000008 00065 BUFFER1 00000009 00066 BUFFER2 0000000A 00067 BUFFER3 0000000B 00068 BUFFER4 0000000C 00069 BUFFER5 0000000D 00070 BUFFER6 0000000E 00071 BUFFER7 0000000F 00072 BITCOUNT ; 计数器 00000010 00073 BYTECOUNT ; 00000011 00074 TIMEHI ; 定时 00000012 00075 TIMELO ; 00000013 00076 PARITY ; 发送奇偶校验位 00000014 00077 AUX ; g.p. 00000015 00078 KEY ; 要编码的密钥 00000016 00079 GPIOTEMP ; tris 寄存器的暂存备份 00080 ENDC 00081 ;---------------------------------------------------------------------- 00082 0000 00083 ORG 0 00084 0000 00085 Start 0000 0025 00086 movwf OSCCAL ; 校准 0001 0A7A 00087 goto Main 00088 00089 ;---------------------------------------------------------------------- 00090 ; 键扫描表 00091 ; 0002 00092 ScanCode 0002 01E2 00093 addwf PCL,F 0003 0845 00094 retlw 45 ; 键 0 0004 0816 00095 retlw 16 ; 键 1 0005 081E 00096 retlw 1E ; 键 2 0006 0826 00097 retlw 26 ; 键 3 DS00665A_CN 第 8 页 2007 Microchip Technology Inc.

0007 0825 00098 retlw 25 ; 键 4 0008 082E 00099 retlw 2E ; 键 5 0009 0836 00100 retlw 36 ; 键 6 000A 083D 00101 retlw 3D ; 键 7 000B 083E 00102 retlw 3E ; 键 8 000C 0846 00103 retlw 46 ; 键 9 000D 081C 00104 retlw 1C ; 键 A 000E 0832 00105 retlw 32 ; 键 B 000F 0821 00106 retlw 21 ; 键 C 0010 0823 00107 retlw 23 ; 键 D 0011 0824 00108 retlw 24 ; 键 E 0012 082B 00109 retlw 2B ; 键 F 00110 00111 #define BREAK 0F0 ; 中断扫描码 00112 00113 ;********************************************************************** 00114 ;* SubDelay 00115 ;* 短延时函数, 延迟时间为 N us 00116 ;* 00117 ;* 输入变量 : 00118 ;* 无 00119 ;* 输出变量 : 00120 ;* 无 00121 ;********************************************************************** 00122 ; 0013 0000 00123 SubDelay10 nop 0014 0000 00124 SubDelay9 nop 0015 0000 00125 SubDelay8 nop 0016 0000 00126 SubDelay7 nop 0017 0000 00127 SubDelay6 nop 0018 0000 00128 SubDelay5 nop 0019 0800 00129 SubDelay4 retlw 0 ; 2 call + N nop + 2 retlw 00130 00131 ;********************************************************************** 00132 ;* Wait10ms 00133 ;* 等候大约 10ms 00134 ;* 00135 ;* 输入变量 : 00136 ;* 无 00137 ;* 输出变量 : 00138 ;* 无 00139 ;********************************************************************** 00140 ; 001A 00141 Wait10ms 001A 0C0F 00142 movlw.15 ; 15 *.7ms ~= 10ms@4MHz 001B 00143 WaitWx750 001B 0031 00144 movwf TIMEHI 001C 00145 WaitHi 001C 0072 00146 clrf TIMELO ; 256 * 3us ~= 750us@4MHz 001D 00147 WaitLo 001D 02F2 00148 decfsz TIMELO,F 001E 0A1D 00149 goto WaitLo 001F 02F1 00150 decfsz TIMEHI,F 0020 0A1C 00151 goto WaitHi 0021 0800 00152 retlw 0 00153 00154 ;********************************************************************* 00155 ;* SendBit 00156 ;* 发送 AT 键盘协议中的一个位 00157 ;* 00158 ;* 输入变量 : 00159 ;* STATUS,C 00160 ;* 输出变量 : 00161 ;* 无 00162 ;********************************************************************** 00163 ; 2007 Microchip Technology Inc. DS00665A_CN 第 9 页

0022 00164 SendBit 0022 0066 00165 clrf GPIO ; 禁止 kb 并清零缓冲器 0023 0CF9 00166 movlw MASKLOW ; 准备数据低位 0024 0603 00167 btfsc STATUS,C 0025 0CFB 00168 movlw MASKHIGH ; 准备数据高位 0026 0036 00169 movwf GPIOTEMP ; 储存值 0027 0006 00170 tris GPIO 00171 0028 0C0E 00172 movlw.14 0029 0032 00173 movwf TIMELO 002A 00174 SBitT 002A 02F2 00175 decfsz TIMELO,F ; 45us 循环 ( 数据稳定 ) 002B 0A2A 00176 goto SBitT 00177 002C 0416 00178 bcf GPIOTEMP,PCCLK ; 时钟下降 002D 0216 00179 movf GPIOTEMP,W 002E 0006 00180 tris GPIO 00181 002F 0C0F 00182 movlw.15 0030 0032 00183 movwf TIMELO 0031 00184 SBitT2 0031 02F2 00185 decfsz TIMELO,F ; 45us 循环 ( 数据稳定 ) 0032 0A31 00186 goto SBitT2 00187 0033 0516 00188 bsf GPIOTEMP,PCCLK ; 时钟上升 0034 0216 00189 movf GPIOTEMP,W 0035 0006 00190 tris GPIO 0036 0800 00191 retlw 0 00192 00193 ;******************************************************************* 00194 ;* SendKEY 00195 ;* 发送扫描码至 PC 00196 ;* 00197 ;* 输入变量 : 00198 ;* W 00199 ;* 输出变量 : 00200 ;* 无 00201 ;**************************************************************** 00202 ; 0037 00203 SendKEY 0037 0034 00204 movwf AUX ; 暂时保存 00205 00206 ; 等待 PC 准备就绪 0038 00207 SendW 0038 0706 00208 btfss GPIO,PCCLK ; 测试 PCCLK 0039 0A38 00209 goto SendW ; 循环直至变为高电平 00210 00211 ; PC 请求? 00212 btfss DATA ; PC 拉低数据线? 00213 goto RecKEY ; 先去接收 00214 00215 ; 发送起始位 003A 0403 00216 bcf STATUS,C 003B 0922 00217 call SendBit 00218 00219 ; 随后移出 8 个数据位, LSB 优先 003C 0C08 00220 movlw.8 003D 002F 00221 movwf BITCOUNT 003E 0073 00222 clrf PARITY 00223 003F 00224 SBitL 003F 0334 00225 rrf AUX,F ; 下一位 0040 0603 00226 btfsc STATUS,C 0041 02B3 00227 incf PARITY,F ; 计算奇偶校验 0042 0922 00228 call SendBit 0043 02EF 00229 decfsz BITCOUNT,F DS00665A_CN 第 10 页 2007 Microchip Technology Inc.

0044 0A3F 00230 goto SBitL ; 循环 8 位 00231 0045 02B3 00232 incf PARITY,F ; 为奇校验 0046 0333 00233 rrf PARITY,F ; 发送奇偶校验位 0047 0922 00234 call SendBit 00235 0048 0503 00236 bsf STATUS,C 0049 0A22 00237 goto SendBit ; 发送停止位 ( 高电平 = 释放 ) 00238 00239 00240 ;********************************************************************** 00241 ;* Receive 00242 ;* 接收 HCS300 编码器发送的最初 64 位 00243 ;* 为了简化, 仅运行于 400us PWM 模式 00244 ;* 00245 ;* 输入变量 : 00246 ;* 无 00247 ;* 输出变量 : 00248 ;* BUFFER0..7 00249 ;********************************************************************** 00250 ; 004A 00251 Receive 004A 0686 00252 btfsc HCSIN ; 等待下降沿 004B 0A4A 00253 goto Receive 00254 00255 ; 从 3.0 至 6.1 ms 将等待接受同步脉冲 00256 ; 大于 128 个周期但小于 256 个周期 00257 ; 每一个周期是 24 us @4MHz 00258 ; 00000038 00259 PREBIT EQU.56 00260 004C 006F 00261 clrf BITCOUNT ; 初始化计数器 004D 00262 Rise 004D 0686 00263 btfsc HCSIN ; 等待上升沿 004E 0A54 00264 goto Rise2 00265 004F 0913 00266 call SubDelay10 ; 每个周期为 24us 0050 0914 00267 call SubDelay9 ; 00268 0051 03EF 00269 incfsz BITCOUNT,F ; 大于 6, 0ms 延时 0052 0A4D 00270 goto Rise ; 等待循环 0053 0A4A 00271 goto Receive ; 超时重新启动 00272 0054 00273 Rise2 0054 07EF 00274 btfss BITCOUNT,7 ; 如果 bit7 = 1, 则跳过下一条指令 0055 0A4A 00275 goto Receive ; 否则小于 3.0 ms 延时 00276 00277 ;------------------------------------------------------------------- 00278 ; 读后续 8 个字节 ( 忽略最后 2 位 ) 00279 ; 0056 0C40 00280 movlw.64 ; 每个字节 8 位 0057 002F 00281 movwf BITCOUNT 00282 0058 00283 FirstPreload 0058 0C38 00284 movlw PREBIT ; 第一个位无需平衡 0059 0031 00285 movwf TIMEHI 005A 0A5D 00286 goto WHL 00287 005B 00288 RNextBit 005B 0C36 00289 movlw PREBIT-2 ; 预载计数器 005C 0031 00290 movwf TIMEHI ; 平衡额外的 rrf 时间 00291 005D 00292 WHL 005D 02B1 00293 incf TIMEHI,F ; 测量高电平时间 005E 0643 00294 btfsc STATUS,Z 005F 0A4A 00295 goto Receive ; 在 1.2ms (200*6) 延时之后 2007 Microchip Technology Inc. DS00665A_CN 第 11 页

0060 0686 00296 btfsc HCSIN ; 当为高电平时循环 0061 0A5D 00297 goto WHL ; 00298 0062 0C38 00299 movlw PREBIT ; 预载计数器 0063 0032 00300 movwf TIMELO 00301 0064 00302 WLL 0064 02B2 00303 incf TIMELO,F ; 测量低电平时间 0065 0643 00304 btfsc STATUS,Z 0066 0A4A 00305 goto Receive ; 在 1.2ms (200*6) 延时之后 0067 0786 00306 btfss HCSIN ; 当为低电平时循环 0068 0A64 00307 goto WLL 00308 00309 ; 移位至新位 0069 0211 00310 movf TIMEHI,W 006A 00B2 00311 subwf TIMELO,F ; 如果 TIMEHI > TIMELO, 进位位 = 0 006B 032E 00312 rrf BUFFER7,F ; 在缓冲器中插入位 006C 032D 00313 rrf BUFFER6,F 006D 032C 00314 rrf BUFFER5,F 006E 032B 00315 rrf BUFFER4,F 006F 032A 00316 rrf BUFFER3,F 0070 0329 00317 rrf BUFFER2,F 0071 0328 00318 rrf BUFFER1,F 0072 0327 00319 rrf BUFFER0,F 00320 00321 ; 比较占空比周期, 以跳过前导符 0073 0CE0 00322 movlw 0E0 ; 测试占空比周期 0074 0152 00323 andwf TIMELO,W ; delta >200us? (32 个周期 ) 0075 0643 00324 btfsc STATUS,Z 0076 0A4A 00325 goto Receive ; 不! 这是前导符 00326 0077 02EF 00327 decfsz BITCOUNT,F ; 循环直至结束 0078 0A5B 00328 goto RNextBit 0079 0800 00329 retlw 0 00330 00331 ;---------------------------------------------------------------------- 00332 ;********************************************************************** 00333 ;* 主循环 00334 ;* 设置 TRIS 和 option 寄存器 00335 ;* 等待开始 (LED) 00336 ;* 禁止键盘 00337 ;* 接收新的跳码 00338 ;* 发送 16 个 16 进制位 00339 ;* 等待发送终止 00340 ;* 循环 00341 ;****************************************************************** 00342 ; 007A 00343 Main 007A 0C04 00344 movlw b 00000100 ; 设置开关接通 007B 0026 00345 movwf GPIO 007C 0CFB 00346 movlw MASKDEF ; 端口初始化 007D 0006 00347 tris GPIO 007E 0C00 00348 movlw 0 007F 0002 00349 option 00350 0080 06A6 00351 btfsc LED ; 等待 Led 输出下降 0081 0A7A 00352 goto Main 00353 0082 00354 Disable 0082 0066 00355 clrf GPIO ; 发送禁止 kb 00356 ; 开关 = 低电平 00357 0083 094A 00358 call Receive ; 获取新的跳码 00359 00360 ;---------------------------------------------------------------------- 00361 ; 模拟键盘, 将数据作为一个由 16 个按键和释键组成的序列发送, DS00665A_CN 第 12 页 2007 Microchip Technology Inc.

00362 ; 每次均发送一个 16 进制数字 00363 ; 0084 0C08 00364 movlw.8 ; 来自缓冲器的 8 字节 0085 0030 00365 movwf BYTECOUNT 0086 0C07 00366 movlw BUFFER0 ; 初始化指针 0087 0024 00367 movwf FSR 00368 0088 00369 KEYL 0088 0200 00370 movf INDF,W ; 低半字节 0089 0E0F 00371 andlw 0F 008A 0902 00372 call ScanCode ; 编码 16 进制代码的低半部分 008B 0035 00373 movwf KEY 008C 0937 00374 call SendKEY ; 模拟键按下 008D 091A 00375 call Wait10ms 008E 0CF0 00376 movlw BREAK ; 模拟键释放 008F 0937 00377 call SendKEY 0090 0C01 00378 movlw 1 0091 091B 00379 call WaitWx750 ; 等待 750us 0092 0215 00380 movf KEY,W 0093 0937 00381 call SendKEY 00382 0094 091A 00383 call Wait10ms 00384 0095 0380 00385 swapf INDF,W ; 高半字节 0096 0E0F 00386 andlw 0F 0097 0902 00387 call ScanCode ; 编码 16 进制代码的高半部分 0098 0035 00388 movwf KEY 0099 0937 00389 call SendKEY ; 模拟键按下 009A 091A 00390 call Wait10ms 009B 0CF0 00391 movlw BREAK ; 模拟键释放 009C 0937 00392 call SendKEY 009D 0C01 00393 movlw 1 009E 091B 00394 call WaitWx750 ; 等待 750us 009F 0215 00395 movf KEY,W 00A0 0937 00396 call SendKEY 00397 00A1 091A 00398 call Wait10ms 00399 00A2 02A4 00400 incf FSR,F ; 下一个字节 00A3 02F0 00401 decfsz BYTECOUNT,F 00A4 0A88 00402 goto KEYL 00403 00404 ;---------------------------------------------------------------------- 00405 ; 现在等待 HCS 停止发送 ( 按钮释放 ) 00406 ; 00A5 00407 Release 00A5 07A6 00408 btfss LED ; 等待 Led 输出线变为高电平 00A6 0AA5 00409 goto Release 00A7 0A7A 00410 goto Main 00411 00412 END MPASM 01.40 Released HOPPASW.ASM 2-20-1997 16:45:24 PAGE 2 存储器使用映射 ( X = 使用, - = 未用 ) 0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXX-------- ---------------- 01C0 : ---------------- ---------------- ---------------- ---------------X 0200 : XXX------------- ---------------- ---------------- ---------------- 0FC0 : ---------------- ---------------- ---------------- ---------------X 未用的所有其他存储块 使用的程序存储器字 : 168 2007 Microchip Technology Inc. DS00665A_CN 第 13 页

未用的程序存储器字 : 343 错误 : 0 警告 : 0 reported, 0 suppressed 消息 : 0 reported, 0 suppressed DS00665A_CN 第 14 页 2007 Microchip Technology Inc.

注 : 2007 Microchip Technology Inc. DS00665A_CN 第 15 页

注 : DS00665A_CN 第 16 页 2007 Microchip Technology Inc.

请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意 甚至是非法破坏代码保护功能的行为 就我们所知, 所有这些行为都不是以 Microchip 数据手册中规定的操作规范来使用 Microchip 产品的 这样做的人极可能侵犯了知识产权 Microchip 愿与那些注重代码完整性的客户合作 Microchip 或任何其他半导体厂商均无法保证其代码的安全性 代码保护并不意味着我们保证产品是 牢不可破 的 代码保护功能处于持续发展中 Microchip 承诺将不断改进产品的代码保护功能 任何试图破坏 Microchip 代码保护功能的行为均可视为违反了 数字器件千年版权法案 (Digital Millennium Copyright Act) 如果这种行为导致他人在未经授权的情况下, 能访问您的软件或其他受版权保护的成果, 您有权依据该法案提起诉讼, 从而制止这种行为 提供本文档的中文版本仅为了便于理解 请勿忽视文档中包含的英文部分, 因为其中提供了有关 Microchip 产品性能和使用情况的有用信息 Microchip Technology Inc. 及其分公司和相关公司 各级主管与员工及事务代理机构对译文中可能存在的任何差错不承担任何责任 建议参考 Microchip Technology Inc. 的英文原版文档 本出版物中所述的器件应用信息及其他类似内容仅为您提供便利, 它们可能由更新之信息所替代 确保应用符合技术规范, 是您自身应负的责任 Microchip 对这些信息不作任何明示或暗示 书面或口头 法定或其他形式的声明或担保, 包括但不限于针对其使用情况 质量 性能 适销性或特定用途的适用性的声明或担保 Microchip 对因这些信息及使用这些信息而引起的后果不承担任何责任 如果将 Microchip 器件用于生命维持和 / 或生命安全应用, 一切风险由买方自负 买方同意在由此引发任何一切伤害 索赔 诉讼或费用时, 会维护和保障 Microchip 免于承担法律责任, 并加以赔偿 在 Microchip 知识产权保护下, 不得暗中或以其他方式转让任何许可证 商标 Microchip 的名称和徽标组合 Microchip 徽标 Accuron dspic KEELOQ KEELOQ 徽标 microid MPLAB PIC PICmicro PICSTART PRO MATE rfpic 和 SmartShunt 均为 Microchip Technology Inc. 在美国和其他国家或地区的注册商标 AmpLab FilterLab Linear Active Thermistor Migratable Memory MXDEV MXLAB SEEVAL SmartSensor 和 The Embedded Control Solutions Company 均为 Microchip Technology Inc. 在美国的注册商标 Analog-for-the-Digital Age Application Maestro CodeGuard dspicdem dspicdem.net dspicworks dsspeak ECAN ECONOMONITOR FanSense FlexROM fuzzylab In-Circuit Serial Programming ICSP ICEPIC Mindi MiWi MPASM MPLAB Certified 徽标 MPLIB MPLINK PICkit PICDEM PICDEM.net PICLAB PICtail PowerCal PowerInfo PowerMate PowerTool REAL ICE rflab Select Mode Smart Serial SmartTel Total Endurance UNI/O WiperLock 和 ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地区的商标 SQTP 是 Microchip Technology Inc. 在美国的服务标记 在此提及的所有其他商标均为各持有公司所有 2007, Microchip Technology Inc. 版权所有 Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州 Gresham 的全球总部 设计和晶圆生产厂及位于美国加利福尼亚州和印度的设计中心均通过了 ISO/TS-16949:2002 认证 公司在 PIC MCU 与 dspic DSC KEELOQ 跳码器件 串行 EEPROM 单片机外设 非易失性存储器和模拟产品方面的质量体系流程均符合 ISO/TS- 16949:2002 此外, Microchip 在开发系统的设计和生产方面的质量体系也已通过了 ISO 9001:2000 认证 2007 Microchip Technology Inc. DS00665A_CN 第 17 页

全球销售及服务网点 美洲 亚太地区 亚太地区 欧洲 公司总部 Corporate Office 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 1-480-792-7200 Fax: 1-480-792-7277 技术支持 : http://support.microchip.com 网址 :www.microchip.com 亚特兰大 Atlanta Duluth, GA Tel: 678-957-9614 Fax: 678-957-1455 波士顿 Boston Westborough, MA Tel: 1-774-760-0087 Fax: 1-774-760-0088 芝加哥 Chicago Itasca, IL Tel: 1-630-285-0071 Fax: 1-630-285-0075 达拉斯 Dallas Addison, TX Tel: 1-972-818-7423 Fax: 1-972-818-2924 底特律 Detroit Farmington Hills, MI Tel: 1-248-538-2250 Fax: 1-248-538-2260 科科莫 Kokomo Kokomo, IN Tel: 1-765-864-8360 Fax: 1-765-864-8387 洛杉矶 Los Angeles Mission Viejo, CA Tel: 1-949-462-9523 Fax: 1-949-462-9608 圣克拉拉 Santa Clara Santa Clara, CA Tel: 408-961-6444 Fax: 408-961-6445 加拿大多伦多 Toronto Mississauga, Ontario, Canada Tel: 1-905-673-0699 Fax: 1-905-673-6509 亚太总部 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 中国 - 北京 Tel: 86-10-8528-2100 Fax: 86-10-8528-2104 中国 - 成都 Tel: 86-28-8665-5511 Fax: 86-28-8665-7889 中国 - 福州 Tel: 86-591-8750-3506 Fax: 86-591-8750-3521 中国 - 香港特别行政区 Tel: 852-2401-1200 Fax: 852-2401-3431 中国 - 南京 Tel: 86-25-8473-2460 Fax: 86-25-8473-2470 中国 - 青岛 Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 中国 - 上海 Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 中国 - 沈阳 Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 中国 - 深圳 Tel: 86-755-8203-2660 Fax: 86-755-8203-1760 中国 - 顺德 Tel: 86-757-2839-5507 Fax: 86-757-2839-5571 中国 - 武汉 Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 中国 - 西安 Tel: 86-29-8833-7252 Fax: 86-29-8833-7256 台湾地区 - 高雄 Tel: 886-7-536-4818 Fax: 886-7-536-4803 澳大利亚 Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 印度 India - Bangalore Tel: 91-80-4182-8400 Fax: 91-80-4182-8422 印度 India - New Delhi Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 印度 India - Pune Tel: 91-20-2566-1512 Fax: 91-20-2566-1513 日本 Japan - Yokohama Tel: 81-45-471-6166 Fax: 81-45-471-6122 韩国 Korea - Daegu Tel: 82-53-744-4301 Fax: 82-53-744-4302 韩国 Korea - Seoul Tel: 82-2-554-7200 Fax: 82-2-558-5932 或 82-2-558-5934 马来西亚 Malaysia - Kuala Lumpur Tel: 60-3-6201-9857 Fax: 60-3-6201-9859 马来西亚 Malaysia - Penang Tel: 60-4-227-8870 Fax: 60-4-227-4068 菲律宾 Philippines - Manila Tel: 63-2-634-9065 Fax: 63-2-634-9069 新加坡 Singapore Tel: 65-6334-8870 Fax: 65-6334-8850 泰国 Thailand - Bangkok Tel: 66-2-694-1351 Fax: 66-2-694-1350 奥地利 Austria - Wels Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 丹麦 Denmark-Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 法国 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 德国 Germany - Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 意大利 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 台湾地区 - 台北 Tel: 886-2-2500-6610 Fax: 886-2-2508-0102 台湾地区 - 新竹 Tel: 886-3-572-9526 Fax: 886-3-572-6459 10/05/07 DS00665A_CN 第 18 页 2007 Microchip Technology Inc.