ETC PIC16L1512

PIC16(L)F1512/1513
数据手册
采用 XLP 技术的
28 引脚闪存单片机
 2012 Microchip Technology Inc.
初稿
DS41624A_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 徽标、 dsPIC、
KEELOQ、 KEELOQ 徽标、 MPLAB、 PIC、 PICmicro、
PICSTART、 PIC32 徽标、 rfPIC 和 UNI/O 均为 Microchip
Technology Inc. 在美国和其他国家或地区的注册商标。
FilterLab、 Hampshire、 HI-TECH C、 Linear Active
Thermistor、MXDEV、MXLAB、SEEVAL 和 The Embedded
Control Solutions Company 均为 Microchip Technology Inc.
在美国的注册商标。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便
利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或
暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用
性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。如果将 Microchip 器件用于生命
维持和 / 或生命安全应用,一切风险由买方自负。买方同意在
由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障
Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识
产权保护下,不得暗中或以其他方式转让任何许可证。
Analog-for-the-Digital Age、 Application Maestro、 chipKIT、
chipKIT 徽标、 CodeGuard、 dsPICDEM、 dsPICDEM.net、
dsPICworks、 dsSPEAK、 ECAN、 ECONOMONITOR、
FanSense、 HI-TIDE、 In-Circuit Serial Programming、
ICSP、 Mindi、 MiWi、 MPASM、 MPLAB Certified 徽标、
MPLIB、MPLINK、mTouch、Omniscient Code Generation、
PICC、 PICC-18、 PICDEM、 PICDEM.net、 PICkit、
PICtail、 REAL ICE、 rfLAB、 Select Mode、 Total
Endurance、 TSHARC、 UniWinDriver、 WiperLock 和
ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地
区的商标。
SQTP 是 Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。
© 2012, Microchip Technology Inc. 版权所有。
ISBN:978-1-62076-248-6
Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州
Gresham 的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和
印度的设计中心均通过了 ISO/TS-16949:2009 认证。 Microchip 的
PIC® MCU 与 dsPIC® DSC、KEELOQ® 跳码器件、串行 EEPROM、单片
机外设、非易失性存储器和模拟产品严格遵守公司的质量体系流程。
此外, Microchip 在开发系统的设计和生产方面的质量体系也已通过了
ISO 9001:2000 认证。
QUALITY MANAGEMENT SYSTEM
CERTIFIED BY DNV
== ISO/TS 16949 ==
DS41624A_CN 第 2 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
采用 XLP 技术的 28 引脚闪存单片机
高性能 RISC CPU:
采用 nanoWatt XLP 的超低功耗管理
PIC16LF1512/3:
•
•
•
•
•
优化的 C 编译器架构
仅需 49 条指令
可寻址最大 7 KB 的线性程序存储空间
可寻址最大 256 字节的线性数据存储空间
工作速度:
- DC – 20 MHz 时钟输入 (2.5V 时)
- DC – 16 MHz 时钟输入 (1.8V 时)
- DC – 200 ns 指令周期
• 带有自动现场保护的中断功能
• 带有可选上溢 / 下溢复位的 16 级深硬件堆栈
• 直接、间接和相对寻址模式:
- 两个完全 16 位文件选择寄存器 (File Select
Register, FSR)
- FSR 可以读取程序和数据存储器
•
•
•
•
单片机特性:
• 工作电压范围:
- 2.3V-5.5V (PIC16F1512/3)
- 1.8V-3.6V (PIC16LF1512/3)
• 可在软件控制下自编程
• 上电复位 (Power-on Reset, POR)
• 上电延时定时器 (Power-up Timer, PWRT)
• 可编程低功耗欠压复位 (Low-Power Brown-Out
Reset, LPBOR)
• 扩展型看门狗定时器 (Watchdog Timer, WDT)
• 通过两个引脚进行在线串行编程 (In-Circuit
Serial Programming™, ICSP™)
• 通过两个引脚进行在线调试 (In-Circuit Debug,
ICD)
• 增强型低电压编程 (Low-Voltage Programming,
LVP)
• 可编程代码保护
• 低功耗休眠模式
• 128 字节高耐用性闪存:
- 闪存可经受 100,000 次写操作 (最小值)
灵活的振荡器结构:
• 16 MHz 内部振荡器模块:
- 工厂校准至 ± 1% (典型值)
- 可通过软件选择频率范围:31 kHz 至 16 MHz
• 31 kHz 低功耗内部振荡器
• 外部振荡器模块具有:
- 4 种晶振 / 谐振器模式,频率最高为 20 MHz
- 3 种外部时钟模式,频率最高为 20 MHz
• 故障保护时钟监视器:
- 当外设时钟停止时可使器件安全关闭
• 双速振荡器启动
• 振荡器起振定时器 (Oscillator Start-up Timer,
OST)
外设特点:
• 多达 25 个 I/O 引脚 (其中 1 个仅用作输入引脚):
- 高灌 / 拉电流:25 mA/25 mA
- 可单独编程的弱上拉
- 可单独编程的电平变化中断
(Interrupt-On-Change, IOC)引脚
• Timer0:带有 8 位预分频器的 8 位定时器 / 计数器
• 增强型 Timer1:
- 带有预分频器的 16 位定时器 / 计数器
- 外部门控输入模式
- 低功耗 32 kHz 辅助振荡器驱动器
• Timer2:带有 8 位周期寄存器、预分频器和后分频
器的 8 位定时器 / 计数器
• 两个捕捉 / 比较 (Capture/Compare, CCP)模块:
• 带有 SPI 和 I2CTM 的主同步串行口 (Master
Synchronous Serial Port, MSSP):
- 7 位地址掩码
- 兼容 SMBus/PMBusTM
• 增强型通用同步 / 异步收发器 (Enhanced
Universal Synchronous Asynchronous Receiver
Transmitter, EUSART)模块:
- 兼容 RS-232、 RS-485 和 LIN
- 自动波特率检测
- 接收到启动位时自动唤醒
模拟特性:
• 模数转换器 (Analog-to-Digital Converter,
ADC):
- 10 位分辨率
- 多达 17 路通道
- 特殊事件触发器
- 可在休眠模式下进行转换
- 硬件电容分压器 (Hardware Capacitive
Voltage Divider, CVD)
- 双采样转换
- 2 个结果寄存器
- 反向采集
- 7 位预充电定时器
- 7 位采集定时器
- 两个保护环输出驱动器
- 可调采样 / 保持电容阵列
• 参考电压模块:
- 具有 1.024V、 2.048V 和 4.096V 输出的固定
参考电压 (Fixed Voltage Reference, FVR)
• 集成温度指示器
 2012 Microchip Technology Inc.
休眠模式:20 nA (1.8V 时,典型值)
看门狗定时器:300 nA (1.8V 时,典型值)
辅助振荡器:600 nA (32 kHz、 1.8V 时,典型值)
工作电流:30 A/MHz (1.8V 时,典型值)
初稿
DS41624A_CN第 3 页
PIC16(L)F1512/3
PIC16(L)F151X/152X 系列类型
闪存程序存储器
(字)
数据 SRAM
(字节)
I/O(2)
10 位
(通道数)
超前控制
定时器
(8/16 位)
EUSART
MSSP
(I2C™/SPI)
CCP
调试 (1)
XLP
PIC16(L)F1512
PIC16(L)F1513
PIC16(L)F1516
PIC16(L)F1517
PIC16(L)F1518
PIC16(L)F1519
PIC16(L)F1526
PIC16(L)F1527
数据手册索引
器件
ADC
(1)
(1)
(2)
(2)
(2)
(2)
(3)
(3)
2048
4096
8192
8192
16384
16384
8192
16384
128
256
512
512
1024
1024
768
1536
25
25
25
36
25
36
54
54
17
17
17
28
17
28
30
30
有
有
无
无
无
无
无
无
2/1
2/1
2/1
2/1
2/1
2/1
6/3
6/3
1
1
1
1
1
1
2
2
1
1
1
1
1
1
2
2
2
2
2
2
2
2
10
10
I
I
I
I
I
I
I
I
有
有
有
有
有
有
有
有
1: I - 调试中,集成在芯片上; H - 调试中,需要调试头。
2: 其中一个引脚仅用作输入引脚。
数据手册索引:(本文档仅介绍未用阴影表示的器件。)
1: 未来产品
PIC16(L)F1512/13 数据手册, 28 引脚 8 位闪存单片机。
2: DS41452B_CN
PIC16(L)F1516/7/8/9 数据手册, 28/40/44 引脚 8 位闪存 MCU。
3: DS41458
PIC16(L)F1526/27 数据手册, 64 引脚 8 位闪存 MCU。
注
图 1:
PIC16(L)F1512/3 的 28 引脚 SPDIP、 SOIC 和 SSOP 封装图
28 引脚 SPDIP、SOIC 和 SSOP
DS41624A_CN第 4 页
1
28
RB7/ICSPDAT/ICDDAT
RA0
2
27
RB6/ICSPCLK/ICDCLK
RA1
3
26
RB5
RA2
4
25
RB4
RA3
5
24
RB3
RA4
6
23
RB2
RA5
7
RB1
VSS
8
22
21
RA7
9
20
VDD
RA6
10
19
VSS
RC0
11
18
RC7
RC1
12
17
RC6
RC2
13
16
RC5
RC3
14
15
RC4
PIC16F1512/3
PIC16LF1512/3
VPP/MCLR/RE3
初稿
RB0
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 2:
PIC16(L)F1512/3 的 28 引脚 UQFN (4X4)封装图
28
27
26
25
24
23
22
RA1
RA0
RE3/MCLR/VPP
RB7/ICSPDAT/ICDDAT
RB6/ICSPCLK/ICDCLK
RB5
RB4
28 引脚 UQFN
PIC16F1512/3
PIC16LF1512/3
8
9
10
11
12
13
14
1
2
3
4
5
6
7
21
20
19
18
17
16
15
RB3
RB2
RB1
RB0
VDD
VSS
RC7
RC0
RC1
RC2
RC3
RC4
RC5
RC6
RA2
RA3
RA4
RA5
VSS
RA7
RA6
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 5 页
PIC16(L)F1512/3
定时器
CCP
EUSART
MSSP
27
AN0
—
—
—
SS(2)
—
—
—
RA1
3
28
AN1
—
—
—
—
—
—
—
基本功能
A/D
2
上拉
28 引脚 UQFN
RA0
中断
28 引脚 SPDIP、
SOIC 和 SSOP
28 引脚分配表 (PIC16(L)F1512/3)
I/O
表 1:
RA2
4
1
AN2
—
—
—
—
—
—
—
RA3
5
2
AN3/VREF+
—
—
—
—
—
—
—
RA4
6
3
—
T0CKI
—
—
—
—
—
—
RA5
7
4
AN4
—
—
—
SS(1)
—
—
VCAP
RA6
10
7
—
—
—
—
—
—
—
OSC2/CLKOUT
RA7
9
6
—
—
—
—
—
—
—
OSC1/CLKIN
RB0
21
18
AN12
—
—
—
—
INT/IOC
有
—
RB1
22
19
AN10
—
—
—
—
IOC
有
—
RB2
23
20
AN8
—
—
—
—
IOC
有
—
RB3
24
21
AN9
—
CCP2(2)
—
—
IOC
有
—
RB4
25
22
AN11
ADOUT
—
—
—
—
IOC
有
—
RB5
26
23
AN13
T1G
—
—
—
IOC
有
—
RB6
27
24
ADGRDA
—
—
—
—
IOC
有
ICSPCLK/ICDCLK
RB7
28
25
ADGRDB
—
—
—
—
IOC
11
8
—
SOSCO/T1CKI
—
—
—
—
有
—
ICSPDAT/ICDDAT
RC0
RC1
12
9
—
SOSCI
CCP2(1)
—
—
—
—
—
—
RC2
13
10
AN14
—
CCP1
—
—
—
—
—
RC3
14
11
AN15
—
—
—
SCK/SCL
—
—
—
RC4
15
12
AN16
—
—
—
SDI/SDA
—
—
—
RC5
16
13
AN17
—
—
—
SDO
—
—
—
RC6
17
14
AN18
—
—
TX/CK
—
—
—
—
RC7
18
15
AN19
—
—
RX/DT
—
—
—
—
RE3
1
26
—
—
—
—
—
—
20
17
—
—
—
—
—
—
有
—
MCLR/VPP
VDD
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
VSS
NC
注
8,19 5,16
—
—
—
1: 使用 APFCON 寄存器选择的外设引脚位置。默认位置。
2: 使用 APFCON 寄存器选择的外设引脚位置。备用位置。
DS41624A_CN第 6 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
目录
1.0 器件概述 ....................................................................................................................................................................................... 9
2.0 增强型中档 CPU......................................................................................................................................................................... 13
3.0 存储器构成 ................................................................................................................................................................................. 15
4.0 器件配置 ..................................................................................................................................................................................... 37
5.0 振荡器模块 (带故障保护时钟监视器)...................................................................................................................................... 43
6.0 复位 ............................................................................................................................................................................................ 59
7.0 中断 ............................................................................................................................................................................................ 67
8.0 掉电模式 (休眠)....................................................................................................................................................................... 79
9.0 低压差 (LDO)稳压器 .............................................................................................................................................................. 83
10.0 看门狗定时器 (WDT).............................................................................................................................................................. 85
11.0 闪存程序存储器控制 ................................................................................................................................................................... 89
12.0 I/O 端口 .................................................................................................................................................................................... 105
13.0 电平变化中断............................................................................................................................................................................ 121
14.0 固定参考电压 (FVR)............................................................................................................................................................. 125
15.0 温度指示器模块 ........................................................................................................................................................................ 127
16.0 模数转换器 (ADC)模块 ........................................................................................................................................................ 129
17.0 Timer0 模块 .............................................................................................................................................................................. 163
18.0 带门控控制的 Timer1 模块........................................................................................................................................................ 167
19.0 Timer2 模块 .............................................................................................................................................................................. 179
20.0 主同步串行口 (MSSP)模块 .................................................................................................................................................. 183
21.0 捕捉 / 比较 /PWM 模块 ............................................................................................................................................................. 235
22.0 增强型通用同步 / 异步收发器 (EUSART).............................................................................................................................. 245
23.0 在线串行编程 (ICSP™)........................................................................................................................................................ 275
24.0 指令集汇总 ............................................................................................................................................................................... 279
25.0 电气规范 ................................................................................................................................................................................... 293
26.0 直流和交流特性图表 ................................................................................................................................................................. 321
27.0 开发支持 ................................................................................................................................................................................... 323
28.0 封装信息 ................................................................................................................................................................................... 327
Microchip 网站.................................................................................................................................................................................... 345
变更通知客户服务 .............................................................................................................................................................................. 345
客户支持............................................................................................................................................................................................. 345
读者反馈表 ......................................................................................................................................................................................... 346
产品标识体系 ..................................................................................................................................................................................... 347
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 7 页
PIC16(L)F1512/3
致客户
我们旨在提供最佳文档供客户正确使用 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 上注册。
DS41624A_CN第 8 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
1.0
器件概述
本数据手册介绍了 PIC16(L)F1512/3 器件。该器件系列
采用 28 引脚封装形式。图 1-1 给出了 PIC16(L)F1512/3
器件的框图。表 1-2 给出了引脚说明。
关于每款器件的可用外设,请参见表 1-1。
外设
PIC16(L)F1513
器件外设汇总
PIC16(L)F1512
表 1-1:
模数转换器 (ADC)
●
●
固定参考电压 (FVR)
●
●
温度指示器
●
●
CCP1
●
●
CCP2
●
●
EUSART
●
●
MSSP
●
●
Timer0
●
●
Timer1
●
●
Timer2
●
●
捕捉 / 比较 /PWM 模块
EUSART
主同步串行口
定时器
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 9 页
PIC16(L)F1512/3
图 1-1:
PIC16(L)F1512/3 框图
程序
闪存存储器
RAM
OSC2/CLKOUT
OSC1/CLKIN
PORTA
PORTB
时序
发生
CPU
INTRC
振荡器
PORTC
(图 2-1)
MCLR
注
1:
2:
DS41624A_CN第 10 页
PORTE
CCP1
Timer0
温度
指示器
10 位
ADC
FVR
CCP2
MSSP
Timer1
Timer2
EUSART
关于外设的更多信息,请参见适用章节。
关于特定器件的可用外设,请参见表 1-1。
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 1-2:
PIC16(L)F1512/3 引脚说明
名称
RA0/AN0/SS(2)
RA1/AN1
RA2/AN2
RA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS(1)/VCAP
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN
RB0/AN12/INT
RB1/AN10
RB2/AN8
RB3/AN9/CCP2(2)
RB4/AN11/ADOUT
RB5/AN13/T1G
RB6/ICSPCLK/ADGRDA
图注:
注
功能
输入
类型
RA0
TTL
AN0
AN
SS
ST
RA1
TTL
AN1
AN
RA2
TTL
AN2
AN
RA3
TTL
AN3
AN
VREF+
AN
RA4
TTL
T0CKI
ST
RA5
TTL
AN4
AN
输出
类型
CMOS 通用 I/O。
—
A/D 通道 0 的输入。
—
从选择输入。
CMOS 通用 I/O。
—
A/D 通道 1 的输入。
CMOS 通用 I/O。
—
A/D 通道 2 的输入。
CMOS 通用 I/O。
—
A/D 通道 3 的输入。
—
A/D 正参考电压输入。
CMOS 通用 I/O。
—
Timer0 时钟输入。
CMOS 通用 I/O。
—
A/D 通道 4 的输入。
SS
ST
—
VCAP
电源
电源
RA6
TTL
OSC2
—
CLKOUT
—
RA7
TTL
CMOS FOSC/4 输出。
CMOS 通用 I/O。
OSC1
XTAL
—
ST
—
RB0
TTL
AN12
AN
ST
RB1
TTL
AN10
AN
RB2
TTL
AN8
AN
RB3
TTL
AN9
AN
从选择输入。
稳压器的滤波电容 (仅限 PIC16F1512/3)。
CMOS 通用 I/O。
XTAL 晶振 / 谐振器 (LP、 XT 和 HS 模式)。
CLKIN
INT
说明
晶振 / 谐振器 (LP、 XT 和 HS 模式)。
外部时钟输入 (EC 模式)。
CMOS 带 IOC 和 WPU 的通用 I/O。
—
A/D 通道 12 的输入。
—
外部中断。
CMOS 带 IOC 和 WPU 的通用 I/O。
—
A/D 通道 10 的输入。
CMOS 带 IOC 和 WPU 的通用 I/O。
—
A/D 通道 8 的输入。
CMOS 带 IOC 和 WPU 的通用 I/O。
—
A/D 通道 9 的输入。
CCP2
ST
RB4
TTL
CMOS 捕捉 / 比较 /PWM2。
CMOS 带 IOC 和 WPU 的通用 I/O。
AN11
AN
—
A/D 通道 11 的输入。
ADOUT
CMOS
—
带 CVD 输出的 A/D。
RB5
TTL
AN13
AN
CMOS 带 IOC 和 WPU 的通用 I/O。
—
A/D 通道 13 的输入。
T1G
ST
RB6
TTL
ICSPCLK
ST
Timer1 门控输入。
CMOS 带 IOC 和 WPU 的通用 I/O。
CMOS 在线数据 I/O。
ADGRDA
—
CMOS 保护环输出 A。
—
AN = 模拟输入或输出
CMOS= CMOS 兼容输入或输出
TTL = TTL 兼容输入
ST
= 带 CMOS 电平的施密特触发器输入
HV = 高电压
XTAL = 晶振
1: 使用 APFCON 寄存器 (寄存器 12-1)选择的外设引脚位置。默认位置。
2: 使用 APFCON 寄存器 (寄存器 12-1)选择的外设引脚位置。备用位置。
 2012 Microchip Technology Inc.
初稿
OD = 漏极开路
I2C™ = 带 I2C 电平的施密特触发器
输入
DS41624A_CN第 11 页
PIC16(L)F1512/3
表 1-2:
PIC16(L)F1512/3 引脚说明 (续)
名称
RB7/ICSPDAT/ADGRDB
RC0/SOSCO/T1CKI
RC1/SOSCI/CCP2(1)
RC2/AN14/CCP1
RC3/AN15/SCK/SCL
RC4/AN16/SDI/SDA
RC5/AN17/SDO
RC6/AN18/TX/CK
RC7/AN19/RX/DT
RE3/MCLR/VPP
功能
输入
类型
RB7
TTL
ICSPDAT
ST
ADGRDB
—
RC0
ST
SOSCO
—
T1CKI
ST
RC1
ST
SOSCI
—
CCP2
ST
RC2
ST
AN14
AN
CCP1
ST
RC3
ST
AN15
AN
SCK
ST
SCL
I2C™
RC4
ST
AN16
AN
SDI
ST
SDA
I2C™
RC5
ST
AN17
AN
SDO
—
RC6
ST
AN18
AN
TX
—
CK
ST
RC7
ST
AN19
AN
RX
ST
DT
ST
输出
类型
说明
CMOS 带 IOC 和 WPU 的通用 I/O。
CMOS ICSP™ 数据 I/O。
CMOS 保护环输出 B。
CMOS 通用 I/O。
XTAL 辅助振荡器连接。
—
Timer1 时钟输入。
CMOS 通用 I/O。
XTAL 辅助振荡器连接。
CMOS 捕捉 / 比较 /PWM2。
CMOS 通用 I/O。
—
A/D 通道 14 的输入。
CMOS 捕捉 / 比较 /PWM1。
CMOS 通用 I/O。
—
A/D 通道 15 的输入。
CMOS SPI 时钟。
OD
I2C™ 时钟。
CMOS 通用 I/O。
—
A/D 通道 16 的输入。
—
SPI 数据输入。
I2C™ 数据输入 / 输出。
CMOS 通用 I/O。
—
A/D 通道 17 的输入。
OD
CMOS SPI 数据输出。
CMOS 通用 I/O。
—
A/D 通道 18 的输入。
CMOS USART 异步发送。
CMOS USART 同步时钟。
CMOS 通用 I/O。
—
A/D 通道 19 的输入。
—
USART 异步输入。
CMOS USART 同步数据。
—
带 WPU 的通用输入。
RE3
ST
MCLR
ST
—
带内部上拉的主复位。
VPP
HV
—
编程电压。
VDD
VDD
电源
—
正电源。
VSS
VSS
电源
—
参考地。
图注:
注
AN = 模拟输入或输出
CMOS= CMOS 兼容输入或输出
TTL = TTL 兼容输入
ST
= 带 CMOS 电平的施密特触发器输入
HV = 高电压
XTAL = 晶振
1: 使用 APFCON 寄存器 (寄存器 12-1)选择的外设引脚位置。默认位置。
2: 使用 APFCON 寄存器 (寄存器 12-1)选择的外设引脚位置。备用位置。
DS41624A_CN第 12 页
初稿
OD = 漏极开路
I2C™ = 带 I2C 电平的施密特触发器
输入
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
2.0
增强型中档 CPU
本器件系列包含了增强型中档 8 位 CPU 内核。CPU 具
有 49 条指令。中断功能包含了自动现场保护功能。硬
件堆栈为 16 级深,具有上溢和下溢复位功能。器件提
供了直接寻址、间接寻址和相对寻址模式。用户可以通
过两个文件选择寄存器(FSR)来读取程序和数据存储
器。
•
•
•
•
自动中断现场保护
带有上溢和下溢的 16 级堆栈
文件选择寄存器
指令集
2.1
自动中断现场保护
在中断期间,器件会自动将一些寄存器保存到影子寄存
器中,从中断返回时则会恢复这些寄存器。这可以节省
堆栈空间和用户代码。更多信息,请参见第 7.5 节 “自
动现场保护”。
2.2
带有上溢和下溢的 16 级堆栈
这些器件具有 15 位宽、 16 字深的外部堆栈存储器。在
发生堆栈上溢或下溢时, PCON 寄存器中的相应位
(STKOVF 或 STKUNF)会置 1,如果使能复位,则会
导致软件复位。更多详细信息,请参见第 3.4 节 “堆
栈”。
2.3
文件选择寄存器
有两个 16 位文件选择寄存器 (FSR)。 FSR 可以访问
所有文件寄存器和程序存储器,支持对于所有存储器使
用同一个数据指针。当 FSR 指向程序存储器时,使用
INDF 的指令需要一个额外的指令周期,用于取数据。通
用存储器现在可以进行线性寻址,支持访问大于 80 字
节的连续数据。此外,还有一些支持 FSR 的新指令。更
多详细信息,请参见第 3.5 节 “间接寻址”。
2.4
指令集
增强型中档 CPU 具有 49 条指令,用于支持 CPU 的特
性。更多详细信息,请参见第 24.0 节 “指令集汇总”。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 13 页
PIC16(L)F1512/3
图 2-1:
内核框图
15
配置
15
MUX
闪存
程序
存储器
程序
总线
16
8 级堆栈
级堆栈
(15 位)
(13
14
RAM
读程序存储器
(PMR)
指令寄存器
12
RAM 地址
地址 MUX
间接
地址
7
直接地址
8
数据总线
程序计数器
5
12
12
BSR
FSR 寄存器
15
FSR0
寄存器
FSR
寄存器
FSR1
寄存器
FSR 寄存器
15
STATUS 寄存器
8
3
上电延时
定时器
指令
译码和
控制
OSC1/CLKIN
OSC2/CLKOUT
时序
发生
振荡器
起振定时器
上电
复位
看门狗
定时器
欠压
复位
MUX
ALU
8
W 寄存器
内部
振荡器
模块
VDD
DS41624A_CN第 14 页
VSS
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
3.0
3.1
存储器构成
程序存储器构成
增强型中档内核具有一个 15 位程序计数器,能够寻址
32K x 14 的程序存储空间。表 3-1 列出了这些器件已实
现的存储器大小。访问超出上述边界的存储单元,将回
到已实现的存储空间内。复位向量位于 0000h,而中断
向量位于 0004h (见图 3-1 和图 3-2)。
这些器件包含以下类型的存储器:
• 程序存储器
- 配置字
- 器件 ID
- 用户 ID
- 闪存程序存储器
• 数据存储器
- 内核寄存器
- 特殊功能寄存器
- 通用 RAM
- 公共 RAM
以下特性与程序存储器和数据存储器的访问和控制相关
联:
• PCL 和 PCLATH
• 堆栈
• 间接寻址
表 3-1:
器件大小和地址
器件
程序存储空间 (字)
最高程序存储器地址
PIC16F1512
PIC16LF1512
2,048
07FFh
PIC16F1513
PIC16LF1513
4,096
0FFFh
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 15 页
PIC16(L)F1512/3
图 3-1:
PIC16(L)F1512 程序存储器
映射和堆栈
图 3-2:
PC<14:0>
CALL, CALLW
RETURN, RETLW
Interrupt, RETFIE
片上
程序
存储器
PIC16(L)F1513 程序存储器
映射和堆栈
PC<14:0>
CALL, CALLW
RETURN, RETLW
Interrupt, RETFIE
15
15
堆栈深度 0
堆栈深度 1
堆栈深度 0
堆栈深度 1
堆栈深度 15
堆栈深度 15
复位向量
0000h
复位向量
0000h
中断向量
0004h
0005h
中断向量
0004h
0005h
Page 0
计满返回到 Page 0
计满返回到 Page
片上
程序
存储器
07FFh
0800h
Page 0
Page 1
计满返回到 Page 0
计满返回到 Page
07FFh
0800h
0FFFh
1000h
计满返回到 Page
计满返回到 Page 0
DS41624A_CN 第 16 页
计满返回到 Page 1
7FFFh
初稿
7FFFh
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
3.1.1
例 3-2:
将程序存储器作为数据进行读取
有两种方法来访问程序存储器中的常量。第一种方法是
使用 RETLW 指令表。第二种方法是设置某个 FSR,使
之指向程序存储器。
3.1.1.1
RETLW 指令
RETLW 指令可用于访问常量表。创建这种表的方法如
例 3-1 所示。
例 3-1:
RETLW 指令
constants
BRW
RETLW
RETLW
RETLW
RETLW
DATA0
DATA1
DATA2
DATA3
通过 FSR 访问程序存储器
constants
RETLW DATA0
;Index0 data
RETLW DATA1
;Index1 data
RETLW DATA2
RETLW DATA3
my_function
;… LOTS OF CODE…
MOVLW
LOW constants
MOVWF
FSR1L
MOVLW
HIGH constants
MOVWF
FSR1H
MOVIW 0[FSR1]
;THE PROGRAM MEMORY IS IN W
;Add Index in W to
;program counter to
;select data
;Index0 data
;Index1 data
my_function
;… LOTS OF CODE…
MOVLW
DATA_INDEX
CALL constants
;… THE CONSTANT IS IN W
通过 BRW 指令,可以非常简单地实现这种表。如果代码
必须保持对于前几代单片机的移植性,则 BRW 指令不可
用,所以必须使用先前的表读方法。
3.1.1.2
通过 FSR 间接读取
通过将 FSRxH 寄存器的 bit 7 置 1,并读取匹配的 INDFx
寄存器,可以将程序存储器作为数据存储器进行访问。
MOVIW 指令会将所寻址字的低 8 位放入 W 寄存器。对程
序存储器的写操作不能通过 INDF 寄存器执行。通过
FSR访问程序存储器的指令需要一个额外的指令周期才
能完成操作。例 3-2 给出了通过 FSR 访问程序存储器的
代码。
如果某个标号指向程序存储器中的存储单元, HIGH 伪
指令会将 bit<7> 置 1。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 17 页
PIC16(L)F1512/3
3.2
3.2.1
数据存储器构成
内核寄存器包含会直接影响基本操作的寄存器。内核寄
存器占用每个数据存储区的前 12 个地址 (地址
x00h/x08h 至 x0Bh/x8Bh)。表 3-2 列出了这些寄存器。
详细信息,请参见表 3-8。
数据存储器划分为 32 个存储区,每个存储区有 128 字
节。每个存储区都包含 (图 3-3):
• 12 个内核寄存器
• 20 个特殊功能寄存器 (Special Function
Register, SFR)
• 最多 80 字节的通用 RAM (General Purpose
RAM, GPR)
• 16 字节的公共 RAM
表 3-2:
内核寄存器
地址
x00h 或 x80h
x01h 或 x81h
x02h 或 x82h
x03h 或 x83h
x04h 或 x84h
x05h 或 x85h
x06h 或 x86h
x07h 或 x87h
x08h 或 x88h
x09h 或 x89h
x0Ah 或 x8Ah
x0Bh 或 x8Bh
工作存储区的选择通过向存储区选择寄存器 (Bank
Select Register,BSR)写入存储区编号来进行。未实现
的存储器将读为 0。所有数据存储器可以直接访问 (通
过使用文件寄存器的指令) ,也可以通过两个文件选择
寄存器 (FSR)间接访问。更多信息,请参见第 3.5 节
“间接寻址”。
数据存储器使用一个 12 位地址。地址的高 7 位用于定
义存储区地址,低 5 位用于选择该存储区中的寄存器
/RAM。
DS41624A_CN 第 18 页
内核寄存器
初稿
BANKx
INDF0
INDF1
PCL
STATUS
FSR0L
FSR0H
FSR1L
FSR1H
BSR
WREG
PCLATH
INTCON
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
3.2.1.1
STATUS 寄存器
例如,CLRF STATUS 将会清零高 3 位,并将 Z 位置 1。
这将使 STATUS 寄存器中的值成为 000u u1uu (其中
u = 不变)。
STATUS 寄存器如寄存器 3-1 所示,包括:
• ALU 的算术运算状态
• 复位状态
因此,建议仅使用 BCF, BSF, SWAPF 和 MOVWF 指令
来改变 STATUS 寄存器的值,因为这些指令不会影响任
何状态位。关于其他不影响任何状态位的指令,请参见
第 24.0 节 “指令集汇总”。
与任何其他寄存器一样,STATUS 寄存器可作为任何指
令的目标寄存器。如果一条影响 Z、 DC 或 C 位的指令
以 STATUS 寄存器作为目标寄存器,那么对这三个位的
写操作将被禁止。这些位根据器件逻辑被置 1 或清零。
而且, TO 和 PD 位均为不可写位。因此,当执行一条
将 STATUS 寄存器作为目标寄存器的指令时,运行结果
可能会与预想的不同。
寄存器 3-1:
U-0
—
注
1: 在减法运算中, C 和 DC 位分别作为借位
位和半借位位。
STATUS: 状态寄存器
U-0
—
U-0
R-1/q
R-1/q
R/W-0/u
R/W-0/u
R/W-0/u
—
TO
PD
Z
DC(1)
C(1)
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
q = 值取决于具体条件
bit 7-5
未实现: 读为 0
bit 4
TO:超时位
1 = 在上电或执行 CLRWDT 指令或 SLEEP 指令后
0 = 发生了 WDT 超时
bit 3
PD: 掉电位
1 = 在上电或执行 CLRWDT 指令后
0 = 执行 SLEEP 指令
bit 2
Z:全零标志位
1 = 算术运算或逻辑运算的结果为零
0 = 算术运算或逻辑运算的结果不为零
bit 1
DC:半进位 / 半借位位 (1)
1 = 结果的第 4 个低位发生了进位
0 = 结果的第 4 个低位未发生进位
bit 0
C:进位 / 借位位 (1)
1 = 结果的最高有效位发生了进位
0 = 结果的最高有效位未发生进位
注
1: 对于借位,极性是相反的。减法是通过加上第二个操作数的二进制补码来执行的。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 19 页
PIC16(L)F1512/3
3.2.2
图 3-3:
特殊功能寄存器
特殊功能寄存器是由应用对器件中外设功能所需操作进
行控制的寄存器。特殊功能寄存器占用每个数据存储区
中内核寄存器之后的 20 字节 (地址 x0Ch/x8Ch 至
x1Fh/x9Fh) 。本数据手册的相应外设章节中介绍了与
外设操作相关的寄存器。
3.2.3
7 位存储区偏移
通用 RAM
0Bh
0Ch
内核寄存器
(12 字节)
特殊功能寄存器
(最大 20 字节)
线性访问 GPR
1Fh
通用 RAM 可以通过 FSR 以非存储区方式访问。这可以
简化对大存储器结构的访问。更多信息,请参见第 3.5.2
节 “线性数据存储器”。
3.2.4
存储器区域
00h
每个数据存储区中有最大 80 字节的 GPR。特殊功能寄
存器占用每个数据存储区中内核寄存器之后的 20 字节
(地址 x0Ch/x8Ch 至 x1Fh/x9Fh)。
3.2.3.1
存储区分区
20h
公共 RAM
有 16 字节的公共 RAM 可以从所有存储区中进行访问。
通用 RAM
(最大 80 字节)
6Fh
70h
公共 RAM
(16 字节)
7Fh
3.2.5
器件存储器映射
PIC16(L)F1512/3 的存储器映射如表 3-4 至表 3-7 所示。
DS41624A_CN 第 20 页
初稿
 2012 Microchip Technology Inc.
 2012 Microchip Technology Inc.
表 3-3:
PIC16(L)F1512 存储器映射 (BANK 0-7)
BANK 0
BANK 1
初稿
01Fh
020h
PORTA
PORTB
PORTC
—
PORTE
PIR1
PIR2
—
—
TMR0
TMR1L
TMR1H
T1CON
T1GCON
TMR2
PR2
T2CON
—
—
08Bh
08Ch
08Dh
08Eh
08Fh
090h
091h
092h
093h
094h
095h
096h
097h
098h
099h
09Ah
09Bh
09Ch
09Dh
09Eh
09Fh
0A0h
通用
寄存器
80 字节
0BFh
0C0h
06Fh
070h
0EFh
0F0h
公共 RAM
07Fh
图注:
注
1:
0FFh
—
通用寄存器
32 字节
未实现
读为 0
公共 RAM
(快速操作存储区
70h – 7Fh)
10Bh
10Ch
10Dh
10Eh
10Fh
110h
111h
112h
113h
114h
115h
116h
117h
118h
119h
11Ah
11Bh
11Ch
11Dh
11Eh
11Fh
120h
LATA
LATB
LATC
—
—
—
—
—
—
—
BORCON
FVRCON
—
—
—
—
—
APFCON
—
—
18Bh
18Ch
18Dh
18Eh
18Fh
190h
191h
192h
193h
194h
195h
196h
197h
198h
199h
19Ah
19Bh
19Ch
19Dh
19Eh
19Fh
1A0h
17Fh
= 未实现的数据存储单元,读为 0。
仅限 PIC16F1512。
公共 RAM
(快速操作存储区
70h – 7Fh)
ANSELA
ANSELB
ANSELC
—
—
PMADRL
PMADRH
PMDATL
PMDATH
PMCON1
PMCON2
VREGCON(1)
—
RCREG
TXREG
SPBRGL
SPBRGH
RCSTA
TXSTA
BAUDCON
20Bh
20Ch
20Dh
20Eh
20Fh
210h
211h
212h
213h
214h
215h
216h
217h
218h
219h
21Ah
21Bh
21Ch
21Dh
21Eh
21Fh
220h
未实现
读为 0
1EFh
1F0h
1FFh
公共 RAM
(快速操作存储区
70h – 7Fh)
BANK 5
—
WPUB
—
—
WPUE
SSP1BUF
SSP1ADD
SSP1MSK
SSP1STAT
SSP1CON1
SSP1CON2
SSP1CON3
—
—
—
—
—
—
—
—
28Bh
28Ch
28Dh
28Eh
28Fh
290h
291h
292h
293h
294h
295h
296h
297h
298h
299h
29Ah
29Bh
29Ch
29Dh
29Eh
29Fh
2A0h
27Fh
公共 RAM
(快速操作存储区
70h – 7Fh)
—
—
—
—
—
CCPR1L
CCPR1H
CCP1CON
—
—
—
—
CCPR2L
CCPR2H
CCP2CON
—
—
—
—
—
30Bh
30Ch
30Dh
30Eh
30Fh
310h
311h
312h
313h
314h
315h
316h
317h
318h
319h
31Ah
31Bh
31Ch
31Dh
31Eh
31Fh
320h
未实现
读为 0
2EFh
2F0h
2FFh
公共 RAM
(快速操作存储区
70h – 7Fh)
BANK 7
380h
内核寄存器
(表 3-2)
内核寄存器
(表 3-2)
内核寄存器
(表 3-2)
未实现
读为 0
26Fh
270h
BANK 6
300h
280h
内核寄存器
(表 3-2)
内核寄存器
(表 3-2)
未实现
读为 0
16Fh
170h
BANK 4
200h
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
38Bh
38Ch
38Dh
38Eh
38Fh
390h
391h
392h
393h
394h
395h
396h
397h
398h
399h
39Ah
39Bh
39Ch
39Dh
39Eh
39Fh
3A0h
未实现
读为 0
36Fh
370h
37Fh
公共 RAM
(快速操作存储区
70h – 7Fh)
—
—
—
—
—
—
—
—
IOCBP
IOCBN
IOCBF
—
—
—
—
—
—
—
—
—
未实现
读为 0
3EFh
3F0h
3FFh
公共 RAM
(快速操作存储区
70h – 7Fh)
DS41624A_CN 第 21 页
PIC16(L)F1512/3
—
TRISA
TRISB
TRISC
—
TRISE
PIE1
PIE2
—
—
OPTION_REG
PCON
WDTCON
—
OSCCON
OSCSTAT
ADRES0L
ADRES0H
ADCON0
ADCON1
BANK 3
180h
内核寄存器
(表 3-2)
内核寄存器
(表 3-2)
内核寄存器
(表 3-2)
00Bh
00Ch
00Dh
00Eh
00Fh
010h
011h
012h
013h
014h
015h
016h
017h
018h
019h
01Ah
01Bh
01Ch
01Dh
01Eh
BANK 2
100h
080h
000h
PIC16(L)F1513 存储器映射 (BANK 0-7)
BANK 0
000h
BANK 1
080h
内核寄存器
(表 3-2)
初稿
00Bh
00Ch
00Dh
00Eh
00Fh
010h
011h
012h
013h
014h
015h
016h
017h
018h
019h
01Ah
01Bh
01Ch
01Dh
01Eh
PORTA
PORTB
PORTC
—
PORTE
PIR1
PIR2
—
—
TMR0
TMR1L
TMR1H
T1CON
T1GCON
TMR2
PR2
T2CON
—
—
01Fh
020h
—
内核寄存器
(表 3-2)
08Bh
08Ch
08Dh
08Eh
08Fh
090h
091h
092h
093h
094h
095h
096h
097h
098h
099h
09Ah
09Bh
09Ch
09Dh
09Eh
09Fh
0A0h
通用
寄存器
80 字节
06Fh
070h
 2012 Microchip Technology Inc.
07Fh
公共 RAM
(快速操作存储区
70h – 7Fh)
图注:
注
1:
BANK 2
100h
TRISA
TRISB
TRISC
—
TRISE
PIE1
PIE2
—
—
OPTION_REG
PCON
WDTCON
—
OSCCON
OSCSTAT
ADRES0L
ADRES0H
ADCON0
ADCON1
—
内核寄存器
(表 3-2)
10Bh
10Ch
10Dh
10Eh
10Fh
110h
111h
112h
113h
114h
115h
116h
117h
118h
119h
11Ah
11Bh
11Ch
11Dh
11Eh
11Fh
120h
通用
寄存器
80 字节
0EFh
0F0h
0FFh
公共 RAM
(快速操作存储区
70h – 7Fh)
BANK 3
180h
LATA
LATB
LATC
—
—
—
—
—
—
—
BORCON
FVRCON
—
—
—
—
—
APFCON
—
—
内核寄存器
(表 3-2)
18Bh
18Ch
18Dh
18Eh
18Fh
190h
191h
192h
193h
194h
195h
196h
197h
198h
199h
19Ah
19Bh
19Ch
19Dh
19Eh
19Fh
1A0h
通用
寄存器
80 字节
16Fh
170h
17Fh
= 未实现的数据存储单元,读为 0。
仅限 PIC16F1513。
公共 RAM
(快速操作存储区
70h – 7Fh)
BANK 4
200h
ANSELA
ANSELB
ANSELC
—
—
PMADRL
PMADRH
PMDATL
PMDATH
PMCON1
PMCON2
VREGCON(1)
—
RCREG
TXREG
SPBRG
SPBRGH
RCSTA
TXSTA
BAUDCON
内核寄存器
(表 3-2)
20Bh
20Ch
20Dh
20Eh
20Fh
210h
211h
212h
213h
214h
215h
216h
217h
218h
219h
21Ah
21Bh
21Ch
21Dh
21Eh
21Fh
220h
未实现
读为 0
1EFh
1F0h
1FFh
公共 RAM
(快速操作存储区
70h – 7Fh)
BANK 5
280h
—
WPUB
—
—
WPUE
SSP1BUF
SSP1ADD
SSP1MSK
SSP1STAT
SSP1CON1
SSP1CON2
SSP1CON3
—
—
—
—
—
—
—
—
内核寄存器
(表 3-2)
28Bh
28Ch
28Dh
28Eh
28Fh
290h
291h
292h
293h
294h
295h
296h
297h
298h
299h
29Ah
29Bh
29Ch
29Dh
29Eh
29Fh
2A0h
未实现
读为 0
26Fh
270h
27Fh
公共 RAM
(快速操作存储区
70h – 7Fh)
BANK 6
300h
—
—
—
—
—
CCPR1L
CCPR1H
CCP1CON
—
—
—
—
CCPR2L
CCPR2H
CCP2CON
—
—
—
—
—
内核寄存器
(表 3-2)
30Bh
30Ch
30Dh
30Eh
30Fh
310h
311h
312h
313h
314h
315h
316h
317h
318h
319h
31Ah
31Bh
31Ch
31Dh
31Eh
31Fh
320h
未实现
读为 0
2EFh
2F0h
2FFh
公共 RAM
(快速操作存储区
70h – 7Fh)
BANK 7
380h
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
内核寄存器
(表 3-2)
38Bh
38Ch
38Dh
38Eh
38Fh
390h
391h
392h
393h
394h
395h
396h
397h
398h
399h
39Ah
39Bh
39Ch
39Dh
39Eh
39Fh
3A0h
未实现
读为 0
36Fh
370h
37Fh
公共 RAM
(快速操作存储区
70h – 7Fh)
—
—
—
—
—
—
—
—
IOCBP
IOCBN
IOCBF
—
—
—
—
—
—
—
—
—
未实现
读为 0
3EFh
3F0h
3FFh
公共 RAM
(快速操作存储区
70h – 7Fh)
PIC16(L)F1512/3
DS41624A_CN 第 22 页
表 3-4:
 2012 Microchip Technology Inc.
表 3-5:
PIC16(L)F1512/3 存储器映射 (BANK 8-30)
BANK 8
400h
BANK 9
480h
内核寄存器
(表 3-2)
40Bh
40Ch
46Fh
470h
47Fh
内核寄存器
(表 3-2)
48Bh
48Ch
未实现
读为 0
公共 RAM
(快速操作存储区
70h – 7Fh)
4EFh
4F0h
4FFh
BANK 16
800h
初稿
公共 RAM
(快速操作存储区
70h – 7Fh)
8EFh
8F0h
8FFh
D0Bh
D0Ch
DS41624A_CN 第 23 页
公共 RAM
(快速操作存储区
70h – 7Fh)
CFFh
公共 RAM
(快速操作存储区
70h – 7Fh)
D7Fh
= 未实现的数据存储单元,读为 0。
A7Fh
DFFh
E6Fh
E70h
E7Fh
公共 RAM
(快速操作存储区
70h – 7Fh)
内核寄存器
(表 3-2)
B8Bh
B8Ch
未实现
读为 0
B6Fh
B70h
B7Fh
公共 RAM
(快速操作存储区
70h – 7Fh)
未实现
读为 0
BEFh
BF0h
BFFh
BANK 30
F0Bh
F0Ch
BANK 31
内核寄存器
(表 3-2)
F8Bh
F8Ch
未实现
读为 0
F7Fh
公共 RAM
(快速操作存储区
70h – 7Fh)
F80h
内核寄存器
(表 3-2)
F6Fh
F70h
公共 RAM
(快速操作存储区
70h – 7Fh)
BANK 23
内核寄存器
(表 3-2)
未实现
读为 0
EFFh
7FFh
未实现
读为 0
B80h
F00h
公共 RAM
(快速操作存储区
70h – 7Fh)
7EFh
7F0h
BANK 22
内核寄存器
(表 3-2)
EEFh
EF0h
公共 RAM
(快速操作存储区
70h – 7Fh)
B0Bh
B0Ch
E8Bh
E8Ch
公共 RAM
(快速操作存储区
70h – 7Fh)
77Fh
BANK 29
未实现
读为 0
78Bh
78Ch
B00h
E80h
E0Bh
E0Ch
公共 RAM
(快速操作存储区
70h – 7Fh)
AFFh
内核寄存器
(表 3-2)
未实现
读为 0
DEFh
DF0h
公共 RAM
(快速操作存储区
70h – 7Fh)
76Fh
770h
未实现
读为 0
AEFh
AF0h
内核寄存器
(表 3-2)
请参见表 3-6
内核寄存器
(表 3-2)
BANK 28
内核寄存器
(表 3-2)
公共 RAM
(快速操作存储区
70h – 7Fh)
A8Bh
A8Ch
E00h
D8Bh
D8Ch
公共 RAM
(快速操作存储区
70h – 7Fh)
A6Fh
A70h
内核寄存器
(表 3-2)
BANK 21
未实现
读为 0
BANK 27
未实现
读为 0
D6Fh
D70h
公共 RAM
(快速操作存储区
70h – 7Fh)
6FFh
未实现
读为 0
BANK 15
780h
70Bh
70Ch
A80h
A0Bh
A0Ch
D80h
内核寄存器
(表 3-2)
未实现
读为 0
CEFh
CF0h
9FFh
公共 RAM
(快速操作存储区
70h – 7Fh)
6EFh
6F0h
内核寄存器
(表 3-2)
未实现
读为 0
9EFh
9F0h
内核寄存器
(表 3-2)
BANK 20
内核寄存器
(表 3-2)
BANK 26
内核寄存器
(表 3-2)
未实现
读为 0
图注:
97Fh
67Fh
未实现
读为 0
BANK 14
700h
68Bh
68Ch
A00h
98Bh
98Ch
公共 RAM
(快速操作存储区
70h – 7Fh)
66Fh
670h
BANK 19
未实现
读为 0
96Fh
970h
公共 RAM
(快速操作存储区
70h – 7Fh)
980h
D00h
C8Bh
C8Ch
5FFh
内核寄存器
(表 3-2)
60Bh
60Ch
未实现
读为 0
BANK 13
680h
公共 RAM
(快速操作存储区
70h – 7Fh)
见表 3-7
FEFh
FE0h
FEFh
公共 RAM
(快速操作存储区
70h – 7Fh)
PIC16(L)F1512/3
C0Bh
C0Ch
5EFh
5F0h
内核寄存器
(表 3-2)
BANK 25
C80h
内核寄存器
(表 3-2)
公共 RAM
(快速操作存储区
70h – 7Fh)
90Bh
90Ch
公共 RAM
(快速操作存储区
70h – 7Fh)
内核寄存器
(表 3-2)
BANK 18
未实现
读为 0
BANK 24
C7Fh
57Fh
未实现
读为 0
BANK 12
600h
58Bh
58Ch
900h
88Bh
88Ch
C00h
C6Fh
C70h
公共 RAM
(快速操作存储区
70h – 7Fh)
56Fh
570h
内核寄存器
(表 3-2)
未实现
读为 0
87Fh
内核寄存器
(表 3-2)
BANK 17
内核寄存器
(表 3-2)
86Fh
870h
未实现
读为 0
BANK 11
580h
50Bh
50Ch
880h
80Bh
80Ch
BANK 10
500h
PIC16(L)F1512/3
表 3-6:
PIC16(L)F1512/3 存储器映射
(BANK 14)
表 3-7:
PIC16(L)F1512/3 存储器映射
(BANK 31)
Bank 14
Bank 31
700h
F80h
内核寄存器
(表 3-2)
70Bh
70Ch
710h
711h
712h
713h
714h
715h
716h
717h
718h
719h
71Ah
71Bh
71Ch
71Dh
71Eh
71Fh
720h
76Fh
770h
77Fh
图注:
内核寄存器
(表 3-2)
F8Bh
F8Ch
未实现
读为 0
未实现
读为 0
AADCON0
AADCON1
AADCON2
AADCON3
AADSTAT
AADPRE
AADACQ
AADGRD
AADCAP
FE3h
FE4h
FE5h
FE6h
FE7h
FE8h
FE9h
FEAh
FEBh
FECh
FEDh
FEEh
FEFh
FF0h
AADRES0L
AADRES0H
AADRES1L
AADRES1H
—
—
未实现
读为 0
FFFh
公共 RAM
(快速操作存储区
70h – 7Fh)
图注:
STATUS_SHAD
WREG_SHAD
BSR_SHAD
PCLATH_SHAD
FSR0L_SHAD
FSR0H_SHAD
FSR1L_SHAD
FSR1H_SHAD
—
STKPTR
TOSL
TOSH
公共 RAM
(快速操作存储区
70h – 7Fh)
= 未实现数据存储单元,读为 0。
= 未实现数据存储单元,读为 0。
DS41624A_CN 第 24 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
3.2.6
内核功能寄存器汇总
表 3-8 列出了内核功能寄存器,可从任何存储区访问这
些寄存器。
表 3-8:
地址
内核功能寄存器汇总
名称
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
POR 和 BOR 所有其他复位
时的值
时的值
Bank 0-31
x00h 或 INDF0
x80h
通过用 FSR0H/FSR0L 的内容寻址这个存储单元来寻址数据存储器
(不是物理寄存器)
xxxx xxxx
uuuu uuuu
x01h 或 INDF1
x81h
通过用 FSR1H/FSR1L 的内容寻址这个存储单元来寻址数据存储器
(不是物理寄存器)
xxxx xxxx
uuuu uuuu
x02h 或 PCL
x82h
程序计数器 (Program Counter, PC)的最低有效字节
0000 0000
0000 0000
---1 1000
---q quuu
x03h 或 STATUS
x83h
—
—
—
TO
PD
Z
DC
C
x04h 或 FSR0L
x84h
间接数据存储器地址 0 低字节指针
0000 0000
uuuu uuuu
x05h 或 FSR0H
x85h
间接数据存储器地址 0 高字节指针
0000 0000
0000 0000
x06h 或 FSR1L
x86h
间接数据存储器地址 1 低字节指针
0000 0000
uuuu uuuu
x07h 或 FSR1H
x87h
间接数据存储器地址 1 高字节指针
0000 0000
0000 0000
---0 0000
---0 0000
0000 0000
uuuu uuuu
-000 0000
-000 0000
0000 0000
0000 0000
x08h 或 BSR
x88h
—
x09h 或 WREG
x89h
—
BSR4
BSR3
BSR2
BSR1
BSR0
工作寄存器
x0Ah
或
x8Ah
PCLATH
—
x0Bh
或
x8Bh
INTCON
GIE
图注:
—
程序计数器高 7 位的写缓冲区
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
x = 未知, u = 不变, q = 值取决于具体条件, - = 未实现,读为 0, r = 保留。
阴影单元未实现,读为 0。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 25 页
PIC16(L)F1512/3
3.2.7
特殊功能寄存器汇总
表 3-9 列出了特殊功能寄存器。
表 3-9:
地址
特殊功能寄存器汇总
Bit 7
名称
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
POR 和
BOR
时的值
所有其他复
位时的值
Bank 0
00Ch PORTA
PORTA 数据锁存器 (写入时); PORTA 引脚 (读取时)
xxxx xxxx uuuu uuuu
00Dh PORTB
PORTB 数据锁存器 (写入时); PORTB 引脚 (读取时)
xxxx xxxx uuuu uuuu
00Eh PORTC
PORTC 数据锁存器 (写入时); PORTC 引脚 (读取时)
xxxx xxxx uuuu uuuu
00Fh —
未实现
—
—
010h
PORTE
011h
012h
013h
—
014h
—
015h
TMR0
Timer0 模块寄存器
016h
TMR1L
16 位 TMR1 寄存器最低有效字节的保持寄存器
xxxx xxxx uuuu uuuu
017h
TMR1H
16 位 TMR1 寄存器最高有效字节的保持寄存器
xxxx xxxx uuuu uuuu
018h
T1CON
019h
T1GCON
—
—
—
—
RE3
—
—
—
---- x--- ---- u---
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000 0000 0000
PIR2
OSFIF
—
—
—
BCLIF
—
—
CCP2IF
0--- 0--0 0--- 0--0
未实现
—
—
未实现
—
—
TMR1CS<1:0>
TMR1GE
Timer2 模块寄存器
01Bh PR2
Timer2 周期寄存器
01Ch T2CON
01Dh —
01Fh —
T1CKPS<1:0>
T1GPOL
01Ah TMR2
01Eh —
xxxx xxxx uuuu uuuu
T1GTM
T1GSPM
T1OSCEN
T1SYNC
—
T1GGO/
DONE
T1GVAL
T1GSS<1:0>
TMR1ON 0000 00-0 uuuu uu-u
0000 0x00 uuuu uxuu
0000 0000 0000 0000
1111 1111 1111 1111
—
T2OUTPS<3:0>
TMR2ON
T2CKPS<1:0>
-000 0000 -000 0000
未实现
—
—
未实现
—
—
未实现
—
—
Bank 1
08Ch TRISA
PORTA 数据方向寄存器
1111 1111 1111 1111
08Dh TRISB
PORTB 数据方向寄存器
1111 1111 1111 1111
08Eh TRISC
PORTC 数据方向寄存器
1111 1111 1111 1111
08Fh —
未实现
—
—
—
—
—(2)
—
—
—
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000 0000 0000
PIE2
OSFIE
—
—
—
BCLIE
—
—
CCP2IE
0--- 0--0 0--- 0--0
TRISE
091h
092h
093h
—
094h
—
095h
OPTION_REG
WPUEN
INTEDG
TMR0CS
TMR0SE
096h
PCON
STKOVF
STKUNF
—
RWDT
097h
WDTCON
—
—
098h
—
099h
OSCCON
—
—
未实现
—
—
RI
POR
1111 1111 1111 1111
BOR
—
SOSCR
—
OSTS
A/D 结果寄存器的高字节
09Dh ADCON0(3)
—
09Eh ADCON1(3)
ADFM
00-1 11qq qq-q qquu
SWDTEN --01 0110 --01 0110
—
IRCF<3:0>
09Ch ADRES0H(3)
1:
2:
3:
RMCLR
PS<2:0>
未实现
A/D 结果寄存器的低字节
09Fh —
PSA
WDTPS<4:0>
09Bh ADRES0L(3)
图注:
---- 1--- ---- 1---
未实现
09Ah OSCSTAT
注
—
—
090h
—
HFIOFR
—
—
SCS<1:0>
LFIOFR
HFIOFS
—
-011 1-00 -011 1-00
0-q0 --00 q-qq --0q
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
CHS<4:0>
ADCS<2:0>
GO/DONE
—
—
ADON
ADPREF<1:0>
-000 0000 -000 0000
0000 --00 0000 --00
—
未实现
—
x = 未知, u = 不变, q = 值取决于具体条件, - = 未实现,读为 0, r = 保留。
阴影单元未实现,读为 0。
仅限 PIC16F1512/3。
未实现,读为 1。
该寄存器以相同的寄存器名称在 Bank 1 和 Bank 14 中提供。请参见第 16.5.1 节 “ADC 寄存器映射”。
DS41624A_CN 第 26 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 3-9:
地址
特殊功能寄存器汇总 (续)
名称
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
POR 和
BOR
时的值
所有其他复
位时的值
Bank 2
10Ch LATA
PORTA 数据锁存器
xxxx xxxx uuuu uuuu
10Dh LATB
PORTB 数据锁存器
xxxx xxxx uuuu uuuu
10Eh LATC
PORTC 数据锁存器
xxxx xxxx uuuu uuuu
10Fh
至 —
115h
未实现
116h
BORCON
SBOREN
BORFS
—
—
—
—
—
117h
FVRCON
FVREN
FVRRDY
TSEN
TSRNG
—
—
ADFVR<1:0>
118h
至 —
11Ch
11Eh —
—
0q00 --00 0q00 --00
—
—
—
—
—
—
—
SSSEL
—
BORRDY 10-- ---q uu-- ---u
未实现
11Dh APFCON
11Fh
—
—
CCP2SEL ---- --00 ---- --00
未实现
—
—
未实现
—
—
Bank 3
18Ch ANSELA
—
—
ANSA5
—
ANSA3
ANSA2
ANSA1
ANSA0
18Dh ANSELB
—
—
ANSB5
ANSB4
ANSB3
ANSB2
ANSB1
ANSB0
--11 1111 --11 1111
18Eh ANSELC
ANSC7
ANSC6
ANSC5
ANSC4
ANSC3
ANSC2
—
—
1111 1100 1111 1100
18Fh —
--1- 1111 --1- 1111
未实现
—
—
未实现
—
—
190h
—
191h
PMADRL
192h
PMADRH
193h
PMDATL
194h
PMDATH
—
—
195h
PMCON1
—(2)
CFGS
196h
PMCON2
197h
VREGCON(1)
198h
—
199h
RCREG
USART 接收数据寄存器
19Ah TXREG
USART 发送数据寄存器
0000 0000 0000 0000
程序存储器地址寄存器的低字节
—
1000 0000 1000 0000
程序存储器地址寄存器的高字节
xxxx xxxx uuuu uuuu
程序存储器数据寄存器的低字节
--xx xxxx --uu uuuu
程序存储器数据寄存器的高字节
LWLO
FREE
WRERR
WREN
WR
RD
程序存储器控制寄存器 2
—
—
1000 x000 1000 q000
0000 0000 0000 0000
—
—
—
—
VREGPM
保留
---- --01 ---- --01
—
未实现
—
0000 0000 0000 0000
0000 0000 0000 0000
19Bh SPBRGL
BRG<7:0>
19Ch SPBRGH
BRG<15:8>
0000 0000 0000 0000
0000 0000 0000 0000
19Dh RCSTA
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
0000 000x 0000 000x
19Eh TXSTA
CSRC
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
0000 0010 0000 0010
ABDOVF
RCIDL
—
SCKP
BRG16
—
WUE
ABDEN
01-0 0-00 01-0 0-00
19Fh BAUDCON
图注:
注
1:
2:
3:
x = 未知, u = 不变, q = 值取决于具体条件, - = 未实现,读为 0, r = 保留。
阴影单元未实现,读为 0。
仅限 PIC16F1512/3。
未实现,读为 1。
该寄存器以相同的寄存器名称在 Bank 1 和 Bank 14 中提供。请参见第 16.5.1 节 “ADC 寄存器映射”。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 27 页
PIC16(L)F1512/3
表 3-9:
地址
特殊功能寄存器汇总 (续)
Bit 7
名称
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
WPUB6
WPUB5
WPUB4
WPUB3
WPUB2
WPUB1
WPUB0
POR 和
BOR
时的值
所有其他复
位时的值
—
—
Bank 4
20Ch —
未实现
20Dh WPUB
20Eh —
20Fh —
WPUB7
未实现
—
—
未实现
—
—
210h
WPUE
211h
SSP1BUF
212h
SSP1ADD
213h
SSP1MSK
214h
SSP1STAT
SMP
215h
SSP1CON1
WCOL
SSPOV
SSPEN
CKP
216h
SSP1CON2
GCEN
ACKSTAT
ACKDT
217h
SSP1CON3
ACKTIM
PCIE
SCIE
218h
至 —
21Fh
1111 1111 1111 1111
—
—
—
—
WPUE3
—
—
—
xxxx xxxx uuuu uuuu
同步串行口接收缓冲 / 发送寄存器
2
0000 0000 0000 0000
同步串行口 (I C™ 模式)地址寄存器
2
1111 1111 1111 1111
同步串行口 (I C™ 模式)地址掩码寄存器
CKE
D/A
---- 1--- ---- 1---
P
S
R/W
UA
BF
ACKEN
RCEN
PEN
RSEN
SEN
0000 0000 0000 0000
BOEN
SDAHT
SBCDE
AHEN
DHEN
0000 0000 0000 0000
SSPM<3:0>
0000 0000 0000 0000
0000 0000 0000 0000
未实现
—
—
28Ch
至 —
290h
未实现
—
—
捕捉 / 比较 /PWM 寄存器 1 (LSB)
xxxx xxxx uuuu uuuu
捕捉 / 比较 /PWM 寄存器 1 (MSB)
xxxx xxxx uuuu uuuu
Bank 5
291h
CCPR1L
292h
CCPR1H
293h
CCP1CON
—
—
DC1B<1:0>
CCP1M<3:0>
--00 0000 --00 0000
294h
至 —
297h
未实现
298h
CCPR2L
捕捉 / 比较 /PWM 寄存器 2 (LSB)
xxxx xxxx uuuu uuuu
299h
CCPR2H
捕捉 / 比较 /PWM 寄存器 2 (MSB)
xxxx xxxx uuuu uuuu
29Ah CCP2CON
29Bh
至 —
29Fh
—
—
—
DC2B<1:0>
CCP2M<3:0>
—
--00 0000 --00 0000
未实现
—
—
未实现
—
—
未实现
—
—
Bank 6
30Ch
至 —
31Fh
Bank 7
38Ch
至 —
393h
394h
IOCBP
IOCBP<7:0>
0000 0000 0000 0000
395h
IOCBN
IOCBN<7:0>
0000 0000 0000 0000
396h
IOCBF
IOCBF<7:0>
0000 0000 0000 0000
397h
至 —
39Fh
未实现
—
—
未实现
—
—
Bank 8-13
x0Ch
或
x8Ch
至 —
x1Fh
或
x9Fh
图注:
注
1:
2:
3:
x = 未知, u = 不变, q = 值取决于具体条件, - = 未实现,读为 0, r = 保留。
阴影单元未实现,读为 0。
仅限 PIC16F1512/3。
未实现,读为 1。
该寄存器以相同的寄存器名称在 Bank 1 和 Bank 14 中提供。请参见第 16.5.1 节 “ADC 寄存器映射”。
DS41624A_CN 第 28 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 3-9:
地址
特殊功能寄存器汇总 (续)
名称
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
POR 和
BOR
时的值
所有其他复
位时的值
—
—
Bank 14
70ch
至 —
710h
未实现
711h
AADCON0(3)
—
712h
AADCON1(3)
ADFM
ADCS<2:0>
713h
AADCON2
—
TRIGSEL<2:0>
714h
AADCON3
CHS<4:0>
ADEPPOL ADIPPOL
ADOLEN
ADOEN
—
—
GO/DONE
—
—
—
—
—
ADIPEN
—
ADCONV
AADSTAT
—
AADPRE
—
ADPRE<6:0>
717h
AADACQ
—
ADACQ<6:0>
718h
AADGRD
GRDBOE
GRDAOE
GRDPOL
—
—
719h
AADCAP
—
—
—
—
—
—
-000 ---- -000 ----
—
715h
-000 0000 -000 0000
0000 --00 0000 --00
ADOOEN
716h
ADON
ADPREF<1:0>
—
ADDSEN 0000 0-00 0000 0-00
ADSTG<1:0>
---- -000 ---- -000
-000 0000 -000 0000
-000 0000 -000 0000
—
—
—
ADDCAP<2:0>
000- ---- 000- ------- -000 ---- -000
71Ah AADRES0L(3)
A/D 结果寄存器 0 的低字节
xxxx xxxx uuuu uuuu
71Bh AADRES0H(3)
A/D 结果寄存器 0 的高字节
xxxx xxxx uuuu uuuu
71Ch AADRES1L
A/D 结果寄存器 1 的低字节
xxxx xxxx uuuu uuuu
71Dh AADRES1H
A/D 结果寄存器 1 的高字节
xxxx xxxx uuuu uuuu
71Eh —
未实现
—
—
未实现
—
—
未实现
—
—
Bank 15-30
x0Ch
或
x8Ch
至 —
x1Fh
或
x9Fh
Bank 31
F8Ch
至 —
FE3h
FE4h STATUS_SHAD
FE5h WREG_SHAD
—
—
—
—
—
Z
DC
C
FE6h BSR_SHAD
—
FE7h PCLATH_SHAD
—
—
---- -xxx ---- -uuu
xxxx xxxx uuuu uuuu
工作寄存器的影子寄存器
—
存储区选择寄存器的影子寄存器
程序计数器锁存器高字节寄存器的影子寄存器
---x xxxx ---u uuuu
-xxx xxxx uuuu uuuu
FE8h FSR0L_SHAD
间接数据存储器地址 0 低字节指针的影子寄存器
xxxx xxxx uuuu uuuu
FE9h FSR0H_SHAD
间接数据存储器地址 0 高字节指针的影子寄存器
xxxx xxxx uuuu uuuu
FEAh FSR1L_SHAD
间接数据存储器地址 1 低字节指针的影子寄存器
xxxx xxxx uuuu uuuu
FEBh FSR1H_SHAD
间接数据存储器地址 1 高字节指针的影子寄存器
xxxx xxxx uuuu uuuu
FECh —
未实现
FEDh STKPTR
FEEh TOSL
栈顶低字节
FEFh TOSH
—
图注:
注
1:
2:
3:
—
—
—
—
当前堆栈指针
—
---1 1111 ---1 1111
xxxx xxxx uuuu uuuu
-xxx xxxx -uuu uuuu
栈顶高字节
x = 未知, u = 不变, q = 值取决于具体条件, - = 未实现,读为 0, r = 保留。
阴影单元未实现,读为 0。
仅限 PIC16F1512/3。
未实现,读为 1。
该寄存器以相同的寄存器名称在 Bank 1 和 Bank 14 中提供。请参见第 16.5.1 节 “ADC 寄存器映射”。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 29 页
PIC16(L)F1512/3
3.3
PCL 和 PCLATH
3.3.3
计算函数调用
程序计数器 (PC)为 15 位宽。其低字节来自可读写的
PCL 寄存器,高字节(PC<14:8>)来自 PCLATH,不能
直接读写。任何复位都将清零 PC。图 3-4 显示了装载 PC
值的 5 种情形。
利用计算函数 CALL,程序可以维护一些函数表,并提
供另一种执行状态机或查找表的方式。当使用计算函数
CALL 执行表读操作时,应注意表地址是否跨越了 PCL
存储器边界 (每个存储块为 256 字节)。
图 3-4:
如果使用 CALL 指令,PCH<2:0> 和 PCL 寄存器中将装
入 CALL 指令的操作数。 PCH<6:3> 中将装入
PCLATH<6:3>。
不同情形下 PC 的装载
PC
PCLATH
PC
PCH
6
7
14
PCH
PCL
0
0
Instruction
with
将 PLC 作为
PCL as
目标寄存器
Destination
的指令
CALLW 指令通过将 PCLATH 和 W 组合构成目标地址来
支持计算调用。计算 CALLW 通过向 W 寄存器中装入所
需地址并执行 CALLW 来实现。PCL 寄存器中装入 W 的
值, PCH 中装入 PCLATH 的值。
8
ALU运算结果
Result
ALU
PCL
3.3.4
0
GOTO, CALL
6
PCLATH
4
0
14
11
6
PCLATH
14
PCH
PCL
7
0
PCH
0
CALLW
如果使用 BRW,则向 W 寄存器中装入所需的无符号地
址,然后执行 BRW。整个 PC 中将装入地址 PC + 1 + W。
8
W
PCL
0
PCL
0
跳转
跳转指令会将一个偏移量与 PC 相加。这使得可以实现
可重定位代码和跨越页边界的代码。存在两种跳转形
式:BRW 和 BRA。在两种形式中, PC 都会发生递增,
以便取下一条指令。使用任一跳转指令时,都可以跨越
PCL 存储器边界。
OPCODE
<10:0>
操作码 <10:0>
PC
PC
14
如果使用 BRA,整个 PC 中将装入 PC + 1 + BRA 指令操
作数的有符号值。
BRW
15
PC + W
PC
14
PCH
BRA
15
PCPC+
+ OPCODE
<8:0>
操作码 <8:0>
3.3.1
修改 PCL
在执行以 PCL 寄存器作为目标寄存器的任何指令的同
时,也 会 使 程 序 计 数 器 的 PC<14:8> 位 (PCH)被
PCLATH 寄存器的内容所代替。这使得可以通过将所需
的高 7 位写入 PCLATH 寄存器来改变 PC 的整个内容。
当将低 8 位写入 PCL 寄存器时, PC 的所有 15 位都将
变为PCLATH寄存器中和那些被写入PCL寄存器的值。
3.3.2
计算 GOTO
计算 GOTO 是通过向程序计数器加一个偏移量 (ADDWF
PCL)来实现的。当使用计算 GOTO 方法执行表读操作
时,应注意表地址是否跨越了 PCL 存储器边界 (每个存
储块为 256 字节) 。请参见应用笔记 AN556,
“Implementing a Table Read”(DS00556)。
DS41624A_CN 第 30 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
3.4
3.4.1
堆栈
通过 TOSH、TOSL 和 STKPTR 寄存器可以使用堆栈。
STKPTR 是堆栈指针的当前值。TOSH:TOSL 寄存器对
指向栈顶。两个寄存器都是可读写的。由于 PC 的大小
为 15 位,所以 TOS 拆分为 TOSH 和 TOSL。要访问堆
栈,可以调整 STKPTR 的值 (它决定 TOSH:TOSL 位
置),然后读 / 写 TOSH:TOSL。 STKPTR 的宽度为 5
位,以允许检测上溢和下溢。
所有器件都具有 16 级 x 15 位宽的硬件堆栈 (见图 3-5
至 3-8)。堆栈既不占用程序存储空间,也不占用数据存
储空间。当执行 CALL 或 CALLW 指令,或者中断导致程
序跳转时, PC 值将被压入堆栈。而在执行 RETURN、
RETLW 或 RETFIE 指令时,将从堆栈中弹出 PC 值。
PCLATH 不受压栈或出栈操作的影响。
如果 STVREN 位被设定为 0 (配置字 2),堆栈将作为
循环缓冲区工作。这意味着在压栈 16 次后,第 17 次压
入堆栈的值将会覆盖第一次压栈时所保存的值,而第 18
次压入堆栈的值将覆盖第二次压栈时所保存的值,依此
类推。无论是否使能了复位, STKOVF 和 STKUNF 标
志位都将在上溢 / 下溢时置 1。
注
注:
在允许中断的情况下,在修改 STKPTR 时
需要小心。
在正常程序操作期间, CALL、 CALLW 和中断会使
STKPTR 递增,而 RETLW、 RETURN 和 RETFIE 会使
STKPTR 递减。在任意时刻,都可以通过检查 STKPTR
来确定所剩余的堆栈空间。STKPTR 总是指向堆栈中当
前使用的位置。因此, CALL 或 CALLW 会先递增
STKPTR,然后再写入PC,而返回操作则会先取出PC,
然后再递减 STKPTR。
1: 不存在被称为 PUSH 或 POP 的指令 / 助
记符。堆栈的压入或弹出是源于执行了
CALL、 CALLW、 RETURN、 RETLW 和
RETFIE 指令,或源于跳转到中断向量地
址。
图 3-5:
访问堆栈
关于访问堆栈的示例,请参见图 3-5 至 3-8。
访问堆栈示例 1
TOSH:TOSL
0x0F
STKPTR = 0x1F
禁止堆栈复位
Stack
Reset Disabled
(STVREN
= 0)
0)
(STVREN =
0x0E
0x0D
0x0C
0x0B
0x0A
初始堆栈配置
:
Initial Stack
Configuration:
0x09
复位后,
对空堆栈进行初始化,
After Reset,
the堆栈为空。
stack is empty.
The
0x1F。
empty使得堆栈指针指向地址
stack is initialized so the
Stack如果使能
TOSH/TOSL
寄
Pointer了堆栈上溢
is pointing /at下溢复位,
0x1F. If the
Stack
存器将返回 0。
如果禁止了堆栈上溢
Overflow/Underflow
Reset
is enabled, the / 下
溢复位,
TOSH/TOSL
寄存器将返回堆栈
0’. If
TOSH/TOSL
registers
will return
地址Overflow/Underflow
0x0F 处的内容。 Reset is
the Stack
disabled, the TOSH/TOSL registers will
return the contents of stack address 0x0F.
0x08
0x07
0x06
0x05
0x04
0x03
0x02
0x01
0x00
TOSH:TOSL
 2012 Microchip Technology Inc.
0x1F
0x0000
初稿
STKPTR = 0x1F
使能堆栈复位
Stack
Reset Enabled
(STVREN
(STVREN ==1)1)
DS41624A_CN 第 31 页
PIC16(L)F1512/3
图 3-6:
访问堆栈示例 2
0x0F
0x0E
0x0D
0x0C
0x0B
0x0A
0x09
此图显示了执行第一条
CALLconfiguration
指令或发生一次
This figure shows the stack
RETURN 指令,
中断后的堆栈配置。
如果执行了
after the first CALL or
a single interrupt.
返回地址将位于程序计数器中,
而堆栈指针将
If a RETURN instruction is executed,
the
递减到空状态
(0x1F)
return address
will be。
placed in the
Program Counter and the Stack Pointer
decremented to the empty state (0x1F).
0x08
0x07
0x06
0x05
0x04
0x03
0x02
0x01
TOSH:TOSL
图 3-7:
0x00
返回地址
Return
Address
STKPTR = 0x00
访问堆栈示例 3
0x0F
0x0E
0x0D
0x0C
在执行
7 条CALLs
CALL 或
6 条CALLs
CALL and
指令an
After
seven
or six
和中断之后,
堆栈将类似于左图。
一
interrupt,
the stack
looks like the figure
指令会不断地将返回
系列
on
theRETURN
left. A series
of RETURN instructions
地址置于程序计数器中并弹出堆栈。
will
repeatedly place the return addresses
into the Program Counter and pop the stack.
0x0B
0x0A
0x09
0x08
0x07
TOSH:TOSL
DS41624A_CN 第 32 页
0x06
Return
Address
返回地址
0x05
Return
Address
返回地址
0x04
Return
Address
返回地址
0x03
Return
Address
返回地址
0x02
Return
Address
返回地址
0x01
Return
Address
返回地址
0x00
Return
Address
返回地址
初稿
STKPTR = 0x06
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 3-8:
访问堆栈示例 4
0x0F
Return
Address
返回地址
0x0E
Return
Address
返回地址
0x0D
Return
Address
返回地址
0x0C
Return
Address
返回地址
0x0B
0x09
Return Address
返回地址
Return Address
返回地址
Return
Address
返回地址
0x08
Return
Address
返回地址
0x07
Return
Address
返回地址
0x06
Return
Address
返回地址
0x05
Return
Address
返回地址
0x04
Return
Address
返回地址
0x03
0x02
Return Address
返回地址
Return
Address
返回地址
0x01
Return
Address
返回地址
0x00
Return
Address
返回地址
0x0A
TOSH:TOSL
3.4.2
堆栈满时,
下一条
CALL
When
the stack
is full,
the指令或中断
next CALL or
0x10
,这 to
会将堆栈指针设置为指向
an
interrupt will set the Stack
Pointer
等于地址
,因此堆栈将返回,
0x10.
This0x00
is identical
to address 0x00
并覆盖
0x00will
处的返回地址。
如果使 the
so
the stack
wrap and overwrite
能了堆栈上溢
将发生
return
address /at下溢复位,
0x00. If the
Stack
复位,且地址 0x00 中的内容将不会
Overflow/Underflow
Reset is enabled, a
被覆盖。
Reset
will occur and location 0x00 will
not be overwritten.
STKPTR = 0x10
上溢 / 下溢复位
如果配置字 2 中的 STVREN 位被设定为 1,则在压栈操
作超过堆栈第 16 级或出栈操作超过堆栈第 1 级时,器
件会发生复位,并将 PCON 寄存器中的相应位 (分别
为 STKOVF 或 STKUNF)置 1。
3.5
间接寻址
INDFn 寄存器不是物理寄存器。访问 INDFn 寄存器的
所有指令实际上访问的是由文件选择寄存器(FSR)指
定的地址处的寄存器。如果 FSRn 地址指定了两个
INDFn 寄存器中的一个,则读操作将返回 0,写操作将
不会发生 (虽然状态位可能会受影响)。 FSRn 寄存器
值由 FSRnH 和 FSRnL 对构成。
FSR 寄存器构成一个 16 位地址,支持 65536 个存储单
元的寻址空间。这些存储单元分为 3 个存储器区域:
• 传统数据存储器
• 线性数据存储器
• 闪存程序存储器
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 33 页
PIC16(L)F1512/3
图 3-9:
间接寻址
0x0000
0x0000
传统
数据存储器
0x0FFF
0x1000
0x1FFF
0x2000
0x0FFF
保留
线性
数据存储器
0x29AF
0x29B0
FSR
地址
范围
0x7FFF
0x8000
保留
0x0000
闪存
程序存储器
0xFFFF
注:
0x7FFF
不是所有存储器区域都能完全实现。关于存储器限制,请参见器件存储器表。
DS41624A_CN 第 34 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
3.5.1
传统数据存储器
传统数据存储器是从FSR地址0x000至FSR地址0xFFF
的区域。这些地址对应于所有 SFR、 GPR 和公共寄存
器的绝对地址。
图 3-10:
传统数据存储器映射
直接寻址
4
BSR
0
6
间接寻址
来自操作码
0
7
0
存储区选择
FSRxH
0
存储单元选择
0x00
0
0
7
FSRxL
0
0
存储区选择
00000 00001 00010
11111
Bank 0 Bank 1 Bank 2
Bank 31
存储单元选择
0x7F
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 35 页
PIC16(L)F1512/3
3.5.2
3.5.3
线性数据存储器
线性数据存储器是从 FSR 地址 0x2000 至 FSR 地址
0x29AF 的区域。该区域是一个虚拟区域,它指向所有
存储区中 80 字节的 GPR 存储块。
为了可以更方便地访问常量数据,整个闪存程序存储器
都映射到 FSR 地址空间的上半部分。当 FSRnH 的 MSb
置 1 时,低 15 位为程序存储器中将通过 INDF 访问的地
址。对于每个存储单元,只有低 8 位可通过 INDF 访问。
对闪存程序存储器的写操作无法通过 FSR/INDF 接口实
现。对于通过 FSR/INDF 接口访问闪存程序存储器的所
有指令,都需要一个额外的指令周期才能完成操作。
未实现的存储器将读为0x00。通过使用线性数据存储器
区域,可以支持大于 80 字节的缓冲区,因为在 FSR 递
增至超过一个存储区时,将会直接转至下一个存储区的
GPR 存储器。
16 字节的公共存储器不包含在线性数据存储器区域中。
图 3-11:
7
FSRnH
0 0 1
图 3-12:
线性数据存储器映射
0
存储单元选择
7
FSRnL
闪存程序存储器
7
1
FSRnH
0
7
FSRnL
0
0
存储单元选择
0x2000
闪存程序存储器映射
0x8000
0x0000
0x020
Bank 0
0x06F
0x0A0
Bank 1
0x0EF
0x120
闪存程序
存储器
(低 8
位)
Bank 2
0x16F
0xF20
0xFFFF
Bank 30
0x29AF
DS41624A_CN 第 36 页
0x7FFF
0xF6F
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
4.0
器件配置
器件配置功能由配置字、代码保护以及器件 ID 组成。
4.1
配置字
有几个配置字位可用于选择不同的振荡器和存储器保护
选项。这些位实现为位于8007h的配置字1和位于8008h
的配置字 2。
注:
配置字 2 中的 DEBUG 位由器件开发工具
(包括调试器和编程器)自动管理。对于正
常器件工作,该位应保持为 1。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 37 页
PIC16(L)F1512/3
寄存器 4-1:
配置字 1
R/P-1
R/P-1
R/P-1
FCMEN
IESO
CLKOUTEN
R/P-1
R/P-1
BOREN<1:0>
bit 13
R/P-1
R/P-1
R/P-1
CP
MCLRE
PWRTE
U-1
—
bit 8
R/P-1
R/P-1
R/P-1
R/P-1
WDTE<1:0>
R/P-1
FOSC<2:0>
bit 7
bit 0
图注:
R = 可读位
P = 可编程位
U = 未实现位,读为 1
0 = 清零
1=置1
-n = 空白时或批量擦除后的值
bit 13
FCMEN: 故障保护时钟监视器使能位
1 = 使能故障保护时钟监视器
0 = 禁止故障保护时钟监视器
bit 12
IESO:内 / 外部切换位
1 = 使能内 / 外部切换模式
0 = 禁止内 / 外部切换模式
bit 11
CLKOUTEN:时钟输出使能位
如果 FOSC 配置位被设置为 LP、 XT 或 HS 模式:
该位被忽略;禁止 CLKOUT 功能。 CLKOUT 引脚为振荡器功能。
所有其他 FOSC 模式:
1 = 禁止 CLKOUT 功能。 CLKOUT 引脚为 I/O 功能。
0 = 在 CLKOUT 引脚使能 CLKOUT 功能
bit 10-9
BOREN<1:0>:欠压复位使能位
11 = 使能 BOR
10 = 在工作期间使能 BOR,在休眠期间禁止 BOR
01 = BOR 由 BORCON 寄存器的 SBOREN 位控制
00 = 禁止 BOR
bit 8
未实现:读为 1
bit 7
CP:代码保护位
1 = 禁止程序存储器代码保护
0 = 使能程序存储器代码保护
bit 6
MCLRE: MCLR/VPP 引脚功能选择位
如果 LVP 位 = 1:
该位被忽略。
如果 LVP 位 = 0:
1 = MCLR/VPP 引脚功能为 MCLR ;使能弱上拉。
0 = MCLR/VPP 引脚功能为数字输入; MCLR 在内部被禁止;弱上拉由 WPUE3 位控制。
bit 5
PWRTE:上电延时定时器使能位
1 = 禁止 PWRT
0 = 使能 PWRT
bit 4-3
WDTE<1:0>: 看门狗定时器使能位
11 = 使能 WDT
10 = 在运行时使能 WDT,在休眠时禁止 WDT
01 = WDT 由 WDTCON 寄存器的 SWDTEN 位控制
00 = 禁止 WDT
DS41624A_CN第 38 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 4-1:
bit 2-0
配置字 1 (续)
FOSC<2:0>: 振荡器选择位
111 = ECH:外部时钟,高功耗模式 (4-20 MHz):器件时钟提供给 CLKIN 引脚
110 = ECM:外部时钟,中等功耗模式 (0.5-4 MHz):器件时钟提供给 CLKIN 引脚
101 = ECL: 外部时钟,低功耗模式 (0-0.5 MHz): 器件时钟提供给 CLKIN 引脚
100 = INTOSC 振荡器:CLKIN 引脚为 I/O 功能
011 = EXTRC 振荡器:外部 RC 电路连接到 CLKIN 引脚
010 = HS 振荡器:高速晶振 / 谐振器连接在 OSC1 和 OSC2 引脚之间
001 = XT 振荡器:晶振 / 谐振器连接在 OSC1 和 OSC2 引脚之间
000 = LP 振荡器:低功耗晶振连接在 OSC1 和 OSC2 引脚之间
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 39 页
PIC16(L)F1512/3
寄存器 4-2:
配置字 2
R/P-1
R/P-1
R/P-1
R/P-1
R/P-1
U-1
LVP
DEBUG
LPBOR
BORV
STVREN
—
bit 13
U-1
—
U-1
U-1
—
—
bit 8
R/P-1
(1)
VCAPEN
U-1
U-1
—
—
R/P-1
R/P-1
WRT<1:0>
bit 7
bit 0
图注:
R = 可读位
P = 可编程位
U = 未实现位,读为 1
0 = 清零
1=置1
-n = 空白时或批量擦除后的值
bit 13
LVP:低电压编程使能位
1 = 使能低电压编程
0 = 必须使用 MCLR 上的高电压进行编程
bit 12
DEBUG:在线调试器模式位
1 = 禁止在线调试器, ICSPCLK 和 ICSPDAT 是通用 I/O 引脚
0 = 使能在线调试器, ICSPCLK 和 ICSPDAT 专用于调试器
bit 11
LPBOR:低功耗 BOR 位
1 = 禁止低功耗 BOR
0 = 使能低功耗 BOR
bit 10
BORV:欠压复位电压选择位
1 = 欠压复位电压在 PIC16LF1512/3 上设置为 1.9V (典型值),而在 PIC16F1512/3 上设置为 2.45V
0 = 欠压复位电压设置为 2.7V (典型值)
bit 9
STVREN: 堆栈上溢 / 下溢复位使能位
1 = 堆栈上溢或下溢将导致复位
0 = 堆栈上溢或下溢不会导致复位
bit 8-5
未实现:读为 1
bit 4
VCAPEN:稳压器电容使能位 (1)
对于 PIC16LF1512/3 (禁止稳压器):
这些位被忽略。禁止所有 VCAP 引脚功能。
对于 PIC16F1512/3 (使能稳压器):
0 = 在 RA5 上使能 VCAP 功能
1 = 禁止所有 VCAP 引脚功能
bit 3-2
未实现:读为 1
bit 1-0
WRT<1:0>: 闪存自写保护位
2 kW 闪存 (仅限 PIC16(L)F1512):
11 = 写保护关闭
10 = 000h 至 1FFh 被写保护, 200h 至 7FFh 可由 PMCON 控制修改
01 = 000h 至 3FFh 被写保护, 400h 至 7FFh 可由 PMCON 控制修改
00 = 000h 至 7FFh 被写保护,无地址可由 PMCON 控制修改
4 kW 闪存 (仅限 PIC16(L)F1513):
11 = 写保护关闭
10 = 000h 至 1FFh 被写保护, 200h 至 FFFh 可由 PMCON 控制修改
01 = 000h 至 7FFh 被写保护, 800h 至 FFFh 可由 PMCON 控制修改
00 = 000h 至 FFFh 被写保护,无地址可由 PMCON 控制修改
注
1: 仅限 PIC16F1512/3。
DS41624A_CN第 40 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
4.2
代码保护
通过代码保护,可以防止对器件的未授权访问。程序存
储器保护独立进行控制。对程序存储器的内部访问不会
受任何代码保护设置影响。
4.2.1
程序存储器保护
整个程序存储空间都通过配置字中的 CP 位来防止外部
读写操作。当 CP = 0 时,将禁止对程序存储器的外部
读写操作,读取时将返回全 0。无论保护位的设置如何,
CPU 都可以继续读取程序存储器。对程序存储器的写操
作则取决于写保护设置。更多信息,请参见第 4.3 节
“写保护”。
4.3
写保护
通过写保护,可以防止器件发生意外的自写操作。在保
护应用程序 (例如自举程序软件)的同时,可以允许对
程序存储器的其他区域进行修改。
配置字中的WRT<1:0>位定义受保护的程序存储块的大
小。
4.4
用户 ID
有 4 个存储单元 (8000h-8003h)被指定为 ID 存储单
元,供用户存储校验和或其他代码标识号。在正常执行
期间,这些存储单元是可读写的。关于访问这些存储单
元的更多信息,请参见第 11.4 节 “用户 ID、器件 ID 和
配置字访问” 。关于校验和计算的更多信息,请参见
“PIC16(L)F151X/152X
Memory
Programming
Specification” (DS41442)。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 41 页
PIC16(L)F1512/3
4.5
器件 ID 和版本 ID
开发工具(例如器件编程器和调试器)可用于读取器件
ID 和版本 ID。
存储单元 8006h 是存储器件 ID 和版本 ID 的位置。高 9
位保存器件 ID。低 5 位保存版本 ID。关于访问这些存
储单元的更多信息,请参见第 11.4 节 “用户 ID、器件
ID 和配置字访问”。
寄存器 4-3:
DEVICEID: 器件 ID 寄存器
R
R
R
R
R
R
DEV<8:3>
bit 13
R
R
bit 8
R
R
R
DEV<2:0>
R
R
R
REV<4:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 1
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
P = 可编程位
bit 13-5
DEV<8:0>: 器件 ID 位
器件
bit 4-0
DEVICEID<13:0> 值
DEV<8:0>
REV<4:0>
PIC16F1512
01 0111 000
x xxxx
PIC16F1513
01 0110 010
x xxxx
PIC16LF1512
01 0111 001
x xxxx
PIC16LF1513
01 0111 010
x xxxx
REV<4:0>: 版本 ID 位
这些位用于指示版本 (见上面 DEV<8:0> 下的表格)。
DS41624A_CN第 42 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
5.0
5.1
振荡器模块 (带故障保护时钟监
视器)
振荡器模块可配置为以下 8 种时钟模式之一。
概述
2.
1.
振荡器模块具有多种时钟源和选择特性,从而使其应用
非常广泛,同时最大限度地发挥性能并降低功耗。图5-1
给出了振荡器模块的框图。
3.
4.
5.
时钟源可由外部振荡器、石英晶体谐振器、陶瓷谐振器
以及阻容(Resistor-Capacitor,RC)电路提供。此外,
系统时钟源可由两个内部振荡器之一提供,并通过软件
来选择速度。其他时钟特性包括:
6.
• 可通过软件选择外部或内部系统时钟源。
• 双速启动模式,最大限度地缩短外部振荡器起振与
代码执行之间的延时。
• 故障保护时钟监视器 (FSCM),用来检测外部时
钟源 (LP、 XT、 HS、 EC 或 RC 模式)故障并自
动切换到内部振荡器。
• 振荡器起振定时器 (OST),可确保晶振源的稳
定性。
• 快速启动振荡器使内部电路可以在切换至 16 MHz
HFINTOSC 之前上电并稳定下来。
 2012 Microchip Technology Inc.
7.
8.
ECL——外部时钟低功耗模式
(0 MHz 至 0.5 MHz)
ECM——外部时钟中等功耗模式
(0.5 MHz 至 4 MHz)
ECH——外部时钟高功耗模式
(4 MHz 至 20 MHz)
LP——32 kHz 低功耗晶振模式
XT——中等增益晶振或陶瓷谐振器模式
(最高 4 MHz)
HS——高增益晶振或陶瓷谐振器模式
(4 MHz 至 20 MHz)
RC——外部阻容 (RC)
INTOSC——内部振荡器 (31 kHz 至 16 MHz)
时钟源模式通过配置字中的 FOSC<2:0> 位进行选择。
FOSC 位决定在器件初次上电时使用的振荡器类型。
EC 时钟模式依靠外部逻辑电平信号作为器件时钟源。
LP、 XT 和 HS 时钟模式要求器件在外部连接一个晶振
或谐振器。每种模式都针对不同频率范围而优化。 RC
时钟模式需要一个外部电阻和电容来设置振荡器频率。
INTOSC 内部振荡器模块可以产生低频和高频时钟源,
分别用 LFINTOSC 和 HFINTOSC 表示。(请参见内部
振荡器模块,图 5-1)。基于这两个时钟源,可以产生多
种器件时钟频率选择。
初稿
DS41624A_CN 第 43 页
PIC16(L)F1512/3
简化的 PIC® MCU 时钟源框图
图 5-1:
Low-Power
Mode
低功耗模式
事件切换
Event
Switch
(SCS<1:0>>)
(SCS<1:0>)
主振荡器
Primary
Oscillator
OSC2
Primary
Oscillator
主振荡器
(OSC)
(OSC)
2
OSC1
主时钟
Primary
Clock
00
SOSCO/
T1CKI
SOSCI
Secondary
辅助时钟
Secondary
Clock
辅助振荡器
Oscillator
(SOSC)
(SOSC)
INTOSC
01
1x
时钟切换多路开关
Clock Switch MUX
Secondary Oscillator
辅助振荡器
内部振荡器
Internal
Oscillator
IRCF<3:0>
4
Start-Up
Osc
启动振荡器
LF-INTOSC
(31.25 kHz)
DS41624A_CN 第 44 页
INTOSC
Divide
Circuit
分频电路
16 MHz
Primary
Osc
主振荡器
/1
/2
/4
/8
/16
HF-16 MHz
HF-8 MHz
HF-4 MHz
HF-2 MHz
HF-1 MHz
/32
HF-500 kHz
/64
HF-250 kHz
/128
HF-125 kHz
/256
HF-62.5 kHz
/512
HF-31.25 kHz
LF-31 kHz
1111
1110
1101
1100
1011
内部振荡器多路开关
Internal
Oscillator Mux
启动
Start-up
控制
Control
逻辑
Logic
4
1010/
0111
1001/
0110
1000/
0101
0100
0011
0010
0001
0000
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
5.2
当选取 EC 模式时,振荡器起振定时器 (OST)被禁
止。因此,上电复位(POR)后或者从休眠中唤醒后的
操作不存在延时。因为 PIC® MCU 的设计是完全静态
的,停止外部时钟输入将使器件暂停工作并保持所有数
据完整。当再次启动外部时钟时,器件恢复工作,就好
像没有停止过一样。
时钟源类型
时钟源可分为外部和内部模式。
外部时钟源依靠外部电路提供时钟源工作。例如:振荡
器模块 (EC 模式) 、石英晶体谐振器或陶瓷谐振器
(LP、 XT 和 HS 模式)以及阻容 (RC)模式电路。
内部时钟源内置于振荡器模块中。内部振荡器模块具有
两个内部振荡器,用于产生内部系统时钟源:16 MHz 高
频内部振荡器(HFINTOSC)和 31 kHz 低频内部振荡器
(LFINTOSC)。
图 5-2:
通过 OSCCON 寄存器中的系统时钟选择 (SCS)位在
外部和内部时钟源之间选择系统时钟。更多信息,请参
见第 5.3 节 “时钟切换”。
5.2.1
PIC® MCU
FOSC/4 或 I/O(1)
外部时钟源
注
• 编程配置字中的 FOSC<2:0> 位,选择在器件复位
时用作默认系统时钟的外部时钟源。
• 写入 OSCCON 寄存器中的 SCS<1:0> 位,将系统
时钟源切换为:
- 辅助振荡器 (在运行时),或者
- 由 FOSC 位的值决定的外部时钟源。
5.2.1.2
OSC2/CLKOUT
1: 输出取决于配置字的 CLKOUTEN 位。
LP、 XT 和 HS 模式
LP、XT 和 HS 模式支持使用连接到 OSC1 和 OSC2 的
石英晶体谐振器或陶瓷谐振器 (图 5-3)。这三种模式
选择内部反相放大器的低、中等或高增益设定,以支持
各种谐振器类型及速度。
更多信息,请参见第 5.3 节 “时钟切换”。
LP振荡器模式选择内部反相放大器的最低增益设定。LP
模式的电流消耗在三种模式中最小。该模式设计用来驱
动仅 32.768 kHz 的音叉 (Tuning Fork)型晶振 (钟表
晶振)。
EC 模式
外部时钟 (EC)模式允许外部产生的逻辑电平信号作
为系统时钟源。工作在该模式下时,外部时钟源连接到
OSC1 输入。 OSC2/CLKOUT 可 用 作 通 用 I/O 或
CLKOUT。图 5-2 给出了 EC 模式的引脚连接图。
XT 振荡器模式选择内部反相放大器的中等增益设定。
XT 模式的电流消耗在三种模式中居中。该模式最适合
驱动具备中等驱动电平规格要求的谐振器。
EC 模式具有三种功耗模式,可通过配置字进行选择:
HS 振荡器模式选择内部反相放大器的最高增益设定。
HS 模式的电流消耗在三种模式中最大。该模式最适合驱
动需要高驱动设定的谐振器。
• 高功耗, 4-20 MHz (FOSC = 111)
• 中等功耗, 0.5-4 MHz (FOSC = 110)
• 低功耗, 0-0.5 MHz (FOSC = 101)
 2012 Microchip Technology Inc.
OSC1/CLKIN
来自外部
系统的时钟
通过执行以下操作之一,可以使用外部时钟源作为器件
系统时钟:
5.2.1.1
外部时钟 (EC)模式的工
作原理
图 5-3 和图 5-4 分别给出了石英晶体谐振器和陶瓷谐振
器的典型电路。
初稿
DS41624A_CN 第 45 页
PIC16(L)F1512/3
图 5-3:
图 5-4:
石英晶振的工作原理 (LP、
XT 或 HS 模式)
陶瓷谐振器的工作原理
(XT 或 HS 模式)
PIC® MCU
PIC® MCU
OSC1/CLKIN
C1
注
C1
至内部
逻辑
石英
晶振
C2
OSC1/CLKIN
RS(1)
RF(2)
休眠
RP(3)
OSC2/CLKOUT
C2 陶瓷
谐振器
1: 对于具有低驱动电平规格的石英晶振,可能需
要串联一个电阻 (RS)。
注
2: RF 的值根据所选的振荡器模式变化(典型值在
2 M 至 10 M 之间)。
注
RS(1)
RF(2)
休眠
OSC2/CLKOUT
1: 对于具有低驱动电平规格的陶瓷谐振器,可能
需要串联一个电阻 (RS)。
2:RF 的值根据所选的振荡器模式变化 (典型值在
2 M 至 10 M 之间)。
3:为使陶瓷谐振器正常工作,可能需要并联一个
反馈电阻 (RP)。
1: 石英晶振的特性随类型、封装和制造商而
变化。要了解规格说明和推荐应用,应查阅
制造商提供的数据手册。
2: 应始终验证振荡器在应用要求的 VDD 和温
度范围内的性能。
5.2.1.3
振荡器起振定时器 (OST)
如果振荡器模块被配置为 LP、 XT 或 HS 模式,则振荡
器起振定时器 (OST)对来自 OSC1 的振荡计数 1024
次。这 发 生 在 上 电 复 位 (POR)和 上 电 延 时 定 时 器
(PWRT)延时结束后 (如果配置了),或从休眠中唤
醒后。在此期间,程序计数器不递增,程序执行暂停。
OST 确保使用石英晶体谐振器或陶瓷谐振器的振荡器
电路已经起振并为振荡器模块提供稳定的系统时钟。
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)
DS41624A_CN 第 46 页
至内部
逻辑
为了使从外部振荡器起振到代码执行之间的延时最小,
可选择双速时钟启动模式(见第 5.4 节“双速时钟启动
模式”)。
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
5.2.1.4
5.2.1.5
辅助振荡器
外部 RC 模式
辅 助 振 荡 器 是 与 Timer1 外 设 关 联 的 独 立晶振。在
SOSCO 和 SOSCI 器件引脚之间连接一个 32.768 kHz
晶振,对计时操作进行优化。
外部阻容 (RC)模式支持使用外部 RC 电路。对时钟
精度要求不高时,这使设计人员有了很大的频率选择空
间,且保持成本最低。
辅助振荡器可以用作备用系统时钟源,并且可以在运行
时通过时钟切换选择。更多信息,请参见第 5.3 节 “时
钟切换”。
RC 电路连接到 OSC1。OSC2/CLKOUT 可用作通用 I/O
或 CLKOUT。 OSC2/CLKOUT 引脚的功能由配置字中
CLKOUTEN 位的状态决定。
图 5-5:
图 5-6 给出了外部 RC 模式的连接图。
石英晶振的工作原理 (辅助
振荡器)
图 5-6:
VDD
PIC® MCU
OSC1/CLKIN
至内部
逻辑
VSS
FOSC/4 或 I/O(1)
SOSCO
推荐值:
注
内部
时钟
CEXT
32.768 kHz
石英
晶振
C2
PIC® MCU
REXT
SOSCI
C1
外部 RC 模式
1: 石英晶振的特性随类型、封装和制造商而
变化。要了解规格说明和推荐应用,应查阅
制造商提供的数据手册。
注
2: 应始终验证振荡器在应用要求的VDD 和温
度范围内的性能。
10 k  REXT  100 k, <3V
3 k  REXT  100 k, 3-5V
CEXT > 20 pF, 2-5V
1: 输出取决于配置字的 CLKOUTEN 位。
RC 振荡器频率是供电电压、电阻 (REXT)和电容
(CEXT)值以及工作温度的函数。影响振荡器频率的其
他因素有:
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)
• TB097,“Interfacing a Micro Crystal
MS1V-T1K 32.768 kHz Tuning Fork
Crystal to a PIC16F690/SS”
(DS91097)
• AN1288,“Design Practices for
Low-Power External Oscillators”
(DS01288)
 2012 Microchip Technology Inc.
OSC2/CLKOUT
• 阈值电压变化
• 元件容差
• 不同封装类型的电容差异
用户还应考虑因所使用的外部 RC 元件的容差而导致的
差异。
初稿
DS41624A_CN 第 47 页
PIC16(L)F1512/3
5.2.2
5.2.2.2
内部时钟源
LFINTOSC
通过执行以下操作之一,可以将器件配置为使用内部振
荡器模块作为系统时钟:
低频内部振荡器 (LFINTOSC)是未经校准的 31 kHz
内部时钟源。
• 编程配置字中的 FOSC<2:0> 位来选择 INTOSC
时钟源,在器件复位时将使用该时钟源作为默认系
统时钟。
• 在运行时写入 OSCCON 寄存器中的 SCS<1:0>
位,将系统时钟源切换为内部振荡器。更多信息,
请参见第 5.3 节 “时钟切换”。
LFINTOSC 的输出连接到后分频器和多路开关 (见图
5-1)。使用 OSCCON 寄存器的 IRCF<3:0> 位,通过软
件选择 31 kHz。更多信息,请参见第 5.2.2.4 节 “内部
振荡器时钟切换时序”。 LFINTOSC 还是上电延时定时
器 (PWRT)、看门狗定时器 (WDT)以及故障保护时
钟监视器 (FSCM)的时钟源。
在 INTOSC 模式下, OSC1/CLKIN 可用作通用 I/O。
OSC2/CLKOUT 可用作通用 I/O 或 CLKOUT。
LFINTOSC 可以通过选择 31 kHz(OSCCON 寄存器的
IRCF<3:0> 位 = 000)作为系统时钟源 (OSCCON 寄
存器的 SCS 位 = 1x)进行使能,也可以通过以下方式
使能:
OSC2/CLKOUT 引脚的功能由配置字中 CLKOUTEN 位
的状态决定。
• 根据所需的 LF 频率配置 OSCCON 寄存器的
IRCF<3:0> 位,并且
• FOSC<2:0> = 100,或者
• 将 OSCCON 寄存器的系统时钟源 (SCS)位设
置为 1x
内部振荡器模块具有两个独立振荡器,可以提供内部系
统时钟源。
1.
2.
HFINTOSC (高频内部振荡器)出厂时已校准,
工作频率为 16 MHz。
LFINTOSC (低频内部振荡器)未经校准,工作
频率为 31 kHz。
5.2.2.1
使用 LFINTOSC 的外设有:
• 上电延时定时器 (Power-up Timer, PWRT)
• 看门狗定时器 (WDT)
• 故障保护时钟监视器 (FSCM)
HFINTOSC
高频内部振荡器 (HFINTOSC)在出厂时已校准,为
16 MHz 内部时钟源。
OSCSTAT 寄存器的低频内部振荡器就绪位(LFIOFR)
指示 LFINTOSC 何时运行。
HFINTOSC 的输出连接到后分频器和多路开关 (见图
5-1)。使用 OSCCON 寄存器的 IRCF<3:0> 位,可通过
软件选择基于 HFINTOSC 产生的频率。更多信息,请
参见第 5.2.2.4 节 “内部振荡器时钟切换时序”。
发生以下情况时, HFINTOSC 被使能:
• 根据所需的 HF 频率配置 OSCCON 寄存器的
IRCF<3:0> 位,并且
• FOSC<2:0> = 100,或者
• 将 OSCCON 寄存器的系统时钟源 (SCS)位设
置为 1x
快速启动振荡器使内部电路可以在切换至 HFINTOSC
之前上电并稳定下来。
OSCSTAT 寄存器的高频内部振荡器就绪位(HFIOFR)
指示 HFINTOSC 何时运行。
OSCSTAT 寄存器的高频内部振荡器稳定位(HFIOFS)
指示 HFINTOSC 何时在距离其最终值的 0.5% 范围内运
行。
DS41624A_CN 第 48 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
5.2.2.3
5.2.2.4
内部振荡器频率选择
使 用 OSCCON 寄 存 器 的 内 部 振 荡 器 频率选择位
IRCF<3:0>,可通过软件选择系统时钟速度。
当在 HFINTOSC 和 LFINTOSC 之间切换时,新振荡器
可能已经关闭以节省功耗 (见图 5-7)。如果是这种情
况,则在修改 OSCCON 寄存器的 IRCF<3:0> 位之后,
进行频率选择之前,存在一定的延时。 OSCSTAT 寄存
器将反映 HFINTOSC 和 LFINTOSC 振荡器的当前工作
状态。频率选择序列如下:
16 MHz HFINTOSC 和 31 kHz LFINTOSC 的输出连接
到后分频器和多路开关(见图 5-1)。OSCCON 寄存器
的内部振荡器频率选择位 IRCF<3:0>用于选择内部振荡
器的频率输出。可通过软件选择以下频率中的一个:
1.
2.
3.
4.
• HFINTOSC
- 16 MHz
- 8 MHz
- 4 MHz
- 2 MHz
- 1 MHz
5.
6.
7.
- 500 kHz (复位后的默认值)
- 250 kHz
- 125 kHz
- 62.5 kHz
- 31.25 kHz
• LFINTOSC
- 31 kHz
注:
内部振荡器时钟切换时序
修改 OSCCON 寄存器的 IRCF<3:0> 位。
如果新时钟是关闭的,开始时钟启动延时。
时钟切换电路等待当前时钟下降沿出现。
当前时钟保持为低电平,时钟切换电路等待新时
钟上升沿出现。
新时钟现在开始工作。
OSCSTAT 寄存器按需要进行更新。
时钟切换完成。
更多详细信息,请参见图 5-7。
如果内部振荡器速度在同一时钟源的两个时钟之间进行
切换,则选取新频率不存在起振延时。表 5-1 中列出了
时钟切换延时。
起振延时规范请参见第 25.0 节 “电气规范”中的振荡
器表。
任何复位后,OSCCON寄存器的IRCF<3:0>
位都被设置为 0111,频率选择被设置为
500 kHz。用户可以修改 IRCF 位来选择其
他频率。
通过 OSCCON 寄存器的 IRCF<3:0> 位,可以重复选择
一些频率。重复选择可以为系统设计提供权衡的空间。
对于某个给定的频率,可以通过更改振荡器源来降低功
耗。在使用同一振荡器源的情况下改变频率时,可以实
现更快的转换速度。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 49 页
PIC16(L)F1512/3
图 5-7:
内部振荡器切换时序
HFINTOSC
LFINTOSC(禁止 FSCM 和 WDT)
HFINTOSC
起振时间
2 周期同步
运行
2 周期同步
运行
LFINTOSC
0
IRCF<3:0>
0
系统时钟
HFINTOSC
LFINTOSC(使能 FSCM 或 WDT)
HFINTOSC
LFINTOSC
0
IRCF<3:0>
0
系统时钟
LFINTOSC
HFINTOSC
除非使能了 WDT 或 FSCM,否则 LFINTOSC 会关闭
LFINTOSC
起振时间
2 周期同步
运行
HFINTOSC
IRCF<3:0>
=0
0
系统时钟
DS41624A_CN 第 50 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
5.3
5.3.3
时钟切换
辅助振荡器
使用 OSCCON 寄存器的系统时钟选择 (SCS)位,可
通过软件在外部和内部时钟源之间切换系统时钟源。使
用 SCS 位可以选择以下时钟源:
辅助振荡器是与 Timer1 外设关联的独立 晶振。在
SOSCO 和 SOSCI 器件引脚之间连接一个 32.768 kHz
晶振,对计时操作进行优化。
• 由配置字中的 FOSC 位决定的默认系统振荡器
• 辅助振荡器 32 kHz 晶振
• 内部振荡器模块 (INTOSC)
通过 T1CON 寄存器中的 T1OSCEN 控制位来使能辅助
振荡器。关于 Timer1 外设的更多信息,请参见第 18.0
节 “带门控控制的 Timer1 模块”。
5.3.1
5.3.4
系统时钟选择 (SCS)位
在选择辅助振荡器作为系统时钟源之前,用户必须确保
它已就绪备用。 OSCSTAT 寄存器的辅助振荡器就绪
(SOSCR)位 指 示 辅 助 振 荡 器 是 否 已 就 绪 备 用。在
SOSCR 位置 1 之后,可以将 SCS 位配置为选择辅助振
荡器。
OSCCON 寄存器的系统时钟选择 (SCS)位选择用于
CPU 和外设的系统时钟源。
• 当 OSCCON 寄存器的 SCS 位 = 00 时,系统时钟
源由配置字中的 FOSC<2:0> 位的值决定。
• 当 OSCCON 寄存器的 SCS 位 = 01 时,系统时钟
源为辅助振荡器。
• 当 OSCCON 寄存器的 SCS 位 = 1x 时,系统时钟
源由通过 OSCCON 寄存器的 IRCF<3:0> 位选择
的内部振荡器频率选择。复位之后, OSCCON 寄
存器的 SCS 位总是被清零。
注:
辅助振荡器就绪 (SOSCR)位
任何自动时钟切换 (可能由双速启动或故
障 保 护 时 钟 监 视 器 产 生)都 不 会 更 新
OSCCON 寄存器的 SCS 位。用户可以监
视 OSCSTAT 寄存器的 OSTS 位,以确定
当前的系统时钟源。
当在时钟源之间切换时,需要一定的延时以使新时钟稳
定。表 5-1 给出了各种振荡器延时。
5.3.2
振荡器起振延时状态 (OSTS)位
OSCSTAT 寄存器的振荡器起振延时状态 (OSTS)位
用于指示系统时钟是来自外部时钟源 (由配置字中的
FOSC<2:0> 位定义),还是来自内部时钟源。OSTS 还
用于特别指示在 LP、 XT 或 HS 模式下,振荡器起振定
时器 (OST)是否已超时。 OST 不会反映辅助振荡器
的状态。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 51 页
PIC16(L)F1512/3
5.4
5.4.1
双速时钟启动模式
双速启动模式配置
通过以下设定来配置双速启动模式:
双速启动模式通过最大限度地缩短外部振荡器起振与代
码执行之间的延时,进一步节省了功耗。对于频繁使用
休眠模式的应用,双速启动模式将从器件唤醒的时间中
去除外部振荡器的起振时间,从而可降低器件的总体功
耗。该模式使得能够将应用从休眠中唤醒,将 INTOSC
内部振荡器模块用作时钟源执行数条指令,然后再返回
休眠状态而无需等待外部振荡器稳定下来。
• IESO (在配置字中) = 1 ;内 / 外部切换位 (使
能双速启动模式)。
• SCS (在 OSCCON 寄存器中) = 00。
• 配置字中的 FOSC<2:0> 位被配置为 LP、 XT 或
HS 模式。
在以下事件之后,进入双速启动模式:
当振荡器模块被配置为 LP、 XT 或 HS 模式时,双速启
动可以带来一些益处。对于这些模式,振荡器起振定时
器 (OST)会被使能,并且它必须在计数 1024 次振荡
之后,振荡器才能用作系统时钟源。
• 上电复位 (POR)以及在上电延时定时器
(PWRT)延时结束 (如果使能)后,或者
• 从休眠中唤醒。
如果振荡器模块被配置为除 LP、 XT 或 HS 模式以外的
任何模式,则双速启动将被禁止。这是因为 POR 后或
从休眠中退出时,外部时钟振荡器不需要花时间稳定。
如果在器件进入休眠模式之前 OST 计数到 1024,则
OSCSTAT 寄存器的 OSTS 位置 1,程序执行切换到外
部振荡器。但是,如果唤醒所需的时间极短,系统可能
永远不会使用外部振荡器工作。
注:
表 5-1:
执行 SLEEP 指令将中止振荡器起振时间,
并使 OSCSTAT 寄存器的 OSTS 位保持清
零。
振荡器切换延时
切换自
切换到
频率
振荡器延时
休眠 /POR
LFINTOSC
HFINTOSC
31 kHz
31.25 kHz-16 MHz
振荡器预热延时 (TWARM)
休眠 /POR
LFINTOSC
EC 或 RC
DC – 20 MHz
2 个周期
EC 或 RC
DC – 20 MHz
每次一周期
32 kHz-20 MHz
1024 个时钟周期 (OST)
任何时钟源
辅助振荡器、 LP、
XT 或 HS
HFINTOSC
31.25 kHz-16 MHz
2 s (近似值)
任何时钟源
LFINTOSC
31 kHz
每次一周期
任何时钟源
辅助振荡器
32 kHz
1024 个时钟周期 (OST)
休眠 /POR
DS41624A_CN 第 52 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
5.4.2
1.
2.
3.
4.
5.
6.
7.
5.4.3
双速启动顺序
通过检查 OSCSTAT 寄存器的 OSTS 位的状态,可以确
认 单 片 机 是 依 靠 外 部 时 钟 源 运 行 (由 配 置 字 中 的
FOSC<2:0> 位定义),还是依靠内部振荡器运行。
从上电复位或休眠中唤醒。
使用内部振荡器以
OSCCON
寄存器的
IRCF<3:0> 位设置的频率开始执行指令。
OST 使能,计数 1024 个时钟周期。
OST 超时,等待内部振荡器下降沿出现。
OSTS 置 1。
系统时钟保持为低电平,直到新时钟下一个下降
沿出现 (LP、 XT 或 HS 模式)。
系统时钟切换到外部时钟源。
图 5-8:
检查双速时钟状态
双速启动
INTOSC
TOST
OSC1
0
1
1022 1023
OSC2
程序计数器
PC - N
PC +1
PC
系统时钟
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 53 页
PIC16(L)F1512/3
5.5
5.5.3
故障保护时钟监视器
在复位、执行 SLEEP 指令或更改 OSCCON 寄存器的
SCS 位之后,故障保护条件被清除。SCS 位被更改后,
OST 将重新启动。OST 运行时,器件将依靠 OSCCON
中选定的 INTOSC 工作。 OST 超时后,故障保护条件
被清除,器件将使用外部时钟源工作。必须先清除故障
保护条件,然后才能清零 OSFIF 标志。
故障保护时钟监视器 (FSCM)使得器件在出现外部振
荡器故障时仍能继续工作。FSCM 能在振荡器起振定时
器 (OST)延时结束后的任一时刻检测振荡器故障。
FSCM 通过将配置字中的FCMEN位置1来使能。FSCM
可用于所有外部振荡器模式(LP、XT、HS、EC、RC
和辅助振荡器)。
图 5-9:
÷ 64
31 kHz
(~32 s)
488 HZ
(~2 ms)
采样时钟
S
Q
R
Q
复位或从休眠中唤醒
FSCM 设计为能在振荡器起振定时器(OST)延时结束
后检测振荡器故障。从休眠状态唤醒后以及任何类型的
复位后使用 OST。OST 不能在 EC 或 RC 时钟模式下使
用,所以一旦复位或唤醒完成,FSCM 就立即处于活动
状态。当 FSCM 被使能时,双速启动也被使能。因此,
当 OST 运行时,器件总是处于代码执行阶段。
时钟监视器
锁存器
LFINTOSC
振荡器
5.5.1
5.5.4
FSCM 框图
外部
时钟
故障保护条件清除
注:
检测到
时钟故障
由于振荡器起振时间范围较大,在振荡器
起振期间(即,从复位或休眠中退出后),
故障保护电路不处于活动状态。经过一段
适当的时间后,用户应检查 OSCSTAT 寄
存器中的状态位,以验证振荡器是否已成
功起振以及系统时钟是否切换成功。
故障保护检测
FSCM 模块通过将外部振荡器与 FSCM 采样时钟比较来
检测振荡器故障。将 LFINTOSC 64 分频,就产生了采
样时钟。请参见图 5-9。故障检测器模块内部有一个锁
存器。在外部时钟的每个下降沿,外部时钟将锁存器置
1。在采样时钟的每个上升沿,采样时钟将锁存器清零。
如果已经经过采样时钟的完整半周期,但外部时钟仍未
变为低电平,则会检测到故障。
5.5.2
故障保护操作
当外部时钟出现故障时,FSCM 将器件时钟切换到内部
时钟源,并将 PIR2 寄存器的 OSFIF 标志位置 1。如果
PIE2 寄存器的 OSFIE 位也置 1,则 OSFIF 标志置 1 会
产生中断。器件固件随后会采取措施减轻可能由故障时
钟所产生的问题。系统时钟将继续由内部时钟源提供,
直到器件固件成功重启外部振荡器并切换回外部振荡器
进行工作。
FSCM 选 定 的 内 部 时 钟 源 由 OSCCON 寄 存器的
IRCF<3:0> 位决定。这使得可以在故障发生前配置内部
振荡器。
DS41624A_CN 第 54 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 5-10:
FSCM 时序图
采样时钟
振荡器
故障
系统时钟输出
时钟监视器输出
(Q)
检测到
故障
OSCFIF
测试
注:
测试
测试
系统时钟频率通常远高于采样时钟频率, 本例选用的相对频率仅是为了便于说明。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 55 页
PIC16(L)F1512/3
5.6
振荡器控制寄存器
寄存器 5-1:
U-0
OSCCON:振荡器控制寄存器
R/W-0/0
R/W-1/1
R/W-1/1
R/W-1/1
IRCF<3:0>
—
U-0
—
R/W-0/0
R/W-0/0
SCS<1:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
未实现:读为 0
bit 6-3
IRCF<3:0>:内部振荡器频率选择位
1111 = 16 MHz
1110 = 8 MHz
1101 = 4 MHz
1100 = 2 MHz
1011 = 1 MHz
1010 = 500 kHz(1)
1001 = 250 kHz(1)
1000 = 125 kHz(1)
0111 = 500 kHz (复位时的默认值)
0110 = 250 kHz
0101 = 125 kHz
0100 = 62.5 kHz
001x = 31.25 kHz
000x = 31 kHz LF
bit 2
未实现:读为 0
bit 1-0
SCS<1:0>:系统时钟选择位
1x = 内部振荡器模块
01 = 辅助振荡器
00 = 由配置字中 FOSC<2:0> 决定的时钟
注
1: 基于 HFINTOSC 产生的重复频率。
DS41624A_CN 第 56 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 5-2:
OSCSTAT:振荡器状态寄存器
R-1/q
U-0
R-q/q
R-0/q
U-0
U-0
R-0/0
R-0/q
SOSCR
—
OSTS
HFIOFR
—
—
LFIOFR
HFIOFS
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
q = 条件值
bit 7
SOSCR:辅助振荡器就绪位
如果 T1OSCEN = 1:
1 = 辅助振荡器就绪
0 = 辅助振荡器未就绪
如果 T1OSCEN = 0:
1 = Timer1 时钟源始终就绪
bit 6
未实现:读为 0
bit 5
OSTS:振荡器起振延时状态位
1 = 依靠由配置字中 FOSC<2:0> 位定义的时钟运行
0 = 依靠内部振荡器 (FOSC<2:0> = 100)运行
bit 4
HFIOFR:高频内部振荡器就绪位
1 = HFINTOSC 就绪
0 = HFINTOSC 未就绪
bit 3-2
未实现:读为 0
bit 1
LFIOFR:低频内部振荡器就绪位
1 = LFINTOSC 就绪
0 = LFINTOSC 未就绪
bit 0
HFIOFS:高频内部振荡器稳定位
1 = HFINTOSC 16 MHz 振荡器已稳定,并正在驱动 INTOSC
0 = HFINTOSC 16 MHz 振荡器未稳定,启动振荡器正在驱动 INTOSC
表 5-2:
与时钟源相关的寄存器汇总
Bit 7
名称
Bit 6
Bit 5
Bit 4
Bit 3
Bit 1
OSCSTAT
SOSCR
—
OSTS
HFIOFR
—
—
LFIOFR
HFIOFS
57
PIE2
OSFIE
—
—
—
BCLIE
—
—
CCP2IE
74
PIR2
OSFIF
—
—
—
BCLIF
—
—
CCP2IF
76
T1OSCEN
T1SYNC
—
TMR1ON
175
TMR1CS<1:0>
CONFIG1
图注:
56
— = 未实现位,读为 0。时钟源不使用阴影单元。
表 5-3:
名称
T1CKPS<1:0>
SCS<1:0>
寄存器
所在页
—
T1CON
—
Bit 0
OSCCON
图注:
IRCF<3:0>
Bit 2
与时钟源相关的配置字汇总
Bit
Bit -/7
Bit 13/5
Bit 12/4
Bit 11/3
FCMEN
IESO
CLKOUTEN
MCLRE
PWRTE
—
13:8
7:0
Bit -/6
CP
WDTE<1:0>
Bit 10/2
Bit 9/1
BOREN<1:0>
FOSC<2:0>
Bit 8/0
—
寄存器
所在页
38
— = 未实现位,读为 0。时钟源不使用阴影单元。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 57 页
PIC16(L)F1512/3
注:
DS41624A_CN 第 58 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
6.0
图 6-1 给出了片上复位电路的简化框图。
复位
该器件的复位有几种方式:
•
•
•
•
•
•
•
•
•
上电复位 (POR)
欠压复位 (BOR)
低功耗欠压复位 (LPBOR)
MCLR 复位
WDT 复位
RESET 指令
堆栈上溢
堆栈下溢
退出编程模式
要使 VDD 稳定下来,可以使能可选的上电延时定时器来
延长 BOR 或 POR 事件之后的复位时间。
图 6-1:
片上复位电路的简化框图
ICSP? Programming Mode
ICSP? Programming
Mode
Exit
退出 ICSP™
编程模式
Exit
RESETRESET
Instruction
指令
Stack
堆栈
指针
Pointer
MCLRE
MCLR
休眠
Sleep
WDT
Time-out
超时
Device
器件复位
Reset
Power-on
上电
复位
Reset
DD
VDD
Brown-out
欠压
Reset
复位
R
LPBOR
复位
Reset
PWRT
Done
PWRTE
LFINTOSC
BOR
(1)
有效 (1)
Active
注
1: 关于 BOR 激活条件,请参见表 6-1。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 59 页
PIC16(L)F1512/3
6.1
6.2
上电复位 (POR)
欠压复位 (BOR)
POR 电路会将器件一直保持在复位状态,直到 VDD 达到
最低工作条件可接受的电平为止。在 VDD 上升缓慢、高
速运行或要求一定模拟性能时,所需的电压可能高于最
低 VDD。可以使用 PWRT、 BOR 或 MCLR 功能来延长
启动周期,直到满足所有器件工作条件为止。
当 VDD 达到可选的最低电平时, BOR 电路会将器件保
持在复位状态。在 POR 和 BOR 之间,可在整个电压范
围内对器件的执行进行保护。
6.1.1
•
•
•
•
欠压复位模块具有 4 种工作模式,它们由配置字中的
BOREN<1:0> 位控制。 这 4 种工作模式是:
上电延时定时器 (PWRT)
上电延时定时器在 POR 或欠压复位时提供一个 64 ms
标称值的延时。
只要 PWRT 处于活动状态,器件就保持在复位状态。
PWRT延时使VDD 有额外的时间上升到所需的电平。可
通过清零配置字中的 PWRTE 位使能上电延时定时器。
更多信息,请参见表 6-1。
对配置字中的 BORV 位进行配置来选择欠压复位电平。
上电延时定时器会在 POR 和 BOR 释放之后启动。
VDD 噪声抑制滤波器可以防止 BOR 在发生小事件时触
发。如果 VDD 降至低于 VBOR 的时间大于参数 TBORDC,
器件将会发生复位。更多信息,请参见图 6-2。
更 多 信 息,请 参 见 应 用 笔 记
AN607,“Power-up
Trouble Shooting”(DS00607)。
表 6-1:
BOR 总是开启
BOR 在休眠模式下关闭
BOR 通过软件进行控制
BOR 总是关闭
BOR 工作模式
BOREN<1:0>
SBOREN
器件模式
BOR 模式
11
X
X
有效
10
X
唤醒
有效
休眠
禁止
1
X
有效
0
X
禁止
X
X
禁止
01
00
注 1:
6.2.1
在执行指令时:
从 POR 恢复或从休眠中唤醒
等待 BOR 就绪 (1) (BORRDY = 1)
等待 BOR 就绪 (BORRDY = 1)
等待 BOR 就绪 (1) (BORRDY = 1)
立即开始 (BORRDY = x)
在 “从 POR 恢复”和 “从休眠模式唤醒”的特殊情况下,启动时没有任何延时。在 CPU 准备好执行指令
前, BOR 就绪标志会置 1 (BORRDY = 1),其原因是 BOR 电路被 BOREN<1:0> 位强制开启。
6.2.3
BOR 总是开启
通过软件对 BOR 进行控制
当配置字的 BOREN 位设置为 11 时, BOR 将总是开
启。器件启动会被延迟,直到 BOR 就绪,且 VDD 高于
BOR 阈值为止。
当配置字的 BOREN 位设置为 01 时, BOR 将通过
BORCON 寄存器的 SBOREN 位进行控制。器件启动不
会受 BOR 就绪条件或 VDD 电平条件影响而延迟。
BOR 保护在休眠期间有效。 BOR 不会延迟从休眠中唤
醒。
BOR 保护会在 BOR 电路就绪时立即开始。 BOR 电路
的状态在 BORCON 寄存器的 BORRDY 位中反映。
6.2.2
BOR 保护在休眠期间不变。
BOR 在休眠模式下关闭
当配置字的 BOREN 位设置为 10 时,BOR 将开启,除
非在休眠模式下。器件启动会被延迟,直到 BOR 就绪,
且 VDD 高于 BOR 阈值为止。
BOR 保护在休眠期间无效。 器件唤醒会被延迟,直到
BOR 就绪为止。
DS41624A_CN第 60 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 6-2:
欠压情形
VDD
VBOR
内部
复位
TPWRT(1)
VDD
VBOR
内部
复位
< TPWRT
TPWRT(1)
VDD
VBOR
内部
复位
注
TPWRT(1)
1: 仅在 PWRTE 位被编程为 0 时,才有 TPWRT 延时。
寄存器 6-1:
BORCON: 欠压复位控制寄存器
R/W-1/u
R/W-0/u
U-0
U-0
U-0
U-0
U-0
R-q/u
SBOREN
BORFS
—
—
—
—
—
BORRDY
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
q = 值取决于具体条件
bit 7
SBOREN:软件欠压复位使能位
如果配置字的 BOREN <1:0> 01:
SBOREN 可读 / 写,但对 BOR 没有任何作用。
如果配置字的 BOREN <1:0>= 01:
1 = 使能 BOR
0 = 禁止 BOR
bit 6
BORFS:欠压复位快速启动位 (1)
如果 BOREN<1:0> = 11 (总是开启)或 BOREN<1:0> = 00 (总是关闭):
BORFS 可读 / 写,但不起任何作用。
如果 BOREN <1:0> = 10 (在休眠模式下禁止)或 BOREN<1:0> = 01 (受软件控制):
1 = 总是强制开启带隙 (包括休眠 / 唤醒 / 工作等情形)
0 = 带隙正常工作,并且可以关闭
bit 5-1
未实现:读为 0
bit 0
BORRDY:欠压复位电路就绪状态位
1 = 欠压复位电路有效
0 = 欠压复位电路无效
注
1: BOREN<1:0> 位位于配置字中。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 61 页
PIC16(L)F1512/3
6.3
6.5
低功耗欠压复位 (LPBOR)
低功耗欠压复位 (LPBOR)是复位子系统的一个重要
组成部分。关于BOR如何与其他模块进行交互的信息,
请参见图 6-1。
如果固件未在超时周期内发出 CLRWDT 指令,看门狗定
时器会产生复位。 STATUS 寄存器中的 TO 和 PD 位会
改变,指示发生了 WDT 复位。更多信息,请参见第 10.0
节 “看门狗定时器 (WDT)”。
LPBOR用于监视外部VDD引脚。当检测到电压太低时,
器件将保持在复位状态。发生这种情况时,有一个寄存
器位 (BOR)会发生改变,指示发生了 BOR 复位。对
于 BOR 和 LPBOR 事件,所设置的是同一个位。 请参
见寄存器 6-2。
6.3.1
6.6
LPBOR 由配置字中的 LPBOREN 位控制。 在器件被擦
除后, LPBOR 模块默认设为禁止。
6.7
堆栈上溢 / 下溢复位
器件可以在堆栈上溢或下溢时复位。 PCON 寄存器的
STKOVF 或 STKUNF 用于指示复位条件。通过将配置字
的 STVREN 位置 1,使能复位。更多信息,请参见第
3.4.2 节 “上溢 / 下溢复位”。
LPBOR 模块输出
LPBOR 模块的输出是一个用于指示是否要将复位置为
有效的信号。 该信号与 BOR 模块的复位信号进行或运
算,用以提供通用 BOR 信号,并送至 PCON 寄存器和
电源控制模块。
6.4
RESET 指令
RESET指令会引起器件复位。PCON寄存器中的RI位将
设置为 0。关于发生 RESET 指令之后的默认条件,请参
见表 6-4。
使能 LPBOR
6.3.1.1
看门狗定时器 (WDT)复位
6.8
退出编程模式
在退出编程模式时,器件的反应与刚刚发生 POR 时的
情况相同。
MCLR
MCLR 是可将器件复位的可选外部输入。 MCLR 功能由
配置字的 MCLRE 位和 LVP 位控制 (寄存器 4-2)。
6.9
表 6-2:
上电延时定时器可用于在 BOR 或 POR 事件之后延迟器
件执行。该定时器通常用于使 VDD 在允许器件开始运行
之前先稳定下来。
MCLR 配置
MCLRE
LVP
MCLR
0
0
禁止
1
0
使能
x
1
使能
6.4.1
上电延时定时器由配置字的 PWRTE 位控制。
6.10
1.
2.
器件在 MCLR 复位路径中有一个噪声滤波器。该滤波器
检测并滤除小脉冲。
3.
6.4.2
上电延时定时器运行完毕 (如果使能)。
振荡器起振定时器运行完毕(如果对于振荡器源
需要)。
MCLR 必须被释放 (如果使能)。
总延时时间取决于振荡器配置和上电延时定时器配置。
更多信息,请参见第 5.0 节“振荡器模块(带故障保护
时钟监视器)”。
复位不会将 MCLR 引脚驱动为低电平。
MCLR 禁止
上电延时定时器和振荡器起振定时器的运行与 MCLR 复
位无关。如果 MCLR 保持低电平的时间足够长,上电延
时定时器和振荡器起振定时器将会延时结束。 将 MCLR
拉为高电平后,器件将立即开始执行代码(见图 6-3)。
这对于测试或同步多个并行工作的器件来说是非常有用
的。
当 MCLR 被禁止时,引脚将用作通用输入,内部弱上拉
由软件控制。更多信息,请参见第 12.5 节 “PORTE 寄
存器”。
DS41624A_CN第 62 页
启动顺序
在 POR 或 BOR 释放时,只有先发生以下事件,器件才
会开始执行:
MCLR 使能
当使能 MCLR 并且引脚保持低电平时,器件会保持在复
位状态。MCLR 引脚通过内部弱上拉与 VDD 连接。
注:
上电延时定时器
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 6-3:
复位启动序列
VDD
内部 POR
TPWRT
上电延时定时器
MCLR
TMCLR
内部复位
振荡器模式
外部晶振
TOST
振荡器起振定时器
振荡器
FOSC
内部振荡器
振荡器
FOSC
外部时钟(EC)
CLKIN
FOSC
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 63 页
PIC16(L)F1512/3
6.11
确定复位原因
在发生任何复位时,STATUS 和 PCON 寄存器中会有多
个位发生更新,以指示复位的原因。表 6-3 和表 6-4 列
出了这些寄存器的复位条件。
表 6-3:
复位状态位及其含义
STKOVF STKUNF RWDT
RMCLR
RI
POR
BOR
TO
PD
条件
0
0
1
1
1
0
x
1
1
上电复位
0
0
1
1
1
0
x
0
x
非法的, POR 时 TO 被置 1
0
0
1
1
1
0
x
x
0
非法的, POR 时 PD 被置 1
0
0
u
1
1
u
0
1
1
欠压复位
u
u
0
u
u
u
u
0
u
WDT 复位
u
u
u
u
u
u
u
0
0
被 WDT 从休眠状态唤醒
u
u
u
u
u
u
u
1
0
被中断从休眠状态唤醒
u
u
u
0
u
u
u
u
u
正常工作期间的 MCLR 复位
u
u
u
0
u
u
u
1
0
休眠期间的 MCLR 复位
u
u
u
u
0
u
u
u
u
执行了 RESET 指令
1
u
u
u
u
u
u
u
u
堆栈上溢复位 (STVREN = 1)
u
1
u
u
u
u
u
u
u
堆栈下溢复位 (STVREN = 1)
表 6-4:
特殊寄存器的复位状态 (2)
程序
计数器
STATUS
寄存器
PCON
寄存器
上电复位
0000h
---1 1000
00-1 110x
正常工作期间的 MCLR 复位
0000h
---u uuuu
uu-u 0uuu
休眠期间的 MCLR 复位
0000h
---1 0uuu
uu-u 0uuu
WDT 复位
0000h
---0 uuuu
uu-0 uuuu
被 WDT 从休眠状态唤醒
PC +1
---0 0uuu
uu-u uuuu
欠压复位
0000h
---1 1uuu
00-1 11u0
---1 0uuu
uu-u uuuu
条件
(1)
PC + 1
被中断从休眠状态唤醒
执行了 RESET 指令
0000h
---u uuuu
uu-u u0uu
堆栈上溢复位 (STVREN = 1)
0000h
---u uuuu
1u-u uuuu
堆栈下溢复位 (STVREN = 1)
0000h
---u uuuu
u1-u uuuu
图注:
u = 不变, x = 未知, - = 未实现位,读为 0。
注 1:当器件被中断唤醒且全局中断允许位 GIE 被置 1 时,返回地址被压入堆栈,并且在执行 PC + 1 后,PC 装入
中断向量 (0004h)。
2:如果某个状态位未实现,则该位将读为 0。
DS41624A_CN第 64 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
6.12
电源控制 (PCON)寄存器
电源控制 (PCON)寄存器包含区分以下各种复位的标
志位:
•
•
•
•
•
•
•
上电复位 (POR)
欠压复位 (BOR)
RESET 指令复位 (RI)
MCLR 复位 (RMCLR)
看门狗定时器复位 (RWDT)
堆栈下溢复位 (STKUNF)
堆栈上溢复位 (STKOVF)
PCON 寄存器位如寄存器 6-2 所示。
寄存器 6-2:
PCON: 电源控制寄存器
R/W/HS-0/q
R/W/HS-0/q
U-0
STKOVF
STKUNF
—
R/W/HC-1/q R/W/HC-1/q
R/W/HC-1/q
R/W/HC-q/u
R/W/HC-q/u
RI
POR
BOR
RMCLR
RWDT
bit 7
bit 0
图注:
HC = 硬件清零位
R = 可读位
HS = 硬件置 1 位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-m/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
q = 值取决于具体条件
bit 7
STKOVF:堆栈上溢标志位
1 = 发生了堆栈上溢
0 = 未发生堆栈上溢或由固件清零
bit 6
STKUNF:堆栈下溢标志位
1 = 发生了堆栈下溢
0 = 未发生堆栈下溢或由固件清零
bit 5
未实现:读为 0
bit 4
RWDT:看门狗定时器复位标志位
1 = 未发生看门狗定时器复位或由固件设置为 1
0 = 发生了看门狗定时器复位 (由固件清零)
bit 3
RMCLR:MCLR 复位标志位
1 = 未发生 MCLR 复位或由固件设置为 1
0 = 发生了 MCLR 复位 (当发生 MCLR 复位时,由硬件设置为 0)
bit 2
RI:RESET 指令标志位
1 = 未执行 RESET 指令或由固件设置为 1
0 = 执行了 RESET 指令 (由硬件清零)
bit 1
POR:上电复位状态位
1 = 未发生上电复位
0 = 发生了上电复位 (发生上电复位后必须用软件置 1)
bit 0
BOR:欠压复位状态位
1 = 未发生欠压复位
0 = 发生了欠压复位 (发生上电复位或欠压复位后必须用软件置 1)
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 65 页
PIC16(L)F1512/3
表 6-5:
与复位相关的寄存器汇总
名称
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
寄存器
所在页
BORCON
SBOREN
BORFS
—
—
—
—
—
BORRDY
61
PCON
STKOVF
STKUNF
—
RWDT
RMCLR
RI
POR
BOR
65
STATUS
—
—
—
TO
PD
Z
DC
C
19
WDTCON
—
—
SWDTEN
87
WDTPS<4:0>
图注:
— = 未实现位,读为 0。复位不使用阴影单元。
注
1: 在正常工作期间,其他非上电复位包括 MCLR 复位和看门狗定时器复位。
DS41624A_CN第 66 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
7.0
中断
通过中断功能,一些事件可以抢占正常的程序流。固件
用于确定中断源,并执行相应的操作。有些中断可配置
为将 MCU 从休眠模式唤醒。
本章包含了关于中断的以下信息:
•
•
•
•
•
工作原理
中断延时
休眠期间的中断
INT 引脚
自动现场保护
许多外设都会产生中断。详情请参见相应章节。
图 7-1 给出了中断逻辑的框图。
图 7-1:
中断逻辑
TMR0IF
TMR0IE
Peripheral
Interrupts
外设中断
(TMR1IF) PIR1<0>
(TMR1IF)
(TMR1IF)
(TMR1IE) PIE1<0>
Wake-up
唤醒
(If in Sleep mode)
(如在休眠模式下)
INTF
INTE
IOCIF
IOCIE
至 CPU
Interrupt
的中断
to
CPU
PEIE
PIRn<7>
PIEn<7>
 2012 Microchip Technology Inc.
GIE
初稿
DS41624A_CN第 67 页
PIC16(L)F1512/3
7.1
7.2
工作原理
任何器件复位时都会禁止中断。通过将以下位置 1 允许
相应中断:
中断响应延时
中断响应延时定义为从发生中断事件到开始执行中断向
量处代码经过的时间。同步中断的延时为 3 或 4 个指令
周期。对于异步中断,延时为 3 至 5 个指令周期,这取
决于中断发生的时间。更多详细信息,请参见图 7-2 和
图 7-3。
• INTCON 寄存器的 GIE 位
• 特定中断事件的中断允许位
• INTCON 寄存器的 PEIE 位 (如果中断事件的中
断允许位包含在 PIEx 寄存器中)
INTCON、 PIR1 和 PIR2 寄存器通过中断标志位记录各
个中断。无论 GIE、 PEIE 和各个中断允许位的状态如
何,中断标志位都会在中断发生时置 1。
当中断事件发生时,若 GIE 位置 1,将发生以下事件:
•
•
•
•
清除当前的预取指令
GIE 位清零
程序计数器 (PC)的当前值压入堆栈
自动将关键寄存器保存到影子寄存器中 (见第 7.5
节 “自动现场保护”)
• 将中断向量 0004h 装入 PC
中断服务程序 (Interrupt Service Routine, ISR)中的
固件应通过查询中断标志位来确定中断源。退出 ISR 前
必须清零中断标志位,以避免重复中断。由于 GIE 位清
零,执行 ISR 期间发生的任何中断都会通过其中断标志
位记录下来,但不会使处理器重定位到中断向量。
RETFIE 指令通过从堆栈弹出先前保存的地址、从影子
寄存器恢复保存的现场数据并将GIE位置1来退出ISR。
关于特定中断操作的更多信息,请参见其外设章节。
注
1: 无论中断允许位状态如何,各中断标志位
都会在中断发生时置 1。
2: GIE 位清零时,将忽略所有中断。 GIE 位
清零期间发生的任何中断,都会在 GIE 位
再次置 1 时得到处理。
DS41624A_CN第 68 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 7-2:
中断响应延时
OSC1
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
CLKOUT
Interrupt Sampled
Q1
期间采样到的中断
during
Q1
Interrupt
中断
GIE
PC
执行
Execute
PC-1
PC
PC 处的单周期指令
1 Cycle
Instruction at PC
PC+1
0004h
0005h
NOP
NOP
Inst(0004h)
PC+1/FSR
的地址
ADDR
New
新的PC/
PC+1
0004h
0005h
Inst(PC)
NOP
NOP
Inst(0004h)
FSR
FSRADDR
地址
PC+1
PC+2
0004h
0005h
INST(PC)
NOP
NOP
NOP
Inst(0004h)
Inst(0005h)
FSR
FSRADDR
地址
PC+1
0004h
0005h
INST(PC)
NOP
NOP
Inst(0004h)
Inst(PC)
Interrupt
中断
GIE
PC
Execute
执行
PC-1
PC
2 Cycle
Instruction at PC
PC 处的双周期指令
Interrupt
中断
GIE
PC
Execute
执行
PC-1
PC
PC 处的
3 周期指令
3 Cycle
Instruction
at PC
Interrupt
中断
GIE
PC
Execute
执行
PC-1
PC
3 Cycle
Instruction
at PC
PC 处的
3 周期指令
 2012 Microchip Technology Inc.
初稿
PC+2
NOP
NOP
DS41624A_CN第 69 页
PIC16(L)F1512/3
图 7-3:
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
(2)
(5)
中断响应延时
GIE
指令流
PC
PC
注
0004h
0005h
Inst (PC)
Inst (PC + 1)
—
Inst (0004h)
Inst (0005h)
Inst (PC – 1)
Inst (PC)
空周期
空周期
Inst (0004h)
取指令
执行指令
PC +1
PC +1
1: 在此时采样 INTF 标志 (每个 Q1 周期)。
2: 异步中断响应延时为 3-5 个 TCY。 同步中断响应延时为 3-4 个 TCY,其中 TCY 为一个指令周期时间。 无论 Inst (PC)
是单周期还是双周期指令,中断延时都是一样的。
3: CLKOUT 不是在所有振荡器模式下都可用。
4: 关于 INT 脉冲的最小宽度,请参见第 25.0 节 “电气规范”中的交流规范。
5: 允许在 Q1-Q4 周期内的任意时刻将 INTF 置 1。
DS41624A_CN第 70 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
7.3
休眠期间的中断
有些中断可用于将器件从休眠模式唤醒。要从休眠模式
唤醒器件,外设必须能在没有系统时钟的情况下工作。
进入休眠模式前,必须将相应中断源的中断允许位置
1。
从休眠模式唤醒时,如果 GIE 位也置 1,则处理器将跳
转到中断向量。否则,处理器将继续执行 SLEEP 指令后
的指令。紧接 SLEEP 指令后的指令总是会在跳转到 ISR
前执行。更多详细信息,请参见第 8.0 节 “掉电模式
(休眠)”。
7.4
INT 引脚
INT 引脚可用于产生异步边沿触发中断。可以通过将
INTCON 寄存器的 INTE 位置 1 来允许该中断。
OPTION_REG 寄存器的 INTEDG 位确定中断在哪个边
沿发生。 INTEDG 位置 1 时,上升沿将引起中断。
INTEDG 位清零时,下降沿将引起中断。INTCON 寄存
器的 INTF 位将在 INT 引脚上出现有效边沿时置 1。如果
GIE 和 INTE 位也置 1,则处理器会将程序的执行重定位
到中断向量。
7.5
自动现场保护
进入中断时, PC 的返回地址被保存在堆栈中。此外,
以下寄存器会被自动保存到影子寄存器中:
•
•
•
•
•
W 寄存器
STATUS 寄存器 (TO 和 PD 除外)
BSR 寄存器
FSR 寄存器
PCLATH 寄存器
在退出中断服务程序时,将会自动恢复这些寄存器。在
ISR 期间对这些寄存器进行的任何修改都会丢失。如果
需要修改其中的任意寄存器,则应修改相应的影子寄存
器,该值在退出 ISR 时将会被恢复。影子寄存器位于
Bank 31 中,是可读写寄存器。根据用户的应用,可能
还需要保存其他寄存器。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 71 页
PIC16(L)F1512/3
7.6
中断控制寄存器
注:
7.6.1
INTCON 寄存器
INTCON 寄存器是可读写的寄存器,它包含 TMR0 寄存
器溢出、电平变化中断和外部 INT 引脚中断的各个允许
位和标志位。
寄存器 7-1:
当中断条件发生时,无论相应中断允许位
或全局中断允许位 GIE(在 INTCON 寄存
器中)的状态如何,中断标志位都将被置
1。用户软件应在允许一个中断前,先将相
应的中断标志位清零。
INTCON: 中断控制寄存器
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R-0/0
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
GIE: 全局中断允许位
1 = 允许所有有效中断
0 = 禁止所有中断
bit 6
PEIE:外设中断允许位
1 = 允许所有有效外设中断
0 = 禁止所有外设中断
bit 5
TMR0IE:Timer0 溢出中断允许位
1 = 允许 Timer0 中断
0 = 禁止 Timer0 中断
bit 4
INTE:INT 外部中断允许位
1 = 允许 INT 外部中断
0 = 禁止 INT 外部中断
bit 3
IOCIE:电平变化中断允许位
1 = 允许电平变化中断
0 = 禁止电平变化中断
bit 2
TMR0IF:Timer0 溢出中断标志位
1 = TMR0 寄存器已溢出
0 = TMR0 寄存器未溢出
bit 1
INTF:INT 外部中断标志位
1 = 发生了 INT 外部中断
0 = 未发生 INT 外部中断
bit 0
IOCIF:电平变化中断标志位 (1)
1 = 至少有一个电平变化中断引脚改变了状态
0 = 没有任何电平变化中断引脚的状态发生改变
注
1: IOCIF 标志位是只读位,它在 IOCBF 寄存器中的所有电平变化中断标志都已由软件清零后清零。
DS41624A_CN第 72 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
7.6.2
PIE1 寄存器
PIE1 寄存器包含中断允许位,如寄存器 7-2 所示。
寄存器 7-2:
注:
必须将 INTCON 寄存器的 PEIE 位置 1,以
允许任何外设中断。
PIE1: 外设中断允许寄存器 1
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
TMR1GIE:Timer1 门控中断允许位
1 = 允许 Timer1 门控采集中断
0 = 禁止 Timer1 门控采集中断
bit 6
ADIE:A/D 转换器 (ADC)中断允许位
1 = 允许 ADC 中断
0 = 禁止 ADC 中断
bit 5
RCIE:USART 接收中断允许位
1 = 允许 USART 接收中断
0 = 禁止 USART 接收中断
bit 4
TXIE:USART 发送中断允许位
1 = 允许 USART 发送中断
0 = 禁止 USART 发送中断
bit 3
SSPIE:同步串行口 (MSSP)中断允许位
1 = 允许 MSSP 中断
0 = 禁止 MSSP 中断
bit 2
CCP1IE:CCP1 中断允许位
1 = 允许 CCP1 中断
0 = 禁止 CCP1 中断
bit 1
TMR2IE:TMR2 与 PR2 匹配中断允许位
1 = 允许 Timer2 与 PR2 匹配中断
0 = 禁止 Timer2 与 PR2 匹配中断
bit 0
TMR1IE:Timer1 溢出中断允许位
1 = 允许 Timer1 溢出中断
0 = 禁止 Timer1 溢出中断
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 73 页
PIC16(L)F1512/3
7.6.3
PIE2 寄存器
PIE2 寄存器包含中断允许位,如寄存器 7-3 所示。
寄存器 7-3:
注:
必须将 INTCON 寄存器的 PEIE 位置 1,以
允许任何外设中断。
PIE2: 外设中断允许寄存器 2
R/W-0/0
U-0
U-0
U-0
R/W-0/0
U-0
U-0
R/W-0/0
OSFIE
—
—
—
BCLIE
—
—
CCP2IE
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
OSFIE:振荡器故障中断允许位
1 = 允许振荡器故障中断
0 = 禁止振荡器故障中断
bit 6-4
未实现:读为 0
bit 3
BCLIE:MSSP 总线冲突中断允许位
1 = 允许 MSSP 总线冲突中断
0 = 禁止 MSSP 总线冲突中断
bit 2-1
未实现:读为 0
bit 0
CCP2IE:CCP2 中断允许位
1 = 允许 CCP2 中断
0 = 禁止 CCP2 中断
DS41624A_CN第 74 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
7.6.4
PIR1 寄存器
PIR1 寄存器包含中断标志位,如寄存器 7-4 所示。
寄存器 7-4:
注:
当中断条件发生时,无论相应中断允许位
或全局中断允许位 GIE (在 INTCON 寄存
器中)的状态如何,中断标志位都将被置
1。用户软件应在允许一个中断前,先将相
应的中断标志位清零。
PIR1: 外设中断请求寄存器 1
R/W-0/0
R/W-0/0
R-0/0
R-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
TMR1GIF:Timer1 门控中断标志位
1 = 中断处于待处理状态
0 = 中断未处于待处理状态
bit 6
ADIF:A/D 转换器中断标志位
1 = 中断处于待处理状态
0 = 中断未处于待处理状态
bit 5
RCIF:USART 接收中断标志位
1 = 中断处于待处理状态
0 = 中断未处于待处理状态
bit 4
TXIF:USART 发送中断标志位
1 = 中断处于待处理状态
0 = 中断未处于待处理状态
bit 3
SSPIF:同步串行口 (MSSP)中断标志位
1 = 中断处于待处理状态
0 = 中断未处于待处理状态
bit 2
CCP1IF:CCP1 中断标志位
1 = 中断处于待处理状态
0 = 中断未处于待处理状态
bit 1
TMR2IF:Timer2 与 PR2 匹配中断标志位
1 = 中断处于待处理状态
0 = 中断未处于待处理状态
bit 0
TMR1IF:Timer1 溢出中断标志位
1 = 中断处于待处理状态
0 = 中断未处于待处理状态
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 75 页
PIC16(L)F1512/3
7.6.5
PIR2 寄存器
PIR2 寄存器包含中断标志位,如寄存器 7-5 所示。
寄存器 7-5:
注:
当中断条件发生时,无论相应中断允许位
或全局中断允许位 GIE (在 INTCON 寄存
器中)的状态如何,中断标志位都将被置
1。用户软件应在允许一个中断前,先将相
应的中断标志位清零。
PIR2: 外设中断请求寄存器 2
R/W-0/0
U-0
U-0
U-0
R/W-0/0
U-0
U-0
R/W-0/0
OSFIF
—
—
—
BCLIF
—
—
CCP2IF
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
OSFIF: 振荡器故障中断标志位
1 = 中断处于待处理状态
0 = 中断未处于待处理状态
bit 6-4
未实现:读为 0
bit 3
BCLIF:MSSP 总线冲突中断标志位
1 = 中断处于待处理状态
0 = 中断未处于待处理状态
bit 2-1
未实现:读为 0
bit 0
CCP2IF:CCP2 中断标志位
1 = 中断处于待处理状态
0 = 中断未处于待处理状态
DS41624A_CN第 76 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 7-1:
与中断相关的寄存器汇总
Bit 7
名称
INTCON
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
TMR0IF
Bit 1
Bit 0
INTF
IOCIF
寄存器
所在页
GIE
PEIE
TMR0IE
INTE
IOCIE
WPUEN
INTEDG
TMR0CS
TMR0SE
PSA
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
PIE2
OSFIE
—
—
—
BCLIE
—
—
CCP2IE
74
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
PIR2
OSFIF
—
—
—
BCLIF
—
—
CCP2IF
76
OPTION_REG
图注:
PS<2:0>
72
165
— = 未实现位,读为 0。中断不使用阴影单元。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 77 页
PIC16(L)F1512/3
注:
DS41624A_CN第 78 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
8.0
8.1
掉电模式 (休眠)
从休眠状态唤醒
可通过执行 SLEEP 指令进入掉电模式。
可通过以下任一事件将器件从休眠状态唤醒:
在进入休眠模式时,会存在以下条件:
1.
2.
3.
4.
5.
6.
1.
2.
3.
4.
5.
6.
7.
8.
9.
如果在休眠期间使能 WDT,则 WDT 会清零,但
保持运行。
STATUS 寄存器中的 PD 位被清零。
STATUS 寄存器中的 TO 位被置 1。
CPU 时钟被禁止。
31 kHz LFINTOSC 不受影响,使用它工作的外
设可以在休眠模式下继续工作。
辅助振荡器不受影响,使用它工作的外设可以在
休眠模式下继续工作。
如果选择了专用 FRC 时钟,则 ADC 不受影响。
I/O 端口保持执行 SLEEP 指令之前的状态(驱动
为高电平、低电平或高阻态)。
WDT 之外的其他复位都不会受休眠模式影响。
前三个事件会导致器件复位。后三个事件被认为是程序
执行的延续。要确定是发生了器件复位还是唤醒事件,
请参见第 6.11 节 “确定复位原因”。
当执行 SLEEP 指令时,下一条指令 (PC + 1)被预先
取出。如果希望通过中断事件唤醒器件,则必须允许相
应的中断允许位。唤醒与 GIE 位的状态无关。如果 GIE
位被禁止,器件将继续执行 SLEEP 指令之后的指令。如
果 GIE 位被允许,器件将执行 SLEEP 指令之后的指令,
然后调用中断服务程序。如果不希望执行 SLEEP 指令之
后的指令,用户应在 SLEEP 指令后面放置一条 NOP 指
令。
关于休眠期间的外设操作的更多详细信息,请参见各个
章节。
要最大程度降低电流消耗,应考虑以下条件:
•
•
•
•
•
•
MCLR 引脚上的外部复位输入 (如果使能)
BOR 复位 (如果使能)
POR 复位
看门狗定时器 (如果使能)
任何外部中断
可以在休眠期间运行的外设产生的中断(更多信
息,请参见各个外设)
I/O 引脚不应悬空
来自 I/O 引脚的外部电路灌电流
来自 I/O 引脚的内部电路拉电流
从带内部弱上拉的引脚汲取的电流
使用 31 kHz LFINTOSC 的模块
使用辅助振荡器的模块
器件从休眠状态唤醒时, WDT 都将被清零,而与唤醒
源无关。
为了避免输入引脚悬空而引入开关电流,应在外部将高
阻抗输入的 I/O 引脚拉为 VDD 或 VSS。
可能产生拉电流的内部电路的示例包括 FVR 模块。关于
该模块的更多信息,请参见第 14.0 节 “固定参考电压
(FVR)”。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 79 页
PIC16(L)F1512/3
8.1.1
• 如果在执行 SLEEP 指令期间或之后发生中断
- 将完整执行 SLEEP 指令
- 器件将立即从休眠状态唤醒
- WDT 和 WDT 预分频器将被清零
- STATUS 寄存器的 TO 位将被置 1
- STATUS 寄存器的 PD 位将被清零
使用中断唤醒
当禁止全局中断 (GIE 被清零)时,并且任一中断源的
中断允许位和中断标志位都置 1,将会发生下列事件之
一:
• 如果在执行 SLEEP 指令之前发生中断
- SLEEP 指令将作为 NOP 指令执行
- WDT 和 WDT 预分频器不会被清零
- STATUS 寄存器的 TO 位不会被置 1
- STATUS 寄存器的 PD 位不会被清零
图 8-1:
即使在执行 SLEEP 指令之前检查到标志位为 0,这些标
志位也有可能在 SLEEP 指令执行完毕之前被置 1。要确
定是否执行了 SLEEP 指令,可测试 PD 位。如果 PD 位
置 1,则说明 SLEEP 指令被当作一条 NOP 指令执行了。
通过中断从休眠状态唤醒
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
CLKIN(1)
T1OSC(3)
CLKOUT(2)
中断响应延时(4)
中断标志
GIE 位
(INTCON 寄存器)
处理器处于
休眠状态
指令流
PC
取指令
执行指令
注
1:
2:
3:
4:
PC
PC + 1
PC + 2
PC + 2
Inst(PC)
= 休眠
Inst(PC - 1)
Inst(PC + 1)
Inst(PC + 2)
休眠
Inst(PC + 1)
PC + 2
强制 NOP
0004h
0005h
Inst(0004h)
Inst(0005h)
强制 NOP
Inst(0004h)
外部时钟。假设采用高、中等或低功耗模式。
CLKOUT 在此处作为时序参考。
T1OSC ;请参见第 25.0 节 “电气规范”。
假设 GIE = 1。在这种情形下,处理器被唤醒后,将调用 0004h 处的 ISR。如果 GIE = 0,程序将继续执行。
DS41624A_CN第 80 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
8.2
8.2.2
低功耗休眠模式
选择低功耗休眠模式时,一些可以在休眠模式下工作的
外设将无法正常工作。使能这些外设时,LDO 将保持在
正常功耗模式。低功耗休眠模式旨在与以下外设配合使
用:
PIC16F1512/3 器件包含一个内部低压差(Low Dropout,
LDO)稳压器,它使得器件 I/O 引脚可以使用最高 5.5V
的电压工作,而内部器件逻辑可以使用较低的电压工
作。在器件处于休眠模式时, LDO 及其关联的参考电路
必须保持活动状态。PIC16F1512/3 允许用户根据应用需
求来优化休眠模式下的工作电流。
•
•
•
•
•
通过将 VREGCON 寄存器的 VREGPM 位置 1,可以选
择低功耗休眠模式。如果该位置 1,当器件处于休眠模
式时, LDO 和参考电路会被置为低功耗状态。
8.2.1
休眠模式下的外设使用
欠压复位 (BOR)
看门狗定时器 (WDT)
外部中断引脚 / 电平变化中断引脚
Timer1 (带外部时钟源)
CCP (捕捉模式)
休眠电流与唤醒时间
在默认工作模式下,处于休眠模式时,LDO 和参考电路
会保持为正常配置。由于所有电路都保持活动状态,所
以器件能够快速地退出休眠模式。在低功耗休眠模式
下,从休眠模式中唤醒时,这些电路需要一个额外的延
时,然后才会恢复为正常配置并稳定下来。
注:
低功耗休眠模式对于需要长时间处于休眠模式的应用非
常有益。正常模式对于需要快速地、频繁地从休眠模式
中唤醒的应用非常有益。
8.3
PIC16LF1512/3 不具有可配置的低功耗休
眠模式。 PIC16LF1512/3 是非稳压器件,
它在休眠模式下总是处于最低功耗状态,
并且没有唤醒时间延时。该器件的最大
VDD 和 I/O 电压低于 PIC16F1512/3。更多
信息,请参见第 25.0 节 “电气规范”。
电源控制寄存器
寄存器 8-1:
VREGCON:稳压器控制寄存器 (1)
U-0
U-0
U-0
U-0
U-0
U-0
R/W-0/0
—
—
—
—
—
—
VREGPM
bit 7
R/W-1/1
保留
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-2
未实现:读为 0
bit 1
VREGPM:稳压器功耗模式选择位
1 = 休眠时使能低功耗休眠模式 (2)
休眠时消耗的电流最低,唤醒速度较慢
0 = 休眠时使能正常功耗模式 (2)
休眠时消耗的电流较高,唤醒速度较快
bit 0
保留:读为 1。保持该位置 1。
注
1: 仅限 PIC16F1512/3。
2: 请参见第 25.0 节 “电气规范”。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 81 页
PIC16(L)F1512/3
表 8-1:
与掉电模式相关的寄存器汇总
名称
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
寄存器
所在页
INTCON
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
IOCBF
IOCBF7
IOCBF6
IOCBF5
IOCBF4
IOCBF3
IOCBF2
IOCBF1
IOCBF0
123
IOCBN
IOCBN7
IOCBN6
IOCBN5
IOCBN4
IOCBN3
IOCBN2
IOCBN1
IOCBN0
123
IOCBP7
IOCBP6
IOCBP5
IOCBP4
IOCBP3
IOCBP2
IOCBP1
IOCBP0
123
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
IOCBP
PIE1
PIE2
OSFIE
—
—
—
BCLIE
—
—
CCP2IE
74
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
PIR2
OSFIF
—
—
—
BCLIF
—
—
CCP2IF
76
STATUS
—
—
—
TO
PD
Z
DC
C
19
VREGCON(1)
—
—
—
—
—
—
VREGPM
WDTCON
—
—
WDTPS<4:0>
保留
81
SWDTEN
87
图注:
— = 未实现位,读为 0。掉电模式下不使用阴影单元。
注
1: 仅限 PIC16F1512/3。
DS41624A_CN第 82 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
9.0
上电时,外部电容将装入 LDO 稳压器。 为防止错误操
作,恒流源对外部电容充电时,器件保持在复位状态。
电容完全充电后,器件从复位状态释放。关于恒定电流
速率的更多信息,请参见第 25.0 节 “电气规范”中的
LDO 稳压器特性表。
低压差 (LDO)稳压器
PIC16F1512/3 具有一个内部低压差 (LDO)稳压器,
可提供高于 3.6V 的工作电压。 LDO 为内部器件逻辑提
供稳压电压,同时允许 VDD 和 I/O 引脚在一个更高的电
压下工作。用户无法控制 LDO 的使能 / 禁止,它总是处
于工作状态。PIC16LF1512/3 可在最高 3.6V 的 VDD 下
工作,不具有 LDO。
可将器件 I/O 引脚配置为 LDO 电压输出,标记为 VCAP
引脚。 虽然不是必需的,但还是可以在 VCAP 引脚上外
接一个低 ESR 的电容以提高稳压器的稳定性。
配置字的VCAPEN位决定了被分配为VCAP引脚的引脚。
请参见表 9-1。
表 9-1:
VCAPEN 选择位
VCAPEN
引脚
0
RA5
表 9-2:
名称
CONFIG2
与 LDO 相关的配置字汇总
Bit
Bit -/7
Bit -/6
13:8
7:0
—
—
Bit 13/5
Bit 12/4
Bit 11/3
Bit 10/2
Bit 9/1
Bit 8/0
LVP
DEBUG
LPBOR
BORV
STVREN
—
—
VCAPEN
—
—
WRT<1:0>
寄存器
所在页
40
图注:
— = 未实现位,读为 0。 LDO 不使用阴影单元。
注
1: 仅限 PIC16F1512/3。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 83 页
PIC16(L)F1512/3
注:
DS41624A_CN第 84 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
10.0
看门狗定时器 (WDT)
看门狗定时器是一个系统定时器,如果固件未在超时周
期内发出 CLRWDT 指令,看门狗定时器将产生复位。看
门狗定时器通常用于使系统从意外事件中恢复。
WDT 具有以下特性:
• 独立时钟源
• 多种工作模式
- WDT 总是开启
- WDT 在休眠模式下关闭
- WDT 通过软件进行控制
- WDT 总是关闭
• 超时周期可配置为从 1 ms 至 256 秒 (标称值)
• 多种复位条件
• 休眠期间的操作
图 10-1:
看门狗定时器框图
WDTE<1:0> = 01
SWDTEN
WDTE<1:0> = 11
LFINTOSC
23 位可编程
预分频器 WDT
WDT 超时
WDTE<1:0> = 10
Sleep
 2012 Microchip Technology Inc.
WDTPS<4:0>
初稿
DS41624A_CN第 85 页
PIC16(L)F1512/3
10.1
10.3
独立时钟源
超时周期
WDT 以 31 kHz LFINTOSC 内部振荡器作为其工作的时
基。本章中的时间间隔均基于 1 ms 的标称时间间隔。
关于 LFINTOSC 容差,请参见第 25.0 节“电气规范”。
WDTCON 寄存器的 WDTPS 位用于设置从 1 ms 至 256
秒 (标称值)的超时周期。在复位之后,默认的超时周
期为 2 秒。
10.2
10.4
WDT 工作模式
看门狗定时器模块具有 4 种工作模式,这些工作模式由
配置字中的 WDTE<1:0> 位控制。请参见表 10-1。
10.2.1
当发生以下任何条件时, WDT 被清零:
•
•
•
•
•
•
•
WDT 总是开启
当配置字的 WDTE 位设置为 11 时,WDT 将总是开启。
WDT 保护在休眠期间有效。
10.2.2
WDT 在休眠模式下关闭
当配置字的 WDTE 位设置为 10 时,除非处于休眠模
式,否则 WDT 将开启。
10.5
WDT 通过软件进行控制
当器件退出休眠模式时,WDT 会被再次清零。WDT 一
直保持清零,直到 OST (如果使能)完成为止。关于
OST 的更多信息,请参见第 5.0 节 “振荡器模块 (带
故障保护时钟监视器)”。
WDT 保护在休眠期间不变。更多详细信息,请参见表
10-1。
WDT 工作模式
WDTE<1:0>
X
10
X
1
01
0
00
表 10-2:
在器件处于休眠模式的情况下发生 WDT 超时时,不会
产生复位。器件将会唤醒并继续工作。STATUS 寄存器
中的 TO 和 PD 位会发生改变,指示发生的事件。更多
信息,请参见第 3.0 节“存储器构成”和 STATUS 寄存
器 (寄存器 3-1)。
SWDTEN 器件模式 WDT 模式
11
X
X
有效
唤醒
有效
休眠
禁止
X
休眠期间的操作
当器件进入休眠模式时, WDT 会被清零。如果使能
WDT 在休眠期间工作, WDT 会继续计数。
当配置字的 WDTE 位设置为 01 时, WDT 将通过
WDTCON 寄存器的 SWDTEN 位进行控制。
表 10-1:
任何复位
执行了 CLRWDT 指令
器件进入休眠模式
器件从休眠状态唤醒
振荡器故障
WDT 被禁止
振荡器起振定时器 (OST)正在运行
更多信息,请参见表 10-2。
WDT 保护在休眠期间无效。
10.2.3
清零 WDT
有效
禁止
X
禁止
WDT 清零条件
WDT
条件
WDTE<1:0> = 00
WDTE<1:0> = 01 且 SWDTEN = 0
WDTE<1:0> = 10 并进入休眠状态
清零
CLRWDT 命令
检测到振荡器故障
退出休眠 + 系统时钟 = SOSC、 EXTRC、 INTOSC 或 EXTCLK
退出休眠 + 系统时钟 = XT、 HS 或 LP
清零,直到 OST 延时结束
更改 INTOSC 分频比 (IRCF 位)
DS41624A_CN第 86 页
不受影响
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
10.6
看门狗控制寄存器
寄存器 10-1:
WDTCON:看门狗定时器控制寄存器
U-0
U-0
—
—
R/W-0/0
R/W-1/1
R/W-0/0
R/W-1/1
WDTPS<4:0>
R/W-1/1
R/W-0/0
SWDTEN
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-m/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-6
未实现:读为 0
bit 5-1
WDTPS<4:0>:看门狗定时器周期选择位 (1)
位值
= 预分频比
11111 = 保留。产生最小的时间间隔 (1:32)
•
•
•
10011 = 保留。产生最小的时间间隔 (1:32)
10010
10001
10000
01111
01110
01101
01100
01011
01010
01001
01000
00111
00110
00101
00100
00011
00010
00001
00000
bit 0
注
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
1:8388608 (223)(时间间隔标称值为 256s)
1:4194304 (222)(时间间隔标称值为 128s)
1:2097152 (221)(时间间隔标称值为 64s)
1:1048576 (220)(时间间隔标称值为 32s)
1:524288 (219)(时间间隔标称值为 16s)
1:262144 (218)(时间间隔标称值为 8s)
1:131072 (217)(时间间隔标称值为 4s)
1:65536 (时间间隔标称值为 2s)(复位值)
1:32768 (时间间隔标称值为 1s)
1:16384 (时间间隔标称值为 512 ms)
1:8192 (时间间隔标称值为 256 ms)
1:4096 (时间间隔标称值为 128 ms)
1:2048 (时间间隔标称值为 64 ms)
1:1024 (时间间隔标称值为 32 ms)
1:512 (时间间隔标称值为 16 ms)
1:256 (时间间隔标称值为 8 ms)
1:128 (时间间隔标称值为 4 ms)
1:64 (时间间隔标称值为 2 ms)
1:32 (时间间隔标称值为 1 ms)
SWDTEN:看门狗定时器软件使能 / 禁止位
如果 WDTE<1:0> = 00:
该位被忽略。
如果 WDTE<1:0> = 01:
1 = WDT 开启
0 = WDT 关闭
如果 WDTE<1:0> = 1x:
该位被忽略。
1: 时间均为近似值。 WDT 时间基于 31 kHz LFINTOSC。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN第 87 页
PIC16(L)F1512/3
表 10-3:
与看门狗定时器相关的寄存器汇总
Bit 7
名称
Bit 6
OSCCON
—
STATUS
—
—
—
—
WDTCON
图注:
CONFIG1
图注:
Bit 4
Bit 3
IRCF<3:0>
—
Bit 2
—
TO
PD
Bit 1
Bit 0
SCS<1:0>
Z
DC
WDTPS<4:0>
寄存器
所在页
56
C
19
SWDTEN
87
x = 未知, u = 不变, – = 未实现位,读为 0。看门狗定时器不使用阴影单元。
表 10-4:
名称
Bit 5
与看门狗定时器相关的配置字汇总
Bit
Bit -/7
—
13:8
7:0
Bit -/6
CP
MCLRE
Bit 13/5
Bit 12/4
Bit 11/3
FCMEN
IESO
CLKOUTEN
PWRTE
WDTE<1:0>
Bit 10/2
Bit 9/1
BOREN<1:0>
FOSC<2:0>
Bit 8/0
—
寄存器
所在页
38
— = 未实现位,读为 0。看门狗定时器不使用阴影单元。
DS41624A_CN第 88 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
11.0
11.1.1
闪存程序存储器控制
PMCON1 是访问闪存程序存储器的控制寄存器。
在整个 VDD 范围内的正常工作期间,闪存程序存储器都
是可读写的。程序存储器通过特殊功能寄存器 (SFR)
来间接寻址。用于访问程序存储器的 SFR 有:
•
•
•
•
•
•
控制位 RD 和 WR 分别用于启动读和写操作。用软件只
能将这两位置 1 而无法清零。 在读或写操作完成后,它
们由硬件清零。由于无法用软件将 WR 位清零,可避免
意外地过早终止写操作。
PMCON1
PMCON2
PMDATL
PMDATH
PMADRL
PMADRH
当 WREN 位置 1 时,允许进行写操作。上电时,WREN
位被清零。 在正常工作期间,如果写操作被复位中断,
WRERR 位会置 1。 在这些情况下,复位后用户可以检
查 WRERR 位并执行相应的错误处理程序。
PMCON2 寄存器是只写寄存器。 尝试读 PMCON2 寄存
器将返回全 0。
当访问程序存储器时,PMDATH:PMDATL 寄存器对组成
双字节字,保存 14 位读 / 写数据,而 PMADRH:PMADRL
寄存器对组成双字节字,保存 15 位被读取的程序存储单
元的地址。
要使能对程序存储器的写操作,必须向 PMCON2 寄存
器中写入特定的模式 (解锁序列)。必需的解锁序列可
以防止对程序存储器写锁存器和闪存程序存储器的意外
写操作。
写入时间由片上定时器控制。写入/擦除电压是由片上电
荷泵产生的,此电荷泵在器件的工作电压范围内工作。
11.2
闪存程序存储器可以通过两种方式进行保护:代码保护
(配置字中的 CP 位)和写保护(配置字中的 WRT<1:0>
位)。
在擦除某行之后,用户可以对该行的全部或部分内容进
行再编程。 要写入程序存储器行的数据将写入 14 位宽
的数据写锁存器中。 用户不能直接访问这些写锁存器,
但可以通过连续写入 PMDATH:PMDATL 寄存器对来装
入数据。
写保护会禁止对由WRT<1:0>位所定义的部分或全部闪
存程序存储器进行自写或擦除操作。写保护不会影响器
件编程器对器件进行读、写或擦除操作。
11.1
注:
1: 整个闪存程序存储器阵列的代码保护通过
清零配置字的 CP 位来使能。
PMADRL 和 PMADRH 寄存器
PMADRH:PMADRL 寄存器对能寻址最大 32K 字的程序
存储器。当选择程序地址值时,地址的 MSB 被写入
PMADRH 寄存器,而 LSB 被写入 PMADRL 寄存器。
 2012 Microchip Technology Inc.
闪存程序存储器概述
要进行擦除和编程操作,了解闪存程序存储器结构非常
重要。 闪存程序存储器按行进行处理。 每一行都包含固
定数量的14位程序存储字。行是可以通过用户软件擦除
的最小大小。
代码保护 (CP = 0) (1) 会禁止通过外部器件编程器对
闪存程序存储器进行访问 (读写操作)。代码保护不会
影响自写和擦除功能。代码保护只能通过器件编程器对
器件执行批量擦除操作,从而清除所有闪存程序存储
器、配置位和用户 ID 而复位。
注
PMCON1 和 PMCON2 寄存器
如果用户只希望修改先前已编程行的一部
分内容,则必须在擦除之前先读取整行内
容,并保存到 RAM 中。然后,可以将新数
据和已保存数据写入写锁存器,以对闪存
程序存储器行进行再编程。 但对于任何未
经过编程的单元,则无需先擦除行即可写
入。这种情况下,不需要保存并重新写入
其他先前已编程的单元。
关于闪存程序存储器的擦除行大小和写锁存器数量,请
参见表 11-1。
初稿
DS41624A_CN 第 89 页
PIC16(L)F1512/3
表 11-1:
图 11-1:
闪存构成 (按器件)
器件
行擦除 (字)
写锁存器
(字)
32
32
Start
开始读操作
Read
Operation
PIC16(L)F1516
PIC16(L)F1517
PIC16(L)F1518
Select
选择程序存储器或配置存储器
Program
or Configuration Memory
(CFGS)
(CFGS)
PIC16(L)F1519
11.2.1
读取闪存程序存储器
要读取程序存储单元,用户必须:
1.
2.
3.
Select
选择字地址
Word
Address
(PMADRH:PMADRL)
(PMADRH:PMADRL)
将所需地址写入 PMADRH:PMADRL 寄存器对。
将 PMCON1 寄存器的 CFGS 位清零。
然后,将 PMCON1 寄存器的控制位 RD 置 1。
一旦读控制位置 1,闪存程序存储器控制器将使用第二个
指令周期来读取数据。这会导致紧随 BSF PMCON1,RD
指令的第二条指令被忽略。 在紧接着的下一个周期,
PMDATH:PMDATL 寄存器对中的数据即可使用;因此,
可在随后的指令中读取为两个字节。
Initiate
Read operation
启动读操作
(RD = 1)
1)
(RD
Instruction
Fetched ignored
忽略预取指令
NOP 强制执行
execution
forced
NOP
PMDATH:PMDATL 寄存器对将保留该值直到另一次读
操作开始或用户写入新值为止。
注:
闪存程序存储器读操作流程图
程序存储器读操作后的两条指令必须为
NOP,从而阻止用户在 RD 位置 1 后的下一
条指令执行双周期指令。
Instruction
Fetched ignored
忽略预取指令
NOP强制执行
executionNOP
forced
Data
read now in
现在在
PMDATH:PMDATL
PMDATH:PMDATL
中读取数据
End
读操作结束
Read Operation
DS41624A_CN 第 90 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 11-2:
闪存程序存储器读周期执行时序
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)
PC
+3
PC+3
PMADRH,PMADRL
INSTR (PC +1)
在此执行
BSF PMCON1,RD
PMDATH,PMDATL
INSTR (PC +1)
被忽略
在此强制
执行 NOP
PC +4
INSTR (PC +3)
INSTR (PC +2)
被忽略
在此强制
执行 NOP
PC +5
INSTR (PC + 4)
在此执行
INSTR (PC +3)
在此执行
INSTR (PC + 4)
RD 位
PMDATH
PMDATL
寄存器
例 11-1:
读取闪存程序存储器
* This code block will read 1 word of program
* memory at the memory address:
PROG_ADDR_HI : PROG_ADDR_LO
*
data will be returned in the variables;
*
PROG_DATA_HI, PROG_DATA_LO
BANKSEL
MOVLW
MOVWF
MOVLW
MOVWL
PMADRL
PROG_ADDR_LO
PMADRL
PROG_ADDR_HI
PMADRH
; Select Bank for PMCON registers
;
; Store LSB of address
;
; Store MSB of address
BCF
BSF
NOP
NOP
PMCON1,CFGS
PMCON1,RD
;
;
;
;
Do not select Configuration Space
Initiate read
Ignored (Figure 11-2)
Ignored (Figure 11-2)
MOVF
MOVWF
MOVF
MOVWF
PMDATL,W
PROG_DATA_LO
PMDATH,W
PROG_DATA_HI
;
;
;
;
Get LSB of word
Store in user location
Get MSB of word
Store in user location
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 91 页
PIC16(L)F1512/3
11.2.2
图 11-3:
闪存解锁序列
解锁序列是一种用于保护闪存程序存储器免于发生意外
自写编程或擦除的机制。只有在无中断情况下执行并完
成序列时,才能成功地完成以下操作之一:
•
•
•
•
闪存程序存储器解锁序列流程图
Start
Start
开始解锁序列
Unlock Sequence
Sequence
Unlock
行擦除
向程序存储器写锁存器装入数据
将程序存储器写锁存器内容写入程序存储器
将程序存储器写锁存器内容写入用户 ID
Write
055h
to
Write
055h
to
将 055h
写入
PMCON2
PMCON2
PMCON2
解锁序列包含以下步骤:
Write
0AAh
to
Write
0AAh
to
将 0AAh
写入
PMCON2
PMCON2
1. 将 55h 写入 PMCON2
2. 将 AAh 写入 PMCON2
3. 将 PMCON1 中的 WR 位置 1
Initiate
Initiate
启动写或擦除操作
Write or
or Erase
Erase operation
Write
(WR = operation
1)
(WR == 1)
1)
(WR
4. NOP 指令
5. NOP 指令
在 WR 位置 1 之后,处理器总是会强制执行两条 NOP 指
令。 在执行擦除行或编程行操作时,处理器会暂停内部
操作 (通常为 2 ms),直到操作完成为止,然后再继续
执行下一条指令。 当操作向程序存储器写锁存器装入数
据时,处理器总是会强制执行两条 NOP 指令,然后继续
无中断地执行下一条指令。
忽略预取指令
Instruction
Fetched ignored
ignored
Instruction
Fetched
NOP
NOP 强制执行
execution
forced
execution
forced
忽略预取指令
Instruction
Fetched ignored
ignored
Instruction
Fetched
NOP
NOP 强制执行
execution
forced
execution
forced
由于在执行解锁序列的过程中不能发生中断,所以在执
行解锁序列之前应先禁止全局中断,然后在完成解锁序
列之后重新允许。
End
End
解锁序列结束
Unlock Sequence
Sequence
Unlock
DS41624A_CN 第 92 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
11.2.3
图 11-4:
擦除闪存程序存储器
在执行代码时,程序存储器只能按行进行擦除。要擦除
某行,请执行以下操作:
1.
2.
3.
4.
5.
闪存程序存储器擦除操作流程图
Start
开始擦除操作
Erase Operation
将 要 擦 除 的 行 内 的 任 意 地 址 装 入
PMADRH:PMADRL 寄存器对。
将 PMCON1 寄存器的 CFGS 位清零。
将 PMCON1 寄存器的 FREE 和 WREN 位置 1。
向 PMCON2 中先写入 55h,然后写入 AAh (闪
存编程解锁序列)。
将 PMCON1 寄存器的控制位 WR 置 1,以开始
擦除操作。
Disable
Interrupts
禁止中断
(GIE = 0)
(GIE
0)
Select
选择程序存储器或配置存储器
Program
or Configuration Memory
(CFGS)
(CFGS)
请参见例 11-2。
在 BSF PMCON1,WR 指令之后,处理器需要两个周期来
设置擦除操作。用户必须紧跟 WR 位置 1 指令之后放置
两条 NOP 指令。处理器将暂停内部操作,产生 2 ms(典
型值)的擦除时间。这不是休眠模式,因为时钟和外设
会 继 续 运 行。 在 擦 除 周 期 之 后,处 理 器 将 继续处理
PMCON1 写指令之后的第三条指令。
选择行地址
Select
Row Address
(PMADRH:PMADRL)
(PMADRH:PMADRL)
选择擦除操作
Select
Erase Operation
(FREE == 1)
1)
(FREE
/ 擦除操作
Enable使能写
Write/Erase
Operation
(WREN == 1)
(WREN
1)
解锁序列
Unlock
Sequence
11-3x-x)
(FIGURE
图图
11-3
CPU
stalls
while
CPU
暂停
Erase
operation completes
直到擦除操作完成
(2ms typical)
(典型值为
2 ms)
Disable禁止写
Write/Erase
Operation
/ 擦除操作
(WREN == 0)
(WREN
0)
重新允许中断
Re-enable
Interrupts
(GIE
(GIE = 1)
1)
End
擦除操作结束
Erase Operation
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 93 页
PIC16(L)F1512/3
例 11-2:
擦除程序存储器的一行
必需的
序列
; This row erase routine assumes the following:
; 1. A valid address within the erase row is loaded in ADDRH:ADDRL
; 2. ADDRH and ADDRL are located in shared data memory 0x70 - 0x7F (common RAM)
BCF
BANKSEL
MOVF
MOVWF
MOVF
MOVWF
BCF
BSF
BSF
INTCON,GIE
PMADRL
ADDRL,W
PMADRL
ADDRH,W
PMADRH
PMCON1,CFGS
PMCON1,FREE
PMCON1,WREN
MOVLW
MOVWF
MOVLW
MOVWF
BSF
NOP
NOP
55h
PMCON2
0AAh
PMCON2
PMCON1,WR
BCF
BSF
DS41624A_CN 第 94 页
PMCON1,WREN
INTCON,GIE
; Disable ints so required sequences will execute properly
; Load lower 8 bits of erase address boundary
; Load upper 6 bits of erase address boundary
; Not configuration space
; Specify an erase operation
; Enable writes
;
;
;
;
;
;
;
;
;
;
Start of required sequence to initiate erase
Write 55h
Write AAh
Set WR bit to begin erase
NOP instructions are forced as processor starts
row erase of program memory.
The processor stalls until the erase process is complete
after erase processor continues with 3rd instruction
; Disable writes
; Enable interrupts
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
11.2.4
写入闪存程序存储器
要装入写锁存器并对程序存储器的一行进行编程,需
要完成以下步骤。 这些步骤分为两个部分。 首先,在
LWLO
=
1 的 情 况 下,使 用 解 锁 序 列 将 来 自
PMDATH:PMDATL 的数据装入每个写锁存器。 当要
装入写锁存器的最后一个字就绪时,清零 LWLO 位并
执行解锁序列。 这将启动编程操作,将所有锁存器内
容写入闪存程序存储器。
程序存储器使用以下步骤进行编程:
1.
2.
3.
4.
将 需 要 编 程 的 行 的 地 址 装 入
PMADRH:PMADRL。
向每个写锁存器中装入数据。
启动编程操作。
重复步骤 1 至 3,直到写入所有数据为止。
注:
在写入程序存储器之前,要写入的字必须已擦除或先前
未写入。程序存储器每次只能擦除一行。在启动写操作
时,并不会发生自动擦除操作。
要向写锁存器装入数据或启动闪存编程操
作,需要执行一个特殊的解锁序列。 如果
在执行解锁序列的过程中发生中断,则不
会启动对锁存器或程序存储器的写操作。
1.
2.
3.
将 PMCON1 寄存器的 WREN 位置 1。
将 PMCON1 寄存器的 CFGS 位清零。
将PMCON1寄存器的LWLO位置1。当PMCON1
寄存器的 LWLO 位为 1 时,写序列只向写锁存器
装入数据,而不会启动对闪存程序存储器的写操
作。
4. 将 要 写 入 的 存 储 单 元 的 地 址 装 入
PMADRH:PMADRL 寄存器对。
5. 将 要 写 入 的 程 序 存 储 器 数 据 装 入
PMDATH:PMDATL 寄存器对。
6. 执行解锁序列(第 11.2.2 节“闪存解锁序列”)。
写锁存器中现在会被装入数据。
7. 递增 PMADRH:PMADRL 寄存器对,使之指向下
一个存储单元。
8. 重复步骤 5 至步骤 7,直到除了最后一个写锁存
器之外的所有写锁存器中都装入数据为止。
9. 将PMCON1寄存器的LWLO位清零。当PMCON1
寄存器的 LWLO 位为 0 时,写序列会启动对闪存
程序存储器的写操作。
10. 将 要 写 入 的 程 序 存 储 器 数 据 装 入
PMDATH:PMDATL 寄存器对。
11. 执行解锁序列(第 11.2.2 节“闪存解锁序列”)。
整个程序存储器锁存器的内容现在会被写入闪
存程序存储器中。
程序存储器每次可以写入一个或多个字。每次可以写入
的最大字数等于写锁存器的数量。更多详细信息,请参
见图 11-5 (使用 32 个写锁存器对程序存储器进行行写
操作)。
写锁存器将对齐到由 PMADRH:PMADRL 高 10 位
(PMADRH<6:0>:PMADRL<7:5>)定义的闪存行地址
边界处,PMADRL 的低 5 位(PMADRL<4:0>)将决定
要装入的写锁存器。 写操作不会跨越这些边界。 在程序
存储器写操作完成时,写锁存器中的数据会复位为包含
0x3FFF。
注:
在每个写操作或擦除操作完成时,程序存
储器写锁存器都将复位为空白状态
(0x3FFF)。 因此,不需要向所有程序存
储器写锁存器中装入数据。未装入的锁存
器将保持空白状态。
例 11-3 给出了一个完整写序列的示例。 初始地址被装入
PMADRH:PMADRL 寄存器对;数据使用间接寻址方式
装入。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 95 页
7
使用 32 个写锁存器对闪存程序存储器进行块写操作
6
0 7
5 4
PMADRH
-
r9
r8
r7
r6
r5
0
7
PMADRL
r4
r3
r2
r1
r0
c4
c3
c2
c1
c0
5
-
0
7
PMDATH
6
0
PMDATL
8
14
10
Program
Memory Write Latches
程序存储器写锁存器
5
14
Write
Latch
将 00h
写入#0
00h #0
锁存器
PMADRL<4:0>
14
初稿
CFGS = 0
 2012 Microchip Technology Inc.
PMADRH<6:0>
:PMADRL<7:5>
Row
行
地址
Address
译码
Decode
14
14
Write
Latch
将 01h
写入#1
01h#1
锁存器
14
Write
Latch
#30 Write
Latch
#31
将 1Fh
写入
将 1Eh
写入
1Eh#30
1Fh #31
锁存器
锁存器
14
14
14
行
Row
地址
Addr
地址
Addr
地址
Addr
地址
Addr
000h
0000h
0001h
001Eh
001Fh
001h
0020h
0021h
003Eh
003Fh
002h
0040h
0041h
005Eh
005Fh
3FEh
7FC0h
7FC1h
7FDEh
7FDFh
3FFh
7FE0h
7FE1h
7FFEh
7FFFh
Flash
Program Memory
闪存程序存储器
400h
CFGS = 1
8000h-8003h
8004h-8005h
8006h
8007h-8008h
8009h-801Fh
USER
用户 IDID00-3
-3
reserved
保留
器件 ID
DEVICEID
版本
ID
REVID
Configuration
配置字
Words
保留
reserved
配置存储器
Configuration
Memory
PIC16(L)F1512/3
DS41624A_CN 第 96 页
图 11-5:
PIC16(L)F1512/3
图 11-6:
闪存程序存储器写操作流程图
Start
开始写操作
Write
Operation
Determine number of words
确定要写入程序存储器
to be
written into Program or
或配置存储器的字数。
Configuration
Memory.
The字数不能超过每行的
number of words cannot
字数。
exceed the
number of words
(word_cnt)
per row.
(word_cnt)
Disable
Interrupts
禁止中断
(GIE == 0)
(GIE
0)
Select
选择程序存储器
或配置存储器
Program
or Config. Memory
(CFGS)
(CFGS)
Select
Row Address
选择行地址
(PMADRH:PMADRL)
(PMADRH:PMADRL)
使能写 Write/Erase
/ 擦除操作
Enable
(WREN
= 1)= 1)
Operation
(WREN
Load
the value to write
装入要写入的值
(PMDATH:PMDATL)
(PMDATH:PMDATL)
Update
the word counter
更新字计数器
(word_cnt--)
(word_cnt--)
Last
word to
最后一个
write ?
要写入的字?
是
Yes
No
否
Unlock
Sequence
解锁序列
图
11-3
(Figure
x-x)
图 11-3
Select选择写操作
Write Operation
(FREE == 00))
(FREE
No delay
when writing to
写入程序存储器
Program
Memory Latches
锁存器时无延时
Load仅装入写锁存器
Write Latches Only
(LWLO
(LWLO = 1)
1)
地址递增
1
Increment
Address
(PMADRH:PMADRL++)
(PMADRH:PMADRL++)
Write Latches to Flash
将锁存器写入闪存存储器
(LWLO = 0)
0)
(LWLO
Unlock
Sequence
解锁序列
图
11-3
图
11-3
(Figure
x-x)
CPU
stalls
while Write
CPU
暂停直到
operation
completes
写操作完成
(典型值为
2 ms)
(2ms typical)
Disable
禁止写 / 擦除操作
Write/Erase Operation
(WREN = 0)
(WREN = 0)
Re-enable
Interrupts
重新允许中断
(GIE
(GIE == 1)
1)
End
写操作结束
Write Operation
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 97 页
PIC16(L)F1512/3
例 11-3:
;
;
;
;
;
;
;
写入闪存程序存储器
This write routine assumes the following:
1. 64 bytes of data are loaded, starting at the address in DATA_ADDR
2. Each word of data to be written is made up of two adjacent bytes in DATA_ADDR,
stored in little endian format
3. A valid starting address (the least significant bits = 00000) is loaded in ADDRH:ADDRL
4. ADDRH and ADDRL are located in shared data memory 0x70 - 0x7F (common RAM)
BCF
BANKSEL
MOVF
MOVWF
MOVF
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
BCF
BSF
BSF
INTCON,GIE
PMADRH
ADDRH,W
PMADRH
ADDRL,W
PMADRL
LOW DATA_ADDR
FSR0L
HIGH DATA_ADDR
FSR0H
PMCON1,CFGS
PMCON1,WREN
PMCON1,LWLO
;
;
;
;
;
;
;
;
;
;
;
;
;
Disable ints so required sequences will execute properly
Bank 3
Load initial address
MOVIW
MOVWF
MOVIW
MOVWF
FSR0++
PMDATL
FSR0++
PMDATH
; Load first data byte into lower
;
; Load second data byte into upper
;
MOVF
XORLW
ANDLW
BTFSC
GOTO
PMADRL,W
0x1F
0x1F
STATUS,Z
START_WRITE
; Check if lower bits of address are '00000'
; Check if we're on the last of 32 addresses
;
; Exit if last of 32 words,
;
MOVLW
MOVWF
MOVLW
MOVWF
BSF
NOP
55h
PMCON2
0AAh
PMCON2
PMCON1,WR
;
;
;
;
;
;
;
;
PMADRL,F
LOOP
; Still loading latches Increment address
; Write next latches
PMCON1,LWLO
; No more loading latches - Actually start Flash program
; memory write
55h
PMCON2
0AAh
PMCON2
PMCON1,WR
;
;
;
;
;
;
;
;
;
;
;
;
;
Load initial data address
Load initial data address
Not configuration space
Enable writes
Only Load Write Latches
必需的
序列
LOOP
NOP
INCF
GOTO
必需的
序列
START_WRITE
BCF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
NOP
NOP
BCF
BSF
DS41624A_CN 第 98 页
PMCON1,WREN
INTCON,GIE
Start of required write sequence:
Write 55h
Write AAh
Set WR bit to begin write
NOP instructions are forced as processor
loads program memory write latches
Start of required write sequence:
Write 55h
Write AAh
Set WR bit to begin write
NOP instructions are forced as processor writes
all the program memory write latches simultaneously
to program memory.
After NOPs, the processor
stalls until the self-write process in complete
after write processor continues with 3rd instruction
Disable writes
Enable interrupts
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
11.3
图 11-7:
修改闪存程序存储器
在修改某个程序存储器行中的已有数据,并且该行中的
部分数据必须保留时,必须先读取数据并将数据保存到
RAM 镜像中。程序存储器使用以下步骤进行修改:
1.
2.
3.
4.
5.
6.
7.
闪存程序存储器修改操作流程图
Start
开始修改操作
Modify Operation
装入要修改的行的起始地址。
将行中的已有数据读取到 RAM 镜像中。
修改 RAM 镜像,使之包含要写入程序存储器的
新数据。
装入要重新写入的行的起始地址。
擦除程序存储器行。
将数据从 RAM 镜像装入写锁存器中。
启动编程操作。
Read读操作
Operation
(Figure
x.x)
图 11-2
An image
of the entire row read
读取的整个行的镜像
must
be storedRAM
in RAM
必须保存在
中
Modify
Image
修改镜像
The words
to be modified are
要修改的字必须在
changed
in the
RAM image
RAM
中进行更改
擦除操作
Erase
Operation
(Figure
x.x)
图 11-4
Write写操作
Operation
use
RAM
image
使用
RAM
镜像
(Figure
x.x)
图 11-5
End
修改操作结束
Modify
Operation
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 99 页
PIC16(L)F1512/3
11.4
用户 ID、器件 ID 和配置字访问
当 PMCON1 寄存器中的 CFGS = 1 时,用户可以访问
用户 ID、器件 ID/ 版本 ID 和配置字,而不是访问程序
存储器。 这是在 PC<15> = 1 时指向的区域,但并不是
所有地址都可以访问。对于读操作和写操作,可能存在
不同的访问权限。请参见表 11-2。
在对表 11-2 中所列参数之外的地址启动读访问时,
PMDATH:PMDATL 寄存器对会被清零,读回 0。
表 11-2:
用户 ID、器件 ID 和配置字访问 (CFGS = 1)
地址
功能
读访问
写访问
8000h-8003h
8006h
8007h-8008h
用户 ID
器件 ID/ 版本 ID
配置字 1 和 2
允许
允许
允许
允许
禁止
禁止
例 11-4:
配置字和器件 ID 访问
* This code block will read 1 word of program memory at the memory address:
*
PROG_ADDR_LO (must be 00h-08h) data will be returned in the variables;
*
PROG_DATA_HI, PROG_DATA_LO
BANKSEL
MOVLW
MOVWF
CLRF
PMADRL
PROG_ADDR_LO
PMADRL
PMADRH
; Select correct Bank
;
; Store LSB of address
; Clear MSB of address
BSF
BCF
BSF
NOP
NOP
BSF
PMCON1,CFGS
INTCON,GIE
PMCON1,RD
INTCON,GIE
;
;
;
;
;
;
Select Configuration Space
Disable interrupts
Initiate read
Executed (See Figure 11-2)
Ignored (See Figure 11-2)
Restore interrupts
MOVF
MOVWF
MOVF
MOVWF
PMDATL,W
PROG_DATA_LO
PMDATH,W
PROG_DATA_HI
;
;
;
;
Get LSB of word
Store in user location
Get MSB of word
Store in user location
DS41624A_CN 第 100 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
11.5
写校验
校验程序存储器写入数据是否与预期值一致是一种良好
的编程做法。 由于程序存储器以整页形式存储,所以所
存储的程序存储器内容将在最后一次写操作完成之后与
RAM 中存储的预期数据进行比较。
图 11-8:
闪存程序存储器校验操作流程图
Start
开始校验操作
Verify Operation
This routine
assumes that the last row
该程序假设写入的最后一行
of data
written was from
image
RAMan
中的
数据来自保存在
saved某个镜像。
in RAM. This
image will be used
该镜像将用于校
to verify
the data currently stored in
验当前存储在闪存程序存储
Flash器中的数据。
Program Memory.
Read
Operation
读操作
(Figure
图 11-2x.x)
否
No
PMDAT =
RAM
RAMimage
镜像?
?
Yes
是
否No
Fail
校验操作失败
Verify Operation
Last
最后
Word
?
一个字?
Yes
是
End
校验操作结束
Verify Operation
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 101 页
PIC16(L)F1512/3
11.6
闪存程序存储器控制寄存器
寄存器 11-1:
R/W-x/u
PMDATL: 程序存储器数据低字节寄存器
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
PMDAT<7:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
PMDAT<7:0>:程序存储器最低有效位的读 / 写值
寄存器 11-2:
PMDATH: 程序存储器数据高字节寄存器
U-0
U-0
—
—
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
PMDAT<13:8>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-6
未实现: 读为 0
bit 5-0
PMDAT<13:8>:程序存储器最高有效位的读 / 写值
寄存器 11-3:
R/W-0/0
PMADRL: 程序存储器地址低字节寄存器
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
PMADR<7:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
PMADR<7:0>:指定程序存储器地址的最低有效位
寄存器 11-4:
U-1
PMADRH: 程序存储器地址高字节寄存器
R/W-0/0
R/W-0/0
—
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
PMADR<14:8>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
未实现: 读为 1
bit 6-0
PMADR<14:8>:指定程序存储器地址的最高有效位
DS41624A_CN 第 102 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 11-5:
(1)
U-1
—
PMCON1: 程序存储器控制寄存器 1
R/W-0/0
R/W-0/0
R/W/HC-0/0
R/W/HC-x/q(2)
R/W-0/0
R/S/HC-0/0
R/S/HC-0/0
CFGS
LWLO
FREE
WRERR
WREN
WR
RD
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
S = 只可置 1 位
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
HC = 硬件清零位
bit 7
未实现: 读为 1
bit 6
CFGS:配置选择位
1 = 访问配置、用户 ID 和器件 ID 寄存器
0 = 访问闪存程序存储器
bit 5
LWLO:仅装入写锁存器位 (3)
1 = 在下一条 WR 命令时仅装入 / 更新所寻址的程序存储器写锁存器
0 = 在下一条 WR 命令时装入 / 更新所寻址的程序存储器写锁存器,并启动对于所有程序存储器写锁存器的写操作
bit 4
FREE: 程序闪存擦除使能位
1 = 在下一条 WR 命令时执行擦除操作 (完成后由硬件清零)
0 = 在下一条 WR 命令时执行写操作
bit 3
WRERR:编程 / 擦除错误标志位
1 = 条件指示试图 / 终止执行不合法的编程或擦除序列 (试图将 WR 位置 1 (写入 1)时自动将该位置 1)
0 = 编程或擦除操作正常完成。
bit 2
WREN:编程 / 擦除使能位
1 = 允许编程 / 擦除周期
0 = 禁止对程序闪存的编程 / 擦除操作
bit 1
WR:写控制位
1 = 启动程序闪存的编程或擦除操作。
操作是自定时的,一旦操作完成,该位即由硬件清零。
用软件只能将 WR 位置 1 (不能清零)。
0 = 对闪存的编程 / 擦除操作已完成并且变为无效。
bit 0
RD:读控制位
1 = 启动程序闪存的读操作。 读操作需要一个周期。 RD 由硬件清零。 用软件只能将 RD 位置 1 (不能清零)。
0 = 不启动程序闪存的读操作。
注
1: 未实现位,读为 1。
2: 在程序存储器写操作或擦除操作启动 (WR = 1)时,硬件会自动将 WRERR 位置 1。
3: 在程序存储器擦除操作期间 (FREE = 1), LWLO 位会被忽略。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 103 页
PIC16(L)F1512/3
寄存器 11-6:
PMCON2: 程序存储器控制寄存器 2
W-0/0
W-0/0
W-0/0
W-0/0
W-0/0
W-0/0
W-0/0
W-0/0
程序存储器控制寄存器 2
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
S = 只可置 1 位
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
闪存解锁模式位
要对写操作进行解锁,必须先写入 55h,接着写入 AAh,然后再将 PMCON1 寄存器的 WR 位置 1。 写
入该寄存器的值用于对写操作进行解锁。 对于这些写操作,存在一些特定的时序要求。
表 11-3:
与闪存程序存储器相关的寄存器汇总
名称
Bit 7
Bit 6
Bit 5
INTCON
PMCON1
Bit 4
GIE
PEIE
TMR0IE
—
CFGS
LWLO
寄存器
所在页
Bit 3
Bit 2
Bit 1
Bit 0
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
FREE
WRERR
WREN
WR
RD
103
PMCON2
程序存储器控制寄存器 2
104
PMADRL
PMADRL<7:0>
102
PMADRH
—
PMADRH<6:0>
PMDATL
PMDATH
图注:
—
CONFIG1
CONFIG2
图注:
—
102
PMDATH<5:0>
102
— = 未实现单元,读为 0。闪存程序存储器模块不使用阴影单元。
表 11-4:
名称
102
PMDATL<7:0>
与闪存程序存储器相关的配置字汇总
Bit
Bit -/7
Bit -/6
—
13:8
Bit 13/5
Bit 12/4
Bit 11/3
FCMEN
IESO
CLKOUTEN
Bit 10/2
Bit 9/1
Bit 8/0
BOREN<1:0>
7:0
CP
MCLRE
PWRTE
WDTE<1:0>
13:8
—
—
LVP
DEBUG
LPBOR
BORV
7:0
—
—
—
VCAPEN(1)
—
—
—
FOSC<2:0>
STVREN
WRT<1:0>
—
寄存器
所在页
38
40
— = 未实现位,读为 0。闪存程序存储器不使用阴影单元。
DS41624A_CN 第 104 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
12.0
I/O 端口
图 12-1:
通用 I/O 端口的工作原理
每个端口都有三个标准工作寄存器。这些寄存器是:
• TRISx 寄存器 (数据方向)
• PORTx 寄存器 (读取器件引脚的电平)
• LATx 寄存器 (输出锁存器)
读 LATx
D
一些端口可能还具有以下一个或多个额外的寄存器。这
些寄存器是:
写 LATx
写 PORTx
• ANSELx (模拟选择)
• WPUx (弱上拉)
Q
CK
VDD
数据寄存器
通常而言,当某个外设在端口引脚被使能时,该引脚可
能不能用作通用输出,但仍然可以对该引脚进行读操
作。
数据总线
I/O 引脚
读 PORTx
至外设
每款器件可用的端口
器件
PORTB
PORTC
PORTE
ANSELx
PORTA
表 12-1:
TRISx
PIC16(L)F1512
●
●
●
●
PIC16(L)F1513
●
●
●
●
VSS
数据锁存器 (LATx 寄存器)对 I/O 引脚驱动值进行读 修改 - 写操作时非常有用。
对 LATx 寄存器的写操作与写入相应 PORTx 寄存器的
效果相同。读取 LATx 寄存器时,将会读取 I/O 端口锁
存器中保存的值,而读取 PORTx 寄存器时,将会读取
实际的 I/O 引脚值。
支持模拟输入的端口具有关联的 ANSELx 寄存器。当某
个 ANSEL 位置 1 时,与该位关联的数字输入缓冲器会
被禁止。禁止输入缓冲器可以防止该引脚上介于逻辑高
电平和低电平之间的模拟信号电平在逻辑输入电路上产
生过大的电流。图 12-1 给出了通用 I/O 端口的简化模
型,没有给出与其他外设的接口。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 105 页
PIC16(L)F1512/3
12.1
备用引脚功能
备用引脚功能控制(APFCON)寄存器用于将特定的外
设输入和输出功能配置到不同的引脚上。APFCON寄存
器如寄存器 12-1 所示。对于本器件系列,以下功能可以
配置到不同的引脚上。
• SS (从选择)
• CCP2
这些位对于任意 TRIS 寄存器的值没有任何影响。PORT
和 TRIS 改写会被送到正确的引脚。未选择的引脚不会
受影响。
寄存器 12-1:
APFCON:备用引脚功能控制寄存器
U-0
U-0
U-0
U-0
U-0
U-0
R/W-0/0
R/W-0/0
—
—
—
—
—
—
SSSEL
CCP2SEL
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-2
未实现:读为 0
bit 1
SSSEL:引脚选择位
0 = RA5 上具有 SS 功能
1 = RA0 上具有 SS 功能
bit 0
CCP2SEL:引脚选择位
0 = RC1 上具有 CCP2 功能
1 = RB3 上具有 CCP2 功能
DS41624A_CN 第 106 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
12.2
PORTA 寄存器
12.2.2
每个 PORTA 引脚都与其他功能复用。表 12-2 列出了引
脚及其复用功能和输出优先级。
PORTA 是一个 8 位宽的双向端口。对应的数据方向寄存
器是 TRISA(寄存器 12-3)。将 TRISA 某位置 1(= 1)
时,会将 PORTA 的相应引脚设为输入 (即,禁止输出
驱动器)。将 TRISA 某位清零 (= 0)时,会将 PORTA
的相应引脚设为输出 (即,使能输出驱动器并将输出锁
存器中的内容输出到选定的引脚)。例 12-1 显示了如何
初始化 PORTA。
当使能多个输出时,实际引脚控制权将属于优先级最高
的外设。
优先级列表中未列出模拟输入功能,例如 ADC。这些输
入在使用 ANSELx 寄存器将 I/O 引脚设置为模拟模式时
有效。当引脚处于模拟模式时,数字输出功能可以按照
表 12-2 列出的优先级控制引脚。
读 PORTA 寄存器(寄存器 12-2)将读出相应引脚的状
态,而对其进行写操作则是将数据写入端口锁存器。所
有写操作都是读 - 修改 - 写操作。因此,对端口的写操
作意味着总是先读端口引脚电平状态,然后修改这个
值,最后再写入该端口的数据锁存器 (LATA)。
表 12-2:
引脚名称
TRISA 寄存器 (寄存器 12-3)用于控制 PORTA 引脚
输出驱动器,即使它们被用作模拟输入。当引脚用于模
拟输入时,用户应确保 TRISA 寄存器中的各位保持置
1。配置为模拟输入的 I/O 引脚总是读为 0。
12.2.1
ANSELA 寄存器
ANSELA 寄存器(寄存器 12-5)用于将 I/O 引脚的输入
模式配置为模拟。将相应的 ANSELA 位设置为高电平将
使引脚上的所有数字读操作都读为 0,并允许引脚上的
模拟功能正确工作。
ANSELA 位的状态不会影响数字输出功能。 TRIS 清零
且 ANSEL 置 1 的引脚将仍作为数字输出工作,但输入
模式将变为模拟。当在受影响的端口上执行读 - 修改 写指令时,得到的结果可能与预期不符。
注:
例 12-1:
;
;
;
;
PORTA 功能和输出优先级
注
在发生复位之后, ANSELA 位默认设为模
拟模式。要将任一引脚用作数字通用或者
外设输入,相应的 ANSEL 位必须由用户软
件初始化为 0。
PORTA 输出优先级
功能优先级 (1)
RA0
RA0
RA1
RA1
RA2
RA2
RA3
RA3
RA4
RA4
RA5
VCAP (仅限
PIC16F1512/3)
RA5
RA6
CLKOUT
OSC2
RA6
RA7
RA7
1: 优先级按从最高到最低排列。
初始化 PORTA
This code example illustrates
initializing the PORTA register. The
other ports are initialized in the same
manner.
BANKSEL
CLRF
BANKSEL
CLRF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
PORTA
PORTA
LATA
LATA
ANSELA
ANSELA
TRISA
B'00111000'
TRISA
;
;Init PORTA
;Data Latch
;
;
;digital I/O
;
;Set RA<5:3> as inputs
;and set RA<2:0> as
;outputs
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 107 页
PIC16(L)F1512/3
寄存器 12-2:
PORTA:PORTA 寄存器
R/W-x/x
R/W-x/x
R/W-x/x
R/W-x/x
R/W-x/x
R/W-x/x
R/W-x/x
R/W-x/x
RA7
RA6
RA5
RA4
RA3
RA2
RA1
RA0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
RA<7:0>:PORTA I/O 值位 (1)
1 = 端口引脚电平 > VIH
0 = 端口引脚电平 < VIL
bit 7-0
1: 写入 PORTA 时,实际上会写入相应的 LATA 寄存器。读取 PORTA 寄存器时,将返回实际的 I/O 引脚值。
注
寄存器 12-3:
TRISA:PORTA 三态寄存器
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
TRISA7
TRISA6
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
TRISA<7:0>:PORTA 三态控制位
1 = PORTA 引脚被配置为输入 (三态)
0 = PORTA 引脚被配置为输出
DS41624A_CN 第 108 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 12-4:
LATA:PORTA 数据锁存器寄存器
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
LATA7
LATA6
LATA5
LATA4
LATA3
LATA2
LATA1
LATA0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
LATA<7:0>:PORTA 输出锁存值位 (1)
bit 7-0
1: 写入 PORTA 时,实际上会写入相应的 LATA 寄存器。读取 PORTA 寄存器时,将返回实际的 I/O 引脚值。
注
寄存器 12-5:
ANSELA: PORTA 模拟选择寄存器
U-0
U-0
R/W-1/1
U-0
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
—
—
ANSA5
—
ANSA3
ANSA2
ANSA1
ANSA0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-6
未实现: 读为 0
bit 5
ANSA5:将 RA5 引脚选择为模拟或数字功能
0 = 数字 I/O。引脚被配置为端口或数字特殊功能。
1 = 模拟输入。引脚被配置为模拟输入 (1)。 数字输入缓冲器被禁止。
bit 4
未实现: 读为 0
bit 3-0
ANSA<3:0>:将 RA<3:0> 引脚选择为模拟或数字功能
0 = 数字 I/O。引脚被配置为端口或数字特殊功能。
1 = 模拟输入。引脚被配置为模拟输入 (1)。 数字输入缓冲器被禁止。
注
1: 当将某个引脚设置为模拟输入时,必须将相应的 TRIS 位设置为输入模式,以允许从外部控制引脚电压。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 109 页
PIC16(L)F1512/3
表 12-3:
与 PORTA 相关的寄存器汇总
寄存器
所在页
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
ANSELA
—
—
ANSA5
—
ANSA3
ANSA2
ANSA1
ANSA0
109
APFCON
—
—
—
—
—
—
SSSEL
CCP2SEL
106
LATA7
LATA6
LATA5
LATA4
LATA3
LATA2
LATA1
LATA0
109
WPUEN
INTEDG
TMR0CS
TMR0SE
PSA
PORTA
RA7
RA6
RA5
RA4
RA3
RA2
RA1
RA0
108
TRISA
TRISA7
TRISA6
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
108
Bit 9/1
Bit 8/0
名称
LATA
OPTION_REG
图注:
CONFIG1
图注:
165
x = 未知, u = 不变, – = 未实现位,读为 0。 PORTA 不使用阴影单元。
表 12-4:
名称
PS<2:0>
与 PORTA 相关的配置字汇总
Bit
Bit -/7
—
13:8
7:0
Bit -/6
CP
MCLRE
Bit 13/5
Bit 12/4
Bit 11/3
FCMEN
IESO
CLKOUTEN
PWRTE
WDTE<1:0>
Bit 10/2
BOREN<1:0.>
FOSC<2:0>
—
寄存器
所在页
38
— = 未实现位,读为 0。 PORTA 不使用阴影单元。
DS41624A_CN 第 110 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
12.3
PORTB 寄存器
12.3.2
每个 PORTB 引脚都与其他功能复用。表 12-5 列出了引
脚及其复用功能和输出优先级。
当使能多个输出时,实际引脚控制权将属于优先级最高
的外设。
下面的列表中未包含模拟输入和一些数字输入功能。这
些输入功能会在引脚配置为输出时保持有效。一些数字
输入功能会改写一些其他端口功能,表 12-5 中包含了这
些功能。
PORTB 是一个 8 位宽的双向端口。对应的数据方向寄存
器是 TRISB(寄存器 12-7)。将 TRISB 某位置 1(= 1)
时,会将 PORTB 的相应引脚设为输入 (即,使相应的
输出驱动器呈高阻态)。将 TRISB 某位清零 (= 0)时,
会将 PORTB 的相应引脚设为输出 (即,使能输出驱动
器并将输出锁存器中的内容输出到选定的引脚)。例12-1
显示了如何初始化 I/O 端口。
读 PORTB 寄存器 (寄存器 12-6)将读出相应引脚的状
态,而对其进行写操作则是将数据写入端口锁存器。所
有写操作都是读 - 修改 - 写操作。因此,对端口的写操作
意味着总是先读端口引脚电平状态,然后修改这个值,
最后再写入该端口的数据锁存器 (LATB)。
表 12-5:
引脚名称
TRISB 寄存器 (寄存器 12-7)用于控制 PORTB 引脚输
出驱动器,即使它们被用作模拟输入。当引脚用于模拟
输入时,用户应确保 TRISB 寄存器中的各位保持置 1。
配置为模拟输入的 I/O 引脚总是读为 0。
12.3.1
ANSELB 寄存器
ANSELB 寄存器(寄存器 12-9)用于将 I/O 引脚的输入
模式配置为模拟。将相应的 ANSELB 位设置为高电平将
使引脚上的所有数字读操作都读为 0,并允许引脚上的
模拟功能正确工作。
ANSELB 位的状态不会影响数字输出功能。TRIS 清零且
ANSELB 置 1 的引脚将仍作为数字输出工作,但输入模
式将变为模拟。当在受影响的端口上执行读 - 修改 - 写指
令时,得到的结果可能与预期不符。
注:
PORTB 功能和输出优先级
注
PORTB 输出优先级
功能优先级 (1)
RB0
RB0
RB1
RB1
RB2
RB2
RB3
CCP2
RB3
RB4
RB4
RB5
RB5
RB6
ICDCLK
RB6
RB7
ICDDAT
RB7
1: 优先级按从最高到最低排列。
在发生复位之后, ANSELB 位默认设为模
拟模式。要将任一引脚用作数字通用或者
外设输入,相应的 ANSEL 位必须由用户软
件初始化为 0。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 111 页
PIC16(L)F1512/3
寄存器 12-6:
PORTB:PORTB 寄存器
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
RB<7:0>:PORTB 通用 I/O 引脚位 (1)
1 = 端口引脚电平 > VIH
0 = 端口引脚电平 < VIL
bit 7-0
1: 写入 PORTB 时,实际上会写入相应的 LATB 寄存器。读取 PORTB 寄存器时,将返回实际的 I/O 引脚值。
注
寄存器 12-7:
TRISB:PORTB 三态寄存器
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
TRISB7
TRISB6
TRISB5
TRISB4
TRISB3
TRISB2
TRISB1
TRISB0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
TRISB<7:0>:PORTB 三态控制位
1 = PORTB 引脚被配置为输入 (三态)
0 = PORTB 引脚被配置为输出
寄存器 12-8:
LATB:PORTB 数据锁存器寄存器
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
LATB7
LATB6
LATB5
LATB4
LATB3
LATB2
LATB1
LATB0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
注
LATB<7:0>:PORTB 输出锁存值位 (1)
1: 写入 PORTB 时,实际上会写入相应的 LATB 寄存器。读取 PORTB 寄存器时,将返回实际的 I/O 引脚值。
DS41624A_CN 第 112 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 12-9:
ANSELB: PORTB 模拟选择寄存器
U-0
U-0
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
—
—
ANSB5
ANSB4
ANSB3
ANSB2
ANSB1
ANSB0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-6
未实现: 读为 0
bit 5-0
ANSB<5:0>: 将 RB<5:0> 引脚选择为模拟或数字功能
0 = 数字 I/O。引脚被配置为端口或数字特殊功能。
1 = 模拟输入。 引脚被配置为模拟输入 (1)。 数字输入缓冲器被禁止。
1: 当将某个引脚设置为模拟输入时,必须将相应的 TRIS 位设置为输入模式,以允许从外部控制引脚电压。
注
寄存器 12-10:
WPUB:弱上拉 PORTB 寄存器
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
WPUB7
WPUB6
WPUB5
WPUB4
WPUB3
WPUB2
WPUB1
WPUB0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
WPUB<7:0>:弱上拉寄存器位
1 = 使能上拉
0 = 禁止上拉
1: 必须清零 OPTION_REG 寄存器的全局 WPUEN 位,从而使能各个上拉功能。
2: 如果引脚被配置为输出,则自动禁止弱上拉器件。
注
表 12-6:
与 PORTB 相关的寄存器汇总
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
ANSELB
—
—
ANSB5
ANSB4
ANSB3
ANSB2
ANSB1
ANSB0
113
APFCON
—
—
—
—
—
—
SSSEL
CCP2SEL
106
LATB2
LATB1
LATB0
LATB
OPTION_REG
LATB7
LATB6
LATB5
LATB4
LATB3
WPUEN
INTEDG
TMR0CS
TMR0SE
PSA
Bit 0
寄存器
所在页
Bit 7
名称
PS<2:0>
112
165
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
112
TRISB
TRISB7
TRISB6
TRISB5
TRISB4
TRISB3
TRISB2
TRISB1
TRISB0
112
WPUB
WPUB7
WPUB6
WPUB5
WPUB4
WPUB3
WPUB2
WPUB1
WPUB0
113
图注:
x = 未知, u = 不变, – = 未实现位,读为 0。 PORTB 不使用阴影单元。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 113 页
PIC16(L)F1512/3
12.4
PORTC 寄存器
12.4.2
每个 PORTC 引脚都与其他功能复用。表 12-7 列出了引
脚及其复用功能和输出优先级。
当使能多个输出时,实际引脚控制权将属于优先级最高
的外设。
下面的列表中未包含模拟输入和一些数字输入功能。这
些输入功能会在引脚配置为输出时保持有效。一些数字
输入功能会改写一些其他端口功能,表 12-7 中包含了这
些功能。
PORTC 是一个 8 位宽的双向端口。对应的数据方向寄
存器是 TRISC (寄存器 12-12)。将 TRISC 某位置 1
(= 1)时,会将 PORTC 的相应引脚设为输入 (即,
使相应的输出驱动器呈高阻态)。将 TRISC 某位清零
(= 0)时,会将 PORTC 的相应引脚设为输出 (即,使
能输出驱动器并将输出锁存器中的内容输出到选定的引
脚)。例 12-1 显示了如何初始化 I/O 端口。
读 PORTC 寄存器 (寄存器 12-11)将读出相应引脚的
状态,而对其进行写操作则是将数据写入端口锁存器。
所有写操作都是读 - 修改 - 写操作。因此,对端口的写操
作意味着总是先读端口引脚电平状态,然后修改这个
值,最后再写入该端口的数据锁存器 (LATC)。
表 12-7:
引脚名称
TRISC 寄存器 (寄存器 12-12)用于控制 PORTC 引脚
输出驱动器,即使它们被用作模拟输入。当引脚用于模
拟输入时,用户应确保TRISC寄存器中的各位保持置1。
配置为模拟输入的 I/O 引脚总是读为 0。
12.4.1
ANSELC 寄存器
ANSELC 寄存器 (寄存器 12-14)用于将 I/O 引脚的输
入模式配置为模拟。将相应的 ANSELC 位设置为高电平
将使引脚上的所有数字读操作都读为 0,并允许引脚上
的模拟功能正确工作。
ANSELC 位的状态不会影响数字输出功能。TRIS 清零且
ANSELC 置 1 的引脚将仍作为数字输出工作,但输入模
式将变为模拟。当在受影响的端口上执行读 - 修改 - 写指
令时,得到的结果可能与预期不符。
注:
在发生复位之后, ANSELC 位默认设为模
拟模式。要将任一引脚用作数字通用或者
外设输入,相应的 ANSEL 位必须由用户软
件初始化为 0。
注
DS41624A_CN 第 114 页
PORTC 功能和输出优先级
初稿
PORTC 输出优先级
功能优先级 (1)
RC0
SOSCO
RC0
RC1
SOSCI
CCP2
RC1
RC2
CCP1
RC2
RC3
SCL
SCK
RC3(2)
RC4
SDA
RC4(2)
RC5
SDO
RC5
RC6
CK
TX
RC6
RC7
DT
RC7
1: 优先级按从最高到最低排列。
2: 当使能 I2C 模式时, RC3 和 RC4 会读取
I2C ST 输入。
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 12-11:
PORTC:PORTC 寄存器
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
RC7
RC6
RC5
RC4
RC3
RC2
RC1
RC0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
RC<7:0>:PORTC 通用 I/O 引脚位 (1)
1 = 端口引脚电平 > VIH
0 = 端口引脚电平 < VIL
bit 7-0
1: 写入 PORTC 时,实际上会写入相应的 LATC 寄存器。读取 PORTC 寄存器时,将返回实际的 I/O 引脚值。
注
寄存器 12-12:
TRISC:PORTC 三态寄存器
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/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
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
TRISC<7:0>:PORTC 三态控制位
1 = PORTC 引脚被配置为输入 (三态)
0 = PORTC 引脚被配置为输出
寄存器 12-13:
LATC:PORTC 数据锁存器寄存器
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
LATC7
LATC6
LATC5
LATC4
LATC3
LATC2
LATC1
LATC0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
注
LATC<7:0>:PORTC 输出锁存值位 (1)
1: 写入 PORTC 时,实际上会写入相应的 LATC 寄存器。读取 PORTC 寄存器时,将返回实际的 I/O 引脚值。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 115 页
PIC16(L)F1512/3
寄存器 12-14:
ANSELC: PORTC 模拟选择寄存器
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
U-0
U-0
ANSC7
ANSC6
ANSC3
ANSC3
ANSC3
ANSC2
—
—
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-2
ANSC<7:0>:将 RC<7:0> 引脚选择为模拟或数字功能
0 = 数字 I/O。引脚被配置为端口或数字特殊功能。
1 = 模拟输入。引脚被配置为模拟输入 (1)。 数字输入缓冲器被禁止。
bit 1-0
未实现:读为 0
1: 当将某个引脚设置为模拟输入时,必须将相应的 TRIS 位设置为输入模式,以允许从外部控制引脚电压。
注
表 12-8:
名称
ANSELC
APFCON
LATC
与 PORTC 相关的寄存器汇总
Bit 1
Bit 0
寄存器
所在页
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
ANSC7
ANSC6
ANSC5
ANSC4
ANSC3
ANSC2
—
—
113
—
—
—
—
—
—
SSSEL
CCP2SEL
106
LATC7
LATC6
LATC5
LATC4
LATC3
LATC2
LATC1
LATC0
112
PORTC
RC7
RC6
RC5
RC4
RC3
RC2
RC1
RC0
112
TRISC
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
112
图注:
x = 未知, u = 不变, – = 未实现位,读为 0。 PORTC 不使用阴影单元。
DS41624A_CN 第 116 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
12.5
PORTE 寄存器
12.5.1
PORTE 功能和输出优先级
PORTE 没有外设输出,因此 PORTE 输出没有优先级
功能。
PORTE 是一个 4 位宽的双向端口。对应的数据方向寄存
器是 TRISE。将 TRISE 某位置 1(= 1)时,会将 PORTE
的相应引脚设为输入 (即,使相应的输出驱动器呈高阻
态)。将 TRISE 某位清零(= 0)时,会将 PORTE 的相
应引脚设为输出 (即,使能输出驱动器并将输出锁存器
中的内容输出到选定的引脚)。 RE3 是个例外,仅可作
为输入引脚,其 TRIS 位总是读为 1。例 12-1 显示了如
何初始化 I/O 端口。
读 PORTE 寄存器 (寄存器 12-15)将读出相应引脚的
状态,而对其进行写操作则是将数据写入端口锁存器。
所有写操作都是读 - 修改 - 写操作。因此,对端口的写
操作意味着总是先读端口引脚电平状态,然后修改这个
值,最后再写入该端口的数据锁存器 (LATE) 。当
MCLRE = 1 时, RE3 读为 0。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 117 页
PIC16(L)F1512/3
寄存器 12-15:
U-0
PORTE:PORTE 寄存器
U-0
—
U-0
—
—
U-0
R-x/x
U-0
U-0
U-0
—
RE3
—
—
—
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-4
未实现:读为 0
bit 3
RE<3>:PORTE I/O 值位 (RE3 为只读)
bit 2-0
未实现:读为 0
寄存器 12-16:
U-0
—
TRISE:PORTE 三态寄存器
U-0
U-0
—
—
U-0
U-1
U-0
U-0
U-0
—
—(1)
—
—
—
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-4
未实现:读为 0
bit 3
未实现:读为 1
bit 2-0
未实现:读为 0
注
1: 未实现,读为 1。
DS41624A_CN 第 118 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 12-17:
WPUE:弱上拉 PORTE 寄存器
U-0
U-0
U-0
U-0
R/W-1/1
U-0
U-0
U-0
—
—
—
—
WPUE3
—
—
—
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-4
未实现:读为 0
bit 3
WPUE:弱上拉寄存器位
1 = 使能上拉
0 = 禁止上拉
bit 2-0
未实现:读为 0
1: 必须清零 OPTION_REG 寄存器的全局 WPUEN 位,从而使能各个上拉功能。
2: 如果引脚被配置为输出,则自动禁止弱上拉器件。
注
表 12-9:
与 PORTE 相关的寄存器汇总
名称
Bit 7
Bit 6
A(A)DCON0
—
CCPxCON
—
—
PORTE
—
—
Bit 5
Bit 4
Bit 3
CHS<4:0>
DCxB<1:0>
—
Bit 1
Bit 0
寄存器
所在页
GO/DONE
ADON
152
Bit 2
CCPxM<3:0>
244
—
RE3
—
—
—
118
—
—
—
118
—
—
—
119
Bit 8/0
寄存器
所在页
TRISE
—
—
—
—
—(1)
WPUE
—
—
—
—
WPUE3
图注:
x = 未知, u = 不变, – = 未实现位,读为 0。 PORTE 不使用阴影单元。
注
1: 未实现,读为 1。
表 12-10:
名称
CONFIG1
图注:
与 PORTE 相关的配置字汇总
Bit
Bit -/7
—
13:8
7:0
Bit -/6
CP
MCLRE
Bit 13/5
Bit 12/4
Bit 11/3
FCMEN
IESO
CLKOUTEN
PWRTE
WDTE<1:0>
Bit 10/2
Bit 9/1
—
BOREN<1:0>
FOSC<2:0>
38
— = 未实现位,读为 0。 PORTE 不使用阴影单元。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 119 页
PIC16(L)F1512/3
注:
DS41624A_CN 第 120 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
13.0
13.3
电平变化中断
位于 IOCBF 寄存器中的 IOCBFx 位是对应于 PORTB 的
电平变化中断引脚的状态标志。如果在正确使能的引脚
上检测到期望的边沿,则对应于该引脚的状态标志会置
1,并且如果 IOCIE 位置 1,则还会产生中断。INTCON
寄存器的 IOCIF 位会反映所有 IOCBFx 位的状态。
PORTB 引脚可以配置为作为电平变化中断(IOC)引脚
工作。中断可以通过检测具有上升沿或下降沿的信号而
产生。任意一个 PORTB 引脚或 PORTB 引脚组合都可
以配置为产生中断。电平变化中断模块具有以下特性:
•
•
•
•
允许电平变化中断 (主开关)
独立的引脚配置
上升沿和下降沿检测
独立的引脚中断标志
13.4
使能模块
为了确保在清零标志时不会丢失任何已检测的边沿,应
当仅执行可屏蔽已知更改位的与操作。以下序列是一个
说明应执行何种操作的示例。
要允许各个 PORTB 引脚产生中断, INTCON 寄存器的
IOCIE 位必须置 1。如果 IOCIE 位被禁止,在引脚上仍
然会发生边沿检测,但不会产生中断。
13.2
清零中断标志
各个状态标志 (IOCBFx 位)可以通过将其复位为零的
方式清零。如果在该清零操作期间检测到另一个边沿,
则无论实际写入的值如何,关联的状态标志都会在序列
结束时置 1。
图 13-1 给出了 IOC 模块的框图。
13.1
中断标志
例 13-1:
独立的引脚配置
MOVLW
XORWF
ANDWF
对于每个 PORTB 引脚,都提供了上升沿检测器和下降
沿检测器。要允许引脚检测上升沿,需要将 IOCBP 寄存
器中的相关 IOCBPx 位置 1。要允许引脚检测下降沿,
需要将 IOCBN 寄存器中的相关 IOCBNx 位置 1。
通过同时将 IOCBPx 位和 IOCBNx 位 (分别在 IOCBP
和 IOCBN 寄存器中)置 1,一个引脚可以配置为同时检
测上升沿和下降沿。
13.5
清零中断标志
(以 PORTA 为例)
0xff
IOCAF, W
IOCAF, F
休眠模式下的操作
如果 IOCIE 位置 1,电平变化中断的中断序列会将器件
从休眠模式唤醒。
如果在处于休眠模式时检测到边沿,则在退出休眠模式
执行第一条指令之前,会先更新 IOCBF 寄存器。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 121 页
PIC16(L)F1512/3
图 13-1:
电平变化中断框图
IOCBNx
D
Q4Q1
Q
CK
边沿检测
edge
detect
R
RBx
IOCBPx
D
数据总线
data
bus ==
00 或
or 1
Q
写 IOCBFx
write
CK
D
S
Q
至数据总线
to data bus
IOCBFx
CK
IOCIE
R
Q2
from all other
来自所有其他 IOCBFx
IOCBFx individual
的独立引脚检测器
pin detectors
Q1
Q3
Q4
Q4Q1
DS41624A_CN 第 122 页
Q1
Q1
Q2
Q2
Q2
Q3
Q4
至
CPU
内核
IOC
interrupt
的
to IOC
CPU中断
core
Q3
Q4
Q4Q1
Q4
Q4Q1
初稿
Q4Q1
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
13.6
电平变化中断寄存器
寄存器 13-1:
IOCBP:PORTB 正边沿电平变化中断寄存器
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
IOCBP7
IOCBP6
IOCBP5
IOCBP4
IOCBP3
IOCBP2
IOCBP1
IOCBP0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
寄存器 13-2:
IOCBP<7:0>:PORTB 正边沿电平变化中断允许位
1 = 允许引脚上的正边沿电平变化中断。关联的状态位和中断标志将在检测到边沿时置 1。
0 = 禁止关联引脚的电平变化中断。
IOCBN: PORTB 负边沿电平变化中断寄存器
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
IOCBN7
IOCBN6
IOCBN5
IOCBN4
IOCBN3
IOCBN2
IOCBN1
IOCBN0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
寄存器 13-3:
IOCBN<7:0>:PORTB 负边沿电平变化中断允许位
1 = 允许引脚上的负边沿电平变化中断。 IOCBFx 位和 IOCIF 标志位将在检测到边沿时置 1。
0 = 禁止关联引脚的电平变化中断。
IOCBF: PORTB 电平变化中断标志寄存器
R/W/HS-0/0
R/W/HS-0/0
R/W/HS-0/0
R/W/HS-0/0
R/W/HS-0/0
R/W/HS-0/0
R/W/HS-0/0
R/W/HS-0/0
IOCBF7
IOCBF6
IOCBF5
IOCBF4
IOCBF3
IOCBF2
IOCBF1
IOCBF0
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
HS = 硬件置 1 位
bit 7-0
IOCBF7:0>:PORTB 电平变化中断标志位
1 = 在关联引脚上检测到允许的电平变化。
在IOCBPx = 1,并在RBx上检测到上升沿时置1,或者在IOCBNx = 1,并在RBx上检测到下降沿时置1。
0 = 未检测到电平变化,或者用户清除了检测到的电平变化。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 123 页
PIC16(L)F1512/3
表 13-1:
名称
ANSELB
INTCON
与电平变化中断相关的寄存器汇总
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
寄存器
所在页
—
—
ANSB5
ANSB4
ANSB3
ANSB2
ANSB1
ANSB0
109
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
IOCBF
IOCBP7
IOCBP6
IOCBP5
IOCBP4
IOCBP3
IOCBP2
IOCBP1
IOCBP0
123
IOCBN
IOCBN7
IOCBN6
IOCBN5
IOCBN4
IOCBN3
IOCBN2
IOCBN1
IOCBN0
123
IOCBP
IOCBF7
IOCBF6
IOCBF5
IOCBF4
IOCBF3
IOCBF2
IOCBF1
IOCBF0
123
TRISB
TRISB7
TRISB6
TRISB5
TRISB4
TRISB3
TRISB2
TRISB1
TRISB0
108
图注:
— = 未实现位,读为 0。电平变化中断不使用阴影单元。
DS41624A_CN 第 124 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
14.0
14.1
固定参考电压 (FVR)
独立的增益放大器
固定参考电压(FVR)是独立于 VDD 的稳定参考电压,
可选的输出电压有 1.024V、2.048V 或 4.096V。FVR 的
输出可以配置为向以下对象提供参考电压:
送到 ADC 模块的 FVR 输出会经过一个可编程增益放大
器。 放大器可以配置为将参考电压放大 1 倍、 2 倍或 4
倍,产生三种可能电压。
• ADC 输入通道
• ADC 正参考电压
• 比较器的正输入
FVRCON 寄存器的 ADFVR<1:0> 位用于使能和配置送
到ADC模块的参考电压的增益放大器设置。更多信息,
请参见第 16.0 节 “模数转换器 (ADC)模块”。
FVR 可以通过将 FVRCON 寄存器的 FVREN 位置 1 来
使能。
14.2
FVR 稳定周期
当固定参考电压模块使能时,参考电压和放大电路需要
一段时间才能达到稳定。 在电路稳定下来、可供使用
时,FVRCON 寄存器的 FVRRDY 位将会置 1。关于最小
延时要求,请参见第 25.0 节 “电气规范”。
图 14-1:
参考电压框图
ADFVR<1:0>
2
x1
x2
x4
FVR
FVRBUFFER1
缓冲区 1
(至
ADCModule)
模块)
(To ADC
1.024V
1.024V 固定
Fixed
参考电压
Reference
+
FVREN
FVRRDY
-
需要固定参考电压的
任意外设 (见表 14-1)
表 14-1:
需要固定参考电压 (FVR)的外设
外设
HFINTOSC
条件
说明
FOSC<2:0> = 100 且
IRCF<3:0> = 000x
INTOSC 有效且器件不处于休眠状态
BOREN<1:0> = 11
BOR 总是使能
BOR
BOREN<1:0> = 10 且 BORFS = 1
BOR 在休眠模式下被禁止, BOR 快速启动使能。
BOREN<1:0> = 01 且 BORFS = 1
BOR 受软件控制, BOR 快速启动使能
LDO
当 VREGPM = 1 且不处于休眠模式
时,所有 PIC16F151X 器件
处于休眠模式时,器件会运行低功耗稳压器。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 125 页
PIC16(L)F1512/3
14.3
FVR 控制寄存器
寄存器 14-1:
FVRCON: 固定参考电压控制寄存器
R/W-0/0
R-q/q
R/W-0/0
R/W-0/0
U-0
U-0
FVREN
FVRRDY(1)
TSEN
TSRNG
—
—
R/W-0/0
R/W-0/0
ADFVR<1:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
q = 值取决于具体条件
bit 7
FVREN:固定参考电压使能位
0 = 禁止固定参考电压
1 = 使能固定参考电压
bit 6
FVRRDY:固定参考电压就绪标志位 (1)
0 = 固定参考电压输出未就绪或未使能
1 = 固定参考电压输出就绪备用
bit 5
TSEN:温度指示器使能位
0 = 禁止温度指示器
1 = 使能温度指示器
bit 4
TSRNG:温度指示器范围选择位
0 = VOUT = VDD - 2VT (低电压范围)
1 = VOUT = VDD - 4VT (高电压范围)
bit 3-2
未实现:读为 0
bit 1-0
ADFVR<1:0>:ADC 固定参考电压选择位
00 = ADC 固定参考电压外设输出关闭
01 = ADC 固定参考电压外设输出为 1x (1.024V)
10 = ADC 固定参考电压外设输出为 2x (2.048V) (2)
11 = ADC 固定参考电压外设输出为 4x (4.096V) (2)
1: 仅对于 PIC16F151X, FVRRDY 总是为 1。
2: 固定参考电压输出不能超出 VDD。
注
表 14-2:
名称
FVRCON
图注:
与固定参考电压相关的寄存器汇总
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
FVREN
FVRRDY
TSEN
TSRNG
—
—
Bit 1
Bit 0
ADFVR<1:0>
寄存器
所在页
126
固定参考电压模块不使用阴影单元。
DS41624A_CN 第 126 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
15.0
图 15-1:
温度指示器模块
本器件系列配备了用于测量硅裸片工作温度的温度电
路。电路的工作温度量程介于 -40°C 和 +85°C 之间。其
输出是与器件温度成正比的电压。温度指示器的输出在
内部与器件 ADC 连接。
温度指示器电路图
VDD
TSEN
此电路可以用作温度阈值检测器,也可以用作更精确的
温度指示器,这取决于所执行的校准级别。执行单点校
准时,电路可以指示邻近该点的温度。执行双点校准
时,电路可以更精确地检测整个温度量程。关于校准过
程的更多详细信息,请参见应用笔记 AN1333,《内部
温度指示器的使用与校准》(DS01333A_CN)。
15.1
TSRNG
VOUT
电路工作原理
ADC
MUX
图 15-1 给出了温度电路的简化框图。与温度成正比的电
压输出通过测量多个硅结的正向压降而得到。
n
公式 15-1 描述了温度指示器的输出特性。
公式 15-1:
ADC
CHS 位
(ADCON0 寄存器)
VOUT 范围
高电压范围:VOUT = VDD - 4VT
15.2
低电压范围:VOUT = VDD - 2VT
当温度电路工作于低电压范围时,器件可以在规范范围
内的任意工作电压下工作。
当温度电路工作于高电压范围时,器件工作电压 VDD 必
须足够高,以确保正确地偏置温度电路。
温度检测电路集成了固定参考电压 (FVR)模块。更多
信息,请参见第 14.0 节 “固定参考电压 (FVR)”。
表 15-1 给出了建议的最低 VDD 与范围设置关系。
可以通过将 FVRCON 寄存器的 TSEN 位置 1 来使能该
电路。在禁止时,电路不会消耗任何电流。
表 15-1:
电路可以工作于高电压范围或低电压范围。高电压范围
的选择方式是将 FVRCON 寄存器的 TSRNG 位置 1,它
可提供较宽的输出电压。这可以在整个温度量程中提供
更高的分辨率,但各部分之间的一致性较低。该电压范
围 需 要 较 高 的 偏置 电 压 才 能工 作,所 以 需 要 较 高 的
VDD。
建议的 VDD 与范围
最小 VDD, TSRNG = 1
最小 VDD, TSRNG = 0
3.6V
1.8V
15.3
温度输出
电路的输出使用内部模数转换器测量。保留一路通道用
于温度电路输出。详细信息,请参见第 16.0 节“模数转
换器 (ADC)模块”。
低电压范围的选择方式是将 FVRCON 寄存器的 TSRNG
位清零。低电压范围产生的压降较小,所以只需较低的
偏置电压就可以让电路工作。低电压范围旨在用于进行
低电压操作。
 2012 Microchip Technology Inc.
最低工作电压 VDD
初稿
DS41624A_CN 第 127 页
PIC16(L)F1512/3
15.4
ADC 采集时间
为了确保精确的温度测量,用户必须在 ADC 输入多路开
关连接到温度指示器输出之后至少等待 200 s,然后再
执行转换。此外,用户必须在温度指示器输出的连续两
次转换之间等待 200 s。
表 15-2:
名称
FVRCON
图注:
与温度指示器相关的寄存器汇总
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
FVREN
FVRRDY
TSEN
TSRNG
—
—
Bit 1
Bit 0
ADFVR<1:0>
寄存器
所在页
126
温度指示器模块不使用阴影单元。
DS41624A_CN 第 128 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
16.0
注:
模数转换器 (ADC)模块
ADC 章节的本部分讨论传统操作。如果需
要新的电 容 分 压 器 (Capacitive Voltage
Divider, CVD)功能,请参见第 16.5 节
“电容分压器 (CVD)”获取更多信息。
模数转换器 (ADC)可将模拟输入信号转换为信号的
10 位二进制表示。该模块使用模拟输入,这些输入通过
多路开关连接到同一个采样 / 保持电路。 采样 / 保持电
路的输出与转换器的输入相连接。转换器通过逐次逼近
法产生 10 位二进制结果,并将转换结果存储在 ADC 结
果寄存器 (ADRESH:ADRESL 寄存器对)中。图 16-1
给出了 ADC 的框图。
可通过软件方式选择内部产生的电压或外部提供的电压
作为 ADC 参考电压。
ADC 可在转换完成时产生中断。该中断可用于将器件从
休眠状态唤醒。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 129 页
PIC16(L)F1512/3
图 16-1:
ADC 框图
VDD
ADPREF = 0x
FVR
ADPREF = 11
VREF+
AN0
00000
AN1
00001
AN2
00010
VREF+/AN3
00011
AN4
00100
保留
00101
保留
00110
保留
00111
AN8
01000
AN9
01001
AN10
01010
AN11
01011
AN12
01100
AN13
01101
AN14
01110
AN15
01111
AN16
10000
AN17
10001
AN18
10010
AN19
10011
保留
ADPREF = 10
ADC
10
GO/DONE
ADFM
0 = 左对齐
1 = 右对齐
ADON(1)
16
VSS
ADRESxH(3)
ADRESxL(4)
10100
保留
11001
VREFH(ADC 正参考电压)
11010
VREFL(ADC 负参考电压)
11011
温度指示器
11110
FVR 缓冲区 1
11111
CHS<4:0>(2)
注
1: 当 ADON = 0 时,所有多路开关输入都会被断开。
2: 关于每款器件模拟通道选择的详细信息,请参见 AADCON0 寄存器 (寄存器 16-7)。
3: ADRES0H 和 AADRES0H 为分别位于 Bank 1 和 Bank 14 两个单元的同一寄存器。请参见表 3-9。
4: ADRES0L 和 AADRES0L 为分别位于 Bank 1 和 Bank 14 两个单元的同一寄存器。请参见表 3-9。
DS41624A_CN 第 130 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
16.1
ADC 配置
16.1.4
可通过软件方式设置 ADCON1 寄存器的 ADCS 位来选
择转换时钟源。有以下 7 种时钟频率可供选择:
配置和使用 ADC 时必须考虑以下功能:
•
•
•
•
•
•
端口配置
通道选择
ADC 参考电压选择
ADC 转换时钟源
中断控制
结果格式
16.1.1
•
•
•
•
•
•
端口配置
16.1.2
FOSC/2
FOSC/4
FOSC/8
FOSC/16
FOSC/32
FOSC/64
• FRC (专用内部振荡器)
ADC 可用于转换模拟和数字信号。转换模拟信号时,应
通过设置相关的 TRIS 和 ANSEL 位将 I/O 引脚配置为模
拟。更多信息,请参见第 12.0 节 “I/O 端口”。
注:
转换时钟
完成一个位转换所需的时间定义为 TAD。一次完整的 10
位转换需要 11.5 个 TAD 周期,如图 16-2 所示。
为实现正确转换,必须满足合适的 TAD 规范。 更多信
息,请参见第 25.0 节“电气规范”中的 A/D 转换要求。
表 16-5 给出了适当的 ADC 时钟选择的示例。
在任何定义为数字输入的引脚上施加模拟
电压可能导致输入缓冲器消耗的电流过
大。
注:
通道选择
除非使用 FRC,否则系统时钟频率的任何
改变都会改变 ADC 时钟频率,这会影响
ADC 结果。
有最多 21 个通道选择可供使用:
- AN<19:8, 4:0> 引脚
- VREF+ (ADC 正参考电压)
- VREF- (ADC 负参考电压)
- 温度指示器
- FVR (固定参考电压)输出
关于这些通道选择的更多信息,请参见第 14.0 节 “固
定参考电压(FVR)”和第 15.0 节“温度指示器模块”。
ADCON0 寄存器的 CHS 位决定与采样 / 保持电路相连
接的通道。
当改变通道时,在开始下一次转换前需要一段延时。更
多信息,请参见第 16.6 节 “自动电容分压器”。
16.1.3
ADC 参考电压
ADCON1 寄存器的 ADPREF 位用于控制正参考电压。
正参考电压可以是:
• VREF+ 引脚
• VDD
• FVR (固定参考电压)
关于固定参考电压的更多详细信息,请参见第 14.0 节
“固定参考电压 (FVR)”。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 131 页
PIC16(L)F1512/3
表 16-1:
ADC 时钟周期 (TAD)与器件工作频率关系表
ADC 时钟周期 (TAD)
器件频率 (FOSC)
ADC
时钟源
ADCS<2:0>
20 MHz
16 MHz
8 MHz
4 MHz
1 MHz
Fosc/2
000
100 ns(2)
125 ns(2)
250 ns(2)
500 ns(2)
2.0 s
100
200 ns
(2)
(2)
(2)
1.0 s
4.0 s
400 ns
(2)
1.0 s
2.0 s
8.0 s(3)
Fosc/4
250 ns
(2)
0.5 s
500 ns
Fosc/8
001
Fosc/16
101
800 ns
1.0 s
2.0 s
4.0 s
16.0 s(3)
Fosc/32
010
1.6 s
2.0 s
4.0 s
8.0 s(3)
32.0 s(3)
Fosc/64
110
3.2 s
4.0 s
FRC
x11
1.0-6.0 s(1.4)
1.0-6.0 s(1.4)
(3)
8.0 s
1.0-6.0 s(1.4)
16.0 s
(3)
1.0-6.0 s(1.4)
64.0 s(3)
1.0-6.0 s(1.4)
图注:
阴影单元表示超出了建议范围。
注
1: 对于 VDD, FRC 时钟源具有 1.6 s 的典型 TAD 时间。
2: 这些值均违反了所需的最小 TAD 时间。
3: 为了加快转换速度,建议选用另一个时钟源。
4: 通过系统时钟 FOSC 来产生 ADC 时钟时,可以最大程度降低 ADC 时钟周期 (TAD)和 ADC 总转换时间。
但是,如果要在器件处于休眠模式时执行转换,则必须使用 FRC 时钟源。
图 16-2:
模数转换 TAD 周期
TCY - TAD TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD9 TAD10 TAD11
b4
b1
b0
b6
b7
b2
b8
b3
b9
b5
转换开始
保持电容与模拟输入引脚断开(通常为 100 ns)
将 GO 位置 1
在下一个周期:
装入 ADRESH:ADRESL,清零 GO 位,
将 ADIF 位置 1,保持电容与模拟输入通道相连。
DS41624A_CN 第 132 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
16.1.5
16.1.6
中断
ADC 模块可在模数转换完成时产生中断。 ADC 中断标
志位是 PIR1 寄存器中的 ADIF 位。 ADC 中断允许位是
PIE1 寄存器中的 ADIE 位。ADIF 位必须用软件清零。
注
结果格式
10 位 A/D 转换结果可以两种格式提供:左对齐或右对
齐。 ADCON1 寄存器的 ADFM 位控制输出格式。
图 16-7 给出了两种输出格式。
1: ADIF 位在每次转换完成时置 1,与是否允
许 ADC 中断无关。
2: 仅当选择了 FRC 振荡器时, ADC 才能在
休眠模式下工作。
器件工作或休眠时都可产生该中断。如果器件处于休眠
状态,该中断会唤醒器件。从休眠状态唤醒时,总是执
行紧跟 SLEEP 指令后的下一条指令。 如果用户试图从
休 眠 状 态 唤 醒 器 件 并 恢 复 主 代 码 执 行,必 须 禁 止
INTCON寄存器的GIE和PEIE位。如果使能了INTCON
寄存器的 GIE 和 PEIE 位,执行将切换到中断服务程序。
图 16-3:
10 位 A/D 转换结果格式
ADRESH
(ADFM = 0)
ADRESL
MSb
LSb
bit 7
bit 0
bit 7
bit 0
10 位 A/D 结果
未实现: 读为 0
MSb
(ADFM = 1)
bit 7
LSb
bit 0
bit 0
10 位 A/D 结果
未实现: 读为 0
 2012 Microchip Technology Inc.
bit 7
初稿
DS41624A_CN 第 133 页
PIC16(L)F1512/3
16.2
16.2.1
ADC 工作原理
16.2.4
ADC 模块可以在休眠模式下工作。 这需要将 ADC 时钟
源设置为 FRC 选项。当选择 FRC 时钟源时, ADC 需等
待一个额外的指令周期后才能启动转换。这使得可以执
行 SLEEP 指令,这将降低转换期间的系统噪声。 如果
允许了 ADC 中断,转换完成时器件将从休眠状态唤醒。
如果禁止了 ADC 中断,尽管 ADON 位仍保持置 1,但
转换完成后 ADC 模块将关闭。
启动转换
要使能 ADC 模块,ADCON0 寄存器的 ADON 位必须设
置为 1。将 ADCON0 寄存器的 GO/DONE 位设置为 1
将启动模数转换。
注:
16.2.2
休眠期间的 ADC 操作
不应在启动 ADC 的同一条指令中将 GO/
DONE 位置 1。 请参见第 16.2.6 节 “A/D
转换步骤”。
ADC 时钟源不是 FRC 时,尽管 ADON 位仍保持置 1,
但 SLEEP 指令会导致当前转换中止,ADC 模块被关闭。
转换完成
16.2.5
转换完成时, ADC 模块将:
特殊事件触发器
• 清零 GO/DONE 位
• 将 ADIF 中断标志位置 1
• 用新的转换结果更新 ADRESH 和 ADRESL 寄存器
特殊事件触发器允许定期进行 ADC 转换而无需软件干
预,通过使用 AADCON2 寄存器的 TRIGSEL 位实现。
当出现触发信号时,GO/DONE 位根据以下源由硬件置
1:
16.2.3
• CCP1
• CCP2
终止转换
如 果必 须 在 转换 完 成前 终 止 转换,可 用 软 件将 GO/
DONE 位清零。会 用部分完 成的模数 转换结 果更新
ADRESH 和 ADRESL 寄存器。未完成的位将用最后转
换的位替代。
注:
• Timer0 溢出
• Timer1 溢出
• Timer2 与 PR2 匹配
器件复位将强制所有寄存器进入复位状
态。因此,ADC 模块被关闭,任何待处理
的转换操作被终止。
表 16-2:
器件
PIC16(L)F1512/3
特殊事件触发器
源
CCP1、 CCP2、 TMR0、 TMR1
和 TMR2
使用特殊事件触发器不能确保正确的 ADC 时序。 用户
需负责确保满足 ADC 时序要求。
更多信息,请参见第 21.0 节“捕捉 / 比较 /PWM 模块”、
第 17.0 节 “Timer0 模块”、第 18.0 节 “带门控控制的
Timer1 模块”和第 19.0 节 “Timer2 模块”。
DS41624A_CN 第 134 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
16.2.6
A/D 转换步骤
例 16-1:
以下是用 ADC 执行模数转换的示例步骤:
1.
2.
3.
4.
5.
6.
7.
8.
;This code block configures the ADC
;for polling, Vdd and Vss references, Frc
;clock and AN0 input.
;
;Conversion start & polling for completion
; are included.
;
BANKSEL
ADCON1
;
MOVLW
B’11110000’ ;Right justify, Frc
;clock
MOVWF
ADCON1
;Vdd and Vss Vref
BANKSEL
TRISA
;
BSF
TRISA,0
;Set RA0 to input
BANKSEL
ANSEL
;
BSF
ANSEL,0
;Set RA0 to analog
BANKSEL
ADCON0
;
MOVLW
B’00000001’ ;Select channel AN0
MOVWF
ADCON0
;Turn ADC On
CALL
SampleTime
;Acquisiton delay
BSF
ADCON0,ADGO ;Start conversion
BTFSC
ADCON0,ADGO ;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
配置端口:
• 禁止引脚输出驱动器 (见 TRIS 寄存器)
• 将引脚配置为模拟功能 (见 ANSEL 寄存器)
配置 ADC 模块:
• 选择 ADC 转换时钟
• 配置参考电压
• 选择 ADC 输入通道
• 开启 ADC 模块
配置 ADC 中断 (可选):
• 清零 ADC 中断标志
• 允许 ADC 中断
• 允许外设中断
• 允许全局中断 (1)
等待所需采集时间 (2)。
通过将 GO/DONE 位置 1 启动转换。
通过以下方式之一等待 ADC 转换完成:
• 查询 GO/DONE 位
• 等待 ADC 中断 (已允许中断)
读取 ADRES0H 和 ADRES0L 中的 ADC 结果。
清零 ADC 中断标志 (如果已允许中断则需要此
操作)。
注
A/D 转换
1: 如果用户试图从休眠状态唤醒器件并恢复
主代码执行,必须禁止全局中断。
2: 请参见第 16.4 节 “A/D 采集要求”。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 135 页
PIC16(L)F1512/3
16.3
ADC 寄存器定义
以下寄存器用于控制 ADC 的操作。
寄存器 16-1:
U-0
ADCON0: A/D 控制寄存器 0
R/W-0/0
R/W-0/0
—
R/W-0/0
R/W-0/0
R/W-0/0
CHS<4:0>
R/W-0/0
R/W-0/0
GO/DONE
ADON
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
未实现: 读为 0
bit 6-2
CHS<4:0>: 模拟通道选择位
11111 = FVR (固定参考电压)缓冲区 1 输出 (1)
11110 = 保留。 不连接任何通道。
11101 = 温度指示器 (2)。
11100 = 保留。 不连接任何通道。
11011 = VREFL (ADC 负参考电压)
11010 = VREFH (ADC 正参考电压)
11001 = 保留。 不连接任何通道。
•
•
•
10100 = 保留。 不连接任何通道。
10011 = AN19
10010 = AN18
10001 = AN17
10000 = AN16
01111 = AN15
01110 = AN14
01101 = AN13
01100 = AN12
01011 = AN11
01010 = AN10
01001 = AN9
01000 = AN8
00111 = 保留。 不连接任何通道。
00110 = 保留。 不连接任何通道。
00101 = 保留。 不连接任何通道。
00100 = AN4
00011 = AN3
00010 = AN2
00001 = AN1
00000 = AN0
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,不消耗工作电流
注
1: 更多信息,请参见第 14.0 节 “固定参考电压 (FVR)”。
2: 更多信息,请参见第 15.0 节 “温度指示器模块”。
DS41624A_CN 第 136 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 16-2:
R/W-0/0
ADCON1: A/D 控制寄存器 1
R/W-0/0
ADFM
R/W-0/0
R/W-0/0
ADCS<2:0>
U-0
U-0
—
—
R/W-0/0
R/W-0/0
ADPREF<1:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
ADFM:A/D 结果格式选择位
1 = 右对齐。当装入转换结果时, ADRESH 的高 6 位设置为 0。
0 = 左对齐。当装入转换结果时, ADRESL 的低 6 位设置为 0。
bit 6-4
ADCS<2:0>:A/D 转换时钟选择位
000 = FOSC/2
001 = FOSC/8
010 = FOSC/32
011 = FRC (由专用 RC 振荡器提供的时钟)
100 = FOSC/4
101 = FOSC/16
110 = FOSC/64
111 = FRC (由专用 RC 振荡器提供的时钟)
bit 3-2
未实现: 读为 0
bit 1-0
ADPREF<1:0>:A/D 正参考电压配置位
00 = VREF 连接到 VDD
01 = 保留
10 = VREF 连接到外部 VREF+ 引脚 (1)
11 = VREF 连接到内部固定参考电压 (FVR)模块 (1)
注
1: 当选择 FVR 或 VREF+ 引脚作为正参考电压源时,请注意存在最小电压规范值。详情请参见第 25.0 节
“电气规范”。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 137 页
PIC16(L)F1512/3
寄存器 16-3:
R/W-x/u
ADRES0H: ADC 结果寄存器高字节 (ADRESH) ADFM = 0
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
ADRES<9:2>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
ADRES<9:2>:ADC 结果寄存器位
10 位转换结果的高 8 位
寄存器 16-4:
R/W-x/u
ADRES0L: ADC 结果寄存器低字节 (ADRESL) ADFM = 0
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
—
—
—
—
—
—
ADRES<1:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-6
ADRES<1:0>:ADC 结果寄存器位
10 位转换结果的低 2 位
bit 5-0
保留:不要使用。
DS41624A_CN 第 138 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 16-5:
ADRES0H: ADC 结果寄存器高字节 (ADRESH) ADFM = 1
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
—
—
—
—
—
—
R/W-x/u
R/W-x/u
ADRES<9:8>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-2
保留:不要使用。
bit 1-0
ADRES<9:8>:ADC 结果寄存器位
10 位转换结果的高 2 位
寄存器 16-6:
R/W-x/u
ADRES0L: ADC 结果寄存器低字节 (ADRESL) ADFM = 1
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
ADRES<7:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
ADRES<7:0>:ADC 结果寄存器位
10 位转换结果的低 8 位
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 139 页
PIC16(L)F1512/3
16.4
A/D 采集要求
采集时间可能随着源阻抗的降低而缩短。在选择(或改
变)模拟输入通道后,必须在启动转换前完成 A/D 采
集。 可以使用公式 16-1 来计算最小采集时间。 该公式
假设误差为 1/2 LSb (ADC 转换需要 1,024 步)。 1/2
LSb 误差是 ADC 达到规定分辨率所能允许的最大误差。
为了使 ADC 达到规定的精度,必须使充电保持电容
(CHOLD)完全充电至输入通道的电平。 模拟输入模型
如图 16-4 所示。模拟信号源阻抗 (RS)和内部采样开
关阻抗 (RSS)直接影响电容 CHOLD 的充电时间。 采
样开关阻抗(RSS)随器件电压(VDD)的变化而变化,
参见图 16-4。 模拟信号源的最大阻抗推荐值为 10 k。
公式 16-1:
假设:
采集时间示例
假设
:温度
Tem
per at=ur50°C
e =,且外部阻抗为
50掳C and external
impedance
of 10k 5.0V VDD
10 k,5.0V
VDD
TACQ = 放Settling
大器稳定时间
保持电容充电时间
+ 温度系数
TACQ = Amplifier
Time+ +
Hold Capacitor Charging
Time + Temperature Coefficient
=
T
AMP
+
T
C
+
T
COFF
= T AMP + T C + T COFF
T C + [(
 Temperature
- 25°C
  0.05?s/°C
2+µs +Temperature
温度- -25掳鈥濩
25°C)(0.05
µs/°C)]
= 2?s +=T C2?s
  0.05?s/掳鈥濩
  
用以下公式可近似求得 TC 的值:
TC 值可以用以下公式近似计算:
1

; [1] 充电到 VCHOLD(1/2 lsb 误差范围内)
V APPLIED 1 – -------------------------CHOLD
 == VVCHOLD
n +11
;[1] 充电到 VCHOLD(1/2 lsb 误差范围)
VAPPLI ED 1 – ------------------------- 2n + 1  – 1

2
–1
–--------T C–RC
T C- 

; [2] 响应 VAPPLIED 充电到 VCHOLD
V APPLIED 1 – e--------RC  = V CHOLD
VAPPLI ED1 – e  = VCHOLD
;[2] 响应 VAPPLIEDŠŠΜŠΜŠVCHOLD


–-------Tc
–-------Tc- 
RC
1
 1 – ------------------------- ;合并 [1] 和 [2]
V APPLIED 1 – e RC  = V APPLIED
1



 ;结合 [1] 和 [2]
n
+
1
VAPPLI ED1 – e  = VAPPLI ED 1 – ------------------------- n2 + 1  – 1



2
–1
注
注:其中
其中 nn == ADC
ADC的位数。
的位数。
求解 TC :
– CHOLD
R S  ln(1/2047)
TC T=C –=CHOLD
RI C + RRIC
SS+
+ RRSS
S +ln(1/2047)
– 10pF
 1k
+ 7k
+ 10k
 ln(0.000488)
= –=
10pF
 1k
+ 7k
+ 10k
 ln(0.000488)
T C = – C HOLD  R IC + R SS + R S  ln(1/2047)
= 1.37
= 1.37
¬µs µs
因此:
+ 1.37
1.37µs
+   50°C
- 25°C
 Á•ç/ȳÜ
0.05 µs/°C
TACQ =T ACQ
2Á•ç=+ 2µs
1.37Á•ç
+   50ȳÜ25ȳÜ
  0.05

= 4.62µs
= 4.62Á•ç
注
1: 因为参考电压 (VREF)自行抵消,因此它对该公式没有影响。
2: 充电保持电容 (CHOLD)在每次转换后不会放电。
3: 模拟信号源的最大阻抗推荐值为 10 k。此要求是为了符合引脚泄漏电流规范。
DS41624A_CN 第 140 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 16-4:
模拟输入模型
VDD
模拟
输入
引脚
Rs
VT  0.6V
CPIN
5 pF
VA
RIC  1K
采样
开关
SS RSS
I LEAKAGE(1)
VT  0.6V
CHOLD = 10 pF
VSS/VREF-
图注 :
CHOLD
CPIN
6V
5V
VDD 4V
3V
2V
= 采样 / 保持电容
= 输入电容
RSS
I LEAKAGE = 由各连接点在引脚上
产生的泄漏电流
RIC
= 片内走线等效电阻
RSS
= 采样开关的电阻
注
图 16-5:
SS
= 采样开关
VT
= 阈值电压
5 6 7 8 9 10 11
采样开关
(k)
1: 请参见第 25.0 节 “电气规范”。
ADC 传递函数
满量程
3FFh
3FEh
3FDh
3FCh
ADC 输出码
3FBh
03h
02h
01h
00h
模拟输入电压
0.5 LSB
VREF-
 2012 Microchip Technology Inc.
零量程
切换
1.5 LSB
满量程
切换
初稿
VREF+
DS41624A_CN 第 141 页
PIC16(L)F1512/3
表 16-3:
名称
与 ADC 相关的寄存器汇总
Bit 7
ADCON0
—
ADCON1
ADFM
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
—
—
CHS<4:0>
ADCS<2:0>
ADRES0H
A/D 结果寄存器的高字节
ADRES0L
A/D 结果寄存器的低字节
Bit 1
Bit 0
寄存器
所在页
GO/DONE
ADON
152
ADPREF<1:0>
159, 139
159, 139
ANSELA
—
—
ANSA5
—
ANSA3
ANSA2
ANSELB
—
—
ANSB5
ANSB4
ANSB3
ANSB2
ANSB1
ANSB0
ANSC7
ANSC6
ANSC5
ANSC4
ANSC3
ANSC2
—
—
—
—
ANSELC
CCP1CON
CCP2CON
FVRCON
INTCON
153
DC1B<1:0>
ANSA1
ANSA0
109
113
CCP1M<3:0>
DC2B<1:0>
CCP2M<3:0>
—
—
FVREN
FVRRDY
TSEN
TSRNG
—
—
116
244
244
ADFVR<1:0>
126
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
TRISA7
TRISA6
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
108
TRISA
TRISB
TRISB7
TRISB6
TRISB5
TRISB4
TRISB3
TRISB2
TRISB1
TRISB0
112
TRISC
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
115
图注:
— = 未实现位,读为 0。 ADC 模块不使用阴影单元。
DS41624A_CN 第 142 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
16.5
16.5.2
电容分压器 (CVD)
16.5.1
转换时钟
可通过设置 AADCON1 寄存器的 ADCS 位来以软件方
式选择转换时钟源。有以下 7 种时钟频率可供选择:
ADC 寄存器映射
带电容分压器 (CVD)的 ADC 模块是标准 ADC 模块
(如第 16.0 节 “模数转换器 (ADC)模块”至第 16.3
节 “ADC 寄存器定义”所述)的增强版本且与本系列中
其他器件向后兼容。 使用 Bank 1 寄存器控制标准 ADC
模块,请参见表 16-4。 该组寄存器映射到 Bank 14,其
中的控制寄存器用于带电容分压器控制的 ADC 模块。虽
然这部分寄存器的名称与 Bank1 中的不同,但它们功能
是相同的。由于用于标准 ADC 的寄存器映射到 Bank 14
地址空间, Bank 1 中寄存器的任何更改也将在 Bank 14
中反映,反之亦然。
•
•
•
•
•
•
表 16-4:
为实现正确转换,必须满足合适的 TAD 规范。 更多信
息,请参见第 25.0 节 “电气规范”中的 A/D 转换要
求。表 16-5 给出了适当的 ADC 时钟选择的示例。
• FRC (专用内部振荡器)
完成一个位转换所需的时间定义为 TAD。一次完整的 10
位转换需要 11.5 个 TAD 周期,如图 16-6 所示。
ADC 寄存器映射
[Bank 14 地址 ]
[Bank 1 地址 ]
带电容分压器的 ADC
ADC
(1)
[711h] AADCON0
[09Dh] ADCON0(1)
[712h] AADCON1(1)
[09Eh] ADCON1(1)
FOSC/2
FOSC/4
FOSC/8
FOSC/16
FOSC/32
FOSC/64
注:
除非使用 FRC,否则系统时钟频率的任何
改变都会改变 ADC 时钟频率,这会影响
ADC 结果。
[713h] AADCON2
[714h] AADCON3
[715h] AADSTAT
[716h] AADPRE
[717h] AADACQ
[718h] AADGRD
[719h] AADCAP
[71Ah] AADRES0L(1)
[09Bh] ADRES0L(1)
[71Bh] AADRES0H(1)
[09Ch] ADRES0H(1)
[71Ch] AADRES1L
[71Dh] AADRES1L
注
1: 寄存器映射到 Bank 1 和 Bank 14,在每个
存储区中使用不同的名称。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 143 页
PIC16(L)F1512/3
表 16-5:
ADC 时钟周期 (TAD)与器件工作频率关系表
ADC 时钟周期 (TAD)
器件频率 (FOSC)
ADC
时钟源
ADCS<2:0>
20 MHz
16 MHz
8 MHz
4 MHz
1 MHz
Fosc/2
000
100 ns(2)
125 ns(2)
250 ns(2)
500 ns(2)
2.0 s
100
200 ns
(2)
(2)
(2)
1.0 s
4.0 s
400 ns
(2)
1.0 s
2.0 s
8.0 s(3)
Fosc/4
250 ns
(2)
0.5 s
500 ns
Fosc/8
001
Fosc/16
101
800 ns
1.0 s
2.0 s
4.0 s
16.0 s(3)
Fosc/32
010
1.6 s
2.0 s
4.0 s
8.0 s(3)
32.0 s(3)
(3)
Fosc/64
110
3.2 s
4.0 s
FRC
x11
1.0-6.0 s(1.4)
1.0-6.0 s(1.4)
图注:
注
1:
2:
3:
4:
8.0 s
1.0-6.0 s(1.4)
16.0 s
(3)
1.0-6.0 s(1.4)
64.0 s(3)
1.0-6.0 s(1.4)
阴影单元表示超出了建议范围。
对于 VDD, FRC 时钟源具有 1.6 s 的典型 TAD 时间。
这些值均违反了所需的最小 TAD 时间。
为了加快转换速度,建议选用另一个时钟源。
通过系统时钟 FOSC 来产生 ADC 时钟时,可以最大程度降低 ADC 时钟周期 (TAD)和 ADC 总转换时间。
但是,如果要在器件处于休眠模式时执行转换,则必须使用 FRC 时钟源。
模数转换 (ADDSEN = 0) TAD 周期
图 16-6:
预充电
时间
1-127 TINST
(TPRE)
采集 / 充电
共享时间
1-127 TINST
(TACQ)
外部和内部
通道充电 / 放电
外部和内部
通道同时充电
如果 ADPRE = 0
如果 ADACQ = 0
转换时间
(ADC 转换的传统时序)
TCY - TAD TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD9 TAD10 TAD11
b4
b1 b0
b6
b7
b2
b9
b8
b3
b5
转换开始
保持电容 CHOLD 与模拟输入引脚断开(通常为 100 ns)
如果 ADPRE = 0
如果 ADACQ = 0
(传统操作开始)
将 GO/DONE 位置 1
DS41624A_CN 第 144 页
初稿
在下一个周期 :
装入 AADRES0H:AADRES0L,
ADIF 位置 1,
GO/DONE 位清零
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
16.5.3
结果格式
10 位 A/D 转换结果可以两种格式提供:左对齐或右对
齐。AADCON1 寄存器的 ADFM 位控制输出格式。
图 16-7 给出了两种输出格式。
图 16-7:
10 位 A/D 转换结果格式
AADRES0H
(ADFM = 0)
AADRES0L
MSb
LSb
bit 7
bit 0
bit 7
bit 0
10 位 A/D 结果
未实现: 读为 0
MSb
(ADFM = 1)
bit 7
LSb
bit 0
bit 0
10 位 A/D 结果
未实现: 读为 0
 2012 Microchip Technology Inc.
bit 7
初稿
DS41624A_CN 第 145 页
PIC16(L)F1512/3
16.6
自动电容分压器
16.6.1
即使选择了引脚的模拟通道,预充电阶段期间也将强制
打开模拟多路开关。 预充电期间仅改写和禁止 ADC 多
路开关逻辑。请参见图 16-6。
转换序列
转换序列可扩展为三个阶段:预充电、采集时间和转换。
关于这三个阶段的时序的基本信息,请参见图 16-6。
16.6.2
16.6.3
采集定时器
采集时间用于采集信号或充电共享。 采集时间可以从 1
个指令周期计数到 127 个指令周期,并允许通过所选的
模拟通道对内部采样保持电容 (CHOLD)上的电压进行
充放电。通过向 AADACQ 寄存器的 ADACQ<6:0> 位写
入一个非零值使能转换采集时间。使能采集时间后,该
时间将紧跟预充电阶段立即开始计时。另外,也可通过
置 1 GO/DONE 位或特殊事件触发器启动采集时间。
预充电定时器
预充电阶段时间可选择为 1-127 个指令周期,用于将外
部 ADC 通道和内部采样保持电容 (CHOLD)置于预充
电状态。通过向 AADPRE 寄存器的 ADPRE<6:0> 位写
入一个非零值使能转换的预充电阶段。 通过 GO/DONE
位或特殊事件触发器启动转换序列时,启动该阶段。当
启动 ADC 转换而 ADPRE 位清零时,跳过该阶段。
采集阶段开始时,所选 ADC 通道连接到 CHOLD。 这允
许预充电通道和 CHOLD 电容同时充电。请参见图 16-6。
预充电期间, CHOLD 短路到 VDD 或 VSS,具体取决于
AADCON3 寄存器的 ADIPPOL 位的值。改写所选模拟
通道的端口引脚逻辑以驱动为数字高电平或低电平。该
改写的输出极性由 AADCON3 寄存器的 ADEPPOL 位
决定。
预充电期间,AADCON3 寄存器的 ADOOEN 位置 1 时,
将改写ADOUT引脚。该改写与通道引脚改写功能相同,
但通过 ADIPPOL 位选择极性。请参见图 16-8。
图 16-8:
A/D 通道改写连接
端口 x<x>
TRISx<x>
0
1
ANSELx<x>
0
1
LATx<x>
ADIPEN
ADOOEN
CHS<4:0>
ADC 转换总线
ADC 挡闸
DS41624A_CN 第 146 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
16.6.4
启动转换
要使能 ADC 模块,AADCON0 寄存器的 ADON 位必须
置为 1。由软件或通过特殊事件触发输入将 AADCON0
寄存器的 GO/DONE 位设置为 1 将启动模数转换。
一旦开始转换,该转换将继续直至完成(此时 ADON 置
1) 。 ADON 清零 (由软件禁止)时,转换将暂停。
AADCON0 寄存器的 GO/DONE 状态位用于指示转换正
在进行,与启动触发器的状态无关。请参见图 16-6。
注:
16.6.5
不应在启动 ADC 的同一条指令中将 GO/
DONE 位置 1。请参见第 16.6.11 节“A/D
双转换步骤”。
转换完成
转换完成时, ADC 模块将:
• 清零 GO/DONE 位
• 将 ADIF 中断标志位置 1
• 用新的转换结果更新 AADRESxH 和 AADRESxL
寄存器
16.6.6
终止转换
如 果必 须 在转换 完 成前 终 止 转换,可 用 软件将 GO/
DONE 位清零。会 用部分完 成的模 数转换结果更新
AADRESxH 和 AADRESxL 寄存器。未完成的位将用最
后转换的位替代。
注:
16.6.7
器件复位将强制所有寄存器进入复位状
态。因此,ADC 模块被关闭,任何待处理
的转换操作被终止。
双采样转换
可通过 AADCON3 寄存器的 ADDSEN 位使能双采样。
该位置 1 时,每次启动 GO/DONE 位或特殊事件触发器
都会完成两次转换。 GO/DONE 位在两次转换时间内保
持置 1,且可用于提前取消转换。
第一次转换结果写入 AADRES0H 和 AADRES0L 寄存
器。
第一次转换完成后,第二次转换耗用两个时钟周期启
动,并且 GO/DONE 位保持置 1。 当 AADCON3 的
ADIPEN 位置 1 时,ADC 使用的 ADEPPOL、ADIPPOL
和 GRDPOL 位的值将取反。 存储在这些位单元中的值
不发生变化。所有其他控制信号保持第一次转换时的状
态 不 变。 第 二 次 转 换 的 结 果 存 储 在 AADRES1H 和
AADRES1L 寄存器中。 更多信息,请参见图 16-9 和图
16-10。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 147 页
双采样转换序列 (ADDSEN = 1 且 ADIPEN = 1)
预充电
采集
AADPRE<6:0> AADACQ<6:0>
预充电
采集
AADPRE<6:0> AADACQ<6:0>
转换时钟
1-127 TINST
(3)
1-127 TINST
10’h000
AADRESxL/H<9:0>
TACQ
TPRE
2INST
TAD
(3)
9th 8th 7th 6th 5th 4th 3rd 2nd 1st
TCONV
1-127 TINST
(3)
1-127 TINST
(3)
10’h000
第一个结果就绪
第一个结果
写入 AADRES0L/H
TPRE
TACQ
9th 8th 7th 6th 5th 4th 3rd 2nd 1st
TCONV
第二个结果
写入 AADRES1L/H
ADGRDA
初始化
保护环 A
(GRDPOL = 1)
ADGRDB
初稿
内部 CHOLD
短路到 VSS
(ADIPPOL = 0)
内部 CHOLD
短路到 VDD
外部通道
初始化
保护环 A
初始化
保护环 B
初始化
保护环 B
(1)
(1)
(1)
(1)
(ADEPPOL = 1)
端口引脚
(ANSELx = 1)
输出
数字 0
输出
数字 1
(1)
ADON(2)
(1)
GO/DONE
 2012 Microchip Technology Inc.
ADIF
ADSTAT<2:0>
3’b001
注
3’b010
3’b011
3’b101
1: 这些位确保在连接另一个之前一直断开连接。
2: 可通过清零 GO/DONE 位随时使这些信号无效。
3: 当转换时钟为 ADCRC 时,预充电和采集定时器由 ADCRC 提供时钟。
3’b110
3’b111
3’b000
PIC16(L)F1512/3
DS41624A_CN 第 148 页
图 16-9:
 2012 Microchip Technology Inc.
图 16-10:
双采样转换序列 (ADDSEN = 1 且 ADIPEN = 0)
预充电
采集
AADPRE<6:0> AADACQ<6:0>
预充电
采集
AADPRE<6:0> AADACQ<6:0>
转换时钟
1-127 TINST
(3)
1-127 TINST
AADRESxL/H<9:0>
10’h000
TACQ
TPRE
2INST
TAD
(3)
9th 8th 7th 6th 5th 4th 3rd 2nd 1st
TCONV
1-127 TINST
(3)
1-127 TINST
(3)
10’h000
第一个结果就绪
第一个结果
写入 AADRES0L/H
TPRE
TACQ
9th 8th 7th 6th 5th 4th 3rd 2nd 1st
TCONV
第二个结果
写入 AADRES1L/H
ADGRDA
初始化
保护环 A
(GRDPOL = 1)
ADGRDB
初稿
内部 CHOLD
短路到 Vss
(ADIPPOL = 0)
内部 CHOLD
短路到 VDD
初始化
保护环 A
初始化
保护环 B
初始化
保护环 B
(1)
(1)
(1)
(1)
外部通道
(ADEPPOL = 1)
端口引脚
(ANSELx = 1)
输出
数字 1
输出
数字 1
(1)
(1)
GO/DONE
ADIF
DS41624A_CN 第 149 页
ADSTAT<2:0>
3’b001
注
3’b010
3’b011
3’b101
1: 这些位确保在连接另一个之前一直断开连接。
2: 可通过清零 GO/DONE 位随时使这些信号无效。
3: 当转换时钟为 ADCRC 时,预充电和采集定时器由 ADCRC 提供时钟。
3’b110
3’b111
3’b000
PIC16(L)F1512/3
(1)
ADON(2)
PIC16(L)F1512/3
16.6.8
图 16-11:
保护环输出
保护环驱动为来自 ADC 模块的一对数字输出。 通过
AADGRD 寄存器的 GRDAOE 和 GRDBOE 位使能该功
能。输出的极性由 GRDPOL 位控制。
ADGRDA
RA
ADC 的保护环输出一直处于工作状态。 输出在预充电
阶段开始时初始化以与 GRDPOL 位的极性匹配。 保护
环输出信号在采集阶段开始时改变极性。 GRDPOL 位
存储的值不变。
RB
在双采样模式下,保护环输出在第二次转换时不初始
化。 在第一个采样阶段极性翻转,第二个采样时再翻
转,返回原来的状态。 关于保护环输出时序的更多信
息,请参见图 16-9。
CGUARD
ADGRDB
16.6.9
图 16-11 所示为典型的保护环电路。 CGUARD 表示位于
PCB 板上的保护环走线的电容。 用户可选择 RA 和 RB
值,从而使 CGUARD 的电压曲线在采集期间与选择的通
道匹配。
图 16-12:
用户保护环电路
额外的采样保持电容
可通过设置 AADCAP 寄存器的 ADDCAP<2:0> 位,添加
与采样保持电容 (CHOLD)并联的额外电容。 该位将额
外电容连接到 ADC 转换总线,从而提高 A/D 模块和模拟
总线的有效内部电容。由于在转换期间未连接该额外电
容,因此不会影响 ADC 的模拟性能。请参见图 16-12。
A/D 转换框图
ADOUT 焊盘
(使用 ADC MUX)
ADOUT
ADOEN
VDD
ADIPPOL = 1
ADC 转换总线
ANx
ANx 焊盘
ADIPPOL = 0
VGND
ADDCAP<2:0>
额外的
采样保持
电容
VGND
DS41624A_CN 第 150 页
VGND
初稿
VGND
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
16.6.10
• 取消将引脚配置为模拟功能 (见 ANSEL 寄存
器)
模拟总线可视性
可使用 AADCON3 寄存器的 ADOEN 和 ADOLEN 位将
ADC 转换总线连接到 ADOUT 引脚。该连接可用于监视
内部模拟总线的状态和行为。 ADOEN 位通过标准通道
挡闸提供该连接。ADLOEN 位提供一个较低阻抗连接。
这两位可同时使能以在内部 ADC模拟总线和 ADOUT引
脚之间提供最低阻抗连接。
注
2: 请参见第 16.4 节 “A/D 采集要求”。
可在转换的预充电阶段期间改写 ADOUT 引脚连接。该
功能可由ADOOEN位控制,该位对应于改写使能信号。
改写的极性通过 ADIPPOL 位设置。
16.6.11
例 16-2:
2.
3.
4.
5.
6.
7.
配置端口:
• 禁止引脚输出驱动器 (见 TRIS 寄存器)
• 将引脚配置为模拟功能 (见 ANSEL 寄存器)
配置 ADC 模块:
• 选择 ADC 转换时钟
• 配置参考电压
• 选择 ADC 输入通道
• 开启 ADC 模块
• 置 1 ADDSEN 位
配置 ADC 中断 (可选):
• 清零 ADC 中断标志
• 允许 ADC 中断
• 允许外设中断
• 允许全局中断 (1)
等待所需采集时间 (2)。
通过将 GO/DONE 位置 1 启动转换。
通过以下方式之一等待 ADC 转换完成:
• 查询 GO/DONE 位
• 等待 ADC 中断 (已允许中断)
读取 ADC 结果。
• 第一个转换结果存储在 AADRES0H 和
AADRES0L
;RESULTS OF CONVERIONS 1.
GOTO
BANKSEL
MOVF
MOVWF
BANKSEL
MOVF
MOVWF
• 第二个转换结果存储在 AADRES1H 和
AADRES1L
8.
9.
$-1
AADRES0H
AADRES0H,W
RESULTHI
AADRES0L
AADRES0L,W
RESULTLO
;No, test again
;
;Read upper 2 bits
;store in GPR space
;
;Read lower 8 bits
;Store in GPR space
;RESULTS OF CONVERIONS 2.
清零 ADC 中断标志 (如果已允许中断则需要此
操作)。
配置端口(需将引脚配置为输出时需要此操作):
• 使能引脚输出驱动器 (见 TRIS 寄存器)
 2012 Microchip Technology Inc.
A/D 双转换
;This code block configures the ADC
;for polling, Vdd and Vss references, Frc
;clock and AN0 input.
;
;Conversion start & polling for completion
; are included.
;
BANKSEL AADCON1;
MOVLW
B’11110000’
;Right justify, Frc
;clock
MOVWF
AADCON1
;Vdd and Vss Vref
BANKSEL TRISA
;
BSF
TRISA,0
;Set RA0 to input
BANKSEL ANSEL
;
BSF
ANSEL,0
;Set RA0 to analog
BANKSEL AADCON0
;
MOVLW
B’00000001’
;Select channel AN0
MOVWF
AADCON0
;Turn ADC On
CALL
SampleTime
;Acquisiton delay
BSF
AADCON0,GO/DONE ;Start conversion
BTFSC
AADCON0,GO/DONE ;Is conversion
;done?
A/D 双转换步骤
以下是使用 ADC 执行双模数转换的示例步骤:
1.
1: 如果用户试图从休眠状态唤醒器件并恢复
主代码执行,必须禁止全局中断。
GOTO
BANKSEL
MOVF
MOVWF
BANKSEL
MOVF
MOVWF
MOVF
MOVWF
初稿
$-1
AADRES1H
AADRES1H,W
RESULTHI
AADRES1L
AADRES1L,W
RESULTLO
AADRES1L,W
RESULTLO
;No, test again
;
;Read upper 2 bits
;store in GPR space
;
;Read lower 8 bits
;Store in GPR space
;Read lower 8 bits
;Store in GPR space
DS41624A_CN 第 151 页
PIC16(L)F1512/3
16.7
寄存器定义:ADC 控制寄存器
AADCON0: A/D 控制寄存器 0(1)
寄存器 16-7:
U-0
R/W-0/0
R/W-0/0
—
R/W-0/0
R/W-0/0
R/W-0/0
CHS<4:0>
R/W-0/0
R/W-0/0
GO/DONE
ADON
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
未实现: 读为 0
bit 6-2
CHS<4:0>: 模拟通道选择位
11111 = FVR (固定参考电压)缓冲区 1 输出 (2)
11110 = 保留。 不连接任何通道。
11101 = 温度指示器 (3)。
11100 = 保留。 不连接任何通道。
11011 = VREFL (ADC 负参考电压)
11010 = VREFH (ADC 正参考电压)
11001 = 保留。 不连接任何通道。
•
•
•
10100 = 保留。 不连接任何通道。
10011 = AN19
10010 = AN18
10001 = AN17
10000 = AN16
01111 = AN15
01110 = AN14
01101 = AN13
01100 = AN12
01011 = AN11
01010 = AN10
01001 = AN9
01000 = AN8
00111 = 保留。 不连接任何通道。
00110 = 保留。 不连接任何通道。
00101 = 保留。 不连接任何通道。
00100 = AN4
00011 = AN3
00010 = AN2
00001 = AN1
00000 = AN0
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,不消耗工作电流
注
1: 更多信息,请参见第 16.5.1 节 “ADC 寄存器映射”。
2: 更多信息,请参见第 14.0 节 “固定参考电压 (FVR)”。
3: 更多信息,请参见第 15.0 节 “温度指示器模块”。
DS41624A_CN 第 152 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 16-8:
R/W-0/0
AADCON1: A/D 控制寄存器 1(1)
R/W-0/0
ADFM
R/W-0/0
R/W-0/0
ADCS<2:0>
U-0
U-0
—
—
R/W-0/0
R/W-0/0
ADPREF<1:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
ADFM:A/D 结果格式选择位
1 = 右对齐。当装入转换结果时, AADRESxH 的高 6 位设置为 0。
0 = 左对齐。 当装入转换结果时, AADRESxL 的低 6 位设置为 0。
bit 6-4
ADCS<2:0>:A/D 转换时钟选择位
111 = FRC (由专用 RC 振荡器提供的时钟)
110 = FOSC/64
101 = FOSC/16
100 = FOSC/4
011 = FRC (由专用 RC 振荡器提供的时钟)
010 = FOSC/32
001 = FOSC/8
000 = FOSC/2
bit 3-2
未实现: 读为 0
bit 1-0
ADPREF<1:0>:A/D 正参考电压配置位
11 = VREF 连接到内部固定参考电压 (FVR)模块 (2)
10 = VREF 连接到外部 VREF+ 引脚
01 = 保留
00 = VREF 连接到 VDD
注
1: 更多信息,请参见第 16.5.1 节 “ADC 寄存器映射”。
2: 当选择 FVR 或 VREF+ 引脚作为正参考电压源时,请注意存在最小电压规范值。详情请参见第 25.0 节
“电气规范”。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 153 页
PIC16(L)F1512/3
寄存器 16-9:
U-0
AADCON2: A/D 控制寄存器 2
R/W-0/0
—
R/W-0/0
R/W-0/0
TRIGSEL<2:0>
U-0
U-0
U-0
U-0
—
—
—
—
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
未实现: 读为 0
bit 6-4
TRIGSEL<2:0>:ADC 特殊事件触发源选择位
111 = 保留。禁止自动转换触发器。
110 = 保留。禁止自动转换触发器。
101 = TMR2 与 PR2 的匹配信号
100 = TMR1 溢出
011 = TMR0 溢出
010 = CCP2
001 = CCP1
000 = 无自动转换触发器选择位 (1,2)
bit 3-0
未实现: 读为 0
注
1: 这是所有触发源的上升沿敏感输入。
2: 用于设置相应中断标志的信号。
DS41624A_CN 第 154 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 16-10:
AADCON3: A/D 控制寄存器 3
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
U-0
R/W-0/0
R/W-0/0
ADEPPOL
ADIPPOL
ADOLEN
ADOEN
ADOOEN
—
ADIPEN
ADDSEN
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
ADEPPOL:外部预充电极性位 (1)
1 = 预充电期间所选通道短路到 VDDIO
0 = 预充电期间所选通道短路到 VSS
bit 6
ADIPPOL: 内部预充电极性位 (1)
1 = 预充电期间 CHOLD 短路到 VREFH
0 = 预充电期间 CHOLD 短路到 VREFL
bit 5
ADOLEN:ADOUT 低阻抗输出使能位
1 = ADOUT 低阻抗引脚连接至 ADC 总线
0 = 无至 ADC 总线的外部连接
bit 4
ADOEN: ADOUT 输出使能位
1 = ADOUT 引脚连接至 ADC 总线 (正常挡闸)
0 = 无至 ADC 总线的外部连接
bit 3
ADOOEN:ADOUT 改写使能位
1 = 预充电期间使用内部极性值改写 ADOUT 引脚
0 = 不改写 ADOUT 引脚
bit 2
未实现: 读为 0
bit 1
ADIPEN: A/D 反相极性使能位
如果 ADDSEN = 1:
1 = A/D 所使用的 ADEPPOL、 ADIPPOL 和 GRDPOL 位输出值取反以进行第二次转换
0 = 第二次 A/D 转换过程与第一次类似
如果 ADDSEN = 0:
该位没有影响。
bit 0
ADDSEN:A/D 双采样使能位
1 = 完成一次转换后, A/D 立即开始新的转换。
GO/DONE 位在转换结束时不会自动清零
0 = A/D 工作在传统单转换模式下
注
1: 当 ADDSEN = 1 且 ADIPEN = 1,该输出的极性反相以在第二个转换时间内使用。存储的位值不变。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 155 页
PIC16(L)F1512/3
寄存器 16-11:
AADSTAT: A/D 状态寄存器
U-0
U-0
U-0
U-0
U-0
R/W-0/0
—
—
—
—
—
ADCONV
R/W-0/0
R/W-0/0
ADSTG<1:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-3
未实现: 读为 0
bit 2
ADCONV:A/D 转换状态位
1 = 指示 A/D 处于 AADRES1H:AADRES1L 的转换序列中
0 = 指示 A/D 处于 AADRES0H:AADRES0L 的转换序列中 (当 GO/DONE = 0 时也读为 0)
bit 1-0
ADSTG<1:0>:A/D 阶段状态位
11 = A/D 模块处于转换阶段
10 = A/D 模块处于采集阶段
01 = A/D 模块处于预充电阶段
00 = A/D 模块未在进行转换 (与 GO/DONE = 0 时相同)
寄存器 16-12:
U-0
AADPRE: A/D 预充电控制寄存器
R/W-0/0
R/W-0/0
R/W-0/0
—
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
ADPRE<6:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
未实现: 读为 0
bit 6-0
ADPRE<6:0>:预充电时间选择位 (1)
111 1111 = 预充电 127 个指令周期
111 1110 = 预充电 126 个指令周期
•
•
•
000 0001 = 预充电 1 个指令周期 (Fosc/4)
000 0000 = 禁止 ADC 预充电时间
注
1: 当选择 FRC 作为转换时钟源时,它也是用于预充电和采集时间的时钟。
DS41624A_CN 第 156 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 16-13:
U-0
AADACQ: A/D 采集时间控制寄存器
R/W-0/0
R/W-0/0
R/W-0/0
—
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
ADACQ<6:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
未实现: 读为 0
bit 6-0
ADACQ<6:0>:采集 / 充电共享时间选择位 (1)
111 1111 = 采集 / 充电共享 127 个指令周期
111 1110 = 采集 / 充电共享 126 个指令周期
•
•
•
000 0001 = 采集 / 充电共享 1 个指令周期 (Fosc/4)
000 0000 = 禁止 ADC 采集 / 充电共享时间
1: 当选择 FRC 时钟作为转换时钟源时,它也是用于预充电和采集时间的时钟。
注
寄存器 16-14:
AADGRD: A/D 保护环控制寄存器
R/W-0/0
R/W-0/0
R/W-0/0
U-0
U-0
U-0
U-0
U-0
GRDBOE(2)
GRDAOE(2)
GRDPOL(1,2)
—
—
—
—
—
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
GRDBOE: 保护环 B 输出使能位 (2)
1 = 使能 ADGRDB 引脚的 ADC 保护环输出,其相应的 TRISx 位必须清零。
0 = 不使能该引脚的 ADC 保护环功能
bit 6
GRDAOE: 保护环 A 输出使能位 (2)
1 = 使能 ADGRDA 引脚的 ADC 保护环输出,其相应的 TRISx 位必须清零。
0 = 不使能该引脚的 ADC 保护环功能
bit 5
GRDPOL:保护环极性选择位 (1,2)
1 = 预充电阶段, ADC 保护环输出以数字高电平开始
0 = 预充电阶段, ADC 保护环输出以数字低电平开始
bit 4-0
未实现:读为 0
注
1: 当 ADDSEN = 1 且 ADIPEN = 1 时,该输出的极性反相以在第二个转换时间内使用。存储的位值不变。
2: 保护环输出在 ADON = 1 时保持不变。 ADGRDA 输出在采集时间开始时切换极性。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 157 页
PIC16(L)F1512/3
寄存器 16-15:
U-0
AADCAP: A/D 额外采样电容选择寄存器
U-0
U-0
U-0
U-0
R/W-0/0
—
R/W-0/0
R/W-0/0
ADDCAP<2:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-3
未实现:读为 0
bit 2-0
ADDCAP:ADC 额外采样电容选择位
111 = 额外标称采样电容为 28 pF
110 = 额外标称采样电容为 24 pF
101 = 额外标称采样电容为 20 pF
100 = 额外标称采样电容为 16 pF
011 = 额外标称采样电容为 12 pF
010 = 额外标称采样电容为 8 pF
001 = 额外标称采样电容为 4 pF
000 = 禁止额外采样电容
DS41624A_CN 第 158 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
AADRESxH: ADC 结果寄存器高字节 (ADFM = 0) (1)
寄存器 16-16:
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
ADRESx<9:2>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
AD<9:2>:A/D 结果最高有效位
1: 更多信息,请参见第 16.5.1 节 “ADC 寄存器映射”。
注
AADRESxL: ADC 结果寄存器低字节 (ADFM = 0) (1)
寄存器 16-17:
R/W-x/u
R/W-x/u
ADRESx<1:0>
U-0
U-0
U-0
U-0
U-0
U-0
—
—
—
—
—
—
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-6
AD<1:0>:ADC 结果寄存器位
10 位转换结果的低 2 位
bit 5-0
保留:不要使用。
注
1: 更多信息,请参见第 16.5.1 节 “ADC 寄存器映射”。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 159 页
PIC16(L)F1512/3
寄存器 16-18:
AADRESxH:ADC 结果寄存器高字节 (ADFM = 1) (1)
U-0
U-0
U-0
U-0
U-0
U-0
—
—
—
—
—
—
R/W-x/u
R/W-x/u
ADRESx<9:8>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-2
保留:不要使用。
bit 1-0
AD<9:8>:A/D 结果最高有效位
1: 更多信息,请参见第 16.5.1 节 “ADC 寄存器映射”。
注
寄存器 16-19:
R/W-x/u
AADRESxL: ADC 结果寄存器低字节 (ADFM = 1) (1)
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
R/W-x/u
ADRESx<7:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-0
注
AD<7:0>:ADC 结果寄存器位
10 位转换结果的低 8 位
1: 更多信息,请参见第 16.5.1 节 “ADC 寄存器映射”。
DS41624A_CN 第 160 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 16-6:
名称
与 ADC 相关的寄存器汇总
Bit 7
Bit 6
Bit 5
—
—
AADCAP
—
AADCON0
—
Bit 4
Bit 3
—
—
Bit 2
Bit 1
Bit 0
寄存器
所在页
ADON
152
ADDCAP<2:0>
CHS<4:0>
GO/DONE
158
AADCON1
ADFM
ADCS<2:0>
—
—
AADCON2
—
TRIGSEL<2:0>
—
—
—
—
AADCON3
ADEPPOL
ADIPPOL
ADOLEN
ADOEN
ADOOEN
—
ADIPEN
ADDSEN
155
AADGRD
GRDBOE
GRDAOE
GRDPOL
—
—
—
—
—
157
AADPRE
—
ADPREF<1:0>
ADPRE<6:0>
153
154
156
AADRES0H
A/D 结果寄存器 0 的高字节
159
AADRES0L
A/D 结果寄存器 0 的低字节
159
AADRES1H
A/D 结果寄存器 1 的高字节
159
AADRES1L
A/D 结果寄存器 1 的低字节
AADSTAT
—
AADACQ
—
ANSELA
—
159
—
—
—
—
ANSA5
—
—
ADCONV
ADSTG<1:0>
ADACQ<6:0>
ANSA3
156
157
ANSA2
ANSA1
ANSA0
109
ANSELB
—
—
ANSB5
ANSB4
ANSB3
ANSB2
ANSB1
ANSB0
113
ANSELC
ANSC7
ANSC6
ANSC5
ANSC4
ANSC3
ANSC2
—
—
116
CCP1CON
—
—
DC1B<1:0>
CCP1M<3:0>
244
CCP2CON
—
—
DC2B<1:0>
CCP2M<3:0>
244
FVRCON
FVREN
FVRRDY
TSEN
TSRNG
—
—
INTCON
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
TRISA
TRISA7
TRISA6
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
108
TRISB
TRISB7
TRISB6
TRISB5
TRISB4
TRISB3
TRISB2
TRISB1
TRISB0
112
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
115
TRISC
图注:
ADFVR<1:0>
126
— = 未实现位,读为 0。 ADC 模块不使用阴影单元。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 161 页
PIC16(L)F1512/3
注:
DS41624A_CN 第 162 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
17.0
TIMER0 模块
17.1.2
在 8 位计数器模式下,Timer0 模块将在 T0CKI 引脚的上
升沿或下降沿递增。
Timer0 模块是 8 位定时器 / 计数器,具有以下特性:
•
•
•
•
•
•
8 位计数器模式
8 位定时器 / 计数器寄存器 (TMR0)
8 位预分频器 (独立于看门狗定时器)
可编程内部或外部时钟源
可编程外部时钟边沿选择
溢出时产生中断
TMR0 可用于门控 Timer1
使用 T0CKI 引脚的 8 位计数器模式,可通过将
OPTION_REG寄存器中的TMR0CS位设置为1来选择。
每个输入源的递增边沿的上升或下降跳变由
OPTION_REG 寄存器中的 TMR0SE 位决定。
图 17-1 给出了 Timer0 模块的框图。
17.1
Timer0 工作原理
Timer0 模块可被用作 8 位定时器或 8 位计数器。
17.1.1
8 位定时器模式
如果在没有预分频器的情况下使用 Timer0 模块,它将
在每个指令周期递增。可通过清零 OPTION_REG 寄存
器的 TMR0CS 位选择 8 位定时器模式。
当写 TMR0 时,紧跟写操作之后的两个指令周期内禁止
TMR0 递增。
注:
当写 TMR0 时,考虑到存在两个指令周期
的延时,可以调整写入TMR0寄存器的值。
图 17-1:
TIMER0 框图
FOSC/4
数据总线
0
T0CKI
8
1
同步
2 TCY
1
TMR0
0
TMR0SE TMR0CS
8位
预分频器
PSA
溢出时将标志位
TMR0IF 置 1
溢出到 Timer1
8
PS<2:0>
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 163 页
PIC16(L)F1512/3
17.1.3
软件可编程的预分频器
软件可编程的预分频器只能用于 Timer0。可通过清零
OPTION_REG 寄存器的 PSA 位来使能预分频器。
注:
看门狗定时器 (WDT)使用它自己的独立
预分频器。
Timer0 模块有 8 个预分频比选项,范围从 1:2 至 1:256。
可通过 OPTION_REG 寄存器的 PS<2:0> 位选择预分频
值。为了让 Timer0 模块使用 1:1 预分频值,必须通过将
OPTION_REG 寄存器的 PSA 位置 1 来禁止预分频器。
预分频器是不可读写的。写 TMR0 寄存器的所有指令都
会清零预分频器。
17.1.4
TIMER0 中断
TMR0 寄存器从 FFh 溢出到 00h 时,将产生 Timer0 中
断。每次 TMR0 寄存器溢出时都会将 INTCON 寄存器
的 TMR0IF 中断标志位置 1,这与是否允许 Timer0 中断
无关。TMR0IF 位只能用软件清零。Timer0 中断允许位
是 INTCON 寄存器的 TMR0IE 位。
注:
17.1.5
由于定时器在休眠状态下是停止的,所以
Timer0 中断无法将处理器从休眠状态唤
醒。
8 位同步计数器模式
在 8 位计数器模式下,T0CKI 引脚的递增边沿必须与指
令时钟保持同步。同步可通过在指令时钟的 Q2 和 Q4
周期对预分频器的输出进行采样实现。外部时钟源的高
低电平周期必须满足第 25.0 节 “电气规范”中所示的
时序要求。
17.1.6
休眠期间的操作
在处理器处于休眠模式时,Timer0 无法工作。在处理器
处于休眠模式时, TMR0 寄存器的内容将保持不变。
DS41624A_CN 第 164 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
17.2
OPTION 和 Timer0 控制寄存器
寄存器 17-1:
OPTION_REG:OPTION 寄存器
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
WPUEN
INTEDG
TMR0CS
TMR0SE
PSA
R/W-1/1
R/W-1/1
R/W-1/1
PS<2:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
WPUEN:弱上拉使能位
1 = 禁止所有弱上拉 (MCLR 除外,如果已使能)
0 = 通过各个 WPUx 锁存值使能弱上拉
bit 6
INTEDG:中断边沿选择位
1 = INT 引脚的上升沿触发中断
0 = INT 引脚的下降沿触发中断
bit 5
TMR0CS:Timer0 时钟源选择位
1 = T0CKI 引脚上的电平跳变
0 = 内部指令周期时钟 (FOSC/4)
bit 4
TMR0SE:Timer0 时钟源边沿选择位
1 = 在 T0CKI 引脚信号从高至低跳变时,递增计数
0 = 在 T0CKI 引脚信号从低至高跳变时,递增计数
bit 3
PSA:预分频器分配位
1 = 预分频器未分配给 Timer0 模块
0 = 预分频器分配给 Timer0 模块
bit 2-0
PS<2:0>:预分频比选择位
位值
000
001
010
011
100
101
110
111
表 17-1:
名称
INTCON
1:2
1:4
1:8
1 : 16
1 : 32
1 : 64
1 : 128
1 : 256
与 TIMER0 相关的寄存器汇总
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
寄存器
所在页
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
OPTION_REG WPUEN
TMR0
Timer0 分频比
INTEDG TMR0CS TMR0SE
PSA
PS<2:0>
165
163*
Timer0 模块寄存器
TRISA
TRISA7
图注:
*
TRISA6
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
108
— = 未实现位,读为 0。 Timer0 模块不使用阴影单元。
提供寄存器信息的页。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 165 页
PIC16(L)F1512/3
注:
DS41624A_CN 第 166 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
18.0
带门控控制的 TIMER1 模块
•
•
•
•
Timer1 模块是 16 位定时器 / 计数器,具有以下特性:
• 16 位定时器 / 计数器寄存器对
(TMR1H:TMR1L)
• 可编程内部或外部时钟源
• 2 位预分频器
• 32 kHz 辅助振荡器电路
• 可选的同步比较器输出
• 多个 Timer1 门控 (计数使能)源
• 溢出时产生中断
• 溢出触发唤醒 (仅限外部时钟,异步模式)
• 捕捉 / 比较功能的时基
• 特殊事件触发器 (带 CCP)
• 可选择的门控源极性
图 18-1:
门控翻转模式
门控单脉冲模式
门控值状态
门控事件中断
图 18-1 给出了 Timer1 模块的框图。
TIMER1 框图
T1GSS<1:0>
T1G
00
来自 Timer0
溢出
01
来自 Timer2 与
PR2 匹配信号
10
保留
11
T1GSPM
0
单脉冲
TMR1ON
T1GPOL
0
t1g_in
D
Q
CK
R
Q
1
采集控制
1
T1GVAL
Q1
数据总线
D
Q
读
T1GCON
EN
中断
T1GGO/DONE
检测
置1
TMR1GIF
T1GTM
TMR1GE
溢出时
将 TMR1IF
标志位置 1
TMR1ON
TMR1(2)
TMR1H
EN
TMR1L
Q
D
T1CLK
同步的
时钟输入
0
1
TMR1CS<1:0>
SOSCO/T1CKI
LFINTOSC
辅助
振荡器
SOSCI
T1SYNC
OUT
11
1
同步 (3)
预分频器
1, 2, 4, 8
检测
10
EN
0
T1OSCEN
(1)
FOSC
内部
时钟
01
FOSC/4
内部
时钟
00
2
T1CKPS<1:0>
FOSC/2
内部
时钟
休眠输入
至时钟切换模块
注
1: 当使用 T1CKI 时, ST 缓冲器为高速型。
2: Timer1 寄存器在上升沿递增。
3: 处于休眠模式时,无执行法同步。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 167 页
PIC16(L)F1512/3
18.1
Timer1 工作原理
18.2
Timer1模块是16位递增计数器,可通过TMR1H:TMR1L
寄存器对访问。写 TMR1H 或 TMR1L 会直接更新计数
器。
时钟源选择
T1CON 寄存器的 TMR1CS<1:0> 和 T1OSCEN 位用于
选择 Timer1 的时钟源。表 18-2 显示了时钟源选择。
18.2.1
Timer1 与内部时钟源一起使用时,模块为定时器并在每
个指令周期递增。与外部时钟源一起使用时,模块可用
作定时器或计数器,在外部时钟源的每个选定边沿递
增。
内部时钟源
当选择内部时钟源时,TMR1H:TMR1L 寄存器对的递增
频率将为 FOSC 的整数倍 (取决于 Timer1 预分频器)。
Timer1 分别通过配置 T1CON 和 T1GCON 寄存器中的
TMR1ON 和 TMR1GE 位使能。表 18-1 显示了 Timer1
使能选择。
选择 FOSC 内部时钟源时, Timer1 寄存器的值将在每个
指令时钟周期中递增4次。由于这个原因,在读取Timer1
值时,分辨率将会出现 2 LSB 的误差。为了利用 Timer1
的全部分辨率,必须使用异步输入信号来对 Timer1 时钟
输入进行门控。
表 18-1:
可以使用以下异步源:
TIMER1 使能选择
• T1G 引脚上的异步事件用于进行 Timer1 门控
Timer1
工作状态
TMR1ON
TMR1GE
0
0
关闭
0
1
关闭
1
0
总是开启
1
1
计数使能
18.2.2
外部时钟源
当选择外部时钟源时,Timer1 模块可以作为定时器或计
数器工作。
Timer1 使能计数时,在外部时钟输入 T1CKI 的上升沿递
增。该外部时钟源既可以与单片机系统时钟同步,也可
以异步运行。
在 作 为 定 时 器 采 用 时 钟 振 荡 器 工 作 时,可 以 将 外 部
32.768 kHz 晶振与辅助振荡器电路一起使用。
注:
在计数器模式下,发生以下任何一个或多
个情况后,计数器在首个上升沿递增前,
必须先经过一个下降沿:
•
•
•
•
表 18-2:
POR 后使能 Timer1
写入 TMR1H 或 TMR1L
Timer1 被禁止
T1CKI 为高电平时 Timer1 被禁止
(TMR1ON = 0),然后在 T1CKI 为
低电平时 Timer1 被使能 (TMR1ON
= 1)。
时钟源选择
TMR1CS1
TMR1CS0
T1OSCEN
1
1
x
LFINTOSC
1
0
1
SOSCI/SOSCO 引脚上的辅助振荡器电路
1
0
0
T1CKI 引脚上的外部时钟源
0
1
x
系统时钟 (FOSC)
0
0
x
指令时钟 (FOSC/4)
DS41624A_CN 第 168 页
时钟源
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
18.3
Timer1 预分频器
但是,用户应该记住通过读两个 8 位值来读取 16 位定
时器本身就会产生某些问题,这是因为定时器可能在两
次读操作之间产生溢出。
Timer1 有 4 个预分频比选项,允许对时钟输入进行 1、2、
4 或 8 分频。T1CON 寄存器的 T1CKPS 位控制预分频器
计数器。不能对预分频器计数器直接进行读写操作;但
是,通过写入 TMR1H 或 TMR1L 可将预分频器计数器清
零。
18.4
对于写操作,建议用户直接停止定时器,然后写入需要
的值。如果定时器寄存器正进行递增计数,对定时器寄
存 器 进 行 写 操 作 可 能 会 导 致 写 争 用,这 可 能 在
TMR1H:TMR1L 寄存器对中产生不可预测的值。
辅助振荡器
18.6
Timer1 使用 SOSCI 和 SOSCO 引脚上的低功耗辅助振
荡器电路。辅助振荡器设计为使用外部 32.768 kHz 晶
振。
Timer1 可配置为自由计数或用 Timer1 门控电路使能和
禁止计数。这也称为 Timer1 门控使能。
Timer1 门控也可由多个可选源驱动。
可通过将 T1CON 寄存器的 T1OSCEN 位置 1 使能辅助
振荡器电路。在休眠期间,振荡器将继续运行。
注:
18.5
18.6.1
振荡器在使用之前需要一定的起振和稳定
时间。因此,T1OSCEN 应置 1,且在使用
Timer1 之前确保有适当的延时。可通过清
零 TMR1IF 然后将 TMR1H:TMR1L 寄存器
对预设置为 FC00h 由软件实现类似于OST
延时的适当延时。 TMR1IF 标志位在经过
1024 个时钟周期后置 1,从而指示振荡器
正在运行并相当稳定。
18.5.1
TIMER1 门控使能
通过将 T1GCON 寄存器的 TMR1GE 位置 1 使能 Timer1
门控使能模式。使用 T1GCON 寄存器的 T1GPOL 位来
配置 Timer1 门控使能模式的极性。
使能 Timer1 门控使能模式时,Timer1 将在 Timer1 时钟
源的上升沿递增。禁止 Timer1 门控使能模式时,不会
发生递增,Timer1 将保持当前计数。时序详细信息请参
见图 18-3。
异步计数器模式下的 Timer1 操作
表 18-3:
如果 T1CON 寄存器的控制位 T1SYNC 置 1,外部时钟
输入将不同步。定时器异步于内部相位时钟进行递增计
数。如果选择了外部时钟源,在休眠期间定时器将继续
运行,并在溢出时产生中断以唤醒处理器。但是,用软
件对定时器进行读 / 写操作时,要特别当心(见第 18.5.1
节 “在异步计数器模式下读写 Timer1”)。
注:
Timer1 门控
当从同步切换到异步操作时,可能会跳过
一次递增。当从异步切换到同步操作时,
可能会产生一次额外递增。
TIMER1 门控使能选择
T1CLK
T1GPOL
T1G

0
0
计数

0
1
保持计数

1
0
保持计数

1
1
计数
18.6.2
TIMER1 门控源选择
Timer1 门控源可从四种不同源之中选择。源的选择由
T1GCON 寄存器的 T1GSS 位控制。每个可用源的极性
也是可选择的。极性的选择由 T1GCON 寄存器的
T1GPOL 位控制。
在异步计数器模式下读写 TIMER1
当 定 时 器 采 用 外 部 异 步 时 钟 运 行 时,对 TMR1H 或
TMR1L 的读操作将确保为有效读操作(由硬件实现)。
表 18-4:
TIMER1 门控源
T1GSS
 2012 Microchip Technology Inc.
Timer1 工作状态
初稿
Timer1 门控源
00
Timer1 门控引脚
01
Timer0 溢出
(TMR0 从 FFh 递增到 00h)
10
Timer2 与 PR2 匹配信号
11
保留
DS41624A_CN 第 169 页
PIC16(L)F1512/3
18.6.2.1
T1G 引脚门控操作
18.6.4
T1G 引脚是 Timer1 门控源之一。它可用于向 Timer1 门
控电路提供外部源。
18.6.2.2
使能 Timer1 门控单脉冲模式时,可能会捕捉到一个单脉
冲门控事件。 Timer1
门控单脉冲模式首先通过将
T1GCON 寄存器中的 T1GSPM 位置 1 来使能。接下来
必须将 T1GCON 寄存器中的 T1GGO/DONE 位置 1。
Timer1 将在下一个递增边沿完全使能。在脉冲的下个后
边沿,将自动清零 T1GGO/DONE 位。不允许其他门控
事件递增 Timer1,直到 T1GGO/DONE 位再次由软件置
1。时序详细信息请参见图 18-5。
Timer0 溢出门控操作
Timer0 从 FFh 递增到 00h 时,将自动产生由低至高脉
冲并在内部提供给 Timer1 门控电路。
18.6.2.3
TIMER1 门控单脉冲模式
Timer2 匹配 PR2 操作
Timer2 递增到与 PR2 匹配时,将自动产生由低至高脉冲
并在内部提供给 Timer1 门控电路。
如果通过清零 T1GCON 寄存器的 T1GSPM 位来禁止单
脉冲门控模式,则 T1GGO/DONE 位也会清零。
18.6.3
同时使能翻转模式和单脉冲模式将允许两种模式协同工
作。这样就可以测量 Timer1 门控源的周期时间。时序
详细信息请参见图 18-6。
TIMER1 门控翻转模式
使能 Timer1 门控翻转模式时,可测量 Timer1 门控信号
整个周期的长度,而不是单电平脉冲的持续时间。
18.6.5
Timer1 门控源经由一个单稳态触发器输送到 Timer1,
该单稳态触发器在信号的每个递增边沿改变状态。时序
详细信息请参见图 18-4。
使用 Timer1 门控值状态时,可读取门控控制值的最新
电平。该值保存在 T1GCON 寄存器的 T1GVAL 位中。
即使 Timer1 门控未使能(TMR1GE 位清零),T1GVAL
位也是有效的。
通过将 T1GCON 寄存器的 T1GTM 位置 1 使能 Timer1
门控翻转模式。 T1GTM 位清零时,将清除单稳态触发
器并保持清零。这对于控制测量哪个边沿是必需的。
注:
TIMER1 门控值状态
18.6.6
在使能翻转模式的同时改变门控极性,可
能会导致不确定的操作。
TIMER1 门控事件中断
允许 Timer1 门控事件中断时,可在门控事件完成时产
生一个中断。出现 T1GVAL 的下降沿时, PIR1 寄存器
中的 TMR1GIF 标志位将置 1。如果 PIE1 寄存器中的
TMR1GIE 位置 1,则会响应中断。
即使Timer1门控未使能(TMR1GE位清零),TMR1GIF
标志位也仍有效。
DS41624A_CN 第 170 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
18.7
Timer1 中断
18.9
Timer1 寄存器对 (TMR1H:TMR1L)递增到 FFFFh,
然后计满返回到 0000h。当 Timer1 计满返回时, PIR1
寄存器的 Timer1 中断标志位将置 1。为允许计满返回时
的中断,必须将以下位置 1:
•
•
•
•
当工作在捕捉或比较模式下时, CCP
TMR1H:TMR1L 寄存器对作为时基。
在比较模式下,当 CCPR1H:CCPR1L 寄存器对中的值
与 TMR1H:TMR1L 寄存器对中的值相匹配时触发事件。
该事件可以是特殊事件触发信号。
更多信息,请参见第 21.0 节“捕捉 / 比较 /PWM 模块”。
在中断服务程序中将 TMR1IF 位清零将清除中断。
18.8
在允许中断前,应将 TMR1H:TMR1L 寄存
器对以及 TMR1IF 位清零。
18.10 CCP 特殊事件触发信号
当将 CCP 配置为触发特殊事件时,触发信号将清零
TMR1H:TMR1L寄存器对。该特殊事件不会引起Timer1
中断。 CCP 模块仍可配置为产生 CCP 中断。
休眠期间的 Timer1 操作
只有在设置为异步计数器模式时,Timer1 才能在休眠模
式下工作。在该模式下,可使用外部晶振或时钟源使计
数器递增计数。要设置定时器以唤醒器件:
•
•
•
•
•
•
模 块使用
在捕捉模式下,当发生配置的事件时,TMR1H:TMR1L
寄存器对中的值被复制到 CCPR1H:CCPR1L 寄存器对
中。
T1CON 寄存器的 TMR1ON 位
PIE1 寄存器的 TMR1IE 位
INTCON 寄存器的 PEIE 位
INTCON 寄存器的 GIE 位
注:
CCP/CCP 捕捉 / 比较时基
在该工作模式下, CCPR1H:CCPR1L 寄存器对变成
Timer1 的周期寄存器。
为了利用特殊事件触发信号,Timer1 应进行同步,并且
应选择 FOSC/4 作为时钟源。Timer1 的异步操作会导致
错过特殊事件触发信号。
必须将 T1CON 寄存器的 TMR1ON 位置 1
必须将 PIE1 寄存器的 TMR1IE 位置 1
必须将 INTCON 寄存器的 PEIE 位置 1
必须将 T1CON 寄存器的 T1SYNC 位置 1
必须配置 T1CON 寄存器的 TMR1CS 位
必须配置 T1CON 寄存器的 T1OSCEN 位
如果对 TMR1H 或 TMR1L 的写操作和来自 CCP 的特殊
事件触发信号同时发生,则写操作优先。
更多信息,请参见第 16.2.5 节 “特殊事件触发器”。
器 件 将 在 溢 出 时被 唤 醒 并 执行 下 一 条 指令。如 果 将
INTCON 寄存器的 GIE 位置 1,器件将调用中断服务程
序。
无论 T1SYNC 位的设置如何, Timer1 辅助振荡器都会
在休眠模式下继续工作。
图 18-2:
TIMER1 递增边沿
使能 TMR1 时
T1CKI = 1
使能 TMR1 时
T1CKI = 0
注
1: 箭头指示计数器递增。
2: 在计数器模式下,计数器在首个上升沿递增之前,必须先经过一个下降沿。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 171 页
PIC16(L)F1512/3
图 18-3:
TIMER1 门控使能模式
TMR1GE
T1GPOL
T1G_IN
T1CKI
T1GVAL
Timer1
N
图 18-4:
N+1
N +2
N +3
N +4
TIMER1 门控翻转模式
TMR1GE
T1GPOL
T1GTM
T1G_IN
T1CKI
T1GVAL
Timer1
N
DS41624A_CN 第 172 页
N + 1 N +2
N +3
N +4
初稿
N +5
N +6
N +7
N +8
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 18-5:
TIMER1 门控单脉冲模式
TMR1GE
T1GPOL
T1GSPM
T1GGO/
在 T1GVAL 的下降沿
由硬件清零
用软件置 1
DONE
在 T1G 的上升沿
使能计数
T1G_IN
T1CKI
T1GVAL
Timer1
TMR1GIF
N
N+1
用软件清零
 2012 Microchip Technology Inc.
N +2
在 T1GVAL 的下降沿
由硬件置 1
初稿
用软件清零
DS41624A_CN 第 173 页
PIC16(L)F1512/3
图 18-6:
TIMER1 门控单脉冲和翻转组合模式
TMR1GE
T1GPOL
T1GSPM
T1GTM
T1GGO/
在 T1GVAL 的下降沿
由硬件清零
用软件置 1
DONE
在 T1G 的上升沿
使能计数
T1G_IN
T1CKI
T1GVAL
Timer1
TMR1GIF
DS41624A_CN 第 174 页
N
用软件清零
N+1
N +2
N +3
N +4
在 T1GVAL 的下降沿
由硬件置 1
初稿
用软件清零
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
18.11 Timer1 控制寄存器
Timer1 控制寄存器 (T1CON)(如寄存器 18-1 所示)
用于控制 Timer1 以及选择 Timer1 模块的各种特性。
寄存器 18-1:
R/W-0/u
T1CON:TIMER1 控制寄存器
R/W-0/u
R/W-0/u
TMR1CS<1:0>
R/W-0/u
T1CKPS<1:0>
R/W-0/u
R/W-0/u
U-0
R/W-0/u
T1OSCEN
T1SYNC
—
TMR1ON
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-6
TMR1CS<1:0>:Timer1 时钟源选择位
11 = Timer1 时钟源为 LFINTOSC
10 = Timer1 时钟源为引脚或振荡器:
如果 T1OSCEN = 0:
来自 T1CKI 引脚的外部时钟 (上升沿触发计数)
如果 T1OSCEN = 1:
SOSCI/SOSCO 引脚上的晶振
01 = Timer1 时钟源为系统时钟 (FOSC)
00 = Timer1 时钟源为指令时钟 (FOSC/4)
bit 5-4
T1CKPS<1:0>:Timer1 输入时钟预分频比选择位
11 = 1:8 预分频比
10 = 1:4 预分频比
01 = 1:2 预分频比
00 = 1:1 预分频比
bit 3
T1OSCEN:LP 振荡器使能控制位
1 = 使能 Timer1 的辅助振荡器电路
0 = 禁止 Timer1 的辅助振荡器电路
bit 2
T1SYNC:Timer1 外部时钟输入同步控制位
TMR1CS<1:0> = 1X:
1 = 不同步外部时钟输入
0 = 将外部时钟输入与系统时钟 (FOSC)同步
TMR1CS<1:0> = 0X:
该位被忽略。当 TMR1CS<1:0> = 1X 时, Timer1 使用内部时钟。
bit 1
未实现:读为 0
bit 0
TMR1ON:Timer1 使能位
1 = 使能 Timer1
0 = 停止 Timer1
清零 Timer1 门控触发器
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 175 页
PIC16(L)F1512/3
18.12 Timer1 门控控制寄存器
Timer1 门控控制寄存器 (T1GCON)(如寄存器 18-2
所示)用于控制 Timer1 门控。
寄存器 18-2:
T1GCON:TIMER1 门控控制寄存器
R/W-0/u
R/W-0/u
R/W-0/u
R/W-0/u
R/W/HC-0/u
R-x/x
TMR1GE
T1GPOL
T1GTM
T1GSPM
T1GGO/
DONE
T1GVAL
R/W-0/u
R/W-0/u
T1GSS<1:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
HC = 硬件清零位
bit 7
TMR1GE:Timer1 门控使能位
如果 TMR1ON = 0:
该位被忽略
如果 TMR1ON = 1:
1 = Timer1 计数由 Timer1 门控功能控制
0 = Timer1 计数与 Timer1 门控功能无关
bit 6
T1GPOL:Timer1 门控极性位
1 = Timer1 门控为高电平有效 (当门控信号为高电平时 Timer1 计数)
0 = Timer1 门控为低电平有效 (当门控信号为低电平时 Timer1 计数)
bit 5
T1GTM:Timer1 门控翻转模式位
1 = 使能 Timer1 门控翻转模式
0 = 禁止 Timer1 门控翻转模式并清除触发器翻转
Timer1 门控单稳态触发器在每个上升沿翻转。
bit 4
T1GSPM:Timer1 门控单脉冲模式位
1 = 使能 Timer1 门控单脉冲模式,控制 Timer1 门控
0 = 禁止 Timer1 门控单脉冲模式
bit 3
T1GGO/DONE:Timer1 门控单脉冲采集状态位
1 = Timer1 门控单脉冲采集就绪,正在等待一个边沿
0 = Timer1 门控单脉冲采集已经结束或尚未开始
bit 2
T1GVAL:Timer1 门控当前状态位
表示可提供给 TMR1H:TMR1L 的 Timer1 门控信号的当前状态。
不受 Timer1 门控使能 (TMR1GE)的影响。
bit 1-0
T1GSS<1:0>:Timer1 门控源选择位
00 = Timer1 门控引脚
01 = Timer0 溢出输出
10 = Timer2 与 PR2 匹配信号
11 = 保留
DS41624A_CN 第 176 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 18-5:
与 TIMER1 相关的寄存器汇总
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
寄存器
所在页
ANSELB
—
—
ANSB5
ANSB4
ANSB3
ANSB2
ANSB1
ANSB0
113
CCP1CON
—
—
DC1B<1:0>
CCP1M<3:0>
CCP2CON
—
—
DC2B<1:0>
CCP2M<3:0>
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
TMR1H
16 位 TMR1 计数最高有效字节的保持寄存器
171*
TMR1L
16 位 TMR1 计数最低有效字节的保持寄存器
171*
名称
INTCON
TRISB
TRISB7
TRISB6
TRISB5
TRISB4
TRISC
TRISC7
TRISC6
TRISC5
TRISC4
T1CON
T1GCON
图注:
*
TMR1CS<1:0>
TMR1GE
T1GPOL
T1CKPS<1:0>
T1GTM
TRISB3
TRISB2
TRISB1
TRISC3
TRISC2
T1OSCEN T1SYNC
T1GSPM
T1GGO/
DONE
T1GVAL
244
244
TRISB0
113
TRISC1
TRISC0
116
—
TMR1ON
T1GSS<1:0>
175
176
— = 未实现位,读为 0。 Timer1 模块不使用阴影单元。
提供寄存器信息的页。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 177 页
PIC16(L)F1512/3
注:
DS41624A_CN 第 178 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
19.0
TIMER2 模块
Timer2 模块具有以下特性:
• 8 位定时器和周期寄存器 (分别为 TMR2 和
PR2)
• 可读写 (以上两个寄存器)
• 软件可编程的预分频器 (分频比为 1:1、 1:4、
1:16 和 1:64)
• 软件可编程的后分频器 (分频比为 1:1 至 1:16)
• TMR2 与 PR2 匹配时产生中断
• 可选择用作 MSSP 模块的移位时钟
Timer2 框图请参见图 19-1。
图 19-1:
FOSC/4
TIMER2 框图
预分频器
1:1, 1:4, 1:16, 1:64
2
复位
TMR2
比较器
相等
TMR2 输出
后分频器
1:1 至 1:16
将标志位 TMR2IF 置 1
T2CKPS<1:0>
4
PR2
T2OUTPS<3:0>
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 179 页
PIC16(L)F1512/3
19.1
Timer2 工作原理
19.3
Timer2 模块的时钟输入是系统指令时钟 (FOSC/4)。
Timer2 输出
TMR2 的未经分频的输出主要用于 CCP 模块,它用作
CCP 模块在 PWM 模式下工作时的时基。
TMR2 会从 00h 开始在每个时钟边沿递增。
还可选择将 Timer2 用作 MSSP 模块在 SPI 模式下工作
时的移位时钟源。第 20.0 节“主同步串行口(MSSP)
模块”中提供了更多信息。
4 位计数器 / 预分频器提供了对时钟输入不分频、4 分频
和 16 分频三个预分频选项。这些选项通过 T2CON 寄存
器的预分频比控制位 T2CKPS<1:0> 进行选择。在每个
时钟周期,TMR2 的值都会与周期寄存器 PR2 中的值进
行比较。当两个值匹配时,由比较器产生匹配信号作为
定时器的输出。该信号也会将 TMR2 的值在下一个周期
复位为 00h,并驱动输出计数器 / 后分频器 (见第 19.2
节 “Timer2 中断”)。
19.4
休眠期间的 Timer2 操作
在处理器处于休眠模式时,Timer2 无法工作。在处理器
处于休眠模式时,TMR2 和 PR2 寄存器的内容将保持不
变。
TMR2 和 PR2 寄存器均可直接读写。在任何器件复位
时,TMR2 寄存器都会清零,而 PR2 寄存器则初始化为
FFh。发生以下事件时,预分频器和后分频器计数器均
会清零:
•
•
•
•
•
•
•
•
•
对 TMR2 寄存器进行写操作
对 T2CON 寄存器进行写操作
上电复位 (POR)
欠压复位 (BOR)
MCLR 复位
看门狗定时器 (WDT)复位
堆栈上溢复位
堆栈下溢复位
RESET 指令
注:
19.2
写 T2CON 时 TMR2 不会清零。
Timer2 中断
Timer2 也可以产生可选的器件中断。 Timer2 输出信号
(TMR2 与 PR2 匹配时)为 4 位计数器 / 后分频器提供
输入。该计数器产生 TMR2 匹配中断,对应的中断标志
位为 PIR1 寄存器的 TMR2IF 位。可以通过将 PIE1 寄存
器的TMR2匹配中断允许位TMR2IE置1来允许该中断。
可以通过
T2CON
寄 存 器 的 后 分 频 比 控 制位
T2OUTPS<3:0> 在 16 个后分频比选项(从 1:1 至 1:16)
中选择其一。
DS41624A_CN 第 180 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
19.5
Timer2 控制寄存器
寄存器 19-1:
U-0
T2CON:TIMER2 控制寄存器
R/W-0/0
R/W-0/0
—
R/W-0/0
R/W-0/0
T2OUTPS<3:0>
R/W-0/0
TMR2ON
R/W-0/0
R/W-0/0
T2CKPS<1:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
未实现:读为 0
bit 6-3
T2OUTPS<3:0>:Timer2 输出后分频比选择位
1111 = 1:16 后分频比
1110 = 1:15 后分频比
1101 = 1:14 后分频比
1100 = 1:13 后分频比
1011 = 1:12 后分频比
1010 = 1:11 后分频比
1001 = 1:10 后分频比
1000 = 1:9 后分频比
0111 = 1:8 后分频比
0110 = 1:7 后分频比
0101 = 1:6 后分频比
0100 = 1:5 后分频比
0011 = 1:4 后分频比
0010 = 1:3 后分频比
0001 = 1:2 后分频比
0000 = 1:1 后分频比
bit 2
TMR2ON:Timer2 使能位
1 = 使能 Timer2
0 = 禁止 Timer2
bit 1-0
T2CKPS<1:0>:Timer2 时钟预分频比选择位
11 = 预分频比为 64
10 = 预分频比为 16
01 = 预分频比为 4
00 = 预分频比为 1
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 181 页
PIC16(L)F1512/3
表 19-1:
与 TIMER2 相关的寄存器汇总
名称
Bit 7
Bit 6
CCP1CON
—
—
CCP2CON
Bit 5
Bit 4
Bit 3
DC1B<1:0>
Bit 2
Bit 1
Bit 0
CCP1M<3:0>
244
—
—
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
PR2
Timer2 模块周期寄存器
INTCON
T2CON
TMR2
—
DC2B<1:0>
寄存器
所在页
CCP2M<3:0>
179*
T2OUTPS<3:0>
*
TMR2ON
T2CKPS<1:0>
181
179*
8 位 TMR2 寄存器的保持寄存器
图注:
244
— = 未实现位,读为 0。 Timer2 模块不使用阴影单元。
提供寄存器信息的页。
DS41624A_CN 第 182 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.0
主同步串行口 (MSSP)模块
20.1
主 SSP (MSSP)模块概述
主同步串行口 (MSSP)模块是用于同其他外设或单片
机 进 行 通 信 的 串 行 接 口。这 些 外 设 可 以 是 串 行
EEPROM、移位寄存器、显示驱动器和 A/D 转换器等。
MSSP 模块有以下两种工作模式:
• 串行外设接口 (Serial Peripheral Interface, SPI)
• I2C™
SPI 接口支持以下模式和特性:
•
•
•
•
•
主模式
从模式
时钟极性
从选择同步 (仅限从模式)
从器件的菊花链连接
图 20-1 给出了 SPI 接口模块的框图。
图 20-1:
MSSP 框图 (SPI 模式)
数据总线
读
写
SSPBUF 寄存器
SDI
SSPSR 寄存器
bit 0
SDO
SS
SS
移位
时钟
控制
使能
2 种时钟选择
(CKP 和 CKE)
边沿
选择
SSPM<3:0>
4
SCK
TMR2 输出
2
)
预分频器 TOSC
4, 16, 64
边沿
选择
波特率
发生器
(SSPADD)
TRIS 位
 2012 Microchip Technology Inc.
(
初稿
DS41624A_CN 第 183 页
PIC16(L)F1512/3
I2C 接口支持以下模式和特性:
•
•
•
•
•
•
•
•
•
•
•
•
•
主模式
从模式
不应答字节 (从模式)
有限多主器件支持
7 位和 10 位寻址模式
启动和停止中断
中断屏蔽
时钟延长
总线冲突检测
广播呼叫地址匹配
地址掩码
地址保持和数据保持模式
可选的 SDA 保持时间
图 20-2 给出了主模式下 I2C 接口模块的框图。图 20-3
给出了从模式下 I2C 接口模块的框图。
图 20-2:
MSSP 框图 (I2C™ 主模式)
内部
数据总线
读
[SSPM 3:0]
写
SSPBUF
波特率
发生器
(SSPADD)
SDA
移位
时钟
SDA 输入
SCL 输入
总线冲突
DS41624A_CN 第 184 页
启动位检测
停止位检测
写冲突检测
时钟仲裁
发送 / 接收结束时的
状态计数器
地址匹配检测
初稿
(延迟时钟源)
启动位、停止位
或应答产生
(SSPCON2)
时钟仲裁 /BCOL 检测
接收使能(RCEN)
SCL
LSb
时钟控制
SSPSR
MSb
置 1/ 复位: S、P、SSPSTAT、WCOL 和 SSPOV
复位 SEN 和 PEN(SSPCON2)
将 SSPIF 和 BCLIF 置 1
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 20-3:
MSSP 框图 (I2C™ 从模式)
内部
数据总线
读
写
SSPBUF 寄存器
SCL
移位
时钟
SSPSR 寄存器
SDA
LSb
MSb
SSPMSK 寄存器
匹配检测
地址匹配
SSPADD 寄存器
启动位和
停止位检测
 2012 Microchip Technology Inc.
初稿
置 1 或复位
S 位和 P 位
(SSPSTAT 寄存器)
DS41624A_CN 第 185 页
PIC16(L)F1512/3
20.2
SPI 模式概述
存器的 LSb 的同时,从器件也会从其移位寄存器中发出
MSb (在其 SDO 引脚上),而主器件也会读取该位并
将它保存为其移位寄存器的 LSb。
串行外设接口 (SPI)总线是以全双工模式工作的同步
串行数据通信总线。器件在由主器件启动通信的主 / 从
器件环境中进行通信。从器件通过称为从选择的片选进
行控制。
在移出 8 位之后,主器件和从器件就交换了寄存器值。
如果需要交换更多数据,移位寄存器中会装入新数据,
并重复该过程。
SPI 总线规定了 4 种信号连接:
•
•
•
•
数据是否有意义 (无效数据),取决于应用软件。这就
导致以下三种数据传输情形:
串行时钟 (Serial Clock, SCK)
串行数据输出 (Serial Data Out, SDO)
串行数据输入 (Serial Data In, SDI)
从选择 (Slave Select, SS)
• 主器件发送有用数据,从器件发送无效数据。
• 主器件发送有用数据,从器件发送有用数据。
• 主器件发送无效数据,从器件发送有用数据。
图 20-1 给出了 MSSP 模块在 SPI 模式下工作时的框图。
数据发送可能会需要不定数量的时钟周期。在没有更多
数据需要发送时,主器件会停止发送时钟信号,并取消
选择从器件。
SPI 总线工作时使用单个主器件和一个或多个从器件。
使用多个从器件时,从主器件到每个从器件都需要独立
的从选择连接。
每个与总线连接、但未被通过其从选择线选择的从器
件,都必须忽略时钟和数据发送信号,并且不能发送自
己的任何数据。
图 20-4 给出了主器件和多个从器件之间的典型连接。
主器件每次仅选择一个从器件。大多数从器件都具有三
态输出,所以在未选择它们时,它们的输出信号会看起
来好像与总线断开。
数据发送涉及到两个移位寄存器,它们大小都为 8 位,
一个在主器件中,一个在从器件中。不论是对于主器件
还 是 从 器 件,数 据 总 是 每 次 移 出 一 位,最 高 有 效 位
(Most Significant bit,MSb)先移出。与此同时,新的
最低有效位 (Least Significant bit, LSb)会被移入同
一寄存器。
图20-5给出了分别配置为主器件和从器件的两个处理器
之间的典型连接。
数据在所设定的时钟边沿从两个移位寄存器移出,并在
相反的时钟边沿锁存。
主器件在与从器件的 SDI 输入引脚连接的 SDO 输出引
脚上发出信息,并由从器件 SDI 输入引脚接收该信息。
从器件在与主器件的 SDI 输入引脚连接的 SDO 输出引
脚上发出信息,并由主器件 SDI 输入引脚接收该信息。
要开始进行通信,主器件需要先送出时钟信号。主器件
和从器件应配置为相同的时钟极性。
主器件会通过从它的移位寄存器中发出 MSb 而启动数
据发送。从器件会从同一条线上读取该位,并将它保存
到其移位寄存器的 LSb 单元中。
在每个 SPI 时钟周期中,会发生全双工数据发送。这意
味着,在主器件从其移位寄存器中发送出 MSb (在其
SDO 引脚上),从器件读取该位并将它保存为其移位寄
DS41624A_CN 第 186 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 20-4:
SPI 主器件和多个从器件连接
SPI 主器件
SCK
SCK
SDO
SDI
通用 I/O
通用 I/O
SDI
通用 I/O
SCK
SDO
SPI 从器件
#1
SS
SDI
SDO
SPI 从器件
#2
SS
SCK
SDI
SDO
SPI 从器件
#3
SS
20.2.1
SPI 模式寄存器
MSSP 模块有 6 个寄存器用于 SPI 模式操作。这些寄存
器是:
•
•
•
•
•
•
MSSP 状态寄存器 (SSPSTAT)
MSSP 控制寄存器 1 (SSPCON1)
MSSP 控制寄存器 3 (SSPCON3)
MSSP 数据缓冲寄存器 (SSPBUF)
MSSP 地址寄存器 (SSPADD)
MSSP 移位寄存器 (SSPSR)(不可直接访问)
SSPCON1 和 SSPSTAT 是 SPI 模式操作下的控制寄存
器 和 状 态 寄 存 器。 SSPCON1 寄 存 器 是 可读写的。
SSPSTAT 的低 6 位是只读的。SSPSTAT 的高 2 位是可
读写的。
在 SPI 主模式下,SSPADD 中可以装入在波特率发生器
中使用的值。关于波特率发生器的更多信息,请参见第
20.7 节 “波特率发生器”。
SSPSR 是 用 来 将 数 据 移 入 和 移 出 的 移 位寄存器。
SSPBUF 用于间接访问 SSPSR 寄存器。SSPBUF 是缓
冲寄存器,可用于数据字节的写入或读出。
在接收操作中,SSPSR 和 SSPBUF 共同构成一个缓冲
接收器。当 SSPSR 接收到一个完整字节时,字节会被
传输到 SSPBUF 中,并且 SSPIF 中断标志会置 1。
在发送期间, SSPBUF 不是可缓冲的。对 SSPBUF 的
写操作将同时写入 SSPBUF 和 SSPSR。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 187 页
PIC16(L)F1512/3
20.2.2
SPI 模式操作
MSSP 由一个发送 / 接收移位寄存器(SSPSR)和一个
缓冲寄存器 (SSPBUF)组成。 SSPSR 将数据移入 /
移出器件,先移位 MSb。 SSPBUF 会一直保存先前写
入 SSPSR 的数据,直到被接收数据就绪为止。一旦 8
位数据接收完毕,该字节就被移入 SSPBUF 寄存器。然
后,SSPSTAT 寄存器的缓冲区满检测位 BF 和中断标志
位 SSPIF 被置 1。这种双重缓冲数据接收方式 (通过
SSPBUF)允许在读取刚接收的数据之前就开始接收下
一个字节。当 SSPBUF 寄存器正在发送 / 接收数据时,
对它写入的任何数据都将被忽略,同时,SPCON1 寄存
器的写冲突检测位 WCOL 被置 1。用户软件必须将
WCOL 位清零才能使以后对 SSPBUF 寄存器的写入成
功完成。
初始化 SPI 时需要指定几个选项。可以通过编程相应的
控制位 (SSPCON1<5:0> 和 SSPSTAT<7:6>)来指定
这些选项。这些控制位用于指定以下选项:
•
•
•
•
•
•
•
主模式 (SCK 作为时钟输出)
从模式 (SCK 作为时钟输入)
时钟极性 (SCK 的空闲状态)
数据输入采样阶段 (数据输出时间的中间或末尾)
时钟边沿 (在 SCK 的上升沿 / 下降沿输出数据)
时钟速率 (仅限主模式)
从选择模式 (仅限从模式)
为确保应用软件能接收有效数据,在下一个要发送的数
据字节写入 SSPBUF 之前,读取 SSPBUF 中现有的数
据。 SSPSTAT 寄存器的缓冲区满位 BF 用于指示何时
SSPBUF 装入了接收到的数据(发送完成)。SSPBUF
中的数据被读取后, BF 位被清零。如果 SPI 仅作为一
个发送器,则不必理会该数据。一般来说,MSSP 中断
用于检测发送 / 接收何时结束。如果不打算使用中断方
法,用软件查询的方法同样可确保不会发生写冲突。
要使能串行口,SSPCON1寄存器的SSP使能位SSPEN
必须置 1。要复位或重新配置 SPI 模式,先将 SSPEN
位 清 零,重 新 初 始 化 SSPCON 寄 存 器,然 后 再将
SSPEN 位置 1。这会将 SDI、 SDO、 SCK 和 SS 引脚
配置为串口引脚。要将上述引脚用于串口功能,应对它
们的数据方向位 (在 TRIS 寄存器中)进行如下设置:
•
•
•
•
•
对于 SDI,必须将相应的 TRIS 位置 1
对于 SDO,必须将相应的 TRIS 位清零
对于 SCK (主模式),必须将相应的 TRIS 位清零
对于 SCK (从模式),必须将相应的 TRIS 位置 1
对于 SS,必须将相应的 TRIS 位置 1
SSPSR 不能直接读写,只能通过寻址 SSPBUF 寄存器
来进行访问。此外, SSPSTAT 寄存器用于指示各种状
态条件。
对 于 不 需 要 的 串口 功 能,可 通 过将 相 应 的 数据 方 向
(TRIS)寄存器编程为相反值来改写。
图 20-5:
SPI 主 / 从器件连接
SPI 主器件 SSPM<3:0> = 00xx
= 1010
SPI 从器件 SSPM<3:0> = 010x
SDI
SDO
串行输入缓冲区
(BUF)
串行输入缓冲区
(SSPBUF)
MSb
LSb
SCK
通用 I/O
处理器 1
DS41624A_CN 第 188 页
SDO
SDI
移位寄存器
(SSPSR)
串行时钟
从选择
(可选)
初稿
移位寄存器
(SSPSR)
MSb
LSb
SCK
SS
处理器 2
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.2.3
SPI 主模式
通过适当地设定SSPCON1寄存器的CKP位和SSPSTAT
寄存器的 CKE 位,可以选择时钟极性。图 20-6、图 20-9
和图 20-10 给出了 SPI 通信的波形图,其中 MSb 先发
送。在主模式下, SPI 时钟速率 (比特率)可由用户编
程为以下几种之一:
因为主器件控制 SCK 线,所以它可以在任意时刻启动
数据传输。主器件根据软件协议确定从器件 (图 20-5
中的处理器 2)在何时广播数据。
在主模式下,数据一写入 SSPBUF 寄存器就开始发送 /
接收。如果只打算将 SPI 作为接收器,则可以禁止 SDO
输出 (将其编程为输入)。 SSPSR 寄存器按所设定的
时钟速率,连续移入 SDI 引脚上的信号。每接收到一个
字节,就将其装入 SSPBUF 寄存器,就像接收到普通字
节一样 (中断和状态位相应置 1)。
•
•
•
•
•
FOSC/4 (或 TCY)
FOSC/16 (或 4 * TCY)
FOSC/64 (或 16 * TCY)
Timer2 输出 /2
Fosc/(4 * (SSPADD + 1))
图 20-6 给出了主模式的波形图。
当 CKE 位置 1 时, SDO 数据在 SCK 上出现时钟边沿
前一直有效。图中所示的输入采样的变化由 SMP 位的
状态反映。图中给出了将接收到的数据装入 SSPBUF 的
时刻。
图 20-6:
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)
bit 0
bit 7
输入
采样
(SMP = 1)
SSPIF
SSPSR 到
SSPBUF
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 189 页
PIC16(L)F1512/3
20.2.4
20.2.5
SPI 从模式
从选择同步
在从模式下,当 SCK 上出现外部时钟脉冲时发送和接
收数据。锁存最后一位数据之后,SSPIF 中断标志位会
置 1。
从选择也可以用于对通信进行同步。从选择线会一直保
持高电平,直到主器件准备好进行通信。当从选择线下
拉为低电平时,从器件就知道新的数据发送正在启动。
在 SPI 从模式下使能该模块前,时钟线必须处于相应的
空闲状态。可通过读 SCK 引脚来查看时钟线。空闲状态
由 SSPCON1 寄存器的 CKP 位决定。
如果从器件未能正确地接收到通信,它会在从选择线恢
复为高电平状态、数据发送结束时发生复位。然后,从
器件会在从选择线再次下拉为低电平时准备好接收新的
发送数据。如果不使用从选择线,则会存在从器件最终
与主器件脱离同步的风险。如果从器件丢失了某个位,
则在之后的数据发送中,它将总是偏离一位。使用从选
择线可以让从器件和主器件在每次发送开始时相互对
齐。
在从模式下,外部时钟由 SCK 引脚上的外部时钟源提
供。外部时钟必须满足电气规范中规定的高电平和低电
平的最短时间要求。
在休眠模式下,从器件仍可发送 / 接收数据。移位寄存
器通过 SCK 引脚输入提供时钟,当接收到一个字节时,
器件会产生中断。如果允许发生中断,器件会从休眠模
式唤醒。
20.2.4.1
SS 引脚允许器件工作于同步从模式。SPI 必须处于从模
式,并使能 SS 引脚控制(SSPCON1<3:0> = 0100)。
当 SS 引脚为低电平时,使能数据的发送和接收,同时
驱动 SDO 引脚。
菊花链配置
SPI 总线有时会采用菊花链配置进行连接。第一个从器
件的输出与第二个从器件的输入连接,第二个从器件的
输出与第三个从器件的输入连接,如此类推。最后一个
从器件的输出与主器件的输入连接。在第二组时钟脉冲
期间,每个从器件会送出在第一组时钟脉冲期间所接收
数据的精确副本。整个链充当一个很大的通信移位寄存
器。菊花链功能只需要从主器件引出一条从选择线。
当SS引脚变为高电平时,即使是在字节的发送过程中,
也不再驱动 SDO 引脚,而是将其变成悬空输出状态。
根据具体应用,可能需要使用外部上拉 / 下拉电阻。
注
1: 当 SPI 处于从模式且使能 SS 引脚控制
(SSPCON1<3:0> = 0100)时,如果 SS
引脚设置为 VDD, SPI 模块将会复位。
图 20-7 给出了在 SPI 模式下工作时典型菊花链连接的
框图。
2:当 SPI 用于从模式且 CKE 置 1 时,用户必
须使能 SS 引脚控制。
在菊花链配置中,从器件只需要总线上最近的一个字
节。将 SSPCON3 寄存器的 BOEN 位置 1 时,即使尚
未读取前一个字节,也允许数据写入 SSPBUF 寄存器。
这使软件可以忽略不适用于它的数据。
3:工作于 SPI 从模式时,SSPSTAT 寄存器的
SMP 位必须保持清零。
DS41624A_CN 第 190 页
当 SPI 模块复位时,位计数器被强制为 0。这通过强制
将 SS 引脚拉为高电平或将 SSPEN 位清零来实现。
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 20-7:
SPI 菊花链连接
SPI 主器件
SCK
SCK
SDO
SDI
通用 I/O
SDI
SDO
SPI 从器件
#1
SS
SCK
SDI
SDO
SPI 从器件
#2
SS
SCK
SDI
SDO
SPI 从器件
#3
SS
图 20-8:
从选择同步波形图
SS
SCK
(CKP = 0
CKE = 0)
SCK
(CKP = 1
CKE = 0)
写入
SSPBUF
移位寄存器 SSPSR
和位计数被复位
SSPBUF 到
SSPSR
SDO
bit 7
bit 6
bit 7
SDI
bit 6
bit 0
bit 0
bit 7
bit 7
输入
采样
SSPIF
中断标志
SSPSR 到
SSPBUF
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 191 页
PIC16(L)F1512/3
图 20-9:
SPI 模式波形图 (从模式, CKE = 0)
SS
可选
SCK
(CKP = 0
CKE = 0)
SCK
(CKP = 1
CKE = 0)
写入
SSPBUF
有效
SDO
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
SDI
bit 0
bit 7
输入
采样
SSPIF
中断标志
SSPSR 到
SSPBUF
写冲突
检测有效
图 20-10:
SPI 模式波形图 (从模式, CKE = 1)
SS
不可选
SCK
(CKP = 0
CKE = 1)
SCK
(CKP = 1
CKE = 1)
写入
SSPBUF
有效
SDO
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
SDI
bit 0
bit 7
输入
采样
SSPIF
中断
标志
SSPSR 到
SSPBUF
写冲突
检测有效
DS41624A_CN 第 192 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.2.6
休眠模式下的 SPI 操作
在 SPI 主模式下,当选择休眠模式时,所有模块的时钟
都将暂停,并且在器件被唤醒前,发送 / 接收将保持此
暂停状态。器件返回到运行模式之后,模块将恢复发送
和接收数据。
在 SPI 主模式下,模块时钟速度可能与全功耗模式下的
不同;处于休眠模式时,所有时钟都暂停。
在 MSSP 时钟速度远高于系统时钟时,用户需要特别小
心。
在 SPI 从模式下, SPI 发送 / 接收移位寄存器与器件异
步工作。这可使器件置于休眠模式下,仍能将数据移入
SPI 发送 / 接收移位寄存器。当接收到全部 8 位数据时,
MSSP 中断标志位将置 1,并且如果允许中断的话,将
唤醒器件。
在从模式下,当允许 MSSP 中断时,在主器件发送完数
据时, MSSP 中断会将控制器从休眠状态唤醒。
如果不想从休眠模式退出,应该禁止 MSSP 中断。
表 20-1:
与 SPI 操作相关的寄存器汇总
Bit 7
名称
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
寄存器
所在页
ANSELA
—
—
ANSA5
—
ANSA3
ANSA2
ANSA1
ANSA0
109
ANSELC
ANSC7
ANSC6
ANSC5
ANSC4
ANSC3
ANSC2
—
—
116
APFCON
—
—
—
—
—
—
SSSEL
CCP2SEL
106
INTCON
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
SSPBUF
187*
同步串行口接收缓冲 / 发送寄存器
SSPCON1
WCOL
SSPOV
SSPEN
CKP
SSPM<3:0>
231
SSPCON3
ACKTIM
PCIE
SCIE
BOEN
SDAHT
SBCDE
AHEN
DHEN
233
SSPSTAT
SMP
CKE
D/A
P
S
R/W
UA
BF
231
TRISA
TRISA7
TRISA6
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
108
TRISC
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
115
图注:
*
— = 未实现位,读为 0。 SPI 模式下的 MSSP 不使用阴影单元。
提供寄存器信息的页。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 193 页
PIC16(L)F1512/3
20.3
I2C 模式概述
I2C 主 / 从器件连接
图 20-11:
I2C 总线是一种多主器件串行数据通信总线。器件在由
主器件启动通信的主 / 从器件环境中进行通信。从器件
通过寻址进行控制。
VDD
SCL
I2C 总线规定了两种信号连接:
• 串行时钟 (SCL)
• 串行数据 (SDA)
图 20-2 和图 20-3 给出了 MSSP 模块在 I C 模式下工作
时的框图。
从器件
SDA
SCL 和 SDA 连接都是双向的漏极开路线路,它们都需
要使用用于电源电压的上拉电阻。线路下拉为地电压
时,信号视为逻辑 0 ;线路保持悬空时,信号视为逻辑
1。
SDA
应答位 (ACK)是低电平有效信号,它会将 SDA 线保
持为低电平,用于指示发送器,从器件已接收到发送数
据,并已准备好接收更多数据。
图 20-11 给出了分别配置为主器件和从器件的两个处理
器之间的典型连接。
数据位的跳变总是在 SCL 线保持低电平时执行。在 SCL
线保持高电平时发生的跳变用于指示启动位和停止位。
2C
总线工作时可以有一个或多个主器件,以及一个或
I
多个从器件。
如果主器件希望向从器件写入数据,则它会重复发送一
个字节的数据,而从器件则在接收每个字节之后使用
ACK 位进行响应。在该示例中,主器件处于主发送模
式,从器件处于从接收模式。
对于给定器件,有 4 种可能的工作模式:
• 主发送模式
(主器件向从器件发送数据)
• 主接收模式
(主器件从从器件接收数据)
• 从发送模式
(从器件向主器件发送数据)
• 从接收模式
(从器件从主器件接收数据)
如果主器件希望从从器件读取数据,则它会从从器件重
复接收一个字节的数据,并在接收每个字节之后使用
ACK 位进行响应。在该示例中,主器件处于主接收模
式,从器件处于从发送模式。
在传输最后一个数据字节之后,主器件可以通过发送停
止位来结束数据发送。如果主器件处于接收模式,它会
发送停止位来代替最后一个 ACK 位。停止位由 SCL 线
保持为高电平时 SDA 线的由低至高跳变来指示。
要开始进行通信,主器件需要以主发送模式启动。主器
件送出启动位,后面跟随它希望进行通信的从器件的地
址字节。后面再跟随单个读 / 写位,该位决定主器件是
向从器件发送数据还是从从器件接收数据。
在某些情况下,主器件可能希望维持对总线的控制,并
重新启动另一次数据发送。如果是这样,主器件可以在
它处于接收模式时,发送另一个启动位来代替停止位或
最后一个 ACK 位。
如果总线上存在所请求的从器件,从器件会使用应答位
(也称为 ACK)进行响应。然后,主器件会以发送模式
或接收模式继续通信,从器件则以互补模式(分别为接
收模式或发送模式)继续通信。
I2C 总线规定了三种报文协议:
• 主器件向从器件写数据的单一报文。
• 主器件从从器件读数据的单一报文。
• 主器件对一个或多个从器件启动至少两次写操作或
读操作,或者读写操作组合的组合报文。
启动位由 SCL 线保持为高电平时 SDA 线的由高至低跳
变来指示。地址和数据字节随后送出,先发送最高有效
位 (MSb)。在主器件希望从从器件读取数据时,送出
的读 / 写位为逻辑 1,在主器件希望向从器件写入数据
时,该位为逻辑 0。
DS41624A_CN 第 194 页
VDD
主器件
2
SCL
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.3.2
在一个器件发送逻辑 1 (或将线路保留悬空),第二个
器件发送逻辑 0 (或将线路保持为低电平)时,第一个
器件会检测到线路不为逻辑 1。这种检测在用于 SCL 线
时,称为时钟延长。时钟延长为从器件提供了一种控制
数据流的机制。这种检测在用于 SDA 线时,称为仲裁。
仲裁可以确保任意时刻只有一个主器件在进行通信。
20.3.1
仲裁
每个主器件都必须监视总线上是否出现启动位和停止
位。如果器件检测到总线正忙,则在总线恢复为空闲状
态之前,它无法开始新的报文。
但是,可能会有两个主器件尝试同时或近乎同时启动数
据发送。发生这种情况时,将会开始仲裁过程。每个发
送器会检查 SDA 数据线的电平,并将它与自己期望的
电平进行比较。发现两个电平不匹配的第一个发送器会
在仲裁中失败,必须停止在 SDA 线上发送数据。
时钟延长
在从器件尚未完成数据处理时,它可以通过时钟延长这
一过程来延迟更多数据的传输。寻址到的从器件可以在
接收或发送一位数据之后将 SCL 时钟线保持为低电平,
指示它尚未准备好继续。与从器件进行通信的主器件将
会尝试将 SCL 线拉高,以传输下一位数据,但它会检测
到时钟线尚未被释放。由于 SCL 连接是漏极开路,所以
从器件可以一直将线路保持为低电平,直到它准备好继
续通信为止。
例如,如果一个发送器将 SDA 线保持为逻辑 1 (保留
悬空),而第二个发送器将它保持为逻辑 0 (下拉为低
电平),则结果是 SDA 线将为低电平。那么,第一个发
送器会发现线路电平与期望电平不同,并断定有另一个
发送器正在进行通信。
发现电平不同的第一个发送器将是仲裁失败的发送器,
必须停止驱动 SDA 线。如果该发送器同时也是主器件,
则它还必须停止驱动 SCL 线。然后,它可以在尝试重新
启动数据发送之前监视线路上是否出现停止条件。与此
同时,另一个未发现 SDA 线的期望电平与实际电平不
同的器件将继续原来的数据发送。它可以无需进行任何
复杂处理,因为到目前为止,发送条件与所期望的完全
相同,没有其他发送器对报文产生干扰。
通过时钟延长,无法与发送器保持同速的接收器可以控
制传入数据流。
当主器件对多个从器件进行寻址时,也会对从发送模式
进行仲裁,但这种情况较少见。
如果有两个主器件在地址阶段向两个不同的从器件发送
报文,则发送较小从器件地址的主器件总是会在仲裁中
获胜。当两个主器件向同一从器件地址发送报文时,地
址有时会指向多个从器件,仲裁过程必须继续进入到数
据阶段。
仲裁通常极少发生,但它是正确支持多主器件所必需的
过程。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 195 页
PIC16(L)F1512/3
20.4
I2C 模式操作
表 20-2:
术语
所有 MSSP I2C 通信都是针对字节的,并且会先移出
MSb。有 6 个 SFR 寄存器和 2 个中断标志用作模块与
PIC® 单片机和用户软件的接口。模块通过两个引脚
SDA 和 SCL 来与其他外部 I2C 器件进行通信。
20.4.1
将数据移送到总线上的器件。
从总线上移入数据的器件。
启动数据传输、产生时钟信号和终
止数据传输的器件。
从器件
主器件寻址到的器件。
多主器件
有多个器件可以启动数据传输的总
线。
仲裁
用于确保每次只有一个主器件控制
总线的过程。仲裁获胜可以确保报
文不会被损坏。
同步
用于将总线上两个或更多器件的时
钟进行同步的过程。
空闲
没有任何主器件在控制总线,并且
SDA 和 SCL 线均为高电平。
有效
每当有一个或多个主器件在控制总
线时。
可寻址的从器件 已接收到匹配地址、并且正在由主
器件提供时钟的从器件。
匹配地址
送入从器件中、并与 SSPADD 中
的存储值匹配的地址字节。
写请求
从器件接收到 R/W 位清零的匹配
地址,并已准备好移入数据。
读请求
主器件发送 R/W 位置 1 的地址字
节,表示要求从器件在时钟控制下
将数据移出。从器件在接收到该地
址字节后会立即移出所有数据字
节,直到发生重复启动或停止条
件。
时钟延长
总线上的器件通过将 SCL 保持为
低电平来暂停通信的时间。
总线冲突
每当模块进行输出并期望 SDA 线
为高电平,却采样到 SDA 线为低
电平时。
字节格式
时钟信号 SCL 由主器件提供。在 SCL 信号为低电平时,
数据可以有效地更改,并且在时钟上升沿进行采样。在
SCL 线为高电平时,SDA 线上的电平变化定义总线上的
一些特殊条件,以下会对此进行说明。
I2C 术语的定义
在 I2C 通信的描述中存在一些用语和术语,它们具有特
定于 I2C 的定义。下面定义了词语的用法,在本文档其
他部分中,将不加说明地使用它们。该表根据 Philips
I2C 规范改写。
20.4.3
SDA 和 SCL 引脚
在 SSPEN 位置 1 的情况下选择任意 I2C 模式时, SCL
和 SDA 引脚将会强制设为漏极开路。用户应通过将相
应的 TRIS 位置 1 来将这些引脚设置为输入。
注:
20.4.4
在使能 I2C 模式时,数据将设为输出 0。
SDA 保持时间
SDA 引脚的保持时间通过 SSPCON3 寄存器的 SDAHT
位进行选择。保持时间是 SDA 在 SCL 的下降沿之后保
持有效的时间。将 SDAHT 位置 1 可以选择最低 300 ns
的较长保持时间,这对于电容较大的总线会有帮助。
DS41624A_CN 第 196 页
说明
发送器
接收器
主器件
I2C 中的所有通信都采用 9 位形式。从主器件向从器件
(或者反之)发送一个字节之后,将会送回一个应答位。
在 SCL 线第 8 个下降沿之后,在 SDA 上输出数据的器
件会将该引脚改为输入,并在下一个时钟脉冲读入应答
值。
20.4.2
I2C 总线术语
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.4.5
20.4.7
启动条件
I2C 规范将启动条件定义为在 SCL 线为高电平时,SDA
从高电平变为低电平状态。启动条件总是由主器件产
生,指示总线从空闲状态变为有效状态。图 20-12 给出
了启动和停止条件的波形图。
重复启动条件在每次停止条件有效的时候有效。如果主
器件希望在终止当前传输之后仍占用总线,主器件可以
发出重复启动条件。重复启动对从器件产生的影响与启
动条件相同,即复位所有从器件逻辑并使之准备随时钟
移入地址。主器件可以寻址同一个或另一个从器件。
如果模块在将 SDA 线置为低电平之前采样到 SDA 线为
低电平,则会在产生启动条件时发生总线冲突。这一点
不符合I2C规范,该规范规定启动时不能发生总线冲突。
20.4.6
在 10 位寻址从模式下,要从寻址到的从器件中随时钟
移出数据,主器件需要产生重复启动条件。从器件被完
全寻址 (高地址字节和低地址字节均匹配)之后,主器
件可以发出重复启动条件和 R/W 位置 1 的高地址字节。
然后,从器件逻辑会采用该时钟,并准备随时钟移出数
据。
停止条件
停止条件定义为在 SCL 线为高电平时, SDA 线从低电
平变为高电平状态。
注:
重复启动条件
在 10 位模式下,与 R/W 清零的地址字节完全匹配后,
前一次匹配标志会置 1 并保持置 1。在产生停止条件之
前, R/W 清零的高地址或高地址匹配都会失败。
在停止条件生效之前,必须至少出现一个
SCL 低电平时间,因此,如果 SDA 线变为低
电平然后再次变为高电平,而 SCL 线保持高
电平,则只会检测到启动条件。
20.4.8
启动 / 停止条件中断屏蔽
SSPCON3 寄存器的 SCIE 和 PCIE 位可以用于允许在
通常不支持中断功能的从模式下产生中断。对于已允许
在检测到启动和停止条件时产生中断的从模式,这两位
没有任何作用。
图 20-12:
I2C 启动和停止条件
SDA
SCL
S
P
允许改变数据
允许改变数据
启动条件
图 20-13:
停止条件
I2C 重复启动条件
Sr
允许改变数据
允许改变数据
重复启动条件
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 197 页
PIC16(L)F1512/3
20.4.9
20.5
应答序列
在 I2C 中,所有传输字节的第 9 个 SCL 脉冲都专门用作
应答信号。它使接收器件可以通过将 SDA 下拉为低电
平来响应发送器。发送器在该时间内必须释放对线路的
控制,以移入响应信号。应答 (ACK)是低电平有效信
号,它会将 SDA 线下拉为低电平,用于指示发送器器
件已接收到发送数据并已准备好接收更多数据。
I2C 从模式操作
MSSP 从模式可以在 4 种模式下工作,这些模式通过
SSPCON1 寄存器的 SSPM 位进行选择。这些模式可以
分为 7 位和 10 位寻址模式。10 位寻址模式的工作方式
与 7 位寻址模式相同,只是在处理较大地址时需要一些
额外的开销。
带启动位和停止位中断的模式的工作方式与其他模式相
同,只是在检测到启动、重复启动或停止条件时,另外
会将 SSPIF 置 1。
ACK 的结果会被放入 SSPCON2 寄存器的 ACKSTAT 位
中。
当 AHEN 和 DHEN 位置 1 时,从器件软件允许用户设
置要回送到发送器的 ACK 值。用户可以通过置 1/ 清零
SSPCON2 寄存器的 ACKDT 位来决定响应。
20.5.1
从模式地址
SSPADD 寄存器 (寄存器 20-6)包含从模式地址。在
启动或重复启动条件之后接收到的第一个字节将与该寄
存器中的存储值进行比较。如果字节匹配,则值会被装
入 SSPBUF 寄存器,并产生中断。如果值不匹配,则模
块会进入空闲状态,并且不会向软件指示是否发生了什
么情况。
如果 SSPCON3 寄存器的 AHEN 和 DHEN 位清零,从
器件硬件会产生 ACK 响应。
有一些条件下,从器件不会发送 ACK。如果在接收到数
据字节时, SSPSTAT 寄存器的 BF 位或 SSPCON1 寄
存器的 SSPOV 位置 1。
SSP 掩码寄存器(寄存器 20-5)会影响地址匹配过程。
更多信息,请参见第 20.5.9 节 “SSP 掩码寄存器”。
对模块进行寻址时,在总线上的第 8 个 SCL 下降沿之
后,SSPCON3 寄存器的 ACKTIM 位会置 1。ACKTIM
位指示有效总线的应答时间。 ACKTIM 状态位仅在
AHEN 位或 DHEN 位使能时有效。
20.5.1.1
I2C 从器件 7 位寻址模式
在 7 位寻址模式下,在确定地址是否匹配时,所接收数
据字节的 LSb 会被忽略。
20.5.1.2
I2C 从器件 10 位寻址模式
在 10 位寻址模式下,接收到的第一个字节将与二进制
值 1 1 1 1 0 A9 A8 0 进行比较。 A9 和 A8 是 10
位地址的两个 MSb,存储在 SSPADD 寄存器的 bit 2 和
bit 1 中。
在应答高字节之后,UA 位会置 1,SCL 会保持低电平,
直到用户使用低地址更新 SSPADD 为止。在低地址字
节随时钟移入之后,全部 8 位将与 SSPADD 中的低地
址值进行比较。即使地址不匹配,SSPIF 和 UA 也会置
1,SCL 会保持低电平,直到 SSPADD 发生更新可再次
接收高字节为止。当 SSPADD 发生更新时,UA 位会被
清零。这可以确保模块准备好在下一次通信时接收高地
址字节。
在所有 10 位寻址通信开始时,都需要以写请求方式进
行高地址和低地址匹配。在寻址到从器件后,通过发出
重复启动条件并随时钟移入 R/W 位置 1 的高地址字节来
启动数据发送。然后,从器件硬件将会应答读请求,并
准备好随时钟移出数据。这只有在从器件接收到完全匹
配的高地址和低地址字节之后才有效。
DS41624A_CN 第 198 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.5.2
20.5.2.2
从接收
当接收到的匹配地址字节的 R/W 位清零时, SSPSTAT
寄存器的 R/W 位会清零。接收到的地址被装入SSPBUF
寄存器并产生应答。
在 AHEN 和 DHEN 置 1 时,从器件接收的工作方式与
不使用这些选项时的工作方式相同,只是在 SCL 的第 8
个下降沿之后添加了额外的中断和时钟延长。这些额外
中断允许从器件软件决定是否应答(ACK)接收的地址
或数据字节,而不是由硬件决定。该功能增加了对于该
模块先前版本中未提供的 PMBus™ 的支持。
当接收到的地址存在溢出条件时,将会产生无应答信
号。溢出条件定义为 SSPSTAT 寄存器的 BF 位被置 1,
或 SSPCON1 寄存器的 SSPOV 位被置 1。 SSPCON3
寄存器的 BOEN 位会修改该操作。更多信息,请参见寄
存器 20-4。
以下列表介绍了要对 I2C 通信使用这些选项时,从器件
软件需要执行的步骤。图 20-16 显示了同时使用地址和
数据保持功能的模块。图 20-17 包括了 SSPCON2 寄存
器的 SEN 位置 1 时的操作。
每个传输的数据字节都会产生 MSSP 中断。标志位
SSPIF 必须用软件清零。
1.
SSPSTAT 的 S 位置 1 ;如果允许在检测到启动
条件时产生中断,则 SSPIF 会置 1。
2. R/W 位清零的匹配地址随时钟移入。在 SCL 的
第 8 个下降沿之后, SSPIF 置 1, CKP 清零。
3. 从器件清零 SSPIF。
4. 从器件可以查看 SSPCON3 寄存器的 ACKTIM
位,以确定 SSPIF 是在 ACK 之前还是之后置 1。
5. 从器件从 SSPBUF 中读取地址值,使 BF 标志清
零。
6. 从器件通过设置 ACKDT 来设置随时钟移出到主
器件的 ACK 值。
7. 从器件通过将 CKP 置 1 来释放时钟。
8. SSPIF 会在 ACK 之后置 1,不会在 NACK 之后
置 1。
9. 如果 SEN = 1,从器件硬件会在 ACK 之后延长
时钟。
10. 从器件清零 SSPIF。
当 SSPCON2 寄存器的 SEN 位被置 1 时,SCL 将在接
收到每个字节后保持低电平 (时钟延长)。必须通过将
SSPCON1 寄存器的 CKP 位置 1 来释放时钟,10 位模
式下的特殊情况除外。更多详细信息,请参见第 20.2.3
节 “SPI 主模式”。
20.5.2.1
7 位寻址接收
本节介绍在7位寻址模式下,配置为I2C从器件的MSSP
模块的标准事件序列。图 20-14 和图 20-15 用直观的方
式对此作了说明。
以下列出了实现 I2C 通信时通常必须完成的步骤。
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
检测到启动位。
SSPSTAT 的 S 位置 1 ;如果允许在检测到启动
条件时产生中断,则 SSPIF 会置 1。
接收到 R/W 位清零的匹配地址。
从器件通过将 SDA 下拉为低电平而向主器件发
送 ACK,并将 SSPIF 位置 1。
用软件清零 SSPIF 位。
软件从 SSPBUF 中读取接收的地址,使 BF 标志
清零。
如果 SEN = 1,从器件软件会通过将 CKP 位置 1
来释放 SCL 线。
主器件随时钟移出数据字节。
从器件通过将 SDA 驱动为低电平而向主器件发
送 ACK,并将 SSPIF 位置 1。
用软件清零 SSPIF。
软件从SSPBUF中读取接收的字节,使BF清零。
对 于 从 主 器 件 接 收 到 的 所 有 字 节,重 复 步 骤
8-12。
主器件发送停止条件,将 SSPSTAT 的 P 位置 1,
总线变为空闲状态。
 2012 Microchip Technology Inc.
使用 AHEN 和 DHEN 时的 7 位接收
注:
即使不进行时钟延长,且 BF 已清零,SSPIF
仍然会在 SCL 的第 9 个下降沿之后置 1。只
有向主器件发送了 NACK 信号后,SSPIF 才
不会置 1。
11. 在所接收数据字节的第 8 个 SCL 下降沿之后,
SSPIF 置 1, CKP 清零。
12. 从器件通过查看 SSPCON3 的 ACKTIM 位来确
定中断源。
13. 从器件从 SSPBUF 中读取接收的数据,使 BF 清
零。
14. 对于接收的每个数据字节,重复步骤 7-14。
15. 从器件发送 ACK = 1 或主器件发送停止条件可结
束通信。如果发送了停止条件且禁止了在检测到
停 止 条 件 时 中 断,则 从 器 件 只 能 通 过 查 询
SSPSTAT 寄存器的 P 位才能知道停止条件。
初稿
DS41624A_CN 第 199 页
DS41624A_CN 第 200 页
初稿
SSPOV
BF
SSPIF
S
1
A7
2
A6
3
A5
4
A4
5
A3
6
A2
7
A1
8
9
ACK
1
D7
2
D6
4
D4
5
D3
6
D2
7
D1
SSPBUF 被读取
用软件清零
3
D5
接收数据
8
9
2
D6
4
D4
5
D3
6
D2
7
D1
SSPOV 置 1,因为
SSPBUF 仍为满。
不发送 ACK。
用软件清零
3
D5
第一个数据字节
在 SSPBUF 中可用
1
D0 ACK D7
接收数据
从从器件到主器件
8
D0
9
P
在 SCL 的第 9 个
下降沿将 SSPIF 置 1
ACK = 1
图 20-14:
SCL
SDA
接收地址
总线主器件发送
停止条件
PIC16(L)F1512/3
I2C™ 从模式, 7 位地址,接收 (SEN = 0, AHEN = 0, DHEN = 0)
 2012 Microchip Technology Inc.
 2012 Microchip Technology Inc.
初稿
CKP
SSPOV
BF
SSPIF
1
SCL
S
A7
2
A6
3
A5
4
A4
5
A3
6
A2
7
A1
8
9
R/W = 0ACK
SEN
2
D6
3
D5
4
D4
5
D3
6
D2
7
D1
用软件向 CKP 写入 1,
释放 SCL
SSPBUF 被读取
用软件清零
时钟保持低电平,直到 CKP 设置为 1
1
D7
接收数据
8
D0
9
ACK
SEN
3
D5
4
D4
5
D3
6
D2
7
D1
SSPOV 置 1,因为
SSPBUF 仍为满。
不发送 ACK。
第一个数据字节
在 SSPBUF 中可用
用软件清零
2
D6
用软件向 CKP 写入 1,
释放 SCL
1
D7
接收数据
8
D0
9
ACK
SCL 未保持
低电平,因为
ACK= 1
在 SCL 的第 9 个
下降沿将 SSPIF 置 1
P
图 20-15:
SDA
接收地址
总线主器件发送
停止条件
PIC16(L)F1512/3
I2C™ 从模式, 7 位地址,接收 (SEN = 1, AHEN = 0, DHEN = 0)
DS41624A_CN 第 201 页
DS41624A_CN 第 202 页
初稿
P
S
ACKTIM
CKP
ACKDT
BF
SSPIF
S
接收地址
4
5
6
7
从 SSBUF 中读取地址
如果 AHEN = 1:
SSPIF 置 1
3
8
当 AHEN=1 时:
CKP 由硬件清零,
SCL 被延长
以应答(ACK)接收的字节
从器件软件将 ACKDT 清零,
2
ACKTIM 由硬件在 SCL 的
第 8 个下降沿置 1
1
A7 A6 A5 A4 A3 A2 A1
接收数据
9
2
3
4
5
6
7
ACKTIM 由硬件在 SCL
的第 9 个上升沿清零
当 DHEN = 1 时:
CKP 由硬件在 SCL
的第 8 个下降沿清零
SSPIF 在 ACK 之后
SCL 的第 9 个下降沿置 1
1
8
ACK D7 D6 D5 D4 D3 D2 D1 D0
接收数据
1
2
4
5
用软件清零
3
8
从器件软件将
ACKDT 设置为
无 ACK
7
ACKTIM 由硬件
在 SCL 的第 8 个下降沿置 1
用软件将 CKP 置 1,
SCL 被释放
6
D7 D6 D5 D4 D3 D2 D1 D0
从 SSPBUF 中读取数据
9
ACK
9
P
如果从器件
无 ACK,则
不产生中断
ACK = 1
主器件发送
停止条件
图 20-16:
SCL
SDA
主器件释放 SDA 给从器件
以便从器件产生 ACK 序列
PIC16(L)F1512/3
I2C™ 从模式, 7 位地址,接收 (SEN = 0, AHEN = 1, DHEN = 1)
 2012 Microchip Technology Inc.
 2012 Microchip Technology Inc.
初稿
P
S
ACKTIM
CKP
ACKDT
BF
SSPIF
S
接收地址
4
5
6 7
8
当 AHEN = 1 时:
在地址字节的第 8 个
SCL 下降沿,CKP 清零
从器件软件清零
ACKDT 以应答(ACK)
接收的字节
接收的地址装入
SSPBUF
2 3
ACKTIM 由硬件在 SCL 的
第 8 个下降沿置 1
1
A7 A6 A5 A4 A3 A2 A1
9
ACK
接收数据
2 3
4
5
6 7
ACKTIM 由硬件在 SCL
的第 9 个上升沿清零
当 DHEN = 1 时 :
在所接收数据字节的
第 8 个 SCL 下降沿,
CKP 清零
接收的数据在
SSPBUF 中可用
用软件清零
1
8
D7 D6 D5 D4 D3 D2 D1 D0
9
ACK
接收数据
1
3 4
5
6 7
用软件置 1,
释放 SCL
从器件发送
无 ACK
SSPBUF 可以在装入
下一个字节之前的
任意时刻被读取
2
8
D7 D6 D5 D4 D3 D2 D1 D0
9
ACK
如果无 ACK,
则 CKP 不清零
如果从器件无 ACK,
则不产生中断
P
主器件发送
停止条件
图 20-17:
SCL
SDA
R/W = 0
主器件释放 SDA 给从器件
以便从器件产生 ACK 序列
PIC16(L)F1512/3
I2C™ 从模式, 7 位地址,接收 (SEN =1, AHEN =1, DHEN =1)
DS41624A_CN 第 203 页
PIC16(L)F1512/3
20.5.3
20.5.3.2
从发送
7 位发送
当输入地址字节的 R/W 位置 1 并发生地址匹配时,
SSPSTAT 寄存器的 R/W 位被置 1。接收到的地址会被
装入 SSPBUF 寄存器,并且从器件会在第 9 个位发送
ACK 脉冲。
主器件可以向从器件发送读请求,然后从从器件中随时
钟移出数据。以下列表列出了在实现标准数据发送时,
从器件软件需要执行的操作。图 20-17 可用作该列表的
参考。
在 ACK 之后,从器件硬件会清零 CKP 位,并且 SCL 引
脚保持低电平(更多详细信息,请参见第 20.5.6 节“时
钟延长”)。通过延长时钟,主器件只有在从器件准备好
发送数据时,才发出另一个时钟脉冲。
1.
2.
主器件在 SDA 和 SCL 上发送一个启动条件。
SSPSTAT 的 S 位置 1 ;如果允许在检测到启动
条件时产生中断,则 SSPIF 会置 1。
3. 从器件接收到 R/W 位置 1 的匹配地址,并将
SSPIF 位置 1。
4. 从器件硬件产生 ACK,并将 SSPIF 置 1。
5. 用户将 SSPIF 位清零。
6. 软件从SSPBUF中读取接收的地址,使BF清零。
7. R/W 置 1,所以 CKP 会在 ACK 之后自动清零。
8. 从器件软件将发送数据装入 SSPBUF。
9. CKP 位置 1,释放 SCL,使主器件可以从从器件
中随时钟移出数据。
10. 来自主器件的 ACK 响应装入 ACKSTAT 寄存器
之后, SSPIF 置 1。
11. SSPIF 位清零。
12. 从器件软件通过检查 ACKSTAT 位来确定主器件
是否要随时钟移出更多数据。
发送数据必须装入 SSPBUF 寄存器,此时该数据也会被
装入 SSPSR 寄存器。然后,应通过将 SSPCON1 寄存
器的 CKP 位置 1 来释放 SCL 引脚。8 个数据位在 SCL
输入的下降沿被移出。这可确保在 SCL 为高电平期间
SDA 信号是有效的。
来自主接收器的 ACK 脉冲将在第 9 个 SCL 输入脉冲的
上升沿锁存。该 ACK 值会被复制到 SSPCON2 寄存器
的 ACKSTAT 位中。如果 ACKSTAT 置 1(无 ACK 应答
信号) ,那么表示数据传输已完成。这种情况下,在从
器件锁存无 ACK 时,从器件会进入空闲状态,并等待出
现另一个启动位。如果 SDA 线为低电平(ACK),则必
须将下一个要发送的数据装入 SSPBUF 寄存器。同样,
必须通过将 CKP 位置 1 来释放 SCL 引脚。
每个数据传输字节都会产生 MSSP 中断。SSPIF 位必须
用软件清零, SSPSTAT 寄存器用于确定字节的状态。
SSPIF 位在第 9 个时钟脉冲的下降沿被置 1。
20.5.3.1
从模式总线冲突
从器件接收到读请求,开始在 SDA 线上移出数据。如
果检测到总线冲突,并且 SSPCON3 寄存器的 SBCDE
位置 1, PIR 寄存器的 BCLIF 位会置 1。在检测到总线
冲突时,从器件会变为空闲状态,等待再次被寻址。用
户软件可以通过使用 BCLIF 位来处理从器件总线冲突。
DS41624A_CN 第 204 页
注 1:
如果主器件应答(ACK),时钟将被延长。
2:
ACKSTAT 是惟一一个在 SCL 的第 9 个上
升沿而不是下降沿发生更新的位。
13. 对于每个发送字节,重复步骤 9-13。
14. 如果主器件发送无 ACK,则不会保持时钟,但
SSPIF 仍然会置 1。
15. 主器件发送重复启动条件或停止条件。
16. 从器件不再被寻址。
初稿
 2012 Microchip Technology Inc.
 2012 Microchip Technology Inc.
初稿
P
S
D/A
R/W
ACKSTAT
CKP
BF
SSPIF
S
接收地址
1
2
3
5
6
7
8
指示接收到地址
复制匹配地址
字节的 R/W
9
R/W = 1
ACK
当 R/W= 1 时,
SCL 在第 9 个 SCL
下降沿之后总是
保持低电平
从 SSPBUF 中读取
接收到的地址
4
A7 A6 A5 A4 A3 A2 A1
自动
发送数据
2
3
4
用软件置 1
将要发送的数据
装入 SSPBUF
用软件清零
1
5
6
7
8
9
D7 D6 D5 D4 D3 D2 D1 D0 ACK
自动
发送数据
1
3
4
BF 在 SCL 的
第 8 个下降沿
之后自动清零
2
7
8
如果无 ACK,
不会保持 CKP
6
主器件的无 ACK
被复制到
ACKSTAT
5
D7 D6 D5 D4 D3 D2 D1 D0
9
ACK
P
图 20-18:
SCL
SDA
主器件发送
停止条件
PIC16(L)F1512/3
I2C™ 从模式, 7 位地址,发送 (AHEN = 0)
DS41624A_CN 第 205 页
PIC16(L)F1512/3
20.5.3.3
使能地址保持时的 7 位发送
将 SSPCON3 寄存器的 AHEN 位置 1 时,器件会在所
接收匹配地址的第 8 个下降沿之后增加时钟延长并产生
中断。在匹配地址 随时 钟移 入之 后, CKP 会清零,
SSPIF 中断标志会置 1。
图 20-18 给出了在使能 AHEN 时 7 位地址从发送的标准
波形图。
1.
2.
总线启动时为空闲模式。
主器件发送启动条件; SSPSTAT 的 S 位置 1 ;
如 果 允 许 在 检 测 到 启 动 条 件 时 产 生 中 断,则
SSPIF 会置 1。
3. 主器件发送 R/W 位置 1 的匹配地址。在 SCL 线
的第8个下降沿之后,CKP位清零,并产生SSPIF
中断。
4. 从器件软件清零 SSPIF。
5. 从器件软件读取 SSPCON3 寄存器的 ACKTIM
位,以及 SSPSTAT 寄存器的 R/W 和 D/A 位,以
确定中断源。
6. 从器件从 SSPBUF 寄存器中读取地址值,使 BF
位清零。
7. 从器件软件根据该信息确定它是产生 ACK 还是
产生无 ACK,并相应地设置 SSPCON2 寄存器
的 ACKDT 位。
8. 从器件将 CKP 位置 1,释放 SCL。
9. 主器件随时钟移入来自从器件的 ACK 值。
10. 如果 R/W 位置 1,则在 ACK 之后,从器件硬件
会自动将 CKP 位清零,将 SSPIF 置 1。
11. 从器件软件清零 SSPIF。
12. 从器件将要发送给主器件的值装入 SSPBUF,使
BF 位置 1。
注:
只有在 ACK 之后,才能装入 SSPBUF。
13. 从器件将 CKP 位置 1,释放时钟。
14. 主器件从从器件中随时钟移出数据,并在第 9 个
SCL 脉冲发送 ACK 值。
15. 从器件硬件将 ACK 值复制到 SSPCON2 寄存器
的 ACKSTAT 位中。
16. 对于从从器件发送到主器件的每个字节,重复步
骤 10-15。
17. 如果主器件发送无 ACK,从器件会释放总线,让
主器件可以发送停止条件和结束通信。
注:
主器件必须对于最后一个字节发送无 ACK,
以确保从器件释放 SCL 线来接收停止条件。
DS41624A_CN 第 206 页
初稿
 2012 Microchip Technology Inc.
 2012 Microchip Technology Inc.
初稿
D/A
R/W
ACKTIM
CKP
ACKSTAT
ACKDT
BF
SSPIF
S
接收地址
1
4
5
6
7
8
以应答(ACK)地址
ACKTIM 在 SCL 的
第 8 个下降沿置 1
当 R/W = 1 时 :
CKP 总是在
ACK 之后清零
R/W = 1
从器件清零 ACKDT,
从 SSPBUF 中读取
接收到的地址
3
当 AHEN = 1 时 :
CKP 由硬件在接收到
匹配地址之后清零
2
A7 A6 A5 A4 A3 A2 A1
9
ACK
3
4
用软件清零
2
用软件置 1,
释放 SCL
将要发送的数据
装入 SSPBUF
1
5
6
7
8
9
发送数据
D7 D6 D5 D4 D3 D2 D1 D0 ACK
ACKTIM 在 SCL 的
第 9 个上升沿清零
自动
自动
发送数据
1
4
5
6
7
BF 在 SCL 的第 8 个
下降沿之后自动清零
3
如果无 ACK,
则 CKP 不清零
将主器件的 ACK 响应
复制到 SSPSTAT
2
8
D7 D6 D5 D4 D3 D2 D1 D0
9
ACK
P
主器件发送
停止条件
图 20-19:
SCL
SDA
主器件释放 SDA 给从器件,
以便从器件产生 ACK 序列
PIC16(L)F1512/3
I2C™ 从模式, 7 位地址,发送 (AHEN = 1)
DS41624A_CN 第 207 页
PIC16(L)F1512/3
20.5.4
从模式 10 位地址接收
20.5.5
本节介绍在 10 位寻址模式下,配置为 I2C 从器件的
MSSP 模块的标准事件序列。
在 AHEN 或 DHEN 置 1 时,使用 10 位寻址的接收方式
与 7 位模式相同。惟一的区别是需要使用 UA 位来更新
SSPADD 寄存器。所有功能 (特别是在 CKP 位清零,
SCL 线保持低电平时)都是相同的。图 20-20 可以用作
AHEN 置 1 时 10 位寻址模式下从器件的参考图示。
图 20-19 用直观的方式对此作了说明。
以下列出了实现 I2C 通信时从器件软件必须完成的步
骤。
1.
2.
3.
4.
5.
6.
7.
8.
9.
图 20-21 给出了 10 位寻址模式下从发送器的标准波形
图。
总线启动时为空闲模式。
主器件发送启动条件; SSPSTAT 的 S 位置 1 ;
如 果 允 许 在 检 测 到 启 动 条 件 时 产 生 中 断,则
SSPIF 会置 1。
主器件发送R/W位清零的匹配高地址;SSPSTAT
寄存器的 UA 位置 1。
从器件发送 ACK, SSPIF 置 1。
用软件清零 SSPIF 位。
软件从 SSPBUF 中读取接收的地址,使 BF 标志
清零。
从器件将低地址装入 SSPADD,释放 SCL。
主器件向从器件发送匹配的低地址字节; UA 位
置 1。
注:
带地址或数据保持的 10 位寻址
只有在 ACK 序列之后,才允许更新 SSPADD
寄存器。
从器件发送 ACK, SSPIF 置 1。
注:
如果低地址不匹配, SSPIF 和 UA 仍然会置
1,从而让从器件软件可以将 SSPADD 恢复
为高地址。由于不匹配,BF 不会置 1。CKP
不受影响。
10. 从器件清零 SSPIF。
11. 从器件从 SSPBUF 中读取接收的匹配地址,使
BF 清零。
12. 从器件将高地址装入 SSPADD。
13. 主器件随时钟将数据字节移入从器件,并在第 9
个 SCL 脉冲随时钟将 ACK 移出从器件; SSPIF
置 1。
14. 如果 SSPCON2 的 SEN 位置 1,CKP 会被硬件
清零,时钟会被延长。
15. 从器件清零 SSPIF。
16. 从器件从 SSPBUF 中读取接收的字节,使 BF 清
零。
17. 如果 SEN 置 1,从器件会将 CKP 置 1,以释放
SCL。
18. 对于接收的每个字节重复步骤 13-17。
19. 主器件发送停止条件来结束数据发送。
DS41624A_CN 第 208 页
初稿
 2012 Microchip Technology Inc.
 2012 Microchip Technology Inc.
初稿
CKP
UA
BF
SSPIF
S
1
1
2
1
5
6
7
0 A9 A8
在第 9 个下降沿
由硬件置 1
4
1
8
当 UA = 1 时:
SCL 保持低电平
如果地址匹配,
SSPADD 会被装入
SSPBUF
3
1
接收第一个地址字节
9
ACK
1
3
4
5
6
软件更新 SSPADD
并释放 SCL
2
7
8
9
A7 A6 A5 A4 A3 A2 A1 A0 ACK
接收第二个地址字节
1
3
4
5
6
7
8
9
当 SEN = 1 时:
在所接收字节的
第 9 个下降沿之后,
CKP 清零
从 SSPBUF 中读取
接收到的地址
用软件清零
2
D7 D6 D5 D4 D3 D2 D1 D0 ACK
接收数据
1
3
4
5
6
7
用软件置 1,
释放 SCL
从 SSPBUF 中
读取数据
在 CKP = 0 时,
SCL 保持低电平
2
8
9
D7 D6 D5 D4 D3 D2 D1 D0 ACK
接收数据
P
图 20-20:
SCL
SDA
主器件发送
停止条件
PIC16(L)F1512/3
I2C™ 从模式, 10 位地址,接收 (SEN = 1, AHEN = 0, DHEN = 0)
DS41624A_CN 第 209 页
DS41624A_CN 第 210 页
初稿
ACKTIM
CKP
UA
ACKDT
BF
2
1
5
0
6
A9
7
A8
在第 9 个下降沿
由硬件置 1
4
1
ACKTIM 由硬件在 SCL 的
第 8 个下降沿置 1
当 AHEN = 1 时:
在地址字节的第 8 个
SCL 下降沿,CKP 清零
从器件软件清零
ACKDT 以应答(ACK)
接收的字节
3
1
8
R/W = 0
9
ACK
UA
2
A6
4
A4
5
A3
6
A2
7
A1
SSPBUF 可以在
接收到下一个字节
之前的任意时刻被读取
3
A5
只有在 SCL 的
第 9 个下降沿之后,
才允许更新 SSPADD
用软件清零
1
A7
接收第二个地址字节
8
A0
9
ACK
UA
2
D6
3
D5
4
D4
5
D3
接收数据
6
D2
用软件将 CKP 置 1,
释放 SCL
SSPADD 发生更新,
清零 UA 并释放 SCL
用软件清零
1
D7
7
D1
8
9
2
从 SSPBUF 读
取接收到的数据
1
D6 D5
接收数据
D0 ACK D7
图 20-21:
SSPIF
1
SCL
S
1
SDA
接收第一个地址字节
PIC16(L)F1512/3
I2C™ 从模式, 10 位地址,接收 (SEN = 0, AHEN = 1, DHEN = 0)
 2012 Microchip Technology Inc.
 2012 Microchip Technology Inc.
初稿
D/A
R/W
ACKSTAT
CKP
UA
BF
SSPIF
3
4
6
7
由硬件置 1
5
指示接收到地址
UA 指示 SSPADD
必须进行更新
SSPBUF 中装入
接收到的地址
2
8
9
1
SCL
S
接收地址
R/W = 0
1 1 1 1 0 A9 A8
ACK
3
4
5
6
7 8
9
在更新 SSPADD 后,
UA 清零并且 SCL 被释放
用软件清零
2
1
2 3
4
5
6
7 8
由硬件置 1
9
ACK
复制匹配地址
字节的 R/W
当 R/W = 1 :
CKP IS 在 SCL 的第 9 个下降沿清零
9TH FALLING EDGE OF SCL
高地址装回
到 SSPADD 中
从 SSPBUF 中读取
接收到的地址
SR
1 1 1 1 0 A9 A8
A7 A6 A5 A4 A3 A2 A1 A0 ACK
1
接收第一个地址字节
接收第二个地址字节
发送数据字节
2
3
4
5
6
复制主器件
无 ACK
用软件置 1
释放 SCL
将要发送的数据
装入 SSPBUF
1
7
8
D7 D6 D5 D4 D3 D2 D1 D0
主器件发送
无 ACK
9
ACK = 1
P
主器件发送
停止条件
图 20-22:
SDA
主器件发送
重复启动事件
PIC16(L)F1512/3
I2C™ 从模式, 10 位地址,发送 (SEN = 0, AHEN = 0, DHEN = 0)
DS41624A_CN 第 211 页
PIC16(L)F1512/3
20.5.6
20.5.6.2
时钟延长
10 位寻址模式
当总线上的某个器件将SCL线保持为低电平而有效暂停
通信时,就发生了时钟延长现象。从器件可以延长时
钟,以便可以有更多时间来处理数据或准备响应主器
件。时钟延长时并不关心主器件的工作,因为任何时候
只需总线上主器件处于活动状态但是不传输数据就可以
被认为是时钟延长。由从器件进行的任何时钟延长对于
主器件软件都是不可见的,都由产生 SCL 的硬件进行处
理。
在 10 位寻址模式下,当 UA 位置 1 时,时钟总是会被
延长。这是无需清零 CKP 就会延长 SCL 的惟一情形。
在写入 SSPADD 之后, SCL 会立即被释放。
SSPCON1 寄存器的 CKP 位用于在软件中控制时钟延
长。每当 CKP 位清零时,模块就会等待 SCL 线变为低
电平,然后保持低电平状态不变。将 CKP 置 1 将会释
放 SCL,允许继续进行通信。
当 SSPCON3 的 AHEN 位置 1 时,在所接收匹配地址
字节的第 8 个 SCL 下降沿之后,硬件会将 CKP 清零。
当 SSPCON3 的 DHEN 位置 1 时,在所接收数据的第
8 个 SCL 下降沿之后, CKP 会被清零。
20.5.6.1
通过在 SCL 的第 8 个下降沿之后延长时钟,从器件可以
检查接收到的地址或数据,并确定是否要应答接收到的
数据。
注:
20.5.6.3
正常时钟延长
如果 SSPSTAT 的 R/W 位置 1 (读请求),则在 ACK
之后,从器件硬件会清零 CKP。这让从器件可以有时间
使用要传输给主器件的数据更新
SSPBUF。如果
SSPCON2 的 SEN 位置 1,则在 ACK 序列之后,从器
件硬件将总是延长时钟。在从器件就绪之后,软件会将
CKP 置 1,并继续进行通信。
注
20.5.7
字节无应答
时钟同步时序和 CKP 位
每当 CKP 位清零时,模块就会等待 SCL 线变为低电平,
然后保持低电平状态不变。但是,清零 CKP 位并不会
将 SCL 输出置为低电平,只有在已经采样到 SCL 输出
为低电平之后才会。因此, CKP 位不会将 SCL 线拉为
低电平,除非外部 I2C 主器件已将 SCL 线拉为低电平。
SCL 输出将保持低电平,直到 CKP 位置 1 且 I2C 总线
上的所有其他器件已释放SCL为止。这可以确保对CKP
位的写操作不会违反 SCL 的最短高电平时间要求 (见
图 20-22)。
1:BF 位对于是否延长时钟没有任何影响。这
一点与模块的先前版本不同:如果在 SCL
的第 9 个下降沿之前读取了 SSPBUF,先
前版本将不会延长时钟,清零 CKP。
2:如果在 SCL 的第 9 个下降沿之前装入
SSPBUF,则模块的先前版本不会为数据
发送延长时钟。现在,对于读请求,总是
会将该位清零。
图 20-23:
如果第二个地址字节不匹配,先前版本的模
块不会延长时钟。
时钟同步时序
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
SDA
DX‚ – 1
DX
SCL
CKP
主器件
使时钟有效
主器件
释放时钟
写
SSPCON1
DS41624A_CN 第 212 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.5.8
在 10 位地址模式下,UA 位不会在接收到广播呼叫地址
时置 1。从器件会准备接收作为数据的第二个字节,这
与在 7 位模式下相同。
广播呼叫地址支持
在 I2C 总线的寻址过程中,通常由启动条件后的第一个
字节决定主器件将寻址哪个从器件。但广播呼叫地址例
外,它能寻址所有器件。当使用这个地址时,理论上所
有的器件都应该发送一个应答信号来响应。
如果 SSPCON3 寄存器的 AHEN 位置 1,则与接收到任
意其他地址时相同,从器件硬件会在 SCL 的第 8 个下降
沿之后延长时钟。然后,从器件必须与正常情况下一
样,设置它的 ACKDT 值,并释放时钟来继续进行通信。
广播呼叫地址是 I2C 协议中的保留地址,定义为地址
0x00。如果 SSPCON2 寄存器的 GCEN 位置 1,则无
论 SSPADD 中存储的值如何,在接收到该地址时,从
模块都会自动发送 ACK。在从器件随时钟移入 R/W 位
清零的全零地址之后,将会产生中断,从器件软件可以
读取 SSPBUF 并进行响应。图 20-23 显示了广播呼叫
接收序列。
图 20-24:
从模式广播呼叫地址序列
ACK 之后,地址与广播呼叫地址
作比较,产生中断
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(SSPSTAT<0>)
用软件清零
SSPBUF 被读取
GCEN(SSPCON2<7>)
1
20.5.9
SSP 掩码寄存器
SSP 掩码 (SSPMSK)寄存器 (寄存器 20-5)在 I2C
从模式下可用,用作地址比较操作期间 SSPSR 寄存器
中保存的值的掩码。SSPMSK 寄存器中的零(0)位可
使接收地址中相应位变为 “无关位”。
发生任何复位条件时,该寄存器都会复位到全 1 状态,
因此,在写入掩码值之前对标准 SSP 操作没有影响。
SSP 掩码寄存器在以下期间保持有效:
• 7 位地址模式:针对 A<7:1> 的地址比较。
• 10 位地址模式:仅针对 A<7:0> 的地址比较。在
接收地址的第一个 (高)字节期间, SSP 掩码没
有影响。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 213 页
PIC16(L)F1512/3
20.6
I2C 主模式
20.6.1
主器件产生所有的串行时钟脉冲、启动条件和停止条
件。以停止条件或重复启动条件结束传输过程。因为重
复启动条件也是下一次串行传输的开始,因此 I2C 总线
不会被释放。
通过将 SSPCON1 中的相应 SSPM 位置 1 和清零,同
时将 SSPEN 位置 1,可以使能主模式。在主模式下,
SDA 和 SCK 引脚必须被配置为输入。当需要将引脚驱
动为低电平时, MSSP 外设硬件将改写输出驱动器的
TRIS 控制。
在主发送器模式下,串行数据通过 SDA 输出,而串行
时钟由 SCL 输出。发送的第一个字节包括接收器件的从
器件地址(7 位)和读 / 写(R/W)位。在这种情况下,
R/W 位将是逻辑 0。一次发送 8 位串行数据。每发送一
个字节,都会接收到一个应答位。输出启动和停止条件
指示串行传输的开始和结束。
通过在检测到启动和停止条件时产生中断来支持主操作
模式。停止(P)位和启动(S)位在复位或禁止 MSSP
模块时清零。当 P 位置 1,可取得 I 2C 总线的控制权,
否则总线空闲。
在固件控制的主模式下,用户代码根据启动位和停止位
条件检测执行所有的 I 2C 总线操作。在该模式下,启动
和停止条件检测是惟一有效的电路。所有其他通信都通
过用户软件直接操作 SDA 和 SCL 线来完成。
在主接收模式下,发送的第一个字节包括发送器件的从
器件地址 (7 位)和 R/W 位。在这种情况下, R/W 将
为逻辑 1。因此,发送的第一个字节是一个 7 位从器件
地址,后跟 1 指示接收位。串行数据通过 SDA 接收,
而串行时钟由 SCL 输出。一次接收 8 位串行数据。每接
收到一个字节,都会发送一个应答位。启动和停止条件
指示发送的开始和结束。
以下事件会使 SSP 中断标志位 SSPIF 置 1 (如果允许
SSP 中断,则产生中断):
•
•
•
•
•
检测到启动条件
检测到停止条件
发送 / 接收的数据传输字节
发送 / 接收到应答
产生重复启动条件
注 1:
当配置为 I2C 主模式时, MSSP 模块不允
许事件排队。例如,在启动条件结束前,
不允许用户发出启动条件以及立即写
SSPBUF 寄存器以启动传输。在这种情况
下,将不会写 SSPBUF,WCOL 位将被置
1,这表明没有发生对 SSPBUF 的写操作。
2:
处于主模式时,如果 SEN/PEN 位清零,并
且启动 / 停止条件完成,则会屏蔽启动 / 停
止检测并产生中断。
DS41624A_CN 第 214 页
I2C 主模式操作
波特率发生器用于设置从 SCL 输出的时钟频率。更多详
细信息,请参见第 20.7 节 “波特率发生器”。
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.6.2
时钟仲裁
如果在任何接收、发送或重复启动 / 停止条件期间,主器
件释放了 SCL 引脚(允许 SCL 悬空为高电平),就会发
生时钟仲裁。当允许 SCL 引脚悬空为高电平时,波特率
发生器 (Baud Rate Generator, BRG)暂停计数,直
到 SCL 引脚被实际采样到高电平为止。当 SCL 引脚采样
为高电平时,波特率发生器重新装入 SSPADD<7:0> 的
内容并开始计数。这可以确保在外部器件将时钟保持低
电平时,SCL 在至少一个 BRG 计满返回计数周期内总是
保持高电平 (图 20-25)。
图 20-25:
带有时钟仲裁的波特率发生器时序
SDA
DX ‚ –1
DX
SCL 被试图拉高但从器件将
SCL 保持为低电平(时钟仲裁)
允许 SCL 变为高电平
SCL
BRG 在 Q2 和 Q4 周期
进行递减计数
BRG
值
03h
02h
01h
00h(延时)
03h
02h
SCL 采样为高电平,
BRG 被重载并开始计数
BRG
重载
20.6.3
WCOL 状态标志
如果在启动、重复启动、停止、接收或发送序列过程中
用户写 SSPBUF,则 WCOL 被置 1,同时缓冲区内容不
变(未发生写操作)。在任何时候 WCOL 位置 1 都表示
在模块不处于空闲状态时对SSPBUF尝试了某种操作。
注:
由于不允许事件排队,在启动条件结束之
前,不能写 SSPCON2 的低 5 位。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 215 页
PIC16(L)F1512/3
20.6.4 I2C 主模式启动条件时序
数。当波特率发生器再次超时(TBRG)时,SSPCON2
寄存器的 SEN 位将自动被硬件清零,波特率发生器暂
停工作, SDA 线保持低电平,启动条件结束。
要发出启动条件,用户应将 SSPCON2 寄存器的启动使
能位 SEN 置 1。如果 SDA 和 SCL 引脚被采样为高电
平,则波特率发生器会重新装入 SSPADD<7:0> 的内容
并开始计数。如果波特率发生器超时(TBRG)时,SCL
和 SDA 都被采样为高电平,则将 SDA 引脚驱动为低电
平。当 SCL 为高电平时,将 SDA 驱动为低电平将产生
启动条件,并使 SSPSTAT1 寄存器的 S 位置 1。随后波
特率发生器重新装入 SSPADD<7:0> 的内容并恢复计
图 20-26:
注 1:
如果在启动条件开始时,SDA 和 SCL 引脚
已经采样为低电平,或者在启动条件期
间,SCL 在 SDA 线被驱动为低电平之前已
经采样为低电平,则会发生总线冲突。总
线冲突中断标志位 BCLIF 置 1,启动条件
中止, I2C 模块复位到空闲状态。
2:
Philips I2C 规范规定启动时不能发生总线
冲突。
第一个启动位时序
此时写 SEN 位
将 S 位(SSPSTAT<3>)置 1
启动位完成后,
由硬件将 SEN 位清零
并将 SSPIF 位置 1
SDA = 1,
SCL = 1
TBRG
TBRG
此时写 SSPBUF
SDA
第1位
第2位
TBRG
SCL
S
DS41624A_CN 第 216 页
TBRG
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.6.5 I2C 主模式重复启动条件时序
会重载, SDA 引脚保持低电平。一旦在 SDA 和 SCL
引脚上检测到启动条件, SSPSTAT 寄存器的 S 位就
会被置 1。 SSPIF 位在波特率发生器超时之前不会被
置 1。
注
1:有任何其他事件在进行时,编程 RSEN 无
效。
当 SSPCON2 寄存器的 RSEN 位设定为高电平,并且
主器件状态机不再有效时,会产生重复启动条件。当
RSEN 位置 1 时, SCL 引脚被拉为低电平。当 SCL 引
脚被采样为低电平时,波特率发生器会装入值并开始计
数。在一个波特率发生器计数周期 (TBRG)内 SDA
引脚被释放 (拉为高电平)。当波特率发生器超时时,
如果 SDA 被采样为高电平, SCL 引脚将被置为无效
(拉为高电平)。当 SCL 被采样为高电平时,波特率发
生器被重载并开始计数。 SDA 和 SCL 必须在一个
TBRG 内采样为高电平。随后在 SCL 引脚保持为高电
平时,使 SDA 引脚有效 (SDA = 0)一个 TBRG 周
期。接下来 SCL 引脚被拉为低电平。之后 SSPCON2
寄存器的 RSEN 位将自动清零,这次波特率发生器不
图 20-27:
2:在重复启动条件期间,以下事件将会导致
发生总线冲突:
• 当 SCL 由低电平变为高电平时,
SDA 被采样为低电平。
• 在 SDA 被置为低电平之前, SCL
变为低电平。这指示另一个主器件
正试图发送一个数据 1。
重复启动条件波形图
S 位由硬件置 1
此时写 SSPCON2,
SDA = 1,
SCL(不变)
启动位完成后,
由硬件将 RSEN 位清零
并将 SSPIF 置 1
SDA = 1,
SCL = 1
TBRG
TBRG
TBRG
第1位
SDA
此时写 SSPBUF
TBRG
SCL
Sr
TBRG
重复启动
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 217 页
PIC16(L)F1512/3
20.6.6
I2C 主模式发送
20.6.6.3
在发送模 式下,当从器件发送应 答 (ACK = 0)时,
SSPCON2 寄存器的 ACKSTAT 位被清零;当从器件没
有应答 (ACK = 1)时,该位被置 1。从器件在识别出
其地址 (包括广播呼叫地址)或正确接收数据后,会发
送一个应答。
发送一个数据字节、一个 7 位地址或一个 10 位地址的
另一半都是通过简单地向SSPBUF寄存器写入一个值来
实现的。该操作将使缓冲区满标志位 BF 置 1,并使波
特率发生器开始计数和开始下一次发送。地址 / 数据的
每一位将在 SCL 的下降沿置为有效之后移出到 SDA 引
脚。在一个波特率发生器计满返回计数周期 (TBRG)
内, SCL 保持低电平。在 SCL 被释放为高电平之前,
数据应保持有效。当 SCL 引脚释放为高电平时,它将在
一个 TBRG 内保持高电平状态。在此期间以及 SCL 的下
一个下降沿之后的一段保持时间内,SDA 引脚上的数据
必须保持稳定。在第 8 位数据被移出(第 8 个时钟的下
降沿)之后, BF 标志被清零,同时主器件释放 SDA。
此时如果发生地址匹配或是数据被正确接收,被寻址的
从器件将在第 9 个位时间发出一个 ACK 位作为响应。
ACK 的状态在第 9 个时钟的上升沿被写入 ACKSTAT
位。如果主器件接收到应答,应答状态位 ACKSTAT 会
被清零。如果未接收到应答,则该位被置 1。在第 9 个
时钟之后, SSPIF 位会置 1,主时钟 (波特率发生器)
暂停,直到下一个数据字节装入 SSPBUF,SCL 保持低
电平, SDA 保持不变 (图 20-28)。
20.6.6.4
1.
2.
3.
4.
5.
6.
7.
在写 SSPBUF 之后,地址的每一位在 SCL 的下降沿被
移出,直到所有 7 个地址位和 R/W 位都被移出。在第 8
个时钟的下降沿,主器件将释放 SDA 引脚,以允许从
器件发出一个应答响应。在第 9 个时钟的下降沿,主器
件通过采样 SDA 引脚来判断地址是否被从器件识别。
ACK 位的状态被装入 SSPCON2 寄存器的 ACKSTAT 状
态位。在发送地址的第 9 个时钟下降沿之后,SSPIF 置
1,BF 标志清零,波特率发生器关闭直到发生下一次写
SSPBUF,且 SCL 保持低电平,允许 SDA 悬空。
20.6.6.1
8.
9.
10.
11.
12.
13.
BF 状态标志
在发送模式下, SSPSTAT 寄存器的 BF 位在 CPU 写
SSPBUF 时置 1,在所有 8 位数据移出后清零。
20.6.6.2
ACKSTAT 状态标志
典型的发送序列:
用户通过将 SSPCON2 寄存器的 SEN 位置 1,
产生启动条件。
在启动条件结束时,硬件将 SSPIF 置 1。
SSPIF 用软件清零。
在进行任何其他操作前,MSSP 模块将等待所需
的启动时间。
用户将从器件地址装入 SSPBUF 进行发送。
器件地址从 SDA 引脚移出,直到发送完所有 8 位
地址数据。数据发送会在写入 SSPBUF 后立刻开
始。
MSSP 模块移入来自从器件的 ACK 位,并将它
的值写入 SSPCON2 寄存器的 ACKSTAT 位。
MSSP 模块在第 9 个时钟周期结束时将 SSPIF 置
1 产生中断。
用户将 8 位数据装入 SSPBUF。
数据从 SDA 引脚移出,直到发送完所有 8 位数
据。
MSSP 模块移入来自从器件的 ACK 位,并将它
的值写入 SSPCON2 寄存器的 ACKSTAT 位。
对于发送的所有数据字节,重复步骤 8-11。
用户通过将 SSPCON2 寄存器的 PEN 或 RSEN
位置 1,产生停止或重复启动条件。停止 / 重复
启动条件完成时产生中断。
WCOL 状态标志
如果在发送过程中(即,SSPSR 仍在移出数据字节时)
用户写 SSPBUF,则 WCOL 被置 1,同时缓冲区内容
不变 (未发生写操作)。
在下一次发送前, WCOL 必须用软件清零。
DS41624A_CN 第 218 页
初稿
 2012 Microchip Technology Inc.
 2012 Microchip Technology Inc.
S
初稿
R/W
PEN
SEN
BF(SSPSTAT<0>)
SSPIF
SCL
SDA
A6
A5
A4
A3
向从器件发送地址
A2
A1
3
用软件清零
2
4
5
6
启动条件之后,由硬件清零 SEN
写入 SSPBUF
1
7
将 7 位地址和 R/W 写入 SSPBUF,
开始发送
A7
8
9
D7
D6
4
D4
5
D3
6
D2
7
D1
用软件写入 SSPBUF
由 SSP 中断的软件服务程序清零
3
D5
发送数据或 10 位地址的后半部分
1
2
当 CPU 响应 SSPIF 时,
SCL 保持低电平
ACK = 0
R/W = 0
8
D0
9
ACK
来自从器件,清零 ACKSTAT 位(SSPCON2<6>)
用软件清零
P
SSPCON2 中的
ACKSTAT = 1
图 20-28:
SEN = 0
写 SSPCON2<0>(SEN = 1),
启动条件开始
PIC16(L)F1512/3
I2C™ 主模式波形图 (发送, 7 位或 10 位地址)
DS41624A_CN 第 219 页
PIC16(L)F1512/3
20.6.7
I2C 主模式接收
20.6.7.4
通过编程 SSPCON2 寄存器的接收使能位 RCEN 使能
主模式接收。
注:
1.
2.
3.
4.
将 RCEN 位置 1 前,MSSP 模块必须处于
空闲状态,否则对 RCEN 位置 1 将无效。
波特率发生器开始计数,每次计满返回时,SCL 引脚的
状态发生改变 (由高变低 / 由低变高) ,数据被移入
SSPSR。在第 8 个时钟的下降沿之后,接收使能标志自
动清零, SSPSR 的内容装入 SSPBUF, BF 标志位置
1,SSPIF 标志位置 1,波特率发生器暂停计数,且 SCL
保持为低电平。此时 MSSP 处于空闲状态,等待下一条
命令。当 CPU 读缓冲区时,BF 标志位会自动清零。通
过将SSPCON2寄存器的应答序列使能位ACKEN置1,
用户可以在接收结束后发送应答位。
20.6.7.1
5.
6.
7.
8.
BF 状态标志
在 接 收 操 作 中,将 地 址 或 数 据 字 节 从 SSPSR 装入
SSPBUF 时,BF 位被置 1。在读 SSPBUF 寄存器时将
其清零。
9.
10.
20.6.7.2
11.
SSPOV 状态标志
在接收操作中,当 SSPSR 接收到 8 位数据且 BF 标志
位已经在上一次接收中置 1 时, SSPOV 位置 1。
20.6.7.3
12.
WCOL 状态标志
13.
14.
15.
如果在接收过程中(即,SSPSR 仍在移入数据字节时)
用户写 SSPBUF,则 WCOL 位被置 1,同时缓冲区内
容不变 (未发生写操作)。
DS41624A_CN 第 220 页
初稿
典型的接收序列:
用户通过将 SSPCON2 寄存器的 SEN 位置 1,
产生启动条件。
在启动条件结束时,硬件将 SSPIF 置 1。
SSPIF 用软件清零。
用户将要发送的从器件地址写入SSPBUF且R/W
位置 1。
器件地址从 SDA 引脚移出,直到发送完所有 8 位
地址数据。数据发送会在写入 SSPBUF 后立刻开
始。
MSSP 模块移入来自从器件的 ACK 位,并将它
的值写入 SSPCON2 寄存器的 ACKSTAT 位。
MSSP 模块在第 9 个时钟周期结束时将 SSPIF 置
1 产生中断。
用户将 SSPCON2 寄存器的 RCEN 位置 1,主器
件从从器件时钟随移入一个字节。
在 SCL 的第 8 个下降沿之后,SSPIF 和 BF 置 1。
主器件清零 SSPIF,并从 SSPUF 中读取接收到
的字节,使 BF 清零。
主器件在 SSPCON2 寄存器的 ACKDT 位中设置
要发送给从器件的 ACK 值,并通过将 ACKEN 位
置 1 来发出 ACK。
主器件随时钟将 ACK移出到从器件,并且 SSPIF
置 1。
用户清零 SSPIF。
对于从从器件接收的每个字节,重复步骤 8-13。
主器件通过发送无ACK 或停止条件来结束通信。
 2012 Microchip Technology Inc.
 2012 Microchip Technology Inc.
初稿
RCEN
ACKEN
SSPOV
BF
(SSPSTAT<0>)
当 CPU
响应 SSPIF 时,
SDA = 0,SCL = 1
SSPIF
S
1
A7
2
4
用软件清零
3
5
6
A6 A5 A4 A3 A2
向从器件发送地址
7
8
9
ACK
接收来自从器件的数据
2
用软件清零
1
3
5
6
7
8
D0
9
ACK
2
3
4
5
用软件清零
在应答序列结束时
将 SSPIF 中断标志置 1
在 CLK 下降沿将数据移入
1
RCEN 被自动清零
来自主器件的 ACK,
SDA = ACKDT = 0
6
7
用软件清零
在接收结束时,
将 SSPIF 置 1
9
不发送 ACK
ACK
RCEN 被自动清零
P
总线主器件
终止传输
将P位
(SSPSTAT<4>)
和 SSPIF 置 1
在应答序列结束时
将 SSPIF 中断标志置 1
此时写
PEN 位 = 1
SSPOV 被置 1,因为
SSPBUF 仍为满
8
D0
RCEN 被自动清零
ACKEN 置 1,启动应答序列,
SDA = ACKDT = 1
D7 D6 D5 D4 D3 D2 D1
接收来自从器件的数据
RCEN = 1,开始
下一次接收
来自主器件的 ACK,
SDA = ACKDT = 0
最后一位移入 SSPSR,
并将 SSPSR 中内容转存到 SSPBUF 中
用软件清零
在接收结束时
将 SSPIF 中断标志置 1
4
D7 D6 D5 D4 D3 D2 D1
RCEN 被自动清零
通过对 SSPCON2<3> 编程(RCEN = 1)
将主器件配置为接收器
A1 R/W
来自从器件的 ACK
通过对 SSPCON2<3> 编程(RCEN = 1)
将主器件配置为接收器
图 20-29:
SCL
SDA
SEN = 0
此时写 SSPBUF,
开始发送
写 SSPCON2<0>(SEN = 1),
启动条件开始
写 SSPCON2<4>
启动应答序列,
SDA = ACKDT(SPCON2<5>)= 0
PIC16(L)F1512/3
I2C™ 主模式波形图 (接收, 7 位地址)
DS41624A_CN 第 221 页
PIC16(L)F1512/3
20.6.8
20.6.9
应答序列时序
停止条件时序
将 SSPCON2 寄存器的应答序列使能位 ACKEN 置 1 即
可使能应答序列。当该位被置 1 时,SCL 引脚被拉为低
电平,应答数据位的内容输出到 SDA 引脚上。如果用户
希望产生一个应答,则应将 ACKDT 位清零。否则,用
户应在应答序列开始前将 ACKDT 位置 1。然后波特率发
生器进行一个计满返回周期(TBRG)的计数,随后 SCL
引脚电平被置为无效 (拉为高电平)。当 SCL 引脚被采
样为高电平 (时钟仲裁)时,波特率发生器再进行一个
TBRG 周期的计数。然后 SCL 引脚被拉为低电平。在这
之后,ACKEN 位自动清零,波特率发生器关闭,MSSP
模块进入空闲模式 (图 20-30)。
如果将 SSPCON2 寄存器的停止序列使能位 PEN 置 1,
则在接收 / 发送结束后,SDA 引脚上将产生停止位。在
接收 / 发送结束时,SCL 线在第 9 个时钟的下降沿后保
持低电平。当 PEN 位置 1 时,主器件将 SDA 线置为低
电平。当 SDA 线被采样为低电平时,波特率发生器被
重载并递减计数至 0。当波特率发生器超时时,SCL 引
脚被拉为高电平,在一个 TBRG (波特率发生器计满返
回周期)之后, SDA 引脚将被置为无效。当 SDA 引脚
被采样为高电平且 SCL 也是高电平时,SSPSTAT 寄存
器的 P 位被置 1。另一个 TBRG 之后, PEN 位被清零,
同时 SSPIF 位被置 1 (图 20-31)。
20.6.8.1
20.6.9.1
WCOL 状态标志
如果在应答序列进行过程中用户写 SSPBUF,则 WCOL
被置 1,同时缓冲区内容不变 (未发生写操作)。
图 20-30:
WCOL 状态标志
如果在停止序列进行过程中用户写 SSPBUF,则 WCOL
位被置 1,同时缓冲区内容不变 (未发生写操作)。
应答序列波形图
应答序列在此时开始,
写 SSPCON2,
ACKEN = 1,ACKDT = 0
ACKEN 自动清零
TBRG
TBRG
SDA
ACK
D0
SCL
8
9
SSPIF
用软件清零
在接收结束时
将 SSPIF 置 1
用软件清零
在应答序列结束时
将 SSPIF 置 1
注 : TBRG = 一个波特率发生器周期。
图 20-31:
停止条件接收或发送模式
在采样到 SDA 为高电平后,SCL = 1 保持一个 TBRG,
接着 SDA =1 保持一个 TBRG。 P 位(SSPSTAT<4>)置 1。
写 SSPCON2,
PEN 置 1
PEN 位(SSPCON2<2>)被
硬件清零且 SSPIF 位被置 1
第 9 个时钟
的下降沿
TBRG
SCL
SDA
ACK
P
TBRG
TBRG
TBRG
TBRG 后,SCL 被拉为高电平
在时钟脉冲上升沿前将 SDA 置为低电平
以建立停止条件
注 : TBRG = 一个波特率发生器周期。
DS41624A_CN 第 222 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.6.10
20.6.13
休眠模式下的操作
2
在休眠模式下, I C 从模块能够接收地址或数据,并且
在地址匹配或字节传输完成时,如果允许 MSSP 中断,
会将处理器从休眠状态唤醒。
20.6.11
多主器件模式是通过总线仲裁来支持的。当主器件将地
址 / 数据位输出到 SDA 引脚时,如果一个主器件在 SDA
上输出 1(将 SDA 悬空为高电平),而另一个主器件输
出 0,就会发生总线仲裁。当 SCL 引脚悬空为高电平
时,数据应是稳定的。如果 SDA 引脚上期望的数据是
1,而实际采样到的数据是 0,则发生了总线冲突。主器
件会将总线冲突中断标志 BCLIF 置 1,并将 I2C 端口复
位到空闲状态 (图 20-32)。
复位的影响
复位会禁止 MSSP 模块并终止当前的数据传输。
20.6.12
多主器件模式
如果在发送过程中发生总线冲突,则发送操作停止,BF
标志被清零, SDA 和 SCL 线被置为无效,并且可写入
SSPBUF。当执行总线冲突中断服务程序时,如果 I2C
总线空闲,用户可通过发出启动条件恢复通信。
在多主器件模式下,在检测到启动和停止条件时将产生
中断,这可用于判断总线是否空闲。停止 (P)位和启
动 (S)位 在 复 位 或 禁 止 MSSP 模 块 时清零。当
SSPSTAT 寄存器的 P 位置 1 时,可以取得 I 2C 总线的
控制权;否则,总线处于空闲状态,S 位和 P 位都清零。
当总线忙且允许 SSP 中断时,一旦发生停止条件便产生
SSP 中断。
如果在启动、重复启动、停止或应答条件过程中发生总
线冲突,则条件被中止, SDA 和 SCL 线被置为无效,
SSPCON2 寄存器中的相应控制位清零。当执行总线冲
突中断服务程序时,如果 I2C 总线空闲,用户可通过发
出启动条件恢复通信。
在多主器件操作中,必须监视 SDA 线来进行仲裁,以
查看信号电平是否为期望的输出电平。此操作由硬件实
现,其结果保存在 BCLIF 位中。
主器件将继续监视 SDA 和 SCL 引脚。一旦出现停止条
件, SSPIF 位将被置 1。
可能导致仲裁失败的情况是:
•
•
•
•
•
发生总线冲突时无论发送的进度如何,写入 SSPBUF 都
会从第一个数据位开始发送数据。
地址传输
数据传输
启动条件
重复启动条件
应答条件
图 20-32:
多主器件通信、总线冲突和总线仲裁
在多主器件模式下,通过在检测到启动条件和停止条件
时产生中断可以确定总线何时空闲。当 SSPSTAT 寄存
器中的 P 位置 1 时,可以取得 I2C 总线的控制权;否
则,总线处于空闲状态, S 位和 P 位都清零。
发送和应答时的总线冲突时序
当 SCL = 0 时,
数据改变
SDA 线被其他源
拉为低电平
主器件释放
SDA
采样 SDA。 SCL 为高电平时,
数据与主器件驱动的不匹配。
发生了总线冲突。
SDA
SCL
总线冲突中断标志
(BCLIF)置 1
BCLIF
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 223 页
PIC16(L)F1512/3
20.6.13.1
如果 SDA 引脚在该计数周期内采样为低电平,则 BRG
复位,且 SDA 线提前置为有效 (图 20-34)。但是,如
果 SDA 引脚采样为 1,则在 BRG 计数结束时该引脚将
被置为低电平。接着,波特率发生器被重载并递减计数
至 0 ;在此期间,如果 SCL 引脚采样到 0,则不会发生
总线冲突。在 BRG 计数结束时, SCL 引脚被置为低电
平。
启动条件期间的总线冲突
启动条件期间,以下事件将导致总线冲突:
a)
b)
在启动条件开始时, SDA 或 SCL 被采样为低电
平 (图 20-33)。
SDA 被置为低电平之前,SCL 采样为低电平(图
20-34)。
在启动条件期间, SDA 和 SCL 引脚都会被监视。
注:
如果 SDA 引脚或 SCL 引脚已经是低电平,则发生以下
所有事件:
• 中止启动条件,
• BCLIF 标志置 1,并且
• MSSP 模块复位为空闲状态 (图 20-32)。
启动条件从 SDA 和 SCL 引脚被置为无效开始。当 SDA
引脚采样为高电平时,波特率发生器装入值并递减计
数。如果在 SDA 为高电平时,SCL 引脚采样为低电平,
则发生总线冲突,因为这表示另一个主器件在启动条件
期间试图驱动一个数据 1。
图 20-33:
在启动条件期间不会发生总线冲突,因为
两个总线主器件不可能精确地在同一时刻
发出启动条件。因此一个主器件将总是先
于另一个主器件将 SDA 置为有效。但是上
述情况不会引起总线冲突,因为两个主器
件一定会对启动条件后的第一个地址进行
仲裁。如果地址是相同的,必须继续对数
据部分、重复启动条件或停止条件进行仲
裁。
启动条件期间的总线冲突 (仅用于 SDA)
在 SEN 位置 1 之前 SDA 变为低电平。
BCLIF 置 1,
因为 SDA = 0,SCL = 1,
所以 S 位和 SSPIF 位被置 1。
SDA
SCL
SDA = 1 且 SCL = 1 时,
将 SEN 置 1,使能启动条件
因为发生总线冲突,SEN 自动清零。
SSP 模块复位到空闲状态。
SEN
BCLIF
SDA 在启动条件之前
被采样到低电平。 BCLIF 置 1。
因为 SDA = 0 且 SCL = 1,
所以 S 位和 SSPIF 位被置 1。
SSPIF 和 BCLIF
用软件清零
S
SSPIF
SSPIF 和 BCLIF
用软件清零
DS41624A_CN 第 224 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 20-34:
启动条件期间的总线冲突 (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
图 20-35:
启动条件期间由 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
 2012 Microchip Technology Inc.
初稿
用软件清除中断
DS41624A_CN 第 225 页
PIC16(L)F1512/3
20.6.13.2
如果 SDA 为低电平,则表示已发生了总线冲突(即,另
一个主器件正试图发送一个数据 0,见图 20-36)。如果
SDA 被采样到高电平,则 BRG 被重载并开始计数。如
果 SDA 在 BRG 超时之前从高电平变为低电平,则不会
发生总线冲突,因为两个主器件不可能精确地在同一时
刻将 SDA 置为有效。
重复启动条件期间的总线冲突
在重复启动条件期间,如果发生以下情况,则会发生总
线冲突:
a)
b)
在 SCL 由低电平变为高电平期间,在 SDA 上采
样到低电平。
在 SDA 被置为低电平之前, SCL 变为低电平,
表示另一个主器件正试图发送一个数据 1。
如果 SCL 在 BRG 超时之前从高电平变为低电平,且
SDA 尚未被置为有效,那么将发生总线冲突。在此情况
下,另一个主器件在重复启动条件期间正试图发送一个
数据 1 (见图 20-37)。
当用户释放 SDA 并允许该引脚悬空为高电平时, BRG
装入 SSPADD 的值并递减计数至 0。接着 SCL 引脚被
置为无效,当 SCL 引脚采样到高电平时,对 SDA 引脚
进行采样。
图 20-36:
如果在 BRG 超时结束时 SCL 和 SDA 都仍然是高电平,
则SDA引脚被驱动为低电平,BRG被重载并开始计数。
在计数结束时,不管 SCL 引脚的状态如何, SCL 引脚
都被驱动为低电平,重复启动条件结束。
重复启动条件期间的总线冲突 (情形 1)
SDA
SCL
当 SCL 变为高电平时对 SDA 采样。
如果 SDA = 0,BCLIF 置 1 并释放 SDA 和 SCL。
RSEN
BCLIF
用软件清零
S
0
SSPIF
0
图 20-37:
重复启动条件期间的总线冲突 (情形 2)
TBRG
TBRG
SDA
SCL
BCLIF
SCL 先于 SDA 变为低电平,
BCLIF 置 1。 释放 SDA 和 SCL。
用软件清除中断
RSEN
0
S
SSPIF
DS41624A_CN 第 226 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.6.13.3
停止条件从 SDA 被置为低电平开始。当 SDA 采样为低
电平时,允许 SCL 引脚悬空。当引脚被采样到高电平
(时钟仲裁)时,波特率发生器装入 SSPADD 的值并递
减计数至 0。BRG 超时后,采样 SDA。如果 SDA 采样
为低电平,则表示已发生总线冲突。这是因为另一个主
器件正试图发送一个数据 0 (图 20-38)。如果在允许
SDA 悬空为高电平前 SCL 引脚被采样到低电平,也会
发生总线冲突。这是另一个主器件正试图发送一个数据
0 的另外一种情况 (图 20-39)。
停止条件期间的总线冲突
以下事件会导致停止条件期间发生总线冲突:
a)
b)
SDA 引脚已被置为无效并允许悬空为高电平之
后, SDA 在 BRG 超时后被采样到低电平。
SCL 引脚被置为无效之后,SCL 在 SDA 变成高
电平之前被采样到低电平。
图 20-38:
停止条件期间的总线冲突 (情形 1)
TBRG
TBRG
TBRG
SDA
在 TBRG 后 SDA
被采样到低电平,
BCLIF 置 1
SDA 被置为低电平
SCL
PEN
BCLIF
P
0
SSPIF
0
图 20-39:
停止条件期间的总线冲突 (情形 2)
TBRG
TBRG
TBRG
SDA
在 SDA 变为高电平前,SCL 变为低电平,
BCLIF 置 1
SDA 被置为有效
SCL
PEN
BCLIF
P
0
SSPIF
0
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 227 页
PIC16(L)F1512/3
表 20-3:
名称
INTCON
与 I2C™ 操作相关的寄存器汇总
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
复位值
所在页
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
PIE2
OSFIE
—
—
—
BCLIE
—
—
CCP2IE
74
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
PIR2
OSFIF
—
BCLIF
—
—
CCP2IF
—
—
SSPADD
SSPBUF
ADD<7:0>
76
234
187*
同步串行口接收缓冲 / 发送寄存器
SSPCON1
WCOL
SSPOV
SSPEN
CKP
SSPCON2
GCEN
ACKSTAT
ACKDT
ACKEN
RCEN
PEN
SSPM<3:0>
RSEN
SEN
231
232
SSPCON3
ACKTIM
PCIE
SCIE
BOEN
SDAHT
SBCDE
AHEN
DHEN
233
SSPMSK
MSK7
MSK6
MSK5
MSK4
MSK3
MSK2
MSK1
MSK0
234
SSPSTAT
SMP
CKE
D/A
P
S
R/W
UA
BF
230
TRISA7
TRISA6
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
108
TRISA
图注:
*
— = 未实现位,读为 0。 I2C™ 模式下的 MSSP 模块不使用阴影单元。
提供寄存器信息的页。
DS41624A_CN 第 228 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
20.7
赖于 MSSP 当前的工作模式。
波特率发生器
MSSP模块具有一个波特率发生器,可用于在I2C和SPI
主模式下产生时钟。波特率发生器(BRG)重载值放在
SSPADD 寄存器(寄存器 20-6)中。当发生对 SSPBUF
的写操作时,波特率发生器将自动开始递减计数。
表 20-4 列出了不同的指令周期下的时钟速率以及装入
SSPADD 的 BRG 值。
在给定操作完成时,内部时钟会自动停止计数,并且时
钟引脚将保持它的最后状态。
FOSC
FCLOCK = --------------------------------------------- SSPADD + 1   4 
公式 20-1:
图 20-40 中的内部信号 “重载”会触发将 SSPADD 值
装入 BRG 计数器。此操作在模块时钟信号的每个振荡
周期内发生两次。指定重载信号何时置为有效的逻辑依
图 20-40:
波特率发生器框图
SSPM<3:0>
SSPM<3:0>
重载
SCL
控制
SSPADD<7:0>
重载
SSPCLK
注:
FOSC/2
在用作 I2C 的波特率发生器时,值 0x00、
0x01 和 0x02 对于 SSPADD 是无效的。这是
实现限制。
表 20-4:
注
BRG 递减计数器
不同 BRG 下的 MSSP 时钟速率
FOSC
FCY
BRG 值
FCLOCK
(两次 BRG 计满返回)
16 MHz
4 MHz
09h
400 kHz(1)
16 MHz
4 MHz
0Ch
308 kHz
16 MHz
4 MHz
27h
100 kHz
4 MHz
1 MHz
09h
100 kHz
1: 虽然 I2C 接口各方面都不符合 400 kHz I2C 规范 (该规范适用于大于 100 kHz 的频率),但在需要较高频
率的应用场合可以慎重使用。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 229 页
PIC16(L)F1512/3
20.8
MSSP 控制寄存器
寄存器 20-1:
SSPSTAT:SSP 状态寄存器
R/W-0/0
R/W-0/0
R-0/0
R-0/0
R-0/0
R-0/0
R-0/0
R-0/0
SMP
CKE
D/A
P
S
R/W
UA
BF
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
SMP:SPI 数据输入采样位
SPI 主模式:
1 = 在数据输出时间的末端采样输入数据
0 = 在数据输出时间的中间采样输入数据
SPI 从模式:
当 SPI 工作在从模式时,必须将 SMP 清零
在 I2 C 主模式或从模式下:
1 = 禁止标准速度模式 (100 kHz 和 1 MHz)下的压摆率控制
0 = 使能高速模式 (400 kHz)下的压摆率控制
bit 6
CKE:SPI 时钟边沿选择位 (仅限 SPI 模式)
在 SPI 主模式或从模式下:
1 = 时钟状态从有效转换到空闲时发送
0 = 时钟状态从空闲转换到有效时发送
仅在 I2 C™ 模式下:
1 = 使能输入逻辑以使阈值符合 SMBus 规范
0 = 禁止 SMBus 特定输入
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 为空
DS41624A_CN 第 230 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 20-2:
SSPCON1: SSP 控制寄存器 1
R/C/HS-0/0
R/C/HS-0/0
R/W-0/0
R/W-0/0
WCOL
SSPOV
SSPEN
CKP
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
SSPM<3:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
u = 不变
x = 未知
U = 未实现位,读为 0
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
HS = 硬件置 1 位
C = 用户清零位
bit 7
WCOL :写冲突检测位
主模式:
1 = 当 I2C 不满足启动发送数据的条件时,试图向 SSPBUF 寄存器写入数据
0 = 无冲突
从模式:
1 = 正在发送前一个字时,又有数据写入 SSPBUF 寄存器 (必须用软件清零)
0 = 无冲突
bit 6
SSPOV:接收溢出指示位 (1)
在 SPI 模式下:
1 = SSPBUF 寄存器中仍保存前一数据时,又接收到一个新的字节。如果发生溢出,SSPSR 中的数据会丢失。溢出只会在从模式下
发生。在从模式下,即使只是发送数据,用户也必须读 SSPBUF,以避免将溢出位置 1。在主模式下,溢出位不会被置 1,因
为每次接收 (和发送)新数据都是通过写入 SSPBUF 寄存器启动的 (必须用软件清零)。
0 = 无溢出
2
在 I C 模式下:
1 = SSPBUF 寄存器中仍保存前一字节时,又接收到一个新的字节。 在发送模式下,SSPOV 是“无关位”(必须用软件清零)。
0 = 无溢出
bit 5
SSPEN:同步串口使能位
在两种模式下,当使能时,必须将这些引脚正确地配置为输入或输出
在 SPI 模式下:
1 = 使能串口并将 SCK、 SDO、 SDI 和 SS 配置为串口引脚源 (2)
0 = 禁止串口并将上述引脚配置为 I/O 端口引脚
在 I2 C 模式下:
1 = 使能串口并将 SDA 和 SCL 引脚配置为串口引脚源 (3)
0 = 禁止串口并将上述引脚配置为 I/O 端口引脚
bit 4
CKP:时钟极性选择位
在 SPI 模式下:
1 = 时钟的空闲状态为高电平
0 = 时钟的空闲状态为低电平
在 I2 C 从模式下:
SCL 释放控制
1 = 使能时钟
0 = 保持时钟为低电平 (时钟延长) (用来确保数据建立时间。)
在 I2 C 主模式下:
在此模式下未使用
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))(4)
1001 = 保留。
1010 = SPI 主模式,时钟 = FOSC/(4 * (SSPADD+1))(5)
1011 = I2C 固件控制的主模式 (从器件空闲)
1100 = 保留。
1101 = 保留。
1110 = I2C 从模式, 7 位地址,并允许启动位和停止位中断
1111 = I2C 从模式, 10 位地址,并允许启动位和停止位中断
注
1:
2:
3:
4:
5:
在主模式下,溢出位不会被置 1,因为每次接收 (和发送)新数据都是通过写入 SSPBUF 寄存器启动的。
当使能时,必须将这些引脚正确地配置为输入或输出。
当使能时,必须将 SDA 和 SCL 引脚配置为输入引脚。
对于 I2C 模式,不支持 SSPADD 值为 0、 1 或 2。
不支持 SSPADD 值为 0。 改为使用 SSPM = 0000。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 231 页
PIC16(L)F1512/3
寄存器 20-3:
SSPCON2: SSP 控制寄存器 2
R/W-0/0
R-0/0
R/W-0/0
R/S/HS-0/0
R/S/HS-0/0
R/S/HS-0/0
R/S/HS-0/0
R/W/HS-0/0
GCEN
ACKSTAT
ACKDT
ACKEN
RCEN
PEN
RSEN
SEN
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
HC = 硬件清零位
S = 用户置 1 位
bit 7
GCEN:广播呼叫使能位 (仅限 I2C 从模式)
1 = 当 SSPSR 接收到广播呼叫地址 (0x00 或 00h)时允许中断
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 主模式)
SCKMSSP 释放控制:
1 = 在 SDA 和 SCL 引脚上发出停止条件。 由硬件自动清零。
0 = 停止条件空闲
bit 1
RSEN:重复启动条件使能位 (仅限 I2C 主模式)
1 = 在 SDA 和 SCL 引脚上发出重复启动条件。由硬件自动清零。
0 = 重复启动条件空闲
bit 0
SEN:启动条件使能位 (仅限 I2C 主模式)
在主模式下:
1 = 在 SDA 和 SCL 引脚上发出启动条件。 由硬件自动清零。
0 = 启动条件空闲
在从模式下:
1 = 为从发送和从接收 (已使能延长)使能时钟延长
0 = 禁止时钟延长
注
1: 对于 ACKEN、 RCEN、 PEN、 RSEN 和 SEN 位:如果 I2C 模块不处于空闲模式,该位可能不会被置 1
(不支持并行操作),并且可能不会写入 SSPBUF (或禁止写入 SSPBUF)。
DS41624A_CN 第 232 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 20-4:
SSPCON3: SSP 控制寄存器 3
R-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
ACKTIM
PCIE
SCIE
BOEN
SDAHT
SBCDE
AHEN
DHEN
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
ACKTIM:应答时间状态位 (仅限 I2C 模式) (3)
1 = 指示 I2C 总线处于应答序列中,在 SCL 时钟的第 8 个下降沿置 1
0 = 不处于应答序列中,在 SCL 时钟的第 9 个上升沿清零
bit 6
PCIE:停止条件中断允许位 (仅限 I2C 模式)
1 = 在检测到停止条件时允许中断
0 = 禁止检测到停止条件时的中断 (2)
bit 5
SCIE:启动条件中断允许位 (仅限 I2C 模式)
1 = 在检测到启动或重复启动条件时允许中断
0 = 禁止检测到启动条件时的中断 (2)
bit 4
BOEN:缓冲区改写使能位
在 SPI 从模式下:(1)
1 = SSPBUF 在每次新的数据字节移入时更新,并忽略 BF 位
0 = 如果在接收到新字节时SSPSTAT寄存器的BF位已置1,则SSPCON1寄存器的SSPOV位会置
1,并且不会更新缓冲区
在 I2 C 主模式和 SPI 主模式下:
该位被忽略。
在 I2 C 从模式下:
1 = 仅当BF位 = 0时,在接收到地址/数据字节时,更新SSPBUF并产生ACK信号,忽略SSPOV位
的状态。
0 = 只有在 SSPOV 清零时才更新 SSPBUF
bit 3
SDAHT:SDA 保持时间选择位 (仅限 I2C 模式)
1 = 在 SCL 的下降沿之后,在 SDA 上最少有 300 ns 的保持时间
0 = 在 SCL 的下降沿之后,在 SDA 上最少有 100 ns 的保持时间
bit 2
SBCDE:从模式总线冲突检测使能位 (仅限 I2C 从模式)
如果在 SCL 的上升沿,在模块输出高电平状态时采样到 SDA 为低电平,则 PIR2 寄存器的 BCLIF 位
会置 1,总线会变为空闲状态
1 = 允许从器件总线冲突中断
0 = 禁止从器件总线冲突中断
bit 1
AHEN:地址保持使能位 (仅限 I2C 从模式)
1 = 在所接收匹配地址字节的第 8 个 SCL 下降沿之后,SSPCON1 寄存器的 CKP 位将清零,SCL 将保持
低电平。
0 = 禁止地址保持
bit 0
DHEN:数据保持使能位 (仅限 I2C 从模式)
1 = 在所接收数据字节的第 8 个 SCL 下降沿之后,从器件硬件清零 SSPCON1 寄存器的 CKP 位,而 SCL
则保持低电平。
0 = 禁止数据保持
注
1: 用于菊花链 SPI 操作;使用户可以忽略除最后一个接收到的字节之外的所有字节。在接收到新字节且
BF = 1 时, SSPOV 仍然会置 1,但硬件会继续将最新字节写入 SSPBUF。
2: 在启动和停止条件检测明确列为使能的从模式下,该位没有任何作用。
3: ACKTIM 状态位仅在 AHEN 位或 DHEN 位置 1 时有效。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 233 页
PIC16(L)F1512/3
寄存器 20-5:
R/W-1/1
SSPMSK: SSP 掩码寄存器
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
R/W-1/1
MSK<7:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-1
MSK<7:1>:掩码位
1 = 接收到的地址位 bit n 与 SSPADD<n> 相比较来检测 I2C 模式下地址是否匹配
0 = 接收到的地址位 bit n 不用于检测 I2C 模式下地址是否匹配
bit 0
MSK<0>: 用于 I2C 从模式, 10 位地址的掩码位
I2 C 从模式, 10 位地址 (SSPM<3:0> = 0111 或 1111):
1 = 接收到的地址位 bit 0 与 SSPADD<0> 相比较来检测 I2C 模式下地址是否匹配
0 = 接收到的地址位 bit 0 不用于检测 I2C 模式下地址是否匹配
I2 C 从模式, 7 位地址:
该位被忽略。
SSPADD:MSSP 地址和波特率寄存器 (I2C 模式)
寄存器 20-6:
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
ADD<7:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
主模式:
bit 7-0
ADD<7:0>:波特率时钟分频比位
SCL 引脚时钟周期 = ((ADD<7:0> + 1) *4)/FOSC
10 位从模式——高位地址字节:
bit 7-3
未使用:不使用高位地址字节。该寄存器的位状态为 “无关”。主器件发送的位格式由 I2C 规范确
定,必须等于 11110。但是,那些位通过硬件进行比较,并且不受该寄存器中的值影响。
bit 2-1
ADD<2:1>:10 位地址的高 2 位
bit 0
未使用:在此模式下未使用。位状态为 “无关”。
10 位从模式——低位地址字节:
bit 7-0
ADD<7:0>:10 位地址的低 8 位
7 位从模式:
bit 7-1
ADD<7:1>:7 位地址
bit 0
未使用:在此模式下未使用。位状态为 “无关”。
DS41624A_CN 第 234 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
21.0
捕捉 / 比较 /PWM 模块
捕捉/比较/PWM模块是允许用户计时和控制不同事件,
以及产生脉宽调制 (Pulse-Width Modulation, PWM)
信号的外设。在捕捉模式下,外设允许对事件的持续时
间进行计时。当超过预先确定的时间时,比较模式允许
用户触发一个外部事件。 PWM 模式可以产生不同频率
和占空比的脉宽调制信号。
该器件系列包含 2 个标准捕捉 / 比较 /PWM 模块(CCP1
和 CCP2)。
所有 CCP 模块的捕捉和比较功能都是相同的。
注
1: 在具有多个 CCP 模块的器件中,要特别
注意所使用的寄存器名称。模块缩略名之
后的数字用于区分不同的模块。 例如,
CCP1CON和CCP2CON分别控制两个完
全不同 CCP 模块相同的运行情况。
2: 在本章中,在所有工作模式下,通常指的
CCP 模块都可以解释为 CCPx 模块。在需
要时,寄存器名称、模块信号、I/O 引脚和
位名称可以使用通用标识符 “x”(数字)
来识别某个特定模块。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 235 页
PIC16(L)F1512/3
21.1
21.1.2
捕捉模式
为使 CCP 模块使用捕捉特性, Timer1 必须运行在定时
器模式或同步计数器模式下。 在异步计数器模式下,可
能无法进行捕捉操作。
本节介绍的捕捉模式功能适用于所有 CCP 模块而且是
相同的。
捕捉模式使用 16 位 Timer1 资源。当 CCPx 引脚上发生
事件时,16 位 CCPRxH:CCPRxL 寄存器对会分别捕捉
和存储 TMR1H:TMR1L 寄存器对的 16 位值。这些事件
定义如下,可通过 CCPxCON 寄存器的 CCPxM<3:0>
位进行配置:
•
•
•
•
关于配置 Timer1 的更多信息,请参见第 18.0 节 “带门
控控制的 Timer1 模块”。
21.1.3
21.1.4
进行捕捉时,PIRx 寄存器的中断请求标志位 CCPxIF 被
置 1。该中断标志必须用软件清零。如果在 CCPRxH 和
CCPRxL 寄存器对中的值被读取之前又发生另一次捕
捉,那么原来的捕捉值会被新捕捉值覆盖。
从一个捕捉预分频比切换到另一个捕捉预分频比不会清
零预分频器,而且可能产生一次错误中断。为避免此意
外操作,可在改变预分频比之前通过清零 CCPxCON 寄
存器来关闭模块。公式 21-1 给出了执行此功能的代码。
CCP 引脚配置
在捕捉模式下,应通过将相关的 TRIS 控制位置 1,将
CCPx 引脚配置为输入。
此外,还可以通过使用 APFCON 寄存器将 CCP2 引脚
功能转移到备用引脚上。更多详细信息,请参见寄存器
12-1 “APFCON:备用引脚功能控制寄存器”。
例 21-1:
CLRF
MOVLW
MOVWF
捕捉模式工作原理框图
预分频器
 1, 4, 16
标志位 CCPxIF 置 1
(PIRX 寄存器)
CCPx
引脚
和
边沿检测
CCPRxH
CCPRxL
TMR1H
TMR1L
改变捕捉预分频比
BANKSEL CCPxCON
如果 CCPx 引脚被配置为输出,则写端口
将产生一次捕捉条件。
图 21-1:
CCP 预分频器
通过 CCPxCON 寄存器的 CCPxM<3:0> 位,可以指定
4 种预分频比设置。每当关闭 CCP 模块,或者 CCP 模
块不在捕捉模式下时,预分频器计数器就会被清零。任
何复位都会将预分频器计数器清零。
图 21-1 给出了捕捉操作的简化框图。
注:
软件中断模式
当捕捉模式改变时,可能会产生错误的捕捉中断。用户
应保持 PIEx 寄存器的 CCPxIE 中断允许位清零以避免
错误中断。此外,用户应在工作模式的任何改变之后清
零 PIRx 寄存器的 CCPxIF 中断标志位。
每个下降沿
每个上升沿
每 4 个上升沿
每 16 个上升沿
21.1.1
TIMER1 模式资源
;Set Bank bits to point
;to CCPxCON
CCPxCON
; Turn CCP module off
NEW_CAPT_PS ;Load the W reg with
; the new prescaler
; move value and CCP ON
CCPxCON
;Load CCPxCON with this
; value
捕捉
使能
CCPxM<3:0>
系统时钟(FOSC)
DS41624A_CN 第 236 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
21.1.5
休眠期间的捕捉操作
捕捉模式能否正常工作取决于 Timer1 模块。有两个选项
可用于在捕捉模式下驱动 Timer1 模块。它可由指令时钟
(FOSC/4)驱动,或由外部时钟源驱动。
当 Timer1 时钟源由 FOSC/4 提供时, Timer1 将不会在
休眠期间递增。当器件被从休眠状态唤醒时,Timer1 将
从先前状态继续。
当 Timer1 通过外部时钟源提供时钟时,捕捉模式会在
休眠模式期间继续工作。
21.1.6
备用引脚位置
该模块具有以下 I/O 引脚:通过使用备用引脚功能寄存
器 APFCON,可将 I/O 引脚转移到其他位置。要确定可
转移哪些引脚以及其在复位时的默认位置,请参见第
12.1 节 “备用引脚功能”了解更多信息。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 237 页
PIC16(L)F1512/3
21.2
21.2.2
比较模式
在比较模式下,Timer1 必须运行在定时器模式或同步计
数器模式下。在异步计数器模式下,可能无法进行比较
操作。
本节介绍的比较模式功能适用于所有 CCP 模块而且是
相同的。
比较模式使用 16 位 Timer1 资源。 CCPRxH:CCPRxL
寄存器对的 16 位值会不断与 TMR1H:TMR1L 寄存器对
的 16 位值进行比较。当发生匹配时,将发生以下事件
之一:
•
•
•
•
•
TIMER1 模式资源
关于配置 Timer1 的更多信息,请参见第 18.0 节 “带门
控控制的 Timer1 模块”。
注:
翻转 CCPx 输出
将 CCPx 输出置 1
将 CCPx 输出清零
产生特殊事件触发信号
产生软件中断
21.2.3
引脚的动作由 CCPxCON 寄存器的 CCPxM<3:0> 控制
位的值决定。同时,中断标志位 CCPxIF 置 1。
在比较模式下,Timer1 时钟源不能由系统
时钟 (FOSC)提供。为在比较模式下识别
CCPx 引脚上的触发事件, Timer1 时钟源
必须由指令时钟 (FOSC/4)或外部时钟源
提供。
软件中断模式
当选择产生软件中断模式(CCPxM<3:0> = 1010)时,
CCPx 模块不会对 CCPx 引脚进行控制(见 CCPxCON
寄存器)。
所有比较模式都能产生中断。
图 21-2 给出了比较操作的简化框图。
21.2.4
图 21-2:
当选择特殊事件触发器模式 (CCPxM<3:0> = 1011)
时, CCPx 模块将进行以下操作:
比较模式工作原理框图
CCPxM<3:0>
模式选择
• 复位 Timer1
• 如果 ADC 被使能,则启动 ADC 转换
将 CCPxIF 中断标志位置 1
(PIRx)
4
CCPRxH CCPRxL
CCPx
引脚
Q
S
R
输出
逻辑
匹配
在该模式下, CCPx 模块不会对 CCPx 引脚进行控制。
一旦TMR1H和TMR1L寄存器对与CCPRxH和CCPRxL
寄存器对之间发生匹配,便会发生 CCP 的特殊事件触
发输出。TMR1H 和 TMR1L 寄存器对在 Timer1 时钟的
下一个上升沿到来之前不会复位。特殊事件触发输出也
会启动一次 A/D 转换 (如果 A/D 模块使能) 。 这使
CCPRxH 和 CCPRxL 寄存器对实际上作为 Timer1 的 16
位可编程周期寄存器。
比较器
TMR1H
TRIS
输出使能
TMR1L
特殊事件触发信号
21.2.1
更多信息,请参见第 16.2.5 节 “特殊事件触发器”。
注
CCPx 引脚配置
用户必须通过将相关的 TRIS 位清零,将 CCPx 引脚配
置为输出。
1: CCPx 模块的特殊事件触发信号不会将
PIR1 寄存器的中断标志位 TMR1IF 置 1。
2: 通过在产生特殊事件触发信号的时钟边沿
和使 Timer1 复位的时钟边沿之间更改
CCPRxH和CCPRxL寄存器对的内容来移
除匹配条件,可以避免复位发生。
此外,还可以通过使用 APFCON 寄存器(寄存器 12-1)
将 CCP2 引脚功能转移到备用引脚上。 更多详细信息,
请参见第 12.1 节 “备用引脚功能”。
注:
特殊事件触发器
清零 CCPxCON 寄存器会将 CCPx 比较输
出锁存器强制设为默认的低电平。 这不是
端口 I/O 数据锁存器。
DS41624A_CN 第 238 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
21.2.5
休眠期间的比较操作
比较模式能否正常工作取决于系统时钟(FOSC)。由于
FOSC 在休眠模式下关闭,比较模式在休眠模式下将不
能正常工作。
21.2.6
备用引脚位置
该模块具有以下 I/O 引脚:通过使用备用引脚功能寄存
器 APFCON,可将 I/O 引脚转移到其他位置。要确定可
转移哪些引脚以及其在复位时的默认位置,请参见第
12.1 节 “备用引脚功能”了解更多信息。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 239 页
PIC16(L)F1512/3
21.3
PWM 概述
图 21-3:
脉宽调制 (PWM)是一种通过在完全开启和完全关闭
状态之间进行快速切换而为负载供电的方案。 PWM 信
号类似于方波,信号的高电平部分视为开启状态,信号
的低电平部分视为关闭状态。 高电平部分 (也称为脉
宽)可以随时间而变,并以步幅为单位进行定义。 施加
的步幅数量越多 (这会增大脉宽),为负载提供的电量
就越多。 施加的步幅数量降低时 (这会缩短脉宽),提
供的电量就会下降。 PWM 周期定义为一个完整周期的
持续时间,或者开启和关闭时间相加的总时间。
周期
脉冲宽度
TMR2 = 0
图 21-4:
CCPxCON<5:4>
CCPRxL
CCPRxH(2)(从)
图 21-3 给出了 PWM 信号的典型波形图。
CCPx
R
比较器
标准 PWM 操作
本节介绍的标准 PWM 功能适用于所有 CCP 模块而且是
相同的。
TMR2
(1)
Q
S
TRIS
标准 PWM 模式可以在 CCPx 引脚上产生最高可达 10 位
分辨率的脉宽调制 (PWM)信号。 周期、占空比和分
辨率由以下寄存器控制:
比较器
PR2 寄存器
T2CON 寄存器
CCPRxL 寄存器
CCPxCON 寄存器
PR2
注
图 21-4 给出了 PWM 操作的简化框图。
注
简化的 PWM 框图
占空比寄存器
占空比这一术语描述开启时间与关闭时间之间以百分比
形式表示的比例,0% 代表完全关闭,100% 代表完全开
启。 占空比越低,对应的供电量就越低;占空比越高,
对应的供电量就越高。
•
•
•
•
TMR2 = PR2
TMR2 = CCPRxH:CCPxCON<5:4>
PWM 分辨率定义可以在单个 PWM 周期中出现的最大
步幅数量。 分辨率越高,就可以越精确地控制脉宽时
间,从而更精确地控制负载上的供电量。
21.3.1
CCP PWM 输出信号
清零定时器,
翻转 CCPx 引脚的电平并
锁存占空比
1: 8 位定时器 TMR2 寄存器与 2 位内部系统时钟
(FOSC)或预分频器的 2 位一起构成 10 位时
基。
2: 在 PWM 模式下, CCPRxH 是只读寄存器。
1: 要使能 CCPx 引脚上的 PWM 输出,必须
清零相应的 TRIS 位。
2: 清零 CCPxCON 寄存器会放弃对 CCPx 引
脚的控制。
DS41624A_CN 第 240 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
21.3.2
设置 PWM 操作
当 TMR2 中的值与 PR2 中的值相等时,在下一个递增
周期将发生以下 3 个事件:
当将 CCP 模块配置为标准 PWM 操作时,可采用以下步
骤:
1.
2.
3.
4.
5.
6.
• TMR2 被清零
• CCPx 引脚被置 1 (例外情况:如果 PWM 占空
比 = 0%,引脚将不会被置 1。)
• PWM 占空比从 CCPRxL 锁存到 CCPRxH
通过将相关的 TRIS 位置 1,禁止 CCPx 引脚输
出驱动器。
将 PWM 周期值装入 PR2 寄存器。
通过将相应值装入 CCPxCON 寄存器,将 CCP
模块配置为 PWM 模式。
将 PWM 占空比值装入 CCPRxL 寄存器和
CCPxCON 寄存器的 DCxBx 位。
配置并启动 Timer2:
• 清零 PIRx 寄存器的 TMR2IF 中断标志位。
请参见下面的 “注”。
• 用定时器预分频值配置 T2CON 寄存器的
T2CKPS 位。
• 通过将 T2CON 寄存器的 TMR2ON 位置 1
使能定时器。
使能 PWM 输出引脚:
• 等待直到定时器溢出, PIR1 寄存器的
TMR2IF 位置 1。请参见下面的 “注”。
• 通过将相关的 TRIS 位清零,使能 CCPx 引脚
输出驱动器。
注:
21.3.5
21.3.3
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 寄存器是只读的。
公式 21-2 用于计算 PWM 脉冲宽度。
公式 21-3 用于计算 PWM 占空比。
公式 21-2:
为在第一个 PWM 输出时发送完整的占空
比和周期,设置过程必须包含上述步骤。
如果在第一个输出时以完整的 PWM 信号
起始并非至关重要,那么可以忽略步骤 6。
注:
在确定PWM频率时不会用到定时器后分频
比 (见第 19.1 节 “Timer2 工作原理”)。
脉冲宽度
脉冲宽度
Pulse
Width =  CCPRxL:CCPxCON<5:4>  
T OSC  (TMR2 预分频值 )
TIMER2 定时器资源
公式 21-3:
PWM标准模式使用8位Timer2定时器资源来指定PWM
周期。
21.3.4
CCPRxL:CCPxCON<5:4> Duty Cycle占空比
Ratio = ---------------------------------------------------------------------4  PR2 + 1 
PWM 周期
PWM 周期可通过 Timer2 的 PR2 寄存器来指定。PWM
周期可由公式 21-1 计算。
公式 21-1:
CCPRxH 寄存器和一个 2 位的内部锁存器用于给 PWM
占空比提供双重缓冲。 这种双重缓冲结构对避免在
PWM 操作中产生毛刺非常重要。
PWM 周期
8 位定时器 TMR2 寄存器与 2 位内部系统时钟 (FOSC)
或预分频器的 2 位一起构成 10 位时基。 如果 Timer2 预
分频比设置为 1:1,则使用系统时钟。
PWM 周期 =   PR2  + 1   4  T OSC 
(TMR2 预分频值 )
注
当 10 位时基与 CCPRxH 和 2 位锁存值匹配时,CCPx
引脚被清零 (见图 21-4)。
1: TOSC = 1/FOSC
 2012 Microchip Technology Inc.
占空比
初稿
DS41624A_CN 第 241 页
PIC16(L)F1512/3
21.3.6
PWM 分辨率
公式 21-4:
分辨率决定给定周期的可用占空比数。例如,10 位分辨
率将可得到 1024 个不连续的占空比,而 8 位分辨率将可
得到 256 个不连续的占空比。
log  4  PR2 + 1  - bits
Resolution
分辨率 = ----------------------------------------位
log  2 
当 PR2 为 255 时, PWM 最大分辨率为 10 位。分辨率
是 PR2 寄存器值的函数,如公式 21-4 所示。
表 21-1:
PWM 分辨率
注:
如果脉冲宽度值比周期长,则指定的 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
19.61 kHz
76.92 kHz
153.85 kHz
200.0 kHz
PR2 值
最大分辨率 (位)
表 21-2:
PWM 频率和分辨率示例 (FOSC = 8 MHz)
PWM 频率
定时器预分频值 (1、 4 和 16)
PR2 值
最大分辨率 (位)
DS41624A_CN 第 242 页
1.22 kHz
4.90 kHz
16
4
1
1
1
1
0x65
0x65
0x65
0x19
0x0C
0x09
8
8
8
6
5
5
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
21.3.7
21.3.10
休眠模式下的操作
该模块具有以下 I/O 引脚:通过使用备用引脚功能寄存
器 APFCON,可将 I/O 引脚转移到其他位置。要确定可
转移哪些引脚以及其在复位时的默认位置,请参见第
12.1 节 “备用引脚功能”了解更多信息。
在休眠模式下,TMR2 寄存器将不会递增,模块状态也
不会改变。如果 CCPx 引脚正在驱动一个值,则会继续
驱动该值。 当器件被唤醒时, TMR2 将从先前状态继
续。
21.3.8
备用引脚位置
改变系统时钟频率
PWM 频率是由系统时钟频率得到的。 系统时钟频率的
任何改变将导致 PWM 频率的改变。 更多详细信息,请
参见第 5.0 节 “振荡器模块 (带故障保护时钟监视
器)”。
21.3.9
复位的影响
任何复位都将强制所有端口为输入模式,并强制CCP寄
存器为其复位状态。
表 21-3:
名称
APFCON
CCP1CON
INTCON
PIE1
与标准 PWM 相关的寄存器汇总
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
寄存器
所在页
—
—
—
—
—
—
SSSEL
CCP2SEL
106
—
—
GIE
PEIE
TMR0IE
DC1B<1:0>
INTE
IOCIE
TMR0IF
CCP1M<3:0>
INTF
IOCIF
72
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
244
PIE2
OSFIE
—
—
—
BCLIE
—
—
CCP2IE
74
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
PIR2
OSFIF
—
—
—
BCLIF
—
—
CCP2IF
PR2
T2CON
Timer2 周期寄存器
—
TMR2
Timer2 模块寄存器
TRISA
图注:
TRISA7
TRISA6
76
179*
T2OUTPS<3:0>
TMR2ON
T2CKPS<1:0>
181
179
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
108
— = 未实现位,读为 0。 PWM 不使用阴影单元。
* 提供寄存器信息的页。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 243 页
PIC16(L)F1512/3
21.4
CCP 控制寄存器
寄存器 21-1:
CCPxCON: CCPx 控制寄存器
U-0
U-0
—
—
R/W-0/0
R/W-0/0
R/W-0/0
DCxB<1:0>
R/W-0/0
R/W-0/0
R/W-0/0
CCPxM<3:0>
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7-6
未实现: 读为 0
bit 5-4
DCxB<1:0>:PWM 占空比最低有效位
捕捉模式:
未使用
比较模式:
未使用
PWM 模式:
这两位是 PWM 占空比的低 2 位。高 8 位在 CCPRxL 中。
bit 3-0
CCPxM<3:0>:CCPx 模式选择位
0000 = 捕捉 / 比较 /PWM 关闭 (复位 CCPx 模块)
0001 = 保留
0010 = 比较模式:发生匹配时翻转输出
0011 = 保留
0100 =
0101 =
0110 =
0111 =
捕捉模式:每个下降沿
捕捉模式:每个上升沿
捕捉模式:每 4 个上升沿
捕捉模式:每 16 个上升沿
1000 =
1001 =
1010 =
1011 =
比较模式:发生比较匹配时将输出置 1 (将 CCPxIF 置 1)
比较模式:发生比较匹配时将输出清零 (将 CCPxIF 置 1)
比较模式:仅产生软件中断
比较模式:特殊事件触发 (将 CCPxIF 位置 1,如果使能了 A/D 模块,还将启动 A/D 转换)
11xx = PWM 模式
DS41624A_CN 第 244 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
22.0
增强型通用同步 / 异步收发器
(EUSART)
EUSART 模块具备以下功能:
•
•
•
•
•
•
•
•
•
•
•
增强型通用同步 / 异步收发器 (EUSART)模块是一种
串行 I/O 通信外设。它包含用来完成与器件程序执行无
关的输入或输出串行数据传输所需的所有时钟发生器、
移位寄存器和数据缓冲区等。EUSART 也可称为串行通
信接口 (Serial Communication Interface, SCI),可
配置为全双工异步系统或半双工同步系统。全双工模式
可用来与外设系统通信,如 CRT 终端和个人计算机。半
双工同步模式用于与外设通信,如 A/D 或 D/A 集成电
路、串行 EEPROM 或其他单片机。这些器件通常不具
备用以产生波特率的内部时钟,并需要由主同步器件提
供外部时钟信号。
全双工异步收发
双字符输入缓冲区
单字符输出缓冲区
可编程 8 位或 9 位字符长度
9 位模式下的地址检测
输入缓冲区溢出错误检测
接收字符帧错误检测
半双工同步主模式
半双工同步从模式
同步模式下的可编程时钟极性
休眠模式下的操作
EUSART 模块还具备以下特性,使其成为局域互联网
(Local Interconnect Network,LIN)总线系统的理想选
择:
• 自动检测和波特率校准
• 接收到间隔字符时唤醒
• 13 位间隔字符发送
EUSART 发送器和接收器的框图如图 22-1 和图 22-2 所
示。
图 22-1:
EUSART 发送框图
数据总线
TXIE
中断
TXIF
TXREG 寄存器
8
TX/CK 引脚
MSb
LSb
(8)
0
引脚缓冲
和控制
TRMT
SPEN
• • •
发送移位寄存器(TSR)
TXEN
波特率发生器
FOSC
TX9
n
BRG16
+1
SPBRGH
÷n
SPBRGL
倍频值
x4
x16 x64
SYNC
1 X 0 0
0
BRGH
X 1 1 0
0
BRG16
X 1 0 1
0
 2012 Microchip Technology Inc.
TX9D
初稿
DS41624A_CN 第 245 页
PIC16(L)F1512/3
图 22-2:
EUSART 接收框图
SPEN
CREN
RX/DT 引脚
波特率发生器
数据
恢复
FOSC
BRG16
SPBRGH
SPBRGL
倍频值
x4
x16 x64
SYNC
1 X 0 0
0
BRGH
X 1 1 0
0
BRG16
X 1 0 1
0
停止
RCIDL
RSR 寄存器
MSb
引脚缓冲
和控制
+1
OERR
(8)
•••
7
LSb
1
0
启动
RX9
÷n
n
FERR
RX9D
RCREG 寄存器
8
FIFO
数据总线
RCIF
RCIE
中断
EUSART 模块的操作由以下 3 个寄存器控制:
• 发送状态和控制寄存器 (TXSTA)
• 接收状态和控制寄存器 (RCSTA)
• 波特率控制寄存器 (BAUDCON)
这些寄存器的详细信息请分别参见寄存器 22-1、寄存
器 22-2 和寄存器 22-3。
当未使能接收器或发送器部分时,对应的 RX 或 TX 引脚
可用于通用输入和输出。
DS41624A_CN 第 246 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
22.1
EUSART 异步模式
22.1.1.2
向 TXREG 寄存器写入一个字符时启动发送。如果这是
首字符,或前一个字符被完全从 TSR 中送出, TXREG
中的数据就立即被传送到 TSR 寄存器。如果 TSR 中仍
保 存 前 一 个 字 符 的 全 部 或 部 分,则 新 字 符 被 保 存 在
TXREG 中,直到发送了前一个字符的停止位。之后,在
TXREG 中等待的字符在停止位发送后 1 个 TCY 内被传
送到 TSR 中。TXREG 中的数据被传送到 TSR 后,启动
位、数据位和停止位的序列发送立即开始。
EUSART 采用标准不归零(non-return-to-zero,NRZ)
格式发送和接收数据。NRZ 实现为两种电平:VOH 标记
状态 (mark state)代表 “1”数据位,而 VOL 空格状
态 (space state)代表 “0”数据位。 NRZ 指的是连续
发送具有相同值的数据位时,输出电平始终保持不变,
而不会在发送完每个位之后回到中间电平。NRZ 发送端
口在标记状态空闲。每个字符发送包含 1 个启动位及随
后的 8 个或 9 个数据位,并始终由 1 个或多个停止位终
止。启动位始终是一个空格,停止位始终是标记。最常
见的数据格式为 8 位。每个发送位保持时间为 1/( 波特
率 )。使用片上专用 8 位 /16 位波特率发生器从系统振荡
器产生标准波特率频率。波特率配置示例,请参见表
22-5。
22.1.1.3
22.1.1.4
EUSART 异步发送器
发送中断标志
只要 EUSART 发送器被使能且 TXREG 中没有等待发送
的字符, PIR1 寄存器的 TXIF 中断标志位就被置 1。换
句话说,只有在 TSR 正在处理字符且 TXREG 中还有一
个排队等待发送的新字符时, TXIF 位才被清零。写入
TXREG 后并不立即清零 TXIF 标志位,而是在之后的第
二个指令周期将其清零。写入 TXREG 后立即查询 TXIF
位将返回无效结果。TXIF 位是只读位,不能用软件置 1
或清零。
图 22-1 给出了 EUSART 发送器框图。发送器的核心是
串行发送移位寄存器(Transmit Shift Register,TSR),
该寄存器不可用软件直接访问。TSR 从发送缓冲区(即
TXREG 寄存器)取得数据。
22.1.1.1
发送数据极性
发送数据的极性可通过 BAUDCON 寄存器的 SCKP 位
控制。该位的默认状态为 0,它选择高电平发送空闲和
数据位。将 SCKP 位设置为 1 将翻转发送数据,产生低
电平空闲和数据位。 SCKP 位仅在异步模式下控制发送
数据极性。在同步模式下, SCKP 位具有不同的功能。
请参见第 22.5.1.2 节 “时钟极性”。
EUSART 先发送和接收 LSb。 EUSART 的发送器和接
收器在功能上是相互独立的,但它们的数据格式和波特
率相同。硬件不支持奇偶校验,但可通过软件实现并作
为第 9 个数据位存储。
22.1.1
发送数据
使能发送器
EUSART 发送器可通过配置以下 3 个控制位使能为异步
操作:
将 PIE1 寄存器的 TXIE 中断允许位置 1 可允许 TXIF 中
断。但是,只要 TXREG 为空,无论 TXIE 中断允许位
的状态如何, TXIF 标志位就会被置 1。
• TXEN = 1
• SYNC = 0
• SPEN = 1
要在发送数据时使用中断,应只在仍有数据要发送时才
将 TXIE 位置 1。在将发送的最后一个字符写入 TXREG
后应清零 TXIE 中断允许位。
假定所有其他 EUSART 控制位均处于其默认状态。
将 TXSTA 寄存器的 TXEN 位置 1 使能 EUSART 的发送
器电路。清零 TXSTA 寄存器的 SYNC 位将 EUSART 配
置为异步操作。将 RCSTA 寄存器的 SPEN 位置 1 使能
EUSART 并自动将 TX/CK I/O 引脚配置为输出。如果
TX/CK 引脚与模拟外设共用,则必须通过清零相应的
ANSEL 位禁止模拟 I/O 功能。
注
1:TXEN 中断允许位置 1 时, TXIF 发送器中断
标志位置 1。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 247 页
PIC16(L)F1512/3
22.1.1.5
TSR 状态
22.1.1.7
TXSTA 寄存器的 TRMT 位指示 TSR 寄存器的状态。该
位是只读位。TSR 寄存器为空时,TRMT 位置 1,而当
一个字符从 TXREG 传送到 TSR 寄存器中时,该位清
零。 TRMT 位将保持清零,直到所有位移出 TSR 寄存
器。该位不与任何中断逻辑关联,因此用户必须查询该
位以确定 TSR 的状态。
1.
2.
3.
TSR 寄存器不映射到数据存储器中,因此
用户无法使用。
注:
22.1.1.6
4.
5.
发送 9 位字符
EUSART 支持 9 位字符发送。当 TXSTA 寄存器的 TX9
位置 1 时, EUSART 将在发送每个字符时移出 9 位。
TXSTA 寄存器的 TX9D 位是第 9 个数据位,也是最高
有效位。发送 9 位数据时, TX9D 数据位必须先于低 8
位写入 TXREG。写入 TXREG 后,所有 9 个位将被立
即传送到 TSR 移位寄存器中。
6.
7.
8.
有多个接收器时,可使用一种特殊的 9 位地址模式。关
于地址模式的更多信息,请参见第 22.1.2.7 节“地址检
测”。
图 22-3:
异步发送设置
初始化 SPBRGH:SPBRGL 寄存器对以及 BRGH
和 BRG16 位,获得所需的波特率(见第 22.4 节
“EUSART 波特率发生器 (BRG)”)。
通过清零 SYNC 位并将 SPEN 位置 1,使能异步
串口。
如果需要 9 位发送,将 TX9 控制位置 1。接收器
置于地址检测模式时,第 9 个数据位置 1 表示低
8 个数据位为地址。
如果需要翻转发送数据,将 SCKP 位置 1。
将 TXEN 控制位置 1 使能发送。这将导致 TXIF
中断标志位置 1。
如果需要中断,将 PIE1 寄存器的 TXIE 中断允许
位置 1。如果 INTCON 寄存器的 GIE 和 PEIE 位
也置 1,则立即产生中断。
如果选择了 9 位发送,应将第 9 位装入 TX9D 数
据位。
将 8 位数据装入 TXREG 寄存器。这将启动发送。
异步发送
写入 TXREG
第 1 个字
BRG 输出
(移位时钟)
TX/CK
引脚
bit 1
bit 7/8
停止位
第 1 个字
TXIF 位
(发送缓冲寄存器
空标志)
1 TCY
第 1 个字
发送移位寄存器
TRMT 位
(发送移位寄存器
空标志)
图 22-4:
bit 0
启动位
异步发送 (背对背)
写入 TXREG
第 1 个字
BRG 输出
(移位时钟)
TX/CK
引脚
TXIF 位
(发送缓冲寄存器
空标志)
启动位
bit 0
1 TCY
TRMT 位
(发送移位寄存器
空标志)
注:
第 2 个字
bit 1
第 1 个字
bit 7/8
停止位
启动位
bit 0
第 2 个字
1 TCY
第 1 个字
发送移位寄存器
第 2 个字
发送移位寄存器
此时序图表示的是两次连续的发送。
DS41624A_CN 第 248 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 22-1:
与异步发送相关的寄存器汇总
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
寄存器
所在页
ABDOVF
RCIDL
—
SCKP
BRG16
—
WUE
ABDEN
257
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
256
名称
BAUDCON
INTCON
RCSTA
SPBRGL
BRG<7:0>
258*
SPBRGH
BRG<15:8>
258*
TRISC
TRISC7
TXREG
TXSTA
*
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
TX9
TXEN
115
247*
EUSART 发送数据寄存器
CSRC
图注:
TRISC6
SYNC
SENDB
BRGH
TRMT
TX9D
254
— = 未实现位,读为 0。异步发送不使用阴影单元。
提供寄存器信息的页。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 249 页
PIC16(L)F1512/3
22.1.2
EUSART 异步接收器
22.1.2.2
异步模式通常用于 RS-232 系统中。图 22-2 给出了接收
器框图。数据在 RX/DT 引脚上接收并驱动数据恢复模
块。数据恢复模块实际上是一个高速移位器,工作频率
为 16 倍波特率,而串行接收移位寄存器(Receive Shift
Register, RSR)工作频率为比特率。所有 8 位或 9 位
字符移入后被立即传送到双字符的先进先出
(First-In-First-Out, FIFO)存储区中。FIFO 缓冲区允
许先接收两个完整字符和第三个字符的开始部分后,再
启动软件服务 EUSART 接收器。 FIFO 和 RSR 寄存器
不能直接用软件访问。通过 RCREG 寄存器访问接收数
据。
22.1.2.1
接收器的数据恢复电路在第一位的下降沿启动字符接
收。第一位也称启动 (Start)位,始终为零。数据恢复
电路计数传输半个位的时间至启动位的中点并验证该位
是否仍为零。如果该位非零,则数据恢复电路中止字符
接收,不产生错误,并恢复寻找启动位的下降沿。如果
启动位被验证为零,则数据恢复电路计数一整个位时间
至下个位的中点。该位被一个择多检测电路采样,其结
果(0 或 1)被移入 RSR。重复此过程直到所有数据位
均被采样并移入 RSR。最后一个位时间被测量且其电平
被采样。此为停止 (Stop)位,始终为 1。如果数据恢
复电路在停止位处采样到 0,则置 1 此字符的帧错误标
志位,否则清零此字符的帧错误标志位。关于帧错误的
更多信息,请参见第 22.1.2.4 节 “接收帧错误”。
使能接收器
EUSART 接收器可通过配置以下 3 个控制位使能为异步
操作:
所有数据位和停止位被接收后,RSR 中的字符就被立即
传送到 EUSART 接收 FIFO,且 PIR1 寄存器的 RCIF 中
断标志位被置 1。读取 RCREG 寄存器时,FIFO 中顶部
的字符被送出 FIFO。
• CREN = 1
• SYNC = 0
• SPEN = 1
注:
假定所有其他 EUSART 控制位均处于其默认状态。
将 RCSTA 寄存器的 CREN 位置 1 使能 EUSART 的接
收器电路。清零 TXSTA 寄存器的 SYNC 位将 EUSART
配置为异步操作。将 RCSTA 寄存器的 SPEN 位置 1 可
使能 EUSART。编程人员必须将相应的 TRIS 位置 1,
将 RX/DT I/O 引脚配置为输入。
注
接收数据
22.1.2.3
如果接收 FIFO 溢出,在溢出条件被清除前
不会接收更多字符。关于溢出错误的更多
信息,请参见第 22.1.2.5 节 “接收溢出错
误”。
接收中断
只要 EUSART 接收器被使能且接收 FIFO 中存在未被读
取的字符, PIR1 寄存器的 RCIF 中断标志位就会被置
1。RCIF 中断标志位是只读位,不能用软件置 1 或清零。
1:如果 RX/DT 功能位于模拟引脚上,则必须清
零相应的 ANSEL 位使接收器工作。
将以下所有位置 1 可允许 RCIF 中断:
• PIE1 寄存器的 RCIE 中断允许位
• INTCON 寄存器的 PEIE 外设中断允许位
• INTCON 寄存器的 GIE 全局中断允许位
当 FIFO 中存在未被读取的字符时,无论中断允许位的
状态如何, RCIF 中断标志位均会被置 1。
DS41624A_CN 第 250 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
22.1.2.4
22.1.2.7
接收帧错误
接收 FIFO 缓冲区中的每个字符都有相应的帧错误状态
位。帧 错 误 表 明 在 预 期 时 间 内 未 见 到 停 止 位。通 过
RCSTA 寄存器的 FERR 位可访问帧错误状态。 FERR
位表示接收 FIFO 中顶部的未读字符的状态。因此,在
读取 RCREG 前必须先读 FERR 位。
当多个接收器共用同一条传输线时 (如在 RS-485 系统
中),有一个特殊的地址检测模式可供使用。将 RCSTA
寄存器的 ADDEN 位置 1 可使能地址检测。
地址检测要求接收 9 位字符。使能地址检测时,只有第
9 个数据位置 1 的字符会被传送到接收 FIFO 缓冲区,
并将 RCIF 中断标志位置 1。所有其他字符均被忽略。
FERR 位是只读位,只用于接收 FIFO 中顶部的未读字
符。帧错误 (FERR = 1)并不会禁止接收更多字符。
此时不必将 FERR 位清零。从 FIFO 缓冲区读出下一个
字符将使 FIFO 进入下一个字符和下一个相应的帧错
误。
接收到地址字符后,用户软件可判断地址是否与自身匹
配。地址匹配时,发生下一个停止位前,用户软件必须
通过清零 ADDEN 位禁止地址检测。当用户软件根据所
使用的报文协议检测到报文的末尾时,软件将 ADDEN
位置 1,将接收器重新置于地址检测模式。
将 RCSTA 寄存器的 SPEN 位清零可复位 EUSART,这
样就可将FERR位强制清零。将RCSTA寄存器的CREN
位清零不影响 FERR 位。自身产生的帧错误不会产生中
断。
注:
22.1.2.5
地址检测
如果接收FIFO中的所有接收字符均有帧错
误,反复读取 RCREG 不会将 FERR 位清
零。
接收溢出错误
接收 FIFO 缓冲区可容纳两个字符。在访问 FIFO 前接
收 到 完 整 的 第 三 个 字 符 时 会 产 生 溢 出 错 误。此 时,
RCSTA 寄存器的 OERR 位置 1。FIFO 缓冲区中已有的
字符可被读出,但溢出错误被清除前不能再接收其他字
符。将 RCSTA 寄存器的 CREN 位清零或通过将 RCSTA
寄存器的 SPEN 位清零复位 EUSART,可清除该错误。
22.1.2.6
接收 9 位字符
EUSART 支持 9 位字符接收。当 RCSTA 寄存器的 RX9
位置 1 时,EUSART 将在接收每个字符时将 9 个位移入
RSR。 RCSTA 寄存器的 RX9D 位是第 9 位,也是接收
FIFO 顶部未读字符的最高有效数据位。从接收 FIFO 缓
冲区读取 9 位数据时,在读取 RCREG 的低 8 位前必须
先读取 RX9D 数据位。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 251 页
PIC16(L)F1512/3
22.1.2.8
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
22.1.2.9
异步接收设置
初始化 SPBRGH:SPBRGL 寄存器对以及 BRGH
和 BRG16 位,获得所需的波特率(见第 22.4 节
“EUSART 波特率发生器 (BRG)”)。
清零 RX 引脚的 ANSEL 位 (如适用)。
将 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 标志位。
该模式通常用于 RS-485 系统中。设置使能地址检测的
异步接收的步骤如下:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
图 22-5:
9 位地址检测模式设置
初始化 SPBRGH:SPBRGL 寄存器对以及 BRGH
和 BRG16 位,获得所需的波特率(见第 22.4 节
“EUSART 波特率发生器 (BRG)”)。
清零 RX 引脚的 ANSEL 位 (如适用)。
将 SPEN 位置 1 使能串口。SYNC 位必须清零才
能进行异步操作。
如果需要中断,将 PIE1 寄存器的 RCIE 位以及
INTCON 寄存器的 GIE 和 PEIE 位置 1。
将 RX9 位置 1 使能 9 位接收。
将 ADDEN 位置 1 使能地址检测。
将 CREN 位置 1 使能接收。
当第 9 位置 1 的字符从 RSR 被移入接收缓冲区
时,RCIF 中断标志位将被置 1。如果 RCIE 中断
允许位也置 1,则产生中断。
读取 RCSTA 寄存器取得错误标志。第 9 个数据
位将始终置 1。
读取 RCREG 寄存器从接收缓冲区取得接收数据
的低 8 位。软件将判断此地址是否是器件地址。
发生溢出时,通过清零 CREN 接收器使能位清零
OERR 标志位。
如果器件被寻址,将 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 个字。 在第 3 个字后读 RCREG (接收缓冲区)会使 OERR (溢出)位置 1。
DS41624A_CN 第 252 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 22-2:
与异步接收相关的寄存器汇总
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
寄存器
所在页
ABDOVF
RCIDL
—
SCKP
BRG16
—
WUE
ABDEN
257
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
名称
BAUDCON
INTCON
RCREG
RCSTA
EUSART 接收数据寄存器
SPEN
RX9
SREN
SPBRGL
CREN
ADDEN
FERR
OERR
RX9D
BRG<7:0>
SPBRGH
75
250*
256
258*
BRG<15:8>
258*
TRISC
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
115
TXSTA
CSRC
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
254
图注:
*
— = 未实现位,读为 0。异步接收不使用阴影单元。
提供寄存器信息的页。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 253 页
PIC16(L)F1512/3
22.2
第一种 (首选)方法使用 OSCTUNE 寄存器来调节
INTOSC 输出。调节 OSCTUNE 寄存器中的值可对系统
时钟源的分辨率进行微调。更多信息,请参见第 5.2.2 节
“内部时钟源”。
异步操作的时钟精度
内部振荡器模块输出 (INTOSC)在出厂时做了校准。
但是,VDD 或温度变化时,INTOSC 频率有可能漂移,
这将直接影响异步波特率。可使用两种方法来调节波特
率时钟,但是这两种方法都需要某种类型的参考时钟
源。
22.3
另一种方法是调节波特率发生器中的值。这可以使用自
动波特率检测功能来自动完成 (见第 22.4.1 节 “自动
波特率检测”)。通过调整波特率发生器来补偿外设时
钟频率的逐渐变化时,可能无法足够细微地调节分辨
率。
EUSART 控制寄存器
寄存器 22-1:
TXSTA:发送状态和控制寄存器
R/W-/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R-1/1
R/W-0/0
CSRC
TX9
TXEN(1)
SYNC
SENDB
BRGH
TRMT
TX9D
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
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 满
DS41624A_CN 第 254 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 22-1:
bit 0
注
TXSTA:发送状态和控制寄存器 (续)
TX9D:发送数据的第 9 位
可以是地址 / 数据位或奇偶校验位。
1: 在同步模式下, SREN/CREN 的优先级高于 TXEN。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 255 页
PIC16(L)F1512/3
RCSTA:接收状态和控制寄存器 (1)
寄存器 22-2:
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R/W-0/0
R-0/0
R-0/0
R-x/x
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
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 位
该位可以是地址 / 数据位或奇偶校验位,并且必须由用户固件计算得到。
DS41624A_CN 第 256 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
寄存器 22-3:
BAUDCON:波特率控制寄存器
R-0/0
R-1/1
U-0
R/W-0/0
R/W-0/0
U-0
R/W-0/0
R/W-0/0
ABDOVF
RCIDL
—
SCKP
BRG16
—
WUE
ABDEN
bit 7
bit 0
图注:
R = 可读位
W = 可写位
U = 未实现位,读为 0
u = 不变
x = 未知
-n/n = POR 和 BOR 时的值 / 所有其他复位时的值
1=置1
0 = 清零
bit 7
ABDOVF:自动波特率检测溢出位
异步模式:
1 = 自动波特率定时器溢出
0 = 自动波特率定时器未溢出
同步模式:
无关位
bit 6
RCIDL:接收空闲标志位
异步模式:
1 = 接收器空闲
0 = 已接收到启动位且接收器正在接收
同步模式:
无关位
bit 5
未实现:读为 0
bit 4
SCKP:同步时钟极性选择位
异步模式:
1 = 将反向数据发送到 TX/CK 引脚
0 = 直接将数据发送到 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 = 禁止自动波特率模式
同步模式:
无关位
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 257 页
PIC16(L)F1512/3
22.4
EUSART 波特率发生器 (BRG)
例 22-1:
波特率发生器 (BRG)是 8 位或 16 位定时器,专用于
支持异步和同步 EUSART 操作。默认情况下, BRG 工
作在 8 位模式下。将 BAUDCON 寄存器的 BRG16 位置
1 可选择 16 位模式。
计算波特率误差
针对工作在异步模式下, FOSC 为 16 MHz,目标波
器件工作在
FOSC 为816
MHz,目标波特率为
9600,
特率为
9600,采用
位F
BRG
针对工作在异步模式下、
OSC 的器件:
= 16 MHz、目标波特
异步模式, 8 位 BRG 的条件下:
F OS C
率 = 9600目标波特率
且采用 8 位= BRG
的器件:
-------------------------------------------------------------------F OSC
64 -------------------------------------------------------------[SPBRGH:SPBRG]
+ 1 Desired Baud Rate =
F O SC
64  [SPBRGH:SPBRG]
+ 1 Desired Baud Rate = ----------------------------------------------------------------64  [SPBRGH:SPBRGL] + 1 
求解 SPBRGH:SPBRGL:
SPBRGH:SPBRGL 寄存器对决定自由运行波特率定时
器 的 周 期。在 异 步 模 式 下,波 特 率 周 期 的 倍 频 值 由
TXSTA寄存器的BRGH位和BAUDCON寄存器的BRG16
位决定。在同步模式下, BRGH 位被忽略。
求解 SPBRGH:SPBRGL:
F O SC 求解 SPBRGH:SPBRGL:
-----------------------------
目标波特率
F O SC- – 1 X = -----------------------------------------------------------------------------C Rate
64F OS
Desired
Baud
X = --------------------------------------------------------------------------------------------------Desired 64
Baud Rate-- –– 11
X = -------------------------------------------------16000000
64
-----------------------16000000
9600 -- – 1
----------------------= ----------------------16000000
9600
64 -- – 1
----------------------= ----------------------9600
64 - – 1
= ----------------------=  25.042
64  = 25
=  25.042  = 25
= -------------------------16000000
25.042  -= 25
计算得到的波特率 =
6416000000
 25 + 1 
Calculat ed Baud Rate = -------------------------16000000
 25 + 1-
64
Calculat ed Baud Rate = -------------------------64  25 + 1 
= 9615
= 9615
= 9615
– 目标波特率 误差 = 计算得到的波特率
-------------------------------------------------------------------------------------Calc.
Baud Rate
– Desired Baud Rate
目标波特率
---------------------------------------------------------------------------------------------------Error = Calc.
Baud
Rate – Baud
Desired
Desired
RateBaud Rate
Error = ---------------------------------------------------------------------------------------------------Desired
Baud Rate

9615
–
9600

= ---------------------------------- = 0.16%
– 9600  = 0.16%
96159600
= ---------------------------------– 9600  =
96159600
= ---------------------------------0.16%
表 22-3 提供了确定波特率的公式。例 22-1 提供了确定
波特率和波特率误差的计算示例。
为便于您使用,各种异步模式的典型波特率和误差值已
经计算出来,如表 22-3 所示。使用高波特率 (BRGH
= 1)或 16 位 BRG (BRG16 = 1)有助于降低波特率
误差。16 位 BRG 模式用于在高速振荡器频率下实现低
波特率。
将新值写入 SPBRGH:SPBRGL 寄存器对将导致 BRG
定时器复位 (或清零)。这可以确保 BRG 无需等待定
时器溢出就可以输出新的波特率。
如果系统时钟在有效的接收操作过程中被更改,可能会
导 致 接 收 错 误 或 数 据 丢 失。为 避 免 此 问 题,应 检 查
RCIDL 位的状态,以确保在改变系统时钟前接收操作处
于空闲状态。
9600
DS41624A_CN 第 258 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 22-3:
波特率公式
配置位
BRG/EUSART 模式
波特率公式
0
8 位 / 异步
FOSC/[64 (n+1)]
0
1
8 位 / 异步
0
1
0
16 位 / 异步
0
1
1
16 位 / 异步
1
0
x
8 位 / 同步
1
x
16 位 / 同步
SYNC
BRG16
BRGH
0
0
0
1
FOSC/[16 (n+1)]
FOSC/[4 (n+1)]
x = 无关位, n = SPBRGH:SPBRGL 寄存器对的值。
图注:
表 22-4:
与波特率发生器相关的寄存器汇总
名称
BAUDCON
RCSTA
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
ABDOVF
RCIDL
—
SCKP
BRG16
SPEN
RX9
SREN
CREN
ADDEN
Bit 1
Bit 0
寄存器
所在页
—
WUE
ABDEN
257
FERR
OERR
RX9D
Bit 2
256
SPBRGL
BRG<7:0>
258*
SPBRGH
BRG<15:8>
258*
TXSTA
CSRC
图注:
*
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
254
— = 未实现位,读为 0。波特率发生器不使用阴影单元。
提供寄存器信息的页。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 259 页
PIC16(L)F1512/3
表 22-5:
异步模式下的波特率
FOSC = 20.000 MHz
波特率
实际
波特率
SYNC = 0, BRGH = 0, BRG16 = 0
FOSC = 18.432 MHz
FOSC = 16.000 MHz
SPBRG
误差
实际
值
%
波特率
(十进制)
SPBRG
实际
值
波特率
(十进制)
误差
%
—
1.73
—
255
—
1200
—
0.00
—
239
—
1202
—
0.16
—
207
误差
%
FOSC = 11.0592 MHz
SPBRG
实际
值
波特率
(十进制)
误差
%
SPBRG
值
(十进制)
—
1200
—
0.00
—
143
71
300
1200
—
1221
2400
2404
0.16
129
2400
0.00
119
2404
0.16
103
2400
0.00
9600
9470
-1.36
32
9600
0.00
29
9615
0.16
25
9600
0.00
17
10417
10417
0.00
29
10286
-1.26
27
10417
0.00
23
10165
-2.42
16
19.2k
19.53k
1.73
15
19.20k
0.00
14
19.23k
0.16
12
19.20k
0.00
8
57.6k
—
—
—
—
—
—
57.60k
—
0.00
7
—
—
—
—
—
—
57.60k
—
0.00
2
—
—
115.2k
—
—
SYNC = 0, BRGH = 0, BRG16 = 0
FOSC = 8.000 MHz
300
1200
—
1202
FOSC = 4.000 MHz
FOSC = 3.6864 MHz
FOSC = 1.000 MHz
SPBRG
SPBRG
SPBRG
SPBRG
误差
实际
误差
实际
误差
实际
误差
值
值
值
值
%
%
%
%
波特率
波特率
波特率
(十进制)
(十进制)
(十进制)
(十进制)
0.00
—
—
300
0.16
207
300
191
300
0.16
51
0.16
103
1202
0.16
51
1200
0.00
47
1202
0.16
12
2400
2404
0.16
51
波特率
实际
波特率
2404
0.16
25
2400
0.00
23
—
—
—
9600
9615
0.16
12
—
—
—
9600
0.00
5
—
—
—
10417
10417
0.00
11
10417
0.00
5
—
—
—
—
—
—
19.2k
—
—
—
—
—
—
19.20k
0.00
2
—
—
—
57.6k
—
—
—
—
—
—
0
—
—
—
115.2k
—
—
—
—
—
—
57.60k
—
0.00
—
—
—
—
—
SYNC = 0, BRGH = 1, BRG16 = 0
FOSC = 20.000 MHz
波特率
实际
波特率
FOSC = 18.432 MHz
SPBRG
误差
实际
值
%
波特率
(十进制)
—
—
—
误差
%
—
FOSC = 16.000 MHz
SPBRG
实际
值
波特率
(十进制)
—
—
误差
%
—
FOSC = 11.0592 MHz
SPBRG
实际
值
波特率
(十进制)
—
—
—
SPBRG
值
(十进制)
—
—
—
误差
%
300
—
1200
—
—
—
—
—
—
—
—
—
2400
—
—
—
—
—
—
—
—
—
—
—
—
9600
9615
0.16
129
9600
0.00
119
9615
0.16
103
9600
0.00
71
—
10417
10417
0.00
119
10378
-0.37
110
10417
0.00
95
10473
0.53
65
19.2k
19.23k
0.16
64
19.20k
0.00
59
19.23k
0.16
51
19.20k
0.00
35
57.6k
56.82k
-1.36
21
57.60k
0.00
19
58.82k
2.12
16
57.60k
0.00
11
115.2k
113.64k
-1.36
10
115.2k
0.00
9
111.1k
-3.55
8
115.2k
0.00
5
DS41624A_CN 第 260 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 22-5:
异步模式下的波特率 (续)
SYNC = 0, BRGH = 1, BRG16 = 0
FOSC = 8.000 MHz
波特率
实际
波特率
—
300
1200
—
2400
2404
FOSC = 4.000 MHz
SPBRG
误差
实际
值
%
波特率
(十进制)
—
—
—
—
—
1202
0.16
207
2404
误差
%
FOSC = 3.6864 MHz
SPBRG
实际
值
波特率
(十进制)
误差
%
FOSC = 1.000 MHz
SPBRG
实际
值
波特率
(十进制)
误差
%
SPBRG
值
(十进制)
—
0.16
—
207
—
1200
—
0.00
—
191
300
1202
0.16
0.16
207
51
0.16
103
2400
0.00
95
2404
0.16
25
—
9600
9615
0.16
51
9615
0.16
25
9600
0.00
23
—
—
10417
10417
0.00
47
10417
0.00
23
10473
0.53
21
10417
0.00
5
19.2k
19231
0.16
25
19.23k
0.16
12
19.2k
0.00
11
—
—
—
57.6k
55556
-3.55
8
—
—
—
57.60k
0.00
3
—
—
—
115.2k
—
—
—
—
—
—
115.2k
0.00
1
—
—
—
SYNC = 0, BRGH = 0, BRG16 = 1
FOSC = 20.000 MHz
波特率
实际
波特率
FOSC = 18.432 MHz
SPBRG
误差
实际
值
%
波特率
(十进制)
误差
%
FOSC = 16.000 MHz
SPBRG
实际
值
波特率
(十进制)
误差
%
FOSC = 11.0592 MHz
SPBRG
实际
值
波特率
(十进制)
误差
%
SPBRG
值
(十进制)
300
300.0
-0.01
4166
300.0
0.00
3839
300.03
0.01
3332
300.0
0.00
2303
1200
1200
-0.03
1041
1200
0.00
959
1200.5
0.04
832
1200
0.00
575
2400
2399
-0.03
520
2400
0.00
479
2398
-0.08
416
2400
0.00
287
9600
9615
0.16
129
9600
0.00
119
9615
0.16
103
9600
0.00
71
10417
10417
0.00
119
10378
-0.37
110
10417
0.00
95
10473
0.53
65
19.2k
19.23k
0.16
64
19.20k
0.00
59
19.23k
0.16
51
19.20k
0.00
35
57.6k
56.818
-1.36
21
57.60k
0.00
19
58.82k
2.12
16
57.60k
0.00
11
115.2k
113.636
-1.36
10
115.2k
0.00
9
111.11k
-3.55
8
115.2k
0.00
5
SYNC = 0, BRGH = 0, BRG16 = 1
波特率
FOSC = 4.000 MHz
FOSC = 3.6864 MHz
FOSC = 1.000 MHz
FOSC = 8.000 MHz
SPBRG
SPBRG
SPBRG
SPBRG
实际
误差
实际
误差
实际
误差
实际
误差
值
值
值
值
%
%
%
%
波特率
波特率
波特率
波特率
(十进制)
(十进制)
(十进制)
(十进制)
300
1200
299.9
1199
-0.02
-0.08
1666
416
300.1
1202
0.04
0.16
832
207
300.0
1200
0.00
0.00
767
191
300.5
1202
0.16
0.16
207
51
2400
2404
0.16
207
2404
0.16
103
2400
0.00
95
2404
0.16
25
9600
9615
0.16
51
9615
0.16
25
9600
0.00
23
—
—
—
10417
10417
0.00
47
10417
0.00
23
10473
0.53
21
10417
0.00
5
19.2k
19.23k
0.16
25
19.23k
0.16
12
19.20k
0.00
11
—
—
—
57.6k
55556
-3.55
8
—
—
—
57.60k
0.00
3
—
—
—
115.2k
—
—
—
—
—
—
115.2k
0.00
1
—
—
—
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 261 页
PIC16(L)F1512/3
表 22-5:
异步模式下的波特率 (续)
SYNC = 0, BRGH = 1, BRG16 = 1 或 SYNC = 1, BRG16 = 1
FOSC = 20.000 MHz
波特率
FOSC = 18.432 MHz
FOSC = 16.000 MHz
SPBRG
实际
值
波特率
(十进制)
FOSC = 11.0592 MHz
实际
波特率
SPBRG
误差
实际
值
%
波特率
(十进制)
误差
%
300
1200
300.0
1200
0.00
-0.01
16665
4166
300.0
1200
0.00
0.00
15359
3839
300.0
1200.1
0.00
0.01
13332
3332
2400
2400
0.02
2082
2400
0.00
1919
2399.5
-0.02
1666
误差
%
SPBRG
实际
值
波特率
(十进制)
误差
%
SPBRG
值
(十进制)
300.0
1200
0.00
0.00
9215
2303
2400
0.00
1151
9600
9597
-0.03
520
9600
0.00
479
9592
-0.08
416
9600
0.00
287
10417
10417
0.00
479
10425
0.08
441
10417
0.00
383
10433
0.16
264
19.2k
19.23k
0.16
259
19.20k
0.00
239
19.23k
0.16
207
19.20k
0.00
143
57.6k
57.47k
-0.22
86
57.60k
0.00
79
57.97k
0.64
68
57.60k
0.00
47
115.2k
116.3k
0.94
42
115.2k
0.00
39
114.29k
-0.79
34
115.2k
0.00
23
SYNC = 0, BRGH = 1, BRG16 = 1 或 SYNC = 1, BRG16 = 1
FOSC = 8.000 MHz
波特率
实际
波特率
FOSC = 4.000 MHz
SPBRG
误差
实际
值
%
波特率
(十进制)
误差
%
FOSC = 3.6864 MHz
SPBRG
实际
值
波特率
(十进制)
误差
%
FOSC = 1.000 MHz
SPBRG
实际
值
波特率
(十进制)
误差
%
SPBRG
值
(十进制)
300
300.0
0.00
6666
300.0
0.01
3332
300.0
0.00
3071
300.1
0.04
832
1200
1200
-0.02
1666
1200
0.04
832
1200
0.00
767
1202
0.16
207
2400
2401
0.04
832
2398
0.08
416
2400
0.00
383
2404
0.16
103
9600
9615
0.16
207
9615
0.16
103
9600
0.00
95
9615
0.16
25
10417
10417
0
191
10417
0.00
95
10473
0.53
87
10417
0.00
23
19.2k
19.23k
0.16
103
19.23k
0.16
51
19.20k
0.00
47
19.23k
0.16
12
57.6k
57.14k
-0.79
34
58.82k
2.12
16
57.60k
0.00
15
—
—
—
115.2k
117.6k
2.12
16
111.1k
-3.55
8
115.2k
0.00
7
—
—
—
DS41624A_CN 第 262 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
22.4.1
在校准波特率周期时,SPBRGH 和 SPBRGL 寄存器的
时钟频率为 BRG 基本时钟频率的 1/8。得到的字节测量
结果为全速时的平均位时间。
自动波特率检测
EUSART 模块支持波特率自动检测和校准。
在自动波特率检测(Auto-Baud Rate Detect,ABD)模
式下,提供给 BRG 的时钟信号是反向的。BRG 并不为
传入的 RX 信号提供时钟信号,而是由 RX 信号为 BRG
定时。波特率发生器用于为接收的 55h (ASCII “U”)
定时, 55h 是 LIN 总线的同步字符。此字符的特殊之处
在于它具有包括停止位边沿在内的 5 个上升沿。
注
2:需要由用户来判断输入字符的波特率是否处于
所选 BRG 时钟源范围内。可能无法实现某些振
荡器频率和 EUSART 波特率组合。
将 BAUDCON 寄存器的 ABDEN 位置 1 将启动自动波特
率校验序列(图 22-6)。当发生 ABD 序列时,EUSART
状态机保持在空闲状态。在接收线的第一个上升沿(启
动位之后),SPBRG 使用 BRG 计数器时钟递增计数,
如表 22-6 所示。在第 8 位周期的末尾将在 RX 引脚上出
现第 5 个上升沿。此时,累计数据即正确的 BRG 周期
总数被保存在 SPBRGH:SPBRGL 寄存器对中,ABDEN
位被自动清零而 RCIF 中断标志被置 1。要清除 RCIF 中
断,需要读取 RCREG 中的值。 RCREG 的内容应该被
丢弃。在不使用 SPBRGH 寄存器的模式下进行校准时,
用户可通过查询 SPBRGH 寄存器的值是否为 00h 来验
证 SPBRGL 寄存器是否溢出。
3:在自动波特率过程中,自动波特率计数器从 1
开始计数。自动波特率序列完成后,为了得到
最准确的结果,应从 SPBRGH:SPBRGL 寄存
器对的值中减去 1。
表 22-6:
BRG 自动波特率时钟由 BRG16 和 BRGH 位决定,如
表 22-6 所示。在 ABD 期间,SPBRGH 和 SPBRGL 寄
存器都被用作 16 位计数器,与 BRG16 位的设置无关。
图 22-6:
1:如果 WUE 位和 ABDEN 位都置 1,自动波特
率检测将在间隔字符之后的字节开始 (见第
22.4.3 节 “接收到间隔字符时自动唤醒”)。
BRG 计数器时钟速率
BRG16
BRGH
0
0
FOSC/64
FOSC/512
0
1
FOSC/16
FOSC/128
1
0
FOSC/16
FOSC/128
1
1
FOSC/4
FOSC/32
注:
BRG 基本时钟 BRG ABD 时钟
在 ABD 序列期间, SPBRGL 和 SPBRGH
寄存器都被用作 16 位计数器,与 BRG16 的
设置无关。
自动波特率校准
XXXXh
BRG 值
0000h
001Ch
边沿 2
边沿 1
RX 引脚
启动位
bit 0
bit 1
bit 2
bit 3
bit 4
边沿 5
边沿 4
边沿 3
bit 5
bit 6
bit 7
停止位
BRG 时钟
自动清零
由用户置 1
ABDEN 位
RCIDL
RCIF 位
(中断)
读
RCREG
SPBRGL
XXh
1Ch
SPBRGH
XXh
00h
注
1: ABD 序列要求 EUSART 模块配置为工作在异步模式下。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 263 页
PIC16(L)F1512/3
22.4.2
22.4.3.1
自动波特率溢出
在自动波特率检测过程中,如果在 RX 引脚上检测到第
5 个上升沿之前波特率计数器溢出,则 BAUDCON 寄存
器的 ABDOVF 位将被置 1。 ABDOVF 位指示计数器已
超出 SPBRGH:SPBRGL 寄存器对的 16 位所能允许的
最大计数值。在 ABDOVF 位置 1 后,计数器将继续计
数,直到在 RX 引脚上检测到第 5 个上升沿为止。一旦
检测到第 5 个 RX 边沿,硬件会将 RCIF 中断标志置 1,
并将 BAUDCON 寄存器的 ABDEN 位清零。随后可以通
过读取 RCREG 寄存器将 RCIF 标志清零。BAUDCON
寄存器的 ABDOVF 标志可以用软件直接清零。
间隔字符
在发生唤醒事件期间为了避免字符错误或字符碎片,唤
醒字符必须为全零。
唤醒被使能时,其工作状况与数据流的低电平时间无
关。如果 WUE 位置 1 并接收到了有效的非零字符,则
从启动位至第一个上升沿的低电平时间将被解读为唤醒
事件。字符的其余位将作为碎片字符接收,后续字符有
可能产生帧错误或溢出错误。
因此,发送的首字符必须为全 0。这必须持续 10 个或更
长的位时间,对于 LIN 总线,建议持续 13 个位时间,
而标准 RS-232 器件,可为任意个位时间。
若要在 RCIF 标志置 1 前终止自动波特率进程,请先将
ABDEN 位清零,然后将 BAUDCON 寄存器的 ABDOVF
位清零。如果没有先将 ABDEN 位清零,ABDOVF 位将
保持置 1 状态。
22.4.3
特殊注意事项
振荡器起振时间
必须考虑振荡器起振时间,特别在使用起振时间较长的
振荡器 (即, LP、 XT 或 HS 模式)的应用中。同步间
隔 (或唤醒信号)字符必须足够长,并随后有一个足够
长的间隔时间,以使所选的振荡器有足够的时间起振并
在这段时间对 EUSART 进行正确初始化。
接收到间隔字符时自动唤醒
在休眠模式下,EUSART 的所有时钟都会暂停。因此,
波特率发生器处于不工作状态,不能正常进行字符接
收。自动唤醒功能使控制器可被 RX/DT 线上的活动唤
醒。该功能只在异步模式下可用。
WUE 位
唤醒事件会通过将RCIF位置1产生一个接收中断。WUE
位在 RX/DT 的上升沿由硬件清零。之后软件通过读取
RCREG 寄存器并丢弃其内容将中断条件清除。
可通过将 BAUDCON 寄存器的 WUE 位置 1 来使能自动
唤醒功能。一旦置 1, RX/DT 上的正常接收序列就被禁
止, EUSART 保持在空闲状态,监视与 CPU 模式无关
的唤醒事件。唤醒事件包含 RX/DT 线上电平由高至低的
跳变。
(这与同步间隔字符或 LIN 协议的唤醒信号字符的
启动条件一致。)
要确保不丢失实际数据,应在将 WUE 位置 1 前检查
RCIDL 位,验证没有接收操作在进行。如果未发生接收
操作,可在进入休眠模式前将 WUE 位置 1。
EUSART 模块产生的 RCIF 中断与唤醒事件同步。在正
常CPU工作模式下,中断产生与Q时钟同步(图22-7),
而器件处于休眠模式时则异步产生 (图 22-8)。通过读
RCREG 寄存器可清除中断条件。
RX 线在间隔字符末尾由低至高的跳变将自动清零 WUE
位。这向用户表明间隔事件结束。此时,EUSART 模块
处于空闲模式,等待接收下一个字符。
DS41624A_CN 第 264 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 22-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 保持在空闲状态。
图 22-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 保持在空闲状态。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 265 页
PIC16(L)F1512/3
22.4.4
22.4.5
间隔字符序列
EUSART 模块能够发送符合 LIN 总线标准的特殊间隔字
符序列。间隔字符包含 1 个启动位,随后的 12 个 0 位
和 1 个停止位。
增强型 EUSART 模块接收间隔字符有两种方法。
第一种检测间隔字符的方法采用 RCSTA 寄存器的
FERR 位和如 RCREG 所指示的接收数据。假定波特率
发生器已初始化为所需的波特率。
要发送间隔字符,应将 TXSTA 寄存器的 SENDB 和
TXEN 位置 1。随后对 TXREG 执行写操作可启动间隔
字符发送。写入 TXREG 的数据值会被忽略并发送全 0。
发生以下情况时,表明接收到间隔字符:
• RCIF 位被置 1
• FERR 位被置 1
• RCREG = 00h
在发送了相应的停止位后,硬件会自动将 SENDB 位复
位。这样用户可以在间隔字符(在 LIN 规范中通常是同
步字符)后预先将下一个要发送字节装入发送 FIFO。
第二种方法采用第 22.4.3 节 “接收到间隔字符时自动
唤 醒”中 所 述 的 自 动 唤 醒 功 能。通 过 使 能 此 功 能,
EUSART 将采样 RX/DT 上的下两次跳变,产生 RCIF 中
断,并接收下一个数据字节并再产生一次中断。
TXSTA 寄存器的 TRMT 位表明发送操作何时处于有效或
空闲状态,这与正常发送时相同。图 22-9 给出了发送间
隔字符的时序。
22.4.4.1
间隔和同步发送序列
请注意,在间隔字符后,用户通常希望使能自动波特率
检测功能。采用这两种方法时,用户均可在 EUSART 进
入休眠模式前将 BAUDCON 寄存器的 ABDEN 位置 1。
以下序列将启动报文帧头,它由间隔字符和其后的自动
波特率同步字节组成。这是 LIN 总线主器件的典型序
列。
1.
2.
3.
4.
5.
接收间隔字符
将 EUSART 配置为所需的模式。
将 TXEN 和 SENDB 位置 1 使能间隔序列。
将无效字符装入 TXREG,启动发送 (该值会被
忽略)。
将 55h 写入 TXREG,以便将同步字符装入发送
FIFO 缓冲区。
发送间隔字符后, SENDB 位被硬件复位,同步
字符随后被发送。
当 TXREG 为空时 (由 TXIF 指出),下一个数据字节
会写入 TXREG。
图 22-9:
发送间隔字符序列
写入 TXREG
无效写入
BRG 输出
(移位时钟)
TX(引脚)
启动位
bit 0
bit 1
bit 11
停止位
间隔
TXIF 位
(发送
中断标志)
TRMT 位
(发送移位
空标志)
SENDB
(发送间隔
控制位)
DS41624A_CN 第 266 页
此时采样 SENDB
自动清零
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
22.5
EUSART 同步模式
将 SCKP 位清零将时钟空闲状态设置为低电平。当
SCKP 位清零时,数据在每个时钟的上升沿改变。
同步串行通信通常用于具有一个主器件和一个或多个从
器件的系统中。主器件包含生成波特率所需的电路,可
将时钟提供给系统中的所有器件。从器件使用主时钟,
可不再需要内部时钟生成电路。
22.5.1.3
从器件的 RX/DT 引脚输出数据。 EUSART 配置为同步
主发送操作时, RX/DT 和 TX/CK 引脚的输出驱动器被
自动使能。
同步模式下有两条信号线:双向数据线和时钟线。从器
件使用主器件提供的外部时钟将串行数据移入或移出相
应的接收和发送移位寄存器。由于数据线是双向的,同
步操作只能是半双工的。半双工指主从器件能够接收和
发送数据,但不能同时进行。EUSART 可作为主器件,
也可作为从器件。
向 TXREG 寄存器写入一个字符时启动发送。如果 TSR
中仍保存前一个字符的全部或部分,则新字符被保存在
TXREG 中,直到前一个字符的最后一位被发送。如果
这是首字符,或前一个字符被完全从 TSR 中送出,
TXREG 中的数据就立即被传送到 TSR。字符发送序列
在数据从 TXREG 送入 TSR 后立即开始。
同步发送时不使用启动位和停止位。
22.5.1
每个数据位在主时钟的时钟前沿改变,并在下一个时钟
前沿到来前保持有效。
同步主模式
使用以下位将 EUSART 配置为同步主操作:
注:
• SYNC = 1
• CSRC = 1
• SREN = 0 (用于发送); SREN = 1 (用于接收)
22.5.1.4
• CREN = 0 (用于发送); CREN = 1 (用于接收)
• SPEN = 1
1.
将 TXSTA 寄存器的 SYNC 位置 1 将器件配置为同步操
作。将 TXSTA 寄存器的 CSRC 位置 1 可将器件配置为
主器件。将 RCSTA 寄存器的 SREN 和 CREN 位清零可
确保器件处于发送模式,否则器件将被配置为接收。将
RCSTA 寄存器的 SPEN 位置 1 可使能 EUSART。
22.5.1.1
2.
3.
4.
5.
6.
主时钟
同步数据传送使用独立的时钟线,时钟与数据同步。配
置为主器件的器件将时钟信号发送到 TX/CK 线上。
EUSART 配置为同步发送或接收操作时,自动使能
TX/CK 引脚输出驱动器。串行数据位在时钟前沿改变,
以确保其在时钟的后沿有效。为每个数据位产生一个时
钟周期。数据位有多少,就产生多少个时钟周期。
22.5.1.2
同步主发送
7.
8.
TSR 寄存器不映射到数据存储器中,因此
用户无法使用。
同步主发送设置
初始化 SPBRGH:SPBRGL 寄存器对以及 BRGH
和 BRG16 位,获得所需的波特率(见第 22.4 节
“EUSART 波特率发生器 (BRG)”)。
将 SYNC、SPEN 和 CSRC 位置 1 使能同步主串
口。
将 SREN 和 CREN 位清零禁止接收模式。
将 TXEN 位置 1 使能发送模式。
如果需要 9 位发送,将 TX9 位置 1。
如果需要中断,将 PIE1 寄存器的 TXIE 位以及
INTCON 寄存器的 GIE 和 PEIE 位置 1。
如果选择了 9 位发送,应将第 9 位装入 TX9D 位。
将数据装入 TXREG 寄存器,启动发送。
时钟极性
提 供 了 与 Microwire 兼 容 的 时 钟 极 性 选项。通过
BAUDCON 寄存器的 SCKP 位选择时钟极性。将 SCKP
位置 1 将时钟空闲状态设置为高电平。当 SCKP 位置 1
时,数据在每个时钟的下降沿改变。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 267 页
PIC16(L)F1512/3
图 22-10:
同步发送
RX/DT
引脚
bit 0
bit 1
第 1 个字
bit 2
bit 7
bit 0
bit 1
第 2 个字
bit 7
TX/CK 引脚
(SCKP = 0)
TX/CK 引脚
(SCKP = 1)
写入
TXREG 寄存器
写第 1 个字
写第 2 个字
TXIF 位
(中断标志)
TRMT 位
1
TXEN 位
1
同步主模式, SPBRGL = 0,连续发送两个 8 位字。
注:
图 22-11:
同步发送 (由 TXEN 位控制)
RX/DT 引脚
bit 0
bit 2
bit 1
bit 6
bit 7
TX/CK 引脚
写入
TXREG 寄存器
TXIF 位
TRMT 位
TXEN 位
表 22-7:
与同步主发送相关的寄存器汇总
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
寄存器
所在页
ABDOVF
RCIDL
—
SCKP
BRG16
—
WUE
ABDEN
257
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
名称
BAUDCON
INTCON
RCSTA
SPBRGL
BRG<7:0>
SPBRGH
TRISC
BRG<15:8>
TRISC7
TRISC6
TRISC5
CSRC
TX9
TXEN
TXREG
TRISC4
TRISC3
258*
TRISC2
TRISC1
TRISC0
BRGH
TRMT
TX9D
图注:
*
SYNC
SENDB
115
247*
EUSART 发送数据寄存器
TXSTA
256
258*
254
— = 未实现位,读为 0。同步主发送不使用阴影单元。
提供寄存器信息的页。
DS41624A_CN 第 268 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
22.5.1.5
同步主接收
符可被读出,但错误被清除前不能再接收其他字符。只
有清除了溢出条件才可将 OERR 位清零。如果 SREN
位置 1 且 CREN 清零时发生溢出错误,则读取 RCREG
可清除错误。如果 CREN 位置 1 时发生溢出,则可通过
清零 RCSTA 寄存器的 CREN 位或清零可使 EUSART
复位的 SPEN 位清除错误条件。
数据在 RX/DT 引脚上接收。将 EUSART 配置为同步主
接收操作时,自动禁止 RX/DT 引脚输出驱动器。
在同步模式下,可通过将单字节接收使能位 (RCSTA
寄存器的 SREN)或连续接收使能位 (RCSTA 寄存器
的 CREN)置 1 使能接收。
22.5.1.8
SREN 置 1 且 CREN 清零时,一个字符中有多少数据位
就产生多少个时钟周期。一个字符接收完成后 SREN 位
自动清零。CREN 置 1 时,将连续产生时钟直到 CREN
被清零。如果 CREN 在字符接收过程中被清零,则 CK
时钟立即停止,接收到的部分字符被丢弃。如果 SREN
和 CREN 同时置 1,则首字符接收完成时 SREN 被清
零, CREN 的优先级更高。
EUSART 支持 9 位字符接收。当 RCSTA 寄存器的 RX9
位置 1 时,EUSART 将在接收每个字符时将 9 个位移入
RSR。 RCSTA 寄存器的 RX9D 位是第 9 位,也是接收
FIFO 顶部未读字符的最高有效数据位。从接收 FIFO 缓
冲区读取 9 位数据时,在读取 RCREG 的低 8 位前必须
先读取 RX9D 数据位。
要启动接收,将 SREN 或 CREN 置 1。在 TX/CK 时钟
引脚的后沿对 RX/DT 引脚上的数据进行采样,并移入接
收移位寄存器 (RSR)。在完整的字符被接收进 RSR
后, RCIF 位置 1 且该字符被自动送入两个字符的接收
FIFO。接收 FIFO 中顶部字符的低 8 位在 RCREG 中。
只要接收 FIFO 中有未读字符, RCIF 位就保持置 1。
注:
22.5.1.6
22.5.1.9
22.5.1.7
初始化 SPBRGH:SPBRGL 寄存器对,获得所需
的波特率。按需要将 BRGH 和 BRG16 位置 1 或
清零,获得所需的波特率。
2. 清零 RX 引脚的 ANSEL 位 (如适用)。
3. 将 SYNC、SPEN 和 CSRC 位置 1 使能同步主串
口。
4. 确保将 CREN 和 SREN 位清零。
5. 如果需要中断,将 PIE1 寄存器的 RCIE 位以及
INTCON 寄存器的 GIE 和 PEIE 位置 1。
6. 如果需要接收 9 位数据,将 RX9 位置 1。
7. 将 SREN 位置 1 启动接收,或将 CREN 位置 1
使能连续接收。
8. 字符接收完成时中断标志位 RCIF 将被置 1。如
果中断允许位 RCIE 已置 1,则产生中断。
9. 读取 RCSTA 寄存器取得第 9 位(如果已使能),
并确定接收时是否发生了错误。
10. 通过读取 RCREG 寄存器来读取接收到的 8 位数
据。
11. 如果发生了溢出错误,可通过清零 RCSTA 寄存
器的CREN位或清零可使EUSART复位的SPEN
位清除错误。
如果 RX/DT 功能位于模拟引脚上,则必须
清零相应的 ANSEL 位使接收器工作。
从时钟
如果将器件配置为从器件并且 TX/CK 功能
位 于 模 拟 引 脚 上,则 必 须 清 零 相 应 的
ANSEL 位。
接收溢出错误
接收 FIFO 缓冲区可容纳两个字符。在 RCREG 被读取
以访问 FIFO 前,接收到完整的第三个字符时会产生溢
出错误。此时,RCSTA 寄存器的 OERR 位置 1。FIFO
中的前一个数据不会被覆盖。 FIFO 缓冲区中的两个字
 2012 Microchip Technology Inc.
同步主接收设置
1.
同步数据传送使用独立的时钟线,时钟与数据同步。配
置为从器件的器件在 TX/CK 线上接收时钟信号。将器件
配置为同步从发送或接收操作时,自动禁止 TX/CK 引脚
输出驱动器。串行数据位在时钟前沿改变,以确保其在
每个时钟的后沿有效。每个时钟周期传送一个数据位。
数据位有多少,就产生多少个接收时钟周期。
注:
接收 9 位字符
初稿
DS41624A_CN 第 269 页
PIC16(L)F1512/3
图 22-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 位
(中断)
读
RCREG
时序图说明 SREN = 1 且 BRGH = 0 时的同步主模式。
注:
表 22-8:
与同步主接收相关的寄存器汇总
Bit 7
Bit 6
ABDOVF
GIE
PIE1
PIR1
名称
BAUDCON
INTCON
Bit 1
Bit 0
寄存器
所在页
BRG16
—
WUE
ABDEN
257
IOCIE
TMR0IF
INTF
IOCIF
72
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
Bit 4
Bit 3
RCIDL
—
SCKP
PEIE
TMR0IE
INTE
TMR1GIE
ADIE
RCIE
TMR1GIF
ADIF
RCIF
RCREG
RCSTA
Bit 2
Bit 5
250*
EUSART 接收数据寄存器
SPEN
RX9
SREN
ADDEN
CREN
FERR
OERR
RX9D
256
SPBRGL
BRG<7:0>
258*
SPBRGH
BRG<15:8>
258*
TRISC
TXSTA
图注:
*
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
115
CSRC
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
254
— = 未实现位,读为 0。同步主接收不使用阴影单元。
提供寄存器信息的页。
DS41624A_CN 第 270 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
22.5.2
如果向 TXREG 写入两个字,然后执行 SLEEP 指令,则
会发生以下事件:
同步从模式
使用以下位将 EUSART 配置为同步从操作:
1.
2.
3.
4.
• SYNC = 1
• CSRC = 0
• SREN = 0 (用于发送); SREN = 1 (用于接收)
• CREN = 0 (用于发送); CREN = 1 (用于接收)
• SPEN = 1
5.
将 TXSTA 寄存器的 SYNC 位置 1 将器件配置为同步操
作。将 TXSTA 寄存器的 CSRC 位清零将器件配置为从器
件。将 RCSTA 寄存器的 SREN 和 CREN 位清零可确保
器 件 处 于 发 送 模 式,否 则 器 件 将 被 配 置 为 接 收。将
RCSTA 寄存器的 SPEN 位置 1 可使能 EUSART。
22.5.2.1
22.5.2.2
1.
2.
3.
4.
EUSART 同步从发送
除了休眠模式以外,同步主模式和从模式的工作原理是
相同的 (见第 22.5.1.3 节 “同步主发送”)。
5.
6.
7.
8.
表 22-9:
第一个字符将立即传送到 TSR 寄存器并发送。
第二个字将保留在 TXREG 寄存器中。
TXIF 位不会被置 1。
第一个字符移出 TSR 后,TXREG 寄存器会将第
二个字符传送到 TSR,此时 TXIF 位将置 1。
如果 PEIE 和 TXIE 位均置 1,则发生中断将器件
从休眠唤醒,并执行下一条指令。如果 GIE 位也
置 1,程序将调用中断服务程序。
将 SYNC 和 SPEN 位置 1 并清零 CSRC 位。
清零 CK 引脚的 ANSEL 位 (如适用)。
清零 CREN 和 SREN 位。
如果需要中断,将 PIE1 寄存器的 TXIE 位以及
INTCON 寄存器的 GIE 和 PEIE 位置 1。
如果需要 9 位发送,将 TX9 位置 1。
将 TXEN 位置 1 使能发送。
如果选择了 9 位发送,将最高有效位插入 TX9D
位。
将低 8 位写入 TXREG 寄存器,启动发送。
与同步从发送相关的寄存器汇总
Bit 2
Bit 1
Bit 0
寄存器
所在页
BRG16
—
WUE
ABDEN
257
IOCIE
TMR0IF
INTF
IOCIF
72
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
256
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
115
CSRC
TX9
TXEN
BRGH
TRMT
TX9D
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
ABDOVF
GIE
RCIDL
—
SCKP
PEIE
TMR0IE
INTE
PIE1
TMR1GIE
ADIE
RCIE
PIR1
TMR1GIF
ADIF
RCSTA
SPEN
TRISC
名称
BAUDCON
INTCON
TXREG
TXSTA
图注:
*
同步从发送设置
247*
EUSART 发送数据寄存器
SYNC
SENDB
254
— = 未实现位,读为 0。同步从发送不使用阴影单元。
提供寄存器信息的页。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 271 页
PIC16(L)F1512/3
22.5.2.3
EUSART 同步从接收
22.5.2.4
1.
2.
3.
除下列各项外,同步主模式和从模式的工作原理是相同
的 (第 22.5.1.5 节 “同步主接收”):
• 休眠
• CREN 位始终置 1,因此接收器从不空闲
• SREN 位在从模式下为 “无关位”
4.
5.
6.
进入休眠前将 CREN 位置 1,可在休眠模式下接收一个
字符。接收到该字后, RSR 寄存器会将数据发送到
RCREG 寄存器。如果 RCIE 中断允许位置 1,产生的
中断会将器件从休眠唤醒并执行下一条指令。如果 GIE
位也置 1,程序将跳转到中断向量。
7.
8.
9.
表 22-10:
同步从接收设置
将 SYNC 和 SPEN 位置 1 并清零 CSRC 位。
清零 CK 和 DT 引脚的 ANSEL 位 (如适用)。
如果需要中断,将 PIE1 寄存器的 RCIE 位以及
INTCON 寄存器的 GIE 和 PEIE 位置 1。
如果需要接收 9 位数据,将 RX9 位置 1。
将 CREN 位置 1 使能接收。
接收完成时 RCIF 位将被置 1。如果 RCIE 位已
置 1,则产生中断。
如果使能了 9 位模式,从 RCSTA 寄存器的 RX9D
位取出最高有效位。
读取 RCREG 寄存器,从接收 FIFO 取出低 8 位。
如果发生了溢出错误,可通过清零 RCSTA 寄存
器的CREN位或清零可使EUSART复位的SPEN
位清除错误。
与同步从接收相关的寄存器汇总
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
寄存器
所在页
ABDOVF
RCIDL
—
SCKP
BRG16
—
WUE
ABDEN
257
GIE
PEIE
TMR0IE
INTE
IOCIE
TMR0IF
INTF
IOCIF
72
PIE1
TMR1GIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
73
PIR1
TMR1GIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
75
SREN
CREN
ADDEN
FERR
OERR
RX9D
256
名称
BAUDCON
INTCON
RCREG
250*
EUSART 接收数据寄存器
RCSTA
SPEN
RX9
TRISC
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
115
TXSTA
CSRC
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
254
图注:
*
— = 未实现位,读为 0。同步从接收不使用阴影单元。
提供寄存器信息的页。
DS41624A_CN 第 272 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
22.6
休眠期间的 EUSART 操作
22.6.2
休眠期间的同步发送
要在休眠模式下发送,进入休眠模式前必须满足以下所
有条件:
EUSART 只有在同步从模式下,才会在休眠模式下保持
工作状态。所有其他模式都需要系统时钟,因此在休眠
模式下无法产生运行发送或接收移位寄存器必需的信
号。
要在休眠模式下接收,进入休眠模式前必须满足以下所
有条件:
• RCSTA 和 TXSTA 控制寄存器必须配置为同步从
发送 (见第 22.5.2.2 节 “同步从发送设置”)。
• 必须通过将输出数据写入 TXREG 来清零 TXIF 中
断标志位,从而填充 TSR 和发送缓冲区。
• 如果需要中断,将 PIE1 寄存器的 TXIE 位和
INTCON 寄存器的 PEIE 位置 1。
• 必须将 PIE1 寄存器的 TXIE 中断允许位和
INTCON 寄存器的 PEIE 中断允许位置 1。
• RCSTA 和 TXSTA 控制寄存器必须配置为同步从
接收 (见第 22.5.2.4 节 “同步从接收设置”)。
• 如果需要中断,将 PIE1 寄存器的 RCIE 位以及
INTCON 寄存器的 GIE 和 PEIE 位置 1。
• 必须通过读 RCREG 清零 RCIF 中断标志位,以卸
载接收缓冲区中等待处理的任何字符。
进入休眠模式时,器件将在 TX/CK 引脚上接收时钟信
号,在 RX/DT 引脚上发送数据。 TSR 中的数据字完全
由外部器件随着时钟移出后, TXREG 中等待的字节将
传输到 TSR,TXIF 标志位置 1,从而将处理器从休眠模
式唤醒。此时, TXREG 可接收其他字符进行发送,此
操作将清零 TXIF 标志位。
进入休眠模式时,器件将准备好分别在RX/DT 和 TX/CK
引脚上接收数据和时钟信号。数据字从外部器件随着时
钟完全移入时, PIR1 寄存器的 RCIF 中断标志位将置
1,从而将处理器从休眠模式唤醒。
从休眠状态唤醒时,将执行 SLEEP 指令后紧跟的指令。
如果全局中断允许(GIE)位也置 1,将调用地址 0004h
处的中断服务程序。
同步从模式使用外部产生的时钟运行发送和接收移位寄
存器。
22.6.1
休眠期间的同步接收
从休眠状态唤醒时,将执行 SLEEP 指令后紧跟的指令。
如果 INTCON 寄存器的全局中断允许 (GIE)位也置
1,将调用地址 004h 处的中断服务程序。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 273 页
PIC16(L)F1512/3
注:
DS41624A_CN 第 274 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
23.0
23.2
在线串行编程 (ICSP™)
低电压编程进入模式
ICSP™ 编程允许用户在生产电路板时使用未编程器件。
编程可以在组装流程之后完成,从而可以使用最新版本
的固件或者定制固件对器件编程。ICSP™ 编程需要 5 个
引脚:
• ICSPCLK
• ICSPDAT
• MCLR/VPP
• VDD
• VSS
通过低电压编程进入模式,只需使用 VDD 就可以对
PIC16(L)F151X 进行编程,而无需使用高电压。当配置
字的 LVP 位设置为 1 时,将会使能低电压 ICSP 编程进
入模式。要禁止低电压 ICSP 模式,LVP 位必须编程为
0。
在编程 / 校验模式下,通过串行通信对程序存储器、用户
ID 和配置字进行编程。ICSPDAT 引脚是用于传输串行数
据的双向 I/O, ICSPCLK 引脚是时钟输入引脚。 关于
ICSP™ 的更多信息,请参见 “PIC16(L)F151X/152X
Memory Programming Specification”(DS41442)。
完成密钥序列后,在需要维持编程 / 校验模式的时间内,
必须将 MCLR 保持为 VIL。
23.1
进入低电压编程进入模式需要执行以下步骤:
1.
2.
MCLR 电压设置为 VIL。
在提供 ICSPCLK 时钟的同时,在 ICSPDAT 上
送出 32 位密钥序列。
如果使能了低电压编程 (LVP = 1),则 MCLR 复位功
能会被自动使能,无法禁止。更多信息,请参见第 6.3
节 “低功耗欠压复位 (LPBOR)”。
LVP 位只能通过使用高电压编程模式重新设定为 0。
高电压编程进入模式
23.3
通过将 ICSPCLK 和 ICSPDAT 引脚保持为低电平,然
后将 MCLR/VPP 上的电压升至 VIHH,将器件置于高电
压编程进入模式。
常用编程接口
与目标器件的连接通常通过 ICSP™ 插头来实现。 开发
工具中常见的连接器是采用 6P6C(6 引脚,6 连接器)
配置的 RJ-11。请参见图 23-1。
图 23-1:
VDD
ICD RJ-11 型连接器接口
ICSPDAT
NC
2 4 6
ICSPCLK
1 3 5
目标
VPP/MCLR
VSS
PC 板
底部
引脚说明 *
1 = VPP/MCLR
2 = VDD 目标电源
3 = VSS (地)
4 = ICSPDAT
5 = ICSPCLK
6 = 无连接
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 275 页
PIC16(L)F1512/3
另一种常用于 PICkit™ 编程器的连接器是间距为 0.1 英
寸的标准 6 引脚插头。请参见图 23-2。
图 23-2:
PICkit™ 型连接器接口
引脚 1 指示标记
引脚说明 *
1
2
3
4
5
6
1 = VPP/MCLR
2 = VDD 目标电源
3 = VSS (地)
4 = ICSPDAT
5 = ICSPCLK
6 = 无连接
*
DS41624A_CN 第 276 页
此 6 引脚插头 (0.100" 间距)可连接 0.025" 的方形引脚。
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
关于其他接口建议,请在进行 PCB 设计之前参见具体
的器件编程器手册。
建议使用隔离器件来隔离编程引脚与其他电路。隔离类
型高度依赖于具体应用,可能会包含诸如电阻、二极管
甚至跳线之类的元件。更多信息,请参见图 23-3。
图 23-3:
ICSP™ 编程的典型连接
外部
编程
信号
VDD
要编程的器件
VDD
VDD
VPP
MCLR/VPP
VSS
VSS
数据
ICSPDAT
时钟
ICSPCLK
*
*
*
至正常连接
* 隔离器件 (根据需要而定)。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 277 页
PIC16(L)F1512/3
注:
DS41624A_CN 第 278 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
24.0
24.1
指令集汇总
任何一条指定文件寄存器作为指令一部分的指令都进行
读 - 修改 - 写(Read-Modify-Write,R-M-W)操作。根
据指令或目标标识符 d 读寄存器、修改数据和存储结
果。即使指令写入该寄存器,还是会执行对寄存器的读
操作。
每条指令都是一个包含操作码和所有必需操作数的 14
位字。操作码可以分为三大类。
• 针对字节的操作类指令
• 针对位的操作类指令
• 立即数和控制操作类指令
表 24-1:
立即数和控制类指令字格式最为丰富。
表 24-3 列出了 MPASM
TM
读 - 修改 - 写操作
汇编器可识别的指令。
操作码字段说明
字段
除了以下指令 (可能需要 2 或 3 个周期),所有指令都
在单个指令周期内执行:
f
• 子程序指令需要两个周期 (CALL 和 CALLW)
• 中断或子程序返回指令需要两个周期 (RETURN、
RETLW 和 RETFIE)
• 程序跳转指令需要两个周期(GOTO、BRA、BRW、
BTFSS、 BTFSC、 DECFSZ 和 INCSFZ)
• 当任意指令引用某个间接文件寄存器,并且文件选
择寄存器指向程序存储器时,将需要使用一个额外
的指令周期。
一个指令周期包含4个振荡器周期;振荡器频率为4 MHz
时,得到的标称指令执行速率为 1 MHz。
文件寄存器地址 (0x00 至 0x7F)
W
工作寄存器 (累加器)
b
8 位文件寄存器内的位地址
k
立即数字段、常数或标号
x
无关位 (= 0 或 1)。
汇编器将生成 x = 0 的代码。为了与所有的
Microchip 软件工具兼容,建议使用这种形式。
d
目标寄存器选择; d = 0:结果存入 W,
d = 1:结果存入文件寄存器 f。
默认值 d = 1。
n
FSR 或 INDF 编号 (0-1)。
mm
所有指令示例均使用格式 0xhh 来表示一个十六进制
数,其中 h 表示一个十六进制数字。
说明
预 / 后递增 / 递减模式选择
表 24-2:
缩写说明
字段
程序计数器
TO
超时位
C
进位位
DC
Z
PD
 2012 Microchip Technology Inc.
初稿
说明
PC
半进位位
全零标志位
掉电位
DS41624A_CN 第 279 页
PIC16(L)F1512/3
图 24-1:
指令的通用格式
针对字节的文件寄存器操作类指令
13
8 7 6
0
操作码
d
f(寄存器地址)
d = 0,结果存入 W
d = 1,结果存入 f
f = 7 位文件寄存器地址
针对位的文件寄存器操作类指令
13
10 9
7 6
0
操作码
b(位地址) f(寄存器地址)
b = 3 位位地址
f = 7 位文件寄存器地址
立即数和控制操作类指令
一般格式
13
8
7
0
k(立即数)
操作码
k = 8 位立即数的值
仅限 CALL 和 GOTO 指令
13
11 10
0
k(立即数)
操作码
k = 11 位立即数的值
仅限 MOVLP 指令
13
操作码
7
6
0
k(立即数)
k = 7 位立即数的值
仅限 MOVLB 指令
13
操作码
5 4
0
k(立即数)
k = 5 位立即数的值
仅限 BRA 指令
13
操作码
9
8
0
k(立即数)
k = 9 位立即数的值
FSR 偏移指令
13
操作码
7
6
n
5
0
k(立即数)
n = 相应的 FSR
k = 6 位立即数的值
FSR 递增指令
13
3
操作码
2 1
0
n m(模式)
n = 相应的 FSR
m = 2 位模式值
仅限操作码
13
0
操作码
DS41624A_CN 第 280 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 24-3:
指令集
助记符,
操作数
说明
14 位操作码
周期数
MSb
受影响的
状态位
LSb
注
针对字节的文件寄存器操作类指令
ADDWF
ADDWFC
ANDWF
ASRF
LSLF
LSRF
CLRF
CLRW
COMF
DECF
INCF
IORWF
MOVF
MOVWF
RLF
RRF
SUBWF
SUBWFB
SWAPF
XORWF
f, d
f, d
f, d
f, d
f, d
f, d
f
–
f, d
f, d
f, d
f, d
f, d
f
f, d
f, d
f, d
f, d
f, d
f, d
W 与 f 相加
W 与 f 相加 (带进位)
W 和 f 作逻辑与运算
算术右移
逻辑左移
逻辑右移
将 f 清零
将 W 清零
对 f 取反
f 递减 1
f 递增 1
W 和 f 作逻辑或运算
传送 f
将 W 的内容传送到 f
f 带进位循环左移
f 带进位循环右移
f 减去 W
f 减去 W (带借位)
将 f 中的两个半字节进行交换
W 和 f 作逻辑异或运算
DECFSZ
INCFSZ
f, d
f, d
f 递减 1,为 0 则跳过
f 递增 1,为 0 则跳过
BCF
BSF
f, b
f, b
将 f 中的某位清零
将 f 中的某位置 1
BTFSC
BTFSS
f, b
f, b
测试 f 中的某位,为 0 则跳过
测试 f 中的某位,为 1 则跳过
ADDLW
ANDLW
IORLW
MOVLB
MOVLP
MOVLW
SUBLW
XORLW
k
k
k
k
k
k
k
k
立即数与 W 相加
立即数和 W 作逻辑与运算
立即数和 W 作逻辑或运算
将立即数传送到 BSR
将立即数传送到 PCLATH
将立即数传送到 W
立即数减去 W
立即数和 W 作逻辑异或运算
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
00
11
00
11
11
11
00
00
00
00
00
00
00
00
00
00
00
11
00
00
0111
1101
0101
0111
0101
0110
0001
0001
1001
0011
1010
0100
1000
0000
1101
1100
0010
1011
1110
0110
dfff
dfff
dfff
dfff
dfff
dfff
lfff
0000
dfff
dfff
dfff
dfff
dfff
1fff
dfff
dfff
dfff
dfff
dfff
dfff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
00xx
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
C, DC, Z
C, DC, Z
Z
C, Z
C, Z
C, Z
Z
Z
Z
Z
Z
Z
Z
C
C
C, DC, Z
C, DC, Z
Z
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
针对字节的跳过操作类指令
1(2)
1(2)
00
00
1011 dfff ffff
1111 dfff ffff
1, 2
1, 2
01
01
00bb bfff ffff
01bb bfff ffff
2
2
01
01
10bb bfff ffff
11bb bfff ffff
1, 2
1, 2
11
11
11
00
11
11
11
11
1110
1001
1000
0000
0001
0000
1100
1010
针对位的文件寄存器操作类指令
1
1
针对位的跳过操作类指令
注
1(2)
1(2)
立即数操作类指令
1
1
1
1
1
1
1
1
kkkk
kkkk
kkkk
001k
1kkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
C, DC, Z
Z
Z
C, DC, Z
Z
1: 如果程序计数器 (PC)被修改或条件测试结果为真,则该指令需要两个周期。第二个周期执行一条 NOP 指令。
2: 如果该指令寻址的是 INDF 寄存器,并且相应 FSR 的 MSb 置 1,则该指令将需要一个额外的指令周期。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 281 页
PIC16(L)F1512/3
表 24-3:
指令集 (续)
助记符,
操作数
说明
周期数
LSb
受影响的
状态位
11
00
10
00
10
00
11
00
001k
0000
0kkk
0000
1kkk
0000
0100
0000
kkkk
0000
kkkk
0000
kkkk
0000
kkkk
0000
kkkk
1011
kkkk
1010
kkkk
1001
kkkk
1000
固有操作类指令
1
1
1
1
1
1
00
00
00
00
00
00
0000
0000
0000
0000
0000
0000
0110
0000
0110
0000
0110
0110
0100 TO, PD
0000
0010
0001
0011 TO, PD
0fff
k
–
k
–
k
k
k
–
相对跳转
使用 W 进行相对跳转
调用子程序
使用 W 调用子程序
跳转到地址
从中断返回
返回并将立即数送入 W
从子程序返回
CLRWDT
NOP
OPTION
RESET
SLEEP
TRIS
–
–
–
–
–
f
将看门狗定时器清零
空操作
将 W 的内容装入 OPTION_REG 寄存器
软件器件复位
进入待机模式
将 W 的内容装入 TRIS 寄存器
ADDFSR
MOVIW
n, k
n mm
MOVWI
k[n]
n mm
k[n]
MSb
控制操作类指令
2
2
2
2
2
2
2
2
BRA
BRW
CALL
CALLW
GOTO
RETFIE
RETLW
RETURN
注
14 位操作码
优化的 C 编译器指令
1
立即数 k 与 FSRn 相加
1
将间接寄存器 FSRn 传送到 W,带有预 / 后递
增 / 递减修改量 mm
1
将 INDFn 传送到 W,变址间接寻址
1
将 W 传送到间接寄存器 FSRn,带有预 / 后递
增 / 递减修改量 mm
1
将 W 传送到 INDFn,变址间接寻址
注
11
00
0001 0nkk kkkk
0000 0001 0nmm Z
2, 3
11
00
1111 0nkk kkkk Z
0000 0001 1nmm
2
2, 3
11
1111 1nkk kkkk
2
1: 如果程序计数器 (PC)被修改或条件测试结果为真,则该指令需要两个周期。第二个周期执行一条 NOP 指令。
2: 如果该指令寻址的是 INDF 寄存器,并且相应 FSR 的 MSb 置 1,则该指令将需要一个额外的指令周期。
3: 请参见 MOVIW 和 MOVWI 指令说明表。
DS41624A_CN 第 282 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
24.2
指令说明
ADDFSR
立即数与 FSRn 相加
ANDLW
立即数和 W 作逻辑与运算
语法:
[ 标号 ] ADDFSR FSRn, k
语法:
[ 标号 ] ANDLW
操作数:
-32  k  31
n  [0, 1]
操作数:
0  k  255
FSR(n) + k  FSR(n)
操作:
(W) .AND. (k)  (W)
操作:
受影响的状态位:
Z
受影响的状态位:
无
说明:
说明:
将有符号 6 位立即数 k 与
FSRnH:FSRnL 寄存器对的内容相加。
将 W 寄存器中的内容与 8 位立即数 k
进行逻辑与运算。结果存入 W 寄存
器。
k
FSRn 地址范围限制为
0000h-FFFFh。传送地址超出该边界
时, FSR 会发生折回。
ADDLW
立即数与 W 相加
ANDWF
W 和 f 作逻辑与运算
语法:
[ 标号 ] ADDLW
语法:
[ 标号 ] ANDWF
操作数:
0  k  255
操作数:
操作:
(W) + k  (W)
0  f  127
d 0,1
受影响的状态位:
C、 DC 和 Z
操作:
(W) .AND. (f) ( 目标寄存器 )
说明:
将 W 寄存器的内容与 8 位立即数 k 相
加,结果存入 W 寄存器。
受影响的状态位:
Z
说明:
将 W 寄存器的内容与寄存器 f 的内容
进行逻辑与运算。如果 d 为 0,结果存
入 W 寄存器。如果 d 为 1,结果存回
寄存器 f。
ADDWF
W 与 f 相加
ASRF
算术右移
语法:
[ 标号 ] ADDWF
语法:
[ 标号 ] ASRF
操作数:
0  f  127
d 0,1
操作数:
0  f  127
d 0,1
操作:
(W) + (f)  ( 目标寄存器 )
操作:
(f<7>)  dest<7>
(f<7:1>)  dest<6:0>
(f<0>)  C
k
f,d
受影响的状态位:
C、 DC 和 Z
说明:
将 W 寄存器的内容与寄存器 f 的内容
相加。如果 d 为 0,结果存入 W 寄存
器。如果 d 为 1,结果存回寄存器 f。
ADDWFC
W 与 f 相加 (带进位)
语法:
[ 标号 ] ADDWFC
操作数:
0  f  127
d 0,1
操作:
(W) + (f) + (C)  dest
f {,d}
受影响的状态位:
C和Z
说明:
将寄存器 f 的内容连同进位标志位一
起右移 1 位。 MSb 保持不变。如果 d
为 0,结果存入 W。如果 d 为 1,结
果存回寄存器 f。
寄存器 f
C
f {,d}
受影响的状态位:
C、 DC 和 Z
说明:
将 W 的内容、进位标志位与数据存储
单元 f 的内容相加。如果 d 为 0,结果
存入 W。如果 d 为 1,结果存入数据
存储单元 f。
 2012 Microchip Technology Inc.
f,d
初稿
DS41624A_CN 第 283 页
PIC16(L)F1512/3
BTFSC
测试 f 中的某位,为 0 则跳过
语法:
[ 标号 ] BTFSC f,b
操作数:
0  f  127
0b7
BCF
将 f 中的某位清零
语法:
[ 标号 ] BCF
操作数:
0  f  127
0b7
操作:
0  (f<b>)
操作:
如果 (f<b>) = 0,则跳过
受影响的状态位:
无
受影响的状态位:
无
说明:
将寄存器 f 中的位 b 清零。
说明:
如果寄存器 f 的位 b 为 1,则执行下一
条指令。
如果寄存器 f 的位 b 为 0,则丢弃下一
条指令,代之执行一条 NOP 指令,使
之成为一条双周期指令。
BRA
相对跳转
BTFSS
测试 f 中的某位,为 1 则跳过
语法:
[ 标号 ] BRA label
[ 标号 ] BRA $+k
语法:
[ 标号 ] BTFSS f,b
-256  label - PC + 1  255
-256  k  255
操作数:
操作数:
0  f  127
0b<7
(PC) + 1 + k  PC
操作:
如果 (f<b>) = 1,则跳过
操作:
受影响的状态位:
无
受影响的状态位:
无
说明:
说明:
将有符号 9 位立即数 k 与 PC 相加。
由于 PC 将递增 1 以取下一条指令,
所以新地址为 PC + 1 + k。该指令为
双周期指令。该跳转的地址范围存在
限制。
如果寄存器 f 的位 b 为 0,则执行下一
条指令。
如果位 b 为 1,则丢弃下一条指令,代
之执行一条 NOP 指令,使之成为双周
期指令。
BRW
使用 W 进行相对跳转
语法:
[ 标号 ] BRW
操作数:
无
操作:
(PC) + (W)  PC
f,b
受影响的状态位:
无
说明:
将 W 的内容 (无符号)与 PC 相加。
由于 PC 将递增以便取出下一条指令,
所以新地址将为 PC + 1 + (W)。该指
令为一条双周期指令。
BSF
将 f 中的某位置 1
语法:
[ 标号 ] BSF
操作数:
0  f  127
0b7
f,b
操作:
1  (f<b>)
受影响的状态位:
无
说明:
将寄存器 f 的位 b 置 1。
DS41624A_CN 第 284 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
CALL
调用子程序
CLRWDT
将看门狗定时器清零
语法:
[ 标号 ] CALL k
语法:
[ 标号 ] CLRWDT
操作数:
0  k  2047
操作数:
无
操作:
(PC) + 1  TOS,
k  PC<10:0>,
(PCLATH<6:3>)  PC<14:11>
操作:
受影响的状态位:
无
00h  WDT
0  WDT 预分频器,
1  TO
1  PD
说明:
调用子程序。首先,将返回地址 (PC
+ 1)压入堆栈。 11 位直接地址值被装
入 PC 的 <10:0> 位。 PC 的高位值从
PCLATH 装入。 CALL 是一条双周期
指令。
受影响的状态位:
TO 和 PD
说明:
CLRWDT 指令复位看门狗定时器及其预
分频器。
状态位 TO 和 PD 均被置 1。
CALLW
使用 W 调用子程序
COMF
对 f 取反
语法:
[ 标号 ] CALLW
语法:
[ 标号 ] COMF
操作数:
无
操作数:
操作:
(PC) +1  TOS,
(W)  PC<7:0>,
(PCLATH<6:0>)  PC<14:8>
0  f  127
d 0,1
f,d
操作:
(f)  ( 目标寄存器 )
受影响的状态位:
Z
说明:
将寄存器 f 的内容取反。如果 d 为 0,
结果存入 W 寄存器。如果 d 为 1,结
果存回 f 寄存器。
DECF
f 递减 1
受影响的状态位:
无
说明:
使用 W 调用子程序。首先,将返回地
址 (PC + 1)压入返回堆栈。然后,
W 的内容被装入 PC<7:0>, PCLATH
的内容被装入 PC<14:8>。 CALLW 是
一条双周期指令。
CLRF
将 f 清零
语法:
[ 标号 ] CLRF
语法:
[ 标号 ] DECF f,d
操作数:
0  f  127
操作数:
操作:
00h  (f)
1Z
0  f  127
d 0,1
操作:
(f) -1  ( 目标寄存器 )
受影响的状态位:
Z
受影响的状态位:
Z
说明:
寄存器 f 的内容被清零,并且 Z 位被
置 1。
说明:
将寄存器 f 的内容减 1。如果 d 为 0,
结果存入 W 寄存器。如果 d 为 1,结
果存回寄存器 f。
CLRW
将 W 清零
f
语法:
[ 标号 ] CLRW
操作数:
无
操作:
00h  (W)
1Z
受影响的状态位:
Z
说明:
W 寄存器被清零。全零位 (Z)被置
1。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 285 页
PIC16(L)F1512/3
DECFSZ
f 递减 1,为 0 则跳过
INCFSZ
f 递增 1,为 0 则跳过
语法:
[ 标号 ] DECFSZ f,d
语法:
[ 标号 ]
操作数:
0  f  127
d  [0,1]
操作数:
0  f  127
d  [0,1]
操作:
(f) - 1  ( 目标寄存器 ) ;
如果结果 = 0 则跳过
操作:
(f) + 1  ( 目标寄存器 ),
如果结果 = 0 则跳过
受影响的状态位:
无
受影响的状态位:
无
说明:
将寄存器 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<6:3>  PC<14:11>
操作:
(W) .OR. k  (W)
受影响的状态位:
Z
受影响的状态位:
无
说明:
说明:
GOTO 是一条无条件跳转指令。 11 位立
即数被装入 PC 的 <10:0> 位。 PC 的
高位从 PCLATH<4:3> 装入。 GOTO 是
一条双周期指令。
将 W 寄存器的内容与 8 位立即数 k 进
行逻辑或运算。结果存入 W 寄存器。
INCF
f 递增 1
语法:
[ 标号 ]
操作数:
0  f  127
d  [0,1]
操作:
GOTO k
INCFSZ f,d
IORLW k
IORWF
W 和 f 作逻辑或运算
语法:
[ 标号 ]
操作数:
0  f  127
d  [0,1]
(f) +1  ( 目标寄存器 )
操作:
(W) .OR. (f) ( 目标寄存器 )
受影响的状态位:
Z
受影响的状态位:
Z
说明:
将寄存器 f 的内容加 1。如果 d 为 0,
结果存入 W 寄存器。如果 d 为 1,结
果存回寄存器 f。
说明:
将 W 寄存器的内容与寄存器 f 的内容
进行逻辑或运算。如果 d 为 0,结果存
入 W 寄存器。如果 d 为 1,结果存回
寄存器 f。
DS41624A_CN 第 286 页
INCF f,d
初稿
IORWF
f,d
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
LSLF
逻辑左移
语法:
[ 标号 ] LSLF
操作数:
0  f  127
d  [0,1]
操作:
(f<7>)  C
(f<6:0>)  dest<7:1>
0  dest<0>
f {,d}
受影响的状态位:
C和Z
说明:
将寄存器 f 的内容连同进位标志位一起
左移 1 位。 0 移入 LSb。如果 d 为 0,
结果存入 W。如果 d 为 1,结果存回寄
存器 f。
C
寄存器 f
0
MOVF
传送 f
语法:
[ 标号 ]
操作数:
0  f  127
d  [0,1]
操作:
(f)  ( 目标寄存器 )
受影响的状态位:
Z
说明:
根据 d 的状态,将寄存器 f 的内容传送
到目标寄存器。如果 d = 0,目标寄存
器为 W 寄存器。如果 d = 1,目标寄
存器为文件寄存器 f 本身。由于状态标
志位 Z 要受影响,可用 d = 1 对文件寄
存器进行检测。
指令字数:
1
指令周期数:
1
示例:
LSRF
逻辑右移
语法:
[ 标号 ] LSRF
操作数:
0  f  127
d  [0,1]
操作:
0  dest<7>
(f<7:1>)  dest<6:0>
(f<0>)  C
受影响的状态位:
C和Z
说明:
将寄存器 f 的内容连同进位标志位一起
右移 1 位。 0 移入 MSb。如果 d 为 0,
结果存入 W。如果 d 为 1,结果存回寄
存器 f。
0
 2012 Microchip Technology Inc.
MOVF
执行指令后
W =
Z =
f {,d}
寄存器 f
MOVF f,d
FSR, 0
FSR 寄存器的值
1
C
初稿
DS41624A_CN 第 287 页
PIC16(L)F1512/3
MOVIW
将 INDFn 的内容传送到 W
MOVLP
将立即数传送到 PCLATH
语法:
[ 标号 ] MOVIW ++FSRn
[ 标号 ] MOVIW --FSRn
[ 标号 ] MOVIW FSRn++
[ 标号 ] MOVIW FSRn-[ 标号 ] MOVIW k[FSRn]
语法:
[ 标号 ] MOVLP k
操作数:
0  k  127
操作:
k  PCLATH
受影响的状态位:
无
说明:
将 7 位立即数 k 装入 PCLATH 寄存器。
操作数:
n  [0,1]
mm  [00,01, 10, 11]
-32  k  31
操作:
INDFn  W
有效地址通过以下方式确定
• FSR + 1 (预递增)
• FSR - 1 (预递减)
• FSR + k (相对偏移)
在传送之后, FSR 值将为以下之一:
• FSR + 1 (全部递增)
• FSR - 1 (全部递减)
• 不变
受影响的状态位:
Z
模式
语法
mm
预递增
++FSRn
00
预递减
--FSRn
01
后递增
FSRn++
10
后递减
FSRn--
11
说明:
FSRn 地址范围限制为 0000h-FFFFh。
地址递增 / 递减到超出这些边界时,将导
致它发生折回。
语法:
[ 标号 ] MOVLB k
操作数:
0  k  15
操作:
k  BSR
受影响的状态位:
无
说明:
将 5 位立即数 k 装入存储区选择寄存
器 (BSR)。
DS41624A_CN 第 288 页
[ 标号 ]
操作数:
0  k  255
操作:
k  (W)
受影响的状态位:
无
说明:
将 8 位立即数 k 装入 W 寄存器。其余
无关位均汇编为 0。
指令字数:
1
指令周期数:
1
MOVLW k
MOVLW
0x5A
执行指令后
W
注:INDFn 寄存器不是物理寄存器。访
问 INDFn 寄存器的所有指令实际上访问
的是由 FSRn 指定的地址处的寄存器。
将立即数传送到 BSR
将立即数传送到 W
语法:
示例:
该指令用于在 W 和一个间接寄存器
(INDFn)之间传送数据。在该传送操
作之前 / 之后,将通过预 / 后递增 / 递减
指针来更新指针 (FSRn)。
MOVLB
MOVLW
=
0x5A
MOVWF
将 W 的内容传送到 f
语法:
[ 标号 ]
操作数:
0  f  127
操作:
(W)  (f)
受影响的状态位:
无
说明:
将 W 寄存器的数据传送到寄存器 f。
指令字数:
1
指令周期数:
1
示例:
MOVWF
MOVWF
f
OPTION_REG
执行指令前
OPTION_REG = 0xFF
W = 0x4F
执行指令后
OPTION_REG = 0x4F
W = 0x4F
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
MOVWI
语法:
操作数:
操作:
将 W 的内容传送到 INDFn
NOP
空操作
[ 标号 ] MOVWI ++FSRn
[ 标号 ] MOVWI --FSRn
[ 标号 ] MOVWI FSRn++
[ 标号 ] MOVWI FSRn-[ 标号 ] MOVWI k[FSRn]
语法:
[ 标号 ]
操作数:
无
操作:
空操作
受影响的状态位:
无
n  [0,1]
mm  [00,01, 10, 11]
-32  k  31
说明:
不执行任何操作。
指令字数:
1
指令周期数:
1
W  INDFn
有效地址通过以下方式确定
• FSR + 1 (预递增)
• FSR - 1 (预递减)
• FSR + k (相对偏移)
在传送之后, FSR 值将为以下之一:
• FSR + 1 (全部递增)
• FSR - 1 (全部递减)
• 不变
受影响的状态位:
无
模式
语法
mm
预递增
++FSRn
00
预递减
--FSRn
01
后递增
FSRn++
后递减
FSRn--
说明:
NOP
示例:
OPTION
将 W 的内容装入 OPTION_REG
寄存器
语法:
[ 标号 ] OPTION
操作数:
无
操作:
(W)  OPTION_REG
受影响的状态位:
无
说明:
将 W 寄存器的数据传送到
OPTION_REG 寄存器。
10
指令字数:
1
11
指令周期数:
1
示例:
OPTION
执行指令前
OPTION_REG = 0xFF
W = 0x4F
执行指令后
OPTION_REG = 0x4F
W = 0x4F
该指令用于在 W 和一个间接寄存器
(INDFn)之间传送数据。在该传送操
作之前 / 之后,将通过预 / 后递增 / 递减
指针来更新指针 (FSRn)。
注:INDFn 寄存器不是物理寄存器。访
问 INDFn 寄存器的所有指令实际上访问
的是由 FSRn 指定的地址处的寄存器。
RESET
FSRn 地址范围限制为 0000h-FFFFh。
地址递增 / 递减到超出这些边界时,将导
致它发生折回。
对于 FSRn 的递增 / 递减操作不会影响任
何状态位。
 2012 Microchip Technology Inc.
NOP
初稿
软件复位
语法:
[ 标号 ] RESET
操作数:
无
操作:
执行器件复位。复位 PCON 寄存器的
nRI 标志。
受影响的状态位:
无
说明:
此指令可实现用软件执行硬件复位。
DS41624A_CN 第 289 页
PIC16(L)F1512/3
RETFIE
从中断返回
RETURN
从子程序返回
语法:
[ 标号 ]
语法:
[ 标号 ]
操作数:
无
操作数:
无
操作:
TOS  PC,
1  GIE
操作:
TOS  PC
受影响的状态位:
无
受影响的状态位:
无
说明:
说明:
从中断返回。执行出栈操作,将栈顶
(Top-of-Stack, TOS)的内容装入
PC。通过将全局中断允许位 GIE
(INTCON<7>)置 1,来允许中断。
这是一条双周期指令。
从子程序返回。执行出栈操作,将栈
顶 (TOS)内容装入程序计数器。这
是一条双周期指令。
指令字数:
1
指令周期数:
2
RETFIE k
RETURN
RETFIE
示例:
中断后
PC =
GIE =
TOS
1
RETLW
返回并将立即数送入 W
RLF
f 带进位循环左移
语法:
[ 标号 ]
语法:
[ 标号 ]
操作数:
0  k  255
操作数:
操作:
k  (W) ;
TOS  PC
0  f  127
d  [0,1]
操作:
参见如下说明
受影响的状态位:
无
受影响的状态位:
C
说明:
将 8 位立即数 k 装入 W 寄存器。将栈
顶内容 (返回地址)装入程序计数
器。这是一条双周期指令。
说明:
指令字数:
1
将寄存器 f 的内容连同进位标志位一起
循环左移 1 位。如果 d 为 0,结果存
入 W 寄存器。如果 d 为 1,结果存回
寄存器 f。
指令周期数:
2
示例:
TABLE
RETLW k
RLF
C
CALL TABLE;W contains table
; offset value
•
;W now has table value
•
•
ADDWF PC
;W = offset
RETLW k1 ;Begin table
RETLW k2 ;
•
•
•
RETLW kn ;End of table
执行指令前
W
执行指令后
W
DS41624A_CN 第 290 页
=
0x07
=
k8 的值
指令字数:
1
指令周期数:
1
示例:
RLF
寄存器 f
REG1,0
执行指令前
REG1
C
执行指令后
REG1
W
C
初稿
f,d
=
=
1110 0110
0
=
=
=
1110 0110
1100 1100
1
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
RRF
f 带进位循环右移
SUBLW
立即数减去 W
语法:
[ 标号 ]
语法:
[ 标号 ]
操作数:
0  f  127
d  [0,1]
操作数:
0  k  255
操作:
k - (W)  (W)
操作:
参见如下说明
受影响的状态位: C、 DC 和 Z
受影响的状态位:
C
说明:
说明:
将寄存器 f 的内容连同进位标志位一起
循环右移 1 位。如果 d 为 0,结果存
入 W 寄存器。如果 d 为 1,结果存回
寄存器 f。
RRF f,d
C
寄存器 f
SUBLW k
用 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>
SUBWF
f 减去 W
语法:
[ 标号 ]
无
操作数:
00h  WDT,
0  WDT 预分频器,
1  TO,
0  PD
0  f  127
d  [0,1]
操作:
(f) - (W)  ( 目标寄存器 )
SLEEP
进入休眠模式
语法:
[ 标号 ]
操作数:
操作:
SLEEP
受影响的状态位:
TO 和 PD
说明:
掉电状态位 PD 被清零。超时状态位
TO 被置 1。看门狗定时器及其预分频
器被清零。
振荡器停振,处理器进入休眠模式。
 2012 Microchip Technology Inc.
SUBWF f,d
受影响的状态位: C、 DC 和 Z
说明:
初稿
用寄存器 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>
SUBWFB
f 减去 W (带借位)
语法:
SUBWFB
操作数:
0  f  127
d  [0,1]
操作:
(f) – (W) – (B) dest
受影响的状态位:
C、 DC 和 Z
说明:
用 f 寄存器的内容减去 W 的内容和借位
标志 (进位)(通过二进制补码方式进
行运算)。如果 d 为 0,结果存入 W。
如果 d 为 1,结果存回寄存器 f。
f {,d}
DS41624A_CN 第 291 页
PIC16(L)F1512/3
SWAPF
将 f 中的两个半字节进行交换
语法:
[ 标号 ]
操作数:
0  f  127
d  [0,1]
(f<3:0>)  ( 目标寄存器 <7:4>),
(f<7:4>)  ( 目标寄存器 <3:0>)
受影响的状态位:
Z
说明:
将 W 寄存器的内容与 8 位立即数 k
进行逻辑异或运算。结果存入 W 寄
存器。
操作:
SWAPF f,d
XORLW
立即数和 W 作逻辑异或运算
语法:
[ 标号 ]
操作数:
0 k 255
操作:
(W) .XOR. k  (W)
XORLW k
受影响的状态位:
无
说明:
寄存器 f 的高半字节和低半字节相互交
换。如果 d 为 0,结果存入 W 寄存
器。如果 d 为 1,结果存回寄存器 f。
TRIS
将 W 的内容装入 TRIS 寄存器
XORWF
W 和 f 作逻辑异或运算
语法:
[ 标号 ] TRIS f
语法:
[ 标号 ]
操作数:
5f7
操作数:
操作:
(W)  TRIS 寄存器 f
0  f  127
d  [0,1]
受影响的状态位:
无
操作:
(W) .XOR. (f) ( 目标寄存器 )
说明:
将 W 寄存器的数据传送到 TRIS 寄存
器。
当 f = 5 时,装入 TRISA。
当 f = 6 时,装入 TRISB。
当 f = 7 时,装入 TRISC。
DS41624A_CN 第 292 页
初稿
XORWF
f,d
受影响的状态位:
Z
说明:
将 W 寄存器的内容与寄存器 f 的内容
进行逻辑异或运算。如果 d 为 0,结
果存入 W 寄存器。如果 d 为 1,结果
存回寄存器 f。
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
25.0
电气规范
绝对最大值 (†)
环境温度............................................................................................................................................-40°C 至 +125°C
储存温度............................................................................................................................................-65°C 至 +150°C
VDD 引脚相对于 VSS 的电压, PIC16F1512/3 ..................................................................................... -0.3V 至 +6.5V
VDD 引脚相对于 VSS 的电压, PIC16LF1512/3 ................................................................................... -0.3V 至 +4.0V
MCLR 引脚相对于 Vss 的电压 ............................................................................................................. -0.3V 至 +9.0V
所有其他引脚相对于 VSS 的电压........................................................................................... -0.3V 至 (VDD + 0.3V)
总功耗 (1) ........................................................................................................................................................ 800 mW
VSS 引脚的最大输出电流, -40°C  TA  +85°C (工业级)........................................................................... 340 mA
VSS 引脚的最大输出电流, -40°C  TA  +125°C (扩展级)......................................................................... 140 mA
VDD 引脚的最大输入电流, -40°C  TA  +85°C (工业级)........................................................................... 255 mA
VDD 引脚的最大输入电流, -40°C  TA  +125°C (扩展级)......................................................................... 105 mA
钳位电流 IK (VPIN < 0 或 VPIN > VDD)20 mA
任一 I/O 引脚的最大输出灌电流 ........................................................................................................................ 25 mA
任一 I/O 引脚的最大输出拉电流 ........................................................................................................................ 25 mA
注
1: 功耗按如下公式计算:PDIS = VDD x {IDD –  IOH} +  {(VDD – VOH) x IOH} + (VOl x IOL)。
† 注:如果器件工作条件超过上述 “绝对最大值”,可能会对器件造成永久性损坏。上述值仅为运行条件极大值,我
们不建议使器件在或超过本规范指定的最大值条件下运行。器件长时间工作在最大值条件下可能会影响其可靠性。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 293 页
PIC16(L)F1512/3
PIC16F1512/3 电压—频率关系图, -40°C  TA  +125°C
图 25-1:
VDD(V)
5.5
2.5
2.3
0
16
10
4
20
频率(MHz)
注
1: 阴影区域表示允许的电压频率组合。
2: 请参见表 25-1 了解每种振荡器模式所支持的频率。
PIC16LF1512/3 电压—频率关系图, -40°C  TA  +125°C
VDD(V)
图 25-2:
3.6
2.5
1.8
0
4
10
16
20
频率(MHz)
注
1: 阴影区域表示允许的电压频率组合。
2: 请参见表 25-1 了解每种振荡器模式所支持的频率。
DS41624A_CN 第 294 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
25.1
直流特性:PIC16(L)F1512/3-I/E (工业级,扩展级)
PIC16LF1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
PIC16F1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
参数
编号
D001
符号
VDD
VDR
PIC16LF1512/3
1.8
2.5
—
—
3.6
3.6
V
V
FOSC  16 MHz:
FOSC  20 MHz
PIC16F1512/3
2.3
2.5
—
—
5.5
5.5
V
V
FOSC  16 MHz:
FOSC  20 MHz
PIC16LF1512/3
1.5
—
—
V
器件处于休眠模式
PIC16F1512/3
1.7
—
—
V
VPOR*
上电复位释放电压
器件处于休眠模式
—
1.6
—
V
VPORR*
上电复位重新激活电压
PIC16LF1512/3
—
1.0
—
V
PIC16F1512/3
—
1.4
—
V
D003
VADFVR
ADC 的固定参考电压,初始精度
D004*
SVDD
确保内部上电复位信号的 VDD 上升速
率
注
条件
RAM 数据保持电压 (1)
D002*
*
†
单位
供电电压
D001
D002*
最小值 典型值 † 最大值
特性
-8
—
0.05
6
—
—
—
1.024V, VDD  2.5V
2.048V, VDD  2.5V
4.096V, VDD  4.75V
V/ms
详情请参见第 6.1 节 “上电复位
(POR)”。
这些参数为特性值,未经测试。
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测试。
1: 这是在不丢失 RAM 数据的前提下,休眠模式下 VDD 的下限值。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 295 页
PIC16(L)F1512/3
图 25-3:
VDD 缓慢上升时, POR 和 POR 重新激活
VDD
VPOR
VPORR
VSS
NPOR
POR 重新激活
VSS
TPOR(3)
TVLOW(2)
注
1: 当 NPOR 为低电平时,器件保持在复位状态。
2: TPOR 典型值为 1 s。
3: TVLOW 典型值为 2.7 s。
DS41624A_CN 第 296 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
25.2
直流特性:PIC16(L)F1512/3-I/E (工业级,扩展级)
PIC16LF1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
PIC16F1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
条件
参数
编号
器件特性
最小值 典型值 † 最大值
单位
VDD
注
供电电流 (IDD) (1, 2)
D010
D010
D010A
D010A
D011
D011
D012
D012
D013
D013
*
†
注
—
8.0
14
A
1.8
—
12.0
18
A
3.0
—
11
23
A
2.3
—
13
24
A
3.0
—
14
26
A
5.0
—
8.0
20
A
1.8
—
12.0
30
A
3.0
—
11
30
A
2.3
—
13
35
A
3.0
—
14
45
A
5.0
—
60
95
A
1.8
—
110
180
A
3.0
—
110
170
A
2.3
—
140
230
A
3.0
—
170
350
A
5.0
—
150
240
A
1.8
—
260
430
A
3.0
—
190
450
A
2.3
—
310
500
A
3.0
—
370
650
A
5.0
—
25
31
A
1.8
—
35
50
A
3.0
—
25
40
A
2.3
—
35
55
A
3.0
—
40
60
A
5.0
Fosc = 32 kHz
LP 振荡器模式, -40°C  TA  +85°C
Fosc = 32 kHz
LP 振荡器模式, -40°C  TA  +85°C
Fosc = 32 kHz
LP 振荡器模式, -40°C  TA  +125°C
Fosc = 32 kHz
LP 振荡器模式, -40°C  TA  +125°C
FOSC = 1 MHz
XT 振荡器模式
FOSC = 1 MHz
XT 振荡器模式
FOSC = 4 MHz
XT 振荡器模式
FOSC = 4 MHz
XT 振荡器模式
FOSC = 500 kHz
EC 振荡器
低功耗模式
FOSC = 500 kHz
EC 振荡器
低功耗模式
这些参数为特性值,未经测试。
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。 这些参数仅供设计参考,未经测试。
1: 有效工作模式下,所有 IDD 测量值的测试条件为: OSC1 = 外部方波,轨到轨满幅,所有 I/O 引脚均为三态,上拉至
VDD ; MCLR = VDD ;禁止 WDT。
2: 供电电流主要受工作电压和频率的影响。 其他因素,如 I/O 引脚负载和开关速率、振荡器类型、内部代码执行模式以及
温度也会对电流消耗产生影响。
3: 对于 RC 振荡器配置,该电流不包括流经 REXT 的电流。 流经该电阻的电流可以由公式 IR = VDD/2REXT (mA)来估算,
其中 REXT 的单位是 k。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 297 页
PIC16(L)F1512/3
25.2
直流特性: PIC16(L)F1512/3-I/E (工业级,扩展级)(续)
PIC16LF1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
PIC16F1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
条件
参数
编号
器件特性
最小值 典型值 † 最大值
单位
VDD
注
供电电流 (IDD) (1, 2)
D014
D014
D015
D015
D016
D016
D017
D017
D018
D018
D019
D019
*
†
注
—
120
210
A
1.8
—
210
380
A
3.0
—
190
280
A
2.3
—
260
380
A
3.0
—
330
480
A
5.0
—
1.2
1.5
mA
3.0
—
1.3
1.8
mA
3.6
—
1.2
1.5
mA
3.0
—
1.4
2
mA
5.0
—
2.0
6
A
1.8
—
4.0
11
A
3.0
—
16
25
A
2.3
—
20
26
A
3.0
—
22
27
A
5.0
—
110
325
A
1.8
—
150
400
A
3.0
—
290
330
A
2.3
—
335
360
A
3.0
—
385
400
A
5.0
—
250
600
A
1.8
—
450
1000
A
3.0
—
580
750
A
2.3
—
730
1000
A
3.0
—
800
1100
A
5.0
—
0.47
1.3
mA
1.8
—
0.84
1.5
mA
3.0
—
0.85
1.3
mA
2.3
—
1.1
1.5
mA
3.0
—
1.2
1.7
mA
5.0
FOSC = 4 MHz
EC 振荡器,中等功耗模式
FOSC = 4 MHz
EC 振荡器,中等功耗模式
FOSC = 20 MHz
EC 振荡器,高功耗模式
FOSC = 20 MHz
EC 振荡器,高功耗模式
FOSC = 31 kHz
LFINTOSC 模式
FOSC = 31 kHz
LFINTOSC 模式
FOSC = 500 kHz
HFINTOSC 模式
FOSC = 500 kHz
HFINTOSC 模式
FOSC = 8 MHz
HFINTOSC 模式
FOSC = 8 MHz
HFINTOSC 模式
FOSC = 16 MHz
HFINTOSC 模式
FOSC = 16 MHz
HFINTOSC 模式
这些参数为特性值,未经测试。
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。 这些参数仅供设计参考,未经测试。
1: 有效工作模式下,所有 IDD 测量值的测试条件为: OSC1 = 外部方波,轨到轨满幅,所有 I/O 引脚均为三态,上拉至
VDD ; MCLR = VDD ;禁止 WDT。
2: 供电电流主要受工作电压和频率的影响。 其他因素,如 I/O 引脚负载和开关速率、振荡器类型、内部代码执行模式以及
温度也会对电流消耗产生影响。
3: 对于 RC 振荡器配置,该电流不包括流经 REXT 的电流。 流经该电阻的电流可以由公式 IR = VDD/2REXT (mA)来估算,
其中 REXT 的单位是 k。
DS41624A_CN 第 298 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
25.2
直流特性: PIC16(L)F1512/3-I/E (工业级,扩展级)(续)
PIC16LF1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
PIC16F1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
条件
参数
编号
最小值 典型值 † 最大值
器件特性
供电电流 (IDD)
单位
VDD
D019C
D019C
D020
—
25
40
A
1.8
—
42
60
A
3.0
—
32
45
A
2.3
—
42
60
A
3.0
—
45
65
A
5.0
—
1.0
1.8
mA
3.0
—
1.2
2.1
mA
3.6
D020
—
1.4
1.7
mA
3.0
—
1.7
2.1
mA
5.0
D021
—
150
220
A
1.8
—
250
380
A
3.0
—
200
330
A
2.3
—
280
420
A
3.0
—
350
500
A
5.0
D021
*
†
注
注
(1, 2)
FOSC = 500 kHz
ECL 模式
FOSC = 500 kHz
ECL 模式
FOSC = 20 MHz
HS 振荡器模式
FOSC = 20 MHz
HS 振荡器模式
FOSC = 4 MHz
EXTRC 模式
FOSC = 4 MHz
EXTRC 模式
这些参数为特性值,未经测试。
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。 这些参数仅供设计参考,未经测试。
1: 有效工作模式下,所有 IDD 测量值的测试条件为: OSC1 = 外部方波,轨到轨满幅,所有 I/O 引脚均为三态,上拉至
VDD ; MCLR = VDD ;禁止 WDT。
2: 供电电流主要受工作电压和频率的影响。 其他因素,如 I/O 引脚负载和开关速率、振荡器类型、内部代码执行模式以及
温度也会对电流消耗产生影响。
3: 对于 RC 振荡器配置,该电流不包括流经 REXT 的电流。 流经该电阻的电流可以由公式 IR = VDD/2REXT (mA)来估算,
其中 REXT 的单位是 k。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 299 页
PIC16(L)F1512/3
25.3
直流特性:PIC16(L)F1512/3-I/E (掉电)
PIC16LF1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
PIC16F1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
参数
编号
器件特性
最小值 典型值 †
条件
最大值
+85°C
最大值
+125°C
单位
VDD
注
掉电基本电流 (IPD) (2)
D022
D022
D023
D023
D023A
D023A
—
0.02
1.0
8.0
A
1.8
—
0.03
2.0
9.0
A
3.0
—
0.30
2.0
12
A
3.0
—
0.47
6
15
A
5.0
禁止 WDT、 BOR、 FVR 和
SOSC,所有外设不工作
—
0.50
6
14
A
1.8
LPWDT 电流 (注 1)
—
0.80
7
17
A
3.0
—
0.50
6
15
A
2.3
—
0.77
7
20
A
3.0
—
0.85
8
22
A
5.0
—
8.5
23
25
A
1.8
—
8.5
24
27
A
3.0
—
18
26
30
A
2.3
—
19
27
37
A
3.0
禁止 WDT、 BOR、 FVR 和
SOSC,所有外设不工作
LPWDT 电流 (注 1)
FVR 电流 (注 1)
FVR 电流 (注 1)
—
20
29
45
A
5.0
D024
—
8.0
17
20
A
3.0
BOR 电流 (注 1)
D024
—
8
17
30
A
3.0
BOR 电流 (注 1)
—
9
20
40
A
5.0
D024A
—
0.30
4
8
A
3.0
LPBOR 电流
D024A
—
0.30
4
14
A
3.0
LPBOR 电流
—
0.45
8
17
A
5.0
D025
D025
D026
D026
*
†
注
—
0.6
5
9
A
1.8
—
1.8
8.5
12
A
3.0
—
0.7
6
10
A
2.3
—
3
8.5
20
A
3.0
—
6
10
25
A
5.0
—
0.1
1
9
A
1.8
—
0.1
2
10
A
3.0
—
0.16
1
10
A
2.3
—
0.40
2
11
A
3.0
—
0.50
6
16
A
5.0
SOSC 电流 (注 1)
SOSC 电流 (注 1)
A/D 电流 (注 1,注 3),无转换
A/D 电流 (注 1,注 3),无转换
这些参数为特性值,未经测试。
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测试。
1: 外设电流为基本 IDD 或 IPD 与该外设使能时所额外消耗的电流之和。可通过从该参数值中减去基本 IDD 或 IPD 电流,以确
定外设  电流。在计算总电流消耗时应使用最大值。
2: 在休眠模式下,掉电电流与振荡器类型无关。掉电电流是在器件处于休眠模式、所有 I/O 引脚处于高阻态并且连接到 VDD
时测得的。
3: A/D 振荡器源是 FRC。
DS41624A_CN 第 300 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
25.3
直流特性:PIC16(L)F1512/3-I/E (掉电) (续)
PIC16LF1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
PIC16F1512/3
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
参数
编号
器件特性
掉电基本电流
D026A*
注
条件
最大值
+85°C
最大值
+125°C
单位
VDD
注
A/D 电流 (注 1,注 3),转换正
在进行
(IPD) (2)
D026A*
*
†
最小值 典型值 †
—
250
400
410
A
1.8
—
260
420
430
A
3.0
—
280
430
440
A
2.3
—
300
450
460
A
3.0
—
320
470
480
A
5.0
A/D 电流 (注 1,注 3),转换正
在进行
这些参数为特性值,未经测试。
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测试。
1: 外设电流为基本 IDD 或 IPD 与该外设使能时所额外消耗的电流之和。可通过从该参数值中减去基本 IDD 或 IPD 电流,以确
定外设  电流。在计算总电流消耗时应使用最大值。
2: 在休眠模式下,掉电电流与振荡器类型无关。掉电电流是在器件处于休眠模式、所有 I/O 引脚处于高阻态并且连接到 VDD
时测得的。
3: A/D 振荡器源是 FRC。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 301 页
PIC16(L)F1512/3
25.4
直流特性:PIC16(L)F1512/3-I/E
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +85°C (工业级)
-40°C  TA  +125°C (扩展级)
直流特性
参数
编号
符号
VIL
特性
典型值 †
最小值
最大值
单位
条件
输入低电压
I/O 端口:
D030
带 TTL 缓冲器
D030A
D031
带施密特触发器缓冲器
带
I2C™
电平
带 SMBus 电平
D032
MCLR 和 OSC1 (RC
D033
模式) (1)
OSC1 (HS 模式)
VIH
—
—
0.8
V
4.5V  VDD  5.5V
—
—
0.15 VDD
V
1.8V  VDD  4.5V
—
—
0.2 VDD
V
2.0V  VDD  5.5V
—
—
0.3 VDD
V
—
—
0.8
V
—
—
0.2 VDD
V
—
—
0.3 VDD
V
—
—
输入高电压
I/O 端口:
D040
2.0
—
—
V
4.5V  VDD  5.5V
0.25 VDD +
0.8
—
—
V
1.8V  VDD  4.5V
带施密特触发器缓冲器
0.8 VDD
—
—
V
2.0V  VDD  5.5V
带 I2C™ 电平
0.7 VDD
—
—
V
带 TTL 缓冲器
D040A
D041
2.7V  VDD  5.5V
2.7V  VDD  5.5V
带 SMBus 电平
MCLR
2.1
—
—
V
D042
0.8 VDD
—
—
V
D043A
OSC1 (HS 模式)
0.7 VDD
—
—
V
D043B
OSC1 (RC 模式)
0.9 VDD
—
—
V
VDD > 2.0V (注 1)
nA
IIL
输入泄漏电流 (2)
D060
I/O 端口
—
±5
± 125
±5
± 1000
nA
VSS  VPIN  VDD,引脚处于高阻
态 (85°C 时)
125°C
D061
MCLR(3)
—
± 50
± 200
nA
VSS  VPIN  VDD (85°C 时)
25
25
100
140
200
300
mA
VDD = 3.3V, VPIN = VSS
VDD = 5.0V, VPIN = VSS
—
—
0.6
V
IOL = 8 mA, VDD = 5V
IOL = 6 mA, VDD = 3.3V
IOL = 1.8 mA, VDD = 1.8V
VDD - 0.7
—
—
V
IOH = 3.5 mA, VDD = 5V
IOH = 3 mA, VDD = 3.3V
IOH = 1 mA, VDD = 1.8V
—
—
15
pF
—
—
50
pF
IPUR
弱上拉电流
D070*
VOL
D080
I/O 端口
VOH
D090
输出高电压 (4)
I/O 端口
D101*
输出引脚上的容性负载规范
COSC2 OSC2 引脚
D101A* CIO
注
输出低电压 (4)
所有 I/O 引脚
当外部时钟用于驱动 OSC1 时处于
XT、 HS 和 LP 模式下
* 这些参数为特性值,未经测试。
† 除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测试。
1: 在 RC 振荡器配置中, OSC1/CLKIN 引脚被配置为施密特触发器输入。在 RC 模式下,建议不要使用外部时钟。
2: 负电流定义为引脚的拉电流。
3: MCLR 引脚上的泄漏电流主要取决于所施加的电压。规定电压为正常工作条件下的电压。在不同的输入电压下可能测得更
高的泄漏电流。
4: 在 CLKOUT 模式下包括 OSC2。
DS41624A_CN 第 302 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
25.5
存储器编程要求
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
直流特性
参数
编号
符号
特性
最小值
典型值 † 最大值
单位
条件
程序存储器编程规范
D110
VIHH
MCLR/VPP/RA5 引脚上的电压
D111
IDDP
D112
8.0
—
编程时的供电电流
—
批量擦除时的 VDD
2.7
VDD
最小值
—
—
D113
VPEW
D114
IPPPGM 擦除 / 写操作时 MCLR/VPP 上的电流
—
D115
IDDPGM 擦除 / 写操作时 VDD 上的电流
—
D121
EP
单元耐擦写能力
D122
VPRW
读 / 写操作时的 VDD
D123
TIW
写或行擦除时的 VDD
9.0
V
—
10
mA
—
VDD
最大值
VDD
最大值
V
1.0
mA
5.0
mA
(注 2,注 3)
V
闪存程序存储器
自定时写周期时间
TRETD 特性保持时间
D124
10K
—
—
E/W
VDD
最小值
—
VDD
最大值
V
—
2
2.5
ms
—
40
—
年
-40°C 至 +85°C (注 1)
假设没有违反其他规范
†
注
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测
试。
1: 自写和块擦除。
2: 仅当禁止单电源编程时才需要。
3: MPLAB® ICD 2 不支持可变 VPP 输出。当使用 MPLAB ICD 2 进行编程或调试时,用于限制 MPLAB ICD 2
VPP 电压的电路必须置于 MPLAB ICD 2 和目标系统之间。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 303 页
PIC16(L)F1512/3
25.6
散热考虑
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
参数
编号
TH01
TH02
TH03
TH04
TH05
TH06
TH07
符号
JA
JC
TJMAX
特性
热阻 (结点到环境)
热阻 (结点到管壳)
最高结温
PD
功耗
PINTERNAL 内部功耗
PI/O
I/O 功耗
PDER
降额功耗
典型值
单位
条件
80
°C/W
28 引脚 SOIC 封装
60
°C/W
28 引脚 SPDIP 封装
90
°C/W
28 引脚 SSOP 封装
27.5
°C/W
28 引脚 UQFN 封装
24
°C/W
28 引脚 SOIC 封装
31.4
°C/W
28 引脚 SPDIP 封装
24
°C/W
28 引脚 SSOP 封装
28 引脚 UQFN 封装
24
°C/W
150
°C
—
W
PD = PINTERNAL + PI/O
—
W
PINTERNAL = IDD x VDD(1)
—
W
PI/O =  (IOL * VOL) +  (IOH * (VDD - VOH))
—
W
PDER = PDMAX (TJ - TA)/JA(2)
图注:
TBD = 待定
注
1: IDD 为不驱动输出引脚上任何负载时使芯片独立运行的电流。
2: TA = 环境温度。
3: TJ = 结点温度。
DS41624A_CN 第 304 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
25.7
时序参数符号体系
可根据以下一种格式来创建时序参数符号:
1. TppS2ppS
2. TppS
T
F
T
时间
osc
rd
OSC1
RD
rw
sc
ss
t0
RD 或 WR
SCKx
SS
T0CKI
t1
T1CKI
wr
WR
频率
小写字母 (pp)及其含义:
pp
cc
CCP1
ck
CLKOUT
cs
CS
di
do
SDIx
SDO
dt
数据输入
io
mc
I/O 端口
MCLR
大写字母及其含义:
S
F
下降
P
周期
H
高
R
上升
I
无效 (高阻)
V
有效
L
低
Z
高阻
图 25-4:
负载条件
负载条件
引脚
CL
VSS
图注:
CL = 50 pF (对于所有引脚),
15 pF (对于 OSC2 输出)
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 305 页
PIC16(L)F1512/3
25.8
交流特性:PIC16(L)F1512/3-I/E
图 25-5:
时钟时序
Q4
Q1
Q2
Q3
Q4
Q1
OSC1/CLKIN
OS02
OS04
OS04
OS03
OSC2/CLKOUT
(LP、XT 和 HS 模式)
OSC2/CLKOUT
(CLKOUT 模式)
表 25-1:
时钟振荡器时序要求
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
参数
编号
OS01
符号
FOSC
特性
外部 CLKIN 频率 (1)
振荡器频率 (1)
OS02
TOSC
外部 CLKIN 周期 (1)
振荡器周期 (1)
指令周期 (1)
OS03
TCY
OS04*
TosH, 外部 CLKIN 高电平时间,
TosL
外部 CLKIN 低电平时间
OS05*
注
TosR, 外部 CLKIN 上升时间,
TosF
外部 CLKIN 下降时间
最小值 典型值 †
最大值
单位
条件
DC
—
0.5
MHz
EC 振荡器模式 (低功耗)
DC
—
4
MHz
EC 振荡器模式 (中等功耗)
DC
—
20
MHz
EC 振荡器模式 (高功耗)
—
32.768
—
kHz
LP 振荡器模式
0.1
—
4
MHz
XT 振荡器模式
1
—
4
MHz
HS 振荡器模式
1
—
20
MHz
HS 振荡器模式, VDD > 2.7V
DC
—
4
MHz
RC 振荡器模式, VDD > 2.0V
27
—

s
LP 振荡器模式
250
—

ns
XT 振荡器模式
50
—

ns
HS 振荡器模式
50
—

ns
EC 振荡器模式
—
30.5
—
s
LP 振荡器模式
250
—
10,000
ns
XT 振荡器模式
50
—
1,000
ns
HS 振荡器模式
250
—
—
ns
125
—
DC
ns
RC 振荡器模式
TCY = FOSC/4
LP 振荡器
2
—
—
s
100
—
—
ns
XT 振荡器
20
—
—
ns
HS 振荡器
0
—

ns
LP 振荡器
0
—

ns
XT 振荡器
0
—

ns
HS 振荡器
*
这些参数为特性值,未经测试。
†
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测试。
1: 指令周期 (TCY)等于输入振荡器时基周期的四倍。所有规定值均为基于针对特定振荡器类型,器件在标准工作条件下执
行代码时的特性数据。超出这些规定的限定值,可能导致振荡器运行不稳定和 / 或导致电流消耗超出预期值。所有器件在
测试 “最小”值时,都在 OSC1 引脚连接了外部时钟。当使用了外部时钟输入时,所有器件的 “最大”周期时间限制为
“DC”(无时钟)。
DS41624A_CN 第 306 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 25-2:
振荡器参数
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
参数
编号
符号
OS08
HFOSC
OS09
LFOSC
OS10*
TIOSC ST
注
频率
容差
特性
4%
—
16.0
4% 至 8%
—
—
—
—
—
内部已校准的 HFINTOSC 频率 (2)
内部 LFINTOSC 频率
HFINTOSC
从休眠模式唤醒的启动时间
最小值 典型值† 最大值
单位
—
MHz
16.0
—
MHz
31
—
kHz
3
8
s
条件
0°C  TA  +85°C
2.3V  VDD  5.5V
-40°C  TA  +125°C
* 这些参数为特性值,未经测试。
† 除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测试。
1: 指令周期 (TCY)等于输入振荡器时基周期的四倍。所有规定值均为基于针对特定振荡器类型,器件在标准工作条件下执
行代码时的特性数据。超出这些规定的限定值,可能导致振荡器运行不稳定和 / 或导致电流消耗超出预期值。所有器件在
测试 “最小”值时,都在 OSC1 引脚连接了外部时钟。当使用了外部时钟输入时,所有器件的 “最大”周期时间限制为
“DC”(无时钟)。
2: 为了确保振荡器频率容差,必须尽可能靠近器件,在 VDD 和 VSS 之间接去耦电容。建议并联 0.1 F 和 0.01 F 的电容。
3: 由设计决定。
图 25-6:
周期
CLKOUT 和 I/O 时序
写
取
读
执行
Q4
Q1
Q2
Q3
FOSC
OS12
OS11
OS20
OS21
CLKOUT
OS19
OS16
OS13
OS18
OS17
I/O 引脚
(输入)
OS14
OS15
I/O 引脚
(输出)
新值
旧值
OS18,OS19
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 307 页
PIC16(L)F1512/3
表 25-3:
CLKOUT 和 I/O 时序参数
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
参数
编号
符号
OS11
TosH2ckL
特性
最小值
FOSC 到 CLKOUT 的时间 (1)
(1)
OS12
TosH2ckH FOSC 到 CLKOUT 的时间
OS13
TckL2ioV
CLKOUT 到端口输出有效的时间
OS14
TioV2ckH
CLKOUT 之前端口输入有效的时间 (1)
OS15
TosH2ioV
OS16
TosH2ioI
OS17
TioV2osH
OS18
TioR
Fosc (Q1 周期)到端口输出有效的
时间
Fosc (Q2 周期)到端口输入无效的
时间 (I/O 输入保持时间)
端口输入有效到 Fosc (Q2 周期)的
时间 (I/O 输入建立时间)
端口输出上升时间
OS19
TioF
端口输出下降时间
(1)
OS20* Tinp
OS21* Tioc
单位
条件
—
—
70
ns
VDD = 3.3-5.0V
—
—
72
ns
VDD = 3.3-5.0V
—
—
20
ns
TOSC + 200
ns
—
—
—
ns
50
70*
ns
VDD = 3.3-5.0V
50
—
—
ns
VDD = 3.3-5.0V
20
—
—
ns
—
—
—
—
25
25
40
15
28
15
—
—
72
32
55
30
—
—
ns
INT 引脚输入高电平或低电平时间
电平变化中断新输入电平时间
这些参数为特性值,未经测试。
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。
*
†
注
典型值 † 最大值
ns
VDD = 1.8V
VDD = 3.3-5.0V
VDD = 1.8V
VDD = 3.3-5.0V
ns
ns
1: 测量是在 RC 模式下进行的,其中 CLKOUT 输出为 4 x TOSC。
图 25-7:
复位、看门狗定时器、振荡器起振定时器和上电延时定时器时序
VDD
MCLR
30
内部
POR
PWRT
超时
33
32
OSC
起振时间
内部复位 (1)
看门狗定时器
复位 (1)
34
31
34
I/O 引脚
注
1: 置为低电平。
DS41624A_CN 第 308 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 25-8:
欠压复位时序和特性
VDD
VBOR 和 VHYST
VBOR
(器件处于欠压复位状态)
(器件不处于欠压复位状态)
37
复位
33(1)
(由于 BOR)
注
1: 仅在配置字中 PWRTE 位编程为 0 时才有 64 ms 延时。如果 PWRTE = 0 且 VREGEN = 1,则
为 2 ms 延时。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 309 页
PIC16(L)F1512/3
表 25-4:
复位、看门狗定时器、振荡器起振定时器、上电延时定时器和欠压复位参数
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
参数
编号
符号
特性
—
—
s
10
16
27
ms
振荡器起振定时器周期 (1), (2)
—
1024
—
上电延时定时器周期, PWRTE = 0
40
65
140
自 MCLR 低电平或看门狗定时器复
位起 I/O 处于高阻态的时间
—
—
2.0
s
欠压复位电压
2.6
2.7
2.85
V
2.35
2.45
2.57
1.80
1.9
2.11
0
25
60
mV
1
3
35
s
TMCL
31
TWDTLP 低功耗看门狗定时器超时周期
32
TOST
33*
TPWRT
34*
TIOZ
35
VBOR
36*
单位
2
30
MCLR 脉冲宽度 (低电平)
VHYST
欠压复位滞后电压
TBORDC 欠压复位直流响应时间
37*
最小值 典型值 † 最大值
条件
VDD = 3.3V-5V,
使用 1:16 预分频比
Tosc (注 3)
ms
BORV = 2.7V
BOR = 2.45V (仅 F 器件)
BOR = 1.9V (仅 LF 器件)
-40°C 至 +85°C
VDD  VBOR
*
†
这些参数为特性值,未经测试。
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测
试。
图注:
TBD = 待定
注 1:指令周期 (TCY)等于输入振荡器时基周期的四倍。所有规定值均为基于针对特定振荡器类型,器件在标准
工作条件下执行代码时的特性数据。超出这些规定的限定值,可能导致振荡器运行不稳定和 / 或导致电流消耗
超出预期值。所有器件在测试 “最小”值时,都在 OSC1 引脚连接了外部时钟。当使用了外部时钟输入时,
所有器件的 “最大”周期时间限制为 “DC”(无时钟)。
2:由设计决定。
3:较慢时钟的周期。
4:为了确保这些电压容差,必须尽可能靠近器件,在 VDD 和 VSS 之间接去耦电容。建议并联 0.1 F 和 0.01 F
的电容。
DS41624A_CN 第 310 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 25-9:
TIMER0 和 TIMER1 外部时钟时序
T0CKI
40
41
42
T1CKI
45
46
49
47
TMR0 或
TMR1
表 25-5:
TIMER0 和 TIMER1 外部时钟要求
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
参数
编号
40*
符号
TT0H
特性
T0CKI 高电平脉冲宽度
41*
TT0L
T0CKI 低电平脉冲宽度
42*
TT0P
T0CKI 周期
45*
TT1H
最小值
TT1L
无预分频器
0.5 TCY + 20
—
—
10
—
—
ns
无预分频器
0.5 TCY + 20
—
—
ns
10
—
—
ns
—
—
ns
T1CKI 高电 同步,无预分频器
平时间
同步,带预分频器
0.5 TCY + 20
—
—
ns
15
—
—
ns
异步
30
—
—
ns
T1CKI 低电 同步,无预分频器
平时间
同步,带预分频器
0.5 TCY + 20
—
—
ns
15
—
—
ns
异步
30
—
—
ns
取如下二者中
较大值:
30 或 TCY + 40
N
—
—
ns
TT1P
T1CKI 输入 同步
周期
48
F T1
辅助振荡器输入频率范围
(通过将 T1OSCEN 位置 1,使能振荡器)
49*
TCKEZTMR1 从外部时钟边沿到定时器递增的延时
异步
条件
ns
取如下二者中
较大值:
20 或 TCY + 40
N
47*
*
†
单位
带预分频器
带预分频器
46*
典型值 † 最大值
60
—
—
ns
32.4
32.768
33.1
kHz
2 TOSC
—
7 TOSC
—
N = 预分频值 (2,
4, ..., 256)
N = 预分频值 (1,
2, 4, 8)
同步模式下的定时
器
这些参数为特性值,未经测试。
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测试。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 311 页
PIC16(L)F1512/3
图 25-10:
捕捉 / 比较 /PWM 时序 (CCP)
CCP
(捕捉模式)
CC01
CC02
CC03
注:
表 25-6:
负载条件请参见图 25-4。
捕捉 / 比较 /PWM 要求 (CCP)
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
参数
编号
符号
特性
CC01* TccL
CCP 输入低电平时间
CC02* TccH
CCP 输入高电平时间
CC03* TccP
*
†
典型值 † 最大值
最小值
单位
0.5TCY + 20
—
—
ns
带预分频器
20
—
—
ns
无预分频器
0.5TCY + 20
—
—
ns
带预分频器
20
—
—
ns
3TCY + 40
N
—
—
ns
无预分频器
CCP 输入周期
条件
N = 预分频值 (1、 4 或 16)
这些参数为特性值,未经测试。
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测试。
表 25-7:
PIC16(L)F1512/3 A/D 转换器 (ADC)特性:
标准工作条件 (除非另外声明)
工作温度
25°C 下测得
参数
编号
符号
特性
最小值 典型值 † 最大值 单位
条件
AD01
NR
分辨率
—
—
10
AD02
EIL
积分误差
—
—
±1.25
LSb VREF = 3.0V
AD03
EDL
微分误差
—
—
±1
LSb 无丢失编码
VREF = 3.0V
AD04
EOFF 失调误差
EGN 增益误差
—
—
±2.5
LSb VREF = 3.0V
—
—
±2.0
LSb VREF = 3.0V
1.8
—
VDD
V
VSS
—
VREF
V
—
—
10
k
AD05
AD06
VREF
参考电压 (3)
AD07
VAIN
满量程
AD08
ZAIN
模拟信号源的推荐阻抗
注
位
VREF = (VREF+ 减 VREF-) (注 5)
如果输入引脚上接有 0.01 F 的外部电容,则该
值可以更高。
* 这些参数为特性值,未经测试。
† 除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测试。
1: 总的绝对误差包括积分误差、微分误差、失调误差和增益误差。
2: A/D 转换结果不会因输入电压的增加而减小,并且不会丢失编码。
3: ADC VREF 来自选择作为参考输入的外部 VREF、 VDD 引脚或 FVREF。
4: 当 ADC 关闭时,除了泄漏电流外, ADC 不消耗任何其他电流。掉电电流规范包括 ADC 模块消耗的任何泄漏电流。
5: 选定的 FVR 电压必须为 2.048V 或 4.096V。
DS41624A_CN 第 312 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 25-8:
PIC16(L)F1512/3 A/D 转换要求
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
参数
编号
符号
特性
AD130* TAD
AD131
TCNV
AD132* TACQ
注
最小值
典型值 †
最大值
单位
条件
A/D 时钟周期
1.0
—
9.0
s
基于 TOSC
A/D 内部 RC 振荡器周期
1.0
1.6
6.0
s
ADCS<1:0> = 11 (ADRC 模式)
转换时间 (不包括采集时间) (1)
—
11
—
TAD
将 GO/DONE 位置 1 以完成转换
采集时间
—
5.0
—
s
* 这些参数为特性值,未经测试。
† 除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测试。
1: ADRES 寄存器可在下一个 TCY 周期被读取。
图 25-11:
PIC16(L)F1512/3 A/D 转换时序 (正常模式)
BSF ADCON0, GO
AD134
1 TCY
(TOSC/2(1))
AD131
Q4
AD130
A/D 时钟
7
A/D 数据
6
5
4
GO
注
1
0
1 TCY
ADIF
采样
2
新数据
旧数据
ADRESx
3
DONE
AD132
采样已停止
1: 如果选择 RC 作为 A/D 转换的时钟源,在 A/D 时钟启动前要加上一个 TCY 时间, 用以执行 SLEEP 指令。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 313 页
PIC16(L)F1512/3
图 25-12:
PIC16(L)F1512/3 A/D 转换时序 (休眠模式)
BSF ADCON0, GO
(TOSC/2 + TCY(1))
AD134
1 TCY
AD131
Q4
AD130
A/D 时钟
7
A/D 数据
6
3
4
2
1
0
新数据
旧数据
ADRESx
ADIF
1 TCY
GO
DONE
采样已停止
AD132
采样
注
5
1: 如果选择 RC 作为 A/D 转换的时钟源,在 A/D 时钟启动前要加上一个 TCY 时间, 用以执行 SLEEP 指令。
表 25-9:
PIC16(L)F1512/3 低压差 (LDO)稳压器特性:
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
参数
编号
符号
特性
最小值 典型值† 最大值 单位
LD001
LDO 稳压电压
—
3.2
—
V
LD002
LDO 外部电容
0.1
—
1
F
*
†
条件
这些参数为特性值,未经测试。
除非另外声明,否则 “典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测试。
图 25-13:
USART 同步发送 (主 / 从)时序
CK
US121
US121
DT
US122
US120
注:
负载条件请参见图 25-4。
DS41624A_CN 第 314 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
表 25-10:
USART 同步发送要求
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
参数
编号
符号
特性
最小值
最大值
单位
US120 TCKH2DTV 同步发送 (主 / 从)
时钟高电平到数据输出有效的时间
3.0-5.5V
—
80
ns
1.8-5.5V
—
100
ns
US121 TCKRF
时钟输出上升时间和下降时间
(主模式)
3.0-5.5V
—
45
ns
1.8-5.5V
—
50
ns
数据输出上升时间和下降时间
3.0-5.5V
—
45
ns
1.8-5.5V
—
50
ns
最小值
最大值
单位
10
—
ns
15
—
ns
US122 TDTRF
图 25-14:
条件
USART 同步接收 (主 / 从)时序
CK
US125
DT
US126
注:负载条件请参见图 25-4。
表 25-11:
USART 同步接收要求
标准工作条件 (除非另外声明)
工作温度
-40°C  TA  +125°C
参数
编号
符号
特性
US125 TDTV2CKL 同步接收 (主 / 从)
CK 之前的数据保持时间 (DT 保持时间)
US126 TCKL2DTL CK 之后的数据保持时间 (DT 保持时间)
 2012 Microchip Technology Inc.
初稿
条件
DS41624A_CN 第 315 页
PIC16(L)F1512/3
图 25-15:
SPI 主模式时序 (CKE = 0, SMP = 0)
SSx
SP70
SCKx
(CKP = 0)
SP71
SP72
SP78
SP79
SP79
SP78
SCKx
(CKP = 1)
SP80
bit 6 - - - - - -1
MSb
SDOx
LSb
SP75, SP76
SDIx
MSb 输入
bit 6 - - - -1
LSb 输入
SP74
SP73
注:负载条件请参见图 25-4。
图 25-16:
SPI 主模式时序 (CKE = 1, SMP = 1)
SSx
SP81
SCKx
(CKP = 0)
SP71
SP72
SP79
SP73
SCKx
(CKP = 1)
SP80
SDOx
MSb
SP78
bit 6 - - - - - -1
LSb
SP75, SP76
SDIx
MSb 输入
bit 6 - - - -1
LSb 输入
SP74
注:负载条件请参见图 25-4。
DS41624A_CN 第 316 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 25-17:
SPI 从模式时序 (CKE = 0)
SSx
SP70
SCKx
(CKP = 0)
SP83
SP71
SP72
SP78
SP79
SP79
SP78
SCKx
(CKP = 1)
SP80
MSb
SDOx
LSb
bit 6 - - - - - -1
SP77
SP75, SP76
SDIx
MSb 输入
bit 6 - - - -1
LSb 输入
SP74
SP73
注:负载条件请参见图 25-4。
图 25-18:
SSx
SPI 从模式时序 (CKE = 1)
SP82
SP70
SP83
SCKx
(CKP = 0)
SP72
SP71
SCKx
(CKP = 1)
SP80
MSb
SDOx
bit 6 - - - - - -1
LSb
SP77
SP75, SP76
SDIx
MSb 输入
bit 6 - - - -1
LSb 输入
SP74
注:负载条件请参见图 25-4。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 317 页
PIC16(L)F1512/3
表 25-12:
参数
编号
SPI 模式要求
符号
特性
典型值 † 最大值 单位
最小值
SP70* TSSL2SCH, SSx 到 SCKx 或 SCKx 输入的时间
TSSL2SCL
TCY
—
—
ns
SP71* TSCH
SCKx 输入高电平时间 (从模式)
TCY + 20
—
—
ns
SP72* TSCL
SCKx 输入低电平时间 (从模式)
TCY + 20
—
—
ns
SP73* TDIV2SCH, SDIx 数据输入到 SCKx 边沿的建立时间
TDIV2SCL
100
—
—
ns
SP74* TSCH2DIL, SDIx 数据输入到 SCKx 边沿的保持时间
TSCL2DIL
100
—
—
ns
3.0-5.5V
—
10
25
ns
1.8-5.5V
—
25
50
ns
—
10
25
ns
SP75* TDOR
SDOx 数据输出上升时间
SP76* TDOF
SDOx 数据输出下降时间
SP77* TSSH2DOZ
SSx 到 SDOx 输出高阻态的时间
10
—
50
ns
3.0-5.5V
—
10
25
ns
1.8-5.5V
—
25
50
ns
—
10
25
ns
3.0-5.5V
—
—
50
ns
1.8-5.5V
—
—
145
ns
SP81* TDOV2SCH, SDOx 数据输出建立到 SCKx 边沿的时间
TDOV2SCL
Tcy
—
—
ns
SP82* TSSL2DOV
—
—
50
ns
1.5TCY + 40
—
—
ns
SP78* TSCR
SCKx 输出上升时间
(主模式)
SP79* TSCF
SCKx 输出下降时间 (主模式)
SP80* TSCH2DOV, SCKx 边沿之后 SDOx 数据输出
TSCL2DOV 有效的时间
SS 边沿之后 SDOx 数据输出有效的时间
SP83* TSCH2SSH, SCKx 边沿之后 SSx 有效的时间
TSCL2SSH
条件
* 这些参数为特性值,未经测试。
† 除非另外声明,否则“典型值”栏中的数据均为 3.0V 和 25°C 条件下的值。这些参数仅供设计参考,未经测
试。
I2C™ 总线启动位 / 停止位时序
图 25-19:
SCLx
SP93
SP91
SP90
SP92
SDAx
停止
条件
启动
条件
注: 负载条件请参见图 25-4。
DS41624A_CN 第 318 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
图 25-20:
I2C™ 总线数据时序
SP103
SCLx
SP100
SP90
SP102
SP101
SP106
SP107
SP91
SDAx
输入
SP92
SP110
SP109
SP109
SDAx
输出
注: 负载条件请参见图 25-4。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 319 页
PIC16(L)F1512/3
I2C™ 总线数据要求
表 25-13:
参数
编号
符号
SP100* 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 模块
SP101* TLOW
时钟低电平时间
SSP 模块
SP102* TR
SP103* TF
SP106* THD:DAT
SP107* TSU:DAT
SP109* TAA
SP110*
SP111
注
TBUF
CB
SDAx 和 SCLx 上升 100 kHz 模式
时间
400 kHz 模式
—
1000
ns
20 + 0.1CB
300
ns
SDAx 和 SCLx 下降 100 kHz 模式
时间
400 kHz 模式
—
250
ns
20 + 0.1CB
250
ns
0
—
ns
400 kHz 模式
0
0.9
s
100 kHz 模式
250
—
ns
400 kHz 模式
100
—
ns
时钟输出有效的时
间
100 kHz 模式
—
3500
ns
400 kHz 模式
—
—
ns
总线空闲时间
100 kHz 模式
4.7
—
s
400 kHz 模式
1.3
—
s
—
400
pF
数据输入保持时间
数据输入建立时间
100 kHz 模式
总线容性负载
条件
CB 值规定在
10-400 pF 之间
CB 值规定在
10-400 pF 之间
(注 2)
(注 1)
在启动一个新的传输前总
线必须保持空闲的时间
* 这些参数为特性值,但未经测试。
1: 为避免产生意外的启动或停止条件,作为发送器的器件必须提供这个内部最小延时以补偿 SCLx 下降沿的未
定义区域 (最小值 300 ns)。
2: 快速模式 (400 kHz)的 I2C™ 总线器件也可在标准模式 (100 kHz)的 I2C 总线系统中使用,但必须满足
TSU:DAT  250 ns 的要求。如果器件没有延长 SCLx 信号的低电平周期,则必然满足此条件。如果该器件延
长了 SCLx 信号的低电平周期,它必须将下一个数据位输出到 SDAx 线。 SCLx 线被释放前,根据标准模式
I2C 总线规范, TR max. + TSU:DAT = 1000 + 250 = 1250 ns。
DS41624A_CN 第 320 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
26.0
直流和交流特性图表
当前没有可用图表。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 321 页
PIC16(L)F1512/3
注:
DS41624A_CN 第 322 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
27.0
27.1
开发支持
MPLAB 集成开发环境软件
MPLAB IDE 软件为 8/16/32 位单片机市场提供了前所未
有的易于使用的软件开发平台。 MPLAB IDE 是基于
Windows® 操作系统的应用软件,包括:
一系列软件及硬件开发工具对 PIC® 单片机和 dsPIC® 数
字信号控制器提供支持:
• 集成开发环境
- MPLAB® IDE 软件
• 编译器 / 汇编器 / 链接器
- 适用于各种器件系列的 MPLAB C 编译器
- 适用于各种器件系列的 HI-TECH C® 编译器
- MPASM™ 汇编器
- MPLINK™ 目标链接器 /
MPLIB™ 目标库管理器
- 适用于各种器件系列的 MPLAB 汇编器 / 链接
器 / 库管理器
• 模拟器
- MPLAB SIM 软件模拟器
• 仿真器
- MPLAB REAL ICE™ 在线仿真器
• 在线调试器
- MPLAB ICD 3
- PICkit™ 3 Debug Express
• 一个包含所有调试工具的图形界面
- 模拟器
- 编程器 (单独销售)
- 在线仿真器 (单独销售)
- 在线调试器 (单独销售)
• 具有彩色上下文代码显示的全功能编辑器
• 多项目管理器
• 内容可直接编辑的可定制式数据窗口
• 高级源代码调试
• 鼠标停留在变量上进行查看的功能
• 将变量从源代码窗口拖放到 Watch (观察)窗口
• 丰富的在线帮助
• 集成了可选的第三方工具,如 IAR C 编译器
MPLAB IDE 可以让您:
• 编辑源文件 (C 语言或汇编语言)
• 点击一次即可完成编译或汇编,并将代码下载到仿
真器和模拟器工具中 (自动更新所有项目信息)
• 可使用如下各项进行调试:
- 源文件 (C 语言或汇编语言)
- 混合 C 语言和汇编语言
- 机器码
• 器件编程器
- PICkit™ 2 编程器
- MPLAB PM3 器件编程器
• 低成本演示 / 开发板、评估工具包及入门工具包
MPLAB IDE 在单个开发范例中支持使用多种调试工
具,包括从成本效益高的模拟器到低成本的在线调试
器,再到全功能的仿真器。这样缩短了用户升级到更加
灵活而功能强大的工具时的学习时间。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 323 页
PIC16(L)F1512/3
27.2
适用于各种器件系列的 MPLAB C
编译器
27.5
MPLAB C 编译器代码开发系统是完全的 ANSI C 编译
器,适用于 Microchip 的 PIC18、PIC24 和 PIC32 系列
单片机及 dsPIC30 和 dsPIC33 系列数字信号控制器。
这些编译器提供强大的集成功能和出众的代码优化能
力,且使用方便。
MPLINK 目标链接器包含了由 MPASM 汇编器、MPLAB
C18 C 编译器产生的可重定位目标。通过使用链接器脚
本中的指令,它还可链接预编译库中的可重定位目标。
MPLIB目标库管理器管理预编译代码库文件的创建和修
改。当从源文件调用库中的一段子程序时,只有包含此
子程序的模块被链接到应用程序。这样可使大型库在许
多不同应用中被高效地利用。
为便于源代码调试,编译器提供针对 MPLAB IDE 调试
器优化的符号信息。
27.3
目标链接器 / 库管理器具有如下特性:
适用于各种器件系列的 HI-TECH C
编译器
• 高效地连接单个的库而不是许多小文件
• 通过将相关的模块组合在一起来增强代码的可维护性
• 只要列出、替换、删除和抽取模块,便可灵活地创
建库
HI-TECH C 编译器代码开发系统是完全的 ANSI C 编译
器,适用于 Microchip 的 PIC 系列单片机及 dsPIC 系列
数字信号控制器。这些编译器提供强大的集成功能和全
知代码生成能力,且使用方便。
27.6
为便于源代码调试,编译器提供针对 MPLAB IDE 调试
器优化的符号信息。
MPASM 汇编器
MPASM 汇编器是全功能通用宏汇编器,适用于 PIC10/
12/16/18 MCU。
•
•
•
•
•
•
MPASM 汇编器可生成用于 MPLINK 目标链接器的可重
定位目标文件、Intel® 标准 HEX 文件、详细描述存储器
使用状况和符号参考的 MAP 文件、包含源代码行及生
成机器码的绝对 LST 文件以及用于调试的 COFF 文件。
MPASM 汇编器具有如下特性:
•
•
•
•
适用于各种器件系列的 MPLAB 汇编
器、链接器和库管理器
MPLAB 汇编器为 PIC24、PIC32 和 dsPIC 器件从符号
汇编语言生成可重定位机器码。 MPLAB C 编译器使用
该汇编器生成目标文件。汇编器产生可重定位目标文件
之后,可将这些目标文件存档,或与其他可重定位目标
文件和存档链接以生成可执行文件。该汇编器有如下显
著特性:
编译器包括一个宏汇编器、链接器、预处理程序和单步
驱动程序,可以在多种平台上运行。
27.4
MPLINK 目标链接器 /
MPLIB 目标库管理器
支持整个器件指令集
支持定点数据和浮点数据
命令行界面
丰富的指令集
灵活的宏语言
MPLAB IDE 兼容性
集成在 MPLAB IDE 项目中
用户定义的宏可简化汇编代码
对多用途源文件进行条件汇编
允许完全控制汇编过程的指令
DS41624A_CN 第 324 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
27.7
MPLAB SIM 软件模拟器
27.9
MPLAB SIM 软件模拟器通过在指令级对 PIC MCU 和
dsPIC® DSC 进行模拟,可在 PC 主机环境下进行代码
开发。对于任何给定的指令,都可以对数据区进行检查
或修改,并通过一个全面的激励控制器来施加激励。可
以将各寄存器记录在文件中,以便进行进一步的运行时
分析。跟踪缓冲区和逻辑分析器的显示使软件模拟器还
能记录和跟踪程序的执行、 I/O 的动作、大部分的外设
及内部寄存器。
MPLAB ICD 3 在线调试器系统是 Microchip 成本效益最
高的高速硬件调试器 / 编程器,适用于 Microchip 闪存
数字信号控制器 (DSC)和单片机 (MCU)器件。结
合 MPLAB 集成开发环境 (IDE)所具有的功能强大但
易于使用的图形用户界面,该调试器可对 PIC® 闪存单
片机和 dsPIC® DSC 进行调试和编程。
MPLAB ICD 3 在线调试器通过高速 USB 2.0 接口与设
计工程师的PC相连,并利用与MPLAB ICD 2或MPLAB
REAL ICE 系统兼容的连接器(RJ-11)与目标板相连。
MPLAB ICD 3 支持所有 MPLAB ICD 2 转接器。
MPLAB SIM 软件模拟器完全支持使用 MPLAB C 编译
器以及 MPASM 和 MPLAB 汇编器的符号调试。该软件
模拟器可用于在硬件实验室环境外灵活地开发和调试代
码,是一款完美且经济的软件开发工具。
27.8
MPLAB ICD 3 在线调试器系统
27.10 PICkit 3 在线调试器 / 编程器及
PICkit 3 Debug Express
MPLAB REAL ICE 在线仿真器系统
结合 MPLAB 集成开发环境 (IDE)所具有的功能强大
的图形用户界面,MPLAB PICkit 3 可对 PIC® 闪存单片
机和 dsPIC® 数字信号控制器进行调试和编程,且价位
较低。MPLAB PICkit 3 通过全速 USB 接口与设计工程
师的 PC 相连,并利用 Microchip 调试(RJ-11)连接器
(与 MPLAB ICD 3 和 MPLAB REAL ICE 兼容)与目标
板相连。连接器使用两个器件 I/O 引脚和复位线来实现
在线调试和在线串行编程。
MPLAB REAL ICE 在线仿真器系统是 Microchip 针对其
闪存 DSC 和 MCU 器件而推出的新一代高速仿真器。结
合 MPLAB 集成开发环境 (IDE)所具有的易于使用且
功能强大的图形用户界面,该仿真器可对 PIC® 闪存
MCU 和 dsPIC® 闪存 DSC 进行调试和编程。IDE 是随每
个工具包一起提供的。
该仿真器通过高速 USB 2.0 接口与设计工程师的 PC 相
连,并利用与在线调试器系统兼容的连接器 (RJ11)或
新型抗噪声、高 速低压差分信号 (LVDS)互连电缆
(CAT5)与目标板相连。
PICkit 3 Debug Express 包括 PICkit 3、演示板和单片
机、连接电缆和光盘 (内含用户指南、课程、教程、编
译器和 MPLAB IDE 软件)。
可通过 MPLAB IDE 下载将来版本的固件,对该仿真器
进行现场升级。在即将推出的 MPLAB IDE 版本中,会
支持许多新器件,还将增加一些新特性。在同类仿真器
中,MPLAB REAL ICE 的优势十分明显:低成本、全速
仿真、运行时变量查看、跟踪分析、复杂断点、耐用的
探针接口及较长 (长达 3 米)的互连电缆。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 325 页
PIC16(L)F1512/3
27.11 PICkit 2 开发编程器 / 调试器及
PICkit 2 Debug Express
27.13 演示 / 开发板、评估工具包及入门工
具包
PICkit™ 2 开发编程器 / 调试器是一款低成本开发工具,
具有易于使用的界面,适用于对 Microchip 的闪存系列
单片机进行编程和调试。这一全功能的 Windows® 编程
界面支持低档(PIC10F、PIC12F5xx 和 PIC16F5xx)、
中档 (PIC12F6xx 和 PIC16F)、 PIC18F、 PIC24、
dsPIC30、dsPIC33 和 PIC32 系列的 8 位、16 位及 32
位单片机,以及许多 Microchip 串行 EEPROM 产品。结
合 Microchip 功能强大的 MPLAB 集成开发环境(IDE),
PICkit 2 可对大多数 PIC® 单片机进行在线调试。即使
PIC 单片机已嵌入应用,在线调试功能仍可以运行、暂
停和单步执行程序。在断点处暂停时,可以检查和修改
文件寄存器。
有许多演示、开发和评估板可用于各种 PIC MCU 和
dsPIC DSC,实现对全功能系统的快速应用开发。大多
数的演示、开发和评估板都有实验布线区,供用户添加
定制电路;还有应用固件和源代码,用于检查和修改。
这些板支持多种功能部件,包括 LED、温度传感器、开
关、扬声器、 RS-232 接口、 LCD 显示器、电位计和附
加 EEPROM 存储器。
演示和开发板可用于教学环境,在实验布线区设计定制
电路,从而掌握各种单片机应用。
除了 PICDEM™ 和 dsPICDEM™ 演示 / 开发板系列电路
外,Microchip 还有一系列评估工具包和演示软件,适用
于模拟滤波器设计、KEELOQ® 数据安全产品 IC、CAN、
IrDA®、 PowerSmart 电池管理、 SEEVAL® 评估系统、
 ADC、流速传感器,等等。
PICkit 2 Debug Express 包括 PICkit 2、演示板和单片
机、连接电缆和光盘 (内含用户指南、课程、教程、编
译器和 MPLAB IDE 软件)。
同时还提供入门工具包,其中包含体验指定器件功能所
需的所有软硬件。通常提供单个应用以及调试功能,都
包含在一块电路板上。
27.12 MPLAB PM3 器件编程器
MPLAB PM3 器件编程器是一款符合 CE 规范的通用器
件编程器,在 VDDMIN 和 VDDMAX 点对其可编程电压进
行校验以确保可靠性最高。它有一个用来显示菜单和错
误消息的大 LCD 显示器(128 x 64),以及一个支持各
种封装类型的可拆卸模块化插槽装置。编程器标准配置
中带有一根 ICSP™ 电缆。在单机模式下,MPLAB PM3
器件编程器不必与 PC 相连即可对 PIC 器件进行读取、
校验和编程。在该模式下它还可设置代码保护。MPLAB
PM3 通过 RS-232 或 USB 电缆连接到 PC 主机上。
MPLAB PM3 具备高速通信能力以及优化算法,可对具
有大存储器的器件进行快速编程。它还包含了MMC卡,
用于文件存储及数据应用。
DS41624A_CN 第 326 页
有 关 演 示、开 发 和 评 估 工 具 包 的 完 整 列 表,请 访 问
Microchip 网站 (www.microchip.com)。
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
28.0
封装信息
28.1
封装标识信息
28 引脚 SOIC(7.50 mm)
示例
PIC16F1512-E/SO
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
1110017
YYWWNNN
28 引脚 SPDIP(0.300 英寸)
示例
PIC16F1512-E/SP
1110017
28 引脚 SSOP(5.30 mm)
示例
PIC16F1512-E/SS
e3
1110017
图注:
XX...X
Y
YY
WW
NNN
e3
*
注:
客户指定信息
年份代码 (日历年的最后一位数字)
年份代码 (日历年的最后两位数字)
星期代码 (一月一日的星期代码为 “01”)
以字母数字排序的追踪代码
雾锡 (Matte Tin, Sn)的 JEDEC 无铅标志
本封装为无铅封装。JEDEC 无铅标志 ( e3 )标示于此种封装的
外包装上。
Microchip 元器件编号如果无法在同一行内完整标注,将换行标出,因此会限制
表示客户信息的字符数。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 327 页
PIC16(L)F1512/3
28.1
封装标识信息 (续)
28 引脚 UQFN(4x4x0.5 mm)
示例
引脚
PIN 1
DS41624A_CN第 328 页
PIN
引脚 1
初稿
PIC16
F1513
I/ML e3
110017
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
28.2
封装详细信息
以下部分将介绍各种封装的技术细节。
28 引脚塑封宽条小外形封装 (SO)——主体 7.50 mm [SOIC]
注:
最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 329 页
PIC16(L)F1512/3
28 引脚塑封宽条小外形封装 (SO)——主体 7.50 mm [SOIC]
注:
最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。
DS41624A_CN 第 330 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
28 引脚塑封宽条小外形封装 (SO)——主体 7.50 mm [SOIC]
注:
最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 331 页
PIC16(L)F1512/3
28 引脚窄型塑封双列直插式封装 (SP)——主体 300 mil [SPDIP]
注:
最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。
N
NOTE 1
E1
1
2 3
D
E
A2
A
L
c
b1
A1
b
e
eB
6&!
'!
9'&!
7"')
%!
7,8.
7
7
7:
;
<
&
&
&
=
=
##44!!
-
1!&
&
=
=
"#&
"#>#&
.
-
--
##4>#&
.
<
: 9&
-
-?
&
&
9
-
9#4!!
<
)
)
<
1
=
=
69#>#&
9
*9#>#&
: *+
1,
-
!"
!"#$%&"' ()"&'"!&)
&#*&&&#
+%&,&!&
- '!
!#.#
&"#'
#%!
&"!
!
#%!
&"!
!!
&$#/!#
'!
#&
.0
1,2 1!'!
&$& "!
**&
"&&
!
* ,1
DS41624A_CN 第 332 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
28 引脚塑封缩小型小外形封装 (SS)——主体 5.30 mm [SSOP]
最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。
注:
D
N
E
E1
1 2
NOTE 1
b
e
c
A2
A
φ
A1
L
L1
6&!
'!
9'&!
7"')
%!
99..
7
7
7:
;
<
&
: 8&
=
?1,
=
##44!!
?
<
&#
%%
=
=
: >#&
.
<
<
##4>#&
.
-
?
: 9&
3
&9&
9
3
&&
9
.3
9#4!!
=
3
&
I
@
@
<@
9#>#&
)
=
-<
!"
!"#$%&"' ()"&'"!&)
&#*&&&#
'!
!#.#
&"#'
#%!
&"!
!
#%!
&"!
!!
&$#''!#
- '!
#&
.0
1,2 1!'!
&$& "!
**&
"&&
!
.32 %'!
("!"*&
"&&
(%
%
'&
"
!!
* ,-1
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 333 页
PIC16(L)F1512/3
28 引脚塑封缩小型小外形封装 (SS)——主体 5.30 mm [SSOP]
注:
最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。
DS41624A_CN 第 334 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
28 引脚塑封超薄四方扁平无脚封装 (MV)——主体 4x4x0.5 mm [UQFN]
注:
最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 335 页
PIC16(L)F1512/3
28 引脚塑封超薄四方扁平无脚封装 (MV)——主体 4x4x0.5 mm [UQFN]
注:
最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。
DS41624A_CN 第 336 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
附录 A:
版本历史
版本 A
初始版本 (2012 年 2 月)
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 337 页
PIC16(L)F1512/3
注:
DS41624A_CN 第 338 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
索引
A
比较器
C2OUT 作为 T1 门控 ................................................ 169
编程,器件指令 ................................................................ 279
变更通知客户服务 ............................................................. 345
捕捉 / 比较 /PWM.............................................................. 235
捕捉 / 比较 /PWM (CCP)............................................... 236
比较模式 ................................................................... 238
CCPx 引脚配置 ................................................. 238
软件中断模式 ............................................ 236, 238
Timer1 模式资源 ....................................... 236, 238
特殊事件触发器 ................................................ 238
捕捉模式 ................................................................... 236
CCPx 引脚配置 ......................................................... 236
规范 .......................................................................... 312
PWM 操作 ................................................................. 240
PWM 概述 ................................................................. 240
PWM 模式
分辨率 ............................................................... 242
复位的影响 ....................................................... 243
PWM 频率和分辨率示例, 20 MHz .................. 242
PWM 频率和分辨率示例, 8 MHz .................... 242
系统时钟频率改变 ............................................. 243
休眠模式下的操作 ............................................. 243
占空比 ............................................................... 241
PWM 设置 ................................................................. 241
PWM 周期 ................................................................. 241
预分频器 ................................................................... 236
与 PWM 相关的寄存器 .............................................. 243
捕捉模块。 请参见捕捉 / 比较 /PWM (CCP)
A/D
规范 ................................................................... 312, 313
AADACQ 寄存器 ............................................................... 157
AADCAP 寄存器................................................................ 158
AADCON0 寄存器 ............................................................. 152
AADCON1 寄存器 ............................................................. 153
AADCON2 寄存器 ............................................................. 154
AADCON3 寄存器 ............................................................. 155
AADGRD 寄存器 ............................................................... 157
AADPRE 寄存器................................................................ 156
AADRESxH 寄存器 (ADFM = 0)............................ 159, 160
AADRESxL 寄存器 (ADFM = 0)............................ 159, 160
ACKSTAT ......................................................................... 218
ACKSTAT 状态标志寄存器 ............................................... 218
ADC .................................................................................. 129
采集要求.................................................................... 140
参考电压 (VREF).................................................... 131
电容分压器 (CVD) ..................................................... 143
端口配置.................................................................... 131
工作原理.................................................................... 134
计算采集时间 ............................................................ 140
框图 ........................................................................... 130
内部采样开关阻抗 (RSS)........................................ 140
配置 ........................................................................... 131
配置中断.................................................................... 135
启动 A/D 转换 .................................................... 133, 145
特殊事件触发器 ......................................................... 134
通道选择.................................................................... 131
相关的寄存器 .................................................... 142, 161
信号源阻抗 ................................................................ 140
休眠期间的操作 ......................................................... 134
中断 ........................................................................... 133
转换步骤.................................................................... 135
转换时钟............................................................ 131, 143
自动电容分压器 ......................................................... 146
ADCON0 寄存器 ......................................................... 26, 136
ADCON1 寄存器 ......................................................... 26, 137
ADDFSR ........................................................................... 283
ADDWFC .......................................................................... 283
ADRES0H 寄存器 (ADFM = 0)...................................... 138
ADRES0H 寄存器 (ADFM = 1)...................................... 139
ADRES0L 寄存器 (ADFM = 0)...................................... 138
ADRES0L 寄存器 (ADFM = 1)...................................... 139
ADRESH 寄存器 ................................................................. 26
ADRESL 寄存器 .................................................................. 26
ADSTAT 寄存器 ................................................................ 156
ANSELA 寄存器 ................................................................ 109
ANSELB 寄存器 ................................................................ 113
ANSELC 寄存器 ................................................................ 116
APFCON 寄存器 ......................................................... 27, 106
C
CALL................................................................................. 285
CALLW ............................................................................. 285
CCP。 请参见捕捉 / 比较 /PWM
CCPxCON (CCPx)寄存器 ............................................ 244
CONFIG1 寄存器 ................................................................ 38
CONFIG2 寄存器 ................................................................ 40
C 编译器
MPLAB C18.............................................................. 324
操作码字段说明 ................................................................ 279
程序存储器 .......................................................................... 15
映射和堆栈 (PIC16(L)F1512).................................. 16
存储器构成 .......................................................................... 15
程序 ............................................................................ 15
数据 ............................................................................ 18
D
代码示例
A/D 转换 ........................................................... 135, 151
初始化 PORTA.......................................................... 107
改变捕捉预分频比 ..................................................... 236
写入闪存程序存储器 ................................................... 98
低功耗欠压复位 (LPBOR)............................................... 62
电平变化中断 .................................................................... 121
相关的寄存器 ............................................................ 124
电气规范 ........................................................................... 293
掉电模式 (休眠)............................................................... 79
相关的寄存器 .............................................................. 82
定时器
Timer2
T2CON ............................................................. 181
B
BAUDCON 寄存器 ............................................................ 257
BF ............................................................................. 218, 220
BF 状态标志 .............................................................. 218, 220
BORCON 寄存器................................................................. 61
BRA................................................................................... 284
版本历史 ............................................................................ 337
备用引脚功能 .................................................................... 106
比较模块。 请参见捕捉 / 比较 /PWM (CCP)
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 339 页
PIC16(L)F1512/3
Timer1
T1CON.............................................................. 175
T1GCON ........................................................... 176
读 - 修改 - 写操作............................................................... 279
读者反馈表 ........................................................................ 346
堆栈 ..................................................................................... 31
访问 ............................................................................. 31
复位 ............................................................................. 33
堆栈上溢 / 下溢 .................................................................... 62
故障保护检测 .............................................................. 54
故障保护条件清除 ....................................................... 54
H
汇编器
MPASM 汇编器 ......................................................... 324
I
I2C 模式 (MSSP)
从模式
发送 .................................................................. 204
读 / 写位信息 (R/W 位).......................................... 199
多主器件模式 ............................................................ 223
多主器件通信、总线冲突和仲裁 ............................... 223
复位的影响 ................................................................ 223
使用 BRG 的 I2C 时钟频率 ........................................ 229
停止条件时序 ............................................................ 222
休眠模式下的操作 ..................................................... 223
应答序列时序 ............................................................ 222
主模式
工作原理 ........................................................... 214
接收 .................................................................. 220
启动条件时序 ............................................ 216, 217
发送 ................................................................... 218
总线冲突
停止条件期间 .................................................... 227
重复启动条件期间 ............................................. 226
INDF 寄存器 ........................................................................ 25
INTCON 寄存器 .................................................................. 72
INTOSC 规范 .................................................................... 307
IOCAF 寄存器 ................................................................... 123
IOCAN 寄存器 ................................................................... 123
IOCAP 寄存器 ................................................................... 123
E
EEDATL 寄存器 ................................................................ 102
EUSART............................................................................ 245
波特率发生器 (BRG)
波特率,异步模式 ............................................. 260
波特率误差,计算 ............................................. 258
高波特率选择 (BRGH 位).............................. 258
公式 ................................................................... 259
自动波特率检测 ................................................. 263
同步从模式
发送 ................................................................... 271
接收 ................................................................... 272
相关的寄存器
发送 ........................................................... 271
接收 ........................................................... 272
同步主模式 ........................................................ 267, 271
发送 ................................................................... 267
接收 ................................................................... 269
相关的寄存器
发送 ........................................................... 268
接收 ........................................................... 270
相关的寄存器
波特率发生器 .................................................... 259
异步模式 .................................................................... 247
12 位间隔字符发送和接收 ................................. 266
波特率发生器 (BRG)..................................... 258
发送器 ............................................................... 247
接收到间隔字符时自动唤醒 ............................... 264
接收器 ............................................................... 250
设置带地址检测的 9 位模式............................... 252
时钟精度............................................................ 254
相关的寄存器
发送 ........................................................... 249
接收 ........................................................... 253
J
寄存器
AADACQ (ADC 采集时间控制)............................. 157
AADCAP (ADC 额外采样电容选择)...................... 158
AADCON0 (ADC 控制 0)....................................... 152
AADCON1 (ADC 控制 1)....................................... 153
AADCON2 (ADC 控制 2)....................................... 154
AADCON3 (ADC 控制 3)....................................... 155
AADGRD (ADC 保护环控制)................................. 157
AADPRE (ADC 预充电)........................................ 156
AADRESxH (ADC 结果高字节,
ADFM = 0).............................................. 159, 160
AADRESxL (ADC 结果低字节,
ADFM = 0).............................................. 159, 160
ADCON0 (ADC 控制 0)......................................... 136
ADCON1 (ADC 控制 1)......................................... 137
ADRES0H (ADC 结果高字节, ADFM = 0).......... 138
ADRES0H (ADC 结果高字节, ADFM = 1).......... 139
ADRES0L (ADC 结果低字节, ADFM = 0)........... 138
ADRES0L (ADC 结果低字节, ADFM = 1)........... 139
ADSTAT (ADC 状态)............................................. 156
ANSELA (PORTA 模拟选择)................................. 109
ANSELB (PORTB 模拟选择)................................. 113
ANSELC (PORTC 模拟选择)................................ 116
APFCON (备用引脚功能控制)............................... 106
BAUDCON (波特率控制)....................................... 257
BORCON (欠压复位控制)....................................... 61
CCPxCON (CCPx 控制)........................................ 244
EEDATL (EEPROM 数据)..................................... 102
FVRCON................................................................... 125
INTCON (中断控制)................................................ 72
IOCAF (电平变化中断 PORTA 标志)..................... 123
F
FSR 寄存器 ......................................................................... 25
FVRCON (固定参考电压控制)寄存器 ........................... 125
封装 ................................................................................... 327
标识 ................................................................... 327, 328
PDIP 详细信息 .......................................................... 328
复位 ..................................................................................... 59
相关的寄存器 .............................................................. 66
复位的影响
PWM 模式 ................................................................. 243
复位指令 .............................................................................. 62
负载条件 ............................................................................ 305
G
高精度内部振荡器参数 ...................................................... 307
固定参考电压 (FVR)...................................................... 125
相关的寄存器 ............................................................ 126
固件指令 ............................................................................ 279
故障保护时钟监视器 (FSCM)
复位或从休眠中唤醒 .................................................... 54
故障保护操作 .............................................................. 54
DS41624A_CN 第 340 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
IOCAN (电平变化中断 PORTA 负边沿)................. 123
IOCAP (电平变化中断 PORTA 正边沿)................. 123
LATA (数据锁存器 PORTA).................................. 109
LATB (数据锁存器 PORTB).................................. 112
LATC (数据锁存器 PORTC).................................. 115
内核功能,汇总 ........................................................... 25
OPTION_REG (OPTION)..................................... 165
OSCCON (振荡器控制)........................................... 56
OSCSTAT (振荡器状态).......................................... 57
PCON (电源控制).................................................... 65
PIE1 (外设中断使能 1)............................................ 73
PIE2 (外设中断使能 2)............................................ 74
PIR1 (外设中断寄存器 1)......................................... 75
PIR2 (外设中断请求 2)............................................ 76
PMADRL (程序存储器地址)................................... 102
PMCON1 (程序存储器控制 1)............................... 103
PMCON2 (程序存储器控制 2)............................... 104
PMDATH (程序存储器数据).................................. 102
PORTA...................................................................... 108
PORTB...................................................................... 112
PORTC ..................................................................... 115
PORTE...................................................................... 118
配置字 1 ...................................................................... 38
配置字 2 ...................................................................... 40
器件 ID ........................................................................ 42
RCREG ..................................................................... 263
RCSTA (接收状态和控制寄存器)........................... 256
SPBRGH................................................................... 258
SPBRGL ................................................................... 258
SSPADD (MSSP 地址和波特率, I2C 模式)......... 234
SSPCON1 (MSSP 控制 1).................................... 231
SSPCON2 (SSP 控制 2)....................................... 232
SSPCON3 (SSP 控制 3)....................................... 233
SSPMSK (SSP 掩码)............................................ 234
SSPSTAT (SSP 状态)........................................... 230
STATUS...................................................................... 19
T1CON (Timer1 控制)........................................... 175
T1GCON (Timer1 门控控制)................................. 176
T2CON...................................................................... 181
TRISA (三态 PORTA)............................................ 108
TRISB (三态 PORTB)............................................ 112
TRISC (三态 PORTC)........................................... 115
TRISE (三态 PORTE)............................................ 118
TXSTA (发送状态和控制寄存器)........................... 254
特殊功能,汇总 ........................................................... 26
VREGCON (稳压器控制)......................................... 81
WDTCON (看门狗定时器控制)................................ 87
WPUB (弱上拉 PORTB)........................................ 113
间隔字符 (12 位)发送和接收 ......................................... 266
间接寻址 .............................................................................. 33
交流特性
负载条件.................................................................... 305
工业级和扩展级 ......................................................... 306
接收到间隔字符时唤醒 ...................................................... 264
绝对最大值 ........................................................................ 293
框图 ............................................................................. 10, 14
(CCP)捕捉模式工作原理 ....................................... 236
ADC .......................................................................... 130
ADC 传递函数 ........................................................... 141
比较模式工作原理 ..................................................... 238
CCP PWM ................................................................ 240
参考电压 ................................................................... 125
EUSART 发送 ........................................................... 245
EUSART 接收 ........................................................... 246
封装图
PIC16(L)F1512/3 .................................................. 4
故障保护时钟监视器 (FSCM).................................. 54
晶振的工作原理 .................................................... 46, 47
模拟输入模型 ............................................................ 141
片上复位电路 .............................................................. 59
时钟源 ......................................................................... 44
Timer0 ...................................................................... 163
Timer1 ...................................................................... 167
Timer1 门控 .............................................. 172, 173, 174
Timer2 ...................................................................... 179
通用 I/O 端口 ............................................................. 105
外部 RC 模式 .............................................................. 47
谐振器的工作原理 ....................................................... 46
中断逻辑 ..................................................................... 67
扩展指令集
ADDFSR................................................................... 283
L
LATA 寄存器 ............................................................. 109, 115
LATB 寄存器 ..................................................................... 112
LSLF ................................................................................. 287
LSRF ................................................................................ 287
M
MCLR ................................................................................. 62
内部 ............................................................................ 62
Microchip 网站 .................................................................. 345
MOVIW ............................................................................ 288
MOVLB ............................................................................. 288
MOVWI ............................................................................. 289
MPLAB ASM30 汇编器、链接器和库管理器 .................... 324
MPLAB PM3 器件编程器 ................................................ 326
MPLAB REAL ICE 在线仿真系统 ..................................... 325
MPLAB 集成开发环境软件 ............................................... 323
MPLINK 目标链接器 /MPLIB 目标库管理器 ..................... 324
MSSP .............................................................................. 183
I2C 模式 .................................................................... 194
I2C 模式操作 ............................................................. 196
SPI 模式 .................................................................... 186
SSPBUF 寄存器........................................................ 189
SSPSR 寄存器 .......................................................... 189
模数转换器。 请参见 ADC
N
内部采样开关阻抗 (RSS)............................................... 140
内部振荡器模块
INTOSC
规范 .................................................................. 307
内核功能寄存器 .................................................................. 25
K
开发支持 ............................................................................ 323
看门狗定时器 (WDT)....................................................... 62
规范 ........................................................................... 310
模式 ............................................................................. 86
相关的寄存器 .............................................................. 88
与看门狗定时器相关的配置字 ..................................... 88
勘误表 ................................................................................... 8
客户通知服务 .................................................................... 345
客户支持 ............................................................................ 345
 2012 Microchip Technology Inc.
O
OPTION ............................................................................ 289
OPTION_REG 寄存器 ...................................................... 165
OSCCON 寄存器 ................................................................ 56
OSCSTAT 寄存器 ............................................................... 57
初稿
DS41624A_CN 第 341 页
PIC16(L)F1512/3
P
SSPCON1 寄存器 ............................................................. 231
SSPCON2 寄存器 ............................................................. 232
SSPCON3 寄存器 ............................................................. 233
SSPMSK 寄存器 ............................................................... 234
SSPOV ............................................................................. 220
SSPOV 状态标志 .............................................................. 220
SSPSTAT 寄存器 .............................................................. 230
R/W 位 ...................................................................... 199
STATUS 寄存器 .................................................................. 19
SUBWFB .......................................................................... 291
散热考虑 ........................................................................... 304
闪存程序存储器 ................................................................... 89
擦除 ............................................................................ 93
相关的寄存器 ............................................................ 104
写入 ............................................................................ 95
写校验 ....................................................................... 101
修改 ............................................................................ 99
与闪存程序存储器相关的配置字 ............................... 104
上电复位 ............................................................................. 60
上电延时定时器 (PWRT)................................................. 60
规范 .......................................................................... 310
上电延时序列 ...................................................................... 62
时序参数符号体系 ............................................................. 305
时序图
A/D 转换 .................................................................... 313
A/D 转换 (休眠模式).............................................. 314
捕捉 / 比较 /PWM (CCP)....................................... 312
CLKOUT 和 I/O ......................................................... 307
从中断唤醒 .................................................................. 80
带有时钟仲裁的波特率发生器 ................................... 215
第一个启动位时序 ..................................................... 216
发送和应答时的总线冲突 .......................................... 223
发送间隔字符序列 ..................................................... 266
复位、 WDT、 OST 和上电延时定时器 .................... 308
复位启动序列 .............................................................. 63
故障保护时钟监视器 (FSCM).................................. 55
I2C 停止条件接收或发送模式 .................................... 222
I2C 主模式 (7 位或 10 位发送)............................... 219
I2C 主模式 (7 位接收)............................................ 221
I2C 总线启动位 / 停止位 ............................................ 318
I2C 总线数据 ............................................................. 319
INT 引脚中断 ............................................................... 70
内部振荡器切换时序 ................................................... 50
启动条件期间的总线冲突 (仅用于 SDA)................ 224
启动条件期间的总线冲突 (SCL = 0)...................... 225
启动条件期间由 SDA 仲裁引起的 BRG 复位............. 225
欠压复位 (BOR).................................................... 309
欠压复位情形 .............................................................. 61
SPI 从模式 (CKE = 0) ........................................... 317
SPI 从模式 (CKE = 1) ........................................... 317
SPI 模式 (主模式).................................................. 189
SPI 主模式 (CKE = 1, SMP = 1)......................... 316
时钟时序 ................................................................... 306
时钟同步 ................................................................... 212
双速启动 ..................................................................... 53
Timer0 和 Timer1 外部时钟 ....................................... 311
Timer1 递增边沿 ....................................................... 171
停止条件期间的总线冲突 (情形 1)......................... 227
停止条件期间的总线冲突 (情形 2)......................... 227
同步发送 ................................................................... 268
同步发送 (由 TXEN 位控制).................................. 268
同步接收 (主模式, SREN)................................... 270
USART 同步发送 (主 / 从)..................................... 314
USART 同步接收 (主 / 从)..................................... 315
休眠时的自动唤醒位 (WUE).................................. 265
PCLATH 寄存器 .................................................................. 25
PCL 和 PCLATH.................................................................. 14
PCL 寄存器 ......................................................................... 25
PCON 寄存器 ................................................................ 26, 65
PIE1 寄存器 ................................................................... 26, 73
PIE2 寄存器 ................................................................... 26, 74
PIR1 寄存器 .................................................................. 26, 75
PIR2 寄存器 .................................................................. 26, 76
PMADR 寄存器 ................................................................... 89
PMADRH 寄存器 ................................................................. 89
PMADRL 寄存器 ......................................................... 89, 102
PMCON1 寄存器 ......................................................... 89, 103
PMCON2 寄存器 ......................................................... 89, 104
PMDATH 寄存器 ............................................................... 102
PORTA.............................................................................. 107
ANSELA 寄存器 ........................................................ 107
规范 ........................................................................... 308
PORTA 寄存器 ...................................................... 26, 27
相关的寄存器 ............................................................ 110
与 PORTA 相关的配置字 ........................................... 110
PORTA 寄存器 .................................................................. 108
PORTB.............................................................................. 111
ANSELB 寄存器 ........................................................ 111
PORTB 寄存器 ...................................................... 26, 27
相关的寄存器 ............................................................ 113
PORTB 寄存器 .................................................................. 112
PORTC.............................................................................. 114
ANSELC 寄存器 ........................................................ 114
PORTC 寄存器 ...................................................... 26, 27
相关的寄存器 ............................................................ 116
PORTC 寄存器 .................................................................. 115
PORTE.............................................................................. 117
PORTE 寄存器 ............................................................ 26
相关的寄存器 ............................................................ 119
与 PORTE 相关的配置字 ........................................... 119
PORTE 寄存器 .................................................................. 118
PR2 寄存器 ......................................................................... 26
Q
器件概述 .......................................................................... 9, 85
器件 ID 寄存器 ..................................................................... 42
器件配置 .............................................................................. 37
代码保护 ...................................................................... 41
配置字 ......................................................................... 37
用户 ID .................................................................. 41, 42
欠压复位 (BOR)............................................................... 61
规范 ........................................................................... 310
时序和特性 ................................................................ 309
R
RCREG ............................................................................. 252
RCREG 寄存器 ................................................................... 27
RCSTA 寄存器 ............................................................ 27, 256
RESET .............................................................................. 289
软件模拟器 (MPLAB SIM)............................................. 325
S
SPBRG 寄存器 .................................................................... 27
SPBRGH 寄存器 .............................................................. 258
SPBRGL 寄存器 ................................................................ 258
SPI 模式 (MSSP)
SPI 时钟 .................................................................... 189
相关的寄存器 ............................................................ 193
SSPADD 寄存器 ................................................................ 234
DS41624A_CN 第 342 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
TRISC 寄存器 ............................................................. 26, 115
TRISE ............................................................................... 117
TRISE 寄存器 ............................................................. 26, 118
TXREG ............................................................................. 247
TXREG 寄存器 .................................................................... 27
TXSTA 寄存器 ............................................................ 27, 254
BRGH 位 ................................................................... 258
特殊功能寄存器 (SFR).................................................... 26
特殊事件触发器 ................................................................ 134
异步发送.................................................................... 248
异步发送 (背对背).................................................. 248
异步接收.................................................................... 252
应答序列.................................................................... 222
正常工作时的自动唤醒位 (WUE)........................... 265
重复启动条件 ............................................................ 217
重复启动条件期间的总线冲突 (情形 1).................. 226
重复启动条件期间的总线冲突 (情形 2).................. 226
自动波特率校准 ......................................................... 263
时序要求
I2C 总线数据 ............................................................. 320
SPI 模式 .................................................................... 318
使用中断唤醒 ...................................................................... 80
时钟切换 .............................................................................. 51
时钟源
内部模式...................................................................... 48
HFINTOSC ......................................................... 48
LFINTOSC .......................................................... 48
内部振荡器时钟切换时序 .................................... 49
外部模式...................................................................... 45
EC ....................................................................... 45
HS ....................................................................... 45
LP ....................................................................... 45
OST .................................................................... 46
RC....................................................................... 47
XT ....................................................................... 45
数据存储器 .......................................................................... 18
双速时钟启动模式 ............................................................... 52
U
USART
同步主模式
时序图,同步发送 ............................................ 314
时序图,同步接收 ............................................ 315
要求,同步发送 ............................................... 315
要求,同步接收 ............................................... 315
V
VREF。 请参见 ADC 参考电压
VREGCON 寄存器 ............................................................. 81
W
WCOL ....................................................... 215, 218, 220, 222
WCOL 状态标志 ........................................ 215, 218, 220, 222
WDTCON 寄存器 ................................................................ 87
WPUB 寄存器 ................................................................... 113
WWW 地址 ....................................................................... 345
WWW,在线支持.................................................................. 8
温度指示器
相关的寄存器 ............................................................ 128
温度指示器模块 ................................................................ 127
T
T1CON 寄存器 ............................................................ 26, 175
T1GCON 寄存器 ............................................................... 176
T2CON (Timer2)寄存器 ................................................ 181
T2CON 寄存器 .................................................................... 26
Timer0 ............................................................................... 163
工作原理.................................................................... 163
规范 ........................................................................... 311
相关的寄存器 ............................................................ 165
Timer2 ............................................................................... 179
相关的寄存器 ............................................................ 182
Timer2/4/6
相关的寄存器 ............................................................ 182
Timer1 ............................................................................... 167
辅助振荡器 ................................................................ 169
工作原理.................................................................... 168
规范 ........................................................................... 311
时钟源选择 ................................................................ 168
Timer1 门控
选择源 ............................................................... 169
TMR1H 寄存器 .......................................................... 167
TMR1L 寄存器 .......................................................... 167
相关的寄存器 ............................................................ 177
休眠期间的操作 ......................................................... 171
异步计数器模式 ......................................................... 169
读写 ................................................................... 169
预分频器.................................................................... 169
中断 ........................................................................... 171
TMR0 寄存器....................................................................... 26
TMR1H 寄存器 .................................................................... 26
TMR1L 寄存器 .................................................................... 26
TMR2 寄存器 ...................................................................... 26
TRIS .................................................................................. 292
TRISA 寄存器 .............................................................. 26, 108
TRISB ............................................................................... 111
TRISB 寄存器 .............................................................. 26, 112
TRISC ............................................................................... 114
 2012 Microchip Technology Inc.
X
写保护 ................................................................................. 41
Y
异步操作的时钟精度 ......................................................... 254
引脚说明 ............................................................................ 11
因特网地址 ........................................................................ 345
Z
增强型通用同步 / 异步收发器 (EUSART)...................... 245
增强型中档 CPU ................................................................. 13
振荡器
相关的寄存器 .............................................................. 57
振荡器参数 ........................................................................ 307
振荡器规范 ........................................................................ 306
振荡器模块 .......................................................................... 43
ECH ............................................................................ 43
ECL............................................................................. 43
ECM............................................................................ 43
HS............................................................................... 43
INTOSC ...................................................................... 43
LP ............................................................................... 43
RC .............................................................................. 43
XT ............................................................................... 43
振荡器起振定时器 (OST)
规范 .......................................................................... 310
振荡器切换
故障保护时钟监视器 (FSCM).................................. 54
双速时钟启动 .............................................................. 52
指令格式 ........................................................................... 280
指令集 ............................................................................... 279
ADDLW..................................................................... 283
ADDWF .................................................................... 283
初稿
DS41624A_CN 第 343 页
PIC16(L)F1512/3
ADDWFC .................................................................. 283
ANDLW ..................................................................... 283
ANDWF ..................................................................... 283
BCF ........................................................................... 284
BRA........................................................................... 284
BSF ........................................................................... 284
BTFSC ...................................................................... 284
BTFSS ...................................................................... 284
CALL ......................................................................... 285
CALLW...................................................................... 285
CLRF......................................................................... 285
CLRW ....................................................................... 285
CLRWDT................................................................... 285
COMF ....................................................................... 285
DECF ........................................................................ 285
DECFSZ.................................................................... 286
GOTO ....................................................................... 286
INCF.......................................................................... 286
INCFSZ ..................................................................... 286
IORLW ...................................................................... 286
IORWF ...................................................................... 286
LSLF ......................................................................... 287
LSRF ......................................................................... 287
MOVF........................................................................ 287
MOVIW ..................................................................... 288
MOVLB ..................................................................... 288
MOVLW .................................................................... 288
MOVWF .................................................................... 288
MOVWI ..................................................................... 289
NOP .......................................................................... 289
OPTION .................................................................... 289
RESET ...................................................................... 289
RETFIE ..................................................................... 290
RETLW ..................................................................... 290
RETURN ................................................................... 290
RLF ........................................................................... 290
RRF........................................................................... 291
SLEEP ...................................................................... 291
SUBLW ..................................................................... 291
SUBWF ..................................................................... 291
SUBWFB................................................................... 291
SWAPF ..................................................................... 292
TRIS .......................................................................... 292
XORLW..................................................................... 292
XORWF..................................................................... 292
直流和交流特性 ................................................................. 321
直流特性
工业级和扩展级 ......................................................... 295
扩展级和工业级 ......................................................... 302
中断 ..................................................................................... 67
ADC .......................................................................... 135
TMR1 ........................................................................ 171
与 LDO 相关的配置字 .................................................. 83
与时钟源相关的配置字 ................................................ 57
与中断相关的寄存器 .................................................... 77
主同步串行口。 请参见 MSSP
DS41624A_CN 第 344 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
MICROCHIP 网站
客户支持
Microchip 网站 (www.microchip.com)为客户提供在
线支持。客户可通过该网站方便地获取文件和信息。只
要使用常用的互联网浏览器即可访问。网站提供以下信
息:
Microchip 产品的用户可通过以下渠道获得帮助:
•
•
•
•
• 产品支持——数据手册和勘误表、应用笔记和示例
程序、设计资源、用户指南以及硬件支持文档、最
新的软件版本以及归档软件
• 一般技术支持——常见问题解答 (FAQ)、技术支
持请求、在线讨论组以及 Microchip 顾问计划成员
名单
• Microchip 业务——产品选型和订购指南、最新
Microchip 新闻稿、研讨会和活动安排表、
Microchip 销售办事处、代理商以及工厂代表列表
代理商或代表
当地销售办事处
应用工程师 (FAE)
技术支持
客户应联系其代理商、代表或应用工程师 (FAE)寻求
支持。当地销售办事处也可为客户提供帮助。本文档后
附有销售办事处的联系方式。
也可通过 http://microchip.com/support 获得网上技
术支持。
变更通知客户服务
Microchip
的 变 更 通 知 客 户 服 务 有 助 于客户了解
Microchip 产品的最新信息。注册客户可在他们感兴趣
的某个产品系列或开发工具发生变更、更新、发布新版
本或勘误表时,收到电子邮件通知。
欲注册,请登录 Microchip 网站 www.microchip.com。
在 “支 持”(Support)下,点 击 “变 更 通 知 客 户
(Customer Change Notification)”服务后按照注册说
明完成注册。
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 345 页
PIC16(L)F1512/3
读者反馈表
我们努力为您提供最佳文档,以确保您能够成功使用 Microchip 产品。如果您对文档的组织、条理性、主题及其他有助
于提高文档质量的方面有任何意见或建议,请填写本反馈表并传真给我公司 TRC 经理,传真号码为 86-21-5407-5066。
请填写以下信息,并从下面各方面提出您对本文档的意见。
致:
TRC 经理
总页数 ________
关于: 读者反馈
发自: 姓名
公司
地址
国家 / 省份 / 城市 / 邮编
电话 :(______)__________________
传真:(______)__________________
应用(选填):
您希望收到回复吗?是
否
器件:PIC16(L)F1512/3
文献编号:DS41624A_CN
问题:
1. 本文档中哪些部分最有特色?
2. 本文档是否满足了您的软硬件开发要求?如何满足的?
3. 您认为本文档的组织结构便于理解吗?如果不便于理解,那么问题何在?
4. 您认为本文档应该添加哪些内容以改善其结构和主题?
5. 您认为本文档中可以删减哪些内容,而又不会影响整体使用效果?
6. 本文档中是否存在错误或误导信息?如果存在,请指出是什么信息及其具体页数。
7. 您认为本文档还有哪些方面有待改进?
DS41624A_CN 第 346 页
初稿
 2012 Microchip Technology Inc.
PIC16(L)F1512/3
产品标识体系
欲订货,或获取价格、交货等信息,请与我公司生产厂或各销售办事处联系。
[X](1)
部件编号
器件
-
卷带式
选项
X
/XX
XXX
温度
范围
封装
定制编号
示例:
a)
b)
器件:
PIC16F1512, PIC16LF1512
PIC16F1513, PIC16LF1513
卷带式选项:
空白
T
=标准包装 (料管或托盘)
= 卷带式(1)
温度范围:
I
E
= -40C 至 +85C(工业级)
= -40C 至 +125C(扩展级)
封装:
MV
P
SO
SP
SS
c)
定制编号:
=
=
=
=
=
微型引线框 (UQFN) 4x4
塑封 DIP (PDIP)
SOIC
窄型塑封 DIP (SPDIP)
SSOP
注
PIC16F1512T - I/SO 301
卷带式,
工业级温度,
SOIC 封装
PIC16F1512 - I/P
工业级温度
PDIP 封装
PIC16F1513 - E/SS
扩展级温度,
SSOP 封装
1:
卷带式标识符仅出现在产品目录的部件编号
描述中。该标识符用于订货目的,不会印刷
在器件封装上。关于包装是否提供卷带式选
项的信息,请咨询当地的 Microchip 销售办事
处。
QTP、 SQTP、编码或特殊要求 (否则为空白)
 2012 Microchip Technology Inc.
初稿
DS41624A_CN 第 347 页
全球销售及服务网点
美洲
亚太地区
亚太地区
欧洲
公司总部 Corporate Office
2355 West Chandler Blvd.
Chandler, AZ 85224-6199
Tel: 1-480-792-7200
Fax: 1-480-792-7277
技术支持:
http://www.microchip.com/
support
网址: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
台湾地区 - 高雄
Tel: 886-7-536-4818
Fax: 886-7-330-9305
奥地利 Austria - Wels
Tel: 43-7242-2244-39
Fax: 43-7242-2244-393
台湾地区 - 台北
Tel: 886-2-2500-6610
Fax: 886-2-2508-0102
丹麦 Denmark-Copenhagen
Tel: 45-4450-2828
Fax: 45-4485-2829
台湾地区 - 新竹
Tel: 886-3-5778-366
Fax: 886-3-5770-955
法国 France - Paris
Tel: 33-1-69-53-63-20
Fax: 33-1-69-30-90-79
澳大利亚 Australia - Sydney
Tel: 61-2-9868-6733
Fax: 61-2-9868-6755
德国 Germany - Munich
Tel: 49-89-627-144-0
Fax: 49-89-627-144-44
印度 India - Bangalore
Tel: 91-80-3090-4444
Fax: 91-80-3090-4123
意大利 Italy - Milan
Tel: 39-0331-742611
Fax: 39-0331-466781
印度 India - New Delhi
Tel: 91-11-4160-8631
Fax: 91-11-4160-8632
荷兰 Netherlands - Drunen
Tel: 31-416-690399
Fax: 31-416-690340
印度 India - Pune
Tel: 91-20-2566-1512
Fax: 91-20-2566-1513
日本 Japan - Osaka
Tel: 81-66-152-7160
西班牙 Spain - Madrid
Tel: 34-91-708-08-90
Fax: 34-91-708-08-91
亚特兰大 Atlanta
Duluth, GA
Tel: 1-678-957-9614
Fax:1-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
克里夫兰 Cleveland
Independence, OH
Tel: 1-216-447-0464
Fax: 1-216-447-0643
达拉斯 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
印第安纳波利斯
Indianapolis
Noblesville, IN
Tel: 1-317-773-8323
Fax: 1-317-773-5453
洛杉矶 Los Angeles
Mission Viejo, CA
Tel: 1-949-462-9523
Fax: 1-949-462-9608
圣克拉拉 Santa Clara
Santa Clara, CA
Tel: 1-408-961-6444
Fax: 1-408-961-6445
加拿大多伦多 Toronto
Mississauga, Ontario,
Canada
Tel: 1-905-673-0699
Fax: 1-905-673-6509
中国 - 北京
Tel: 86-10-8569-7000
Fax: 86-10-8528-2104
中国 - 成都
Tel: 86-28-8665-5511
Fax: 86-28-8665-7889
中国 - 重庆
Tel: 86-23-8980-9588
Fax: 86-23-8980-9500
中国 - 杭州
Tel: 86-571-2819-3187
Fax: 86-571-2819-3189
中国 - 香港特别行政区
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-29-8833-7252
Fax: 86-29-8833-7256
中国 - 厦门
Tel: 86-592-238-8138
Fax: 86-592-238-8130
中国 - 珠海
Tel: 86-756-321-0040
Fax: 86-756-321-0049
Fax: 81-66-152-9310
英国 UK - Wokingham
Tel: 44-118-921-5869
Fax: 44-118-921-5820
日本 Japan - Yokohama
Tel: 81-45-471- 6166
Fax: 81-45-471-6122
韩国 Korea - Daegu
Tel: 82-53-744-4301
Fax: 82-53-744-4302
韩国 Korea - Seoul
Tel: 82-2-554-7200
Fax: 82-2-558-5932 或
82-2-558-5934
马 来西 亚 Malaysia - Kuala
Lumpur
Tel: 60-3-6201-9857
Fax: 60-3-6201-9859
马来西亚 Malaysia - Penang
Tel: 60-4-227-8870
Fax: 60-4-227-4068
菲律宾 Philippines - Manila
Tel: 63-2-634-9065
Fax: 63-2-634-9069
新加坡 Singapore
Tel: 65-6334-8870
Fax: 65-6334-8850
泰国 Thailand - Bangkok
Tel: 66-2-694-1351
Fax: 66-2-694-1350
11/29/11
DS41624A_CN 第 348 页
初稿
 2012 Microchip Technology Inc.