MICROCHIP PIC16F785, PIC16HV785 Technical data

PIC16F785/HV785
数据手册
采用双相异步反馈 PWM
双高速比较器和 双运算放大器的
20 引脚 8
CMOS 闪存单片机
2006 Microchip Technology Inc. 初稿 DS41249D_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
•Microchip的产品均达到 Microchip 数据手册中所述的技术指标。
•Microchip确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的 操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•Microchip愿与那些注重代码完整性的客户合作。
•Microchip或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视 为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的 软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
情况的有用信息。Microchip Technology Inc. 及其分公司和相 关公司、各级主管与员工及事务代理机构对译文中可能存在的
任何差错不承担任何责任。建议参考 Microchip Technology Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便 利,它们可能由更新之信息所替代。确保应用符合技术规范, 是您自身应负的责任。Microchip 对这些信息不作任何明示或 暗示、书面或口头、法定或其他形式的声明或担保,包括但不 限于针对其使用情况、质量、性能、适销性或特定用途的适用 性的声明或担保。 Microchip 对因这些信息及使用这些信息而 引起的后果不承担任何责任。如果将 Microchip 器件用于生命 维持和 / 或生命安全应用,一切风险由买方自负。买方同意在 由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障 Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识 产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 名称和徽标组合、 Microchip 徽标、 Accuron dsPIC、 K
EELOQ、 microID、 MPLAB、 PIC、 PICmicro、
PICSTARTPRO MATE、 PowerSmart、 rfPIC 和 SmartShunt 均为 Microchip Technology Incorporated 在美国
及其他国家或地区的注册商标。
AmpLabFilterLabMigratableMemoryMXDEV MXLABSEEVAL、SmartSensor The Embedded Control Solutions Company 均为 Microchip Technology Incorporated
在美国的注册商标。
Analog-for-the-Digital AgeApplication Maestro CodeGuarddsPICDEMdsPICDEM.netdsPICworks ECANECONOMONITORFanSenseFlexROM fuzzyLABIn-Circuit Serial ProgrammingICSPICEPIC Linear Active Thermistor、Mindi、MiWi、MPASM、MPLIB、 MPLINKPICkitPICDEMPICDEM.netPICLAB PICtailPowerCalPowerInfoPowerMatePowerTool REAL ICE、 rfLAB、 rfPICDEM、 Select Mode、 Smart SerialSmartTelTotal EnduranceUNI/OWiperLock ZENA 均为 Microchip Technology Incorporated 在美国及其他
国家或地区的商标。
SQTP Microchip Technology Incorporated 在美国的服务标 记。
在此提及的所有其他商标均为各持有公司所有。 © 2006Microchip Technology Incorporated. 版权所有。
Microchip Gresham
晶圆生产厂均于通过了 片机、 储器和模拟产品方面的质量体系流程均符合 外,
ISO 9001:2000
位于美国亚利桑那州
及位于加利福尼亚州
®
KEELOQ
跳码器件、串行
Microchip
在开发系统的设计和生产方面的质量体系也已通过了
认证。
Chandler和Tem pe
Mountain View
ISO/TS-16949:2002
EEPROM
、位于俄勒冈州
的全球总部、设计中心和
认证。公司在
、单片机外设、非易失性存
ISO/TS-16949:2002
PIC
®
8
。此
位单
DS41249D_CNii 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

20 引脚 8 CMOS 闪存单片机

高性能 RISC CPU
仅需学习 35 条指令:
- 除跳转指令外,其余均为单周期指令
工作速度:
- DC – 20 MHz 振荡器输入
- DC – 200 ns 指令周期
中断能力
•8级深硬件堆栈
直接、间接和相对寻址模式
特殊单片机特性:
高精度内部振荡器:
- 出厂校准至 ±1%
- 软件可选择 8 MHz 32 kHz 的频率范围
- 可用软件调整
- 双速启动模式
- 用于关键应用的晶体故障检测
- 工作时切换时钟模式以节电
省电的休眠模式
宽工作电压范围 (2.0V-5.5V
工业和扩展级温度范围
上电复位 (Power-on ResetPOR
上电延时定时器 (Power-up TimerPWRT)和
振荡器启振定时器 (Oscillator Start-up Timer OST
带软件控制选择的欠压复位 (Brown-out Reset
BOR
增强型低电流看门狗定时器 (Watchdog Timer
WDT),带有片上振荡器 (预分频器最大时,软 件可选择的标称值为 268 秒),可用软件启动
带上拉 / 输入引脚的复用式主清零功能
可编程代码保护
高耐久性的闪存 /EEPROM 存储单元:
- 闪存耐写次数达 100,000
- EEPROM 耐写次数达 1,000,000
- 闪存 / 数据 EEPROM 数据保存时间 > 40
低功耗特性:
待机电流:
-2.0V时典型值为 30 nA
工作电流:
- 32 kHz、 2.0V 时典型值 为 8.5 µA
-1 MHz、 2.0V 时典型值为 100 µA
看门狗定时器电流:
-2.0V时典型值为 1 µA
•Timer1振荡器电流:
- 32 kHz、 2.0V 时典型值为 2 µA
外设特性:
高速比较器模块,具有:
-2个独立的模拟比较器
- 片上可编程比较器参考电压 (CV
DD 的 %)
V
-1.2V带隙参考电压
- 可从外部访问比较器输入和输出
- < 40 ns 传播延时
-2 mV失调电压,典型值
带有 2 个独立运放的运算放大器模块:
-3 MHz GBWP,典型值
- 可从外部访问所有 I/O 引脚
双相异步反馈 PWM模块:
- 带有可编程死区延时的互补输出
- 无限分辨率模拟占空比
- 用于多相 PWM 的同步输出 / 输入
- 最高 PWM 频率为 F
•A/D转换器:
-10位精度和 14 路通道 (2 路内部)
•17个 I/O 引脚和 1 个只用作输入的引脚:
- 高灌 / 拉电流能力,可直接驱动 LED
- 引脚电平变化中断
- 独立可编程弱上拉
• Timer0 :带 有 8 位可编程预分频器的 8位定时器 /
数器
增强型 Timer1
- 带有预分频器的 16 位定时器 / 计数器
- 外部门控输入模式
- 如果选用 INTOSC 模式,在 LP 模式下可选择 OSC1 OSC2 作为 Timer1 的振荡器
•Timer2:带有 8 位周期寄存器、预分频器和后分频 器的 8 位定时器 / 计数器
捕捉、比较和 PWM 模块:
-16位捕捉,最大精度 12.5 ns
- 比较,最大精度 200 ns
- 带有 1 路输出通道的 10 PWM,最高频率
20 kHz
通过两个引脚进行在线串行编程 (In-Circuit Serial Programming
并联稳压器 (仅限 PIC16HV785
-5V稳压
-4 mA至 50 mA 并联电流范围
OSC/2
TM
ICSPTM)
REF)模块
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 1
PIC16F785/HV785
程序
存储器
器件
闪存
(字)
数据存储器
SRAM
(字节)
EEPROM
(字节)
I/O
10
A/D
(通道)
运放 比较器
CCP
双相
PWM
8/16
定时器并联稳压器
PIC16F785 2048 128 256 17+1 12+2 2 2 1 1 2/1 0
PIC16HV785 2048 128 256 17+1 12+2 2 2 1 1 2/1 1
双列直插引脚图
20 引脚 PDIPSOIC 和 SSOP
VDD
RA5/T1CKI/OSC1/CLKIN
RA4/AN3/T1G/OSC2/CLKOUT
RA3/MCLR
RC4/C2OUT/PH2
RC3/AN7/C12IN3-/OP1
RC6/AN8/OP1-
RC7/AN9/OP1+
/VPP
RC5/CCP1
RB7/SYNC
1 双列直插引脚说明
I/O
引脚 模拟 比较器 运放
RA0 19 AN0 C1IN+ IOC Y ICSPDAT
RA1 18 AN1/VREF C12IN0- IOC Y ICSPCLK
RA2 17 AN2 C1OUT T0CKI INT/IOC Y
(1)
RA3
RA4 3 AN3 T1G IOC Y OSC2/CLKOUT
RA5 2 T1CKI IOC Y OSC1/CLKIN
RB4 13 AN10 OP2-
RB5 12 AN11 OP2+
RB6
RB7 10 SYNC
RC0 16 AN4 C2IN+
RC1 15 AN5 C12IN1- PH1
RC2 14 AN6 C12IN2- OP2
RC3 7 AN7 C12IN3- OP1
RC4 6 C2OUT PH2
RC5 5 CCP1
RC6 8 AN8 OP1-
RC7 9 AN9 OP1+
1 VDD
—20 — — — — — VSS
1: 仅为输入。
4— — — ———IOC Y MCLR/VPP
(2)
11
2: 漏极开路。
1 2 3 4 5 6 7 8 9 10
PWM
20 19 18 17 16 15 14 13
PIC16F785/HV785
12 11
定时器
VSS RA0/AN0/C1IN+/ICSPDAT RA1/AN1/C12IN0-/V RA2/AN2/T0CKI/INT/C1OUT RC0/AN4/C2IN+ RC1/AN5/C12IN1-/PH1 RC2/AN6/C12IN2-/OP2 RB4/AN10/OP2­RB5/AN11/OP2+ RB6
CCP
中断 上拉 基本
REF/ICSPCLK
DS41249D_CN 第 2 页 初稿  2006 Microchip Technology Inc.
QFN 4x4x0.9)引脚图
20 引脚 QFN
RA4/AN3/T1G/OSC2/CLKOUT
PIC16F785/HV785
VDD
RA5/T1CKI/OSC1/CLKIN
VSSRA0/AN0/C1IN+/ICSPDAT
RA3/MCLR/VPP
RC5/CCP1
RC4/C2OUT/PH2
RC3/AN7/C12IN3-/OP1
RC6/AN8/OP1-
2019181716
1 2
3 4 5
678910
RB7/SYNC
RC7/AN9/OP1+
RB6
15 14 13 12 11
PIC16F785/HV785
RB4/AN10/OP2-
RB5/AN11/OP2+
RA1/AN1/C12IN0-/VREF/ICSPCLK RA2/AN2/T0CKI/INT/C1OUT RC0/AN4/C2IN+ RC1/AN5/C12IN1-/PH1 RC2/AN6/C12IN2-/OP2
2 QFN 引脚说明
I/O
引脚 模拟 比较器 运放
RA0 16 AN0 C1IN+ IOC Y ICSPDAT
RA1 15 AN1/V
REF C12IN0- IOC Y ICSPCLK
RA2 14 AN2 C1OUT T0CKI INT/IOC Y
(1)
RA3
1— — — ———IOC Y MCLR/VPP
RA4 20 AN3 T1G IOC Y OSC2/CLKOUT
RA5 19 T1CKI IOC Y OSC1/CLKIN
RB4 10 AN10 OP2-
RB5 9 AN11 OP2+
(2)
RB6
8
RB7 7 SYNC
RC0 13 AN4 C2IN+
RC1 12 AN5 C12IN1- PH1
RC2 11 AN6 C12IN2- OP2
RC3 4 AN7 C12IN3- OP1
RC4 3 C2OUT PH2
RC5 2 CCP1
RC6 5 AN8 OP1-
RC7 6 AN9 OP1+
18 VDD
—17 — — — — — — VSS
1: 仅为输入。
2: 漏极开路。
PWM
定时器
CCP
中断 上拉 基本
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 3
PIC16F785/HV785
目录
1.0 器件概述 ....................................................................................................................................................................................... 5
2.0 存储器构成 ................................................................................................................................................................................... 9
3.0 时钟源......................................................................................................................................................................................... 23
4.0 I/O 端口....................................................................................................................................................................................... 35
5.0 Timer0 模块 ................................................................................................................................................................................ 49
6.0 具备门控功能的 Timer1 模块 ...................................................................................................................................................... 51
7.0 Timer2 模块 ................................................................................................................................................................................ 55
8.0 捕捉 / 比较 /PWM CCP)模块................................................................................................................................................. 57
9.0 比较器模块 ................................................................................................................................................................................. 63
10.0 参考电压 ..................................................................................................................................................................................... 70
11.0 运算放大器 (OPA)模块........................................................................................................................................................... 75
12.0 模数转换器 (A/D)模块 ............................................................................................................................................................ 79
13.0 双相 PWM................................................................................................................................................................................... 91
14.0 数据 EEPROM 存储器 .............................................................................................................................................................. 103
15.0 CPU 的特殊功能....................................................................................................................................................................... 107
16.0 稳压器....................................................................................................................................................................................... 126
17.0 指令集汇总 ............................................................................................................................................................................... 127
18.0 开发支持 ................................................................................................................................................................................... 137
19.0 电气规范 ................................................................................................................................................................................... 141
20.0 直流和交流特性图表 ................................................................................................................................................................. 163
21.0 封装信息 ................................................................................................................................................................................... 165
附录 A 数据手册版本历史 .......................................................................................................................................................... 171
附录 B:从PIC® 器件移植 ................................................................................................................................................... 171
索引 .................................................................................................................................................................................................... 173
Microchip 网站.................................................................................................................................................................................... 178
变更通知客户服务 .............................................................................................................................................................................. 178
客户支持............................................................................................................................................................................................. 178
读者反馈表 ......................................................................................................................................................................................... 179
产品标识体系...................................................................................................................................................................................... 181
致客户
我们旨在提供最佳文档供客户正确使用 Microchip 产品。为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。 出版物的质量将随新文档及更新版本的推出而得到提升。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 CTRC@microchip.com,或将本 数据手册后附的 《读者反馈表》传真到 86-21-5407 5066。我们期待您的反馈。
最新数据手册
欲获得本数据手册的最新版本,请查询我公司的网站:
http://www.microchip.com
查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号,例如:DS30000A是DS30000A 版本。
勘误表
现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到 器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
•Microchip网站 http://www.microchip.com
当地 Microchip 销售办事处 (见最后一页)
在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。
客户通知系统
欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。
DS41249D_CN 4 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

1.0 器件概述

本文档包含了 PIC16F785/HV785 的器件特定信息。其 他信息可参见 《PIC
DS33023_CN),该参考手册可从当地 Microchip 销售
代表处获得,或者从 Microchip 网站下载。该参考手册 可视为本数据手册的补充文档,我们强烈建议阅读它, 以使读者更好地了解器件架构以及外设模块的操作。

1-1 PIC16F785/HV785 框图

OSC1/CLKIN
OSC2/CLKOUT
T1G
T1CKI
T0CKI
®
中档单片机系列参考手册》
程序 总线
指令寄存器
32 kHz 内部
振荡器
8 MHz 内部
振荡器
Timer0 Timer1
配置
闪存
2K X 14
程序
存储器
14
指令
译码和
控制
定时 发生
13
8
直接寻址
MCLR
INT
程序计数器
8 级深堆栈
13 位)
上电延时
定时器
振荡器
起振定时器
上电 复位
看门狗 定时器
欠压 复位
VDD
Timer2
VSS
本数据手册涵盖 PIC16F785/HV785 器件。器件采用 20 引脚 PDIPSOICSSOP QFN 封装。图 1-1 所示 为 PIC16F785/HV785 器件的框图。表 1-1 为引脚说明。
7
RAM 地址
3
8
CCP1
数据总线
RAM
128 字节
文件
寄存器
地址 MUX
ALU
W 寄存器
CCP
9
间接
8
寻址
FSR 寄存器
STATUS 寄存器
MUX
EEDATA
256 字工
数据
EEPROM
EEADDR
8
8
PORTA
PORTB
PORTC
放大器
双相
PWM
RA0
RA1
RA2
RA3
RA4
RA5
RB4
RB5
RB6
RB7
RC0
RC1
RC2
RC3
RC4
RC5
RC6
RC7
OP1
OP1+
OP1-
OP2
OP2+
OP2-
PH1
PH2
SYNC
模数转换器
AN0
AN1
AN2
AN3
AN4
AN5
AN6
AN7
AN3
AN8
AN9
AN10
参考 电压
AN11
VREF
C1IN-
2 个模拟比较器
C1IN+
C1OUT
C2IN-
C2IN+
C2OUT
2006 Microchip Technology Inc. 初稿 DS41249D_CN 5
PIC16F785/HV785

1-1 PIC16F785/HV785 引脚说明

名称 功能
RA0/AN0/C1IN+/ICSPDAT RA0 TTL CMOS
AN0 AN
C1IN+ AN
ICSPDAT ST CMOS
RA1/AN1/C12IN0-/V ICSPCLK
RA2/AN2/T0CKI/INT/C1OUT RA2 ST CMOS
RA3/MCLR
RA4/AN3/T1G/OSC2/ CLKOUT
RA5/T1CKI/OSC1/CLKIN RA5 TTL CMOS
RB4/AN10/OP2- RB4 TTL CMOS PORTB I/O
RB5/AN11/OP2+ RB5 TTL CMOS PORTB I/O
RB6 RB6 TTL OD
RB7/SYNC RB7 TTL CMOS PORTB I/O
RC0/AN4/C2IN+ RC0 TTL CMOS PORTC I/O
图注: TTL = TTL 输入缓冲器, ST = 施密特输入缓冲器, AN = 模拟, OD = 开漏输出,
/Vpp RA3 TTL
HV = 高电压
REF/
RA1 TTL CMOS
AN1 AN
C12IN0- AN
V
REF AN AN
ICSPCLK ST
AN2 AN
T0CKI ST
INT ST
C1OUT CMOS
MCLR
V
PP HV
RA4 TTL CMOS
AN3 AN
T1G ST
OSC2 XTAL
CLKOUT CMOS
T1CKI ST
OSC1 XTAL
CLKIN ST
AN10 AN
OP2- AN
AN11 AN
OP2+ AN
SYNC ST CMOS
AN4 AN
C2IN+ AN
输入类型输出
类型
ST
说明
带可编程上拉和电平变化中断的 PORTA I/O A/D 通道 0 的输入 比较器 1 的同相输入 串行编程数据 I/O 带可编程上拉和电平变化中断的 PORTA I/O A/D 通道 1 的输入 比较器 1 2 的同相输入 A/D 的外部参考电压,经缓冲的参考输出 串行编程时钟 带可编程上拉和电平变化中断的 PORTA I/O
A/D 通道 2 的输入 Timer0 时钟输入
外部中断 比较器 1 的输出 带可编程上拉和电平变化中断的 PORTA 输入 带内部上拉的主清零 编程电压 带可编程上拉和电平变化中断的 PORTA I/O
A/D 通道 3 的输入 Timer1 门控 晶体 / 谐振器
F
OSC/4 输出
带可编程上拉和电平变化中断的 PORTA I/O Timer1 时钟
晶体 / 谐振器 外部时钟输入 /RC 振荡器连接
A/D 通道 10 的输入 运放 2 的反相输入
A/D 通道 11 的输入 运放 2 的同相输入 PORTB I/O。开漏输出
主控 PWM 同步输出或从动 PWM 同步输入
A/D 通道 4 的输入 比较器 2 的同相输入
DS41249D_CN 6 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785
1-1 PIC16F785/HV785 引脚说明 (续)
名称 功能
RC1/AN5/C12IN1-/PH1 RC1 TTL CMOS PORTC I/O
AN5 AN
C12IN1- AN
PH1 CMOS
RC2/AN6/C12IN2-/OP2 RC2 TTL CMOS PORTC I/O
AN6 AN
C12IN2- AN
OP2 AN
RC3/AN7/C12IN3-/OP1 RC3 TTL CMOS PORTC I/O
AN7 AN
C12IN3- AN
OP1 AN
RC4/C2OUT/PH2 RC4 TTL CMOS PORTC I/O
C2OUT CMOS
PH2 CMOS
RC5/CCP1 RC5 TTL CMOS PORTC I/O
CCP1 ST CMOS
RC6/AN8/OP1- RC6 TTL CMOS PORTC I/O
AN8 AN
OP1- AN
RC7/AN9/OP1+ RC7 CMOS PORTC I/O
AN9 AN
OP1+ AN
V
SS VSS
VDD VDD
图注: TTL = TTL 输入缓冲器, ST = 施密特输入缓冲器, AN = 模拟, OD = 开漏输出,
HV = 高电压
输入类型输出
类型
电源 电源
说明
A/D 通道 5 的输入 比较器 1 2 的反相输入
PWM 第 1 相的输入
A/D 通道 6 的输入
比较器 1 2 的反相输入 运放 2 的输出
A/D 通道 7 的输入 比较器 1 2 的反相输入 运放 1 的输出
比较器 2 的输出 PWM 2 相的输出
捕捉输入 / 比较输出
A/D 通道 8 的输出 运放 1 的反相输入
A/D 通道 9 的输入 运放 1 的同相输入 接地参考 正电源
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 7
PIC16F785/HV785
注:
DS41249D_CN 8 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

2.0 存储器构成

2.1 程序存储器构成

PIC16F785/HV785 器件具有一个 13 位程序计数器,能 够寻址 8K x 14 的程序存储空间。只有 PIC16F785/ HV785 的第一个 2K x 14 0000h-07FFh)是物理实 现的。访问超出上述界限的存储单元,将回到原来的第 一个 2K x 14 空间内。复位向量位于 0000h,而中断向 量位于 0004h (见图 2-1)。
2-1 PIC16F785/HV785 的程序存储器映
射图和堆栈
CALL, RETURN RETFIE, RETLW
片上程序存储器
PC<12:0>
1 级堆栈 2 级堆栈
8 级堆栈
复位向量
中断向量
13
000h
0004
0005
07FFh
0800h
1FFFh

2.2 数据存储器构成

数据存储器 (见图 2-2)分为四个存储区 (Bank), 这 四个存储区中包含通用寄存器 (General Purpose
RegisterGPR)和特殊功能寄存器(Special Function Register,SFR)。特殊功能寄存器位于每个存储区的前 32 个单元中。Bank 0 的寄存器单元 20h-7Fh 和 Bank 1 A0h-BFh 是通用寄存器,以静态 RAM 的形式实现。 Bank 1(F0h-FFh)、Bank 2(170h-17Fh)和 Bank 3
1F0h-1FFh)中的最后十六个寄存器单元指向 Bank 0
中的地址 70h-7Fh。所有其他 RAM 均未使用,读取时 返回 0
访问数据存储器存储区的任何单元需要七个地址位。访 问四个存储区则还需要额外两个地址位。直接访问数据 存储器时,地址位的低 7 位包含在操作码中,高 2 位包 含在状态 (STATUS)寄存器中。RP0 RP1
STATUS<5> 和 STATUS<6>)是数据存储器地址位的
2 位,也是存储区选择位。表 2-1 列出了如何访问寄 存器的 4 个存储区。

2-1 存储区选择

RP1 RP0
Bank 0 00
Bank 1 01
Bank 2 10
Bank 3 11
2.2.1 通用寄存器文件
PIC16F785/HV785的寄存器文件存储区组织为128 x 8
每个寄存器可以通过操作码包含的 7 位地址直接访问, 也可以通过文件选择寄存器 (File Select Register, FSR)间接访问。使用 FSR 访问数据存储器时,数据存 储器地址位的低 8 位包含在 FSR 中,而第 9 个最高位包 含在状态寄存器的 IRP 位(STATUS<7>)中 ( 见 第 2.4 节)。
2.2.2 特殊功能寄存器
特殊功能寄存器为 CPU 和外设模块用来控制器件进行 所需操作的寄存器 (见表 2-2)。这些寄存器皆为静态 RAM
特殊功能寄存器可分为两类,即:内核和外设。本节将 介绍与 “内核”相关的特殊功能寄存器。与外设模块相 关的特殊功能寄存器将在相应的外设模块功能章节中介 绍。
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 9
PIC16F785/HV785

2-2 PIC16F785/HV785 的数据存储器映射图

文件 文件 文件 文件
(1)
间接寻址
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h PORTA 05h TRISA 85h PORTA 105h TRISA 185h PORTB 06h TRISB 86h PORTB 106h TRISB 186h
PORTC 07h TRISC 87h PORTC 107h TRISC 187h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch
TMR1L 0Eh PCON 8Eh TMR1H 0Fh OSCCON 8Fh T1CON 10h OSCTUNE 90h PWMCON1 110h
TMR2 11h ANSEL0 91h PWMCON0 111h 191h
T2CON 12h PR2 92h PWMCLK 112h
CCPR1L 13h ANSEL1 93h PWMPH1 113h
CCPR1H 14h 94h PWMPH2 114h 194h
CCP1CON 15h WPUA 95h
WDTCON 18h REFCON 98h
ADRESH 1Eh ADRESL 9Eh ADCON0 1Fh ADCON1 9Fh
00h
08h 88h 108h 188h 09h 89h 109h 189h
0Dh 8Dh 10Dh 18Dh
16h IOCA 96h 116h 196h 17h 97h 117h 197h
19h VRCON 99h CM1CON0 119h 199h 1Ah EEDAT 9Ah CM2CON0 11Ah 19Ah 1Bh EEADR 9Bh CM2CON1 11Bh 19Bh 1Ch EECON1 9Ch OPA1CON 11Ch 19Ch
1Dh EECON2
20h
间接寻址
通用寄存器
地址地址 地址 地址
(1)
80h
(1)
9Dh OPA2CON 11Dh 19Dh
A0h
间接寻址
(1)
100h
10Ch PIE1 18Ch
10Eh 18Eh 10Fh 18Fh
115h 195h
118h 198h
11E h 19Eh 11F h 19Fh 120h 1A0h
间接寻址
(1)
180h
190h
192h 193h
通用寄存器
96 字节
6Fh 70h 7Fh FFh 17Fh 1FFh
Bank 0 Bank 1 Bank 2 Bank 3
未实现数据存储器单元,读为 0
1:非物理寄存器。
DS41249D_CN 10 初稿  2006 Microchip Technology Inc.
32 字节
访问
Bank 0
BFh C0h
EFh 16Fh 1EFh F0h
访问
Bank 0
170h
访问
Bank 0
1F0h
PIC16F785/HV785

2-2 PIC16F785/HV785 特殊功能寄存器汇总, BANK 0

