PIC16F882/883/884/886/887 数据手册 采用纳瓦技术的 28/40/44 引脚 增强型闪存 8 位 CMOS 单片机 2008 Microchip Technology Inc. 15302695323 0755-61392565 DS41291E_CN 请注意以下有关 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 徽标、 MPLAB、 PIC、 PICmicro、 PICSTART、 rfPIC、 SmartShun 和 UNI/O 均为 Microchip Technology Inc. 在美国和其他国家或地区的注册商 标。 FilterLab、 Linear Active Thermistor、 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、 In-Circuit Serial Programming、 ICSP、 ICEPIC、 Mindi、 MiWi、MPASM、MPLAB Certified 徽标、MPLIB、MPLINK、 mTouch、 PICkit、 PICDEM、 PICDEM.net、 PICtail、 PIC32 徽标、 PowerCal、 PowerInfo、 PowerMate、 PowerTool、 REAL ICE、 rfLAB、 Select Mode、 Total Endurance、 WiperLock和ZENA均为Microchip Technology Inc.在美国和其 他国家或地区的商标。 SQTP 是 Microchip Technology Inc. 在美国的服务标记。 在此提及的所有其他商标均为各持有公司所有。 © 2008, Microchip Technology Inc. 版权所有。 Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州 Gresham 的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和 印度的设计中心均通过了 ISO/TS-16949:2002 认证。公司在 PIC® MCU 与 dsPIC® DSC、 KEELOQ® 跳码器件、串行 EEPROM、单片机外 设、非易失性存储器和模拟产品方面的质量体系流程均符合 ISO/TS16949:2002。此外, Microchip 在开发系统的设计和生产方面的质量体 系也已通过了 ISO 9001:2000 认证。 DS41291E_CN 第 ii 页 0755-61392565 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 采用纳瓦技术的 28/40/44 引脚 8 位 CMOS 闪存单片机 高性能 RISC CPU: 外设特性: • 仅需学习 35 条指令: - 除跳转指令外,所有指令均为单周期指令 • 工作速度 - 振荡器 / 时钟输入为 DC – 20 MHz - 指令周期为 DC – 200 ns • 中断功能 • 8 级深的硬件堆栈 • 直接、间接和相对寻址模式 • 24/35 个带有方向可单独控制的 I/O 引脚: - 高灌 / 拉电流可直接驱动 LED - 电平变化中断引脚 - 可单独编程的弱上拉引脚 - 超低功耗唤醒 (Ultra Low-Power Wake-up, ULPWU) • 模拟比较器模块具有: - 两个模拟比较器 - 可编程片上参考电压 (CVREF)模块 (占 VDD 的 百分比) - 固定的参考电压 (0.6V) - 可从外部访问比较器的输入和输出 - SR 锁存模式 - 外部定时器选通 (使能计数) • A/D 转换器: - 10 位分辨率和 11/14 个通道 • Timer0:带 8 位可编程预分频器的 8 位定时器 / 计 数器 • 增强型 Timer1: - 带预分频器的 16 位定时器 / 计数器 - 外部选通输入模式 - 专用低功耗 32 kHz 振荡器 • Timer2:带 8 位周期寄存器、预分频器和后分频 器的 8 位定时器 / 计数器 • 增强型捕捉、比较和 PWM+ 模块: - 16 位捕捉,最大分辨率为 12.5 ns - 比较,最大分辨率为 200 ns - 带有 1、 2 或 4 个输出通道和可编程 “死区时 间”的 10 位 PWM,最大频率为 20 kHz - PWM 输出转向 (steering)控制 • 捕捉、比较和 PWM 模块: - 16 位捕捉,最大分辨率为 12.5 ns - 16 位比较,最大分辨率为 200 ns - 10 位 PWM,最大频率为 20 kHz • 增强型 USART 模块: - 支持 RS-485、 RS-232 和 LIN 2.0 - 自动波特率检测 - 遇到起始位时自动唤醒 • 通过两个引脚进行在线串行编程 (In-Circuit Serial Programming™, ICSP™) • 主同步串行口 (Master Synchronous Serial Port,MSSP)模块支持 3 线 SPI(总共 4 种模式) 和带有 I2C 地址屏蔽功能的 I2C™ 主 / 从模式 单片机的特殊性能: • 高精度内部振荡器: - 出厂时精度校准为 ±1% - 可通过软件选择的频率范围为:31 kHz 至 8 MHz - 可通过软件调节 - 双速启动模式 - 关键应用的晶振故障检测 - 在工作期间切换时钟模式以节能 • 节能休眠模式 • 宽工作电压范围 (2.0V-5.5V) • 工业级及扩展级温度范围 • 上电复位 (Power-on Reset , POR) • 上电延时定时器 (Power-up Timer, PWRT)和 振荡器起振定时器 (Oscillator Start-up Timer, OST) • 带有软件控制选项的掉电复位 (Brown-out Reset, BOR) • 带有片上振荡器的增强型低电流看门狗定时器 (Watchdog Timer , WDT),可软件使能 (在软 件选择最大分频比时,标称周期为 268 秒) • 带有上拉的主复位引脚,可复用作输入引脚 • 可编程代码保护 • 高耐用性闪存 /EEPROM 单元: - 闪存可承受 10 万次擦写 - EEPROM 可承受 100 万次擦写 - 闪存 / 数据 EEPROM 的数据保持时间:> 40 年 • 运行时读 / 写程序存储器 • 在线调试器 (板上) 低功耗特性: • 待机电流: - 2.0V 时典型值为 50 nA • 工作电流: - 32 kHz、 2.0V 时典型值为 11 µA - 4 MHz、 2.0V 时典型值为 220 µA • 看门狗定时器电流: - 2.0V 时典型值为 1 µA 2008 Microchip Technology Inc. 0755-61392565 DS41291E_CN 第1 页 PIC16F882/883/884/886/887 程序存储器 数据存储器 10 位 A/D ECCP/ (通道数) CCP EUSART MSSP 比较器 8/16 位 定时器 1/1 1 1 2 2/1 1/1 1 1 2 2/1 1/1 1 1 2 2/1 EEPROM (字节) 128 I/O PIC16F882 闪存 (字) 2048 SRAM (字节) 128 24 11 PIC16F883 4096 256 256 24 11 PIC16F884 4096 256 256 35 14 PIC16F886 8192 368 256 24 11 1/1 1 1 2 2/1 PIC16F887 8192 368 256 35 14 1/1 1 1 2 2/1 器件 DS41291E_CN 第2 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 引脚图—— PIC16F882/883/886 (28 引脚 PDIP、 SOIC 和 SSOP) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 RE3/MCLR/VPP RA0/AN0/ULPWU/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3/VREF+/C1IN+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT VSS RA7/OSC1/CLKIN RA6/OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/P1A/CCP1 RC3/SCK/SCL 表 1: PIC16F882/883/886 28 引脚 PDIP、SOIC 和 SSOP 28 27 26 25 24 23 22 21 20 19 18 17 16 15 RB7/ICSPDAT RB6/ICSPCLK RB5/AN13/T1G RB4/AN11/P1D RB3/AN9/PGM/C12IN2RB2/AN8/P1B RB1/AN10/P1C/C12IN3RB0/AN12/INT VDD VSS RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA PIC16F882/883/886 28 引脚汇总 (PDIP、 SOIC 和 SSOP) I/O 引脚 模拟 比较器 定时器 ECCP EUSART MSSP 中断 上拉 基准 RA0 2 AN0/ULPWU C12IN0- - - - - - - - RA1 3 AN1 C12IN1- - - - - - - RA2 4 AN2 C2IN+ - - - - - - - VREF-/CVREF RA3 5 AN3 C1IN+ - - - - - - VREF+ RA4 6 C1OUT T0CKI - - - - 7 C2OUT - - - - SS - RA5 - AN4 - - RA6 10 - - - - - - - - - OSC2/CLKOUT RA7 9 - - - - - - - Y 22 AN10 - - P1C - RB1 - C12IN3- - IOC/INT OSC1/CLKIN 21 - AN12 - RB0 - - IOC Y - RB2 23 AN8 - P1B - - IOC Y RB3 24 AN9 - C12IN2- - - - IOC Y - PGM - - P1D - - IOC Y - Y Y - ICSPCLK - RB4 25 AN11 RB5 26 AN13 - - T1G - - - IOC RB6 27 - - - - - - IOC - - - IOC Y ICSPDAT - - - - - - RB7 28 - - RC0 11 - - - T1OSO/T1CKI RC1 12 - - T1OSI - CCP2 - - - - RC2 13 - - - CCP1/P1A - - - - RC3 14 - - - - - - SCK/SCL - - - RC4 15 - - - - - SDI/SDA - - - RC5 16 - - - - - - - RC6 17 - - - - - TX/CK SDO - - - - RC7 18 - - - - RX/DT - - RE3 1 - - - - - - - - Y(1) MCLR/VPP - 20 - - - - - - - - VDD - 8 - - - - - - - - VSS - 19 - - - - - - - - VSS 注 - 1: 只有在采用外部 MCLR 配置时才能激活上拉。 2008 Microchip Technology Inc. DS41291E_CN 第3 页 PIC16F882/883/884/886/887 引脚图——PIC16F882/883/886 (28 引脚 QFN) 8 9 10 11 12 13 14 1 21 2 20 3 19 4 PIC16F882/883/886 18 5 17 16 6 15 7 RB3/AN9/PGM/C12IN2RB2/AN8/P1B RB1/AN10/P1C/C12IN3RB0/AN12/INT VDD VSS RC7/RX/DT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/P1A/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3/VREF+/C1IN+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT VSS RA7/OSC1/CLKIN RA6/OSC2/CLKOUT 28 27 26 25 24 23 22 RA1/AN1/C12IN1RA0/AN0/ULPWU/C12IN0RE3/MCLR/VPP RB7/ICSPDAT RB6/ICSPCLK RB5/AN13/T1G RB4/AN11/P1D 28 引脚 QFN DS41291E_CN 第4 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 2: I/O PIC16F882/883/886 28 引脚汇总 (QFN) 引脚 模拟 比较器 定时器 ECCP EUSART MSSP 中断 上拉 基准 RA0 27 AN0/ULPWU C12IN0- - - - - - - - RA1 28 AN1 C12IN1- - - - - - - RA2 1 AN2 C2IN+ - - - - - - - VREF-/CVREF RA3 2 AN3 C1IN+ - - - - - - VREF+ RA4 3 C1OUT T0CKI - - - - 4 C2OUT - - - - SS - RA5 - AN4 - - RA6 7 - - - - - - - - - OSC2/CLKOUT RA7 6 - - - - - 18 - - - Y 19 AN10 - - P1C - RB1 - C12IN3- - IOC/INT OSC1/CLKIN RB0 - AN12 - - IOC Y - RB2 20 AN8 - P1B - - IOC Y RB3 21 AN9 - - P1D - - IOC Y - PGM - - IOC Y - - - - IOC Y Y - ICSPCLK ICSPDAT - C12IN2- - RB4 22 AN11 - RB5 23 AN13 - - T1G RB6 24 - - - - - - IOC - - - IOC Y - - - - - - - - - - RB7 25 - - RC0 8 - - - T1OSO/T1CKI RC1 9 - - T1OSI - CCP2 RC2 10 - - - CCP1/P1A - - - 11 - - - - - - SCK/SCL - RC3 - - - RC4 12 - - - - - SDI/SDA - - - RC5 13 - - - - SDO - - - RC6 14 - - - - - TX/CK - - - - RC7 15 - - - - RX/DT - - RE3 26 - - - - - - - - Y(1) MCLR/VPP - 17 - - - - - - - - VDD - - 5 - - - - - - - - VSS - 16 - - - - - - - - VSS 注 1: 只有在采用外部 MCLR 配置时才能激活上拉。 2008 Microchip Technology Inc. DS41291E_CN 第5 页 PIC16F882/883/884/886/887 引脚图 —— PIC16F884/887 (40 引脚 PDIP) RE3/MCLR/VPP RA0/AN0/ULPWU/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3/VREF+/C1IN+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RE0/AN5 RE1/AN6 RE2/AN7 VDD VSS RA7/OSC1/CLKIN RA6/OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/P1A/CCP1 RC3/SCK/SCL RD0 RD1 DS41291E_CN 第6 页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PIC16F884/887 40 引脚 PDIP 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 RB7/ICSPDAT RB6/ICSPCLK RB5/AN13/T1G RB4/AN11 RB3/AN9/PGM/C12IN2RB2/AN8 RB1/AN10/C12IN3RB0/AN12/INT VDD VSS RD7/P1D RD6/P1C RD5/P1B RD4 RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3 RD2 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 3: I/O PIC16F884/887 40 引脚汇总 (PDIP) 比较器 定时器 ECCP EUSART MSSP 引脚 模拟 中断 上拉 基准 RA0 2 AN0/ULPWU C12IN0- - - - - - - - RA1 3 AN1 C12IN1- - - - - - - RA2 4 AN2 C2IN+ - - - - - - - VREF-/CVREF RA3 5 AN3 C1IN+ - - - - - - VREF+ RA4 6 T0CKI - - - - C2OUT - - - - SS - 7 - AN4 C1OUT RA5 - - RA6 14 - - - - - - - - - OSC2/CLKOUT RA7 13 - - - - - - - - - - Y OSC1/CLKIN - C12IN3- - IOC/INT - - - - IOC Y - - - - - IOC Y Y - PGM RB0 33 - AN12 RB1 34 AN10 RB2 35 AN8 RB3 36 AN9 - C12IN2- RB4 37 AN11 - RB5 38 AN13 RB6 39 - RB7 40 - - RC0 15 - - - T1OSO/T1CKI RC1 16 - - RC2 17 - - RC3 18 - RC4 23 - RC5 24 - RC6 25 - RC7 26 - - RD0 19 - - - - - - - IOC - - - IOC Y - - - T1G - - - IOC Y - - - - - IOC Y - ICSPCLK IOC Y ICSPDAT - - - - CCP2 - - - - - T1OSI - - - - - - CCP1/P1A - - - - - - - - - SCK/SCL - - - - - - - SDI/SDA - - - - - - SDO - - - - - - - TX/CK - - - - - - RX/DT - - - - - - - - - - - RD1 20 - - - - - - - - - RD2 21 - - - - - - - - - RD3 22 - - - - - - - - - RD4 27 - - - - - - - - RD5 28 - - - - P1B - - - - - RD6 29 - - - P1C - - - - - RD7 30 - - - - - - - RE0 8 - AN5 P1D - - - - - - - - RE1 9 AN6 - - - - - - - - - - - - - - RE2 10 AN7 - RE3 1 - - - - - - - - Y(1) - 11 - - - - - - - - VDD - 32 - - - - - - - - VDD - 12 - - - - - - - - VSS 31 - - - - - - - - VSS - 注 MCLR/VPP 1: 只有在采用外部 MCLR 配置时才能激活上拉。 2008 Microchip Technology Inc. DS41291E_CN 第7 页 PIC16F882/883/884/886/887 引脚图—— PIC16F884/887 (44 引脚 QFN) PIC16F884/887 33 32 31 30 29 28 27 26 25 24 23 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 RA6/OSC2/CLKOUT RA7/OSC1/CLKIN VSS VSS NC VDD RE2/AN7 RE1/AN6 RE0/AN5 RA5/AN4/SS/C2OUT RA4/T0CKI/C1OUT RB3/AN9/PGM/C12IN2NC RB4/AN11 RB5/AN13/T1G RB6/ICSPCLK RB7/ICSPDAT RE3/MCLR/VPP RA0/AN0/ULPWU/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3//VREF+/C1IN+ RC7/RX/DT RD4 RD5/P1B RD6/P1C RD7/P1D VSS VDD VDD RB0/AN12/INT RB1/AN10/C12IN3RB2/AN8 44 43 42 41 40 39 38 37 36 35 34 RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3 RD2 RD1 RD0 RC3/SCK/SCL RC2/P1A/CCP1 RC1/T1OSCI/CCP2 RC0/T1OSO/T1CKI 44 引脚 QFN DS41291E_CN 第8 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 4: I/O PIC16F884/887 44 引脚汇总 (QFN) 比较器 定时器 ECCP EUSART MSSP 引脚 模拟 中断 上拉 基准 RA0 19 AN0/ULPWU C12IN0- - - - - - - - RA1 20 AN1 C12IN1- - - - - - - RA2 21 AN2 C2IN+ - - - - - - - VREF-/CVREF RA3 22 AN3 C1IN+ - - - - - - VREF+ RA4 23 T0CKI - - - - C2OUT - - - - SS - 24 - AN4 C1OUT RA5 - - RA6 33 - - - - - - - - - OSC2/CLKOUT RA7 32 - - - - - - - - - - Y OSC1/CLKIN - C12IN3- - IOC/INT - - - - IOC Y - - - - - IOC Y Y - PGM RB0 9 - AN12 RB1 10 AN10 RB2 11 AN8 RB3 12 AN9 - C12IN2- RB4 14 AN11 - RB5 15 AN13 RB6 16 - RB7 17 - - RC0 34 - - - T1OSO/T1CKI RC1 35 - - RC2 36 - - RC3 37 - RC4 42 - RC5 43 - RC6 44 - RC7 1 - - RD0 38 - - - - - - - IOC - - - IOC Y - - - T1G - - - IOC Y - - - - - IOC Y - ICSPCLK IOC Y ICSPDAT - - - - CCP2 - - - - - T1OSI - - - - - - CCP1/P1A - - - - - - - - - SCK/SCL - - - - - - - SDI/SDA - - - - - - SDO - - - - - - - TX/CK - - - - - - RX/DT - - - - - - - - - - - RD1 39 - - - - - - - - - RD2 40 - - - - - - - - - RD3 41 - - - - - - - - - RD4 2 - - - - - - - - RD5 3 - - - - P1B - - - - - RD6 4 - - - P1C - - - - - RD7 5 - - - - - - - RE0 25 - AN5 P1D - - - - - - - - RE1 26 AN6 - - - - - - - - - - - - - - RE2 27 AN7 - RE3 18 - - - - - - - - Y(1) - 7 - - - - - - - - VDD - 8 - - - - - - - - VDD - 28 - - - - - - - - VDD - 6 - - - - - - - - VSS - 30 - - - - - - - - VSS - 31 - - - - - - - - VSS - 13 - - - - - - - - NC (无连接) - 29 - - - - - - - - NC (无连接) 注 MCLR/VPP 1: 只有在采用外部 MCLR 配置时才能激活上拉。 2008 Microchip Technology Inc. DS41291E_CN 第9 页 PIC16F882/883/884/886/887 引脚图——PIC16F884/887 (44 引脚 TQFP) PIC16F884/887 33 32 31 30 29 28 27 26 25 24 23 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 NC RC0/T1OSO/T1CKI RA6/OSC2/CLKOUT RA7/OSC1/CLKIN VSS VDD RE2/AN7 RE1/AN6 RE0/AN5 RA5/AN4/SS/C2OUT RA4/T0CKI/C1OUT NC NC RB4/AN11 RB5/AN13/T1G RB6/ICSPCLK RB7/ICSPDAT RE3/MCLR/VPP RA0/AN0/ULPWU/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3//VREF+/C1IN+ RC7/RX/DT RD4 RD5/P1B RD6/P1C RD7/P1D VSS VDD RB0/AN12/INT RB1/AN10/C12IN3RB2/AN8 RB3/AN9/PGM/C12IN2- 44 43 42 41 40 39 38 37 36 35 34 RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3 RD2 RD1 RD0 RC3/SCK/SCL RC2/P1A/CCP1 RC1/T1OSCI/CCP2 NC 44 引脚 TQFP DS41291E_CN 第10 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 5: I/O PIC16F884/887 44 引脚汇总 (TQFP) 比较器 定时器 ECCP EUSART MSSP 引脚 模拟 中断 上拉 基准 RA0 19 AN0/ULPWU C12IN0- - - - - - - - RA1 20 AN1 C12IN1- - - - - - - RA2 21 AN2 C2IN+ - - - - - - - VREF-/CVREF RA3 22 AN3 C1IN+ - - - - - - VREF+ RA4 23 T0CKI - - - - C2OUT - - - - SS - 24 - AN4 C1OUT RA5 - - RA6 31 - - - - - - - - - OSC2/CLKOUT RA7 30 - - - - - - - - - - Y OSC1/CLKIN - C12IN3- - IOC/INT - - - - IOC Y - - - - - IOC Y Y - PGM RB0 8 - AN12 RB1 9 AN10 RB2 10 AN8 RB3 11 AN9 - C12IN2- RB4 14 AN11 - RB5 15 AN13 RB6 16 - RB7 17 - - RC0 32 - - - T1OSO/T1CKI RC1 35 - - RC2 36 - - RC3 37 - RC4 42 - RC5 43 - RC6 44 - RC7 1 - - RD0 38 - - - - - - - IOC - - - IOC Y - - - T1G - - - IOC Y - - - - - IOC Y - ICSPCLK IOC Y ICSPDAT - - - - CCP2 - - - - - T1OSI - - - - - - CCP1/P1A - - - - - - - - - SCK/SCL - - - - - - - SDI/SDA - - - - - - SDO - - - - - - - TX/CK - - - - - - RX/DT - - - - - - - - - - - RD1 39 - - - - - - - - - RD2 40 - - - - - - - - - RD3 41 - - - - - - - - - RD4 2 - - - - - - - - RD5 3 - - - - P1B - - - - - RD6 4 - - - P1C - - - - - RD7 5 - - - - - - - RE0 25 - AN5 P1D - - - - - - - - RE1 26 AN6 - - - - - - - - - - - - - - RE2 27 AN7 - RE3 18 - - - - - - - - Y(1) - 7 - - - - - - - - VDD - 28 - - - - - - - - VDD - 6 - - - - - - - - VSS - 13 - - - - - - - - - 29 - - - - - - - - NC (无连接) VSS - 34 - - - - - - - - NC (无连接) - 33 - - - - - - - - NC (无连接) - 12 - - - - - - - - NC (无连接) 注 MCLR/VPP 1: 只有在采用外部 MCLR 配置时才能激活上拉。 2008 Microchip Technology Inc. DS41291E_CN 第11 页 PIC16F882/883/884/886/887 目录 器件概述 .............................................................................................................................................................................................. 13 存储器的构成 ....................................................................................................................................................................................... 21 I/O 端口 ............................................................................................................................................................................................... 39 振荡器模块 (带故障保护时钟监视器)............................................................................................................................................... 61 Timer0 模块 ......................................................................................................................................................................................... 73 带门控控制的 Timer1 模块 .................................................................................................................................................................. 76 Timer2 模块 ......................................................................................................................................................................................... 81 比较器模块 .......................................................................................................................................................................................... 83 模数转换器 (ADC)模块 ................................................................................................................................................................... 99 数据 EEPROM 和闪存程序存储器控制.............................................................................................................................................. 111 捕捉 / 比较 /PWM 模块 (CCP1 和 CCP2)...................................................................................................................................... 123 增强型通用同步 / 异步收发器 (EUSART) ..................................................................................................................................... 151 主控同步串行端口 (MSSP)模块 .................................................................................................................................................... 179 CPU 的特性 ....................................................................................................................................................................................... 209 指令集综述 ........................................................................................................................................................................................ 231 开发支持 ............................................................................................................................................................................................ 241 电气特性 ............................................................................................................................................................................................ 245 DC 和 AC 特性图表 ........................................................................................................................................................................... 273 封装信息 ............................................................................................................................................................................................ 301 附录 A: 数据手册和版本历史 ...................................................................................................................................................... 313 附录 B: 从其他 PIC® 器件移植 .................................................................................................................................................. 313 索引 ................................................................................................................................................................................................. 315 Microchip 网站................................................................................................................................................................................... 323 变更通知客户服务 ............................................................................................................................................................................. 323 客户支持............................................................................................................................................................................................ 323 读者反馈表 ........................................................................................................................................................................................ 324 产品标识体系..................................................................................................................................................................................... 325 致 客 户 我们旨在提供最佳文档供客户正确使用 Microchip 产品。 为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。出 版物的质量将随新文档及更新版本的推出而得到提升。 如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 [email protected],或将本数 据手册后附的 《读者反馈表》传真到 86-21-5407 5066。我们期待您的反馈。 最新数据手册 欲获得本数据手册的最新版本,请查询我公司的网站: http://www.microchip.com 查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号,例如:DS30000A 是 DS30000 的 A 版本。 勘误表 现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到器 件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。 欲了解某一器件是否存在勘误表,请通过以下方式之一查询: • Microchip 网站 http://www.microchip.com • 当地 Microchip 销售办事处 (见最后一页) 在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。 客户通知系统 欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。 DS41291E_CN 第12 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 1.0 器件概述 本数据手册涵盖了 PIC16F882/883/884/886/887 器件。 PIC16F882/883/886 的封装类型有 :28 引脚 PDIP、 SOIC、SSOP 和 QFN。PIC16F884/887 的封装类型有: 40 引脚 PDIP 以及 44 引脚 QFN 和 TQFP。图 1-1 给出 了 PIC16F882/883/886 器件的框图,图 1-2 给出了 PIC16F884/887 器件的框图。表 1-1 和表 1-2 给出了相 应的引脚配置说明。 2008 Microchip Technology Inc. DS41291E_CN 第13 页 PIC16F882/883/884/886/887 图 1-1: PIC16F882/883/886 框图 配置 13 程序计数器 闪存 2K(2)/4K(1)/ 8K X 14 程序存储器 程序 总线 PORTA 8 数据总线 RA0 RA1 RA2 RA3 RA4 RA5 RA6 RA7 RAM 128(2)/256(1)/ 368 字节 文件寄存器 8 级深堆栈 (13 位) 14 RAM 寻址 PORTB RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 9 寻址 MUX 指令寄存器 7 直接寻址 间接 寻址 8 FSR 寄存器 PORTC STATUS 寄存器 RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 8 3 MUX 上电延时 定时器 指令 译码和 控制 振荡器 起振定时器 ALU PORTE 上电 复位 OSC1/CLKIN 时序 发生 8 看门狗 定时器 W 寄存器 欠压 复位 OSC2/CLKOUT 内部 振荡器 电路 MCLR RE3 CCP2 VDD CCP2 VSS VREF+ VREF- 注 1: 2: SS SCK/SCL SDI/SDA SDO P1D P1C 主同步 ECCP EUSART 模数转换器 (ADC) 2 个模拟比较器 和参考电压模块 仅 PIC16F883。 仅 PIC16F882。 DS41291E_CN 第14 页 Timer2 C1IN+ C12IN0C12IN1C12IN2C12IN3C1OUT C2IN+ C2OUT Timer1 AN0 AN1 AN2 AN3 AN4 AN8 AN9 AN10 AN11 AN12 AN13 Timer0 T1CKI P1B T1G T0CKI RX/DT T1OSO TX/CK Timer1 32 kHz 振荡器 T1OSI CCP1/P1A 在线 调试器 (ICD) 串行端口(MSSP) VREF+ VREFCVREF 8 EEDATA 128(2)/256(1) 字节数据 EEPROM EEADDR 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 PIC16F884/887 框图 配置 13 程序计数器 闪存 4K(1)/8K X 14 程序 存储器 RAM 256(1)/368 字节 文件 寄存器 8 级深堆栈 (13 位) 程序 总线 8 数据总线 14 RAM 寻址 PORTA RA0 RA1 RA2 RA3 RA4 RA5 RA6 RA7 PORTB RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 9 寻址 MUX 指令寄存器 7 直接寻址 间接 寻址 8 FSR 寄存器 STATUS 寄存器 PORTC RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 8 3 MUX 上电延时 定时器 指令 译码和 控制 振荡器 起振定时器 ALU 上电 复位 OSC1/CLKIN 时序 发生 PORTD 8 看门狗 定时器 W 寄存器 CCP2 欠压 复位 OSC2/CLKOUT RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7 内部 振荡器 电路 CCP2 MCLR VDD PORTE VSS RE0 RE1 RE2 RE3 SCK/SCL SDI/SDA SDO P1D P1C T1CKI P1B T1G T0CKI RX/DT T1OSO TX/CK Timer1 32 kHz 振荡器 T1OSI CCP1/P1A 在线 调试器 (ICD) SS 图 1-2: 主同步 Timer0 注 1: ECCP EUSART 模数转换器 (ADC) 2 个模拟比较器 和参考电压模块 C1IN+ C12IN0C12IN1C12IN2C12IN3C1OUT C2IN+ C2OUT VREF+ VREF- Timer2 AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7 AN8 AN9 AN10 AN11 AN12 AN13 Timer1 串行端口(MSSP) VREF+ VREFCVREF 8 EEDATA 256(1) 字节 数据 EEPROM EEADDR 仅 PIC16F884。 2008 Microchip Technology Inc. DS41291E_CN 第15 页 PIC16F882/883/884/886/887 表 1-1: PIC16F882/883/886 引脚配置说明 名称 RA0/AN0/ULPWU/C12IN0- RA1/AN1/C12IN1- RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3/VREF+/C1IN+ RA4/T0CKI/C1OUT 输出 类型 描述 RA0 TTL AN0 AN CMOS 通用 I/O。 - A/D 通道 0 输入。 ULPWU AN - 超低功耗唤醒输入。 C12IN0- AN - 比较器 C1 或 C2 的负输入。 RA1 TTL CMOS 通用 I/O。 AN1 AN - A/D 通道 1 输入。 C12IN1- AN - 比较器 C1 或 C2 的负输入。 RA2 TTL CMOS 通用 I/O。 AN2 AN VREF- AN - A/D 负参考电压输入。 CVREF - AN 比较器参考电压输出。 C2IN+ AN - 比较器 C2 的正输入。 RA3 TTL - 通用 I/O。 - A/D 通道 2。 AN3 AN - A/D 通道 3。 VREF+ AN - 编程电压。 C1IN+ AN - 比较器 C1 的正输入。 RA4 TTL CMOS 通用 I/O。 T0CKI ST - RA5 TTL AN4 AN - A/D 通道 4。 SS ST - 从动选择输入。 C2OUT - RA6 TTL OSC2 - XTAL CLKOUT - CMOS FOSC/4 输出。 RA7 TTL OSC1 XTAL - 晶振 / 谐振器。 CLKIN ST - 外部时钟输入 /RC 振荡器连接。 RB0 TTL AN12 AN - A/D 通道 12。 INT ST - 外部中断。 RB1 TTL AN10 AN P1C - RA6/OSC2/CLKOUT RA7/OSC1/CLKIN RB0/AN12/INT RB1/AN10/P1C/C12IN3- RB2/AN8/P1B AN = 模拟输入或输出 TTL = TTL 兼容输入 HV = 高电压 DS41291E_CN 第16 页 输入 类型 C1OUT RA5/AN4/SS/C2OUT 图注: 功能 C12IN3- AN RB2 TTL AN8 AN P1B - - Timer0 时钟输入。 CMOS 比较器 C1 输出。 CMOS 通用 I/O。 CMOS 比较器 C2 输出。 CMOS 通用 I/O。 带有内部上拉的主复位。 CMOS 通用 I/O。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 - A/D 通道 10。 CMOS PWM 输出。 - 比较器 C1 或 C2 的负输入。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 - A/D 通道 8。 CMOS PWM 输出。 CMOS = CMOS 兼容输入或输出 ST = CMOS 电平的施密特触发器输入 XTAL = 晶振 OD = 漏极开路 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 1-1: PIC16F882/883/886 引脚配置说明 (续) 名称 RB3/AN9/PGM/C12IN2- RB4/AN11/P1D RB5/AN13/T1G 功能 输入 类型 RB3 TTL 输出 类型 描述 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 AN9 AN - A/D 通道 9。 PGM ST - 低电压 ICSP™ 编程使能引脚。 C12IN2- AN - 比较器 C1 或 C2 的负输入。 RB4 TTL AN11 AN P1D - CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 - A/D 通道 11。 CMOS PWM 输出。 RB5 TTL AN13 AN - A/D 通道 13。 T1G ST - Timer1 选通输入。 RB6 TTL ICSPCLK ST RB7 TTL RB6/ICSPCLK RB7/ICSPDAT CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 - 串行编程时钟。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 ICSPDAT ST CMOS ICSP™ 数据 I/O。 RC0 ST CMOS 通用 I/O。 T1OSO - CMOS Timer1 振荡器输出。 T1CKI ST RC1 ST RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/P1A/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RE3/MCLR/VPP - Timer1 时钟输入。 CMOS 通用 I/O。 T1OSI ST CCP2 ST CMOS 捕捉 / 比较 /PWM2。 RC2 ST CMOS 通用 I/O。 P1A - CMOS PWM 输出。 - Timer1 振荡器输入。 CCP1 ST CMOS 捕捉 / 比较 /PWM1。 RC3 ST CMOS 通用 I/O。 SCK ST CMOS SPI 时钟。 SCL ST RC4 ST SDI ST - SPI 数据输入。 SDA ST OD I2C 数据输入 / 输出。 OD I2C™ 时钟。 CMOS 通用 I/O。 RC5 ST SDO - CMOS 通用 I/O。 CMOS SPI 数据输出。 RC6 ST CMOS 通用 I/O。 TX - CMOS EUSART 异步发送。 CK ST CMOS EUSART 同步时钟。 RC7 ST CMOS 通用 I/O。 RX ST DT ST RE3 TTL - 通用输入。 MCLR ST - 带有内部上拉的主复位。 - EUSART 异步输入。 CMOS EUSART 同步数据。 VPP HV - 编程电压。 VSS VSS 电源 - 接地参考端。 VDD VDD 电源 - 正电源。 图注: AN = 模拟输入或输出 TTL = TTL 兼容输入 HV = 高电压 2008 Microchip Technology Inc. CMOS = CMOS 兼容输入或输出 ST = CMOS 电平的施密特触发器输入 XTAL = 晶振 OD = 漏极开路 DS41291E_CN 第17 页 PIC16F882/883/884/886/887 表 1-2: PIC16F884/887 引脚配置说明 功能 输入 类型 RA0 TTL AN0 AN - A/D 通道 0 输入。 ULPWU AN - 超低功耗唤醒输入。 名称 RA0/AN0/ULPWU/C12IN0- C12IN0- AN RA1 TTL RA1/AN1/C12IN1- AN1 AN C12IN1- AN RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3/VREF+/C1IN+ CMOS 通用 I/O。 - 比较器 C1 或 C2 的负输入。 CMOS 通用 I/O。 - A/D 通道 1 输入。 - 比较器 C1 或 C2 的负输入。 CMOS 通用 I/O。 RA2 TTL AN2 AN - A/D 通道 2。 VREF- AN CVREF 比较器参考电压输出。 C2IN+ - AN - AN RA3 TTL A/D 负参考电压输入。 - 比较器 C2 的正输入。 CMOS 通用 I/O。 AN3 AN - A/D 通道 3。 AN - A/D 正参考电压输入。 C1IN+ AN RA4 TTL T0CKI ST C1OUT RA5 - TTL AN4 AN SS ST C2OUT RA6 - TTL OSC2 - CLKOUT RA5/AN4/SS/C2OUT RA6/OSC2/CLKOUT RA7/OSC1/CLKIN RB0/AN12/INT RB1/AN10/C12IN3- RA7 - TTL OSC1 XTAL CLKIN ST RB0 TTL AN12 AN INT ST RB1 TTL AN10 AN C12IN3- AN RB2/AN8 RB3/AN9/PGM/C12IN2- RB2 TTL AN8 AN RB3 TTL - 比较器 C1 的正输入。 CMOS 通用 I/O。 - Timer0 时钟输入。 CMOS 比较器 C1 输出。 CMOS 通用 I/O。 - A/D 通道 4。 - 从动选择输入。 CMOS 比较器 C2 输出。 CMOS 通用 I/O。 XTAL 晶振 / 谐振器。 CMOS FOSC/4 输出。 CMOS 通用 I/O。 - 晶振 / 谐振器。 - 外部时钟输入 /RC 振荡器连接。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 - A/D 通道 12。 - 外部中断。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 - A/D 通道 10。 - 比较器 C1 或 C2 的负输入。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 - A/D 通道 8。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 AN9 AN - A/D 通道 9。 PGM ST - 低电压 ICSP™ 编程使能引脚。 C12IN2- AN - 比较器 C1 或 C2 的负输入。 AN = 模拟输入或输出 TTL = TTL 兼容输入 HV = 高电压 DS41291E_CN 第18 页 描述 VREF+ RA4/T0CKI/C1OUT 图注: 输出 类型 CMOS = CMOS 兼容输入或输出 ST = CMOS 电平的施密特触发器输入 XTAL = 晶振 OD = 漏极开路 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 1-2: PIC16F884/887 引脚配置说明 (续) 名称 RB4/AN11 RB5/AN13/T1G RB6/ICSPCLK 功能 输入 类型 RB4 TTL CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 AN RB5 TTL - A/D 通道 11。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 AN13 AN T1G ST RB6 TTL ST RB7 TTL ICSPDAT ST RC0 ST T1OSO T1CKI - ST RC1 ST T1OSI XTAL CCP2 ST RC2 ST P1A ST CCP1 RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/P1A/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC3 - ST SCK ST SCL - A/D 通道 13。 - Timer1 选通输入。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 - 串行编程时钟。 CMOS 通用 I/O。单独控制的电平变化中断。单独使能的上拉。 TTL ICSP™ 数据 I/O。 CMOS 通用 I/O。 XTAL Timer1 振荡器输出。 - Timer1 时钟输入。 CMOS 通用 I/O。 - Timer1 振荡器输入。 CMOS 捕捉 / 比较 /PWM2。 CMOS 通用 I/O。 CMOS PWM 输出。 CMOS 捕捉 / 比较 /PWM1。 CMOS 通用 I/O。 ST CMOS SPI 时钟。 OD I2C™ 时钟。 RC4 ST CMOS 通用 I/O。 SDI ST SDA ST RC5 ST SDO - ST CMOS 通用 I/O。 CMOS SPI 数据输出。 CMOS 通用 I/O。 - ST CMOS EUSART 异步发送。 CMOS EUSART 同步时钟。 RC7 ST CMOS 通用 I/O。 RX ST DT ST - EUSART 异步输入。 CMOS EUSART 同步数据。 CMOS 通用 I/O。 RC6 TX CK RC7/RX/DT 描述 AN11 ICSPCLK RB7/ICSPDAT 输出 类型 RD0 RD0 TTL RD1 RD1 TTL RD2 RD2 TTL RD3 RD3 TTL - OD SPI 数据输入。 I2C 数据输入 / 输出。 CMOS 通用 I/O。 CMOS 通用 I/O。 CMOS 通用 I/O。 RD4 RD4 TTL RD5/P1B RD5 TTL CMOS 通用 I/O。 CMOS 通用 I/O。 P1B RD6/P1C RD6 - TTL CMOS PWM 输出。 CMOS 通用 I/O。 - CMOS PWM 输出。 P1C 图注: AN = 模拟输入或输出 TTL = TTL 兼容输入 HV = 高电压 2008 Microchip Technology Inc. CMOS = CMOS 兼容输入或输出 ST = CMOS 电平的施密特触发器输入 XTAL = 晶振 OD = 漏极开路 DS41291E_CN 第19 页 PIC16F882/883/884/886/887 表 1-2: PIC16F884/887 引脚配置说明 (续) 名称 RD7/P1D RE0/AN5 RE1/AN6 功能 输入 类型 RD7 TTL P1D RE0 - TTL AN5 AN RE1 TTL 输出 类型 描述 CMOS 通用 I/O。 CMOS PWM 输出。 CMOS 通用 I/O。 - A/D 通道 5。 CMOS 通用 I/O。 AN6 AN RE2 TTL AN7 AN - A/D 通道 7。 RE3 TTL - 通用输入。 MCLR ST - 带有内部上拉的主复位。 VPP HV - 编程电压。 VSS VSS 电源 - 接地参考端。 VDD VDD 电源 - 正电源。 RE2/AN7 RE3/MCLR/VPP 图注: AN = 模拟输入或输出 TTL = TTL 兼容输入 HV = 高电压 DS41291E_CN 第20 页 - A/D 通道 6。 CMOS 通用 I/O。 CMOS = CMOS 兼容输入或输出 ST = CMOS 电平的施密特触发器输入 XTAL = 晶振 OD = 漏极开路 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 2.0 存储器的构成 2.1 程序存储器的构成 图 2-2: PIC16F882/883/884/886/887 具备 13 位的程序计数器 (program counter, PC) ,可 寻 址 PIC16F882 的 2K x 14 (0000h-07FFh)的程序存储空间,PIC16F883 和 PIC16F884 的 4K x 14 (0000h-0FFFh)的程序存 储 空 间 以 及 PIC16F886 和 PIC16F887 的 8K x 14 (0000h-1FFFh)的程序存储空间。访问超出以上边界 的单元会导致折回到第一个 8K x 14 空间。复位向量位 于 0000h 处,中断向量位于 0004h 处 (见图 2-2 和 图 2-3)。 图 2-1: PIC16F883/PIC16F884 的程序存储 器映射和堆栈 PC<12:0> 13 CALL, RETURN RETFIE, RETLW 1 级堆栈 2 级堆栈 8 级堆栈 PIC16F882 程序存储器映射和堆栈 复位向量 0000h 中断向量 0004h 0005h PC<12:0> 13 CALL, RETURN RETFIE, RETLW 第0页 片上程序 存储器 1 级堆栈 07FFh 0800h 第1页 2 级堆栈 0FFFh 8 级堆栈 图 2-3: 中断向量 0000h PIC16F886/PIC16F887 的程序存储 器映射和堆栈 PC<12:0> 中断向量 片上程序 存储器 第0页 0004h 0005h CALL, RETURN RETFIE, RETLW 07FFh 13 1 级堆栈 2 级堆栈 8 级堆栈 复位向量 0000h 中断向量 0004h 0005h 第0页 第1页 片上程序 存储器 第2页 07FFh 0800h 0FFFh 1000h 17FFh 1800h 第3页 2008 Microchip Technology Inc. 1FFFh DS41291E_CN 第 21 页 PIC16F882/883/884/886/887 2.2 数据存储器的构成 数据 存 储 器 (见 图 2-2 和图 2-3)分 为 四 个 存 储区 (bank) ,包 含 通 用 寄 存 器 (General Purpose Register,GPR)和特殊功能寄存器(Special Function Register,SFR)。特殊功能寄存器位于各个存储区的前 32 个单元。通用寄存器实现为静态 RAM,位于各个存 储区的后 96 个单元。 Bank 1 中的 F0h-FFh、 Bank 2 中的 170h-17Fh 和 Bank 3 中的 1F0h-1FFh 寄存器单元 指向 Bank 0 中的地址 70h-7Fh。在各存储区中实现的 通用寄存器(GPR)的实际数量取决于具体器件。详细 信息如图 2-5 和图 2-6 所示。所有其他 RAM 单元均未 实现,读取时返回 0。STATUS 寄存器的 RP<1:0> 为存 储区选择位: RP1 RP0 0 0 → 选择 Bank 0 0 1 → 选择 Bank 1 1 0 → 选择 Bank 2 1 1 → 选择 Bank 3 2.2.1 通用文件寄存器 在 PIC16F882 中文件寄存器以 128 x 8 的形式构成,在 PIC16F883/PIC16F884 中以 256 x 8 的形式构成,而在 PIC16F886/PIC16F887 中以 368 x 8 的形式构成。通过 文件选择寄存器( File Select Register,FSR)直接或 间接访问每个寄存器 (见第 2.4 节 “间接寻址、 INDF 和 FSR 寄存器”)。 2.2.2 特殊功能寄存器 特殊功能寄存器是 CPU 和外设模块用来控制器件进行 所需操作的寄存器 (见表 2-1)。这类寄存器均实现为 静态 RAM。 特殊功能寄存器可分成两类: 内核和外设 SFR。本节将 介绍与内核功能相关的寄存器。与外设功能相关的寄存 器将在相应外设功能的章节介绍。 DS41291E_CN 第22 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 2-4: PIC16F882 特殊功能寄存器 文件 文件 文件 地址 地址 地址 文件 地址 间接寻址 (1) 00h 间接寻址 (1) 80h 间接寻址 (1) 100h 间接寻址 (1) 180h TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h 182h PCL 02h PCL 82h PCL 102h PCL STATUS 03h STATUS 83h STATUS 103h STATUS 183h FSR 04h FSR 84h FSR 104h FSR 184h PORTA 05h TRISA 85h WDTCON 105h SRCON 185h PORTB 06h TRISB 86h PORTB 106h TRISB 186h PORTC 07h TRISC 87h CM1CON0 107h BAUDCTL 187h 88h CM2CON0 108h ANSEL 188h 89h CM2CON1 109h ANSELH 189h 18Ah 08h PORTE 09h TRISE PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh PIR1 0Ch PIE1 8Ch EEDAT 10Ch EECON1 18Ch PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2(1) 18Dh TMR1L 0Eh PCON 8Eh EEDATH 10Eh 保留 18Eh TMR1H 0Fh OSCCON 8Fh EEADRH 10Fh 保留 18Fh T1CON 10h OSCTUNE 90h 110h 190h TMR2 11h SSPCON2 91h 111h 191h T2CON 12h PR2 92h 112h 192h SSPBUF 13h SSPADD 93h 113h 193h SSPCON 14h SSPSTAT 94h 114h 194h CCPR1L 15h WPUB 95h 115h 195h CCPR1H 16h IOCB 96h 116h 196h CCP1CON 17h VRCON 97h 117h 197h RCSTA 18h TXSTA 98h 118h 198h TXREG 19h SPBRG 99h 119h 199h RCREG 1Ah SPBRGH 9Ah 11Ah 19Ah CCPR2L 1Bh PWM1CON 9Bh 11Bh 19Bh CCPR2H 1Ch ECCPAS 9Ch 11Ch 19Ch CCP2CON 1Dh PSTRCON 9Dh 11Dh 19Dh ADRESH 1Eh ADRESL 9Eh 11Eh 19Eh ADCON0 1Fh ADCON1 9Fh 11Fh 19Fh A0h 120h 1A0h 20h 通用 寄存器 32 字节 通用 寄存器 BFh C0h 96 字节 EFh 7Fh Bank 0 快速操作存储区 70h-7Fh Bank 1 F0h FFh 16Fh 快速操作存储区 70h-7Fh Bank 2 170h 17Fh 1EFh 快速操作存储区 70h-7Fh 1F0h 1FFh Bank 3 耒实现数据存储器单元,读为 0。 注 1: 非物理寄存器。 2008 Microchip Technology Inc. DS41291E_CN 第 23 页 PIC16F882/883/884/886/887 图 2-5: PIC16F883/PIC16F884 的特殊功能寄存器 间接寻址 TMR0 (1) 文件 文件 文件 地址 00h 地址 80h 地址 100h 01h 间接寻址 (1) OPTION_REG 101h 地址 180h 间接寻址 (1) OPTION_REG 181h 182h PCL 02h PCL 82h PCL 102h PCL STATUS 03h STATUS 83h STATUS 103h STATUS 183h FSR 04h FSR 84h FSR 104h FSR 184h PORTA 05h TRISA 85h WDTCON 105h SRCON 185h PORTB 06h TRISB 86h PORTB 106h TRISB 186h PORTC 07h TRISC 87h CM1CON0 107h BAUDCTL 187h PORTD(2) 08h TRISD(2) 88h CM2CON0 108h ANSEL 188h PORTE 09h TRISE 89h CM2CON1 109h ANSELH 189h PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh PIR1 0Ch PIE1 8Ch EEDATA 10Ch EECON1 18Ch PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2(1) 18Dh TMR1L 0Eh PCON 8Eh EEDATH 10Eh 保留 18Eh TMR1H 0Fh OSCCON 8Fh EEADRH 10Fh 保留 18Fh T1CON 10h OSCTUNE 90h 110h 190h TMR2 11h SSPCON2 91h 111h 191h T2CON 12h PR2 92h 112h 192h SSPBUF 13h SSPADD 93h 113h 193h SSPCON 14h SSPSTAT 94h 114h 194h CCPR1L 15h WPUB 95h 115h 195h CCPR1H 16h IOCB 96h 116h 196h CCP1CON 17h VRCON 97h 117h 197h RCSTA 18h TXSTA 98h 118h 198h TXREG 19h SPBRG 99h 119h 199h RCREG 1Ah SPBRGH 9Ah 11Ah 19Ah CCPR2L 1Bh PWM1CON 9Bh 11Bh 19Bh CCPR2H 1Ch ECCPAS 9Ch 11Ch 19Ch CCP2CON 1Dh PSTRCON 9Dh 11Dh 19Dh ADRESH 1Eh ADRESL 9Eh 11Eh 19Eh ADCON0 1Fh ADCON1 9Fh 11Fh 19Fh A0h 120h 1A0h 20h 通用 寄存器 通用 寄存器 通用 寄存器 80 字节 80 字节 96 字节 EFh 7Fh Bank 0 注 81h 间接寻址 (1) TMR0 文件 快速操作存储区 70h-7Fh Bank 1 F0h FFh 16Fh 快速操作存储区 70h-7Fh Bank 2 170h 17Fh 1EFh 快速操作存储区 70h-7Fh 1F0h 1FFh Bank 3 未实现的数据存储单元,读为 0。 1: 非物理寄存器。 2: 仅 PIC16F884。 DS41291E_CN 第24 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 2-6: PIC16F886/PIC16F887 的特殊功能寄存器 文件 文件 文件 间接寻址 (1) 地址 00h 间接寻址 (1) 地址 80h 间接寻址 (1) 地址 100h 间接寻址 (1) 地址 180h TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h 182h PCL 02h PCL 82h PCL 102h PCL STATUS 03h STATUS 83h STATUS 103h STATUS 183h FSR 04h FSR 84h FSR 104h FSR 184h PORTA 05h TRISA 85h WDTCON 105h SRCON 185h PORTB 06h TRISB 86h PORTB 106h TRISB 186h PORTC 07h TRISC 87h CM1CON0 107h BAUDCTL 187h PORTD(2) 08h TRISD(2) 88h CM2CON0 108h ANSEL 188h PORTE 09h TRISE 89h CM2CON1 109h ANSELH 189h PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh PIR1 0Ch PIE1 8Ch EEDATA 10Ch EECON1 18Ch PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2(1) 18Dh TMR1L 0Eh PCON 8Eh EEDATH 10Eh 保留 18Eh TMR1H 0Fh OSCCON 8Fh EEADRH 10Fh 保留 18Fh T1CON 10h OSCTUNE 90h 110h 190h TMR2 11h SSPCON2 91h 111h 191h T2CON 12h PR2 92h 112h 192h SSPBUF 13h SSPADD 93h 113h 193h SSPCON 14h SSPSTAT 94h 114h 194h CCPR1L 15h WPUB 95h 115h 195h CCPR1H 16h IOCB 96h CCP1CON 17h VRCON 97h RCSTA 18h TXSTA 98h TXREG 19h SPBRG 99h 116h 通用 寄存器 117h 16 字节 119h 196h 通用 寄存器 197h 16 字节 199h 118h 198h RCREG 1Ah SPBRGH 9Ah 11Ah 19Ah CCPR2L 1Bh PWM1CON 9Bh 11Bh 19Bh CCPR2H 1Ch ECCPAS 9Ch 11Ch 19Ch CCP2CON 1Dh PSTRCON 9Dh 11Dh 19Dh ADRESH 1Eh ADRESL 9Eh 11Eh 19Eh ADCON0 1Fh ADCON1 9Fh 11Fh 19Fh A0h 120h 1A0h 20h 3Fh 通用寄存器 96 字节 通用 寄存器 通用 寄存器 40h 80 字节 通用寄存器 80 字节 80 字节 6Fh EFh 16Fh 70h F0h 170h 7Fh Bank 0 注 文件 快速操作存储区 70h-7Fh Bank 1 FFh 快速操作存储区 70h-7Fh Bank 2 17Fh 1EFh 快速操作存储区 70h-7Fh 1F0h 1FFh Bank 3 未实现的数据存储单元,读为 0。 1: 非物理寄存器。 2: 仅 PIC16F887。 2008 Microchip Technology Inc. DS41291E_CN 第 25 页 PIC16F882/883/884/886/887 表 2-1: 地址 PIC16F882/883/884/886/887 特殊功能寄存器汇总 (BANK 0) 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 页 Bank 0 00h INDF 寻址该单元会使用 FSR 的内容寻址数据存储器 (不是物理寄存器) xxxx xxxx 37,217 01h TMR0 Timer0 模块寄存器 xxxx xxxx 73,217 02h PCL 程序计数器的低字节 0000 0000 37,217 03h STATUS 0001 1xxx 29,217 IRP RP1 RP0 TO PD Z DC C 04h FSR xxxx xxxx 37,217 05h PORTA(3) RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA 0 xxxx xxxx 39,217 06h PORTB(3) RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB 0 xxxx xxxx 48,217 07h PORTC(3) RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx 53,217 08h PORTD(3,4) RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 xxxx xxxx 57,217 09h PORTE(3) — — — — RE3 RE2(4) RE1(4) RE0(4) ---- xxxx 59,217 ---0 0000 37,217 T0IF INTF RBIF(1) 0000 000x 31,217 间接数据存储器地址指针 0Ah PCLATH — — — 0Bh INTCON GIE PEIE T0IE 0Ch PIR1 — ADIF 0Dh PIR2 OSFIF C2IF 0Eh TMR1L 0Fh TMR1H 10h T1CON 11h TMR2 12h T2CON 13h SSPBUF 14h SSPCON(2) 程序计数器高 5 位的写缓冲器 INTE RBIE RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 34,217 C1IF EEIF BCLIF ULPWUIF — CCP2IF 0000 00-0 35,217 16 位 TMR1 寄存器低字节的保持寄存器 xxxx xxxx 76,217 16 位 TMR1 寄存器高字节的保持寄存器 xxxx xxxx 76,217 0000 0000 79,217 0000 0000 81,217 82,217 T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON Timer2 模块寄存器 — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 xxxx xxxx 183,217 CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 181,217 同步串行端口接收缓冲器 / 发送寄存器 WCOL SSPOV SSPEN 15h CCPR1L 捕捉 / 比较 /PWM 寄存器 1 的低字节 (LSB) xxxx xxxx 126,217 16h CCPR1H 捕捉 / 比较 /PWM 寄存器 1 的高字节 (MSB) xxxx xxxx 126,217 17h CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 124,217 18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 161,217 19h TXREG EUSART 发送数据寄存器 0000 0000 153,217 1Ah RCREG EUSART 接收数据寄存器 0000 0000 158,217 1Bh CCPR2L 捕捉 / 比较 /PWM 寄存器 2 的低字节 (LSB) xxxx xxxx 126,217 捕捉 / 比较 /PWM 寄存器 2 的高字节 (MSB) xxxx xxxx 126,218 --00 0000 125,218 1Ch CCPR2H 1Dh CCP2CON 1Eh ADRESH 1Fh ADCON0 图注: 注 1: 2: 3: 4: — — DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 A/D 结果寄存器的高字节 ADCS1 ADCS0 CHS3 CHS2 CHS1 CHS0 GO/DONE ADON xxxx xxxx 99,218 0000 0000 104,218 - = 未实现单元 (读为 0), u = 不变, x = 未知, q = 取值视具体情况而定,阴影 = 未实现 MCLR 和 WDT 复位不会对数据锁存器中先前的值产生影响。 RBIF 位将在复位时清零,但如果存在不匹配,它将再次置 1。 当 SSPCON 寄存器中的 SSPM<3:0> 位 = 1001 时,任何对 SSPADD SFR 地址的读或写操作都通过 SSPMSK 寄存器进行。更多详细 信息请参见寄存器 13-3 和 13-4。 具有模拟功能并由 ANSEL 和 ANSELH 寄存器控制的端口引脚将在复位后立即读为 0,即使数据锁存器未定义 (POR)或不变 (其他 复位)时也是如此。 仅 PIC16F884/PIC16F887。 DS41291E_CN 第26 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 2-2: 地址 PIC16F882/883/884/886/887 特殊功能寄存器汇总 (BANK 1) 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PS1 PS0 POR 和 BOR 时的值 页 xxxx xxxx 37,217 1111 1111 30,218 Bank 1 80h INDF 81h OPTION_REG 82h PCL 83h STATUS 84h FSR 85h TRISA 寻址该地址单元会使用 FSR 的内容寻址数据存储器 (不是物理寄存器) RBPU INTEDG T0CS T0SE PSA PS2 程序计数器 (PC)的低字节 IRP RP1 TRISA6 37,217 29,217 RP0 TO PD Z DC C 0001 1xxx xxxx xxxx 37,217 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 39,218 间接数据存储器地址指针 TRISA7 0000 0000 86h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 48,218 87h TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 53,218 88h TRISD(3) TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 1111 1111 57,218 89h TRISE — — — — TRISE3 8Ah PCLATH — — — 8Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF(1) 0000 000x 31,217 8Ch PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 32,218 8Dh PIE2 OSFIE C2IE C1IE EEIE BCLIE ULPWUIE — CCP2IE 0000 00-0 33,218 8Eh PCON — — ULPWUE SBOREN — — POR BOR --01 --qq 36,218 8Fh OSCCON - IRCF2 IRCF1 IRCF0 OSTS HTS LTS SCS -110 q000 62,218 TRISE2(3) TRISE1(3) TRISE0(3) 程序计数器高 5 位的写缓冲器 ---- 1111 59,218 ---0 0000 37,217 90h OSCTUNE — — — TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 66,218 91h SSPCON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000 181,218 92h PR2 93h SSPADD(2) 93h SSPMSK(2) MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 94h SSPSTAT SMP CKE D/A P S R/W UA 95h WPUB WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 96h IOCB IOCB7 IOCB6 IOCB5 IOCB4 IOCB3 IOCB2 1111 1111 81,218 0000 0000 189,218 MSK0 1111 1111 189,218 BF 0000 0000 189,218 WPUB1 WPUB0 1111 1111 49,218 IOCB1 IOCB0 0000 0000 49,218 Timer2 周期寄存器 同步串行端口 (I2C 模式)地址寄存器 97h VRCON VREN VROE VRR VRSS VR3 VR2 VR1 VR0 0000 0000 97,218 98h TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 0000 0010 160,218 99h SPBRG BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0 0000 0000 163,218 9Ah SPBRGH BRG15 BRG14 BRG13 BRG12 BRG11 BRG10 BRG9 BRG8 0000 0000 163,218 9Bh PWM1CON PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 0000 0000 145,218 9Ch ECCPAS ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 0000 0000 142,218 9Dh PSTRCON — — — STRSYNC STRD STRC STRB STRA ---0 0001 146,218 9Eh ADRESL 9Fh ADCON1 VCFG1 VCFG0 — — — — 图注: 注 1: 2: 3: A/D 结果寄存器的低字节 ADFM — xxxx xxxx 99,218 0-00 ---- 105,218 - = 未实现单元 (读为 0), u = 不变, x = 未知, q = 取值视具体情况而定, 阴影 = 未实现 MCLR 和 WDT 复位不会对数据锁存器中先前的值产生影响。 RBIF 位将在复位时清零,但如果存在不匹配,它将再次置 1。 仅当 SSPCON 寄存器的 SSPM<3:0> 位 = 1001 时才可访问。 仅 PIC16F884/PIC16F887。 2008 Microchip Technology Inc. DS41291E_CN 第 27 页 PIC16F882/883/884/886/887 表 2-3: 地址 PIC16F882/883/884/886/887 特殊功能寄存器汇总 (BANK 2) Bit 7 名称 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 页 Bank 2 100h INDF 寻址该地址单元会使用 FSR 的内容寻址数据存储器 (不是物理寄存器) xxxx xxxx 37,217 101h TMR0 Timer0 模块寄存器 xxxx xxxx 73,217 102h PCL 程序计数器 (PC)的低字节 0000 0000 37,217 103h STATUS 29,217 104h FSR 105h WDTCON 106h PORTB RB7 RB6 107h CM1CON0 C1ON C1OUT 108h CM2CON0 C2ON C2OUT 109h CM2CON1 MC1OUT MC2OUT IRP RP1 RP0 TO PD Z DC C 0001 1xxx xxxx xxxx 37,217 — WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN ---0 1000 225,218 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx 48,217 C1OE C1POL — C1R C1CH1 C1CH0 0000 -000 88,218 C2OE C2POL — C2R C2CH1 C2CH0 0000 -000 89,218 C1RSEL C2RSEL — — T1GSS C2SYNC 0000 --10 91,219 ---0 0000 37,217 间接数据存储器地址指针 — — 10Ah PCLATH — — — 10Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF(1) 0000 000x 31,217 10Ch EEDATA EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 EEDAT1 EEDAT0 0000 0000 112,219 程序计数器高 5 位的写缓冲器 10Dh EEADR EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0 0000 0000 112,219 10Eh EEDATH — — EEDATH5 EEDATH4 EEDATH3 EEDATH2 EEDATH1 EEDATH0 --00 0000 112,219 10Fh EEADRH — — — EEADRH4(2) EEADRH3 EEADRH2 EEADRH1 EEADRH0 ---- 0000 112,219 - = 未实现单元 (读为 0), u = 不变, x = 未知, q = 取值视条件而定,阴影 = 未实现 MCLR 和 WDT 复位不会对数据锁存器中先前的值产生影响。 RBIF 位将在复位时清零,但如果存在不匹配,它将再次置 1。 仅 PIC16F886/PIC16F887。 图注: 注 1: 2: 表 2-4: 地址 PIC16F882/883/884/886/887 特殊功能寄存器汇总 (BANK 3) Bit 7 名称 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 页 xxxx xxxx 37,217 30,218 Bank 3 180h INDF 181h OPTION_REG 寻址该地址单元会使用 FSR 的内容寻址数据存储器 (不是物理寄存器) 182h PCL 183h STATUS RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 0000 0000 37,217 RP0 TO PD Z DC C 0001 1xxx 29,217 xxxx xxxx 37,217 0000 00-0 93,219 程序计数器 (PC)的低字节 184h FSR 185h SRCON 186h TRISB 187h BAUDCTL 188h ANSEL 189h ANSELH IRP RP1 间接数据存储器地址指针 SR1 SR0 C1SEN C2REN PULSS PULSR — FVREN TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 48,218 ABDOVF RCIDL — SCKP BRG16 — WUE ABDEN 01-0 0-00 162,219 ANS7(2) ANS6(2) ANS5(2) ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 40,219 — — ANS13 ANS12 ANS11 ANS10 ANS9 ANS8 --11 1111 99,219 ---0 0000 37,217 18Ah PCLATH — — — 18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF(1) 0000 000x 31,217 18Ch EECON1 EEPGD — — — WRERR WREN WR RD x--- x000 113,219 18Dh EECON2 ---- ---- 111,219 图注: 注 1: 2: 程序计数器高 5 位的写缓冲器 EEPROM 控制寄存器 2 (不是物理寄存器) - = 未实现单元 (读为 0), u = 不变, x = 未知, q = 取值视具体情况而定, 阴影 = 未实现 MCLR 和 WDT 复位不会对数据锁存器中先前的值产生影响。 RBIF 位将在复位时清零,但如果存在不匹配,它将再次置 1。 仅 PIC16F886/PIC16F887。 DS41291E_CN 第28 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 2.2.2.1 例如, CLRF STATUS 会清零高 3 位,并将 Z 位置 1。 这样 STATUS 的值将为 000u u1uu(其中 u = 不变)。 状态寄存器 STATUS 寄存器如寄存器 2-1 所示,包含: 因此,建议仅使用 BCF、 BSF、 SWAPF 和 MOVWF 指令 来改变 STATUS 寄存器,因为这些指令不会影响任何状 态位。对于其他不影响状态位的指令,请参见第 15.0节 “指令集综述”。 • ALU 的算术状态 • 复位状态 • 数据存储器 (GPR 和 SFR)的存储区选择位 与其他寄存器一样,STATUS 寄存器可以是任何指令的 目标寄存器。如果一条影响 Z、 DC 或 C 位的指令以 STATUS 寄存器作为目标寄存器,则不能写这 3 个状态 位。这些位根据器件逻辑被置 1 或清零。而且也不能写 TO 和 PD 位。因此将 STATUS 作为目标寄存器的指令 可能无法得到预期的结果。 寄存器 2-1: R/W-0 IRP 注 1: 在减法运算中, C 和 DC 分别作为借位 (Borrow)和半借位 (Digit orrow)位。 STATUS:状态寄存器 R/W-0 RP1 R/W-0 RP0 R-1 R-1 PD TO R/W-x R/W-x R/W-x Z DC(1) C(1) bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 IRP:寄存器存储区选择位 (用于间接寻址) 1 = Bank 2 和 Bank 3 (100h-1FFh) 0 = Bank 0 和 Bank 1 (00h-FFh) bit 6-5 RP<1: 0>:寄存器存储区选择位 (用于直接寻址) 00 = Bank 0 (00h-7Fh) 01 = Bank 1 (80h-FFh) 10 = Bank 2 (100h-17Fh) 11 = Bank 3 (180h-1FFh) bit 4 TO:超时位 1 = 上电或是执行了 CLRWDT 指令或 SLEEP 指令 0 = 发生了 WDT 超时 bit 3 PD:掉电位 1 = 上电或执行了 CLRWDT 指令 0 = 执行了 SLEEP 指令 bit 2 Z:结果为零位 1 = 算术或逻辑运算的结果为零 0 = 算术或逻辑运算的结果不为零 bit 1 DC:半进位 / 借位位 (ADDWF、 ADDLW、 SUBLW 或 SUBWF 指令) (1) 1 = 发生了结果的第 4 低位向高位进位 0 = 结果的第 4 低位没有向高位进位 bit 0 C:进位 / 借位位 (ADDWF、 ADDLW、 SUBLW 或 SUBWF 指令) (1) 1 = 结果的最高位发生了进位 0 = 结果的最高位没有发生进位 注 x = 未知 1: 对于借位,极性是相反的。减法是通过加上第二个操作数的二进制补码实现的。对于移位指令 (RRF 或 RLF),此位的值来自源寄存器的最高位或最低位。 2008 Microchip Technology Inc. DS41291E_CN 第 29 页 PIC16F882/883/884/886/887 2.2.2.2 OPTION 寄存器 如寄存器2-2所示,OPTION寄存器是可读写的寄存器, 包括各种控制位用于配置: 注: • Timer0/WDT 预分频器 • 外部 INT 中断 • Timer0 要使 Timer0 获取 1:1 的预分频比配置,可 通过将选项寄存器的 PSA 位置 1 将预分频 器分配给 WDT。请参见第 6.3 节“Timer1 预分频器”。 • PORTB 上的弱上拉 寄存器 2-2: OPTION_REG: 选项寄存器 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 RBPU: PORTB 上拉使能位 1 = 禁止 PORTB 上拉 0 = 由端口的各个锁存值使能 PORTB 上拉 bit 6 INTEDG:触发中断的边沿选择位 1 = INT 引脚上升沿触发中断 0 = INT 引脚下降沿触发中断 bit 5 T0CS:Timer0 时钟源选择位 1 = T0CKI 引脚上的跳变沿 0 = 内部指令周期时钟 (FOSC/4) bit 4 T0SE: Timer0 时钟源边沿选择位 1 = 在 T0CKI 引脚信号从高电平跳变到低电平时递增 0 = 在 T0CKI 引脚信号从低电平跳变到高电平时递增 bit 3 PSA:预分频器分配位 1 = 预分频器分配给 WDT 0 = 预分频器分配给 Timer0 模块 bit 2-0 PS<2:0>:预分频比选择位 位值 000 001 010 011 100 101 110 111 DS41291E_CN 第30 页 x = 未知 Timer0 分频比 WDT 分频比 1:2 1:4 1:8 1 : 16 1 : 32 1 : 64 1 : 128 1 : 256 1:1 1:2 1:4 1:8 1 : 16 1 : 32 1 : 64 1 : 128 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 2.2.2.3 IINTCON 寄存器 如寄存器 2-3 所示,INTCON 寄存器是可读写的寄存器, 包含 TMR0 寄存器溢出、 PORTB 端口变化和外部 INT 引脚中断等的允许和标志位。 寄存器 2-3: R/W-0 GIE 注: 当有中断条件产生时,无论对应的中断允 许位或 (INTCON 寄存器中的)全局允许 位 GIE 的状态如何,中断标志位都将置 1。 用户软件应在允许一个中断之前,确保先 将相应的中断标志位清零。 INTCON:中断控制寄存器 R/W-0 PEIE R/W-0 T0IE R/W-0 R/W-0 INTE RBIE(1) R/W-0 T0IF (2) R/W-0 R/W-x INTF RBIF bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7 GIE:全局中断允许位 1 = 允许所有未被屏蔽的中断 0 = 禁止所有中断 bit 6 PEIE:外设中断允许位 1 = 允许所有未被屏蔽的外设中断 0 = 禁止所有外设中断 bit 5 T0IE:Timer0 溢出中断允许位 1 = 允许 Timer0 中断 0 = 禁止 Timer0 中断 bit 4 INTE:INT 外部中断允许位 1 = 允许 INT 外部中断 0 = 禁止 INT 外部中断 bit 3 RBIE:PORTB 电平变化中断允许位 (1) 1 = 允许 PORTB 电平变化中断 0 = 禁止 PORTB 电平变化中断 bit 2 T0IF:Timer0 溢出中断标志位 (2) 1 = TMR0 寄存器已经溢出 (必须由软件清零) 0 = TMR0 寄存器未发生溢出 bit 1 INTF:INT 外部中断标志位 1 = 发生 INT 外部中断 (必须由软件清零) 0 = 未发生 INT 外部中断 bit 0 RBIF:PORTB 电平变化中断标志位 1 = PORB 端口中至少有一个引脚的电平状态发生了改变 (必须由软件清零) 0 = 没有一个 PORTB 通用 I/O 引脚的状态发生了改变 注 1: IOCB 寄存器也必须使能。 2: T0IF 位在 Timer0 计满归 0 时置 1。复位不会使 Timer0 发生改变,应在将 T0IF 位清零前对其进行初始 化。 2008 Microchip Technology Inc. DS41291E_CN 第 31 页 PIC16F882/883/884/886/887 2.2.2.4 PIE1 寄存器 PIE1 寄存器包含各中断允许位,如寄存器 2-4 所示。 寄存器 2-4: 注: 在 允 许 任 何 外 设 中 断 前,必 须 先 将 INTCON 寄存器的 PEIE 位置 1。 PIE1:外设中断允许寄存器 1 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 未实现:读为 0 bit 6 ADIE:A/D 转换器 (ADC)中断允许位 1 = 允许 ADC 中断 0 = 禁止 ADC 中断 bit 5 RCIE:EUSART 接收中断允许位 1 = 允许 EUSART 接收中断 0 = 禁止 EUSART 接收中断 bit 4 TXIE:EUSART 发送中断允许位 1 = 允许 EUSART 发送中断 0 = 禁止 EUSART 发送中断 bit 3 SSPIE:主同步串行端口 (MSSP)中断允许位 1 = 允许 MSSP 中断 0 = 禁止 MSSP 中断 bit 2 CCP1IE:CCP1 中断允许位 1 = 允许 CCP1 中断 0 = 禁止 CCP1 中断 bit 1 TMR2IE:Timer2 与 PR2 匹配中断允许位 1 = 允许 TMR2 与 PR2 匹配中断 0 = 禁止 TMR2 与 PR2 匹配中断 bit 0 TMR1IE:Timer1 溢出中断允许位 1 = 允许 Timer1 溢出中断 0 = 禁止 Timer1 溢出中断 DS41291E_CN 第32 页 x = 未知 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 2.2.2.5 PIE2 寄存器 PIE2 寄存器包含各中断允许位,如寄存器 2-5 所示。 寄存器 2-5: 注: 在 允 许 任 何 外 设 中 断 前,必 须 先 将 INTCON 寄存器的 PEIE 位置 1。 PIE2:外设中断允许寄存器 2 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 OSFIE C2IE C1IE EEIE BCLIE ULPWUIE — CCP2IE bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 OSFIE:振荡器故障中断允许位 1 = 允许振荡器故障中断 0 = 禁止振荡器故障中断 bit 6 C2IE:比较器 C2 中断允许位 1 = 允许比较器 C2 中断 0 = 禁止比较器 C2 中断 bit 5 C1IE:比较器 C1 中断允许位 1 = 允许比较器 C1 中断 0 = 禁止比较器 C1 中断 bit 4 EEIE:EEPROM 写操作中断允许位 1 = 允许 EEPROM 写操作中断 0 = 禁止 EEPROM 写操作中断 bit 3 BCLIE:总线冲突中断允许位 1 = 允许总线冲突中断 0 = 禁止总线冲突中断 bit 2 ULPWUIE:超低功耗唤醒中断允许位 1 = 允许超低功耗唤醒中断 0 = 禁止超低功耗唤醒中断 bit 1 未实现:读为 0 bit 0 CCP2IE:CCP2 中断允许位 1 = 允许 CCP2 中断 0 = 禁止 CCP2 中断 2008 Microchip Technology Inc. x = 未知 DS41291E_CN 第 33 页 PIC16F882/883/884/886/887 2.2.2.6 PIR1 寄存器 PIR1 寄存器包括各中断标志位,如寄存器 2-6 所示。 寄存器 2-6: 注: 当有中断条件产生时,无论对应的中断允 许位或 (INTCON 寄存器中的)全局允许 位 GIE 的状态如何,中断标志位都将置 1。 用户软件应在允许一个中断之前,确保先 将相应的中断标志位清零。 PIR1:外设中断请求寄存器 1 U-0 R/W-0 R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 - ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7 未实现:读为 0 bit 6 ADIF:A/D 转换器中断标志位 1 = A/D 转换完成 (必须由软件清零) 0 = A/D 转换未完成或尚未启动 bit 5 RCIF:EUSART 接收中断标志位 1 = EUSART 接收缓冲器满 (通过读 RCREG 清零) 0 = EUSART 接收缓冲器空 bit 4 TXIF:EUSART 发送中断标志位 1 = EUSART 发送缓冲器满 (通过写 TXREG 清零) 0 = EUSART 发送缓冲器空 bit 3 SSPIF:主同步串行端口 (MSSP)中断标志位 1 = 产生了 MSSP 中断条件,在从中断服务程序返回前必须由软件清零。使该位置 1 的条件有: SPI 发生发送 / 接收 I2 C 从动 / 主控 发生发送 / 接收 I2 C 主控 发生的启动条件由 MSSP 模块完成 发生的停止条件由 MSSP 模块完成 发生的重新启动条件由 MSSP 模块完成 发生的应答条件由 MSSP 模块完成 当 MSSP 模块空闲时发生启动条件 (多主机系统) 当 MSSP 模块空闲时发生停止条件 (多主机系统) 0 = 没有产生 MSSP 中断条件 bit 2 CCP1IF:CCP1 中断标志位 捕捉模式: 1 = 发生了 TMR1 寄存器的捕捉 (必须由软件清零) 0 = 没有发生 TMR1 寄存器的捕捉 比较模式: 1 = 发生了 TMR1 寄存器的比较匹配 (必须由软件清零) 0 = 没有发生 TMR1 寄存器的比较匹配 PWM 模式: 在此模式下未用 bit 1 TMR2IF:Timer2 与 PR2 匹配中断标志位 1 = 发生了 Timer2 与 PR2 匹配 (必须由软件清零) 0 = Timer2 与 PR2 不匹配 bit 0 TMR1IF:Timer1 溢出中断标志位 1 = TMR1 寄存器溢出 (必须由软件清零) 0 = TMR1 寄存器未溢出 DS41291E_CN 第34 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 2.2.2.7 PIR2 寄存器 PIR2 寄存器包括各中断标志位,如寄存器 2-7 所示。 寄存器 2-7: 注: 当有中断条件产生时,无论对应的中断允 许位或 (INTCON 寄存器中的)全局允许 位 GIE 的状态如何,中断标志位都将置 1。 用户软件应在允许一个中断之前,确保先 将相应的中断标志位清零。 PIR2:外设中断请求寄存器 2 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 OSFIF C2IF C1IF EEIF BCLIF ULPWUIF — CCP2IF bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7 OSFIF:振荡器故障中断标志位 1 = 系统振荡器发生故障,时钟输入更改为 INTOSC (必须由软件清零) 0 = 系统时钟正常工作 bit 6 C2IF:比较器 C2 中断标志位 1 = 比较器输出 (C2OUT 位)发生了改变 (必须由软件清零) 0 = 比较器输出 (C2OUT 位)不变 bit 5 C1IF:比较器 C1 中断标志位 1 = 比较器输出 (C1OUT 位)发生了改变 (必须由软件清零) 0 = 比较器输出 (C1OUT 位)不变 bit 4 EEIF:EE 写操作中断标志位 1 = 写操作完成 (必须由软件清零) 0 = 写操作未完成或尚未启动 bit 3 BCLIF:总线冲突中断标志位 1 = 当配置为 I2C 主控模式时, MSSP 中发生了总线冲突 0 = 未发生总线冲突 bit 2 ULPWUIF:超低功耗唤醒中断标志位 1 = 产生了唤醒条件 (必须由软件清零) 0 = 未产生唤醒条件 bit 1 未实现:读为 0 bit 0 CCP2IF:CCP2 中断标志位 捕捉模式: 1 = 发生了 TMR1 寄存器的捕捉 (必须由软件清零) 0 = 未发生 TMR1 寄存器的捕捉 比较模式: 1 = 发生了 TMR1 寄存器的比较匹配 (必须由软件清零) 0 = 未发生 TMR1 寄存器的比较匹配 PWM 模式: 在此模式下未用 2008 Microchip Technology Inc. DS41291E_CN 第 35 页 PIC16F882/883/884/886/887 2.2.2.8 PCON 寄存器 电源控制 (PCON)寄存器 (见寄存器 2-8)包含区别 以下内容的标志位: • • • • 上电复位 (POR) 欠压复位 (BOR) 看门狗定时器复位 (WDT) 外部 MCLR 复位 PCON 寄存器还控制超低功耗唤醒和软件使能 BOR。 寄存器 2-8: PCON: 电源控制寄存器 U-0 U-0 R/W-0 R/W-1 U-0 U-0 R/W-0 R/W-x — — ULPWUE SBOREN(1) — — POR BOR bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-6 未实现:读为 0 bit 5 ULPWUE:超低功耗唤醒使能位 1 = 使能超低功能唤醒 0 = 禁止超低功能唤醒 bit 4 SBOREN:软件 BOR 使能位 (1) 1 = BOR 使能 0 = BOR 禁止 bit 3-2 未实现:读为 0 bit 1 POR:上电复位状态位 1 = 未发生上电复位 0 = 已发生上电复位 (必须在发生上电复位后用软件置 1) bit 0 BOR:欠压复位状态位 1 = 未发生欠压复位 0 = 已发生欠压复位 (必须在发生欠压复位后用软件置 1) 注 x = 未知 1: 当配置字寄存器 1 中的 BOREN<1:0> = 01 时,该位用来控制 BOR。 DS41291E_CN 第36 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 2.3 PCL 和 PCLATH 2.3.2 程序计数器 (PC)为 13 位宽。它的低字节来自可读写 的 PCL 寄存器。高字节 (PC<12:8>)不可直接读写, 但可通过 PCLATH 寄存器间接进行。任何复位时都将清 零 PC 的高位。图 2-7 给出了装载 PC 的两种情况。图 中 上 方 的 示 例 给 出 了 在 写 PCL (PCLATH<4:0> → PCH)时装载 PC 的方式。图中下方的示例给出了在执 行 CALL 或 GOTO 指令期间装载 PC(PCLATH<4:3> → PCH)的方式。 图 2-7: 在不同情况下装载 PC PCH PCL 12 8 7 0 PC PIC16F882/883/884/886/887 具有一个 8 级深 x 13 位 宽的硬件堆栈 (见图 2-2 和图 2-3)。该堆栈既不占用 程序存储空间也不占用数据存储空间,并且栈指针不能 读写。当执行 CALL 指令或由于中断导致程序跳转 时,PC 的值会被压入(PUSH)堆栈。当执行 RETURN、 RETLW 或 RETFIE 指令时,PC 值从堆栈弹出(POP)。 PCLATH 的值不受压栈或出栈操作的影响。 堆栈的工作如循环缓冲器。也就是说,压栈 8 次之后, 第9次压栈时进栈的数据将覆盖第1次压栈存储的数据。 而第 10 次压栈时进栈的数据将覆盖第 2 次压栈存储的 数据,依此类推。 注 ALU 结果 PCLATH PCH 12 11 10 PCL 8 2.4 0 7 PC GOTO 或 CALL 2 PCLATH<4:3> 11 操作码 <10:0> PCLATH 2.3.1 修改 PCL 执行任何将PCL寄存器作为目标寄存器的指令会导致程 序计数器的 PC<12:8> 位 (PCH)被 PCLATH 寄存器 的 内 容 替 代,从 而 允 许 通 过 将 所 需 的 高 5 位写入 PCLATH 寄存器来更改整个程序计数器。当将低 8 位写 入 PCL 寄存器时,程序计数器的全部 13 位将更改为 PCLATH 寄存器所包含的值和正在写入到 PCL 寄存器 的值。 通过向程序计数器添加一个偏移量 (ADDWF PCL)实 现计算 GOTO。通过修改 PCL 寄存器跳转到查找表或程 序跳转表 (计算 GOTO)时需要小心。假设将 PCLATH 设置为表的起始地址,如果表长度大于 255 条指令或存 储器地址的低 8 位在表的中间从 0xFF 溢出到 0x00 ,则 当存储器地址从表起始地址变化至表内目标单元时,每 发生一次溢出 PCLATH 都必须递增 1。 1: 不存在用于表示堆栈上溢或堆栈下溢条件 的状态位。 2: 不存在称为 PUSH 或 POP 的指令或助记 符。这两个操作是在执行 CALL、RETURN、 RETLW 和 RETFIE 指令或跳转到中断向量 地址时发生的。 8 PCLATH<4:0> 5 将 PCL 作为 目标寄存器 的指令 堆栈 间接寻址、 INDF 和 FSR 寄存器 INDF 寄存器不是物理寄存器。对 INDF 寄存器进行寻址 将导致间接寻址。 使用 INDF 寄存器可以实现间接寻址。任何使用 INDF 寄存器的指令实际上访问的是由文件选择寄存器 (FSR)所指向的寄存器。间接读INDF本身会返回00h。 而使用间接寻址对 INDF 寄存器进行写操作将导致执行 一个空操作 (虽然可能会影响状态位)。有效的 9 位地 址是通过连接 8 位 FSR 寄存器和 STATUS 寄存器中的 IRP 位获得的,如图 2-8 所示。 例 2-1 给出了使用间接寻址清零 RAM 地址单元 20h-2Fh 的简单程序。 例 2-1: 间接寻址 MOVLW MOVWF NEXT CLRF INCF BTFSS GOTO CONTINUE 0x20 FSR INDF FSR FSR,4 NEXT ;initialize pointer ;to RAM ;clear INDF register ;inc pointer ;all done? ;no clear next ;yes continue 欲知更多信息请参见应用笔记 AN556,“Implementing a Table Read”(DS00556) 2008 Microchip Technology Inc. DS41291E_CN 第 37 页 PIC16F882/883/884/886/887 图 2-8: 直接 / 间接寻址 PIC16F882/883/884/886/887 直接寻址 RP1 RP0 间接寻址 来自操作码 6 存储区选择 0 IRP 7 存储区选择 单元选择 00 01 10 文件选择寄存器 0 单元选择 11 00h 180h 数据 存储器 7Fh 1FFh Bank 0 注: Bank 1 Bank 2 Bank 3 如需了解存储器映射的详细信息,请参见图 2-2 和图 2-3。 DS41291E_CN 第38 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 3.0 I/O 端口 最多有 35 个通用 I/O 引脚可供使用。根据所使能的外 设,有些或所有引脚可能不能用作通用 I/O 引脚。一般 来说,与使能的外设相关的引脚可能不用作通用 I/O 引 脚。 3.1 PORTA 和 TRISA 寄存器 的引脚电平,修改读到的值,然后再将改好的值写入端 口数据锁存器。 即使在 PORTA 引脚用作模拟输入时, TRISA 寄存器 (寄存器 3-2)仍然控制 PORTA 引脚的方向。当将 PORTA 引脚用作模拟输入时,用户必须确保 TRISA 寄 存器中的位保持为置 1 状态。 配置为模拟输入的 I/O 引 脚总是读为 0。 注: PORTA 是 8 位宽的双向端口。它所对应的数据方向寄存 器是 TRISA (寄存器 3-2)。将 TRISA 的一个位置 1 (= 1)可以将相应的 PORTA 引脚配置为输入 (即,禁 止输出驱动器)。清零 TRISA 的一个位(= 0)可将相应 的 PORTA 引脚配置为输出 (即,将输出锁存器的内容 输出到所选择的引脚) 。例 3-1 说明了如何初始化 PORTA。 例 3-1: BANKSEL CLRF BANKSEL CLRF BANKSEL MOVLW MOVWF 读 PORTA 寄存器 (寄存器 3-1)读的是引脚的状态而 写该寄存器将会写入端口锁存器。所有写操作都是读- 修改-写操作。因此,写一个端口就意味着先读该端口 寄存器 3-1: 必须初始化ANSEL寄存器以将模拟通道配 置为数字输入。配置为模拟输入的引脚将 读为 0。 初始化 PORTA PORTA PORTA ANSEL ANSEL TRISA 0Ch TRISA ; ;Init PORTA ; ;digital I/O ; ;Set RA<3:2> as inputs ;and set RA<5:4,1:0> ;as outputs PORTA:PORTA 寄存器 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 x = 未知 RA<7:0>:PORTA I/O 引脚位 1 = 端口引脚电平 > VIH 0 = 端口引脚电平 < VIL 寄存器 3-2: TRISA:PORTA 三态寄存器 R/W-1(1) R/W-1(1) R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 注 x = 未知 TRISA<7:0>: PORTA 三态控制位 1 = PORTA 引脚被配置为输入 (三态) 0 = PORTA 引脚被配置为输出 1: TRISA<7:6> 在 XT、 HS 和 LP 振荡器模式下总是读为 1。 2008 Microchip Technology Inc. DS41291E_CN 第39 页 PIC16F882/883/884/886/887 3.2 该引脚的其他功能 RA0 还具有超低功耗唤醒选项。以下三节将说明这些功 能。 3.2.1 ANSEL 寄存器 ANSEL 寄存器 (寄存器 3-3)用于将 I/O 引脚的输入模 式配置为模拟模式。将 ANSEL 中适当的位置 1 将导致 对相应引脚的所有数字读操作返回 0,并使引脚的模拟 功能正常工作。 ANSEL 位的状态对数字输出功能没有影响。 TRIS 清 零且 ANSEL 置 1 的引脚仍作为数字输出,但输入模式 将成 为 模 拟 模 式。这 会 导 致 在 受 影 响 的 端 口 上 执行 读-修改-写操作时产生不可预计的结果。 寄存器 3-3: ANSEL: 模拟选择寄存器 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 ANS7(2) ANS6(2) ANS5(2) ANS4 ANS3 ANS2 ANS1 ANS0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 注 x = 未知 ANS<7:0>:模拟选择位 分别选择引脚 AN<7:0> 的模拟或数字功能。 1 = 模拟输入。引脚被分配为模拟输入 (1)。 0 = 数字 I/O。引脚被分配给端口或特殊功能。 1: 将引脚设置为模拟输入将自动禁止数字输入电路、弱上拉电路和电平变化中断 (如果有的话)。相应的 TRIS 位必须置 1 以将引脚设置为输入模式,从而允许从外部控制引脚电压。 2: 在 PIC16F883/886 上未实现。 DS41291E_CN 第 40 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 3.2.2 超低功耗唤醒 RA0 上的超低功耗唤醒 (ULPWU)允许缓慢下降的电 压在 RA0 上的电平发生变化时产生中断而不消耗过多的 电流。通过将 PCON 寄存器中的 ULPWUE 位置 1 选择 此模式。这将产生一个小的灌电流 (current sink),可 用于将 RA0 上的电容放电。 执行以下步骤以使用这一功能: a) b) c) d) e) 通过将 RA0 引脚配置为输出 (= 1)给 RA0 上 的电容充电。 将 RA0 配置为输入。 将 PIE2 中的 ULPWUIE 位置 1 以允许中断。 将 PCON 寄存器中的 ULPWUE 位置 1 开始给电 容放电。 执行 SLEEP 指令。 当 RA0 上的电压下降到 VIL 以下时,将产生中断使器件 唤醒并执行下一条指令。如果 INTCON 寄存器中的 GIE 位置 1,器件将调用中断向量 (0004h)。 此功能提供了一种周期性地将器件从休眠状态唤醒的 低功耗技术。超时时间取决于对 RA0 上的 RC 电路放 电的时间。有关如何初始化超低功耗唤醒模块,请参见 例 3-2。 2008 Microchip Technology Inc. 在 RA0 和外部电容间串联一个电阻可为引脚 RA0/AN0/ULPWU/C12IN0 提供过电流保护并允许通 过软件对超时进行校准 (见图 3-1)。可使用一个定时 器测量电容的充电时间和放电时间。 随后可调节充电 时间以提供所需的中断延时。此技术可补偿温度、电压 和元件精度造成的影响。超低功耗唤醒外设也可被配 置为简单的可编程低电压检测或温度传感器。 注: 更多信息,请参考应用笔记 (DS00879)。 例 3-2: 超低功耗唤醒初始化 BANKSEL BSF BANKSEL BCF BANKSEL BCF CALL BANKSEL BCF BANKSEL BSF BSF BSF MOVLW MOVWF SLEEP PORTA PORTA,0 ANSEL ANSEL,0 TRISA TRISA,0 CapDelay PIR2 PIR2,ULPWUIF PCON PCON,ULPWUE TRISA,0 PIE2, ULPWUIE B’11000000’ INTCON AN879 ; ;Set RA0 data latch ; ;RA0 to digital I/O ; ;Output high to ;charge capacitor ; ;Clear flag ;Enable ULP Wake-up ;RA0 to input ;Enable interrupt ;Enable peripheral ;interrupt ;Wait for IOC DS41291E_CN 第41 页 PIC16F882/883/884/886/887 3.2.3 3.2.3.1 引脚说明和框图 每个 PORTA 引脚都与其他功能复用。这里将简要地描述 这些引脚和与它们复用的功能。 欲知有关各个功能 (如 比较器和 A/D 转换器)的具体信息,请参见此数据手册 中的相应章节。 图 3-1: RA0/AN0/ULPWU/C12IN0- 图 3-1 显示了此引脚的框图。此引脚可被配置为以下功 能之一: • • • • 通用 I/O ADC 的一个模拟输入通道 比较器 C1 或 C2 的负模拟输入 用于超低功耗唤醒的模拟输入 RA0 的框图 VDD 数据总线 D 写 PORTA Q I/O 引脚 CK Q VSS + D 写 TRISA VTRG Q CK Q IULP 0 读 TRISA 模拟 (1) 输入模式 1 VSS ULPWUE 读 PORTA 到比较器 到 A/D 转换器 注 DS41291E_CN 第 42 页 1: ANSEL 决定模拟输入模式。 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 3.2.3.2 3.2.3.3 RA1/AN1/C12IN1- RA2/AN2/VREF-/CVREF/C2IN+ 图 3-2 显示了此引脚的框图。此引脚可被配置为以下功 能之一: 图 3-3 显示了此引脚的框图。此引脚可被配置为以下功 能之一: • 通用 I/O • ADC 的模拟输入 • 比较器 C1 或 C2 的负模拟输入 • • • • • 图 3-2: RA1 的框图 数据总线 图 3-3: D 写 PORTA CK VDD Q CK VROE Q D Q Q 写 PORTA 输入模式 读 TRISA CK 到比较器 VDD Q D 写 TRISA CK Q Q VSS 模拟 (1) 输入模式 读 TRISA 读 PORTA CVREF Q I/O 引脚 VSS 模拟 (1) 读 PORTA 至 A/D 转换器 注 RA2 的框图 数据总线 I/O 引脚 D 写 TRISA 通用 I/O ADC 的模拟输入 ADC 和 CVREF 的负参考电压输入 比较器的参考电压输出 比较器 C2 的正模拟输入 到比较器(正输入) 1: ANSEL 决定模拟输入模式。 到比较器(VREF-) 到 A/D 转换器(VREF-) 到 A/D 转换器(模拟通道) 注 2008 Microchip Technology Inc. 1: ANSEL 决定模拟输入模式。 DS41291E_CN 第43 页 PIC16F882/883/884/886/887 3.2.3.4 3.2.3.5 RA3/AN3/VREF+/C1IN+ RA4/T0CKI/C1OUT 图 3-4 显示了此引脚的框图。此引脚可被配置为以下功 能之一: 图 3-5 显示了此引脚的框图。此引脚可被配置为以下功 能之一: • • • • • 通用 I/O • Timer0 的时钟输入 • 比较器 C1 的数字输出 通用输入 ADC 的模拟输入 ADC 和 CVREF 的正参考电压输入 比较器 C1 的正模拟输入 图 3-4: 图 3-5: RA3 的框图 RA4 的框图 数据总线 C1OUT 使能 数据总线 D D 写 PORTA CK VDD Q 写 PORTA 写 TRISA CK Q Q Q 写 TRISA Q 1 CK I/O 引脚 Q Q VSS VSS 模拟 (1) 输入模式 读 TRISA C1OUT 0 D I/O 引脚 D CK VDD Q 读 TRISA 读 PORTA 读 PORTA 到比较器(正输入) 到 Timer0 到比较器(VREF+) 至 A/D 转换器(VREF+) 到 A/D 转换器(模拟通道) 注 1: ANSEL 决定模拟输入模式。 DS41291E_CN 第 44 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 3.2.3.6 3.2.3.7 RA5/AN4/SS/C2OUT RA6/OSC2/CLKOUT 图 3-6 显示了此引脚的框图。此引脚可被配置为以下功 能之一: 图 3-7 显示了此引脚的框图。此引脚可被配置为以下功 能之一: • • • • • 通用 I/O • 晶振 / 谐振器连接 • 时钟输出 通用 I/O ADC 的模拟输入 从动选择输入 比较器 C2 的数字输出 图 3-6: 图 3-7: RA6 的框图 RA5 的框图 振荡 电路 数据总线 数据总线 D 写 PORTA OSC2 C2OUT 使能 CK Q C2OUT D 1 0 D 写 TRISA CK CLKOUT 使能 VDD Q I/O 引脚 写 PORTA CK Q 0 模拟 (1) 输入模式 读 TRISA 写 TRISA CK Q Q 读 TRISA 读 PORTA I/O 引脚 CLKOUT 使能 D VSS 1 Q Q Q FOSC/4 VDD VSS INTOSCIO/ EXTRCIO/EC(1) CLKOUT 使能 读 PORTA 到 SS 输入引脚 到 A/D 转换器 注 1: ANSEL 决定模拟输入模式。 2008 Microchip Technology Inc. 注 1:带有 I/O 选项。 DS41291E_CN 第45 页 PIC16F882/883/884/886/887 3.2.3.8 RA7/OSC1/CLKIN 图 3-8 显示了此引脚的框图。此引脚可被配置为以下功 能之一: • 通用 I/O • 晶振 / 谐振器连接 • 时钟输入 图 3-8: RA7 的框图 振荡 电路 数据总线 OSC1 写 PORTA VDD Q D CK Q I/O 引脚 Q D 写 TRISA CK Q VSS INTOSC 模式 读 TRISA 读 PORTA CLKIN 表 3-1: 与 PORTA 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他复位 时的值 ADCS1 ADCS0 CHS3 CHS2 CHS1 CHS0 GO/DONE ADON 0000 0000 0000 0000 ANSEL ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111 CM1CON0 C1ON C1OUT C1OE C1POL — C1R C1CH1 C1CH0 0000 -000 0000 -000 CM2CON0 C2ON C2OUT C2OE C2POL — C2R C2CH1 C2CH0 0000 -000 0000 -000 C1RSEL C2RSEL — — T1GSS C2SYNC 0000 --10 0000 --10 ADCON0 CM2CON1 MC1OUT MC2OUT PCON OPTION_REG PORTA SSPCON TRISA 图注: — — — — POR BOR --01 --qq --0u --uu RBPU INTEDG ULPWUE SBOREN T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111 RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 xxxx xxxx uuuu uuuu WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000 TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111 x = 未知,u = 不变, q = 取值视具体情况而定, - = 未实现单元 (读为 0)。 PORTA 不使用阴影单元。 DS41291E_CN 第 46 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 3.3 PORTB 和 TRISB 寄存器 PORTB 是一个 8 位宽的双向端口。对应的数据方向寄 存器为 TRISB(寄存器 3-6)。将 TRISB 中的某个位置 1(= 1)可以使对应的 PORTB 引脚作为输入引脚(即 将相应的输出驱动器置于高阻态)。将 TRISB 中的某个 位清零 (= 0)将使对应的 PORTB 引脚作为输出引脚 (即将输出锁存器的内容从选定引脚输出)。例 3-3 给出 了初始化 PORTB 的过程。 读 PORTB 寄存器 (寄存器 3-5)读的是引脚的状态而 写该寄存器将会写入端口锁存器。所有写操作都是读- 修改-写操作。因此,写一个端口就意味着先读该端口 的引脚电平,修改读到的值,然后再将改好的值写入端 口数据锁存器。 即使在 PORTB 引脚用作模拟输入时, TRISB 寄存器 (寄存器 3-6)仍 然 控 制 PORTB 引 脚 的 方 向。当将 PORTB 引脚用作模拟输入时,用户必须确保 TRISB 寄 存器中的位保持为置 1 状态。 配置为模拟输入的 I/O 引 脚总是读为 0。例 3-3 给出了初始化 PORTB 的过程。 例 3-3: BANKSEL CLRF BANKSEL MOVLW MOVWF 注: 3.4 初始化 PORTB PORTB ; PORTB ;Init PORTB TRISB ; B‘11110000’ ;Set RB<7:4> as inputs ;and RB<3:0> as outputs TRISB ; 必须初始化 ANSELH 寄存器以将模拟通道 配置为数字输入。配置为模拟输入的引脚 将读为 0。 PORTB 引脚的其他功能 该系列器件的 PORTB 引脚 RB<7:0> 具有电平变化中断 选项和弱上拉选项。以下三节将说明 PORTB 引脚的这 些功能。 该系列器件中的每个 PORTB 引脚都具有电平变化中断 选项和弱上拉选项。 2008 Microchip Technology Inc. 3.4.1 ANSELH 寄存器 ANSELH 寄存器 (寄存器 3-4)用于将 I/O 引脚的输入 模式配置为模拟模式。将 ANSELH 中适当的位置 1 将 导致对相应引脚的所有数字读操作返回 0,并使引脚的 模拟功能正常工作。 ANSELH 位的状态对数字输出功能没有影响。TRIS 清 零且 ANSELH 置 1 的引脚仍作为数字输出,但输入模 式将成为模拟模式。这会导致在受影响的端口上执行 读-修改-写操作产生不可预计的结果。 3.4.2 弱上拉 每个 PORTB 引脚都有可单独配置的内部弱上拉。 控制 位WPUB<7:0>使能或禁止每个弱上拉(见寄存器3-7)。 当将端口引脚配置为输出时,其弱上拉会自动切断。在 上电复位时,弱上拉由 OPTION_REG 寄存器的 RBPU 位禁止。 3.4.3 电平变化中断 所有的 PORTB 引脚都可以被单独配置为电平变化中断 引脚。 控制位 IOCB<7:4> 允许或禁止每个引脚的该中 断功能。请参见寄存器 3-8。上电复位时禁止引脚的电 平变化中断功能。 对于已允许电平变化中断的引脚,则将该引脚上的值与 上次读 PORTB 时锁存的旧值进行比较。 将与上次读操 作 “不 匹 配”的 输 出 一 起 进 行 逻 辑 或 运 算,以 将 INTCON 寄存器中的 PORTB 电平变化中断标志位 (RBIF)置 1。 该中断可将器件从休眠中唤醒。 用户可在中断服务程序 中通过以下方式清除中断: a) b) 对 PORTB 进行读或写操作。这将结束引脚电平 的不匹配状态。 将标志位 RBIF 清零。 不匹配状态会不断将 RBIF 标志位置 1。而读或写 PORTB 将结束不匹配状态,并且允许将 RBIF 标志位清 零。锁存器将保持最后一次读取的值不受 MCLR 和欠压 复位的影响。 在这些复位之后,如果不匹配仍然存在, RBIF 标志位将继续置 1。 注: 如果在执行读取操作时 (Q2 周期的开始) I/O 引脚的电平发生变化,则 RBIF 中断标志 位不会被置 1。 此外,由于对端口的读或写 影响到该端口的所有位,所以在电平变化中 断模式下使用多个引脚的时候必须特别小 心。 在处理一个引脚电平变化的时候可能 不会注意到另一个引脚上的电平变化。 DS41291E_CN 第47 页 PIC16F882/883/884/886/887 寄存器 3-4: ANSELH:模拟选择寄存器的高字节 U-0 U-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 — — ANS13 ANS12 ANS11 ANS10 ANS9 ANS8 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-6 未实现:读为 0 bit 5-0 ANS<13:8>:模拟选择位 分别选择引脚 AN<13:8> 的模拟或数字功能。 1 = 模拟输入。引脚被分配为模拟输入 (1)。 0 = 数字 I/O。引脚被分配给端口或特殊功能。 x = 未知 1: 将引脚设置为模拟输入将自动禁止数字输入电路、弱上拉电路和电平变化中断 (如果可有的话)。相应的 TRIS 位必须置 1 以将引脚设置为输入模式,从而允许从外部控制引脚电压。 注 寄存器 3-5: PORTB:PORTB 寄存器 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 x = 未知 RA<7:0>: PORTB I/O 引脚位 1 = 端口引脚电平 > VIH 0 = 端口引脚电平 < VIL 寄存器 3-6: TRISB:PORTB 三态寄存器 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 x = 未知 TRISB<7:0>:PORTB 三态控制位 1 = PORTB 引脚被配置为输入 (三态) 0 = PORTB 引脚被配置为输出 DS41291E_CN 第 48 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 寄存器 3-7: WPUB:弱上拉 PORTB 寄存器 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 WPUB1 WPUB0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 注 x = 未知 WPUB<7:0>:弱上拉寄存器位 1 = 使能上拉 0 = 禁止上拉 1: 要单独使能任一个上拉, OPTION 寄存器的全局 RBPU 位必须清零。 2: 如果引脚被配置为输出,将自动禁止弱上拉。 寄存器 3-8: IOCB: PORTB 电平变化中断寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 IOCB7 IOCB6 IOCB5 IOCB4 IOCB3 IOCB2 IOCB1 IOCB0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 x = 未知 IOCB<7:0>:PORTB 的电平变化中断控制位 1 = 允许电平变化中断 0 = 禁止电平变化中断 2008 Microchip Technology Inc. DS41291E_CN 第49 页 PIC16F882/883/884/886/887 3.4.4 图 3-9: 引脚说明和框图 每个 PORTB 引脚都与其他功能复用。这里将简要地描述 这些引脚和与它们复用的功能。 欲知有关各个功能 (如 SSP、I2C 或中断)的具体信息,请参见此数据手册中的 相应章节。 3.4.4.1 • 通用 I/O • ADC 的模拟输入 • 由外部边沿触发的中断 3.4.4.3 模拟 (1) 输入模式 VDD Q 弱上拉 RBPU CCP1OUT 使能 CK Q VDD CCP1OUT 1 Q 0 RB1/AN10/P1C(1)/C12IN3- 1: 只有 PIC16F882/883/886 上有 P1C。 RB2/AN8/P1B (1) 图 3-9 显示了此引脚的框图。 此引脚可被配置为以下功 能之一: • 通用 I/O • ADC 的模拟输入 • PWM 输出 (1) 注 Q 读 WPUB 写 PORTB 通用 I/O ADC 的模拟输入 PWM 输出 (1) 比较器 C1 或 C2 的模拟输入 注 CK D 图 3-9 显示了此引脚的框图。 此引脚可被配置为以下功 能之一: • • • • 写 WPUB D RB0/AN12/INT 图 3-9 显示了此引脚的框图。 此引脚可被配置为以下功 能之一: 3.4.4.2 数据总线 RB<3:0> 的框图 I/O 引脚 D 写 TRISB CK Q Q VSS 模拟 (1) 输入模式 读 TRISB 读 PORTB D 写 IOCB Q Q CK Q D EN 读 IOCB Q Q3 D EN 电平变化中断 1: 只有 PIC16F882/883/886 上有 P1B。 读 PORTB 3.4.4.4 RB3/AN9/PGM/C12IN2- 图 3-9 显示了此引脚的框图。此引脚可被配置为以下功 能之一: RB0/INT RB3/PGM • • • • 到 A/D 转换器 通用 I/O ADC 的模拟输入 低电压在线串行编程使能引脚 比较器 C1 或 C2 的模拟输入 DS41291E_CN 第 50 页 到比较器(RB1 和 RB3) 注 1: ANSELH 决定模拟输入模式。 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 RB4/AN11/P1D(1) 3.4.4.5 3.4.4.7 RB6/ICSPCLK 图 3-10 显示了此引脚的框图。 此引脚可被配置为以下 功能之一: 图 3-10 显示了此引脚的框图。此引脚可被配置为以下功 能之一: • 通用 I/O • ADC 的模拟输入 • PWM 输出 (1) • 通用 I/O • 在线串行编程时钟 注 3.4.4.8 1: P1D 仅在 PIC16F882/883/886 上可用。 3.4.4.6 RB7/ICSPDAT 图 3-10 显示了此引脚的框图。此引脚可被配置为以下功 能之一: RB5/AN13/T1G • 通用 I/O • 在线串行编程数据 图 3-10 显示了此引脚的框图。 此引脚可被配置为以下 功能之一: • 通用 I/O • ADC 的模拟输入 • Timer1 门控输入 图 3-10: RB<7:4> 的框图 模拟 (1) 输入模式 数据总线 D 写 WPUB CK VDD Q 弱上拉 Q RBPU 读 WPUB CCP1OUT 使能 VDD D 写 PORTB CK CCP1OUT Q 0 11 Q I/O 引脚 00 1 D 写 TRISB CK Q VSS Q 读 TRISB 模拟 (1) 输入模式 读 PORTB D CK 写 IOCB Q Q ICSP™(2) D Q EN 读 IOCB Q Q3 D EN 电平变化中断 RD PORTB 到 Timer1 T1G(3) 到 A/D 转换器 到 ICSPCLK (RB6)和 ICSPDAT (RB7) 仅在 PIC16F882/883/886 上可用。 注 1: 2: 3: ANSELH 确定模拟输入模式。 仅施加在 RB<7:6> 引脚上。 仅施加在 RB5 引脚上。 2008 Microchip Technology Inc. DS41291E_CN 第51 页 PIC16F882/883/884/886/887 表 3-2: 与 PORTB 相关的寄存器汇总 Bit 7 名称 ANSELH CCP1CON Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 — — ANS13 P1M1 P1M0 DC1B1 ANS12 ANS11 ANS10 ANS9 ANS8 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 MC1OUT MC2OUT C1RSEL C2RSEL CM2CON1 IOCB INTCON OPTION_REG — — T1GSS C2SYNC POR 和 BOR 时的值 所有其他复位 时的值 --11 1111 --11 1111 0000 0000 0000 0000 0000 --10 0000 --10 IOCB7 IOCB6 IOCB5 IOCB4 IOCB3 IOCB2 IOCB1 IOCB0 0000 0000 0000 0000 GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111 PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 1111 WPUB WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 WPUB1 WPUB0 1111 1111 1111 1111 图注: x = 未知, u = 不变, - = 未实现 (读为 0)。 PORTB 不使用阴影单元。 DS41291E_CN 第 52 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 3.5 PORTC 和 TRISC 寄存器 PORTC 是一个 8 位宽的双向端口。对应的数据方向寄 存器为 TRISC (寄存器 3-10)。将 TRISC 中的某个位 置 1 (= 1)可以使对应的 PORTC 引脚作为输入引脚 (即将相应的输出驱动器置于高阻态)。将 TRISC 中的 某个位清零 (= 0)将使对应的 PORTB 引脚作为输出 引脚(即将输出锁存器的内容从选定引脚输出)。例 3-4 给出了初始化 PORTC 的过程。 读 PORTC 寄存器 (寄存器 3-9)读的是引脚的状态而 写该寄存器将会写入端口锁存器。所有写操作都是读- 修改-写操作。因此,写一个端口就意味着先读该端口 的引脚电平,修改读到的值,然后再将改好的值写入端 口数据锁存器。 寄存器 3-9: 即使在 PORTC 引脚用作模拟输入时, TRISC 寄存器 (寄存器 3-10)仍然控制 PORTC 引脚的方向。当将 PORTC 引脚用作模拟输入时,用户必须确保 TRISC 寄 存器中的位保持为置 1 状态。 配置为模拟输入的 I/O 引 脚总是读为 0。 例 3-4: BANKSEL CLRF BANKSEL MOVLW MOVWF 初始化 PORTC PORTC PORTC TRISC B‘00001100’ TRISC ; ;Init PORTC ; ;Set RC<3:2> as inputs ;and set RC<7:4,1:0> ;as outputs PORTC:PORTC 寄存器 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 x = 未知 RC<7:0>:PORTC 通用 I/O 引脚位 1 = 端口引脚电平 > VIH 0 = 端口引脚电平 < VIL 寄存器 3-10: TRISC: PORTC 三态寄存器 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1(1) R/W-1(1) TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 注 x = 未知 TRISC<7:0>:PORTC 三态控制位 1 = PORTC 引脚被配置为输入 (三态) 0 = PORTC 引脚被配置为输出 1: TRISC<1:0> 在 LP 振荡器模式下总是读为 1。 2008 Microchip Technology Inc. DS41291E_CN 第53 页 PIC16F882/883/884/886/887 3.5.1 3.5.3 RC0/T1OSO/T1CKI RC2/P1A/CCP1 图 3-11 显示了此引脚的框图。此引脚可被配置为以下功 能之一: 图 3-13 显示了此引脚的框图。此引脚可被配置为以下功 能之一: • 通用 I/O • Timer1 的振荡器输出 • Timer1 的时钟输入 • 通用 I/O • PWM 输出 • 比较器 C1 的捕捉输入和比较输出 图 3-11: 图 3-13: RC0 的框图 数据总线 T1OSCEN D 写 PORTC CK 数据总线 Timer1 振荡电路 CCP1CON VDD Q D 写 PORTC Q 写 TRISC CK Q D 写 TRISC VSS CK VDD Q Q CCP1/P1A 0 1 1 0 I/O 引脚 Q D RC2 的框图 读 TRISC 读 TRISC 读 PORTC 读 PORTC CK I/O 引脚 Q Q VSS 到增强型 CCP1 到 Timer1 的时钟输入 3.5.2 RC1/T1OSI/CCP2 图 3-12 显示了此引脚的框图。此引脚可被配置为以下功 能之一: • 通用 I/O • Timer1 的振荡器输入 • 比较器 C2 的捕捉输入和比较 /PWM 输出 图 3-12: RC1 的框图 T1OSCEN T1OSI 数据总线 Timer1 振荡电路 CCP2CON D 写 PORTC CK VDD Q CCP2 Q 0 1 0 1 D 写 TRISC CK I/O 引脚 Q Q VSS T1OSCEN 读 TRISC 读 PORTC 到 CCP2 DS41291E_CN 第 54 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 3.5.4 3.5.6 RC3/SCK/SCL RC5/SDO 图 3-14 显示了此引脚的框图。 此引脚 可被配置为以下 功能之一: 图 3-16 显示了此引脚的框图。此引脚可被配置为以下功 能之一: • • • • 通用 I/O • 串行数据输出 通用 I/O SPI 时钟 I2C™ 时钟 图 3-14: 图 3-16: 端口 /SDO 选择 数据总线 数据总线 SSPEN D 写 PORTC RC5 的框图 RC3 的框图 Q CK Q SCK SDO VDD D Q 0 1 1 0 VDD 0 1 写 PORTC 1 0 I/O 引脚 CK Q I/O 引脚 D 写 TRISC Q D CK Q 写 TRISC VSS 读 TRISC 读 TRISC 读 PORTC 读 PORTC Q CK Q VSS 到 SSPSR 3.5.5 RC4/SDI/SDA 图 3-15 显示了此引脚的框图。此引脚 可被配置为以下功 能之一: • 通用 I/O • SPI 数据 I/O • I2C 数据 I/O 图 3-15: RC4 的框图 数据总线 SSPEN D 写 PORTC Q SDI/SDA VDD 0 1 CK Q 1 0 I/O 引脚 D 写 TRISC Q CK Q VSS 读 TRISC 读 PORTC 到 SSPSR 2008 Microchip Technology Inc. DS41291E_CN 第55 页 PIC16F882/883/884/886/887 3.5.7 3.5.8 RC6/TX/CK RC7/RX/DT 图 3-17 显示了此引脚的框图。此引脚可被配置为以下功 能之一: 图 3-18 显示了此引脚的框图。此引脚可被配置为以下功 能之一: • 通用 I/O • 异步串行输出 • 同步时钟 I/O • 通用 I/O • 异步串行输入 • 同步串行数据 I/O 图 3-17: 图 3-18: RC6 的框图 RC7 的框图 SPEN SPEN TXEN SYNC 数据总线 SYNC EUSART CK 1 0 数据总线 D EUSART TX 0 1 D 写 PORTC 写 PORTC VDD Q CK Q VDD 0 1 1 0 I/O 引脚 D 1 0 写 TRISC EUSART DT 0 1 CK Q D Q 写 TRISC I/O 引脚 Q CK Q Q CK Q VSS 读 TRISC VSS 读 PORTC 读 TRISC EUSART RX/DT 读 PORTC 表 3-3: 与 PORTC 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他复位 时的值 CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 0000 0000 CCP2CON — — DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000 --00 0000 RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu PORTC — — — STRSYNC STRD STRC STRB STRA ---0 0001 ---0 0001 RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 0000 0000 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111 PSTRCON T1CON T1GINV TMR1GE T1CKPS1 TRISC TRISC7 图注: x = 未知,u = 不变, - = 未实现单元 (读为 0)。 PORTC 不使用阴影单元。 TRISC6 DS41291E_CN 第 56 页 TRISC5 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 3.6 PORTD 和 TRISD 寄存器 (1) PORTD 是一个 8 位宽的双向端口。对应的数据方向 寄存器为 TRISD (寄存器 3-12)。将 TRISD 中的某个 位置 1(= 1)可以使对应的 PORTD 引脚作为输入引脚 (即将相应的输出驱动器置于高阻态)。将 TRISD 中的 某个位清零 (= 0)将使对应的 PORTD 引脚作为输出 引脚(即将输出锁存器的内容从选定引脚输出)。例 3-5 给出了初始化 PORTD 的过程。 读 PORTD 寄存器(寄存器 3-11)读的是引脚的状态而 写该寄存器将会写入端口锁存器。所有写操作都是读- 修改-写操作。因此,写一个端口就意味着先读该端口 的引脚电平,修改读到的值,然后再将改好的值写入端 口数据锁存器。 即使在 PORTD 引脚用作模拟输入时, TRISD 寄存器 (寄存器 3-12)仍然控制 PORTD 引脚的方向。当将 PORTD 引脚用作模拟输入时,用户必须确保 TRISD 寄 存器中的位保持为置 1 状态。 配置为模拟输入的 I/O 引 脚总是读为 0。 例 3-5: BANKSEL CLRF BANKSEL MOVLW MOVWF 初始化 PORTD PORTD PORTD TRISD B‘00001100’ TRISD ; ;Init PORTD ; ;Set RD<3:2> as inputs ;and set RD<7:4,1:0> ;as outputs 1: 只有 PIC16F884/887 上有 PORTD 。 注 寄存器 3-11: PORTD: PORTD 寄存器 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 x = 未知 RD<7:0>: PORTD 通用 I/O 引脚位 1 = 端口引脚电平 > VIH 0 = 端口引脚电平 < VIL 寄存器 3-12: TRISD: PORTD 三态寄存器 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 x = 未知 TRISD<7:0>:PORTD 三态控制位 1 = PORTD 引脚被配置为输入 (三态) 0 = PORTD 引脚被配置为输出 2008 Microchip Technology Inc. DS41291E_CN 第57 页 PIC16F882/883/884/886/887 3.6.1 RD<4:0> 图 3-19 显示了这些引脚的框图。这些引脚被配置为通用 I/O。 图 3-19: 图 3-20 显示了此引脚的框图。此引脚可被配置为以下功 能之一: • 通用 I/O • PWM 输出 只有 PIC16F884/887 上有 RD<4:0>。 注: RD6/P1C(1) 3.6.3 RD<4:0> 的框图 1: 只有 PIC16F884/887 上有 RD6/P1C。 PIC16F882/883/886 上的此功能请参见 RB1/AN10/P1C/C12IN3。 注 数据总线 D 写 PORTD VDD Q CK 图 3-20 显示了此引脚的框图。此引脚 可被配置为以下功 能之一: Q I/O 引脚 D 写 TRISD Q CK RD7/P1D(1) 3.6.4 Q • 通用 I/O • PWM 输出 1: 只有 PIC16F884/887 上有 RD7/P1D。 PIC16F882/883/886 上的此功能请参见 RB4/AN11/P1D。 注 VSS 读 TRISD 图 3-20: 读 PORTD RD<7:5> 的框图 数据总线 D RD5/P1B(1) 3.6.2 写 PORTD 图 3-20 显示了此引脚的框图。此引脚可被配置为以下功 能之一: VDD Q CK Q CCP1 0 1 1 0 • 通用 I/O • PWM 输出 注 PSTRCON D 写 TRISD 1: 只有 PIC16F884/887 上有 RD5/P1B。 PIC16F882/883/886 上的此功能请参见 RB2/AN8/P1B。 I/O 引脚 Q CK Q VSS 读 TRISD 读 PORTD 表 3-4: 与 PORTD 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他复位 时的值 PORTD RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 xxxx xxxx uuuu uuuu PSTRCON TRISD 图注: — — — STRSYNC STRD STRC STRB STRA ---0 0001 ---0 0001 TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 1111 1111 1111 1111 x = 未知,u = 不变, - = 未实现单元 (读为 0)。 PORTD 不使用阴影单元。 DS41291E_CN 第 58 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 3.7 PORTE 和 TRISE 寄存器 (1) PORTE 是一个 4 位宽的双向端口。对应的数据方向 寄存器为 TRISE。将 TRISE 中的某个位置 1 (= 1)可 以使对应的 PORTE 引脚作为输入引脚(即将相应的输 出驱动器置于高阻态) 。将 TRISE 中的某个位清零 (= 0)将使对应的 PORTE 引脚作为输出引脚(即将输 出锁存器的内容从选定引脚输出)。 RE3 例外,它是只 能输入的引脚,其 TRIS 位将始终读为 1。例 3-6 给出了 初始化 PORTE 的过程。 读 PORTE 寄存器(寄存器 3-13)读的是引脚的状态而 写该寄存器将会写入端口锁存器。所有写操作都是读- 修改-写操作。因此,写一个端口就意味着先读该端口 的引脚电平,修改读到的值,然后再将改好的值写入端 口数据锁存器。当 MCLRE = 1 时, RE3 读为 0。 1: 只有 PIC16F884/887 上有 RE<2:0> 引脚。 注 寄存器 3-13: 即使在 PORTE 引脚用作模拟输入时, TRISE 寄存器 (寄存器 3-14)仍然控制 PORTE 引脚的方向。当将 PORTE 引脚用作模拟输入时,用户必须确保 TRISE 寄 存器中的位保持为置 1 状态。 配置为模拟输入的 I/O 引 脚总是读为 0。 注: 例 3-6: BANKSEL CLRF BANKSEL CLRF BCF BANKSEL MOVLW MOVWF 必须初始化ANSEL寄存器以将模拟通道配 置为数字输入。配置为模拟输入的引脚将 读为 0。 初始化 PORTE PORTE PORTE ANSEL ANSEL STATUS,RP1 TRISE B‘00001100’ TRISE ; ;Init PORTE ; ;digital I/O ;Bank 1 ; ;Set RE<3:2> as inputs ;and set RE<1:0> ;as outputs PORTE:PORTE 寄存器 U-0 U-0 U-0 U-0 R-x R/W-x R/W-x R/W-x — — — — RE3 RE2 RE1 RE0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-4 未实现:读为 0 bit 3-0 RD<3:0>: PORTE 通用 I/O 引脚位 1 = 端口引脚电平 > VIH 0 = 端口引脚电平 < VIL 寄存器 3-14: x = 未知 TRISE:PORTE 三态寄存器 U-0 U-0 — U-0 — — U-0 R-1(1) R/W-1 R/W-1 R/W-1 — TRISE3 TRISE2 TRISE1 TRISE0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-4 未实现:读为 0 bit 3-0 TRISE<3:0>:PORTE 三态控制位 1 = PORTE 引脚被配置为输入 (三态) 0 = PORTE 引脚被配置为输出 注 x = 未知 1: TRISE<3:0> 始终读为 1。 2008 Microchip Technology Inc. DS41291E_CN 第59 页 PIC16F882/883/884/886/887 RE0/AN5(1) 3.7.1 3.7.4 图 3-22 显示了此引脚的框图。此引脚可被配置为以下功 能之一: 此引脚可被配置为以下功能之一: • 通用 I/O • ADC 的模拟输入 注 • 通用输入 • 带有弱上拉的主复位 1: 只有 PIC16F884/887 上有 RE0/AN5。 图 3-22: RE1/AN6(1) 3.7.2 RE3/MCLR/VPP RE3 的框图 VDD 此引脚可被配置为以下功能之一: MCLRE • 通用 I/O • ADC 的模拟输入 注 数据总线 1: 只有 PIC16F884/887 上有 RE1/AN6。 3.7.3 RE2/AN7 (1) 注 输入 引脚 VSS MCLRE 读 PORTE • 通用 I/O • ADC 的模拟输入 MCLRE 复位 读 TRISE 此引脚可被配置为以下功能之一: 弱上拉 VSS 1: 只有 PIC16F884/887 上有 RE2/AN7。 图 3-21: RE<2:0> 的框图 数据总线 写 PORTE VDD Q D CK Q I/O 引脚 D 写 TRISE Q CK Q VSS 模拟 (1) 输入模式 读 TRISE 读 PORTE 到 A/D 转换器 注 1: ANSEL 决定模拟输入模式。 表 3-5: 与 PORTE 相关的寄存器汇总 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他复位 时的值 ANSEL ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111 PORTE — — — — RE3 RE2 RE1 RE0 ---- xxxx ---- uuuu — — — — TRISE3 TRISE2 TRISE1 TRISE0 ---- 1111 ---- 1111 名称 TRISE 图注: x = 未知, u = 不变,- = 未实现单元 (读为 0)。 PORTE 不使用阴影单元。 DS41291E_CN 第 60 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 4.0 4.1 振荡器模块 (带故障保护时钟监 视器) 可将振荡器模块配置为以下八种时钟模式之一。 概述 2. 3. 4. 5. 1. 振荡器模块具有多种时钟源和选择功能,从而使其得到 广泛应用,并可最大限度地提高性能和降低功耗。图 4-1 说明了振荡器模块的框图。 时钟源可以配置为由外部振荡器、石英晶体谐振器、陶 瓷谐振器以及阻容 (RC)电路提供。此外,系统时钟源 可以配置为由两个内部振荡器之一提供,并可以通过软 件选择速度。其他时钟功能包括: 6. 7. • 通过软件可以选择外部或内部系统时钟源。 • 双速时钟启动模式,使外部振荡器起振到代码执行 之间的延时达到最小。 • 故障保护时钟监视器 (Fail-Safe Clock Monitor, FSCM)旨在检测外部时钟源 (LP、 XT、 HS、 EC 或 RC 模式)的故障并切换到内部振荡器。 图 4-1: 8. EC——OSC2/CLKOUT 为 I/O 引脚的外部时钟 模式。 LP——32 kHz 低功耗晶振模式。 XT——中等增益晶振或陶瓷谐振器振荡模式。 HS——高增益晶振或陶瓷谐振器振荡模式。 RC —— 外 部 阻 容 (RC)振 荡 模 式,且 OSC2/CLKOUT输出频率为FOSC/4的时钟信号。 RCIO—— OSC2/CLKOUT 为 I/O 引脚的外部阻 容 (RC)振荡模式。 INTOSC——OSC2 输出频率为 FOSC/4 的时钟信 号而 OSC1/CLKIN 为 I/O 引脚的内部振荡器模 式。 INTOSCIO ——OSC1/CLKIN 和 OSC2/CLKOUT 作为 I/O 引脚的内部振荡器模式。 时钟源模式由配置字寄存器 1 (CONFIG1)中的 FOSC<2:0> 位配置。 内部时钟可以由两个振荡器产 生。HFINTOSC 是高频已校准的振荡器。LFINTOSC 是 低频未校准的振荡器。 PIC® MCU 时钟源简化框图 FOSC<2:0> (配置字寄存器 1) SCS<0> (OSCCON 寄存器) 外部振荡器 OSC2 休眠 MUX LP、XT、HS、RC、RCIO 和 EC OSC1 IRCF<2:0> (OSCCON 寄存器) 8 MHz 内部振荡器 4 MHz 系统时钟 (CPU 和外设) INTOSC 111 110 1 MHz 500 kHz 250 kHz 125 kHz LFINTOSC 31 kHz 31 kHz 101 100 011 MUX HFINTOSC 8 MHz 后分频器 2 MHz 010 001 000 上电延时定时器(PWRT) 看门狗定时器(WDT) 故障保护时钟监视器(FSCM) 2008 Microchip Technology Inc. DS41291E_CN 第61 页 PIC16F882/883/884/886/887 4.2 振荡器控制 振荡器控制 (OSCCON)寄存器 (图 4-1)控制系统时 钟和频率选择。 OSCCON 寄存器包含以下位: • 频率选择位 (IRCF) • 频率状态位 (HTS 和 LTS) • 系统时钟控制位 (OSTS 和 SCS) 寄存器 4-1: U-0 - OSCCON: 振荡器控制寄存器 R/W-1 R/W-1 IRCF2 IRCF1 R/W-0 IRCF0 R-1 OSTS (1) R-0 R-0 R/W-0 HTS LTS SCS bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 未实现:读为 0 bit 6-4 IRCF<2:0>:内部振荡器频率选择位 111 = 8 MHz 110 = 4 MHz (默认) 101 = 2 MHz 100 = 1 MHz 011 = 500 kHz 010 = 250 kHz 001 = 125 kHz 000 = 31 kHz (LFINTOSC) bit 3 OSTS:振荡器起振延时状态位 (1) 1 = 器件依靠由 CONFIG1 寄存器中的 FOSC<2:0> 定义的时钟源运行 0 = 器件依靠内部振荡器 (HFINTOSC 或 LFINTOSC)运行 bit 2 HTS:HFINTOSC 状态位 (高频——8 MHz 到 125 kHz) 1 = HFINTOSC 稳定 0 = HFINTOSC 不稳定 bit 1 LTS:LFINTOSC 稳定位 (低频——31 kHz) 1 = LFINTOSC 稳定 0 = LFINTOSC 不稳定 bit 0 SCS:系统时钟选择位 1 = 内部振荡器用作系统时钟 0 = 时钟源由 CONFIG1 寄存器中的 FOSC<2:0> 定义 注 x = 未知 1: 双速启动时如果选择了 LP、 XT 或 HS 振荡模式或者使能了故障保护模式会使该位复位为 0。 DS41291E_CN 第62 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 4.3 4.4 外部时钟模式 时钟源模式可以分为外部或内部两类。 4.4.1 振荡器起振定时器 (OST) • 外部时钟模式依赖外部电路作为时钟源。示例有振 荡器模块 (EC 模式)、石英晶体谐振器或陶瓷谐 振器 (LP、 XT 和 HS 模式)以及阻容 (RC)模 式电路。 • 振荡器模块内部包含了内部时钟源。振荡器模块有 两个内部振荡器:8 MHz 高频内部振荡器 (HFINTOSC)和 31 kHz 低频内部振荡器 (LFINTOSC)。 如果振荡器模块被配置为 LP、 XT 或 HS 模式,当发生 上电复位 (POR)且上电延时定时器 (PWRT)延时 已结束 (如果配置了此延时),或从休眠状态唤醒时, 振荡器起振定时器 (OST)将对 OSC1 引脚进行 1024 次振荡计数。 在这段时间内,程序计数器不递增计数, 并且程序执行暂停。OST 确保使用石英晶体谐振器或陶 瓷谐振器的振荡电路已起振并且为振荡器模块提供稳定 的系统时钟。在不同时钟源之间切换时需要一个延时以 使新的时钟稳定下来。表 4-1 显示了这些振荡器延时。 时钟源模式 可通过 OSCCON 寄存器的系统时钟选择 (SCS)位选 择外部或内部时钟源。更多信息请参见第 4.6 节“时钟 切换”。 表 4-1: 为了让外部振荡器起振和代码执行之间的延时缩到最 短,可以选择双速时钟启动模式(见第 4.7 节“双速时 钟启动模式”)。 振荡器延时示例 切换自 切换到 频率 振荡器延时 休眠 /POR LFINTOSC HFINTOSC 31 kHz 125 kHz 至 8 MHz 振荡器预热延时 (TWARM) 休眠 /POR EC 或 RC DC - 20 MHz 2 个周期 LFINTOSC (31 kHz) EC 或 RC DC - 20 MHz 各一个周期 休眠 /POR LP、 XT 或 HS HFINTOSC 32 kHz 至 20 MHz 1024 个时钟周期 (OST) 125 kHz 至 8 MHz 1 µs (大约) LFINTOSC (31 kHz) 4.4.2 EC 模式 外部时钟 (EC)模式将外部产生的逻辑电平作为系统 时 钟 源。 当 在 此 模 式 下 工 作 时,外 部 时 钟 源连接到 OSC1 输入引脚,而 OSC2 引脚用作通用 I/O 引脚。 图 4-2 显示了 EC 模式的引脚连接。 当选择 EC 模式时,振荡器起振定时器 (OST)被禁 止。 因此,在上电复位 (POR)后或从休眠状态唤醒 后,不会有延时操作。由于 PIC® MCU 的设计是全静态 的,停止外部时钟输入可以停止器件并同时保持所有数 据的完整性。外部时钟重新起振之后,器件将恢复工作 就像没有时间流逝一样。 2008 Microchip Technology Inc. 图 4-2: 外部时钟 (EC)模式的工作原理 OSC1/CLKIN 来自外部系 统的时钟 PIC® MCU I/O 注 OSC2/CLKOUT(1) 1: 备用引脚功能在第 1.0 节 “器件概述”中列 出。 DS41291E_CN 第63 页 PIC16F882/883/884/886/887 4.4.3 LP、 XT、 HS 模式 注 LP、XT 和 HS 模式支持在 OSC1 和 OSC2 引脚间连接 石英晶体谐振器或陶瓷谐振器 (图 4-3)。该模式选择 内部反相放大器的低、中等或高增益设置以支持多种谐 振器类型和速度。 1: 石英晶振的特性取决于类型、封装以及制 造商。 用户应该查阅制造商的数据手册以 获知规范和推荐的应用场合。 2: 请总是在应用期望的 VDD 和温度范围下验 证振荡器的性能。 LP 振荡模式选择内部反相放大器的最低增益设置。 LP 模式的电流消耗是三种模式中最低的。 此模式只用于驱 动 32.768 kHz 的调节音叉型 (fork type)晶振。 3: 要 获 取 振 荡 器 设 计 帮 助,请 参 见 以 下 Microchip 应用笔记: • AN826 “Crystal Oscillator Basics and Crystal Selection for rfPIC® and PIC® Devices”(DS00826) • AN849 “Basic PIC® Oscillator Design”(DS00849) • AN943 “Practical PIC® Oscillator Analysis and Design”(DS00943) • AN949 “Making Your Oscillator Work”(DS00949) XT 振荡模式选择内部反相放大器的中等增益设置。 XT 模式的电流消耗在三种模式中处于中等水平。此模式最 适合于驱动具有中等驱动电平规格的谐振器。 HS振荡模式选择内部反相放大器的最高增益设置。 HS 模式的电流消耗是三种模式中最高的。此模式最适合于 要求高电平驱动设置的谐振器。 图 4-3 和 4-4 分别显示了典型的石英晶体谐振器和陶瓷 谐振器电路。 图 4-3: 石英晶振的工作原理 (LP、 XT 或 HS 模式) 图 4-4: 陶瓷谐振器的工作原理 (XT 或 HS 模式) PIC® MCU PIC® MCU OSC1/CLKIN C1 到内部 逻辑 石英 晶振 C2 注 OSC1/CLKIN RS (1) RF(2) C1 休眠 到内部 逻辑 RP(3) RF(2) 休眠 OSC2/CLKOUT 1: 用低电平驱动的石英晶振可能需要一个串联电 阻 (RS)。 2: RF 的值随选定的振荡模式而变化 (通常介于 2 MΩ 和 10 MΩ 之间)。 C2 陶瓷 谐振器 注 RS (1) OSC2/CLKOUT 1: 用低电平驱动的陶瓷谐振器可能需要一个串联 电阻 (RS)。 2: RF 的值随选定的振荡模式而变化 (通常介于 2 MΩ 和 10 MΩ 之间)。 3: 要让陶瓷谐振器正确工作可能还需要一个并联 反馈电阻 (RP)。 DS41291E_CN 第64 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 4.4.4 4.5 外部 RC 模式 外部阻容 (RC)模式支持使用外部 RC 电路。当对时 钟精度要求不高时,外部 RC 模式可以让设计人员在选 择频率上有最大的灵活性,同时将成本保持在最低。这 种模式分为两种, RC 和 RCIO。 在 RC模式下,RC电路与OSC1 引脚相连。OSC2/CLKOUT 引脚输出 RC 振荡器频率的四分频。此信号可以为外部 电路、同步、校准、测试或其他应用要求提供时钟源。 图 4-5 显示了外部 RC 模式的连接。 图 4-5: 1. 2. HFINTOSC (高频内部振荡器)已经过厂家校 准,工作频率为 8 MHz。用户可以通过软件使用 OSCTUNE寄存器(寄存器4-2)调节HFINTOSC 的频率。 LFINTOSC (低频内部振荡器)未经过厂家校 准,工作频率为 31 kHz。 可通过 OSCCON 寄存器的系统时钟选择 (SCS)位选 择外部或内部时钟源。更多信息请参见第 4.6 节“时钟 切换”。 PIC® MCU REXT OSC1/CLKIN 内部 时钟 CEXT 4.5.1 INTOSC 和 INTOSCIO 模式 当使用配置字寄存器 1 (CONFIG1)中的振荡器选择 (FOSC<2:0>)位对器件进行编程时, INTOSC 和 INTOSCIO 模式将内部振荡器配置为系统时钟源。 VSS FOSC/4 或 I/O(2) 建议值: 注 振荡器模块有两个独立的内部振荡器,可被配置或选定 为系统时钟源。 可通过软件使用 OSCCON 寄存器中的内部振荡器频率 选择位 IRCF<2:0> 选择系统时钟速度。 外部 RC 模式 VDD 内部时钟模式 OSC2/CLKOUT(1) 10 kΩ ≤ REXT ≤ 100 kΩ (<3V) 3 kΩ ≤ REXT ≤ 100 kΩ (3-5V) CEXT > 20 pF (2-5V) 1: 备用引脚功能在第 1.0 节 “器件概述”中列 出。 2: 输出取决于 RC 或 RCIO 时钟模式。 在 RCIO 模式下, RC 电路与 OSC1 引脚相连。 OSC2 引脚变成了另一个通用 I/O 引脚。 RC 振荡器的频率是供电电压、电阻 (REXT) 、电容 (CEXT)值以及工作温度的函数。其他影响振荡频率的 因素有: • 门限电压差异 • 元件公差 • 电容封装差异 用户还需要考虑由于所使用的外部 RC 元件的容差所引 起的频率差异。 在 INTOSC 模式下,OSC1/CLKIN 引脚可用作通用 I/O 引脚。OSC2/CLKOUT 引脚输出选定的内部振荡器频率 的四分频。 CLKOUT 信号可以为外部电路、同步、校 准、测试或其他应用需求提供时钟源。 在 INTOSCIO 模式, OSC1/CLKIN 和 OSC2/CLKOUT 引脚可用作通用 I/O 引脚。 4.5.2 HFINTOSC 高频内部振荡器(HFINTOSC)是经过厂家校准、工作 频率为 8 MHz 的内部时钟源。可以通过软件使用 OSCTUNE 寄存器 (寄存器 4-2)对 HFINTOSC 的频 率在大约± 12% 范围内进行调节。 HFINTOSC 的输出连接到后分频器和多路开关 (见 图 4-1) 。可以通过软件使用 OSCCON 寄 存 器的 IRCF<2:0> (见第 4.5.4 节 “频率选择位 (IRCF)”) 位在七种频率中选择一种频率。 通过选择 8 MHz 和 125 kHz 之间的任何频率 (设置 OSCCON 寄存器的 IRCF<2:0> 位,使其 ≠ 000)使能 HFINTOSC。之后,将 OSCCON 寄存器中的系统时钟 源选择位 SCS 置 1 或通过将配置字寄存 器 1 (CONFIG1)中的 IESO 位置 1 使能双速启动。 OSCCON 寄存器中的 HF 内部振荡器 (HTS)位指示 HFINTOSC 是否稳定。 2008 Microchip Technology Inc. DS41291E_CN 第65 页 PIC16F882/883/884/886/887 4.5.2.1 OSCTUNE 寄存器 HFINTOSC 已经过厂家 的校准,但可用软件 通过写 OSCTUNE 寄存器 (寄存器 4-2)对其进行调节。 OSCTUNE 寄存器的默认值为 0。写入的值是一个 5 位 的二进制补码数字。 寄存器 4-2: U-0 当修改 OSCTUNE 寄存器时,HFINTOSC 将开始改变到 新的频率。在此变动期间,代码会继续执行。不会有任 何迹象表明发生了时钟变化。 OSCTUNE 不影响 LFINTOSC 的频率。依赖 LFINTOSC 时钟源频率工作的部件,如上电延时定时器(PWRT)、 看门狗定时器(WDT)、故障保护时钟监视器(FSCM) 以及外设等的工作不受频率更改的影响。 OSCTUNE:振荡器调节寄存器 U-0 - - U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 - TUN4 TUN3 TUN2 TUN1 TUN0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-5 未实现:读为 0 bit 4-0 TUN<4:0>:频率调节位 01111 = 最高频率 01110 = • • • 00001 = 00000 = 振荡器模块以经厂家校准后的频率运行。 11111 = • • • 10000 = 最低频率 DS41291E_CN 第66 页 x = 未知 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 4.5.3 LFINTOSC 低频内部振荡器 (LFINTOSC)是未经校准的 31 kHz 的内部时钟源。 LFINTOSC 的输出连接到后分频器和多路开关 (见 图 4-1) 。可 以 通 过 软 件 使 用 OSCCON 寄存器的 IRCF<2:0> 位选择 31 kHz。更多信息请参见第 4.5.4 节 “频率选择位 (IRCF)”。 LFINTOSC 输出的频率也是 上电延时定时器 (PWRT)、看门狗定时器 (WDT)和 故障保护时钟监视器 (FSCM)的时钟频率。 通过将 OSCCON 寄存器的 IRCF<2:0> 位设置为 000 选 择 31 kHz 作为系统时钟频率(OSCCON 寄存器的 SCS 位 = 1)或使能以下任何一项都可以使能 LFINTOSC: • 配置字寄存器 1 的双速启动 IESO 位 = 1 且 OSCCON 寄存器的 IRCF<2:0> 位 = 000 • 上电延时定时器 (PWRT) • 看门狗定时器 (WDT) • 故障保护时钟监视器 (FSCM) OSCCON 寄存器中的 LF 内部振荡器 (LTS)位指示 LFINTOSC 是否稳定。 4.5.4 频率选择位 (IRCF) 8 MHz HFINTOSC 的输出和 31 kHz LFINTOSC 的输出 连接到后分频器和多路开关(见图 4-1)。OSCCON 寄 存器的内部振荡器频率选择位 IRCF<2:0> 选择内部振荡 器的输出频率。可通过软件选择 8 种频率之一: 4.5.5 HFINTOSC 和 LFINTOSC 时钟切换时 序 在 LFINTOSC 和 HFINTOSC 之间切换时,新的振荡器 可能已被关闭以节省功耗 (见图 4-6)。如果情况是这 样,在 OSCCON 寄存器的 IRCF<2:0> 位被修改后到频 率选择生效之前将有一个 10 µs 的延时。 OSCCON 寄 存器的 LTS 和 HTS 位将反映 LFINTOSC 和 HFINTOSC 振荡器的当前状态。频率选择的时序如下: 1. 2. 3. 4. 5. 6. 修改 OSCCON 寄存器的 IRCF<2:0> 位。 如果新的时钟已关闭,将启动一段时钟起振延 时。 时钟切换电路等待当前时钟的下降沿。 CLKO 保持低电平,时钟切换电路等待新的时钟 的上升沿。 CLKO 现在与新的时钟连接。按照要求更新 OSCCON 寄存器的 LTS 和 HTS 位。 时钟切换完成。 更多详细信息请参见图 4-1。 如果选定的内部振荡器速度介于 125 kHz 和 8 MHz 之 间,在选定新的频率之前将没有起振延时。这是因为旧 的和新的频率都是由 HFINTOSC 通过后分频器和多路 开关后得到的。 第 17.0 节 “电气特性”中的振荡器表给出了起振延时 规范。 • 8 MHz • • • • • • 4 MHz (复位后的默认值) 2 MHz 1 MHz 500 kHz 250 kHz 125 kHz • 31 kHz (LFINTOSC) 注: 发生任何复位后, OSCCON 寄存器的 IRCF<2:0> 位被设置为 110 且频率选择被 设置为 4 MHz。用户可修改 IRCF 位以选择 其他频率。 2008 Microchip Technology Inc. DS41291E_CN 第67 页 PIC16F882/883/884/886/887 图 4-6: 内部振荡器切换时序 HFINTOSC LFINTOSC(禁止 FSCM 和 WDT) HFINTOSC 起振时间 2 周期同步 运行 2 周期同步 运行 LFINTOSC ≠0 IRCF<2:0> =0 系统时钟 HFINTOSC LFINTOSC(使能 FSCM 或 WDT) HFINTOSC LFINTOSC ≠0 IRCF<2:0> =0 系统时钟 LFINTOSC HFINTOSC 除非使能 WDT 或 FSCM,否则 LFINTOSC 关闭 LFINTOSC 起振时间 2 周期同步 运行 HFINTOSC IRCF<2:0> =0 ≠0 系统时钟 DS41291E_CN 第68 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 4.6 时钟切换 通过软件使用OSCCON寄存器的系统时钟选择(SCS) 位可以在外部和内部时钟源之间切换系统时钟源。 4.6.1 系统时钟选择 (SCS)位 OSCCON 寄存器的系统时钟选择(SCS)位供 CPU 和 外设使用的系统时钟源。 • 当 OSCCON 寄存器的 SCS 位 = 0 时,系统时钟 源由配置字寄存器 1 (CONFIG1)中的 FOSC<2:0> 位决定。 • 当 OSCCON 寄存器的 SCS 位 = 1 时,系统时钟 源由 OSCCON 寄存器的 IRCF<2:0> 位选择的内 部振荡器频率选择。复位后, OSCCON 寄存器的 SCS 位总是清零。 注: 4.6.2 可能由双速启动或故障保护时钟监视器引 起的任何自动时钟切换均不会更新 OSCCON 寄存器的 SCS 位。用户可监视 OSCCON 寄存器的 OSTS 位以确定当前的 系统时钟源。 振荡器起振超时状态 (OSTS)位 如果振荡器模块被配置为 LP、 XT 或 HS 模式,则使能 振荡器起振定时器 (OST)(见第 4.4.1 节 “振荡器起 振定时器 (OST)”)。 OST 定时器将暂停程序执行直 到计数完 1024 次振荡为止。双速启动模式通过在 OST 计数时使用内部振荡器作为时钟源,最大限度地缩短代 码执行的延时。当 OST 计数达到 1024 且 OSCCON 的 OSTS 位置 1 时,程序执行将切换到由外部振荡器充当 时钟源。 4.7.1 通过下列设置配置双速启动模式: • IESO (配置字寄存器 1) = 1 ;内部 / 外部切换位 (使能双速启动模式)。 • SCS (OSCCON 寄存器)= 0。 • 配置字寄存器 1 (CONFIG1)中的 FOSC<2:0> 位被配置为 LP、 XT 或 HS 模式。 发生下列事件后进入双速启动模式: • 上电复位 (POR)后,上电延时定时器 (PWRT)超时 (如果使能)后,或者 • 从休眠状态唤醒后。 如果外部时钟振荡器被配置为除 LP、 XT 或 HS 以外的 任何其他模式,那么双速启动将被禁止。这是因为在上 电复位后或从休眠状态退出后,外部时钟振荡器将不需 要任何稳定时间。 OSCCON 寄存器的振荡器起振超时状态(OSTS)位指 示系统时钟是来自于由配置字寄存器 1(CONFIG1)中 的 FOSC<2:0> 位定义的外部时钟源还是来自于内部时 钟源。特别地,当处于 LP、 XT 或 HS 模式时, OSTS 表示振荡器起振定时器 (OST)已经超时。 4.7.2 4.7 1. 2. 双速时钟启动模式 双速时钟启动模式通过使外部振荡器起振到代码执行之 间的延时达到最小而进一步降低功耗。在大量利用休眠 模式的应用程序中,双速启动将使唤醒所花费的时间中 不包含振荡器的起振时间,并能降低器件的总功耗。 此模式允许应用从休眠状态唤醒,使用 INTOSC 作为时 钟源来执行一些指令,然后返回休眠状态,无需等待主 振荡器稳定。 注: 双速启动模式的配置 3. 4. 5. 6. 7. 双速启动时序 发生上电复位或从休眠状态唤醒。 以内部振荡器作为时钟源 (以 OSCCON 寄存器 的 IRCF<2:0> 位设置的频率)开始执行指令。 使能 OST 计数 1024 个时钟周期。 OST 超时,等待内部振荡器的下降沿。 OSTS 置 1。 系统时钟保持低电平直到新的时钟的下一个下降 沿 (LP、 XT 或 HS 模式)。 系统时钟切换到外部时钟源。 执行 SLEEP 指令将中止振荡器起振延时并 将使 OSCCON 寄存器的 OSTS 位保持清 零。 2008 Microchip Technology Inc. DS41291E_CN 第69 页 PIC16F882/883/884/886/887 4.7.3 检查双速时钟状态 检查 OSCCON 寄存器的 OSTS 位可确定单片机使用的 时钟源是配置字寄存器 1 (CONFIG1)中 FOSC<2:0> 位定义的外部时钟源还是内部振荡器。 图 4-7: 双速启动 HFINTOSC TOST OSC1 0 1 1022 1023 OSC2 程序计数器 PC - N PC PC + 1 系统时钟 DS41291E_CN 第70 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 4.8 4.8.3 故障保护时钟监视器 清除故障保护条件 故障保护时钟监视器 (FSCM)旨在使器件能在振荡器 发生故障时继续运行。FSCM 可以检测出在振荡器起振 定时器(OST)延时结束后的任何时刻发生的振荡器故 障。通过将配置字寄存器 1 (CONFIG1)中的 FCMEN 位置1使能FSCM。它适用于所有外部振荡器模式(LP、 XT、 HS、 EC、 RC 和 RCIO)。 在复位、执行了 SLEEP 指令或修改了 OSCCON 寄存器 的 SCS 位后将清除故障保护条件。改变 SCS 位时, OST 将重新起振。 OST 运行时,器件继续依靠在 OSSCON 中选择的 INTOSC 运行。OST 超时后,故障 保护条件被清除,器件将依靠外部时钟源运行。必须先 清除故障保护条件才能清零 OSFIF 标志位。 图 4-8: 4.8.4 FSCM 框图 LFINTOSC 振荡器 ÷ 64 31 kHz (约 32 µs) 488 HZ (约 2 ms) 采样时钟 4.8.1 FSCM 设计为检测振荡器起振定时器(OST)延时结束 后的任何时刻发生的振荡器故障。从休眠中唤醒或任何 类型的复位后使用 OST。OST 不与 EC 或 RC 时钟模式 一起使用,因此 FSCM 将在复位或唤醒后立即生效。使 能 FSCM 也将使能双速启动。因此,在 OST 运行时, 器件将始终执行代码。 时钟监视 锁存器 外部 时钟 S Q R Q 复位或从休眠状态唤醒 注: 检测到 时钟故障 由于振荡器的起振时间范围很广,故障保 护电路在振荡器起振期间 (即从复位或休 眠状态退出后)不工作。在一段适当的时 间后,用户应该检查 OSCCON 寄存器的 OSTS 位以验证振荡器起振和系统时钟切 换是否已经成功完成。 故障保护检测 FSCM 模块通过比较外部振荡器和 FSDCM 采样时钟检 测有故障的振荡器。通过对 INTOSC 时钟进行 64 分频 得到 FSCM 采样时钟。参见图 4-8。故障检测电路内部 有一个锁存器。在外部时钟的每个下降沿将锁存器置 1。在采样时钟的每个上升沿将锁存器清零。如果采样 时钟的半个周期在主时钟变为低电平之前完成则将检测 到一个故障。 4.8.2 故障保护工作原理 当外部时钟出现故障时,FSCM 将器件时钟切换到内部 时钟源并将 PIR2 寄存器中的 OSFIF 标志位置 1。如果 PIE2 寄存器中的 OSFIE 位也置 1 时,OSFIF 标志位置 1 将产生中断。器件固件可采取措施以减轻可能由故障 时钟造成的问题。系统时钟将继续采用内部时钟源,直 到器件固件成功重启外部振荡器并使时钟重新切换到外 部振荡器为止。 FSCM 选择的内部时钟源由 OSCCON 寄存器的 IRCF<2:0> 位决定,从而允许在故障发生前配置内部振 荡器。 2008 Microchip Technology Inc. DS41291E_CN 第71 页 PIC16F882/883/884/886/887 图 4-9: FSCM 时序图 系统时钟 振荡器 故障 系统 时钟 输出 时钟监视器输出 (Q) 检测到 故障 OSCFIF 测试 注: 表 4-2: 测试 测试 通常,系统时钟的频率比采样时钟高很多。本例中选择的相对频率是为了明了起见。 与时钟源相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他复位 时的值 (1) CONFIG1(2) CPD CP MCLRE PWRTE WDTE FOSC2 FOSC1 FOSC0 — — OSCCON — IRCF2 IRCF1 IRCF0 OSTS HTS LTS SCS -110 x000 -110 x000 OSCTUNE — — — TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 ---u uuuu PIE2 OSFIE C2IE C1IE EEIE BCLIE ULPWUIE — CCP2IE 0000 00-0 0000 00-0 PIR2 OSFIF C2IF C1IF EEIF BCLIF ULPWUIF — CCP2IF 0000 00-0 0000 00-0 图注: x = 未知, u = 不变,- = 未实现单元 (读为 0)。振荡器未使用阴影单元。 注 1: 其他 (非上电)复位包括正常运行期间的 MCLR 复位和看门狗定时器复位。 2: 所有寄存器位的操作请参见配置字寄存器 1 (寄存器 14-1)。 DS41291E_CN 第72 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 5.0 TIMER0 模块 5.1 Timer0 的工作原理 Timer0 模块是一个 8 位定时器 / 计数器,具有如下特点: Timer0 模块既可用作 8 位定时器也可用作 8 位计数器。 • • • • • 5.1.1 8 位定时器 / 计数器寄存器 (TMR0) 8 位预分频器 (与看门狗定时器共用) 可编程内部或外部时钟源 可编程外部时钟边沿选择 溢出中断 8 位定时器模式 用作定时器时,Timer0 模块将在每个指令周期递增(不 带预分频器)。通过将 OPTION_REG 寄存器的 T0CS 位清 0 可选择定时器模式。 如果对 TMR0 寄存器执行写操作,则在接下来的两个指 令周期将禁止递增。 图 5-1 为 Timer0 模块的框图。 注: 5.1.2 可调整写入 TMR0 寄存器的值,使得在写 入 TMR0 时计入两个指令周期的延时。 8 位计数器模式 用作计数器时,Timer0 模块将在 T0CKI 引脚的每个上升 沿或下降沿递增。递增的边沿取决于 OPTION_REG 寄 存器的 T0SE 位。通过将 OPTION_REG 寄存器的 T0CS 位置 1 可选择计数器模式。 图 5-1: TIMER0/WDT 预分频器框图 FOSC/4 数据总线 0 8 1 同步 2 个 Tcy 1 T0CKI 引脚 TMR0 0 T0SE T0CS 0 8位 预分频器 溢出时将 T0IF 标志位置 1 PSA 1 8 PSA WDTE SWDTEN PS<2:0> 16 位 预分频器 31 kHz INTOSC 16 看门狗 定时器 1 WDT 超时 0 PSA WDTPS<3:0> 注 1: T0SE、 T0CS、 PSA、 PS<2:0> 为 OPTION_REG 寄存器中的位。 2: SWDTEN 和 WDTPS<3:0> 为 WDTCON 寄存器中的位。 3: WDTE 位在配置字寄存器 1 中。 2008 Microchip Technology Inc. DS41291E_CN 第73 页 PIC16F882/883/884/886/887 5.1.3 软件可编程预分频器 Timer0 和看门狗定时器 (WDT)共用一个软件可编程 预 分 频 器,但 不 能 同 时 使 用。预 分 频 器 的 分 配 由 OPTION_REG 寄存器的 PSA 位控制。要将预分频器分 配给 Timer0, PSA 位必须清 0。 Timer0 模块具有 8 种预分频比选择,范围为 1:2 至 1:256。可通过 OPTION_REG 寄存器的 PS<2:0> 位选 择预分频比。要使 Timer0 模块具有 1:1 的预分频比,必 须将预分频器分配给 WDT 模块。 预分频器不可读写。当预分频器分配给 Timer0 模块时, 所有写入 TMR0 寄存器的指令都将使预分频器清零。 当预分频器分配给 WDT 时, CLRWDT 指令将同时清零 预分频器和 WDT。 5.1.3.1 在 Timer0 和 WDT 模块间切换预分 频器 将预分频器分配给 Timer0 或 WDT 后,在切换预分频比 时可能会产生无意的器件复位。要将预分频器从分配给 Timer0 改为分配给 WDT 模块时,必须执行如例 5-1 所 示的指令序列。 例 5-1: BANKSEL CLRWDT CLRF 更改预分频器 (TIMER0 →WDT) TMR0 TMR0 BANKSEL BSF CLRWDT OPTION_REG OPTION_REG,PSA MOVLW ANDWF IORLW MOVWF b’11111000’ OPTION_REG,W b’00000101’ OPTION_REG DS41291E_CN 第74 页 ; ;Clear WDT ;Clear TMR0 and ;prescaler ; ;Select WDT ; ; ;Mask prescaler ;bits ;Set WDT prescaler ;to 1:32 要将预分频器从分配给 WDT 改为分配给 Timer0 模块, 必须执行以下指令序列 (见例 5-2)。 例 5-2: 更改预分频器 (WDT → TIMER0) CLRWDT ;Clear WDT and ;prescaler BANKSEL OPTION_REG ; MOVLW b’11110000’ ;Mask TMR0 select and ANDWF OPTION_REG,W ;prescaler bits IORLW b’00000011’ ;Set prescale to 1:16 MOVWF OPTION_REG ; 5.1.4 TIMER0 中断 当 TMR0 寄存器从 FFh 溢出至 00h 时,产生 Timer0 中 断。每次 TMR0 寄存器溢出时,不论是否允许 Timer0 中断, INTCON 寄存器的 T0IF 中断标志位都会置 1。 T0IF 位 必须在软件中清零。 Timer0 中断允许位是 INTCON 寄存器的 T0IE 位。 注: 5.1.5 由于在休眠状态下定时器是关闭的,所以 Timer0 中断无法唤醒处理器。 Timer0 与外部时钟配合使用 当 Timer0 工作在计数器模式下时,在内部相位时钟的 Q2 和 Q4 周期对预分频器输出进行采样可实现 T0CKI 输入与内部相位时钟的同步。因此,外部时钟源信号的 高、低电平时间必须符合第 17.0 节 “电气特性”给出 的时序要求。 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 寄存器 5-1: OPTION_REG: 选项寄存器 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 RBPU:PORTB 上拉使能位 1 = 禁止 PORTB 上拉 0 = 按各端口锁存器值使能 PORTB 上拉 bit 6 INTEDG:中断边沿选择位 1 = INT 引脚的上升沿触发中断 0 = INT 引脚的下降沿触发中断 bit 5 T0CS:TMR0 时钟源选择位 1 = T0CKI 引脚上的跳变沿 0 = 内部指令周期时钟 (FOSC/4) bit 4 T0SE:TMR0 时钟源边沿选择位 1 = 在 T0CKI 引脚上电平发生由高到低的跳变时递增 0 = 在 T0CKI 引脚上电平发生由低到高的跳变时递增 bit 3 PSA:预分频器分配位 1 = 预分频器分配给 WDT 0 = 预分频器分配给 Timer0 模块 bit 2-0 PS<2:0>:预分频比选择位 位值 TMR0 分频比 WDT 分频比 000 001 010 011 100 101 110 111 1:2 1:4 1:8 1 : 16 1 : 32 1 : 64 1 : 128 1 : 256 1:1 1:2 1:4 1:8 1 : 16 1 : 32 1 : 64 1 : 128 x = 未知 1: 有一个专用的 16 位 WDT 后分频器。更多信息,请参见第 14.5 节 “看门狗定时器 (WDT)”。 注 表 5-1: 与 TIMER0 相关的寄存器汇总 TMR0 INTCON OPTION_REG TRISA 图注: Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 与 BOR 所有其他复位 时的值 时的值 Timer0 模块寄存器 GIE PEIE T0IE xxxx xxxx uuuu uuuu INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111 TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111 Bit 7 名称 Bit 6 RBPU INTEDG T0CS - = 未实现单元 (读为 0), u = 不变, x = 未知。 Timer0 模块未使用阴影单元。 2008 Microchip Technology Inc. DS41291E_CN 第75 页 PIC16F882/883/884/886/887 6.0 带门控控制的 TIMER1 模块 6.1 Timer1 模块是一个通过一对寄存器 TMR1H:TMR1L 访 问的 16 位递增计数器。写入 TMR1H 或 TMR1L 可直接 更新该计数器。 Timer1模块是一个16位定时器/计数器,具有以下特性: • • • • • • • • • • • Timer1 的工作原理 16 位定时器 / 计数器寄存器 (TMR1H:TMR1L) 可编程内部或外部时钟源 3 位预分频器 可选 LP 振荡器 同步或异步操作 通过比较器或 T1G 引脚门控 Timer1 (使能计数) 溢出中断 溢出时唤醒 (仅外部时钟异步模式) 捕捉 / 比较功能的时基 特殊事件触发功能 (带有 ECCP) 比较器输出与 Timer1 时钟同步 当与内部时钟源一同使用时,此模块用作计数器。当与 外部时钟源一同使用时,此模块可用作定时器或计数 器。 6.2 时钟源选择 T1CON 寄存器的 TMR1CS 位用于选择时钟源。当 TMR1CS = 0 时,时钟源的频率为 FOSC/4。当 TMR1CS = 1 时,时钟源由外部提供。 图 6-1: TMR1CS 时钟源 图 6-1 为 Timer1 模块的框图。 FOSC/4 0 T1CKI 引脚 1 TIMER1 框图 TMR1GE T1GINV TMR1ON 溢出时将 TMR1IF 标志位置 1 至 C2 比较器模块 Timer1 时钟 TMR1(2) TMR1H TMR1L EN 同步的 时钟输入 0 1 振荡器 T1SYNC (1) OSC1/T1CKI 1 同步 (3) 预分频器 1, 2, 4, 8 检测 0 OSC2/T1G 2 T1CKPS<1:0> TMR1CS 1 INTOSC 不带 CLKOUT T1OSCEN FOSC 1 FOSC/4 内部 时钟 0 SYNCC2OUT(4) 0 T1GSS T1ACS 注 1: 2: 3: 4: DS41291E_CN 第76 页 ST 缓冲器在使用 LP 振荡器时处于低功耗模式,而在使用 T1CKI 时处于高速模式。 Timer1 寄存器在上升沿递增。 休眠时不进行同步。 当 CM2CON1 寄存器的 C2SYNC 位置 1 时, SYNCC2OUT 同步。 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 6.2.1 内部时钟源 选择内部时钟源后, TMR1H:TMR1L 寄存器将以 FOSC 的倍数为频率递增,具体倍数由 Timer1 预分频器决定。 6.2.2 外部时钟源 选择外部时钟源后, Timer1 模块可作为定时器或计数 器。 计数时,Timer1 在外部时钟输入 T1CKI 的上升沿递增。 此外,计数器模式下的时钟可与单片机系统时钟同步或 异步。 如需一个外部时钟振荡器 (且单片机正在使用不带 CLKOUT 的 INTOSC),Timer1 可使用 LP 振荡器作为 时钟源。 在计数器模式下,在出现以下一个或多个条件时,必须 先经过一个下降沿,计数器才可以在随后的上升沿进行 第一次递增计数 (见图 6-2): • 在 POR 或 BOR 复位后使能 Timer1 • 对 TMR1H 或 TMR1L 执行了写操作 • 禁止 Timer1 时, T1CKI 为高电平;当重新使能 Timer1 时, T1CKI 为低电平。 6.3 Timer1 预分频器 Timer1 具有四种预分频比选择,允许对时钟输入进行 1、2、4 或 8 分频。T1CON 寄存器的 T1CKPS 位控制 预分频计数器。不能直接对预分频计数器进行读或写操 作;但是,通过写入 TMR1H 或 TMR1L 可清零预分频 计数器。 6.4 Timer1 振荡器 在 T1OSI (输入)引脚和 T1OSO (放大器输出)引脚 之间连接有一个内置的低功耗 32.768 kHz 振荡器。将 T1CON 寄存器的 T1OSCEN 控制位置 1 可使能该振荡 器。此振荡器将在休眠模式下继续运行。 Timer1 振荡器与 LP 振荡器完全相同。用户必须提供软 件延时,以保证振荡器正常起振。 使能 Timer1 振荡器时 TRISC0 和 TRISC1 位被置 1。 RC0 和 RC1 位读为 0 且 TRISC0 和 TRISC1 位读为 1。 注: 振荡器需要经过一段起振和稳定时间后才 能 使 用。因 此,在 使 能 Timer1 前应将 T1OSCEN 置 1 并经过适当的延时。 2008 Microchip Technology Inc. 6.5 在异步计数器模式下的 Timer1 工作 原理 如果 T1CON 寄存器中的控制位 T1SYNC 被置 1,外部 时钟输入就不同步。定时器继续进行与内部相位时钟异 步的递增计数。在休眠状态下定时器仍将继续运行,并 在溢出时产生中断,从而唤醒处理器。但是,在用软件 对定时器进行读 / 写操作时应该特别小心 (见第 6.5.1 节 “异步计数器模式下对 Timer1 的读写操作”)。 注: 6.5.1 当从同步操作切换到异步操作时,有可能 漏过一个递增。当从异步操作切换到同步 操作时,有可能产生一个误递增。 异步计数器模式下对 TIMER1 的读写 操作 当定时器采用外部异步时钟工作时,对 TMR1H 或 TMR1L 的读操作将确保有效 (由硬件负责)。但用户 应牢记,用读两个 8 位值来读一个 16 位定时器本身就 存在问题,这是因为在两次读操作之间定时器可能会溢 出。 对于写操作,建议用户停止定时器后再写入所需数值。 当寄存器正在递增计数时,向定时器的寄存器写入数据 可能会产生写争用。从而会在 TMR1H:TTMR1L 这对寄 存器中产生不可预测的值。 6.6 Timer1 门控 可用软件将 Timer1 门控信号源配置为 T1G 引脚或比较 器 C2 的输出。这让器件可以直接使用 T1G 为外部事件 定时或者使用比较器 C2 为模拟事件定时。有关如何选 择 Timer1 门控信号源的信息,请参见 CM2CON1 (寄存器 8-2)。此功能部件可以仅仅是 ∆-Σ A/D 转换器 的软件,也可以是很多其他应用。欲知有关 ∆-Σ A/D 转 换器的更多信息,请访问 Microchip 网站 (www.microchip.com)。 注: 必须将 T1CON 寄存器的 TMR1GE 位置 1 以使用 Timer1 的门控信号。 可使用 T1CON 寄存器的 T1GINV 位来设置 Timer1 门 控信号的极性,门控信号可以来自 T1G 引脚也可以来自 比较器 C2 的输出。该位可将 Timer1 配置为对两个事件 之间的高电平时间或低电平时间进行计时。 DS41291E_CN 第77 页 PIC16F882/883/884/886/887 6.7 Timer1 中断 一对 Timer1 寄存器 (TMR1H:TMR1L)递增计数到 FFFFh 后,将溢出返回 0000h。当 Timer1 溢出时,PIR1 寄存器的 Timer1 中断标志位被置 1。要允许该溢出中 断,用户应将以下位置 1: • PIE1 寄存器中的 Timer1 中断允许位 • INTCON 寄存器中的 PEIE 位 • INTCON 寄存器中的 GIE 位 在中断服务程序中将 TMR1IF 位清零可以清除该中断。 再次允许该中断前,应将 TMR1H:TMR1L 这对寄存器以及 TMR1IF 位清零。 注: 6.8 休眠期间的 Timer1 工作原理 只有设置为异步计数器模式时,Timer1 才可在休眠模式 下工作。在该模式下,可使用外部晶振或时钟源使计数 器进行递增计数。通过如下设置使定时器能够唤醒器 件: • T1CON 寄存器中的 TMR1ON 位必须置 1 • PIE1 寄存器中的 TMR1IE 位必须置 1 • INTCON 寄存器中的 PEIE 位必须置 1 器 件 将 在 溢 出 时 被 唤 醒 并 执 行 下 一 条 指 令。如 果 INTCON 寄存器中的 GIE 位置 1,器件将调用中断服务 程序 (0004h)。 6.9 ECCP 捕捉 / 比较时基 ECCP 模块使用 TMR1H:TMR1L 这对寄存器作为其工 作在捕捉或比较模式下的时基。 在比较模式下,当 CCPRxH:CCPRxL 这对寄存器中的 值与TMR1H:TMR1L这对寄存器中的值匹配时将触发一 个事件。此事件可用来触发特殊事件。 更多信息请参见第 11.0 节 “捕捉 / 比较 /PWM 模块 (CCP1 和 CCP2)”。 6.10 ECCP 特殊事件触发器 如果将 ECCP 配置为触发一个特殊事件,触发器将清零 MR1H:TMR1L 这对寄存器。此特殊事件不会导致 Timer1 中断。可仍将 ECCP 模块配置为产生一个 ECCP 中断。 在此工作模式下,CCPRxH:CCPRxL这对寄存器实际上 成为了 Timer1 的周期寄存器。 要使用特殊事件触发器应使 Timer1 与 FOSC 同步。 Timer1 在异步模式下工作可导致丢失特殊事件触发信 号。 当写入 TMR1H 或 TMR1L 的操作与来自 ECCP 的特殊 事件触发信号同时发生时,写操作具有优先权。 更多信息,请参见第 11.0 节 “捕捉 / 比较 /PWM 模块 (CCP1 和 CCP2)”。 6.11 比较器同步 使Timer1递增的同一时钟还可用来同步比较器输出。此 功能在比较器模块中使能。 使用比较器进行Timer1门控时,比较器输出应与Timer1 同步。这样会确保当比较器输出改变时 Timer1 不会错 过一次递增计数。 更多信息请参见第 8.0 节 “比较器模块”。 在捕捉模式下,TMR1H:TMR1L 这对寄存器的值在配置 事件发生时被复制到CCPRxH:CCPRxL这对寄存器中。 图 6-2: TIMER1 的递增边沿 T1CKI = 1 当 TMR1 使能时 T1CKI = 0 当 TMR1 使能时 注 1: 箭头表示计数器递增。 2: 在计数器模式下,必须先经过一个下降沿,计数器才可以在随后的上升沿进行第一次递增计数。 DS41291E_CN 第78 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 6.12 Timer1 控制寄存器 Timer1 控制寄存器 (T1CON),如寄存器 6-1 所示, 用于控制 Timer1 并选择 Timer1 模块的各种功能。 寄存器 6-1: T1CON:TIMER1 控制寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 T1GINV(1) TMR1GE(2) T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 T1GINV:Timer1 门控信号极性位 (1) 1 = Timer1 门控信号高电平有效 (当门控信号为高电平时 Timer1 计数) 0 = Timer1 门控信号低电平有效 (当门控信号为低电平时 Timer1 计数) bit 6 TMR1GE:Timer1 门控使能位 (2) 如果 TMR1ON = 0: 此位被忽略。 如果 TMR1ON = 1: 1 = Timer1 计数由 Timer1 门控功能控制 0 = Timer1 始终计数 bit 5-4 T1CKPS<1:0>:Timer1 输入时钟预分频比选择位 11 = 1:8 预分频比 10 = 1:4 预分频比 01 = 1:2 预分频比 00 = 1:1 预分频比 bit 3 T1OSCEN:LP 振荡器使能控制位 1 = 使能 LP 振荡器作为 Timer1 的时钟源 0 = LP 振荡器关闭 bit 2 T1SYNC:Timer1 外部时钟输入同步控制位 TMR1CS = 1: 1 = 不与外部时钟输入同步 0 = 与外部时钟输入同步 TMR1CS = 0: 忽略此位。 Timer1 使用内部时钟。 bit 1 TMR1CS:Timer1 时钟源选择位 1 = 来自 T1CKI 引脚的外部时钟源 (上升沿触发) 0 = 内部时钟源 (FOSC/4) bit 0 TMR1ON:Timer1 使能位 1 = 使能 Timer1 0 = 禁止 Timer1 注 x = 未知 1: T1GINV 位可使 Timer1 门控信号的逻辑电平反相,而不管门控信号源如何。 2: TMR1GE 位必须置 1,以使用 T1G 引脚或 C2OUT (根据 CM2CON1 寄存器的 T1GSS 位选择)作为 Timer1 的门控信号源。 2008 Microchip Technology Inc. DS41291E_CN 第79 页 PIC16F882/883/884/886/887 表 6-1: 与 TIMER1 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 CM2CON1 MC1OUT MC2OUT C1RSEL C2RSEL GIE PEIE T0IE INTE PIE1 — ADIE RCIE TXIE PIR1 — ADIF RCIF TXIF INTCON Bit 3 POR 和 BOR 时的值 所有其他复位 时的值 Bit 2 Bit 1 Bit 0 — — T1GSS C2SYNC 0000 --10 0000 --10 RBIE T0IF INTF RBIF 0000 000x 0000 000x SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000 SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000 uuuu uuuu TMR1H 16 位 TMR1 寄存器高字节的保持寄存器 xxxx xxxx TMR1L 16 位 TMR1 寄存器低字节的保持寄存器 xxxx xxxx uuuu uuuu 0000 0000 uuuu uuuu T1CON 图注: T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON x = 未知, u = 不变, - = 未实现 (读为 0)。 Timer1 模块未使用阴影单元。 DS41291E_CN 第80 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 7.0 TIMER2 模块 Timer2 模块是一个 8 位定时器 / 计数器,具有以下特性: • • • • • 8 位定时器寄存器 (TMR2) 8 位周期寄存器 (PR2) TMR2 与 PR2 匹配时中断 软件可编程预分频比 (1:1、 1:4 和 1:16) 软件可编程后分频比 (1:1 至 1:16) TMR2 和 PR2 寄存器均可读写。任何复位时,TMR2 寄 存器均被设置为 00h 且 PR2 寄存器被设置为 FFh。 通过将 T2CON 寄存器的 TMR2ON 位置 1 使能 Timer2。 通过将 TMR2ON 位清零禁止 Timer2。 Timer2 预分频器由 T2CON 寄存器的 T2CKPS 位控制。 Timer2 后分频器由 T2CON 寄存器的 TOUTPS 位控制。 预分步器和后分步器计数器在以下情况下被清零: Timer2 的框图请参见图 7-1。 • 对 TMR2 寄存器执行写操作 • 对 T2CON 寄存器执行写操作 7.1 • 发生任何器件复位 (上电复位、 MCLR 复位、看 门狗定时器复位或欠压复位)。 Timer2 的工作原理 注: 到 Timer2 模块的时钟输入是系统指令时钟(FOSC/4)。 时钟被输入到 Timer2 预分频器,有如下几种分频比可 供选择:1:1、1:4 或 1:16。预分频器的输出随后用于使 TMR2 寄存器递增。 写 T2CON 不会将 TMR2 清零。 持续将 TMR2 和 PR2 的值做比较以确定它们何时匹配。 TMR2 将从 00h 开始递增直至与 PR2 中的值匹配。匹 配发生时,会发生以下两个事件: • TMR2 在下一递增周期被复位为 00h • Timer2 后分频器递增 Timer2 与 PR2 比较器的匹配输出随后输入给 Timer2 的 后分频器。后分频器具有 1:1 至 1:16 的预分频比可供选 择。 Timer2 后分频器的输出用于使 PIR1 寄存器的 TMR2IF 中断标志位置 1。 图 7-1: TIMER2 框图 TMR2 输出 FOSC/4 预分频器 1:1, 1:4, 1:16 2 TMR2 将 TMR2IF 标志位置 1 复位 比较器 相等 后分频器 1:1 至 1:16 T2CKPS<1:0> PR2 4 TOUTPS<3:0> 2008 Microchip Technology Inc. DS41291E_CN 第81 页 PIC16F882/883/884/886/887 寄存器 7-1: T2CON:TIMER2 控制寄存器 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 未实现:读为 0 bit 6-3 TOUTPS<3:0>:Timer2 输出后分频比选择位 0000 = 1:1 后分频比 0001 = 1:2 后分频比 0010 = 1:3 后分频比 0011 = 1:4 后分频比 0100 = 1:5 后分频比 0101 = 1:6 后分频比 0110 = 1:7 后分频比 0111 = 1:8 后分频比 1000 = 1:9 后分频比 1001 = 1:10 后分频比 1010 = 1:11 后分频比 1011 = 1:12 后分频比 1100 = 1:13 后分频比 1101 = 1:14 后分频比 1110 = 1:15 后分频比 1111 = 1:16 后分频比 bit 2 TMR2ON:Timer2 使能位 1 = 使能 Timer2 0 = 禁止 Timer2 bit 1-0 T2CKPS<1:0>:Timer2 时钟预分频比选择位 00 = 预分频值为 1 01 = 预分频值为 4 1x = 预分频值为 16 表 7-1: x = 未知 与 TIMER2 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他复 位时的值 INTCO N GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF PIE1 PIR1 -000 0000 -000 0000 PR2 Timer2 模块周期寄存器 1111 1111 1111 1111 TMR2 8 位 TMR2 寄存器的保持寄存器 — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 0000 0000 0000 0000 -000 0000 -000 0000 T2CON 图注: x = 未知,u = 不变,- = 未实现 (读为 0)。 Timer2 模块未使用阴影单元。 DS41291E_CN 第82 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 8.0 比较器模块 比较器用作模拟电路与数字电路的接口,通过比较两个 模拟电压的大小并输出一个数字量以指示输入量的相对 大小。比较器是非常有用的复合信号电路的组成部分, 因为它可以提供与执行程序无关的模拟功能。模拟比较 器模块包含如下特性: • • • • • • • • • • • 独立的比较器控制 可编程输入选择 可从外部或内部获取比较器输出 可编程输出极性 电平变化中断 从休眠唤醒 PWM 关闭 Timer1 选通 (使能计数) 输出与 Timer1 时钟输入同步 SR 锁存器 可编程和固定参考电压 注: 8.1 比较器概述 图 8-1 给出了某个比较器及其模拟输入电压与数字输出 电平之间的关系。当 VIN+ 端的模拟输入电压低于 VIN上的模拟电压时,比较器输出数字低电平。当 VIN+ 端 的模拟输入电压高于 VIN- 上的模拟电压时,比较器输出 数字高电平。 图 8-1: 单比较器 VIN+ + VIN- – 输出 VINVIN+ 只有比较器 C2 可与 Timer1 相关联。 输出 注: 2008 Microchip Technology Inc. 比较器输出的阴影区域表示由输入失调 和响应时间所造成的不确定区。 DS41291E_CN 第83 页 PIC16F882/883/884/886/887 图 8-2: 比较器 C1 的简化框图 C1CH<1:0> C1POL 2 C12IN0- 0 C12IN1C12IN2- 1 MUX 2 C12IN3- 3 D Q1 Q EN 至 数据总线 RD_CM1CON0 D Q3*RD_CM1CON0 Q EN CL 将 C1IF 置 1 至 PWM 逻辑 复位 C1ON(1) C1R C1IN+ C1VIN- C1VIN+ C1 + 0 MUX 1 固定参考电压 0 C1OUT(至 SR 锁存器) C1POL MUX C1VREF 1 CVREF C1OUT C1RSEL 注 图 8-3: 1: 当 C1ON = 0 时,比较器 C1 将输出 0 到异或门。 2: Q1 和 Q3 为四相位系统时钟 (FOSC)的相位。 3: 在休眠模式下, Q1 保持高电平。 比较器 C2 的简化框图 C2POL D Q1 Q EN RD_CM2CON0 C2CH<1:0> 2 C12IN0- 0 C12IN1C12IN2- 1 MUX 2 C12IN3- 3 C2R D Q3*RD_CM2CON0 C2ON(1) 固定参考电压 CVREF 0 MUX 1 Q 将 C2IF 置 1 EN CL 复位 C2VINC2VIN+ C2OUT C2 C2SYNC C2POL D C2IN+ 至 数据总线 Q 来自 Timer1 时钟 0 MUX 1 SYNCC2OUT 至 Timer1 门控电路、 SR 锁存器和其他外设 0 MUX C1VREF 1 C2RSEL 注 DS41291E_CN 第84 页 1: 当 C1ON = 0 时,比较器 C2 将输出 0 到异或门。 2: Q1 和 Q3 为四相位系统时钟 (FOSC)的相位。 3: 在休眠模式下, Q1 保持高电平。 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 8.2 比较器控制 每个比较器都具有独立的控制和配置寄存器,比较器 C1 的控制和配置寄存器为 CM1CON0,比较器 C2 的控制和 配置寄存器为 CM2CON0。此外,C2 还有一个辅助控制 寄存器 CM2CON1,该寄存器用于控制与 Timer1 的交互 以及同时读取两个比较器的读出。 CM1CON0 和 CM2CON0 寄存器(分别见寄存器 8-1 和 寄存器 8-2)包含如下控制位和状态位: • • • • • 使能位 输入选择位 参考选择位 输出选择位 输出极性位 8.2.1 比较器输入选择 CMxCON0 寄存器的 CxCH<1:0> 位将四个模拟输入引 脚之一直接连接到比较器的反向输入端。 注: 8.2.3 要将 CxIN+ 和 CxIN- 用作模拟输入引脚, 必须将 ANSEL 和 ANSELH 寄存器的相应 位置 1。还必须将 TRIS 位置 1 以禁止输出 驱动器。 比较器参考电压选择 将 CMxCON0 寄存器的 CxR 位置 1,将内部参考电压 或模拟输入引脚连接到比较器的正向输入端。请参见第 8.10 节“比较器参考电压”获得有关内部参考电压模块 的更多信息。 8.2.4 1: CxOE 位掌握端口数据锁存器的主控制 权。将 CxON 置 1 不会改写端口。 2: 在每个指令执行周期内,比较器输出会在 内部锁存。而外部输出不锁存,除非另外 说明。 8.2.5 比较器输出极性 将比较器输出反向与交换比较器的两个输入端功能相 同。将 CMxCON0 寄存器的 CxPOL 置 1 可以翻转比较 器的输出极性。清零 CxPOL 位则不翻转输出极性。 表 8-1 显示不同输入条件下的输出状态,包括极性控 制。 表 8-1: 使能比较器 将 CMxCON0 寄存器中的 CxON 位置 1,使能比较器。 将 CxON 位清零禁止比较器,因此可使电流消耗最小。 8.2.2 注 不同输入条件下的输出状态 输入条件 CxPOL CxOUT CxVIN- > CxVIN+ 0 0 CxVIN- < CxVIN+ 0 1 CxVIN- > CxVIN+ 1 1 CxVIN- < CxVIN+ 1 0 8.3 比较器响应时间 当改变输入源或选择了新的参考电压后的一段时间,比 较器的输出为不确定状态。该段时间称为响应时间。响 应时间根据参考电压达到稳定值的时间不同而不同。因 此,当输入电压发生变化后要确定比较器的响应时间 时,必须将这些时间考虑在内。请参见第 17.0 节 “电 气特性”的比较器和参考电压规范获得更多详细信息。 比较器输出选择 通过读 CMxCON0 寄存器的 CxOUT 位或 CM2CON1 寄 存器的 MCxOUT 位可以监视比较器的输出。为了保证 输出可与外部电路相连,如下条件必须成立: • CMxCON0 寄存器的 CxOE 位必须置 1 • 相应的 TRIS 位必须清零。 • CMxCON0 寄存器的 CxOE 位必须置 1 2008 Microchip Technology Inc. DS41291E_CN 第85 页 PIC16F882/883/884/886/887 8.4 比较器中断工作原理 只要一个比较器的输出值发生了变化,比较器的中断标 志位就会被置 1。通过失配电路识别输出端变化,该电路 包含两个锁存器和一个异或门(见图 8-2 和图 8-3)。当 读 CMxCON0 寄存器时使用比较器的输出电平更新其中 一个锁存器。此锁存器保留更新后的值,直到下一次读 取 CMxCON0 寄存器或发生复位为止。失配电路的另一 个锁存器在每个 Q1 系统时钟更新。如果比较器的输出变 化在Q1时钟周期内通过第二个锁存器锁存则引发不匹配 条件。在该点,失配的锁存器具有相反的输出电平,此 电平由异或门进行检测并馈送到中断电路。失配条件将 持续存在,直到读 CMxCON0 寄存器或比较器输出返回 以前状态为止。 注 图 8-4: Q1 Q3 CIN+ CxIF 置 1(电平) CxIF 由软件复位 图 8-5: Q1 2: 比较器中断操作不受CxOE状态位的影响。 CxIN+ 当从 CMxCON0 或 CM2CON1 寄存器读数据时,需要用 软件来保持比较器输出的状态信息以判断实际发生的变 化。 PIR2 寄存器的 CxIF 位为比较器中断标志位。必须在软 件中将该位清零使其复位。因为也可以向该寄存器写入 1,因而可模拟中断的产生。 PIE2 寄存器的 CxIE 位和 INTCON 寄存器的 PEIE 和 GIE 位必须置 1,以允许比较器中断。只要这些位中的 任何位被清零,尽管当中断条件产生时 PIR2 寄存器的 CxIF 位仍会置 1,但中断却是被禁止的。 DS41291E_CN 第86 页 TRT CxOUT 1: 对 CMxCON0 寄存器执行操作也将清除失 配条件,这是因为在每个写周期开始会首 先执行读操作。 比较器中断由失配边沿而不是失配电平设置。这表明不 需要额外的读或写CMxCON0寄存器的操作来清零失配 寄存器,就可以使中断标志复位。清零失配寄存器后, 如果比较器返回前一状态,则产生中断,否则不产生中 断。 比较器中断时序 (读或不读 CMxCON0 寄存器时) 比较器中断时序 (读 CMxCON0 寄 存器时) Q3 TRT CxOUT CxIF 置 1(电平) CxIF 通过读 CMxCON0 寄存器清零 注 由软件复位 1: 如果在执行一个读操作时 (Q2 周期的开 始) CMxCON0 寄存器 (CxOUT)的值 发生了改变,那么 PIR2 寄存器的 CxIF 中 断标志位可能不会被置 1。 2:当首先使能任一比较器时,比较器模块的 偏置电路可能导致比较器产生无效的输 出,直至偏置电路达到稳态。允许大约 1 µs 的偏置稳定时间,然后在允许比较器 中断之前,清除失配条件和中断标志。 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 8.5 休眠期间工作原理 如果在进入休眠模式之前已经使能了比较器,它将在休 眠模式下继续工作。比较器额外消耗的电流由第 17.0 节 “电气特性”单独给出。如果不使用比较器唤醒器件,则 可 通 过 关 闭 比 较 器 使 休 眠 模 式 的 功 耗 最 小。将 CMxCON0 寄存器的 CxON 位清零可以关闭比较器。 比较器输出发生改变可将器件从休眠模式唤醒。将PIE2 寄存器的 CxIE 位和 INTCON 寄存器的 PEIE 位置 1 以 允许比较器将器件从休眠模式唤醒。当器件从休眠模式 唤醒后,将始终执行跟随在 SLEEP 指令之后的指令。如 果 INTCON 寄存器的 GIE 也置 1,则器件将执行中断服 务程序。 8.6 复位的影响 器件复位强制 CMxCON0 和 CM2CON1 寄存器进入复 位状态。同时强制比较器和参考电压模块为关闭状态。 2008 Microchip Technology Inc. DS41291E_CN 第87 页 PIC16F882/883/884/886/887 寄存器 8-1: CM1CON0:比较器 C1 控制寄存器 0 R/W-0 R-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 C1ON C1OUT C1OE C1POL — C1R C1CH1 C1CH0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 C1ON:比较器 C1 使能位 1 = 使能比较器 C1 0 = 禁止比较器 C1 bit 6 C1OUT:比较器 C1 输出位 如果 C1POL = 1 (极性相反): 当 C1VIN+ > C1VIN- 时 C1OUT = 0 当 C1VIN+ < C1VIN- 时 C1OUT = 1 如果 C1POL = 0 (极性相同): 当 C1VIN+ > C1VIN- 时 C1OUT = 1 当 C1VIN+ < C1VIN- 时 C1OUT = 0 bit 5 C1OE:比较器 C1 输出使能位 1 = C1OUT 引脚有输出 (1) 0 = C1OUT 引脚无外部连接 bit 4 C1POL:比较器 C1 输出极性选择位 1 = C1OUT 逻辑为反 0 = C1OUT 逻辑为正 bit 3 未实现:读为 0 bit 2 C1R:比较器 C1 参考电压选择位 (正向输入) 1 = C1VIN+ 引脚与 C1VREF 输出引脚连接 0 = C1VIN+ 引脚与 C1IN+ 引脚连接 bit 1-0 C1CH<1:0>:比较器 C1 通道选择位 00 = C1 的 C12IN0- 引脚连接到 C1VIN- 时 01 = C1 的 C12IN1- 引脚连接到 C1VIN- 时 10 = C1 的 C12IN2- 引脚连接到 C1VIN- 时 11 = C1 的 C12IN3- 引脚连接到 C1VIN- 时 注 x = 未知 1: 若要比较器产生输出,需满足如下三个条件:C1OE = 1、 C1ON = 1 以及相应端口的 TRIS 位 = 0。 DS41291E_CN 第88 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 寄存器 8-2: CM2CON0:比较器 C2 控制寄存器 0 R/W-0 R-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 C2ON C2OUT C2OE C2POL — C2R C2CH1 C2CH0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 C2ON:比较器 C2 使能位 1 = 使能比较器 C2 0 = 禁止比较器 C2 bit 6 C2OUT:比较器 C2 输出位 如果 C2POL = 1 (极性相反): 当 C2VIN+ > C2VIN- 时 C2OUT = 0 当 C2VIN+ < C2VIN- 时 C2OUT = 1 如果 C2POL = 0 (极性相同): 当 C2VIN+ > C2VIN- 时 C2OUT = 1 当 C2VIN+ < C2VIN- 时 C2OUT = 0 bit 5 C2OE:比较器 C2 输出使能位 1 = C2OUT 引脚有输出 (1) 0 = C2OUT 引脚无外部连接 bit 4 C2POL:比较器 C2 输出极性选择位 1 = C2OUT 逻辑为反 0 = C2OUT 逻辑为正 bit 3 未实现:读为 0 bit 2 C2R:比较器 C2 参考电压选择位 (正向输入) 1 = C2VIN+ 引脚与 C2VREF 输出引脚连接 0 = C2VIN+ 引脚与 C2IN+ 引脚连接 bit 1-0 C2CH<1:0>:比较器 C2 通道选择位 00 = C2 的 C12IN0- 引脚连接到 C2VIN- 时 01 = C2 的 C12IN1- 引脚连接到 C2VIN- 时 10 = C2 的 C12IN2- 引脚连接到 C2VIN- 时 11 = C2 的 C12IN3- 引脚连接到 C2VIN- 时 注 x = 未知 1: 若要比较器产生输出,需要满足如下三个条件:C2OE = 1、 C2ON = 1 以及相应端口的 TRIS 位 = 0。 2008 Microchip Technology Inc. DS41291E_CN 第89 页 PIC16F882/883/884/886/887 8.7 模拟输入连接注意事项 图 8-6 是一个简化的模拟输入电路。由于模拟输入引脚 和数字输出端相连,因此它们与 VDD 和 VSS 之间接有 反向偏置二极管,从而将模拟输入电压限制在 VSS 和 VDD 之间。一旦输入电压超出该范围 0.6V,其中一个二 极管就会发生正向偏置,从而使输入电压被钳位。 注 2: 施加在数字输入引脚上的模拟电平会使其 输入缓冲器消耗的电流超过规定值。 模拟信号源的最大阻抗的建议值为 10 kΩ。连接到模拟 输入引脚的任何外部元件 (如电容器或齐纳二极管), 要保证其漏电流极小,从而使引入的误差最小。 图 8-6: 1: 读端口寄存器时,所有配置为模拟输入的 引脚将读为 0。配置为数字输入的引脚根 据输入规范,对模拟输入信号进行相应的 转换。 模拟输入模型 VDD VT ≈ 0.6V Rs < 10K 至 ADC 输入 AIN CPIN 5 pF VA RIC VT ≈ 0.6V ILEAKAGE(1) ±500 nA Vss 图注: 注 1: CPIN = 输入电容 ILEAKAGE = 各个连接点在引脚上产生的泄漏电流 RIC = 内部连线等效电阻 = 源阻抗 RS = 模拟电压 VA VT = 门限电压 见第 17.0 节“电气规范”。 DS41291E_CN 第90 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 8.8 8.8.2 比较器的其他功能 将 CM2CON1 寄存器的 C2SYNC 位置 1 可使比较器 C2 的输出与 Timer1 同步。使能时,C2 的输出在 Timer1 时 钟源的下降沿被锁存。如果预分频被分配给 Timer1,则 比较器的输出将在预分频后锁存。为了防止出现争用, 比较器输出在 Timer1 时钟源的下降沿被锁存,而 Timer1 在其时钟源的上升沿递增。请参见比较器框图 (图 8-2 和图 8-3)和 Timer1 框图 (图 6-1)获取更多信息。 比较器还有另外三个功能,如下: • 使能 Timer1 计数 (门控) • 与 Timer1 同步输出 • 同步读取比较器输出 8.8.1 比较器 C2 门控 TIMER1 本功能可以用来为模拟事件的持续时间和间隔定时。将 CM2CON1 寄存器的 T1GSS 位清零将使 Timer1 以比较 器 C2 的输出为基准递增。此操作要求打开 Timer1 并使 能门控功能。请参见第 6.0 节 “带门控控制的 Timer1 模块”获得详细信息。 当比较器用作Timer1的门控源时,建议通过将C2SYNC 位置 1 使比较器与 Timer1 同步。这样可以确保比较器 在 Timer1 递增期间改变输出状态时, Timer1 不会丢失 计数。 寄存器 8-3: 比较器 C2 输出与 TIMER1 同步 8.8.3 同时读取比较器输出 CM2CON1 寄存器的 MC1OUT 和 MC2OUT 位是比较 器两个输出的镜像拷贝。由于能从单个寄存器同时读取 两个比较器的输出,因此消除了分别读两个寄存器所造 成的时序偏差 (timing skew)。 注 1: 通过读 CM2CON1 寄存器以获取 C1OUT 或 C2OUT 的状态不会影响比较器的中断 失配寄存器。 CM2CON1:比较器 C2 控制寄存器 1 R-0 R-0 R/W-0 R/W-0 U-0 U-0 R/W-1 R/W-0 MC1OUT MC2OUT C1RSEL C2RSEL — — T1GSS C2SYNC bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7 MC1OUT:C1OUT 位的镜像拷贝 bit 6 MC2OUT:C2OUT 位的镜像拷贝 bit 5 C1RSEL:比较器 C1 的参考选择位 1 = CVREF 连接到比较器 C1 的 C1VREF 输入端 0 = 连接到比较器 C1 的 C1VREF 输入端的绝对参考电压(0.6V)(或器件自带的 1.2V 高精度参考源) bit 4 C2RSE:比较器 C2 参考选择位 1 = CVREF 连接到比较器 C2 的 C2VREF 输入端 0 = 连接到比较器 C2 的 C2VREF 输入端的绝对参考电压(0.6V)(或器件自带的 1.2V 高精度参考源) bit 3-2 未实现:读为 0 bit 1 T1GSS:Timer1 门控源选择位 1 = Timer1 门控源为 T1G 0 = Timer1 门控源为 SYNCC2OUT。 bit 0 C2SYNC:比较器 C2 输出同步位 1 = 输出与 Timer1 时钟的下降沿同步 0 = 输出异步 2008 Microchip Technology Inc. DS41291E_CN 第91 页 PIC16F882/883/884/886/887 8.9 比较器 SR 锁存器 8.9.2 锁存器输出 SR 锁存器模块提供对比较器输出的额外控制。该模块由 单个 SR 锁存器和输出多路开关组成。可根据比较器输 出使 SR 锁存器置 1、复位或翻转。也可以通过设置 SRCON 控制寄存器的控制位来使 SR 锁存器置 1 和复 位,而与比较器输出无关。SR 锁存器输出多路开关选择 将锁存器输出还是比较器输出连接到 I/O 逻辑端口以最 终输出到引脚。 SRCON 寄存器的 SR<1:0> 位控制锁存器的输出多路开 关,并决定四种可能的输出配置。在这四种可能的配置 中, CxOUT I/O 逻辑端口分别连接: 8.9.1 任何复位后,默认的输出配置为未锁存的 C1OUT 和 C2OUT 模式,这是为了保持与不具有 SR 锁存器的器件 兼容。 • • • • 锁存器工作原理 该锁存器为不依赖于时钟源的置 1 和复位锁存器。每个 置 1 和复位输入引脚都为高电平有效。每个锁存器的输 入引脚都与比较器的一个输出引脚和一个由软件控制的 脉冲发生器产生。锁存器可通过 C1OUT 或 SRCON 寄 存器的 PULSS 位置 1, C2OUT 或 SRCON 寄存器的 PULSR 位复位。锁存器的复位是显性的,也就是说,如 果置1和复位输入都为高电平,锁存器将进入复位状态。 PULSS 和 PULSR 位均可自动复位,也就是说,完成该 锁存器的置 1 或复位操作,惟一要做的就是直接写入这 2 位。 图 8-7: C1OUT 和 C2OUT C1OUT 和 SR 锁存器 Q C2OUT 和 SR 锁存器 Q SR 锁存器 Q 和 Q 必须将相应端口的可用 TRIS 位清零,以使能端口引脚 输出驱动器。此外,必须将 CMxCON0 寄存器的 CxOE 比较器输出使能位置 1,以确保比较器或锁存器输出可 供输出引脚使用。锁存器配置使能状态与比较器的使能 状态毫无关系。 SR 锁存器的简化框图 SR0 PULSS 脉冲 发生器 (2) C1OUT(来自比较器) S C1OE 0 MUX 1 Q C1SEN SR 锁存器 (1) C2OE SYNCC2OUT(来自比较器) R C2REN PULSR 注 Q 脉冲 发生器 (2) C1OUT 引脚 (3) 1 MUX 0 C2OUT 引脚 (3) SR1 1: 如果 R 和 S 同时为 1,则 Q = 0, Q = 1 2: 脉冲发生器产生宽度为 1/2 Q 态 (1 Tosc)的脉冲。 3: 显示输出仅供参考。更多详细信息请参见 I/O 端口引脚框图。 DS41291E_CN 第92 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 寄存器 8-4: SRCON:SR 锁存器控制寄存器 R/W-0 R/W-0 (2) (2) SR1 SR0 R/W-0 R/W-0 R/S-0 R/S-0 U-0 R/W-0 C1SEN C2REN PULSS PULSR — FVREN bit 7 bit 0 图注: S = 只可置 1 的位 R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 SR1:SR 锁存器配置位 (2) 1 = C2OUT 引脚为锁存器 Q 输出 0 = C2OUT 引脚为 C2 比较器输出 bit 6 SR0:SR 锁存器配置位 (2) 1 = C1OUT 引脚为锁存器 Q 输出 0 = C1OUT 引脚为 C1 比较器输出 bit 5 C1SEN:由 C1 置 1 使能位 1 = 由 C1 比较器输出使 SR 锁存器置 1 0 = C1 比较器输出不影响 SR 锁存器 bit 4 C2SEN:由 C2 复位使能位 1 = 由 C2 比较器输出使 SR 锁存器复位 0 = C2 比较器输出不影响 SR 锁存器 bit 3 PULSS:是否触发脉冲以将 “置 1”命令输入给 SR 锁存器的位 1 = 触发脉冲发生器使 SR 锁存器置 1。该位由硬件立即复位。 0 = 不触发脉冲发生器 bit 2 PULSR:是否触发脉冲以将 “复位”命令输入给 SR 锁存器的位 1 = 触发脉冲发生器使 SR 锁存器复位。该位由硬件立即复位。 0 = 不触发脉冲发生器 bit 1 未实现:读为 0 bit 0 FVREN:固定参考电压使能位 1 = 使能来自 INTOSC LDO 的 0.6V 参考电压 0 = 禁用来自 INTOSC LDO 的 0.6V 参考电压 注 x = 未知 1: CMxCON0 寄存器的 CxOUT 位总是反映比较器的真实输出 (而不是引脚电平),该输出不受锁存器操作 的影响。 2: 要使 SR 锁存器输出到引脚,相应的 CxOE 和 TRIS 必须被正确配置。 2008 Microchip Technology Inc. DS41291E_CN 第93 页 PIC16F882/883/884/886/887 8.10 比较器参考电压 8.10.3 输出电压钳位为 VSS 比较器参考电压模块为比较器提供内部产生的参考电 压。它具有如下特性: 通过将VRCON寄存器的FVREN位清零,可以将CVREF 输出电压设置为 Vss 而无额外功耗。 • • • • • 此操作允许比较器进行过零检测,而不会使 CVREF 模块 消耗额外的电流。 与比较器操作无关 两个具有 16 阶电平的电压范围 输出电压钳位为 VSS 与 VDD 成比例 固定参考电压 (0.6V) VRCON 寄存器 (寄存器 8-5)控制参考电压模块,如 图 8-8 所示。 可 以 通 过 梯 形 电 阻 网 络 的 16 个 端 点 选 择 电 压 源。 VRCON 寄存器的 VRSS 位用来选择内部电压源或外部 电压源。 PIC16F882/883/884/886/887 仅允许 CVREF 信号在特 定的配置条件下输出到 PORTA 的 RA2 引脚。如需更多 详细信息,请参见图 8-9。 8.10.1 独立操作 比较器参考电压与比较器配置无关。将 VRCON 寄存器 的 VREN 位置 1 将使能参考电压。 8.10.2 输出电压选择 CVREF 参考电压有 2 个范围,每个范围都有 16 阶电 平。由 VRCON 寄存器的 VRR 位控制范围选择。由 VRCON 寄存器的 VR<3:0> 位设置 16 阶电平。 CVREF 输出电压由如下公式确定: 公式 8-1: CVREF 输出电压 V RR = 1 (low range): CVREF = (VR<3:0>/24) × V LADDER 8.10.4 输出与 VDD 成比例 由于比较器的参考电压是依据 VDD 产生的,因此 CVREF 的输出随着 VDD 的波动而变化。经测试的比较器参考电 压绝对准确度可参见第 17.0 节 “电气特性”。 8.10.5 固定参考电压 固定参考电压与 VDD 无关,其标称输出值为 0.6V。将 SRCON 寄存器的 FVREN 位置 1 可使能该参考电压。 只要 HFINTOSC 振荡器处于工作状态,该参考电压就 一直使能。 8.10.6 固定参考电压稳定周期 使能固定参考电压模块后,需要一段时间使参考电压及 其放大电路稳定。用户程序必须包含一个短暂的延时子 程序以允许模块稳定。请参见第 17.0 节 “电气特性” 了解最小延时要求。 8.10.7 选择参考电压 可使用参考电压模块输出端上的多路开关选择CVREF或 固定参考电压以供比较器使用。 将 VRCON 寄存器的 C1VREN 位置 1,允许电流通过 CVREF 分压器,并选择 CVREF 电压供 C1 使用。将 C1VREN 位清零选择固定参考电压供 C1 使用。 将 VRCON 寄存器的 C2VREN 位置 1,允许电流通过 CVREF 分压器,并选择 CVREF 电压供 C2 使用。将 C2VREN 位清零选择固定参考电压供 C2 使用。 如果 C1VREN 和 C2VREN 都清零,则禁止电流流入 CVREF 分压器,从而使参考电压外设的功耗最小。 V RR = 0 (high range): CV REF = (VLADDER/4) + (VR<3:0> × VLADDER/32) V LADDER = V DD 或 ([VREF+] - [VREF-]) 或 VREF+ 由于模块结构的限制,无法实现从 VSS 到 VDD 满量程 输出。请参见图 8-8。 DS41291E_CN 第94 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 8-8: 比较器参考电压框图 16 阶 VREF+ VRSS = 1 8R R R R R VRSS = 0 VRR 8R VDD 模拟 MUX VREFVRSS = 1 15 CVREF VRSS = 0 至比较器 和 ADC 模块 0 VR<3:0> VROE 4 VREN C1RSEL C2RSEL CVREF FVREN 休眠 使能 HFINTOSC 0.6V 固定参考电压 至比较器 和 ADC 模块 图 8-9: 使能 固定参考 电压 比较器和 ADC 参考电压框图 VREF+ AVDD AVDD 1 1 0 0 VCFG0 VRSS CVREF ADC 参考 电压 比较器 参考 电压 VROE VCFG1 VRSS 0 0 AVSS 1 AVSS 1 VCFG1 VREF- 2008 Microchip Technology Inc. DS41291E_CN 第95 页 PIC16F882/883/884/886/887 表 8-2: RA3 比较器和 ADC 的参考电压优先级 RA2 比较器 参考电压 (+) 比较器 参考电压 (-) ADC 参考电压 (+) ADC 参考电压 (-) CFG1 CFG0 VRSS VROE I/O I/O AVDD AVSS AVDD AVSS 0 0 0 0 I/O CVREF AVDD AVSS AVDD AVSS 0 0 0 1 VREF+ VREF- VREF+ VREF- AVDD AVSS 0 0 1 0 VREF+ CVREF VREF+ AVSS AVDD AVSS 0 0 1 1 VREF+ I/O AVDD AVSS VREF+ AVSS 0 1 0 0 VREF+ CVREF AVDD AVSS VREF+ AVSS 0 1 0 1 VREF+ VREF- VREF+ VREF- VREF+ AVSS 0 1 1 0 VREF+ CVREF VREF+ AVSS VREF+ AVSS 0 1 1 1 I/O VREF- AVDD AVSS AVDD VREF- 1 0 0 0 I/O VREF- AVDD AVSS AVDD VREF- 1 0 0 1 VREF+ VREF- VREF+ VREF- AVDD VREF- 1 0 1 0 VREF+ VREF- VREF+ VREF- AVdd Vref- 1 0 1 1 VREF+ VREF- AVDD AVSS VREF+ VREF- 1 1 0 0 VREF+ VREF- AVDD AVSS VREF+ VREF- 1 1 0 1 VREF+ VREF- VREF+ VREF- VREF+ VREF- 1 1 1 0 VREF+ VREF- VREF+ VREF- VREF+ VREF- 1 1 1 1 DS41291E_CN 第96 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 寄存器 8-5: VRCON:参考电压控制寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 VREN VROE VRR VRSS VR3 VR2 VR1 VR0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7 VREN:比较器 C1 参考电压使能位 1 = CVREF 电路上电 0 = CVREF 电路断电 bit 6 VREN:比较器 C2 参考电压使能位 1 = CVREF 电压也是 RA2/AN2/VREF-/CVREF/C2IN+ 引脚的输出 0 = CVREF 电压与 RA2/AN2/VREF-/CVREF/C2IN+ 引脚断开 bit 5 VRR:CVREF 范围选择位 1 = 低电压范围 0 = 高电压范围 bit 4 VRSS:比较器 VREF 范围选择位 1 = 比较器参考源, CVRSRC = (VREF+) - (VREF-) 0 = 比较器参考源, CVRSRC = VDD - VSS bit 3-0 VR<3:0>:CVREF 值选择 (0 ≤ VR<3:0>≤ 15) 当 VRR = 1 时:CVREF = (VR<3:0>/24) * VDD 当 VRR = 0 时:CVREF = VDD/4 + (VR<3:0>/32) * VDD 表 8-3: 名称 与比较器和参考电压模块相关的寄存器汇总 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 与 BOR 时的值 所有其他复位 时的值 ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111 ANSELH Ñ Ñ ANS13 ANS12 ANS11 ANS10 ANS9 ANS8 --11 1111 --11 1111 CM1CON0 C1ON C1OUT C1OE C1POL — C1R C1CH1 C1CH0 0000 -000 0000 -000 CM2CON0 C2ON C2OUT C2OE C2POL — C2R C2CH1 C2CH0 0000 -000 0000 -000 — — T1GSS C2SYNC 0000 --10 0000 --10 ANSEL CM2CON1 MC1OUT MC2OUT C1RSEL C2RSEL GIE PEIE T0IE INTE RBIE T0IF INTF RBIF PIE2 OSFIE C2IE C1IE EEIE BCLIE ULPWUIE — CCP2IE 0000 00-0 0000 00-0 PIR2 OSFIF C2IF C1IF EEIF BCLIF ULPWUIF — CCP2IF 0000 00-0 0000 00-0 PORTA RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 xxxx xxxx uuuu uuuu PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu INTCON 0000 000x 0000 000x SR1 SR0 C1SEN C2SEN PULSS PULSR — FVREN 0000 00-0 0000 00-0 TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111 TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 1111 VREN VROE VRR VRSS VR3 VR2 VR1 VR0 0000 0000 0000 0000 SRCON VRCON 图注: x = 未知, u = 不变, - = 未实现 (读为 0)。比较器未使用阴影单元。 2008 Microchip Technology Inc. DS41291E_CN 第97 页 PIC16F882/883/884/886/887 注: DS41291E_CN 第98 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 9.0 模数转换器 (ADC)模块 模数转换器(ADC)可以将模拟输入信号转换为表示该 信号的一个 10 位二进制数。器件使用的模拟输入通道 共用一个采样保持电路。采样保持电路的输出与模数转 换器的输入相连。模数转换器采用逐次逼近法产生一个 10 位二进制结果,并将该结果保存在 ADC 结果寄存器 (ADRESL 和 ADRESH)中。 可用软件选择转换所使用的参考电压为内部产生的参考 电压或者由外部提供。 ADC 在转换完成之后可以产生一个中断。此中断可以用 来唤醒处于休眠状态的器件。 图 9-1 所示为 ADC 的框图。 图 9-1: ADC 的框图 AVSS VREF- VCFG1 = 0 VCFG1 = 1 AVDD VCFG0 = 0 VREF+ AN0 0000 AN1 0001 AN2 0010 AN3 0011 AN4 0100 AN5 0101 AN6 0110 AN7 0111 AN8 1000 AN9 1001 AN10 1010 AN11 1011 AN12 1100 AN13 1101 CVREF 1110 固定参考电压 1111 VCFG0 = 1 ADC 10 GO/DONE ADFM ADON VSS 0 = 左对齐 1 = 右对齐 10 ADRESH ADRESL CHS<3:0> 2008 Microchip Technology Inc. DS41291E_CN 第99 页 PIC16F882/883/884/886/887 9.1 ADC 配置 配置和使用 ADC 时,必须考虑如下因素: • • • • • • 端口配置 通道选择 ADC 参考电压选择 ADC 转换时钟源 中断控制 结果的存储格式 9.1.1 端口配置 ADC 既可以转换模拟信号,又可以转换数字信号。当转 换模拟信号时,应该通过将相应的 TRIS 和 ANSEL 位置 1,将 I/O 引脚配置为模拟输入引脚。更多信息请参见相 应的端口章节。 注: 9.1.2 对定义为数字输入的引脚施加模拟电压可 能导致输入缓冲器出现过电流。 通道选择 由 ADCON0 寄存器的 CHS 位决定将哪个通道连接到采 样保持电路。 9.1.3 ADC 参考电压 由 ADCON0 的 VCFG 位独立控制正或负参考电压。正 参考电压可以是 VDD 或外部电压源。同样的,负参考电 压可以是 VSS 或外部电压源。 9.1.4 转换时钟 可以通过软件设置 ADCON0 寄存器的 ADCS 位来选择 转换的时钟源。有以下 4 种可能的时钟频率可供选择: • FOSC/2 • FOSC/8 • FOSC/32 • FRC (专用内部振荡器) 完成一位转换的时间定义为 TAD。一个完整的 10 位转换 需要 11 个 TAD 周期,如图 9-2 所示。 必须符合相应的 TAD 规范,才能获得正确的转换结果。 请参见第 17.0 节 “电气特性”中的 A/D 转换要求获得 更多相关信息。表 9-1给出了正确选择ADC时钟的示例。 注: 除非使用 FRC,否则系统时钟频率的任何 改变都会改变 ADC 时钟的频率,从而对 ADC 转换结果产生负面影响。 如果更改了通道,在下一次转换开始前需要一定的延 迟。更多信息请参见第 9.2 节 “ADC 工作原理”。 DS41291E_CN 第100 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 ADC 时钟周期 (TAD)与器件工作频率的关系 (VDD ≥ 3.0V) 表 9-1: ADC 时钟周期 (TAD) ADC 时钟源 器件频率 (FOSC) ADCS<1:0> FOSC/2 20 MHz 00 FOSC/8 01 100 ns (2) 400 ns (2) 8 MHz 1.0 µs 1.6 µs 4.0 µs FRC 11 2-6 µs(1,4) 2-6 µs(1,4) 图 9-2: 2.0 µs 500 ns (2) 10 1 MHz (2) 250 ns FOSC/32 图注: 注 1: 2: 3: 4: 4 MHz (2) 8.0 µs(3) 2.0 µs (3) 32.0 µs(3) 8.0 µs 2-6 µs(1,4) 2-6 µs(1,4) 建议不要使用阴影单元内的值。 对于 VDD > 3.0V 的情况, FRC 时钟源的典型 TAD 时间为 4 µs。 这些值均违反了最小 TAD 时间要求。 为了加快转换速度,建议选用其他时钟源。 当器件的工作频率高于 1 MHz 时,仅当在休眠期间进行转换时才建议使用 FRC 时钟源。 模数转换器 TAD 周期 TCY 至 TADTAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD9 TAD10 TAD11 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 转换开始 保持电容与模拟输入断开(通常为 100 ns) 将 GO/DONE 位置 1 9.1.5 装载 ADRESH 和 ADRESL 寄存器, GO 位被清零, ADIF 位被置 1, 将保持电容和模拟输入通道相连 中断 ADC 模块允许在完成模数转换后产生一个中断。 ADC 中断标志位是 PIR1 寄存器中的 ADIF 位。 ADC 中断允 许位是 PIE1 寄存器中的 ADIE 位。ADIF 位必须用软件 清零。 注: 每次转换结束后 ADIF 位都会被置 1,与是 否允许 ADC 中断无关。 不管器件处于工作模式还是休眠模式都可以产生中断。 如果器件处于休眠模式,该中断可将器件唤醒。当将器 件从休眠状态唤醒后,总是执行 SLEEP 指令后的下一条 指令。如果用户尝试使器件从休眠模式唤醒并按顺序恢 复代码执行,则必须禁止全局中断。如果允许全局中 断,程序将跳转到中断服务程序处执行。 请参见第 14.3 节 “中断”了解更多信息。 2008 Microchip Technology Inc. DS41291E_CN 第101 页 PIC16F882/883/884/886/887 9.1.6 结果格式化 10 位 A/D 转换的结果可采用两种格式:左对齐或右对 齐。由 ADCON0 寄存器的 ADFM 位控制输出格式。 图 9-3 给出了这两种输出格式。 图 9-3: 10 位 A/D 转换结果的格式 ADRESH (ADFM = 0) ADRESL MSB LSB bit 7 bit 0 bit 7 10 位 A/D 转换的结果 未实现:读为 0 MSB (ADFM = 1) bit 7 LSB bit 0 9.2.1 ADC 工作原理 启动转换 要使能 ADC 模块,必须将 ADCON0 寄存器的 ADON 位置 1,将 ADCON0 寄存器的 GO/DONE 位置 1 开始 模数转换。 注: 9.2.2 不能用开启 A/D模块的同一指令将GO/DONE 位置1。请参见第 9.2.6节“A/D转换步骤”。 完成转换 当转换完成时, ADC 模块将: • 清零 GO/DONE 位 • 将 ADIF 标志位置 1 • 用转换的新结果更新 ADRESH:ADRESL 寄存器 9.2.3 终止转换 如果必须要在转换完成前终止转换,则可用软件清零 GO/DONE 位。不会用尚未完成的模数转换结果更新 ADRESH:ADRESL 寄存器。因此,ADRESH:ADRESL 寄存器将保持上次转换所得到的值。此外,在 A/D 转换 终止以后,必须经过 2 个 TAD 的延时才能开始下一次采 集。延时过后,将自动开始对选定通道的输入信号进行 采集。 注: bit 7 bit 0 10 位 A/D 转换的结果 未实现:读为 0 9.2 bit 0 9.2.4 ADC 在休眠模式下的工作原理 ADC 模块可以工作在休眠模式下。此操作需要将 ADC 时钟源设置为 FRC 选项。如果选择了 FRC 时钟源,ADC 在开始转换之前要多等待一个指令周期。从而允许执行 SLEEP 指令,以降低转换中的系统噪声。如果允许 ADC 中断,当转换结束时,将使器件从休眠模式唤醒。如果 禁止 ADC 中断,即使 ADON 位保持置 1,则转换结束 后也还是会关闭 ADC 模块。 如果 ADC 时钟源不是 FRC,即使 ADON 位仍保持置 1, 执行 SLEEP 指令还是会中止当前的转换并关闭 A/D 模 块。 9.2.5 特殊事件触发器 ECCP 特殊事件触发器允许在没有软件介入的情况下, 周期性地进行 ADC 测量。引发触发时,由硬件将 GO/DONE 位置 1,并且 Timer1 计数器将复位为零。 使用特殊事件触发器不能确保正确的 ADC 时序。由用 户来确保满足 ADC 的时序要求。 请参见第 11.0 节 “捕捉 / 比较 /PWM 模块 (CCP1 和 CCP2)”获取更多相关信息。 器件复位将强制所有寄存器进入复位状 态。因此,复位会关闭 ADC 模块并且终止 任何待处理的转换。 DS41291E_CN 第102 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 9.2.6 A/D 转换步骤 如下步骤给出了使用 ADC 进行模数转换的示例: 1. 2. 3. 4. 5. 6. 7. 8. 端口配置: • 禁止引脚输出驱动器 (见 TRIS 寄存器) • 将引脚配置为模拟输入引脚 配置 ADC 模块: • 选择 ADC 转换时钟 • 配置参考电压 • 选择 ADC 输入通道 • 选择结果的格式 • 启动 ADC 模块 配置 ADC 中断 (可选): • 清零 ADC 中断标志位 • 允许 ADC 中断 • 允许外设中断 • 允许全局中断 (1) 等待所需的采集时间 (2)。 将 GO/DONE 置 1 启动转换。 由如下方法之一等待 ADC 转换结束: • 查询 GO/DONE 位 • 等待 ADC 中断 (允许中断) 读 ADC 结果 将 ADC 中断标志位清零 (如果允许中断的话, 需要进行此操作)。 注 例 9-1: A/D 转换 ;This code block configures the ADC ;for polling, Vdd and Vss as reference, Frc clock and AN0 input. ; ;Conversion start & polling for completion ; are included. ; BANKSEL ADCON1 ; MOVLW B’10000000’ ;right justify MOVWF ADCON1 ;Vdd and Vss as Vref BANKSEL TRISA ; BSF TRISA,0 ;Set RA0 to input BANKSEL ANSEL ; BSF ANSEL,0 ;Set RA0 to analog BANKSEL ADCON0 ; MOVLW B’11000001’ ;ADC Frc clock, MOVWF ADCON0 ;AN0, On CALL SampleTime ;Acquisiton delay BSF ADCON0,GO ;Start conversion BTFSC ADCON0,GO ;Is conversion done? GOTO $-1 ;No, test again BANKSEL ADRESH ; MOVF ADRESH,W ;Read upper 2 bits MOVWF RESULTHI ;store in GPR space BANKSEL ADRESL ; MOVF ADRESL,W ;Read lower 8 bits MOVWF RESULTLO ;Store in GPR space 1: 如果用户尝试在使器件从休眠模式唤醒后 恢复顺序代码执行,则必须禁止全局中 断。 2: 请参见第 9.3 节 “A/D 采集要求”。 2008 Microchip Technology Inc. DS41291E_CN 第103 页 PIC16F882/883/884/886/887 9.2.7 ADC 寄存器的定义 以下寄存器用于控制 ADC 的操作。 注: ANSEL 和 ANSELH 寄存器请分别参见 寄存器 3-3 和寄存器 3-4。 寄存器 9-1: ADCON0: A/D 控制寄存器 0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ADCS1 ADCS0 CHS3 CHS2 CHS1 CHS0 GO/DONE ADON bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7-6 ADCS<1:0>:A/D 转换时钟选择位 00 = FOSC/2 01 = FOSC/8 10 = FOSC/32 11 = FRC (由专用的内部振荡器产生频率最高为 500 kHz 的时钟) bit 5-2 CHS<3:0>:模拟通道选择位 0000 = AN0 0001 = AN1 0010 = AN2 0011 = AN3 0100 = AN4 0101 = AN5 0110 = AN6 0111 = AN7 1000 = AN8 1001 = AN9 1010 = AN10 1011 = AN11 1100 = AN12 1101 = AN13 1110 = CVREF 1111 = 固定参考电压 (0.6V 固定参考电压) bit 1 GO/DONE:A/D 转换状态位 1 = A/D 转换正在进行。将该位置 1 启动 A/D 转换。当 A/D 转换完成以后,该位由硬件自动清零。 0 = A/D 转换完成 / 或不在进行中 bit 0 ADON:ADC 使能位 1 = 使能 ADC 0 = 禁止 ADC,不消耗工作电流 DS41291E_CN 第104 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 寄存器 9-2: ADCON1:A/D 控制寄存器 1 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 ADFM — VCFG1 VCFG0 — — — — bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 ADFM:A/D 转换结果格式选择位 1 = 右对齐 0 = 左对齐 bit 6 未实现:读为 0 bit 5 VCFG1:参考电压位 1 = VREF- 引脚 0 = VSS bit 4 VCFG0:参考电压位 1 = VREF+ 引脚 0 = VDD bit 3-0 未实现:读为 0 2008 Microchip Technology Inc. x = 未知 DS41291E_CN 第105 页 PIC16F882/883/884/886/887 寄存器 9-3: ADRESH:ADC 结果寄存器的高字节 (ADRESH), ADFM = 0 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x ADRES9 ADRES8 ADRES7 ADRES6 ADRES5 ADRES4 ADRES3 ADRES2 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 x = 未知 ADRES<9:2>:ADC 结果寄存器位 10 位转换结果的高 8 位 寄存器 9-4: ADRESL:ADC 结果寄存器的低字节 (ADRESL) , ADFM = 0 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x ADRES1 ADRES0 — — — — — — bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-6 ADRES<1:0>:ADC 结果寄存器位 10 位转换结果的低 2 位 bit 5-0 保留:不要使用。 寄存器 9-5: x = 未知 ADRESH:ADC 结果寄存器的高字节 (ADRESH), ADFM = 1 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x — — — — — — ADRES9 ADRES8 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-2 保留:不要使用。 bit 1-0 ADRES<9:8>:ADC 结果寄存器位 10 位转换结果的高 2 位 寄存器 9-6: x = 未知 ADRESL: ADC 结果寄存器的低字节 (ADRESL), ADFM = 1 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x ADRES7 ADRES6 ADRES5 ADRES4 ADRES3 ADRES2 ADRES1 ADRES0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 x = 未知 ADRES<7:0>: ADC 结果寄存器位 10 位转换结果的低 8 位 DS41291E_CN 第106 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 9.3 A/D 采集要求 可以使用公式 9-1 来计算最小采集时间。该公式假设误 差为 1/2 LSb (A/D 转换需要 1024 步)。 1/2 LSb 误差 是 A/D 达到规定分辨率所允许的最大误差。 为了使 A/D 转换达到规定的准确度,必须使充电保持电 容 (CHOLD)充满至输入通道的电平。图 9-4 给出了模 拟输入电路模型。信号源阻抗 (RS)和内部采样开关 阻抗 (RSS)直接影响为电容 CHOLD 充电所需要的时 间。采样开关阻抗(RSS)随器件电压 VDD 不同而有所 不同,请参见图 9-4。模拟信号源最大阻抗建议值为 10 kΩ。采集时间随着阻抗的降低而缩短。选择 (或改 变)模拟输入通道后,在启动转换前必须对通道进行采 集。 公式 9-1: 采集时间示例 假设:温度 =50°C,外部阻抗为 10 kΩ,VDD 为 5V TACQ ACQ ==放大器稳定时间 Amplifier Settling+Time + Hold Capacitor Charging Time + Temperature Coefficient 保持电容充电时间 + 温度系数 = T AMP + T C + T COFF = 2 µs + TC + [( 温度 - 25°C)(0.05 µs/°C)] 可以使用如下公式估算 TC 的值: 1 = V CHOLD ;[1] 在 1/2 lsb 误差范围内对 VCHOLD 进行充电 V APPLIED 1 – -------------------------n+1 (2 )–1 –T C ---------- RC V APPLIED 1 – e = V CHOLD ;[2] 依照 VAPPLIED 对 VCHOLD 进行充电 – Tc------- RC 1 = V APPLIED 1 – -------------------------V APPLIED 1 – e ; 综合 [1] 和 [2] n+1 (2 ) – 1 计算 TC: T C = – C HOLD ( R IC + R SS + R S ) ln(1/2047) = – 10pF ( 1k Ω + 7k Ω + 10k Ω ) ln(0.0004885) = 1.37 µs 因此: T A CQ = 2 µs + 1.37 µs + [(50°C - 25°C)(0.05 µs/°C)] = 4.67 µs 注 1: 由于可以将参考电压 (VREF)消掉,因此它对公式的结果不会产生影响。 2: 在每次转换后,充电保持电容 (CHOLD)并不放电。 3: 模拟信号的最大阻抗建议值为 10 kΩ。这样要求是为了符合引脚泄漏电流规范。 2008 Microchip Technology Inc. DS41291E_CN 第107 页 PIC16F882/883/884/886/887 图 9-4: 模拟输入模型 VDD VT = 0.6V ANx Rs CPIN 5 pF VA VT = 0.6V RIC ≤ 1K 采样开关 SS RSS ILEAKAGE(1) ±500 nA CHOLD = 10 pF VSS/VREF- CPIN = 输入电容 = 门限电压 VT ILEAKAGE = 各个连接点在引脚 产生的泄漏电流 = 内部连线等效电阻 RIC = 采样开关 SS = 采样 / 保持电容 CHOLD 图注: 注 图 9-5: 6V 5V VDD 4V 3V 2V RSS 5 6 7 8 9 10 11 采样开关 (kΩ) 1: 请参见第 17.0 节 “电气特性”。 ADC 传递函数 满量程范围 3FFh 3FEh 3FDh ADC 输出 3FCh 理想的 1 LSB 3FBh 满量程 转换 004h 003h 002h 001h 000h 模拟输入电压 理想的 1 LSB VSS/VREF- DS41291E_CN 第108 页 零刻度 转换 VDD/VREF+ 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 9-2: 与 ADC 相关的寄存器汇总 Bit 7 Bit 6 ADCON0 ADCS1 ADCS0 ADCON1 ADFM — ANSEL ANS7 ANS6 ANS5 ANS4 — — ANS13 ANS12 名称 ANSELH Bit 5 POR 和 BOR 时的值 所有其他复位 时的值 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 CHS3 CHS2 CHS1 CHS0 GO/DONE ADON 0000 0000 0000 0000 VCFG1 VCFG0 — — — — 0-00 ---- -000 ---- ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111 ANS11 ANS10 ANS9 ANS8 --11 1111 --11 1111 ADRESH A/D 结果寄存器的高字节 xxxx xxxx uuuu uuuu ADRESL A/D 结果寄存器的低字节 xxxx xxxx uuuu uuuu 0000 000x INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000 PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000 PORTA RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 xxxx xxxx uuuu uuuu PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu PORTE — — — — RE3 RE2 RE1 RE0 ---- xxxx ---- uuuu TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111 TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 111 TRISE — — — — TRISE3 TRISE2 TRISE1 TRISE0 ---- 1111 ---- 111 图注: x = 未知, u = 不变, - = 未实现 (读为 0)。 ADC 模块未使用阴影单元。 2008 Microchip Technology Inc. DS41291E_CN 第109 页 PIC16F882/883/884/886/887 注: DS41291E_CN 第110 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 10.0 数据 EEPROM 和闪存程序存储器 控制 数据 EEPROM 和闪存程序存储器在正常工作状态下 (整个 VDD 范围内)是可读写的。这些存储器并不直接 映 射到 寄 存 器 文件 空 间,而 是 通过 特 殊 功 能寄 存 器 (SFR)对其进行间接寻址。共有 6 个 SFR 寄存器用于 访问这些存储器: • • • • • EECON1 EECON2 EEDAT EEDATH EEADR • EEADRH (其 bit 4 仅供 PIC16F886/PIC16F887 使 用) 当与数据存储器模块接口时,EEDATL 寄存器存放 8 位 读写的数据,而 EEADR 寄存器存放被访问的 EEDAT 单元的地址。该系列中的器件具有 256 字节的数据 EEPROM,地址范围为 0h 到 0FFh。 访问 PIC16F886/PIC16F887 器件的程序存储器时, EEDAT 和 EEDATH 寄存器形成一个双字节字用于保存 要读 / 写的 14 位数据, EEADR 和 EEADRH 寄存器组 成一个双字节字用于保存待读取的 12 位 EEPROM 单元 地址。PIC16F882 器件具有 2K 字的程序 EEPROM,地 址范围从 0h 至 07FFh。PIC16F883/PIC16F884 器件具 有 4K 字的程序 EEPROM,地址范围从 0h 到 0FFFh。 程序存储器允许以字为单位读取。 EEPROM 数据存储器允许字节读写。字节写操作可自 动擦除目标单元并写入新数据 (在写入前擦除)。 10.1 EEADR 和 EEADRH 寄存器 EEADRL 和 EEADRH 寄存器能寻址最大 256 字节的数 据 EEPROM 或最大 8K 字的程序 EEPROM。 当选择程序地址值时,地址的高字节被写入 EEADRH 寄存器而低字节被写入 EEADR 寄存器。当选择数据地 址值时,只将地址的低字节写入 EEADR 寄存器。 10.1.1 EECON1 和 EECON2 寄存器 EECON1 是访问 EE 存储器的控制寄存器。 控制位 EEPGD 决定访问的是程序存储器还是数据存储 器。该位被清零时,和复位时一样,任何后续操作都将 针对数据存储器进行。该位置 1 时,任何后续操作都将 针对程序存储器进行。程序存储器是只读的。 控制位 RD 和 WR 分别启动读和写。用软件只能将这些 位置 1 而无法清零。在读或写操作完成后,由硬件将它 们清零。由于无法用软件将 WR 位清零,从而可避免意 外地过早终止写操作。 当 WREN 置 1 时,允许对数据 EEPROM 执行写操作。 上电时,WREN 位被清零。当正常的写入操作被 MCLR 复位或 WDT 超时复位中断时, WRERR 位会置 1。在 这些情况下,复位后用户可以检查 WRERR 位并重写相 应的单元。 当写操作完成时 PIR2 寄存器中的中断标志位 EEIF 被置 1。此标志位必须用软件清零。 EECON2 不是物理寄存器。读 EECON2 得到的是全 0。 EECON2 寄存器仅在执行数据 EEPROM 写序列时使 用。 写入时间由片上定时器控制。写入和擦除电压是由片上 电荷泵产生的,此电荷泵额定工作在器件的电压范围 内,用于进行字节或字操作。 器件能否对程序存储器的特定块执行写操作取决于配置 字寄存器 2 的闪存程序存储器自写使能位 WRT<1:0> 的 设置。但是,始终允许对程序存储器执行读操作。 当 器 件 受 代 码保 护 时,CPU 仍 可 继 续 读 写 数 据 EEPROM 和闪存程序存储器。代码保护时,器件编程 器将不再能访问数据或程序存储器。 2008 Microchip Technology Inc. DS41291E_CN 第111 页 PIC16F882/883/884/886/887 寄存器 10-1: EEDAT: EEPROM 数据寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 EEDAT1 EEDAT0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-0 x = 未知 EEDAT<7:0>:要从数据 EEPROM 中读取或向数据 EEPROM 写入的地址的低 8 位,或者要从程序存储器中读取 的地址的低 8 位 寄存器 10-2: EEADR: EEPROM 地址寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 EEADR<7:0>:指定 EEPROM 读 / 写操作 (1) 的地址的低 8 位,或程序存储器读操作的地址的低 8 位 bit 7-0 寄存器 10-3: EEDATH: EEPROM 数据的高字节寄存器 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — — EEDATH5 EEDATH4 EEDATH3 EEDATH2 EEDATH1 EEDATH0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-6 未实现:读为 0 bit 5-0 EEDATH<5:0>: 从程序存储器读出的数据的高 6 位 寄存器 10-4: x = 未知 EEADRH: EEPROM 地址的高字节寄存器 U-0 U-0 - - U-0 - R/W-0 (1) EEADRH4 R/W-0 R/W-0 R/W-0 R/W-0 EEADRH3 EEADRH2 EEADRH1 EEADRH0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-5 未实现:读为 0 bit 4-0 EEADRH<4:0>:指定程序存储器读操作的高 4 位地址或高 3 位。 注 x = 未知 1: 仅用于 PIC16F886/PIC16F887 。 DS41291E_CN 第112 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 寄存器 10-5: EECON1:EEPROM 控制寄存器 R/W-x U-0 U-0 U-0 R/W-x R/W-0 R/S-0 R/S-0 EEPGD — — — WRERR WREN WR RD bit 7 bit 0 图注: S = 只能被置 1 的位 R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7 EEPGD:程序 / 数据 EEPROM 选择位 1 = 访问程序存储器 0 = 访问数据存储器 bit 6-4 未实现:读为 0 bit 3 WRERR:EEPROM 错误标志位 1 = 写操作过早终止 (正常工作期间的任何 MCLR 复位、 WDT 复位或欠压复位) 0 = 写操作完成 bit 2 WREN:EEPROM 写使能位 1 = 允许写周期 0 = 禁止写入数据 EEPROM bit 1 WR:写控制位 1 = 启动写周期 (写操作一旦完成,由硬件清零该位。用软件只能将 WR 位置 1,但不能清零。) 0 = 数据 EEPROM 写周期完成 bit 0 RD:读控制位 1 = 启动存储器读操作 (由硬件清零 RD。用软件只能将 RD 位置 1,但不能清零。) 0 = 不启动存储器读操作 2008 Microchip Technology Inc. DS41291E_CN 第113 页 PIC16F882/883/884/886/887 10.1.2 读数据 EEPROM 存储器 要读取数据存储器单元,用户必须将地址写入 EEADR 寄存器,清零 EECON1 寄存器的 EEPGD 控制位,然 后将控制位 RD 置 1。在紧接着的下一个周期,EEDAT 寄存器中就有数据了,因此该数据可由下一条指令读 取。 EEDAT 将保存此值直至下一次用户向该单元读取 或写入数据时 (在写操作过程中)为止。 例 10-1: 读数据 EEPROM BSF BCF MOVF MOVWF BSF BCF STATUS,RP1 STATUS,RP0 DATA_EE_ADDR,W EEADRL STATUS,RP0 EECON1,EEPGD BSF BCF MOVF EECON1,RD STATUS,RP0 EEDATL,W 必需的 序列 例 10-2: ; ; ; ; ; ; ; ; ; ; Bank 2 Data Memory Address to read Bank 3 Point to Data memory EE Read Bank 2 W = EEDATA 10.1.3 写数据 EEPROM 存储器 要写 EEPROM 数据存储单元,用户应首先将该单元的 地址写入 EEADR 寄存器并将数据写入 EEDAT 寄存器。 然后用户必须按特定顺序开始写入每个字节。 如果没有完全按照下面的指令顺序(即首先将 55h 写入 EECON2,随后将 AAh 写入 EECON2,最后将 WR 位 置 1)写每个字节,将不会启动写操作。在该代码段中 应禁止中断。 此外,必须将 EECON1 中的 WREN 位置 1 以使能写操 作。这种机制可防止由于代码执行错误 (异常)(即程 序跑飞)导致误写 EEPROM。在不更新 EEPROM 时, 用户应该始终保持 WREN 位清零。 WREN 位不能被硬 件清零。 一个写过程启动后,将 WREN 位清零将不会影响此写 周期。除非 WREN 位置 1,否则 WR 位将无法置 1。 写周期完成时, WR 位由硬件清零并且 EE 写完成中断 标志位 (EEIF)置 1。用户可以允许此中断或查询此 位。 EEIF 必须用软件清零。 写数据 EEPROM 存储器 BANKSEL MOVLW MOVWF MOVLW MOVWF BANKSEL BCF BSF EEADR DATA_EE_ADDR EEADR DATA_EE_DATA EEDAT EECON1 EECON1, EEPGD EECON1, WREN ; ; ;Data Memory Address to write ; ;Data Memory Value to write ; ;Point to DATA memory ;Enable writes BCF BTFSC GOTO MOVLW MOVWF MOVLW MOVWF BSF BSF INTCON, INTCON, $-2 55h EECON2 AAh EECON2 EECON1, INTCON, GIE GIE ;Disable INTs. ;SEE AN576 WR GIE ; ;Write 55h ; ;Write AAh ;Set WR bit to begin write ;Enable INTs. SLEEP BCF BCF BCF EECON1, WREN STATUS, RP0 STATUS, RP1 DS41291E_CN 第114 页 ;Wait for interrupt to signal write complete ;Disable writes ;Bank 0 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 10.1.4 读闪存程序存储器 要读取程序存储器单元,用户必须将地址的高位和低位 分别写入 EEADR 和 EEADRH 寄存器,将 EECON1 寄 存器的 EEPGD 位置 1,然后将控制位 RD 置 1。一旦 设置好读控制位,闪存程序存储器控制器将使用第二个 指令周期来读数据。这会导致紧随“BSF EECON1,RD” 指 令的 第 二 条 指令 被 忽 略。在 紧接 着 的 下 一个 周 期 EEDAT 和 EEDATH 寄存器中就有数据了,因此在随后 的指令中将该数据读作两个字节。 例 10-3: EEDATL 和 EEDATH 寄存器将保存此值直至下一次用 户向该单元读取或写入数据时为止。 注 1:程序存储器读操作后的两条指令必须为 NOP。这可阻止用户在 RD 位置 1 后的下一 条指令执行双周期指令。 2:当 EEPGD = 1 时如果 WR 位置 1,它会立 即复位为 0,而不执行任何操作。 读闪存程序存储器 BANKSEL MOVLW MOVWF MOVLW MOVWF BANKSEL BSF BSF EEADR MS_PROG_EE_ADDR EEADRH LS_PROG_EE_ADDR EEADR EECON1 EECON1, EEPGD EECON1, RD ; ; ;MS Byte of Program Address to read ; ;LS Byte of Program Address to read ; ;Point to PROGRAM memory ;EE Read 必需的 序列 ; ;First instruction after BSF EECON1,RD executes normally NOP NOP ;Any instructions here are ignored as program ;memory is read in second cycle after BSF EECON1,RD ; BANKSEL MOVF MOVWF MOVF MOVWF BCF EEDAT EEDAT, W LOWPMBYTE EEDATH, W HIGHPMBYTE STATUS, RP1 2008 Microchip Technology Inc. ; ;W = LS Byte of Program Memory ; ;W = MS Byte of Program EEDAT ; ;Bank 0 DS41291E_CN 第115 页 PIC16F882/883/884/886/887 图 10-1: 闪存程序存储器读周期执行时序 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 闪存地址 PC 闪存数据 PC + 1 INSTR (PC) INSTR(PC - 1) 在此执行 EEADRH,EEADR INSTR (PC + 1) BSF EECON1,RD 在此执行 PC +3 PC+3 EEDATH,EEDAT INSTR(PC + 1) 在此执行 强制 NOP 在此执行 PC + 5 PC + 4 INSTR (PC + 3) INSTR (PC +4) INSTR(PC + 3) 在此执行 INSTR(PC + 4) 在此执行 读取位 EEDATH EEDAT 寄存器 EERHLT DS41291E_CN 第116 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 10.2 写闪存程序存储器 只有当目标地址位于未被写保护的存储器段时 (如配置 字寄存器 2 中对 WRT<1:0> 位的定义),才能对闪存存 储器执行写操作。闪存程序存储器只能以每 8 个字为一 块的块为单位写入 (对于存储器为 4K 的器件以 4 字块 为单位)。请参见图 10-2 和图 10-3 获得更多相关信息。 存储器的块由具有连续地址的 8 个字组成,由 EEADR<2:0> = 000 定义地址的低边界。所有程序存储 器的块写操作都是通过先擦除 16 字,然后写入 8 字完成 的。写操作是边界对齐的,且不产生跨边界操作。 执行了 BSF EECON1,WR 指令之后,处理器需要 2 个指 令周期以设置擦除 / 写操作。用户必须在将 WR 位置 1 的指令后放置两条 NOP 指令。由于数据被写入缓冲寄存 器,因而可立即实现第一个 7 字块的写操作。只有在擦 除周期时 (即 16 字块的最后一个字被擦除时),处理 器才会使内部操作暂停 4 ms (典型值)时间。因为时 钟和外设仍继续工作,所以这并不是休眠模式。 8 字写 周期结束后,处理器将从 EECON1 写指令后的第三条 指令恢复工作。必须对高 8 字重复执行上述事件序列。 要对程序存储器写入数据,必须首先将数据载入缓冲寄 存器 (见图 10-2)。这是通过将目标地址写入 EEADR 和EEADRH寄存器,再将数据写入EEDATA和EEDATH 寄存器完成的。然后,执行如下事件序列: 1. 2. 3. 将 EECON1 寄存器的 EEPGD 控制位置 1。 先后将 55h 和 AAh 写入 EECON2 (闪存 编程序列)。 将 EECON1 寄存器的 WR 控制位置 1。 所有 8 个缓冲寄存器单元均必须写入正确数据。如果写 入 8 字存储块的字不满 8 个,则必须对未被写入的程序 存储单元执行读操作。此操作从未被写入的程序存储单 元取出数据,并将其装入 EEDATA 和 EEDATH 寄存器。 然后必须执行将数据传送到缓冲寄存器的事件序列。 要将数据从缓冲寄存器传送到程序存储器, EEADR 和 EEADRH 必须指向 8 字存储块的最后一个单元 (EEADR<2:0> = 111)。然后必须执行如下事件序列: 1. 2. 3. 将 EECON1 寄存器的 EEPGD 控制位置 1。 先后将 55h 和 AAh 写入 EECON2 (闪存 编程序列)。 将 EECON1 寄存器的 WR 控制位置 1,开始写 操作。 用户必须按照同样的特定顺序依次开始写入程序存储块 的每个字,写入每个程序字顺序为 000、 001、 010、 011、 100、 101、 110 和 111。当最后一个字 (EEADR<2:0> = 111)的写操作完成时,将自动擦除一 个 16 字的块并将 8 字缓冲寄存器的内容写入程序存储 器。 2008 Microchip Technology Inc. DS41291E_CN 第117 页 PIC16F882/883/884/886/887 图 10-2: 2K 和 4K 闪存程序存储器块写操作 7 5 0 0 7 EEDATH 擦除闪存程序 存储器的 16 个字, 然后在字写操作完成后, 4 个缓冲器中的值 会被自动传送到闪存。 EEDATA 6 8 14 14 第一个 待写入的字块 14 EEADR<1:0> = 00 EEADR<1:0> = 10 EEADR<1:0> = 01 缓冲寄存器 缓冲寄存器 14 EEADR<1:0> = 11 缓冲寄存器 缓冲寄存器 程序存储器 图 10-3: 8K 闪存程序存储器块写操作 7 5 0 0 7 EEDATA EEDATH 6 8 14 14 擦除闪存程序 存储器的 16 个字, 然后在字写操作完成后, 8 个缓冲器中的值 会被自动传送到闪存。 第一个 待写入的字块 14 EEADR<2:0> = 000 缓冲寄存器 EEADR<2:0> = 001 EEADR<2:0> = 010 缓冲寄存器 缓冲寄存器 14 EEADR<2:0> = 111 缓冲寄存器 程序存储器 DS41291E_CN 第118 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 例 10-4 给出了完整的 8 字写序列的示例。将起始地址 装入 EEADRH 和 EEADR 这对寄存器,使用间接寻址 装入 8 字数据。 例 10-4: LOOP 写闪存程序存储器 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; This write routine assumes the following: ; A valid starting address (the least significant bits = '000') ; is loaded in ADDRH:ADDRL ; ADDRH, ADDRL and DATADDR are all located in data memory ; BANKSEL EEADRH MOVF ADDRH,W ; Load initial address MOVWF EEADRH ; MOVF ADDRL,W ; MOVWF EEADR ; MOVF DATAADDR,W ; Load initial data address MOVWF FSR ; MOVF INDF,W ; Load first data byte into lower MOVWF EEDATA ; INCF FSR,F ; Next byte MOVF INDF,W ; Load second data byte into upper MOVWF EEDATH ; INCF FSR,F ; BANKSEL EECON1 BSF EECON1,EEPGD ; Point to program memory BSF EECON1,WREN ; Enable writes BCF INTCON,GIE ; Disable interrupts (if using) BTFSC INTCON,GIE ; See AN576 GOTO $-2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Required Sequence MOVLW 55h ; Start of required write sequence: MOVWF EECON2 ; Write 55h MOVLW 0AAh ; MOVWF EECON2 ; Write 0AAh BSF EECON1,WR ; Set WR bit to begin write NOP ; Required to transfer data to the buffer NOP ; registers ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BCF EECON1,WREN ; Disable writes BSF INTCON,GIE ; Enable interrupts (comment out if not using interrupts) BANKSEL EEADR MOVF EEADR, W INCF EEADR,F ; Increment address ANDLW 0x0F ; Indicates when sixteen words have been programmed SUBLW 0x0F ; 0x0F = 16 words ; 0x0B = 12 words (PIC16F884/883/882 only) ; 0x07 = 8 words ; 0x03 = 4 words(PIC16F884/883/882 only) 2008 Microchip Technology Inc. DS41291E_CN 第119 页 PIC16F882/883/884/886/887 10.3 写校验 根据具体的应用,好的编程习惯一般要求将写入数据 EEPROM 的值对照期望值进行校验 (见例 10-5)。 例 10-5: 写校验 BANKSEL EEDAT MOVF EEDAT, W BANKSEL EECON1 BSF EECON1, RD BANKSEL XORWF BTFSS GOTO : BCF EEDAT EEDAT, W STATUS, Z WRITE_ERR STATUS, RP1 10.3.1 ; ;EEDAT not changed ;from previous write ; ;YES, Read the ;value written ; ; ;Is data the same ;No, handle error ;Yes, continue ;Bank 0 当数据存储器被代码保护时,只有 CPU 可以对数据 EEPROM 执行读 / 写操作。对数据存储器进行代码保护 的同时,建议用户也对程序存储器进行代码保护。这将 防止有人通过在已有代码上写入零 (这将作为 NOP 执 行),来访问一个在未使用的程序存储器中编写的额外 程序,以达到输出数据存储器内容的目的。将程序存储 器中未使用的地址单元编程为 0 有助于防止数据存储器 的代码保护受到破坏。 使用数据 EEPROM 数据 EEPROM 是具有高耐用性,可字节寻址的阵列, 并针对存储频繁更改的信息 (例如,程序变量或其他经 常更新的数据)进行了优化。当某部分变量发生频繁的 更改,而其他部分的变量不变时,则可能会发生超出 EEPROM 的总写周期数 (规范 D124),但却没有超出 单个字节的总写周期数 (规范 D120 和 D120A)的情 况。如果出现上述情况,则必须执行阵列刷新。正因如 此,不常修改的变量(例如常数、ID 和校准值等)应该 存储在闪存程序存储器中。 10.4 避免误写的保护 有些情况下,用户可能不希望向数据 EEPROM 存储器 写入数据。为防止误写 EEPROM,芯片内嵌了各种保 护机制。上电时清零 WREN 位。而且,上电延时定时 器 (延迟时间为 64 ms)会防止对 EEPROM 执行写操 作。 写操作的启动序列以及 WREN 位将共同防止在以下情 况下发生误写操作: • 欠压 • 电源毛刺 • 软件故障 10.5 代码保护下的数据 EEPROM 操作 通过编程将配置字寄存器 1 (寄存器 14-1)中的 CPD 位清零,可以将数据存储器代码保护。 DS41291E_CN 第120 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 10-1: 名称 EECON1 EECON2 EEADR 与数据 EEPROM 相关的寄存器汇总 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 EEPGD — — — WRERR WREN WR RD EEPROM 控制寄存器 2 (不是物理寄存器) EEADR7 EEADR6 EEADR5 EEADR4 所有其他复位 时的值 x--- x000 0--- q000 ---- ---- ---- ---- EEADR3 EEADR2 EEADR1 EEADR0 0000 0000 0000 0000 EEADRH — — — EEADRH3 EEADRH2 EEADRH1 EEADRH0 ---0 0000 ---0 0000 EEDATA EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 EEDAT1 EEDAT0 0000 0000 0000 0000 EEDATH — — EEDATH5 EEDATH4 EEDATH3 EEDATH2 EEDATH1 EEDATH0 --00 0000 --00 0000 INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x PIE2 OSFIE C2IE C1IE EEIE BCLIE ULPWUIE — CCP2IE 0000 00-0 0000 00-0 PIR2 OSFIF C2IF C1IF EEIF BCLIF ULPWUIF — CCP2IF 0000 00-0 0000 00-0 图注: 注 1: EEADRH4 (1) POR 与 BOR 时的值 x = 未知, u = 不变, - = 未实现 (读为 0), q = 取值视条件而定。 数据 EEPROM 模块未使用阴影单元。 仅用于 PIC16F886/PIC16F887。 2008 Microchip Technology Inc. DS41291E_CN 第121 页 PIC16F882/883/884/886/887 注: DS41291E_CN 第122 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 11.0 捕捉 / 比较 /PWM 模块(CCP1 和 CCP2) 该器件包含一个增强型捕捉 / 比较 /PWM (CCP1)和 捕捉 / 比较 /PWM 模块 (CCP2)。 CCP1 和 CCP2 模 块的操作基本相同。不同之处在于只有 CCP1 模块才具 有增强型 PWM 功能。请参见第 11.6 节 “PWM (增强 模式)”了解更多信息。 注: 本文档中的 CCPRx 和 CCPx 分别指 CCPR1 或 CCPR2 和 CCP1 或 CCP2 。 2008 Microchip Technology Inc. DS41291E_CN 第 123 页 PIC16F882/883/884/886/887 11.1 增强型捕捉 / 比较 PWM (CCP1) 表 11-1: 增强型捕捉 / 比较 /PWM 模块是允许用户定时和控制不 同事件的外设。 在捕捉模式下,该外设能对事件的持续 时间计时。捕捉模式允许用户在预先确定的定时时间结 束后触发一个外部事件。 PWM 模式可产生频率和占空 比都可变化的脉宽调制信号。 ECCP 模式所需的定时器资源 ECCP 模式 定时器资源 捕捉 Timer1 比较 Timer1 PWM Timer2 表 11-1 给出了 ECCP 模块所需的定时器资源。 寄存器 11-1: CCP1CON:增强型 CCP1 控制寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位是的值 1=置1 0 = 清零 bit 7-6 bit 5-4 x = 未知 P1M<1:0>:PWM 输出配置位 如果 CCP1M<3:2> = 00、 01 或 10: xx = 指定 P1A 为捕捉 / 比较输入引脚, P1B、 P1C 和 P1D 为端口引脚 如果 CCP1M<3:2> = 11: 00 = 单输出:P1A 调制输出; P1B、 P1C 和 P1D 被分配为端口引脚 01 = 全桥正向输出:P1D 调制输出; P1A 有效; P1B 和 P1C 无效 10 = 半桥输出:P1A 和 P1B 为带死区控制的调制输出; P1C 和 P1D 被分配为端口引脚 11 = 全桥反向输出:P1B 调制输出; P1C 有效; P1A 和 P1D 无效 DC1B<1:0>:PWM 占空比的低两位 捕捉模式: 未使用。 比较模式: 未使用。 PWM 模式: 这两位是 10 位 PWM 占空比的低 2 位。占空比的高 8 位在 CCPR1L 中。 bit 3-0 CCP1M<3:0>:ECCP 模式选择位 0000 = 捕捉 / 比较 /PWM 关闭 (复位 ECCP 模块) 0001 = 未使用 (保留) 0010 = 比较模式,匹配时输出电平翻转 (CCP1IF 置 1) 0011 = 未使用 (保留) 0100 = 捕捉模式,在每个下降沿发生捕捉 0101 = 捕捉模式,在每个上升沿发生捕捉 0110 = 捕捉模式,每 4 个上升沿发生捕捉 0111 = 捕捉模式,每 16 个上升沿发生捕捉 1000 = 比较模式,比较匹配时输出高电平 (CCP1IF 置 1) 1001 = 比较模式,比较匹配时输出低电平 (CCP1IF 置 1) 1010 = 比较模式,比较匹配时产生软件中断 (CCP1IF 位置 1, CCP1 引脚不受影响) 1011 = 比较模式,触发特殊事件 (CCP1IF 位置 1, CCP1 复位 TMR1 或 TMR2) 1100 = PWM 模式; P1A 和 P1C 为高电平有效; P1B 和 P1D 也为高电平有效 1101 = PWM 模式; P1A 和 P1C 为高电平有效; P1B 和 P1D 为低电平有效 1110 = PWM 模式; P1A 和 P1C 为低电平有效; P1B 和 P1D 为高电平有效 1111 = PWM 模式; P1A 和 P1C 为低电平有效; P1B 和 P1D 也为低电平有效 DS41291E_CN 第 124 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 11.2 捕捉 / 比较 /PWM (CCP2) 表 11-2: 捕捉 / 比较 /PWM 模块是允许用户定时和控制不同事件 的外设。 在捕捉模式下,该外设能对事件的持续时间计 时。捕捉模式允许用户在预先确定的定时时间结束后触 发一个外部事件。 PWM 模式可产生频率和占空比都可 变化的脉宽调制信号。 CCP 模式所需的定时器资源 CCP 模式 定时器资源 捕捉 Timer1 比较 Timer1 PWM Timer2 表 11-2 给出了该模块使用的定时器资源。 有关 CCP 模块的更多信息,请参见应用笔记 AN594 “Using the CCP Modules”(DS00594)。 寄存器 11-2: CCP2CON:CCP2 控制寄存器 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — — DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位是的值 1=置1 0 = 清零 x = 未知 bit 7-6 未实现:读为 0 bit 5-4 DC2B<1:0>:PWM 占空比的低两位 捕捉模式: 未使用。 比较模式: 未使用。 PWM 模式: 这两位是 10 位 PWM 占空比的低 2 位。占空比的高 8 位在 CCPR2L 中。 CCP2M<3:0>:CCP2 模式选择位 0000 = 捕捉 / 比较 /PWM 关闭 (复位 CCP2 模块) 0001 = 未使用 (保留) 0010 = 未使用 (保留) 0011 = 未使用 (保留) 0100 = 捕捉模式,在每个下降沿发生捕捉 0101 = 捕捉模式,在每个上升沿发生捕捉 0110 = 捕捉模式,每 4 个上升沿发生捕捉 0111 = 捕捉模式,每 16 个上升沿发生捕捉 1000 = 比较模式,比较匹配时输出高电平 (CCP2IF 置 1) 1001 = 比较模式,比较匹配时输出低电平 (CCP2IF 置 1) 1010 = 比较模式,比较匹配时产生软件中断 (CCP2IF 位置 1, CCP2 引脚不受影响) 1011 = 比较模式,触发特殊事件(CCP2IF 位置 1,TMR1 复位,如果使能 ADC 模块还将启动 A/D 转换。 CCP2 引脚不受影响) 11xx = PWM 模式 bit 3-0 2008 Microchip Technology Inc. DS41291E_CN 第 125 页 PIC16F882/883/884/886/887 11.3 11.3.2 捕捉模式 在捕 捉 模 式 下,当 对 应 的 CCPx 引 脚 发 生 事 件 时, CCPRxH:CCPRxL 这对寄存器捕捉 TMR1 寄存器的 16 位值。触发捕捉的事件可被定义为以下四者之一,并且 由 CCP1CON 寄存器中的 CCP1M<3:0> 位配置: • • • • 每个下降沿 每个上升沿 每 4 个上升沿 每 16 个上升沿 CCP 引脚配置 在捕捉模式下,应通过将对应的 TRIS 控制位置 1 来将 相应的 CCPx 引脚配置为输入。 注: Timer1必须运行在定时器模式或同步计数器模式下CCP 模块才能使用捕捉功能。在异步计数器模式下无法进行 捕捉操作。 11.3.3 软件中断 当捕捉模式改变时,可能会产生错误的捕捉中断。用户 应该保持 PIEx 寄存器中的 CCPxIE 中断允许位清零以 避免产生误中断。在操作模式发生任何改变之后也应清 零 PIRx 寄存器中的中断标志位 CCPxIF。 通过模式选择位 CCPxM3:CCPxM0(CCPxCON<3:0>) 选择事件类型。当一个捕捉发生时,中断请求标志位 PIRx寄存器中的CCPxIF置1;它必须用软件清零。如果 在 CCPRxH 和 CCPRxL 这对寄存器中的值被读取之前 发生另一次捕捉,那么之前捕捉的值将被新捕捉的值覆 盖 (见图 11-1)。 11.3.1 TIMER1 模式选择 如果 CCPx 引脚被配置为输出,对该端口 的写操作可能引发一个捕捉事件。 11.3.4 CCP 预分频器 CCPxCON 寄存器中的 CCPxM<3:0> 位指定了 4 种预分 频器设置。每当关闭 CCP 模块或禁止捕捉模式时,就 会清零预分频器计数器。这意味着任何复位都将清零预 分频计数器。 从一种捕捉预分频比切换到另一种捕捉预分频比不会将 预分频计数器清零,但可能会产生误中断。要避免出现 这 种 不 期 望 的 操 作,应 在 改 变 预 分 频 比 前 通 过 将 CCPxCON 寄存器清零关闭该模块 (见例 11-1)。 例 11-1: 改变捕捉预分频比 BANKSEL CCP1CON 图 11-1: 捕捉模式工作框图 CLRF MOVLW 将标志位 CCPxIF 置 1 (PIRx 寄存器) 预分频器 ÷ 1, 4, 16 CCPx 引脚 和 边沿检测 CCPRxH CCPRxL TMR1H TMR1L MOVWF ;Set Bank bits to point ;to CCP1CON CCP1CON ;Turn CCP module off NEW_CAPT_PS ;Load the W reg with ; the new prescaler ; move value and CCP ON CCP1CON ;Load CCP1CON with this ; value 捕捉 使能 CCPxCON<3:0> 系统时钟(FOSC) DS41291E_CN 第 126 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 11.4 比较模式 11.4.2 TIMER1 模式选择 在比较模式下,16 位 CCPRx 寄存器的值将不断与一对 TMR1 寄存器的值相比较。当两者匹配时, CCPx 模块 可能会出现以下几种情况: 在比较模式下,Timer1 必须运行在定时器模式或同步计 数器模式。在异步计数器模式下,可能无法进行比较操 作。 • • • • • 11.4.3 CCPx 的输出电平翻转 CCPx 输出高电平 CCPx 输出低电平 产生特殊事件触发信号 产生软件中断 当 选 择 了 产 生 软 件 中 断 模 式 时 (CCPxM<3:0> = 1010), CCPx 模块不会控制 CCPx 引脚 (见 CCP1CON 寄存器)。 引脚的动作取决于 CCPx1CON 寄存器中 CCPxM<3:0> 控制位的值。 所有捕捉模式都会产生中断。 图 11-2: 比较模式工作框图 S R 输出 逻辑 比较器 匹配 TMR1H TRIS 输出使能 TMR1L 特殊事件触发信号 特殊事件触发信号将: • 使 TMR1H 和 TMR1L 寄存器清零 • 不会使 PIR1 寄存器中的 TMR1IF 标志位置 1。 • 使 GO/DONE 位置 1 启动 ADC 转换。 11.4.1 特殊事件触发信号 当选择了特殊事件触发模式 (CCPxM<3:0> = 1011) 时, CCPx 模块将完成以下操作: 在该模式下,CCPx 模块不控制 CCPx 引脚(见 CCPxCON 寄存器)。 将 CCPxIF 中断标志位置 1 (PIRx) 4 CCPRxH CCPRxL Q 11.4.4 • 复位 Timer1 • 如果使能了 ADC 还将启动 ADC 转换 CCPxCON<3:0> 模式选择 CCPx 引脚 软件中断模式 当 TMR1H/TMR1L 寄存器对和 CCPRxH/CCPRxL 寄 存器对匹配时 CCP 会立即产生特殊事件触发输出。 TMR1H/TMR1L 寄存器对不会复位直到 Timer1 时钟的 下一个上升沿才复位。从而使 CCPRxH/CCPRxL 寄存 器对实际上成为了 Timer1 的 16 位可编程周期寄存器。 注 1: 来自CCP模块的特殊事件触发信号不会使 PIR1寄存器中的TMRxIF中断标志位置1。 2: 在产生特殊事件触发信号的边沿和导致 Timer1复位的时钟边沿之间改变CCPRxH 和 CCPRxL 寄存器对的内容可清除匹配条 件,从而阻值复位发生。 CCP 引脚配置 用户必须通过将相应的 TRIS 位清零来将 CCPx 引脚配 置为输出。 注: 清零 CCP1CON 寄存器会将 CCPx 比较输 出锁存器强制为默认的低电平。这不是端 口 I/O 数据锁存器。 2008 Microchip Technology Inc. DS41291E_CN 第 127 页 PIC16F882/883/884/886/887 11.5 PWM 模式 PWM模式在CCPx引脚上产生脉宽调制信号。由以下寄 存器确定占空比、周期和分辨率: • • • • PR2 T2CON CCPRxL CCPxCON PWM 输出 (图 11-4)包含一个时基 (周期)和一段 输出保持高电平的时间 (占空比)。 图 11-4: CCP PWM 输出 周期 脉冲宽度 在脉宽调制(PWM)模式下,CCP 模块可在 CCPx 引 脚上输出分辨率高达 10 位的 PWM 信号。由于 CCPx 引脚与端口数据锁存器复用,必须清零相应的 TRIS 位 才能使能 CCPx 引脚的输出驱动器。 TMR2 = PR2 TMR2 = CCPRxL:CCPxCON<5:4> TMR2 = 0 清零 CCPxCON 寄存器将放弃 CCPx 对 CCPx 引脚的控制权。 注: 图 11-3 给出了 PWM 操作的简化框图。 图 11-4 给出了 PWM 信号的典型波形。 如需了解设置 CCP 模块以进行 PWM 操作的详细步骤, 请参见第 11.5.7 节 “设置 PWM 操作”。 图 11-3: 简化的 PWM 框图 CCPxCON<5:4> 占空比寄存器 CCPRxL CCPRxH(2) (从) CCPx R 比较器 TMR2 (1) Q S TRIS 比较器 PR2 注 清零 Timer2, 翻转 CCPx 引脚 的电平并锁存占空比。 1: 8 位定时器 TMR2 寄存器的值与一个 2 位的内 部系统时钟 (FOSC)或预分频器的 2 位相结 合产生 10 位时基。 2: 在 PWM 模式下, CCPRxH 为只读寄存器。 DS41291E_CN 第 128 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 11.5.1 PWM 周期 PWM 周期是通过写 Timer2 的 PR2 寄存器来指定的。 可以使用公式 11-1 计算 PWM 周期: 公式 11-1: PWM 周期 PWM周期 = [ ( PR2 ) + 1 ] • 4 • T OSC • (TMR2 预分频值) 注: TOSC = 1/FOSC 11.5.2 PWM 占空比 可通过将一个 10 位值写入以下多个寄存器来指定 PWM 占空比:CCPRxL 寄存器和 CCPxCON 寄存器的 DCxB<1:0> 位。 CCPRxL 保存占空比的高 8 位,而 CCPxCON 寄存器的 DCxB<1:0> 位保存占空比的低 2 位。可以在任何时候写入 CCPRxL 和 CCPxCON 寄存 器的 DCxB<1:0> 位,但直到 PR2 和 TMR2 中的值匹配 (即周期结束)时,占空比的值才被锁存到 CCPRxH 中。在 PWM 模式下, CCPRxH 是只读寄存器。 公式 11-2 用于计算 PWM 脉冲的宽度。 当 TMR2 等于 PR2 时,在下一个递增计数周期中会发 生以下 3 个事件: 公式 11-3 用于计算 PWM 占空比。 • TMR2 被清零 • CCPx 引脚被置 1 (例外情况:如果 PWM 占空 比 = 0%, CCPx 引脚将不被置 1) • PWM 占空比从 CCPRxL 被锁存到 CCPRxH 公式 11-2: 注: 在确定PWM频率时不使用 Timer2 后分频比 (见第 7.1 节 “Timer2 的工作原理”)。 脉冲宽度 Pulse Width = ( CCPRxL:CCPxCON<5:4> ) • 脉冲宽度 T OSC 公式 11-3: • (TMR2预分频值) 占空比 CCPRxL:CCPxCON<5:4> )Duty Cycle Rati = (---------------------------------------------------------------------占空比 4 ( PR2 + 1 ) CCPRxH 寄存器和一个 2 位的内部锁存器用于为 PWM 占空比提供双重缓冲。这种双重缓冲结构极其重要,可 以避免在 PWM 操作过程中产生毛刺。 8 位定时器 TMR2 寄存器的值与一个 2 位的内部系统时 钟 (FOSC)或预分频器的 2 位相结合,产生 10 位时 基。当 Timer2 预分频比为 1:1 时使用系统时钟。 当 10 位时基与 CCPRxH 和 2 位锁存器相结合的值匹配 时, CCPx 引脚被清零 (见图 11-3)。 2008 Microchip Technology Inc. DS41291E_CN 第 129 页 PIC16F882/883/884/886/887 11.5.3 PWM 分辨率 公式 11-4: 分辨率决定在给定周期内的占空比数。例如,10 位分辨 率将产生 1024 个离散的占空比,而 8 位分辨率将产生 256 个离散的占空比。 当 PR2 为 255 时, PWM 的最大分辨率为 10 位。如 公式 11-4 所示,分辨率是 PR2 寄存器值的函数。 表 11-3: PWM 分辨率 log [ 4 ( PR2 + 1 ) ] 位 Resolution 分辨率 = ------------------------------------------ bits log ( 2 ) 注: 如果脉冲宽度大于周期值,指定的 PWM 引 脚将保持不变。 PWM 频率和分辨率示例 (FOSC = 20 MHz) PWM 频率 1.22 kHz 4.88 kHz 19.53 kHz 78.12 kHz 156.3 kHz 208.3 kHz 定时器预分频值 (1、 4 或 16) 16 4 1 1 1 1 0xFF 0xFF 0xFF 0x3F 0x1F 0x17 10 10 10 8 7 6.6 PR2 值 最高分辨率 (位) 表 11-4: PWM 频率和分辨率示例 (FOSC = 8 MHz) PWM 频率 1.22 kHz 4.90 kHz 19.61 kHz 76.92 kHz 153.85 kHz 200.0 kHz 定时器预分频值 (1、 4 或 16) 16 4 1 1 1 1 0x65 0x65 0x65 0x19 0x0C 0x09 8 8 8 6 5 5 PR2 值 最高分辨率 (位) DS41291E_CN 第 130 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 11.5.4 休眠模式下的操作 11.5.7 设置 PWM 操作 在休眠模式下,TMR2 寄存器将不会递增并且模块的状 态将保持不变。如果 CCPx 引脚有输出,将继续保持该 输出值不变。当器件被唤醒时, TMR2 将从原先的状态 继续工作。 在将 CCP 模块配置为 PWM 操作模式时应该执行以下 步骤: 11.5.5 2. 3. 系统时钟频率的改变 PWM 频率是由系统时钟频率产生的。系统时钟频率发 生任何改变都会使PWM频率发生变化。更多详细信息, 请参见第 4.0 节 “振荡器模块 (带故障保护时钟监视 器)”。 11.5.6 1. 4. 5. 复位的影响 任何复位都会将所有端口强制为输入模式,并强制 CCP 寄存器进入其复位状态。 6. 2008 Microchip Technology Inc. 通过将相应的 TRIS 位置 1,禁止 PWM 引脚 (CCPx)的输出驱动器,使之成为输入引脚。 通过装载 PR2 寄存器设置 PWM 周期。 通过用适当的值装载CCPxCON寄存器配置CCP 模块的 PWM 模式。 通过装载 CCPRxL 寄存器和 CCPxCON 寄存器中 的 DCxB<1:0> 位设置 PWM 占空比。 配置并启动 Timer2: • 清零 PIR1 寄存器中的 TMR2IF 中断标志位。 • 通过装载 T2CON 寄存器的 T2CKPS 位来设 置 Timer2 预分频比。 • 通过将 T2CON 寄存器中的 TMR2ON 位置 1 来使能 Timer2。 在新的 PWM 周期开始后,使能 PWM 输出: • 等待 Timer2 溢出 (PIR1 寄存器中的 TMR2IF 位置 1)。 • 通过将相应的 TRIS 位清零,使能 CCPx 引脚输 出驱动器。 DS41291E_CN 第 131 页 PIC16F882/883/884/886/887 11.6 PWM (增强模式) PWM 输出与 I/O 引脚复用,并被称为 P1A、P1B、P1C 和 P1D。 PWM 引脚的极性是可配置的,通过对 CCP1CON 寄存器中的 CCP1M 位进行适当设置来选择 极性。 增强型 PWM 模式能在最多 4 个不同的引脚上产生分辨 率最高为 10 位的 PWM 信号。它是通过以下 4 种 PWM 输出模式做到这一点的: • • • • 表 11-5 给出了每种增强型 PWM 模式的引脚配置。 单输出 半桥输出 全桥输出,正向模式 全桥输出,反向模式 图 11-5 给出了增强型 PWM 模块的简化框图示例。 注: 为避免在第一次使能PWM时产生不完整的 波形,ECCP 模块将等待新的 PWM 周期开 始后才产生 PWM 信号。 要选择一种增强型 PWM 模式,必须对 CCP1CON 寄存 器中的 P1M 位进行适当设置。 注: 只有增强型捕捉/比较/PWM模块(CCP1) 才可使用增强型 PWM 模式。 图 11-5: 增强型 PWM 模块的简化框图示例 DC1B<1:0> 占空比寄存器 CCP1M<3:0> 4 P1M<1:0> 2 CCPR1L CCP1/P1A CCP1/P1A TRISn CCPR1H(从) P1B R 比较器 TRISn 输出 控制器 Q P1B P1C TMR2 (1) P1C TRISn S P1D 比较器 清零 Timer2, 翻转 PWM 引脚的输出 并锁存占空比 PR2 P1D TRISn PWM1CON 1: 8 位定时器 TMR2 寄存器的值与 2 位的内部 Q 时钟或预分频器中的 2 位相结合构成 10 位时基。 注 1: 必须为每个 PWM 输出适当配置 TRIS 寄存器的值。 注 2: 将 CCPxCON 寄存器清零将放弃 ECCP 对所有 PWM 输出引脚的控制权。 3: 任何不被增强型 PWM 模式使用的引脚都可用作其他引脚功能。 表 11-5: 各种 PWM 增强模式的引脚配置示例 ECCP 模式 P1M<1:0> CCP1/P1A P1B P1C P1D 有 (1) 有 (1) 有 (1) 单输出 00 半桥输出 10 有 有 无 无 全桥输出,正向模式 01 有 有 有 有 全桥输出,反向模式 11 有 有 有 有 注 有 (1) 1: 脉冲转向可使能单输出模式的输出。 DS41291E_CN 第 132 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 11-6: 增强模式 PWM 输出关系示例 (高电平有效状态) 信号 P1M<1:0> PR2+1 脉冲 宽度 0 周期 00 (单输出) P1A 调制 延时 (1) 延时 (1) P1A 调制 10 (半桥) P1B 调制 P1A 有效 (全桥,正向) P1B 无效 01 P1C 无效 P1D 调制 P1A 无效 11 (全桥,反向) P1B 调制 P1C 有效 P1D 无效 关系: • 周期 = 4 * TOSC * (PR2 + 1) * (TMR2 预分频值 ) • 脉冲宽度 = TOSC * (CCPR1L<7:0>:CCP1CON<5:4>) * (TMR2 预分频值 ) • 延时 = 4 * TOSC * (PWM1CON<6:0>) 注 1: 使用 PWM1CON 寄存器编程死区延时 (第 11.6.6 节 “可编程死区延时模式”)。 2008 Microchip Technology Inc. DS41291E_CN 第 133 页 PIC16F882/883/884/886/887 图 11-7: 增强型 PWM 输出关系示例 (低电平有效状态) 信号 P1M<1:0> PR2+1 脉冲 宽度 0 周期 00 (单输出) P1A 调制 P1A 调制 10 (半桥) 延时 (1) 延时 (1) P1B 调制 P1A 有效 (全桥,正向) P1B 无效 01 P1C 无效 P1D 调制 P1A 无效 11 (全桥,反向) P1B 调制 P1C 有效 P1D 无效 关系: • 周期 = 4 * TOSC * (PR2 + 1) * (TMR2 预分频值 ) • 脉冲宽度 = TOSC * (CCPR1L<7:0>:CCP1CON<5:4>) * (TMR2 预分频值 ) • 延时 = 4 * TOSC * (PWM1CON<6:0>) 注 1: 使用 PWM1CON 寄存器编程死区延时 (第 11.6.6 节 “可编程死区延时模式”)。 DS41291E_CN 第 134 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 11.6.1 半桥模式 在半桥输出模式下,两个引脚用作输出端来驱动推挽式 负载。 PWM 输出信号在 CCPx/P1A 引脚上输出,而互 补的 PWM 输出信号在 P1B 引脚上输出 (见图 11-9)。 如图 11-9 所示,此模式可用于半桥应用,或那些使用 2 个 PWM 信号来调制 4 个电源开关的全桥应用。 在半桥输出模式下,可编程的死区延时用来防止在半桥 电 源 设 备 中 产 生 直 通 电 流。 PWM1CON 寄存器中 PDC<6:0> 位的值用来设置输出被驱动为有效前的指令 周期数。如果该值大于占空比,在整个周期内对应的输 出将保持无效。有关死区延时操作的更多详细信息,请 参见第 11.6.6 节 “可编程死区延时模式”。 由于 P1A 和 P1B 输出与端口数据锁存器复用,必须清 零相应的 TRISC 位将 P1A 和 P1B 配置为输出。 图 11-8: 半桥 PWM 输出示例 周期 周期 脉冲宽度 P1A (2) td td P1B(2) (1) (1) (1) td = 死区延时 注 1:此时, TMR2 寄存器的值与 PR2 寄存器的值相等。 2:输出信号为高电平有效。 图 11-9: 半桥应用示例 标准半桥电路(“推挽式”) FET 驱动器 + P1A 负载 FET 驱动器 + P1B - 半桥输出驱动全桥电路 V+ FET 驱动器 FET 驱动器 P1A FET 驱动器 负载 FET 驱动器 P1B 2008 Microchip Technology Inc. DS41291E_CN 第 135 页 PIC16F882/883/884/886/887 11.6.2 全桥模式 在全桥输出模式下,所有 4 个引脚均用作输出。图 11-10 给出了全桥应用的示例。 如图 11-11 所示,在正向模式下,引脚 CCP1/P1A 被驱 动为其有效状态,引脚 P1D 为调制输出,而引脚 P1B 和 P1C 将被驱动为其无效状态。 如图 11-1 所示,在反向模式下,引脚 P1C 被驱动为其有 效状态,引脚 P1B 为调制输出,而引脚 P1A 和 P1D 将 被驱动为其无效状态。 P1A、P1B、P1C 和 P1D 输出与端口数据锁存器复用。 必须清零 TRISC 位将 P1A、P1B、P1C 和 P1D 配置为 输出引脚。 图 11-10: 全桥应用示例 V+ FET 驱动器 QC QA FET 驱动器 P1A 负载 P1B FET 驱动器 P1C FET 驱动器 QD QB VP1D DS41291E_CN 第 136 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 11-11: 全桥 PWM 输出示例 正向模式 周期 P1A(2) 脉冲宽度 P1B(2) P1C(2) P1D(2) (1) (1) 反向模式 周期 脉冲宽度 P1A(2) P1B(2) P1C(2) P1D(2) (1) (1) 注 1 : 此时,TMR2 寄存器的值与 PR2 寄存器的值相等。 注 2 : 所示输出信号为高电平有效。 2008 Microchip Technology Inc. DS41291E_CN 第 137 页 PIC16F882/883/884/886/887 11.6.2.1 全桥模式下的方向更改 在全桥输出模式下,CCP1CON 寄存器中的 P1M1 位使 用户能控制负载中电流为正向还是反向。当应用固件更 改此方向控制位时,模块将在下一个 PWM 周期采用新 的方向。 通过在软件中改变 CCP1CON 寄存器中的 P1M1 位来改 变方向。在当前 PWM 周期结束前,发生以下序列: • 调制的输出 (P1B 和 P1D)被置于其无效状态。 • 相关的非调制输出 (P1A 和 P1C)被切换到以相 反的方向驱动负载。 • 在下一个周期的开始恢复 PWM 调制。 有关该序列的说明请参见图 11-12。 在全桥输出模式下不提供任何死区延时。通常,由于在 任何时间只调制一个输出,所以不需要死区延时。然 而,有一种情形可能需要死区延时,即,当以下两个条 件都成立时的情况: 1. 2. 当输出信号的占空比接近或等于 100% 时,PWM 输出的方向发生改变。 电源开关(包括电源设备和驱动电路)的关断时 间大于导通时间。 图 11-13 所示为占空比接近 100% 时, PWM 方向从正 向更改为反向的示例。在时间 t1 时,输出 P1A 和 P1D 变为无效,而输出 P1C 变为有效。在此示例中,由于电 源设备的关断时间比导通时间长,直通电流可能在时间 段 “t”内流过电源设备 QC 和 QD (见图 11-10)。如 果 PWM 方向从反向更改为正向,电源设备 QA 和 QB 将出现相同的现象。 如果需要在高占空比情况下更改 PWM 方向,消除直通 电流的两种可能的解决方案如下: 1. 2. 在更改方向前的一个 PWM 周期减小 PWM 的占 空比。 使用可使开关元件的关断速度比导通速度更快的 开关驱动器。 可能还存在防止直通电流的其他方法。 图 11-12: PWM 方向更改示例 周期 (1) 信号 周期 P1A(高电平有效) P1B(高电平有效) DC P1C(高电平有效) (2) P1D(高电平有效) 脉冲宽度 注 1: 可在 PWM 周期内的任何时间写 CCP1CON 寄存器中的方向位 P1M1。 2: 当更改方向时, P1A 和 P1C 上的信号在当前 PWM 周期结束之前进行切换。在此期间被调制的 P1B 和 P1D 信 号为无效。这段时间的长度为 (1/Fosc) • TMR2 预分频值。 DS41291E_CN 第 138 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 11-13: 在接近 100% 占空比时 PWM 更改方向的示例 正向周期 反向周期 t1 P1A P1B PW P1C P1D PW TON 外部开关 C TOFF 外部开关 D T = TOFF – TON 潜在的直通电流 注 1: 所示的所有信号均为高电平有效。 2: TON 是电源开关 QC 及其驱动器的导通延时。 3: TOFF 是电源开关 QD 及其驱动器的关断延时。 2008 Microchip Technology Inc. DS41291E_CN 第 139 页 PIC16F882/883/884/886/887 11.6.3 启动注意事项 使用任何 PWM 模式时,应用的硬件时必须在 PWM 输 出引脚上使用适当的外部上拉和 / 或下拉电阻。 注: 当单片机复位结束时,所有的 I/O 引脚都处 于高阻态。外部电路必须将电源开关元件 保持在关断状态,直到单片机用适当的信 号电平驱动 I/O 引脚,或激活 PWM 输出为 止。 CCP1CON寄存器中的CCP1M<1:0>位允许用户为每对 PWM 输出引脚(P1A/P1C 和 P1B/P1D)选择 PWM 输 出 信号 是 高 电 平有 效 还 是 低电 平 有 效。必 须在 使 能 PWM 引脚的输出驱动器之前选择 PWM 输出的极性。 建议不要在使能 PWM 引脚输出驱动器时更改极性配 置,因为这可能会损坏应用电路。 当初始化 PWM 模块时,P1A、P1B、P1C 和 P1D 的输 出锁存器可能处于不正确的状态。使能增强型 PWM 模 式的同时使能 PWM 引脚的输出驱动器有可能损坏应用 电路。必须先将 ECCP 模块使能为正确的输出模式,并 且必须经过一个完整的 PWM 周期后,才能使能 PWM 引脚的输出驱动器。当第 2 个 PWM 周期开始时,如果 PIR1 寄存器中的 TMR2IF 位置 1,即表明经过了一个完 整的 PWM 周期。 DS41291E_CN 第 140 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 11.6.4 增强型 PWM 自动关断模式 ECCPAS 寄存器中的 ECCPASE(自动关断事件状态) 位指示关断状态。如果该位为 0,则 PWM 引脚正常工 作。如果该位为 1,则 PWM 输出处于关断状态。 PWM模式支持自动关断功能,该功能会在外部关断事件 发生时禁止 PWM 输出。自动关断模式将 PWM 输出引 脚置于其预定义状态。该模式用于防止 PWM 破坏应用。 发生关断事件时,将发生以下两个情况: ECCPASE 位被置 1。ECCPASE 将保持置 1,直到被固 件清零或发生自动重启 (见第 11.6.5 节 “自动重启模 式”)。 使用 ECCPAS 寄存器的 ECCPAS<2:0> 位选择自动关断 源。可由以下条件产生自动关断事件: • • • • INT 引脚上的逻辑 0 电平 比较器 C1 比较器 C2 在固件中将 ECCPASE 位置 1 使能的 PWM 引脚将被异步置于其关断状态。 PWM 输 出引脚分成 [P1A/P1C] 和 [P1B/P1D] 两组。由 ECCPAS 寄存器中的 PSSAC 和 PSSBD 位决定每对引脚的状态。 每对引脚都可置于以下三种状态之一: • 驱动为逻辑 1 • 驱动为逻辑 0 • 三态 (高阻态) 图 11-14: 自动关断框图 ECCPAS<2:0> PSSAC<0> P1A_DRV 111 1 0 110 PSSAC<1> 101 P1A TRISx 100 INT 011 来自比较器 C2 010 PSSBD<0> 来自比较器 C1 001 P1B_DRV 000 1 0 PRSEN PSSBD<1> 来自数据总线 写入 ECCPASE R S D Q P1B TRISx ECCPASE PSSAC<0> P1C_DRV 1 0 PSSAC<1> P1C TRISx PSSBD<0> P1D_DRV 1 0 PSSBD<1> TRISx P1D • 2008 Microchip Technology Inc. DS41291E_CN 第 141 页 PIC16F882/883/884/886/887 寄存器 11-3: ECCPAS:增强型捕捉 / 比较 /PWM 自动关断控制寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 ECCPASE:ECCP 自动关断事件状态位 1 = 发生了关断事件; ECCP 输出处于关断状态 0 = ECCP 输出处于工作状态 bit 6-4 ECCPAS<2:0>:ECCP 自动关断源选择位 000 = 禁止自动关断 001 = 比较器 C1 输出高电平 010 = 比较器 C2 输出高电平 (1) 011 = 比较器 C1 或 C2 之一输出高电平 100 = INT 引脚上的 VIL 101 = INT 引脚上的 VIL 或比较器 C1 输出高电平 110 = INT 引脚上的 VIL 或比较器 C2 输出高电平 111 = INT 引脚上的 VIL 或者比较器 C1 或比较器 C2 之一输出高电平 bit 3-2 PSSACn:引脚 P1A 和 P1C 关断状态控制位 00 = 将引脚 P1A 和 P1C 驱动为 0 01 = 将引脚 P1A 和 P1C 驱动为 1 1x = 引脚 P1A 和 P1C 处于三态 bit 1-0 PSSBDn:引脚 P1B 和 P1D 关断态控制位 00 = 将引脚 P1B 和 P1D 驱动为 0 01 = 将引脚 P1B 和 P1D 驱动为 1 1x = 引脚 P1B 和 P1D 处于三态 注 注 x = 未知 1: 如果使能 C2SYNC,关断将会被 Timer1 延时。 1: 自动关断条件是基于电平而不是基于边沿 的事件。只要关断电平存在,自动关断就 将保持。 2: 当 存 在 自 动 关 断 条 件 时,禁 止 写 入 ECCPASE 位。 3: 一旦清除了自动关断条件并重启了 PWM (通过固件或自动重启),PWM 信号将始 终从下一个 PWM 周期开始时重启。 DS41291E_CN 第 142 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 11-15: 带有固件重启的 PWM 自动关断 (PRSEN = 0) 关断事件 ECCPASE 位 PWM 活动 PWM 周期 PWM 周期的开始 11.6.5 由固件清零 ECCPASE 发生关断事件 清除关断事件 PWM 恢复 自动重启模式 可以将增强型 PWM 配置为一旦清除自动关断条件就自 动重启 PWM 信号。通过将 PWM1CON 寄存器中的 PRSEN 位置 1 使能自动重启。 如 果 使 能 自 动 重 启,只 要 自 动 关 断 条 件 有 效, ECCPASE 位就将保持置 1。当清除自动关闭条件时, 将通过硬件将 ECCPASE 位清零,并且将恢复常规操 作。 图 11-16: 使能自动重启的 PWM 自动关闭 (PRSEN = 1) 关闭事件 ECCPASE 位 PWM 活动 PWM 周期 PWM 周期的开始 2008 Microchip Technology Inc. 发生关断事件 清除关断事件 PWM 恢复 DS41291E_CN 第 143 页 PIC16F882/883/884/886/887 11.6.6 图 11-17: 可编程死区延时模式 在半桥应用中,模块一直以 PWM 频率调制所有的电源 开关,关闭电源开关通常比打开它需要更多的时间。如 果上方的电源开关和下方的电源开关同时开关(一个打 开,另一个关闭),两个开关可能会在一段很短的时间 内都处于打开状态,直到一个开关完全关闭为止。在这 很短的间隔内,很大的电流 (直通电流)可能流过两个 电源开关,从而导致半桥供电电路短路。为了避免在开 关期间流过这种潜在的破坏性直通电流,一般延迟打开 其中的一个电源开关以允许另一个开关完全关闭。 在半桥输出模式下,可数字编程的死区延时可用来避免 直通电流破坏电源开关。该延时在信号从非有效状态到 有效状态转换时发生。参见图 11-17。相关 PWM1CON 寄存器 (寄存器 11-4)的低 7 位以单片机指令周期为单 位设置延时 (TCY 或 4 TOSC)。 图 11-18: 半桥 PWM 输出示例 周期 周期 脉冲宽度 P1A(2) td td P1B(2) (1) (1) (1) td = 死区延时 注 1:此时, TMR2 寄存器的值与 PR2 寄存器的值相等。 2:输出信号为高电平有效。 半桥应用示例 V+ 标准半桥电路(“推挽式”) FET 驱动器 + V - P1A 负载 FET 驱动器 + V - P1B V- DS41291E_CN 第 144 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 寄存器 11-4: PWM1CON:增强型 PWM 控制寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 x = 未知 PRSEN:PWM 重启使能位 1 = 自动关断时,一旦关断事件被清除, ECCPASE 位将立即自动清零; PWM 自动重启 0 = 自动关断时,必须用软件清零 ECCPASE 位以重启 PWM bit 6-0 PDC<6:0>:PWM 延时计数位 PDCn = PWM 信号转换到有效的预计时间和实际时间之差,以 FOSC/4(4 * TOSC) 周期的倍数表示 2008 Microchip Technology Inc. DS41291E_CN 第 145 页 PIC16F882/883/884/886/887 11.6.7 脉冲转向模式 在单输出模式下,脉冲转向允许任何 PWM 引脚输出被 调制的信号。此外,同一个 PWM 信号也可同时从多个 引脚获取。 注: 一 旦 选 择 了 单 输 出 模 式 (CCP1CON 寄 存 器 中的 CCP1M<3:2> = 11 且 P1M<1:0> = 00),可通过在用 户固件中设置 PSTRCON 寄存器中相应的 STR<D:A> 位将同一个 PWM 信号从 1 个、 2 个、 3 或 4 个输出引 脚输出,如表 11-5 所示。 相应的 TRIS 位必须被设置为输出 (0)以 使能引脚输出驱动器,从而使 PWM 信号从 引脚输出。 当 PWM 控制模式有效时, CCP1CON 寄存器中的 CCP1M<1:0> 位选择 P1<D:A> 引脚的 PWM 输出极性。 如第 11.6.4 节 “增强型 PWM 自动关断模式”所述, PWM 自动关断操作也适用于 PWM 控制模式。自动关 断事件只影响那些使能 PWM 输出的引脚。 PSTRCON:脉冲换向控制寄存器 (1) 寄存器 11-5: U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-1 — — — STRSYNC STRD STRC STRB STRA bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7-5 未实现:读为 0 bit 4 STRSYNC:转向同步位 1 = 在下一个 PWM 周期发生输出转向更新 0 = 在指令周期边界开始处发生输出操作更新 bit 3 STRD:转向使能位 D 1 = P1D 引脚输出 PWM 信号,由 CCPxM<1:0> 控制器输出的极性 0 = P1D 引脚被分配为端口引脚 bit 2 STRC:转向使能位 C 1 = P1C 引脚输出 PWM 信号,由 CCPxM<1:0> 控制器输出的极性 0 = P1C 引脚被分配为端口引脚 bit 1 STRB:转向使能位 B 1 = P1B 引脚输出 PWM 信号,由 CCPxM<1:0> 控制器输出的极性 0 = P1B 引脚被分配为端口引脚 bit 0 STRA:转向使能位 A 1 = P1A 引脚输出 PWM 信号,由 CCPxM<1:0> 控制器输出的极性 0 = P1A 引脚被分配为端口引脚 注 x = 未知 1: 只有在 CCP1CON 寄存器的 CCP1M<3:2> = 11 且 P1M<1:0> = 00 时, PWM 转向模式才可用。 DS41291E_CN 第 146 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 11-19: 简化的操作框图 STRA P1A 信号 CCP1M1 端口数据 P1A 引脚 1 0 STRB CCP1M0 1 端口数据 0 STRC CCP1M1 1 端口数据 0 端口数据 P1B 引脚 TRIS P1C 引脚 TRIS STRD CCP1M0 TRIS P1D 引脚 1 0 TRIS 注 1: 当 CCP1CON 寄存器的 P1M<1:0> = 00 且 CCP1M<3:2> = 11 时,端口输出如图示配置。 2: 单 PWM 输出要求至少将一个 STRx 位置 1。 2008 Microchip Technology Inc. DS41291E_CN 第 147 页 PIC16F882/883/884/886/887 11.6.7.1 转向同步 PSTRCON 寄存器中的 STRSYNC 位向用户提供了何时 发生转向事件的两种选择。当 STRSYNC 位为 0 时,转 向事件将会在写入 PSTRCON 寄存器的指令结束前发 生。在此情形下,P1<D:A>引脚可能输出不完整的PWM 波形。当用户固件需要使引脚立即停止 PWM 信号输出 时,该操作很有用。 图 11-20 和图 11-21 说明了 PWM 转向在不同 STRSYNC 设置下的时序图。 当 STRSYNC 位为 1 时,实际的转向更新将发生在下一 个 PWM 周期的开始。在此情形下,转向开 / 关 PWM 输出将始终产生完整的 PWM 波形。 图 11-20: 发生在指令结束前的换向事件示例 (STRSYNC = 0) PWM 周期 PWM STRn P1<D:A> 端口数据 端口数据 P1n = PWM 图 11-21: 发生在指令开始时的换向事件示例 (STRSYNC = 1) PWM STRn P1<D:A> 端口数据 端口数据 P1n = PWM DS41291E_CN 第 148 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 11-6: 与捕捉、比较和 TIMER1 相关的寄存器 Bit 3 Bit 2 Bit 1 Bit 0 POR和BOR 所有其他复位 时的值 时的值 Bit 7 Bit 6 Bit 5 Bit 4 CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 0000 0000 CCP2CON — — DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000 --00 0000 名称 CCPR1L 捕捉 / 比较 /PWM 寄存器 1 的低字节 (LSB) xxxx xxxx xxxx xxxx CCPR1H 捕捉 / 比较 /PWM 寄存器 1 的高字节 (MSB) xxxx xxxx xxxx xxxx CCPR2L 捕捉 / 比较 /PWM 寄存器 2 的低字节 (LSB) xxxx xxxx xxxx xxxx CCPR2H 捕捉 / 比较 /PWM 寄存器 2 的高字节 (MSB) xxxx xxxx xxxx xxxx CM2CON1 INTCON MC1OUT MC2OUT C1RSEL C2RSEL — — T1GSS C2SYNC 0000 --10 0000 --10 GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000 PIE2 OSFIE C2IE C1IE EEIE BCLIE ULPWUIE — CCP2IE 0000 00-0 0000 00-0 PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000 PIR2 OSFIF C2IF C1IF EEIF BCLIF ULPWUIF — CCP2IF 0000 00-0 0000 00-0 T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON T1CON 0000 0000 0000 0000 TMR1L 16 位 TMR1 寄存器低字节的保持寄存器 xxxx xxxx xxxx xxxx TMR1H 16 位 TMR1 寄存器高字节的保持寄存器 xxxx xxxx xxxx xxxx 1111 1111 1111 1111 TRISC 图注: TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 - = 未实现单元 (读为 0), u = 不变, x = 未知。捕捉和比较操作不使用阴影单元。 表 11-7: 与 PWM 和 TIMER2 相关的寄存器 Bit 6 Bit 5 Bit 4 CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 0000 0000 CCP2CON — — DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000 --00 0000 ECCPAS ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 0000 0000 0000 0000 INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x — STRSYNC STRD STRC STRB STRA PR2 Bit 3 Bit 2 Bit 1 Bit 0 POR和BOR 所有其他复 时的值 位时的值 Bit 7 名称 Timer2 周期寄存器 1111 1111 1111 1111 ---0 0001 ---0 0001 PSTRCON — PWM1CON PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 0000 0000 0000 0000 — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000 T2CON TMR2 — Timer2 模块寄存器 0000 0000 0000 0000 TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 1111 TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111 TRISD TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 1111 1111 1111 1111 图注: - = 未实现单元 (读为 0), u = 不变, x = 未知。 PMW 操作不使用阴影单元。 2008 Microchip Technology Inc. DS41291E_CN 第 149 页 PIC16F882/883/884/886/887 注: DS41291E_CN 第 150 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 12.0 增强型通用同步 / 异步收发器 (EUSART) EUSART 模块包含如下功能: • • • • • • • • • • • 增强型通用同步 / 异步收发器 (EUSART)模块是一个 串行 I/O 通信外设。该模块包括所有执行与器件程序执 行无关的输入或输出串行数据传输所必需的时钟发生 器、移位寄存器和数据缓冲器。EUSART 也可称为串行 通信接口 (Serial Communications Interface, SCI), 它可被配置为能与 CRT终端和个人计算机等外设通信的 全双工异步系统;也可以被配置为能与 A/D 或 D/A 集成 电路、串行 EEPROM 等外设或其他单片机通信的半双 工同步系统。与之通信的单片机通常不具有产生波特率 的内部时钟,它需要主控同步器件提供外部时钟信号。 全双工异步发送和接收 双字符输入缓冲器 单字符输出缓冲器 可将字符长度编程为 8 位或 9 位 9 位模式下的地址检测 输入缓冲溢出错误检测 接收到字符的帧错误检测 半双工同步主控模式 半双工同步从动模式 同步模式下,可编程时钟极性 休眠工作 EUSART 模块可实现如下附加功能,从而使其成为局域 互联网络 (Local Interconnect Network, LIN)总线系 统的理想选择: • 自动波特率检测和校准 • 接收到间隔字符时唤醒 • 13 位间隔字符发送 图 12-1 和图 12-2 给出了 EUSART 收发器的框图。 图 12-1: EUSART 发送框图 数据总线 TXIE 中断 TXIF TXREG 寄存器 8 MSb TX/CK 引脚 LSb • • • (8) 0 引脚缓冲 和控制 发送移位寄存器(TSR) TXEN TRMT 波特率发生器 FOSC +1 SPBRGH ÷n TX9 n BRG16 SPBRG 倍频器 x4 x16 x64 SYNC 1 X 0 0 0 BRGH X 1 1 0 0 BRG16 X 1 0 1 0 2008 Microchip Technology Inc. SPEN TX9D DS41291E_CN 第151 页 PIC16F882/883/884/886/887 图 12-2: EUSART 接收框图 SPEN CREN RX/DT 引脚 波特率发生器 数据 恢复 FOSC BRG16 +1 SPBRGH SPBRG 倍频器 x4 x16 x64 SYNC 1 X 0 0 0 BRGH X 1 1 0 0 BRG16 X 1 0 1 0 RCIDL RSR 寄存器 MSb 引脚缓冲 和控制 OERR ••• 停止位(8) 7 LSb 1 0 起始位 RX9 ÷n n FERR RX9D RCREG 寄存器 8 FIFO 数据总线 RCIF RCIE 中断 EUSART 模块的操作是通过 3 个寄存器控制的: • 发送状态和控制寄存器 (TXSTA) • 接收状态和控制寄存器 (RCSTA) • 波特率控制寄存器 (BAUDCTL) 寄存器 12-1、寄存器 12-2 和寄存器 12-3 分别详细介绍 了这些寄存器。 DS41291E_CN 第152 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 12.1 EUSART 异步模式 EUSART 使用标准不归零码 (non-return-to-zero, NRZ)格式发送和接收数据。使用 2 种电平实现 NRZ: 代表 1 数据位的 VOH 标号状态 (mark state),和代表 0 数据位的 VOL 空格状态(space state)。采用 NRZ 格式 连续发送相同值的数据位时,输出电平将保持该位的电 平,而不会在发送完每个位后返回中间电平值。NRZ 发 送端口在标号状态空闲。每个发送的字符都包括一个起 始位,后面跟有 8 个或 9 个数据位和一个或多个终止字 符发送的停止位。起始位总是处于空格状态,停止位总 是处于标号状态。最常用的数据格式为 8 位。每个发送 位的持续时间为 1/( 波特率 )。片上专用 8 位 /16 位波特 率发生器可用于通过系统振荡器产生标准波特率频率。 请参见表 12-5 了解波特率配置示例。 EUSART 首先发送和接收 LSb。 EUSART 的发送器和 接收器在功能上是相互独立的,但采用相同的数据格式 和波特率。硬件不支持奇偶校验,但可以用软件实现 (奇偶校验位是第 9 个数据位)。 12.1.1 EUSART 异步发生器 图 12-1 所示为 EUSART 发送器的框图。发送器的核心 是串行发送移位寄存器 (TSR),该寄存器不能由软件 直接访问。TSR 从 TXREG 发送缓冲寄存器获取数据。 12.1.1.1 使能发送器 通过配置如下三个控制位使能 EUSART 发送器,以用 于异步操作: • TXEN = 1 • SYNC = 0 • SPEN = 1 假设所有其他 EUSART 控制位处于其默认状态。 将 TXSTA 寄存器的 TXEN 位置 1,使能 EUSART 发送 器电路。将 TXSTA 寄存器的 SYNC 位清零,将 EUSART 配置用于异步操作。将 RCSTA 寄存器的 SPEN 位置 1, 使能 EUSART 并自动将 TX/CK I/O 引脚配置为输出引 脚。如果与模拟外设共用 TX/CK 引脚,必须清零相应的 ANSEL 位禁止模拟 I/O 功能。 2008 Microchip Technology Inc. 注 1: 将 SPEN 位置 1 会自动将 RX/DT I/O 引脚 配置为输入引脚时,无论相关的 TRIS 位的 状态如何以及 EUSART 接收器使能与否。 可以通过普通端口读 RX/DT 引脚数据,但 却无法使用该端口锁存输出数据。 2: 如果 TXEN 使能位置 1,TXIF 发送器中断 标志位会置 1。 12.1.1.2 发送数据 向 TXREG 寄存器写入一个字符,以启动发送。如果这 是第一个字符,或者前一个字符已经完全从 TSR 中移 出,TXREG 中的数据会立即发送给 TSR 寄存器。如果 TSR 中仍保存全部或部分前一字符,新的字符数据将保 存在 TXREG 中,直到发送完前一字符的停止位为止。 然后,在停止位发送完毕后经过一个 TCY,TXREG 中待 处理的数据将被传输到 TSR。当数据从 TXREG 传输至 TSR 后,立即开始进行起始位、数据位和停止位序列的 发送。 12.1.1.3 发送中断标志 只要使能 EUSART 发送器且 TXREG 中没有待发送数 据,就将 PIR1 寄存器的 TXIF 中断标志位置 1。换句话 说,只有当 TSR 忙于处理字符和 TXREG 中有排队等待 发送的新字符时, TXIF 位才处于清零状态。写 TXREG 时,不立即清零 TXIF 标志位。 TXIF 在写指令后的第 2 个指令周期清零。在写 TXREG 后立即查询 TXIF 会返回 无效结果。 TXIF 为只读位,不能由软件置 1 或清零。 可通过将 PIE1 寄存器的 TXIE 中断允许位置 1 允许 TXIF 中断。然而,只要 TXREG 为空,不管 TXIE 允许位的 状态如何都会将 TXIF 标志位置 1。 如果要在发送数据时使用中断,只在有待发送数据时, 才将 TXIE 位置 1。当将待发送的最后一个字符写入 TXREG 后,将 TXIE 中断允许位清零。 DS41291E_CN 第153 页 PIC16F882/883/884/886/887 12.1.1.4 TSR 状态 12.1.1.6 TXSTA 寄存器的 TRMT 位指示 TSR 寄存器的状态。 TRMT 位为只读位。当 TSR 寄存器为空时, TRMT 位 被置 1,当有字符从 TXREG 传输到 TSR 寄存器时, TRMT 被清零。TRMT 位保持清零状态,直到所有位从 TSR 寄存器移出为止。没有任何中断逻辑与该位有关, 所以用户必须查询该位来确定 TSR 位的状态。 1. 2. 3. TSR 寄存器并未映射到数据存储器中,因 此用户不能直接访问它。 注: 12.1.1.5 4. 发送 9 位字符 EUSART 支持 9 位字符发送。当 TXSTA 寄存器的 TX9 位置 1 时, EUSART 将移出每个待发送字符的 9 位。 TXSTA 寄存器的 TX9D 位为第 9 位,即最高数据位。当 发送 9 位数据时,必须在将 8 个最低位写入 TXREG 之 前,写 TX9D 数据位。在写入 TXREG 寄存器后会立即 将 9 个数据位传输到 TSR 移位寄存器。 5. 6. 7. 设置异步发送: 初始化 SPBRGH 和 SPBRG 这对寄存器以及 BRGH 和 BRG16 位,以获得所需的波特率 (见 第12.3节“EUSART波特率发生器(BRG)”)。 通过将 SYNC 位清零并将 SPEN 位置 1 使能异 步串口。 如果需要 9 位发送,将 TX9 控制位置 1。当接收 器被设置为进行地址检测时,将数据位的第 9 位 置 1,指示 8 个最低数据位为地址。 将 TXEN 控制位置 1,使能发送;这将导致 TXIF 中断标志位置 1。 如果需要中断,将 PIE1 寄存器中的 TXIE 中断允 许位置 1 ;如果 INTCON 寄存器的 GIE 和 PEIE 位也置 1 将立即产生中断。 若选择发送 9 位数据,第 9 位应该被装入 TX9D 数据位。 将 8 位数据装入 TXREG 寄存器开始发送数据。 使用多个接收器时可使用特殊的 9 位地址模式。请参见 第 12.1.2.7 节 “地址检测”获得有关地址模式的更多 信息。 图 12-3: 异步发送 写入 TXREG 字1 BRG 输出 (移位时钟) TX/CK 引脚 起始位 bit 7/8 停止位 1 TCY 字1 发送移位寄存器 TRMT 位 (发送移位 寄存器空标志) 异步发送 (背靠背) 写入 TXREG TX/CK 引脚 TXIF 位 (发送缓冲寄 存器空标志) 字2 字1 BRG 输出 (移位时钟) 起始位 bit 0 1 TCY TRMT 位 (发送移位 寄存器空标志) 注: bit 1 字1 TXIF 位 (发送缓冲 寄存器空标志) 图 12-4: bit 0 bit 1 字1 bit 7/8 停止位 起始位 bit 0 字2 1 TCY 字1 发送移位寄存器 字2 发送移位寄存器 本时序图显示了两次连续的发送。 DS41291E_CN 第154 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 12-1: 名称 与异步发送相关的寄存器 Bit 7 BAUDCTL ABDOVF Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 所有其他复位 时的值 时的值 RCIDL — SCKP BRG16 — WUE ABDEN 01-0 0-00 01-0 0-00 GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000 PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000 0000 0000 0000 0000 CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x INTCON RCREG RCSTA EUSART 接收数据寄存器 RX9 SREN SPEN SPBRG BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0 0000 0000 0000 0000 SPBRGH BRG15 BRG14 BRG13 BRG12 BRG11 BRG10 BRG9 BRG8 0000 0000 0000 0000 TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111 0000 0000 0000 0000 0000 0010 0000 0010 TRISC TXREG TXSTA EUSART 发送数据寄存器 CSRC TX9 TXEN 图注: x = 未知, - = 未实现 (读为 0)。异步发送不使用阴影单元。 2008 Microchip Technology Inc. SYNC SENDB BRGH TRMT TX9D DS41291E_CN 第155 页 PIC16F882/883/884/886/887 12.1.2 EUSART 异步接收器 异步模式通常用于 RS-232 系统。图 12-2 给出了接收器 的框图。在 RX/DT 引脚上接收数据和驱动数据恢复电 路。数据恢复电路实际上是一个以 16 倍波特率为工作 频率的高速移位器,而串行接收移位寄存器 (Receive Shift Register,RSR)则以比特率工作。当字符的全部 8 位或 9 位数据位被移入后,立即将它们传输到一个 2 字符的先入先出 (FIFO)缓冲器。 FIFO 缓冲器允许接 收 2 个完整的字符和第 3 个字符的起始位,然后必须由 软件将接收到的数据提供给 EUSART 接收器。FIFO 和 RSR 寄存器不能直接由软件访问。通过 RCREG 寄存器 访问接收到的数据。 12.1.2.1 使能接收器 通过配置如下三个控制位使能 EUSART 接收器,以用 于异步操作。 • CREN = 1 • SYNC = 0 • SPEN = 1 假设所有其他 EUSART 控制位都处于默认状态。 将 RCSTA 寄存器的 CREN 位置 1,使能 EUSART 接收 器电路。将 TXSTA 寄存器的 SYNC 位清零,配置 EUSART 以用于异步操作。将 RCSTA 寄存器的 SPEN 位置 1,使能 EUSART 并自动将 RX/DT I/O 引脚配置为 输入引脚。如果 RX/DT 引脚与模拟外设共用,必须清零 相应的 ANSEL 位禁止模拟 I/O 功能。 注: 当将 SPEN 位置 1,TX/CK I/O 引脚被自动 配置为输出引脚时,无需考虑相应 TRIS 位 的状态以及 EUSART 发送器使能与否。端 口锁存器与输出驱动器是断开的,从而不 能将 TX/CK 引脚用作通用输出引脚。 12.1.2.2 接收数据 接收器数据恢复电路在第一个位的下降沿开始接收字 符。第一个位,通常称为起始位,始终为 0。由数据恢 复电路计数半个位时间,到起始位的中心位置,校验该 位是否仍为零。如果该位不为零,数据恢复电路放弃接 收该字符,而不会产生错误,并且继续查找起始位的下 降沿。如果起始位零校验通过,则数据恢复电路计数一 个完整的位时间,到达下一位的中心位置。由择多检测 电路对该位进行采样,将相应的采样结果 0 或 1 移入 RSR。重复该过程,直到完成所有数据位的采样并将其 全部移入 RSR 寄存器。测量最后一个位的时间并采样 其电平。此位为停止位,总是为 1。如果数据恢复电路 在停止位的位置采样到 0,则该字符的帧错误标志将置 1,反 之,该 字 符 的 帧 错 误 标 志 会 清 零。请 参 见 第 12.1.2.4 节 “接收帧错误”获得有关帧错误的更多相关 信息。 当接收到所有数据位和停止位后,RSR 中的字符会被立 即传输到 EUSART 的接收 FIFO 并将 PIR1 寄存器的 RCIF 中断标志位置 1。通过读 RCREG 寄存器将 FIFO 最顶端的字符移出 FIFO。 注: 12.1.2.3 如果接收 FIFO 溢出,则不能再继续接收其 他字符,直到溢出条件被清除。请参见第 12.1.2.5 节 “接收溢出错误”获得有关溢 出错误的更多相关信息。 接收中断 只要使能 EUSART 接收器且在接收 FIFO 中没有未读数 据,PIR1 寄存器中的 RCIF 中断标志位就会置 1。RCIF 中断标志位为只读,不能由软件置 1 或清零。 通过将下列所有位均置 1 来允许 RCIF 中断: • PIE1 寄存器的 RCIE 中断允许位 • INTCON 寄存器的 PEIE 外设中断允许位 • INTCON 寄存器的 GIE 全局中断允许位 如果 FIFO 中有未读数据,无论中断允许位的状态如何, 都会将 RCIF 中断标志位置 1。 DS41291E_CN 第156 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 12.1.2.4 接收帧错误 接收 FIFO 缓冲器中的每个字符都有一个相应的帧错误 状态位。帧错误指示未在预期的时间内接收到停止位。 由 RCSTA 寄存器的 FERR 位获取帧错误状态。 FERR 位代表接收 FIFO 最顶端未读字符的状态。因此,必须 在读 RCREG 寄存器之前读 FERR 位。 FERR 位为只读位,且只能用于接收 FIFO 的最顶端未 读字符。帧错误 (FERR = 1)并不会阻止接收更多的 字符。无需清零 FERR 位。从 FIFO 缓冲器读下一字符 会使 FIFO 指针前进至下一字符和下一个相应的帧错 误。 清零 RCSTA 寄存器的 SPEN 位会复位 EUSART,并强 制清零 FERR 位。清零 RCSTA 寄存器的 CREN 位不影 响 FERR 位。帧错误本身不会产生中断。 注: 12.1.2.5 12.1.2.7 地址检测 当多个接收器共享同一传输线时 (如在 RS-485 系统 中),可使用特殊地址检测模式。将 RCSTA 寄存器的 ADDEN 位置 1,使能地址检测模式。 地址检测要求接收 9 位字符。使能地址检测后,只有第 9 位数据位被置 1 的字符可以被传输到接收 FIFO 缓冲 器,从而使 RCIF 中断标志位置 1。所有其他字符将被 忽略。 由用户软件判断接收到的地址字符是否与其匹配。如果 匹配,用户软件必须在下一个停止位产生之前,清零 ADDEN 位以禁止地址检测。当用户软件检测到信息的 末尾(由所使用的信息协议判断)时,由软件将 ADDEN 位置 1,从而使接收器返回地址检测模式。 如果接收 FIFO缓冲器中所有接收到的字符 都有帧错误,重复读 RCREG 不会清零 FERR 位。 接收溢出错误 接收 FIFO 缓冲器可以保存 2 个字符。但如果在访问 FIFO 之前,接收到完整的第 3 个字符,则会产生溢出 错误。此时, RCSTA 寄存器的 OERR 位会置 1。可以 读取 FIFO 缓冲器内的字符,但是在错误清除之前,不 能再接收其他字符。可以通过清零 RCSTA 寄存器的 CREN 位或通过清零 RCSTA 寄存器的 SPEN 位使 EUSART 复位来清除错误。 12.1.2.6 接收 9 位字符 EUSART 支持 9 位数据接收。将 RCSTA 寄存器的 RX9 位置 1 时, EUSART 将接收到的每个字符的 9 位移入 RSR。 RCSTA 寄存器的 RX9D 位是接收 FIFO 顶端未 读字符的第 9 位,同时也是最高数据位。当从接收 FIFO 缓冲器读取 9 位数据时,必须在读 RCREG 中的低 8 位 之前,读取 RX9D 数据位。 2008 Microchip Technology Inc. DS41291E_CN 第157 页 PIC16F882/883/884/886/887 12.1.2.8 1. 2. 3. 4. 5. 6. 7. 8. 9. 12.1.2.9 异步接收设置 初始化 SPBRGH 和 SPBRG 这对寄存器以及 BRGH 和 BRG16 位,以获得所需的波特率 (见 第12.3节“EUSART波特率发生器(BRG)”)。 将 SPEN 位置 1,使能串行端口。必须清零 SYNC 位以执行异步操作。 如果需要中断,将 PIE1 寄存器中的 RCIE 位和 INTCON 寄存器的 GIE 和 PEIE 位置 1。 如果需要接收 9 位数据,将 RX9 位置 1。 将 CREN 位置 1 使能接收。 当一个字符从 RSR 传输到接收缓冲器时,将 RCIF 中断标志位置 1。如果 RCIE 中断允许位也 置 1 还将产生中断。 读 RCSTA 寄存器获取错误标志位和第 9 位数据 位 (如果使能 9 位数据接收)。 读 RCREG 寄存器,从接收缓冲器获取接收到的 8 个低数据位。 如果发生溢出,通过清零 CREN 接收器使能位清 零 OERR 标志。 图 12-5: 9 位地址检测模式设置 此模式通常用在 RS-485 系统中。要设置使能地址检测 的异步接收: 1. 初始化 SPBRGH 和 SPBRG 这对寄存器以及 BRGH 和 BRG16 位,以获得所需的波特率 (见 第12.3节“EUSART波特率发生器(BRG)”)。 2. 将 SPEN 位置 1,使能串行端口。必须清零 SYNC 位以执行异步操作。 3. 如果需要中断,将 PIE1 寄存器中的 RCIE 位和 INTCON 寄存器的 GIE 和 PEIE 位置 1。 4. 将 RX9 位置 1,使能 9 位数据接收。 5. 将 ADDEN 位置 1,使能地址检测。 6. 将 CREN 位置 1 使能接收。 7. 当一个第 9 位置 1 的字符从 RSR 传输到接收缓 冲器时,将 RCIF 中断标志位置 1。如果 RCIE 中 断允许位也置 1 还将产生中断。 8. 读 RCSTA 寄存器获取错误标志位。第 9 个数据 位始终置 1。 9. 读 RCREG 寄存器,从接收缓冲器获取接收到的 8 个低数据位。由软件判断此地址是否为本地器 件的地址。 10. 如果发生溢出,通过清零 CREN 接收器使能位清 零 OERR 标志。 11. 如果是对当前器件寻址,将 ADDEN 位清零以允 许所有接收到的数据进入接收缓冲器并产生中 断。 异步接收 起始 位 bit 0 RX/DT 引脚 接收移位 寄存器 接收缓冲寄存器 RCIDL bit 1 bit 7/8 停止 位 起始 位 字1 RCREG bit 0 bit 7/8 停止 位 起始 位 bit 7/8 停止 位 字2 RCREG 读接收 缓冲寄存器 RCREG RCIF (中断标志) OERR 位 CREN 注: 本时序图显示出了在 RX 输入引脚接收三个字的情况。在第 3 个字后读取 RCREG(接收缓冲器),导致 OERR(溢出)位置 1。 DS41291E_CN 第158 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 12-2: 与异步接收相关的寄存器 名称 Bit 7 Bit 6 BAUDCTL ABDOVF GIE PIE1 PIR1 INTCON RCREG RCSTA Bit 5 Bit 4 Bit 3 RCIDL — SCKP PEIE T0IE INTE — ADIE RCIE — ADIF RCIF EUSART 接收数据寄存器 SPEN RX9 SREN POR 和 BOR 所有其他复位 时的值 时的值 Bit 2 Bit 1 Bit 0 BRG16 — WUE ABDEN 01-0 0-00 01-0 0-00 RBIE T0IF INTF RBIF 0000 000x 0000 000x TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000 TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000 0000 0000 0000 0000 CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x SPBRG BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0 0000 0000 0000 0000 SPBRGH BRG15 BRG14 BRG13 BRG12 BRG11 BRG10 BRG9 BRG8 0000 0000 0000 0000 TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111 0000 0000 0000 0000 0000 0010 0000 0010 TRISC TXREG TXSTA EUSART 发送数据寄存器 CSRC TX9 TXEN 图注: x = 未知, - = 未实现 (读为 0)。异步接收不使用阴影单元。 2008 Microchip Technology Inc. SYNC SENDB BRGH TRMT TX9D DS41291E_CN 第159 页 PIC16F882/883/884/886/887 12.2 异步操作时的时钟准确度 由厂家校准内部振荡电路 (INTOSC)的输出。但在 VDD 或温度变化时,INTOSC 会发生频率漂移,从而会 直接影响异步波特率。有两种方法可用于调整波特率时 钟,但这两种方法都需要某种类型的参考时钟源。 寄存器 12-1: 第一种(首选)方法使用OSCTUNE寄存器调整INTOSC 输出。调整 OSCTUNE 寄存器的值可以微调系统时钟源 的频率。请参见第 4.5 节 “内部时钟模式”获得更多相 关信息。 另一种方法为调整波特率发生器的值。此操作可由自动 波特率特性自动完成 (见第 12.3.1 节 “自动波特率检 测”)。当调整波特率发生器时,调节的分辨率可能不足 以弥补外设时钟频率的渐进变化。 TXSTA:发送状态和控制寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-1 R/W-0 CSRC TX9 TXEN(1) SYNC SENDB BRGH TRMT TX9D bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 CSRC:时钟源选择位 异步模式: 任意值 同步模式: 1 = 主控模式 (由内部 BRG 产生时钟信号) 0 = 从动模式 (由外部时钟源产生时钟) bit 6 TX9:9 位发送使能位 1 = 选择 9 位发送 0 = 选择 8 位发送 bit 5 TXEN:发送使能位 (1) 1 = 使能发送 0 = 禁止发送 bit 4 SYNC:EUSART 模式选择位 1 = 同步模式 0 = 异步模式 bit 3 SENDB:发送间隔字符位 异步模式: 1 = 在下一次发送时发送同步间隔字符 (在完成时由硬件清零) 0 = 同步间隔字符发送完成 同步模式: 任意值 bit 2 BRGH:高波特率选择位 异步模式: 1 = 高速 0 = 低速 同步模式: 在此模式下未用 bit 1 TRMT:发送移位寄存器状态位 1 = TSR 为空 0 = TSR 为满 bit 0 TX9D:发送数据的第 9 位 可以是地址 / 数据位或奇偶校验位。 注 x = 未知 1: 同步模式下, SREN/CREN 会覆盖 TXEN 的值。 DS41291E_CN 第160 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 RCSTA:接收状态和控制寄存器 (1) 寄存器 12-2: R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 R-0 R-x SPEN RX9 SREN CREN ADDEN FERR OERR RX9D bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7 SPEN:串行端口使能位 1 = 使能串行端口 (将 RX/DT 和 TX/CK 引脚配置为串行端口引脚) 0 = 禁止串行端口 (保持在复位状态) bit 6 RX9:9 位接收使能位 1 = 选择 9 位接收 0 = 选择 8 位接收 bit 5 SREN:单字节接收使能位 异步模式: 任意值 同步主控模式: 1 = 使能单字节接收 0 = 禁止单字节接收 接收完成后清零该位。 同步从动模式: 任意值 bit 4 CREN:连续接收使能位 异步模式: 1 = 使能接收 0 = 禁止接收 同步模式: 1 = 使能连续接收直到清零 CREN 使能位 (CREN 覆盖 SREN) 0 = 禁止连续接收 bit 3 ADDEN:地址检测使能位 异步 9 位模式 (RX9 = 1): 1 = 当 RSR<8> 置 1 时,使能地址检测、允许中断并装载接收缓冲器。 0 = 禁止地址检测,所有字节都可以被接收,第 9 位可被用作奇偶校验位。 异步 8 位模式 (RX9 = 0): 任意值 bit 2 FERR:帧错误位 1 = 帧错误 (可通过读 RCREG 寄存器更新并接收下一个有效字节) 0 = 没有帧错误 bit 1 OERR:溢出错误位 1 = 溢出错误 (可通过清零 CREN 位清零) 0 = 没有溢出错误 bit 0 RX9D:接收到数据的第 9 位 此位可以是地址 / 数据位或奇偶校验位,必须由用户固件计算得到。 2008 Microchip Technology Inc. DS41291E_CN 第161 页 PIC16F882/883/884/886/887 寄存器 12-3: BAUDCTL:波特率控制寄存器 R-0 R-1 U-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 ABDOVF RCIDL — SCKP BRG16 — WUE ABDEN bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7 ABDOVF:波特率检测溢出位 异步模式: 1 = 波特率定时器溢出 0 = 波特率定时器没有溢出 同步模式: 任意值 bit 6 RCIDL:接收空闲标志位 异步模式: 1 = 接收器空闲 0 = 已接收到起始位,接收器正在接收数据 同步模式: 任意值 bit 5 未实现:读为 0 bit 4 SCKP:同步时钟极性选择位 异步模式: 1 = 将数据字符的电平取反后发送到 RB7/TX/CK 引脚 0 = 直接将数据字符发送到 RB7/TX/CK 引脚 同步模式: 1 = 在时钟上升沿传输数据 0 = 在时钟下降沿传输数据 bit 3 BRG16:16 位波特率发生器位 1 = 使用 16 位波特率发生器 0 = 使用 8 位波特率发生器 bit 2 未实现:读为 0 bit 1 WUE:唤醒使能位 异步模式: 1 = 接收器等待时钟下降沿。此时不接收任何字节, RCIF 位置 1。 RCIF 置 1 后,自动清零 WUE。 0 = 接收器正常工作 同步模式: 任意值 bit 0 ABDEN:自动波特率检测使能位 异步模式: 1 = 使能自动波特率检测模式 (检测完成后清零) 0 = 禁止自动波特率检测模式 同步模式: 任意值 DS41291E_CN 第162 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 12.3 EUSART 波特率发生器 (BRG) 如果系统时钟在有效的接收过程中发生了变化,可能会 产生接收错误或导致数据丢失。为了避免此问题,应该 检查 RCIDL 位的状态以确保改变系统时钟之前,接收操 作处于空闲状态。 波特率发生器 (BRG)是一个 8 位或 16 位定时器,专 用于支持 EUSART 的异步和同步工作模式。默认情况 下, BRG 工作在 8 位模式下。将 BAUDCTL 寄存器中 的 BRG16 位置 1 可选择 16 位模式。 例 12-1: SPBRGH 和 SPBRG 寄存器对决定自由运行的波特率定 时器的周期。在异步模式下,由 TXSTA 寄存器的 BRGH 寄存器和 BAUDCTL 寄存器的 BRG16 位决定波特率周 期的倍数。在同步模式下,忽略 BRGH 位。 计算波特率误差 对于 FOSC 为 16 MHz,目标波特率为 9600 bps,异 步模式,采用 8 位 BRG 的器件: 表 12-3 包含了计算波特率的公式。例 12-1 给出了一个 计算波特率和波特率误差的示例。 表12-3中给出了已经计算好的各种异步模式下的典型波 特率和波特率误差值,可便于您使用。使用高波特率 (BRGH = 1)或 16 位 BRG (BRG16 = 1)有利于减 少波特率误差。16 位 BRG 模式用来在快速振荡频率条 件下实现低波特率。 F OS C D = --------------------------------------------------------------目标波特率 64 ( [SPBRGH:SPBRG] + 1 ) 求解 SPBRGH:SPBRG: 向 SPBRGH 和 SPBRG 寄存器对写入新值会导致 BRG 定时器复位 (或清零)。这可以确保 BRG 无需等待定 时器溢出就可以输出新的波特率。 F OS C -------------------------------------------------目标波特率 Desired Baud Rate X = --------------------------------------------------- – 1 64 16000000----------------------9600 = ------------------------ – 1 64 = [ 25.042 ] = 25 16000000 Baud Rate = --------------------------Calculat ed计算波特率 64 ( 25 + 1 ) = 9615 计算波特率 Calc. Baud Rate – 目标波特率 Desired Baud Rate Error = -----------------------------------------------------------------------------------------------------误差 Desired Baud Rate 目标波特率 ( 9615 – 9600 ) = ---------------------------------- = 0.16% 9600 表 12-3: 波特率公式 配置位 BRG/EUSART 模式 波特率公式 0 8 位 / 异步 FOSC/[64 (n+1)] 0 1 8 位 / 异步 1 0 16 位 / 异步 0 1 1 16 位 / 异步 1 0 x 8 位 / 同步 1 x 16 位 / 同步 SYNC BRG16 BRGH 0 0 0 0 1 图注: 表 12-4: FOSC/[16 (n+1)] FOSC/[4 (n+1)] x = 任意值, n = SPBRGH:SPBRG 寄存器的值 与波特率发生器相关的寄存器 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 BAUDCTL RCSTA SPBRG SPBRGH TXSTA ABDOVF SPEN BRG7 BRG15 CSRC RCIDL RX9 BRG6 BRG14 TX9 — SREN BRG5 BRG13 TXEN SCKP CREN BRG4 BRG12 SYNC BRG16 ADDEN BRG3 BRG11 SENDB — FERR BRG2 BRG10 BRGH WUE OERR BRG1 BRG9 TRMT ABDEN RX9D BRG0 BRG8 TX9D 图注: x = 未知, - = 未读 (读为 0)。波特率发生器不使用阴影单元。 2008 Microchip Technology Inc. POR 和 BOR 所有其他复位 时的值 时的值 01-0 0000 0000 0000 0000 0-00 000x 0000 0000 0010 01-0 0000 0000 0000 0000 0-00 000x 0000 0000 0010 DS41291E_CN 第163 页 PIC16F882/883/884/886/887 表 12-5: 异步模式下的波特率 SYNC = 0, BRGH = 0, BRG16 = 0 目标 波特率 FOSC = 20.000 MHz FOSC = 18.432 MHz SPBRG 实际 值 波特率 (十进制) FOSC = 11.0592 MHz 误差 % SPBRG 值 (十进制) 实际 波特率 误差 % — 0.00 — 239 — 1200 — 0.00 FOSC = 8.000 MHz SPBRG 实际 值 波特率 (十进制) 误差 % SPBRG 值 (十进制) — 0.16 — 103 实际 波特率 误差 % 300 1200 — 1221 — 1.73 — 255 2400 2404 0.16 129 2400 0.00 119 2400 0.00 71 2404 0.16 51 9600 9470 -1.36 32 9600 0.00 29 9600 0.00 17 9615 0.16 12 10417 10417 0.00 29 10286 -1.26 27 10165 -2.42 16 10417 0.00 11 19.2k 19.53k 1.73 15 19.20k 0.00 14 19.20k 0.00 8 — — — 57.6k — — — — — — 57.60k — 0.00 7 — 57.60k — 0.00 2 — — — — — — — — 115.2k — 1200 — — 143 — 1202 SYNC = 0, BRGH = 0, BRG16 = 0 目标 波特率 FOSC = 4.000 MHz FOSC = 3.6864 MHz SPBRG 实际 值 波特率 (十进制) 误差 % FOSC = 2.000 MHz SPBRG 值 (十进制) 实际 波特率 误差 % 误差 % SPBRG 值 (十进制) 300 1202 0.16 0.16 51 12 12 — — — — — — — 0.00 2 — — — — — — — — — 0 — — — — — — — — — — — — — 实际 波特率 误差 % 300 1200 300 1202 0.16 0.16 207 51 300 1200 0.00 191 47 300 1202 0.16 0.16 103 25 2400 2404 0.16 25 2400 0.00 23 2404 0.16 9600 — — — 9600 0.00 5 — — 10417 10417 0.00 5 — — — 10417 19k — — — 19.20k 0.00 2 57.6k — — — — — — 57.60k — 0.00 115.2k — 0.00 FOSC = 1.000 MHz SPBRG 实际 值 波特率 (十进制) SYNC = 0, BRGH = 1, BRG16 = 0 目标 波特率 FOSC = 20.000 MHz FOSC = 18.432 MHz SPBRG 实际 值 波特率 (十进制) — — 实际 波特率 误差 % 300 — — 1200 — — — 2400 — — — FOSC = 11.0592 MHz FOSC = 8.000 MHz — SPBRG 值 (十进制) — — — — — — — — — — — — — — — — 2404 0.16 207 51 误差 % 实际 波特率 误差 % — — SPBRG 实际 值 波特率 (十进制) — — 误差 % — SPBRG 值 (十进制) — 9600 9615 0.16 129 9600 0.00 119 9600 0.00 71 9615 0.16 10417 10417 0.00 119 10378 -0.37 110 10473 0.53 65 10417 0.00 47 19.2k 19.23k 0.16 64 19.20k 0.00 59 19.20k 0.00 35 19231 0.16 25 57.6k 56.82k -1.36 21 57.60k 0.00 19 57.60k 0.00 11 55556 -3.55 8 115.2k 113.64 -1.36 10 115.2k 0.00 9 115.2k 0.00 5 — — — DS41291E_CN 第164 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 12-5: 异步模式下的波特率 (续) SYNC = 0, BRGH = 1, BRG16 = 0 目标 波特率 FOSC = 4.000 MHz FOSC = 3.6864 MHz SPBRG SPBRG 实际 误差 实际 误差 值 值 % % 波特率 波特率 (十进制) (十进制) — 1200 — 0.00 — 191 FOSC = 2.000 MHz FOSC = 1.000 MHz SPBRG SPBRG 实际 误差 实际 误差 值 值 % % 波特率 波特率 (十进制) (十进制) 300 1200 — 1202 — 0.16 — 207 — 1202 2400 2404 0.16 103 2400 0.00 95 2404 9600 9615 0.16 25 9600 0.00 23 9615 10417 10417 0.00 23 10473 0.53 21 10417 19.2k 19.23k 0.16 12 19.2k 0.00 11 — — 0.16 — 103 300 1202 0.16 0.16 207 51 0.16 51 2404 0.16 25 0.16 12 — — — 0.00 11 10417 0.00 5 — — — — — 57.6k — — — 57.60k 0.00 3 — — — — — — 115.2k — — — 115.2k 0.00 1 — — — — — — SYNC = 0, BRGH = 0, BRG16 = 1 FOSC = 18.432 MHz FOSC = 20.000 MHz SPBRG SPBRG 实际 误差 实际 误差 值 值 % % 波特率 波特率 (十进制) (十进制) FOSC = 11.0592 MHz FOSC = 8.000 MHz SPBRG SPBRG 实际 误差 实际 误差 值 值 % % 波特率 波特率 (十进制) (十进制) 300 1200 300.0 1200 -0.01 -0.03 300.0 1200 2400 2399 -0.03 520 9600 9615 0.16 129 10417 10417 0.00 119 19.2k 19.23k 0.16 57.6k 56.818 115.2k 113.63 目标 波特率 4166 1041 300.0 1200 0.00 0.00 3839 959 0.00 0.00 2303 575 2400 0.00 479 9600 0.00 119 2400 0.00 287 9600 0.00 71 10378 -0.37 110 10473 0.53 65 64 19.20k 0.00 59 19.20k 0.00 -1.36 21 57.60k -1.36 10 115.2k 0.00 19 57.60k 0.00 9 115.2k 299.9 1199 -0.02 -0.08 1666 416 2404 0.16 207 9615 0.16 51 10417 0.00 47 35 19.23k 0.16 25 0.00 11 55556 -3.55 8 0.00 5 — — — SYNC = 0, BRGH = 0, BRG16 = 1 目标 波特率 FOSC = 4.000 MHz 实际 波特率 误差 % FOSC = 3.6864 MHz SPBRG 实际 值 波特率 (十进制) FOSC = 2.000 MHz 误差 % SPBRG 值 (十进制) 实际 波特率 误差 % FOSC = 1.000 MHz SPBRG 实际 值 波特率 (十进制) 误差 % SPBRG 值 (十进制) 300 300.1 0.04 832 300.0 0.00 767 299.8 -0.108 416 300.5 0.16 207 1200 1202 0.16 207 1200 0.00 191 1202 0.16 103 1202 0.16 51 2400 2404 0.16 103 2400 0.00 95 2404 0.16 51 2404 0.16 25 9600 9615 0.16 25 9600 0.00 23 9615 0.16 12 — — — 10417 10417 0.00 23 10473 0.53 21 10417 0.00 11 10417 0.00 5 19.2k 19.23k 0.16 12 19.20k 0.00 11 — — — — — — 57.6k — — — 57.60k 0.00 3 — — — — — — 115.2k — — — 115.2k 0.00 1 — — — — — — 2008 Microchip Technology Inc. DS41291E_CN 第165 页 PIC16F882/883/884/886/887 表 12-5: 异步模式下的波特率 (续) SYNC = 0, BRGH = 1, BRG16 = 1 或 SYNC = 1, BRG16 = 1 FOSC = 20.000 MHz FOSC = 18.432 MHz SPBRG SPBRG 实际 误差 实际 误差 值 值 % % 波特率 波特率 (十进制) (十进制) FOSC = 11.0592 MHz FOSC = 8.000 MHz SPBRG SPBRG 实际 误差 实际 误差 值 值 % % 波特率 波特率 (十进制) (十进制) 300 1200 300.0 1200 2400 9600 目标 波特率 0.00 -0.01 16665 4166 300.0 1200 0.00 0.00 15359 3839 300.0 1200 0.00 0.00 9215 2303 300.0 1200 0.00 -0.02 6666 1666 2400 0.02 2082 2400 0.00 1919 2400 0.00 1151 2401 0.04 832 9597 -0.03 520 9600 0.00 479 9600 0.00 287 9615 0.16 207 10417 10417 0.00 479 10425 0.08 441 10433 0.16 264 10417 0 191 19.2k 19.23k 0.16 259 19.20k 0.00 239 19.20k 0.00 143 19.23k 0.16 103 57.6k 57.47k -0.22 86 57.60k 0.00 79 57.60k 0.00 47 57.14k -0.79 34 115.2k 116.3k 0.94 42 115.2k 0.00 39 115.2k 0.00 23 117.6k 2.12 16 SYNC = 0, BRGH = 1, BRG16 = 1 或 SYNC = 1, BRG16 = 1 FOSC = 3.6864 MHz FOSC = 4.000 MHz SPBRG SPBRG 实际 误差 实际 误差 值 值 % % 波特率 波特率 (十进制) (十进制) FOSC = 2.000 MHz FOSC = 1.000 MHz SPBRG SPBRG 实际 误差 实际 误差 值 值 % % 波特率 波特率 (十进制) (十进制) 300 1200 300.0 1200 0.01 0.04 3332 832 300.0 1200 0.00 0.00 3071 767 299.9 1199 -0.02 -0.08 1666 416 300.1 1202 0.04 0.16 832 207 2400 2398 0.08 416 2400 0.00 383 2404 0.16 207 2404 0.16 103 9600 9615 0.16 103 9600 0.00 95 9615 0.16 51 9615 0.16 25 10417 10417 0.00 95 10473 0.53 87 10417 0.00 47 10417 0.00 23 19.2k 19.23k 0.16 51 19.20k 0.00 47 19.23k 0.16 25 19.23k 0.16 12 57.6k 56.82k 2.12 16 57.60k 0.00 15 55.56k -3.55 8 — — — 115.2k 111.1k -3.55 8 115.2k 0.00 7 — — — — — — 目标 波特率 DS41291E_CN 第166 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 12.3.1 器。当校准波特率周期时,以 BRG 基本时钟频率的 1/8 设置 SPBRGH 和 SPBRG 寄存器。当将波特率设置 为全速时,字节测量结果为平均位时间。 自动波特率检测 EUSART 模块支持波特率自动检测和校准。 在自动波特率检测(Auto-Baud Rate Detect,ABD)模 式下, BRG 的时钟是反向的。不是由 BRG 为 RX 输入 信号提供时钟源,而是由 RX 信号为 BRG 定时。波特 率发生器用来测量接收 55h 字符的周期 (ASCII “U”, 也是 LIN 总线的同步字符),该字符的特性在于它包含 5 个上升沿 (包括停止位边沿)。 注 2: 由用户来判断进入的字符波特率是否处于 所选 BRG 时钟源范围内。由于位误差率的 原因,某些振荡频率和 EUSART 波特率的 组合是无法实现的。 将 BAUDCTL 寄存器的 ABDEN 位置 1,启动自动校准序 列(图 12-6)。发生 ABD 序列时,EUSART 状态机保持 空闲状态。在起始位后,在接收信号的第一个上升沿, SPBRG 使用 BRG 计数器时钟开始计数,如表 12-6 所 示。在 RX 引脚传输了 8 个位之后,产生第 5 个上升沿。 此时,会将在相应 BRG 周期内累计的值保存到相应的 SPBRGH:SPBRG这对寄存器中,自动清零ABDEN位, 并将 RCIF 中断标志位置 1。要清除 RCIF 中断,需要读 取 RCREG 中的值。应丢弃 RCREG 中的内容。当在不 需要使用 SPBRGH 寄存器的模式下进行校准时,用户 可以通过检查 SPBRGH 寄存器的值是否为 00h 位校验 SPBRG 寄存器是否溢出。 3: 在使用自动波特率检测功能时,自动波特 率计数器从 1 开始计数。完成自动波特率 序 列 后,为 获 取 最 大 精 确,应 将 SPBRGH:SPBRG 寄存器对的值减 1。 表 12-6: 由 BRG16 和 BRGH 位决定 BRG 自动波特率时钟,如 表 12-6 所示。在 ABD 过程中,无论 BRG16 位的设置 如何, SPBRGH 和 SPBRG 寄存器均用作 16 位计数 BRG 计数器时钟速率 BRG16 BRGH BRG 基本时钟 BRGABD 时钟 0 0 FOSC/64 FOSC/512 0 1 FOSC/16 FOSC/128 1 0 FOSC/16 FOSC/128 1 1 FOSC/4 FOSC/32 注: 图 12-6: 1: 如果 WUE 位与 ABDEN 位同时置 1,自动 波特率检测会在间隔字符之后的字节开始 (见第 12.3.2 节 “接收到间隔字符时自动 唤醒”)。 在 ABD 过程中,无论 BRG16 位的设置如 何,SPBRGH 和 SPBRG 寄存器均用作 16 位计数器。 自动波特率校准 XXXXh BRG 值 0000h 001Ch 边沿 #1 bit 1 起始位 bit 0 RX 引脚 边沿 #2 bit 3 bit 2 边沿 #3 bit 5 bit 4 边沿 #4 bit 7 bit 6 边沿 #5 停止位 BRG 时钟 自动清零 由用户置 1 ABDEN 位 RCIDL RCIF 位 (中断) 读 RCREG SPBRG XXh 1Ch SPBRGH XXh 00h 注 1: ABD 序列要求将 EUSART 模块配置为工作在异步模式下。 2008 Microchip Technology Inc. DS41291E_CN 第167 页 PIC16F882/883/884/886/887 12.3.2 接收到间隔字符时自动唤醒 12.3.2.1 在休眠模式下,EUSART 的所有时钟都会暂停。因此, 波特率发生器处于无效状态,且无法进行正确的字符接 收。自动唤醒功能允许在 RX/DT 线上活动时唤醒控制 器,只有在 EUSART 工作在异步模式下时才可使用该 功能。 间隔字符 通过将 BAUDCTL 寄存器的 WUE 位置 1,使能自动唤醒 功能。置 1 后,将禁止 RX/DT 上的正常接收序列,并且 EUSART 保持在空闲状态,监视唤醒事件而与 CPU 的 工作模式无关。唤醒事件是指 RX/DT 线上从高电平到低 电平的转换。(这与 “同步间隔”字符或 LIN 协议唤醒 信号字符的启动条件一致)。 EUSART 模块在检测到唤醒事件时,产生一个 RCIF 中 断。在 CPU 正常工作模式下,中断会与 Q 时钟同步产 生 (图 12-7);如果器件处于休眠模式,则两者不同步 (图 12-8)。通过读 RCREG 寄存器清除中断条件。 WUE会被间隔字符末尾的RX线从低电平向高电平的转 换自动清零。这将通知用户 “同步间隔”事件结束。此 时,EUSART 模块处于空闲模式,等待接收下一字符。 特别注意事项 为了避免唤醒事件期间的字符错误或字符分段,唤醒字 符必须为全零。 如果使能唤醒功能,无论数据流的低电平持续时间的长 短,该功能都可起作用。如果将 WUE 位置 1,且收到 一个有效的非零字符,从起始位到第一个上升沿之间的 低电平时间被解释为唤醒事件。将以分段字符的方式接 收当前字符的剩余位,而后续的字符会导致帧错误或溢 出错误。 因此,发送的初始字符必须为全 0,且其持续时间必须 为 10 个或更多的位时间。针对 LIN 总线建议为 13 个位 时间,而对于标准RS-232器件可为任何数量的位时间。 振荡器起振时间 另外还必须考虑振荡器起振时间,尤其是在采用起振时 间较长的振荡器(比如 LP、XT 或 HS/PLL 模式)的应 用中。“同步间隔”(或唤醒信号)字符必须足够长,并 且跟有足够长的时间间隔,以使选定振荡器有足够的时 间起振并使 EUSART 正确初始化。 WUE 位 唤醒事件通过将 RCIF 位置 1 产生接收中断。在 RX/DT 的上升沿,由硬件清零 WUE 位。通过在软件中读 RCREG 寄存器并丢弃其内容清零中断条件。 要确保没有丢失数据,在将 WUE 位置 1 之前,应检查 RCIDL 位以验证是否正在进行接收。如果不在进行接 收,则可将 WUE 位置 1,使器件立即进入休眠模式。 图 12-7: 正常工作下的自动唤醒位 (WUE)时序 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 OSC1 自动清零 由用户置 1 的位 WUE 位 RX/DT 线 RCIF 注 由用户读 RCREG 寄存器清零 1: WUE 位置 1 时 EUSART 保持在空闲状态。 DS41291E_CN 第168 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 12-8: 休眠模式下的自动唤醒位 (WUE)时序 Q1Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3 Q4 OSC1 自动清零 由用户置 1 的位 WUE 位 RX/DT 线 注1 RCIF 执行休眠命令 由用户读 RCREG 寄存器清零 休眠结束 1: 如果唤醒事件需要较长的振荡器预热时间,即使 stposc 信号仍有效, WUE 位也可以被自动清零。该时序与 Q 时钟出现与否无关。 注 2: WUE 位置 1 时 EUSART 保持在空闲状态。 12.3.3 间隔字符时序 EUSART 模块能够发送符合 LIN 总线标准的特殊间隔字 符序列。发送的间隔字符包括 1 个起始位,后面跟有 12 个 0 位和一个停止位。 要发送间隔字符,应将 TXSTA 寄存器的 SENDB 和 TXEN 位置 1。之后对 TXREG 寄存器的写操作将启动 间隔字符的发送。写入 TXREG 的数据值会被忽略,并 会发送全 0。 在发送了相应的停止位后,硬件会自动将 SENDB 位清 零。这样用户可以在发送完间隔字符(在 LIN 规范中通 常是同步字符)后将下一个要发送的字节预先装入发送 FIFO。 正如其在正常发送操作中一样,TXSTA 寄存器的 TRMT 位表明发送正在进行还是处于空闲状态。关于发送间隔 字符的时序,请参见图 12-9。 12.3.3.1 间隔和同步发送序列 以下序列会发送一个报文帧头,包括一个间隔字符和其 后的自动波特率同步字节。此序列适用于典型的 LIN 总 线主器件。 1. 2. 3. 4. 5. 12.3.4 接收间隔字符 增强型 EUSART 模块接收间隔字符有两种方法。 第一种检测间隔字符的方法是使用 RCSTA 寄存器的 FERR 位和 RCREG 指示的接收数据。假设已将波特率 发生器初始化为了预期的波特率。 当 • RCIF 位置 1 • FERR 位置 1 • RCREG = 00h 时,接收到间隔字符。 第二种方法使用第 12.3.2 节 “接收到间隔字符时自动 唤 醒”中 描 述 的 自 动 唤 醒 功 能。通 过 使 能 此 功 能, EUSART 将采样 RX/DT 上电平的下两个跳变,产生一 个 RCIF 中断,接收下一个数据字节,之后产生另一个 中断。 请注意,在间隔字符后,用户通常希望使能自动波特率 检测功能。无论使用哪种方法,用户都可以在 EUSART 进入休眠模式之前,将 BAUDCTL 寄存器的 ABDEN 位 置 1。 将 EUSART 配置为所需的模式。 将 TXEN 和 SENDB 位置 1,以设置间隔字符。 将无效字符装入 TXREG,启动发送 (该值会被 忽略)。 将 55h 写入 TXREG,以便把同步字符装入发送 FIFO 缓冲器。 间隔字符发送后,硬件会将 SENDB 位复位。开 始发送同步字符。 当 TXIF 指示 TXREG 为空时,下一个数据字节会写入 TXREG。 2008 Microchip Technology Inc. DS41291E_CN 第169 页 PIC16F882/883/884/886/887 图 12-9: 发送间隔字符时序 写入 TXREG 无效写入 BRG 输出 (移位时钟) TX(引脚) 起始位 bit 0 bit 1 bit 11 停止位 间隔字符 TXIF 位 (发送缓冲寄存器 中断标志) TRMT 位 (发送移位寄存器 空标志) SENDB 在此采样 SENDB 自动清零 (发送中断 控制位) DS41291E_CN 第170 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 12.4 EUSART 同步模式 同步串行通信通常用在具有一个主控器件和一个或多个 从动器件的系统中。主控器件包含产生波特率时钟所必 需的电路,并为系统中的所有器件提供时钟。从动器件 可以使用主控时钟,因此无需内部时钟发生电路。 在同步模式下,有 2 条信号线:双向数据线和时钟线。 从动器件使用主控器件提供的外部时钟,将数据串行移 入或移出相应的接收和发送移位寄存器。因为使用双向 数据线,所以同步操作只能采用半双工方式。半双工是 指:主控器件和从动器件都可以接收和发送数据,但是 不能同时进行接收或发送。EUSART 既可以作为主控器 件,也可以作为从动器件。 同步发送无需使用起始位和停止位。 12.4.1 同步主控模式 下列位用来将 EUSART 配置为同步主控操作: • SYNC = 1 • CSRC = 1 • SREN = 0 (用于发送); SREN = 1 (用于接收) • CREN = 0 (用于发送); CREN = 1 (用于接收) • SPEN = 1 将 TXSTA 寄存器的 SYNC 位置 1,可将 EUSART 配置 用于同步操作。将 TXSTA 寄存器的 CSRC 位置 1,将器 件配置为主控器件。将 RCSTA 寄存器的 SREN 和 CREN 位清零,以确保器件处于发送模式,否则器件配置为接 收模式。将 RCSTA 寄存器的 SPEN 位置 1,使能 EUSART。如果 RX/DT 或 TX/CK 引脚与模拟外设共用, 必须清零相应的 ANSEL 位禁止模拟 I/O 功能。 12.4.1.1 主控时钟 同步数据传输使用独立的时钟线同步传输数据。配置为 主 控 器 件 的 器 件 在 TX/CK 引 脚 发 送 时 钟 信号。当 EUSART 被配置为同步发送或接收操作时,TX/CK 输出 驱动器自动使能。串行数据位在每个时钟的上升沿发生 改变,以确保它们在下降沿有效。每个数据位的时间为 一个时钟周期,有多少数据位就只能产生多少个时钟周 期。 2008 Microchip Technology Inc. 12.4.1.2 时钟极性 器件提供时钟极性选项以与 Microwire 兼容。由 BAUDCTL 寄存器的 SCKP 位选择时钟极性。将 SCKP 位置 1 将时钟空闲状态设置为高电平。当 SCKP 位置 1 时,数据在每个时钟的下降沿发生改变。清零SCKP位, 将时钟空闲状态设置为低电平。当清零 SCKP 位时,数 据在每个时钟的上升沿发生改变。 12.4.1.3 同步主控发送 由器件的 RX/DT 引脚输出数据。当 EUSART 配置为同 步主控发送操作时,器件的 RX/DT 和 TX/CK 输出引脚 自动使能。 向 TXREG 寄存器写入一个字符开始发送。如果 TSR 中 仍 保 存全 部 或 部 分前 一 字 符,新 的字 符 数 据 保存 在 TXREG 中,直到发送完前一字符的停止位为止。如果 这是第一个字符,或者前一个字符已经完全从 TSR 中移 出,则 TXREG 中的数据会被立即传输到 TSR 寄存器。 当字符从 TXREG 传输到 TSR 后会立即开始发送数据。 每个数据位在主控时钟的上升沿发生改变,并保持有 效,直至下一个时钟的上升沿为止。 注: 12.4.1.4 1. 2. 3. 4. 5. 6. 7. 8. TSR 寄存器并未映射到数据存储器中,因 此用户不能直接访问它。 同步主控发送设置 初始化 SPBRGH 和 SPBRG 这对寄存器以及 BRGH 和 BRG16 位,以获得所需的波特率 (见 第12.3节“EUSART波特率发生器(BRG)”)。 将 SYNC、SPEN 和 CSRC 位置 1,使能同步主 控串行端口。 将 SREN 和 CREN 位清零,禁止接收模式。 将 TXEN 位置 1 使能发送模式。 如果需要发送 9 位字符,将 TX9 置 1。 若需要中断,将 PIE1 寄存器中的 TXIE 位,以及 INTCON 寄存器中的 GIE 和 PEIE 位置 1。 如果选择发送 9 位字符,应该将第 9 位数据装入 TX9D 位。 通过将数据装入 TXREG 寄存器启动发送。 DS41291E_CN 第171 页 PIC16F882/883/884/886/887 图 12-10: 同步发送 RX/DT 引脚 bit 0 bit 1 字1 bit 2 bit 7 bit 0 bit 1 bit 7 字2 TX/CK 引脚 (SCKP = 0) TX/CK 引脚 (SCKP = 1) 写入 TXREG 寄存器 写字 2 写字 1 TXIF 位 (中断标志) TRMT 位 TXEN 位 1 注: 1 同步主控模式, SPBRG = 0,连续发送 2 个 8 位字。 图 12-11: 同步发送 (通过 TXEN) RX/DT 引脚 bit 0 bit 2 bit 1 bit 6 bit 7 TX/CK 引脚 写入 TXREG 寄存器 TXIF 位 TRMT 位 TXEN 位 表 12-7: 与同步主控发送有关的寄存器 名称 Bit 7 Bit 6 BAUDCTL ABDOVF GIE PIE1 PIR1 INTCON RCREG RCSTA Bit 5 Bit 4 Bit 3 RCIDL — SCKP PEIE T0IE INTE — ADIE RCIE — ADIF RCIF EUSART 接收数据寄存器 RX9 SREN SPEN POR 和 BOR 时的值 所有其他复位 时的值 Bit 2 Bit 1 Bit 0 BRG16 — WUE ABDEN 01-0 0-00 01-0 0-00 RBIE T0IF INTF RBIF 0000 000x 0000 000x TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000 TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000 0000 0000 0000 0000 CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x SPBRG BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0 0000 0000 0000 0000 SPBRGH BRG15 BRG14 BRG13 BRG12 BRG11 BRG10 BRG9 BRG8 0000 0000 0000 0000 TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111 0000 0000 0000 0000 0000 0010 0000 0010 TRISC TXREG TXSTA EUSART 发送数据寄存器 CSRC TX9 TXEN 图注: x = 未知, - = 未实现 (读为 0)。同步主控发送不使用阴影单元。 DS41291E_CN 第172 页 SYNC SENDB BRGH TRMT TX9D 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 12.4.1.5 同步主控接收 在 RX/DT 引脚接收数据。当 EUSART 配置为同步主控 接收时,自动禁止器件的 RX/DT 引脚的输出驱动器。 在同步模式下,将单字接收使能位 (RCSTA 寄存器的 SREN 位)或连续接收使能位(RCSTA 寄存器的 CREN 位)置 1 使能接收。 当将 SREN 置 1,CREN 位清零时,一个单字符中有多 少数据位就只能产生多少时钟周期。一个字符传输结束 后,自动清零 SREN 位。当 CREN 置 1 时,将产生连 续时钟,直到清零 CREN 为止。如果 CREN 在一个字 符的传输过程中清零,则 CK 时钟立即停止,并丢弃该 不完整的字符。如果 SREN 和 CREN 都置 1,则当第一 个字符传输完成时, SREN 位被清零, CREN 优先。 将 SREN 或 CREN 位置 1,启动接收。在 TX/CK 时钟 引脚信号的下降沿采样 RX/DT 引脚上的数据,并将采样 到的数据移入接收移位寄存器 (RSR)。当 RSR 接收 到一个完整字符时,将 RCIF 位置 1,字符自动移入 2 字节接收 FIFO。接收 FIFO 中最顶端字符的低 8 位可通 过 RCREG 读取。只要接收 FIFO 中仍有未读字符,则 RCIF 位就保持置 1 状态。 12.4.1.6 从时钟 同步数据传输使用与数据线通读的独立时钟线。配置为 从器件的器件接收 TX/CK 线上的时钟信号。当器件被配 置为同步从发送或接收操作时,TX/CK 引脚的输出驱动 器自动被禁止。串行数据位在时钟信号的前沿改变,以 确保其在每个时钟的后沿有效。每个时钟周期只能传输 一位数据,因此有多少数据位要传输就必须接收多少个 时钟。 12.4.1.7 12.4.1.8 接收 9 位字符 EUSART 支持接收 9 位字符。当 RCSTA 寄存器的 RX9 位置 1 时,EUSART 将接收到的每个字符的 9 位数据移 入 RSR。 RCSTA 寄存器的 RX9D 位是接收 FIFO 顶端 未读字符的第九位数据位 (最高数据位) 。当从接收 FIFO 缓冲器读取 9 位数据时,必须在读 RCREG 的 8 个低位之前,读取 RX9D 数据位。 12.4.1.9 同步主控接收设置 1. 用正确的波特率初始化一对SPBRGH:SPBRG寄 存器。按需要将 BRGH 和 BRG16 位置 1 或清 零,以获得所需的波特率。 2. 将 SYNC、SPEN 和 CSRC 位置 1 使能同步主控 串行端口。 3. 确保将 CREN 和 SREN 位清零。 4. 如果使用中断,将INTCON寄存器的GIE和PEIE 位置 1,并将 PIE1 寄存器的 RCIE 位也置 1。 5. 如果需要接收 9 位字符,将 RX9 位置 1。 6. 将 SREN 位置 1,启动接收,或将 CREN 位置 1 使能连续接收。 7. 当字符接收完毕后,将 RCIF 中断标志位置 1。 如果允许位 RCIE 置 1,还会产生一个中断。 8. 读 RCSTA 寄存器以获取第 9 个数据位 (使能 9 位接收时),并判断接收过程中是否产生错误。 9. 读 RCREG 寄存器获取接收到的 8 位数据。 10. 如果产生溢出错误,清零RCSTA寄存器的CREN 位或清零 SPEN 以复位 EUSART 来清除错误。 接收溢出错误 接收 FIFO 缓冲器可以保存 2 个字符。在读 RCREG 以 访问 FIFO 之前,若完整地接收到第 3 个字符,则产生 溢出错误。此时, RCSTA 寄存器的 OERR 位会置 1。 FIFO 中先前的数据不会被改写。可以读取 FIFO 缓冲器 内的 2 个字符,但是在错误被清除前,不能再接收其他 字符。只能通过清除溢出条件,将 OERR 位清零。如果 发生溢出时,SREN 位为置 1 状态,CREN 位为清零状 态,则通过读 RCREG 寄存器清除错误。如果溢出时, CREN 为置 1 状态,则可以清零 RCSTA 寄存器的 CREN 位或清零 SPEN 位以复位 EUSART,从而清除错误。 2008 Microchip Technology Inc. DS41291E_CN 第173 页 PIC16F882/883/884/886/887 图 12-12: 同步接收 (主控模式, SREN) RX/DT 引脚 bit 0 bit 1 bit 2 bit 3 bit 4 bit 5 bit 6 bit 7 TX/CK 引脚 (SCKP = 0) TX/CK 引脚 (SCKP = 1) 写入 SREN 位 SREN 位 CREN 位 ‘0’ ‘0’ RCIF 位 (中断) 读 RXREG 注: 时序图说明了 SREN = 1 和 BRGH = 0 时的同步主控模式。 表 12-8: 与同步主控接收相关的寄存器 名称 Bit 7 Bit 6 BAUDCTL ABDOVF GIE INTCON PIE1 PIR1 RCREG RCSTA SPBRG Bit 5 Bit 4 Bit 3 RCIDL — SCKP PEIE T0IE INTE — ADIE RCIE — ADIF RCIF EUSART 接收数据寄存器 SPEN RX9 SREN BRG7 BRG6 BRG5 POR 和 BOR 时的值 所有其他复位 时的值 Bit 2 Bit 1 Bit 0 BRG16 — WUE ABDEN 01-0 0-00 01-0 0-00 RBIE T0IF INTF RBIF 0000 000x 0000 000x TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000 TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000 0000 0000 0000 0000 CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x BRG4 BRG3 BRG2 BRG1 BRG0 0000 0000 0000 0000 SPBRGH BRG15 BRG14 BRG13 BRG12 BRG11 BRG10 BRG9 BRG8 0000 0000 0000 0000 TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111 0000 0000 0000 0000 SYNC SENDB BRGH TRMT TX9D 0000 0010 0000 0010 TXREG TXSTA EUSART 发送数据寄存器 CSRC TX9 TXEN 图注: x = 未知, - = 未实现,读为 0。同步主控接收不使用阴影单元。 DS41291E_CN 第174 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 12.4.2 如果向 TXREG 写入 2 个字,然后执行 SLEEP 指令,则 会出现下列情况: 同步从动模式 下列位用来将 EUSART 配置为同步从动操作: 1. 2. 3. 4. • SYNC = 1 • CSRC = 0 • SREN = 0 (用于发送); SREN = 1 (用于接收) • CREN = 0 (用于发送); CREN = 1 (用于接收) • SPEN = 1 将 TXSTA 寄存器的 SYNC 位置 1,可将器件配置用于同 步操作。将 TXSTA 寄存器的 CSRC 位置 1,将器件配置 为从动器件。将 RCSTA 寄存器的 SREN 和 CREN 位清 零,以确保器件处于发送模式,否则器件将被配置为接 收模式。将 RCSTA 寄存器的 SPEN 位置 1,使能 EUSART。如果 RX/DT 或 TX/CK 引脚与模拟外设共用, 必须清零相应的 ANSEL 位禁止模拟 I/O 功能。 12.4.2.1 5. 12.4.2.2 1. 2. 3. EUSART 同步从动发送 除休眠模式外,同步主控和从动模式的工作原理是相同 的 (见第 12.4.1.3 节 “同步主控发送”)。 表 12-9: 第一个字立即传输到 TSR 寄存器并进行发送。 第二个字留在 TXREG 寄存器中。 TXIF 中断标志位不会置 1。 当第一个字符移出 TSR 时,TXREG 寄存器将把 第二个字符传输到 TSR,然后标志位 TXIF 置 1。 如果 PEIE 和 TXIE 位都置 1,则由中断将器件从 休眠模式唤醒,然后执行下一条指令。如果 GIE 位也置 1,程序将调用中断服务程序。 4. 5. 6. 7. 同步从动发送设置: 将 SYNC 和 SPEN 位置 1 并将 CSRC 位清零。 将 CREN 和 SREN 位清零。 如果使用中断,将INTCON寄存器的GIE和PEIE 位置 1,并将 PIE1 寄存器的 TXIE 位也置 1。 如果需要发送 9 位数据,将 TX9 位置 1。 将 TXEN 位置 1 使能发送。 若选择发送 9 位数据,将最高位写入 TX9D 位。 将低 8 位数据写入 TXREG 寄存器开始传输。 与同步从动发送相关的寄存器 POR 和 BOR 所有其他复位 时的值 时的值 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 BAUDCTL ABDOVF RCIDL — SCKP BRG16 — WUE ABDEN 01-0 0-00 01-0 0-00 0000 000x GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000 PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000 0000 0000 0000 0000 INTCON RCREG EUSART 接收数据寄存器 RX9 SREN SPEN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x SPBRG BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0 0000 0000 0000 0000 SPBRGH BRG15 BRG14 BRG13 BRG12 BRG11 BRG10 BRG9 BRG8 0000 0000 0000 0000 TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111 0000 0000 0000 0000 SYNC SENDB BRGH TRMT TX9D 0000 0010 0000 0010 RCSTA TXREG TXSTA 图注: EUSART 发送数据寄存器 CSRC TX9 TXEN x = 未知, - = 未实现 (读为 0)。同步从动发送不使用阴影单元。 2008 Microchip Technology Inc. DS41291E_CN 第175 页 PIC16F882/883/884/886/887 12.4.2.3 EUSART 同步从动接收 12.4.2.4 除了以下不同外,同步主控和从动模式的工作原理相 同。(见第 12.4.1.5 节 “同步主控接收”)。 1. 2. • 休眠模式 • CREN 位总是置 1,因此接收器不能进入空闲状 态。 • SREN 位,在从动模式可为 “任意值”。 3. 4. 5. 如果在进入休眠模式之前,已经将 CREN 位置 1,则在 休眠模式仍可接收字符。RSR 寄存器接收到字后,就会 立即将接收到的数据传输到 RCREG 寄存器。如果将 RCIE 允许位置 1,则产生的中断将使器件从休眠模式唤 醒,然后执行下一条指令。如果 GIE 位也置 1,则程序 将跳转到中断向量处执行。 表 12-10: Bit 7 Bit 6 BAUDCTL ABDOVF GIE PIE1 PIR1 RCREG RCSTA SPBRG 7. 8. 将 SYNC 和 SPEN 位置 1 并将 CSRC 位清零。 如果使用中断,将INTCON寄存器的GIE和PEIE 位置 1,并将 PIE1 寄存器的 RCIE 位也置 1。 如果需要接收 9 位字符,将 RX9 位置 1。 将 CREN 位置 1,使能接收。 当接收完成后,将 RCIF 位置 1。如果 RCIE 已 置 1,还会产生一个中断。 如果使能 9 位模式,从 RCSTA 寄存器的 RX9D 位获取最高位。 读 RCREG 寄存器,从接收 FIFO 缓冲器获取接 收到的 8 个低数据位。 如果产生溢出错误,清零RCSTA寄存器的CREN 位或清零 SPEN 位以复位 EUSART 来清除错误。 与同步从动接收相关的寄存器 名称 INTCON 6. 同步从动接收设置: Bit 5 Bit 4 Bit 3 RCIDL — SCKP PEIE T0IE INTE — ADIE RCIE — ADIF RCIF EUSART 接收数据寄存器 SPEN RX9 SREN BRG7 BRG6 BRG5 POR 和 BOR 所有其他复位 时的值 时的值 Bit 2 Bit 1 Bit 0 BRG16 — WUE ABDEN 01-0 0-00 01-0 0-00 RBIE T0IF INTF RBIF 0000 000x 0000 000x TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000 TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000 0000 0000 0000 0000 CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x BRG4 BRG3 BRG2 BRG1 BRG0 0000 0000 0000 0000 SPBRGH BRG15 BRG14 BRG13 BRG12 BRG11 BRG10 BRG9 BRG8 0000 0000 0000 0000 TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111 0000 0000 0000 0000 SYNC SENDB BRGH TRMT TX9D 0000 0010 0000 0010 TXREG TXSTA EUSART 发送数据寄存器 CSRC TX9 TXEN 图注: x = 未知, - = 未实现 (读为 0)。同步从动接收不使用阴影单元。 DS41291E_CN 第176 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 12.5 EUSART 在休眠期间的工作 只有在同步从模式下,EUSART 在休眠期间才可继续工 作。 所有其他模式都需要系统时钟,因此不能产生在休 眠模式下运行发送或接收移位寄存器所必需的信号。 同步从模式使用外部产生的时钟对发送和接收移位寄存 器进行操作。 12.5.1 休眠期间的同步接收 要在休眠期间执行接收操作,在进入休眠模式之前必须 满足下列所有条件: • RCSTA 和 TXSTA 控制寄存器必须配置为同步从 接收 (见第 12.4.2.4 节 “同步从动接收设 置:”)。 • 如果需要中断,将 PIE1 寄存器的 RCIE 位和 INTCON 寄存器的 GIE 和 PEIE 位置 1。 • 必须通过读取 RCREG 寄存器将 RCIF 中断标志位 清零,以卸载接收缓冲器中所有待处理的字符。 进入休眠模式后,器件已准备好分别接受 RX/DT 和 TX/ CK 引脚上的数据和时钟信号。当外部器件将数据字完 全移入后,将 PIR1 寄存器的 RCIF 中断标志位置 1。从 而,将处理器从休眠模式唤醒。 12.5.2 休眠期间的同步发送 要在休眠期间执行发送操作,在进入休眠模式之前必须 满足下列所有条件: • RCSTA 和 TXSTA 控制寄存器必须配置为同步从 发送模式 (见第 12.4.2.2 节 “同步从动发送设 置:”)。 • 将输出数据写入 TXREG 来清零 TXIF 中断标志 位,从而填充 TSR 和发送缓冲器。 • 如果需要中断,将 PIE1 寄存器的 TXIE 位和 INTCON 寄存器的 PEIE 位置 1。 进入休眠模式后,器件已准备好接受 TX/CK 上的时钟信 号和发送 RX/DT 引脚上的数据。当外部器件将 TSR 中 数据字全部移出后, TXREG 中的待处理字节将被发送 到 TSR,且 TXIF 标志位置 1。 从而将处理器从休眠模 式唤醒。 此时, TXREG 可用于接收其他发送字符,此 操作将清零 TXIF 标志位。 从休眠模式唤醒后,器件将执行 SLEEP 指令后面的指 令。如果GIE全局中断允许位也置1,则调用地址0004h 处的中断服务程序。 从休眠模式唤醒后,器件将执行 SLEEP 指令后面的指 令。如果 INTCON 寄存器的 GIE 全局中断允许位也置 1,则调用地址 004h 处的中断服务程序。 2008 Microchip Technology Inc. DS41291E_CN 第177 页 PIC16F882/883/884/886/887 注: DS41291E_CN 第178 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 13.0 主控同步串行端口 (MSSP)模 块 13.1 主控 SSP (MSSP)模块概述 主控同步串行端口 (Master Synchronous Serial Port, MSSP)模块是用于同其他外设或单片机进行通信的串 行接口。这些外设器件可以是串行 EEPROM、移位寄 存器、显示驱动器或 A/D 转换器等。MSSP 模块有下列 两种工作模式: • 串行外设接口 (SPI) • I2CTM - 全主控模式 - 从动模式 (支持广播地址呼叫) I2C 接口在硬件上支持下列模式: • 主控模式 • 多主机模式 • 从动模式 13.2 控制寄存器 MSSP 模块具有三个相关的寄存器。包括一个 STATUS 寄存器和两个控制寄存器。 寄存器 13-1 给出了 MSSP 的状态寄存器(SSPSTAT), 寄存器 13-2 给出了 MSSP 控制寄存器 1(SSPCON1), 寄存器 13-3 给出了 MSSP 控制寄存器 2(SSPCON2)。 2008 Microchip Technology Inc. DS41291E_CN 第179 页 PIC16F882/883/884/886/887 寄存器 13-1: SSPSTAT:SSP 状态寄存器 R/W-0 R/W-0 R-0 R-0 R-0 R-0 R-0 R-0 SMP CKE D/A P S R/W UA BF bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 bit 7 x = 未知 SMP:采样位 SPI 主控模式: 1 = 在数据输出时间的末尾采样输入数据 0 = 在数据输出时间的中间采样输入数据 SPI 从动模式: 当使用 SPI 的从动模式时,必须将 SMP 清零。 在 I2 C 主控或从动模式下: 1 = 禁止变化率控制,标准速度模式 (100 kHz 和 1 MHz) 0 = 使能变化率控制,高速模式 (400 kH) bit 6 CKE:SPI 时钟边沿选择位 CKP = 0: 1 = 在 SCK 引脚的上升沿发送数据 0 = 在 SCK 引脚的下降沿发送数据 CKP = 1: 1 = 在 SCK 引脚的下降沿发送数据 0 = 在 SCK 引脚的上升沿发送数据 bit 5 bit 4 D/A:数据 / 地址位 (仅限 I2C 模式) 1 = 表示最后接收或发送的字节是数据 0 = 表示最后接收或发送的字节是地址 P:停止位 (仅限 I2C 模式。禁止 MSSP 模块 (SSPEN 清零)时此位被清零。) 1 = 表示最后检测到了停止位 (复位时该位为 0)。 0 = 表示最后未检测到停止位 bit 3 S:起始位 (仅限 I2C 模式。禁止 MSSP 模块 (SSPEN 清零)时此位被清零。) 1 = 表示最后检测到了起始位 (复位时该位为 0)。 0 = 最后未检测到起始位 bit 2 R/W:读 / 写位信息 (仅限 I2C 模式) 该位用来保存在最后一次地址匹配后的 R/W 位信息。该位仅在从地址匹配开始到下一个起始位、停止位或非 ACK 位时 有效。 在 I2 C 从动模式下: 1= 读 0= 写 在 I2 C 主控模式下: 1 = 正在发送 0 = 不在进行发送 此位与 SEN、 RSEN、 PEN、 RCEN 或 ACKEN 做逻辑或运算的结果将指示 MSSP 是否在空闲模式下。 bit 1 UA:更新地址位 (仅限 10 位 I2C 模式) 1= 表示用户需要更新 SSPADD 寄存器中的地址 0= 不需要更新地址 bit 0 BF:缓冲器满状态位 接收 (SPI 和 I2 C 模式): 1= 接收完成, SSPBUF 满 0= 接收未完成, SSPBUF 空 发送 (仅限 I2 C 模式): 1 = 数据正在发送 (不包括 ACK 和停止位), SSPBUF 满 0 = 数据发送完成 (不包括 ACK 和停止位), SSPBUF 空 DS41291E_CN 第180 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 寄存器 13-2: SSPCON:SSP 控制寄存器 1 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7 WCOL:写冲突检测位 主控模式: 1 = 在 I2C 不满足开始发送数据的条件下,试图对 SSPBUF 寄存器进行写操作 0 = 未发生冲突 从动模式: 1 = 正在发送前一个字时,又对 SSPBUF 寄存器进行写操作 (必须由软件清零) 0 = 未发生冲突 bit 6 SSPOV:接收溢出指示位 在 SPI 模式下: 1 = SSPBUF 仍保持前一数据时,又收到一个新的字节。出现溢出时, SSPSR 中的数据会丢失。溢出只会在从动模式下发 生。在从动模式中,即使仅发送数据,用户也必须读 SSPBUF 以避免溢出。在主控模式中,溢出位不被置 1,因为每 次接收或发送新数据,都要通过写 SSPBUF 寄存器来启动 (该位必须由软件清零)。 0 = 没有溢出 在 I2C 模式下: 1 = SSPBUF 寄存器仍保持前一数据时,又接收到一个新的字节。在发送模式下 SSPOV 位可为任意值(该位必须由软件 清零)。 0 = 没有溢出 bit 5 SSPEN:同步串行端口使能位 在这两个模式下使能该位时,必须正确配置这些引脚为输入或输出引脚 在 SPI 模式下: 1 = 使能串行端口并将 SCK、 SDO、 SDI 和 SS 配置为串行端口引脚 0 = 禁止串行端口并将这些引脚配置为 I/O 端口引脚 在 I2C 模式下: 1 = 使能串行端口并将 SDA 和 SCL 引脚配置为串行端口引脚 0 = 禁止串行端口并将这些引脚配置为 I/O 端口引脚 bit 4 CKP:时钟极性选择位 在 SPI 模式下: 1 = 时钟空闲状态为高电平 0 = 时钟空闲状态为低电平 在 I2C 从动模式下: SCK 释放控制 1 = 使能时钟 0 = 保持时钟线为低电平 (时钟延长)。(用于确保数据建立时间。) 在 I2C 主控模式下: 在此模式下未使用 bit 3-0 SSPM<3:0>:同步串行端口模式选择位 0000 = SPI 主控模式,时钟 = FOSC/4 0001 = SPI 主控模式,时钟 = FOSC/16 0010 = SPI 主控模式,时钟 = FOSC/64 0011 = SPI 主控模式,时钟 = TMR2 输出 /2 0100 = SPI 从动模式,时钟 = SCK 引脚,使能 SS 引脚控制 0101 = SPI 从动模式,时钟 = SCK 引脚,禁止 SS 引脚控制, SS 可用作 I/O 引脚 0110 = I2C 从动模式, 7 位地址 0111 = I2C 从动模式, 10 位地址 1000 = I2C 主控模式,时钟 = FOSC/(4 * (SSPADD+1)) 1001 = 禁止装载功能 1010 = 保留 1011 = 受 I2C 固件控制的主控模式 (从动空闲) 1100 = 保留 1101 = 保留 1110 = I2C 从动模式, 7 位地址,并允许起始位和停止位中断 1111 = I2C 从动模式, 10 位地址,并允许起始位和停止位中断 2008 Microchip Technology Inc. DS41291E_CN 第181 页 PIC16F882/883/884/886/887 寄存器 13-3: SSPCON2:SSP 控制寄存器 2 R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7 GCEN:广播呼叫使能位 (仅限 I2C 从动模式) 1 = 允许在 SSPSR 中接收到广播呼叫地址 (0000h)时产生中断 0 = 禁止广播呼叫地址 bit 6 ACKSTAT:应答状态位 (仅限于 I2C 主控模式) 在主控发送模式下: 1 = 未接收到来自从动器件的应答 0 = 已接收到来自从动器件的应答 bit 5 ACKDT:应答数据位 (仅限于 I2C 主控模式) 在主控接收模式下: 用户在接收完成后发送的应答序列的值 1 = 不应答 0 = 应答 bit 4 ACKEN:应答序列使能位 (仅限 I2C 主控模式) 在主控接收模式下: 1 = 在 SDA 和 SCL 引脚启动应答序列,发送 ACKDT 数据位。由硬件自动清零。 0 = 应答序列空闲 bit 3 RCEN:接收使能位 (仅限 I2C 主控模式) 1 = 使能 I2C 接收模式 0 = 接收空闲 bit 2 PEN:停止条件使能位 (仅限于 I2C 主控模式) SCK 释放控制: 1 = 在 SDA 和 SCL 引脚启动停止条件。由硬件自动清零。 0 = 停止条件空闲 bit 1 RCEN:重复启动条件使能位 (仅限 I2C 主控模式) 1 = 在 SDA 和 SCL 引脚启动重复启动条件。由硬件自动清零。 0 = 重复启动条件空闲 bit 0 SEN:启动条件使能位 (仅限 I2C 主控模式) 在主控模式下: 1 = 在 SDA 和 SCL 引脚启动启动条件。由硬件自动清零。 0 = 启动条件空闲 在从动模式下: 1 = 从发送和接收都会使能时钟延长 (使能时钟延长) 0 = 禁止时钟延长 注 1: 对于 ACKEN、 RCEN、 PEN、 RSEN 和 SEN 位:如果 I2C 模块不处在空闲模式,此位可能无法被置 1 (没有假脱机 (spooling))且可能无法对 SSPBUF 进行写操作 (禁止写 SSPBUF)。 DS41291E_CN 第182 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 13.3 SPI 模式 图 13-1: MSSP 框图 (SPI 模式) 内部 数据总线 SPI 模式允许同时同步发送和接收 8 位数据。支持 SPI 的所有 4 种模式。通常使用以下三个引脚来完成通信: 读 • 串行数据输出 (SDO)——RC5/SDO • 串行数据输入 (SDI)——RC4/SDI/SDA • 串行时钟 (SCK)——RC3/SCK/SCL 写 SSPBUF 寄存器 此外,在任意一种从动工作模式下均可使用第 4 个引脚: • 从动选择 (SS)——RA5/SS/AN4 13.3.1 工作原理 当初始化 SPI 时,需要指定几个选项。可以通过对相应 的控制位(SSPCON<5:0> 和 SSPSTAT<7:6>)编程来 指定。这些控制位用于指定以下选项: • • • • 主控模式 (SCK 作为时钟输出) 从动模式 (SCK 作为时钟输入) 时钟极性 (SCK 的空闲状态) 输入数据的采样相位 (数据输出时间的中间或末 尾) • 时钟边沿 (在 SCK 的上升沿 / 下降沿输出数据) • 时钟速率 (仅限主控模式) • 从动选择模式 (仅限于从动模式) SSPSR 寄存器 SDI 移位 时钟 bit 0 SDO SS SS 控制 使能 边沿 选择 2 时钟选择 SSPM<3:0> SMP:CKE 4 TMR2 输出 2 2 边沿 选择 预分频器 TOSC 4, 16, 64 ( 图 13-1 显示了在 SPI 模式下 MSSP 模块的框图。 SCK ) SSPSR 中的数据传输给 TX/RX TRIS 位 注: I/O 引脚具有对 VDD 和 VSS 的二极管保护。 MSSP 模块由一个发送 / 接收移位寄存器(SSPSR)和 一个缓冲寄存器 (SSPBUF)组成。 SSPSR 将数据移 入和移出器件,最高有效位在前。SSPBUF 保存上次写 入 SSPSR 的数据直到新接收到的数据就绪为止。一旦 8 位数据接收完毕,该字节就被移入 SSPBUF 寄存器。 然后, SSPSTAT 寄存器的缓冲器满检测位 BF 和 PIR1 寄存器的中断标志位 SSPIF 被置 1。这种双重缓冲数据 接收方式 (SSPBUF)允许在读取刚接收的数据之前, 就开始接收下一个字节。在数据发送 / 接收期间,任何 试图写 SSPBUF 寄存器的操作都会被忽略,并将 SSPCON 寄存器的写冲突检测位 WCOL 置 1。此时用 户必须用软件将 WCOL 位清零,否则无法判别下一次对 SSPBUF 的写操作是否成功完成。 2008 Microchip Technology Inc. DS41291E_CN 第183 页 PIC16F882/883/884/886/887 当应用软件等待接收有效数据时,应在下一个要传输的 数据字节写入 SSPBUF 之前,将 SSPBUF 中的前一个 数据读出。缓冲器满标志位 BF (SSPSTAT 寄存器)用 于表示何时 SSPBUF 已经载入了接收到的数据(发送完 成)。当 SSPBUF 中的数据被读取后,BF 位即被清零。 如果 SPI 仅仅作为发送器,则不必理会接收的数据。通 常可用 MSSP 中断来判断发送或接收何时完成。必须 读和 / 或写 SSPBUF。如果不使用中断来处理数据的 收发,用软件查询方法同样可确保不会发生写冲突。 例 13-1 显示了装载 SSPBUF (SSPSR)进行数据发送 的过程。 不能直接读写 SSPSR 寄存器,只能通过寻址 SSPBUF 寄 存器间接访问它。此外,MSSP 状态寄存器 SSPSTAT 将 指示各种状态。 例 13-1: 13.3.2 使能 SPI I/O 要使能串行端口, SSPCON 寄存器的 MSSP 使能位 SSPEN 必须置 1。要复位或重新配置 SPI 模式,要先将 SSPEN 位清零,重新初始化 SSPCON 寄存器,然后将 SSPEN 位置 1。这将把 SDI、SDO、SCK 和 SS 引脚配置 为串行端口引脚。要将这些引脚用作串行端口,还必须将 其数据方向位(在 TRIS 寄存器中)正确编程,方法如下: • • • • • SDI 由 SPI 模块自动控制 必须将 SDO 的 TRISC<5> 清零 必须将 SCK (主控模式)的 TRISC<3> 位清零 必须将 SCK (从动模式)的 TRISC<3> 位清零 必须将 SS 的 TRISA<5> 置 1 对于任何不想要的串行端口功能,可通过将对应的数据 方向 (TRIS)寄存器设置为相反值来跳过。 装载 SSPBUF (SSPSR)寄存器 LOOP BTFSS SSPSTAT, BF GOTO LOOP MOVF SSPBUF, W ;Has data been received (transmit complete)? ;No ;WREG reg = contents of SSPBUF MOVWF RXDATA ;Save in user RAM, if data is meaningful MOVF TXDATA, W MOVWF SSPBUF ;W reg = contents of TXDATA ;New data to xmit DS41291E_CN 第184 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 13.3.3 可通过对 SSPCON 寄存器的 CKP 位进行相应的编程来 选择时钟极性。图 13-2、图 13-4 和图 13-5 给出了 SPI 通信的波形图,其中 MSb 被首先发送。在主控模式下, SPI 时钟速率 (比特率)可由用户编程设定为下列速率 之一: 主控模式 主器件控制 SCK,因此可以随时启动数据传输。主器件 根据软件协议确定从器件应在何时广播数据。 在主控模式下,数据一旦写入 SSPBUF 寄存器就开始发 送或接收。如果 SPI 仅作为接收器,则可以禁止 SDO 输出 (将其编程设定为输入)。 SSPSR 寄存器按设置 的时钟速率对 SDI 引脚上的信号进行连续移位输入。每 个 字节 接 收 完 后,都会 被 当 作 普通 的 接 收 字节 装 入 SSPBUF 寄存器 (相应的中断和状态位置 1)。这可以 在接收器应用中作为 “线路活动监控 (Line Activity Monitor)”模式,是很有用的。 • • • • FOSC/4 (或 TCY) FOSC/16 (或 4•TCY) FOSC/64 (或 16•TCY) Timer2 输出 /2 这里允许的最大数据速率是 10.00 Mbps (当晶振为 40 MHz 时)。 图 13-2 给出了主控模式的波形图。当 SSPSTAT 寄存器 的 CKE 位置 1 时, SDO 数据在 SCK 上出现时钟边沿 前就有效。图中所示输入采样的变化由 SSPSTAT 寄存 器的 SMP 位的状态决定。图中指出了将接收到的数据 装入 SSPBUF 的时间。 图 13-2: SPI 模式的波形 (主控模式) 写入 SSPBUF SCK (CKP = 0 CKE = 0) SCK (CKP = 1 CKE = 0) 4 种时钟 模式 SCK (CKP = 0 CKE = 1) SCK (CKP = 1 CKE = 1) SDO (CKE = 0) bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 SDO (CKE = 1) bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 SDI (SMP = 0) bit 0 bit 7 输入 采样 (SMP = 0) SDI (SMP = 1) bit7 bit 0 输入 采样 (SMP = 1) SSPIF SSPSR 到 SSPBUF 2008 Microchip Technology Inc. 在 Q2 ↓ 后的 Q4 周期 DS41291E_CN 第185 页 PIC16F882/883/884/886/887 13.3.4 从动模式 在从动模式下,当 SCK 引脚上出现外部时钟脉冲时,发 送和接收数据。当最后一位数据被锁存后,PIR1 寄存器 的 SSPIF 中断标志位置 1。 在从动模式下,时钟由 SCK 引脚上的外部时钟源提供。 外部时钟必须满足电气规范中规定的高电平和低电平的 最短时间要求。 在休眠状态下,从器件仍可发送 / 接收数据。当收到一 个字节时,器件从休眠状态被唤醒。 13.3.5 从动选择同步 SS 引脚允许器件工作在同步从动模式。 SPI 必须工作在从 动模式下,并使能SS引脚控制(SSPxCON1<3:0> = 04h)。 要使 SS 引脚用作输入引脚,不能将该引脚驱动为低电 平。当 SS 引脚为低电平时,使能数据的发送和接收, 图 13-3: 同时 SDO 引脚被驱动。当 SS 引脚为高电平时,即使是 在数据的发送过程中,SDO 引脚也不再被驱动,而是变 成悬空输出。根据应用的需要,可外接上拉 / 下拉电阻。 注 1: 当 SPI 工作在从动模式下,并且 SS 引脚控 制使能(SSPxCON1<3:0> = 0100)时,如 果 SS 引脚置为 VDD 电平,SPI 模块将被复 位。 2: 如果在 CKE 置 1 (SSPSTAT 寄存器)的 从动模式下使用 SPI,则必须使能 SS 引脚 控制。 当 SPI 模块复位后,位计数器被强制归 0。这可以通过 强制将 SS 引脚拉为高电平或将 SSPEN 位清零来实现。 将 SDO 引脚和 SDI 引脚相连可以仿真双线制通信。当 SPI 需要作为接收器工作时,SDO 引脚可以被配置为输 入。这样就禁止了从 SDO 发送数据。因为 SDI 不会引 起总线冲突,因而总是可以将其保留为输入 (SDI 功 能)。 从动同步波形 SS SCK (CKP = 0 CKE = 0) SCK (CKP = 1 CKE = 0) 写入 SSPBUF SDO SDI (SMP = 0) bit 7 bit 6 bit 7 bit 0 bit 0 bit 7 bit 7 输入 采样 (SMP = 0) SSPIF SSPSR 到 SSPBUF DS41291E_CN 第186 页 在 Q2 ↓ 后 的 Q4 周期 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 13-4: SPI 模式波形 (从动模式, CKE = 0) SS 可选 SCK (CKP = 0 CKE = 0) SCK (CKP = 1 CKE = 0) 写入 SSPBUF SDO bit 7 SDI (SMP = 0) bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 0 bit 7 输入 采样 (SMP = 0) SSPIF 在 Q2 ↓ 后 的 Q4 周期 SSPSR 到 SSPBUF 图 13-5: SPI 模式波形 (从动模式, CKE = 1) SS 不可任选 SCK (CKP = 0 CKE = 1) SCK (CKP = 1 CKE = 1) 写入 SSPBUF SDO SDI (SMP = 0) bit 6 bit 7 bit 7 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 0 输入 采样 (SMP = 0) SSPIF SSPSR 到 SSPBUF 2008 Microchip Technology Inc. 在 Q2 ↓ 后 的 Q4 周期 DS41291E_CN 第187 页 PIC16F882/883/884/886/887 13.3.6 13.3.8 休眠操作 表 13-1 给出了标准 SPI 模式和 CKP 与 CKE 控制位状 态的对应情况。 在主控模式下,如果选择了休眠模式,所有模块的时钟 都将停止,并且在器件被唤醒前,发送 / 接收将保持此 停滞状态。当器件返回到运行模式后,该模块将恢复发 送和接收数据。 表 13-1: 在从动模式下, SPI 发送 / 接收移位寄存器与器件异步 工作。这可以使器件处于休眠模式下,而且数据仍可被 移入 SPI 发送 / 接收移位寄存器。当 8 位数据全部接收 到后, MSSP 中断标志位将置 1,并且如果允许中断的 话,将唤醒器件。 13.3.7 总线模式兼容性 SPI 总线模式 控制位状态 标准 SPI 模式术语 0, 0, 1, 1, 复位的影响 复位会禁止 MSSP 模块并终止当前的传输。 0 1 0 1 CKP CKE 0 0 1 1 1 0 1 0 还有一个 SMP 位用来控制何时采样数据。 表 13-2: 名称 与 SPI 操作相关的寄存器 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他复位 时的值 GIE/GIEH PEIE/GIEL T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000 PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 0000 0000 xxxx xxxx uuuu uuuu INTCON SSPBUF 同步串行端口接收缓冲器 / 发送寄存器 SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000 SSPSTAT SMP CKE D/A P S R/W UA BF 0000 0000 0000 0000 TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111 TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111 图注: x = 未知, u = 不变, - = 未实现,读为 0。 SPI 模式下的 MSSP 模块不使用阴影单元。 注 1: PORTA、 LATA 和 TRISA 中的 bit 6 仅在 ECIO 和 RCIO 振荡模式下被使能。在所有其他振荡模式下,它们被禁止并读为 0。 DS41291E_CN 第188 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 13.4 MSSP I2C™ 操作 MSSP 模块工作在 I 2C 模式时,可以实现所有的主控和 从动功能 (包括广播呼叫支持),并且用硬件提供起始 位和停止位的中断来判断总线何时空闲 (多主机功 能)。MSSP 模块实现了标准模式规范,以及 7 位和 10 位寻址。 有两个引脚用于数据传输。它们是时钟引脚 (SCL) ——RC3/SCK/SCL 引 脚,和 数 据 引 脚 (SDA)—— RC4/SDI/SDA 引脚。用户必须通过 TRISC<4:3> 位将 这些引脚配置为输入或输出引脚。 通过将 SSPCON 寄存器的 MSSP 使能位 SSPEN 置 1, 使能 MSSP 模块的功能。 图 13-6: MSSP 框图 (I2C 模式) 内部 数据总线 读 写 SSPBUF 寄存器 RC3/SCK/SCL LSb 13.4.1 从动模式 在从动模式下, SCL 引脚和 SDA 引脚必须被配置为输 入(TRISC<4:3> 置 1)。需要时(如从发送器)MSSP 模块将用输出数据改写输入状态。 a) 匹配检测 地址匹配 SSPMSK 寄存器 起始位和 停止位检测 缓冲器满标志位 BF (SSPCON 寄存器)在接收 到传输的数据前置 1。 b) 在接收到传输的数据之前,溢出标志位 SSPOV (SSPCON 寄存器)已被置 1。 在这种情况下,SSPSR 寄存器的值不会载入 SSPBUF,但 是 PIR1 寄存器的 SSPIF 位会置 1。 BF 位是通过读取 SSPBUF 寄存器清零的,而 SSPOV 位是通过软件清零 的。 SSPADD 寄存器 注: 如果已将 SCL 和 SDA 引脚编程为输入引脚(将相应的 TRISC 位置 1),选择任何 I 2C 模式且 SSPEN 位置 1 将强制 SCL 和 SDA 引脚为漏极开路。 只要满足下列条件之一,MSSP 模块就不会产生此 ACK 脉冲: SSPSR 寄存器 MSb I2C 主控模式,时钟 = OSC/4 (SSPADD +1) I 2C 从动模式 (7 位地址) I 2C 从动模式 (10 位地址) I 2C 从动模式, 7 位地址,允许起始位和停止位中 断 • I 2C 从动模式, 10 位地址,允许起始位和停止位 中断 • I 2C 固件控制的主控操作,从器件空闲 • • • • 当地址匹配时或在地址匹配后传输的数据被接收时,硬 件会自动产生一个应答(ACK)脉冲,并把当时 SSPSR 寄存器中接收到的数据装入 SSPBUF 寄存器。 移位 时钟 RC4/ SDI/ SDA 可使用 SSPCON 寄存器控制 I 2C 的操作。可使用 SSPM<3:0> 模式选择位 (SSPCON 寄存器)选择以下 I 2C 模式之一: 置 1 和复位 S 位和 P 位 (SSPSTAT 寄存器) I/O 引脚具有连接到 VDD 和 VSS 的保护二极管。 为确保正常工作,SCL 时钟输入必须满足最小高电平时 间和最小低电平时间要求。关于 I2C 规范所规定的高电 平和低电平时间以及对 MSSP 模块的具体要求,请参见 时序参数 100 和 101。 MSSP 模块具有 7 个用于 I2C 操作的寄存器。它们是: • • • • • • • MSSP 控制寄存器 1 (SSPCON) MSSP 控制寄存器 2 (SSPCON2) MSSP 状态寄存器 (SSPSTAT) 串行接收 / 发送缓冲寄存器 (SSPBUF) MSSP 移位寄存器 (SSPSR):不能直接访问 MSSP 地址寄存器 (SSPADD) MSSP 屏蔽寄存器 (SSPMSK) 2008 Microchip Technology Inc. DS41291E_CN 第189 页 PIC16F882/883/884/886/887 13.4.1.1 寻址 一旦使能了 MSSP 模块,它就会等待启动条件产生。在 启动条件出现后, 8 位数据被移入 SSPSR 寄存器。在 时钟 (SCL)线的上升沿采样所有的输入位。寄存器 SSPSR<7:1> 的值会和 SSPADD 寄存器的值比较,该 比较是在第 8 个时钟脉冲 (SCL)的下降沿进行的。如 果地址匹配,并且 BF 位和 SSPOV 位为零,会发生下 列事件: a) b) c) d) SSPSR 寄存器的值被装入 SSPBUF 寄存器。 缓冲器满标志位 BF 置 1。 产生 ACK 脉冲。 在第 9 个 SCL 脉冲的下降沿, PIR1 寄存器的 MSSP 中断标志位 SSPIF 置 1 (如果允许中断 则产生中断)。 在 10 位地址模式下,从器件需要接收两个地址字节。第 一个地址字节的高 5 位指定这是否为 10 位地址。 R/W (SSPSTAT 寄存器)必须指定写操作,这样从器件才能 接收到第二个地址字节。对于 10 位地址,第一个字节应 该是 11110 A9 A8 0,其中 A9 和 A8 是该地址的两个 最高有效位。 10 位地址的工作时序如下,其中 7-9 步是针对从动发送 器而言的: 1. 2. 3. 4. 5. 6. 7. 8. 9. 接收地址的第一 (高)字节 (PIR1 寄存器的 SSPIF 位和 SSPSTAT 寄存器的 BF 和 UA 位置 1)。 用地址的第二个 (低)字节更新 SSPADD 寄存 器 (UA 位清零并释放 SCL 线)。 读 SSPBUF 寄存器 (BF 位清零)并将标志位 SSPIF 清零。 接收地址的第二个 (低)字节 (SSPIF 位、 BF 位和 UA 位置 1)。 用地址的第一(高)字节更新 SSPADD 寄存器。 如果匹配,释放 SCL 线,并将 UA 位清零。 读 SSPBUF 寄存器 (BF 位清零)并将标志位 SSPIF 清零。 接收重复启动条件。 接收地址的第一个 (高)字节 (SSPIF 位和 BF 位置 1)。 读 SSPBUF 寄存器 (BF 位清零)并将标志位 SSPIF 清零。 13.4.1.2 当 存 在地 址 字 节 溢出 条 件 时,则 不会 产 生 应答 脉 冲 (ACK)。溢出条件是指 BF 位 (SSPSTAT 寄存器)置 1,或者 SSPOV 位 (SSPCON 寄存器)置 1。 每个数据传输字节都会产生一个 MSSP 中断。必须用软 件将 PIR1 寄存器的中断标志位 SSPIF 清零。SSPSTAT 寄存器用于确定该字节的状态。 13.4.1.3 发送 当接收的地址字节的 R/W 位置 1 并发生地址匹配时, SSPSTAT 寄存器的 R/W 位置 1。接收到的地址被装入 SSPBUF 寄存器。 ACK 脉冲在第 9 位上发送,同时 RC3/SCK/SCL 引脚保持低电平。传输的数据必须装入 SSPBUF 寄存器,同时也被装入 SSPSR 寄存器。随后 应通过将 CKP 位 (SSPCON 寄存器)置 1 使能 RC3/SCK/SCL 引脚。在发送另一个时钟脉冲前,主控 器件必须监视 SCL 引脚。从动器件可以通过延长时钟, 暂停与主控器件的数据传输。8 个数据位在 SCL 输入的 下降沿移出。这可确保在 SCL 为高电平期间 SDA 信号 是有效的 (见图 13-8)。 每个数据传输字节都会产生一个 MSSP 中断。SSPIF 标 志位必须由软件清零, SSPSTAT 寄存器用于确定字节 的状态。 SSPIF 位在第 9 个时钟脉冲的下降沿被置 1。 来自主接收器的 ACK 脉冲将在 SCL 输入第 9 个脉冲的 上升沿锁存。如果 SDA 线为高电平 (无 ACK),那么 表示数据传输已完成。在这种情况下,如果从器件锁存 了 ACK,将复位从动逻辑 (复位 SSPSTAT 寄存器), 同时从器件监视下一个起始位的出现。如果 SDA 线为 低电平 (ACK) ,则必须将接下去要发送的数据装入 SSPBUF 寄存器,这也将装载 SSPSR 寄存器。应将 CKP 置 1 使能 RC3/SCK/SCL。 接收 当地 址 字 节 的 R/W 位 清 零 并 发 生 地 址 匹 配 时, SSPSTAT 寄存器的 R/W 位清零。接收到的地址被装入 SSPBUF 寄存器。 DS41291E_CN 第190 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 13-7: 接收地址 接收数据 R/W = 0 接收数据 无 ACK ACK ACK A7 A6 A5 A4 A3 A2 A1 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 SDA SCL I 2C™ 从动模式接收时序 (7 位地址) 1 S 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 1 9 2 3 4 5 6 7 8 9 SSPIF P 总线主控 器件终止 传输 BF 由软件清零 读 SSPBUF 寄存器 SSPOV 因为 SSPBUF 寄存器仍为满,所以 SSPOV 位置 1。 不发送 ACK 图 13-8: I 2C™ 从动模式发送时序 (7 位地址) R/W = 1 接收地址 A7 SDA SCL S A6 A5 1 2 3 采样数据输入 A4 A3 A2 A1 4 5 6 7 ACK 8 R/W = 0 NACK 发送数据 9 D7 D6 D5 D4 D3 D2 D1 D0 1 2 3 4 5 6 7 8 9 SCL 保持低电平 当 CPU 响应 SSPIF 时 P SSPIF BF 由软件清零 SSPBUF 要用软件写入 来自 SSP 中断 服务程序 CKP 写 SSPBUF 后置 1 (SSPBUF 的内容必须在 CKP 位被置 1 前写入) 2008 Microchip Technology Inc. DS41291E_CN 第191 页 PIC16F882/883/884/886/887 13.4.2 如果与广播呼叫地址匹配, SSPSR 的值将传输到 SSPBUF, BF 标志位 (第 8 位)置 1,并且 SSPIF 中 断标志位在第 9 位 (ACK 位)的下降沿置 1。 广播呼叫地址支持 2 在 I C 总线的寻址过程中,通常由启动条件后的第一个 字节决定主器件将寻址哪个从器件。但广播呼叫地址例 外,它能寻址所有器件。当使用这个地址时,理论上所 有的器件都应该发送一个应答响应。 当响应中断时,可以通过读取 SSPBUF 的内容来判断中 断源。该值可以用于判断地址是特定器件的还是一个广 播呼叫地址。 广播呼叫地址是根据 I2C 协议为特定目的保留的八个地 址之一。它由全 0 组成,且 R/W = 0。 在 10 位模式下,需要更新 SSPADD 以使地址的后半部 分匹配,同时 UA 位 (SSPSTAT 寄存器)置 1。如果 GCEN 位置 1 时采样到广播呼叫地址,同时从器件被配 置为 10 位地址模式,则不再需要地址的后半部分,也 不会将 UA 位置 1,从器件将在应答后开始接收数据(见 图 13-9)。 广播呼叫使能位 (GCEN)使能 (SSPCON2 寄存器) 时,即可识别广播呼叫地址。检测到起始位后, 8 位数 据会移入 SSPSR,同时将该地址与 SSPADD 进行比 较。它还会与广播呼叫地址进行比较并用硬件设定。 图 13-9: 从动模式广播呼叫地址时序 (7 或 10 位地址模式) ACK 后,地址与广播呼叫地址作比较 将中断标志位置 1 R/W = 0 ACK D7 广播呼叫地址 SDA SCL S 1 2 3 4 5 6 7 8 9 1 接收数据 ACK D6 D5 D4 D3 D2 D1 D0 2 3 4 5 6 7 8 9 SSPIF BF 用软件清零 读 SSPBUF 寄存器 SSPOV ‘0’ GCEN ‘1’ DS41291E_CN 第192 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 13.4.3 13.4.4 主控模式 通过将 SSPCON 中相应的 SSPM 位置 1 或清零并将 SSPEN 位置 1 可使能主控模式。一旦使能主控模式, 用户即可选择以下 6 项操作: 主控模式通过在检测到启动和停止条件时产生中断来工 作。停止(P)位和起始(S)位在复位时或禁止 MSSP 模块时清零。当 P 位置 1 时,可以取得 I 2C 总线的控制 权;否则总线处于空闲状态,且 P 位和 S 位都为零。 1. 2. 3. 4. 5. 6. 在主控模式中, SCL 和 SDA 线由 MSSP 硬件操纵。 下列事件会使 MSSP 中断标志位 SSPIF 置 1 (如果允 许 MSSP 中断,则产生中断): • • • • • I2C™ 主控模式支持 启动条件 停止条件 数据传输字节已发送 / 已接收 应答发送 重复启动条件 在 SDA 和 SCL 上发出一个启动条件。 在 SDA 和 SCL 上发出一个重复启动条件。 写入 SSPBUF 寄存器,开始数据 / 地址的发送。 在 SDA 和 SCL 上产生停止条件 将 I2C 端口配置为接收数据。 在接收到数据字节后产生应答条件。 注: 当配置为 I2C 主控模式时,MSSP 模块不允 许事件排队。例如,在启动条件结束前,不 允许用户发出另一个启动条件并立即写 SSPBUF寄存器以发起传输。这种情况下, 将不会写入 SSPBUF,WCOL 位将被置 1, 这表明没有发生对 SSPBUF 的写操作。 图 13-10: MSSP 框图 (I2C™ 主控模式) SSPM<3:0> SSPADD<6:0> 内部 数据总线 读 写 SSPBUF 移位 时钟 SDA 输入 SSPSR 起始位、停止位或 应答 产生 接收使能 SCL SCL 输入 总线冲突 注: LSb 起始位检测 停止位检测 写冲突检测位 时钟仲裁 发送 / 接收结束时的 状态计数器 时钟 Cntl MSb 时钟仲裁 /WCOL 检测 (使时钟源处于等待状态) SDA 波特率 发生器 置位 / 复位 S、P 和 WCOL(SSPSTAT) 置位 SSPIF 和 BCLIF 复位 ACKSTAT 和 PEN(SSPCON2) I/O 引脚具有连接到 VDD 和 VSS 的保护二极管。 2008 Microchip Technology Inc. DS41291E_CN 第193 页 PIC16F882/883/884/886/887 13.4.4.1 I2C™ 主控模式操作 所有串行时钟脉冲和启动 / 停止条件均由主器件产生。 停止条件或重复启动条件能结束传输。因为重复启动条 件也是下一次串行传输的开始,因此不会释放I2C总线。 在主控发送器模式下,串行数据通过 SDA 输出,而串 行时钟由 SCL 输出。发送的第一个字节包括接收器件的 地址(7 位)和读 / 写(R/W)位。在这种情况下,R/W 位将是逻辑 0。串行数据每次发送 8 位。每发送一个字 节,会收到一个应答位。启动和停止条件的输出表明串 行传输的开始和结束。 在主控接收模式下,发送的第一个字节包括发送器件的 地址 (7 位)和 R/W 位。在这种情况下, R/W 位将是 逻辑 1。因此,发送的第一个字节是一个 7 位从器件地 址,后面跟 1 表示接收。串行数据通过 SDA 接收,而 串行时钟由 SCL 输出。每次接收 8 位串行数据。每接收 到一个字节,都会发送一个应答位。启动和停止条件分 别表明发送的开始和结束。 在 I2C 模式下,在 SPI 模式中使用的波特率发生器被用 于将SCL时钟频率设置为100 kHz、400 kHz或1 MHz。 波特率发生器的重载值位于 SSPADD 寄存器的低 7 位。 当发生对 SSPBUF 的写操作时,波特率发生器将自动开 始计数。如果指定操作完成 (即,发送的最后一个数据 位后面跟着 ACK),内部时钟将自动停止计数,SCL 引 脚将保持在其最后的状态。 DS41291E_CN 第194 页 下面是一个典型的发送事件序列: a) b) c) d) e) f) g) h) i) j) k) l) 用户通过将启动使能位 SEN (SSPCON2 寄存 器)置 1 产生启动条件。 SSPIF 位置 1。在进行任何其他操作前, MSSP 模块将等待所需的启动时间。 用户将从器件地址装入 SSPBUF 进行发送。 地址从 SDA 引脚移出,直到发送完所有 8 位为 止。 MSSP 模块移入来自从器件的 ACK 位,并将它的值 写入 SSPCON2 寄存器的 ACKSTAT 位。 MSSP 模块在第 9 个时钟周期的末尾将 SSPIF 位 置 1,产生一个中断。 用户将 8 位数据装入 SSPBUF。 数据从 SDA 引脚移出,直到发送完所有 8 位为 止。 MSSP 模块移入来自从器件的 ACK 位,并将它的值 写入 SSPCON2 寄存器的 ACKSTAT 位。 MSSP 模块在第 9 个时钟的末尾将 SSPIF 位置 1,产生一个中断。 用户通过将停止使能位 (PEN)位 (SSPCON2 寄存器)置 1 产生停止条件。 一旦停止条件完成,将产生一个中断。 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 13.4.5 波特率发生器 2 在 I C 主 控 模 式 下,波 特 率 发 生 器 的 重 载值位于 SSPADD 寄存器的低 7 位 (图 13-11)。当装载了该值 后,波特率发生器将自动开始计数并递减至 0,然后停 止直到下次重载为止。 BRG 会在每个指令周期 (TCY) 中的 Q2 和 Q4 时钟周期上进行两次减计数。在 I2C 主控 模式下,会自动重载 BRG。例如,在发生时钟仲裁时, BRG 将在 SCL 引脚采样到高电平时重载(图 13-12)。 图 13-11: 波特率发生器框图 SSPM<3:0> SSPM<3:0> 重载 SCL 控制 SSPADD<6:0> 重载 BRG 向下计数器 CLKOUT FOSC/4 图 13-12: 带有时钟仲裁的波特率发生器时序 SDA DX DX–1 主器件试图将 SCL 拉高,但从器件将 SCL 保持为低电平(时钟仲裁) 允许 SCL 变为高电平 SCL BRG 在 Q2 和 Q4 周期 进行递减计数 BRG 值 03h 02h 01h 00h(延时) 03h 02h SCL 采样为高电平,重载发生 BRG 开始计数 BRG 重载 2008 Microchip Technology Inc. DS41291E_CN 第195 页 PIC16F882/883/884/886/887 13.4.6 I2C™ 主控模式启动条件时序 13.4.6.1 当启动序列进行时,如果用户写 SSPBUF,则 WCOL 被置 1,同时缓冲器内容不变 (未发生写操作)。 要发起启动条件,用户应将 SSPCON2 寄存器的启动条 件使能位 SEN 置 1。当 SDA 和 SCL 引脚都采样为高电 平时,波特率发生器重新装入 SSPADD<6:0> 的内容并 开始计数。当波特率发生器发生超时 (TBRG)时,如 果 SCL 和 SDA 都采样为高电平,则 SDA 引脚被驱动 为低电平。当 SCL 为高电平时,将 SDA 驱动为低电平 就是启动条件,将使 S 位 (SSPSTAT 寄存器)置 1。 随后波特率发生器重新装入 SSPADD<6:0> 的内容并恢 复计数。当波特率发生器超时(TBRG)时,SSPCON2 寄存器的 SEN 位将自动被硬件清零。波特率发生器暂 停工作, SDA 线保持低电平,启动条件结束。 注: WCOL 状态标志 注: 由于不允许事件排队,在启动条件结束之 前,不能对 SSPCON2 的低 5 位进行写操 作。 如果在启动条件开始时,SDA 和 SCL 引脚 已经采样为低电平,或者在启动条件期间, SCL 在 SDA 线被驱动为低电平之前已经采 样为低电平,则会发生总线冲突。总线冲突 中断标志位 BCLIF 置 1,启动条件中止, I2C 模块复位到空闲状态。 图 13-13: 第一个启动位时序 此处写 SEN 位 将 S 位(SSPSTAT)置 1 SDA = 1, SCL = 1 TBRG 完成起始位后, 由硬件将 SEN 位清零 并将 SSPIF 位置 1 TBRG 此处写 SSPBUF 第1位 SDA 第2位 TBRG SCL TBRG S DS41291E_CN 第196 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 13.4.7 I2C™ 主控模式重复启动条件时序 注 将 RSEN 位 (SSPCON2 寄存器)编程为高电平,并且 I2C 逻辑模块处于空闲状态时,就会产生重复启动条件。 当 RSEN 位置 1 时,SCL 引脚被拉为低电平。当 SCL 引 脚采样为低电平时,波特率发生器装入 SSPADD<6:0>的 内 容,并 开 始 计 数。在 一 个 波 特 率 发 生 器 计 数 周 期 (TBRG)内 SDA 引脚被释放 (其引脚电平被拉高)。当 波特率发生器超时时,如果 SDA 采样为高电平,SCL 引 脚将被拉高。当 SCL 引脚采样为高电平时,波特率发生 器将被重新装入SSPADD<6:0>的内容并开始计数。SDA 和 SCL 必须在一个计数周期 TBRG 内采样为高电平。随 后将 SDA 引脚拉为低电平 (SDA = 0)并保持一个计数 周期 TBRG,同时 SCL 为高电平。然后 RSEN 位 (SSPCON2 寄存器)将自动清零,波特率发生器不会重 载, SDA 引脚保持低电平。一旦在 SDA 和 SCL 引脚上 检测到启动条件, S 位 (SSPSTAT 寄存器)将被置 1。 直到波特率发生器超时后, SSPIF 位才会置 1。 1: 有任何其他事件进行时,对 RSEN 的编程无 效。 2: 在重复启动条件期间,下列事件将会导致 总线冲突: • 当 SCL 由低电平变为高电平时, SDA 采样为低电平。 • 在 SDA 被拉低之前, SCL 变为低电 平。这表示可能有另一个主器件正尝 试发送数据 1。 一旦 SSPIF 位被置 1,用户便可以在 7 位地址模式下将 7 位地址写入 SSPBUF,或者在 10 位地址模式下写入默 认的第一个地址字节。当发送完第一个 8 位并接收到一 个 ACK 后,用户可以发送另外 8 位地址 (10 位地址模 式下)或 8 位数据 (7 位地址模式下)。 13.4.7.1 WCOL 状态标志 当重复启动序列进行时,如果用户写 SSPBUF,则 WCOL 被置 1,同时缓冲器内容不变(未发生写操作)。 注: 由于不允许事件排队,在重复启动条件结 束之前,不能对 SSPCON2 的低 5 位进行 写操作。 图 13-14: 重复启动条件时序波形 S 位(SSPSTAT<3>)置 1 写入 SSPCON2:SDA = 1, SCL(不变) SDA =1, SCL = 1 TBRG TBRG 启动位完成时, 由硬件将 RSEN 位清零 并将 SSPIF 置 1 TBRG 第1位 SDA 第 9 个时钟的下降沿 发送结束 SCL 此处写 SSPBUF TBRG TBRG Sr = 重复启动 2008 Microchip Technology Inc. DS41291E_CN 第197 页 PIC16F882/883/884/886/887 13.4.8 I2C™ 主控模式发送 发送一个数据字节、一个 7 位地址或一个 10 位地址的 另一半,都可以直接通过写一个值到 SSPBUF 寄存器来 实现。该操作将使缓冲器满标志位 BF 置 1,并且波特 率发生器开始计数,同时启动下一次发送。在 SCL 的下 降沿有效后 (见数据保持时间规范参数 106),地址 / 数据的每一位将被移出至 SDA 引脚。在一个波特率发 生器计满返回计数周期(TBRG)内,SCL 保持低电平。 数据应该在 SCL 释放为高电平前保持有效 (见数据建 立时间规范参数107)。当SCL引脚被释放为高电平时, 它将在整个 TBRG 中保持高电平状态。在此期间以及下 一个 SCL 下降沿之后的一段时间内, SDA 引脚上的数 据必须保持稳定。在第 8 位被移出(第 8 个时钟周期的 下降沿)之后,BF 标志位清零,同时主器件释放 SDA。 此时如果发生地址匹配或是数据被正确接收,被寻址的 从器件将在第 9 位的时间以一个 ACK 位响应。ACK 的 状态在第 9 个时钟周期的下降沿写入 ACKDT 位。主器 件接收到应答之后,应答状态位 ACKSTAT 会被清零; 如果未收到应答,则该位被置 1。第 9 个时钟之后, SSPIF 位会置 1,主控时钟 (波特率发生器)暂停,直 到下一个数据字节装入 SSPBUF 为止, SCL 引脚保持 低电平, SDA 保持不变 (图 13-14)。 在写 SSPBUF 之后,地址的每一位在 SCL 的下降沿被 移出,直至地址的所有 7 位和 R/W 位都被移出为止。在 第 8 个时钟的下降沿,主器件将 SDA 引脚拉为高电平, 以允许从器件发出应答响应。在第 9 个时钟的下降沿, 主器件通过采样 SDA 引脚来判断地址是否被从器件识 别。ACK位的状态被装入ACKSTAT状态位(SSPCON2 寄存器)。在发送地址的第 9 个时钟下降沿之后,SSPIF 置 1,BF 标志位清零,波特率发生器关闭直到下一次写 SSPBUF,且 SCL 引脚保持低电平,允许 SDA 引脚悬 空。 13.4.8.1 BF 状态标志 在发送模式下, BF 位 (SSPSTAT 寄存器)在 CPU 写 SSPBUF 时置 1,在所有 8 位数据移出后清零。 13.4.8.2 13.4.8.3 ACKSTAT 状态标志 在发送模式下,当从器件发送应答响应(ACK = 0)时, ACKSTAT 位 (SSPCON2 寄存器)清零;当从器件没 有应答 (ACK = 1)时,该位置 1。从器件在识别出其 地址 (包括广播呼叫地址)或正确接收数据后,会发送 一个应答。 13.4.9 I2C™ 主控模式接收 通过编程接收使能位 RCEN(SSPCON2 寄存器)使能 主控模式接收。 注: RCEN 位置 1 前, MSSP 模块必须处于空 闲状态,否则 RCEN 位将被忽略。 波特率发生器开始计数,每次计满返回时,SCL 引脚的 状态都发生改变 (由高变低或由低变高),且数据被移 入 SSPSR。第 8 个时钟的下降沿之后,接收使能标志 位自动清零,SSPSR 的内容装入 SSPBUF,BF 标志位 置 1,SSPIF 标志位置 1,波特率发生器暂停计数,SCL 保持为低电平。此时 MSSP 处于空闲状态,等待下一条 命令。当 CPU 读缓冲器时,BF 标志位将自动清零。通 过将应答序列使能位 ACKEN (SSPCON2 寄存器)置 1,用户可以在接收结束后发送应答位。 13.4.9.1 BF 状态标志 接收时,当将地址或数据字节从 SSPSR 装入 SSPBUF 时, BF 位置 1 ;在读 SSPBUF 寄存器时 BF 位清零。 13.4.9.2 SSPOV 状态标志 接收时,当 SSPSR 接收到 8 位数据时, SSPOV 位置 1, BF 标志位已经在上一次接收时置 1。 13.4.9.3 WCOL 状态标志 如果用户在接收过程中 (即, SSPSR 仍在移入数据字 节时)写 SSPBUF,则 WCOL 位置 1,缓冲器内容不 变 (未发生写操作)。 WCOL 状态标志位 如果用户在发送过程中 (即, SSPSR 仍在移出数据字 节时)写 SSPBUF,则 WCOL 置 1 且缓冲器的内容保 持不变 (未发生写操作)。 WCOL 必须由软件清零。 DS41291E_CN 第198 页 2008 Microchip Technology Inc. 2008 Microchip Technology Inc. R/W PEN SEN BF SSPIF SCL SDA S A6 A5 A4 A3 A2 3 用软件清零 2 4 5 6 启动条件之后,用硬件清零 SEN 写 SSPBUF 1 把 7 位地址和 R/W 写入 SSPBUF 开始发送 A7 向从器件发送地址 SEN = 0 写 SSPCON2<0>(SEN = 1) 启动条件开始 7 A1 8 9 D7 1 当 CPU 响应 SSPIF 时, SCL 保持低电平 ACK = 0 R/W = 0 3 D5 4 D4 5 D3 6 D2 用软件写 SSPBUF 在 MSSP 中断服务程序中 清零 2 D6 发送数据或 10 位 地址的后半部分 7 D1 8 D0 P 用软件清零 9 ACK 来自从器件,清零 ACKSTAT 位(SSPCON2<6>) SSPCON2 中的 ACKSTAT = 1 PIC16F882/883/884/886/887 图 13-15: I 2C™ 主控模式发送时序 (7 位或 10 位地址) DS41291E_CN 第199 页 DS41291E_CN 第200 页 S ACKEN SSPOV BF 当 CPU 响应 SSPIF 时, SDA = 0,SCL = 1 SSPIF SCL SDA 1 A7 2 4 用软件清零 3 5 6 7 A1 8 9 R/W = 0 ACK 2 4 5 6 7 8 D0 9 ACK 2 3 4 5 6 用软件清零 在应答结束时 将 SSPIF 中断标志位 置1 在 CLK 下降沿将数据移入 1 7 用软件 清零 在接收结束时 将 SSPIF 置 1 9 不发送 ACK ACK P 图 13-16: I 2C™ 主控模式接收时序 (7 位地址) 将P位 (SSPSTAT<4>) 和 SSPIF 位置 1 在应答序列结束时 将 SSPIF 中断标志位 置1 总线主器件 终止传输 此处使 PEN 位 = 1 由于 SSPBUF 仍为满,SSPOV 被置 1 8 D0 RCEN 被自动 清零 ACKEN 置 1,启动应答序列 SDA = ACKDT = 1 D7 D6 D5 D4 D3 D2 D1 接收来自从器件的数据 RCEN = 1,开始 下一次接收 来自主器件的 ACK, SDA = ACKDT = 0 最后一位移入 SSPSR, 其内容不会被转移到 SSPBUF 中 用软件清零 在接收结束时 将 SSPIF 中断标志位置 1 3 用软件清零 1 接收来自从器件的数据 D7 D6 D5 D4 D3 D2 D1 RCEN 被自动 清零 通过对 SSPCON2<3> 编程(RCEN = 1) 将主器件配置为接收器 来自从器件的ACK 向从器件发送地址 A6 A5 A4 A3 A2 SEN = 0 此处写 SSPBUF 开始发送 写 SSPCON2<0>(SEN = 1), 启动条件开始 写 SSPCON2<4> 启动应答序列 SDA = ACKDT(SSPCON2<5>) = 0 PIC16F882/883/884/886/887 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 13.4.10 13.4.11 应答序列时序 停止条件序列 将应答序列使能位 ACKEN (SSPCON2 寄存器)置 1 即可使能应答序列。当该位被置 1 时, SCL 引脚被拉 低,应答数据位的内容出现在 SDA 引脚上。如果用户 希望产生一个应答,则应该将 ACKDT 位清零;否则, 用户应该在应答序列开始前将 ACKDT 位置 1。然后波 特率发生器进行一个计满返回周期 (TBRG)的计数, 随后 SCL 引脚电平被拉高。当 SCL 引脚采样为高电平 时 (时钟仲裁),波特率发生器再进行一个 TBRG 周期 的计数。然后 SCL 引脚被拉低。在这之后,ACKEN 位 自动清零,波特率发生器关闭,MSSP 模块进入空闲模 式 (图 13-17)。 在接收 / 发送结束时,通过置停止序列的使能位, PEN (SSPCON2 寄存器), SDA 引脚将产生一个停止位。 在接收 / 发送结束时,SCL 引脚在第 9 个时钟的下降沿 后保持低电平。当 PEN 位置 1 时,主控器件将 SDA 置 为低电平。当 SDA 线采样为低电平时,波特率发生器 被重新装入值并递减计数至 0。波特率发生器发生超时 时, SCL 引脚被拉到高电平,且一个 TBRG (波特率发 生器计满回零)后, SDA 引脚被重新拉到高电平。当 SDA 引脚采样为高电平且 SCL 也是高电平时, P 位 (SSPSTAT 寄存器)置 1。一个 TBRG 周期后,PEN 位 清零且 SSPIF 位置 1 (图 13-17)。 13.4.10.1 13.4.11.1 WCOL 状态标志位 如果用户在应答序列正在进行时写 SSPBUF, WCOL 将 被置 1 且缓冲器的内容保持不变 (未发生写操作)。 WCOL 状态标志 如果用户在停止序列进行过程中试图写 SSPBUF,则 WCOL 位将置 1,缓冲器的内容不会改变(未发生写操 作)。 图 13-17: 应答序列时序波形 应答序列在此开始, 写 SSPCON2 ACKEN = 1, ACKDT = 0 ACKEN 自动清零 TBRG TBRG SDA D0 SCL ACK 8 9 SSPIF 在接收结束时 将 SSPIF 置 1 注 : TBRG = 一个波特率发生器周期。 2008 Microchip Technology Inc. 用软件清零 用软件清零 在应答序列结束时 将 SSPIF 置 1 DS41291E_CN 第201 页 PIC16F882/883/884/886/887 图 13-18: 停止条件接收或发送模式 采样到 SDA 为高电平后,SCL = 1 保持一个 TBRG, 接着 SDA = 1 保持一个 TBRG。P 位(SSPSTAT)置 1。 写 SSPCON2, PEN 置 1 PEN 位(SSPCON2)被 硬件清零且 SSPIF 位被置 1 第 9 个时钟周期 的下降沿 TBRG SCLx SDAx ACK P TBRG TBRG TBRG TBRG 后,SCL 被拉高 在时钟脉冲上升沿前拉低 SDA 以建立停止条件 注 : TBRG = 一个波特率发生器周期。 13.4.12 13.4.13 时钟仲裁 如果在任何接收、发送或重复启动 / 停止条件期间,主 器件拉高了 SCL 引脚(允许 SCL 引脚悬空为高电平), 就会发生时钟仲裁。如果允许 SCL 引脚悬空为高电平, 波特率发生器 (BRG)将暂停计数,直到实际采样到 SCL引脚为高电平为止。当SCL引脚采样为高电平时, 波特率发生器中将被重新装入 SSPADD<6:0> 的内容 并开始计数。这可以保证当外部器件将时钟拉低时, SCL 始终保持至少一个 BRG 计满返回周期的高电平 (图 13-19)。 休眠模式下的操作 在休眠模式下, I2C 模块能够接收地址或数据。并且在 地址匹配或字节传输完成后,将唤醒处理器(如果允许 了 MSSP 中断)。 13.4.14 复位的影响 复位会禁止 MSSP 模块并终止当前的传输。 图 13-19: 主控发送模式下的时钟仲裁时序 BRG 溢出, 释放 SCL, 如果 SCL = 1,使用 SSPADD<6:0> 装载 BRG 并使 BRG 开始计数以 发生 BRG 溢出, 释放 SCL,从动器件保持 SCL 为低电平 测量高电平时间 SCL = 1,BR 开始计数 时钟高电平的时间 SCL SCL 线在每个机器周期采样一次(TOSC*4) 使 BRG 保持等待状态直到 SCL 采样为高电平 SDA TBRG DS41291E_CN 第202 页 TBRG TBRG 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 13.4.15 多主机模式 在多主机模式下,通过在检测到启动和停止条件时产生 中断可以确定总线何时空闲。停止(P)位和启动(S) 位在复位时或禁止 MSSP 模块时清零。当 P 位置 1 时, 可以取得 I 2C 总线的控制权;否则总线处于空闲状态, 且 P 位和 S 位清零。当总线忙时,如果出现停止条件, 则将产生中断 (若允许 MSSP 中断)。 在多主机模式下工作时,必须监视 SDA 线来进行仲裁, 查看信号电平是否为期望的输出电平。此检查由硬件完 成,其结果放在 BCLF 位。 在以下状态下仲裁可能失败: • • • • • 地址传输 数据传输 启动条件 重复启动条件 应答条件 13.4.16 主器件输出 0,就会发生总线仲裁。如果 SDA 引脚上期 望的数据是 1,而实际在 SDA 引脚上采样到的数据是 0, 则发生了总线冲突。主器件将把总线冲突中断标志位 BCL1F 置 1,并将 I2C 端口复位到空闲状态(图 13-19)。 如果在发送过程中发生总线冲突,则发送停止,BF 标志 位清零, SDA 和 SCL 线被拉高,并且允许对 SSPBUF 进行写操作。当执行完总线冲突中断服务程序后,如果 I2C 总线空闲,用户可通过发出启动条件恢复通信。 如果在启动、重复启动、停止或应答条件的进行过程中 发生总线冲突,则该条件被中止, SDA 和 SCL 线被拉 高, SSPCON2 寄存器中的对应控制位清零。当执行完 总线冲突中断服务程序后,如果 I2C 总线空闲,用户可 通过发出启动条件恢复通信。 主器件将继续监视 SDA 和 SCL 引脚。如果出现停止条 件, SSPIF 位将被置 1。 无论发生总线冲突时发送的进度如何,写 SSPBUF 都会 从第一个数据位开始发送数据。 多主机通信、总线冲突与总线仲裁 多主机模式是通过总线仲裁来支持的。当主器件将地址 / 数据位输出到 SDA 引脚时,如果一个主器件通过将 SDA 引脚悬空为高电平以在 SDA 上输出 1,而另一个 在多主机模式下,通过在检测到启动和停止条件时产生 中断可以确定总线何时空闲。P 位置 1 时,可以获取 I2C 总线的控制权,否则总线空闲且 S 和 P 位清零。 图 13-20: 发送和应答时的总线冲突时序 当 SCL = 0 时, 数据更改 SDA 线被其他源 拉为低电平 采样 SDA。SCL 为高电平时, 数据与主器件发送的不匹配, 发生了总线冲突。 主器件释放 SDA SDAX SCLX 总线冲突 中断标志位(BCLIF)置 1 BCLXIF 2008 Microchip Technology Inc. DS41291E_CN 第203 页 PIC16F882/883/884/886/887 13.4.16.1 启动条件期间的总线冲突 启动条件期间,以下事件将导致总线冲突: a) b) 在启动条件开始时, SDA 或 SCL 被采样为低电 平 (图 13-20)。 SDA 被拉低之前,SCL 采样为低电平(图 13-22)。 在启动条件期间, SDA 和 SCL 引脚都会被监视。 如果 SDA 引脚已经是低电平,或 SCL 引脚已经是低电 平,则: 脚采样为低电平,则发生总线冲突,因为这表示另一个 主器件在启动条件期间试图发送一个数据 1。 如果 SDA 引脚在该计数周期内采样为低电平,则 BRG 复位,同时 SDA 线保持原值 (图 13-22)。但是,如果 SDA 引脚采样为 1,SDA 引脚将在 BRG 计数结束时被 置为低电平。随后波特率发生器被重新装入值并递减计 数至 0。在此期间,如果 SCL 引脚采样到 0,则没有发 生总线冲突。在 BRG 计数结束时, SCL 引脚被拉为低 电平。 注: 中止启动条件, 并且 BCLIF 标志位置 1, 并且 MSSP 模块复位为空闲状态 (图 13-20)。 启动条件从 SDA 和 SCL 引脚被拉高开始。当 SDA 引 脚采样为高电平时,波特率发生器装入 SSPADD<6:0> 的值并递减计数到 0。如果在 SDA 为高电平时,SCL 引 在启动条件期间不会发生总线冲突是因为 两个总线主器件不可能精确地在同一时刻 发出启动条件。因此总是有一个主器件先 于另一个主器件将 SDA 拉低。但是这一情 况不会引起总线冲突,因为允许两个主器 件对启动条件后的第一个地址进行仲裁。 如果地址是相同的,将继续对数据部分、 重复启动条件或停止条件进行仲裁。 图 13-21: 启动条件期间的总线冲突 (仅 SDA) 在 SEN 位置 1 之前 SDA 变为低电平。 BCLIF 置 1, 因为 SDA = 0,SCL = 1, 所以 S 位和 SSPIF 位被置 1 SDA SCL 当 SDA = 1,SCL = 1 时, 将 SEN 置 1,使能启动条件 因为发生总线冲突,SEN 自动清零。 MSSP 模块复位到空闲状态。 SEN BCLIF SDA 在启动条件之前 被采样到低电平。BCLIF 置 1。 因为 SDA = 0,SCL = 1, 所以 S 位和 SSPIF 位被置 1 SSPIF 和 BCLIF 用软件清零 S SSPIF SSPIF 和 BCLIF 用软件清零 DS41291E_CN 第204 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 13-22: 启动条件期间的总线冲突 (SCL = 0) SDA = 0,SCL = 1 TBRG TBRG SDA 当 SDA = 1,SCL = 1 时 将 SEN 置 1,使能启动序列 SCL 如果在 SDA = 0 前 SCL = 0, 发生总线冲突。BCLIF 置 1。 SEN BRG 超时前 SCL = 0, 发生总线冲突。BCLIF 置 1。 BCLIF 在软件中 清零中断标志 S ‘0’ 0 SSPIF ‘0’ 0 图 13-23: 启动条件期间由 SDA 仲裁引起的 BRG 复位 SDA = 0,SCL = 1 S置1 小于 TBRG SDA SSPIF 置 1 TBRG SDA 被其他主器件拉低。 复位 BRG,并拉低 SDA。 SCL S BRG 超时之后 将 SCL 拉低 SEN BCLIF 当 SDA = 1,SCL = 1 时, 将 SEN 置 1,使能启动序列 0 S SSPIF SDA = 0,SCL = 1, SSPIF 置 1 2008 Microchip Technology Inc. 在软件中 清零中断标志 DS41291E_CN 第205 页 PIC16F882/883/884/886/887 13.4.16.2 如果 SDA 为低电平,则已发生了总线冲突 (即,另一 个主器件正试图发送一个数据 0,见图 13-24)。如果 SDA 采样为高电平,则 BRG 被重新装入值并开始计数。 如果 SDA 在 BRG 超时之前从高电平变为低电平,则没 有发生总线冲突,因为两个主器件不可能精确地在同一 时刻将 SDA 拉低。 重复启动条件期间的总线冲突 在下列情况中,重复启动条件期间会发生总线冲突: a) b) 在 SCL 由低电平变为高电平的过程中, SDA 采 样到低电平。 在 SDA 被拉为低电平之前, SCL 变为低电平, 表示另一个主器件正试图发送一个数据 1。 如果 SCL 在 BRG 超时之前从高电平变为低电平,且 SDA 尚未变为低电平,表示发生了总线冲突。在此情况 下,在重复启动条件期间另一个主器件正试图发送一个 数据 1 (见图 13-25)。 当用户拉高 SDA 并允许该引脚悬空时, BRG 中装入 SSPADD<6:0> 中的值并递减计数至 0。接着 SCL 引脚 被置为高电平,当 SCL 采样到高电平时,对 SDA 引脚 进行采样。 如果在 BRG 超时结束时 SCL 和 SDA 都仍然是高电平, 则 SDA 引脚被拉低, BRG 重新装入值并开始计数。在 计数结束时,无论 SCL 引脚的状态如何, SCL 引脚都 被拉低,重复启动条件结束。 图 13-24: 重复启动条件期间的总线冲突 (情形 1) SDA SCL 当 SCL 变为高电平时对 SDA 采样。 如果 SDA = 0,将 BCLIF 置 1 并释放 SDA 和 SCL RSEN BCLIF 用软件清零 0 S SSPIF 0 图 13-25: 重复启动条件期间的总线冲突 (情形 2) TBRG TBRG SDA SCL BCLIF SCL 在 SDA 之前变为低电平, 将 BCLIF 置 1,释放 SDA 和 SCL 用软件 清零中断标志 RSEN S 0 SSPIF DS41291E_CN 第206 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 13.4.16.3 停止条件从SDA被拉低开始。当 SDA采样为低电平时, SCL 引脚就可以悬空为高电平。当引脚被采样到高电平 时 (时钟仲裁),波特率发生器中装入 SSPADD<6:0> 的内容并递减计数到 0。 BRG 超时后,采样 SDA。如 果 SDA 采样到低电平,则已发生总线冲突。这是因为 另一个主器件正试图发送一个数据 0 (图 13-26)。如 果 SCL 引脚在允许 SDA 悬空为高电平前被采样到低电 平,也会发生总线冲突。这是另一个主器件正试图发送一 个数据 0 的又一种情况 (图 13-27)。 停止条件期间的总线冲突 以下事件会导致停止条件期间的总线冲突: a) b) SDA已被拉高并允许悬空为高电平之后,SDA在 BRG 超时后被采样到低电平。 SCL 引脚被拉高之后,SCL 在 SDA 变成高电平 之前被采样到低电平。 图 13-26: 停止条件期间的总线冲突 (情形 1) TBRG TBRG 在 TBRG 后, SDA 被采样到 低电平, BCLIF 置 1 TBRG SDA SCL SDA 被拉低 PEN BCLIF P 0 SSPIF 0 图 13-27: 停止条件期间的总线冲突 (情形 2) TBRG TBRG TBRG SDA 将 SDA 拉低 SCL SCL 在 SDA 之前变为低电平, 将 BCLIF 置 1 PEN BCLIF P 0 SSPIF 0 2008 Microchip Technology Inc. DS41291E_CN 第207 页 PIC16F882/883/884/886/887 13.4.17 SSP 屏蔽寄存器 在 I2C 从动模式下, SSP 屏蔽 (SSPMSK)寄存器用 于 在 地 址 比 较 操 作 下 屏 蔽 SSPSR 寄 存 器 中 的 值。 SSPMSK 寄存器中某位为 0 会使 SSPSR 寄存器中相应 的位成为 “无关位”。 此寄存器在任何复位条件发生时均复位为全 1,因此, 在写入屏蔽值前,它对标准 SSP 操作没有影响。 必须在通过设置 SSPM<3:0> 位以选择 I2C 从动模式(7 位或 10 位地址)之前对此寄存器进行初始化。 只有通过 SSPCON 的 SSPM<3:0> 位选择了适当的模式 后才可访问此寄存器。 SSP 屏蔽寄存器在以下情况下有效: • 7 位地址模式:与 A<7:1> 进行地址比较。 • 10 位地址模式:仅与 A<7:0> 进行地址比较。 SSP 屏蔽在接收到地址的第一个 (高)字节期间 无效。 SSPMSK:SSP 屏蔽寄存器 (1) 寄存器 13-4: R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0(2) bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = 上电复位时的值 1=置1 0 = 清零 x = 未知 bit 7-1 MSK<7:1>:屏蔽位 1 = 接收到的地址的 bit n 与 SSPADD<n> 比较以检测 I2C 的地址匹配情况 0 = 接收到的地址的 bit n 不用于检测 I2C 的地址匹配情况 bit 0 MSK<0>:I2C 从动模式 10 位地址的屏蔽位 (2) I2C 从动模式, 10 位地址 (SSPM<3:0> = 0111): 1 = 接收到的地址的 bit 0 与 SSPADD<0> 比较以检测 I2C 的地址匹配情况 0 = 接收到的地址的 bit 0 不用于检测 I2C 的地址匹配情况 注 1:当 SSPCON 位 SSPM<3:0> = 1001 时,任何对 SSPADD SFR 地址的读或写操作都通过 SSPMSK 寄存器 进行。 2:在所有其他 SSP 模式下,此位无效。 DS41291E_CN 第208 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 14.0 CPU 的特性 PIC16F882/883/884/886/887 系列器件包含的许多特性 旨在最大限度地提高系统的可靠性,通过减少外部元件 将成本降至最低,并且还提供了低功耗和代码保护功 能。 这些功能包括: • 复位 - 上电复位 (POR) - 上电延时定时器 (PWRT) - 振荡器起振定时器 (OST) - 欠压复位 (BOR) • 中断 • 看门狗定时器 (WDT) • 振荡器选择 • 休眠 • 代码保护 • ID 地址单元 • 在线串行编程 • 低电压在线串行编程 PIC16F882/883/884/886/887系列器件有两个用于提供 必要的上电延时的定时器。一个是振荡器起振定时器 (OST),旨在确保芯片在晶振达到稳定前始终处于复 位状态。另一个是上电延时定时器 (PWRT),仅在上 电时提供 64 ms(标称值)的固定延时,用来确保器件 在供电电压稳定之前处于复位状态。如果出现欠压条 件,同样有可使器件复位的电路,该电路使用上电延时 定时器提供至少 64 ms 的复位延时。具有这三种片上功 能,大多数应用将不再需要外部复位电路。 休眠模式是为提供一种电流消耗很低的掉电工作模式而 设计的。用户可通过以下方法将器件从休眠模式唤醒: • 外部复位 • 看门狗定时器唤醒 • 中断 还有几种振荡器可供选择,以使器件适应各种应用。选 择 INTOSC 可节约系统的成本,而选择 LP 晶振可以 节能。可以使用一组配置位来选择各种时钟选项 (见 寄存器 14-3)。 2008 Microchip Technology Inc. DS41291E_CN 第 209 页 PIC16F882/883/884/886/887 14.1 配置位 可以通过对配置位编程 (读为 0)或不编程 (读为 1) 来选择不同的器件配置,如寄存器 14-1 所示。这些配置 位被分别映射到程序存储器中地址为 2007h 和 2008h 的 单元中。 寄存器 14-1: — 注: 地址2007h 和 2008h 超过了用户程序存储 空 间,该 地 址 属 于特 殊 配 置 存 储 空 间 (2000h-3FFFh),仅可在编程期间进行访 问。请参见 “PIC16F88X Memory Programming Specification”(DS41287) 了解更多信息。 CONFIG1:配置字寄存器 1 — DEBUG LVP FCMEN IESO BOREN1 BOREN0 bit 15 bit 8 CPD CP MCLRE PWRTE WDTE FOSC2 FOSC1 bit 7 bit 0 bit 15-14 未实现:读为 1 bit 13 DEBUG:在线调试器模式位 1 = 禁止在线调试器, RB6/ICSPCLK 和 RB7/ICSPDAT 为通用 I/O 引脚 0 = 使能在线调试器, RB6/ICSPCLK 和 RB7/ICSPDAT 专用于调试器 bit 12 LVP:低电压编程使能位 1 = RB3/PGM 引脚具有 PGM 功能,使能低电压编程 0 = RB3 引脚为数字 I/O, MCLR 上的 HV 必须用于编程 bit 11 FCMEN:故障保护时钟监视器使能位 1 = 使能故障保护时钟监视器 0 = 禁止故障保护时钟监视器 bit 10 IESO:内外时钟切换位 1 = 使能内外时钟切换模式 0 = 禁止内外时钟切换模式 bit 9-8 BOREN<1:0>:欠压复位选择位 (1) 11 = 使能欠压复位 10 = 使能正常工作期间的欠压复位而禁止休眠状态下的欠压复位 01 = 由 PCON 寄存器中的 SBOREN 位控制欠压复位 00 = 禁止欠压复位 bit 7 CPD:数据代码保护位 (2) 1 = 禁止数据存储器代码保护 0 = 使能数据存储器代码保护 bit 6 CP:代码保护位 (3) 1 = 禁止程序存储器代码保护 0 = 使能程序存储器代码保护 bit 5 MCLRE:RB3/MCLR 引脚功能选择位 (4) 1 = RB3/MCLR 引脚功能为 MCLR 0 = RB3/MCLR 引脚功能为数字输入, MCLR 在内部被连接到 VDD bit 4 PWRTEN:上电延时定时器使能位 1 = 禁止 PWRT 0 = 使能 PWRT bit 3 WDTE:看门狗定时器使能位 1 = 使能 WDT 0 = WDT 被禁止,但可通过 WDTCON 寄存器中的 SWDTEN 位使能 bit 2-0 FOSC<2:0>:振荡器选择位 111 = RC 振荡器:RA6/OSC2/CLKOUT 引脚功能为 CLKOUT, RA7/OSC1/CLKIN 引脚连接 RC 110 = RCIO 振荡器:RA6/OSC2/CLKOUT 为 IO 引脚, RA7/OSC1/CLKIN 引脚连接 RC 101 = INTOSC 振荡器:RA6/OSC2/CLKOUT 引脚功能为 CLKOUT, RA7/OSC1/CLKIN 为 I/O 引脚 100 = INTOSCIO 振荡器:RA6/OSC2/CLKOUT 为 I/O 引脚, RA7/OSC1/CLKIN 也为 I/O 引脚 011 = EC:RA6/OSC2/CLKOUT 为 I/O 引脚, RA7/OSC1/CLKIN 引脚功能为 CLKIN 010 = HS 振荡模式:高速晶振 / 谐振器连接到 RA6/OSC2/CLKOUT 和 RA7/OSC1/CLKIN 引脚 001 = XT 振荡器:晶振 / 谐振器连接到 RA6/OSC2/CLKOUT 和 RA7/OSC1/CLKIN 引脚 000 = LP 振荡器:低功耗晶振连接到 RA6/OSC2/CLKOUT 和 RA7/OSC1/CLKIN 引脚 注 FOSC0 1: 2: 3: 4: 使能欠压复位并不能自动使能上电延时定时器。 当禁止代码保护时,将擦除整个数据 EEPROM 的内容。 当禁止代码保护时,将擦除整个程序存储器的内容。 当 MCLR 在 INTOSC 或者 RC 模式下被拉为低电平时,将禁止内部时钟振荡器。 DS41291E_CN 第 210 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 寄存器 14-2: — CONFIG2:配置字寄存器 2 — — — — WRT1 WRT0 BOR4V bit 15 bit 8 — — — — — — — bit 7 — bit 0 bit 15-11 未实现:读为 1 bit 10-9 WRT<1:0>:闪存程序存储器自写使能位 PIC16F883/PIC16F884 00 = 0000h 至 07FFh 被写保护, 0800h 至 0FFFh 可由 EECON 控制寄存器修改 01 = 0000h 至 03FFh 被写保护, 0400h 至 0FFFh 可由 EECON 控制寄存器修改 10 = 0000h 至 00FFh 被写保护, 0100h 至 0FFFh 可由 EECON 控制寄存器修改 11 = 关闭写保护 PIC16F886/PIC16F887 00 = 0000h 至 0FFFh 被写保护, 1000h 至 1FFFh 可由 EECON 控制寄存器修改 01 = 0000h 至 07FFh 被写保护, 0800h 至 1FFFh 可由 EECON 控制寄存器修改 10 = 0000h 至 00FFh 被写保护, 0100h 至 1FFFh 可由 EECON 控制寄存器修改 11 = 关闭写保护 PIC16F882 00 = 0000h 至 03FFh 被写保护, 0400h 至 07FFh 可由 EECON 控制寄存器修改 01 = 0000h 至 00FFh 被写保护, 0100h 至 07FFh 可由 EECON 控制寄存器修改 11 = 关闭写保护 bit 8 BOR4V:欠压复位选择位 0 = 欠压复位值被设置为 2.1V 1 = 欠压复位值被设置为 4.0V bit 7-0 未实现:读为 1 2008 Microchip Technology Inc. DS41291E_CN 第 211 页 PIC16F882/883/884/886/887 14.2 复位 PIC16F882/883/884/886/887 器件有以下几种不同类型 的复位方式: a) b) c) d) e) f) 上电复位 (POR) 正常工作期间的 WDT 复位 休眠期间的 WDT 复位 正常工作期间的 MCLR 复位 休眠期间的 MCLR 复位 欠压复位 (BOR) 它们不受 WDT 唤醒的影响,因为这被视为恢复正常工 作。如表 14-2 所示,TO 和 PD 位在不同的复位情形下 会分别被置 1 或清零。这些状态位在软件中用于判断复 位的性质。表 14-5 对所有寄存器的复位状态做了完整的 说明。 图 14-1 给出了片上复位电路的简化框图。 MCLR 复位电路中有一个噪声滤波器,它可以检测并滤 除小脉冲干扰信号。请参见第 17.0 节 “电气特性”了 解脉宽规范。 有些寄存器不受任何复位的影响;在上电复位时它们的 状态未知,而在其他复位时状态不变。大多数寄存器在 以下复位时会复位到各自的 “复位”状态: • • • • • 上电复位 MCLR 复位 休眠期间的 MCLR 复位 WDT 复位 欠压复位 (BOR) 图 14-1: 片上复位电路的简化框图 外部 复位 MCLR/VPP 引脚 SLEEP WDT 模块 WDT 超时 复位 VDD 上升沿 检测 VDD 上电复位 欠压 (1) 复位 BOREN SBOREN S OST/PWRT OST 芯片复位 10 位纹波(异步)计数器 R Q OSC1 CLKI 引脚 PWRT LFINTOSC 11 位纹波(异步)计数器 使能 PWRT 使能 OST 注 1: 请参见配置字寄存器 (寄存器 14-1)。 DS41291E_CN 第 212 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 14.2.1 上电复位 (POR) 图 14-2: 在 VDD 达到足以使器件正常工作的电平以前,片上上电 复位电路使器件保持复位状态。需要一个最大上升时间 才能达到 VDD。详情请参见第 17.0 节“电气特性”。如 果使能了欠压复位,那么该最大上升时间规范将不再适 用。欠压复位电路在 VDD 达到 VBOR 以前将保持器件为 复位状态 (见第 14.2.4 节 “欠压复位 (BOR)”)。 注: 欲获取更多信息,请参见应用笔记 AN607 “Power-up Trouble Shooting”(DS00607)。 14.2.2 VDD MCLR PIC16F882/883/884/886/887 器件在 MCLR 复位电路中 有一个噪声滤波器。该滤波器检测并滤除小的干扰脉 冲。 应该注意 WDT 复位不会将 MCLR 引脚驱动为低电平。 MCLR 引脚上 ESD 保护的工作原理与该系列早期的器 件有所不同。该引脚上电压超过规范值将导致 MCLR 复 位,并且在 ESD 事件中产生的电流也将超过器件的规 范值。因此, Microchip 建议不要把 MCLR 引脚直接连 接到 VDD。建议使用图 14-2 所示的 RC 网络。 通过清零配置字寄存器 1 中的 MCLRE 位可使能内部 MCLR 选项。当 MCLRE = 0 时,由内部产生芯片的复 位信号。当 MCLRE = 1 时,RA3/MCLR 引脚变为外部 复位引脚。在该模式下, RA3/MCLR 引脚具备到 VDD 的弱上拉。 2008 Microchip Technology Inc. PIC16F886 R1 1 kΩ(或更大) MCLR 当 VDD 降低时,上电复位电路不会产生内 部复位。要重新使能上电复位, VDD 必须 达到 Vss 电压并至少保持 100 µs。 当器件开始正常工作 (退出复位状态)时,器件的工作 参数 (即电压、频率和温度等)必须得到满足,以确保 其正常工作。如果不满足这些条件,那么器件必须保持 在复位状态,直到满足工作条件为止。 推荐的 MCLR 电路 C1 0.1 µF (可选,非关键元件) 14.2.3 上电延时定时器 (PWRT) 上电延时定时器仅在上电时(上电复位或欠压复位)提 供 64 ms (标称值)的固定延时。上电延时定时器采用 LFINTOSC 振荡器作为时钟源,工作频率为 31 kHz。更 多信息,请参见第 4.5 节“内部时钟模式”。只要 PWRT 处于工作状态,器件就保持在复位状态。PWRT 延时使 VDD 有足够的时间上升到所需的电平。配置位 PWRTE 可以禁止 (如果置 1)或使能 (如果清零或被编程)上 电延时定时器。虽然不是必需的,但是在使能欠压复位 时也应使能上电延时定时器。 由于以下原因不同芯片的上电延时定时器的延迟时间也 互不相同: • VDD 差异 • 温度差异 • 制造工艺差异 详情请参见直流参数 (第 17.0 节 “电气特性”)。 DS41291E_CN 第 213 页 PIC16F882/883/884/886/887 14.2.4 欠压复位 (BOR) 配置字寄存器中的 BOREN0 和 BOREN1 位用于选择 四种欠压复位模式中的一种。其中增加了两种允许使 用软件或硬 件对欠压复位的 使能与否进行控 制的模 式。当 BOREN<1:0> = 01 时,可 由 SBOREN 位 (PCON<4>)使能或禁止欠压复位,从而能用软件对 其进行控制。通过对 BOREN<1:0> 进行选择,可自动 在 休 眠 时禁 止 POR 以 节 约 功耗,而 在 唤 醒 后 使 能 POR。在此模式下,SBOREN 位无效。关于配置字的 定义,请参见寄存器 14-3。 配置字寄存器 2 中的 BOR4V 位选择两种欠压复位电压 之 一。当 BOR4B = 1 时, VBOR 被 设 置 为 4V。当 BOR4V = 0 时, VBOR 被设置为 2.1V。 生。如果 VDD 低于 VBOR 的时间少于参数(TBOR),则 不一定会发生复位。 任何复位 (上电复位、欠压复位和看门狗定时器等)都 会使器件保持复位状态,直到 VDD 上升到 VBOR 以上 (见图 14-3)。如果使能了上电延时定时器,此时它将 启动,并且会使器件保持复位状态的时间延长 64 ms。 配置字寄存器 1 中的 PWRTE 位用于使能 上电延时定时器。 注: 如果在上电延时定时器运行过程中, VDD 电压降到了 VBOR 以下,芯片将重新回到欠压复位状态并且上电延 时定时器会恢复为初始状态。一旦VDD电压上升到VBOR 以上,上电延时定时器将执行一段 64 ms 的复位。 如果 VDD 下降到 VBOR 以下,且持续时间超过参数值 (TBOR)(见第 17.0 节 “电气特性”),欠压状况将使 器件复位。不管 VDD 的变化速率如何,上述情况都会发 图 14-3: 欠压情形 VDD 内部 复位 VBOR 64 ms(1) VDD 内部 复位 VBOR < 64 ms 64 ms(1) VDD 内部 复位 注 VBOR 64 ms(1) 1: 仅在 PWRTE 位被设置为 0 时,才增加 64 ms 延时。 DS41291E_CN 第 214 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 14.2.5 14.2.6 超时时序 上电时的超时时序如下:首先,在 POR 延时结束后启 动一段 PWRT 延时,随后在 PWRT 延时结束后振荡器 起振。总延时时间取决于振荡器的配置和 PWRTE 位的 状态。例如,在 EC 模式且 PWRTE 位置 1 (PWRT 禁 止)的情况下,根本不会出现延时。图 14-4、图 14-5 和图 14-6 分别给出了各种情形下的超时时序。通过使能 双速启动或故障保护时钟监视器,当振荡器起振后,器 件将以 INTOSC 作为时钟源来执行代码(见第 4.7.2 节 “双速启动时序”和第4.8节“故障保护时钟监视器”)。 电源控制 (PCON)寄存器 (地址 8Eh)有两个用于指 示上次发生的复位的类型的状态位。 Bit 0 是 BOR (欠压复位)标志位。 BOR 在上电复位时 未知。然后,用户必须将该位置 1,并在随后的复位发 生时检查 BOR 是否为 0,如果是,则表示已经发生过欠 压 复 位。当 禁 止 欠压 复 位 电 路 (配 置 字 寄 存 器 中 的 BOREN<1:0> = 00)时, BOR状态位被 “忽略”并且 不必对其进行预测。 Bit 1 是 POR (上电复位)标志位。在上电复位时,其 值为 0,其他情况下该位不受影响。上电复位后,用户 必须对该位写 1。发生后续复位后,如果 POR 为 0,则 表示发生了上电复位 (即 VDD 可能已经变为了低电 平)。 由于超时是由上电复位脉冲触发的,因此如果 MCLR 保 持足够长时间的低电平,所有延时都将结束。将 MCLR 电平拉高后器件将立即开始执行代码(见图 14-5)。这 对于测试或同步多个并行工作的 PIC16F882/883/884/ 886/887 器件来说是非常有用的。 更多信息请参见第 3.2.2 节“超低功耗唤醒”和第 14.2.4 节 “欠压复位 (BOR)”。 表 14-5 给出了一些特殊寄存器的复位条件,而表 14-4 给出了所有寄存器的复位条件。 表 14-1: 电源控制 (PCON)寄存器 各种情形下的延时 上电延时 欠压复位延时 PWRTE = 0 PWRTE = 1 PWRTE = 0 PWRTE = 1 从休眠状态唤 醒的延时 TPWRT + 1024 • TOSC 1024 • TOSC TPWRT + 1024 • TOSC 1024 • TOSC 1024 • TOSC LP, T1OSCIN = 1 TPWRT — TPWRT — — RC、 EC 和 INTOSC TPWRT — TPWRT — — 振荡器配置 XT、 HS 和 LP 表 14-2: STATUS/PCON 寄存器中位及其意义 POR BOR TO PD 0 x 1 1 上电复位 u 0 1 1 欠压复位 u u 0 u WDT 复位 u u 0 0 WDT 唤醒 u u u u 正常工作期间的 MCLR 复位 u u 1 0 休眠期间的 MCLR 复位 图注: 表 14-3: 名称 PCON STATUS 图注: 注 1: 状态 u = 不变, x = 未知 与欠压有关的寄存器汇总 Bit 7 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他复位 时的值 SBOREN — — POR BOR --01 --qq --0u --uu TO PD Z DC C 0001 1xxx 000q quuu Bit 6 Bit 5 Bit 4 — — ULPWUE IRP RP1 RPO u = 不变, x = 未知, - = 未实现位 (读为 0), q = 取值视条件而定。欠压复位未使用阴影单元。 其他 (非上电)复位包括正常工作期间的 MCLR 复位和看门狗定时器复位。 2008 Microchip Technology Inc. DS41291E_CN 第 215 页 PIC16F882/883/884/886/887 图 14-4: 上电时的超时时序 (MCLR 延时):情形 1 VDD MCLR 内部上电复位 TPWRT PWRT 超时 TOST OST 超时 内部复位 图 14-5: 上电时的超时时序 (MCLR 延时):情形 2 VDD MCLR 内部上电复位 TPWRT PWRT 超时 TOST OST 超时 内部复位 图 14-6: 上电时的延时时序 (MCLR 连接到 VDD) VDD MCLR 内部上电复位 TPWRT PWRT 超时 TOST OST 超时 内部复位 DS41291E_CN 第 216 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 14-4: 各个寄存器的初始状态 寄存器 W 地址 上电复位 • MCLR 复位 • WDT 复位 • 欠压复位 (1) • 通过中断将器件从休眠模式 唤醒 • 通过 WDT 超时溢出将器件 从休眠模式唤醒 uuuu uuuu — xxxx xxxx INDF 00h/80h/ 100h/180h xxxx xxxx TMR0 01h/101h xxxx xxxx uuuu uuuu uuuu uuuu PCL 02h/82h/ 102h/182h 0000 0000 0000 0000 PC + 1(3) STATUS 03h/83h/ 103h/183h 0001 1xxx 000q quuu(4) uuuq quuu(4) FSR 04h/84h/ 104h/184h xxxx xxxx uuuu uuuu uuuu uuuu PORTA 05h xxxx xxxx 0000 0000 uuuu uuuu PORTB 06h/106h xxxx xxxx 0000 0000 uuuu uuuu PORTC 07h xxxx xxxx 0000 0000 uuuu uuuu PORTD 08h xxxx xxxx 0000 0000 uuuu uuuu PORTE 09h ---- xxxx ---- 0000 ---- uuuu PCLATH 0Ah/8Ah/ 10Ah/18Ah ---0 0000 ---0 0000 ---u uuuu INTCON 0Bh/8Bh/ 10Bh/18Bh 0000 000x 0000 000u uuuu uuuu(2) PIR1 0Ch 0000 0000 0000 0000 uuuu uuuu(2) PIR2 0Dh 0000 0000 0000 0000 uuuu uuuu(2) TMR1L 0Eh xxxx xxxx uuuu uuuu uuuu uuuu TMR1H 0Fh xxxx xxxx uuuu uuuu uuuu uuuu T1CON 10h 0000 0000 uuuu uuuu -uuu uuuu TMR2 11h 0000 0000 0000 0000 uuuu uuuu T2CON 12h -000 0000 -000 0000 -uuu uuuu SSPBUF 13h xxxx xxxx uuuu uuuu uuuu uuuu SSPCON 14h 0000 0000 0000 0000 uuuu uuuu CCPR1L 15h xxxx xxxx uuuu uuuu uuuu uuuu CCPR1H 16h xxxx xxxx uuuu uuuu uuuu uuuu CCP1CON 17h 0000 0000 0000 0000 uuuu uuuu RCSTA 18h 0000 000x 0000 0000 uuuu uuuu TXREG 19h 0000 0000 0000 0000 uuuu uuuu RCREG 1Ah 0000 0000 0000 0000 uuuu uuuu CCPR2L 1Bh xxxx xxxx uuuu uuuu uuuu uuuu 图注: 注 1: 2: 3: 4: 5: 6: uuuu uuuu xxxx xxxx uuuu uuuu u = 不变, x = 未知, - = 未实现位 (读为 0), q = 取值视条件而定。 如果 VDD 过低,上电复位将被激活,寄存器将受到不同的影响。 INTCON 和 / 或 PIR1 寄存器中的 1 位或多位会受到影响 (引起唤醒)。 当器件被中断唤醒且 GIE 位置 1 时, PC 中装入中断向量 (0004h)。 关于特定条件下的复位值,请参见表 14-5。 如果复位是由于欠压引起的,则 bit 0 = 0。其他复位将使 bit 0 = u。 只有在 SSPCON 寄存器的 SSPM<3:0> 位 = 1001 时才可被访问。 2008 Microchip Technology Inc. DS41291E_CN 第 217 页 PIC16F882/883/884/886/887 表 14-4: 各个寄存器的初始状态 (续) 寄存器 地址 上电复位 • MCLR 复位 • WDT 复位 • 欠压复位 (1) • 通过中断将器件从休眠模式 唤醒 • 通过 WDT 超时溢出将器件 从休眠模式唤醒 uuuu uuuu CCPR2H 1Ch xxxx xxxx uuuu uuuu CCP2CON 1Dh --00 0000 --00 0000 --uu uuuu ADRESH 1Eh xxxx xxxx uuuu uuuu uuuu uuuu ADCON0 1Fh 00-0 0000 00-0 0000 uu-u uuuu 81h/181h 1111 1111 1111 1111 uuuu uuuu TRISA 85h 1111 1111 1111 1111 uuuu uuuu TRISB 86h/186h 1111 1111 1111 1111 uuuu uuuu TRISC 87h 1111 1111 1111 1111 uuuu uuuu TRISD 88h 1111 1111 1111 1111 uuuu uuuu TRISE 89h ---- 1111 ---- 1111 ---- uuuu PIE1 8Ch 0000 0000 0000 0000 uuuu uuuu PIE2 8Dh 0000 0000 0000 0000 uuuu uuuu PCON 8Eh --01 --0x --0u --uu(1, 5) --uu --uu OSCCON 8Fh -110 q000 -110 q000 -uuu uuuu OSCTUNE 90h ---0 0000 ---u uuuu ---u uuuu SSPCON2 91h 0000 0000 0000 0000 uuuu uuuu PR2 92h 1111 1111 1111 1111 1111 1111 SSPADD(6) 93h 0000 0000 0000 0000 uuuu uuuu SSPMSK(6) 93h 1111 1111 1111 1111 1111 1111 SSPSTAT 94h 0000 0000 0000 0000 uuuu uuuu WPUB 95h 1111 1111 1111 1111 uuuu uuuu IOCB 96h 0000 0000 0000 0000 uuuu uuuu VRCON 97h 0000 0000 0000 0000 uuuu uuuu TXSTA 98h 0000 -010 0000 -010 uuuu -uuu SPBRG 99h 0000 0000 0000 0000 uuuu uuuu SPBRGH 9Ah 0000 0000 0000 0000 uuuu uuuu PWM1CON 9Bh 0000 0000 0000 0000 uuuu uuuu ECCPAS 9Ch 0000 0000 0000 0000 uuuu uuuu PSTRCON 9Dh ---0 0001 ---0 0001 ---u uuuu ADRESL 9Eh xxxx xxxx uuuu uuuu uuuu uuuu ADCON1 9Fh 0-00 ---- 0-00 ---- u-uu ---- WDTCON 105h ---0 1000 ---0 1000 ---u uuuu CM1CON0 107h 0000 0-00 0000 0-00 uuuu u-uu CM2CON0 108h 0000 0-00 0000 0-00 uuuu u-uu OPTION_REG 图注: 注 1: 2: 3: 4: 5: 6: u = 不变, x = 未知, - = 未实现位 (读为 0), q = 取值视条件而定。 如果 VDD 过低,上电复位将被激活,寄存器将受到不同的影响。 INTCON 和 / 或 PIR1 寄存器中的 1 位或多位会受到影响 (引起唤醒)。 当器件被中断唤醒且 GIE 位置 1 时, PC 中装入中断向量 (0004h)。 关于特定条件下的复位值,请参见表 14-5。 如果复位是由于欠压引起的,则 bit 0 = 0。其他复位将使 bit 0 = u。 只有在 SSPCON 寄存器的 SSPM<3:0> 位 = 1001 时才可被访问。 DS41291E_CN 第 218 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 14-4: 各个寄存器的初始状态 (续) • 通过中断将器件从休眠模式 唤醒 • 通过 WDT 超时溢出将器件 从休眠模式唤醒 uuuu u--u 寄存器 地址 CM2CON1 109h 0000 0--0 0000 0--0 EEDAT 10Ch 0000 0000 0000 0000 uuuu uuuu EEADR 10Dh 0000 0000 0000 0000 uuuu uuuu EEDATH 10Eh --00 0000 --00 0000 --uu uuuu EEADRH 10Fh ---0 0000 ---0 0000 ---u uuuu SRCON 185h 0000 00-0 0000 00-0 uuuu uu-u BAUDCTL 187h 01-0 0-00 01-0 0-00 uu-u u-uu ANSEL 188h 1111 1111 1111 1111 uuuu uuuu ANSELH 189h 1111 1111 1111 1111 uuuu uuuu EECON1 18Ch ---- x000 ---- q000 ---- uuuu EECON2 18Dh ---- ---- ---- ---- ---- ---- 图注: 注 1: 2: 3: 4: 5: 6: 表 14-5: 上电复位 • MCLR 复位 • WDT 复位 • 欠压复位 (1) u = 不变, x = 未知, - = 未实现位 (读为 0), q = 取值视条件而定。 如果 VDD 过低,上电复位将被激活,寄存器将受到不同的影响。 INTCON 和 / 或 PIR1 寄存器中的 1 位或多位会受到影响 (引起唤醒)。 当器件被中断唤醒且 GIE 位置 1 时, PC 中装入中断向量 (0004h)。 关于特定条件下的复位值,请参见表 14-5。 如果复位是由于欠压引起的,则 bit 0 = 0。其他复位将使 bit 0 = u。 只有在 SSPCON 寄存器的 SSPM<3:0> 位 = 1001 时才可被访问。 特殊寄存器的初始状态 条件 程序 计数器 STATUS 寄存器 PCON 寄存器 上电复位 000h 0001 1xxx --01 --0x 正常工作期间的 MCLR 复位 000h 000u uuuu --0u --uu 休眠期间的 MCLR 复位 000h 0001 0uuu --0u --uu WDT 复位 000h 0000 uuuu --0u --uu WDT 唤醒 PC + 1 uuu0 0uuu --uu --uu 欠压复位 000h 0001 1uuu --01 --u0 uuu1 0uuu --uu --uu 通过中断从休眠唤醒 (1) PC + 1 图注: u = 不变, x = 未知, - = 未实现位 (读为 0)。 注 1: 如果器件被中断唤醒且全局中断允许位 GIE 置 1,则执行 PC + 1 后, PC 中装入中断向量 (0004h)。 2008 Microchip Technology Inc. DS41291E_CN 第 219 页 PIC16F882/883/884/886/887 14.3 中断 PIC16F882/883/884/886/887 器件具有以下多种中断 源: • • • • • • • 外部中断 RB0/INT Timer0 溢出中断 PORTB 电平变化中断 两个比较器中断 A/D 中断 Timer1 溢出中断 Timer2 匹配中断 • • • • • • 数据 EEPROM 写中断 故障保护时钟监视器中断 增强型 CCP 中断 EUSART 接收和发送中断 超低功耗唤醒中断 MSSP 中断 中断控制寄存器 (INTCON)和外设中断请求寄存器 1 (PIR1)在 各 自 的 标 志 位 中 记 录 各 种 中 断 请 求。 INTCON 寄存器还包括各个中断允许位和全局中断允许 位。 全局中断允许位 GIE (INTCON<7>)在置 1 时允许所 有未屏蔽的中断,而在清零时,禁止所有中断。可以通 过 INTCON、PIE1 和 PIE2 寄存器中相应的允许位来禁 止各个中断。复位时 GIE 被清零。 执行“从中断返回”指令 RETFIE 将退出中断服务程序 并将 GIE 位置 1,从而重新允许未屏蔽的中断。 PIR2 寄存器包含下列中断标志位: • • • • • 故障保护时钟监视器中断 2 个比较器中断 EEPROM 数据写中断 超低功耗唤醒中断 CCP2 中断 当响应一个中断时: • 将 GIE 位清零以禁止其他中断。 • 将返回地址压入堆栈。 • PC 中装入 0004h。 对于外部中断事件,如 INT 引脚中断或 PORTB 电平变化 中断,中断响应延时将为 3 到 4 个指令周期。确切的响 应延时取决于发生中断事件的时间 (见图 14-8)。单周 期或双周期指令的中断响应延时完全相同。进入中断服 务程序之后,就可以通过查询中断标志位来确定中断 源。在重新允许中断前,必须用软件将中断标志位清零, 以避免重复响应该中断。 注 1: 各中断标志位的置 1 不受对应的中断允许 位和 GIE 位状态的影响。 2: 当执行一条清零 GIE 位的指令后,任何一 条等待在下一周期执行的中断都将被忽 略。当 GIE 位被再次置 1 后,被忽略的中 断仍会继续等待处理。 欲知更多有关 Timer1、 Timer2、比较器、 A/D、数据 EEPROM、EUSART、MSSP 或增强型 CCP 模块的信 息,请参见相应的外设章节。 INTCON 寄存器包含下列中断标志位: 14.3.1 • INT 引脚中断 • PORTB 电平变化中断 • Timer0 溢出中断 RB0/INT 引脚上的外部中断是边沿触发的;当 INTEDG 位 (OPTION<6>)被置 1 时在上升沿触发,而 当 INTEDG 位被清零时在下降沿触发。当 RB0/INT 引脚上 出现有效边沿时, INTF 位 (INTCON<1>)置 1。可以 通过清零 INTE 控制位(INTCON<4>)来禁止该中断。 在重新允许该中断前,必须在中断服务程序中先用软件 将 INTF 位清零。如果 INTE 位在进入休眠状态前被置 1,则 RB0/INT 中断能将处理器从休眠状态唤醒。 GIE 位的状态决定处理器在被唤醒之后是否会跳转到中断向 量 (0004h)处执行代码。有关休眠的详细信息,请参 见第 14.6 节 “掉电模式 (休眠)”;而有关 RB0/INT 中断将处理器从休眠状态唤醒的时序请参见图 14-10。 外设中断标志位在特殊功能寄存器 PIR1 和 PIR2 中。相 应的中断允许位在特殊功能寄存器 PIE1 和 PIE2 中。 PIR1 寄存器包含下列中断标志位: • • • • • • • A/D 中断 EUSART 接收和发送中断 Timer1 溢出中断 同步串行端口 (SSP)中断 增强型 CCP1 中断 Timer1 溢出中断 Timer2 匹配中断 DS41291E_CN 第 220 页 RB0/INT 中断 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 14.3.2 TMR0 中断 14.3.3 TMR0 寄 存器 溢 出 (FFh → 00h)会 将 T0IF (INTCON<2>)位 置 1。可 以 通 过 置 1/ 清 零 T0IE (INTCON<5>)位 来 允 许 / 禁 止 该 中 断。欲知有关 Timer0 模块的操作,请参见第 5.0 节“Timer0 模块”。 注: 图 14-7: PORTB 中断 PORTB 输入电平的变化会使 RBIF (INTCON<0>)位 置 1。可以通过置 1/ 清零 RBIE (INTCON<3>)位来 允许 / 禁止该中断。此外,可通过 IOCB 寄存器对该端 口的各个引脚进行配置。 如果在执行读操作的过程中(Q2 周期的开 始)I/O 引脚的电平发生了改变,那么 RBIF 中断标志可能就不会置 1。更多信息请参见 第 3.4.3 节 “电平变化中断”。 中断逻辑 IOC-RB0 IOCB0 IOC-RB1 IOCB1 IOC-RB2 IOCB2 BCLIF BCLIE IOC-RB3 IOCB3 SSPIF SSPIE IOC-RB4 IOCB4 TXIF TXIE IOC-RB5 IOCB5 RCIF RCIE IOC-RB6 IOCB6 TMR2IF TMR2IE IOC-RB7 IOCB7 TMR1IF TMR1IE 唤醒 CPU(如果处于休眠模式)(1) T0IF T0IE INTF INTE RBIF RBIE C1IF C1IE 到 CPU 的中断请求 PEIE C2IF C2IE GIE ADIF ADIE EEIF EEIE 注 OSFIF OSFIE CCP1IF CCP1IE 1: 某些外设依靠系统时钟工作。由于在休 眠状态下系统时钟将暂停,这些外设无 法使器件从休眠模式唤醒。请参见第 14.6.1 节 “从休眠状态唤醒”。 CCP2IF CCP2IE ULPWUIF ULPWUIE 2008 Microchip Technology Inc. DS41291E_CN 第 221 页 PIC16F882/883/884/886/887 图 14-8: INT 引脚中断时序 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 OSC1 CLKOUT (3) (4) INT 引脚 (1) (1) INTF 标志位 (INTCON<1>) 中断响应延时(2) (5) GIE 位 (INTCON<7>) 指令流 PC 取指令 Inst (PC + 1) Inst (PC) 执行 指令 Inst (PC) Inst (PC – 1) 0004h PC + 1 PC + 1 PC 0005h — Inst (0004h) Inst (0005h) 空周期 空周期 Inst (0004h) 1: 在此采样 INTF 标志 (每个 Q1 周期)。 2: 异步中断响应延时为 3-4 个 TCY。同步中断响应延时为 3 个 TCY,其中 TCY 为一个指令周期。无论 Inst (PC) 是单周 期还是双周期指令,中断响应延时都是相同的。 3: 只有在 INTOSC 和 RC 振荡模式下 CLKOUT 才有效。 4: 欲知 INT 脉冲的最小宽度,请参见第 17.0 节 “电气特性”中的交流规范。 5: 允许在 Q4-Q1 周期内的任何时间将 INTF 置 1。 注 表 14-6: 名称 INTCON 中断寄存器汇总 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他复位 时的值 0000 000x GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000 PIE2 OSFIE C2IE C1IE EEIE BCLIE ULPWUIE — CCP2IE 0000 00-0 0000 00-0 PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000 PIR2 OSFIF C2IF C1IF EEIF BCLIF ULPWUIF — CCP2IF 0000 00-0 0000 00-0 图注: x = 未知, u = 不变, - = 未实现 (读为 0), q = 取值视条件而定。中断模块不使用阴影单元。 DS41291E_CN 第 222 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 14.4 中断的现场保护 在中断期间,仅将返回的 PC 值压入堆栈。通常情况下, 用户可能希望在中断期间保存关键寄存器(例如,W 寄 存器和 STATUS 寄存器)。这必须用软件实现。 由于在 PIC16F882/883/884/886/887 中所有 GPR 存储 区的高 16 个字节都是公用的(见图 2-2 和图 2-3),临 时保存寄存器 W_TEMP 和 STATUS_TEMP 都应该被放 在这里。这 16 个存储单元不需要分区,因此更加便于 现场保护和恢复。与例 14-1 中相同的代码可被用于: • • • • • 存储 W 寄存器 存储 STATUS 寄存器 执行中断服务程序代码 恢复 STATUS 寄存器 (和存储区选择寄存器) 恢复 W 寄存器 注: PIC16F882/883/884/886/887 器件通常不 需要保存 PCLATH。但是,如果要在中断 服务程序和主函数中使用计算 GOTO,就必 须在中断服务程序中保存和恢复 PCLATH。 例 14-1: MOVWF SWAPF 将 STATUS 和 W 寄存器保存在 RAM 中 W_TEMP STATUS,W MOVWF STATUS_TEMP : :(ISR) : SWAPF STATUS_TEMP,W MOVWF SWAPF SWAPF STATUS W_TEMP,F W_TEMP,W 2008 Microchip Technology Inc. ;Copy W to TEMP ;Swap status to ;Swaps are used ;Save status to register be saved into W because they do not affect the status bits bank zero STATUS_TEMP register ;Insert user code here ;Swap STATUS_TEMP register into W ;(sets bank to original state) ;Move W into STATUS register ;Swap W_TEMP ;Swap W_TEMP into W DS41291E_CN 第 223 页 PIC16F882/883/884/886/887 14.5 看门狗定时器 (WDT) 14.5.2 WDTE 位位于配置字寄存器 1 中。当该位置 1 时,WDT 持续运行。 WDT 具有以下特性: • • • • • 依靠 LFINTOSC (31 kHz)工作 包含一个 16 位预分频器 与 Timer0 共用 8 位预分频器 超时周期从 1 ms 至 268 秒 可由配置位和软件控制 当配置字寄存器 1 中的 WDTE 位置 1 时,WDTCON 寄 存器的 SWDTEN 位无效。当 WDTE 清零时,则可使用 SWDTEN 位使能和禁止 WDT。 SWDTEN 位置 1 使能 WDT, SWDTEN 位清零则禁止 WDT。 OPTION_REG 寄存器的 PSA 和 PS<2:0> 位具有与早 期PIC16F882/883/884/886/887系列单片机中相应位同 样的功能。更多信息,请参见第 5.0 节“Timer0 模块”。 在表 14-7 中的条件下, WDT 会被清零。 14.5.1 WDT 控制 WDT 振荡器 WDT 以 31 kHz 的 LFINTOSC 作为其工作的时基。 LFINTOSC 使能与否不会在 OSCCON 寄存器的 LTS 位 上有所反映。 在所有复位后, WDTCON 的值都为 “---0 1000”。 这相当于 17 ms 的标称时基。 注: 图 14-9: 当振荡器起振延时定时器(OST)启动时, 由于 OST 需要使用 WDT 脉动计数器来对 振荡器延时进行计数,因此 WDT 仍将保持 复位状态。当 OST 计数结束后,WDT 将开 始计数 (如果使能)。 看门狗定时器框图 来自 TMR0 时钟源 0 预分频器 (1) 16 位 WDT 预分频器 1 8 PSA 31 kHz LFINTOSC 时钟 PS<2:0> WDTPS<3:0> 到 TMR0 1 0 PSA 配置字寄存器 1 中的 WDTE WDTCON 中的 SWDTEN WDT 超时 注 1:这是 Timer0 与 WDT 共用的预分频器。更多信息,请参见 5.1.3 “软件可编程预分频器”。 表 14-7: WDT 状态 条件 WDT WDTE = 0 CLRWDT 指令 检测到振荡器故障 清零 退出休眠 + 系统时钟 = T1OSC、 EXTRC、 INTOSC 或 EXTCLK 退出休眠 + 系统时钟 = XT、 HS 或 LP DS41291E_CN 第 224 页 清零直到 OST 结束 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 寄存器 14-3: WDTCON:看门狗定时器控制寄存器 U-0 U-0 U-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-0 — — — WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN(1) bit 7 bit 0 图注: R = 可读位 W = 可写位 U = 未实现位,读为 0 -n = POR 时的值 1=置1 0 = 清零 bit 7-5 未实现:读为 0 bit 4-1 WDTPS<3:0>:看门狗定时器周期选择位 位值 = 预分频比 0000 = 1:32 0001 = 1:64 0010 = 1:128 0011 = 1:256 0100 = 1:512 (复位值) 0101 = 1:1024 0110 = 1:2048 0111 = 1:4096 1000 = 1:8192 1001 = 1:16384 1010 = 1:32768 1011 = 1:65536 1100 = 保留 1101 = 保留 1110 = 保留 1111 = 保留 bit 0 SWDTEN:软件使能或禁止看门狗定时器位 (1) 1 = 使能 WDT 0 = 禁止 WDT (复位值) 注 x = 未知 1: 如果 WDTE 配置位 = 1,则 WDT 始终被使能,而与该控制位的状态无关。如果 WDTE 配置位 = 0,则可 以使用该控制位使能或禁止 WDT。 表 14-8: 名称 CONFIG1(1) OPTION_REG WDTCON 看门狗定时器寄存器汇总 POR 和 BOR 所有其他复位 时的值 时的值 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 CPD CP MCLRE PWRTE WDTE FOSC2 FOSC1 FOSC0 — — RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111 — — — WDTPS3 WDTPS2 WSTPS1 WDTPS0 SWDTEN ---0 1000 ---0 1000 图注: 看门狗定时器不使用阴影单元。 注 1: 关于配置字寄存器 1 中的所有位的操作,请参见寄存器 14-1。 2008 Microchip Technology Inc. DS41291E_CN 第 225 页 PIC16F882/883/884/886/887 14.6 掉电模式 (休眠) 执行 SLEEP 指令可进入掉电模式。 如果使能了看门狗定时器: • • • • • WDT 将被清零并继续运行。 STATUS 寄存器中的 PD 位被清零。 TO 位被置 1。 关闭振荡器驱动器。 I/O 端口保持执行 SLEEP 指令之前的状态(驱动为 高电平、低电平或高阻态)。 在休眠模式下,为了尽量降低电流消耗,所有 I/O 引脚 都应该保持为 VDD 或 VSS,没有外部电路从 I/O 引脚消 耗电流,同时应禁止比较器和 CVREF。为了避免输入引 脚悬空而引入开关电流,应在外部将高阻输入的 I/O 引 脚拉为高电平或低电平。为了将电流消耗降至最低, TOCKI输入也应该保持为VDD 或VSS。还应考虑PORTA 片上上拉的影响。 MCLR 引脚必须处于逻辑高电平。 注: 14.6.1 应该注意到 WDT超时溢出导致的复位并不 会将 MCLR 引脚驱动为低电平。 从休眠状态唤醒 可以通过下列任一事件将器件从休眠状态唤醒: 1. 2. 3. MCLR 引脚上的外部复位输入。 看门狗定时器唤醒 (如果 WDT 使能) RB0/INT 引脚中断、 PORTB 电平变化中断或外 设中断。 第一种事件会导致器件复位。后两种事件被认为是程序 执行的延续。 STATUS 寄存器中的 TO 和 PD 位用于确 定器件复位的原因。 PD 位在上电时被置 1,而在执行 SLEEP 指令时被清零。 TO 位在发生 WDT 唤醒时被清 零。 下列外设中断可以将器件从休眠状态唤醒: 1. 2. 3. 4. 5. 6. 7. 8. TMR1 中断。 Timer1 必须用作异步计数器。 ECCP 捕捉模式中断。 A/D 转换 (当 A/D 时钟源为 FRC 振荡器时)。 EEPROM 写操作完成。 比较器输出状态变化。 电平变化中断。 来自 INT 引脚的外部中断 EUSART 间隔检测, I2C 从动模式。 当执行 SLEEP 指令时,下一条指令 (PC + 1) 被预先取 出。如果希望通过中断事件唤醒器件,则必须将相应的 中断允许位置 1 (允许)。唤醒与 GIE 位的状态无关。 如果 GIE 位被清零 (禁止),器件将继续执行 SLEEP 指令之后的指令。如果 GIE 位被置 1 (允许),器件执 行 SLEEP 指令之后的指令,然后跳转到中断地址 (0004h)处执行代码。如果不想执行 SLEEP 指令之后 的指令,用户应该在 SLEEP 指令后面放置一条 NOP 指 令。 注: 如果禁止了全局中断 (GIE 被清零),但 若有任一中断源的中断允许位和相应的中 断标志位同时置 1,器件将立即从休眠状态 唤醒。 SLEEP 指令被完整执行。 器件从休眠状态唤醒时, WDT 都将被清零,而与唤醒 的原因无关。 14.6.2 使用中断唤醒 当禁止全局中断 (GIE 被清零)时,并且有任一中断源 将其中断允许位和中断标志位置 1,将会发生下列事件 之一: • 如果在执行 SLEEP 指令之前产生了中断,那么 SLEEP 指令将被作为一条 NOP 指令执行。因此, WDT 及其预分频器和后分频器 (如果使能)将不 会被清零,并且 TO 位将不会被置 1,同时 PD 也 不会被清零。 • 如果在执行 SLEEP 指令期间或之后产生了中断,那 么器件将被立即从休眠模式唤醒。 SLEEP 指令将 在唤醒之前执行完毕。因此, WDT 及其预分频器 和后分频器 (如果使能)将被清零,并且 TO 位 将被置 1,同时 PD 也将被清零。 即使在执行 SLEEP 指令之前检查到标志位为 0,它也可 能在 SLEEP 指令执行完毕之前被置 1。要确定是否执行 了 SLEEP 指令,可以测试 PD 位。如果 PD 位置 1,则 说明 SLEEP 指令被作为一条 NOP 指令执行了。 在执行 SLEEP 指令之前,必须先执行一条 CLRWDT 指 令,来确保将 WDT 清零。 由于在休眠状态期间没有片内时钟处于工作状态,因此 其他外设不能产生中断。 DS41291E_CN 第 226 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 14-10: 通过中断将器件从休眠模式唤醒 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 OSC1 TOST(2) CLKOUT(4) INT 引脚 INTF 标志位 (INTCON<1>) 中断响应延时 GIE 位 (INTCON<7>) 指令流 PC Inst(PC) = Sleep 执行 指令 注 14.7 处理器处于 休眠状态 PC 取指令 Inst(PC – 1) 1: 2: 3: 4: PC + 1 PC + 2 14.8 Inst(PC + 2) Sleep Inst(PC + 1) PC + 2 空周期 0004h 0005h Inst(0004h) Inst(0005h) 空周期 Inst(0004h) 假定为 XT、 HS 或 LP 振荡模式。 TOST = 1024 TOSC (图形未按比例绘制)。该延时不适用于 EC 和 RC 振荡模式。 假设 GIE = 1。在这种情形下,器件被唤醒后,将跳转到 0004 处执行代码。如果 GIE = 0,程序将继续执行。 在 XT、 HS、 LP 或 EC 振荡模式下,不输出 CLKOUT 信号,在此显示仅作为时序参考。 代码保护 当代码保护从开到关时,将擦除整个数据 EEPROM 和闪存程序存储器的内容。请参 见 “PIC16F88X Memory Programming Specification”(DS41287)了 解 更 多 信 息。 ID 地址单元 有 4 个存储单元 (2000h-2003h)被指定为 ID 地址单 元,供用户存储校验和或其他代码标识号。在正常执行 过程中不能访问这些单元,但可在编程 / 校验模式中对 它们进行读写。只可使用 ID 地址单元的低 7 位。 14.9 PC + 2 Inst(PC + 1) 如果代码保护位未编程,校验时可通过使用 ICSP™ 读 出片上程序存储器。 注: (3) 通过将 RB6/ICSPCLK 和 RB7/ICSPDAT 引脚拉至并保持 在低电平,并同时将 MCLR (VPP)引脚从 VIL 升到 VIHH, 可将器件置于编程 / 校验模式。请参见 “PIC16F88X Memory Programming Specification”(DS41287)了解 更多信息。此时 R B 7 成 为 编 程 数 据 线 而 RB6/ 则成 为编程时钟线。在该模式下,RB7 和 RB6 均为施密特触发 输入方式。 复位后,为将器件置于编程 / 校验模式,程序计数器 (PC)指向地址单元 00h。随后向器件发送一条 6 位命 令。根据具体命令是执行装载还是读取操作,可向器件 提供一个 14 位的程序数据或是从器件读取一个 14 位的 程序数据。关 于 串 行 编 程 的 完 整 细 节 , 请 参 见 “PIC16F88X Memory Programming Specification”(DS41287)。 图 14-11 给出了典型的在线串行编程的连接方式。 在线串行编程 可在最终应用电路中对PIC16F882/883/884/886/887单 片机进行串行编程。编程可以简单地通过一根时钟线、 一根数据线和以下三种其他的线完成: • 电源线 • 接地线 • 编程电压线 这使用户可使用未编程的器件制造电路板,而仅在产品 交付前才对单片机进行编程。从而可以将最新版本的固 件或者定制固件烧写到单片机中。 2008 Microchip Technology Inc. DS41291E_CN 第 227 页 PIC16F882/883/884/886/887 图 14-11: 典型的在线串行编程连接方式 至正常 连接 外部 连接器 信号 PIC16F882/883/ 884/886/887 * +5V VDD 0V VSS VPP RE3/MCLR/VPP CLK RB6 数据 I/O RB7 14.10 低电压 (单电源)ICSP 编程 配置字的 LVP 位用于使能低电压 ICSP 编程。该模式允 许使用处于工作电压范围内的 VDD 源,通过 ICSP 对单 片机进行编程。 这意味着不必将 VPP 拉至 VIHH,而是 保持其为正常工作的电压。在该模式下, RB3/PGM 引 脚专用于编程,不再用作通用 I/O 引脚。在编程期间, VDD 连接到 MCLR 引脚。 在 LVP 置 1 的前提下,还必 须将VDD 施加给RB3/PGM,才能使器件进入编程模式。 出厂时, LVP 位的默认值为 1。 注 1: 通过将 VIHH 施加给 MCLR 引脚,可始终使 能高电压编程模式,而与 LVP 位的状态无 关。 2: 在低电压 ICSP 模式下, RB3 引脚将不再 用作通用 I/O 引脚。 * * * 至正常 连接 * 电气隔离器件 (根据需要而定) 3: 当使用低电压 ICSP 编程 (LVP)时,若 已经使能了 PORTB 的上拉,则必须先将 TRISB 寄存器的 bit 3 清零,以禁止 RB3 上拉,从而确保器件正常工作。 4: 使能 LVP 时,应避免 RB3 悬空。 应外接 一个下拉元件,使器件默认在正常工作模 式。如果 RB3 悬空为高电平,PIC16F88X 器件将进入常规编程模式。 5: Microchip 交付的所有器件,在默认条件下 均使能 LVP 模式。可以通过清零 CONFIG 寄存器中的 LVP 位禁止该模式。 若不使用低电压编程模式,可将 LVP 位编程为 0,且 RB3/PGM 变为数字 I/O 引脚。但是,只能在对 MCLR 引脚施加了 VIHH 进入编程模式后,才能对 LVP 位进行 设置。使用在 MCLR 上施加有高电压时,才能改变 LVP 位。 应当注意的是,一但将 LVP 位编程为 0,就只能使用高 电压编程模式。也只有高电压编程模式可用来对器件进 行编程。 当使用低电压 ICSP 时,若要执行批量擦除操作,必须 为器件提供 4.5V 至 5.5V 的电压。这包括将代码保护位 从受保护状态重新编程为不受保护状态。对于低电压 ICSP 的其他情况,则可在正常工作电压下对器件编程。 这意味着可以重新设置或添加校准值、惟一的用户识别 码或用户代码。 DS41291E_CN 第 228 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 更多信息可参见 Microchip 网站(www.microchip.com) 上的 “Using MPLAB® ICD 2”(DS51265)。 14.11 在线调试器 PIC16F882/883/884/886/887-ICD 可用于任何封装类型 的器件。器件将被固定在目标应用板上,有 3 或 4 根导 线连接到 ICD 工具。 14.11.1 ICD 引脚排列 PIC16F88X系列器件具有片上在线调试器电路,以及用 于在线调试器的引脚。这使 ICD 器件不必采用另外的管 芯或封装。 ICD 器件的引脚排列与器件相同 (见第 1.0 节 “器件概述”以获取完整的引脚及其排列形式的说 明)。表 14-9 给出了 28 和 40 引脚器件中与 ICD 相关 的引脚的位置和功能。 当配置字中的调试位(CONFIG<13>)被编程为 0 时, 将使能在线调试功能。该功能允许使用 MPLAB® ICD 2 实现简单的调试功能。当单片机使能了此功能后,某些 资源将不再具有常规功能。详情请参见表 14-9。 用户应用必须具有支持 ICD 功能所需的电 路。一 旦 使 能 了 I C D 电 路 ,R B 6 / I C S P C L K 和 RB7/ICSPDAT 引脚的常规 器件引脚功能将无法使用。 ICD 电路使用这 些引脚与 ICD 2 外部调试器通信。 注: 表 14-9: PIC16F882/883/884/886/887-ICD 引脚说明 引脚 (PDIP) PIC16F884/887 PIC16F882/883/886 名称 类型 上拉 说明 40 28 ICDDATA TTL — 在线调试器双向数据引脚 39 27 ICDCLK ST — 在线调试器双向时钟引脚 1 1 MCLR/VPP HV — 编程电压 11, 32 20 VDD P — 12, 31 8, 19 VSS P — 图注: TTL = TTL 输入缓冲器, ST = 施密特触发器输入缓冲器, P = 电源, HV = 高电压 2008 Microchip Technology Inc. DS41291E_CN 第 229 页 PIC16F882/883/884/886/887 注: DS41291E_CN 第 230 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 15.0 指令集综述 PIC16F882/883/884/886/887 指令集具有高度正交性, 分为以下三种基本类型: 表 15-1: 操作码字段说明 字段 f 说明 文件寄存器地址 (0x00 到 0x7F) • 字节操作类指令 • 位操作类指令 • 立即数和控制操作类指令 W 工作寄存器 (累加器) b 8 位文件寄存器内的位地址 k 立即数字段、常数或标号 每条 PIC16 指令都是 14 位字的,由操作码 (指定指 令类型)和一个或多个操作数(指定指令操作)组成。 图 15-1 中显示了每种指令类型的格式,而表 15-1 总结 了各种操作码字段。 x 与取值无关的位 (= 0 或 1)。 汇编器将生成 x = 0 的代码。为了与所有的 Microchip 软件工具兼容,建议使用这种形式。 d 目标寄存器选择; d = 0:结果保存至 W, d = 1:结果保存至文件寄存器 f。 默认值为 d = 1。 表 15-2 列出了所有可被 MPASMTM 汇编器识别的指令。 对于字节操作指令,“f”为代表文件寄存器的指示符, 而 “d”为代表目标寄存器的指示符。文件寄存器指示 符指定指令将会使用哪一个文件寄存器。 目标寄存器指示符指定操作结果的存放位置。如果“d” 为 0,结果存放在 W 寄存器中。如果 “d”为 1,结果 存放在指令指定的文件寄存器中。 对于位操作类指令,“b”为代表位域的指示符,用于选 择操作所影响的位,而 “f”则代表相应位所在的寄存 器的地址。 对于立即数和控制操作类指令,“k”代表一个 8 位或 11 位常数或立即数值。 每个指令周期由 4 个振荡周期组成。因此,对于频率为 4 MHz 的振荡器,其正常的指令执行时间为 1 µs。所有 指令都在一个指令周期内执行,除非条件测试为真或者 指令执行改变了程序计数器的值。当上述特殊情况发生 时,指令的执行就需要两个指令周期,第二个周期执行 一条 NOP 指令。 所有指令示例均使用 “0xhh”格式表示一个十六进制 数,其中 “h”表示一个十六进制数字。 15.1 PC 程序计数器 TO 超时位 C 进位位 DC 半进位位 Z 全零位 PD 掉电位 图 15-1: 文件寄存器字节操作指令 13 8 7 操作码 d 6 0 f (文件寄存器地址) d = 0 表示结果存入 W 寄存器 d = 1 表示结果存入文件寄存器 f = 7 位文件寄存器地址 文件寄存器位操作指令 13 10 9 7 6 0 操作码 b(位地址)f (文件寄存器地址) 读 - 修改 - 写操作 所有需要使用文件寄存器的指令都会执行读-修改-写 (Read-Modify-Write, RMW)操作。根据指令或目标 寄存器指示符 “d”读寄存器、修改数据和保存结果。 即使是写一个寄存器的指令也将先对该寄存器进行读操 作。 指令的一般格式 b = 3 位位地址 f = 7 位文件寄存器地址 立即数和控制操作类指令 通用 13 8 例如, CLRF PORTA 指令会读 PORTA,清零所有数据 位,然后将结果写回到 PORTA。该示例可能会意外清 除将 RAIF 标志位置 1 的条件。 7 0 k (立即数) 操作码 k = 8 位立即数的值 仅 CALL 和 GOTO 指令 13 11 10 操作码 0 k(立即数) k = 11 位立即数的值 2008 Microchip Technology Inc. DS41291E_CN 第231 页 PIC16F882/883/884/886/887 表 15-2: PIC16F882/883/884/886/887 指令集 助记符, 操作数 说明 周期 14 位操作码 MSb LSb 受影响的 状态位 注 针对字节的文件寄存器操作 ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF f, d f, d f - f, d f, d f, d f, d f, d f, d f, d f - f, d f, d f, d f, d f, d W 和 f 相加 W 和 f 作逻辑与运算 将 f 清零 将 W 寄存器清零 f 取反 f 递减 1 f 递减 1,为 0 则跳过 f 递增 1 f 递增 1,为 0 则跳过 W 和 f 作逻辑或运算 将 f 的内容传送到目标寄存器 将 W 的内容传送到 f 空操作 对 f 执行带进位的左移 对 f 执行带进位的右移 f 减去 W 将 f 中的两个半字节交换 W 和 f 作逻辑异或运算 1 1 1 1 1 1 1(2) 1 1(2) 1 1 1 1 1 1 1 1 1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0111 0101 0001 0001 1001 0011 1011 1010 1111 0100 1000 0000 0000 1101 1100 0010 1110 0110 dfff dfff lfff 0xxx dfff dfff dfff dfff dfff dfff dfff lfff 0xx0 dfff dfff dfff dfff dfff ffff ffff ffff xxxx ffff ffff ffff ffff ffff ffff ffff ffff 0000 ffff ffff ffff ffff ffff 01 01 01 01 00bb 01bb 10bb 11bb bfff bfff bfff bfff ffff ffff ffff ffff 11 11 10 00 10 11 11 00 11 00 00 11 11 111x 1001 0kkk 0000 1kkk 1000 00xx 0000 01xx 0000 0000 110x 1010 kkkk kkkk kkkk 0110 kkkk kkkk kkkk 0000 kkkk 0000 0110 kkkk kkkk kkkk kkkk kkkk 0100 kkkk kkkk kkkk 1001 kkkk 1000 0011 kkkk kkkk C, DC, Z Z Z Z Z Z Z Z Z C C C,DC,Z Z 1, 2 1, 2 2 1, 2 1, 2 1, 2, 3 1, 2 1, 2, 3 1, 2 1, 2 1, 2 1, 2 1, 2 1, 2 1, 2 针对位的文件寄存器操作 BCF BSF BTFSC BTFSS f, b f, b f, b f, b 将 f 中的某位清零 将 f 中的某位置 1 检测 f 中的某位,为 0 则跳过 检测 f 中的某位,为 1 则跳过 k k k – k k k – k – – k k 立即数和 W 相加 立即数与 W 作逻辑与运算 调用子程序 清零看门狗定时器 跳转到地址 立即数与 W 作逻辑或运算 将立即数传送到 W 从中断返回 返回并将立即数传送到 W 从子程序返回 进入待机模式 从立即数中减去 W 的内容 立即数与 W 作逻辑异或运算 1 1 1 (2) 1 (2) 1, 2 1, 2 3 3 立即数和控制操作 ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE RETLW RETURN SLEEP SUBLW XORLW 注 1 1 2 1 2 1 1 2 2 2 1 1 1 C,DC,Z Z TO, PD Z TO, PD C,DC,Z Z 1: 当 I/O 寄存器用自身内容修改自身时 (例如:MOVF PORTB, 1),使用的值是出现在引脚上的值。例如,如果将一引脚 配置为输入,虽然其对应数据锁存器中的值为 1,但此时若有外部器件将该引脚驱动为低电平,则被写回的数据值将是 0。 2: 如果对 TMR0 寄存器执行这条指令 (并且适用时 d = 1),预分频器分配给 Timer0 模块时将被清零。 3: 如果程序计数器 (PC)被修改或条件测试为真,则执行该指令需要两个周期。第二个周期执行一条 NOP 指令。 DS41291E_CN 第232 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 15.2 指令说明 ADDLW 立即数与 W 相加 语法: [ 标号 ] ADDLW 操作数: 0 ≤ k ≤ 255 操作: (W) + k → (W) k 受影响的状态位: C、 DC 和 Z 说明: ADDWF 将 W 寄存器的内容与 8 位立即数 k 相加,结果存入 W 寄存器。 W 和 f 相加 BCF 将 f 中的某位清零 语法: [ 标号 ] BCF 操作数: 0 ≤ f ≤ 127 0≤b≤7 操作: 0 → (f<b>) 受影响的状态位: 无 说明: 将寄存器 f 中的 b 位清零。 BSF 将 f 中的某位置 1 语法: [ 标号 ] ADDWF 语法: [ 标号 ] BSF 操作数: 0 ≤ f ≤ 127 d ∈ [0,1] 操作数: 0 ≤ f ≤ 127 0≤b≤7 操作: (W) + (f) → ( 目标寄存器 ) 操作: 1 → (f<b>) f,d 受影响的状态位: C、 DC 和 Z 将 W 寄存器的内容与 f 寄存器的内 容相加。如果 d 等于 0,结果存放 在 W 寄存器中。如果 d 为 1,结果 存回寄存器 f。 ANDLW 立即数与 W 作逻辑与运算 语法: [ 标号 ] ANDLW 操作数: 0 ≤ k ≤ 255 操作: (W) .AND.(k) → (W) k 受影响的状态位: Z ANDWF f,b 受影响的状态位: 无 说明: 说明: f,b 将 W 寄存器的内容与 8 位立即数 k 作逻辑与运算。结果存入 W 寄 存器。 W 和 f 作逻辑与运算 语法: [ 标号 ] ANDWF 操作数: 0 ≤ f ≤ 127 d ∈ [0,1] 操作: (W) .AND.(f) → ( 目标寄存器 ) f,d 说明: 将寄存器 f 的 b 位置 1。 BTFSC 检测位,为 0 则跳过 语法: [ 标号 ] BTFSC f,b 操作数: 0 ≤ f ≤ 127 0≤b≤7 操作: 如果 (f<b>) = 0 则跳过 受影响的状态位: 无 说明: 如果 f 寄存器中的位 b 为 1,则执 行下一条指令。 如果 f 寄存器中的位 b 为 0,则丢 弃下一条指令,转而执行一条 NOP 指令,从而使该指令成为双周期指 令。 受影响的状态位: Z 说明: W 寄存器与 f 寄存器作逻辑与运 算。如果 d 等于 0,结果存放在 W 寄存器中。如果 d 为 1,结果存回 寄存器 f。 2008 Microchip Technology Inc. DS41291E_CN 第233 页 PIC16F882/883/884/886/887 BTFSS 检测 f 中的某位,为 1 跳过 CLRWDT 清零看门狗定时器 语法: [ 标号 ] BTFSS f,b 语法: [ 标号 ] CLRWDT 操作数: 0 ≤ f ≤ 127 0≤b<7 操作数: 无 操作: 操作: 如果 (f<b>)= 1 则跳过 00h → WDT 0 → WDT 预分频器, 1 → TO 1 → PD 受影响的状态位: 无 说明: 如果 f 寄存器中的位 b 为 0,则执 行下一条指令。 如果位 b 为 1,则丢弃下一条指 令,转而执行一条 NOP 指令,从而 使该指令成为双周期指令。 受影响的状态位: TO 和 PD 说明: CLRWDT 指令用于复位看门狗定时 器。它还将复位 WDT 的预分频 器。状态位 TO 和 PD 置 1。 CALL 调用子程序 COMF f 取反 语法: [ 标号 ] CALL k 语法: [ 标号 ] COMF 操作数: 0 ≤ k ≤ 2047 操作数: 操作: (PC)+ 1 → TOS, k → PC<10:0>, (PCLATH<4:3>) → PC<12:11> 0 ≤ f ≤ 127 d ∈ [0,1] 操作: (f) → ( 目标寄存器 ) 受影响的状态位: 无 f,d 受影响的状态位: Z 说明: 将寄存器 f 的内容取反。如果 d 为 0,结果存入 W 寄存器。如果 d 为 1,结果存回寄存器 f。 DECF f 递减 1 说明: 调用子程序。首先,将返回地址 (PC+1)压入堆栈。 11 位立即数地 址被装入 PC 位 <10:0>。将 PCLATH 装入 PC 的高位。CALL 是 双周期指令。 CLRF 将 f 清零 语法: [ 标号 ] CLRF 语法: [ 标号 ] DECF f,d 操作数: 0 ≤ f ≤ 127 操作数: 操作: 00h → (f) 1→Z 0 ≤ f ≤ 127 d ∈ [0,1] 操作: (f) - 1 → ( 目标寄存器 ) f 受影响的状态位: Z 说明: 寄存器 f 的内容被清零, Z 位置 1。 CLRW 将 W 寄存器清零 语法: [ 标号 ] CLRW 操作数: 无 操作: 00h → (W) 1→Z 受影响的状态位: Z 说明: 将寄存器 f 的内容减 1。如果 d 为 0,结果存储到 W 寄存器。如果 d 为 1,结果存回寄存器 f。 受影响的状态位: Z 说明: W 寄存器被清零。全零标志位 (Z)置 1。 DS41291E_CN 第234 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 DECFSZ f 递减 1,为 0 则跳过 语法: [ 标号 ] DECFSZ f,d 语法: [ 标号 ] 操作数: 0 ≤ f ≤ 127 d ∈ [0,1] 操作数: 0 ≤ f ≤ 127 d ∈ [0,1] 操作: (f) - 1 → ( 目标寄存器 ), 结果为 0 时跳过 操作: (f) +1 → ( 目标寄存器 ),结果为 0 时跳过 受影响的状态位: 无 说明: INCFSZ f 递增 1,为 0 则跳过 INCFSZ f,d 受影响的状态位: 无 将寄存器 f 的内容递减 1。如果 d 为 0,结果存放在 W 寄存器中。如 果 d 为 1,结果存回寄存器 f。 如果结果为 1,则执行下一条指 令。如果结果为 0,则执行 NOP, 从而使该指令变为双周期指令。 说明: 将寄存器 f 的内容递增 1。如果 d 为 0,结果存放在 W 寄存器中。如果 d 为 1,结果存回寄存器 f。 如果结果为 1,则执行下一条指令。 如果结果为 0,则执行 NOP,从而 使该指令变为双周期指令。 GOTO 无条件跳转 IORLW 立即数与 W 作逻辑或运算 语法: [ 标号 ] 语法: [ 标号 ] 操作数: 0 ≤ k ≤ 2047 操作数: 0 ≤ k ≤ 255 操作: k → PC<10:0> PCLATH<4:3> → PC<12:11> 操作: (W) .OR. k → (W) GOTO k 受影响的状态位: 无 说明: GOTO 是无条件跳转指令。 11 位 立即数地址被装入 PC 位 <10:0>。 PC 高位从 PCLATH<4:3> 装入。 GOTO 是双 周期指令。 INCF f 递增 1 语法: [ 标号 ] 操作数: 0 ≤ f ≤ 127 d ∈ [0,1] 操作: (f)+1 → ( 目标寄存器 ) INCF f,d 受影响的状态位: Z 说明: 将寄存器 f 的内容递增 1。如果 d 为 0,结果存放在 W 寄存器中。 如果 d 为 1,结果存回寄存器 f。 2008 Microchip Technology Inc. IORLW k 受影响的状态位: Z 说明: 将 W 寄存器的内容与 8 位立即数 k 作逻辑或运算。结果存入 W 寄存器。 IORWF 将 W 和 f 作逻辑或运算 语法: [ 标号 ] 操作数: 0 ≤ f ≤ 127 d ∈ [0,1] 操作: (W) .OR.(f) → ( 目标寄存器 ) IORWF f,d 受影响的状态位: Z 说明: W 寄存器与 f 寄存器作逻辑或运 算。如果 d 为 0,结果存放在 W 寄存器中。如果 d 为 1,结果存回 寄存器 f。 DS41291E_CN 第235 页 PIC16F882/883/884/886/887 MOVF 将 f 的内容传送到目标寄存器 MOVWF 语法: [ 标号 ] 语法: [ 标号 ] 0 ≤ f ≤ 127 d ∈ [0,1] 操作数: 0 ≤ f ≤ 127 操作: (W) → (f) (f) → ( 目标寄存器) 受影响的状态位: 无 操作数: 操作: MOVF f,d 受影响的状态位: Z 机器码: 机器码: 说明: 00 1000 dfff ffff 根据 d 的状态,将寄存器 f 的内容 送入目标寄存器。如果 d 为 0, 目标寄存器为 W 寄存器。如果 d 为 1,目标寄存器为寄存器 f。由 于状态标志位 Z 受到指令结果的 影响, d = 1 可用于检测文件寄存 器。 指令字数: 1 指令周期数: 1 示例: 将 W 的内容传送到 f MOVF 00 1 指令周期数: 1 示例: MOVWF OPTION FSR, 0 空操作 语法: [ 标号 ] MOVLW k [ 标号 ] 操作数: 0 ≤ k ≤ 255 操作数: 无 操作: k → (W) 操作: 空操作 NOP 受影响的状态位: 无 受影响的状态位: 无 11 00xx kkkk kkkk 机器码: 00 0000 将 8 位立即数 k 装入 W 寄存器。 “无关位”被汇编为 0。 说明: 无任何操作。 指令字数: 1 指令字数: 1 指令周期数: 1 指令周期数: 1 示例: 示例: MOVLW 0xx0 0000 NOP 0x5A 执行指令后 W = DS41291E_CN 第236 页 ffff 指令字数: 语法: 说明: 1fff 将 W 寄存器中的数据传送到寄存 器 f。 NOP 机器码: 0000 f 说明: 将立即数传送到 W MOVLW MOVWF 0x5A 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 RETFIE 从中断返回 RETLW 语法: [ 标号 ] 语法: [ 标号 ] RETFIE 返回并将立即数传送到 W RETLW k 操作数: 无 操作数: 0 ≤ k ≤ 255 操作: TOS → PC, 1 → GIE 操作: k → (W) TOS → PC 受影响的状态 位: 无 受影响的状态位: 无 机器码: 00 0000 0000 1001 从中断返回。执行出栈操作,将 栈顶 (TOS)单元内容装入 PC。 通过置 1 全局中断允许位 GIE (INTCON<7>)允许中断。这是 一条双周期指令。 机器码: 指令字数: 1 指令周期数: 2 说明: 示例: 11 01xx kkkk kkkk 说明: 将 8 位立即数 k 装入 W 寄存器。 栈顶内容 (返回地址)被装入程 序计数器。这是一条双周期指令。 指令字数: 1 指令周期数: 2 示例: CALL TABLE ;W contains ;tableoffset TABLE ;value • ;W now has • ;table value • ADDWF PC ;W = offset RETLW k1 ;Begin table RETLW k2 ; • • • RETLW kn ;End of table RETFIE 执行指令前 W = 执行指令后 W = RETURN 从子程序返回 语法: [ 标号 ] 操作数: 无 操作: TOS → PC 0x07 k8 的值 RETURN 受影响的状态位: 无 说明: 2008 Microchip Technology Inc. 从子程序返回。执行出栈操作, 将栈顶 (TOS)单元内容装入程 序计数器。这是一条双周期指令。 DS41291E_CN 第237 页 PIC16F882/883/884/886/887 RLF 对 f 执行带进位的循环左移 语法: [ 标号 ] 操作数: 0 ≤ f ≤ 127 d ∈ [0,1] 操作: RLF f,d SLEEP 进入休眠模式 语法: [ 标号 ] SLEEP 操作数: 无 操作: 00h → WDT, 0 → WDT 预分频器, 1 → TO, 0 → PD 参见下面的说明 受影响的状态位: C 机器码: 说明: 00 1101 ffff 将寄存器 f 的内容连同进位标志位 一起左移 1 位。如果 d 为 0,结 果存放在 W 寄存器中。如果 d 为 1,结果存回寄存器 f。 C 指令字数: 1 指令周期数: 1 示例: dfff 受影响的状态位: TO 和 PD 说明: 寄存器 f RLF 掉电状态位 (PD)清零。超时状 态位 (TO)位置 1。看门狗定时 器及其预分频器被清零。 振荡器停振,处理器进入休眠模 式。 REG1,0 执行指令前 REG1 C = = 1110 0110 0 = = = 1110 0110 1100 1100 1 执行指令后 REG1 W C RRF 对 f 执行带进位的循环右移 SUBLW 从立即数中减去 W 寄存器的内容 语法: [ 标号 ] 语法: [ 标号 ] SUBLW k 操作数: 0 ≤ f ≤ 127 d ∈ [0,1] 操作数: 0 ≤ k ≤ 255 操作: k - (W) → (W) 操作: 参见下面的说明 受影响的状态位: C、 DC 和 Z RRF f,d 受影响的状态位: C 说明: 说明: 将寄存器 f 的内容连同进位标志位 一起右移 1 位。如果 d 为 0,结果 存放在 W 寄存器中。如果 d 为 1,结果存回寄存器 f。 C DS41291E_CN 第238 页 寄存器 f 从 8 位立即数 k 中减去 W 寄存器 的内容 (采用二进制补码方法运 算)。结果存入 W 寄存器。 C=0 W>k C=1 W≤k DC = 0 W<3:0> > k<3:0> DC = 1 W<3:0> ≤ k<3:0> 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 SUBWF f 减去 W XORWF W 和 f 作逻辑异或运算 语法: [ 标号 ] SUBWF f,d 语法: [ 标号 ] XORWF 操作数: 0 ≤ f ≤ 127 d ∈ [0,1] 操作数: 0 ≤ f ≤ 127 d ∈ [0,1] 操作: (f) - (W) → ( 目标寄存器 ) 操作: (W) .XOR.(f) → ( 目标寄存器 ) 受影响的状态位: Z 受影响的状态位: C、 DC 和 Z 说明: f,d 从寄存器 f 中减去 W 寄存器的内 容 (采用二进制补码方法运算)。 如果 d 为 0,结果存储到 W 寄存 器。如果 d 为 1,结果存回寄存器 f。 C=0 W>f C=1 W≤f DC = 0 W<3:0> > f<3:0> DC = 1 W<3:0> ≤ f<3:0> SWAPF 将 f 中的两个半字节交换 语法: [ 标号 ] SWAPF f,d 操作数: 0 ≤ f ≤ 127 d ∈ [0,1] 操作: (f<3:0>) → ( 目标寄存器 <7:4>), (f<7:4>) → ( 目标寄存器 <3:0>) 说明: 将 W 寄存器的内容与 f 寄存器的 内容作逻辑异或运算。如果 d 等 于 0,结果存放在 W 寄存器中。 如果 d 为 1,结果存回寄存器 f。 受影响的状态位: 无 说明: 将寄存器 f 的高半字节和低半字节 交换。如果 d 为 0,结果存放在 W 寄存器中。如果 d 为 1,结果 存回寄存器 f。 XORLW 立即数与 W 作逻辑异或运算 语法: [ 标号 ] 操作数: 0 ≤ k ≤ 255 操作: (W).XOR. k → (W) XORLW k 受影响的状态位: Z 说明: 将 W 寄存器的内容与 8 位立即数 k 作逻辑异或运算。结果存入 W 寄存器。 2008 Microchip Technology Inc. DS41291E_CN 第239 页 PIC16F882/883/884/886/887 注: DS41291E_CN 第240 页 2008 Microchip Technology Inc. PIC16F883/884/886/887 16.0 开发支持 一系列硬件及软件开发工具对 PIC® 单片机提供支持: • 集成开发环境 - MPLAB® IDE 软件 • 汇编器 / 编译器 / 链接器 - MPASMTM 汇编器 - MPLAB C18 和 MPLAB C30 C 编译器 - MPLINKTM 目标链接器 / MPLIBTM 目标库管理器 - MPLAB ASM30 汇编器 / 链接器 / 库 • 模拟器 - MPLAB SIM 软件模拟器 • 仿真器 - MPLAB ICE 2000 在线仿真器 - MPLAB REAL ICE™ 在线仿真器 • 在线调试器 - MPLAB ICD 2 • 器件编程器 - PICSTART® Plus 开发编程器 - MPLAB PM3 器件编程器 - PICkit™ 2 开发编程器 • 低成本演示和开发板及评估工具包 16.1 MPLAB 集成开发环境软件 MPLAB IDE 软件为 8/16 位单片机市场提供了前所未有 的易于使用的软件开发平台。 MPLAB IDE 是基于 Windows® 操作系统的应用软件,包括: • 一个包含所有调试工具的图形界面 - 模拟器 - 编程器 (单独销售) - 仿真器 (单独销售) - 在线调试器 (单独销售) • 具有彩色上下文代码显示的全功能编辑器 • 多项目管理器 • 内容可直接编辑的可定制式数据窗口 • 高级源代码调试 • 可视化器件初始化程序,便于进行寄存器的初始化 • 鼠标停留在变量上进行查看的功能 • 通过拖放把变量从源代码窗口拉到观察窗口 • 丰富的在线帮助 • 集成了可选的第三方工具,如 HI-TECH 软件 C 编 译器和 IAR C 编译器 MPLAB IDE 可以让您: • 编辑源文件 (汇编语言或 C 语言) • 点击一次即可完成汇编 (或编译)并将代码下载 到 PIC MCU 仿真器和模拟器工具中 (自动更新所 有项目信息) • 可使用如下各项进行调试: - 源文件 (汇编语言或 C 语言) - 混合汇编语言和 C 语言 - 机器码 MPLAB IDE 在单个开发范例中支持使用多种调试工 具,包括从成本效益高的模拟器到低成本的在线调试 器,再到全功能的仿真器。这样缩短了用户升级到更加 灵活而功能更强大的工具时的学习时间。 2008 Microchip Technology Inc. DS41291E_CN 第 241 页 PIC16F883/884/886/887 16.2 MPASM 汇编器 MPASM 汇编器是全功能通用宏汇编器,适用于所有的 PIC MCU。 MPASM 汇编器可生成用于 MPLINK 目标链接器的可重 定位目标文件、Intel® 标准 HEX 文件、详细描述存储器 使用状况和符号参考的 MAP 文件、包含源代码行及生 成机器码的绝对 LST 文件以及用于调试的 COFF 文件。 MPASM 汇编器具有如下特征: • • • • 集成在 MPLAB IDE 项目中 用户定义的宏可简化汇编代码 对多用途源文件进行条件汇编 允许完全控制汇编过程的指令 16.3 MPLAB C18 和 MPLAB C30 C 编译器 MPLAB C18 和 MPLAB C30 代码开发系统是完全的 ANSI C 编译器,分别适用于 Microchip 的 PIC18 和 PIC24 系列单片机及 dsPIC30F 和 dsPIC33 系列数字信 号控制器。这些编译器可提供其他编译器并不具备的强 大的集成功能和出众的代码优化能力,且使用方便。 为便于源代码调试,编译器提供了针对 MPLAB IDE 调 试器的优化符号信息。 16.4 MPLINK 目标链接器 / MPLIB 目标库管理器 MPLINK 目标链接器包含了由 MPASM 汇编器、MPLAB C18 C 编译器产生的可重定位目标。通过使用链接器脚 本中的指令,它还可链接预编译库中的可重定位目标。 16.5 MPLAB ASM30 汇编器、 链接器和库管理器 MPLAB ASM30 汇编器为 dsPIC30F 器件提供转换自符 号汇编语言的可重定位机器码。 MPLAB C30 C 编译器 使用该汇编器生成目标文件。汇编器产生可重定位目标 文件之后,可将这些目标文件存档,或与其他可重定位 目标文件和存档链接以生成可执行文件。该汇编器有如 下显著特征: • • • • • • 支持整个 dsPIC30F 指令集 支持定点数据和浮点数据 命令行界面 丰富的指令集 灵活的宏语言 MPLAB IDE 兼容性 16.6 MPLAB SIM 软件模拟器 MPLAB SIM软件模拟器在指令级对PIC MCU和dsPIC® DSC 进行模拟,使得用户可以在 PC 主机的环境下进行 代码开发。对于任何给定的指令,用户均可对数据区进 行检查或修改,并通过各种触发机制来产生激励。可以 将各寄存器的情况记录在文件中,以便进行进一步地运 行时分析。跟踪缓冲器和逻辑分析器的显示使模拟器还 能记录和跟踪程序的执行、 I/O 的动作、大部分的外设 及内部寄存器的状况。 MPLAB SIM 软件模拟器完全支持使用 MPLAB C18 和 MPLAB C30 C 编译器以及MPASM和MAPLAB ASM30 汇编器的符号调试。该软件模拟器可用于在硬件实验室 环境外灵活地开发和调试代码,是一款完美且经济的软 件开发工具。 MPLIB目标库管理器管理预编译代码库文件的创建和修 改。当从源文件调用库中的一段子程序时,只有包含此 子程序的模块被链接到应用程序。这样可使大型库在许 多不同应用中被高效地利用。 目标链接器 / 库管理器具有如下特征: • 高效地连接单个的库而不是许多小文件 • 通过将相关的模块组合在一起来增强代码的可维护 性 • 只要列出、替换、删除和抽取模块,便可灵活地创 建库 DS41291E_CN 第 242 页 2008 Microchip Technology Inc. PIC16F883/884/886/887 16.7 MPLAB ICE 2000 高性能在线仿真器 MPLAB ICE 2000 在线仿真器旨在为产品开发工程师提 供一整套用于 PIC 单片机的设计工具。 MPLAB ICE 2000 在线仿真器的软件控制由 MPLAB 集成开发环境平 台提供,它允许在单一环境下进行编辑、编译、下载以 及源代码调试。 MPLAB ICE 2000 是全功能仿真器系统,它具有增强的 跟踪、触发和数据监控功能。处理器模块可插拔,使系 统可轻松进行重新配置以适应各种不同处理器的仿真需 要。MPLAB ICE 2000 在线仿真器的架构允许对其进行 扩展以支持新的 PIC 单片机。 MPLAB ICE 2000 在线仿真器系统设计为一款实时仿真 系统,该仿真系统具备通常只有昂贵的开发工具中才有 的高级功能。选择 PC 平台和 Microsoft® Windows® 32 位操作系统可使这些功能在一个简单而统一的应用中得 到很好的利用。 16.8 MPLAB REAL ICE 在线仿真器系统 MPLAB REAL ICE在线仿真器系统是Microchip针对其闪 存 DSC 和 MCU 器件而推出的新一代高速仿真器。结合 MPLAB 集成开发环境(IDE)所具有的易于使用且功能 强大的图形用户界面,该仿真器可对 PIC® 闪存 MCU 和 dsPIC® DSC进行调试和编程。IDE是随每个工具包一起 提供的。 MPLAB REAL ICE 探针通过高速 USB 2.0 接口与设计工 程师的 PC 相连,并利用与常用 MPLAB ICD 2 系统兼容 的连接器 (RJ11)或新型抗噪声、高速低压差分信号 (LVDS)互连电缆 (CAT5)与目标板相连。 16.9 MPLAB ICD 2 在线调试器 Microchip 的在线调试器 MPLAB ICD 2 是一款功能强大 而成本低廉的运行时开发工具,通过 RS-232 或高速 USB 接口与 PC 主机相连。该工具基于闪存 PIC MCU, 可用于开发本系列及其他 PIC MCU 和 dsPIC DSC。 MPLAB ICD 2使用了闪存器件中内建的在线调试功能。 该功能结合 Microchip 的在线串行编程(In-Circuit Serial ProgrammingTM, ICSPTM)协议,可在 MPLAB 集成开 发环境的图形用户界面上提供成本效益很高的在线闪存 调试。这使设计人员可通过设置断点、单步运行以及对 变量、CPU 状态以及外设寄存器进行监视的方法实现源 代码的开发和调试。其全速运行特性可对硬件和应用进 行实时测试。 MPLAB ICD 2 还可用作某些 PIC 器件的 开发编程器。 16.10 MPLAB PM3 器件编程器 MPLAB PM3 器件编程器是一款通用的、符合 CE 规范 的器件编程器,其可编程电压设置在 VDDMIN 和 VDDMAX 之间时可靠性最高。它有一个用来显示菜单和错误信息 的大 LCD 显示器(128 x 64),以及一个支持各种封装 类型的可拆卸模块化插槽装置。编程器标准配置中带有 一根 ICSPTM 电缆。在单机模式下, MPLAB PM3 器件 编程器不必与 PC 相连即可对 PIC 器件进行读取、验证 和编程。在该模式下它还可设置代码保护。 MPLAB PM3 通过 RS-232 或 USB 电缆连接到 PC 主机上。 MPLAB PM3 具备高速通信能力以及优化算法,可对存 储器很大的器件进行快速编程,它还采用 SD/MMC 卡 用作文件存储及数据安全应用。 可通过 MPLAB IDE 下载将来版本的固件,对 MPLAB REAL ICE 进行现场升级。在即将推出的 MPLAB IDE 版 本中,会支持许多新器件,还将增加一些新特性,如软 件断点和汇编代码跟踪等。在同类仿真器中, MPLAB REAL ICE 的优势十分明显:低成本、高速仿真、实时变 量监视、跟踪分析、复杂断点、耐用的探针接口及较长 (长达 3 米)的互连电缆。 2008 Microchip Technology Inc. DS41291E_CN 第 243 页 PIC16F883/884/886/887 16.11 PICSTART Plus 开发编程器 16.13 演示、开发和评估板 PICSTART Plus开发编程器是一款易于使用而成本低廉 的原型编程器。它通过 COM (RS-232)端口与 PC 相 连。 MPLAB 集成开发环境软件使得该编程器的使用简 便、高效。PICSTART Plus 开发编程器支持采用 DIP 封 装的大部分 PIC 器件,其引脚数最多可达 40 个。引脚 数更多的器件,如 PIC16C92X 和 PIC17C76X,可通过 连接一个转接插槽来获得支持。PICSTART Plus 开发编 程器符合 CE 规范。 有许多演示、开发和评估板可用于各种 PIC MCU 和 dsPIC DSC,实现对全功能系统的快速应用开发。大多 数的演示、开发和评估板都有实验布线区,供用户添加 定制电路;还有应用固件和源代码,用于测试和修改。 16.12 PICkit 2 开发编程器 PICkit™ 2 开发编程器是一个低成本编程器;对于某些 选定闪存器件,它也是一个调试器,通过其易于使用的 接口可对众多 Microchip 的低档、中档和 PIC18F 系列 闪存单片机进行编程。 PICkit 2 入门工具包中包含一个 有实验布线区的开发板、十二堂系列课程、软件和 HITECH 的 PICC™ Lite C 编译器,有助于用户快速掌握 PIC® 单片机的使用。这一工具包为使用 Microchip 功能 强大的中档闪存系列单片机进行编程、评估和应用开 发,提供了所需的一切。 DS41291E_CN 第 244 页 这些板支持多种功能部件,包括 LED、温度传感器、开 关、扬声器、 RS-232 接口、 LCD 显示器、电位计和附 加 EEPROM 存储器。 演示和开发板可用于教学环境,在实验布线区设计定制 电路,从而掌握各种单片机应用。 除了 PICDEM™ 和 dsPICDEM™ 演示 / 开发板系列电路 外, Microchip 还有一系列评估工具包和演示软件, 适 用于模拟滤波器设计、 KEELOQ® 数据安全产品 IC、 CAN、IrDA®、PowerSmart 电池管理、SEEVAL® 评估 系统、 Σ−∆ ADC、流速传感器,等等。 有 关 演 示、开 发 和 评 估 工 具 包 的 完 整 列 表,请 查 阅 Microchip 公司网页 (www.microchip.com)。 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 17.0 电气特性 绝对最大值 (†) 偏置时的环境温度 .............................................................................................................................-40°C 至 +125°C 储存温度........................................................................................................................................... -65°C 至 +150°C VDD 相对于 VSS 的电压 ........................................................................................................................ -0.3V 至 +6.5V MCLR 相对于 VSS 的电压 .................................................................................................................. -0.3V 至 +13.5V 所有其他引脚相对于 VSS 的电压............................................................................................... -0.3V 至 (VDD + 0.3V) 总功耗 (1) ........................................................................................................................................................ 800 mW VSS 引脚的最大输出电流.................................................................................................................................. 95 mA VDD 引脚的最大输入电流 .................................................................................................................................. 95 mA 输入钳位电流 IIK (VI < 0 或 VI > VDD).......................................................................................................................±20 mA 输出钳位电流 IOK (VO < 0 或 VO > VDD)..................................................................................................................±20 mA 任一 I/O 引脚的最大输出灌电流 ........................................................................................................................ 25 mA 任一 I/O 引脚的最大输出拉电流 ........................................................................................................................ 25 mA 所有端口 (组合)的最大灌电流 (2)................................................................................................................... 90 mA 所有端口 (组合)的最大拉电流 (2)................................................................................................................... 90 mA 注 1: 功耗按如下公式计算:PDIS = VDD x {IDD - ∑ IOH} + ∑ {(VDD - VOH) x IOH} + ∑(VOl x IOL) 2: PIC16F886/PIC16F887 器件上没有 PORTD 和 PORTE。 † 注意:如果器件的工作条件超过 “绝对最大额定值”,就可能会对器件造成永久性损坏。上述值仅为运行条件极大 值,我们建议不要使器件在该规范规定的范围以外运行。器件长时间工作在最大值条件下,其稳定性会受到影响。 2008 Microchip Technology Inc. DS41291E_CN 第 245 页 PIC16F882/883/884/886/887 PIC16F883/884/886/887 电压—频率关系图 (-40°C ≤ TA ≤ +125°C) 图 17-1: 5.5 5.0 VDD(V) 4.5 4.0 3.5 3.0 2.5 2.0 8 0 10 20 频率(MHz) 注 1: 阴影区域表示允许的电压和频率组合。 图 17-2: HFINTOSC 频率的精确度与器件 VDD 和温度之间的关系 125 ± 5% 温度(°C) 85 ± 2% 60 ± 1% 25 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) DS41291E_CN 第 246 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 17.1 直流特性:PIC16F883/884/886/887-I (工业级) PIC16F883/884/886/887-E (扩展级) 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) -40°C ≤ TA ≤ +125°C (扩展级) 直流特性 参数 编号 符号 特性 最小值 典型值 † 最大值 单位 条件 VDD 供电电压 2.0 2.0 3.0 4.5 — — — — 5.5 5.5 5.5 5.5 V V V V FOSC ≤ 8 MHz:HFINTOSC 和 EC FOSC ≤ 4 MHz FOSC ≤ 10 MHz FOSC ≤ 20 MHz D002* VDR RAM 数据保持电压 (1) 1.5 — — V 器件处于休眠模式 D003 VPOR 确保能够产生内部上电 复位信号的 VDD 起始电 压 — VSS — V 详细信息请参见第 14.2.1 节 “上 电复位 (POR)”。 D004* SVDD 确保能够产生内部上电 复位信号的 VDD 上升速 率 0.05 — — D001 D001C D001D * V/ms 详细信息请参见第 14.2.1 节 “上 电复位 (POR)”。 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均在 5V、 25°C 条件下的值。这些参数仅供设计参考,未经测 试。 注 1: 这是在不丢失 RAM 数据的前提下 VDD 在休眠模式下的最小值。 2008 Microchip Technology Inc. DS41291E_CN 第 247 页 PIC16F882/883/884/886/887 17.2 直流特性:PIC16F883/884/886/887-I (工业级) PIC16F883/884/886/887-E (扩展级) 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) -40°C ≤ TA ≤ +125°C (扩展级) 直流特性 参数 编号 器件特性 D010 供电电流 (IDD) D011* D012 D013* D014 D015 D016* D017 D018 D019 * 注 最小值 (1, 2) 典型值 † 最大值 条件 单位 VDD — 13 19 µA 2.0 — 22 30 µA 3.0 — 33 60 µA 5.0 — 180 250 µA 2.0 — 290 400 µA 3.0 — 490 650 µA 5.0 — 280 380 µA 2.0 — 480 670 µA 3.0 — 0.9 1.4 mA 5.0 — 170 295 µA 2.0 — 280 480 µA 3.0 — 470 690 µA 5.0 — 290 450 µA 2.0 — 490 720 µA 3.0 — 0.85 1.3 mA 5.0 — 8 20 µA 2.0 — 16 40 µA 3.0 — 31 65 µA 5.0 — 416 520 µA 2.0 — 640 840 µA 3.0 — 1.13 1.6 mA 5.0 — 0.65 0.9 mA 2.0 — 1.01 1.3 mA 3.0 — 1.86 2.3 mA 5.0 — 340 580 µA 2.0 — 550 900 µA 3.0 — 0.92 1.4 mA 5.0 — 3.8 4.7 mA 4.5 — 4.0 4.8 mA 5.0 注 FOSC = 32 kHz LP 振荡模式 FOSC = 1 MHz XT 振荡模式 FOSC = 4 MHz XT 振荡模式 FOSC = 1 MHz EC 振荡模式 FOSC = 4 MHz EC 振荡模式 FOSC = 31 kHz LFINTOSC 模式 FOSC = 4 MHz HFINTOSC 模式 FOSC = 8 MHz HFINTOSC 模式 FOSC = 4 MHz EXTRC 模式 (3) FOSC = 20 MHz HS 振荡器模式 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均在 5V、 25°C 条件下的值。这些参数仅供设计参考,未经测 试。 1: 在正常工作模式下,所有 IDD 测量的测试条件为:OSC1 = 外部方波,满幅;所有 I/O 引脚均为三态,拉至 VDD ; MCLR = VDD ;禁止 WDT。 2: 供电电流主要由工作电压和频率决定。其他因素,如 I/O 引脚负载和开关频率、振荡器类型、内部代码执行 模式和温度也会影响电流消耗。 3: 配置为 RC 振荡模式时,该电流不包括流经 REXT 的电流。流经该电阻的电流可由公式 IR = VDD/2REXT (mA)来 估算,其中 REXT 的单位是 kΩ。 DS41291E_CN 第 248 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 17.3 直流特性:PIC16F883/884/886/887-I (工业级) 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 直流特性 参数 编号 D020 最小值 典型值 † 最大值 器件特性 基本掉电电流 (IPD) D021 (2) 条件 单位 VDD — 0.05 1.2 µA 2.0 — 0.15 1.5 µA 3.0 — 0.35 1.8 µA 5.0 150 500 nA 3.0 -40°C ≤ TA ≤ +25°C — 1.0 2.2 µA 2.0 WDT 电流 (1) — 2.0 4.0 µA 3.0 — 3.0 7.0 µA 5.0 — 42 60 µA 3.0 — 85 122 µA 5.0 D023 — 32 45 µA 2.0 D025* — 60 78 µA 3.0 — 120 160 µA 5.0 — 30 36 µA 2.0 — 45 55 µA 3.0 — 75 95 µA 5.0 — 39 47 µA 2.0 — 59 72 µA 3.0 — 98 124 µA 5.0 — 2.0 5.0 µA 2.0 — 2.5 5.5 µA 3.0 — 3.0 7.0 µA 5.0 D027 — 0.30 1.6 µA 3.0 — 0.36 1.9 µA 5.0 D028 — 90 125 µA 3.0 — 125 162 µA 5.0 D026 禁止 WDT、 BOR、比较器、 VREF 和 T1OSC — D022 D024 注 BOR 电流 (1) 比较器电流 (1)。同时使能两个比 较器 CVREF 电流 (1) (高范围) CVREF 电流 (1) (低范围) T1OSC 电流 (1), 32.768 kHz A/D 电流 (1),不在进行转换 VP6 参考电流 * 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均在 5V、 25°C 条件下的值。这些参数仅供设计参考,未经测 试。 注 1: 外设电流是基本 IDD 或 IPD 电流与使能该外设时额外消耗的电流的和。外设的 ∆ 电流可通过将该参数的值 减去基本 IDD 或 IPD 电流确定。当计算总电流消耗时应该使用最大值。 2: 振荡器类型不决定休眠模式下的掉电电流。掉电电流是在器件休眠时,所有 I/O 引脚处于高阻态并且连接 到 VDD 时测得的。 2008 Microchip Technology Inc. DS41291E_CN 第 249 页 PIC16F882/883/884/886/887 17.4 直流特性:PIC16F883/884/886/887-E (扩展级) 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C (扩展级) 直流特性 参数 编号 器件特性 D020E 基本掉电电流 (IPD) (2) D021E D022E D023E D024E D025E* D026E D027E D028E 最小值 典型值 † 最大值 条件 单位 VDD — 0.05 9 µA 2.0 — 0.15 11 µA 3.0 — 0.35 15 µA 5.0 — 1 28 µA 2.0 — 2 30 µA 3.0 — 3 35 µA 5.0 — 42 65 µA 3.0 — 85 127 µA 5.0 — 32 45 µA 2.0 — 60 78 µA 3.0 — 120 160 µA 5.0 — 30 70 µA 2.0 — 45 90 µA 3.0 — 75 120 µA 5.0 — 39 91 µA 2.0 — 59 117 µA 3.0 — 98 156 µA 5.0 — 3.5 18 µA 2.0 — 4.0 21 µA 3.0 — 5.0 24 µA 5.0 — 0.30 12 µA 3.0 — 0.36 16 µA 5.0 — 90 130 µA 3.0 — 125 170 µA 5.0 注 禁止 WDT、 BOR、比较器、 VREF 和 T1OSC WDT 电流 (1) BOR 电流 (1) 比较器电流 (1)。同时使能两个比 较器 CVREF 电流 (1) (高范围) CVREF 电流 (1) (低范围) T1OSC 电流 (1), 32.768 kHz A/D 电流 (1),不在进行转换 VP6 参考电流 * 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均在 5V、 25°C 条件下的值。这些参数仅供设计参考,未经测 试。 注 1: 外设电流是基本 IDD 或 IPD 电流与使能该外设时额外消耗的电流的和。外设的 ∆ 电流可通过将该参数的值 减去基本 IDD 或 IPD 电流确定。当计算总电流消耗时应该使用最大值。 2: 振荡器类型不决定休眠模式下的掉电电流。掉电电流是在器件休眠时,所有 I/O 引脚处于高阻态并且连接 到 VDD 时测得的。 DS41291E_CN 第 250 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 17.5 PIC16F883/884/886/887-I (工业级) PIC16F883/884/886/887-E (扩展级) 直流特性: 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) -40°C ≤ TA ≤ +125°C (扩展级) 直流特性 参数 编号 符号 VIL 特性 最小值 典型值 † 最大值 单位 条件 输入低电压 I/O 端口: D030 带 TTL 缓冲器 D030A Vss — 0.8 V 4.5V ≤ VDD ≤ 5.5V Vss — 0.15 VDD V 2.0V ≤ VDD ≤ 4.5V 2.0V ≤ VDD ≤ 5.5V Vss — 0.2 VDD V D032 MCLR 或 OSC1(RC 模式下)(1) VSS — 0.2 VDD V D033 OSC1 (XT 和 LP 模式下) VSS — 0.3 V D033A OSC1 (HS 模式下) VSS — 0.3 VDD V 2.0 — VDD V 4.5V ≤ VDD ≤ 5.5V 0.25 VDD + 0.8 — VDD V 2.0V ≤ VDD ≤ 4.5V 0.8 VDD — VDD V 2.0V ≤ VDD ≤ 5.5V 0.8 VDD — VDD V D031 带施密特触发器缓冲器 VIH 输入高电压 I/O 端口: D040 带 TTL 缓冲器 D040A D041 带施密特触发器缓冲器 — D042 MCLR D043 OSC1 (XT 和 LP 模式下) 1.6 — VDD V D043A OSC1 (HS 模式下) 0.7 VDD — VDD V OSC1 (RC 模式下) 0.9 VDD — VDD V (注 1) — ± 0.1 ±1 µA VSS ≤ VPIN ≤ VDD,引脚处于 高阻态 D043B IIL 输入泄漏电流 (2) D060 I/O 端口 D061 MCLR(3) — ± 0.1 ±5 µA VSS ≤ VPIN ≤ VDD D063 OSC1 — ± 0.1 ±5 µA VSS ≤ VPIN ≤ VDD, XT、 HS 和 LP 振荡器配置 IPUR PORTB 弱上拉电流 50 250 400 µA VDD = 5.0V, VPIN = VSS VOL 输出低电压 (5) — — 0.6 V IOL = 8.5 mA, VDD = 4.5V (工业级) VDD – 0.7 — — V IOH = -3.0 mA, VDD = 4.5V (工业级) D070* D080 I/O 端口 VOH D090 注 输出高电压 (5) I/O 端口 * † 1: 2: 3: 这些参数仅为特征值,未经测试。 除非另外说明,否则 “典型值”栏中的数据均在 5V、 25°C 条件下的值。这些参数仅供设计参考,未经测试。 在 RC 振荡器配置中, OSC1/CLKIN 引脚为施密特触发器输入。在 RC 模式中建议不要使用外部时钟。 负电流定义为自引脚输出的电流。 MCLR 引脚上的泄漏电流主要取决于施加的电平。规定电平为正常工作条件下的电平。在不同的输入电压下可测得更高 的泄漏电流。 4: 更多信息请参见第 10.3.1 节 “使用数据 EEPROM”。 5: 包括 CLKOUT 模式下的 OSC2 引脚。 2008 Microchip Technology Inc. DS41291E_CN 第 251 页 PIC16F882/883/884/886/887 17.5 PIC16F883/884/886/887-I (工业级) PIC16F883/884/886/887-E (扩展级)(续) 直流特性: 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) -40°C ≤ TA ≤ +125°C (扩展级) 直流特性 参数 编号 符号 特性 最小值 典型值 † 最大值 单位 — 200 — nA 请参见应用笔记 AN879 “Using the Microchip Ultra Low-Power Wake-up Module” (DS00879) 使用外部时钟驱动 OSC1 并 处于 XT、 HS 和 LP 模式 条件 D100 IULP 超低功耗唤醒电流 D101* COSC2 OSC2 引脚 — — 15 pF 所有 I/O 引脚 — — 50 pF 100K 1M — E/W -40°C ≤ TA ≤ +85°C +85°C ≤ TA ≤ +125°C 输出引脚上的容性负载规范 D101A* CIO 数据 EEPROM 存储器 D120 ED 字节耐用性 D120A ED 字节耐用性 10K 100K — E/W D121 VDRW 用于读写操作的 VDD VMIN — 5.5 V ms 使用 EECON1 用于读 / 写 VMIN = 最小工作电压 D122 TDEW 擦 / 写周期时间 — 5 6 D123 TRETD 数据保存时间 40 — — 年 D124 TREF 更新前的总擦 / 写周期数 (4) 1M 10M — E/W -40°C ≤ TA ≤ +85°C 假设没有违反其他规范 闪存程序存储器 EP 单元耐用性 10K 100K — E/W -40°C ≤ TA ≤ +85°C D130A ED 单元耐用性 1K 10K — E/W +85°C ≤ TA ≤ +125°C D131 VPR 用于读操作的 VDD VMIN — 5.5 V VMIN = 最小工作电压 D132 VPEW 用于行擦 / 写操作的 VDD 用于批量擦除操作的 VDD VMIN 4.5 — — 5.5 5.5 V V D133 TPEW 擦 / 写周期时间 — 2 2.5 ms D134 TRETD 数据保存时间 40 — — 年 D130 注 假设没有违反其他规 * † 1: 2: 3: 这些参数仅为特征值,未经测试。 除非另外说明,否则 “典型值”栏中的数据均在 5V、 25°C 条件下的值。这些参数仅供设计参考,未经测试。 在 RC 振荡器配置中, OSC1/CLKIN 引脚为施密特触发器输入。在 RC 模式中建议不要使用外部时钟。 负电流定义为自引脚输出的电流。 MCLR 引脚上的泄漏电流主要取决于施加的电平。规定电平为正常工作条件下的电平。在不同的输入电压下可测得更高 的泄漏电流。 4: 更多信息请参见第 10.3.1 节 “使用数据 EEPROM”。 5: 包括 CLKOUT 模式下的 OSC2 引脚。 DS41291E_CN 第 252 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 17.6 散热考虑 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数编号 符号 特性 典型值 单位 条件 TH01 θJA 结点与环境之间的热阻 47.2 24.4 45.8 60.2 80.2 89.4 29 °C/W °C/W °C/W °C/W °C/W °C/W °C/W 40 引脚 PDIP 封装 44 引脚 QFN 封装 44 引脚 TQFP 封装 28 引脚 PDIP 封装 28 引脚 SOIC 封装 28 引脚 SSOP 封装 28 引脚 QFN 封装 TH02 θJC 结点与封装外壳之间的热阻 TH03 TH04 TH05 结温 TJ PD 功耗 PINTERNAL 内部功耗 24.7 20.0 14.5 29 23.8 23.9 20.0 150 — — °C/W °C/W °C/W °C/W °C/W °C/W °C/W °C W W TH06 TH07 PI/O PDER — — W W 40 引脚 PDIP 封装 44 引脚 QFN 封装 44 引脚 TQFP 封装 28 引脚 PDIP 封装 28 引脚 SOIC 封装 28 引脚 SSOP 封装 28 引脚 QFN 封装 用于计算降低了的额定功率 PD = PINTERNAL + PI/O PINTERNAL = IDD x VDD (注 1) PI/O = Σ (IOL * VOL) + Σ (IOH * (VDD - VOH)) PDER = (TJ - TA)/θJA (注 2 和 3) 注 I/O 功耗 降低了的额定功率 1: IDD 为单独运行芯片而不驱动输出引脚上的任何负载的电流。 2: TA = 环境温度。 3: 所允许的最大功耗是绝对最大总功耗或降低了的额定功率 (PDER)中较小的值。 2008 Microchip Technology Inc. DS41291E_CN 第 253 页 PIC16F882/883/884/886/887 17.7 时序参数符号 可根据以下任一格式来创建时序参数符号: 1. TppS2ppS 2. TppS T F 频率 小写字母 (pp)及其含意: pp cc CCP1 ck CLKOUT cs CS T 时间 osc rd OSC1 RD RD 或 WR SCK SS T0CKI dt 数据输入 rw sc ss t0 io mc I/O 端口 MCLR t1 T1CKI wr WR di do SDI SDO 大写字母及其含意: S F 下降 P 周期 H 高 R 上升 I 无效 (高阻态) V 有效 L 低 Z 高阻态 图 17-3: 负载条件 负载条件 引脚 CL VSS 图注: CL= 50 pF适用于所有引脚 15 pF 适用于 OSC2 输出 DS41291E_CN 第 254 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 17.8 交流特性:PIC16F883/884/886/887 (工业级和扩展级) 图 17-4: 时钟时序 Q4 Q1 Q2 Q3 Q4 Q1 OSC1/CLKIN OS02 OS04 OS04 OS03 OSC2/CLKOUT (LP、XT 和 HS 模式) OSC2/CLKOUT (CLKOUT 模式) 表 17-1: 时钟振荡器时序要求 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 OS01 符号 FOSC 特性 外部 CLKIN 频率 (1) TOSC 单位 条件 外部 CLKIN 周期 (1) — — — — 32.768 — — — — 37 4 20 20 — 4 20 4 • kHz MHz MHz MHz kHz MHz MHz MHz µs 振荡周期 (1) 250 50 50 — — — — 30.5 • • • — ns ns ns µs 250 — 10,000 ns XT 振荡模式 50 — 1,000 ns HS 振荡模式 250 — — ns 200 2 100 20 0 0 0 TCY — — — — — — DC — — — • • • ns µs ns ns ns ns ns RC 振荡模式 TCY = 4/FOSC LP 振荡模式 XT 振荡模式 HS 振荡模式 LP 振荡器 XT 振荡器 HS 振荡器 指令周期 (1) TosH, 外部 CLKIN 高电平, TosL 外部 CLKIN 低电平 OS03 OS04* TCY OS05* TosR, 外部 CLKIN 上升, 外部 CLKIN 下降 TosF 注 最大值 DC DC DC DC — 0.1 1 DC 27 振荡频率 (1) OS02 最小值 典型值 † LP 振荡模式 XT 振荡模式 HS 振荡模式 EC 振荡模式 LP 振荡模式 XT 振荡模式 HS 振荡模式 RC 振荡模式 LP 振荡模式 XT 振荡模式 HS 振荡模式 EC 振荡模式 LP 振荡模式 * 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均在 5V、 25°C 条件下的值。这些参数仅供设计参考,未经测试。 1: 指令周期时间 (TCY)等于输入振荡器时基周期的 4 倍。所有规范值均基于器件在标准工作条件下执行代码所对 应的特定振荡器类型的特征数据。超过这些规范值可能导致振荡器运行不稳定和 / 或电流消耗超出预期。所有器 件在测试 “最小值”时都在 OSC1 引脚连接了外部时钟。当使用了外部时钟输入时,所有器件的 “最大值”周 期时限为 “DC”(没有时钟)。 2008 Microchip Technology Inc. DS41291E_CN 第 255 页 PIC16F882/883/884/886/887 表 17-2: 振荡器参数 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 符号 OS06 TWARM 运行时的内部振荡器切换 (3) — — — 2 OS07 TSC 故障保护采样时钟周期 (1) — — 21 — OS08 HFOSC 内部校准的 HFINTOSC 频 率 (2) ±1% 7.92 8.0 8.08 MHz VDD = 3.5V, 25°C ±2% 7.84 8.0 8.16 MHz 2.5V ≤ VDD ≤ 5.5V, 0°C ≤ TA ≤ +85°C ±5% 7.60 8.0 8.40 MHz 2.0V ≤ VDD ≤ 5.5V, -40°C ≤ TA ≤ +85°C (工业级) -40°C ≤ TA ≤ +125°C (扩展级) OS09* LFOSC 特性 频率公差 最小值 典型值 † 最大值 单位 条件 TOSC 最慢时钟 ms LFINTOSC/64 内部校准的 LFINTOSC 频率 — 15 31 45 kHz OS10* TIOSCST HFINTOSC 振荡器从休眠模 式唤醒的起振时间 — 5.5 12 24 µs VDD = 2.0V, -40°C 至 +85°C — 3.5 7 14 µs VDD = 3.0V, -40°C 至 +85°C — 3 6 11 µs VDD = 5.0V, -40°C 至 +85°C 注 * 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均在 5V、 25°C 条件下的值。这些参数仅供设计参考,未经测试。 1: 指令周期时间 (TCY)等于输入振荡器时基周期的 4 倍。所有规范值均基于器件在标准工作条件下执行代码所对 应的特定振荡器类型的特征数据。超过这些规范值可能导致振荡器运行不稳定和 / 或电流消耗超出预期。所有器 件在测试 “最小值”时都在 OSC1 引脚连接了外部时钟。当使用了外部时钟输入时,所有器件的 “最大值”周 期时限为 “DC”(没有时钟)。 2: 要确保参数值位于这些振荡频率公差范围内,必须在 VDD 和 VSS 与器件之间在尽可能靠近器件的地方连接耦合 电容。建议使用值为 0.1 µF 和 0.01 µF 的并联电容。 3: 设计值。 DS41291E_CN 第 256 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 17-5: CLKOUT 和 I/O 时序 周期 写 取 读 执行 Q4 Q1 Q2 Q3 FOSC OS12 OS11 OS20 OS21 CLKOUT OS19 OS18 OS16 OS13 OS17 I/O 引脚 (输入) OS14 OS15 I/O 引脚 (输出) 新值 旧值 OS18,OS19 表 17-3: CLKOUT 和 I/O 时序参数 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 OS11 OS12 符号 特性 最小值 典型值 † 最大值 单位 条件 TOSH2CKL FOSC↑ 到 CLKOUT↓ 的时间 (1) — — 70 ns VDD = 5.0V TOSH2CKH 的时间 (1) — — 72 ns VDD = 5.0V FOSC↑ 到 CLKOUT↑ 到端口输出有效的时间 (1) OS13 TCKL2IOV CLKOUT↓ OS14 TIOV2CKH 在出现 CLKOUT↑ 之前端口输入有效 的时间 (1) — — 20 ns TOSC + 200 ns — — ns OS15* TOSH2IOV FOSC↑ (Q1 周期)至端口输出有效的 时间 — 50 70 ns VDD = 5.0V OS16 TOSH2IOI FOSC↑ (Q2 周期)至端口输入无效的 时间 (I/O 输入保持时间) 50 — — ns VDD = 5.0V OS17 TIOV2OSH 端口输入有效至出现 FOSC↑ (Q2 周 期)的时间 (I/O 输入建立时间) 20 — — ns OS18 TIOR 端口输出上升时间 (2) — — 15 40 72 32 ns VDD = 2.0V VDD = 5.0V OS19 TIOF 端口输出下降时间 (2) — — 28 15 55 30 ns VDD = 2.0V VDD = 5.0V OS20* TINP INT 引脚高电平或低电平时间 25 — — ns OS21* TRAP PORTA 引脚电平变化中断信号的新输 入电平时间 TCY — — ns * 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均为 5V、 25°C 条件下的值。 注 1: 测量是在 RC 模式下进行的,其中 CLKO 输出为 4 x TOSC。 2: 包含 CLKOUT 模式下的 OSC2。 2008 Microchip Technology Inc. DS41291E_CN 第 257 页 PIC16F882/883/884/886/887 图 17-6: 复位、看门狗定时器、振荡器起振定时器和上电延时定时器时序 VDD MCLR 30 内部 POR 33 PWRT 超时 32 OSC 起振时间 内部复位 (1) 看门狗定时器 复位 (1) 31 34 34 I/O 引脚 1: 低电平有效。 注 图 17-7: 欠压复位时序和特性 VDD VBOR + VHYST VBOR (器件不处于欠压复位状态) (器件处于欠压复位状态) 37 复位 (由于 BOR) * 33* 只有当配置字寄存器 1 中的 PWRTE 位被编程为 0 时才使用 64 ms 延时。 DS41291E_CN 第 258 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 17-4: 复位、看门狗定时器、振荡器起振定时器、上电延时定时器和欠压复位参数 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 符号 特性 最小值 典型值 † 最大值 单位 条件 30 TMCL MCLR 脉冲宽度 (低电平) 2 5 — — — — µs µs VDD = 5V, -40°C 至 +85°C VDD = 5V 31 TWDT 看门狗定时器超时周期 (无预分频器) 10 10 16 16 29 31 ms ms VDD = 5V, -40°C 至 +85°C VDD = 5V 32 TOST 振荡器起振定时器周期 (1, 2) — 1024 — 33* TPWRT 上电延时定时器周期 40 65 140 ms 34* TIOZ — — 2.0 µs 35 VBOR MCLR 低电平或看门狗定时器 复位引起的 I/O 高阻态时间 欠压复位电压 2.0 — 2.2 V BOR4V 位 = 0 (注 4) 3.6 4.0 4.4 V BOR4V 位= 1,-40°C 至 +85°C (注 4) 3.6 4.0 4.5 V BOR4V 位= 1,-40°C 至 +85°C (注 4) — 50 — mV 100 — — µs 36* VHYST 欠压复位迟滞 37* TBOR 欠压复位最小检测周期 TOSC (注 3) VDD ≤ VBOR * 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均为 5V、 25°C 条件下的值。这些参数仅供设计参考,未经测 试。 注 1: 指令周期时间 (TCY)等于输入振荡器时基周期的 4 倍。所有规范值均基于器件在标准工作条件下执行代 码所对应的特定振荡器类型的特征数据。超过这些规范值可能导致振荡器运行不稳定和 / 或电流消耗超出 预期。所有器件在测试 “最小值”时都在 OSC1 引脚连接了外部时钟。当使用了外部时钟输入时,所有器 件的 “最大值”周期时限为 “DC”(没有时钟)。 2: 设计值。 3: 较慢的时钟周期。 4: 要确保电压值不超出公差范围,必须在 VDD 和 VSS 与器件之间在尽可能靠近器件的地方连接去耦电容。建 议使用值为 0.1 µF 和 0.01 µF 的并联电容。 2008 Microchip Technology Inc. DS41291E_CN 第 259 页 PIC16F882/883/884/886/887 图 17-8: TIMER0 和 TIMER1 的外部时钟时序 T0CKI 40 41 42 T1CKI 45 46 49 47 TMR0 或 TMR1 表 17-5: TIMER0 和 TIMER1 的外部时钟要求 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 40* 符号 TT0H 最小值 典型值 † 最大值 单位 无预分频器 0.5 TCY + 20 — — ns 有预分频器 10 — — ns 无预分频器 0.5 TCY + 20 — — ns 特性 T0CKI 高电平脉冲宽度 41* TT0L T0CKI 低电平脉冲宽度 42* TT0P T0CKI 周期 45* TT1H T1CKI 高电 同步,无预分频器 平时间 同步,带有预 分频器 有预分频器 TT1L 46* — — ns — — ns 0.5 TCY + 20 — — ns 15 — — ns 异步 30 — — ns T1CKI 低电 同步,无预分频器 平时间 同步,带有预 分频器 0.5 TCY + 20 — — ns 15 — — ns 30 — — ns 取以下较大的值: 30 或 Tcy + 40 N — — ns 异步 47* TT1P T1CKI 输入 同步 周期 48 F T1 Timer1 振荡器输入频率范围 (将 T1OSCEN 位置 1,使能振荡器) 49* TCKEZTMR1 出现外部时钟边沿到定时器递增的延时 异步 * † 10 取以下较大的值: 20 或 TCY + 40 N 60 — — ns — 32.768 — kHz 2 TOSC — 7 TOSC — 条件 N = 预分频值 (2,4,...,256) N = 预分频值 (1,2,4,8) 定时器处于同步 工作模式 这些参数仅为特征值,未经测试。 除非另外说明,否则 “典型值”栏中的数据均为 5V、 25°C 条件下的值。这些参数仅供设计参考,未经测试。 DS41291E_CN 第 260 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 17-9: 捕捉 / 比较 /PWM 时序 (ECCP) CCP1 (捕捉模式) CC01 CC02 CC03 注: 表 17-6: 负载条件请参见图 17-3。 捕捉 / 比较 /PWM 要求 (ECCP) 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 符号 特性 最小值 典型 值† 最大 值 单位 0.5TCY + 20 — — ns CC01* TccL CCP1 输入低电平时间 无预分频器 有预分频器 20 — — ns CC02* TccH CCP1 输入高电平时间 无预分频器 0.5TCY + 20 — — ns 20 — — ns CC03* TccP CCP1 输入周期 3TCY + 40 N — — ns 有预分频器 * † 条件 N = 预分频值 (1、 4 或 16) 这些参数仅为特征值,未经测试。 除非另外说明,否则“典型值”栏中的数据均为 5V、25°C 条件下的值。这些参数仅供设计参考,未经测试。 2008 Microchip Technology Inc. DS41291E_CN 第 261 页 PIC16F882/883/884/886/887 表 17-7: 比较器规范 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 符号 特性 CM01 VOS 输入失调电压 CM02 VCM 输入共模电压 CM03* CMRR 共模抑制比 CM04* TRT 响应时间 最小值 典型值 † 最大值 单位 备注 — ±5.0 ±10 mV (VDD - 1.5)/2 0 — VDD - 1.5 V +55 — — dB 下降 — 150 600 ns 上升 — 200 1000 ns — — 10 µs CM05* TMC2COV 比较器模式改变到输出有效的时 间 (注 1) * 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均为 5.0V、 25°C 条件下的值。这些参数仅供设计参考,未经测 试。 注 1: 响应时间是在比较器一个输入端的电压从 (VDD - 1.5)/2 - 100 mV 变化到 (VDD - 1.5)/2 + 20 mV 时测得的。 表 17-8: 比较器参考电压 (CVREF)规范 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 符号 特性 最小值 典型值 † 最大值 单位 CV01* CLSB 量化台阶大小 (2) — — VDD/24 VDD/32 — — V V 低电压范围 (VRR = 1) 高电压范围 (VRR = 0) CV02* CACC 绝对准确度 — — — — ±1/2 ±1/2 LSb LSb 低电压范围 (VRR = 1) 高电压范围 (VRR = 0) CV03* CR 单位电阻值 (R) — 2k — Ω CV04* CST 稳定时间 (1) — — 10 µs 注 * 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均为 5.0V、 25°C 条件下的值。这些参数仅供设计参 考,未经测试。 1: 稳定时间是在 VRR = 1 且 VR<3:0> 从 0000 跳变到 1111 时测得的。 2: 更多信息请参见第 8.10 节 “比较器参考电压”。 表 17-9: 参考电压 (VR)规范 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C VR 参考电压规范 参数 编号 符号 特性 最小值 典型值 最大值 单位 VR01 VROUT VR 电压输出 0.5 0.6 0.7 V VR02* TSTABLE 稳定时间 — 10 100* µs * 备注 这些参数仅为特征值,未经测试。 DS41291E_CN 第 262 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 17-10: PIC16F883/884/886/887 A/D 转换器 (ADC)特性 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 符号 特性 最小值 典型值 † 最大值 单位 条件 AD01 NR 分辨率 — — 10 位 AD02 EIL 积分误差 — — ±1 LSb VREF = 5.12V AD03 EDL 微分误差 — — ±1 LSb 不丢失编码至 10 位 VREF = 5.12V AD04 EOFF 失调误差 0 +1.5 +3.0 LSb VREF = 5.12V AD07 EGN LSb VREF = 5.12V 位 增益误差 — — ±1 AD06 VREF AD06A 参考电压 (3) 2.2 2.7 — — VDD V AD07 VAIN 满量程范围 VSS — VREF V AD08 ZAIN 建议的模拟电压源阻抗 — — 10 kΩ VREF 输入电流 (3) 10 — 1000 µA 在 VAIN 采集期间。 根据 VHOLD 与 VAIN 的差值。 — — 50 µA 在 A/D 转换期间。 AD09* IREF 确保 1 LSb 精度的绝对最小值 * 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均为 5.0V、 25°C 条件下的值。这些参数仅供设计参考,未经测 试。 注 1: 2: 3: 4: 总绝对误差包括积分、微分、失调和增益误差。 A/D 转换结果不会因输入电压的递增而递减,并且不会丢失编码。 ADC VREF 来自选作参考输入引脚的 VREF 引脚或 VDD 引脚。 关闭 A/D 后,除泄漏电流外, A/D 不消耗任何其他电流。掉电电流规范包含 ADC 模块的所有泄漏电流。 2008 Microchip Technology Inc. DS41291E_CN 第 263 页 PIC16F882/883/884/886/887 表 17-11: PIC16F883/884/886/887 A/D 转换要求 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 符号 AD130* TAD 最小值 典型 值† 最大 值 1.6 — 9.0 µs 基于 TOSC, VREF ≥ 3.0V 3.0 — 9.0 µs 基于 TOSC, VREF 满量程 3.0 6.0 9.0 µs ADCS<1:0> = 11 (ADRC 模式) 当 VDD = 2.5V 时 1.6 4.0 6.0 µs 当 VDD = 5.0V 时 — 11 — TAD 将 GO/DONE 置 1 将新数据保存到 A/D 结果寄存器中 特性 A/D 时钟周期 A/D 内部 RC 振荡周期 AD131 TCNV 转换时间 (不包括采 集时间) (1) 11.5 — µs AD133* TAMP 放大器稳定时间 — — 5 µs AD134 TGO — TOSC/2 — — — TOSC/2 + TCY — — AD132* TACQ 采集是 Q4 至 A/D 时钟启动的 时间 单位 如果选择 RC 作为 A/D 时钟源,在 A/D 时钟开始前要加上一个 TCY 时间,用于 执行 SLEEP 指令。 * 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”栏中的数据均为 5.0V、 25°C 条件下的值。这些参数仅供设计参考,未经测 试。 注 1: 将在接下来的 TCY 周期读 ADRESH 和 ADRESL 寄存器。 2: 最小条件请参见第 9.3 节 “A/D 采集要求”。 DS41291E_CN 第 264 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 17-10: PIC16F883/884/886/887 A/D 转换时序 (正常模式) BSF ADCON0, GO AD134 1 TCY (TOSC/2(1)) AD131 Q4 AD130 A/D 时钟 9 A/D 数据 8 6 7 3 2 1 0 新数据 旧数据 ADRES 1 TCY ADIF GO 采样 DONE 停止采样 AD132 1: 如果选择 RC 作为 A/D 时钟源,在 A/D 时钟开始前要加上一个 TCY 时间,用于执行 SLEEP 指令。 注 图 17-11: PIC16F883/884/886/887 A/D 转换时序 (休眠模式) BSF ADCON0, GO AD134 (TOSC/2 + TCY(1)) 1 TCY AD131 Q4 AD130 A/D 时钟 9 A/D 数据 8 7 旧数据 ADRES GO 注 3 2 1 0 新数据 1 TCY ADIF 采样 6 DONE AD132 停止采样 1: 如果选择 RC 作为 A/D 时钟源,在 A/D 时钟开始前要加上一个 TCY 时间,用于执行 SLEEP 指令。 2008 Microchip Technology Inc. DS41291E_CN 第 265 页 PIC16F882/883/884/886/887 图 17-12: EUSART 同步发送 (主 / 从)时序 RC6/TX/CK 引脚 121 121 RC7/RX/DT 引酵 120 负载条件,请参见图 17-3。 注: 表 17-12: 122 EUSART 同步发送要求 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 120 121 122 符号 特性 TCKH2DTV 同步发送 (主 / 从) 时钟高电平至数据输出有效的时间 时钟输出上升时间和下降时间 (主模式) TCKRF TDTRF 数据输出上升时间和下降时间 图 17-13: 最小值 最大值 单位 — 40 ns — — 20 20 ns ns 条件 EUSART 同步接收 (主 / 从)时序 RC6/TX/CK 引脚 RC7/RX/DT 引脚 125 126 负载条件,请参见图 17-3。 注: 表 17-13: EUSART 同步接收要求 标准工作条件 (除非另外说明) 工作温度 -40°C ≤ TA ≤ +125°C 参数 编号 125 126 符号 特性 最小值 最大值 TDTV2CKL 同步接收 (主 / 从) CK ↓ 前的数据保持时间 (DT 保持时间) 10 — ns CK ↓ 后的数据保持时间 (DT 保持时间) 15 — ns TCKL2DTL DS41291E_CN 第 266 页 单位 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 17-14: SPI 主模式时序 (CKE = 0 且 SMP = 0) SS 70 SCK (CKP = 0) 71 72 78 79 79 78 SCK (CKP = 1) 80 bit 6 - - - - - -1 MSb SDO LSb 75, 76 SDI MSb 输入 bit 6 - - - -1 LSb 输入 74 73 注: 负载条件,请参见图 17-3。 图 17-15: SPI 主模式时序 (CKE = 1 且 SMP = 1) SS 81 SCK (CKP = 0) 71 72 79 73 SCK (CKP = 1) 80 78 SDO bit 6 - - - - - -1 MSb LSb 75, 76 SDI MSb 输入 bit 6 - - - -1 LSb 输入 74 73 注: 负载条件,请参见图 17-3。 2008 Microchip Technology Inc. DS41291E_CN 第 267 页 PIC16F882/883/884/886/887 图 17-16: SPI 从模式时序 (CKE = 0) SS 70 SCK (CKP = 0) 83 71 72 78 79 79 78 SCK (CKP = 1) 80 MSb SDO LSb bit 6 - - - - - -1 77 75, 76 SDI MSb 输入 bit 6 - - - -1 LSb 输入 74 73 注: 负载条件,请参见图 17-3。 图 17-17: SPI 从模式时序 (CKE = 1) 82 SS SCK (CKP = 0) 70 83 71 72 SCK (CKP = 1) 80 SDO MSb bit 6 - - - - - -1 LSb 75, 76 SDI MSb 输入 77 bit 6 - - - -1 LSb 输入 74 注: 负载条件,请参见图 17-3。 DS41291E_CN 第 268 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 表 17-14: 参数 编号 SPI 模式要求 符号 特性 70* TSSL2SCH, SS↓ 到 SCK↓ 或 SCK↑ 输入的时间 TSSL2SCL 71* TSCH 72* TSCL 73* 最小值 典型值 † 最大值 单位 TCY — — ns SCK 输入高电平时间 (从模式) TCY + 20 — — ns SCK 输入低电平时间 (从模式) TCY + 20 — — ns TDIV2SCH, SDI 数据输入到 SCK 边沿的建立时间 TDIV2SCL 100 — — ns 74* TSCH2DIL, TSCL2DIL SDI 数据输入到 SCK 边沿的保持时间 100 — — ns 75* TDOR SDO 数据输出上升时间 3.0-5.5V — 10 25 ns 2.0-5.5V — 25 50 ns 76* TDOF SDO 数据输出下降时间 — 10 25 ns 77* TSSH2DOZ SS↑ 到 SDO 输出呈现高阻态的时间 10 — 50 ns 78* TSCR SCK 输出上升时间 (主模式) 3.0-5.5V — 10 25 ns 2.0-5.5V — 25 50 ns 79* TSCF SCK 输出下降时间 (主模式) — 10 25 ns 80* TSCH2DOV, SCK 边沿后 SDO 数据输出有效 TSCL2DOV 的时间 3.0-5.5V — — 50 ns 2.0-5.5V — — 145 ns 81* TDOV2SCH, SDO 数据输出建立到 SCK 边沿的时间 TDOV2SCL Tcy — — ns 82* TSSL2DOV — — 50 ns 83* TSCH2SSH, SCK 边沿到 SS ↑ 的时间 TSCL2SSH 1.5TCY + 40 — — ns * SS↓ 边沿后 SDO 数据输出有效的时间 条件 这些参数仅为特征值,未经测试。 † 除非另外说明,否则 “典型值”一栏中的数据均在 5.0V、 25°C 条件下测得。这些参数仅供设计参考,未经 测试。 图 17-18: I2C™ 总线启动 / 停止位时序 SCL 91 90 93 92 SDA 启动 条件 停止 条件 注: 负载条件,请参见图 17-3。 2008 Microchip Technology Inc. DS41291E_CN 第 269 页 PIC16F882/883/884/886/887 I2C™ 总线启动 / 停止位要求 表 17-15: 参数 编号 符号 90* TSU:STA 启动条件 建立时间 400 kHz 模式 600 — — 91* THD:STA 启动条件 100 kHz 模式 4000 — — 保持时间 400 kHz 模式 600 — — 停止条件 100 kHz 模式 4700 — — 建立时间 最小值 典型值 † 最大值 单位 特性 100 kHz 模式 4700 — — 92* TSU:STO 400 kHz 模式 600 — — 93 THD:STO 停止条件 100 kHz 模式 4000 — — 保持时间 400 kHz 模式 600 — — * 条件 ns 仅与重复启动条件有关 ns 在这段时间后,产生第一个 时钟脉冲 ns ns 这些参数仅为特征值,未经测试。 图 17-19: I2C™ 总线数据时序 103 102 100 101 SCL 90 106 107 91 92 SDA 输入 109 109 110 SDA 输出 注: 负载条件,请参见图 17-3。 DS41291E_CN 第 270 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 I2C™ 总线数据要求 表 17-16: 参数 编号 100* 符号 THIGH 特性 时钟高电平时间 最小值 最大值 单位 100 kHz 模式 4.0 — µs 器件工作频率不得低于 1.5 MHz 400 kHz 模式 0.6 — µs 器件工作频率不得低于 10 MHz 1.5TCY — 100 kHz 模式 4.7 — µs 器件工作频率不得低于 1.5 MHz 400 kHz 模式 1.3 — µs 器件工作频率不得低于 10 MHz 1.5TCY — SSP 模式 101* TLOW 时钟低电平时间 SSP 模式 102* TR 103* TF 90* TSU:STA 91* 106* THD:STA THD:DAT 107* TSU:DAT 92* TSU:STO 109* TAA 110* TBUF CB 注 SDA 和 SCL 上升时 100 kHz 模式 间 400 kHz 模式 SDA 和 SCL 下降时 100 kHz 模式 间 400 kHz 模式 启动条件建立时间 启动条件保持时间 数据输入保持时间 数据输入建立时间 停止条件建立时间 时钟输出有效时间 总线空闲时间 总线容性负载 — 1000 ns 20 + 0.1CB 300 ns — 300 ns 条件 CB 值被指定为 10-400 pF 20 + 0.1CB 300 ns CB 值被指定为 10-400 pF 100 kHz 模式 4.7 — µs 仅与重复启动条件相关 400 kHz 模式 0.6 — µs 100 kHz 模式 4.0 — µs 400 kHz 模式 0.6 — µs 100 kHz 模式 0 — ns 400 kHz 模式 0 0.9 µs 100 kHz 模式 250 — ns 400 kHz 模式 100 — ns 100 kHz 模式 4.7 — µs 400 kHz 模式 0.6 — µs 100 kHz 模式 — 3500 ns 400 kHz 模式 — — ns 100 kHz 模式 4.7 — µs 400 kHz 模式 1.3 — µs — 400 pF 这段时间之后,产生第一个时 钟脉冲 (注 2) (注 1) 在新的传输开始前总线必须保 持空闲的时间 * 这些参数仅为特征值,未经测试。 1:为避免产生意外的启动或停止条件,作为发送器的器件必须提供这个内部最小延时以补偿 SCL 下降沿的未定 义区域 (最小值 300 ns)。 2: 快速模式 (400 kHz)的 I2C 总线器件也可在标准模式 (100 kHz)的 I2C 总线系统中使用,但必须满足 TSU:DAT ≥ 250 ns 的要求。如果快速模式器件没有延长 SCL 信号的低电平时间,则必然满足此条件。如果该 器件延长了 SCL 信号的低电平时间,其下一个数据位必须输出到 SDA 线, SCL 线被释放前, TR max. + TSU:DAT = 1000 + 250 = 1250 ns (根据标准模式 I2C 总线规范)。 2008 Microchip Technology Inc. DS41291E_CN 第 271 页 PIC16F882/883/884/886/887 注: DS41291E_CN 第 272 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 18.0 DC 和 AC 特性图表 本节提供的图表仅供设计参考,未经测试。 某些图表中的数据超出了规定的工作范围(即超出了规定的 VDD 范围)。这些图表仅供参考,器件只有在规定的范围下 工作才可以确保正常运行。 注: 在本注释后面的图表是基于有限数量样本的统计结果,仅供参考。 此处列出的性能特性未经测试,不作任何 担保。 有些图表中列出的数据超出了规定的工作范围(例如,超出了规定的电源范围),因此不在担保范围 内。 “典型值”表示 25°C 下的平均值,“最大值”和 “最小值”分别表示在整个温度范围内的 (平均值 + 3σ) 或 (平均值 - 3σ),其中 σ 表示标准偏差。 IDD (mA) 图 18-1: 不同 VDD 时典型 IDD 与 (EC Typical 2V 3V 4V FOSC 的关系曲线 5V 5.5V 模式) EC Mode0.277 1Mhz 0.086 0.153 0.220 0.310 2Mhz 0.150 0.2596 0.3718 0.4681 0.5236 4Mhz 0.279 0.472 0.675 0.850 0.951 4.0 6Mhz 0.382 0.635 0.903 1.135 1.269 8Mhz 0.486 0.798 1.132 1.420 1.587 典型值 : 统计平均值(25°C 时) 10Mhz 0.589 0.961 1.360 1.706 1.905 3.5 (最差情况下的温度) + 3σ 12Mhz 最大值 :平均值 0.696 1.126 1.596 2.005 2.241 14Mhz (-40°C 至 125°C) 0.802 1.291 1.832 2.304 2.577 16Mhz 0.908 1.457 2.068 2.603 2.913 3.0 18Mhz 1.017 1.602 2.268 2.848 3.185 20Mhz 1.126 1.748 2.469 3.093 3.458 2.5 Max 2.0 1Mhz 2Mhz 4Mhz 1.5 6Mhz 8Mhz 1.0 10Mhz 12Mhz 14Mhz 0.5 16Mhz 18Mhz 20Mhz 0.0 1 MHz 2V 0.168 0.261 0.449 0.577 0.705 0.833 0.956 1.078 1.201 1.305 1.409 2 MHz 3V 0.236 0.394 0.710 0.972 1.233 1.495 1.711 1.926 2.142 2.326 2.510 4 MHz 6 MHz 4V 0.315 0.537 0.981 1.331 1.682 2.032 2.372 2.713 3.054 3.295 3.536 8 MHz 5V 0.412 0.704 1.287 1.739 2.191 2.642 3.101 3.560 4.018 4.324 4.630 10 MHz 5.5V 5V 4V 5.5V 0.452 0.780 1.435 1.950 2.465 2.979 3.506 4.032 4.558 4.887 12 MHz 3V 2V 14 MHz 16 MHz 18 MHz 20 MHz VDD(V) 2008 Microchip Technology Inc. DS41291E_CN 第 273 页 PIC16F882/883/884/886/887 图 18-2: 不同 VDD 时最大 IDD 与 FOSC 的关系曲线 (EC 模式) 6.0 5.0 5.5V 典型值 : 统计平均值(25°C 时) 最大值: 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 5V IDD(mA) 4.0 4V 3.0 3V 2.0 2V 1.0 0.0 1 MHz 2 MHz 4 MHz 6 MHz 8 MHz 10 MHz 12 MHz 14 MHz 16 MHz 18 MHz 20 MHz VDD(V) 图 18-3: 不同 VDD 时典型 IDD 与 FOSC 的关系曲线 (HS 模式) HS Mode 5.0 4.5 4.0 典型值: 统计平均值(25°C) 最大值 : 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 5.5V 5V 4.5V IDD(mA) 3.5 3.0 2.5 2.0 1.5 1.0 3V 3.5V 4V 4.5V 5V 5.5V 0.567660978 0.6909750.8211857610.9883470541.0462473761.119615457 1.1610564131.4069334781.6664380432.0030751092.1193190652.268818804 4V 2.883088587 3.03554863 3.23775 3.5V 3.74139 3.967407543 3V 0.5 0.0 4 MHz 10 MHz 16 MHz 20 Mhz FOSC DS41291E_CN 第 274 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-4: 不同 VDD 时最大 IDD 与 FOSC (HS 模式) HS 的关系曲线 Mode 5.5 5.0 4.5 4.0 5.5V 5V 4.5V 典型值 (25°C 时) 3V: 统计平均值 3.5V 4V 4.5V 5V 5.5V 最大值 : 平均值(最差情况下的温度)+ 3σ 0.8868608641.0693043161.2645617521.4868166111.5076394231.520959608 1.6176371031.9623642592.3355493582.7630868222.8139211682.849632041 (-40°C 至 125°C) 3.8375797553.9157601913.967889512 4.685048474 4.78069621 IDD(mA) 3.5 3.0 2.5 4V 2.0 3.5V 3V 1.5 1.0 0.5 0.0 4 MHz 10 MHz 16 MHz 20 MHz FOSC 图 18-5: 不同 FOSC 时典型 IDD 与 VDD 的关系曲线 (XT 模式) XT Mode 1,200 1,000 2 2.5 3 3.5 4 4.5 5 5.5 典型值 : 统计平均值(25°C 时) 337.753 385.547 436.866 488.184 554.8964 最大值 : 平均值(最差情况下的温度) + 3σ 674.6106 783.831 893.052 1033.15 577.923 (-40°C 至 125°C) Typical: Statistical Mean @25×C 180.1774 235.0683 Maximum: Mean (Worst Case Temp) + 3 289.9592 (-40×C to283.7333 125×C) 382.484 481.2347 Vdd 2 2.5 3 3.5 4 4.5 5 5.5 244.8837 320.7132 396.5426 461.707 526.8719 587.642 648.412 724.0755 375.529 522.3721 669.2152 822.619 976.0232 1163.67 1351.32 IDD(uA) 800 4 MHz 600 400 1 MHz 200 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 2008 Microchip Technology Inc. DS41291E_CN 第 275 页 PIC16F882/883/884/886/887 图 18-6: 不同 FOSC 时最大 IDD 与 VDD 的关系曲线 (XT 模式) XT Mode 1,800 典型值: 统计平均值(25°C 时) 最大值 : 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 1,600 1,400 IDD(uA) 1,200 1,000 4 MHz 800 600 1 MHz 400 200 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 5.0 5.5 VDD(V) 图 18-7: 不同 FOSC 时典型 IDD 与 VDD 的关系曲线 (EXTRC 模式) (EXTRC Mode) 1,800 1,600 典型值 : 统计平均值(25°C) 最大值 : 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 1,400 IDD(uA) 1,200 4 Mhz 1,000 800 1 Mhz 600 400 200 0 2.0 2.5 3.0 3.5 4.0 4.5 VDD(V) DS41291E_CN 第 276 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-8: 最大 IDD 与 VDD 的关系曲线 (EXTRC 模式) 2,000 1,800 1,600 典型值 : 统计平均值 (25°C 时) Typical: Statistical Mean @25×C Maximum: Mean (Worst Case Temp)++3σ 3 最大值 : 平均值 (最差情况下的温度) (-40×C to 125×C) (-40°C 至 125°C) IDD(uA) 1,400 4 Mhz 1,200 1,000 800 1 Mhz 600 400 200 0 2.0 2.5 3.0 4.0 3.5 4.5 5.0 5.5 VDD(V) 不同 FOSC 时 IDD 与 VDD 的关系曲线 (LFINTOSC 模式,31 kHz) 图 18-9: LFINTOSC Mode, 31KHZ 80 70 典型值 : 统计平均值(25°C) 最大值: 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) IDD(µA) 60 50 最大值 40 30 典型值 20 10 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 2008 Microchip Technology Inc. DS41291E_CN 第 277 页 PIC16F882/883/884/886/887 图 18-10: IDD 与 VDD 的关系曲线 (LP 模式) 80 典型值 : 统计平均值(25°C 时) 最大值: 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 70 IDD(uA) 60 50 最大值 32 kHz 40 30 典型值 32 kHz 20 10 0 2.0 3.0 2.5 4.0 3.5 5.0 4.5 5.5 VDD(V) 图 18-11: 不同 VDD 时典型 IDD 与 FOSC 的关系曲线 (HFINTOSC 模式) 4V 2,500 IDD(uA) 2,000 HFINTOSC 5V 5.5V 197.9192604299.82617395.019 496.999 574.901 210.9124688 324.4079 431.721 544.182 620.66 Typical: Statistical Mean @25×C 典型值 : 统计平均值 (25°C) Maximum: Mean (Worst Case Temp) + 3 239.9707708369.77809491.538 623.314 717.723 最大值 :to 平均值 (最差情况下的温度) + 3σ (-40×C 125×C) 298.6634479460.30461619.714 793.635 901.409 (-40°C 至 125°C) 414.3997292639.99889 878.13 1127.53 1275.6 649.86985881014.40021421.21 1858.97 2097.71 5.5V 5V 1,500 4V 3V 1,000 2V 500 2V 3V 4V 5V 5.5V 0 125 kHz 25 kHz 500 kHz 1 MHz 2 MHz 4 MHz 8 MHz VDD(V) DS41291E_CN 第 278 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-12: 不同 VDD 时最大 IDD 与 FOSC 的关系曲线 (HFINTOSC 模式) HFINTOSC 3,000 2,500 5.5V 典型值: 统计平均值(25°C) 最大值 : 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 5V IDD(uA) 2,000 4V 1,500 3V 1,000 2V 500 0 125 kHz 250 kHz 500 kHz 1 MHz 2 MHz 4 MHz 8 MHz VDD(V) 典型 IPD 与 VDD 的关系曲线 (休眠模式,禁止所有外设) Typical 图 18-13: (Sleep Mode all Peripherals Disabled) 0.45 0.40 典型值 : 统计平均值(25°C 时) 最大值: 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 0.35 IPD(uA) 0.30 0.25 0.20 0.15 0.10 0.05 0.00 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 2008 Microchip Technology Inc. DS41291E_CN 第 279 页 PIC16F882/883/884/886/887 图 18-14: 最大 IPD 与 VDD 的关系曲线 (休眠模式,禁止所有外设) Maximum (Sleep Mode all Peripherals Disabled) 18 16 典型值 : 统计平均值(25°C 时) 最大值: 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 14 最大值 125°C IPD(µA) 12 10 8 6 4 最大值 85°C 2 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 图 18-15: 比较器使能的情况下 IPD 与 VDD 的关系曲线 (使能两个比较器) 180 160 140 典型值: 统计平均值(25°C 时) 最大值 : 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) IPD(uA) 120 最大值 100 80 典型值 60 典型 最大值 31.9 40 43.9 45.6 60.8 59.3 20 77.7 73.0 95.8 86.7 113.8 0 100.4 131.8 114.1 149.9 2.0 127.7 DS41291E_CN 第 280 页 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-16: 欠压复位使能情况下不同温度时 IPD 与 VDD 的关系曲线 160 140 典型值:统计平均值(25°C) 最大值:平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) IPD(µA) 120 100 最大值 80 典型值 60 40 20 0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 图 18-17: WDT 使能的情况下典型 IPD 与 VDD 的关系曲线 (25°C) 3.0 2.5 IPD(uA) 2.0 1.5 典型值典型 : 统计平均值最大温度 (25°C 时) 85°C 最大温度 125°C 2 1.007 2.140 27.702 2.5 1.146 2.711 29.079 3 1.285 3.282 30.08 3.5 1.449 3.899 31.347 4 1.612 4.515 32.238 4.5 1.924 5.401 33.129 5 2.237 6.288 34.02 5.5 2.764 7.776 1.0 0.5 0.0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 2008 Microchip Technology Inc. DS41291E_CN 第 281 页 PIC16F882/883/884/886/887 图 18-18: WDT 使能的情况下不同温度时最大 IPD 与 VDD 的关系曲线 40.0 35.0 最大值 : 平均值 +3 最大值 :平均值 + 3σ 最大值 125°C 30.0 IPD(uA) 25.0 20.0 15.0 10.0 最大值 85°C 5.0 0.0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 图 18-19: 不同温度时 WDT 周期与 VDD 的关系曲线 WDT 超时周期 32 30 最大值:平均值 + 3σ(-40°C 至 125°C) 28 最大值(125°C) 26 最大值(85°C) 时间(ms) 24 22 20 典型值 18 16 14 最小值 12 10 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) DS41291E_CN 第 282 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-20: WDT 周期与温度的关系曲线 (VDD = 5.0V) Vdd = 5V 30 典型值: 统计平均值(25°C 时) 最大值 : 平均值(最差情况下的温度)+ 3σ 28 26 最大值 时间(ms) 24 22 20 典型值 18 16 最小值 14 12 10 -40°C 25°C 85°C 125°C 温度(°C) 不同温度时 CVREF IPD 与 VDD 的关系曲线 (高电压范围) 图 18-21: 高量程 IPD(uA) 140 最大温度 85°C 最大温度 125°C 35.8 : 统计平均值 68.0 典型值 (25°C 时) 44.8 : 平均值 77.3(最差情况下的温度)+ 3σ 最大值 120 53.8 86.5 (-40°C 至 125°C) 62.8 94.3 71.8 102.1 81.0 109.8 100 最大值 125°C 90.1 117.6 99.2 125.1 80 最大值 85°C 60 典型值 40 20 最大温度 85°C 最大温度 125°C 46.5 86.4 58.3 98.1 70.0 109.9 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 2008 Microchip Technology Inc. DS41291E_CN 第 283 页 PIC16F882/883/884/886/887 图 18-22: 不同温度时 CVREF IPD 与 V DD 的关系曲线 (低电压范围) 低量程 180 160 典型值 : 统计平均值(25°C 时) 最大值 : 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 140 最大值 125°C IPD(uA) 120 100 最大值 85°C 80 典型值 60 40 20 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 4.5 5.0 5.5 VDD(V) 图 18-23: 典型 VP6 参考 IPD 与 VDD 的关系曲线 (25°C) VP6 Reference IPD vs. VDD (25×C) 160 140 IPD(uA) 120 100 典型值 80 60 40 20 0 2.0 DS41291E_CN 第 284 页 2.5 3.0 3.5 4.0 VDD(V) 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-24: 不同温度时最大 VP6 参考 IPD 与 VDD 的关系曲线 Max VP6 Reference IPD vs. VDD Over Temperature 180 160 140 最大值 125°C IPD(uA) 120 最大值 85°C 100 80 60 40 20 0 2.0 2.5 3.0 3.5 4.0 VDD(V) 4.5 5.0 5.5 5.0 5.5 不同温度时 T1OSC IPD 与 VDD 的关系曲线 (32 kHz) 图 18-25: 30 25 典型值 : 统计平均值(25°C 时) 最大值: 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 最大值 125°C IPD(uA) 20 15 10 5 2 2.5 3 3.5 4 4.5 5 5.5 典型值 25°C最大温度 85°C 最大温度 125°C 2.022 4.98 17.54 2.247 5.23 19.02 2.472 5.49 20.29 2.453 5.79 21.50 最大值 85°C 2.433 6.08 22.45 2.711 6.54 23.30 2.989 7.00 24.00 3.112 7.34 典型值 25°C 0 2.0 2.5 3.0 3.5 4.0 4.5 VDD(V) 2008 Microchip Technology Inc. DS41291E_CN 第 285 页 PIC16F882/883/884/886/887 图 18-26: 不同温度时 VOL 与 IOL 的关系曲线 (VDD = 3.0V) (VDD = 3V,-40°C 至 125°C) 0.8 0.7 典型值 : 统计平均值(25°C 时) 最大值 : 平均值 + 3σ 最大值 125°C 0.6 VOL(V) 0.5 最大值 85°C 0.4 典型值 25°C 0.3 0.2 最小值 -40°C 0.1 0.0 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 IOL(mA) 图 18-27: 不同温度时 VOL 与 IOL 的关系曲线 (VDD = 5.0V) 0.45 典型值 : 统计平均值(25°C 时) 典型值 :统计平均值 最大值 : 平均值 + 3σ 最大值:平均值 + 3 0.40 最大值 125°C 0.35 最大值 85°C VOL(V) 0.30 0.25 典型值 25°C 0.20 0.15 最小值 -40°C 0.10 0.05 0.00 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 IOL(mA) DS41291E_CN 第 286 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-28: 不同温度时 VOH 与 IOH 的关系曲线 (VDD = 3.0V) 3.5 3.0 最大值 -40°C 典型值 25°C 2.5 VOH(V) 最小值 125°C 2.0 1.5 1.0 典型值 : 统计平均值(25°C 时) 最大值 : 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 0.5 0.0 0.0 -0.5 -1.0 -1.5 -2.0 -2.5 -3.0 -3.5 -4.0 IOH(mA) 图 18-29: 不同温度时 VOH 与 IOH 的关系曲线 (VDD = 5.0V) 5.5 5.0 最大值 -40°C 典型值 25°C VOH(V) 4.5 最小值 125°C 4.0 3.5 典型值 : 统计平均值(25°C 时) 最大值: 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 3.0 0.0 -0.5 -1.0 -1.5 -2.0 -2.5 -3.0 -3.5 -4.0 -4.5 -5.0 IOH(mA) 2008 Microchip Technology Inc. DS41291E_CN 第 287 页 PIC16F882/883/884/886/887 图 18-30: 不同温度时 TTL 输入门限电压 VIN 与 VDD 的关系曲线 (TTL 输入, -40°C 至 125°C) 1.7 1.5 典型值: 统计平均值(25°C 时) 最大值 : 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 最大值 -40°C VIN(V) 1.3 典型值 25°C 1.1 最小值 125°C 0.9 0.7 0.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 不同温度时施密特触发器输入门限电压 VIN 与 VDD 的关系曲线 图 18-31: (施密特输入,-40°C 至 125°C) 4.0 VIH 最大值 125°C 3.5 典型值: 统计平均值(25°C 时) 最大值 : 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) VIH 最小值 -40°C VIN(V) 3.0 2.5 2.0 VIL 最大值 -40°C 1.5 VIL 最小值 125°C 1.0 0.5 2.0 DS41291E_CN 第 288 页 2.5 3.0 3.5 4.0 VDD(V) 4.5 5.0 5.5 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-32: 比较器响应时间 (上升沿) 4 200 278 639 846 V+ INPUT 5.5 140 202 = VCM 531 V- input = 从 VCM + 100MV 到 VCM - 20MV ²¢ÀÕ 1,000 900 800 最大值(125°C) 700 响应时间(nS) 600 注: 500 VCM = (VDD - 1.5V)/2 V+ 输入 = VCM V- 输入 = 从 VCM + 100MV 跳变至 VCM - 20MV 最大值(85°C) 400 300 典型值 (25°C) 200 最小值(-40°C) 100 0 2.0 2.5 4.0 5.5 VDD(V) 图 18-33: Vdd 比较器响应时间 (下降沿) -40°C 25°C 85°C 125°C 2 279 327 547 557 600 2.5 226 267 425 440 4 172 204 304 319 5.5 119 142 182 500 响应时间(nS) 400 300 最大值(125°C) 最大值(85°C) 200 注: 100 VCM = (VDD - 1.5V)/2 V+ 输入 = VCM V- 输入 = 从 VCM -100MV 跳变至 VCM +20MV 典型值 (25°C) 最小值(-40°C) 0 2.0 2.5 4.0 5.5 VDD(V) 2008 Microchip Technology Inc. DS41291E_CN 第 289 页 PIC16F882/883/884/886/887 图 18-34: 不同温度时 LFINTOSC 频率与 VDD 的关系曲线 ( 31 kHz) LFINTOSC 31Khz 45,000 40,000 最大值 -40°C 35,000 典型值 25°C 频率(Hz) 30,000 25,000 20,000 最小值 85°C 最小值 125°C 15,000 10,000 典型值 : 统计平均值(25°C 时) 最大值: 平均值(最差情况下的温度)+ 3σ 5,000 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 图 18-35: 不同温度时 ADC 时钟周期与 VDD 的关系曲线 8 典型值 : 统计平均值(25°C 时) 最大值: 平均值(最差情况下的温度)+ 3σ (-40°C 至 125°C) 125°C 时间(µs) 6 4 85°C 25°C -40°C 2 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) DS41291E_CN 第 290 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-36: 不同温度时典型 HFINTOSC 起振时间与 VDD 的关系曲线 16 典型值: 统计平均值(25°C 时) 最大值 : 平均值(最差情况下的温度)+ 3σ 14 85°C 12 25°C 时间(µs) 10 -40°C 8 6 4 2 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 图 18-37: 不同温度时最大 HFINTOSC 起振时间与 VDD 的关系曲线 -40C 至 +85C 25 典型值 : 统计平均值(25°C 时) 最大值: 平均值(最差情况下的温度)+ 3σ 时间(µs) 20 15 85°C 25°C 10 -40°C 5 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 2008 Microchip Technology Inc. DS41291E_CN 第 291 页 PIC16F882/883/884/886/887 图 18-38: 不同温度时最小 HFINTOSC-40C 起振时间与 至 +85C VDD 的关系曲线 10 9 典型值: 统计平均值(25°C 时) 最大值 : 平均值(最差情况下的温度)+ 3σ 8 时间(µs) 7 85°C 6 25°C 5 -40°C 4 3 2 1 0 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 图 18-39: 典型 HFINTOSC 频率变化与 VDD 的关系曲线 (25°C) 频率相对于校准值的偏差(%) 5 4 3 2 1 0 -1 -2 -3 -4 -5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) DS41291E_CN 第 292 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-40: 典型 HFINTOSC 频率变化与 VDD 的关系曲线 (85°C) 频率相对于校准值的偏差(%) 5 4 3 2 1 0 -1 -2 -3 -4 -5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 5.0 5.5 VDD(V) 图 18-41: 典型 HFINTOSC 频率变化与 VDD 的关系曲线 (125°C) 频率相对于校准值的偏差(%) 5 4 3 2 1 0 -1 -2 -3 -4 -5 2.0 2.5 3.0 3.5 4.0 4.5 VDD(V) 2008 Microchip Technology Inc. DS41291E_CN 第 293 页 PIC16F882/883/884/886/887 图 18-42: 典型 HFINTOSC 频率变化与 VDD 的关系曲线 (-40°C) 频率相对于校准值的偏差(%) 5 4 3 2 1 0 -1 -2 -3 -4 -5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 VDD(V) 图 18-43: 典型 VP6 参考电压与 VDD 的关系曲线 (25°C) VP6 Reference Voltage vs. VDD (25×C) 0.65 0.64 0.63 VP6(V) 0.62 0.61 0.60 0.59 典型值 0.58 0.57 0.56 0.55 2 3 4 5 5.5 VDD(V) DS41291E_CN 第 294 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-44: 不同温度下 VP6 的漂移偏离 25°C 标称值的情况 (VDD 5V) 4 距离标称值的偏差(%) 3 2 1 0 -1 -2 -40 0 25 85 125 摄氏温度 图 18-45: 不同温度下 VP6 的漂移偏离 25°C 标称值的情况 (VDD 3V) 4 3 距离标称值的偏差(%) 2 1 0 -1 -2 -40 0 25 85 125 摄氏温度 2008 Microchip Technology Inc. DS41291E_CN 第 295 页 PIC16F882/883/884/886/887 图 18-46: 典型 VP6 参考电压分布图 (3V, 25°C) Typical VP6 Reference Voltage Distribution (VDD=3V, 25×C) 35 抽样的总器件数 =118 30 25 器件数 20 15 10 5 0.700 0.690 0.680 0.670 0.660 0.650 0.640 0.630 0.620 0.610 0.600 0.590 0.580 0.570 0.560 0.550 0.540 0.530 0.520 0.510 0.500 0 电压(V) 图 18-47: 典型 VP6 参考电压分布图 (3V, 85°C) Typical VP6 Reference Voltage Distribution (VDD=3V, 85×C) 40 35 抽样的总器件数 =118 30 器件数 25 20 15 10 5 0.700 0.690 0.680 0.670 0.660 0.650 0.640 0.630 0.620 0.610 0.600 0.590 0.580 0.570 0.560 0.550 0.540 0.530 0.520 0.510 0.500 0 电压(V) DS41291E_CN 第 296 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-48: 典型 VP6 参考电压分布图 (3V, 125°C) Typical VP6 Reference Voltage Distribution (VDD=3V, 125×C) 40 35 抽样的总器件数 =118 30 器件数 25 20 15 10 5 0.700 0.690 0.680 0.670 0.660 0.650 0.640 0.630 0.620 0.610 0.600 0.590 0.580 0.570 0.560 0.550 0.540 0.530 0.520 0.510 0.500 0 电压(V) 图 18-49: 典型 VP6 参考电压分布图 (3V, -40°C) Typical VP6 Reference Voltage Distribution (VDD=3V, -40×C) 30 25 抽样的总器件数 =118 器件数 20 15 10 0.700 0.690 0.680 0.670 0.660 0.650 0.640 0.630 0.620 0.610 0.600 0.590 0.580 0.570 0.560 0.550 0.540 0.530 0.520 0.510 0 0.500 5 电压(V) 2008 Microchip Technology Inc. DS41291E_CN 第 297 页 PIC16F882/883/884/886/887 图 18-50: 典型 VP6 参考电压分布图 (5V, 25°C) Typical VP6 Reference Voltage Distribution (VDD=5V, 25×C) 30 抽样的总器件数 =118 25 器件数 20 15 10 5 0.700 0.690 0.680 0.670 0.660 0.650 0.640 0.630 0.620 0.610 0.600 0.590 0.580 0.570 0.560 0.550 0.540 0.530 0.520 0.510 0.500 0 电压(V) 图 18-51: 典型 VP6 参考电压分布图 (5V, 85°C) Typical VP6 Reference Voltage Distribution (VDD=5V, 85×C) 35 30 抽样的总器件数 =118 25 器件数 20 15 10 5 0.700 0.690 0.680 0.670 0.660 0.650 0.640 0.630 0.620 0.610 0.600 0.590 0.580 0.570 0.560 0.550 0.540 0.530 0.520 0.510 0.500 0 电压(V) DS41291E_CN 第 298 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 图 18-52: 典型 VP6 参考电压分布图 (5V, 125°C) Typical VP6 Reference Voltage Distribution (VDD=5V, 25×C) 30 25 抽样的总器件数 =118 器件数 20 15 10 5 0.700 0.690 0.680 0.670 0.660 0.650 0.640 0.630 0.620 0.610 0.600 0.590 0.580 0.570 0.560 0.550 0.540 0.530 0.520 0.510 0.500 0 电压(V) 图 18-53: 典型 VP6 参考电压分布图 (5V, -40°C) Typical VP6 Reference Voltage Distribution (VDD=5V, -40×C) 30 25 抽样的总器件数 =118 引脚数 20 15 10 5 0.700 0.690 0.680 0.670 0.660 0.650 0.640 0.630 0.620 0.610 0.600 0.590 0.580 0.570 0.560 0.550 0.540 0.530 0.520 0.510 0.500 0 电压(V) 2008 Microchip Technology Inc. DS41291E_CN 第 299 页 PIC16F882/883/884/886/887 注: DS41291E_CN 第 300 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 19.0 封装信息 19.1 封装标识信息 28 引脚 PDIP 示例 XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX YYWWNNN 28 引脚 SOIC(7.50 mm) PIC16F883 -I/P e3 0710017 示例 XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX YYWWNNN 示例 28 引脚 SSOP XXXXXXXXXXXX XXXXXXXXXXXX YYWWNNN 28 引脚 QFN XX...X Y YY WW NNN e3 * 注: PIC16F883 -I/SS e3 0710017 示例 XXXXXXXX XXXXXXXX YYWWNNN 图注: PIC16F886/SO e3 0710017 16F886 /ML e3 0710017 客户信息 年份代码 (日历年的最后一位数字) 年份代码 (日历年的最后两位数字) 星期代码 (一月一日的星期代码为 “01”) 以字母数字排序的追踪代码 雾锡 (Matte Tin, Sn)的 JEDEC 无铅标志 表示无铅封装。JEDEC 无铅标志( e3 )标示于此种封装的外 包装上。 Microchip 元器件编号如果无法在同一行内完整标注,将换行标出,因此会限制 表示客户信息的字符数。 2008 Microchip Technology Inc. DS41291E_CN 第 301 页 PIC16F882/883/884/886/887 19.1 封装标识信息 (续) 40 引脚 PDIP 示例 XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX YYWWNNN 44 引脚 QFN 0710017 示例 XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX YYWWNNN 44 引脚 TQFP XX...X Y YY WW NNN 图注: PIC16F887 -I/ML e3 0710017 示例 XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX YYWWNNN e3 * 注: PIC16F885 -I/P e3 PIC16F887 -I/PT e3 0710017 客户信息 年份代码 (日历年的最后一位数字) 年份代码 (日历年的最后两位数字) 星期代码 (一月一日的星期代码为 “01”) 以字母数字排序的追踪代码 雾锡 (Matte Tin, Sn)的 JEDEC 无铅标志 表示无铅封装。JEDEC 无铅标志( e3 )标示于此种封装的外 包装上。 Microchip 元器件编号如果无法在同一行内完整标注,将换行标出,因此会限制 表示客户信息的字符数。 DS41291E_CN 第 302 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 19.2 封装详细信息 以下部分将介绍各种封装的技术细节。 28 引脚小型塑封双列直插封装 (SP)——300 mil 主体 [SPDIP] 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 N ⊼1 E1 1 2 3 D E A2 A L A1 c b1 b e eB ऩԡ㣅ᇌ ᓩ㛮᭄ ᓩ㛮䯈䎱 乊ッࠄᑩᑻᑇ䴶䎱⾏ ลᇕ㺙८ᑺ 䴶ࠄᑩᑻᑇ䴶䎱⾏ 㙽ᆑ ลᇕ㺙ᆑᑺ ᘏ䭓ᑺ 䎇ᇪࠄᑩᑻᑇ䴶䎱⾏ ᓩ㛮८ᑺ ᓩ㛮Ϟ䚼ᆑᑺ ᓩ㛮ϟ䚼ᆑᑺ ᘏ㸠䯈䎱c ሎᇌ㣗ೈ᳔ᇣؐℷᐌ᳔ؐؐ N 28 e .100 BSC A – – . 200 A2 .120 .135 .150 A1 .015 – – E .290 .310 .335 E1 D .240 1. 345 .285 1. 365 .295 1.400 L .110 . 130 . 150 c .008 . 010 . 015 b1 .040 . 050 . 070 b .014 . 018 . 022 eB – – .430 ⊼˖ 1. ᓩ㛮1㾖ᅮԡ⡍ᗻৃҹব࣪ˈԚᖙ乏ԡѢ䰈ᕅऎඳݙDŽ 2. § Ў䞡㽕⡍ᗻDŽ 3. ሎᇌDE1ϡลⱘ↯䖍さ䍋DŽลⱘ↯䖍さ䍋↣ջϡᕫ䍙䖛0.010"DŽ 4. ሎᇌ݀ᏂձASME Y14.5MDŽ BSC˖ ᴀሎᇌDŽ⧚䆎㊒⹂ؐˈ᮴݀ᏂDŽ Microchip ো˖C04-070B 2008 Microchip Technology Inc. DS41291E_CN 第 303 页 PIC16F882/883/884/886/887 28 引脚塑封小外形封装 (SO)——宽型, 7.50 mm 主体 [SOIC] 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 D N E E1 ⊼1 1 2 3 b e h α A2 A h c φ L A1 β L1 ऩԡ ǂǂǂǂሎᇌ㣗ೈ ᓩ㛮᭄ ǂǂ↿㉇ ᳔ᇣǂǂǂǂℷᐌ ¡¡¡¡¡¡¡¡¡¡¡¡N ᓩ㛮䯈䎱ǂǂǂǂǂǂǂǂǂǂǂǂǂǂǂǂǂe ᘏ催ᑺǂǂǂǂǂǂǂǂǂǂǂǂǂǂǂǂǂǂA 1.27 BSC – – ลᇕ㺙८ᑺǂǂǂǂǂǂǂǂǂǂǂǂǂǂA2 2.05¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡– ぎ䯈䱭 § 0.10 A1 ᳔ 28 ᘏᆑᑺE – 2.65 – 0.30 10.30 BSC ลᇕ㺙ᆑᑺE1 7.50 BSC ᘏ䭓ᑺD 17.90 BSC ᭰䴶 ᡩᕅ䎱⾏˄ৃ䗝˅h 0.25 – 0.75 ᑩ㛮䭓ᑺL 0.40 – 1.27 ᑩ㛮ऴԡ䭓ᑺL 1 ᑩ㛮ؒ᭰㾦ᑺ φ 1.40 REF 0° – 8° ᓩ㛮८ᑺc 0.18 – 0.33 ᓩ㛮ᆑᑺb 0.31 – 0.51 ล 乊䚼䫹ᑺα 5° – 15° ล ᑩ䚼䫹ᑺβ 5° – 15° ⊼˖ 1.ᓩ㛮1ⱘᅮԡᷛ䆄ৃ㛑Ӯ᳝ব࣪ˈԚϔᅮԡѢ䰈ᕅऎඳݙDŽ 2. § 䞡㽕⡍ᗻDŽ 3.ሎᇌDE1ϡࣙᣀลⱘ↯䖍さ䍋DŽล↣ջⱘ↯䖍さ䍋ϡᑨ䍙䖛0.15mm DŽ 4.ሎᇌ݀Ꮒ䙉ᕾASME?Y14.5MDŽ BSC˖ᴀሎᇌDŽ⧚䆎㊒⹂ؐˈϡ݀ᏂDŽ REF˖খ㗗ሎᇌDŽ䗮ᐌгϡࣙ݀Ꮒˈҙկখ㗗DŽ Microchip Technology োC04-052B DS41291E_CN 第 304 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 28 引脚塑封缩小外形封装 (SS)——5.30 mm 主体 [SSOP] 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 D N E E1 1 2 ⊼1 b e c A2 A ¶ A1 L L1 ऩԡ ᓩ㛮᭄ ᓩ㛮䯈䎱 ᘏ催ᑺ ลᇕ㺙८ᑺ ぎ䯈䱭 ᘏᆑᑺ ลᇕ㺙ᆑᑺ ᘏ䭓ᑺ ᑩ䎇䭓ᑺ ऴԡ䭓ᑺ ᓩ㛮८ᑺ ᑩ䎇ؒ㾦 ᓩ㛮ᆑᑺ ↿㉇ ሎᇌ㣗ೈ ᳔ᇣؐℷᐌ᳔ؐؐ N 28 e 0.65 BSC A – – 2. 00 A2 A1 1.65 0.05 1.75 – 1.85 – E 7.40 7.80 8. 20 E1 D 5.00 9.90 5.30 10. 20 5.60 10.50 L 0.55 0.75 0. 95 L1 1.25 REF c 0.09 – ¶ 0° 4° 0. 25 8° b 0.22 – 0. 38 ⊼˖ 1. ᓩ㛮1㾖ᅮԡ⡍ᗻৃҹᬍবˈԚᖙ乏ԡѢ䰈ᕅऎඳݙDŽ 2. ሎᇌDE1ϡࣙลⱘ↯䖍さ䍋DŽลⱘ↯䖍さ䍋↣ջϡᕫ䍙䖛0.20 mmDŽ 3. ሎᇌ݀ᏂձASME Y14.5MDŽ BSC˖ ᴀሎᇌDŽ⧚䆎㊒⹂ؐˈ᮴݀ᏂDŽ REF˖ খ㗗ሎᇌˈ䗮ᐌ᮴݀Ꮒˈҙկখ㗗DŽ Microchip ো˖C04-073B 2008 Microchip Technology Inc. DS41291E_CN 第 305 页 PIC16F882/883/884/886/887 28 引脚塑封正方形扁平无引脚封装 (ML)——6x6 主体 [QFN],触点长度 0.55 mm 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 ' ' 䴆ⱘ 䞥ሲ㹀ᑩ H ( E ( . 1 1 ⊼ / ӄ㾚 ׃㾚 $ $ $ ऩԡ ↿㉇ ሎᇌ㣗ೈ᳔ᇣ ᓩ㛮᭄1 ℷᐌ ᳔ ᓩ㛮䯈䎱H %6& ᘏ催ᑺ $ ぎ䯈䱭 $ 㾺⚍८ᑺ $ ᘏᆑᑺ ( 䴆䞥ሲ㹀ᑩᆑᑺ ( ᘏ䭓ᑺ ' 䴆䞥ሲ㹀ᑩ䭓ᑺ ' 5() %6& %6& 㾺⚍ᆑᑺE 㾺⚍䭓ᑺ / 㾺⚍ࠄ䴆䞥ሲ㹀ᑩⱘ䎱⾏. ± ± ⊼˖ ᓩ㛮ᅮԡᷛ䆄ৃ㛑Ӯব࣪ˈԚϔᅮԡѢ䰈ᕅऎඳݙDŽ ᇕ㺙ᰃߛࡆߚ⾏ⱘDŽ ሎᇌ݀Ꮒ䙉ᕾ$60(<0DŽ %6&˖ᴀሎᇌDŽ⧚䆎㊒⹂ؐˈϡ݀ᏂDŽ 5()˖খ㗗ሎᇌDŽ䗮ᐌгϡࣙ݀Ꮒˈҙկখ㗗DŽ 0LFURFKLS 7HFKQRORJ\ ো& % DS41291E_CN 第 306 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 28 引脚塑封正方形扁平无引脚封装 (ML)——6x6 主体 [QFN],触点长度 0.55 mm 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 ϱॄሖ 㤤ⱘ⛞ⲬᏗሔ ऩԡ ሎᇌ㣗ೈ ᳔ᇣ ↿㉇ ℷᐌ ᳔ 㾺⚍䯈䎱 ৃ䗝Ёᖗ⛞Ⲭᆑᑺ ৃ䗝Ёᖗ⛞Ⲭ䭓ᑺ 㾺⚍⛞Ⲭ䯈䎱 㾺⚍⛞Ⲭ䯈䎱 㾺⚍⛞Ⲭᆑᑺ˄;˅ 㾺⚍⛞Ⲭ䭓ᑺ˄;˅ ⛞Ⲭ䯈ⱘ䎱⾏ ⊼˖ ሎᇌ݀Ꮒ䙉ᕾ$60(<0 %6&˖ᴀሎᇌDŽ⧚䆎㊒⹂ؐˈϡࣙ݀ᏂDŽ ো 2008 Microchip Technology Inc. DS41291E_CN 第 307 页 PIC16F882/883/884/886/887 40 引脚塑封双列直插 (P)——600 mil 主体 [PDIP] 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 N ⊼1 E1 1 2 3 D E A2 A L c b1 A1 b e eB ऩԡ㣅ᇌ ᓩ㛮᭄ ᓩ㛮䯈䎱 ሎᇌ㣗ೈ N ᳔ᇣؐℷᐌ᳔ؐؐ 40 e .100 BSC 乊䚼㟇ᑩᑻᑇ䴶䎱⾏ A – – . 250 ลᇕ㺙८ᑺ ᑻ㟇ᑩᑻᑇ䴶䎱⾏ 㙽ᆑ ลᇕ㺙ᆑᑺ ᘏ䭓ᑺ A2 A1 .125 .015 – – .195 – E .590 – .625 E1 D .485 1. 980 – – .580 2.095 䎇ᇪ㟇ᑩᑻᑇ䴶䎱⾏ ᓩ㛮८ᑺ ᓩ㛮Ϟ䚼ᆑᑺ ᓩ㛮ϟ䚼ᆑᑺ ᘏ㸠䯈䎱c L .115 – . 200 c .008 – . 015 b1 .030 – . 070 b .014 – . 023 eB – – .700 ⊼˖ 1. ᓩ㛮1ⱘ㾖ᅮԡ⡍ᗻৃҹব࣪ˈԚᖙ乏ԡѢ䰈ᕅऎඳݙDŽ 2. § Ў䞡㽕⡍ᗻDŽ 3. ሎᇌDE1ϡࣙลⱘ↯䖍さ䍋DŽลⱘ↯䖍さ䍋↣ջϡᕫ䍙䖛0.010"DŽ 4. ሎᇌ݀ᏂձASME Y14.5MDŽ BSC˖ ᴀሎᇌDŽ⧚䆎㊒⹂ؐˈ᮴݀ᏂDŽ Microchip ো˖C04-016B DS41291E_CN 第 308 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 44 引脚塑封正方形扁平无引脚封装 (ML)——8x8 mm 主体 [QFN] 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 ' ' 䴆䞥ሲ 㹀ᑩ H ( ( E 1 ⊼ 1 ׃㾚 . / ӄ㾚 $ $ $ ऩԡ↿㉇ ሎᇌ㣗ೈ᳔ᇣℷᐌ᳔ ᓩ㛮᭄1 ᓩ㛮䯈䎱H %6& ᘏ催ᑺ$ ぎ䯈䱭 $ 㾺⚍८ᑺ$ 5() ᘏᆑᑺ( 䴆䞥ሲ㹀ᑩᆑᑺ( %6& ᘏ䭓ᑺ' %6& 䴆䞥ሲ㹀ᑩ䭓ᑺ' 㾺⚍ᆑᑺE 㾺⚍䭓ᑺ/ 㾺⚍ࠄ䴆㹀ᑩⱘ䎱⾏. ± ± ⊼˖ ᓩ㛮ᅮԡᷛ䆄ৃ㛑Ӯ᳝ব࣪ˈԚϔᅮԡѢ䰈ᕅऎඳݙDŽ 䆹ᇕ㺙ᰃߛࡆߚ⾏ⱘDŽ ሎᇌ݀Ꮒ䙉ᕾ$60(<0DŽ %6&˖ ᴀሎᇌDŽ⧚䆎㊒⹂ؐˈϡ݀ᏂDŽ 5()˖ খ㗗ሎᇌDŽ䗮ᐌгϡࣙ݀Ꮒˈҙկখ㗗DŽ 0LFURFKLS 7HFKQRORJ\ ো&% 2008 Microchip Technology Inc. DS41291E_CN 第 309 页 PIC16F882/883/884/886/887 44 引脚塑封正方形扁平无引脚封装 (ML)——8x8 mm 主体 [QFN] 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 ϱॄሖ ᓎ䆂ⱘ⛞ⲬᏗሔ ऩԡ↿㉇ ሎᇌ㣗ೈ᳔ᇣℷᐌ᳔ 㾺⚍䯈䎱 ৃ䗝ⱘЁᖗ⛞Ⲭᆑᑺ ৃ䗝ⱘЁᖗ⛞Ⲭ䭓ᑺ 㾺⚍⛞Ⲭぎ䯈 㾺⚍⛞Ⲭぎ䯈 㾺⚍⛞Ⲭᆑᑺ˄;˅ 㾺⚍⛞Ⲭ䭓ᑺ˄;˅ ⛞Ⲭ䯈ⱘ䎱⾏ ⊼˖ ሎᇌ݀Ꮒ䙉ᕾ$60(<0 %6&˖ᴀሎᇌDŽ⧚䆎㊒⹂ؐˈϡ݀ᏂDŽ 0LFURFKLS7HFKQRORJ\ো&$ DS41291E_CN 第 310 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 44 引脚塑封薄型正方形扁平封装 (PT)——10x10x1 mm 主体, 2.00 mm 占位 [TQFP] 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 D D1 E e E1 N b ⊼1 1 2 3 NOTE 2 ¢ A c ¶ £ L A1 A2 L1 ऩԡ ↿㉇ ሎᇌ㣗ೈ᳔ᇣؐℷᐌ᳔ؐؐ ᓩ㛮᭄ N 44 ᓩ㛮䯈䎱 ᘏ催ᑺ ลᇕ㺙८ᑺ e 0.80 BSC ぎ䯈䱭 ᑩ䎇䭓ᑺ ऴԡ䭓ᑺ ᑩ䎇ؒ㾦 ᘏᆑᑺ ᘏ䭓ᑺ ลᇕ㺙ᆑᑺ ลᇕ㺙䭓ᑺ A – – 1. 20 A2 A1 0.95 0.05 1.00 – 1.05 0. 15 L 0.45 0.60 0. 75 L1 ¶ 1.00 REF 0° 3.5° E 12.00 BSC D 12.00 BSC E1 10.00 BSC D1 7° 10.00 BSC c 0.09 – 0. 20 b 0.30 0.37 0. 45 ᓩ㛮८ᑺ ᓩ㛮ᆑᑺ ล乊䚼䫹ᑺ ¢ 11° 12° 13° ลᑩ䚼䫹ᑺ £ 11° 12° 13° ⊼˖ 1. ᓩ㛮1ⱘ㾖ᅮԡ⡍ᗻৃҹব࣪ˈԚᖙ乏ԡѢ䰈ᕅऎඳݙDŽ 2. ಯϾ㾦ⱘצ㾦ഛЎৃ䗝ˈሎᇌৃҹব࣪DŽ 3. ሎᇌD1E1ϡࣙลⱘ↯䖍さ䍋DŽลⱘ↯䖍さ䍋↣ջϡᕫ䍙䖛0.25 mmDŽ 4. ሎᇌ݀ᏂձASME Y14.5MDŽ BSC˖ ᴀሎᇌDŽ⧚䆎㊒⹂ؐˈ᮴݀ᏂDŽ REF˖ খ㗗ሎᇌˈ䗮ᐌ᮴݀Ꮒˈҙկখ㗗DŽ Microchip ো˖C04-076B 2008 Microchip Technology Inc. DS41291E_CN 第 311 页 PIC16F882/883/884/886/887 44 引脚塑封薄型正方形扁平封装 (PT)——10x10x1 mm 主体, 2.00 mm 占位 [TQFP] 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 ϱॄሖ ᓎ䆂ⱘ⛞ⲬᏗሔ ऩԡ↿㉇ ሎᇌ㣗ೈ ᳔ᇣℷᐌ᳔ 㾺⚍䯈䎱 㾺⚍⛞Ⲭぎ䯈 㾺⚍⛞Ⲭぎ䯈 㾺⚍⛞Ⲭᆑᑺ˄;˅ 㾺⚍⛞Ⲭ䭓ᑺ˄;˅ ⛞Ⲭ䯈ⱘ䎱⾏ ⊼˖ ሎᇌ݀Ꮒ䙉ᕾ$60(<0 %6&˖ᴀሎᇌDŽ⧚䆎㊒⹂ؐˈϡ݀ᏂDŽ 0LFURFKLS7HFKQRORJ\ো&$ DS41291E_CN 第 312 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 附录 A: 数据手册和版本历史 版本 A (2006 年 5 月) 从其他 PIC® 器件移植 附录 B: 本节讨论了从其他 PIC 器件移植到 PIC16F88X 系列器 件的一些问题。 本数据手册的初始发行版。 版本 B (2006 年 7 月) 引脚图 (44 引脚 QFN 图);修改了表 2-1 中的地址 1Dh (CCP2CON);第 3.0、 3.1 节;第 3.4.4.6 节; 表 3 ;表 3-1 (ANSEL);表 3-3 (CCP2CON);寄 存器 3-1 ;寄存器 3-2 ;寄存器 3-3 ;寄存器 3-4 ;寄 存器 3-9 ;寄存器 3-10 ;寄存器 3-11 ;寄存器 3-12 ; 寄存器 3-14 ;表 3-5 (ANSEL);图 3-5 ;图 3-11 ; 图 8-2 ;图 8-3 ;图 9-1 ;寄存器 9-1 ;第 9.1.4 节; 例 10-4 ;图 11-5 ;表 11-5 (P1M);第 11.5.2 节; 第 11.5.7 节中第 4 项;表 11-7 (CCP2CON);第 12.3.1 节(参数 3);图 12-6(标题);第 14.2、14.3 和 14.4 节直流特性(最大值);表 14-4(OSCCON); 第 14.3 节 (TMR0)以及第 14.3.2 节 (TMR0)。 版本 C 第 19.0 节封装信息:替换了封装图并加了注。 增加了 PIC16F882 器件编号。 B.1 PIC16F87X 到 PIC16F88X 表 B-1: PIC16F87X PIC16F88X 20 MHz 20 MHz 最大程序存储容量 (字) 8192 8192 SRAM (字节) 368 368 10 位 256 10 位 256 特性 最大工作速度 A/D 分辨率 数据 EEPROM (字节) 2/1 2/1 振荡器模式 4 8 欠压复位 有 有 (2.1V/4V) WDT/BOR 的软件控制 选项 无 有 内部上拉 RB<7:4> RB<7:0> 和 MCLR 电平变化中断 RB<7:4> RB<7:0> 2 2 CVREF 0/2 CVREF 和 VP6 1/1 无 有 定时器 (8/16 位) 将 PICmicro 替换为 PIC。 比较器 版本 D 参考 ECCP/CCP 替换了封装图 (Rev. AM);替换 了开发支持一节。修 改了产品标识一节。 版本 E (2008 年 1 月) 添加了特征数据;删除了“初稿”状态;修正了器件表 (PIC16F882, I/O);修改了以下内容: 引脚图 44 TQFP 的引脚 30、表 5 中的 I/O RA7、表 1-1 中的 RA1 和 RA4、第 2.2.1 节、 寄存器 2-3 的 INTCON、例 3-1、第 3.2.2节、例3-2、图6-1、第 6.2.2节、第 6.6节、第 8.10.3 节、表 9-1、公式 11-1、寄存器 11-3、寄存器 13-3、第 14.0节、第14.1节、第14.9节、第14.10节和第17.0节; 添加了 图 11-14 并重排了其余图的编号,还更新了封装 图。 2008 Microchip Technology Inc. 特性比较 超低功耗唤醒 扩展的 WDT 无 有 INTOSC 频率 无 32 kHz 至 8 MHz 时钟切换 MSSP USART ADC 通道 注: 无 有 标准 AUSART 带从动地址屏蔽 EUSART 8 14 该 器件 设 计为 按照 数 据手 册 上的 参数 运 行。它已经通过电气规范测试,该规范用于 确定器件与这些参数的一致性。由于制造 时的工艺差异,此器件可能与早期版本具 有不同的性能特性。这些差异可能会导致 此器件在应用中的性能与其早期版本有所 不同。 DS41291E_CN 第313 页 PIC16F882/883/884/886/887 注: DS41291E_CN 第314 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 索引 A A/D 规范 .................................................................. 263, 264 内部采样开关阻抗 (RSS) ....................................... 107 源阻抗 ...................................................................... 107 ACKSTAT ......................................................................... 198 ACKSTAT 状态标志 ......................................................... 198 ADC .................................................................................... 99 采集要求 ................................................................... 107 参考电压 (VREF) ................................................... 100 端口配置 ................................................................... 100 工作原理 ................................................................... 102 计算采集时间 ........................................................... 107 结果格式化 ............................................................... 102 开始 A/D 转换 ........................................................... 102 框图 ............................................................................ 99 配置 ........................................................................ 100 配置中断 ................................................................... 103 特殊事件触发器 ........................................................ 102 通道选择 ................................................................... 100 相关的寄存器 ........................................................... 109 在休眠模式下的工作原理 ......................................... 102 中断 .......................................................................... 101 转换步骤 ................................................................... 103 转换时钟 ................................................................... 100 ADCON0 寄存器 .............................................................. 104 ADCON1 寄存器 .............................................................. 105 ADRESH 寄存器 (ADFM = 0) ....................................... 106 ADRESH 寄存器 (ADFM = 1) ....................................... 106 ADRESL 寄存器 (ADFM = 0) ....................................... 106 ADRESL 寄存器 (ADFM = 1) ....................................... 106 ANSEH 寄存器 ................................................................... 48 ANSEL 寄存器 .................................................................... 40 B BAUDCTL 寄存器 ............................................................. 162 BF ..................................................................................... 198 BF 状态标志 ..................................................................... 198 BRG .................................................................................. 195 版本历史 ........................................................................... 313 保险丝。 参见配置位 比较模块。参见 增强型捕捉 / 比较 /PWM (ECCP) 比较器 C2OUT 作为 T1 的门控信号线 ................................... 77 C2OUT 作为 T1 的门控信号源 ................................... 91 复位影响 ..................................................................... 87 工作原理 ..................................................................... 83 规范 .......................................................................... 262 同步 COUT w/Timer1.................................................. 91 响应时间 ..................................................................... 85 休眠期间工作原理 ...................................................... 87 比较器参考电压 (CVREF) 规范 .......................................................................... 262 比较器参考电压 (CVREF) .................................................. 94 比较器参考电压 (CVREF) ................................................ 85 比较器参考电压 (CVREF) 复位影响 ..................................................................... 87 比较器模块 ......................................................................... 83 C1 不同输入条件下的输出状态 .................................. 85 相关的寄存器 ............................................................. 97 编程,器件指令 ................................................................ 231 变更通知客户服务 ............................................................ 323 波特率发生器 ................................................................... 195 2008 Microchip Technology Inc. 捕捉 / 比较 /PWM (CCP) 比较模式 .................................................................. 127 CCP 引脚配置 .................................................. 127 软件中断模式 ................................................... 126 Timer1 模式选择 ...................................... 126, 127 比较模式软 件中断模式 ...................................................... 127 捕捉模式 .................................................................. 126 定时器资源 ............................................................... 125 PWM 模式 ................................................................ 128 PWM 频率和分辩率示例, 20 MHZ.................. 130 PWM 频率和分辩率示例, 8 MHz .................... 130 设置操作 .......................................................... 131 休眠模式下的操作 ............................................ 131 占空比 .............................................................. 129 设置 PWM 操作 ........................................................ 131 与捕捉、比较和 Timer1 相关的寄存器 ..................... 149 与 PWM 和 Timer2 相关的寄存器 ............................ 149 捕捉 / 比较器 /PWM (CCP) 比较模式 特殊事件触发信号 ............................................ 127 PWM 模式 复位的影响 ...................................................... 131 系统时钟频率改变 ............................................ 131 PWM 周期 ................................................................ 129 捕捉模式。参见 增强型捕捉 / 比较 /PWM (ECCP) 捕捉 (CCP 模块) CCP 引脚配置 .......................................................... 126 C C 编译器 MPLAB C18.............................................................. 242 MPLAB C30.............................................................. 242 CCP1CON (增强型)寄存器 ......................................... 124 CCP2CON 寄存器 ........................................................... 125 CM1CON0 寄存器 ............................................................. 88 CM2CON0 寄存器 ............................................................. 89 CM2CON1 寄存器 ............................................................. 91 CONFIG1 寄存器 ............................................................. 210 CONFIG2 寄存器 ............................................................. 211 CPU 的特性 ..................................................................... 209 参考电压 VP6 稳定周期 ............................................................ 94 规范 ......................................................................... 262 相关的寄存器 ............................................................. 97 参考电压。 参见 比较器参考电压 (CVREF) 操作码字段说明 ............................................................... 231 超低功耗唤醒 ................................................... 16, 18, 40, 41 程序存储器 ......................................................................... 21 映射图和堆栈 (PIC16F883/884) ............................. 21 映射图和堆栈 (PIC16F886/887) ............................. 21 串行时钟, SCK ............................................................... 183 串行数据输出, SDO........................................................ 183 串行数据输入, SDI.......................................................... 183 串行外设接口。 参见 SPI 从动模式广播呼叫地址时序波形 ...................................... 192 从动模式广播呼叫地址序列 ............................................. 192 从动选择同步 ................................................................... 186 从动选择, SS .................................................................. 183 从其他 PICmicro 器件移值 ............................................... 313 存储器构成 ......................................................................... 21 程序 ........................................................................... 21 数据 ........................................................................... 22 DS41291E_CN 第 315 页 PIC16F882/883/884/886/887 D DC 和 AC 特性 图表 .......................................................................... 273 代码保护 ........................................................................... 227 代码示例 A/D 转换 ................................................................... 103 超低功耗唤醒初始化 ................................................... 41 初始化 PORTA ............................................................ 39 初始化 PORTB ............................................................ 47 初始化 PORTC............................................................ 53 初始化 PORTD............................................................ 57 初始化 PORTE ............................................................ 59 改变捕捉预分频比 .................................................... 126 间接寻址 ..................................................................... 37 将预分频器分配给 Timer0 ........................................... 74 将预分频器分配给 WDT .............................................. 74 写入闪存程序存储器 ................................................. 119 写校验 ...................................................................... 120 装载 SSPBUF 寄存器 ............................................... 184 电气规范 ........................................................................... 245 掉电模式 (休眠) ............................................................ 226 定时器 Timer2 T2CON................................................................ 82 Timer1 T1CON................................................................ 79 读-修改-写操作 ............................................................ 231 多主机模式 ....................................................................... 203 多主机通信,总线冲突和总线仲裁 ................................... 203 E ECCPAS 寄存器 ............................................................... 142 ECCP。参见增强型捕捉 / 比较 /PWM EEADRH 寄存器 .............................................................. 111 EEADR 寄存器 ......................................................... 111, 112 EECON1 寄存器 ....................................................... 111, 113 EECON2 寄存器 ............................................................... 111 EEDATH 寄存器 ............................................................... 112 EEDAT 寄存器 ................................................................. 112 EEPROM 数据存储器 避免误写 ................................................................... 120 写校验 ...................................................................... 120 EUSART............................................................................ 151 波特率发生器 (BRG) 波特率误差,计算 ............................................ 163 波特率, 异步模式 ............................................ 164 高波特率选择位 (BRGH 位) .......................... 163 公式.................................................................. 163 自动波特率检测 ................................................ 167 同步主控模式 要求,同步接收 ................................................ 266 要求,同步发送 ................................................ 266 发送 .................................................................. 171 接收 .................................................................. 173 相关的寄存器 发送 .......................................................... 172 接收 .................................................................. 174 同步从动模式 ........................................................... 175 发送 .................................................................. 175 接收 .................................................................. 176 相关的寄存器 发送 .......................................................... 175 接收 .......................................................... 176 相关的寄存器 波特率发生器 ................................................... 163 DS41291E_CN 第 316 页 异步模式 .................................................................. 153 12 位间隔发送和接收 ....................................... 169 波特率发生器 (BRG) .................................... 163 发送器 .............................................................. 153 接收器.............................................................. 156 设置带地址检测的 9 位模式 ............................. 158 时钟精确度 ....................................................... 160 收到间隔字符时自动唤醒 ................................. 168 相关的寄存器 发送 ......................................................... 155 相关寄存器 接收 ......................................................... 159 F 封装 .................................................................................. 301 标识 ................................................................. 301, 302 复位 .................................................................................. 212 复位的影响 PWM 模式 ................................................................ 131 负载条件 .......................................................................... 254 G 高精度内部振荡器参数 ..................................................... 257 固件指令 .......................................................................... 231 故障安全时钟监视 清除故障安全条件 ...................................................... 71 故障保护时钟监视 .............................................................. 71 复位或从休眠状态唤醒 ............................................... 71 故障保护工作原理 ...................................................... 71 故障保护检测 ............................................................. 71 广播呼叫地址支持 ............................................................ 192 H 汇编器 MPASM 汇编器 ........................................................ 242 J I2C 模块 7 位发送时序 ............................................................ 191 BRG 时序 ................................................................. 195 多主机模式 ............................................................... 203 启动条件期间由 SDA 仲裁引起的 BRG 复位 ............ 205 停止条件接收或发送时序 ......................................... 202 重复启动条件时序波形 ............................................. 197 主控模式 7 位地址接收时序 ..................................... 200 主控模式发送 ........................................................... 198 总线冲突 启动条件时序 ................................................... 204 I2C (MSSP 模块) ACK 脉冲 ................................................................. 189 I2C (MSSP 模块) 从动模式 .................................................................. 189 读 / 写位信息 (R/W 位) ......................................... 190 I2C 模块 7 位接收时序 ............................................................ 191 BRG 框图 ................................................................. 195 波特率发生器 ........................................................... 195 复位的影响 ............................................................... 202 广播呼叫地址支持 .................................................... 192 时钟仲裁 .................................................................. 202 时钟仲裁时序 (主控发送) ..................................... 202 停止条件时序 ........................................................... 201 休眠模式下的操作 .................................................... 202 应答序列时序 ........................................................... 201 主控模式操作 ........................................................... 194 主控模式发送序列 .................................................... 194 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 主控模式启动条件时序 ............................................. 196 主控模式支持 ........................................................... 193 总线冲突 启动条件 .......................................................... 204 启动条件时序 ................................................... 205 停止条件 .......................................................... 207 停止条件时序 (情形 1) .................................. 207 停止条件时序 (情形 2) .................................. 207 应答 .................................................................. 203 重复启动条件 ................................................... 206 重复启动条件的时序 (情形 2) ....................... 206 重复启动条件时序 (情形 1) ........................... 206 总线冲突时序 ........................................................... 203 I2C 模式 主控模式 ................................................................... 193 I2C 模式 (MSSP) 读 / 写信息位 (R/W 位) ......................................... 190 I2C 主控模式接收 ............................................................. 198 I2C 主控模式重复启动条件时序 ........................................ 197 I2C (MSSP 模块) ACK 脉冲 ................................................................. 190 I2C (MSSP 模块) 串行时钟 (RC3/SCK/SCL) .................................... 190 发送 .......................................................................... 190 接收 .......................................................................... 190 寻址 .......................................................................... 190 寄存器 ADCON0 (ADC 控制寄存器 0) ............................. 104 ADCON1 (ADC 控制寄存器 1) ............................. 105 ADRESH (ADC 结果寄存器的高字节) (ADFM = 0) .................................................... 106 ADRESH (ADC 结果寄存器的高字节) (ADFM = 1) .................................................... 106 ADRESL (ADC 结果寄存器的低字节) (ADFM = 1) ................................................... 106 ADRESL (ADC 结果寄存器的低字节) (ADFM = 0) .................................................. 106 ANSELH (模拟选择高字节) .................................... 48 ANSEL (模拟选择) .................................................. 40 BAUDCTL (波特率控制寄存器) ............................ 162 CCP1CON (增强型 CCP1 控制) ........................... 124 CCP2CON (CCP2 控制寄存器) ............................ 125 CM1CON0 (C1 控制寄存器 )....................................... 88 CM2CON0 (C2 控制寄存器) ................................... 89 CM2CON1 (C2 控制寄存器 )....................................... 91 CONFIG1 (配置字寄存器 1) ................................. 210 CONFIG2 (配置字寄存器 2) ................................. 211 ECCPAS (增强型 CCP 自动关闭控制寄存器) ...... 142 EEADR (EEPROM 地址寄存器) ........................... 112 EECON1 (EEPROM 控制寄存器 1) ...................... 113 EEDATH (EEPROM 数据寄存器 )............................. 112 EEDAT (EEPROM 数据寄存器) ........................... 112 复位值 ...................................................................... 217 复位值 (特殊寄存器) ............................................. 219 INTCON (中断控制) ................................................ 31 IOCB (电平变化中断 PORTB) ................................ 49 OPTION_REG (OPTION) ...................................... 30 OPTION_REG (选项) ............................................. 75 OSCCON (振荡器控制) .......................................... 62 OSCTUNE (振荡器调节) ....................................... 66 PCON (电源控制寄存器) ........................................ 36 PCON (电源控制) ................................................. 215 PIE1 (外设中断允许 1) ........................................... 32 PIE2 (外设中断允许 2) ........................................... 33 PIR1( 外设中断请求寄存器 1) ..................................... 34 2008 Microchip Technology Inc. PORTA ....................................................................... 39 PORTB ....................................................................... 48 PORTC ....................................................................... 53 PORTD ....................................................................... 57 PORTE ....................................................................... 59 PSTRCON (脉冲换向控制寄存器) ....................... 146 PWM1CON (增强型 PWM 控制寄存器) ............... 145 RCREG 寄存器 ........................................................ 167 RCSTA (接收状态和控制寄存器) ......................... 161 SRCON (SR 锁存控制寄存器) ............................... 93 SSPCON (SSP 控制寄存器 1) ............................ 181 SSPCON2 (SSP 控制寄存器 2) ...................................... 182 SSPSMSK (SSP 屏蔽寄存器) .............................. 208 SSPSTAT (SSP 状态寄存器) ............................... 180 STATUS ..................................................................... 29 T1CON ....................................................................... 79 T2CON ....................................................................... 82 TRISA (三态 PORTA) ............................................ 39 TRISB (三态 PORTB) ............................................ 48 TRISC (三态 PORTC) ............................................ 53 TRISD (三态 PORTD) ............................................ 57 TRISE (三态 PORTE) ............................................ 59 TXSTA (发送状态和控制寄存器) .......................... 160 特殊功能寄存器 ......................................................... 22 特殊功能寄存器汇总 Bank 0 ................................................................ 26 特殊功能寄存器映射图 PIC16F883/884 .................................................. 24 PIC16F886/887 .................................................. 25 特殊寄存器小结 Bank 1 ................................................................ 27 Bank 2 ................................................................ 28 Bank 3 ................................................................ 28 WDTCON (看门狗定时器控制) ............................ 225 WPUB (弱上拉 PORTB) ......................................... 49 VRCON (参考电压控制寄存器) ............................. 97 ID 地址单元...................................................................... 227 INTCON 寄存器 ................................................................. 31 INTOSC 规范 ......................................................................... 256 INTOSC 规范 ................................................................... 257 INTOSC 规范 ................................................................... 256 I 内部振荡器电路 .............................................................. 256 INTOSC 规范 ................................................................. 257 IOCB 寄存器 ...................................................................... 49 间隔时唤醒 ....................................................................... 168 间隔字符 (12 位)发送和接收 ........................................ 169 间接寻址、 INDF 和 FSR 寄存器 ....................................... 37 交流特性 负载条件 .................................................................. 254 工业级和扩展级 ....................................................... 255 绝对最大额定值 ............................................................... 245 K 开发支持 .......................................................................... 241 看门狗定时器 (WDT) .................................................... 224 规范 ......................................................................... 259 模式 ......................................................................... 224 时钟源 ...................................................................... 224 相关的寄存器 ........................................................... 225 周期 ......................................................................... 224 勘误表 ................................................................................ 12 客户通知服务 ................................................................... 323 客户支持 .......................................................................... 323 DS41291E_CN 第 317 页 PIC16F882/883/884/886/887 框图 ADC ............................................................................ 99 ADC 传递函数 .......................................................... 108 比较模式工作 ........................................................... 127 比较器 C1.................................................................... 84 比较器 C1 和 ADC 参考电压 ...................................... 95 比较器 C2.................................................................... 84 波特率发生器 ........................................................... 195 CCP PWM................................................................. 128 EUSART 发送 .......................................................... 151 EUSART 接收 .......................................................... 152 故障保护时钟监视器 (FSCM) ................................. 71 晶振工作原理 ............................................................. 64 看门狗定时器 (WDT) ............................................ 224 MCLR 电路 ............................................................... 213 MSSP (I2C 模式 ) ...................................................... 189 MSSP 模式 (SPI 模式) .......................................... 183 MSSP (I2C 主控模式) ........................................... 193 模拟输入模型 ..................................................... 90, 108 PIC16F883/886 ........................................................... 14 PIC16F884/887 ........................................................... 15 PWM (增强型) ...................................................... 132 片上复位电路 ........................................................... 212 RA0 引脚 .................................................................... 42 RA1 引脚 .................................................................... 43 RA2 引脚 .................................................................... 43 RA3 引脚 .................................................................... 44 RA4 引脚 .................................................................... 44 RA5 引脚 .................................................................... 45 RA6 引脚 .................................................................... 45 RA7 引脚 .................................................................... 46 RB0、 RB1、 RB2 和 RB3 引脚 ................................. 50 RB4、 RB5、 RB6 和 RB7 引脚 ................................. 51 RC0 引脚 .................................................................... 54 RC1 引脚 .................................................................... 54 RC2 引脚 .................................................................... 54 RC3 引脚 .................................................................... 55 RC4 引脚 .................................................................... 55 RC5 引脚 .................................................................... 55 RC6 引脚 .................................................................... 56 RC7 引脚 .................................................................... 56 RD0、 RD1、 RD2、 RD3 和 RD4 引脚 ..................... 58 RD5、 RD6 和 RD7 引脚 ........................................... 58 RE3 引脚 .................................................................... 60 时钟源 ........................................................................ 61 Timer2 ......................................................................... 81 Timer1 ......................................................................... 76 TMR0/WDT 预分频器 ................................................. 73 外部 RC 模式 .............................................................. 65 谐振器工作原理 .......................................................... 64 在线串行编程连接 .................................................... 228 中断逻辑 ................................................................... 221 (CCP)捕捉模式工作 .............................................. 126 M MCLR ................................................................................ 213 内部 .......................................................................... 213 Microchip 因特网网站 ....................................................... 323 MPLAB ASM30 汇编器、链接器和库管理器 .................... 242 MPLAB ICD 2 在线调试器 ................................................ 243 MPLAB ICE 2000 高性能通用在线仿真器 ........................ 243 MPLAB ICE 4000 高性能通用在线仿真器 ........................ 243 MPLAB PM3 器件编程器 .................................................. 243 MPLAB 集成开发环境软件 ............................................... 241 MPLINK 目标链接器 /MPLIB 目标库管理器 ...................... 242 MSSP ................................................................................ 179 DS41291E_CN 第 318 页 I2C 模式。 参见 I2C 框图 (SPI 模式) .................................................... 183 SPI 模式 ................................................................... 183 SPI 模式。参见 SPI SSPBUF 寄存器 ....................................................... 185 SSPSR 寄存器 ......................................................... 185 MSSP 模块 I2C 操作 ................................................................... 189 控制寄存器 ............................................................... 179 SPI 从动模式 ............................................................ 186 SPI 主控模式 ............................................................ 185 脉冲换向 .......................................................................... 146 模拟输入连接注意事项 ....................................................... 90 模数转换器。参见 ADC N 内部采样开关阻抗 (Rss) ............................................... 107 O OPTION_REG 寄存器 ........................................................ 75 OSCCON 寄存器 ............................................................... 62 OSCTUNE 寄存器 .............................................................. 66 P P1A/P1B/P1C/P1D。参见增强型 捕捉 / 比较 /PWM (ECCP) ................................... 132 PCL 和 PCLATH ................................................................. 37 堆栈 ........................................................................... 37 PCON 寄存器 ............................................................. 36, 215 PICSTART 2 开发编程器 ................................................. 244 PICSTART Plus 开发编程器 ............................................ 244 PIE1 寄存器 ....................................................................... 32 PIE2 寄存器 ....................................................................... 33 PIR1 寄存器 ....................................................................... 34 PORTA ............................................................................... 39 更多引脚功能 ............................................................. 40 ANSEL 寄存器 ................................................... 40 超低功耗唤醒 ............................................... 40, 41 规范 ......................................................................... 257 RA0............................................................................. 42 RA1............................................................................. 43 RA2............................................................................. 43 RA3............................................................................. 44 RA4............................................................................. 44 RA5............................................................................. 45 RA6............................................................................. 45 RA7............................................................................. 46 相关的寄存器 ............................................................. 46 引脚说明和框图 ......................................................... 42 PORTA 寄存器 ................................................................... 39 PORTB ............................................................................... 47 电平变化时中断 ......................................................... 47 电平变化中断 ............................................................. 47 P1B/P1C/P1D。参见增强型捕捉 / 比较 //PWM+ (ECCP+) ................................ 47 其他引脚功能 ............................................................. 47 ANSEH 寄存器 ................................................... 47 弱上拉 ................................................................ 47 RB0............................................................................. 50 RB1............................................................................. 50 RB2............................................................................. 50 RB3............................................................................. 50 RB4............................................................................. 51 RB5............................................................................. 51 RB6............................................................................. 51 RB7............................................................................. 51 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 相关的寄存器 ............................................................. 52 引脚说明和框图 .......................................................... 50 PORTB 寄存器 ................................................................... 48 PORTC ............................................................................... 53 规范 .......................................................................... 257 P1A。参见增强型 捕捉 / 比较 //PWM+ (ECCP+) ........................ 53 RC0............................................................................. 54 RC1............................................................................. 54 RC2............................................................................. 54 RC3............................................................................. 55 RC3 引脚 .................................................................. 190 RC4............................................................................. 55 RC5............................................................................. 55 RC6............................................................................. 56 RC7............................................................................. 56 相关的寄存器 ............................................................. 56 PORTC 寄存器 ................................................................... 53 PORTD ............................................................................... 57 P1B/P1C/P1D。参见增强型 捕捉 / 比较 //PWM+ (ECCP+) ..................... 57 RD0、 RD1、 RD2、 RD3 和 RD4 ............................. 58 RD5............................................................................. 58 RD6............................................................................. 58 RD7............................................................................. 58 相关的寄存器 ............................................................. 58 PORTD 寄存器 ................................................................... 57 PORTE................................................................................ 59 RE0 ............................................................................. 60 RE1 ............................................................................. 60 RE2 ............................................................................. 60 RE3 ............................................................................. 60 相关的寄存器 ............................................................. 60 PORTE 寄存器 ................................................................... 59 PSTRCON 寄存器 ............................................................ 146 PWM1CON 寄存器 ........................................................... 145 PWM 模式。参见 增强型捕捉 / 比较 /PWM....................... 132 PWM (ECCP 模块) 换向同步 ................................................................... 148 脉冲换向 ................................................................... 146 配置位 .............................................................................. 210 Q 启动条件期间的总线冲突 ................................................. 204 器件概述 ............................................................................. 13 欠压复位 (BOR) ............................................................ 214 规范 .......................................................................... 259 时序和特性 ............................................................... 258 相关的寄存器 ........................................................... 215 R RCREG ............................................................................. 158 RCSTA 寄存器 ................................................................. 161 软件模拟器 (MPLAB SIM) ............................................ 242 S SCK................................................................................... 183 SDI .................................................................................... 183 SDO .................................................................................. 183 SPBRG ............................................................................. 163 SPBRGH ........................................................................... 163 SPI 串行时钟 ................................................................... 183 串行数据输出 ........................................................... 183 串行数据输入 ........................................................... 183 从动选择 ................................................................... 183 2008 Microchip Technology Inc. SPI 模式 ................................................................... 183 SPI 时钟 ................................................................... 185 主控模式 .................................................................. 185 SPI 模块 从动时序, CKE=0 ................................................... 187 从动时序, CKE=1 ................................................... 187 从动同步时序 ........................................................... 186 从动选择同步 ........................................................... 186 SPI 模式 从动模式 .................................................................. 186 复位的影响 ............................................................... 188 工作原理 .................................................................. 183 使能 SPI /IO .............................................................. 184 休眠操作 .................................................................. 188 与 SPI 操作相关的寄存器 ......................................... 188 总线模式兼容性 ....................................................... 188 SPI 总线模式 .................................................................... 188 SRCON 寄存器 .................................................................. 93 SS ..................................................................................... 183 SSPCON2 寄存器 ............................................................ 182 SSPCON 寄存器 .............................................................. 181 SSPMSK 寄存器 .............................................................. 208 SSPOV ............................................................................. 198 SSPOV 状态标志 ............................................................. 198 SSPSTAT 寄存器 ............................................................. 180 R/W 位 ..................................................................... 190 散热考虑 .......................................................................... 253 闪存程序存储器 ............................................................... 111 写操作 ...................................................................... 117 上电复位 (POR) ........................................................... 213 上电延时定时器 (PWRT) .............................................. 213 规范 ......................................................................... 259 时序参数符号 ................................................................... 254 时序图 A/D 转换 .................................................................. 265 A/D 转换 (休眠模式) ............................................. 265 半桥 PWM 输出 ................................................ 135, 144 比较器输出 ................................................................. 83 CLKOUT 和 I/O......................................................... 257 从动同步 .................................................................. 186 带有时钟仲裁的波特率发生器 .................................. 195 发送和应答时的总线冲突 ......................................... 203 发送间隔字符时序 .................................................... 170 复位、 WDT、 OST 和上电延时定时器 ................... 258 故障保护时钟监视器 (FSCM) ................................. 72 I2C 模块 总线冲突发送时序 ............................................ 203 I2C 主控模式第一启动位时序 ................................... 196 I2C 主控模式发送时序 .............................................. 199 I2C 主控模式接收时序 .............................................. 200 INT 引脚中断 ........................................................... 222 内部振荡器切换时序 .................................................. 68 PWM 方向更改 ......................................................... 138 PWM 输出 (低电平有效) ....................................... 134 PWM 输出 (高电平有效) ....................................... 133 PWM 自动关闭 固件重启 .......................................................... 143 使能自动重启 ................................................... 143 启动条件期间的总线冲突 (SCL = 0) ..................... 205 欠压复位 (BOR) .................................................. 258 欠压复位情形 ........................................................... 214 全桥 PWM 输出 ........................................................ 137 SPI 模式时序 (从动模式, CKE=0) ...................... 187 SPI 模式时序 (从动模式, CKE=1) ...................... 187 SPI 模式时序 (主控模式) SPI 模式 DS41291E_CN 第 319 页 PIC16F882/883/884/886/887 主控模式时序图 ................................................ 185 SPI 主模式 (CKE = 1 和 SMP = 1) ................ 267 SPI 从模式 (CKE = 0) ................................... 268 SPI 从模式 (CKE = 1) ................................... 268 时钟时序 ................................................................... 255 双速启动 ..................................................................... 70 Timer0 和 Timer1 外部时钟 ...................................... 260 Timer1 递增边沿 ......................................................... 78 停止条件接收或发送 ................................................. 202 停止条件期间的总线冲突 ......................................... 207 同步发送................................................................... 172 同步发送 (通过 TXEN) .......................................... 172 同步接收 (主控模式, SREN) ............................... 174 通过中断唤醒 ........................................................... 227 休眠模式下的自动唤醒位 (WUE) .......................... 169 延时时序 情形 1 ................................................................ 216 情形 2 ................................................................ 216 情形 3 ................................................................ 216 异步发送 ................................................................... 154 异步发送 (背靠背) ................................................. 154 异步接收 ................................................................... 158 应答序列时序 ........................................................... 201 由 SDA 仲裁引起的 BRG 复位 ................................. 205 在接近 100% 占空比时 PWM 更改方向 .................... 139 增强型捕捉 / 比较 /PWM 时序 (ECCP) ................. 261 正常工作下的自动唤醒位 (WUE) .......................... 168 重复启动条件 ........................................................... 197 重复启动条件期间的总线冲突 (情形 1) ................. 206 重复启动条件期间的总线冲突 (情形 2) ................. 206 主控发送模式下的时钟仲裁 ...................................... 202 自动波特率校准 ........................................................ 167 总线冲突 启动条件时序 ................................................... 204 使用中断唤醒 .................................................................... 226 时钟切换 ............................................................................. 69 时钟源 内部模式 ..................................................................... 65 HFINTOSC.......................................................... 65 HFINTOSC/LFINTOSC 切换时序图 ................... 67 INTOSC .............................................................. 65 INTOSCIO........................................................... 65 LFINTOSC .......................................................... 67 频率选择 ............................................................. 67 外部模式 ..................................................................... 63 EC ....................................................................... 63 HS ....................................................................... 64 LP........................................................................ 64 OST..................................................................... 63 RC....................................................................... 65 XT ....................................................................... 64 数据存储器 ......................................................................... 22 数据 EEPROM 存储器 ...................................................... 111 代码保护 ................................................................... 120 的写操作 ................................................................... 114 读 ............................................................................. 114 相关的寄存器 ........................................................... 121 双速时钟启动模式 .............................................................. 69 外部时钟 .................................................................... 74 相关的寄存器 ............................................................. 75 中断 ........................................................................... 75 Timer2 相关的寄存器 ............................................................. 82 Timer1................................................................................. 76 工作原理 .................................................................... 76 规范 ......................................................................... 260 时钟源选择 ................................................................. 76 Timer1 门控 非门 ................................................................... 77 SR 锁存器 .......................................................... 92 时钟源 ................................................................ 77 同步 COUT w/Timer1 ......................................... 91 选择源 ................................................................ 91 TMR1H 寄存器 ........................................................... 76 TMR1L 寄存器 ........................................................... 76 相关的寄存器 ............................................................. 80 休眠期间的工作原理 .................................................. 78 异步计数器模式 ......................................................... 77 读写 ................................................................... 77 预分频器 .................................................................... 77 振荡器 ........................................................................ 77 中断 ........................................................................... 78 TRISA ................................................................................. 39 TRISA 寄存器 .................................................................... 39 TRISB ................................................................................. 47 TRISB 寄存器 .................................................................... 48 TRISC ................................................................................. 53 TRISC 寄存器 .................................................................... 53 TRISD ................................................................................. 57 TRISD 寄存器 .................................................................... 57 TRISE ................................................................................. 59 TRISE 寄存器 .................................................................... 59 TXREG ............................................................................. 153 TXSTA 寄存器 ................................................................. 160 BRGH 位 .................................................................. 163 特殊功能寄存器 .................................................................. 22 特殊事件触发器 ................................................................ 102 停止条件期间的总线冲突 ................................................. 207 通用文件寄存器 .................................................................. 22 T 异步操作时的时钟精确度 ................................................. 160 引脚配置说明 PIC16F883/886 .......................................................... 16 PIC16F884/887 .......................................................... 18 引脚图 PIC16F883/886, 28 引脚 (QFN) ............................ 4 PIC16F883/886, 28 引脚 T1CON 寄存器 ................................................................... 79 T2CON 寄存器 ................................................................... 82 Timer0 ................................................................................. 73 工作原理 ..................................................................... 73 规范 .......................................................................... 260 T0CKI .......................................................................... 74 DS41291E_CN 第 320 页 W WCOL ............................................................... 196, 198, 201 WCOL 状态标志 ............................................... 196, 198, 201 WDTCON 寄存器 ............................................................. 225 WPUB 寄存器 .................................................................... 49 VREF。参见 ADC 参考电压 WWW 地址 ....................................................................... 323 WWW 在线技术支持 .......................................................... 12 X 响应时间 ............................................................................ 85 休眠 唤醒 ......................................................................... 226 使用中断唤醒 ........................................................... 226 选项寄存器 ......................................................................... 30 Y 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 (PDIP、 SOIC 和 SSOP) .......................................... 3 PIC16F884/887, 40 引脚 (PDIP) .............................. 6 PIC16F884/887, 44 引脚 (QFN) ............................ 8 PIC16F884/887, 44 引脚 (TQFP) ........................ 10 因特网址 ........................................................................... 323 预分频器 切换预分频器分配 ...................................................... 74 WDT/Timer0 共用 ...................................................... 74 Z 在线串行编程 (ICSP) .................................................... 227 在线调试器 ....................................................................... 229 增强型捕捉 / 比较 /PWM ................................................... 124 增强型捕捉 / 比较 /PWM (ECCP) 增强型 PWM 模式 直通电流 .......................................................... 144 增强型捕捉 / 比较 /PWM (ECCP) 规范.......................................................................... 261 增强型 PWM 模式 .................................................... 132 半桥模式 .......................................................... 135 半桥应用 .......................................................... 135 半桥应用示例 ................................................... 144 可编程死区延迟 ................................................ 144 启动注意事项 ................................................... 140 全桥模式 .......................................................... 136 全桥输出模式下的方向更改 .............................. 138 全桥应用 .......................................................... 136 输出关系图 ....................................................... 134 输出关系 (高电平有效和低电平有效) ............ 133 自动关闭 .......................................................... 141 自动重启 .......................................................... 143 增强型捕捉 / 比较器 /PWM (ECCP) Timer 资源................................................................ 124 增强型通用同步 / 异步收发器 (EUSART) ..................... 151 振荡器 RCIO ........................................................................... 61 相关的寄存器 ....................................................... 72, 80 振荡器参数 ....................................................................... 256 振荡器规范 ....................................................................... 255 振荡器模块 ......................................................................... 61 EC ............................................................................... 61 HFINTOSC.................................................................. 61 HS ............................................................................... 61 INTOSC ...................................................................... 61 INTOSCIO................................................................... 61 LFINTOSC .................................................................. 61 LP................................................................................ 61 RC............................................................................... 61 XT ............................................................................... 61 振荡器起振延时定时器 (OST) 规范 .......................................................................... 259 振荡器切换 故障保护时钟监视 ...................................................... 71 双速时钟启动 ............................................................. 69 指令格式 ........................................................................... 231 指令集 .............................................................................. 231 ADDLW ..................................................................... 233 ADDWF..................................................................... 233 ANDLW ..................................................................... 233 ANDWF..................................................................... 233 BCF........................................................................... 233 BSF ........................................................................... 233 BTFSC ...................................................................... 234 BTFSS ...................................................................... 233 CALL ......................................................................... 234 CLRF......................................................................... 234 2008 Microchip Technology Inc. CLRW ....................................................................... 234 CLRWDT .................................................................. 234 COMF ....................................................................... 234 DECF........................................................................ 234 GOTO ....................................................................... 235 INCF ......................................................................... 235 INCFSZ..................................................................... 235 IORLW...................................................................... 235 IORWF...................................................................... 235 MOVF ....................................................................... 236 MOVLW .................................................................... 236 MOVWF.................................................................... 236 NOP.......................................................................... 236 RETFIE..................................................................... 237 RETLW ..................................................................... 237 RETURN................................................................... 237 RLF........................................................................... 238 RRF .......................................................................... 238 SLEEP ...................................................................... 238 SWAPF..................................................................... 239 SUBLW..................................................................... 238 SUBWF..................................................................... 239 XORLW .................................................................... 239 XORWF .................................................................... 239 总表 ......................................................................... 232 直流特性 工业级 ...................................................................... 249 工业级和扩展级 ....................................... 247, 248, 251 扩展级 ...................................................................... 250 直通电流 .......................................................................... 144 中断 ................................................................................. 220 ADC .......................................................................... 103 电平变化时中断 ......................................................... 47 电平变化中断 ............................................................. 47 PORTB 电平变化中断 .............................................. 221 RB0/INT.................................................................... 220 TMR0........................................................................ 221 TMR1.......................................................................... 78 现场保护 .................................................................. 223 相关的寄存器 ........................................................... 222 重复启动条件期间的总线冲突 .......................................... 206 主控模式 .......................................................................... 193 主控模式支持 ................................................................... 193 主控同步串行端口 (MSSP)。 参见 MSSP DS41291E_CN 第 321 页 PIC16F882/883/884/886/887 注: DS41291E_CN 第 322 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 MICROCHIP 网站 客户支持 Microchip 网站 (www.microchip.com)为客户提供在 线支持。客户可通过该网站方便地获取文件和信息。只 要使用常用的因特网浏览器即可访问。网站提供以下信 息: Microchip 产品的用户可通过以下渠道获得帮助: • 产品支持——数据手册和勘误表、应用笔记和样本 程序、设计资源、用户指南以及硬件支持文档、最 新的软件版本以及存档软件 • 一般技术支持——常见问题 (FAQ)、技术支持请 求、在线讨论组以及 Microchip 顾问计划成员名单 • Microchip 业务——产品选型和订购指南、最新 Microchip 新闻稿、研讨会和活动安排表、 Microchip 销售办事处、代理商以及工厂代表列表 • • • • 代理商或代表 当地销售办事处 应用工程师 (FAE) 技术支持 客户应联系其代理商、代表或应用工程师 (FAE)寻求 支持。当地销售办事处也可为客户提供帮助。本文档后 附有销售办事处的联系方式。 也可通过 http://support.microchip.com 获得网上技 术支持。 变更通知客户服务 Microchip 的 变 更 通 知 客 户 服 务 有 助 于 客户了解 Microchip 产品的最新信息。注册客户可在他们感兴趣 的某个产品系列或开发工具发生变更、更新、发布新版 本或勘误表时,收到电子邮件通知。 欲注册,请登录 Microchip 网站 www.microchip.com, 点击“变更通知客户(Customer Change Notification)” 服务后按照注册说明完成注册。 2008 Microchip Technology Inc. DS41291E_CN 第 323 页 PIC16F882/883/884/886/887 读者反馈表 我们努力为您提供最佳文档,以确保您能够成功使用 Microchip 产品。如果您对文档的组织、条理性、主题及其他有助 于提高文档质量的方面有任何意见或建议,请填写本反馈表并传真给我公司 TRC 经理,传真号码为 86-21-5407-5066。 请填写以下信息,并从下面各方面提出您对本文档的意见。 致: TRC 经理 总页数 ________ 关于: 读者反馈 发自: 姓名 公司 地址 国家 / 省份 / 城市 / 邮编 电话:(______) __________________ 传真:(______)__________________ 应用(选填): 您希望收到回复吗?是 器件: 否 PIC16F882/883/884/886/887 文献编号: DS41291E_CN 问题: 1. 本文档中哪些部分最有特色? 2. 本文档是否满足了您的软硬件开发要求?如何满足的? 3. 您认为本文档的组织结构便于理解吗?如果不便于理解,那么问题何在? 4. 您认为本文档应该添加哪些内容以改善其结构和主题? 5. 您认为本文档中可以删减哪些内容,而又不会影响整体使用效果? 6. 本文档中是否存在错误或误导信息?如果存在,请指出是什么信息及其具体页数。 7. 您认为本文档还有哪些方面有待改进? DS41291E_CN 第 324 页 2008 Microchip Technology Inc. PIC16F882/883/884/886/887 产品标识体系 欲订货或获取价格、交货等信息,请与我公司生产厂或销售办事处联系。 X /XX XXX 温度范围 封装 模板 器件编号 器件 示例: a) b) 器件: PIC16F883F(1), PIC16F883FT(1, 2), PIC16F884F(1), PIC16F884FT(1, 2), PIC16F886F(1), PIC16F886FT(1, 2), PIC16F887F(1), PIC16F887FT(1, 2) VDD 范围为 2.0V 至 5.5V 温度范围: I E 封装: ML P PT SO SP SS 模板: PIC16F883-E/P 301 = 扩展温度级, PDIP 封 装, 20 MHz, QTP 模板 #301 PIC16F883-I/SO = 工业温度级, SOIC 封装, 20 MHz = -40°C 至 +85°C (工业级) = -40°C 至+125°C (扩展级) = = = = = = 正方扁平无引脚封装 (QFN) 塑封 DIP 塑封薄型正方扁平封装 (TQFP) 塑封小外型封装 (SOIC)(7.50 mm) 微型塑封 DIP 塑封缩小型小外形封装 注 1: 2: F = 标准电压范围 T = 仅卷带式 SSOP、 SOIC 和QFN 封装。 QTP、 SQTP、代码或特殊要求 (其他情况空白) 2008 Microchip Technology Inc. DS41291E_CN 第 325 页 全球销售及服务网点 美洲 亚太地区 亚太地区 欧洲 公司总部 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 亚太总部 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 澳大利亚 Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 奥地利 Austria - Wels Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 印度 India - Bangalore Tel: 91-80-4182-8400 Fax: 91-80-4182-8422 丹麦 Denmark-Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 印度 India - New Delhi Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 法国 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 印度 India - Pune Tel: 91-20-2566-1512 Fax: 91-20-2566-1513 德国 Germany - Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 日本 Japan - Yokohama Tel: 81-45-471- 6166 Fax: 81-45-471-6122 意大利 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781 亚特兰大 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 中国 - 北京 Tel: 86-10-8528-2100 Fax: 86-10-8528-2104 中国 - 成都 Tel: 86-28-8665-5511 Fax: 86-28-8665-7889 中国 - 香港特别行政区 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-27-5980-5300 Fax: 86-27-5980-5118 中国 - 厦门 Tel: 86-592-238-8138 Fax: 86-592-238-8130 中国 - 西安 Tel: 86-29-8833-7252 Fax: 86-29-8833-7256 韩国 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 荷兰 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 马来西亚 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 中国 - 珠海 Tel: 86-756-321-0040 Fax: 86-756-321-0049 台湾地区 - 高雄 Tel: 886-7-536-4818 Fax: 886-7-536-4803 台湾地区 - 台北 Tel: 886-2-2500-6610 Fax: 886-2-2508-0102 台湾地区 - 新竹 Tel: 886-3-572-9526 Fax: 886-3-572-6459 DS41291E_CN 第 326 页 01/02/08 2008 Microchip Technology Inc.