MIC PIC16F887

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
&#xD1;
&#xD1;
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. ሎᇌD੠E1ϡ৿ล῵ⱘ↯䖍៪さ䍋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.ሎᇌD੠E1ϡࣙᣀล῵ⱘ↯䖍੠さ䍋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. ሎᇌD੠E1ϡࣙ৿ล῵ⱘ↯䖍៪さ䍋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. ሎᇌD੠E1ϡࣙ৿ล῵ⱘ↯䖍៪さ䍋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. ሎᇌD1੠E1ϡࣙ৿ล῵ⱘ↯䖍៪さ䍋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.