地址 名称
Bank 0
00h INDF
01h TMR0
02h PCL
03h STATUS IRP RP1 RP0 TO
04h FSR
05h PORTA
06h PORTB
07h PORTC
08h
09h
0Ah PCLATH
0Bh INTCON GIE PEIE T0IE INTE RAIE T0IF INTF RAIF 0000 0000 17,114
0Ch PIR1
0Dh
0Eh TMR1L
0Fh TMR1H
10h T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
11h
TMR2 Timer2 模块寄存器 0000 0000 55,114
12h
T2CON TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 55,114
13h
CCPR1L
14h
CCPR1H
15h
CCP1CON
16h
17h
18h WDTCON
19h
1Ah
1Bh
1Ch
1Dh
1Eh ADRESH
1Fh ADCON0 ADFM VCFG CHS3 CHS2 CHS1 CHS0 GO/DONE
图注: – = 未实现单元读为 0, u = 不变, x = 未知, q = 取值视具体情况而定,阴影 = 未实现 注 1: 复位后,即使数据锁存值未定义 (POR)或不变 (其他复位),由 ANSEL0 ANSEL1 寄存器控制的具有模拟功能的引脚也会立即读
0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
寻址此单元使用 FSR 的内容寻址数据存储器 (非物理寄存器)
Timer0 模块寄存器
程序计数器 (Program CounterPC)的低位字节
PD ZDCC0001 1xxx 15,114
间接数据存储器地址指针
(1)
(1)
(1)
RA5 RA4 RA3 RA2 RA1 RA0 --x0 x000 35,114
RB7 RB6 RB5 RB4 xx00 ---- 42,114
RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 00xx 0000 45,114
未实现
未实现
EEIF ADIF CCP1IF C2IF C1IF OSFIF TMR2IF TMR1IF 0000 0000 19,114
未实现
16 TMR1 低位字节的保持寄存器
16 TMR1 高位字节的保持寄存器
捕捉 / 比较 /PWM 寄存器 1 低位字节
捕捉 / 比较 /PWM 寄存器 1 高位字节
未实现
未实现
未实现
未实现
未实现
未实现
未实现
左对齐 A/D 结果的高 8 位或右对齐 A/D 结果的高 2 位
DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000
程序计数器高 5 位的写缓冲器
TMR1CS TMR1ON 0000 0000
WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN
ADON 0000 0000
POR/BOR
时的值
xxxx xxxx 22,114 xxxx xxxx 49,114 0000 0000 21,114
xxxx xxxx 22,114
---0 0000 21,114
xxxx xxxx 52,114 xxxx xxxx 52,114
53,114
xxxx xxxx
xxxx xxxx
---0 1000
xxxx xxxx 81,114
58,114
58,114
58,114
122,114
83,114
2006 Microchip Technology Inc. 初稿 DS41249D_CN 11
PIC16F785/HV785

2-3 PIC16F785/HV785 特殊功能寄存器汇总, BANK 1

地址 名称
Bank 1
80h INDF
81h OPTION_REG RAPU
82h PCL
83h STATUS IRP RP1 RP0 TO
84h FSR
85h TRISA
86h TRISB TRISB7 TRISB6 TRISB5 TRISB4
87h TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 45,114
88h
89h
8Ah PCLATH
8Bh INTCON GIE PEIE T0IE INTE RAIE T0IF INTF RAIF 0000 0000 17,114
8Ch PIE1 EEIE ADIE CCP1IE C2IE C1IE OSFIE TMR2IE TMR1IE 0000 0000 18,114
8Dh
8Eh PCON
8Fh OSCCON
90h OSCTUNE
91h ANSEL0 ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 82,114
92h PR2
93h ANSEL1
94h
95h WPUA
96h IOCA
97h
98h REFCON
99h VRCON C1VREN C2VREN VRR
9Ah EEDAT EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 EEDAT1 EEDAT0 0000 0000 103,114
9Bh EEADR EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0 0000 0000 103,114
9Ch EECON1
9Dh EECON2
9Eh ADRESL
9Fh ADCON1
图注: – = 未实现单元读为 0, u = 不变, x = 未知, q = 取值视具体情况而定,阴影 = 未实现 注 1: 双速启动且选取 LPXT HS 为振荡器模式时,或者故障保护模式使能时,该位将复位为 0,否则将复位为 1。
2: 当 MCLRE 在配置字中设置为 1 时, RA3 上拉使能。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
寻址此单元使用 FSR 的内容寻址数据存储器 (非物理寄存器)
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 16,114
程序计数器 (PC)的低位字节
PD ZDCC0001 1xxx 15,114
间接数据存储器地址指针
TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 35,114
1111 ---- 42,114
未实现
未实现
未实现
SBOREN —PORBOR ---1 --qq 20,114
IRCF2 IRCF1 IRCF0 OSTS — TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 28,114
Timer2 模块周期寄存器
ANS11 ANS10 ANS9 ANS8 ---- 1111 82,114
未实现
WPUA5 WPUA4 WPUA3
IOCA5 IOCA4 IOCA3 IOCA2 IOCA1 IOCA0 --00 0000 37,114
未实现
BGST VRBB VREN VROE CVROE --00 000- 72,114
WRERR WREN WR RD ---- x000 104,114
EEPROM 控制寄存器 2 (不是实际存在的寄存器)
左对齐 A/D 结果的低 2 位或右对齐 A/D 结果的低 8
ADCS2 ADCS1 ADCS0 -000 ---- 84,114
程序计数器高 5 位的写缓冲器
(1)
HTS LTS SCS -110 q000 33,114
(2)
WPUA2 WPUA1 WPUA0 --11 1111 36,114
VR3 VR2 VR1 VR0 000- 0000 71,114
POR/BOR
时的值
xxxx xxxx 22,114
0000 0000 21,114
xxxx xxxx 22,114
---0 0000 21,114
1111 1111 55,114
---- ---- 104,114
xxxx xxxx 81,114
DS41249D_CN 12 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

2-4 PIC16F785/HV785 特殊功能寄存器汇总, BANK 2

地址 名称
Bank 2
100h INDF
101h TMR0
102h PCL
103h STATUS IRP RP1 RP0 TO
104h FSR
105h PORTA
106h PORTB
107h PORTC
108h
109h
10Ah PCLATH
10Bh INTCON GIE PEIE T0IE INTE RAIE T0IF INTF RAIF 0000 0000 17,114
10Ch
10Dh
10Eh
10Fh
110h
PWMCON1 COMOD1 COMOD0 CMDLY4 CMDLY3 CMDLY2 CMDLY1 CMDLY0 -000 0000 101,114
111h
PWMCON0 PRSEN PASEN BLANK2 BLANK1 SYNC1 SYNC0 PH2EN PH1EN 0000 0000 93,114
112h
PWMCLK PWMASE PWMP1 PWMP0 PER4 PER3 PER2 PER1 PER0 0000 0000 94,114
113h PWMPH1 POL C2EN C1EN PH4 PH3 PH2 PH1 PH0 0000 0000 95,114
114h PWMPH2 POL C2EN C1EN PH4 PH3 PH2 PH1 PH0 0000 0000 96,114
115 h
116 h
117 h
118 h
119h CM1CON0 C1ON C1OUT C1OE C1POL C1SP C1R C1CH1 C1CH0 0000 0000 65,114
11Ah CM2CON0 C2ON C2OUT C2OE C2POL C2SP C2R C2CH1 C2CH0 0000 0000 67,114
11Bh CM2CON1 MC1OUT MC2OUT
11Ch OPA1CON OPAON
11Dh OPA2CON OPAON
11E h
11F h
图注: – = 未实现单元读为 0, u = 不变, x = 未知, q = 取值视具体情况而定,阴影 = 未实现 注 1: 复位后,即使数据锁存值未定义 (POR)或不变 (其他复位),由 ANSEL0 ANSEL1 寄存器控制的具有模拟功能的引脚也会立即读为
0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
寻址此单元使用 FSR 的内容寻址数据存储器 (不是实际存在的寄存器)
Timer0 模块寄存器
程序计数器 (PC)的低位字节
PD ZDCC0001 1xxx 15,114
间接数据存储器地址指针
(1)
(1)
(1)
RA5 RA4 RA3 RA2 RA1 RA0 --x0 x000 35,114
RB7 RB6 RB5 RB4 xx00 ---- 42,114
RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 00xx 0000 45,114
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
0--- ---- 76,114
0--- ---- 76,114
未实现
未实现
程序计数器高 5 位的写缓冲器
T1GSS C2SYNC 00-- --10 68,114
POR/BOR
时的值
xxxx xxxx 22,114 xxxx xxxx 49,114 0000 0000 21,114
xxxx xxxx 22,114
---0 0000 21,114
2006 Microchip Technology Inc. 初稿 DS41249D_CN 13
PIC16F785/HV785

2-5 PIC16F785/HV785 特殊功能寄存器汇总, BANK 3

地址 名称
Bank 3
180h INDF
181h OPTION_REG RAPU
182h PCL
183h STATUS IRP RP1 RP0 TO
184h FSR
185h TRISA
186h TRISB TRISB7 TRISB6 TRISB5 TRISB4
187h TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 45,114
188h
189h
18Ah PCLATH
18Bh INTCON GIE PEIE T0IE INTE RAIE T0IF INTF RAIF 0000 0000 17,114
18Ch PIE1 EEIE ADIE CCP1IE C2IE C1IE OSFIE TMR2IE TMR1IE 0000 0000 18,114
18Dh
18Eh
18Fh
190h
191h
192h
193h
194h
195h
196h
197h
198h
199h
19Ah
19Bh
19Ch
19Dh
19Eh
19Fh 图注: – = 未实现单元读为 0u = 不变, x = 未知, q = 取值视具体情况而定,阴影 = 未实现
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
寻址此单元使用 FSR 的内容寻址数据存储器 (不是实际存在的寄存器)
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 16,114
程序计数器 (PC)的低位字节
PD ZDCC0001 1xxx 15,114
间接数据存储器地址指针
TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 36,114
1111 ---- 42,114
未实现 未实现
未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现 未实现
程序计数器高 5 位的写缓冲器
POR/BOR
时的值
xxxx xxxx 22,114
0000 0000 21,114
xxxx xxxx 22,114
---0 0000 21,114
DS41249D_CN 14 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785
2.2.2.1 STATUS 寄存器
状态(STATUS)寄存器包含 ALU 的算术运算结果状态 位、复位状态位以及数据存储器 (SRAM)的存储区选 择位。
状态寄存器与其他寄存器一样,可作为任何指令的目标 寄存器。如果一条影响 ZDC C 位的指令以状态寄 存器为目标寄存器,那么对这三个位的写操作将被禁 止。这些位根据器件逻辑来置 1 或清零。而且, TO
PD
标志位均为不可写位。因此,当执行一条将状态寄
存器作为目标寄存器的指令时,运行结果可能会与预想 的不同。
例如,指令 CLRF STATUS 将会清除状态寄存器中的高 三位,并将 Z 标志位置 1。这将使状态寄存器中的值成 为“000u u1uu”(其中 u = 不变)。
因此,若要改变状态寄存器的值,建议使用 BCFBSF、 SWAPFMOVWF指令,因为这些指令将不会影响任何状 态位。关于其他不会影响状态位的指令,请参见第 17.0 节 “指令集汇总”。
注: 在减法运算时,C 和 DC 位分别作为借位位
和半借位 令中的示例。
位。请参见 SUBLW SUBWF

寄存器 2-1: STATUS:状态寄存器 (地址:03h、 83h、 103h 或 183h)

R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
IRP RP1 RP0 TO PD ZDC
bit 7 bit 0
bit 7
bit 6-5
bit 4
bit 3
bit 2
bit 1
bit 0
IRP:寄存器存储区选择位 (用于间接寻址)
1 = Bank 2,3 100h 1FFh 0 = Bank 0,1 00h FFh
RP<1:0>:寄存器存储区选择位 (用于直接寻址)
11 = Bank 3 180h 1FFh 10 = Bank 2 100h 17Fh 01 = Bank 1 80h FFh 00 = Bank 0 00h 7Fh
TO
:超时位
1 = 在上电复位、执行 CLRWDT SLEEP 指令后 0 = 产生了 WDT 超时
PD:掉电位
1 = 上电或执行 CLRWDT 指令后 0 = 执行 SLEEP 指令
Z:零标志位
1 = 算术运算或者逻辑运算的结果是 0 0 = 算术运算或者逻辑运算的结果不是 0
DC:半进位 / 借位 对于借位
1 = 运算结果的低 4 位向高 4 位产生进位 0 = 运算结果的低 4 位向高 4 位没有产生进位
C:进位 / 借位
1 = 运算结果产生来自最高位的进位 0 = 运算结果没有产生来自最高位的进位
,极性相反。
位(ADDWF、 ADDLW、 SUBLW 和 SUBWF 指令)
位(ADDWF、 ADDLW、 SUBLW 和 SUBWF 指令)
(1)
(1)
(1)
(1)
C
1: 对于借位,极性相反。减法操作的执行是通过加上第二个操作数的二进制补码
Two's Complement)来实现的。对于移位指令 (RRF RLF),是把源寄存器的
最高位或最低位放入 C 中。
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 15
PIC16F785/HV785
2.2.2.2 OPTION_REG 寄存器
选项 (Option)寄存器是可读写寄存器,包括各种用以 配置 TMR0/WDT 预分频比、外部 RA2/INT 中断、TMR0PORTA 上的弱上拉的控制位。

寄存器 2-2: OPTION_REG:选项寄存器 (地址:81h 或 181h)

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
RAPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
bit 7 bit 0
注: 要使 TMR0 获得 1:1 的预分频比,可将 PSA
位(OPTION_REG<3>)置为 1,以将预 分频器分配给 WDT。请参见第 5.4 节“预 分频器”。
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2-0 PS<2:0>:预分频比选择位
RAPU
PORTA 上拉使能位
1 = 禁止 PORTA 上拉 0 = 通过 WPUA 寄存器中单独的端口锁存值使能 PORTA 上拉
INTEDG:中断触发边沿选择位
1 = RA2/AN2/T0CKI/INT/C1OUT 引脚的上升沿触发中断 0 = RA2/AN2/T0CKI/INT/C1OUT 引脚的下降沿触发中断
T0CSTMR0 时钟源选择位
1 = RA2/AN2/T0CKI/INT/C1OUT 引脚上的电平跳变 0 = 内部指令周期时钟 (CLKOUT
T0SETMR0 信号源边沿选择位
1 = RA2/AN2/T0CKI/INT/C1OUT 引脚信号从高至低跳变时,递增计数 0 = RA2/AN2/T0CKI/INT/C1OUT 引脚信号从低至高跳变时,递增计数
PSA:预分频器分配控制位
1 = 预分频器分配给 WDT 0 = 预分频器分配给 Timer0 模块
位值 TMR0 比率 WDT 比率
000 001 010 011 100 101 110 111
1 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : 128 1 : 256
(1)
1 : 1 1 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : 128
1PIC16F785/HV785 有一个专用的 16 WDT 后分频器。更多信息,请参见第 15.5
节 “看门狗定时器 (WDT)”。
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
DS41249D_CN 16 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785
2.2.2.3 INTCON 寄存器
中断控制 (INTCON)寄存器是可读写的寄存器,包含 TMR0 寄存器溢出、PORTA 电平变化和外部 RA2/INT 脚中断等各种使能控制位和标志位。
注: 当中断条件满足时,无论相应中断允许位
或全局中断允许位 GIEINTCON<7>)的 状态如何,中断标志位都将被置 1。用户程 序应确保在重新允许中断之前,相应的中 断标志位已被清零。

寄存器 2-3: INTCON:中断控制寄存器 (地址:0Bh、 8Bh、 10Bh 或 183h)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
GIE PEIE T0IE INTE RAIE
bit 7 bit 0
GIE:全局中断允许位
1 = 允许所有非屏蔽中断 0 = 禁止所有中断
PEIE:外设中断允许位
1 = 允许所有非屏蔽外设中断 0 = 禁止所有外设中断
T0IETMR0 溢出中断允许位
1 = 允许 TMR0 中断 0 = 禁止 TMR0 中断
INTERA2/AN2/T0CKI/INT/C1OUT 外部中断允许位
1 = 允许 RA2/AN2/T0CKI/INT/C1OUT 外部中断 0 = 禁止 RA2/AN2/T0CKI/INT/C1OUT 外部中断
RAIE PORTA 电平变化中断允许位
1 = 允许 PORTA 电平变化中断 0 = 禁止 PORTA 电平变化中断
T0IFTMR0 溢出中断标志位
1 = TMR0 寄存器溢出 (必须用软件清零) 0 = TMR0 寄存器没有溢出
INTF RA2/AN2/T0CKI/INT/C1OUT 外部中断标志位
1 = RA2/AN2/T0CKI/INT/C1OUT 外部中断已经发生 (必须用软件清零) 0 = RA2/AN2/T0CKI/INT/C1OUT 外部中断没有发生
RAIF PORTA 电平变化中断标志位
1 = 至少有一个 PORTA<5:0> 引脚状态发生变化时 (必须用软件清零) 0 = PORTA <5:0> 引脚状态均未发生变化
1IOCA 寄存器也必须被使能。
2: 当 Timer0 计数出现计满返回时, T0IF 位将被置 1Timer0 计数值在复位时不变,
而且应在清零 T0IF 位之前被初始化。
(1)
(2)
(1)
T0IF
(2)
INTF RAIF
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 17
PIC16F785/HV785
2.2.2.4 PIE1 寄存器
外设中断允许寄存器 1 包含中断允许位,如寄存器 2-4 所示。

寄存器 2-4: PIE1:外设中断允许寄存器 1 (地址:8Ch)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
EEIE ADIE CCP1IE C2IE C1IE OSFIE TMR2IE TMR1IE
bit 7 bit 0
注: 必须将 PEIE INTCON<6>)位置 1,以
允许外设中断。
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
EEIEEE 写完成中断允许位
1 = 允许 EE 写完成中断 0 = 禁止 EE 写完成中断
ADIEA/D 转换器中断允许位
1 = 允许 A/D 转换器中断 0 = 禁止 A/D 转换器中断
CCP1IE CCP1 中断允许位
1 = 允许 CCP1 中断 0 = 禁止 CCP1 中断
C2IE:比较器 2 中断允许位
1 = 允许比较器 2 中断 0 = 禁止比较器 2 中断
C1IE:比较器 1 中断允许位
1 = 允许比较器 1 中断 0 = 禁止比较器 1 中断
OSFIE:振荡器故障中断允许位
1 = 允许振荡器故障中断 0 = 禁止振荡器故障中断
TMR2IE TMR2 PR2 匹配中断允许位
1 = 允许 Timer2 PR2 匹配中断 0 = 禁止 Timer2 PR2 匹配中断
TMR1IE Timer1 溢出中断允许位
1 = 允许 Timer1 溢出中断 0 = 禁止 Timer1 溢出中断
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
DS41249D_CN 18 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785
2.2.2.5 PIR1 寄存器
外设中断 (PIR1)寄存器包含中断标志位,如寄存器 2-5 所示。

寄存器 2-5: PIR1:外设中断寄存器 1 (地址:0Ch)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
EEIF ADIF CCP1IF C2IF C1IF OSFIF TMR2IF TMR1IF
bit 7 bit 0
注: 当中断条件满足时,无论相应中断允许位
或全局中断允许位 GIEINTCON<7>)的 状态如何,中断标志位都将被置 1。用户程 序应确保在重新允许中断之前,相应的中 断标志位已被清零。
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
EEIFEEPROM 写操作中断标志位
1 = 写操作完成 (必须用软件清零) 0 = 写操作未完成或尚未开始
ADIF A/D 中断标志位
1 = A/D 转换完成 0 = A/D 转换未完成或尚未开始
CCP1IF CCP1 中断标志位 捕捉模式
1 = TMR1 寄存器发生捕捉中断 (必须用软件清零) 0 = TMR1 寄存器未发生捕捉中断
比较模式:
1 = TMR1 寄存器发生比较匹配中断 (必须用软件清零) 0 = TMR1 寄存器未发生比较匹配中断
PWM
在此模式中未使用。 C2IF 比较器 2 中断标志位
1 = 比较器 2 输出已经改变 (必须用软件清零) 0 = 比较器 2 输出没有变化
C1IF比较器 1 中断标志位
1 = 比较器 1 输出已经改变 (必须用软件清零) 0 = 比较器 1 输出没有变化
OSFIF振荡器故障中断标志位
1 = 系统振荡器发生故障,时钟输入切换至 INTOSC (必须用软件清零) 0 = 系统时钟工作正常
TMR2IF TMR2 PR2 匹配中断标志位
1 = 发生 TMR2 PR2 匹配中断 (必须用软件清零) 0 = 未发生 Timer2 PR2 匹配中断
TMR1IF Timer1 溢出中断标志位
1 = Timer1 寄存器溢出 (必须用软件清零) 0 = Timer1 未溢出
模式:
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 19
PIC16F785/HV785
2.2.2.6 PCON 寄存器
电源控制(PCON)寄存器包含用以区分上电复位
POR)、欠压复位 (BOR)、看门狗定时器 (WDT
复位 (WDT)以及外部 MCLR 复位的标志位。

寄存器 2-6: PCON:电源控制寄存器 (地址:8Eh)

U-0 U-0 U-0 R/W-1 U-0 U-0 R/W-0 R/W-x
SBOREN
bit 7 bit 0
(1)
—PORBOR
bit 7-5
bit 4
bit 3-2
bit 1
bit 0
未实现:读为 0 SBOREN:软件 BOR 使能位
1 = 使能 BOR 0 = 禁止 BOR
未实现:读为 0
POR
:上电复位状态位
1 = 无上电复位发生 0 = 发生上电复位 (上电复位发生后,必须用软件置 1
:欠压复位状态位
BOR
1 = 无欠压复位发生 0 = 发生欠压复位 (欠压复位发生后,必须用软件置 1
1: 配置字中的 BOREN<1:0> = 01 时,该位控制 BOR
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
(1)
DS41249D_CN 20 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

2.3 PCL PCLATH

程序计数器 (PC)指定取指令并执行的地址。程序计 数器(PC)为 13 位宽。其低位称为 PCL 寄存器。PCL 寄存器是可读写的寄存器。PC 的高位(PC<12:8>)称 为 PCH 寄存器。该寄存器包含的 PC<12:8> 位不能直 接读写。对 PCH 寄存器的所有更新必须通过 PCLATH 寄存器。
只要发生复位,PC 就将被清零。图 2-3 显示了装载 PC 值的两种情形。图 2-3 上方的例子说明在写 PCL
PCLATH<4:0> PCH)时是如何装载 PC 的。图 2-3
下方的例子说明了在执行 CALL 或 GOTO 指令期间
PCLATH<4:3> PCH),是如何装载 PC 的。
2.3.1 修改 PCL
PCL 寄存器作为目标寄存器执行任何指令,会同时使 程序计数器 PC<12:8> 位(PCH)被 PCLATH 寄存器 的内容所取代。这使得可通过先将所需的高 5 位数据写 入 PCLATH 寄存器,来改变程序计数器的整个内容。当 低 8 位随后被写入 PCL 寄存器时,程序计数器的所有 13 位将更改为 PCLATH 寄存器包含的值以及写入 PCL 寄存器中的值。
计算 GOTO 指令是通过向程序计数器加入偏移量
ADDWF PCL)来实现的。当通过修改 PCL 寄存器跳
转到查找表或程序分支表 (计算 GOTO)时,应格外小 心。假设将 PCLATH 设置为表的起始地址,如果表的长 度大于 255 条指令,或存储器地址的低 8 位在表的中间 从 0xFF 返回 0x00,则在表中的表开始和目标单元之间 每次发生地址返回时, PCLATH 均必须递增。
更多信息,请参见应用笔记 AN556 Implementing a
Table Read”( DS00556)。
2.3.2 程序存储器页
CALLGOTO指令提供了11 位地址,以允许在任何2K 序存储器页内跳转。使用 CALL GOTO 指令时,地址 的最高有效位由 PCLATH<4:3> (页选择位)提供。使CALL GOTO 指令时,用户必须确保已对页选择位 编程,以便寻址时访问到所需的目标程序存储器页。执 行 CALL 指令(或中断)时,PC 返回地址的全部 13
压入 (
都将被 栈中
弹出 (
要对 PCLATH<4:3> 位进行操作。
PUSH)堆栈。因此,对于 (将地址从堆
POP)的) RETURN RETFIE 指令,不需

2-3 不同情况下 PC 的装载

PCH PCL
12 8 7 0
PC
PCLATH<4:0>
5
PCLATH
PCH PCL
12 11 10 0
PC
2
87
PCLATH<4:3>
PCLATH
11
8
PCL 为目标 寄存器的指令
ALU 运算结果
GOTO, CALL
操作码 <10:0>
2.3.3 堆栈
PIC16F785/HV785 系列具有 8 级深 x 13 位宽的硬件
堆栈(见图 2-1)。堆栈空间既不占用程序存储区空间, 也不占用数据存储区空间,而且堆栈指针是不可读写 的。当执行 CALL 指令或当中断导致程序跳转时,PC 值 将被压入堆栈。而在执行 RETURNRETLW RETFIE 指令时,堆栈中的断点地址将从堆栈中弹出到 PC 中。 PCLATH 不受 PUSH POP 操作的影响。
堆栈的工作原理犹如循环缓冲区。这意味着当堆栈压栈 8 次后,第 9 次压栈的数值将会覆盖第一次压栈时所保 存的数值,而第十次压栈数值将覆盖第二次压栈时保存 的数值,以后依次类推。
1: 不存在指明堆栈是否上溢或下溢的状态标
志位。
2: 不存在被称为 PUSH POP 的指令 / 助记
符。堆栈的压入或弹出是源于执行了 CALLRETURN、RETLW 和 RETFIE 指令, 或源于指向中断向量地址。
2006 Microchip Technology Inc. 初稿 DS41249D_CN 21
PIC16F785/HV785

2.4 间接寻址、 INDF FSR 寄存器

INDF 寄存器不是实际存在的寄存器,对 INDF 寄存器进 行寻址将产生间接寻址。
使用 INDF 寄存器可进行间接寻址。任何使用 INDF 寄 存器的指令,实际上是对文件选择寄存器(FSR)所 指 向的数据进行存取。间接对 INDF 进行读操作将返回 00h。间接对 INDF 寄存器进行写操作将导致空操作(尽 管可能会影响状态标志位)。通过将 8 位的 FSR 寄存器 与 IRP 位( STATUS<7>)进行组合可得到一个有效的 9 位地址,如图 2-4 所示。

2-4:直/ 间接寻址 PIC16F785/HV785

RP1
RP0
存储区选择 存储单元选择
6
来自操作码
00H
0
00 01 10 11
2-1 给出了一个使用间接寻址将 RAM 地址单元 20h­2Fh 清零的简单程序。

2-1 间接寻址

MOVLW 0x20 ;initialize pointer MOVWF FSR ;to RAM
NEXT CLRF INDF ;clear INDF register
CONTINUE ;yes continue
INCF FSR ;increment pointer BTFSS FSR,4 ;all done? GOTO NEXT ;no clear next
间接寻址 直接寻址
IRP
存储区选择
180H
7
文件选择寄存器
存储单元选择
0
数据存储器
7FH
Bank 0 Bank 1 Bank 2 Bank 3
注: 关于存储器映射图的详细信息,请参见图 2-2
1FFH
DS41249D_CN 22 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785

3.0 时钟源

3.1 概述

PIC16F785/HV785 器件具有多种时钟源和选择特性, 广泛使用于各种应用中,同时最大限度地发挥应用性能 并降低功耗。图 3-1 PIC16F785/HV785 时钟源的框 图。
时钟源可配置为来自外部振荡器、石英晶体谐振器、陶 瓷谐振器以及阻容 (Resistor-CapacitorRC)电路。 此外,系统时钟源可配置为两个内部振荡器之一,并通 过软件来选择速度。其他时钟特性包括:
可通过软件选择外部或内部系统时钟源。
双速时钟启动模式,最大限度地缩短外部振荡器起
振与代码执行之间的延时。
故障保护时钟监控器 (Fail-Safe Clock Monitor FSCM),用来检测外部时钟源 (LP、 XT、 HS、 EC RC 模式)故障以及切换到内部振荡器。

3-1 PIC16F785/HV785 时钟源框图

外部振荡器
OSC2
PIC16F785/HV785 可配置为以下 8 种时钟模式之一。
1. EC——外部时钟, I/O RA4 上。
2. LP——32.768 kHz 监视晶振或陶瓷谐振振荡器
模式。
3. XT——中等增益晶振或陶瓷谐振振荡器模式。
4. HS——高增益晶振或陶瓷谐振器模式。
5. RC——外部阻容(RC),F
OSC/4 输出到 RA4
6. RCIO——外部阻容, I/O RA4 上。
7. INTOSC——内部振荡器,F
OSC/4 输出到 RA4
I/O RA5 上。
8. INTOSCIO——内部振荡器,I/O RA4 RA5
上。
通过配置字寄存器的 FOSC<2:0> 位来配置时钟源模式
(见第15.0节“CPU的特殊功能”)。一旦对PIC16F785/
HV785 进行编程且配置了时钟源模式,则无法在软件中 进行更改。
FOSC<2:0>
(配置字)
SCS
OSCCON<0>
OSC1
内部振荡器
HFINTOSC
8 MHz
LFINTOSC
31 kHz
休眠
后分频器
IRCF<2:0>
OSCCON<6:4>
8 MHz
4 MHz
2 MHz
1 MHz
500 kHz
250 kHz
125 kHz
31 kHz
111 110 101 100
011 010 001 000
LP, XT, HS, RC, RCIO, EC
MUX
MUX
上电延时定时器(PWRT) 看门狗定时器(WDT) 故障保护时钟监控器(FSCM
系统时钟
CPU 和外设)
2006 Microchip Technology Inc. 初稿 DS41249D_CN 23
PIC16F785/HV785

3.2 时钟源模式

时钟源模式可分为外部和内部模式。
外部时钟模式依靠外部电路提供时钟源。例如,振 荡器模块 (EC 模式)、石英晶体谐振器或陶瓷谐 振器 (LPXT HS 模式)以及阻容 (RC 模 式)电路。
内部时钟源内置于 PIC16F785/HV785 中。 PIC16F785/HV785 有两个内部振荡器,一个是 8 MHz 高频内部振荡器 (HFINTOSC),另一个
31 kHz 低频内部振荡器 (LFINTOSC)。
可通过系统时钟选择(SCS)位,在外部或内部时钟源 之间选择系统时钟 (见第 3.5 节 “时钟切换”)。

3.3 外部时钟模式

3.3.1 振荡器起振定时器 (OST
如果 PIC16F785/HV785 配置为任何一种晶体振荡器模 式(LP、 XT 或 HS),将使能振荡器起振定时器
OST) ,该定时器可延长复位周期以使振荡器有更长
的稳定时间。在上电复位 (POR)或从休眠中唤醒后, 或上电延时定时器 (PWRT)到期 (如果 PWRT 被使 能)后,OST 对来自 OSC1 引脚的振荡计数 1024 次。 在此期间,程序计数器不递增,程序执行暂停。OST 确 保使用石英晶体谐振器或陶瓷谐振器的振荡器电路已经 启动并向 PIC16F785/HV785 提供稳定的系统时钟信 号。表 3-1 给出了执行振荡器延时的例子。
为了使外部振荡器起振和代码执行之间的延时最小,可 选择双速时钟启动模式(见第 3.6 节“双速时钟启动模 式”)。

3-1 振荡器延时示例

切换自 切换到 频率 振荡器延时 说明
休眠 /POR
休眠
LFINTOSC
31 kHz
休眠 /POR
LFINTOSC
31 kHz
15 µs 到 10 µs 起振延时是基于 1 MHz 系统时钟的。
INTRC
INTOSC
EC, RC
EC, RC
LP, XT, HS
INTOSC
31 kHz
125 kHz 8 MHz
DC 20 MHz DC 20 MHz
31 kHz 20 MHz 1024 个时钟周期
125 kHz 8 MHz 1 µs (近似值)
5 µs-10 µs (近似值)
CPU 启动
OST
(1)
从休眠模式唤醒或 POR 后, CPU 被启动,以 便作好执行代码的准备。
3.3.2 EC 模式
外部时钟 (EC)模式允许外部产生的逻辑电平作为系 统时钟源。工作在此模式下时,外部时钟源连接到
OSC1 引脚, RA4 引脚可用作通用 I/O。图 3-2 给出了 EC 模式的引脚连接。
当选取 EC 模式时,振荡器起振定时器 (OST)被禁 止。因此,上电复位(POR)后或者从休眠中唤醒后的 操作不存在延时。因为 PIC16F785/HV785 的设计是全 静态的,停止外部时钟输入将使器件暂停工作并保持所 有数据完整。当再次启动外部时钟时,器件恢复工作, 就好像没有停止过一样。

3-2:外EC)模式的工作原理

来自外部 系统的时钟
RA4
OSC1/CLKIN
PIC16F785/HV785
I/O(OSC2)
DS41249D_CN 24 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785
3.3.3 LPXT HS 模式
LPXT HS 模式支持连接到 OSC1 OSC2 引脚的
石英晶体谐振器或陶瓷谐振器的使用 (图 3-1)。模式 选择内部反相放大器的低、中或高增益设定,以支持各 种谐振器类型及速度。
LP振荡器模式选择内部反相放大器的最低增益设定。LP 模式的电流消耗在三种模式中最小。该模式较适用于驱 动具备低驱动电平规格要求的谐振器,例如,音叉
Tuning Fork)式晶振。
XT 振荡器模式选择内部反相放大器的中等增益设定。 XT 模式的电流消耗在三种模式中居中。该模式较适用 于驱动具备中等驱动电平规格要求的谐振器,例如,AT 切割石英晶体谐振器。
HS 振荡器模式选择内部反相放大器的最高增益设定。 HS 模式的电流消耗在三种模式中最大。该模式较适用 于驱动需要高驱动设定的谐振器,例如,AT 切割石英晶 体谐振器或陶瓷谐振器。
3-3 和图 3-4 分别给出了石英晶体谐振器和陶瓷谐振 器的典型电路。
3-3 石英晶振的工作原理 (LPXT
HS 模式)
C1
C2
石英 晶振
R
OSC1
OSC2
(1)
S
PIC16F785/HV785
(2)
RF
休眠
至内部 逻辑
3-4 陶瓷谐振器的工作原理 (XT HS
模式)
OSC1
C1
(3)
RP
OSC2
(1)
R
C2
陶瓷 谐振器
1:对于低驱动电平的陶瓷谐振器,可能需要串联
一个电阻 (R
2R
2 M10 M之间)。
3:对于适当的陶瓷谐振器工作,可能需要并联一
个反馈电阻 (R
S
S)。
F 的值随选取的振荡模式而变化 (典型值在
P)(典型值 1 M)。
PIC16F785/HV785
(2)
RF
休眠
至内部 逻辑

3-2 陶瓷谐振器

模式 频率 OSC1 C1
XT 455 kHz
2.0 MHz
HS 4.0 MHz
8.0 MHz
16.0 MHz
68-100 pF
15-68 pF
10-68 pF 15-68 pF 10-22 pF
注: 这些值仅供设计参考。请参见表格下方的
注。
OSC2
C2
68-100 pF
15-68 pF
10-68 pF 15-68 pF 10-22 pF
1: 对于低驱动电平的石英晶振,可能需要串联
一个电阻 (R
F 的值随选取的振荡模式而变化(典型值在
2R
2 M10 M之间)。
S)。
1: 石英晶振的特性随类型、封装和制造商而
变化。要了解规范值和推荐应用,应查阅制 造商提供的数据手册。
2: 应始终验证振荡器在应用预期的 V
DD 和温
度范围内的性能。
2006 Microchip Technology Inc. 初稿 DS41249D_CN 25
PIC16F785/HV785

3-3 晶体振荡器的电容选择

振荡器类型
晶振 频率
电容范围
C1
LP 32 kHz 15-33 pF 15-33 pF
XT 200 kHz 47-68 pF 47-68 pF
1 MHz 15-33 pF 15-33 pF
4 MHz 15-33 pF 15-33 pF
HS 4 MHz 15-33 pF 15-33 pF
8 MHz 15-33 pF 15-33 pF
20 MHz 15-33 pF 15-33 pF
注: 这些值仅供设计参考。请参见表格下方的
注。
1:较大的电容可以提高振荡器的稳定性,但
也延长了起振时间。
2: 由于每种谐振器/晶振都有其自身的特性,
用户应向谐振器 / 晶振制造商咨询有关外 部元件的适当值。
3: 可能需要 R
S 避免对具有低驱动电平参数
的晶体造成过驱动。
电容范围
C2
3.3.4 外部 RC 模式
外部阻容 (RC)模式支持使用外部 RC 电路。对时钟 精度要求不高时,这使设计人员有了很大的频率选择空 间,且保持成本最低。有 RC RCIO 两种模式。
RC 模式下, RC 电路连接到 OSC1 引脚。 OSC2/ CLKOUT 引脚输出为 RC 振荡器频率的 4 分频。该信号 可用来为外部电路、同步、校准、测试或其他应用需求 提供时钟。图 3-5 给出了 RC 模式的连接图。
RCIO 模式下, RC 电路连接到 OSC1 引脚。 OSC2 引脚成为额外的通用 I/O 引脚。I/O 引脚成为 PORTA 的 bit 4 RA4)。图 3-6 给出了 RCIO 模式的连接图。

3-6 RCIO 模式

VDD
REXT
OSC1
CEXT
VSS
建议值: 3 k R
RA4
10 kΩ ≤ R C
EXT > 20 pF
I/O(OSC2)
EXT 100 kVDD 3.0V
EXT 100 kVDD < 3.0V
PIC16F785/HV785
RC 振荡器频率是供电电压、电阻(REXT)和电容
CEXT)值以及工作温度的函数。除此之外,由于门限
电压的正常差异,每个器件的振荡器频率也会变化。而 且,不同封装形式之间引线框电容的不同也将影响振荡 器频率, C
EXT 值较小时也是如此。用户还应考虑因所
使用的外部 RC 元件的容差而导致的差异。
内部时钟

3-5 RC 模式

VDD
REXT
OSC1
CEXT
VSS
F
建议值: 3 kΩ ≤ REXT ≤ 100 kΩ(VDD 3.0V)
DS41249D_CN 26 初稿  2006 Microchip Technology Inc.
OSC2/CLKOUT
OSC/4
10 kΩ ≤ L 100 k(V C
EXT > 20 pF
PIC16F785/HV785
内部
时钟
DD < 3.0V
PIC16F785/HV785

3.4 内部时钟模式

PIC16F785/HV785 有两个独立的内部振荡器,可配置 或选取为系统时钟源。
1. HFINTOSC (高频内部振荡器)在出厂时已校 准,工作频率为 8 MHz。使 用 OSCTUNE 寄存器
(寄存器 3-1),可通过软件调整 HFINTOSC
频率,调整范围为 ±12%
2. LFINTOSC (低频内部振荡器)未经校准,工作 频率约为 31 kHz
使用内部振荡器频率选择 (IRCF)位,可用软件来选 择系统时钟速度。
可通过系统时钟选择(SCS)位,在外部或内部时钟源 之间选择系统时钟 (见第 3.5 节 “时钟切换”)。
3.4.1 INTRC INTRCIO 模式
当在配置字(寄存器 12-1)中使用振荡器选择(FOSC) 位对器件进行设置时,在 INTRC INTRCIO 模式下将 内部振荡器配置为系统时钟源。
INTRC 模式下,OSC1 引脚可用作通用 I/OOSC2/
CLKOUT 引脚输出所选内部振荡器频率的 4 分频。 CLKOUT 信号可用来为外部电路、同步、校准、测试或
其他应用需求提供时钟。
INTRCIO 模式下, OSC1 OSC2 引脚可用作通用
I/O
3.4.2.1 校准位
8 MHz 高频内部振荡器(HFINTOSC)在出厂时已校准。 HFINTOSC 校准位存储在程序存储器存储单元为 2008h
的校准字(CALIB)中。使 用 “PIC16F785/HV785 Memory Programming Specification”(DS41237)中指
定的批量擦除序列时,校准字不会被擦除,因此也不需 要编程。关于校准字寄存器的更多信息,请参见
PIC16F785/HV785 Memory Programming
Specification”(DS41237)。
注: 地址 2008h 超出了用户程序存储器空间范
围。它属于 特殊配置存储器空间 (2000h- 3FFFh),只能在编程时对其进行访问。更 多信息,请参见“PIC16F785/HV785 Memory Programming Specification
DS41237)。
3.4.2 HFINTOSC
高频内部振荡器 (HFINTOSC)是出厂时已校准的 8 MHz 内部时钟源。使用 OSCTUNE 寄存器(寄存器 3-1), 可通过软件调整 HFINTOSC 的频率,调整范围约为 ±12%
HFINTOSC 的输出连接到后分频器和多路复用器 (见
3-1)。使 用 IRCF 位,可通过软件选择七种频率之一
(见第 3.4.4 节 “频率选择位 (IRCF)”)。
通过选择8 MHz 125 kHz之间的任一频率(IRCF 000) 作为系统时钟源 (SCS = 1) ,或当双速启动使能
IESO = 1 IRCF 000)时,HFINTOSC 将被使能。
HF 内部振荡器 (HTS)位 (OSCCON<2>)指 明 HFINTOSC 是否稳定。
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 27
PIC16F785/HV785
3.4.2.2 OSCTUNE 寄存器
HFINTOSC 在出厂时已校准,但可通过在软件中写入 OSCTUNE 寄存器 (寄存器 3-1)来进行调节。
OSCTUNE 寄存器标称调节范围为 ±12%OSCTUNE
寄存器的缺省值为 0。该值是一个 5 位的二进制补码。 由于制造工艺的差异,可能无法确定单调性和频率步 进。
OSCTUNE 不影响 LFINTOSC 频率。依赖于 LFINTOSC 时钟源频率的功能,如上电延时定时器 (PWRT)、看 门狗定时器 (WDT)、故障保护时钟监控器 (FSCM) 以及外设等,其工作

寄存器 3-1 OSCTUNE:振荡器调节寄存器 (地址:90h

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
TUN4 TUN3 TUN2 TUN1 TUN0
bit 7 bit 0
bit 7-5 bit 4-0
未实现:读为 0 TUN<4:0>:频率调节位
01111 = 最大频率 01110 =
00001 = 00000 = 中心频率。振荡器模块运行在经过校准的频率上。 11111 =
10000 = 最小频率
受频率改变的影响。
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
DS41249D_CN 28 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785
3.4.3 LFINTOSC
低频内部振荡器 (LFINTOSC)是未经校准的 31 kHz
(近似值)内部时钟源。
LFINTOSC 的输出连接到后分频器和多路复用器 (见 图 3-1)。可通过软件用 IRCF 位选取 31 kHz (见第
3.4.4 节 “频率选择位 (IRCF)”)。 LFINTOSC 还是
上电延时定时器(PWRT)、看门狗定时器(WDT)以 及故障保护时钟监控器 (FSCM)的时钟源。
通过选取 31 kHz(IRCF = 000)为系统时钟源(SCS = 1), 或者使能下列任一项时, LFINTOSC 将被使能:
双速启动 (IESO = 1 IRCF = 000
上电延时定时器 (PWRT
看门狗定时器 (WDT
故障保护时钟监控器 (FSCM
LF 内部振荡器(LTS)位 (OSCCON<1>)指明 LFINTOSC 是否稳定。
3.4.4 频率选择位 (IRCF
8 MHz HFINTOSC 和 31 kHz LFINTOSC 的输出连接到
后分频器和多路复用器 (见图 3-1)。内部振荡器频率 选择位,IRCF<2:0>(OSCCON<6:4>),选择内部振荡 器的频率输出。可通过软件选择以下 8 种频率之一:
•8 MHz
•4 MHz(复位后的缺省值)
•2 MHz
•1 MHz
• 500 kHz
• 250 kHz
• 125 kHz
• 31 kHz
3.4.5 HF LF INTOSC 时钟切换时序
当在 LFINTOSC HFINTOSC 之间切换时,新的振荡 器可能为了省电已经关闭。在这种情况下, IRCF 位被 修改之后、频率选择生效之前,存在 10 µs 的延时。LTS/ HTS 位将反映 LFINTOSC HFINTOSC 振荡器的当前 激活状态。频率选择时序如下:
1. IRCF 位被修改。
2. 如果新时钟是关闭的,开始 10 µs 的时钟启动延
时。
3. 时钟切换电路等待当前时钟下降沿的到来。
4. CLKOUT 保持为低,时钟切换电路等待新时钟上
升沿的到来。
5. 现在 CLKOUT 连接到新时钟。 HTS/LTS 位按要 求被更新。
6. 时钟切换完成。
如果选取的内部振荡器速度在 8 MHz 125 kHz 之间, 选取新频率不存在启动延时。这是因为新旧频率都来自 经过后分频器和多路复用器的 HFINTOSC
注: 必须小心确保没有选择无效的电压或频率
选项。例如,当 VDD 2.0V 时选择 8 MHz 便是无效的配置。
注: 任一复位后,IRCF 位设置为 110 且频率选
择强制为 4 MHz。用户可修改 IRCF 位来选 择不同的频率。
2006 Microchip Technology Inc. 初稿 DS41249D_CN 29
PIC16F785/HV785

3.5 时钟切换

可通过软件用系统时钟选择(SCS)位在外部和内部时 钟源之间切换系统时钟源。
3.5.1 系统时钟选择 (SCS)位
系统时钟选择 (SCS)位 (OSCCON<0>)选择用于
CPU 和外设的系统时钟源。
•SCS = 0 时,系统时钟源由配置字 (CONFIG)中
FOSC<2:0> 位的配置决定。
•SCS = 1 时,根据 IRCF 位所选的内部振荡器频率
选取系统时钟源。复位后, SCS 总是被清零。
注: 任何自动时钟切换 (可能产生自双速启动
或故障保护时钟监控器)都不更新 SCS 位。用户可监控 OSTS OSCCON<3>) 以确定当前的系统时钟源。
3.5.2 振荡器起振超时状态位
振荡器起振超时状态 (OSTS)位 (OSCCON<3>)指 明系统时钟是来自外部时钟源 (通过 FOSC 位定义), 还是来自内部时钟源。OSTS 还特别指明在 LPXT HS 模式下,振荡器起振定时器 (OST)是否已超时。

3.6 双速时钟启动模式

双速启动模式通过最大限度地缩短外部振荡器起振与代 码执行之间的延时,进一步节省了功耗。对于频繁使用 休眠模式的应用,双速启动模式将从器件唤醒的时间中 去除外部振荡器的起振时间,从而可降低器件的总体功 耗。
该模式使得应用能够从休眠中唤醒,将 INTOSC 用作时 钟源执行数条指令,然后再返回休眠状态而无需等待主 振荡器的稳定。
注: 执行 SLEEP 指令将中止振荡器起振时间,
并使 OSTS 位( OSCCON<3>)保持清零。
PIC16F785/HV785 配置为 LPXT HS 模式时, 振荡器起振定时器 (OST)使能 (见第 3.3.1 节“振 荡器起振定时器 (OST)”)。 OST 定时器将暂停程序 执行,直到完成 1024 次振荡计数。双速启动模式在OST 计数时使用内部振荡器进行工作,最大限度地缩短了代 码执行的延时。当 OST 计数到 1024 OSTS
OSCCON<3>)置 1 时,程序执行切换至外部振荡器。
3.6.1 双速启动模式配置
通过以下设定来配置双速启动模式:
•IESO = 1 (CONFIG<10>)内部 / 外部切换位。
•SCS = 0
OSC 配置为 LP、 XT 或 HS 模式。
•F
在下列操作之后,进入双速启动模式:
上电复位 (POR)后以及在 PWRT 到期 (使能 时)后,或者
从休眠中唤醒。
如果外部时钟振荡器配置为除 LPXT HS 模式以外 的任一模式,那么双速启动将被禁止。这是因为 POR 后 或从休眠中退出时,外部时钟振荡器不需要稳定时间。
3.6.2 双速启动顺序
1. 从上电复位或休眠中唤醒。
2. 使用内部振荡器以 IRCF 位(OSCCON<6:4>
设置的频率开始执行指令。
3. OST 使能,计数 1024 个时钟周期。
4. OST 超时,等待内部振荡器下降沿的到来。
5. OSTS 置 1。
6. 系统时钟保持为低,直到新时钟下一个下降沿的
到来 (LPXT HS 模式)。
7. 系统时钟切换到外部时钟源。
3.6.3 检查外部 / 内部时钟状态
通过检查 OSTS 位(OSCCON<3>)的状态,可以确PIC16F785/HV785 是否如配置字 (CONFIG)中 FOSC 位定义的那样运行在外部时钟下,还是运行在内 部振荡器下。
DS41249D_CN 30 初稿 2006 Microchip Technology Inc.

3-7 双速启动

INTOSC
PIC16F785/HV785
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1
TOSTT
OSC1
0 1 1022 1023
OSC2
程序计数器
PC PC +1 PC + 2
系统时钟

3.7 故障保护时钟监控器

故障保护时钟监控器 (FSCM)使得器件在出现振荡器 故障时仍能继续工作。FSCM 能在器件退出复位或休眠 状态,以及振荡器起振定时器(OST)到期后的任一时 刻检测振荡器故障。

3-8 FSCM 框图

时钟监控器
锁存器(CM
时钟
LFINTOSC
振荡器
÷ 64
(边沿触发)
S
Q
C
Q
内部振荡器的频率取决于 IRCF 位(OSCCON<6:4>) 中包含的值。一旦进入故障保护状态, OSTS
OSCCON<3>)会自动清零,表示内部振荡器已经激
活且 WDT 被清零。 SCS 位(OSCCON<0>)不会更 新。使能 FSCM 并不能影响 LT S 位。
LFINTOSC 时钟除以 64,得到 FSCM 采样时钟。这 就使得在FSCM采样时钟间隙有足够的时间可以发生系 统时钟边沿。图 3-8 给出了 FSCM 框图。
在采样时钟的上升沿,监视锁存器将被清零
CM = 0)。在主系统时钟的下降沿,监视锁存器将被
1 CM = 1)。在采样时钟的下降沿发生且监视锁存 器未置 1 时,就检测到时钟故障。当由于 IRCF 位的影 响 FSCM 使能时,将使能分配的内部振荡器。
注: 使能故障保护时钟监控器模式时,将自动
使能双速启动。
31 kHz
~32 µs
488 Hz
~2 ms
检测到
时钟故障
FSCM 功能通过将配置字(CONFIG)中 的 FCMEN 位 置 1 来使能。适用于所有外部时钟选项(LPXT、HS、 ECRC I/O 模式)。
当外部时钟出现故障时,FSCM将OSFIF位(PIR1<2>1,并 在 OSFIE 位(PIE1<2>)置 1 时生成振荡器故 障中断。器件随后将系统时钟切换到内部振荡器。系统 时钟将继续来自内部振荡器,直到外部时钟恢复并退出 故障保护条件。
2006 Microchip Technology Inc. 初稿 DS41249D_CN 31
PIC16F785/HV785
3.7.1 故障保护条件清除
在复位、执行 SLEEP 指令或修改 SCS 位后,故障保护 条件被清除。一旦进入故障保护状态,PIC16F785/
HV785 就使用内部振荡器作为系统时钟源。可以修改 IRCF 位(OSCCON<6:4>)来调整内部振荡器频率,
而无需退出故障保护条件。
必须先清除故障保护条件,才能清零 OSFIF 标志位。

3-9 FSCM 时序图

采样时钟
系统 时钟 输出
CM 输出
Q
OSCFIF
CM 测试
注: 系统时钟频率通常远高于采样时钟频率。本例中选择了相对频率以便说明。
振荡器 故障
CM 测试 CM 测试
3.7.2 复位或从休眠中唤醒
FSCM 设计为能在器件退出复位或休眠状态,以及振荡
器起振定时器(OST)到期后的任一时刻检测振荡器故 障。如果外部时钟处于 EC RC 模式,监视将立即跟 踪这些事件。
对于 LPXT HS 模式,外部振荡器需要的起振时间 可能比FSCM采样时钟时间长;这就可能检测到假时钟 故障 (见图 3-9)。为防止这种情况,内部振荡器自动 配置为系统时钟,它将工作直到外部时钟稳定为止
OST 已超时)。这和双速启动模式一样。一旦外部时
钟稳定,LFINTOSC 将返回其原来的角色,作为 FSCM 源。
注: 由于振荡器起振时间范围较大,在振荡器
起振期间(即,从复位或休眠中退出时), 故障保护电路不处于激活状态。经过一段 适当的时间后,用户应检查 OSTS
OSCCON<3>),以验证振荡器是否已成
功起振以及系统时钟是否切换成功。
检测到
故障
DS41249D_CN 32 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

寄存器 3-2 OSCCON:振荡器控制寄存器 (地址:8Fh

U-0 R/W-1 R/W-1 R/W-0 R-q R-0 R-0 R/W-0
IRCF2 IRCF1 IRCF0 OSTS
bit 7 bit 0
(1)
HTS LTS SCS
bit 7 bit 6-4
bit 3
bit 2
bit 1
bit 0
未实现:读为 0 IRCF<2:0>:内部振荡器频率选择位
000 = 31 kHz 001 = 125 kHz 010 = 250 kHz 011 = 500 kHz 100 =1 MHz 101 =2 MHz 110 =4 MHz 111 =8 MHz
OSTS:振荡器起振超时状态位
(1)
1 = 器件运行在 FOSC<2:0> 定义的外部系统时钟之下 0 = 器件运行在内部系统时钟之下 (HFINTOSC LFINTOSC
HTSHFINTOSC (高频——8 MHz 125 kHz)状态位
1 =HFINTOSC稳定 0 =HFINTOSC不稳定
LTS LFINTOSC (低频——31 kHz)状态位
1 =LFINTOSC稳定 0 =LFINTOSC不稳定
SCS:系统时钟选择位
1 = 内部振荡器用于系统时钟 0 = 时钟源由 FOSC<2:0> 决定
1: 双速启动且选取 LPXT HS 为振荡器模式时,或者故障保护模式使能时,该位
将复位为 0,否则将复位为 1
图注:
q = 值取决于具体条件
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知

3-4 与时钟源相关的寄存器汇总

地址 名称
0Ch PIR1 EEIF ADIF CCP1IF C2IF C1IF OSFIF TMR2IF TMR1IF 0000 0000 0000 0000
8Ch PIE1
8Fh OSCCON
90h OSCTUNE
(1)
2007h
图注: x = 未知, u = 不变, – = 未实现,读为 0, q = 取值根据具体情况而定。振荡器不使用阴影单元。 1: 关于所有配置字位的操作,请参见寄存器 15-1
CONFIG CPD CP MCLRE PWRTE WDTE FOSC2 FOSC1 FOSC0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
EEIE ADIE CCP1IE C2IE C1IE OSFIE TMR2IE TMR1IE 0000 0000 0000 0000
IRCF2 IRCF1 IRCF0 OSTS HTS LTS SCS -110 q000 -110 q000 TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 ---u uuuu
POR/BOR
时的值
所有其他
复位值
2006 Microchip Technology Inc. 初稿 DS41249D_CN 33
PIC16F785/HV785
注:
DS41249D_CN 34 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

4.0 I/O 端口

器件有 17 个可用的通用 I/O 引脚和 1 个仅用于输入的引 脚。根据外设的使能情况,部分甚至全部引脚可能不能 用于通用 I/O。通常而言,当某个外设使能时,其相关 引脚可能不能用作通用 I/O 引脚。
注: 关于 I/O 端口的其他信息,请参见 《PIC
中档单片机系列参考手册》
DS33023_CN)。

4.1 PORTA TRISA 寄存器

PORTA 是一个 6 位宽的双向端口,对应的数据方向寄存 器是 TRISA (寄存器 4-2)。将 TRISA 某位置 1 (= 1) 时,会将 PORTA 的相应引脚设为输入 (即,使相应的 输出驱动器呈高阻状态)。将 TRISA 某位清零 (= 0) 时,会将 PORTA 的相应引脚设为输出 (即,将输出锁 存器中的内容置于选中引脚)。RA3 是个例外,仅可作为 输入引脚,其 TRIS 位总是读为 1。例 4-1 显示了如何初 始化 PORTA
读取 PORTA 寄存器 (寄存器 4-1)将读出相应引脚的 电平状态,而对其进行写操作则是写入其端口锁存器。 所有写操作都是 “读-修改-写”操作。因此,对端口 的写操作意味着总是先读端口引脚电平状态,然后修改 这个值,最后再写入该端口的数据锁存器。当 MCLRE = 1 时, RA3 读为 0
®
TRISA 寄存器控制着 PORTA 引脚的方向,即使它们用
作模拟输入引脚时也是如此。当引脚用于模拟输入时, 用户应确保 TRISA 寄存器中的各位保持置 1。配置为模 拟输入的 I/O 引脚总是读为 0
RA1 配置为参考电压输出时, RA1 数字输出驱动器 将自动被禁止而不影响 TRISA<1> 值。
注: 必须对 ANSEL(91h)寄存器进行初始化,
以将模拟通道配置为数字输入。配置为模 拟输入的引脚读为 0

4-1:初PORTA

BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ; CLRF PORTA ;Init PORTA MOVLW F8h ;Set RA<2:0> to ANDWF ANSEL0,f ; digital I/O BSF STATUS,RP0 ;Bank 1 MOVLW 0Ch ;Set RA<3:2> as inputs MOVWF TRISA ; and set RA<5:4,1:0>
; as outputs
BCF STATUS,RP0 ;Bank 0

寄存器 4-1 PORTAPORTA 寄存器 (地址:05h 105h

(1)
R/W-x R/W-x
bit 7-6
bit 5-0
U-0 U-0 R/W-x R/W-x
RA5 RA4 RA3 RA2 RA1 RA0
bit 7 bit 0
未实现:读为 0 RA<5:0>PORTA I/O 引脚位
1 = 端口引脚大于 V
IH
0 = 端口引脚小于 VIL
1: 上电复位后,数据锁存值是未知的,但当相应的模拟选择位为 1 时,每个端口位均
读为 0 (见寄存器 12-1)。
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
(1)
R/W-x
(1)
R/W-x
(1)
2006 Microchip Technology Inc. 初稿 DS41249D_CN 35
PIC16F785/HV785

寄存器 4-2 TRISAPORTA 三态寄存器 (地址:85h 185h

U-0 U-0 R/W-1 R/W-1 R-1 R/W-1 R/W-1 R/W-1
bit 7 bit 0
TRISA5
(2)
TRISA4
(2)
TRISA3
(1)
TRISA2 TRISA1 TRISA0
bit 7-6
bit 5-0

4.2 引脚的其他功能

PIC16F785/HV785中每个 PORTA引脚都具有电平变化 中断功能和弱上拉功能。以下三节将对这些功能进行介 绍。
未实现:读为 0 TRISA<5:0>PORTA 三态控制位
1 = PORTA 引脚配置为输入 (三态) 0 = PORTA 引脚配置为输出
1TRISA<3> 总是读为 1
2: 在 XTHS LP 振荡器模式下, TRISA<5:4> 总是读为 1
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
(1), (2)
4.2.1 弱上拉
每个 PORTA 引脚都具有单独配置的内部弱上拉功能。 控制位 WPUAx 用于使能或禁止每个上拉功能。请参见 寄存器 4-3。当端口引脚被配置为输出时,这些弱上拉 会自动关闭。上电复位时将禁止上拉功能, RAPU
OPTION_REG<7>)置 1。当 RA3 配置为 MCLR 时,
RA3 上的弱上拉自动使能。
寄存器 4-3 WPUA:弱上拉寄存器 (地址:95h
U-0 U-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
WPUA5
bit 7 bit 0
(4)
WPUA4
(1), (2)
(4)
WPUA3
(3)
WPUA2 WPUA1 WPUA0
bit 7-6
bit 5-0
DS41249D_CN 36 初稿  2006 Microchip Technology Inc.
未实现:读为 0 WPUA<5:0>:弱上拉寄存器位
1 = 上拉使能 0 = 上拉禁止
1: 必须使能全局 RAPU
2: 如果引脚处于输出模式,则自动禁止弱上拉器件 (TRISA = 0)。
3: 当在配置字中配置为 MCLR 4: 在 XTHS LP 振荡器模式下, WPUA<5:4> 总是读为 1
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
(3), (4)
位才能使能单独的上拉功能。
时, RA3 上拉自动使能。
PIC16F785/HV785
4.2.2 电平变化中断
每个 PORTA 引脚均被单独配置具有电平变化中断功 能。控制位 IOCAx 用于允许或禁止各引脚的中断功能。 请参见寄存器 4-4。电平变化中断功能在上电复位时被 禁止。
对于允许电平变化中断功能的引脚,其值将与上次读取 的 PORTA 的旧锁存值相比较。所有与上次读取值不匹 配的输出进行或运算,运算结果用来设置 INTCON 寄存 器 (寄存器 2-3)中的 PORTA 电平变化中断标志位
RAIF)。
该中断可唤醒处于休眠状态中的器件。用户在中断服务 程序中可通过以下方式清除该中断:
a) PORTA 的任何读或写操作。这将结束不匹配
条件,然后:
b) 清零标志位 RAIF
不匹配条件将继续将标志位 RAIF 1。读 PORTA 将结 束不匹配条件并将标志位 RAIF 清零。保持上一次读取 值的锁存器不受 MCLR 位之后,如果存在不匹配情况, RAIF 标志还将继续被 置 1
注: 当读操作正在执行时发生了I/O引脚电平变
化(Q2 周期的起始时刻),则 RAIF 中断 标志位可能不会被置 1
寄存器 4-4 IOCA:电平变化中断 PORTA 寄存器 (地址:96h
U-0 U-0 R/W0 R/W0 R/W0 R/W0 R/W0 R/W0
bit 7-6
bit 5-0
—IOCA5
bit 7 bit 0
未实现:读为 0 IOCA<5:0>:电平变化中断 PORTA 控制位
1 = 允许电平变化中断 0 = 禁止电平变化中断
(2)
IOCA4
(2)
IOCA3 IOCA2 IOCA1 IOCA0
(2)
BOR 复位的影响。在这些复
(1)
1: 要使各中断能够被识别,必须使能全局中断允许控制位 (GIE)。
2: 在 XTHS LP 振荡器模式下, IOCA<5:4> 总是读为 1
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 37
PIC16F785/HV785
4.2.3 PORTA 引脚说明和引脚图
每个 PORTA 引脚都与其他功能复用。这里将简要说明 引脚及其复合功能。各功能的具体信息 (如比较器或 A/D 转换器),请参见本数据手册中的相关章节。
4.2.3.1 RA0/AN0/C1IN+/ICSPDAT
4-1 给出了此引脚的引脚图。RA0 引脚可配置为下列 功能之一:
通用 I/O
连接至 A/D 的模拟输入
连接至比较器 1 的模拟输入
在线串行编程数据

4-1 RA0 框图

数据总线
WPUA
WPUA
PORTA
D
Q
CK
Q
D
Q
CK
Q
ANS0
VDD
RAPU
VDD
4.2.3.2 RA1/AN1/C12IN0-/VREF/ICSPCLK
4-1 给出了此引脚的引脚图。RA1 引脚可配置为下列 功能之一:
通用 I/O
连接至 A/D 的模拟输入
连接至比较器 1 2 的模拟输入
•A/D的参考电压输入
经过缓冲或未经缓冲的参考电压输出
在线串行编程时钟

4-2 RA1 框图

VROUT
VROE*VREN CVROE
ANS1
数据总线
WPUA
WPUA
PORTA
D
Q
CK
Q
D
Q
CK
Q
RAPU
VDD
VDD
TRISA
TRISA
PORTA
IOCA
IOCA
电平变化
中断
至比较器
A/D 转换器
I/O 引脚
VSS
Q1
Q3
Q1
VSS
I/O 引脚
TRISA
TRISA
PORTA
IOCA
IOCA
Q3
D
Q
CK
Q
ANS0
D
Q
D
CK
Q
Q
PORTA
EN
D
Q
EN
D
Q
EN
电平变化
中断
D
Q
CK
Q
D
Q
CK
Q
至比较器
A/D 转换器
PORTA
D
Q
EN
D
Q
EN
D
Q
EN
DS41249D_CN 38 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785
4.2.3.3 RA2/AN2/T0CKI/INT/C1OUT
4-3 给出了此引脚的引脚图。RA2 引脚可配置为下列 功能之一:
通用 I/O
连接至 A/D 的模拟输入
•TMR0的时钟输入
外部边沿触发的中断
来自比较器 1 的数字输出

4-3 RA2 框图

C1OE
C1OUT
数据总线
WPUA
WPUA
PORTA
TRISA
TRISA
ANS2
D
Q
CK
Q
Q
D
CK
Q
D
Q
CK
Q
RAPU
1
0
ANS2
VDD
VDD
I/O 引脚
VSS
4.2.3.4 RA3/MCLR/VPP
4-4 给出了此引脚的引脚图。RA3 引脚可配置为下列 功能之一:
通用输入
带弱上拉的主清零复位

4-4 RA3 框图

数据总线
WPUA
WPUA
TRISA
PORTA
IOCA
IOCA
电平变化
中断
D
Q
CK
Q
Q
D
CK
Q
复位
RAPU
VSS
MCLRE
PORTA
MCLRE
MCLRE
Q
Q
Q
EN
EN
EN
VDD
输入
引脚
SS
V
D
D
Q1
D
Q3
PORTA
IOCA
IOCA
电平变化
中断
D
Q
CK
Q
TMR0
INT
A/D 转换器
Q
Q
Q
PORTA
EN
EN
EN
D
D
Q1
D
Q3
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 39
PIC16F785/HV785
4.2.3.5 RA4/AN3/T1G/OSC2/CLKOUT
4-5 给出了此引脚的引脚图。RA4 引脚可配置为下列 功能之一:
通用 I/O
连接至 A/D 的模拟输入
•TMR1门控输入
晶振 / 谐振器连接
时钟输出

4-5 RA4 框图

ANS3
数据总线
WPUA
WPUA
PORTA
TRISA
TRISA
PORTA
IOCA
IOCA
电平变化
中断
1CLK 模式为 XTHS、LP 和 LPTMR1,且 CLKOUT 使
2:带 CLKOUT 选项。
Q
D
CK
Q
Q
D
CK
Q
S
Q
D
CK
Q
Q
D
CK
Q
T1G
A/D 转换器
能。
OSC1
FOSC/4
CLKOUT
使能
INTOSC/ RC/EC
Q
Q
Q
PORTA
CLK
模式
RAPU
振荡器
电路
1
0
(2)
CLKOUT
使能
ANS3
D
EN
D
EN
D
EN
(1)
VDD
VDD
I/O 引脚
VSS
Q1
Q3
4.2.3.6 RA5/T1CKI/OSC1/CLKIN
4-6 给出了此引脚的引脚图。RA5 引脚可配置为下列 功能之一:
通用 I/O
•TMR1时钟输入
晶振 / 谐振器连接
时钟输入

4-6 RA5 框图

INTOSC
模式
数据总线
WPUA
WPUA
PORTA
TRISA
TRISA
PORTA
IOCA
IOCA
电平变化
中断
1CLK 模式为 XTHSLP LPTMR1
Q
D
CK
Q
OSC2
D
Q
CK
Q
S
Q
D
CK
Q
Q
D
CK
Q
TMR1 CLKGEN
2: 在使用带 LP 振荡器的 Timer1 时,施密特触发器
被旁路。
RAPU
INTOSC
模式
Q
Q
Q
PORTA
CLK 模式
振荡器
电路
D
EN
EN
EN
(1)
VDD
VDD
I/O 引脚
VSS
(2)
D
Q1
D
Q3
DS41249D_CN 40 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785

4-1:与PORTA 相关的寄存器汇总

地址 名称
05h, 105h PORTA
10h T1CON
0Bh, 8Bh INTCON
81h, 181h OPTION_REG RAPU
85h, 185h TRISA
91h ANSEL0
95h WPUA
96h IOCA
98h REFCON
119h CM1CON0
11B h C M2 CON 1
图注: x = 未知, u = 不变, – = 未实现的存储单元,读为 0。 PORTA 不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
RA5 RA4 RA3 RA2 RA1 RA0 --xx xxxx --uu uuuu
T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 0000 0000
GIE
TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 --11 1111
ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
WPUA5 WPUA4 WPUA3 WPUA2 WPUA1 WPUA0 --11 1111 --11 1111 IOCA5 IOCA4 IOCA3 IOCA2 IOCA1 IOCA0 --00 0000 --00 0000
BGST VRBB VREN VROE CVROE --00 000- --00 000-
C1ON
MC1OUT MC2OUT —T1GSSC2SYNC 00-- --10 00-- --10
PEIE T0IE INTE RAIE T0IF INTF RAIF 0000 0000 0000 0000
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
C1OUT C1OE C1POL C1SP C1R C1CH1 C1CH0 0000 0000 0000 0000
POR/BOR
时的值
所有其他
复位值
2006 Microchip Technology Inc. 初稿 DS41249D_CN 41
PIC16F785/HV785

4.3 PORTB TRISB 寄存器

TRISB 寄存器控制着 PORTB 引脚的方向,即使它们用 作模拟输入引脚时也是如此。当引脚用于模拟输入时,
PORTB 是一个 4 位宽的双向端口,对应的数据方向寄 存器是 TRISB(寄存器 4-6)。将 TRISB 某位置 1(= 1) 时,会将 PORTB 的相应引脚设为输入 (即,使相应的 输出驱动器呈高阻状态)。将 TRISB 某位清零 (= 0) 时,会将 PORTB 的相应引脚设为输出 (即,将输出锁 存器中的内容置于选中引脚)。例 4-2 显示了如何初始
用户应确保 TRISB 寄存器中的各位保持置 1。对配置为 模拟输入的 I/O 引脚,总是读为 0
注: 必须对 ANSEL1 93h)寄存器进行初始
化,以将模拟通道配置为数字输入。配置 为模拟输入的引脚读为 0
PORTB
读取 PORTB 寄存器 (寄存器 4-5)将读出相应引脚的 电平状态,而对其进行写操作则是写入其端口锁存器。 所有写操作都是 “读-修改-写”操作。因此,对端口 的写操作意味着总是先读端口引脚电平状态,然后修改 这个值,最后再写入该端口的数据锁存器。
引脚 RB6 是漏极开路输出。所有其他 PORTB 引脚具有 完整的 CMOS 输出驱动器。

4-2:初PORTB

BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ; CLRF PORTB ;Init PORTB BSF STATUS,RP0 ;Bank 1 BCF ANSEL1,2 ;digital I/O - RB4 BCF ANSEL1,3 ;digital I/O - RB5 MOVLW 30h ;Set RB<5:4> as inputs MOVWF TRISB ;and set RB<7:6>
BCF STATUS,RP0 ;Bank 0

寄存器 4-5 PORTBPORTB 寄存器 (地址:06h 106h

R/W-x R/W-x R/W-x
RB7 RB6 RB5 RB4
bit 7 bit 0
(1)
R/W-x
(1)
U-0 U-0 U-0 U-0
;as outputs
bit 7-4
bit 3-0
RB<7:4>PORTB 通用 I/O 引脚位
1 = 端口引脚大于 V 0 = 端口引脚小于 VIL
未实现:读为 0
1: 上电复位后,数据锁存值是未知的,但当相应的模拟选择位为 1 时,每个端口位均读为
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
IH
0 (见第 82 页的寄存器 12-2)。

寄存器 4-6: TRISB:PORTB 三态寄存器 (地址:86h 或 186h)

R/W-1 R/W-1 R/W-1 R/W-1 U-0 U-0 U-0 U-0
bit 7-4
bit 3-0
TRISB7 TRISB6 TRISB5 TRISB4
bit 7 bit 0
TRISB<7:4>PORTB 三态控制位
1 = PORTB 引脚配置为输入 (三态) 0 = PORTB 引脚配置为输出
未实现:读为 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
DS41249D_CN 42 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785
4.3.1 PORTB 引脚说明和引脚图
每个 PORTB 引脚都与其他功能复用。这里将简要说明 引脚及其复合功能。各功能的具体信息 (如 PWM、运 算放大器或 A/D 转换器),请参见本数据手册中的相关 章节。
4.3.1.1 RB4/AN10/OP2-
RB4/AN10/OP2- 引脚可配置为下列功能之一:
通用 I/O
连接至 A/D 的模拟输入
连接至运放 2 的模拟输入
4.3.1.2 RB5/AN11/OP2+
RB5/AN11/OP2+ 引脚可配置为下列功能之一:
通用 I/O
连接至 A/D 的模拟输入
连接至运放 2 的模拟输入

4-7 RB4 RB5 框图

数据总线
VDD
I/O 引脚
VSS
PORTB
TRISB
TRISB
PORTB
D
Q
CK
Q
D
Q
CK
Q
A/D 转换器
至运放 2
ANS10(RB4) ANS11(RB5)
D
Q
EN
4.3.1.3 RB6
RA6 引脚可配置为下列功能之一:
漏极开路通用 I/O

4-8 RB6 框图

数据总线
D
Q
PORTB
TRISB
TRISB
PORTB
CK
Q
D
Q
CK
Q
D
Q
EN
N
VSS
4.3.1.4 RB7/SYNC
RB7/SYNC 引脚可配置为下列功能之一:
通用 I/O
•PWM同步输入和输出

4-9 RB7 框图

PH1EN PH2EN
PWM 主控
同步输出
数据总线
D
Q
PORTB
TRISB
CK
Q
D
Q
CK
Q
1
0
V
SS
VDD
VSS
I/O 引脚
I/O 引脚
TRISB
D
Q
EN
PORTB
PWM 同步输入
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 43
PIC16F785/HV785

4-2:与PORTB 相关的寄存器汇总

地址 名称
06h, 106h PORTB RB7 RB6 RB5 RB4
86h, 186h TRISB TRISB7 TRISB6 TRISB5 TRISB4
93h ANSEL1
111h PW MCO N0
11Dh OPA2CON OPAON 图注: x = 未知, u = 不变, – = 未实现的存储单元,读为 0。 PORTB 不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
xxxx ---- uuuu ---- 1111 ---- 1111 ----
ANS11 ANS10 ANS9 ANS8 ---- 1111 ---- 1111
PRSEN PASEN BLANK2 BLANK1 SYNC1 SYNC0 PH2EN PH1EN 0000 0000 0000 0000
0--- ---- 0--- ----
POR/BOR
时的值
所有其他
复位值
DS41249D_CN 44 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

4.4 PORTC TRISC 寄存器

RC4 RC5 配置为运放输出时,相应的 RC4 RC5 数字输出驱动器将自动被禁止,而无论 TRISC<4>
PORTC 是一个 8 位宽的双向端口,对应的数据方向寄 存器是 TRISC(寄存器 4-8)。将 TRISC 某位置 1(= 1) 时,会将 PORTC 的相应引脚设为输入 (即,使相应的 输出驱动器呈高阻状态)。将 TRISC 某位清零 (= 0) 时,会将 PORTC 的相应引脚设为输出 (即,将输出锁 存器中的内容置于选中引脚)。例 4-3 显示了如何初始 化 PORTC
TRISC<5> 的值为何。
注: 必须对 ANSEL0 91h)和 ANSEL1
93h)寄存器进行初始化,以将模拟通道
配置为数字输入。配置为模拟输入的引 脚读为 0
读取 PORTC 寄存器 (寄存器 4-7)将读出相应引脚的 电平状态,而对其进行写操作则是写入其端口锁存器。 所有写操作都是 “读-修改-写”操作。因此,对端口 的写操作意味着总是先读端口引脚电平状态,然后修改 这个值,最后再写入该端口的数据锁存器。
TRISC 寄存器控制着 PORTC 引脚的方向,即使它们用 作模拟输入引脚。当引脚用于模拟输入时,用户应确保
TRISC 寄存器中的各位保持置 1。对配置为模拟输入的 I/O 引脚,总是读为 0

4-3:初PORTC

BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 CLRF PORTC ;Init PORTC BSF STATUS,RP0 ;Bank 1 CLRF ANSEL0 ;digital I/O CLRF ANSEL1 ;digital I/O MOVLW 0Ch ;Set RC<3:2> as inputs MOVWF TRISC ; and set RC<5:4,1:0>
BCF STATUS,RP0 ;Bank 0

寄存器 4-7 PORTCPORTC 寄存器 (地址:07h 107h

(1)
R/W-x
RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0
bit 7 bit 0
R/W-x
(1)
R/W-x R/W-x R/W-x
(1)
R/W-x
(1)
; as outputs
(1)
R/W-x
R/W-x
(1)
bit 7-0
RC<7:0>PORTC 通用 I/O 引脚位 1 = 端口引脚大于 V
IH
0 = 端口引脚小于 VIL
1: 上电复位后,数据锁存值是未知的,但当相应的模拟选择位为 1 时,每个端口位均读
0 (见第 82 页的寄存器 12-1 寄存器 12-2)。
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知

寄存器 4-8: TRISC:PORTC 三态寄存器 (地址:87h 或 187h)

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0
bit 7 bit 0
bit 7-0
TRISC<7:0>PORTC 三态控制位
1 = PORTC 引脚配置为输入 (三态) 0 = PORTC 引脚配置为输出
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 45
PIC16F785/HV785
4.4.1 PORTC 引脚说明和引脚图
每个 PORTC 引脚都与其他功能复用。这里将简要说明 引脚及其复合功能。各功能的具体信息 (如比较器或 A/D 转换器),请参见本数据手册中的相关章节。
4.4.1.1 RC0/AN4/C2IN+
RC0 引脚可配置为下列功能之一:
通用 I/O
连接至 A/D 转换器的模拟输入
连接至比较器 2 的同相输入
4.4.1.2 RC6/AN8/OP1-
RC6/AN8/OP1- 引脚可配置为下列功能之一:
通用 I/O
连接至 A/D 的模拟输入
连接至运放 1 的反相输入
4.4.1.3 RC7/AN9/OP1+
RC7/AN9/OP1+ 引脚可配置为下列功能之一:
通用 I/O
连接至 A/D 的模拟输入
连接至运放 1 的同相输入

4-10 RC0RC6 RC7 框图

数据总线
VDD
PORTC
D
Q
CK
Q
4.4.1.4 RC1/AN5/C12IN1-/PH1
RC1 引脚可配置为下列功能之一:
通用 I/O
连接至 A/D 转换器的模拟输入
连接至比较器 1 2 的模拟输入
来自双相 PWM 的数字输出

4-11 RC1 框图

PH1EN
PH1
数据总线
D
Q
PORTC
TRISC
TRISC
PORTC
CK
Q
D
Q
CK
Q
至比较器
A/D 转换器
1
0
ANS5
D
Q
EN
VDD
I/O 引脚
VSS
TRISC
TRISC
PORTC
D
Q
CK
Q
Q
至比较器(RC0
A/D 转换器
至运放 1(RC6 RC7
ANS4(RC0) ANS8(RC6) ANS9(RC7)
D
EN
I/O 引脚
VSS
DS41249D_CN 46 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785
4.4.1.5 RC2/AN6/C12IN2-/OP2
RC2 引脚可配置为下列功能之一:
通用 I/O
连接至 A/D 转换器的模拟输入
连接至比较器 1 2 的模拟输入
来自运放 2 的模拟输出
4.4.1.6 RC3/AN7/C12IN3-/OP1
RC3 引脚可配置为下列功能之一:
通用 I/O
连接至 A/D 转换器的模拟输入
连接至比较器 1 2 的模拟输入
连接至运放 1 的模拟输出

4-12 RC2 RC3 框图

运放输出
数据总线
PORTC
OPAON
D
Q
CK
Q
VDD
4.4.1.7 RC4/C2OUT/PH2
RC4 引脚可配置为下列功能之一:
通用 I/O
来自比较器 2 的数字输出
来自双相 PWM 的数字输出

4-13 RC4 框图

C2OE
PH2EN
PH2
C2OUT
数据总线
PORTC
TRISC
1
0
D
Q
CK
Q
D
Q
CK
Q
1
0
VDD
I/O 引脚
VSS
TRISC
TRISC
PORTC
D
Q
CK
Q
至比较器
A/D 转换器
ANS6(RC2) ANS7(RC3)
D
Q
EN
VSS
I/O 引脚
TRISC
PORTC
D
Q
EN
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 47
PIC16F785/HV785
4.4.1.8 RC5/CCP1
RC5 引脚可配置为下列功能之一:
通用 I/O
连接至捕捉 / 比较的数字输入
连接至 CCP 的数字输出

4-14 RC5 框图

CCP1CON<1> CCP1CON<3>
CCP1CON<2>
CCP 输出
数据总线
D
Q
PORTC
TRISC
TRISC
PORTC
CK
Q
D
Q
CK
Q
CCP 捕捉输入
VDD
1
0
D
Q
EN
I/O 引脚
VSS

4-3:与PORTC 相关的寄存器汇总

地址 名称
07h, 107h PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu
15h CCP1CON 87h, 187h TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111
91h ANSEL0 ANS7 ANS6 ANS5 ANS4
93h ANSEL1
111h PW MCO N0
11Ch OPA1CON OPAON
11Dh OPA2CON OPAON 图注: x = 未知, u = 不变, – = 未实现的存储单元,读为 0。 PORTC 不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 0000 0000
ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
ANS11 ANS10 ANS9 ANS8 ---- 1111 ---- 1111
PRSEN PASEN BLANK2 BLANK1 SYNC1 SYNC0 PH2EN PH1EN 0000 0000 0000 0000
0--- ---- 0--- ---- 0--- ---- 0--- ----
POR/BOR
时的值
所有其他
复位值
DS41249D_CN 48 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

5.0 TIMER0 模块

Timer0 模块定时器 / 计数器具有以下特性:
•8位定时器 / 计数器
可读写
•8位软件可编程预分频器
内部或外部时钟选择
FFh 00h 溢出时触发中断
外部时钟的边沿选择
5-1是与 WDT共用的Timer0 模块和预分频器的框图。
注: 关于 Timer0 模块的更多信息,请参见

5.1 Timer0 工作原理

通过清零 T0CS 位(OPTION_REG<5>)选择定时器 模式。在定时器模式下,Timer0 模块在每个指令周期递 增 (不带预分频器)。如果对 TMR0 执行写操作,在接 下来的两个指令周期 TMR0 禁止递增。用户可将一个调 整值写入 TMR0 寄存器来避开这一问题。

5-1 TIMER0/WDT 预分频器的框图

CLKOUT
= FOSC/4
RA2/AN2/T0CKI/INT/C1OUT
T0SE
PIC
®
中档单片机系列参考手册》
DS33023_CN)。
0
1
(1)
T0CS
0
(1)
1
8
预分频器
通过将 T0CS 位(OPTION_REG<5>)置 1 选择计数 器模式。在此模式下,Timer0 模块在 RA2/AN2/T0CKI/ INT/C1OUT 引脚的每个上升沿或下降沿递增计数。递 增边沿取决于时钟源边沿(T0SE)控 制 位
OPTION_REG<4>)的设置。清零 T0SE 位选择上升
沿。
1: 计数器模式具有特定的外部时钟要求。关
于这些要求的更多信息,请参见《PIC
®
档单片机系列参考手册》
DS33023_CN)。
2: 必须对 ANSEL0 91h)寄存器进行初始
化,以将模拟通道配置为数字输入。配置 为模拟输入的引脚读为 0

5.2 Timer0 中断

TMR0 寄存器定时器 / 计数器从 FFh 00h 溢出时, 产生 Timer0 中断。此溢出将 T0IF 位(INTCON<2>)1。可以通过清零 T0IE 位(INTCON<5>)来屏蔽该 中断。在重新允许中断之前, T0IE 位(INTCON<5>) 必须通过 Timer0 模块的中断服务程序用软件清零。休 眠状态下,由于定时器被关闭,所以 Timer0 中断无法 唤醒处理器。
数据总线
8
TMR0
溢出时
将标志位 T0IF 1
PSA
1
SYNC 2
周期
0
(1)
WDTE
SWDTEN
31 kHz INTRC
1T0SET0CSPSA PS<2:0> 是选项寄存器中的位 (见寄存器 2-2)。
2WDTPS<3:0> WDTCON 寄存器中的位 (见寄存器 15-2)。
2006 Microchip Technology Inc. 初稿 DS41249D_CN 49
看门狗 定时器
PSA
16
预分频器
(1)
16
WDTPS<3:0>
8
PS<0:2>
(2)
(1)
PSA
1
WDT
0
(1)
超时
PIC16F785/HV785

5.3 Timer0 与外部时钟配合使用

不使用预分频器时,外部时钟输入等同于预分频器输 出。通过对内部相位时钟 Q2 Q4 周期的预分频器输出 进行采样,可实现 T0CKI 与内部相位时钟的同步。因此, 要求 T0CKI 的高电平状态和低电平状态分别保持至少
OSC 的时间 (以及 20 ns 的短暂 RC 延时)。请参见
2 T
其相应器件的电气规范说明。

5.4 预分频器

Timer0 模块使用一个 8 位计数器作为预分频器,该计数 器用于看门狗定时器时则为后分频器。为简化起见,该 计数器在本数据手册中统称为 “预分频器”。在软件中 通过设定控制位 PSAOPTION_REG<3>),可对预分 频器的分配进行控制。PSA 位清零可将预分频器分配给 Timer0。在 PS<2:0> 位(OPTION_REG<2:0>)中可 选择预分频器的设定值。
预分频器是不可读写的。将其分配给 Timer0 模块时,所 有写入 TMR0 寄存器的指令(例如,CLRF 1、MOVWF 1 BSF 1,x 等),都会将预分频器清零。将预分频器分 配给 WDT 时,CLRWDT 指令会同时将预分频器和看门 狗定时器清零。
5.4.1 切换预分频器的分配
预分频器的分配完全由软件控制 (即,可以在程序执行 过程中 “随时”对预分频器的分配进行更改)。为避免 器件意外复位,当把预分频器在 Timer0 WDT 之间进 行分配时,必须执行以下指令序列(例 5-1 和例 5-2)。
5-1 改变预分频器的分配
TIMER0WDT
BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ; CLRWDT ;Clear WDT CLRF TMR0 ;Clear TMR0 and
BSF STATUS,RP0 ;Bank 1
MOVLW b’00101111’ ;Required if desired MOVWF OPTION_REG ; PS2:PS0 is CLRWDT ; 000 or 001
MOVLW b’00101xxx’ ;Set postscaler to MOVWF OPTION_REG ; desired WDT rate BCF STATUS,RP0 ;Bank 0
将预分频器从 WDT 分配给 TMR0 模块时,使用例 5-2 所示的指令序列。即使禁止了 WDT,也应该执行该指 令序列以防误操作。
; prescaler
;
5-2 改变预分频器的分配
WDTTIMER0
CLRWDT ;Clear WDT and
BSF STATUS,RP0 ;Bank 1 BCF STATUS,RP1 ;
MOVLW b’xxxx0xxx’ ;Select TMR0,
MOVWF OPTION_REG ; BCF STATUS,RP0 ;Bank 0

5-1:与TIMER0 相关的寄存器

地址 名称
01h,
TMR0
101h
0Bh,
INTCON GIE PEIE T0IE
8Bh
81h,
OPTION_REG
181h
91h ANSEL0
85h,
TRISA
185h 图注: = 未实现的存储单元,读为 0u = 不变, x = 未知。 Timer0 模块不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Timer0 模块寄存器
INTE RAIE T0IF INTF RAIF 0000 0000 0000 0000
RAPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 --11 1111
; prescaler
; prescale, and ; clock source
POR/BOR
时的值
xxxx xxxx uuuu uuuu
所有其他
复位值
DS41249D_CN 50 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

6.0 具备门控功能的 TIMER1 模块

Timer1 模块是 PIC16F785/HV785 16 位计数器。图 6-1 给出了 Timer1 模块的基本框图。Timer1 具有以下特
性:
•16位定时器 / 计数器 (TMR1H:TMR1L)
可读写
内部或外部时钟选择
同步或异步工作
FFFFh 0000h 溢出时触发中断
溢出触发唤醒 (异步模式)
可选的外部使能输入:
- 可选择门控源; T1G C2 输出 (T1GSS
- 可选择门控极性 (T1GINV
可选的 LP 振荡器

6-1 TIMER1 PIC16F785/HV785 框图

溢出时将 TMR1IF 标志位置 1
(1)
TMR1
TMR1L
RA5/T1CKI/OSC1/CLKIN
RA4/AN3/T1G/OSC2/CLKOUT
INTOSC
不带 CLKOUT
LP
休眠
T1OSCEN
TMR1H
振荡器
*
OSC/4
F
内部 时钟
如寄存器 6-1 所示, Timer1 控制寄存器 (T1CON)用 于使能/ 禁止 Timer1以及选择 Timer1 模块的各种特性。
注: 关于定时器模块的更多信息,请参见
PIC
®
中档单片机系列参考手册》
DS33023_CN)。
TMR1ON
EN
C2 比较器模块 TMR1 时钟
DQ
1
0
TMR1CS
0
1
T1SYNC
预分频器
1, 2, 4, 8
2
T1CKPS<1:0>
SYNCC2OUT
TMR1GE
TMR1ON TMR1GE
同步时钟输入
(2)
同步
检测
休眠输入
1
0
T1GINV
* 在使用 LP 振荡器时, ST 缓冲器是低功耗型;在使用 T1CKI 时, ST 缓冲器是高
速型。
1Timer1 在上升沿递增。
2SYNCC2OUT 是来自比较器 2 的同步输出 (见第 66 页的图 9-2)。
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 51
T1GSS
PIC16F785/HV785

6.1 Timer1 工作模式

Timer1 可工作在以下三种模式之一:
带预分频器的 16 位定时器
•16位同步计数器
•16位异步计数器
在定时器模式下,Timer1 在每个指令周期递增。在计数 器模式下, Timer1 在外部时钟输入 T1CKI 的上升沿递 增。而且,计数器模式时钟可以与单片机系统时钟同 步,也可以异步工作。
在计数器和定时器模块中,计数器 / 定时器时钟可以用 Timer1 门进行门控,可将其选择为 T1G 引脚或比较器 2 的输出。
如果需要使用外部时钟振荡器(并且单片机正在使用LP 振荡器或不带 CLKOUT INTOSC), Timer1 可以将 LP 振荡器用作时钟源。
注: 在计数器模式下,在以下任意一个或多个
条件发生后,在第一个递增上升沿之前, 计数器应先记录对齐一个下降沿。
上电复位后 Timer1 被使能
TMR1H TMR1L
T1CKI 为高电平时,Timer1 被禁止
TMR1ON = 0),当 T1CKI 为低电
平时, Timer1 TMR1ON = 1)被使 能。请参见图 6-2

6.2 Timer1 中断

一对 Timer1 寄存器(TMR1H:TMR1L)递增到 FFFFh, 然后返回到 0000h。当 Timer1 计满返回时, Timer1 中 断标志位 (PIR1<0>)将置 1。为使能计满返回时的中 断,必须将以下寄存器位置 1
•Timer1中断允许位 (PIE1<0>)
• PEIE 位(INTCON<6>
•GIE位(INTCON<7>
在中断服务程序中将 TMR1IF 位清零将清除中断。
注: 在重新允许中断前,应将一对
TMR1H:TMR1L 寄存器以及 TMR1IF 位清 零。

6.3 Timer1 预分频器

Timer1 有四个预分频器选项,允许对时钟输入进行 1、 24 8 分频。 T1CKPS 位(T1CON<5:4>)控制预
分频器计数。对预分频计数器不能直接进行读写操作; 但是,通过写入 TMR1H TMR1L 可将预分频计数器 清零。

6.4 Timer1 门控

Timer1 门控源可用软件配置为 T1G 引脚或比较器 2 的 输出。这使得器件能够使用 T1G 对外部事件进行直接计 时,或者使用比较器2对模拟事件进行直接计时。Timer1 门控源的选择,请参见 CM2CON1 (寄存器 9-3)。这个 特性可以简化 ∆-Σ A/D 转换器和许多其他应用的程序。 -Σ A/D 转换器的更多信息,请参见 Microchip 网站
www.microchip.com)。
注: T1G C2OUT 用作 Timer1 门控源之
前,必须将 TMR1GE 位(T1CON<6>)置 1。选择 Timer1 门控源的更多信息,请参 见寄存器 9-3
无论门控源来自 T1G 引脚还是比较器 2 的输出,均可使 用 T1GINV 位(T1CON<7>)反转 Timer1 门控。这样 可将 Timer1 配置为测量事件之间的高电平有效或低电 平有效时间。

6-2 TIMER1 递增边沿

T1CKI =
当 使能时
T1CKI =
当 使能时
1: 箭头表明计数器递增。
DS41249D_CN 52 初稿 2006 Microchip Technology Inc.
1
TMR1
0
TMR1
2: 请参见第 6.1 节“Timer1 工作模式”的注。
PIC16F785/HV785

寄存器 6-1 T1CONTIMER1 控制寄存器 (地址:10h

R/W0 R/W0 R/W0 R/W0 R/W0 R/W0 R/W0 R/W0
T1GINV
bit 7 bit 0
(1)
TMR1GE
(2)
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
bit 7
bit 6
bit 5-4
bit 3
bit 2
bit 1
bit 0
T1GINVTimer1 门控反转位
1 = Timer1 门控高电平有效 (见 bit 6 0 = Timer1 门控低电平有效 (见 bit 6
TMR1GETimer1 门控使能位 如果
TMR1ON = 0:
该位为无关位 如果
TMR1ON = 1 1 = 如果 Timer1 门控有效 (见 bit 7),则开启 Timer1 0 = Timer1 Timer1 门控无关
T1CKPS<1:0>Timer1 输入时钟预分频比选择位
11 = 1:8 预分频比 10 = 1:4 预分频比 01 = 1:2 预分频比 00 = 1:1 预分频比
T1OSCENLP 振荡器使能控制位 如果系统时钟是不带
1 = LP 振荡器使能作为 Timer1 的时钟 0 = LP 振荡器关闭
否则: 该位为无关位
T1SYNC
TMR1CS =
1 = 不同步外部时钟输入 0 = 同步外部时钟输入
TMR1CS = 该位为无关位。 Timer1 使用内部时钟。
TMR1CSTimer1 时钟源选择位
1 = 使用来自 T1CKI 引脚 (在上升沿)的外部时钟 0 = 内部时钟 (F
TMR1ONTimer1 启动控制位
1 = 使能 Timer1 0 = 停止 Timer1
Timer1 外部时钟输入同步控制位
1
0
CLKOUT 的 INTOSC 或 LP 模式:
OSC/4
(1)
(2)
1T1GINV 位反转 Timer1 门控逻辑,无论其来源为何。
2: 要将 T1G 引脚或 C2OUT(选择哪个由 T1GSS 位(CM2CON1<1>)控 制 )用 作 Timer1
门控源,必须将 TMR1GE 位置 1。
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 53
PIC16F785/HV785
6.5 Timer1 在异步计数器模式下的工作
原理
如果控制位 T1SYNCT1CON<2>)置 1,外部时钟输 入将不同步。定时器继续异步于内部相位时钟进行递增 计数。在休眠模式下,定时器将继续递增,并在溢出时 产生中断以唤醒处理器。但是,用软件对定时器进行读 / 写操作时,要特别当心 (第 6.5.1 节)。
注: 必须对 ANSEL0 91h)寄存器进行初始
化,以将模拟通道配置为数字输入。配置 为模拟输入的引脚读为 0
6.5.1 在异步计数器模式下读写 TIMER1
当定时器采用外部异步时钟工作时,对 TMR1H TMR1L 的读操作将确保有效(由硬件实现)。但是,应 该注意的是,用两个 8 位值来读取 16 位定时器本身就 会产生某些问题,这是因为定时器可能在两次读操作之 间产生溢出。
对于写操作,建议用户直接停止计数器,然后写入所期 望的值。如果寄存器正进行递增计数,对定时器寄存器 进行写操作,可能会导致写入竞争,从而可能在定时器 寄存器中产生不可预测的值。
®
16 位值需要特别小心。《PIC
DS33023_CN)中的示例给出了当 Timer1 在异步模式
下运行时如何读写 Timer1
中档单片机参考手册》

6.6 Timer1 振荡器

在引脚 OSC1 (输入)和 OSC2 (放大输出)之间接有 一个内置晶体振荡器电路。通过将控制位 T1OSCEN
T1CON<3>)置 1 可使能该电路。该电路采用低功耗
振荡器,频率可达 32.768 kHz。在休眠模式下,它将继 续工作。该电路主要用于 32.768 kHz 音叉 (Tuning
Fork)式晶振。
Timer1 振荡器与系统 LP 振荡器共用。因此,只有当主 系统时钟也是 LP 振荡器或来自于内部振荡器时, Timer1 才能采用该模式。与系统 LP 振荡器相同,用户
必须提供软件延时以保证振荡器能够正常起振。
当系统时钟与 Timer1 共用 LP 振荡器时,休眠模式将不 会禁止系统时钟。
当使能 Timer1 振荡器时, TRISA<5> TRISA<4> 位 被置1RA5和RA4位读为0,而 TRISA<5>和TRISA<4> 位读为 1
注: 在使用之前,振荡器需要一定的起振和稳
定时间。因此,T1OSCEN 应置 1,且在使Timer1 之前确保有一定的延时。

6.7 Timer1 在休眠模式下的工作原理

只有在设定异步计数器模式时,Timer1 才能在休眠模式 下工作。在该模式下,可使用外部晶振或时钟源信号使 计数器递增。要设置定时器以唤醒器件,应:
•Timer1必须开启 (T1CON<0>)
必须将 TMR1IE 位(PIE1<0>)置 1
必须将 PEIE 位(INTCON<6>)置 1
器件将在溢出时被唤醒。如果将 GIE 位(INTCON<7>) 置 1,溢出时器件将被唤醒并跳转至中断服务程序
0004h)。如果将 GIE 位清零,将继续执行下一条指

6-1:与TIMER1 相关的寄存器

地址 名称
0Bh,
INTCON GIE PEIE
8Bh
0Ch PIR1
0Eh TMR1L
0Fh TMR1H
10h T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
11B h CM2 CON1
8Ch PIE1
91h ANSEL0 图注: x = 未知, u = 不变, – = 未实现,读为 0。 Timer1 模块不使用阴影单元。
DS41249D_CN 54 初稿  2006 Microchip Technology Inc.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T0IE INTE RAIE T0IF INTF RAIF 0000 0000 0000 0000
EEIF ADIF CCP1IF C2IF C1IF OSFIF TMR2IF TMR1IF 0000 0000 0000 0000
16 TMR1 寄存器低位字节的保持寄存器
16 TMR1 寄存器高位字节的保持寄存器
TMR1CS TMR1ON 0000 0000 uuuu uuuu
MC1OUT MC2OUT —T1GSSC2SYNC 00-- --10 00-- --10
EEIE ADIE CCP1IE C2IE C1IE OSFIE TMR2IE TMR1IE 0000 0000 0000 0000
ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
POR/BOR
时的值
xxxx xxxx uuuu uuuu xxxx xxxx uuuu uuuu
所有其他
复位值
PIC16F785/HV785

7.0 TIMER2 模块

Timer2 模块定时器是 8 位定时器,具有以下特性:
•8位定时器 (TMR2 寄存器)
•8位周期寄存器 (PR2)
可读写 (以上两个寄存器)
软件可编程预分频器 (1:11:4 1:16
软件可编程后分频器 (1:1 1:16
•TMR2与 PR2 匹配时中断
Timer2 具有一个控制寄存器,如寄存器 7-1 所示。可以
通过清零控制位 TMR2ON(T2CON<2>)关 闭 TMR2 以实现功耗最小。图 7-1 Timer2 模块的简化框图。 Timer2 预分频器和后分频器的选择都由该寄存器控制。

7.1 Timer2 工作原理

Timer2 可用作 CCP 模块的 PWM 模式的 PWM 时基。 TMR2 寄存器是可读写的,在任何器件复位时都会被清
零。输入时钟(FOSC/4)有一个由控制位 T2CKPS<1:0>
T2CON<1:0>)选择的预分频选项 (1:11:4
1:16)。TMR2 的匹配输出通过一个 4 位的后分频器(提 供范围为 1:1 1:16 的分频比)产生 TMR2 中断 (锁 存在标志位 TMR2IF PIR1<1>)中)。
预分频和后分频计数器在发生以下情况时清零:
TMR2 寄存器进行写操作
T2CON 寄存器进行写操作
任何器件复位 (上电复位、 MCLR
定时器复位或欠压复位)
T2CON TMR2 不会清零。

寄存器 7-1 T2CONTIMER2 控制寄存器 (地址:12h

U-0 R/W0 R/W0 R/W0 R/W0 R/W0 R/W0 R/W0
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
bit 7 bit 0
bit 7
bit 6-3
bit 2
bit 1-0
未实现:读为 0 TOUTPS<3:0>Timer2 输出后分频比选择位
0000 =1:1后分频比 0001 =1:2后分频比
1111 =1:16后分频比
TMR2ONTimer2 启动控制位
1 = 开启 Timer2 0 = 关闭 Timer2
T2CKPS<1:0>Timer2 时钟预分频值选择位
00 = 预分频值为 1 01 = 预分频值为 4 1x = 预分频值为 16
复位、看门狗
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 55
PIC16F785/HV785

7.2 Timer2 中断

Timer2 模块具有一个 8 位的周期寄存器 PR2Timer200h 开始递增直至与 PR2 匹配,然后在下一个递增 周期复位至 00hPR2 是可读写寄存器。PR2 寄存器复 位后初始化到 FFh

7-1 TIMER2 框图

OSC/4
F
预分频器
1:1, 1:4, 1:16
2
TMR2
比较器
复位
EQ
T2CKPS<1:0>
PR2
TOUTPS<3:0>

7-1:与TIMER2 相关的寄存器

地址 名称
0Bh,
INTCON GIE PEIE
8Bh
0Ch PIR1
11h T MR2
12h T2CON
8Ch PIE1
92h PR2 图注: x = 未知, u = 不变, – = 未实现,读为 0。 Timer2 模块不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T0IE INTE RAIE T0IF INTF RAIF 0000 0000 0000 0000
EEIF ADIF CCP1IF C2IF C1IF OSFIF TMR2IF TMR1IF 0000 0000 0000 0000
8 TMR2 寄存器的保持寄存器
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
EEIE ADIE CCP1IE C2IE C1IE OSFIE TMR2IE TMR1IE 0000 0000 0000 0000
Timer2 模块周期寄存器
TMR2
输出
后分频器
1:1 1:16
4
标志位
TMR2IF 置 1
POR/BOR
时的值
0000 0000 0000 0000
1111 1111 1111 1111
所有其他
复位值
DS41249D_CN 56 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

8.0 捕捉 / 比较 /PWM CCP)模块

捕捉 / 比较 /PWMCCP)模块包含一个 16 位寄存器, 该寄存器可作为:
•16位捕捉寄存器
•16位比较寄存器
•PWM主 / 从占空比寄存器
捕捉 / 比较 /PWM 寄存器 1CCPR1)由两个 8 位寄存 器组成:CCPR1L (低字节)和 CCPR1H (高字节)。 CCP1CON 寄存器控制 CCP 的操作。比较匹配将产生 特殊事件触发并将 TMR1H TMR1L 寄存器清零。
8-1 CCP 模式——所需的定时器资源
CCP 模式

寄存器 8-1 CCP1CONCCP 操作寄存器 (地址:15h

U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0
bit 7 bit 0
bit 7-6 bit 5-4
bit 3-0
未实现:读为 0DC1B<1:0>PWM 占空比最低有效位 捕捉模式:
未使用 比较模式:
未使用
模式:
PWM 这些位是 PWM 占空比的低 2 位。高 8 位在 CCPR1L 中。
CCP1M<3:0>CCP 模式选择位
0000 = 捕捉 / 比较 /PWM 关闭 (复位 CCP 模块) 0001 = 未使用 (保留) 0010 = 比较模式,匹配时输出电平翻转 (CCP1IF 位置 1 0011 = 未使用 (保留) 0100 = 捕捉模式,每个下降沿 0101 = 捕捉模式,每个上升沿 0110 = 捕捉模式,每 4 个上升沿 0111 = 捕捉模式,每 16 个上升沿 1000 = 比较模式,匹配时输出置 1 CCP1IF 位置 1 1001 = 比较模式,匹配时输出清零 (CCP1IF 位置 1 1010 = 比较模式,匹配时产生软件中断 (CCP1IF 位置 1CCP1 引脚不受影响) 1011 = 比较模式,触发特殊事件(CCP1IF 位置 1 TMR1 复位,且如果 A/D 模块被使能,启动
一次 A/D 转换。 CCP1 引脚不受影响。)
110x =PWM模式:CCP1 输出为高电平时有效。 111x =PWM模式:CCP1 输出为低电平时有效。
定时器资源
捕捉 比较
PWM Timer2
Timer1
Timer1
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 57
PIC16F785/HV785

8.1 捕捉模式

在捕捉模式下,当在引脚 RC5/CCP1 上发生某一事件 时, CCPR1H:CCPR1L 捕捉 TMR1 寄存器中的 16 位 值。这些事件如下所示,可由 CCP1CON<3:0> 位进行 配置:
每个下降沿
每个上升沿
4 个上升沿
16 个上升沿
进行捕捉后,中断请求标志位 CCP1IF PIR1<5>)被 置 1。该中断标志位必须用软件清零。如果在寄存器 CCPR1 中的值被读出之前又发生另一次捕捉,那么原 来的捕捉值会被新捕捉值覆盖。
8.1.1 CCP1 引脚配置
在捕捉模式下,应该通过把 TRISC<5> 位置 1 RC5/ CCP1 引脚配置为输入。
注: 如果 RC5/CCP1 引脚配置为输出,则写端
口将产生一次捕捉条件。

8-1 捕捉模式工作原理框图

标志位 CCP1IF 1
预分频器
÷ 1, 4, 16
RC5/CCP1
引脚
边沿检测
Q’s
8.1.2 TIMER1 模式选择
为使 CCP 模块使用捕捉特性, Timer1 必须运行在定时 器模式或同步计数器模式。在异步计数器模式下,捕捉 操作可能无法进行。
8.1.3 软件中断
当捕捉模式改变时,可能会产生一次误捕捉中断。用户 应该保持 CCP1IE 位(PIE1<5>)清零以避免误中断, 且应在任何这种工作模式改变之后清零标志位 CCP1IF
PIR1<5>)。
PIR1<5>
CCPR1H CCPR1L
捕捉 使能
TMR1H TMR1L
CCP1CON<3:0>
8.1.4 CCP 预分频器
通过设置 CCP1M<3:0> CCP1CON<3:0>)位,可以 选择 4 种不同的预分频比。每当关闭 CCP 模块,或者 CCP 模块不在捕捉模式时,预分频计数器都会被清零。 任何复位都会将预分频计数器清零。
从一个捕捉预分频比切换到另一个时可能产生一次中 断。而且,预分频计数器不会被清零;因此,第一次捕 捉时可能是一个非零的预分频比。例 8-1 给出了切换捕捉 预分频比的建议方法。这个示例在清零预分频计数器 时,不会产生误中断。

8-1 更改捕捉预分频比

CLRF CCP1CON ;Turn CCP module off MOVLW NEW_CAPT_PS;Load the W reg with
; the new prescaler ; move value and CCP ON
MOVWF CCP1CON ;Load CCP1CON with this
; value

8.2 比较模式

在比较模式下,16 位 CCPR1 寄存器的值持续不断与一TMR1 寄存器的值作比较。如果二者匹配, RC5/
CCP1 引脚将:
驱动为高电平
驱动为低电平
保持不变
引脚的动作由控制位CCP1M<3:0>(CCP1CON<3:0> 的值决定。同时,中断标志位 CCP1IF PIR1<5>)被 置 1

8-2 比较模式工作原理框图

CCP1CON<3:0>
模式选择
标志位 CCP1IF 1
PIR1<5>
RC5/CCP1
引脚
TRISC<5>
输出使能
QS
特殊事件触发
4
输出 逻辑
R
CCPR1H CCPR1L
匹配
TMR1H TMR1L
比较器
特殊事件触发将:
清零 TMR1H 和 TMR1L 寄存器
不会将中断标志位 TMR1IF (PIR1<0>)置 1
将 GO/DONE 位(ADCON0<1>)置 1
DS41249D_CN 58 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785
8.2.1 CCP1 引脚配置
用户必须通过把 TRISC<5> 位清零将 RC5/CCP1 引脚 配置为输出。
注: 清零 CCP1CON 寄存器将把 RC5/CCP1
较输出锁存器强制设为缺省的低电平。这 不是 PORTC I/O 数据锁存器。
8.2.4 特殊事件触发
在这种模式下 (CCP1M<3:0> = 1011) ,将产生一个 内部硬件触发信号,可用于启动一个动作。请参见 寄存器 8-1
一旦 TMR1H:TMR1L 这对寄存器和 CCPR1H:CCPR1L 这对寄存器之间发生匹配,便会发生 CCP 的特殊事件 触发输出。TMR1H:TMR1L 寄存器在 TMR1 时钟的下一
8.2.2 TIMER1 模式选择
如果 CCP 模块使用比较功能,则 Timer1 必须运行在定 时器模式或同步计数器模式。在异步计数器模式下,比 较操作可能无法进行。
个上升沿到来之前不会复位。这使 CCPR1H:CCPR1L 寄存器可作为 Timer1 16 位可编程周期寄存器。如果 A/D 模块被使能,特殊事件触发输出也会启动一次 A/D 转换。
1CCP模块的特殊事件触发不会将中断标志
8.2.3 软件中断模式
当选择产生软件中断模式(CCP1M<3:0> = 1010)时 , RC5/CCP1 引脚不受影响。 CCP1IF PIR1<5>)位被 置1,产生一个CCP中断(如果使能)。请参见寄存器8-1
TMR1IF PIR1<0>)置 1
2: 在产生特殊事件触发条件和 TMR1 复位的
时钟边沿之间改变 CCPR1H CCPR1L 这对寄存器的内容将移除匹配条件,这样 可以防止复位发生。

8-2 与捕捉、比较和 TIMER1 相关的寄存器

地址 名称
0Bh
INTCON GIE PEIE
8Bh
0Ch PIR1
0Eh TMR1L
0Fh TMR1H
10h T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
11B h C M2C ON1
13h CCPR1L
14h CCPR1H
15h CCP1CON
87h,
TRISC
187h
8Ch PIE1 图注: = 未实现的存储单元,读为 0u = 不变, x = 未知。捕捉、比较或 Timer1 模块不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T0IE INTE RAIE T0IF INTF RAIF 0000 0000 0000 0000
EEIF ADIF CCP1IF C2IF C1IF OSFIF TMR2IF TMR1IF 0000 0000 0000 0000
16 TMR1 寄存器低位字节的保持寄存器
16 TMR1 寄存器高位字节的保持寄存器
TMR1CS TMR1ON 0000 0000 uuuu uuuu
MC1OUT MC2OUT —T1GSSC2SYNC 00-- --10 00-- --10
捕捉 / 比较 /PWM 寄存器 1 低位字节
捕捉 / 比较 /PWM 寄存器 1 高位字节
DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000
TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 --11 1111 --11 1111
EEIE ADIE CCP1IE C2IE C1IE OSFIE TMR2IE TMR1IE 0000 0000 0000 0000
POR/BOR
时的值
xxxx xxxx uuuu uuuu xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu xxxx xxxx uuuu uuuu
所有其他
复位值
2006 Microchip Technology Inc. 初稿 DS41249D_CN 59
PIC16F785/HV785

8.3 CCP PWM 模式

在脉宽调制(PWM)模式下,CCP模块会在 RC5/CCP1 引脚上产生最多 10 位分辨率的 PWM 输出信号。由于 RC5/CCP1 引脚与 PORTC 数据锁存器复用,因此必须 清零 TRISC<5> 以使 RC5/CCP1 引脚为输出引脚。
注: 清零 CCP1CON 寄存器将把 PWM 输出锁
存器强制设为缺省的无效电平。这不是 PORTC I/O 数据锁存器。
8-3 给出了 PWM 工作原理的简化框图。
关于如何设置 CCP 模块使之工作于PWM 模式的步骤, 请参见第 8.3.5 节 “设置 PWM 操作”。

8-3:简PWM 框图

占空比寄存器
CCPR1L
CCPR1H(从动)
比较器
TMR2
CCP1CON<5:4>
(1)
RC5/CCP1
RQ
S
TRISC<5>
8.3.1 PWM 周期
PWM 周期可通过写 PR2 寄存器来设定。 PWM 周期可
由公式 8-1 计算:

公式 8-1 PWM 周期

PWM 周期 = [(PR2) + 1] 4 TOSC
TMR2
预分频比)
PWM 频率定义为 1/[PWM 周期 ]
TMR2 中的值与 PR2 中的值相等时,在下一个递增 周期将发生以下 3 个事件:
•TMR2被清零
• RC5/CCP1 引脚被置 1。(例外:如果 PWM 占空 = 0%,引脚不会被置 1
•PWM占空比从 CCPR1L 锁存到 CCPR1H
注: 在确定 PWM 频率时不使用 Timer2 后分频
器(见第 7.1 节“Timer2 工作原理”)。 后分频器可用于获得与PWM输出不同频率 的伺服更新速率。
比较器
PR2
18 位定时器 TMR2 寄存器和 2 位内部 Q 时钟
2 位预分频器组合成 10 位时基。
清零 Timer2, 翻转 PWM 引脚并 锁存占空比
PWM 输出 (图 8-4)中包含一个时基 (周期)和一段 输出保持为高电平的时间 (占空比)。 PWM 的频率是 周期的倒数 (1/ 周期)。

8-4 CCP PWM 输出

周期
占空比
TMR2 = 0
TMR2 = PR2
TMR2 = 占空比
DS41249D_CN 60 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785
8.3.2 PWM 占空比
通过写入 CCPR1L 寄存器和 DC1B<1:0>
CCP1CON<5:4>)位可以设定 PWM 占空比。分辨率
最高可达 10 位。CCPR1L 中包含高 8 位而 DC1B<1:0> 中包含低 2 位。CCPR1L DC1B<1:0> 可在任何时候 写入。在 PWM 模式下,CCPR1H 是只读寄存器。该 10 位值由 CCPR1L CCP1CON<5:4>)表示。
公式 8-2 用于计算 PWM 的占空比时间。

公式 8-2 PWM 占空比

PWM
占空比
= (CCPR1L:CCP1CON<5:4>)
OSC
TMR2
T
预分频比)
可以在任何时候写入 CPR1L DC1B<1:0>,但是在 PR2 TMR2 发生匹配 (即周期结束)前占空比值不 会被锁存到 CCPR1H。在 PWM 模式下, CCPR1H 是 只读寄存器。
CCPR1H 寄存器和一个 2 位的内部锁存器用于为 PWM 占空比提供双重缓冲。这种双重缓冲结构非常重要,它 可以避免在 PWM 操作中产生毛刺。
由于缓冲作用,模块会一直等到定时器复位,而不是立 即开始。这意味着增强型 PWM 波形与标准 PWM 波形 并不完全一致,而是偏移一个指令周期 (4 T
CCPR1H 2 位锁存值与组合到内部 2 Q 时钟或 2 TMR2 预分频器的 TMR2 相匹配时,RC5/CCP1 引 脚被清零。
公式8-3给出了最大PWM分辨率的计算方法,它是PR2 的函数。

公式 8-3 PWM 分辨率

8-3 PWM 频率和分辨率示例 (FOSC = 20 MHz

PWM 频率
定时器预分频比 (1, 4, 16PR2 值 最大分辨率 (位)
1:更改占空比将导致毛刺。
(1)
1.22 kHz
16 4 1 1 1 1
0xFF 0xFF 0xFF 0x3F 0x1F 0x17
10 10 10 8 7 6.6
4.88 kHz
(1)
19.53 kHz 78.12 kHz 156.3 kHz 208.3 kHz
OSC)。
分辩率
Resolution
注: 如果 PWM 占空比的值比 PWM 周期长,则
指定的 PWM 引脚将保持不变。
4 PR2 1+()[]log
------------------------------------------ bits=
2()log
2006 Microchip Technology Inc. 初稿 DS41249D_CN 61
PIC16F785/HV785
8.3.3 休眠模式下的操作
在休眠模式下,所有时钟源都被禁止。 Timer2 不再递 增,模块的状态也不会改变。如果 RC5/CCP1 引脚正在 驱动一个值,则会继续驱动该值。当器件被唤醒时,将 从该状态继续。
8.3.3.1 使用故障保护时钟监控器操作
如果使能故障保护时钟监控器,时钟故障将强制 CCP 从 内部振荡器时钟源(可能与主时钟的时钟频率不同)获 取时钟信号。
更多详细信息,请参见第 3.0 节 “时钟源”。
8.3.4 复位的影响
任何复位都将强制所有端口为输入模式,并强制 CCP 寄 存器为其复位状态。
8.3.5 设置 PWM 操作
如果要将 CCP 模块配置成工作于 PWM 模式,可采用 以下步骤:
1. 通过把 TRISC<5> 位置 1 将 PWM 引脚 (RC5/
CCP1)配置为输入。
2. 通过装载 PR2 寄存器设置 PWM 周期。
3. 通过装载相应的值到 CCP1CON 寄存器为 PWM
模式配置 CCP 模块。
4. 通过装载 CCPR1L 寄存器和 CCP1CON<5:4>
设置 PWM 占空比。
5. 配置及启动 TMR2
通过清零 TMR2IF 位(PIR1<1>)清零 TMR2
中断标志位。
通过装载 T2CKPS 位(T2CON<1:0>)设置 TMR2 预分频值。
通过将 TMR2ON 位置 1 T2CON<2>)使能
Timer2
6. 在新的 PWM 周期开始后使能 PWM 输出:
等待直到 TMR2 溢出 (TMR2IF 位置 1)。
通过清零 TRISC<5> 位使能 RC5/CCP1 引脚输
出。

8-4:与CCP 和 TIMER2 相关的寄存器

地址 名称
0Bh,
INTCON GIE PEIE
8Bh
0Ch PIR1
11h
TMR2
12h
T2CON TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
13h CCPR1L
14h CCPR1H
15h CCP1CON 87h TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 --11 1111 --11 1111
8Ch PIE1
92h PR2 图注: = 未实现的存储单元,读为 0u = 不变, x = 未知。 CCP Ti mer2 模块不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T0IE INTE RAIE T0IF INTF RAIF 0000 0000 0000 0000
EEIF ADIF CCP1IF C2IF C1IF OSFIF TMR2IF TMR1IF 0000 0000 0000 0000
Timer2 模块寄存器
捕捉 / 比较 /PWM 寄存器 1 低位字节
捕捉 / 比较 /PWM 寄存器 1 高位字节
DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 0000 0000
EEIE ADIE CCP1IE C2IE C1IE OSFIE TMR2IE TMR1IE 0000 0000 0000 0000
Timer2 模块周期寄存器
POR/BOR
时的值
0000 0000 0000 0000
xxxx xxxx uuuu uuuu xxxx xxxx uuuu uuuu
1111 1111 1111 1111
所有其他
复位值
DS41249D_CN 62 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

9.0 比较器模块

比较器模块有两个独立的电压比较器:比较器 1 C1) 和比较器 2 C2)。
每个比较器可以提供下列功能:
控制和配置寄存器
比较器输出外部有效
可编程输出极性
电平变化中断标志
从休眠状态唤醒
可配置为 PWM 的反馈输入
可编程 4 输入复用器
可编程 2 输入参考选择
可编程速度 / 电源
输出同步到 Timer1 时钟输入 (仅限比较器 C2

9.1 控制寄存器

两个比较器都有独立的控制和配置寄存器:C1 CM1CON0 C2 CM2CON0。此外,比较器 C2 还有 第二个控制寄存器 CM2CON1,用于两个比较器输出的 同步控制和同时读取。
9.1.1 比较器 C1 的控制寄存器
CM1CON0 寄存器(如寄存器 9-1 所示)包含以下控制
位和状态位:
比较器使能
比较器输入选择
比较器参考选择
输出模式
比较器速度
C1ONCM1CON0<7>)置 1 可以使能比较器 C1
C1CH<1:0> CM1CON0<1:0>)位可以从 4 个模拟引
AN<7:5,1> 中选择比较器输入。
注: 要使用 AN<7:5,1> 作为模拟输入,相应的
位必须在 ANSEL0 寄存器中编程为 1
C1R CM1CON0<2>)置 1 可将比较器参考电压模 块的 C1V 可选择 RA0/AN0/C1IN+/ICSPDAT 引脚上的 C1IN+ 输 入。
通过 C1OUT 标志 (CM1CON0<6>)使比较器的输出 内部有效。要使外部连接输出有效,必须将 C1OE 位
CM1CON0<5>)置 1
可以通过将 C1POL 位(CM1CON0<4>)置 1 使比较 器输出的极性反相。清零 C1POL 产生同相输出。
9-1给出了输出状态与输入条件及极性位的完整表格。
REF 输出选择为比较器的参考电压。清零 C1R

9-1 C1 输出状态与输入条件

输入条件
C1VN > C1VP 00 C1VN < C1VP 01 C1VN > C1VP 11 C1VN < C1VP 10
1: 比较器的内部输出在每个指令周期结束时
被锁存。外部输出不锁存。
2C1 中断将正确处理 C1OE 1 或清零的
情况。
3: 要在 RA2/AN2/T0CKI/INT/C1OUT 引脚输
C1:( C1OE = 1)、(C1ON = 1)且
TRISA<2> = 0)。
C1SP CM1CON0<3>)用于配置比较器的速度。当 C1SP 被置 1 时,比较器以正常速度工作。清零 C1SP
使比较器在更慢的低功耗模式下工作。
C1POL C1OUT
2006 Microchip Technology Inc. 初稿 DS41249D_CN 63
PIC16F785/HV785

9-1:比C1 的简化框图

C1CH<1:0>
RA1/AN1/C12IN0-/VREF/ICSPCLK
RC1/AN5/C12IN1-/PH1
RC2/AN6/C12IN2-/OP2
RC3/AN7/C12IN3-/OP1
RA0/AN0/C1IN+/ICSPDAT
C1VREF
1: 当 C1ON = 0 时, C1 比较器将生成 0 输出到 XOR 门控。
2: 图中的输出仅供参考。更多详细信息,请参见图 4-3
2
0
1
MUX
2
3
C1R
0
MUX
1
C1VN
C1VP
C1ON
C1
(1)
C1SP
C1POL
DQ
Q1
EN
Q3*RD_CM1CON0
NRESET
C1OUT
C1POL
数据总线
RD_CM1CON0
DQ
EN
CL
RA2/AN2/T0CKI/INT/C1OUT
C1IF 置 1
PWM 逻辑
C1OE
(2)
DS41249D_CN 64 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785

寄存器 9-1 CM1CON0:比较器 C1 的控制寄存器 0 (地址:119h

R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
C1ON C1OUT C1OE C1POL C1SP C1R C1CH1 C1CH0
bit 7 bit 0
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1-0
C1ON:比较器 C1 使能位
1 = C1 比较器使能 0 = C1 比较器禁止
C1OUT:比较器 C1 输出位 如果
C1POL = 1 (极性反相): C1OUT = 1C1VP < C1VN C1OUT = 0C1VP > C1VN
C1POL = 0 (极性同相):
如果
C1OUT = 1C1VP > C1VN C1OUT = 0C1VP < C1VN
C1OE:比较器 C1 输出使能位
1 = C1OUT 出现在 RA2/AN2/T0CKI/INT/C1OUT 引脚上 0 = C1OUT 仅在内部有效
C1POL:比较器 C1 输出极性选择位
1 = C1OUT 逻辑反相 0 = C1OUT 逻辑未反相
C1SP:比较器 C1 速度选择位
1 = C1 工作在正常速度模式下 0 = C1 工作在低功耗、慢速模式下
C1R:比较器 C1 参考选择位 (同相输入)
1 = C1VP 连接至 C1V 0 = C1VP 连接至 RA0/AN0/C1IN+/ICSPDAT
C1CH<1:0>:比较器 C1 通道选择位
00 = C1 C1VN 连接至 RA1/AN1/C12IN0-/VREF/ICSPCLK 01 = C1 C1VN 连接至 RC1/AN5/C12IN1-/PH1 10 = C1 C1VN 连接至 RC2/AN6/C12IN2-/OP2 11 = C1 C1VN 连接至 RC3/AN7/C12IN3-/OP1
REF 输出
(1)
1C1OUT 仅在以下情况时驱动 RA2/AN2/T0CKI/INT/C1OUT
C1OE = 1)、(C1ON = 1)且 (TRISA<2> = 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 65
PIC16F785/HV785
9.1.2 比较器 C2 的控制寄存器
CM2CON0 寄存器和 CM1CON0 寄存器的功能相同,如
9.1.1 节 “比较器 C1 的控制寄存器”中所述。第二 个控制寄存器CM2CON1 也用来控制另一个同步功能以 及两个比较器输出的镜像。
9.1.2.1 控制寄存器 CM2CON0
CM2CON0 寄存器 (如寄存器 9-2 所示)包含比较器 C2 的控制位和状态位。
C2ON CM2CON0<7>)置 1 可以使能比较器 C2
C2CH<1:0> CM2CON0<1:0>)位可以从 4 个模拟引
AN<7:5,1> 中选择比较器输入。
注: 要使用 AN<7:5,1> 作为模拟输入,相应的
位必须在 ANSEL0 寄存器中编程为 1
C2R CM2CON0<2>)用于选择比较器要使用的参考 输入。将 C2R CM2CON0<2>)置 1 可将比较器参考 电压模块的 C2VC2R 可选择 RC0/AN4/C2IN+ 引脚上的 C2IN+ 输入。
通过 C2OUT 位(CM2CON0<6>)使比较器的输出内 部有效。要使外部连接输出有效,必须将 C2OE
CM2CON0<5>)置 1
REF 输出选择为比较器的参考电压。清
可以通过将 C2POL 位(CM2CON0<4>)置 1 使比较 器输出 C2OUT 反相。清零 C2POL 产生同相输出。
9-2给出了输出状态与输入条件及极性位的完整表格。

9-2 C2 输出状态与输入条件

输入条件
C2VN > C2VP 00 C2VN < C2VP 01 C2VN > C2VP 11 C2VN < C2VP 10
1: 比较器的内部输出在每个指令周期结束时
被锁存。外部输出不锁存。
2C2 中断将正确处理 C2OE 1 或清零的
情况。 C2 中断并不要求外部输出。
3: 对于 RC4/C2OUT/PH2 上的 C2 输出:
C2OE = 1)、(C2ON = 1)且 (TRISA<4> = 0)。
C2SP CM2CON0<3>)用于配置比较器的速度。当 C2SP 被置 1 时,比较器以正常速度工作。清零 C2SP 使比较器在低功耗模式下工作。
C2POL C2OUT

9-2:比C2 的简化框图

C2CH<1:0>
RA1/AN1/C12IN0-/V
RC1/AN5/C12IN1-/PH1
RC2/AN6/C12IN2-/OP2
RC3/AN7/C12IN3-/OP1
REF/ICSPCLK
C2R
RC0/AN4/C2IN+
C2VREF
1: 当 C2ON = 0 时, C2 比较器将生成 0 输出到 XOR 门控。
2Timer1 门控 (见图 6-1)。 3: 图中的输出仅供参考。更多详细信息,请参见图 4-13
0
1
2
3
0
MUX
1
2
MUX
C2VN
C2VP
C2ON
C2SP
C2
C2POL
(1)
来自 TMR1 时钟
DQ
Q1
EN
Q3*RD_CM2CON0
NRESET
C2OUT
DQ
C2POL
DQ
EN
CL
C2SYNC
0
1
MUX
数据总线
RD_CM2CON0
C2IF 置 1
PWM 逻辑
C20E
RC4/C2OUT/PH2
SYNCC2OUT
(2)
(3)
DS41249D_CN 66 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785

寄存器 9-2 CM2CON0:比较器 C2 的控制寄存器 0 (地址:11Ah

R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
C2ON C2OUT C2OE C2POL C2SP C2R C2CH1 C2CH0
bit 7 bit 0
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1-0
C2ON:比较器 C2 使能位
1 = C2 比较器使能 0 = C2 比较器禁止
C2OUT:比较器 C2 输出位 如果
C2POL = 1 (极性反相): C2OUT = 1C2VP < C2VN C2OUT = 0C2VP > C2VN
C2POL = 0 (极性同相):
如果
C2OUT = 1C2VP > C2VN C2OUT = 0C2VP < C2VN
C2OE:比较器 C2 输出使能位
1 = C2OUT RC4/C2OUT/PH2 0 = C2OUT 仅在内部有效
C2POL:比较器 C2 输出极性选择位
1 = C2OUT 逻辑反相 0 = C2OUT 逻辑未反相
C2SP:比较器 C2 速度选择位
1 = C2 工作在正常速度模式下 0 = C2 工作在低功耗慢速模式下
C2R:比较器 C2 参考选择位 (同相输入)
1 = C2VP 连接至 C2V 0 = C2VP 连接至 RC0/AN4/C2IN+
C2CH<1:0>:比较器 C2 通道选择位
00 = C2 C2VN 连接至 RA1/AN1/C12IN0-/VREF/ICSPCLK 01 = C2 C2VN 连接至 RC1/AN5/C12IN1-/PH1 10 = C2 C2VN 连接至 RC2/AN6/C12IN2-/OP2 11 = C2 C2VN 连接至 RC3/AN7/C12IN3-/OP1
1C2OUT 仅在以下情况驱动 RC4/C2OUT/PH2
C2OE = 1)、(C2ON = 1)且 (TRISC<4> = 0)。
REF
(1)
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 67
PIC16F785/HV785
9.1.2.2 控制寄存器 CM2CON1
比较器 C2 还有另外一项功能,即其输出可以与 Timer1 的时钟输入同步。将 C2SYNC CM2CON1<0>)置 1 使比较器 2 的输出与 Timer1 时钟输入的下降沿同步(见 图 9-2 和寄存器 9-3)。
CM2CON1 寄存器也包含两个比较器输出的镜像副本 MC1OUT MC2OUTCM2CON1<7:6>)。从同一个
寄存器中同时读取两个输出的功能,可以消除从不同寄 存器读取的时间失真。
注: 通过读 CM2CON1 获取 C1OUT C2OUT
的状态并不影响比较器中断不匹配寄存 器。

寄存器 9-3 CM2CON1:比较器 C2 的控制寄存器 1 (地址:11Bh

R-0 R-0 U-0 U-0 U-0 U-0 R/W-1 R/W-0
MC1OUT MC2OUT T1GSS C2SYNC
bit 7 bit 0
bit 7
bit 6
bit 5-2
bit 1
bit 0
MC1OUTC1OUT 位的镜像副本 (CM1CON0<6> MC2OUTC2OUT 位的镜像副本 (CM2CON0<6>
未实现:读为 0 T1GSSTimer1 门控源选择位
1 = Timer1 门控源为 RA4/AN3/T1G/OSC2/CLKOUT 0 = Timer1 门控源为 SYNCC2OUT
C2SYNCC2 输出同步模式位
1 = C2 输出与 TMR1 时钟的下降沿同步 0 = C2 输出异步
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
DS41249D_CN 68 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785

9.2 比较器输出

通过 CM1CON0COM2CON0 或 CM2CON1 寄存器读 取比较器输出。 CM1CON0 CM2CON0 都包含比较 器 1 和比较器 2 的独立比较器输出。CM2CON2 包含两 个比较器输出的镜像副本,便于从两个比较器同步读 取。这些位是只读的。比较器输出也可以直接输出到
RA2/AN2/T0CKI/INT/C1OUT RC4/C2OUT/PH2 I/O 引脚。当被使能时,位于 RA2 RC4 引脚输出路
径中的多路复用器将切换,每个引脚输出均为比较器的 未同步输出。各个比较器的不确定性与规范中给出的输 入偏移电压和响应时间有关。图 9-1 和图 9-2 给出了比 较器 1 2 的输出框图。
在此模式下, TRIS 位仍将用作 RA2/AN2/T0CKI/INT/ C1OUT RC4/C2OUT/PH2 引脚输出的使能 / 禁止控 制位。
使用 C1POL C2POL 位(CMxCON0<4>)可改变比 较器输出的极性。
Timer1 门控源可配置为使用 T1G 引脚或比较器2 输出, 具体由 T1GSS 位(CM2CON1<1>)进行选择。Timer1 门控特性可用来对模拟事件的持续时间或时间间隔计 时。通过将 C2SYNC 位(CM2CON1<0>)置 1,比较2 的输出还可以与 Timer1 同步。当被使能时,比较器 2 的输出在 Timer1 时钟源的下降沿被锁存。如果 Timer1 使用了预分频器,比较器 2 在经过预分频器后被锁存。 为了防止竞争条件,比较器 2 输出在 Timer1 时钟源的下 降沿被锁存,而 Timer1 在其时钟源的上升沿递增。更多 信息,请参见比较器 2 框图 (图 9-2)和 Timer1 框图
(图 6-1)。
当比较器 2 用作Timer1门控源时,建议通过将 C2SYNC 位置 1 使比较器2 Timer1 同步。这样做可确保 Timer1 不会在比较器 2 在递增期间发生变化时,错过递增。

9.3 比较器中断

只要比较器输出值发生变化,相应的比较器中断标志位 就会置 1。需要用软件保存这些输出位的状态(从 CM2CON0<7:6> 读取),以确定实际发生的变化。CxIF 位(PIR1<4:3>)是比较器中断标志。必须用软件将比 较器中断位清零以进行复位。由于可以对该寄存器写入 1,因此可产生仿真中断。
必须将CxIE 位( PIE1<4:3>)和PEIE位(INTCON<6>) 置 1 以允许中断。此外,还必须将 GIE 位置 1。如果上 述位中有任何一位被清零,则无法允许中断,尽管中断 条件发生时仍会将 CxIF 位置 1
PIC16F785/HV785 的比较器中断和早期设计的不同之 处在于,标志位是根据不匹配边沿而不是不匹配电平置 1 的。这意味着不需要额外的读取或写入 CMxCON0 存器来将不匹配寄存器清零这一步骤,即可将中断标志 复位。当不匹配的寄存器尚未清零时,比较器输出返回 前一个状态时不发生中断。当不匹配的寄存器清零时, 比较器输出返回前一个状态将发生中断。
1: 在读操作执行过程中 (Q2 周期的起始时
刻),如果 CMxCON0 寄存器(CxOUT) 发生变化,那么 CxIF PIR1<4:3>)中断 标志位可能不会被置 1
2: 当两个比较器之一先使能时,比较器模块
中的偏置电路在稳定前可能产生比较器的 无效输出。应允许偏置电路有 1 µs 的稳定 时间,然后在使能比较器中断前将不匹配 条件和中断标志清零。

9.4 复位的影响

复位将强制所有寄存器进入复位状态。这会禁止两个比 较器。
2006 Microchip Technology Inc. 初稿 DS41249D_CN 69
PIC16F785/HV785

10.0 参考电压

PIC16F785/HV785 有两种可用的参考电压:被称为比 较器参考电压 (CV 压;被称为 VR 参考电压 (VR)的电压是来自稳定带 隙源的固定电压。每个参考源都可以分别内部路由到 RA1/AN1/C12IN0-/VREF/ICSPCLK 引脚上的比较器或 输出,包括经过缓冲或未经缓冲的。

10.1 比较器参考电压

比较器模块还允许为某一比较器输入选择内部产生的参 考电压。VRCON 寄存器(寄存器 10-1)用于控制参考 电压模块,如图 10-1 所示。
REF)的电压是基于 VDD 的可变电
10.1.1 配置参考电压
参考电压能输出 32 种不同的电压电平,其中 16 种属于 高电平范围,其余 16 种属于低电平范围。
可以使用下列公式确定输出电压:

公式 10-1 CVREF 输出电压

VRR = 1
VRR = 0
(低电平范围):
CVREF = VR<3:0> X VDD/24
(高电平范围):
CVREF = (VDD/4) + (VR<3:0> X VDD/32)
10.1.2 参考电压精度 / 误差
此模块的结构可以实现 VSS VDD 的满量程。梯形电 阻网络上方和下方的晶体管 (图 10-1)使 CVREF 不会 达到 VSS VDD。但通过清零所有 CVROEC1VRENC2VREN 禁止该模块时则例外。禁止时,参考电压
SS,此时 VR<3:0> 0000 VRR(VRCON<5>
V 位被置 1。这使得比较器可以检测到过零点,且不消耗
REF 模块的电流。
CV
参考电压来自 V 变化而变化。经过测试的比较器参考电压的绝对精度请 参见表 19-8
DD,因此, CVREF 输出会随着 VDD
DS41249D_CN 70 初稿  2006 Microchip Technology Inc.

10-1 比较器参考电压框图

V
DD
PIC16F785/HV785
16
8RRR RR
模拟
16-1
MUX
15
0
C1VREN
C2VREN
·
·
·
VR3:VR0
VR
1.2 V
1 请参见寄存器 10-1 bit 3-0
C1V
C2V
REF
比较器
输入
REF
比较器
输入
CVREN
CV
REF
CVROE
1
2
(1)
1 0
1 0

寄存器 10-1 VRCON:参考电压控制寄存器 (地址:99h

R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
C1VREN
(1)
C2VREN
bit 7 bit 0
(1)
VRR VR3 VR2 VR1 VR0
8R
VRR
bit 7
bit 6
bit 5
bit 4
bit 3-0
C1VREN:比较器 1 参考电压使能位
(1)
1 = CVREF 电路上电并路由到比较器 1 C1VREF 输入 0 = 1.2 VR 路由到比较器 1 C1V
C2VREN:比较器 2 参考电压使能位
REF 输入
(1)
1 = CVREF 电路上电并路由到比较器 2 C2VREF 输入 0 = 1.2 VR 路由到比较器 2 C2V
VRR:比较器参考电压 CV
REF 范围选择位
REF 输入
1 = 低电平范围 0 = 高电平范围
未实现:读为 0
VR<3:0>:比较器参考电压 CVVRR = 1 CVREN = 1 时:CV
REF 值选择 0 ≤ VR<3:0> ≤ 15
REF = (VR<3:0> x VDD/24)
VRR = 0 CVREN = 1 时:CVREF = (VDD/4) + (VR<3:0> x VDD/32)CxVREN = 0 VREN = 1 时:CxV
REF = 1.2V,来自 VR 模块
1:当 C1VRENC2VREN CVROE (寄存器 10-2)都为低电平时, CV
掉电且不提供 I
DD 电流。
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
REF 电路将
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 71
PIC16F785/HV785

10.2 VR 参考电压模块

VR 参考电压模块产生 1.2V 标称值输出电压,供 ADC 比较器使用。输出电压也可输送到 VREF 引脚,供用户 应用使用。该模块使用带隙值作为参考电压。关于详细 的规范,请参见表 19-9。寄存器 10-2 给出了 VR 模块的 控制寄存器。

寄存器 10-2 REFCON:参考电压控制寄存器 (地址:98h

U-0 U-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0
BGST VRBB VREN VROE CVROE
bit 7 bit 0
bit 7-6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
未实现:读为 0 BGST:带隙参考电压稳定标志位
1 = 参考电压稳定 0 = 参考电压不稳定
VRBB:参考电压缓冲旁路位
1 = VREF 输出没有经过缓冲。将电源从缓冲放大器移除。
REF 输出经过缓冲
0 = V VREN:参考电压使能位 (VR = 1.2V 标称值)
1 = VR 参考电压被使能 0 = VR 参考电压被禁止,不消耗任何电流
VROE:参考电压输出使能位 如果 CVROE = 0
1 = RA1/AN1/C12IN0-/VREF/ICSPCLK 引脚上的 VREF 输出是 1.2 VR 模拟参考电压 0 = 禁止, 1.2 VR 模拟参考电压仅在内部使用
CVROE = 1:
如果
VROE 没有影响。
CVROE:比较器参考电压输出使能位 (见图 10-2
1 = RA1/AN1/C12IN0-/VREF/ICSPCLK 引脚上的 VREF 输出是 CVREF 电压 0 = RA1/AN1/C12IN0-/VREF/ICSPCLK 引脚上的 VREF 输出由 VROE 控制
未实现:读为 0
1: 缓冲放大器共模限制要求 V
2PIC16HV785 器件的 VREN 位固定于高电平。
(1)
(2)
REF (VDD - 1.4)V,用于经过缓冲的输出。
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
DS41249D_CN 72 初稿  2006 Microchip Technology Inc.
10.2.1 VR 稳定周期
当参考电压模块使能时,需要一段时间使参考电压及其 放大电路达到稳定。用户程序必须包含允许模块稳定的 延时小程序。关于最小延时要求,请参见第 19.0 节“电 气规范”。

10-2 VR 参考电压框图

PIC16F785/HV785
VREN
EN
参考电压
RDY
CVREF
CVROE
1 0
BGST
VR
VRIN
1X
模拟 缓冲器
CV
(1)
VRBB
1
REF MUX
(CVROE + (VREN*VROE))
VROUT
0
RA1/AN1/C12IN0-/VREF
1: 经缓冲的输出需要 VRIN = (VDD - 1.4)V
2PIC16HV785 器件的 VREN 位固定于高电平。

10-1 与比较器和参考电压模块相关的寄存器

地址 名称
119h CM1CON0 C1ON C1OUT C1OE C1POL C1SP C1R C1CH1 C1CH0 0000 0000 0000 0000 11Ah CM2CON0 C2ON C2OUT C2OE C2POL C2SP C2R C2CH1 C2CH0 0000 0000 0000 0000
11Bh CM2CON1 MC1OUT MC2OUT
85h, 185h
87h, 187h
05h, 105h
07h, 107h
91h ANSEL0 ANS7 ANS6 ANS5 ANS4
0Ch PIR1
8Ch PIE1
98h REFCON
99h VRCON C1VREN C2VREN VRR 图注: x = 未知, u = 不变, - = 未实现,读为 0。比较器不使用阴影单元。
TRISA
TRISC
PORTA
PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T1GSS C2SYNC 00-- --10 00-- --10
TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 --11 1111
TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111
RA5 RA4 RA3 RA2 RA1 RA0 --xx xxxx --uu uuuu
ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111 EEIF ADIF CCP1IF C2IF C1IF OSFIF TMR2IF TMR1IF 0000 ---0 0000 ---0 EEIE ADIE CCP1IE C2IE C1IE OSFIE TMR2IE TMR1IE 0000 ---0 0000 ---0
BGST VRBB VREN VROE CVROE --00 000- --00 000-
VR3 VR2 VR1 VR0 000- 0000 000- 0000
POR/BOR
时的值
所有其他
复位值
2006 Microchip Technology Inc. 初稿 DS41249D_CN 73
PIC16F785/HV785
注:
DS41249D_CN 74 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

11.0 运算放大器 (OPA)模块

OPA 模块具有以下特性:
两个独立的运算放大器
外部连接到所有端口
•3 MHz增益带宽积 (Gain Bandwidth Product, GBWP

11.1 控制寄存器

OPA1CON 寄存器 (如 Register 11-1 中所示)用于控 制 OPA1OPA2CON(如 Register 11-2 中所示)用于 控制 OPA2

11-1 OPA 模块框图

RC7/AN9/OP1+
RC6/AN8/OP1-
RC3/AN7/C12IN3-/OP1

11.2 OPAxCON 寄存器

通过将 OPAON 位(OPAxCON<7>)置 1 来使能 OPA 模块。 OPAON 被使能时,会将 OPA1 RC3/AN7/ C12IN3-/OP1 以及 OPA2 RC2/AN6/C12IN2-/OP2 的 输出驱动器强制为三态,从而防止驱动器和 OPA 输出之 间的竞争。
注: OPA1 OPA2 被使能时, RC3/AN7/
C12IN3-/OP1 引脚或 RC2/AN6/C12IN2-/ OP2 引脚分别由运放输出驱动,而不是由 PORTC 驱动器驱动。请参见表 19-11 以获
取有关运放输出驱动器兼容性的电气规 范。
OPA1CON<OPAON>
OPA1
RB5/AN11/OP2+
RB4/AN10/OP2-
RC2/AN6/C12IN2-/OP2
ADC 和比较器 MUX
OPA2CON<OPAON>
OPA2
ADC 和比较器 MUX
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 75
PIC16F785/HV785

寄存器 11-1 OPA1CON:运放 1 的控制寄存器 (地址:11Ch

R/W-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
OPAON
bit 7 bit 0
bit 7
bit 6-0
OPAON:运放使能位
1 = 使能运放 1 0 = 禁止运放 1
未实现:读为 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知

寄存器 11-2 OPA2CON:运放 2 的控制寄存器 (地址:11Dh

R/W-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
OPAON
bit 7 bit 0
bit 7
bit 6-0
OPAON:运放使能位
1 = 使能运放 2 0 = 禁止运放 2
未实现:读为 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
DS41249D_CN 76 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785

11.3 复位的影响

泄漏电流是 OPA+ OPA- 输入上测得的小的拉电流或 灌电流。要最小化泄漏电流的影响,连接到 OPA+
器件复位将强制所有寄存器进入复位状态。这将同时禁 止两个运放。

11.4 OPA 模块性能

OPA 模块的常用 AC DC 性能规范:
共模电压范围
泄漏电流
输入失调电压
OPA- 输入的有效电阻应该尽可能小且相等。
输入失调电压是在闭环电路中,OPA 处在其线性区内时 测得的 OPA+ OPA- 输入之间的压差。在输出中将显 示为 DC 失调的失调电压等于输入失调电压乘以电路增 益。输入失调电压还受共模电压的影响。
开环增益是输出电压与差分输入电压((OPA+) - (OPA-)) 的比率。增益在 DC 时最大,并且随频率降低而下降。
增益带宽积或GBWP是开环增益下降至0 dB时的频率。
开环增益
增益带宽积 (GBWP
共模电压范围是 OPA+ OPA- 输入的指定电压范围, OPA 模块将在其规范内工作。 OPA 模块被设计为在 0
DD-1.4V 之间的输入电压下工作。大于 VDD-1.4V 或
V

11.5 休眠的影响

运放被使能时,它会在处理器处于休眠模式时继续工作 并消耗电流。
小于 0V 的共模电压就超出了正常工作范围。

11-1:与OPA 模块相关的寄存器

地址 名称
11Ch OPA1CON OPAON
11Dh OPA2CON OPAON
91h ANSEL0 ANS7 ANS6
93h ANSEL1
86h, 186h TRISB
87h, 187h TRISC TRISC7 TRISC6 图注: x = 未知, u = 不变, - = 未实现,读为 0。 OPA 模块不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0--- ---- 0--- ---- 0--- ---- 0--- ----
ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
ANS11 ANS10 ANS9 ANS8 ---- 1111 ---- 1111
TRISB7 TRISB6 TRISB5 TRISB4 1111 ---- 1111 ----
TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111
POR/BOR
时的值
所有其他
复位值
2006 Microchip Technology Inc. 初稿 DS41249D_CN 77
PIC16F785/HV785
注:
DS41249D_CN 78 初稿 2006 Microchip Technology Inc.

12.0 模数转换器 (A/D)模块

模数转换器(Analog-to-digital ConverterA/D)可将模 拟输入信号转换为相应的 10 位二进制表征值。 PIC16F785/HV785 12 个模拟 I/O 输入通道,加上 2 个内部输入通道,这些通道被多路转换到同一采样保持 电路。采样保持电路的输出与转换器的输入相连接。转 换器通过逐次逼近法产生二进制值,并将结果存入 10 位 寄存器。可通过软件方式选择 V 上的电压作为转换使用的参考电压。图 12-1 给出了 PIC16F785/HV785 A/D 的框图。

12-1 A/D 框图

DD 或施加在 VREF 引脚
VDD
VREF
PIC16F785/HV785
VCFG = 0 VCFG = 1
RA0/AN0/C1IN+/ICSPDAT
RA1/AN1/C12IN0-/V
RA2/AN2/T0CKI/INT/C1OUT
RA4/AN3/T1G/OSC2/CLKOUT
RC1/AN5/C12IN1-/PH1
RC2/AN6/C12IN2-/OP2
RC3/AN7/C12IN3-/OP1
REF/ICSPCLK
RC0/AN4/C2IN+
RC6/AN8/OP1-
RC7/AN9/OP1+
RB4/AN10/OP2-
RB5/AN11/OP2+
CVREF
VR
CHS<3:0>
0
A/D
GO/DONE
ADFM
(1)
ADON
13
1: 当 ADON = 0时,所有输入通道与 ADC 的连接被断开(不装入)。
VSS
ADRESH
10
10
ADRESL
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 79
PIC16F785/HV785

12.1 A/D 配置和操作

共有 4 个寄存器用于 A/D 模块各项功能的控制:
1. ANSEL0 (寄存器 12-1
2. ANSEL1 (寄存器 12-2
3. ADCON0 (寄存器 12-3
4. ADCON1 (寄存器 12-4
12.1.1 模拟端口引脚
ANS<11:0> 位(ANSEL1<3:0> ANSEL0<7:0>)和 TRISA<4,2:0>、TRISB<5:4> TRISC<7:6,3:0>> 位用
于控制 A/D 端口引脚的操作。将相应的 TRISx 位置 1 可 将引脚的输出驱动器置为高阻状态。同样,将相应的 ANSx 位置 1 可禁止数字输入缓冲器。
注: 在任何定义为数字输入的引脚上施加模拟
电压可能导致输入缓冲器的电流增大。
12.1.2 通道选择
PIC16F785/HV785 上共有 14 个模拟通道。CHS<3:0>
位(ADCON0<5:2>)用于控制与采样保持电路相连接 的通道。
12.1.3 参考电压
A/D 转换器的参考电压有两种选择:使用 VDD,或使用
施加在 VREF 上的模拟电压。VCFG 位( ADCON0<6>) 用于控制参考电压的选择。如果 VCFG 位置 1,则 VREF 引脚上的电压即为参考电压;否则,使用 VDD 作为参考 电压。
12.1.4 转换时钟
A/D转换周期需要11 个TAD。可通过软件方式设置ADCS
位(ADCON1<6:4>)来选择转换时钟源。有以下 7 时钟频率可供选择:
•F
OSC/2 OSC/4
•F
OSC/8
•F
•FOSC/16
OSC/32
•F
OSC/64
•F
•F
RC (专用内部振荡器)
为保证转换正确进行,选择的 A/D 转换时钟 (1/T 必须满足最小 1.6 µs TAD 要求。表 12-1 给出了选定 频率下的几种 T
AD 计算值。

12-1 TAD 与器件工作频率关系表

A/D 时钟源 (TAD 器件频率
工作频率
2 TOSC 000 100 ns
4 T
OSC 100 200 ns
8 TOSC 001 400 ns
16 T
OSC 101 800 ns
32 TOSC 010 1.6 µs6.4 µs 8.0 µs 64 TOSC 110 3.2 µs 12.8 µs
A/D RC x11 2-6 µs
图注: 阴影单元表示超出了建议范围。 注 1V
2: 这些值均违反了所需的最小 T 3: 为了加快转换速度,建议选用其他时钟源。 4: 当器件频率高于 1 MHz 时,仅当在休眠状态下进行转换时才推荐使用 A/D RC 时钟源。
ADCS2:ADCS0 20 MHz 5 MHz 4 MHz 1.25 MHz
(2)
(2)
(2)
(2)
(1), (4)
DD > 3.0V 时, A/D RC 源产生 4 µs 的典型 TAD 时间。
AD 时间。
2-6 µs
(2)
400 ns
(2)
800 ns
1.6 µs2.0 µs6.4 µs
3.2 µs4.0 µs 12.8 µs
(3)
(1), (4)
2-6 µs
500 ns
1.0 µs
16.0 µs
(1), (4)
(2)
(3)
(2)
(3)
1.6 µs
3.2 µs
25.6 µs
51.2 µs
2-6 µs
AD
(3)
(3)
(3)
(1), (4)
DS41249D_CN 80 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785
12.1.5 启动转换
通过将 GO/DONE 位(ADCON0<1>)置 1 启动 A/D 转 换。转换完成时, A/D 模块将:
GO/DONE
位清零
ADIF 标志位 (PIR1<6>)置 1
产生中断 (如果使能)

12-2 A/D 转换 TAD 周期

TCY 至 TAD
GO 位置 1
TAD1
TAD2
b9 b8 b7 b6 b5 b4 b3 b2
转换开始
保持电容从模拟输入通道断开连接(典型值为 100 ns
TAD3
TAD4
TAD5 TAD6
12.1.6 转换输出
A/D转换结果可以如下两种格式提供:左对齐或右对齐。 ADFM 位(ADCON0<7>)用于控制输出格式。图 12- 3 所示为输出格式。
如果必须要中止转换,则可用软件清零 GO/DONE
位。 在 A/D 转换采样全部结束之前, ADRESH:ADRESL 寄 存器中的内容将不会被更新,而是仍旧保留前一次的转 换结果。转换被中止后,必须经过 2 T
AD 的延时后才能
开始下一次数据采集。延时结束后,将自动开始对选定 通道进行输入采集。
注: 不应在启动 A/D 转换的同一条指令中将
GO/DONE
TAD7 TAD8
ADRESH ADRESL 寄存器被装入值, GO 位被清零, ADIF 位被置 1
保持电容与模拟输入通道相连接
TAD9
位置 1
TAD10
b1 b0
TAD11

12-3 10 A/D 结果格式

ADRESH ADDRESS:1Eh ADRESL ADDRESS:9Eh
ADFM = 0
ADFM = 1
MSB LSB
bit 7 bit 0 bit 7 bit 0
bit 7 bit 0 bit 7 bit 0
未实现:读为 0 10 A/D 结果
10 位 A/D 结果 未实现:读为 0
MSB LSB
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 81
PIC16F785/HV785

寄存器 12-1 ANSEL0:模拟选择寄存器 (地址:91h

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0
bit 7 bit 0
bit 7-0
ANS<7:0>:模拟选择位 可将 AN<7:0> 引脚的功能分别选为模拟或数字。
1 = 模拟输入。分配引脚为模拟输入。 0 = 数字 I/O。分配引脚为端口或特殊功能。
1: 将引脚设置为模拟输入将自动禁止数字输入电路、弱上拉和电平变化中断 (如果可
用)。必须将相应的 TRIS 位设置为输入模式,以允许从外部控制引脚电压。分配为 模拟输入的引脚的端口读数将读为 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
(1)

寄存器 12-2 ANSEL1:模拟选择寄存器 (地址:93h

U-0 U-0 U-0 U-0 R/W-1 R/W-1 R/W-1 R/W-1
ANS11 ANS10 ANS9 ANS8
bit 7 bit 0
bit 7-4
bit 3-0
未实现:读为 0 ANS<11:8>:模拟选择位
可将 AN<11:8> 引脚的功能分别选为模拟或数字。
1 = 模拟输入。分配引脚为模拟输入。 0 = 数字 I/O。分配引脚为端口或特殊功能。
1: 将引脚设置为模拟输入将自动禁止数字输入电路、弱上拉和电平变化中断 (如果可
用)。必须将相应的 TRIS 位设置为输入模式,以允许从外部控制引脚电压。分配为 模拟输入的引脚的端口读数将读为 0
(1)
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知

12-2 模拟选择对照表

模式 参考
模拟 选择
模拟 通道
I/O 引脚
DS41249D_CN 82 初稿  2006 Microchip Technology Inc.
ANS11 ANS10 ANS9 ANS8 ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0
AN11 AN10 AN9 AN8 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0
RB5 RB4 RC7 RC6 RC3 RC2 RC1 RC0 RA4 RA2 RA1 RA0
PIC16F785/HV785

寄存器 12-3 ADCON0A/D 控制寄存器 (地址:1Fh

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
ADFM VCFG CHS3 CHS2 CHS1 CHS0 GO/DONE
bit 7 bit 0
ADON
bit 7
bit 6
bit 5-2
bit 1
bit 0
ADFMA/D 结果格式选择位
1 = 右对齐 0 = 左对齐
VCFG:参考电压位
REF 引脚
1 = V
DD
0 = V
CHS<3:0>:模拟通道选择位
0000 = 通道 00 AN0 0001 = 通道 01 AN1 0010 = 通道 02 AN2 0011 = 通道 03 AN3 0100 = 通道 04 AN4 0101 = 通道 05 AN5 0110 = 通道 06 AN6 0111 = 通道 07 AN7 1000 = 通道 08 AN8 1001 = 通道 09 AN9 1010 = 通道 10 AN10 1011 = 通道 11 AN11
1100 =CV 1101 =VR
1110 = 保留。不要使用。 1111 = 保留。不要使用。
GO/DONE
1 = A/D 转换正在进行。将该位置 1 可启动 A/D 转换。 A/D 转换完成后,该位由硬件自动清零。 0 = A/D 转换已完成 / 未进行。
ADONA/D 使能位
1 = A/D 转换器模块正在运行 0 = A/D 转换器被关闭且不消耗工作电流
REF
A/D 转换状态位
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 83
PIC16F785/HV785

寄存器 12-4 ADCCON1A/D 控制寄存器 1 (地址:9Fh

U-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0
ADCS2 ADCS1 ADCS0
bit 7 bit 0
bit 7
bit 6-4
bit 3-0
未实现:读为 0 ADCS<2:0>A/D 转换时钟选择位
000 =F 001 =FOSC/8 010 =FOSC/32
x11 =F 100 =F
101 =FOSC/16 110 =FOSC/64
未实现:读为 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
OSC/2
RC (由专用内部振荡器产生的时钟,其频率的最大值为 500 kHz) OSC/4
DS41249D_CN 84 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785
12.1.7 配置 A/D
按要求配置好 A/D 模块后,在开始转换之前必须获得选 定的通道。必须将该模拟输入通道相应的 TRIS 位选择 作为输入。
要确定采样时间,请参见表 19-15 和表 19-16。在采样 时间到达后, A/D 转换即可开始。
应按照以下步骤进行 A/D 转换:
1. 配置 A/D 模块:
配置模拟 / 数字 I/O ANSx
选择 A/D 转换时钟 (ADCON1<6:4>
配置参考电压 (ADCON0<6>
选择 A/D 输入通道 (ADCON0<5:2>
选择结果格式 (ADCON0<7>
开启 A/D 模块 (ADCON0<0>
2. 配置 A/D 中断 (如果需要):
ADIF 位(PIR1<6>)清零
ADIE 位(PIE1<6>)置 1
PEIE GIE 位(INTCON<7:6>)置 1
3. 等待所需采集时间。
4. 启动转换:
GO/DONE
5. 等待 A/D 转换完成,可通过以下两种方法之一来
判断:
查询 GO/DONE 或者
等待 A/D 转换完成中断
6. A/D 结果寄存器对(ADRESH:ADRESL),需 要时,将 ADIF 位清零。
7. 要进行下一次转换,按要求转入步骤 1 或步骤 2。
每位的 A/D 转换时间定义为 T 开始前需要等待至少 2 TAD 的时间。
位(ADCON0<1>)置 1
位是否被清零(已禁止中断);
AD。在下一次采样

12-1 A/D 转换

;This code block configures the A/D ;for polling, Vdd reference, R/C clock ;and RA0 input. ; ;Conversion start and wait for complete ;polling code included. ; BCF STATUS,RP1 ;Bank 1 BSF STATUS,RP0 ; MOVLW B’01110000’ ;A/D RC clock MOVWF ADCON1 BSF TRISA,0 ;Set RA0 to input BSF ANSEL0,0 ;Set RA0 to analog BCF STATUS,RP0 ;Bank 0 MOVLW B’10000001’ ;Right, Vdd Vref, AN0 MOVWF ADCON0 CALL SampleTime ;Wait min sample time BSF ADCON0,GO ;Start conversion BTFSC ADCON0,GO ;Is conversion done? GOTO $-1 ;No, test again MOVF ADRESH,W ;Read upper 2 bits MOVWF RESULTHI BSF STATUS,RP0 ;Bank 1 MOVF ADRESL,W ;Read lower 8 bits BCF STATUS,RP0 ;Bank 0 MOVWF RESULTLO
2006 Microchip Technology Inc. 初稿 DS41249D_CN 85
PIC16F785/HV785

12.2 A/D 采集要求

为了使 A/D 转换器达到规定的精度,必须使充电保持电 容(CHOLD)充满至输入通道的电平。模拟输入模型见12-4。源阻抗 (RS)和内部采样开关 (RSS)阻抗 直接影响电容 C 抗随器件电压 (VDD)的变化而变化,参见图 12-4。建 议模拟信号源的最大阻抗为 10 kΩ。采集时间随着阻抗 的降低而缩短。在选择(改变)模拟输入通道后,必须 在开始转换前完成采集。

公式 12-1 采集时间示例

假设:
C
T
HOLD 的充电时间。采样开关(RSS)阻
温度
= 50°C
ACQ =
T
= TAMP + TC + TCOFF
= 5µs + TC + [(
,外部电阻
放大器稳定时间
温度
值可以用以下公式近似计算:
VAPPLIED 1
 
VAPPLIED
1
------------
2047
TC
 
--------- -
RC
1
e
10 kΩ5.0V V
+
保持电容充电时间
- 25°C)(0.05µs/°C)]
VCHOLD=
VCHOLD=

Tc
---------
VAPPLIED
 
RC
1
e
VAPPLIED 1
=

可以使用公式 12-1 来计算最小采集时间。该公式假设误 差为 1/2 LSbA/D 转换需要 1024 步)。1/2 LSb 误差是 A/D 达到规定精度所允许的最大误差。
要计算最小采集时间 T 系列参考手册》(DS33023_CN)。
DD
+
温度系数
;[1] 在1/2 lsb
;[2]
依照
1
-----------­2047
;
结合
 
ACQ,请参见《PIC
误差范围内对
VAPPLIED对VCHOLD
[1]和[2]
®
中档单片机
VCHOLD
充电
充电
求解
TC
T
C = - CHOLD(R1C + RSS + RS)ln(1/2047)
= - 10 pF(1 k
µ
= 1.37
+ 7 kΩ + 10 kΩ)ln(0.0004885)
s
因此:
ACQ = 5
T
1:因为参考电压 (VREF)自行抵消,因此它对该公式没有影响。
2: 充电保持电容 (C 3: 建议模拟信号源的最大阻抗为 10 kΩ.。这必须符合引脚泄漏电流规范。
µ
s + 1.37µs + [(50°C - 25°C)(0.05 µs/°C)]
= 7.67 µs
HOLD)在每次转换结束时不会放电。
DS41249D_CN 86 初稿  2006 Microchip Technology Inc.

12-4 模拟输入模型

ANx
S
R
CPIN 5 pF
输入电容 门限电压
由于各结点产生的引脚 泄漏电流
互连电阻 采样开关 采样 / 保持电容(来自 DAC
图注: CPIN =
V
T =
I
LEAKAGE =
IC =
R SS = C
HOLD =
VA
V
DD
VT = 0.6V
V
T = 0.6V
RIC 1k
I
LEAKAGE
±500 nA
PIC16F785/HV785
采样开关
SS
RSS
HOLD
C = DAC 电容 = 10 pF
V
SS
6V 5V
DD
4V
V
3V 2V
RSS
567891011
采样开关
kΩ
2006 Microchip Technology Inc. 初稿 DS41249D_CN 87
PIC16F785/HV785

12.3 休眠状态下的 A/D 转换

A/D 转换器模块可以在休眠状态下工作。这需要把 A/D 转换时钟设置成 FRC 选项。选择 RC 时钟源后,A/D 需 等待一个指令周期后才能启动转换操作。这就允许执行 一条 SLEEP 休眠指令,从而消除转换过程中的切换噪 声。转换结束后,GO/DONE 装入 ADRESH:ADRESL 寄存器。如果使能了 A/D 中断
ADIE PEIE 位置 1),器件将从休眠状态唤醒。如
GIE 位(INTCON<7>)被置 1,程序计数器将被设 置为中断向量 (0004h)。如果 GIE 位被清零,将执行 下一条指令。如果 A/D 中断未使能,即使 ADON 位保 持置 1A/D 模块也将被关闭。

12-5 A/D 转换功能

位被清零,且转换结果被
满量程
3FFh
3FEh
3FDh
3FCh
3FBh
如果 A/D 时钟源为非 RC 方式, SLEEP 指令将导致当 前转换操作中止,并使 A/D 模块关闭。ADON 位保持置
1 状态。
1 LSB 理想状况
满量程
004h
A/D 输出代码
003h
002h
001h
000h
1 LSB 理想状况
0V
零量程 转换
转换
模拟输入电压
REF
V
DS41249D_CN 88 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785

12.4 复位的影响

器件复位将强制所有寄存器进入复位状态。因此, A/D 模块将被关闭,任何进行中的转换操作被中止。 ADRESH:ADRESL 寄存器中的值不变。

12.5 CCP 触发器的使用

必须选择适当的模拟输入通道并在 “特殊事件触发器” 将 GO/DONE
位置 1(启动转换)前完成最小采集时间。
如果 A/D 模块未使能(ADON 被清零),则“特殊事件 触发器”将被A/D 模块忽略,但仍会使 Timer1 计数器复 位。更多信息,请参见第 8.0 节“捕捉 / 比较 /PWM
CCP)模块”。
A/D 转换可以通过 CCP 模块的 “特殊事件触发器”来 启动。这要求 CCP1M3:CCP1M0
CCP1CON<3:0>)设置为 1011 并且使能 A/D 模块 (ADON 位置 1)。当触发信号产生后,GO/DONE
位被 置 1,启动 A/D 转换,并且 Timer1 计数器被复位为 0Timer1被复位以便用最小的软件开销自动重复 A/D 采集 周期 (将 ADRESH:ADRESL 移至目标位置)。

12-3 A/D 寄存器汇总

地址 名称
05h,105h PORTA
06h,106h PORTB
07h,107h PORTC RC7 RC6 0Bh,8Bh,
10Bh,18Bh
0Ch PIR1
1Eh ADRESH
1Fh ADCON0 ADFM VCFG CHS3 CHS2 CHS1 CHS0 GO/DONE
85h,185h TRISA
86h,186h TRISB
87h,187h TRISC TRISC7 TRISC6
8Ch PIE1 91h ANSEL0 ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
93h ANSEL1
9Eh ADRESL
9Fh ADCON1 图注: x = 未知, u = 不变, - = 未实现,读为 0。 A/D 模块不使用阴影单元。
INTCON GIE PEIE
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
RA5 RA4 RA3 RA2 RA1 RA0 --xx xxxx --uu uuuu
RB7 RB6 RB5 RB4 xxxx ---- uuuu ----
RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu T0IE INTE RAIE T0IF INTF RAIF 0000 0000 0000 0000
EEIF ADIF CCP1IF C2IF C1IF OSFIF TMR2IF TMR1IF 0000 0000 0000 0000
左对齐 A/D 结果的高 8 位或右对齐 A/D 结果的高 2
ADON 0000 0000 0000 0000
TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 --11 1111
TRISB7 TRISB6 TRISB5 TRISB4 1111 ---- 1111 ----
TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111
EEIE ADIE CCP1IE C2IE C1IE OSFIE TMR2IE TMR1IE 0000 0000 0000 0000
ANS11 ANS10 ANS9 ANS8 ---- 1111 ---- 1111
左对齐 A/D 结果的低 2 位或右对齐 A/D 结果的低 8
ADCS2 ADCS1 ADCS0 -000 ---- -000 ----
POR/BOR
时的值
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
所有其他
复位值
2006 Microchip Technology Inc. 初稿 DS41249D_CN 89
PIC16F785/HV785
注:
DS41249D_CN 90 初稿 2006 Microchip Technology Inc.
PIC16F785/HV785

13.0 双相 PWM

双相 PWM(脉宽调制器)是一种独立的外设,它支持:
单相或双相 PWM
带重叠 / 延时的单互补输出 PWM
同步输入 / 输出到级联器件以获得更多相位
PWMCON0 寄存器的 PH1EN PH2EN 这两位中的 一位或两位置 1 将激活 PWM 模块 (见寄存器 13-1)。 如果使用了 PH1,则必须清零 TRISC<1> 才能将引脚配 置为输出。使用 PH2 时,也要对 TRISC<4> 执行此操 作。使用互补模式时,必须同时将 PH1EN PH2EN1

13.1 PWM 周期

PWM 周期产生自主时钟 (FOSC)、 PWM 预分频器和 周期计数器 (见图 13-1)。预分频位 (PWMP<1:0>, 见寄存器 13-2)决定时钟分频的值,它会将系统时钟
F
OSC)分频为 pwm_clk。该 pwm_clk 用于驱动 PWM
计数器。在主控模式下,当计数达到决定 PWM 频率的 周期计数值 (PER<4:0>,见寄存器 13-2)时, PWM 计数器将被复位。PWM频率、分频比和周期计数值之间 的关系如公式 13-1 所示。

公式 13-1 PWM 频率

PWM
由于周期计数值必须大于 0,所以 PWM 的最大频率为 FOSC/2
在从动模式下,周期计数器将 SYNC 输入复位,SYNC 输入会将主控器件周期计数器复位。为了确保操作正 确,从动周期计数值应该大于等于主控周期计数值。
FREQ
=

13.2 PWM 相位

当相位计数器与相应的 PWM 相位计数值(PH<4:0>, 见寄存器 13-3 和寄存器 13-4)匹配时,所有使能的相 位输出都将被驱动为有效。相位输出始终保持有效,直 到被比较器或自动关闭激活信号的任一反馈信号终止为 止。
相位粒度 (Granularity)是周期计数值的函数。例如, 如果 PER<4:0> = 3,则所有输出都将移位 90 度(见 公式 13-2)。
(2
PWMP
FOSC
• (PER + 1)

公式 13-2 相位分辩率

Phase
DEG
=
360
(PER + 1)

13.3 PWM 占空比

异步反馈信号经过内部比较器将每个 PWM 输出驱动为 无效,从而终止驱动周期。这样就可将占空比分辨率进 行无极调整。将相应的比较器使能位 (CxEN,见 寄存器 13-3)置 1 可使用两个比较器中的一个或两个来 复位 PWM。可以通过禁止反馈信号来达到 100% 占空 比,否则反馈信号会终止脉冲。
使能各相位相应的 BLANK 位(BLANKx,见寄存器 13-1), 比较器的输出可被 “阻挡”或输出为空。 BLANK 位禁 止比较器输出长达 1/2 个系统时钟(F
PWM 输出至少有 Tosc/2 时间有效。空输出能够避免 PWM 输出因周期开始时的开关瞬态响应而导致的过早 终止。
OSC),从而确保

13.4 主控 / 从动操作

多个芯片可以一起运行(将一个作为主芯片,而其他的 作为从芯片运行)以获取更多相位。如果将 PWM 配置 为主控,则RB7/SYNC引脚为输出,并且将在每个PWM 周期结束时产生一个时长为pwm_clk 周期的高电平输出
(见图 13-4)。
如果将 PWM 配置为从动,则 RB7/SYNC 引脚为输入。 此配置中来自于主器件的高电平输入将复位 PWM 周期 计数器,该计数器用于在每个 PWM 周期结束时同步从 单元。要正确运行从器件,需要有一个公共的外部 F 时钟源来驱动主器件和从器件。从器件的 PWM 预分频 值必须与主器件的预分频值相同。如前所述,从动周期 计数值必须大于或等于主控周期计数值。
PH1EN PH2EN PWMCON0<1:0>)无效时, PWM 计数器被复位并保持为零。如果将 PWM 配置为 从动,则 PWM 计数器将保持复位为零,直到接收到第 一个 SYNC 输入信号为止。
OSC
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 91
PIC16F785/HV785

13.5 有效的 PWM 输出电平

可以通过置 1 或复位相应的 POL 位(见寄存器 13-3 和 寄存器 13-4)可 将 PWM 输出信号设置为高电平有效或 低电平有效。如果 POL 1,则有效输出状态为 VOL。 如果 POL 0,则有效输出状态为 V
OH

13.6 自动关闭与自动重新启动

使能 PWM 时,可通过将 PASEN 位置 1(见寄存器 13-1PWM 输出配置为自动关闭模式。如果使能了自动关 闭,则 RA2/AN2/T0CKI/INT/C1OUT 引脚上的 V 引发关闭事件。自动关闭事件会立即使 PWM 输出处于 无效状态 (见第 13.5 节“有效的PWM 输出电平”), 而且 PWM 相位和周期计数器被复位并保持为零。

13-1:双PWM 简化框图

PWMP<1:0>
FOSC
÷1,2,4,8
预分频
pwm_clk
IL 能够
PH1EN
PH2EN
PWMASE
PASEN
相位 计数器
5
当关闭事件发生时,PWMASE 位(见寄存器 13-2)由 硬件置 1。如果自动重新启动未使能(PRSEN = 0,见 寄存器 13-1), 则 PWM 操作将不会恢复,直到在关闭 条件被清除后 PWMASE 位被固件清零为止。只要关闭 条件存在就不能清零 PWMASE 位。如果自动重新启动 未使能,则可通过向 PWMASE 位写入 1 来强制执行自 动关闭模式。
如果使能了自动重新启动(PRSEN = 1),则 PWMASE 位将自动清零,并且 PWM 操作将在自动关闭事件被清 零后恢复 (V
IH 在 RA2/AN2/T0CKI/INT/C1OUT 引脚
上)。
关闭
PER<4:0>
pwm_count
5
主控
0 1
S
M
RB7/SYNC
BLANK1
C1OUT
C2OUT
1: 复位优先。
PWMPH1<C1EN>
PWMPH1<C2EN>
BLANK2
PWMPH2<C1EN>
PWMPH2<C2EN>
PWMPH1<4:0>
关闭
PH1EN
PWMPH2<4:0>
关闭
PH2EN
PWMPH1<POL>
5
S
pha1
Q
(1)
R
5
S
pha2
Q
(1)
R
RC1/AN5/C12IN1-/PH1
PWMPH2<POL>
RC4/C2OUT/PH2
DS41249D_CN 92 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785

寄存器 13-1 PWMCON0PWM 控制寄存器 0 (地址:111h

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
PRSEN PASEN BLANK2 BLANK1 SYNC1 SYNC0 PH2EN PH1EN
bit 7 bit 0
bit 7
bit 6
bit 5
bit 4
bit 3-2
bit 1
bit 0
PRSENPWM 重新启动使能位
1 = 自动关闭时,一旦清除了关闭条件,PWMASE 关闭位将自动清零。PWM 将自动重新启动。 0 = 自动关闭时,必须在固件中清零 PWMASE 以重新启动 PWM
PASEN PWM 自动关闭使能位
0 = 禁止 PWM 自动关闭 1 = INT 引脚上的V
BLANK2PH2 空输出位
1 = 1 后, PH2 引脚至少在 1/2 FOSC 时钟周期内有效 0 = 比较器触发有效后立即复位 PH2 引脚
BLANK1PH1 空输出位
1 = 1 后, PH1 引脚至少在 1/2 FOSC 时钟周期内有效 0 = 比较器触发有效后立即复位 PH1 引脚
SYNC<1:0>SYNC 引脚功能位
0X = SYNC 引脚不用于 PWMPWM 充当其自身的主单元。RB7/SYNC 引脚可用于通用 I/O 10 = SYNC 引脚充当系统从单元,接收 PWM 计数器复位脉冲 11 = SYNC 引脚充当系统主单元,驱动 PWM 计数器复位脉冲
PH2ENPH2 引脚使能位
1 = PH2 引脚由 PWM 信号驱动 0 = PH2 引脚不用于 PWM 功能
PH1ENPH1 引脚使能位
1 = PH1 引脚由 PWM 信号驱动 0 = PH1 引脚不用于 PWM 功能
1: 在互补模式下操作时空输出被禁止。更多信息,请参见 PWMCON1 寄存器
IL 将引发自动关闭事件
(1)
(1)
(寄存器 13-5)中的 COMOD<1:0> 位。
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 93
PIC16F785/HV785

寄存器 13-2 PWMCLKPWM 时钟控制寄存器 (地址:112h

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
PWMASE PWMP1 PWMP0 PER4 PER3 PER2 PER1 PER0
bit 7 bit 0
bit 7
bit 6-5
bit 4-0
PWMASE: PWM 自动关闭事件状态位
0 = PWM 输出正在工作 1 = 关闭事件已发生。 PWM 输出无效。
PWMP<1:0>PWM 时钟预分频位
00 = pwm_clk = F 01 = pwm_clk = FOSC ÷ 2 10 = pwm_clk = F 11 = pwm_clk = FOSC ÷ 8
PER<4:0>PWM 周期位
00000 = 不使用。(周期 = 1/pwm_clk 00001 = 周期 = 2/pwm_clk2
0.... = . . .
01111 = 周期 = 16/pwm_clk 10000 = 周期 = 17/pwm_clk
1.... = . . .
11110 = 周期 = 31/pwm_clk 11111 = 周期 = 32/pwm_clk
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
OSC ÷ 1
OSC ÷ 4
DS41249D_CN 94 初稿  2006 Microchip Technology Inc.
PIC16F785/HV785

寄存器 13-3 PWMPH1PWM 1 相的控制寄存器 (地址:113h

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
POL C2EN C1EN PH4 PH3 PH2 PH1 PH0
bit 7 bit 0
bit 7
bit 6
bit 5
bit 4-0
POL: PH1 输出极性位
1 =PH1引脚低电平有效 0 =PH1引脚高电平有效
C2EN:比较器 2 使能位
COMOD<1:0> = 00 时
(1)
1 = C2OUT 变为高电平时 PH1 将复位 0 =PH1将忽略比较器 2
COMOD<1:0> = X1 时
(1)
1 = C2OUT 变为高电平时互补驱动器将终止 0 = 比较器 2 被忽略
COMOD<1:0> = 10 时
(1)
C2EN 不起作用
C1EN:比较器 1 使能位COMOD<1:0> = 00
(1)
1 = C1OUT 变为高电平时 PH1 将复位 0 =PH1将忽略比较器 1
COMOD<1:0> = X1 时
(1)
1 = C1OUT 变为高电平时互补驱动器将终止 0 = 比较器 1 被忽略
COMOD<1:0> = 10
(1)
C1EN 不起作用
PH<4:0>PWM 相位位COMOD<1:0> = 00
(1)
00000 = 在SYNC脉冲的下降沿后,PH1将开始1pwm_clk周期。所有其他PH1 延时都是
相对于该时间表示的。
00001 =PH11 pwm_clk 脉冲延时
..... = . . .
11111 =PH131 pwm_clk 脉冲延时
COMOD<1:0> = X1 或 1X
(1)
00000 = 在SYNC脉冲的下降沿后,互补驱动器将开始 1 pwm_clk 周期。所有其他延时都
是相对于该时间表示的。
00001 = 互补驱动器的启动有 1 pwm_clk 脉冲延时
..... = . . .
11111 = 互补驱动器的启动有 31 pwm_clk 脉冲延时
1: 请参见 PWMCON1 寄存器 (寄存器 13-5)。
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 95
PIC16F785/HV785

寄存器 13-4 PWMPH2PWM 2 相的控制寄存器 (地址:114h

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
POL C2EN C1EN PH4 PH3 PH2 PH1 PH0
bit 7 bit 0
bit 7
bit 6
bit 5
bit 4-0
POL: PH2 输出极性位
1 =PH2引脚低电平有效 0 =PH2引脚高电平有效
C2EN:比较器 2 使能位
COMOD<1:0> = 00 时
1 = C2OUT 变为高电平时 PH2 将复位 0 =PH2将忽略比较器 2
COMOD<1:0> = 1X 或 X1
C2EN 不起作用
C1EN:比较器 1 使能位COMOD<1:0> = 00
1 = C1OUT 变为高电平时 PH2 将复位 0 =PH2将忽略比较器 1
COMOD<1:0> = 1X 或 X1
C1EN 不起作用
PH<4:0>PWM 相位位COMOD<1:0> = 00
00000 = 在SYNC脉冲的下降沿后,PH2将开始1pwm_clk周期。所有其他PH2延时都是
相对于该时间表示的。
00001 =PH21 pwm_clk 脉冲延时
..... = . . .
11111 =PH231 pwm_clk 脉冲延时
COMOD<1:0> = 1X 时
00000 = 在 SYNC 脉冲的下降沿后,互补驱动器将终止 1 pwm_clk 周期。所有其他 PH2
延时都是相对于该时间表示的。
00001 = 互补驱动器的终止有 1 pwm_clk 脉冲延时
..... = . . .
11111 = 互补驱动器的终止有 31 pwm_clk 脉冲延时
COMOD<1:0> = 01
PH<4:0> 不起作用
1: 请参见 PWMCON1 寄存器 (寄存器 13-5)。
(1)
(1)
(1)
(1)
(1)
(1)
(1)
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
- n = POR 1 = 10 = 清零 x = 未知
DS41249D_CN 96 初稿  2006 Microchip Technology Inc.

13-2:双PWM 自动关闭与同步时序

FOSC
PIC16F785/HV785
PWMP<1:0> = 0
pwm_clk
pwm_count
SYNC
主控
Phase1 设置:PH<4:0> = 0x00, C1EN = 1, BLANK1 = 0
pha1
SHUTDOWN
pwm_clk
pwm_count
从动
Phase2 设置:PH<4:0> = 0x02, C2EN = 1, BLANK2 = 1
pha2
X01, PER<4:0> = 0X03
01 012 3 012
01

13-3:双PWM 启动时序

FOSC
2
2
012
3
012
3
3 0
0
PWMP<1:0> = 0
pwm_clk
pwm_count
SYNC
主控
PHnEN
pwm_clk
pwm_count
从动
PHnEN
X01, PER<4:0> = 0X03
0
0
1 2
1
3 01
3
2
01
02
2
3
2006 Microchip Technology Inc. 初稿 DS41249D_CN 第 97
PIC16F785/HV785

13.7 单相应用示例

13-4 给出了单相降压稳压器应用的示例。PWM 输出 通过脉冲驱动 Q1 交替对 L1 充放电。在驱动周期无效循 环期间,C4 将存储 L1 的电荷。R4 和 C3 形成斜波发生 器。
PWM 周期开始时,PWM 输出将变为高电平,使 C3 的电压与 L1 的电流同时上升。如果 C3 两端的电压达到 比较器 1 正极输入处的门限电平,则比较器输出将发生 变化,并终止 PWM Q1 的驱动输出。如果不驱动 Q1, 则 Q1 L1 的电流路径将被中断,但是由于 L1 中的电 流不能立即停止,所以在 L1 C4 放电时,电荷会继续 流过 D2D1 将快速使 C3 放电以准备进行下一个充电 周期。

13-4 单相应用示例

R1
C1
CCP
VR
R2
OPA1
PIC16F785
FOSC
电阻分压器 R5 R6 按比例调整输出电压,输出电压 是由运放 1 反相并放大,与运放的同相引脚处的参考电 压相关。 R3C5 C2 组成了放大器的反相稳定增益 反馈电路。 VR 参考电压向运放的同相输入提供稳定的 参考电压,它是由电压源 (由 CCP 的基于辅助时基的 PWM 输出以及 R1 C1 建立)调整的。
输出稳定度根据以下原则发生:如果稳压器输出电压过 低,则比较器 1 的同相输入的电压就会上升,从而提高 门限电压而使进入 Q1 PWM 驱动脉冲加宽。如果输出 电压过高,则比较器 1 的同相输入的电压就会降低,使 进入 Q1 PWM 驱动脉冲变窄。
VUNREG
C2
C5
R3
C1
双相
PWM
PH1
R4
C3
FET
驱动器
D1
Q1
L1
C4
D2
R5
R6
DS41249D_CN 98 初稿  2006 Microchip Technology Inc.
Loading...