MICROCHIP PIC16F946 Technical data

PIC16F946
数据手册
带有 LCD 驱动器
采用纳瓦技术的
64 引脚 8 CMOS 闪存单片机
2006 Microchip Technology Inc. 初稿 DS41265A_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
•Microchip的产品均达到 Microchip 数据手册中所述的技术指标。
•Microchip确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的 操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•Microchip愿与那些注重代码完整性的客户合作。
•Microchip或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视 为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的
软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含 的英文部分,因为其中提供了有关 Microchip 产品性能和使用
任何差错不承担任何责任。建议参考 Microchip Technology Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便 利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或 暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用 性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。如果将 Microchip 器件用于生命 维持和 / 或生命安全应用,一切风险由买方自负。买方同意在 由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障
Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识 产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron dsPIC、 K
EELOQ、 microID、 MPLAB、 PIC、 PICmicro、
PICSTARTPRO MATEPowerSmartrfPIC SmartShunt 均为 Microchip Technology Inc. 在美国和其他国
家或地区的注册商标。
AmpLabFilterLabMigratable MemoryMXDEV MXLABSEEVAL、SmartSensor The Embedded Control Solutions Company 均为 Microchip Technology Inc. 在美国的
注册商标。
Analog-for-the-Digital AgeApplication Maestro dsPICDEMdsPICDEM.netdsPICworksECAN ECONOMONITORFanSenseFlexROMfuzzyLAB In-Circuit Serial Programming、 ICSP、 ICEPIC、 Linear
Active Thermistor、 Mindi、 MiWi、 MPASM、 MPLIB、 MPLINKPICkitPICDEMPICDEM.netPICLAB
PICtailPowerCalPowerInfoPowerMatePowerTool REAL ICE、 rfLAB、 rfPICDEM、 Select Mode、 Smart
SerialSmartTel、 Total Endurance、 UNI/O、 WiperLock 和 ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地
区的商标。 SQTP Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。
© 2006, Microchip Technology Inc. 版权所有。
Microchip Gresham
晶圆生产厂均通过了 位单片机、 性存储器和模拟产品方面的质量体系流程均符合
16949:2002
系也已通过了
位于美国亚利桑那州
及位于加利福尼亚州
ISO/TS-16949:2002
®
KEELOQ
跳码器件、串行
。此外,
Microchip
ISO 9001:2000
Chandler和Tem pe
Mountain View
EEPROM
在开发系统的设计和生产方面的质量体
认证。
、位于俄勒冈州
的全球总部、设计中心和
认证。公司在
PICmicro
、单片机外设、非易失
ISO/TS-
®
8
DS41265A_CNii 初稿  2006 Microchip Technology Inc.
PIC16F946
带有 LCD 驱动器、采用纳瓦技术的
64 引脚 8 CMOS 闪存单片机
高性能 RISC CPU
仅需学习 35 条指令:
- 除跳转指令外的所有指令都是单周期的
工作速度:
- 振荡器 / 时钟的输入频率为 DC20 MHz
- 指令周期为 DC200 ns
程序存储器读取 (Program Memory Read PMR)功能
中断功能
• 8 级深硬件堆栈
直接、间接和相对寻址模式
单片机的特性:
高精度内部振荡器:
- 出厂时精度校准为 ±1%
- 可用软件选择的频率范围为 32 kHz 8MHz
- 可用软件调节
- 双速启动模式
- 适用于关键应用的晶振故障检测
- 工作时可进行时钟模式切换以节能
节能的休眠模式
宽工作电压范围 (2.0V 到 5.5V)
工业级和扩展级温度范围
上电复位 (Power-on Reset, POR)
上电延时定时器 (Power-up Timer, PWRT)和 振荡器起振定时器 (Oscillator Start-up Timer OST
带软件控制选择的欠压复位 (Brown-out Reset BOR
带片上振荡器 (振荡器频率可由软件选择,当预
分频比最大时其标称值为 268 秒)并且可软件使 能的增强型低电流看门狗定时器 (Watchdog
TimerWDT
带上拉的主复位,可复用为输入引脚
可编程代码保护
高耐用性闪存 /EEPROM 单元:
- 闪存可经受 10 万次写操作
- EEPROM 可经受 100 万次写操作
- 闪存 / 数据 EEPROM 保存时间:>40
低功耗特性:
待机电流:
- 当电压为 2.0V 时,典型值 <100 nA
工作电流:
- 当频率为 32 kHz、电压为 2.0V 时,典型值为
8.5 µA
- 当频率为 1MHz、电压为 2.0V 时,典型值为
100 µA
看门狗定时器电流:
- 当电压为 2.0V 时,典型值为 1 µA
外设特性:
液晶显示模块:
- 最大可驱动 168 像素
- 可选时钟源
-4个公共端
最多 53 个 I/O 引脚和 1 个仅输入的引脚:
- 高灌 / 拉电流可直接驱动 LED
- 引脚电平变化中断
- 独立的可编程弱上拉
通过两个引脚进行在线串行编程 (In-Circuit Serial Programming™, ICSP™)
模拟比较器模块带有:
- 两个模拟比较器
- 可编程的片上参考电压 (CV
VDD 的百分比)
- 可从外部访问的比较器输入和输出
• A/D 转换器:
-10位分辨率和 8 个通道
• Timer0:带 8 位可编程预分频器的 8 位定时器 / 计
数器
增强型 Timer1:
- 带有预分频器的 16 位定时器 / 计数器
- 外部门控信号输入模式
- 如果选择了 INTOSCIO LP 模式,可选择
使用 OSC1 OSC2 作为 Timer1 的振荡器
• Timer2:带 8 位周期寄存器、预分频器和后分频 器的 8 位定时器 / 计数器
可寻址通用同步 / 异步收发器 (Addressable Universal Synchronous Asynchronous Receiver
TransmitterAUSART
• 2 个捕捉、比较和 PWM 模块:
-16位比较模块,最大分辨率为 12.5 ns
-16位比较模块,最大分辨率为 200 ns
-10位 PWM 模块,最大频率为 20 kHz
2
具有 I
C™ 工作模式的同步串行端口
Synchronous Serial PortSSP
REF)模块 (占
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 1
PIC16F946
器件
程序存储器 数据存储器
闪存
(字)
SRAM
(字节)
EEPROM
(字节)
I/O
10 A/D
转换器
(通道数)
LCD
(段驱动器)
CCP
8/16
定时器
PIC16F946 8K 336 256 53 8 42 2 2/1
引脚图——PIC16F946
TQFP
/SDO/SEG11
DD
RC4/T1G
RD3/SEG16
V
PIC16F946
VSS
RD2/CCP2
RD1
RD0/COM3
RC3/SEG6
RC2/VLCD3
RC1/VLCD2
RC0/VLCD1
54 53 52 5158 57 56 5560 5964 63 62 61
50 49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
RF7/SEG31
RF6/SEG30
RF5/SEG29
RF4/SEG28
RE7/SEG27
RE6/SEG26
RE5/SEG25
SS
V
RA6/OSC2/CLKO/T1OSO
RA7/OSC1/CLKI/T1OSI
VDD
RE4/SEG24
RE3/MCLR/VPP
RE2/AN7/SEG23
RE1/AN6/SEG22
RE0/AN5/SEG21
RD6/SEG19
RD7/SEG20
RG0/SEG36
RG1/SEG37
RG2/SEG38
RG3/SEG39
RG4/SEG40
RG5/SEG41
V
VDD
RF0/SEG32
RF1/SEG33
RF2/SEG34
RF3/SEG35
RB0/INT/SEG0
RB1/SEG1
RD5/SEG18
RD4/SEG17
RC7/RX/DT/SDI/SDA/SEG8
RC6/TX/CK/SCK/SCL/SEG9
RC5/T1CKI/CCP1/SEG10
1
2
3
4
5
6
7
8
SS
9
10
11
12
13
14
15
16
17 18 19 20 21 22 23 24 25 26
VSS
RB2/SEG2
RB3/SEG3
VDD
RB4/COM0
RB5/COM1
AVSS
RB6/ICSPCLK/ICDCK/SEG14
RB7/ICSPDAT/ICDDAT/SEG13
27 28 29 30 32
DD
AV
RA0/AN0/C1-/SEG12
RA1/AN1/C2-/SEG7
REF-/COM2
REF+/SEG15
RA2/AN2/C2+/V
RA3/AN3/C1+/V
31
/SEG5
RA4/C1OUT/T0CKI/SEG4
RA5/AN4/C2OUT/SS
DS41265A_CN 第 2 页 初稿  2006 Microchip Technology Inc.
PIC16F946
目录
1.0 器件概述 ....................................................................................................................................................................................... 5
2.0 存储器构成 ................................................................................................................................................................................. 11
3.0 I/O 端口 ...................................................................................................................................................................................... 27
4.0 时钟源......................................................................................................................................................................................... 71
5.0 Timer0 模块 ................................................................................................................................................................................ 83
6.0 带门控的 Timer1 模块................................................................................................................................................................. 87
7.0 Timer2 模块 ................................................................................................................................................................................ 93
8.0 比较器模块 ................................................................................................................................................................................. 95
9.0 液晶显示器 (LCD)驱动模块 .................................................................................................................................................. 103
10.0 可编程低压检测 (PLVD)模块 ............................................................................................................................................... 131
11.0 可寻址通用同步 / 异步收发器 (USART)................................................................................................................................ 133
12.0 模数转换器 (A/D)模块 .......................................................................................................................................................... 149
13.0 数据 EEPROM 和闪存程序存储器的控制 ................................................................................................................................. 159
14.0 SSP 模块概述........................................................................................................................................................................... 165
15.0 捕捉 / 比较 /PWM 模块 ............................................................................................................................................................. 183
16.0 CPU 的特性.............................................................................................................................................................................. 191
17.0 指令集综述 ............................................................................................................................................................................... 213
18.0 开发支持 ................................................................................................................................................................................... 223
19.0 电气规范 ................................................................................................................................................................................... 229
20.0 直流和交流特性图表 ................................................................................................................................................................. 253
21.0 封装信息 ................................................................................................................................................................................... 255
附录 A 数据手册版本历史 .......................................................................................................................................................... 257
附录 B:从PICmicro® 器件移植 .......................................................................................................................................... 257
附录 C 转换注意事项 ................................................................................................................................................................. 258
索引.................................................................................................................................................................................................... 261
Microchip 网站.................................................................................................................................................................................... 269
变更通知客户服务 .............................................................................................................................................................................. 269
客户支持............................................................................................................................................................................................. 269
读者反馈表 ......................................................................................................................................................................................... 270
产品标识体系 ..................................................................................................................................................................................... 271
致 客 户
我们旨在提供最佳文档供客户正确使用 Microchip 产品。为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。 出版物的质量将随新文档及更新版本的推出而得到提升。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 CTRC@microchip.com,或将本 数据手册后附的 《读者反馈表》传真到 86-21-5407 5066。我们期待您的反馈。
最新数据手册
欲获得本数据手册的最新版本,请查询我公司的网站:
http://www.microchip.com
查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号 的 A 版本。
勘误表
现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到 器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
• Microchip 网站 http://www.microchip.com
当地 Microchip 销售办事处 (见最后一页)
在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。
客户通知系统
欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。
例如:DS30000A是DS30000
2006 Microchip Technology Inc. 初稿 DS41265A_CN 3
PIC16F946
注:
DS41265A_CN 4 初稿 2006 Microchip Technology Inc.

1.0 器件概述

PIC16F946
本文档包含 PIC16F946 器件的特定信息。如需更多信 息请参见可从 Mcrochip 网站下载的 《PICmicro 单片机系列参考手册》(DS33023A_CN)。该参考手册 可视为本数据手册的补充文档,如需更好地了解器件架 构和外设模块的操作,强烈建议阅读此参考手册。
本数据手册涉及 PIC16F946 器件。该器件采用 64 引脚 封装。图 1-1 为该器件的框图,表 1-1 给出了其引脚配 置说明。
®
中档
2006 Microchip Technology Inc. 初稿 DS41265A_CN 5
PIC16F946

1-1 PIC16F946 框图

程序 总线
OSC1/CLKI
OSC2/CLKO
内部 振荡 电路
配置
闪存
8k x 14
程序
存储器
14
指令寄存器
指令
译码和
控制
时序 发生
13
8
VDD
程序计数器
8 级堆栈(13 位)
程序存储器读取
PRM
直接地址
上电延时
定时器
振荡器
起振定时器
上电 复位
看门狗 定时器
欠压 复位
VSS
7
336 x 8 字节
地址 MUX
3
ALU
8
W 寄存器
数据总线
RAM
文件
寄存器
9
8
FSR 寄存器
状态寄存器
MUX
8
RAM 地址
间接 地址
PORTA
PORTB
PORTC
PORTD
PORTE
PORTF
PORTG
RA0/AN0/C1-/SEG12 RA1/AN1/C2-/SEG7 RA2/AN2/C2+/V RA3/AN3/C1+/V RA4/C1OUT/T0CKI/SEG4 RA5/AN4 RA6/OSC2/CLKO/T1OSO RA7/OSC1/CLKI/T1OSI
RB0/INT/SEG0 RB1/SEG1 RB2/SEG2 RB3/SEG3 RB4/COM0 RB5/COM1 RB6/ICSPCLK/ICDCK/SEG14 RB7/ICSPDAT/ICDDAT/SEG13
RC0/VLCD1 RC1/VLCD2 RC2/VLCD3 RC3/SEG6 RC4/T1G RC5/T1CKI/CCP1/SEG10 RC6/TX/CK/SCK/SCL/SEG9 RC7/RX/DT/SDI/SDA/SEG8
RD0/COM3 RD1 RD2/CCP2 RD3/SEG16 RD4/SEG17 RD5/SEG18 RD6/SEG19 RD7/SEG20
RE0/AN5/SEG21 RE1/AN6/SEG22 RE2/AN7/SEG23 RE3/MCLR RE4/SEG24 RE5/SEG25 RE6/SEG26 RE7/SEG27
RF0/SEG32 RF1/SEG33 RF2/SEG34 RF3/SEG35 RF4/SEG28 RF5/SEG29 RF6/SEG30 RF7/SEG31
RG0/SEG36 RG1/SEG37 RG2/SEG38 RG3/SEG39 RG4/SEG40 RG5/SEG41
REF-/COM2 REF+/SEG15
/C2OUT/SS/SEG5
/SDO/SEG11
/VPP
数据 EEPROM
256 字节
BOR
PLVD
LCD
比较器
Timer0
CCP1 CCP2
Timer1 Timer2 10 A/D
SSP
可寻址的
USART
DS41265A_CN 第 6 页 初稿  2006 Microchip Technology Inc.
PIC16F946

1-1 PIC16F946 引脚配置说明

名称 功能
RA0/AN0/C1-/SEG12 RA0 TTL CMOS
AN0 AN
C1- AN
SEG12
RA1/AN1/C2-/SEG7 RA1 TTL CMOS
AN1 AN
C2- AN
SEG7
RA2/AN2/C2+/V
RA3/AN3/C1+/V
RA4/C1OUT/T0CKI/SEG4 RA4 TTL CMOS
RA5/AN4/C2OUT/SS
RA6/OSC2/CLKO/T1OSO RA6 TTL CMOS
RA7/OSC1/CLKI/T1OSI RA7 TTL CMOS
RB0/INT/SEG0 RB0 TTL CMOS
RB1/SEG1 RB1 TTL CMOS
RB2/SEG2 RB2 TTL CMOS
图注: AN = 模拟输入或输出 CMOS = CMOS 兼容输入或输出 D=直接
REF-/COM2 RA2 TTL CMOS
AN2 AN
C2+ AN
REF-AN
V
COM2
REF+/SEG15 RA3 TTL CMOS
AN3 AN
C1+ AN
REF+AN
V
SEG15
C1OUT
T0CKI ST
SEG4
/SEG5 RA5 TTL CMOS
AN4 AN
C2OUT
SS
SEG5
OSC2
CLKO
T1OSO
OSC1 XTAL
CLKI ST
T1OSI XTAL
INT ST
SEG0
SEG1
SEG2
TTL = TTL 兼容输入 ST = 具备 CMOS 电平的施密特触发器输入 HV = 高电压 XTAL = 晶振
输入类型输出
类型
模拟输入通道 0/ 比较器 1 反相输入端。 - 比较器 1 反相输入端。
TTL
- - -
AN
模拟输入通道 1/ 比较器 2 反相输入端。 - 比较器 2 反相输入端。
AN
模拟输入通道 2/ 比较器 2 正相输入端。 - 比较器 2 正相输入端。 - 外部参考电压负端。
AN
模拟输入通道 3/ 比较器 1 正相输入端。 - 比较器 1 正相输入端。 - 外部参考电压正端
AN
CMOS
Timer0 时钟输入。
AN
模拟输入通道 4
CMOS
从器件选择输入。
AN
XTAL
CMOS
XTAL
-晶/ 谐振器。 时钟输入。 - Timer1 振荡器输入。
外部中断引脚。
AN
AN
AN
说明
通用 I/O
LCD 模拟输出。 通用 I/O
LCD 模拟输出。 通用 I/O
LCD 模拟输出。 通用 I/O
LCD 模拟输出。 通用 I/O。 比较器 1 输出。
LCD 模拟输出。 通用 I/O
比较器 2 输出。
LCD 模拟输出。 通用 I/O。 晶振 / 谐振器。
OSC/4 参考时钟。
T Timer1 振荡器输出。
通用 I/O
通用 I/O。可单独使能上拉功能。
LCD 模拟输出。 通用 I/O。可单独使能上拉功能。 LCD 模拟输出。 通用 I/O。可单独使能上拉功能。 LCD 模拟输出。
2006 Microchip Technology Inc. 初稿 DS41265A_CN 7
PIC16F946
1-1 PIC16F946 引脚配置说明 (续)
名称 功能
RB3/SEG3 RB3 TTL CMOS
SEG3
RB4/COM0 RB4 TTL CMOS
COM0
RB5/COM1 RB5 TTL CMOS
COM1
RB6/ICSPCLK/ICDCK/SEG14 RB6 TTL CMOS
ICSPCLK ST
ICDCK ST
SEG14
RB7/ICSPDAT/ICDDAT/SEG13 RB7 TTL CMOS
ICSPDAT ST CMOS
ICDDAT ST CMOS
SEG13
RC0/VLCD1 RC0 ST CMOS
VLCD1 AN
RC1/VLCD2 RC1 ST CMOS
VLCD2 AN
RC2/VLCD3 RC2 ST CMOS
VLCD3 AN
RC3/SEG6 RC3 ST CMOS
SEG6
RC4/T1G
RC5/T1CKI/CCP1/SEG10 RC5 ST CMOS
RC6/TX/CK/SCK/SCL/SEG9 RC6 ST CMOS
图注: AN = 模拟输入或输出 CMOS = CMOS 兼容输入或输出 D=直接
/SDO/SEG11 RC4 ST CMOS
T1G
SDO
SEG11
T1CKI ST
CCP1 ST CMOS
SEG10
TX
CK ST CMOS
SCK ST CMOS
SCL ST CMOS
SEG9
TTL = TTL 兼容输入 ST = 具备 CMOS 电平的施密特触发器输入 HV = 高电压 XTAL = 晶振
输入类型输出
类型
ST
- -
AN
AN
AN
ICSP™ 时钟。 - ICD 时钟 I/O
AN
AN
LCD 模拟输入。
LCD 模拟输入。
LCD 模拟输入。
AN
Timer1 门控信号输入。
CMOS
AN
Timer1 时钟输入。
AN
CMOS
AN
说明
通用 I/O。可单独使能上拉功能。 LCD 模拟输出。 通用 I/O。可单独控制的电平变化中断。可单独使能上拉功
能。 LCD 模拟输出。 通用 I/O。可单独控制的电平变化中断。可单独使能上拉功
能。 LCD 模拟输出。 通用 I/O。可单独控制的电平变化中断。可单独使能上拉功
能。
LCD 模拟输出。 通用 I/O。可单独控制的电平变化中断。可单独使能上拉功
能。
ICSP 数据 I/O ICD 数据 I/O LCD 模拟输出。
通用 I/O
通用 I/O
通用 I/O
通用 I/OLCD 模拟输出。 通用 I/O
串行数据输出。 LCD 模拟输出。 通用 I/O
捕捉 1 输入 / 比较 1 输出 /PWM 1 输出。 LCD 模拟输出。 通用 I/O
USART 异步串行发送。 USART 同步串行时钟。 SPI 时钟。
2
C™ 时钟。
I LCD 模拟输出。
DS41265A_CN 第 8 页 初稿  2006 Microchip Technology Inc.
PIC16F946
1-1 PIC16F946 引脚配置说明 (续)
名称 功能
RC7/RX/DT/SDI/SDA/SEG8 RC7 ST CMOS
RX ST
DT ST CMOS
SDI ST CMOS
SDA ST CMOS
SEG8
RD0/COM3 RD0 ST CMOS
COM3
RD1 RD1 ST CMOS
RD2/CCP2 RD2 ST CMOS
CCP2 ST CMOS
RD3/SEG16 RD3 ST CMOS
SEG16
RD4/SEG17 RD4 ST CMOS
SEG17
RD5/SEG18 RD5 ST CMOS
SEG18
RD6/SEG19 RD6 ST CMOS
SEG19
RD7/SEG20 RD7 ST CMOS
SEG20
RE0/AN5/SEG21 RE0 ST CMOS
AN5 AN
SEG21
RE1/AN6/SEG22 RE1 ST CMOS
AN6 AN
SEG22
RE2/AN7/SEG23 RE2 ST CMOS
AN7 AN
SEG23
RE3/MCLR
RE4/SEG24 RE4 ST CMOS
RE5/SEG25 RE5 ST CMOS
RE6/SEG26 RE6 ST CMOS
RE7/SEG27 RE7 ST CMOS
RF0/SEG32 RF0 ST CMOS
图注: AN = 模拟输入或输出 CMOS = CMOS 兼容输入或输出 D=直接
/VPP RE3 ST
MCLR
PP HV
V
SEG24
SEG25
SEG26
SEG27
SEG32
TTL = TTL 兼容输入 ST = 具备 CMOS 电平的施密特触发器输入 HV = 高电压 XTAL = 晶振
输入类型输出
类型
USART 异步串行接收。
ST
AN
AN
AN
AN
AN
AN
AN
模拟输入通道 5
AN
模拟输入通道 6
AN
模拟输入通道 7
AN
仅数字输入。 - 带有内部上拉功能的主复位引脚。 - 编程电压。
AN
AN
AN
AN
AN
说明
通用 I/O
USART 同步串行数据。 SPI 数据输入。
2
C™ 数据。
I LCD 模拟输出。 通用 I/O LCD 模拟输出。
通用 I/O。 通用 I/O。 捕捉 2 输入 / 比较 2 输出 /PWM 2 输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/O
LCD 模拟输出。 通用 I/O
LCD 模拟输出。 通用 I/O
LCD 模拟输出。
通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。
2006 Microchip Technology Inc. 初稿 DS41265A_CN 9
PIC16F946
1-1 PIC16F946 引脚配置说明 (续)
名称 功能
RF1/SEG33 RF1 ST CMOS
SEG33
RF2/SEG34 RF2 ST CMOS
SEG34
RF3/SEG35 RF3 ST CMOS
SEG35
RF4/SEG28 RF4 ST CMOS
SEG28
RF5/SEG29 RF5 ST CMOS
SEG29
RF6/SEG30 RF6 ST CMOS
SEG30
RF7/SEG31 RF7 ST CMOS
SEG31
RG0/SEG36 RG0 ST CMOS
SEG36
RG1/SEG37 RG1 ST CMOS
SEG37
RG2/SEG38 RG2 ST CMOS
SEG38
RG3/SEG39 RG3 ST CMOS
SEG39
RG4/SEG40 RG4 ST CMOS
SEG10
RG5/SEG41 RG5 ST CMOS
SEG41
DD VDD D
V
SS VSS D
V
图注: AN = 模拟输入或输出 CMOS = CMOS 兼容输入或输出 D=直接
TTL = TTL 兼容输入 ST = 具备 CMOS 电平的施密特触发器输入 HV = 高电压 XTAL = 晶振
输入类型输出
类型
AN
AN
AN
AN
AN
AN
AN
AN
AN
AN
AN
AN
AN
单片机电源。 - 单片机接地参考点。
说明
通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/OLCD 模拟输出。 通用 I/O
LCD 模拟输出。
DS41265A_CN 10 初稿  2006 Microchip Technology Inc.
PIC16F946

2.0 存储器构成

2.1 程序存储器构成

PIC16F946 具有一个 13 位程序计数器,能寻址 8k x 14 的程序存储器空间 (0000h-1FFFh)。复位向量地址是 0000h,中断向量地址是 0004h
2-1 PIC16F946 的程序存储器映
射和堆栈
PC<12:0>
CALL, RETURN RETFIE, RETLW
片内 程序
存储器
1 级堆栈 2 级堆栈
8 级堆栈
复位向量
中断向量
0
1
2
3
13
0000H
0004H 0005h
07FFh 0800h
0FFFh 1000h
17FFh 1800h
1FFFh

2.2 数据存储器构成

数据存储器分为若干存储区(Bank),其中包含通用寄 存器 (General Purpose RegisterGPR)和特殊功能 寄存器 (Special Function RegisterSFR)。 RP0
RP1 位为存储区选择位。
RP0 RP1
= 00: Bank 0 = 01: Bank 1 = 10: Bank 2 = 11: Bank 3
每个存储区扩展到地址 7Fh 128 字节)。每个存储区 中地址较低的单元被保留给特殊功能寄存器。在特殊功 能寄存器上方是通用寄存器,它们以静态 RAM 的方式 实现。所有实现的存储区均包含特殊功能寄存器。某些 经常使用的特殊功能寄存器还会从一个存储区映射到另 一个存储区,从而可减少代码开销和加快访问速度。
2.2.1 通用文件寄存器
PIC16F946 器件中文件寄存器是按 336 x 8 的形式构 成的。可直接访问每个寄存器或通过文件选择寄存器
File Select RegisterFSR)间接访问每个存储器(见
2.5 节 “间接寻址、 INDF 和 FSR 寄存器”)。
2.2.2 特殊功能寄存器
特殊功能寄存器是 CPU 和外设用于控制器件操作的寄 存器 (见表 2-12-22-3 2-4)。这些寄存器都实 现为静态 RAM
特殊功能寄存器可分为两类:内核与外设。本章仅讲述 与 “内核”有关的特殊功能寄存器。那些与外设功能部 件的操作有关的特殊功能寄存器将在相应的外设功能部 件章节中讲述。
STATUS<6:5>
2006 Microchip Technology Inc. 初稿 DS41265A_CN 11
PIC16F946

2-2 PIC16F946 特殊功能寄存器

寄存器 寄存器 寄存器 寄存器 地址 地址 地址 地址
(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 WDTCON 105h TRISF 185h PORTB 06h TRISB 86h PORTB 106h TRISB 186h PORTC 07h TRISC 87h LCDCON 107h TRISG 187h PORTD 08h TRISD 88h LCDPS 108h PORTF 188h PORTE 09h TRISE 89h LVDCON 109h PORTG 189h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch EEDATL 10Ch EECON1 18Ch
PIR2 0Dh PIE2 8Dh EEADRL 10Dh TMR1L 0Eh PCON 8Eh EEDATH 10Eh TMR1H 0Fh OSCCON 8Fh EEADRH 10Fh T1CON 10h OSCTUNE 90h LCDDATA0 110h LCDDATA12 190h
TMR2 11h ANSEL 91h LCDDATA1 111h LCDDATA13 191h
T2CON 12h PR2 92h LCDDATA2 112h LCDDATA14 192h
SSPBUF 13h SSPADD 93h LCDDATA3 113h LCDDATA15 193h
SSPCON 14h SSPSTAT 94h LCDDATA4 114h LCDDATA16 194h
CCPR1L 15h WPUB 95h LCDDATA5 115h LCDDATA17 195h
CCPR1H 16h IOCB 96h LCDDATA6 116h LCDDATA18 196h
CCP1CON 17h CMCON1 97h LCDDATA7 117h LCDDATA19 197h
RCSTA 18h TXSTA 98h LCDDATA8 118h LCDDATA20 198h TXREG 19h SPBRG 99h LCDDATA9 119h LCDDATA21 199h
RCREG 1Ah
CCPR2L 1Bh
CCPR2H 1Ch CMCON0 9Ch LCDSE0 11Ch LCDSE3 19Ch
CCP2CON 1Dh VRCON 9Dh LCDSE1 11Dh LCDSE4 19Dh
ADRESH 1Eh ADRESL 9Eh LCDSE2 11Eh LCDSE5 19Eh ADCON0 1Fh ADCON1 9Fh
通用寄存器
00h
20h
间接地址
通用寄存器
80 字节
(1)
80h
9Ah LCDDATA10 11Ah LCDDATA22 19Ah 9Bh LCDDATA11 11Bh LCDDATA23 19Bh
A0h
间接地址
通用寄存器
80 字节
(1)
100h
11F h 19Fh 120h
间接地址
EECON2
通用寄存器
80 字节
(1)
(1)
180h
18Dh 18Eh 18Fh
1A0h
96 字节
EFh 16Fh 1EFh
快速操作存储区
7Fh FFh 17Fh 1FFh
Bank 0 Bank 1 Bank 2 Bank 3
未使用的数据存储单元,读为 0
1: 这不是物理寄存器。
DS41265A_CN 12 初稿  2006 Microchip Technology Inc.
70h-7Fh
F0h
快速操作存储区
70h-7Fh
170h
快速操作存储区
70h-7Fh
1F0h
PIC16F946

2-1 PIC16F946 特殊功能寄存器汇总, BANK 0

地址 名称
Bank 0
00h INDF
01h TMR0
02h PCL
03h STATUS IRP RP1 RP0 TO
04h FSR 05h PORTA RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 xxxx xxxx uuuu uuuu 06h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu 07h PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu 08h PORTD RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 xxxx xxxx uuuu uuuu 09h PORTE RE7 RE6 RE5 RE4 RE3 RE2 RE1 RE0 xxxx xxxx uuuu uuuu
0Ah PCLATH 0Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x
0Ch PIR1
0Dh PIR2
0Eh TMR1L
0Fh TMR1H
10h T1CON T1GINV T1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
11h T MR 2
12h T2CON
13h SSPBUF 14h SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000
15h CCPR1L
16h CCPR1H
17h CCP1CON 18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x
19h TXREG
1Ah RCREG
(2)
1Bh
CCPR2L
(2)
CCPR2H
1Ch
(2)
CCP2CON
1Dh
1Eh ADRESH
1Fh ADCON0 ADFM VCFG1 VCFG0 CHS2 CHS1 CHS0 GO/DONE
图注: - = 未用单元 (读为 0), u = 不变, x = 未知, q = 取值视条件而定,阴影单元 = 未用 注 1: 其他 (非上电)复位包括正常工作时的 MCLR
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
使用 FSR 的内容对数据存储器进行寻址来寻址此单元 (不是物理寄存器)
Timer0 模块寄存器
程序计数器 (Program CounterPC)的低字节
PD ZDCC0001 1xxx 000q quuu
间接数据存储器地址指针
程序计数器高 5 位的写缓冲器
EEIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000
OSFIF C2IF C1IF LCDIF
16 TMR1 低字节的保持寄存器
16 TMR1 高字节的保持寄存器
Timer2 模块寄存器
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
同步串行端口接收缓冲器 / 发送寄存器
捕捉 / 比较 /PWM 寄存器 1 (LSB)
捕捉 / 比较 /PWM 寄存器 1 (MSB)
USART 发送数据寄存器
USART 接收数据寄存器
捕捉 / 比较 /PWM 寄存器 2 (LSB)
捕捉 / 比较 /PWM 寄存器 2 (MSB)
A/D 结果寄存器的高字节
CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000
CCP2X CCP2Y CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000 --00 0000
复位和看门狗定时器复位。
LVD IF
CCP2IF 0000 -0-0 0000 -0-0
TMR1CS TMR1ON 0000 0000 uuuu uuuu
ADON 0000 0000 0000 0000
POR BOR
时的值
xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu 0000 0000 0000 0000
xxxx xxxx uuuu uuuu
---0 0000 ---0 0000
xxxx xxxx uuuu uuuu xxxx xxxx uuuu uuuu
0000 0000 0000 0000
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu xxxx xxxx uuuu uuuu
0000 0000 0000 0000 0000 0000 0000 0000
xxxx xxxx uuuu uuuu xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
所有其他复 位时的值
(1)
2006 Microchip Technology Inc. 初稿 DS41265A_CN 13
PIC16F946

2-2 PIC16F946 特殊功能寄存器汇总, BANK 1

地址 名称
Bank 1
80h INDF
81h OPTION_REG RBPU
82h PCL
83h STATUS IRP RP1 RP0 TO
84h FSR 85h TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111 86h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 1111 87h TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111 88h TRISD TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 1111 1111 1111 1111
89h TRISE TRISE7 TRISE6 TRISE5 TRISE4 TRISE3
8Ah PCLATH 8Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x 8Ch PIE1 EEIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000
8Dh PIE2 OSFIE C2IE C1IE LCDIE
8Eh PCON
8Fh OSCCON
90h OSCTUNE 91h ANSEL ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
92h PR2
93h SSPADD
94h SSPSTAT SMP CKE D/A 95h WPUB WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 WPUB1 WPUB0 1111 1111 1111 1111
96h IOCB IOCB7 IOCB6 IOCB5 IOCB4
97h CMCON1
98h TXSTA CSRC TX9 TXEN SYNC 99h SPBRG SPBRG7 SPBRG6 SPBRG5 SPBRG4 SPBRG3 SPBRG2 SPBRG1 SPBRG0 0000 0000 0000 0000
9Ah
9Bh 9Ch CMCON0 C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 0000 0000 0000 0000
9Dh VRCON VREN
9Eh ADRESL
9Fh ADCON1
图注: - = 未用单元 (读为 0), u = 不变, x = 未知, q = 取值视条件而定,阴影单元 = 未用 注 1: 其他 (非上电)复位包括正常工作时的 MCLR
未用
未用
2OSTS 位的值取决于器件配置字寄存器 (CONFIG)的值。 请参见第 4.0 节 “时钟源”。 3: 只读位; TRISE 始终为 1
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 1111 1111
程序计数器 (PC)的低字节
PD ZDCC0001 1xxx 000q quuu
间接数据存储器地址指针
(3)
TRISE2 TRISE1 TRISE0 1111 1111 1111 1111
Timer2 周期寄存器
同步串行端口 (I
A/D 结果寄存器的低字节
程序计数器高 5 位的写缓冲器
SBOREN
IRCF2 IRCF1 IRCF0 OSTS
TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 ---u uuuu
2
C模式)地址寄存器
PSR/WUA BF 0000 0000 0000 0000
ADCS2 ADCS1 ADCS0
VRR
复位和看门狗定时器复位。
(2)
VR3 VR2 VR1 VR0 0-0- 0000 0-0- 0000
LVD IE
HTS LTS SCS -110 q000 -110 x000
BRGH TRMT TX9D 0000 -010 0000 -010
POR
T1GSS C2SYNC ---- --10 ---- --10
CCP2IE 0000 -0-0 0000 -0-0
POR BOR
时的值
xxxx xxxx xxxx xxxx
0000 0000 0000 0000
xxxx xxxx uuuu uuuu
---0 0000 ---0 0000
BOR ---1 --qq ---u --uu
1111 1111 1111 1111 0000 0000 0000 0000
0000 ---- 0000 ----
xxxx xxxx uuuu uuuu
-000 ---- -000 ---
所有其他复位
时的值
(1)
DS41265A_CN 14 初稿  2006 Microchip Technology Inc.
PIC16F946

2-3 PIC16F946 特殊功能寄存器汇总, BANK 2

地址 名称
Bank 2
100h INDF
101h TMR0
102h PCL
103h STATUS IRP RP1 RP0 TO
104h FSR
105h WDTCON 106h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu 107h LCDCON LCDEN SLPEN WERR VLCDEN CS1 CS0 LMUX1 LMUX0 0001 0011 0001 0011 108h LCDPS WFT BIASMD LCDA WA LP3 LP2 LP1 LP0 0000 0000 0000 0000
109h LVDCON
10Ah PCLATH 10Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x
10Ch EEDATL EEDATL7 EEDATL6 EEDATL5 EEDATL4 EEDATL3 EEDATL2 EEDATL1 EEDATL00000 0000 0000 0000
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
使用 FSR 的内容对数据存储器进行寻址来寻址此单元 (不是物理寄存器)
Timer0 模块寄存器
程序计数器 (PC)的低字节
PD ZDCC0001 1xxx 000q quuu
间接数据存储器地址指针
程序计数器高 5 位的写缓冲器
IRVST LVDEN
WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN ---0 1000 ---0 1000
LVD L2 LV DL1 LVD L0 --00 -100 --00 -100
POR BOR
时的值
xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu 0000 0000 0000 0000
xxxx xxxx uuuu uuuu
---0 0000 ---0 0000
所有其他复 位时的值
(1)
10Dh EEADRL EEADRL7 EEADRL6 EEADRL5 EEADRL4 EEADRL3 EEADRL2 EEADRL1 EEADRL
10Eh EEDATH
10Fh EEADRH
110h LCDDATA0 SEG7
111h LC DD ATA1 SE G15
112h LCDDATA2 SEG23
113h LCDDATA3 SEG7
114h LCDDATA4 SEG15
115h LCDDATA5 SEG23
116h LCDDATA6 SEG7
117h LCDDATA7 SEG15
118h LCDDATA8 SEG23
119h LCDDATA9 SEG7
11Ah LCDDATA10 SEG15
11B h LC DD ATA11 SE G2 3
11Ch LCDSE0
11Dh LCDSE1
11E h LC DS E2
11F h
图注: - = 未用单元 (读为 0), u = 不变, x = 未知, q = 取值视条件而定,阴影单元 = 未用 注 1: 其他 (非上电)复位包括正常工作时的 MCLR
(2)
(2)
(2)
未用
2: 此寄存器只能通过上电复位或欠压复位初始化,发生其他复位时不变。
COM0
COM0
COM0
COM1
COM1
COM1
COM2
COM2
COM2
COM3
COM3
COM3
SE7 SE6 SE5 SE4 SE3 SE2 SE1 SE0 0000 0000 uuuu uuuu SE15 SE14 SE13 SE12 SE11 SE10 SE9 SE8 0000 0000 uuuu uuuu SE23 SE22 SE21 SE20 SE19 SE18 SE17 SE16 0000 0000 uuuu uuuu
SEG6
COM0
SEG14 COM0
SEG22 COM0
SEG6
COM1
SEG14 COM1
SEG22 COM1
SEG6
COM2
SEG14
COM2
SEG22
COM2
SEG6
COM3
SEG14
COM3
SEG22
COM3
EEDATH5 EEDATH4 EEDATH3 EEDATH2 EEDATH1 EEDATH0--00 0000 --00 0000
EEADRH4 EEADRH3 EEADRH2 EEADRH1 EEADRH0---0 0000 ---0 0000
SEG5 COM0
SEG13
COM0
SEG21
COM0
SEG5 COM1
SEG13
COM1
SEG21
COM1
SEG5 COM2
SEG13
COM2
SEG21
COM2
SEG5 COM3
SEG13
COM3
SEG21
COM3
SEG4
COM0
SEG12
COM0
SEG20
COM0
SEG4
COM1
SEG12
COM1
SEG20
COM1
SEG4
COM2
SEG12
COM2
SEG20
COM2
SEG4
COM3
SEG12
COM3
SEG20
COM3
复位和看门狗定时器复位。
SEG3 COM0
SEG11
COM0
SEG19
COM0
SEG3 COM1
SEG11
COM1
SEG19
COM1
SEG3 COM2
SEG11
COM2
SEG19
COM2
SEG3 COM3
SEG11
COM3
SEG19
COM3
SEG2
COM0
SEG10
COM0
SEG18
COM0
SEG2
COM1
SEG10
COM1
SEG18
COM1
SEG2
COM2
SEG10
COM2
SEG18
COM2
SEG2
COM3
SEG10
COM3
SEG18
COM3
SEG1
COM0
SEG9
COM0
SEG17 COM0
SEG1
COM1
SEG9
COM1
SEG17 COM1
SEG1
COM2
SEG9
COM2
SEG17 COM2
SEG1
COM3
SEG9
COM3
SEG17 COM3
0
SEG0 COM0
SEG8 COM0
SEG16
COM0
SEG0
COM1
SEG8
COM1
SEG16
COM1
SEG0
COM2
SEG8
COM2
SEG16
COM2
SEG0
COM3
SEG8
COM3
SEG16
COM3
0000 0000 0000 0000
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
2006 Microchip Technology Inc. 初稿 DS41265A_CN 15
PIC16F946

2-4 PIC16F946 特殊功能寄存器汇总, BANK 3

地址 名称
Bank 3
180h INDF
181h OPTION_REG RBPU
182h PCL
183h STATUS IRP RP1 RP0 TO
184h FSR 185h TRISF TRISF7 TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0 1111 1111 1111 1111 186h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 1111
187h TRISG 188h PORTF RF7 RF6 RF5 RF4 RF3 RF2 RF1 RF0 xxxx xxxx uuuu uuuu
189h PORTG
18Ah PCLATH 18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x
18Ch EECON1 EEPGD
18Dh EECON2
190h LCDDATA12 SEG31
191h LCDDATA13 SEG39
192h LCDDATA14
193h LCDDATA15 SEG31
194h LCDDATA16 SEG39
195h LCDDATA17
196h LCDDATA18 SEG31
197h LCDDATA19 SEG39
198h LCDDATA20
199h LCDDATA21 SEG31
19Ah LCDDATA22 SEG39
19Bh LCDDATA23
19Ch LCDSE3
19Dh LCDSE4
19Eh LCDSE5
19Fh
图注: - = 未用单元 (读为 0), u = 不变, x = 未知, q = 取值视条件而定,阴影单元 = 未用 注 1: 其他 (非上电)复位包括正常工作时的 MCLR
2: 此寄存器只能通过上电复位或欠压复位初始化,发生其他复位时不变。
(2)
(2)
(2)
未用
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 1111 1111
程序计数器 (PC)的低字节
PD ZDCC0001 1xxx 000q quuu
间接数据存储器地址指针
程序计数器高 5 位的写缓冲器
EEPROM 控制寄存器 2 (不是物理寄存器)
COM0
COM0
COM1
COM1
COM2
COM2
COM3
COM3
SE31 SE30 SE29 SE28 SE27 SE26 SE25 SE24 0000 0000 uuuu uuuu SE39 SE38 SE37 SE36 SE35 SE34 SE33 SE32 0000 0000 uuuu uuuu
SEG30 COM0
SEG38 COM0
SEG30 COM1
SEG38 COM1
SEG30 COM2
SEG38 COM2
SEG30 COM3
SEG38 COM3
TRISG5 TRISG4 TRISG3 TRISG2 TRISG1 TRISG0 --11 1111 --11 1111
RG5 RG4 RG3 RG2 RG1 RG0 --xx xxxx --uu uuuu
SEG29
COM0
SEG37
COM0
SEG29
COM1
SEG37
COM1
SEG29
COM2
SEG37
COM2
SEG29
COM3
SEG37
COM3
SEG28
COM0
SEG36
COM0
SEG28
COM1
SEG36
COM1
SEG28
COM2
SEG36
COM2
SEG28
COM3
SEG36
COM3
复位和看门狗定时器复位。
WRERR WREN WR RD 0--- x000 0--- q000
SEG27
COM0
SEG35
COM0
SEG27
COM1
SEG35
COM1
SEG27
COM2
SEG35
COM2
SEG27
COM3
SEG35
COM3
SEG26
COM0
SEG34
COM0
SEG26
COM1
SEG34
COM1
SEG26
COM2
SEG34
COM2
SEG26
COM3
SEG34
COM3
SEG25
COM0
SE33
COM0
SEG41
COM0
SEG25
COM1
SEG33
COM1
SEG41
COM1
SEG25
COM2
SEG33
COM2
SEG41
COM2
SEG25
COM3
SEG33
COM3
SEG41
COM3
SE41 SE40 ---- --00 ---- --uu
SEG24
COM0
SEG32
COM0
SEG40
COM0
SEG24
COM1
SEG32
COM1
SEG40
COM1
SEG24
COM2
SEG32
COM2
SEG40
COM2
SEG24
COM3
SEG32
COM3
SEG40
COM3
POR BOR
时的值
xxxx xxxx xxxx xxxx
0000 0000 0000 0000
xxxx xxxx uuuu uuuu
---0 0000 ---0 0000
---- ---- ---- ---­xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
---- --xx ---- --uu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
---- --xx ---- --uu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
---- --xx ---- --uu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
---- --xx ---- --uu
所有其他复
位时的值
(1)
DS41265A_CN 16 初稿  2006 Microchip Technology Inc.
PIC16F946
2.2.2.1 状态寄存器
如寄存器 2-1 所示,状态 (Status)寄存器包含:
• ALU 的算术运算状态
复位状态
数据存储器 (SRAM)的存储区选择位
和任何其他寄存器一样,状态寄存器也可以作为任何指 令的目标寄存器。如果一条影响 ZDC C 位的指令 以状态寄存器作为目标寄存器,将禁止写这三位。根据 器件逻辑,这些位会被置 1 或清零。此外,也不能写 TOPD 位。因此,当执行一条把状态寄存器作为目标寄 存器的指令后,状态寄存器的结果可能和预想的不同。
例如,执行 CLRF STATUS 会清零该寄存器的高三位并 将 Z 位置 1。从而使状态寄存器的值为 000u u1uu(其u 表示不变)。
因此,建议仅使用 BCFBSFSWAPF MOVWF 指令 来改变状态寄存器,因为这些指令不影响任何状态位。 欲知其他不会影响状态位的指令,请参见第 17.0 节“ 指 令集综述”)。
1在减法运算中, 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
PD ZDCC
(1)
(1)
bit 7
bit 6-5
bit 4
bit 3
bit 2
bit 1
bit 0
IRP RP1 RP0 TO
bit 7 bit 0
IRP寄存器存储区选择位 (用于间接寻址)
1 = Bank 2 3 100h-1FFh 0 = Bank 0 1 00h-FFh
RP<1:0>寄存器存储区选择位 (用于直接寻址)
00 = Bank 0 00h-7Fh 01 = Bank 1 80h-FFh 10 = Bank 2 100h-17Fh 11 = Bank 3 180h-1FFh
TO
超时状态位
1 = 在上电后,执行了 CLRWDT 指令或 SLEEP 指令 0 = 发生了 WDT 超时
掉电标志位
PD
1 = 上电复位后或执行了 CLRWDT 指令 0 = 执行了 SLEEP 指令
Z零标志位
1 = 算术运算或逻辑运算的结果为零 0 = 算术运算或逻辑运算的结果不为零
DC半进位 / 借位标志位 (ADDWFADDLWSUBLW SUBWF 指令) 1 = 结果的第 4 个低位向高位发生了进位
0 = 结果的第 4 个低位未向高位发生进位 C进位 / 借位标志位 (ADDWFADDLWSUBLW SUBWF 指令)
1 = 结果的最高位发生了进位 0 = 结果的最高位未发生进位
1: 对于借位
Complement)来实现的。对于移位指令 (RRF RLF),此位的值来自源寄存器 的最高位或最低位。
,极性是相反的。减法是通过加上第二个操作数的二的补码 (Two's
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 17
PIC16F946
2.2.2.2 选项寄存器 选项 (Option
以下各项进行配置的各种配置位:
• TMR0/WDT 预分频器
外部 RB0/INT 中断
• TMR0
• PORTB 上弱上拉
寄存器是可读写的寄存器,包含可对
寄存器 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
RBPU
bit 7 bit 0
INTEDG T0CS T0SE PSA PS2 PS1 PS0
注: 要为 TMR0 寄存器指定 1:1 的预分频比,
应将 PSA 位(OPTION_REG<3>)置 1, 以将预分频器分配给 WDT。请参见第 5.4 节 “预分频器”。
bit 7 RBPU
bit 6 INTEDG:中断边沿选择位
bit 5 T0CS:TMR0 时钟源选择位
bit 4 T0SE:TMR0 时钟源边沿选择位
bit 3 PSA:预分频器分配位
bit 2-0 PS<2:0>:预分频器分频比选择位
PORTB 上拉使能位
1 = 禁止 PORTB 上拉 0 = 由各个端口锁存值使能 PORTB 上拉
1 = RB0/INT/SEG0 引脚的上升沿触发中断 0 = RB0/INT/SEG0 引脚的下降沿触发中断
1 = RA4/C1OUT/T0CKI/SEG4 引脚上信号的跳变 0 = 内部指令周期时钟 (CLKO
1 = RA4/C1OUT/T0CKI/SEG4 引脚电平发生由高到低的跳变时递增 0 = RA4/C1OUT/T0CKI/SEG4 引脚电平发生由低到高的跳变时递增
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 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : 128
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位的值 1 = 10 = 清零 x = 未知
DS41265A_CN 18 初稿  2006 Microchip Technology Inc.
PIC16F946
2.2.2.3 中断控制寄存器
中断控制 (INTCON)寄存器是可读写的寄存器,包含
TMR0 寄存器溢出,PORTB 电平变化和外部 RB0/INT/SEG0 引脚中断的各种允许和标志位。
注: 当有中断条件产生时,不管相应的中断允
许位或全局允许位 GIE INTCON<7>)的 状态如何,中断标志位都将置 1。用户软件 应该在允许中断之前确保将相应的中断标 志位清零。
寄存器 2-3 INTCON ——中断控制寄存器 (地址: 0Bh、 8Bh、 10Bh 或 18Bh)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF
bit 7 bit 0
bit 7 GIE:全局中断允许位
1 = 允许所有未屏蔽的中断
0 = 禁止所有中断
bit 6 PEIE:外设中断允许位
1 = 允许所有未屏蔽的外设中断 0 = 禁止所有外设中断
bit 5 T0IE:TMR0 溢出中断允许位
1 = 允许 TMR0 中断 0 = 禁止 TMR0 中断
bit 4 INTE:RB0/INT/SEG0 外部中断允许位
1 = 允许 RB0/INT/SEG0 外部中断 0 = 禁止 RB0/INT/SEF0 外部中断
bit 3 RBIEPORTB 电平变化中断允许位
1 = 允许 PORTB 电平变化中断 0 = 禁止 PORTB 电平变化中断
bit 2 T0IFTMR0 溢出中断标志位
1 = TMR0 寄存器已经溢出 (必须用软件清零) 0 = TMR0 寄存器没有溢出
bit 1 INTF:RB0/INT/SEG0 外部中断标志位
1 = 发生了 RB0/INT/SEG0 外部中断 (必须用软件清零) 0 = 未发生 RB0/INT/SEG0 外部中断
bit 0 RBIF: PORTB 电平变化中断标志位
1 = 至少一个 PORTB <7:4> 引脚的电平状态发生了改变 (必须用软件清零) 0 = 没有一个 PORTB <7:4> 引脚的电平状态发生改变
1:必须同时使能 IOCB 寄存器。
2:当 Timer0 计满回零时,T0IF 位置 1。复位时 Timer0 的状态不会改变,它应该在清
T0IF 位之前被初始化。
(1)
(2)
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位的值 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 19
PIC16F946
2.2.2.4 PIE1 寄存器
PIE1 寄存器包含中断允许位,如寄存器 2-1 所示。
寄存器 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 RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE
bit 7 bit 0
bit 7 EEIEEE 写完成中断允许位
1 = 允许 0 = 禁止
bit 6 ADIEA/D 转换器中断允许位
1 = 允许 0 = 禁止
bit 5 RCIEUSART 接收中断允许位
1 = 允许 0 = 禁止
bit 4 TXIEUSART 发送中断允许位
1 = 允许 0 = 禁止
bit 3 SSPIE:同步串行端口 (SSP)中断允许位
1 = 允许 0 = 禁止
bit 2 CCP1IECCP1 中断允许位
1 = 允许 0 = 禁止
bit 1 TMR2IETMR2 PR2 匹配中断允许位
1 = 允许 0 = 禁止
bit 0 TMR1IETMR1 溢出中断允许位
1 = 允许 0 = 禁止
注: 要允许任何一个外设中断,必须将 PEIE
INTCON<6>)位置 1
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位的值 1 = 10 = 清零 x = 未知
DS41265A_CN 20 初稿  2006 Microchip Technology Inc.
2.2.2.5 PIE2 寄存器
PIE2 寄存器包含中断允许位,如寄存器 2-5 所示。
注: 要允许任何一个外设中断,必须将 PEIE
INTCON<6>)位置 1
寄存器 2-5 PIE2——外设中断允许寄存器 2 (地址: 8Dh)
R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 U-0 R/W-0
OSFIE C2IE C1IE LCDIE
bit 7 bit 0
bit 7 OSFIE:振荡器故障中断允许位
1 = 允许 0 = 禁止
bit 6 C2IEComparator 2 中断允许位
1 = 允许比较器 2 中断 0 = 禁止比较器 2 中断
bit 5 C1IEComparator 1 中断允许位
1 = 允许比较器 1 中断 0 = 禁止比较器 1 中断
bit 4 LCDIELCD 模块中断允许位
1 = 允许 LCD 中断 0 = 禁止 LCD 中断
bit 3 未用:读为 0
bit 2 LVDI E:低压检测中断允许位
1 = 允许 LV D 中断 0 = 禁止 LVD 中断
bit 1 未用:读为 0
bit 0 CCP2IECCP2 中断允许位 (仅 16F914/917 系列器件有该位)
1 = 允许 CCP2 中断 0 = 禁止 CCP2 中断
PIC16F946
LVDI E
CCP2IE
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位的值 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 21
PIC16F946
2.2.2.6 PIR1 寄存器
PIR1 寄存器包含中断标志位,如寄存器 2-6 所示。
寄存器 2-6 PIR1——外设中断请求寄存器 1 (地址: 0Ch)
R/W-0 R/W-0 R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0
EEIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF
bit 7 bit 0
bit 7 EEIFEE 写操作中断标志位
1 = 写操作完成 (必须用软件清零) 0 = 写操作尚未完成或尚未启动
bit 6 ADIFA/D 转换器中断标志位
1 = A/D 转换完成 (必须用软件清零) 0 = A/D 转换未完成
bit 5 RCIFUSART 接收中断标志位
1 = USART 接收缓冲器满 (可通过读 RCREG 将缓冲器清零) 0 = USART 接收缓冲器不满
bit 4 TXIFUSART 发送中断标志位
1 = USART 发送缓冲器为空 (可通过写 TXREG 将缓冲器清零) 0 = USART 发送缓冲器已满
bit 3 SSPIF:同步串行端口 (SSP)中断标志位
1 = 发送 / 接收完成 (必须用软件清零) 0 = 等待发送 / 接收
bit 2 CCP1IF:CCP1 中断标志位
捕捉模式:
1 = 发生了 TMR1 寄存器捕捉 (必须用软件清零)
0 = 未发生 TMR1 寄存器捕捉
比较模式:
1 = 发生了 TMR1 寄存器比较匹配 (必须用软件清零) 0 = 未发生 TMR1 寄存器比较匹配
模式:
PWM
在此模式下未使用
bit 1 TMR2IF:TMR2 与 PR2 匹配中断标志位
1 = 发生了 TMR2 PR2 的匹配 (必须用软件清零) 0 = 未发生 TMR2 PR2 的匹配
bit 0 TMR1IFTMR1 溢出中断标志位
1 = TMR1 寄存器已经溢出 (必须用软件清零) 0 = TMR1 寄存器未溢出
注: 当有中断条件产生时,不管相应的中断允许
位或全局中断允许位 GIE INTCON<7>) 的状态如何,中断标志位都将置 1。用户软 件应该在允许中断之前确保将相应的中断 标志位清零。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位的值 1 = 10 = 清零 x = 未知
DS41265A_CN 22 初稿  2006 Microchip Technology Inc.
2.2.2.7 PIR2 寄存器
PIR2 寄存器包含中断标志位,如寄存器 2-7 所示。
注: 当有中断条件产生时,不管相应的中断允许
位或全局中断允许位 GIE INTCON<7>) 的状态如何,中断标志位都将置 1。用户软 件应该在允许中断之前确保将相应的中断 标志位清零。
寄存器 2-7 PIR2——外设中断请求寄存器 2 (地址: 0Dh)
R/W-0 R/W-0 R-0 R-0 U-0 R/W-0 U-0 R/W-0
OSFIF C2IF C1IF LCDIF
bit 7 bit 0
bit 7 OSFIF:振荡器故障中断标志位
1 = 系统振荡器发生故障,时钟输入切换为 INTOSC (必须用软件清零) 0 = 系统时钟正常运行
bit 6 C2IF:比较器 2 中断标志位
1 = 比较器输出 (C2OUT 位)发生了改变 (必须用软件请零) 0 = 比较器输出 (C2OUT 位)未发生改变
bit 5 C1IF:比较器 1 中断标志位
1 = 比较器输出 (C1OUT 位)发生了改变 (必须用软件请零) 0 = 比较器输出 (C1OUT 位)未发生改变
bit 4 LCDIFLCD 模块中断标志位
1 = 产生了 LCD 中断 0 = 未产生 LCD 中断
bit 3 未用:读为 0
bit 2 LVDI F:低压检测 (Low Voltage Detect, LV D)中断标志位
1 = 产生了 LV D 中断 0 = 未产生 LV D 中断
bit 1 未用:读为 0
bit 0 CCP2IFCCP2 中断标志位 (仅 16F914/917 系列器件有该位)
捕捉模式:
1 = 发生了 TMR1 寄存器捕捉 (必须用软件清零) 0 = 未发生 TMR1 寄存器捕捉
比较模式:
1 = 发生了 TMR1 寄存器比较匹配 (必须用软件清零) 0 = 未发生 TMR1 寄存器比较匹配
模式:
PWM
在此模式下未使用
PIC16F946
LVDI F
CCP2IF
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位的值 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 23
PIC16F946
2.2.2.8 电源控制寄存器
电源控制 (PCON)寄存器 (见寄存器 2-8)包含区分 以下复位的标志位:
上电复位 (Power-on Reset, POR
欠压复位 (Brown-out Reset, BOR
看门狗定时器复位 (WDT)
外部 MCLR
PCON 寄存器也用于软件控制 BOR 的使能。
PCON 寄存器中的位如寄存器 2-8 所示。
复位
寄存器 2-8: PCON——电源控制寄存器 (地址:8Eh)
U-0 U-0 U-0 R/W-1 U-0 U-0 R/W-0 R/W-x
bit 7 bit 0
SBOREN
POR
BOR
bit 7-5
bit 4
bit 3-2
bit 1
bit 0
未用:读为 0 SBOREN:软件欠压复位使能位
1 = 使能欠压复位 0 = 禁止欠压复位
未用:读为 0
POR
:上电复位状态位
1 = 未发生上电复位 0 = 发生了上电复位 (必须在上电复位发生后用软件置 1
:欠压复位状态位
BOR
1 = 未发生欠压复位 0 = 发生了欠压复位 (必须在欠压复位发生后用软件置 1
1:当配置字寄存器中的 BOREN<1:0> = 01 时允许使用该位对欠压复位进行控制。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位的值 1 = 10 = 清零 x = 未知
1
DS41265A_CN 24 初稿 2006 Microchip Technology Inc.

2.3 PCL PCLATH

程序计数器(Program CounterPC)为 13 位宽。它 的低字节来自可读写的 PCL 寄存器。高字节 (PC<12:8>) 来自 PCLATH,不可直接读写。任何复位都将清零 PC。 图 2-3 给出的是装载 PC 的两种情况。图 2-3 中上面的 示例给出了在写 PCL PCLATH<4:0> → PCH)时, 装载 PC 的过程。 图 2-3 中下面的示例给出了在执行 CALLGOTO指令时(PCLATH<4:3> →PCH)装 载 PC 的过程。
PIC16F946
1: 没有用于表示堆栈上溢或堆栈下溢条件的
状态位。
2: 没有称为 PUSH POP 的指令或助记符。
这些都是在执行 CALL、 RETURN、 RETLWRETFIE 指令或跳转到中断地址 向量时发生的操作。

2.4 程序存储器分页

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
PCL 作为 目标寄存器的指令
8
操作码 <10:0>
ALU 结果
GOTO,CALL
2.3.1 计算 GOTO
计算 GOTO 是通过向程序计数器加一个偏移量 (ADDWF PCL)实现的。当通过使用计算 GOTO 执行表读操作时, 必须注意表地址是否超出 PCL 的存储边界 (每块 256
字节)。 请参见应用笔记AN556
Implementing a Table
Read”(DS00556
2.3.2 堆栈
PIC16F946 器件具有一个 8 级深13 位宽的硬件堆栈(见
2-1)。 该堆栈既不占用程序存储空间也不占用数据 存储空间,并且栈指针不能读写。当执行 CALL 指令或 由于中断导致程序跳转时, PC 的值会被压入 (Push) 堆栈。当执行 RETURNRETLW RETFIE 指令时, PC 值从堆栈弹出 (Pop)。 PCLATH 的值不受压栈或 出栈操作的影响。
此堆栈是作为循环缓冲器使用的。也就是说,压栈 8 次 之后,第 9 次压栈时进栈的数据将覆盖第 1 次压栈存储 的数据。而第 10 次压栈时进栈的数据将覆盖第 2 次压 栈存储的数据,依此类推。
PIC16F946 器件能够寻址一块连续的 8K 字的程序存储 区。CALL GOTO 指令仅提供 11 位的地址,允许在 任一 2K 的程序存储器页内进行跳转。 当执行 CALL GOTO指令时,地址的高两位由 PCLATH<4:3> 提供。 执行这两条指令时,用户必须确保已正确设置了页选择 位,从而可以对想访问的程序存储器页进行寻址。 若执 行了一条从 CALL 指令 (或中断)返回的指令,将从堆 栈弹出整个 13 PC 因此,执行 RETURN 指令 (该 指令会使地址从堆栈弹出)不需要操作 PCLATH<4:3> 位。
注: 执行 RETURN RETFIE 指令之后,
PCLATH 寄存器的内容不变。 要执行后续 的子程序调用或 GOTO 指令,用户必须重写 PCLATH 寄存器。
2-1 给出了调用程序存储器第 1 页中子程序的示例。 此例假设 PCLATH 寄存器由中断服务程序保存和恢复
(如果使用中断)。

2-1:在0 页中调用第 1 页中的子程序

ORG 0x500 BCF PCLATH,4 BSF PCLATH,3 ;Select page 1
;(800h-FFFh) CALL SUB1_P1 ;Call subroutine in : ;page 1 (800h-FFFh) : ORG 0x900 ;page 1 (800h-FFFh)
SUB1_P1
: ;called subroutine
;page 1 (800h-FFFh) : RETURN ;return to
;Call subroutine
;in page 0
;(000h-7FFh)
2006 Microchip Technology Inc. 初稿 DS41265A_CN 25
PIC16F946

2.5 间接寻址、 INDF FSR 寄存器

INDF 寄存器不是物理寄存器。对 INDF 寄存器进行寻址 将导致间接寻址。
使用 INDF 寄存器可以实现间接寻址。任何使用 INDF 寄存器的指令实际上访问的是由指针寄存器(FSR)所 指向的寄存器。间接读 INDF 本身会返回 00h。而使用 间接寻址对 INDF 寄存器进行写操作将导致执行一个空 操作 (虽然可能会影响状态位)。有效的 9 位地址是通 过连接 8 FSR 寄存器和 IRP 位(STATUS<7>)获得 的,如图 2-4 所示。
2-2 给出了使用间接寻址清零 RAM 单元 20h-2Fh 的 简单程序。
2-4:直/ 间接寻址
RP1 RP0 6
存储区选择 单元选择
来自操作码
00H
PIC16F946
0
00 01 10 11

2-2 间接寻址

MOVLW 0x20 ;initialize pointer MOVWF FSR ;to RAM
NEXTCLRF INDF ;clear INDF register
INCF FSR ;inc pointer BTFSS FSR,4 ;all done? GOTO NEXT ;no clear next
CONTINUE ;yes continue
间接寻址 直接寻址
IRP 指针寄存器
存储区选择
7
单元选择
180H
0
数据 存储器
7FH
BANK 0 BANK 1 BANK 2 BANK 3
注: 欲知详细的存储器映射信息,请参见图 2-1
1FFH
DS41265A_CN 26 初稿  2006 Microchip Technology Inc.
PIC16F946

3.0 I/O 端口

该器件包括 4 8 位端口寄存器和与之相关的 TRIS 寄 存器以及一个 4 位端口:
• PORTA 和 TRISA
• PORTB 和 TRISB
• PORTC 和 TRISC
• PORTD 和 TRISD
• PORTE 和 TRISE
• PORTF 和 TRISF
• PORTG 和 TRISG

3.1 PORTA TRISA 寄存器

PORTA 8 位宽的双向端口。 PORTA 对应的数据方向 寄存器是 TRISA (寄存器 3-2)。将 TRISA 1 = 1) 可以让相应 PORTA 引脚作为输入引脚 (即将相应的输 出驱动器置于高阻态)。将 TRISA 位清零(= 0)可以让 相应 PORTA 引脚作为输出引脚 (即将输出锁存器的内 容放入选定的引脚上)。例 3-1 显示初始化 PORTA 的方 法。
可以将 PORTA 的五个引脚配置为模拟输入。其中,在 器件上电时,RA5 和 RA<3:0> 被配置为模拟输入引脚, 用户必须对其进行重新配置才可将其用作普通 I/O 引 脚。这可以通过将相应的值写入 CMCON0 ANSEL 寄 存器来完成 (见例 3-1)。
PORTA 寄存器 (寄存器 3-1)读的是引脚的状态而 写该寄存器将会写入端口锁存器。所有写操作都是读- 修改-写操作。因此,写一个端口就意味着读该端口的 引脚电平,修改读到的值,然后再将改好的值写入端口 数据锁存器。
即使在 PORTA 引脚用作模拟输入时,TRISA 寄存器仍 然控制 PORTA 引脚的方向。当将 PORTA 引脚用作模 拟输入时,用户必须确保 TRISA 寄存器中的位保持为置 1 状态。配置为模拟输入的 I/O 引脚总是读为 0
1:必须对 CMCON0 9Ch)寄存器进行初
始化来将模拟通道配置为数字输入。配置 为模拟输入的引脚将读为 0
2:载有 LCD 信号的模拟线 (即, SEGx
COMy,其中 x 和 y 分别为段和公共端标
识符)与器件引脚直接相连。这些信号从
LCD 模块输出并且有可能处于三态,这由 LCD 模块的配置决定。

3-1:初PORTA

BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ; CLRF PORTA ;Init PORTA BSF STATUS,RP0 ;Bank 1 BCF STATUS,RP1 ; MOVLW 07h ;Set RA<2:0> to MOVWF CMCON0 ;digital I/O CLRF ANSEL ;Make all PORTA I/O MOVLW F0h ;Set RA<7:4> as inputs MOVWF TRISA ;and set RA<3:0>
; as outputs BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ;
2006 Microchip Technology Inc. 初稿 DS41265A_CN 27
PIC16F946
寄存器 3-1 PORTA——PORTA 寄存器 (地址:05h
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
RA7RA6RA5RA4RA3RA2RA1RA0
bit 7 bit 0
bit 7-0
RA<7:0>:PORTA I/O 引脚位
1 = 端口引脚电平 >V 0 = 端口引脚电平 <VIL
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位的值 1 = 10 = 清零 x = 未知
IH
寄存器 3-2 TRISA——PORTA 三态寄存器 (地址:85h)
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0
bit 7 bit 0
bit 7-0
TRISA<7:0>PORTA 三态控制位
1 = PORTA 引脚被配置为输入 (三态) 0 = PORTA 引脚被配置为输出
注: TRISA<7:6> XTHS LP 振荡模式下始终读为 1
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位的值 1 = 10 = 清零 x = 未知
DS41265A_CN 28 初稿  2006 Microchip Technology Inc.
3.1.1 引脚说明和框图
每个 PORTA 引脚都与其他功能复用。这里将简要介绍这 些引脚及其复用功能。欲知有关各个功能的具体信息, 请参见此数据手册中的相应章节。
3.1.1.1 RA0/AN0/C1-/SEG12
3-1 是该引脚的框图。 RA0/AN0/C1-/SEG12 引脚可 以被配置为以下功能之一:
通用 I/O
• A/D 转换器的模拟输入
比较器 1 的模拟输入
• LCD 的模拟输出

3-1 RA0/AN0/C1-/SEG12 框图

PIC16F946
数据总线
PORTA
TRISA
CK
数据锁存器
CK
TRIS 锁存器
TRISA
SEG12
QD
Q
QD
Q
SE12 LCDEN
PORTA
A/D 转换器或比较器
SE12 LCDEN
V
DD
模拟输入或
SE12 LCDEN
TTL
输入缓冲器
I/O 引脚
2006 Microchip Technology Inc. 初稿 DS41265A_CN 29
PIC16F946
3.1.1.2 RA1/AN1/C2-/SEG7
3-2 是该引脚的框图。RA1/AN1/C2-/SEG7 引脚可以 被配置为以下功能之一:
通用 I/O
• A/D 转换器的模拟输入
比较器 2 的模拟输入
• LCD 的模拟输出

3-2 RA1/AN1/C2-/SEG7 框图

数据总线
PORTA
TRISA
CK
数据锁存器
CK
TRIS 锁存器
TRISA
SEG7
QD
Q
QD
Q
PORTA
SE7 LCDEN
SE7 LCDEN
A/D 转换器或比较器
V
DD
模拟输入或
SE7 LCDEN
TTL
输入缓冲器
I/O 引脚
DS41265A_CN 30 初稿  2006 Microchip Technology Inc.
3.1.1.3 RA2/AN2/C2+/VREF-/COM2
3-3 是该引脚的框图。 RA2/AN2/C2+/VREF-/COM2 引脚可以被配置为以下功能之一:
通用 I/O
• A/D 转换器的模拟输入
比较器 2 的模拟输入
• A/D 转换器的参考电压输入
• LCD 的模拟输出

3-3 RA2/AN2/C2+/VREF-/COM2 框图

PIC16F946
数据总线
PORTA
TRISA
QD
CK
数据锁存器
CK
TRIS 锁存器
COM2
Q
QD
Q
TRISA
PORTA
LCDEN LMUX<1:0> = 1X
LCDEN
LMUX<1:0> = 1X
V
DD
模拟输入或
LCDEN
LMUX<1:0> = 1X
TTL
输入缓冲器
I/O 引脚
A/D 转换器或比较器
A/D 模块 VREF- 输入
2006 Microchip Technology Inc. 初稿 DS41265A_CN 31
PIC16F946
3.1.1.4 RA3/AN3/C1+/VREF+/SEG15
3-4 是该引脚的框图。 RA3/AN3/C1+/VREF+/COM3/SEG15 引脚可以被配置为以下功能之一:
通用输入
• A/D 转换器的模拟输入
• A/D 转换器的参考电压输入
• LCD 的模拟输出

3-4 RA3/AN3/C1+/VREF+/SEG15 框图

数据总线
PORTA
TRISA
CK
数据锁存器
CK
TRIS 锁存器
TRISA
SEG15
QD
Q
Q
QD
Q
Q
PORTA
SE15 LCDEN
SE15 LCDEN
VDD
I/O 引脚
VSS
模拟输入或
SE15 LCDEN
TTL
输入缓冲器
A/D 模块 VREF+ 输入
DS41265A_CN 32 初稿  2006 Microchip Technology Inc.
3.1.1.5 RA4/C1OUT/T0CKI/SEG4
3-5 是该引脚的框图。 RA4/C1OUT/T0CKI/SEG4 引 脚可以被配置为以下功能之一:
通用 I/O
比较器 1 的数字输出
• TMR0 的时钟输入
• LCD 的模拟输出

3-5 RA4/C1OUT/T0CKI/SEG4 框图

CM<2:0> = 110 或 101
PIC16F946
数据总线
PORTA
TRISA
CK
数据锁存器
CK
TRIS 锁存器
TRISA
PORTA
T0CKI
C1OUT
QD
Q
QD
Q
1 0
SE4 LCDEN
SE4 LCDEN
施密特 触发器
VDD
V
SS
模拟输入或
TTL
输入缓冲器
SE4 LCDEN
I/O 引脚
SEG4
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 33
SE4 LCDEN
PIC16F946
3.1.1.6 RA5/AN4/C2OUT/SS/SEG5
3-6 是该引脚的框图。 RA5/AN4/C2OUT/SS/SEG5 引脚可以被配置为以下功能之一:
通用 I/O
比较器 2 的数字输出
从器件选择输入
• LCD 的模拟输出
• A/D 转换器的模拟输入

3-6 RA5/AN4/C2OUT/SS/SEG5 框图

CM<2:0> = 110 或 101
数据总线
PORTA
TRISA
CK
数据锁存器
CK
TRIS 锁存器
TRISA
PORTA
SS 输入
SEG5
C2OUT
QD
Q
QD
Q
SE5 LCDEN
SE5 LCDEN
1 0
VDD
I/O 引脚
VSS
模拟输入或
SE5 LCDEN
TTL
AN4
DS41265A_CN 34 初稿  2006 Microchip Technology Inc.
3.1.1.7 RA6/OSC2/CLKO/T1OSO
3-7 是该引脚的框图。 RA6/OSC2/CLKO/T1OSO 引 脚可以被配置为以下功能之一:
通用 I/O
连接晶振 / 谐振器
时钟输出
连接 TMR1 振荡器

3-7 RA6/OSC2/CLKO/T1OSO 框图

PIC16F946
数据总线
PORTA
TRISA
FOSC = 00x,010
T1OSCEN
CLKO(FOSC/4)
QD
CK
Q
数据锁存器
QD
CK
Q
TRIS 锁存器
TRISA
PORTA
OSC = 1x1
F
来自 OSC1
1 0
OSC = 00x010
F
T1OSCEN
TTL
输入缓冲器
振荡 电路
VDD
SS
V
RA6/OSC2/ CLKO/T1OSO
引脚
2006 Microchip Technology Inc. 初稿 DS41265A_CN 35
PIC16F946
3.1.1.8 RA7/OSC1/CLKI/T1OSI
3-8 是该引脚的框图。 RA7/OSC1/CLKI/T1OSI 引脚 可以被配置为以下功能之一:
通用 I/O
连接晶振 / 谐振器
时钟输入
连接 TMR1 振荡器

3-8 RA7/OSC1/CLKI/T1OSI 框图

数据总线
PORTA
TRISA
FOSC = 10x
QD
CK
Q
数据锁存器
QD
CK
Q
TRIS 锁存器
TRISA
来自 OSC1
PORTA
振荡 电路
FOSC = 011
FOSC = 10x
TTL
输入缓冲器
V
DD
RA7/OSC1/ CLKI/T1OSI
引脚

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

地址 名称
05h PORTA RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 xxxx xxxx uuuu uuuu
10h T1CON
14h SSPCON
1Fh ADCON0
81h/181h OPTION_REG 85h TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111
91h ANSEL
9Ch CMCON0
107h LCDCON LCDEN
11Ch LCDSE0
11Dh LCDSE1
图注: x = 未知, u = 不变, - = 未用单元 (读为 0)。 PORTA 模块不使用阴影单元。 1: 此寄存器只能通过上电复位或欠压复位初始化,发生其他复位时均不变。
DS41265A_CN 36 初稿  2006 Microchip Technology Inc.
(1)
(1)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T1GINV T1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 uuuu uuuu
WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000 ADFM VCFG1 VCFG0 CHS2 CHS1 CHS0 GO/DONE ADON 0000 0000 0000 0000
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 0000 0000 0000 0000
SLPEN WERR VLCDEN CS1 CS0 LMUX1 LMUX0 0001 0011 0001 0011
SE7 SE6 SE5 SE4 SE3 SE2 SE1 SE0 0000 0000 uuuu uuuu
SE15 SE14 SE13 SE12 SE11 SE10 SE9 SE8 0000 0000 uuuu uuuu
POR BOR
时的值
所有其他复
位时的值
PIC16F946

3.2 PORTB TRISB 寄存器

PORTB 是通用 I/O 端口,其功能与 PIC16F914 的类似。 所有 PORTB 引脚都具有弱上拉功能,其中 PORTB<7:4> 还具有在输入电平发生改变时产生中断的功能。
PORTB 也用作串行闪存编程接口。
注: 载有 LCD 信号的模拟线 (即, SEGx
COMy,其 中 x y 分别为段和公共端标识 符)直接与器件引脚相连。这些信号从 LCD 模块输出并且有可能处于三态,这由 LCD 模块的配置决定。

3-2:初PORTB

BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ; CLRF PORTB ;Init PORTB BSF STATUS,RP0 ;Bank 1 BCF STATUS,RP1 ; MOVLW FFh ;Set RB<7:0> as inputs MOVWF TRISB ; BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ;

3.3 其他 PORTB 引脚功能

RB<7:6> 可分别用作器件进行串行编程和在线调试时的 数据和时钟信号。还可将 RB0 配置为外部中断输入。
3.3.1 弱上拉
每个 PORTB 引脚都有单独可配置的内部弱上拉。控制WPUB<7:0> 使能或禁止每个弱上拉。参见寄存器 3-6。 当将端口引脚配置为输出时,其弱上拉会自动切断。在 上电复位时,弱上拉由 RBPU
3.3.2 电平变化中断
四个 PORTB 引脚可以被单独配置为电平变化中断引 脚。控制位 IOCB<7:4> 为每个引脚允许或禁止该中断功 能。参见寄存器 3-5。上电复位时引脚上的电平变化中 断功能被禁止。
对于已允许电平变化中断的引脚,则将该引脚上的值与 上次读 PORTB 时锁存的旧值进行比较。将与上次读操 作 “不匹配”的输出一起进行逻辑或运算,运算结果将 INTCON 寄存器中的 PORTB 电平变化中断标志位
RBIF)置 1 (寄存器 2-3)。
该中断可将器件从休眠中唤醒。用户可在中断服务程序 中通过以下方式清除中断:
a) PORTB 进行读 / 写操作。这将结束引脚电平
不匹配条件。
b) 将标志位 RBIF 清零。
电平不匹配条件会继续将 RBIF 标志位置 1。读或写 PORTB 将结束这种不匹配条件并将标志位 RBIF 清零。 保持最后一次读取值的锁存器不受MCLR 影响。在这些复位之后,如果出现电平不匹配,RBIF 标 志位将继续被置 1
注: 如果在执行读取操作时 (Q2 周期的开始)
I/O 引脚的电平发生变化,则 RBIF 中断标志 位可能不会被置 1。此外,由于对端口的读 或写影响到该端口的所有位,所以在电平变 化中断模式下使用多个引脚的时候必须特 别小心。在处理一个引脚电平变化的时候可 能不会注意到另一个引脚上的电平变化。
位( OPTION_REG<7>)禁止。
和欠压复位的
2006 Microchip Technology Inc. 初稿 DS41265A_CN 37
PIC16F946
寄存器 3-3 PORTB——PORTB 寄存器 (地址:06h 106h
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
RB7RB6RB5RB4RB3RB2RB1RB0
bit 7 bit 0
bit 7-0
RB<7:0>:PORTB I/O 引脚位
1 = 端口引脚电平 >V 0 = 端口引脚电平 <VIL
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
IH
寄存器 3-4 TRISB——PORTB 三态寄存器 (地址:86h 186h
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0
bit 7 bit 0
bit 7-0
TRISB<7:0>PORTB 三态控制位
1 = PORTB 引脚被配置为输入 (三态) 0 = PORTB 引脚被配置为输出
注: TRISB<7:6> XTHS LP 振荡模式下始终读为 1
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
寄存器 3-5 IOCB——PORTB 电平变化中断寄存器 (地址:96h
R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0
bit 7-4
bit 3-0
IOCB7 IOCB6 IOCB5 IOCB4
bit 7 bit 0
IOCB<7:4>:电平变化中断位
1 = 允许电平变化中断 0 = 禁止电平变化中断
未用:读为 0
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
DS41265A_CN 38 初稿 2006 Microchip Technology Inc.
寄存器 3-6: WPUB——弱上拉寄存器 (地址:95h)
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 WPUB1 WPUB0
bit 7 bit 0
PIC16F946
bit 7-0
WPUB<7:0>:弱上拉寄存器位
1 = 使能上拉 0 = 禁止上拉
1:为了使能各个上拉必须使能全局 RBPU
2:如果引脚处于输出模式,将自动禁止弱上拉。(TRISB<7:0> = 0)。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41265A_CN 39
PIC16F946
3.3.3 引脚说明和框图
每个 PORTB 引脚都与其他功能复用。这里将简要介绍这 些引脚及其复用功能。欲知有关各个功能的具体信息, 如 LCD 或中断,请参见此数据手册中的相应章节。
3.3.3.1 RB0/INT/SEG0
3-9 是该引脚的框图。RB0/INT/SEG0 引脚可以被配 置为以下功能之一:
通用 I/O
外部边沿触发中断
• LCD 的模拟输出
3.3.3.2 RB1/SEG1
3-9 是该引脚的框图。RB1/SEG1 引脚可以被配置为 以下功能之一:
通用 I/O
• LCD 的模拟输出
3.3.3.3 RB2/SEG2
3-9 是该引脚的框图。RB2/SEG2 引脚可以被配置为 以下功能之一:
通用 I/O
• LCD 的模拟输出
3.3.3.4 RB3/SEG3
3-9 是该引脚的框图。RB3/SEG3 引脚可以被配置为 以下功能之一:
通用 I/O
• LCD 的模拟输出
DS41265A_CN 40 初稿  2006 Microchip Technology Inc.

3-9 RB<3:0> 框图

PIC16F946
(1)
RBPU
数据总线
PORTB
TRISB
CK
数据锁存器
CK
TRIS 锁存器
TRISB
SEG<3:0>
(2)
INT
QD
QD
PORTB
SE0 LCDEN
SE<3:0>
SE<3:0> LCDEN
SE<3:0> LCDEN
输入缓冲器
施密特 触发器
TTL
VDD
P
上拉
V
DD
I/O 引脚
1: 若要使能弱上拉,需将相应的 TRIS 位置 1,并将 RBPU 位清零。
2: 仅适用于 RB0
2006 Microchip Technology Inc. 初稿 DS41265A_CN 41
PIC16F946
3.3.3.5 RB4/COM0
3-10 是该引脚的框图。 RB4/COM0 引脚可以被配置 为以下功能之一:
通用 I/O
• LCD 的模拟输出

3-10 RB4/COM0 框图

(1)
RBPU
数据总线
PORTB
TRISB
RBIF 1
QD
CK
数据锁存器
QD
CK
TRIS 锁存器
TRISB
PORTB
LCDEN
LCDEN
LCDEN
TTL
输入缓冲器
Q
EN
VDD
P
上拉
D
VDD
I/O 引脚
PORTB
EN
D
FOSC/4
来自其他
RB<7:4> 引脚
COM0
1: 若要使能弱上拉功能,需将相应的 TRIS 位置 1,并将 RBPU 位清零。
DS41265A_CN 42 初稿  2006 Microchip Technology Inc.
LCDEN
Q
3.3.3.6 RB5/COM1
3-11 是该引脚的框图。 RB5/COM1 引脚可以被配置 为以下功能之一:
通用 I/O
• LCD 的模拟输出

3-11 RB5/COM1 框图

PIC16F946
(1)
RBPU
数据总线
PORTB
TRISB
RBIF 1
QD
CK
数据锁存器
QD
CK
TRIS 锁存器
TRISB
PORTB
LCDEN LMUX<1:0> 00
LCDEN LMUX<1:0> 00
TTL
输入缓冲器
Q
D
EN
VDD
P
上拉
V
FOSC/4
DD
I/O 引脚
EN
D
PORTB
来自其他
RB<7:4> 引脚
LCDEN LMUX<1:0>
COM1
1: 若要使能弱上拉功能,需将相应的 TRIS 位置 1,并将 RBPU 位清零。
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 43
LCDEN
LMUX<1:0> 00
00
Q
PIC16F946
3.3.3.7 RB6/ICSPCLK/ICDCK/SEG14
3-12 是该引脚的框图。 RB6/ICSPCLK/ICDCK/SEG14 引脚可以被配置为以下功能之一:
通用 I/O
在线串行编程时钟
• ICD 时钟 I/O
• LCD 的模拟输出

3-12 RB6/ICSPCLK/ICDCK/SEG14 框图

编程模式 /ICD
RBPU SE14 LCDEN
数据总线
PORTB
TRISB
RBIF 1
(1)
CK
数据锁存器
CK
TRIS 锁存器
TRISB
PORTB
VDD
P
上拉
QD
QD
TTL
输入缓冲器
SE14 LCDEN
Q
D
EN
DD
V
PORTB
I/O 引脚
EN
D
FOSC/4
来自其他
RB<7:4> 引脚
SE14 LCDEN
PGC
SEG14
1: 若要使能弱上拉,需将相应的 TRIS 位置 1,并将 RBPU 位清零。
DS41265A_CN 44 初稿  2006 Microchip Technology Inc.
编程模式 /ICD
施密特 触发缓冲器
Q
SE14 LCDEN
3.3.3.8 RB7/ICSPDAT/ICDDAT/SEG13
3-13 是该引脚的框图。 RB7/ICSPDAT/ICDDAT/SEG13 引脚可以被配置为以下功能之一:
通用 I/O
在线串行编程 I/O
• ICD 数据 I/O
• LCD 的模拟输出

3-13 RB7/ICSPDAT/ICDDAT/SEG13 框图

PIC16F946
PORT/ 编程模式 /ICD
PGD
数据总线
PORTB
TRISB
PGD DRVEN
(1)
RBPU
SE13 LCDEN
QD
CK
数据锁存器
QD
CK
TRIS 锁存器
TRISB
1 0
0 1
SE13 LCDEN
TTL
输入缓冲器
VDD
P
弱 上拉
VDD
I/O
PORTB
RBIF 1
来自其他
RB<7:4> 引脚
SE13 LCDEN
PGD
SEG13
1: 若要使能弱上拉,需将相应的 TRIS 位置 1,并将 RBPU 位清零。
2006 Microchip Technology Inc. 初稿 DS41265A_CN 45
编程模式 /ICD
施密特 触发缓冲器
Q
Q
D
EN
D
EN
SE13 LCDEN
PORTB
FOSC/4
PIC16F946

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

地址 名称
06h/106h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu 86h/186h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 1111
0Bh/8Bh/ 10Bh/18Bh
95h WPUB WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 WPUB1 WPUB0 1111 1111 1111 1111
96h IOCB IOCB7 IOCB6 IOCB5 IOCB4
107h LCDCON LCDEN
11Ch LCDSE0
11Dh LCDSE1
图注: x = 未知, u = 不变, - = 未用单元 (读为 0)。 PORTB 不使用阴影单元。 1: 此寄存器只能通过上电复位或欠压复位初始化,发生其他复位时均不变。
INTCON
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x
(1)
(1)
SE15 SE14 SE13 SE12 SE11 SE10 SE9 SE8 0000 0000 uuuu uuuu
SLPEN WERR VLCDEN CS1 CS0 LMUX1 LMUX0 0001 0011 0001 0011
SE7 SE6 SE5 SE4 SE3 SE2 SE1 SE0 0000 0000 uuuu uuuu
POR BOR
时的值
0000 ---- 0000 ----
所有其他复
位时的值
DS41265A_CN 46 初稿 2006 Microchip Technology Inc.
PIC16F946

3.4 PORTC TRISC 寄存器

PORTC 是一个 8 位宽的双向端口。PORTC 与几种外设 功能复用。 PORTC 引脚都有施密特触发输入缓冲器。
所有 PORTC 引脚都有锁存位 (PORTC 寄存器)。它 们被写入时会修改 PORTC 锁存器的内容;因此,如果 相应的 TRISC 位被配置为输出,将修改在该引脚上驱动 输出的值。
注: 载有 LCD 信号的模拟信号线 (即, SEGx
VLCDy,其 中 x y 分别为段和 LCD 偏 置电压标识符)直接与器件引脚相连。这些 信号从 LCD 模块输出并且有可能处于三 态,这由 LCD 模块的配置决定。

3-3:初PORTC

BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ; CLRF PORTC ;Init PORTC BSF STATUS,RP0 ;Bank 1 BCF STATUS,RP1 ; MOVLW FFh ;Set RC<7:0> as inputs MOVWF TRISC ; BCF STATUS,RP0 ;Bank 2 BSF STATUS,RP1 ; CLRF LCDCON ;Disable VLCD<3:1>
BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ;
寄存器 3-7 PORTC——PORTC 寄存器 (地址:07h
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0
bit 7 bit 0
bit 7-0
RC<7:0>:PORTC I/O 引脚位
1 = 端口引脚电平 >V 0 = 端口引脚电平 <VIL
IH
;inputs on RC<2:0>
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
寄存器 3-8 TRISC——PORTC 三态寄存器 (地址:87h
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 引脚被配置为输出
注: TRISC<7:6> XTHS LP 振荡模式下始终读为 1
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 47
PIC16F946
3.4.1 引脚说明及框图
每个 PORTC 引脚都与其他功能复用。这里将简要介绍这 些引脚及其复用功能。欲知有关各个功能的具体信息, 比如 LCD SSP,请参见此数据手册中的相应章节。
3.4.1.1 RC0/VLCD1
3-14 是该引脚的框图。RC0/VLCD1 引脚可以被配置 为以下功能之一:
通用 I/O
• LCD 偏置电压的模拟输入
3.4.1.2 RC1/VLCD2
3-15 是该引脚的框图。RC1/VLCD2 引脚可以被配置 为以下功能之一:
通用 I/O
• LCD 偏置电压的模拟输入

3-14 RC0/VLCD1 框图

数据总线
QD
3.4.1.3 RC2/VLCD3
3-16 是该引脚的框图。RC2/VLCD3 引脚可以被配置 为以下功能之一:
通用 I/O
• LCD 偏置电压的模拟输入
VDD
PORTC
TRISC
VLCD1
Q
CK
数据锁存器
QD
Q
CK
TRIS 锁存器
TRISC
PORTC
VLCDEN LMUX<1:0> 00
VLCDEN LMUX<1:0>
00)
RC0/VLCD1
引脚
施密特 触发器
DS41265A_CN 48 初稿 2006 Microchip Technology Inc.

3-15 RC1/VLCD2 框图

PIC16F946
数据总线
PORTC
数据锁存器
TRISC
TRIS 锁存器
PORTC
VLCD2
QD
Q
CK
QD
Q
CK
TRISC

3-16 RC2/VLCD3 框图

VLCDEN LMUX<1:0>
VLCDEN LMUX<1:0> 00
00)
VDD
RC1/VLCD2
引脚
施密特 触发器
数据总线
PORTC
TRISC
VLCD3
QD
Q
CK
数据锁存器
QD
Q
CK
TRIS 锁存器
TRISC
PORTC
VDD
RC2/VLCD3
引脚
VLCDEN
施密特 触发器
VLCDEN
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 49
PIC16F946
3.4.1.4 RC3/SEG6
3-17 是该引脚的框图。 RC3/SEG6 引脚可以被配置 为以下功能之一:
通用 I/O
• LCD 的模拟输出

3-17 RC3/SEG6 框图

SEG6
数据总线
PORTC
TRISC
QD
Q
CK
数据锁存器
QD
Q
CK
TRIS 锁存器
TRISC
PORTC
VDD
RC3/SEG6
引脚
SE6 LCDEN
施密特 触发器
SE6 LCDEN
DS41265A_CN 50 初稿  2006 Microchip Technology Inc.
3.4.1.5 RC4/T1G/SDO/SEG11
3-18 是该引脚的框图。RC4//T1G/SDO/SEG11 引脚 可以被配置为以下功能之一:
通用 I/O
• TMR1 的门控信号输入
串行数据输出
• LCD 的模拟输出

3-18 RC4/T1G/SDO/SEG11 框图

PORT/SDO 选择
PIC16F946
数据总线
PORTC
TRISC
QD
CK
Q
数据锁存器
QD
CK
TRIS 锁存器
Q
TRISC
PORTC
SDO
SE11 LCDEN
0 1
VDD
RC4/T1G/ SDO/SEG11
引脚
SS
V
施密特 触发器
EN
D
Q1
Q
Timer1 门控信号
SEG11
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 51
SE11 LCDEN
PIC16F946
3.4.1.6 RC5/T1CKI/CCP1/SEG10
3-19 是该引脚的框图。RC5/T1CKI/CCP1/SEG10 引 脚可以被配置为以下功能之一:
通用 I/O
• TMR1 的时钟输入
捕捉输入、比较输出或 PWM 输出
• LCD 的模拟输出

3-19 RC5/T1CKI/CCP1/SEG10 框图

PORT/CCP1 选择)和 CCPMX
数据总线
PORTC
TRISC
CCP1 数据输出
QD
CK
Q
数据锁存器
QD
CK
Q
TRIS 锁存器
TRISC
PORTC
0 1
SE10 LCDEN
施密特 触发器
VDD
SS
V
RC5/T1CKI/ CCP1/SEG10
引脚
Timer1 门控信号
SEG10
DS41265A_CN 52 初稿  2006 Microchip Technology Inc.
SE10 LCDEN
3.4.1.7 RC6/TX/CK/SCK/SCL/SEG9
3-20 是该引脚的框图。RC6/TX/CK/SCK/SCL/SEG9 引脚可以被配置为以下功能之一:
通用 I/O
异步串行输出
同步时钟 I/O
• SPI 时钟 I/O
2
C 数据 I/O
• I
• LCD 模拟输出

3-20 RC6/TX/CK/SCK/SCL/SEG9 框图

PIC16F946
PORT/SCEN/SSP 模式选择
数据总线
PORTC
TRISC
SCEN 或 I2C™驱动器
2C™
I
数据输出
TX/CK 数据输出
SCK 数据输出
QD
CK
Q
数据锁存器
QD
CK
TRIS 锁存器
Q
TRISC
(1)
0
1 2 3
SE9 LCDEN
施密特 触发器
VDD
VSS
RC6/TX/ CK/SCK/ SCL/SEG9
引脚
PORTC
CK/SCL/SCK 输入
SEG9
1: 如果三个数据输出源都被使能,将采用以下优先级顺序:
• USART 数据
• SSP 数据
端口数据
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 53
SE9 LCDEN
PIC16F946
3.4.1.8 RC7/RX/DT/SDI/SDA/SEG8
3-21 是该引脚的框图。RC7/RX/DT/SDI/SDA/SEG8 引脚可以被配置为以下功能之一:
通用 I/O
异步串行输入
同步串行数据 I/O
• SPI 数据 I/O
2
C 数据 I/O
• I
• LCD 的模拟输出

3-21 RC7/RX/DT/SDI/SDA/SEG8 框图

2C™
SCEN/I
PORT/(SCEN 或 I2C™)选择
模式选择
DT 数据输出
I2C™数据输出
数据总线
PORTC
(1)
D
CK
数据锁存器
D
TRISC
I2C™驱动器
SCEN 驱动器
CK
TRIS 锁存器
0
1
Q
Q
Q
Q
TRISC
0
1
SE8 LCDEN
VDD
RC7/RX/DT/ SDI/SDA/ SEG8
引脚
施密特 触发器
PORTC
RX/SDI 输入
SEG8
1: 如果同时使能了 SSP USART 输出, USART 数据输出的优先级高于 SSP 数据输出。 SSP
USART 数据输出的优先级均高于端口数据输出。
DS41265A_CN 54 初稿  2006 Microchip Technology Inc.
SE8 LCDEN
PIC16F946

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

地址 名称
07h PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu
10h T1CON
14h SSPCON
17h CCP1CON
18h RCSTA SPEN 87h TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111
107h LCDCON LCDEN
11Ch LCDSE0
11Dh LCDSE1
图注: x = 未知, u = 不变, - = 未用单元 (读为 0)。 PORTC 不使用阴影单元。 1: 此寄存器只能通过上电复位或欠压复位初始化,发生其他复位时均不变。
(1)
(1)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T1GINV T1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 uuuu uuuu
WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000
RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x
SLPEN WERR VLCDEN CS1 CS0 LMUX1 LMUX0 0001 0011 0001 0011
SE7 SE6 SE5 SE4 SE3 SE2 SE1 SE0 0000 0000 uuuu uuuu
SE15 SE14 SE13 SE12 SE11 SE10 SE9 SE8 0000 0000 uuuu uuuu
CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000
POR BOR
时的值
所有其他复
位时的值
2006 Microchip Technology Inc. 初稿 DS41265A_CN 55
PIC16F946

3.5 PORTD TRISD 寄存器

PORTD 是一个带有施密特触发输入缓冲器的 8 位端口。 各引脚都可以被单独配置为输入或输出。
只有 PIC16F946 器件可以使用 PORTD
注: 载有 LCD 信号的模拟信号线 (即, SEGx
COMy,其中 x y 分别是段和公共端标 识符)直接与器件引脚相连。这些信号从
LCD 模块输出并且有可能处于三态,这由 LCD 模块的配置决定。

3-4:初PORTD

BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ; CLRF PORTD ;Init PORTD BSF STATUS,RP0 ;Bank 1 BCF STATUS,RP1 ; MOVLW FFh ;Set RD<7:0> as inputs MOVWF TRISD ; BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ;
寄存器 3-9 PORTD——PORTD 寄存器 (地址:08h
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0
bit 7 bit 0
bit 7-0
RD<7:0>:PORTD I/O 引脚位
1 = 端口引脚电平 >V 0 = 端口引脚电平 <VIL
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
IH
寄存器 3-10 TRISD——PORTD 三态寄存器 (地址:88h
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0
bit 7 bit 0
bit 7-0
TRISD<7:0>PORTD 三态控制位
1 = PORTD 引脚被配置为输入 (三态) 0 = PORTD 引脚被配置为输出
注: TRISD<7:6> XTHS LP 振荡模式下始终读为 1
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
DS41265A_CN 56 初稿  2006 Microchip Technology Inc.
PIC16F946
3.5.1 引脚说明及框图
每个 PORTD 引脚都与其他功能复用。这里将简要介绍这 些引脚及其复用功能。欲知有关各个功能的具体信息, 比如比较器或 A/D 转换器,请参见此数据手册中的相应 章节。
3.5.1.1 RD0/COM3
3-22 是该引脚的框图。RD0/COM3 引脚可以被配置 为以下功能:
通用 I/O
比较器 1 的模拟输入
3.5.1.2 RD1
3-23 是该引脚的框图。 RD1 引脚可以被配置为以下 功能:
通用 I/O
3.5.1.3 RD2/CCP2
3-24 是该引脚的框图。 RD2/CCP2 引脚可以被配置 为以下功能:
通用 I/O
捕捉输入、比较输出或 PWM 输出
3.5.1.4 RD3/SEG16
3-25 是该引脚的框图。RD3/SEG16 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.5.1.7 RD6/SEG19
3-25 是该引脚的框图。RD6/SEG19 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.5.1.8 RD7/SEG20
3-25 是该引脚的框图。RD7/SEG20 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.5.1.5 RD4/SEG17
3-25 是该引脚的框图。RD4/SEG17 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.5.1.6 RD5/SEG18
3-25 是该引脚的框图。RD5/SEG18 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 57
PIC16F946

3-22 RD0/COM3 框图

DD
V
数据总线
PORTD
TRISD
COM3
D
Q
CK
Q
数据锁存器
D
Q
CK
Q
TRIS 锁存器
TRISD
PORTD

3-23 RD1 框图

RD0/COM3
引脚
施密特 触发器
LCDEN LMUX<1:0> = 11
LCDEN
LMUX<1:0> = 11
数据总线
PORTD
TRISD
D
Q
CK
Q
数据锁存器
D
Q
CK
Q
TRIS 锁存器
TRISD
PORTD
施密特 触发器
DD
V
RD1 引脚
DS41265A_CN 58 初稿  2006 Microchip Technology Inc.

3-24 RD2/CCP2 框图

PORT/CCP2 选择)和 CCPMX
CCP2 数据输出
PIC16F946
VDD
0
数据总线
PORTD
TRISD
CCP2 输入
D
Q
CK
Q
数据锁存器
D
Q
CK
Q
TRIS 锁存器
TRISD
PORTD

3-25 RD<7:3> 框图

数据总线
PORTD
D
Q
CK
Q
数据锁存器
1
RD2/CCP2
引脚
施密特 触发器
DD
V
RD<7:3> 引脚
D
Q
TRISD
SEG<20:16>
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 59
CK
Q
TRIS 锁存器
TRISD
PORTD
SE<20:16> LCDEN
SE<20:16> LCDEN
施密特 触发器
PIC16F946

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

地址 名称
08h PORTD RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 xxxx xxxx uuuu uuuu
(2)
1Dh 88h TRISD TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 1111 1111 1111 1111
107h LCDCON LCDEN
11Eh LCDSE2
图注: x = 未知, u = 不变, - = 未用单元 (读为 0)。 PORTD 不使用阴影单元。 1: 此寄存器只能通过上电复位或欠压复位初始化,发生其他复位时均不变。
CCP2CON
(1)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
SLPEN WERR VLCDEN CS1 CS0 LMUX1 LMUX0 0001 0011 0001 0011
SE23 SE22 SE21 SE20 SE19 SE18 SE17 SE16 0000 0000 uuuu uuuu
CCP2X CCP2Y CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000 --00 0000
POR BOR
时的值
所有其他复
位时的值
DS41265A_CN 60 初稿 2006 Microchip Technology Inc.
PIC16F946
3.6
PORTE是一个带有施密特触发输入缓冲器的4位端口。 RE<7:0> 可以被单独配置为输入或输出。如果配置字寄
存器 (寄存器 16-1)中的 MCLRE 位为 0,则 RE3 只 能用作输入引脚。

PORTE TRISE 寄存器

注: 载有 LCD 信号的模拟信号线(即,SEGx,
其中 x 是段标识符)与器件引脚直接相连。 这些信号从 LCD 模块输出并且有可能处于 三态,这由 LCD 模块的配置决定。

3-5:初PORTE

BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ; CLRF PORTE ;Init PORTE BSF STATUS,RP0 ;Bank 1 BCF STATUS,RP1 ; MOVLW 0Fh ;Set RE<3:0> as inputs MOVWF TRISE ; CLRF ANSEL ;Make RE<2:0> as I/O’s BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ;
寄存器 3-11 PORTE——PORTE 寄存器 (地址:09h
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
RE7RE6RE5RE4RE3RE2RE1RE0
bit 7 bit 0
bit 7-0
RE<7:0>: PORTE I/O 引脚位
1 = 端口引脚电平 >VIH 0 = 端口引脚电平 <VIL
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
寄存器 3-12 TRISE——PORTE 三态寄存器 (地址:89h
R/W-1 R/W-1 R/W-1 R/W-1 R-1 R/W-1 R/W-1 R/W-1
TRISE7 TRISE6 TRISE5 TRISE4 TRISE3 TRISE2 TRISE1 TRISE0
bit 7 bit 0
bit 7-4
bit 3
bit 2-0
TRISE<7:4>数据方向位 TRISE3数据方向位。 RE3 始终为输入,所以该位始终读为 1 TRISE<2:0>数据方向位
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 61
PIC16F946
3.6.1 引脚说明和框图
每个 PORTE 引脚都与其他功能复用。这里将简要介绍这 些引脚及其复用功能。欲知有关各个功能的具体信息, 如比较器或 A/D 转换器,请参见此数据手册中的相应章 节。
3.6.1.1 RE0/AN5/SEG21
3-26 是该引脚的框图。RE0/AN5/SEG21 引脚可以被 配置为以下功能:
通用 I/O
• A/D 转换器的模拟输入
• LCD 的模拟输出
3.6.1.2 RE1/AN6/SEG22
3-26 是该引脚的框图。RE1/AN6/SEG22 引脚可以被 配置为以下功能:
通用 I/O
• A/D 转换器的模拟输入
• LCD 的模拟输出
3.6.1.3 RE2/AN7/SEG23
3-26 是该引脚的框图。RE2/AN7/SEG23 引脚可以被 配置为以下功能:
通用 I/O
• A/D 转换器的模拟输入
• LCD 的模拟输出
3.6.1.7 RE6/SEG26
3-26 是该引脚的框图。RE6/SEG26 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.6.1.8 RE7/SEG27
3-26 是该引脚的框图。RE7/SEG27 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.6.1.4 RE3/MCLR/VPP
3-27 是该引脚的框图。 RE3/MCLR/VPP 引脚可以被 配置为以下功能:
仅数字输入
带弱上拉的主复位
编程参考电压输入
3.6.1.5 RE4/SEG24
3-26 是该引脚的框图。RE4/SEG24 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.6.1.6 RE5/SEG25
3-26 是该引脚的框图。RE5/SEG25 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
DS41265A_CN 62 初稿  2006 Microchip Technology Inc.

3-26 RE<7:4, 2:0> 框图

PIC16F946
VDD
数据总线
PORTE
TRISE
SEG<27:21>
AN<7:5>
1A/D 的模拟输入只能施加在 RE<2:0> 引脚上。
(1)
D
Q
CK
Q
数据锁存器
D
Q
CK
Q
TRIS 锁存器
TRISE
PORTE
模拟模式或
SE<27:21> LCDEN
SE<27:21> LCDEN
RE<7:4,2:0>
引脚
施密特 触发器
2006 Microchip Technology Inc. 初稿 DS41265A_CN 63
PIC16F946

3-27 RE3/MCLR/VPP 框图

MCLR 电路
MCLR
滤波器
HV
施密特触发
缓冲器
编程模式
数据总线
HV 检测
MCLRE
HV
RE3/MCLR/VPP
(1)
施密特触发
缓冲器
TRISE
PORTE
1: 当引脚是 MCLR RE3 读为 0

3-5:与PORTE 相关的寄存器汇总

地址 名称
09h PORTE RE7 R6 RE5 RE4 RE3 RE2 RE1 RE0 xxxx xxxx uuuu uuuu
1Fh ADCON0
89h TRISE TRISE7 TRISE6 TRISE5 TRISE4 TRISE3
91h ANSEL ANS7 ANS6 ANS5
107h LCDCON LCDEN
11Eh LCDSE2
19Ch LCDSE3
图注: x = 未知, u = 不变, - = 未用单元 (读为 0)。 PORTE 不使用阴影单元。 1: 此寄存器只能通过上电复位或欠压复位初始化,发生其他复位时均不变。
2: 只读位; TRISE 始终为 1
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
ADFM VCFG1 VCFG0 CHS2 CHS1 CHS0 GO/DONE ADON 0000 0000 0000 0000
(2)
TRISE2 TRISE1 TRISE0 1111 1111 1111 1111
ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
SLPEN WERR VLCDEN CS1 CS0 LMUX1 LMUX0 0001 0011 0001 0011
(1)
SE23 SE22 SE21 SE20 SE19 SE18 SE17 SE16 0000 0000 uuuu uuuu
(1)
SE31 SE30 SE29 SE28 SE27 SE26 SE25 SE24 0000 0000 uuuu uuuu
POR BOR
时的值
所有其他复
位时的值
DS41265A_CN 64 初稿 2006 Microchip Technology Inc.
PIC16F946
3.7
PORTF 是一个带施密特触发输入缓冲器的 8 位端口。 RF<7:0> 可以根据端口方向位的状态单独被配置为输入 或输出。端口位还与 LCD 段功能复用。

PORTF TRISF 寄存器

注: 载有 LCD 信号的模拟信号线(即,SEGx,
其中 x 是段标识符)与器件引脚直接相连。 这些信号从 LCD 模块输出并且有可能处于 三态,这由 LCD 模块的配置决定。

3-6:初PORTF

BCF STATUS,RP0 ;Bank 3 BCF STATUS,RP1 ; CLRF PORTF ;Init PORTF BSF STATUS,RP0 ;Bank 1 BCF STATUS,RP1 ; MOVLW 0Fh ;Set RF<3:0> as inputs MOVWF TRISF ; CLRF ANSEL ;Make RF<2:0> as I/O’s BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ;
寄存器 3-13 PORTF——PORTF 寄存器 (地址:188h
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
RF7 RF6 RF5 RF4 RF3 RF2 RF1 RF0
bit 7 bit 0
bit 7-0
RF<7:0>: PORTF I/O 引脚位
1 = 端口引脚电平 >VIH 0 = 端口引脚电平 <VIL
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
寄存器 3-14 TRISF——PORTF 三态寄存器 (地址:185h
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
TRISF7 TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0
bit 7 bit 0
bit 7-0
TRISF<7:0> 数据方向位
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 65
PIC16F946
3.7.1 引脚说明和框图
每个 PORTF 引脚都与其他功能复用。这里将简要介绍这 些引脚及其复用功能。欲知有关各个功能的具体信息, 请参见此数据手册中的相应章节。
3.7.1.1 RF0/SEG32
3-28 是该引脚的框图。RF0/SEG32 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.7.1.2 RF1/SEG33
3-28 是该引脚的框图。RF1/SEG33 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.7.1.3 RF2/SEG34
3-28 是该引脚的框图。 RF2/SEG342 引脚可以被配 置为以下功能:
通用 I/O
• LCD 的模拟输出
3.7.1.4 RF3/SEG35
3-28 是该引脚的框图。RF3/SEG35 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.7.1.7 RF6/SEG30
3-28 是该引脚的框图。RF6/SEG30 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.7.1.8 RF7/SEG31
3-28 是该引脚的框图。RF7/SEG31 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.7.1.5 RF4/SEG28
3-28 是该引脚的框图。RF4/SEG28 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.7.1.6 RF5/SEG29
3-28 是该引脚的框图。RF5/SEG29 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
DS41265A_CN 66 初稿  2006 Microchip Technology Inc.

3-28 RF<7:0> 框图

PIC16F946
VDD
数据总线
PORTF
TRISF
D
Q
CK
Q
数据锁存器
D
Q
CK
Q
RF<7:0>
引脚
TRIS 锁存器
TRISF
模拟模式或
SE<31:2835:32> 和 LCDEN
施密特 触发器
PORTF
SE<31:28,35:32> LCDEN
SEG<31:28,35:32>

3-6:与PORTF 相关的寄存器汇总

地址 名称
1Fh ADCON0
91h ANSEL ANS7 ANS6 ANS5
107h LCDCON LCDEN 185h TRISF TRISF7 TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0 1111 1111 1111 1111 188h PORTF RF7 RF6 RF5 RF4 RF3 RF2 RF1 RF0 xxxx xxxx uuuu uuuu
19Ch LCDSE3
19Dh LCDSE4
图注: x = 未知, u = 不变, - = 未用单元 (读为 0)。 PORTF 不使用阴影单元。 1: 此寄存器只能通过上电复位或欠压复位初始化,发生其他复位时均不变。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
ADFM VCFG1 VCFG0 CHS2 CHS1 CHS0 GO/DONE ADON 0000 0000 0000 0000
ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
SLPEN WERR VLCDEN CS1 CS0 LMUX1 LMUX0 0001 0011 0001 0011
(1)
SE31 SE30 SE29 SE28 SE27 SE26 SE25 SE24 0000 0000 uuuu uuuu
(1)
SE39 SE38 SE37 SE36 SE35 SE34 SE33 SE32 0000 0000 uuuu uuuu
POR BOR
时的值
所有其他复
位时的值
2006 Microchip Technology Inc. 初稿 DS41265A_CN 67
PIC16F946
3.8
PORTG是一个带有施密特触发输入缓冲器的8位端口。 RG<5:0> 可以根据端口方向位的状态被单独配置为输 入或输出。端口位还与 LCD 段功能复用。

PORTG TRISG 寄存器

注: 载有 LCD 信号的模拟信号线(即,SEGx,
其中 x 是段标识符)与器件引脚直接相连。 这些信号从 LCD 模块输出并且有可能处于 三态,这由 LCD 模块的配置决定。

3-7:初PORTG

BCF STATUS,RP0 ;Bank 3 BCF STATUS,RP1 ; CLRF PORTG ;Init PORTG BSF STATUS,RP0 ;Bank 1 BCF STATUS,RP1 ; MOVLW 0Fh ;Set RG<3:0> as inputs MOVWF TRISG ; CLRF ANSEL ;Make RG<2:0> as I/O’s BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ;
寄存器 3-15 PORTG——PORTG 寄存器 (地址:189h
U-0 U-0 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
RG5 RG4 RG3 RG2 RG1 RG0
IH
bit 7-6
bit 5-0
bit 7 bit 0
未用: 读为 0 RG<5:0>PORTG I/O 引脚位
1 = 端口引脚电平 >V 0 = 端口引脚电平 <VIL
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
寄存器 3-16 TRISG——PORTG 三态寄存器 (地址:187h
U-0 U-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
TRISG5 TRISG4 TRISG3 TRISG2 TRISG1 TRISG0
bit 7-6
bit 5-0
bit 7 bit 0
未用: 读为 0 TRISG<5:0>数据方向位
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
DS41265A_CN 68 初稿  2006 Microchip Technology Inc.
3.8.1 引脚说明和框图
每个 PORTG 引脚都与其他功能复用。这里将简要介绍 这些引脚及其复用功能。欲知有关各个功能的具体信 息,请参见此数据手册中的相应章节。
3.8.1.1 RG0/SEG36
3-29 是该引脚的框图。RG0/SEG36 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.8.1.2 RG1/SEG37
3-29 是该引脚的框图。RG1/SEG37 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.8.1.3 RG2/SEG38
3-29 是该引脚的框图。RG2/SEG38 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
PIC16F946
3.8.1.4 RG3/SEG39
3-29 是该引脚的框图。RG3/SEG39 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.8.1.5 RG4/SEG40
3-29 是该引脚的框图。RG4/SEG40 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
3.8.1.6 RG5/SEG41
3-29 是该引脚的框图。RG5/SEG41 引脚可以被配置 为以下功能:
通用 I/O
• LCD 的模拟输出
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 69
PIC16F946

3-29 RG<5:0> 的框图

VDD
数据总线
PORTG
D
CK
Q
Q
数据锁存器
D
Q
TRISG
CK
Q
TRIS 锁存器
TRISG
模拟模式或 SE<41:36> LCDEN
PORTG
SE<41:36> LCDEN
SEG<41:36>

3-7:与PORTG 相关的寄存器汇总

地址 名称
1Fh ADCON0
91h ANSEL ANS7 ANS6 ANS5
107h LCDCON LCDEN
187h TRISG
189h PORTG
19Dh LCDSE4
19Eh LCDSE5
图注: x = 未知, u = 不变, - = 未用单元 (读为 0)。 PORTG 不使用阴影单元。 注 1: 此寄存器只能通过上电复位或欠压复位初始化,发生其他复位时均不变。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
ADFM VCFG1 VCFG0 CHS2 CHS1 CHS0 GO/DONE ADON 0000 0000 0000 0000
ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
SLPEN WERR VLCDEN CS1 CS0 LMUX1 LMUX0 0001 0011 0001 0011
(1)
(1)
SE39 SE38 SE37 SE36 SE35 SE34 SE33 SE32 0000 0000 uuuu uuuu
TRISG5 TRISG4 TRISG3 TRISG2 TRISG1 TRISG0 --11 1111 --11 1111
RG5 RG4 RG3 RG2 RG1 RG0 --xx xxxx --uu uuuu
施密特 触发器
POR BOR
时的值
SE41 SE40 ---- --00 ---- --uu
RG<5:0>
引脚
所有其他复
位时的值
DS41265A_CN 70 初稿 2006 Microchip Technology Inc.
PIC16F946

4.0 时钟源

4.1 综述

PIC16F946 具有大量的时钟源和选择特性,使之能得到 广泛应用,同时能优化性能,降低功耗。图 4-1 给出了 PIC16F946 时钟源的框图。
可使用外部振荡器配置时钟源,可选用的振荡器有石英 晶振谐振器、陶瓷谐振器和阻容 (RC)振荡电 路。此 外,还可以使用两个内部振荡器中的一个配置系统时钟 源,并可通过软件选择时钟速率。其他时钟特性包括:
通过软件选择外部或内部系统时钟源。
双速时钟启动模式将外部时钟起振和代码执行之间
的延时缩短到最小。
故障保护时钟监视器 (Fail-Safe Clock Montior FSCM)专用于检测外部时钟源 (LPXTHS EC RC 模式)的故障,并使系统时钟切换到内
部振荡器。

4-1 PIC16F946 系统时钟框图

外部振荡器
OSC2
PIC16F946 可配置在以下一种时钟模式下工作。
1. EC——外部时钟, RA6 用作 I/O 引脚。
2. LP——低增益晶振或陶瓷谐振器振荡模式。
3. XT——中等增益晶振或陶瓷谐振器振荡模式。
4. HS——高增益晶振或陶瓷谐振器振荡模式。
5. RC——外部阻容振荡器(RC),通过 RA6 引脚 输出频率为 F
6. RCIO——外部阻容振荡器,RA6 用作 I/O 引脚。
7. INTOSC——内部振荡器,通过 RA6 输出频率为
OSC/4 的时钟信号, RA7 用作 I/O 引脚。
F
8. INTOSCIO——内部振荡器,RA6 RA7 均用作 I/O 引脚。
由配置字寄存器中的 FOSC<2:0> 位配置时钟源模式
(见第 16.0 节“CPU 的特性”)。内部时钟可以由两个
振荡器产生。 HFINTOSC 是高频已校准的振荡器。
LFINTOSC 是低频未校准的振荡器。
OSC/4 的时钟信号。
FOSC<2:0>
(配置字寄存器)
SCS
OSCCON<0>
OSC1
内部振荡器
HFINTOSC
8 MHz
LFINTOSC
31 kHz
休眠
8 MHz 4 MHz 2 MHz
1 MHz 500 kHz 250 kHz
后分频器
125 kHz
31 kHz
LP、XT、HS、RC、RCIO EC
IRCF<2:0>
OSCCON<6:4>
111 110 101 100
011
MUX
010 001 000
LCD 模块 上电延时定时器(PWRT) 看门狗定时器(WDT) 故障保护时钟监视器(FSCM
系统时钟
MUX
CPU 和外设)
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 71
PIC16F946
寄存器 4-1 OSCCON——振荡器控制寄存器 (地址:8Fh
U-0 R/W-1 R/W-1 R/W-0 R-q R-0 R-0 R/W-0
bit 7 bit 0
IRCF2 IRCF1 IRCF0 OSTS
(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 = 器件使用由 FOSC<2:0> 定义的外部系统时钟 0 = 器件使用内部系统时钟 (HFINTOSC LFINTOSC
HTSHFINTOSC (高频——8MHz125 kHz)稳定位
1 =HFINTOSC稳定 0 =HFINTOSC不稳定
LTS LFINTOSC (低频——31 kHz)稳定位
1 =LFINTOSC稳定 0 =LFINTOSC不稳定
SCS:系统时钟选择位
1 = 内部振荡器用作系统时钟 0 = 使用由 FOSC<2:0> 定义的时钟源作为系统时钟
1: 器件上电时, OSTS 位的值取决于器件配置字寄存器 (CONFIG)的值。在以下条
件成立时,器件上电复位 (POR)或任何自动时钟切换都将使 OSTS 位的值为 0。 自动时钟切换可能由双速启动或故障保护时钟监视引起。以下条件成立时,
OSTS = 0 FOSC<2:0> = 000 (LP)或 001 (XT)或 010 (HS)
IESO = 1 或 FSCM = 1
(如果使能 FSCM,将自动使能 IESO
如果任何上述条件未满足,在器件上电复位时,OSTS 位的值为 1。请参见第 4.6
“双速时钟启动模式”和第 4.7 节 “故障保护时钟监视器”了解更多详细信息。
(1)
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知 q = 取值视情况而定
DS41265A_CN 72 初稿  2006 Microchip Technology Inc.
PIC16F946

4.2 时钟源模式

时钟源模式可以划分为外部和内部两类。
外部时钟模式使用外部电路作为时钟源。如振荡器 模块 (EC 模式)、石英晶体谐振器或陶瓷谐振器
LPXT HS 模式)以及阻容 (RC 模式)振
荡电路。
• PIC16F946 内部含有时钟源。 PIC16F946 具有两 个内部振荡器:8MHz高频内部振荡器
HFINTOSC)和 31 kHz 低频内部振荡器 (LFINTOSC)。
可以通过系统时钟选择位(SCS)选择外部或内部时钟 源作为系统时钟 (见第 4.5 节 “时钟切换”)。

4.3 外部时钟模式

4.3.1 振荡器起振定时器 (OST
如果将 PIC16F946 配置为 LPXT 或 HS 模式,在上电 复位 (POR) 、上电延时定时器 (PWRT)超时 (如 果配置的话)或从休眠模式唤醒后,振荡器起振定时器
OST)计数 1024 OSC1 引脚上的振荡。在计数期
间,程序计数器不会递增,程序暂停执行。OST 确保使 用石英晶体谐振器或陶瓷谐振器的振荡电路已经启动, 并且为 PIC16F946 提供稳定的系统时钟。当切换时钟 源时,需要一段延时才能使新时钟稳定下来。表 4-1 给 出了这些振荡器延时。
4.3.1.1 特殊情况
当器件进入休眠状态且下列条件为真时,则出现特殊情 况:
选 LP 作为主振荡器的时钟模式。
• T1OSCEN = 1 (使能 Timer1 振荡器)。
• SCS = 0 (由 FOSC<2:0> 指定振荡器模式)。
• OSTS = 1 (器件依靠主系统时钟运行)。
在这种情况下,在从休眠模式唤醒时,不需要 OST,因 为在休眠期间 Timer1 将继续运行,并使用同一个 LP 振 荡电路作为器件的时钟源。对于这些器件,当 LCD 模块 在休眠模式下运行时,通常会出现这种情况。
在使用 OSCTUNE 寄存器调节 F 频率不可能立即稳定。在这种情况下,频率可能会逐渐 地调整为新值。频率改变所需的时间少于 8 个时基周 期。
注: 当启动 OST 时,由于 WDOG 纹波计数器
OST 用来执行振荡器延时计数,因此 WDOG 被保持在复位状态。当 OST 超时 后, WDOG 将开始计数 (如果使能)。
4-1 给出了启动振荡器延时的示例。
要缩短外部振荡器起振和代码执行之间的延时,可以选 择双速时钟启动模式 (见第 4.6 节 “双速时钟启动模 式”)。
INTOSC 频率的应用中,
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 73
PIC16F946

4-1 振荡器延时示例

系统时钟源 频率 切换前的状态 振荡器延时 (TOST)备
LFIOSC 31 kHz
HFIOSC 125 kHz-8 MHz
XT HS
LP 32 kHz
使能了 T1OSCLP
EC RC
EC RC
4-20 MHz
32 kHz
0-20 MHz
0-20 MHz LFIOSC
休眠模式 10 µs 内部延时 在从休眠模式唤醒或上电复位以后,会
调用一段内部延时,使得在开始执行程 序之前,存储器偏置电压达到稳定。
休眠模式 10 µs 内部延时 在从休眠模式唤醒或上电复位以后,会
调用一段内部延时,使得在开始执行程 序之前,存储器偏置电压达到稳定。
INTOSC 或休眠模式 1024 个时钟周期 在从 INTOSC 切换到其他时钟源时,
OST 必须计数 1024 个时钟周期。
INTOSC 或休眠模式 1024 个时钟周期 在从 INTOSC 切换到其他时钟源时,
OST 必须计数 1024 个时钟周期。特殊
情况请参见第 4.3.1.1 节 “特殊情况”。
休眠模式 10 µs 内部延时 在从休眠模式唤醒以后,会调用一段内
部延时,使得在开始执行程序之前,存 储基准时钟达到稳定。关于该特殊情况 的详细信息,请参见第 4.3.1.1 节“特 殊情况”。
休眠模式 10 µs 内部延时 在从休眠模式唤醒或上电复位以后,会
调用一段内部延时,使得在开始执行程 序之前,存储器偏置电压达到稳定。
10 µs 内部延时 在从 LFIOSC 或上电复位以后,会调用
一段内部延时,使得在开始执行程序之 前,存储器偏置电压达到稳定。
DS41265A_CN 74 初稿 2006 Microchip Technology Inc.
PIC16F946
4.3.2 EC 模式
外部时钟 (EC)模式将外部产生的逻辑电平作为系统 时钟源。当工作在该模式下时,外部时钟源与 OSC1 引 脚相连,RA6 则作为通用 I/O 引脚使用。图 4-2 给出了 EC 模式的引脚连接方式。
当选择 EC 模式时,振荡器起振定时器 (OST)被禁 止。因此,在上电复位(POR)或从休眠模式唤醒后, 不会有延时。由于 PIC16F946 设计是全静态的,因此 停止外部时钟输入会暂停器件工作并保持所有数据的完 整性。外部时钟重新起振之后,器件将恢复原来的工 作,如同没有暂停一样。

4-2 外部时钟 (EC)模式工作原理图

PIC16F946
时钟
(外部系统)
RA6
OSC1 CLKIN
RA6/OSC2/CLKO/T1OSO
FOSC
FOSC<2:0> = 011
内部 时钟
4.3.3 LPXT HS 模式
LPXT HS 模式支持在 OSC1 OSC2 引脚连接石
英晶体谐振器或陶瓷谐振器 (图 4-3 和图 4-4)。这类 模式选择内部反相放大器的低、中等或高增益设置以支 持不同谐振器类型和速率。
LP 振荡模式选择内部反相放大器的低增益设置。该模式 的电流消耗是这三种模式中最低的。它最适合驱动具有 低驱动电平规范的谐振器,如音叉型晶振。
注: 过去, LP 振荡器和 Timer1 振荡器的时钟
电路是相互独立的。在该系列器件中, LP 振荡器和 Timer1 振荡器使用同一个振荡电 路。当使用配置为 LP 振荡模式且 T1OSCEN = 1 的器件时,每项功能的时钟 源均采用同一个振荡电路。
XT 振荡模式选择内部反相放大器的中等增益设置。该 模式的电流消耗在这三种模式中处于中等水平。此模式 最适合于驱动具有中等驱动电平规范的谐振器,如低频 / 条形切割的石英晶体谐振器。
HS 振荡模式选择内部反相放大器的高增益设置。HS 模 式的电流消耗是这三种模式中最高的。此模式最适合于 需要高电平驱动的谐振器,如高频 / 条形切割的石英晶 体谐振器或陶瓷谐振器。
4-3 和图 4-4 分别给出了石英晶体谐振器和陶瓷谐振 器的典型电路。
2006 Microchip Technology Inc. 初稿 DS41265A_CN 75
PIC16F946
4-3 石英晶振工作原理
LPXT HS 模式)
PIC16F946
OSC1
休眠
到内部 逻辑
(3)
C1
(2)
RF
石英 晶振
OSC2
(1)
RS
C2
1: 用低电平驱动的石英晶振可能需要一个串
联电阻 (R
F 的值随选定的振荡模式变化 (通常在
2R
S)。
2M至 10 M之间)。
3: 如果在使能 T1SOC 的情况下使用 LP
式, LP 振荡器将在休眠模式下继续运行。
1:石英晶振的特性根据其类型、封装和制造
工艺而各不相同。用户应当查询厂商提供 的数据手册获取技术规范和建议的应用场 合。
2: 请始终在应用规定的 V
DD 和温度范围内验
证振荡器的性能。
4-4 陶瓷谐振器工作原理
XT HS 模式)
PIC16F946
OSC1
C1
RP
(3)
RF
(2)
OSC2
(1)
R
S
C2
陶瓷 谐振器
1: 用低电平驱动的陶瓷谐振器可能需要一个
串联电阻 (RS)。
F 的值随选定的振荡模式变化 (通常在
2R
2M至 10 M之间)。
3: 为了使陶瓷谐振器正常工作,可能需要一
个额外的并联反馈电阻 (R 1 MΩ)。
到内部 逻辑
休眠
P)(典型值为
DS41265A_CN 76 初稿  2006 Microchip Technology Inc.
PIC16F946
4.3.4 外部 RC 模式
外部阻容 (RC)模式支持使用外部 RC 电路。当对时 钟精度要求不高时,外部 RC 模式可以让设计人员在选 择频率上有最大的灵活性,同时将成本保持最低。外部 RC 模式有两种, RC RCIO
RC模式下,RC电路与OSC1引脚相连。OSC2/CLKO 引脚输出 RC 振荡频率 4 分频的时钟信号。该信号可用 来提供外部电路的时钟或满足同步、校准、测试或其他 应用的时钟需求。图 4-5 给出了 RC 模式的连接电路。

4-5 RC 模式

VDD
PIC16F946
REXT
OSC1
CEXT
VSS
OSC/4
F
建议值: 3 kΩ ≤ REXT 100 k
RCIO 模式下, RC 电路与 OSC1 引脚相连。 OSC2 引脚变成了一个额外的通用 I/O 引脚。它成为 PORTA 的第4位( RA4)。图4-6显示了 RCIO 模式的连接方式。
OSC2/CLKO
EXT >20 pF
C
内部 时钟

4-6 RCIO 模式

VDD
PIC16F946
REXT
OSC1
CEXT
VSS
RA6
建议值: 3 k REXT 100 k
I/O(OSC2)
EXT >20 pF
C
内部 时钟

4.4 内部时钟模式

PIC16F946 具有两个独立的内部振荡器,可以配置或选 择它们作为系统时钟源。
1. HFINTOSC(高频内部振荡器)在出厂时已经过 校准,其工作频率为 8MHz。用户可通过软件使OSCTUNE 寄存器(寄存器 4-2)在 ±12% 的 范围内调节 HFINTOSC 的频率。
2. LFINTOSC(低频内部振荡器)在出厂时已经过 校准,其工作频率为 31 kHz
可以通过软件使用内部振荡器频率选择位 (IRCF)选 择系统时钟的速度。
可以通过系统时钟选择位(SCS)选择外部或内部时钟 源作为系统时钟 (见第 4.5 节 “时钟切换”)。
4.4.1 INTOSC INTOSCIO 模式
当使用配置字寄存器(寄存器 16-1)中的振荡器选择位
FOSC)编程器件时, INTOSC INTOSCIO 模式将
内部振荡器配置为系统时钟源。
INTOSC 模式下, OSC1 引脚用作通用 I/O 引脚。 OSC2/CLKO 引脚输出频率为选定内部振荡频率 4 分频 的时钟信号。可以使用 CLKO 信号为外部电路、同步、 校准、测试或其他应用需求提供时钟。
INTOSCIO 模式下,OSC1 和 OSC2 引脚均用作通用
I/O 引脚。
4.4.2 HFINTOSC
高频内部振荡器(HFINTOSC)是经过厂家校准、工作 频率为 8 MHz 的内部时钟源。用户可通过软件使用 OSCTUNE 寄存器 (寄存器 4-2)在大约 ±12% 的范围 内调节 HFINTOSC 的频率。
HFINTOSC 的输出与后分频器和多路开关相连 (见 图 4-1)。可以通过软件使用 IRCF 位选择 7 种时钟频率 之一 (见第 4.4.4 节 “频率选择位 (IRCF)”)。
通过选择 125 kHz 8MHz(IRCF 000)之间的任 何频率作为系统时钟源 (SCS = 1),或当使能双速启 动(IESO = 1 IRCF ≠ 000)时,均可使能
HFINTOSC
HF 内部振荡器位 (HTS)(OSCCON<2>)表明 HFINTOSC 是否稳定。
RC 振荡频率是供电电压、电阻 (REXT)和电容
EXT)值以及工作温度的函数。此外,由于正常门限
C
电压的不同,不同器件的振荡频率也各不相同。而且, 不同封装类型的引脚间电容差异也会影响振荡频率,特 别当 CEXT 值较小时更是如此。用户还需考虑由于所使 用的外部 RC 元件的容差所引起的差异。
2006 Microchip Technology Inc. 初稿 DS41265A_CN 77
PIC16F946
4.4.2.1 OSCTUNE 寄存器
HFINTOSC 在出厂前已经过校准,但通过软件写 OSCTUNE 寄存器 (寄存器 4-2)可以调节频率值。
OSCTUNE 寄存器的调节范围是 ±12%。其默认值为 0
该值是一个 5 位的 2 的补码(Two's Complement)。由 于制造工艺的差异,单调性和频阶是不确定的。
当修改了 OSCTUNE 寄存器时,HFINTOSC 的频率将开 始转为新的频率。HFINTOSC 时钟将在 1ms之内稳定下 来。在频率变化的过程中,代码将继续执行。没有专门 的指示表明时钟发生了变化。
OSCTUNE 不会影响 LFINTOSC 的频率。依靠 LFINTOSC 时钟频率工作的功能部件,如上电延时定时
器(PWRT)、看门狗定时器 (WDT)、故障保护时钟 监视器 (FSCM)和外设
寄存器 4-2: 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-5
bit 4-0
bit 7 bit 0
未用:读为 0
TUN<4:0>:频率调节位
01111 = 最高频率 01110 =
00001 = 00000 = 中等频率。振荡器模块在校准频率下运行。
11111 =
10000 = 最低频率
不会
受到频率变化的影响。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
DS41265A_CN 78 初稿  2006 Microchip Technology Inc.
PIC16F946
4.4.3 LFINTOSC
低频内部振荡器 (LFINTOSC)是未经校准、工作频率 大约为 31 KHz 的内部时钟源。
LFINTOSC 的输出连接到后分频器和多路开关 (见 图 4-1)。可通过软件使用 IRCF 位可选择 31 kHZ (见 第 4.4.4 节 “频率选择位 (IRCF)”)。 LFINTOSC 的 输出也是上电延时定时器 (PWRT) 、看门狗定时器
WDT)和故障保护时钟监视器 (FSCM)的时钟。
通过选择 31 kHZ IRCF = 000)作为系统时钟源
SCS = 1),或使能以下任何一项均可使能
LFINTOSC
双速启动 (IESO = 1 IRCF = 000
上电延时定时器 (PWRT)
看门狗定时器 (WDT)
故障保护时钟监视器 (FSCM)
选作 LCD 模块的时钟源
LF 内部振荡器 (LTS)位 (OSCCON<1>)表明 LFINTOSC 是否稳定。
4.4.4 频率选择位 (IRCF)
8 MHz HFINTOSC 31 kHz LFINTOSC 的输出均与后
分频器和多路开关相连 (见图 4-1)。内部振荡器频率 选择位 IRCF<2:0>OSCCON<6:4>)选择内部振荡器 的输出频率。通过软件可以选择 8 种频率中的一种:
• 8 MHz
• 4 MHz (复位后的默认频率)
• 2 MHz
• 1 MHz
• 500 kHz
• 250 kHz
• 125 kHz
• 31 kHz
注: 任何复位后,IRCF 位被设置为 110,且 频
率选择被设置为 4 MHz。用户可以修改
IRCF 位选择其他频率。
4.4.5 HF LF INTOSC 时钟切换时序
当在 LFINTOSC HFINTOSC 之间切换时,新的振荡 器可能已经被关闭以节省功耗。如果是这种情况,在修 改了 IRCF 位后和产生新频率之前,会有 10 µs 的延时。 LTS/ HTS 位将反映 LFINTOSC HFINTOSC 振荡器的 当前活动状态。频率选择的时序如下:
1. 修改 IRCF 位。
2. 如果新时钟关闭,将开始10 µs的时钟起振延时。
3. 时钟切换电路等待当前时钟的下降沿。
4. CLKO 保持低电平,时钟切换电路等待新时钟的
上升沿。
5. 现在 CLKO 与新时钟相连。按照要求更新 HTS/LTS 位。
6. 时钟切换完成。
如果选定的内部振荡器速度介于 8 MHz 125 kHz 之 间,在选定新的频率之前将没有起振延时。这是因为旧 的和新的频率都是来自 HFINTOSC,经由后分频器和多 路开关后得到的。

4.5 时钟切换

通过软件使用系统时钟选择位(SCS)可以在外部和内 部时钟源之间切换系统时钟源。
4.5.1 系统时钟选择位 (SCS
系统时钟选择位(SCS)(OSCCON<0>)选择供 CPU 和外设使用的系统时钟源。
SCS = 0 时,系统时钟源由配置字寄存器
CONFIG)中 FOSC<2:0> 位的配置决定。
SCS = 1 时,系统时钟源由 IRCF 位选定的内
部振荡频率决定。复位后, SCS 总是清零的。
注: 可能由双速启动或故障保护时钟监视器引
起的任何自动时钟切换均不会更新 SCS 位。用户可以监视 OSTS(OSCCON<3> 位来确定当前的系统时钟源。
2006 Microchip Technology Inc. 初稿 DS41265A_CN 79
PIC16F946
4.5.2 振荡器起振超时状态位
振荡器起振延时状态位 (OSTS)(OSCCON<3>)表 明系统时钟是依靠由FOSC 位选定的外部时钟源运行还 是内部时钟源运行。当处于 LPXT HS 模式时, OSTS 表示振荡器起振定时器 (OST)已经超时。

4.6 双速时钟启动模式

双速时钟启动模式通过使外部振荡器起振到代码执行之 间的延时达到最小而进一步降低功耗。在大量使用休眠 模式的应用中,双速启动将使唤醒所花费的时间中不包 含外部振荡器起振时间,并能降低器件的总功耗。
此模式允许应用从休眠状态唤醒,使用 INTOSC 作为时 钟源来执行一些指令,然后返回休眠状态,而无需等待 主振荡器稳定。
注: 执行 SLEEP 指令将暂停振荡器起振时间并
将使 OSTS 位(OSCCON<3>)保持清零。
当将 PIC16F946 配置为 LPXT 或 HS 模式时,会使能 振荡器起振定时器 (OST)(见第 4.3.1 节 “振荡器起 振定时器 (OST)”)。 OST 定时器会暂停程序执行, 直到计满 1024 个振荡周期为止。双速启动模式通过在 OST 计数时使用内部振荡器作为时钟源,最大限度地缩 短了代码执行的延时。当 OST 计数达到 1024 OSTS 位(OSCCON<3>)置 1 时,程序执行将切换到由外部 振荡器充当时钟源。
4.6.2 双速启动时序
1. 发生上电复位或从休眠状态唤醒。
2. 以内部振荡器作为时钟源开始执行指令,时钟频 率由 IRCF 位(OSCCON<6:4>)设定。
3. 使能 OST 计数 1024 个时钟周期。
4. OST 超时,等待内部振荡器的下降沿。
5. OSTS 置 1。
6. 系统时钟保持低电平直到新的时钟的下一个下降 沿(LPXT HS 模式)。
7. 系统时钟切换到外部时钟源。
4.6.3 检查外部 / 内部时钟状态
检查 OSTS 位(OSCCON<3>)位的状态可以确定 PIC16F946 是依靠配置字寄存器(CONFIG)中 FOSC
位定义的外部时钟源运行还是依靠内部振荡器运行。
4.6.1 双速时钟启动模式配置
通过下列设置配置双速启动模式:
内 / 外时钟切换位 IESO = 1 (CONFIG<10>)
• SCS = 0
• FOSC 被配置为 LP、 XT 或 HS 模式。
发生下列事件后进入双速启动模式:
上电复位 (POR)、 PWRT 超时 (如果使能), 或者
从休眠模式唤醒。
如果外部时钟振荡器被配置为除 LPXT 或 HS 模式以外 的其他模式,将禁止双速启动。这是因为在上电复位后 或从休眠模式退出后,外部时钟振荡器将不需要任何稳 定时间。
DS41265A_CN 80 初稿 2006 Microchip Technology Inc.

4-7 双速启动

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

4.7 故障保护时钟监视器

故障保护时钟监视器 (FSCM)允许器件在发生外部时 钟故障时继续工作。FSCM 可以检测当器件从复位或休 眠状态退出后以及振荡器起振定时器(OST)超时后任 何时刻发生的振荡器故障。

4-8 FSCM 框图

LFINTOSC
振荡器
时钟
÷ 64
时钟 故障
检测器
检测到
时钟 故障
内部振荡器的频率取决于 IRCF 位(OSCCON<6:4>) 的值。一进入故障保护状态,OSTS 位( OSCCON<3>) 就会自动清零以表明内部振荡器处于活动状态,并且将 清零WDTSCS位(OSCCON<0>)不更新。使能FSCM 不会影响 LTS 位。
FSCM 采样时钟由 INTOSC 时钟的 64 分频产生。这样 就可以保证在FSCM采样时钟之间有足够的时间出现系 统时钟沿。图 4-8 给出了 FSCM 的框图。
在采样时钟的上升沿,监视锁存位将清零 (CM = 0)。 在主系统时钟的下降沿,监视锁存位将置 1(CM = 1)。 当出现采样时钟的下降沿时,如果监视锁存位没有置
1,则检测到时钟故障。当使能 FSCM 时,也将使能由 IRCF 指定的内部振荡器。
1: 当使能故障保护时钟监视器模式时,双速
启动将被自动使能。
2FSCM 将视频率不大于约 488 Hz 的主时
钟为故障。起振缓慢的振荡器会引起 FSCM 中断。
通过设置配置字寄存器 (CONFIG)中的 FCMEN 位可 使能 FSCM 功能。该功能适用于所有的外部时钟选项
LPXTHSEC RC 模式)。
当发生外部时钟故障时,FSCM将OSFIF位(PIR2<7>1,此时如果 OSFIE 位(PIE2<7>)置 1,还将产生 振荡器故障中断。然后器件会将系统时钟切换到内部振 荡器。系统时钟将保持由内部振荡器提供,除非外部时 钟恢复并且退出故障保护状态。
2006 Microchip Technology Inc. 初稿 DS41265A_CN 81
PIC16F946
4.7.1 清除故障保护条件
在复位、执行 SLEEP 指令或修改了 SCS 位之后,将清 除故障保护条件。当故障条件存在时,PIC16F946 使用 内部振荡器作为系统时钟而不退出故障保护条件。
在清除 OSFIF 标志前必须清除故障保护条件。

4-9 FSCM 时序图

采样时钟
系统 时钟
振荡器 故障
输出
CM 输出
(Q)
OSCFIF
CM 检测
CM 检测 CM 检测
注: 通常,器件时钟的频率比采样时钟频率高很多。本例中选择的相对频率是为了明了起见。
4.7.2 复位或从休眠模式唤醒
FSCM 可以检测当器件从复位或休眠状态退出后以及振
荡器起振定时器(OST)超时后任何时刻发生的振荡器 故障。如果外部时钟是 EC RC 模式,那么在这些事 件后会立即开始时钟监视。
对于 LPXT 或 HS 模式,外部振荡器起振时间比 FSCM 采样时钟周期要长很多,所以可能会检测到假时钟故障
(见图 4-9)。为了防止这一问题,内部振荡器自动配置
为系统时钟并开始工作,直到外部时钟稳定为止(OST 完成延时)。这与双速启动模式相同。一旦外部振荡器 稳定下来, LFINTOSC 就将重新作为 FSCM 时钟源。
注: 由于振荡器的起振时间范围很广,故障保
护电路在振荡器起振期间 (即在退出复位 或休眠后)不工作。在一段适当的时间后, 用户应该检查 OSTS 位(OSCCON<3>) 以验证振荡器起振和系统时钟切换是否已 经成功完成。
检测到
故障

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

地址 名称
8Fh OSCCON
90h OSCTUNE
(1)
2007h
图注: x = 未知, u = 不变,- = 未用单元 (读为 0)。振荡器不使用阴影单元。 1: 关于配制器寄存器中的所有位的操作,请参见寄存器 16-1
DS41265A_CN 82 初稿  2006 Microchip Technology Inc.
CONFIG CPD CP MCLRE PWRTE WDTE FOSC2 FOSC1 FOSC0
2: 详情请参见寄存器 4-1
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
(2)
IRCF2 IRCF1 IRCF0 OSTS
- -
TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 ---u uuuu
HTS LTS SCS -110 q000 -110 x000
POR BOR
时的值
--
其他复位
时的值
PIC16F946

5.0 TIMER0 模块

Timer0 模块定时器 / 计数器具有如下特点:
• 8 位定时器 / 计数器
可读写
• 8 位可软件可编程预分频器
内部或外部时钟选择
• FFh 到 00h 的溢出中断
外部时钟的边沿选择
5-1 Timer0 模块和预分频器 (与 WDT 共享)的 框图。

5.1 Timer0 工作原理

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

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

CLKO
= FOSC/4
0
1
T0CKI
引脚
T0SE
T0CS
0
8
预分频器
1
通过将 T0CS 位置 1OPTION_REG<5>)选择计数器 模式。在该模式下,Timer0 模块可在 RA4/C1OUT/T0CKI/SEG4 引脚的每个上升沿或下降沿 递增计数。具体边沿由时钟源边沿选择控制位(T0SE
OPTION_REG<4>)决定。清零 T0SE位选择上升沿。

5.2 Timer0 中断

TMR0 寄存器定时器 / 计数器产生从 FFh 00h 的溢 出时,产生 Timer0 中断。此溢出将 T0IF
INTCON<2>)置 1。清零 T0IE 位(INTCON<5>)可
屏蔽此中断。在重新允许中断之前,必须用软件方法通 过 Timer0 模块的中断服务程序清零 T0IF 位。由于在休 眠状态下定时器是关闭的,所以 Timer0 中断无法唤醒 单片机。
数据总线
1
同步两个
周期
0
PSA
8
TMR0
溢出时将标志位
T0IF 置 1
WDTE
SWDTEN
31 kHz
INTOSC
注: T0SET0CSPSA PS<2:0> 位在选项寄存器中; WDTPS<3:0> 位在 WDTCON 寄存器中。
看门狗 定时器
PSA
16
预分频器
16
WDTPS<3:0>
8
PS<2:0>
1
0
PSA
WDT
超时
2006 Microchip Technology Inc. 初稿 DS41265A_CN 83
PIC16F946

5.3 Timer0 与外部时钟一起使用

当不使用预分频器时,外部时钟输入与预分频器输出相 同。在内部相位时钟的 Q2 Q4 周期对预分频器输出进 行采样可实现 T0CKI 与内部相位时钟的同步。因此,要 求 T0CKI 引脚上的信号高、低电平分别至少保持 2 T
(加上一小段 20 ns RC 延时)和 2 TOSC (加上一小
20 ns RC 延时)。请参见所需器件的电气规范。
寄存器 5-1: 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
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
bit 7 bit 0
bit 7 RBPUPORTB 上拉使能位
1 = 禁止 PORTB 上拉 0 = WPUA 寄存器中的各个端口锁存器值使能 PORTB 上拉
bit 6 INTEDG:中断边沿选择位
1 = RB0/INT/SEG0 引脚的上升沿触发中断 0 = RB0/INT/SEG0 引脚的下降沿触发中断
bit 5 T0CSTMR0 时钟源选择位
1 = RA4/C1OUT/T0CKI/SEG4 引脚信号的跳变沿 0 = 内部指令周期时钟 (CLKO
bit 4 T0SETMR0 时钟源边沿选择位
1 = RA4/C1OUT/T0CKI/SEG4 引脚电平的下降沿递增计数 0 = RA4/C1OUT/T0CKI/SEG4 引脚电平的上升沿递增计数
bit 3 PSA:预分频器分配位
1 = 将预分频器分配给 WDT 0 = 将预分频器分配给 Timer0 模块
bit 2-0 PS<2:0>:预分频比选择位
位值
000 001 010 011 100 101 110 111
OSC
TMR0 分频比 WDT 分频比
1 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : 128 1 : 256
1 : 1 1 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : 128
(1)
1PIC16F946 可使用专用的 16 WDT 后分频器。更多信息,请参见第 16.6 节“看
门狗定时器 (WDT)”。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
DS41265A_CN 84 初稿  2006 Microchip Technology Inc.
PIC16F946

5.4 预分频器

一个 8 位的计数器可作为 Timer0 模块的预分频器,或 作为看门狗定时器的后分频器。为简化起见,在此数据 手册中称该计数器为“预分频器”。通过软件设置 PSA 控制位(OPTION_REG<3>)来控制预分频器的分配。 将 PSA 位清零会把预分频器分配给 Timer0。预分频值 可通过 PS<2:0> 位(OPTION_REG<2:0>)选择。
不可读写该预分频器。当预分频器分配给Timer0 模块时, 所有写入 TMR0 寄存器的指令 (如 CLRF 1MOVWF 1BSF 1,x 等)都将使预分频器清零。当分配给 WDT 时,执行 CLRWDT 指令将同时清零预分频器和看门狗定 时器。
5.4.1 切换预分频器的分配
预分频器的分配完全由软件控制 (也就是说,在程序执 行期间可以“随时”更改分配)。为避免器件意外复位, 当把预分频器从分配给 Timer0 改为分配给 WDT 时,必 须执行下列指令序列 (例 5-1 和例 5-2)。
5-1 更改预分频器(TIMER0 WDT
BCF STATUS,RP0 ;Bank 0 CLRWDT ;Clear WDT CLRF TMR0 ;Clear TMR0 and
; prescaler
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 被禁止也要采取该 预防措施。
5-2 更改预分频器(WDT TIMER0
CLRWDT ;Clear WDT and
; prescaler
BSF STATUS,RP0 ;Bank 1
MOVLW b’xxxx0xxx’ ;Select TMR0,
; prescale, and
; clock source MOVWF OPTION_REG ; BCF STATUS,RP0 ;Bank 0

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

地址 名称
01h TMR0 0Bh/10Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x 81h OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
85h TRISA 图注: -= 未用单元 (读为 0), u = 不变, x = 未知。 Timer0 模块不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Timer0 模块寄存器
TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111
POR BOR
时的值
xxxx xxxx uuuu uuuu
其他复位
时的值
2006 Microchip Technology Inc. 初稿 DS41265A_CN 85
PIC16F946
注:
DS41265A_CN 86 初稿 2006 Microchip Technology Inc.
PIC16F946

6.0 带门控的 TIMER1 模块

PIC16F946 器件具有一个 16 位定时器。图 6-1 所示为 Timer1 模块的基本框图。 Timer1 具有以下特点:
• 16 位定时器 / 计数器 (TMR1H:TMR1L)
可读写
内部或外部时钟选择
同步或异步操作
从 FFFFh 到 0000h 的溢出中断
溢出时唤醒 (异步模式)
可选择外部使能输入:
- 可选门控信号源:T1G T1GSS
- 可选门控信号的极性 (T1GINV
可选 LP 振荡器

6-1 PIC16F946 上的 TIMER1 框图

在溢出时将标志位 TMR1IF 1
C2 输出
在发生特殊事件时
清零
TMR1
TMR1H
(1)
TMR1L
如寄存器 6-1 所示, Timer1 控制寄存器 (T1CON)用 于使能 / 禁止 Timer1 并选择 Timer1 模块的不同特性。
TMR1ON
C2 比较器模块 TMR1 时钟
0
T1GE
TMR1ON T1GE
同步
时钟输入
T1GINV
LP OSC
(2)
OSC1/T1OSI
OSC2/T1OSO
FOSC = 000
FOSC = X00
T1OSCEN
RC5/T1CKI/
CCP1/SEG10
1Timer1 在上升沿递增计数。
2ST 缓冲器在使用 LP 振荡器时处于低功耗模式,而在使用 T1CKI 时处于高速模式。
1
OSC/4
F
0
内部 时钟
T1CS
T1SYNC
1
0
T1CKPS<1:0>
RC4/T1G/ SDO/SEG11
1
预分频器
1, 2, 4, 8
2
C2OUT
同步
检测
休眠输入
1
0
T1GSS
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 87
PIC16F946

6.1 Timer1 工作模式

Timer1 可以有三种工作模式:
带有预分频器的 16 位定时器
• 16 位同步计数器
• 16 位异步计数器
在定时器模式下, Timer1 在每个指令周期递增计数。在 计数器模式下,Timer1 在外部时钟输入 T1CKI 的每个上 升沿递增计数。此外,计数器模式的时钟可以与单片机 系统时钟同步或异步运行。
Timer1 模块中,模块时钟可由 Timer1 门控信号控 制,可以将 T1G 线。
如果需要外部时钟振荡器 (且单片机正在使用不带 CLKOUT INTOSC),Timer1 可以使用 LP 振荡器作 为时钟源。
注: 在计数器模式下,必须先经过一个下降
引脚或比较器 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:TTMR1L
寄存器对以及 TMR1IF 位清零。

6.3 Timer1 预分频器

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

6.4 Timer1 门控

可用软件将 Timer1 门控信号源配置为 T1G 引脚或比较 器 2 的输出。这允许器件使用 T1G 或使用比较器 2 为模拟事件定时有关选择Timer1 门控信 号源的信息,请参见 CMCON1 (寄存器 8-2)。此功能可 以简化 ∆-Σ A/D 转换器的软件和许多其他应用程序。欲 知有关 ∆-Σ A/D 转换器的更多信息,请访问 Microchip 网 站(www.microchip.com)。
注: 必须将 T1GE 位(T1CON<6>)置 1 以使
T1G 源。欲知有关选择 Timer1 门控信号源的信 息,请参见寄存器 8-2
可使用 T1GINV 位(T1CON<7>)来设置 Timer1 门控信 号的极性,它可以来自 T1G 的输出。该位可将 Timer1 配置为对两个事件之间的高电 平时间或低电平时间进行计时。
C2OUT 作为 Timer1 门控信号
直接对外部事件定时
引脚,也可以来自比较器 2

6-2 TIMER1 递增边沿

TMR1 使能时
T1CKI = 1
TMR1 使能时
T1CKI = 0
1: 箭头表示计数器递增。
2: 在计数器模式下,必须先经过一个下降沿,计数器才可以在随后的上升沿进行第一次递增计数。
DS41265A_CN 88 初稿 2006 Microchip Technology Inc.
寄存器 6-1 T1CON——TIMER1 控制寄存器 (地址:10h
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
T1GINV T1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
bit 7 bit 0
PIC16F946
bit 7 T1GINVTimer1 门控信号极性位
1 = Timer1 门被反转 0 = Timer1 门未被反转
bit 6 T1GE:Timer1 门控使能位
如果 TMR1ON = 0: 此位被忽略。 如果
TMR1ON = 1 1 = 使能 Timer1 门控 0 = 禁止 Timer1 门控
bit 5-4 T1CKPS<1:0>Timer1 输入时钟预分频比选择位
11 = 1:8 预分频比 10 = 1:4 预分频比 01 = 1:2 预分频比 00 = 1:1 预分频比
bit 3 T1OSCEN:LP 振荡器使能控制位
如果单片机正在使用不带 CLKO 振荡器的 INTOSC
1 = 使能 LP 振荡器作为 Timer1 的时钟源 0 = LP 振荡器关闭
否则: 此位被忽略。
bit 2 T1SYNC
TMR1CS =
1 = 不与外部时钟输入同步 0 = 与外部时钟输入同步
TMR1CS = 此位被忽略。 Timer1 使用内部时钟作为时钟源。
bit 1 TMR1CSTimer1 时钟源选择位
1 = 选择来自 RC5/T1CKI/CCP1/SEG10 引脚或 T1OSC 的外部时钟 (上升沿计数) 0 = 内部时钟 (FOSC/4
bit 0 TMR1ONTimer1 使能位
1 = 使能 Timer1 0 = 停止 Timer1
Timer1 外部时钟输入同步控制位
1
0
(1)
(2)
1T1GINV 位可使 Timer1 门控信号的逻辑电平反相,而不管门控信号源如何。
2T1GE 位必须置 1 以便使用由 T1GSS 位(CMCON1<1>)选择的 T1G
C2OUT 作为 Timer1 的门控信号源。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41265A_CN 89
引脚或
PIC16F946
6.5 在异步计数器模式下的 Timer1 工作
原理
如果控制位 T1SYNC T1CON<2>)被置 1,外部时 钟输入就不同步。定时器继续进行与内部相位时钟异步 的递增计数。在休眠状态下定时器仍将继续运行,并在 溢出时产生中断,从而唤醒处理器。但是,在用软件对 定时器进行读 / 写操作时应该特别小心(见第 6.5.1
“异步计数器模式下对 Timer1 的读写操作”)。
注: 必须对 ANSEL(91h)和 CMCON0(9Ch
寄存器进行初始化以将模拟通道配置为数 字输入通道。配置为模输入的引脚将读为 0
6.5.1 异步计数器模式下对 TIMER1 的读写 操作
当定时器采用外部异步时钟工作时,对 TMR1H TMR1L 的读操作将确保有效(硬件操作时应当注意)。 但用户应牢记,用读两个 8 位值来读一个 16 位定时器 本身就存在问题,这是因为在两次读操作之间定时器可 能会溢出。
对于写操作,建议用户停止定时器后再写入需要的数 值。当计数器正在递增计数时,向定时器的寄存器写入 数据可能会产生写争用。从而在定时器寄存器中产生不 可预测的值。
®
16 位值时,用户应谨慎对待。《PICmicro 机系列参考手册》(DS33023A_CN)中的示例说明了 Timer1 在异步模式下运行时的读写方法。
中档单片

6.6 TIMER1 振荡器

为了尽可能减少 I/O 端口上的外设复用,取消了通常用于 TMR1 实时时钟应用的专用 TMR1 振荡器。而是让 TMR1 模块使用 LP 振荡器。
如果单片机设定为使用不带 CLKO INTOSC LP 振 荡器工作,则:
1. 当单片机使用 INTOSC LP 振荡器作为时钟源
时,把 T1OSCEN TMR1CS 位置为 1 将使能
LP 振荡器作为 TMR1 的时钟源。注意 T1OSC 和 LP 振荡器共用同一个电路。因此,当选择了 LP
振荡器并使能了 T1OSC 时,单片机和 Timer1 模 块共用同一个时钟源。
2. 休眠模式不会关闭 LP 振荡器(即当 INTOSC 荡器作为单片机的时钟源且 T1OSCEN TMR1CS均为1时,TMR1 将LP振荡器作为时钟 源),因 此 LP 振荡器将在休眠模式下继续运行。
除了不带 CLKOUT LP INTOSC,在其他振荡模式 下 T1OSC 使能选项都不可用并应当忽略。
注: 当选择不带 CLKO 振荡器的 INTOSC
T1OSCEN = 1 时,LP 振荡器将持续运行, 而与 TMR1ON 位的状态无关。
6.7 使用 CCP 触发信号输出来复位
Timer1
如果在比较模式中配置了 CCP1 CCP2 模块以产生
“特殊事件触发信号”(CCP1M<3:0> = 1011),则该
信号会复位 Timer1
注: 来自 CCP1 CCP2 模块的特殊事件触发信
号不会将中断标志位 TMR1IF PIR1<0>)置 1
为了利用这一功能,必须将 Timer1 设置为处于定时器 或同步计数器模式。如果 Timer1 在异步计数器模式下 运行,复位操作可能不起作用。
如果 Timer1 的写操作与 CCP1 CCP2 的特殊事件触 发信号同时发生,则写操作具有优先权。
在这种工作模式下,CCPRxH:CCPRxL 这对寄存器实际 上变成了 Timer1 的周期寄存器。
DS41265A_CN 90 初稿 2006 Microchip Technology Inc.

6.8 复位 Timer1 寄存器对 (TMR1H TMR1L

除了 CCP1 CCP2 特殊事件触发信号之外,上电复位 或其他复位都不会将 TMR1H TMR1L 复位为 00h
T1CON寄存器在上电复位或欠压复位时复位为00h,这 样就关闭了定时器并保留 1:1 的预分频比。在所有其他 复位中,该寄存器均不受影响。

6.9 休眠期间的 Timer1 工作原理

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

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

地址 名称
0Bh/
INTCON GIE PEIE
8Bh 0Ch PIR1 EEIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000
0Eh TMR1L
0Fh TMR1H
10h T1CON T1GINV T1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
97h CMCON1
8Ch PIE1 图注: x = 未知, u = 不变, - = 未用位,读为 0Timer1 模块不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x
16 TMR1 寄存器低字节的保持寄存器 16 TMR1 寄存器高字节的保持寄存器
TMR1CS TMR1ON 0000 0000 uuuu uuuu
EEIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000
T1GSS
C2SYNC ---- --10 ---- --10
POR BOR
时的值
xxxx xxxx uuuu uuuu xxxx xxxx uuuu uuuu
所有其他复
位时的值
2006 Microchip Technology Inc. 初稿 DS41265A_CN 91
PIC16F946
注:
DS41265A_CN 92 初稿 2006 Microchip Technology Inc.
PIC16F946

7.0 TIMER2 模块

Timer2 模块定时器 / 计数器具有以下特点:
Timer2 模块定时器具有以下特点:
• 8 位定时器 (TMR2 寄存器)
• 8 位周期寄存器 (PR2)
可读写 (以上两个寄存器)
可软件编程的预分频比 (1:11:4 1:16
可软件编程的后分频比 (1:1 1:16
• TMR2 与 PR2 匹配时产生中断
如寄存器 7-1 所示,Timer2 有一个控制寄存器。可通过 清零控制位 TMR2ON T2CON<2>)关闭 TMR2 来尽 量降低功耗。图 7-1 Timer2 模块的简化原理框图。该 寄存器控制 Timer2 预分频比和后分频比的选择。

7.1 Timer2 工作原理

Timer2 可以作为 CCP 模块在 PWM 模式下的 PWM 时 基。TMR2 寄存器是可读写的,任何器件复位都会使之 清零。输入时钟 (FOSC/4)预分频比可以是 1:11:41:16,这是通过控制位 T2CKPSx T2CON<1:0>) 选择的。TMR2 的匹配输出通过 4 位后分频器(可提供 从 1:1 1:16 的分频比)产生 TMR2 中断 (反映在 TMR2IF 标志位 (PIR1<1>)中)。
如果发生下列任何一种情况,预分频器和后分频器计数 器都会被清零:
TMR2 寄存器
T2CON 寄存器
任何器件复位 (上电复位、 MCLR
定时器复位或者欠压复位)
T2CON TMR2 不会被清零。
寄存器 7-1 T2CON——TIMER2 控制寄存器 (地址:12h
U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
bit 7 bit 0
bit 7 未用:读为 0
bit 6-3 TOUTPS<3:0>Timer2 输出后分频比选择位
0000 = 1:1 后分频比 0001 = 1:2 后分频比
1111 = 1:16 后分频比
bit 2 TMR2ONTimer2 使能位
1 = 使能 Timer2 0 = 禁止 Timer2
bit 1-0 T2CKPS<1:0>Timer2 时钟预分频比选择位
00 = 预分频比为 1 01 = 预分频比为 4 1x = 预分频比为 16
复位、看门狗
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 93
PIC16F946

7.2 Timer2 中断

Timer2 模块有一个 8 位周期寄存器 PR2Timer2 从 00h 开始递增计数,直到与 PR2 匹配为止,然后在下一个递 增计数周期开始时复位为 00hPR2 为可读写的寄存 器,它在复位时被初始化为 FFh

7-1 TIMER2 框图

OSC/4
F
预分频器
1:1, 1:4,1:16
2
T2CKPS<1:0>
1TMR2 寄存器输出可以由 SSP 模块通过软件选择作为波特率时钟。
TMR2
比较器
PR2

7.3 Timer2 输出

TMR2 的输出信号(在后分频器之前)送入 SSP 模块, 该模块可选择将其用于生成移位时钟。
将标志位
TMR2IF 1
复位
1:1 1:16
EQ
TOUTPS<3:0>
TMR2
输出
后分频器
4
(1)

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

地址 名称
0Bh/
INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000x
8Bh 0Ch PIR1 EEIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000
11h TMR 2
12h T2CON
8Ch PIE1
92h PR2 图注: x = 未知, u = 不变, - = 未用位,读为 0Time r2 模块不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
8 TMR2 寄存器的保持寄存器
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
EEIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000
Time r2 周期寄存器
POR BOR
时的值
0000 0000 0000 0000
1111 1111 1111 1111
所有其他复
位时的值
DS41265A_CN 94 初稿 2006 Microchip Technology Inc.
PIC16F946

8.0 比较器模块

比较器模块包含两个模拟比较器。这两个比较器的输入 引脚与 I/O 端口引脚 RA<3:0> 复用,而输出引脚与引脚 RA<5:4> 复用。片内比较器参考电压 (CV 加到比较器的输入引脚。
REF)也可施
CMCON0 寄存器 (寄存器 8-1)用于控制比较器的输
入和输出多路开关。图 8-3 给出了各种比较器的配置框 图。
寄存器 8-1: CMCON0——比较器配置寄存器 (地址:9Ch)
R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0
bit 7 bit 0
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2-0
C2OUT:比较器 2 输出位
C2INV = 0 时:
1 =C2 VIN+ > C2 VIN- 0 =C2 VIN+ < C2 VIN-
C2INV = 1 时:
0 =C2 VIN+ > C2 VIN- 1 =C2 VIN+ < C2 VIN-
C1OUT:比较器 1 输出位
C1INV = 0 时:
1 =C1 V 0 =C1 V
C1INV = 1 时:
0 =C1 VIN+ > C1 VIN- 1 =C1 VIN+ < C1 VIN-
C2INV:比较器 2 输出反相位
1 =C2输出反相 0 =C2输出不反相
C1INV:比较器 1 输出反相位
1 =C1输出反相 0 =C1输出不反相
CIS:比较器输入开关位 当
CM<2:0> = 010 时:
1 =C1 VIN- 连接到 RA3/AN3/C1+/VREF+/SEG15
0 =C1 VIN- 连接到 RA0/AN0/C1-/SEG12
CM<2:0> = 001 时:
1 =C1 VIN- 连接到 RA3/AN3/C1+/VREF+/SEG15 0 =C1 VIN- 连接到 RA0/AN0/C1-/SEG12
CM<2:0> = 101 时:
1 =C2 VIN+ 连接到内部 0.6V 参考电压 0 =C2 VIN+ 连接到 RA2/AN2/C2+/VREF-/COM2
CM<2:0>:比较器模式位 图 8-3 给出了比较器的几种模式以及相应的 CM<2:0> 位的设置。
1: 将引脚设置为模拟输入端将自动禁止数字输入电路、弱上拉和引脚电平变化中断功
IN+ > C1 VIN- IN+ < C1 VIN-
IN- 连接到 RA2/AN2/C2+/VREF-/COM2
C2 V
C2 VIN- 连接到 RA1/AN1/C2-/SEG7
(1)
能。相应的 TRIS 位必须设置为输入模式以允许对引脚电压进行外部控制。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 95
PIC16F946
O

8.1 比较器工作原理

8-1 给出了某个比较器及其模拟输入电压与数字输出 电平之间的关系。当 VIN+ 端的模拟输入电压低于 VIN- 上的模拟电压时,比较器输出数字低电平。当 VIN+ 端 的模拟输入电压高于 V 数字高电平。图 8-1 中比较器输出的阴影部分表示由输 入失调和响应时间所造成的不确定区。
注: 必须对 CMCON0 9Ch)寄存器中的相应
位进行编程,从而将 CIN+ CIN- 引脚配 置为模拟输入引脚。
通过设置 CxINV 位(CMCON0<5:4>)可以改变比较 器输出的极性。清零 CxINV 将导致输出不反相。表 8-1 给出了对应于不同输入条件和极性位设置情况下输出状 态的信息。

8-1 不同输入条件下的输出状态

输入条件
IN- > VIN+00
V
VIN- < VIN+01
V
IN- > VIN+11
V
IN- < VIN+10
IN- 上的模拟电压时,比较器输出
CINV CxOUT

8-1 单比较器

VIN-
VIN–
VIN+
VIN+
输出
utput
VIN+
V
IN-
+
输出

8.2 模拟输入连接注意事项

8-2 是一个简化的模拟输入电路。由于模拟引脚和数 字输出端相连,因此它们与 VDD VSS 之间接有反向 偏置二极管,从而将模拟输入电压限制在 VSS VDD 之 间。一旦输入电压超出该范围 0.6V,其中一个二极管就 会发生正向偏置,从而使输入电压被钳位。模拟信号源 的最大阻抗的建议值为 10 k。连接到模拟输入引脚的 任何外部元件 (如电容器或齐纳二极管),要保证其泄 漏电流极小。

8-2 模拟输入模型

Rs < 10K
A
IN
VA
图注: CPIN = 输入电容
V I
LEAKAGE= 各个连接点在引脚上产生的泄漏电流
R R VA = 模拟电压
CPIN
5 pF
T = 门限电压
IC = 内部走线等效电阻 S = 信号源阻抗
V
DD
VT = 0.6V
V
T = 0.6V
Leakage ±500 nA
Vss
R
IC
DS41265A_CN 96 初稿  2006 Microchip Technology Inc.
PIC16F946

8.3 比较器配置

比较器共有 8 种工作模式。 CMCON0 寄存器用于选择 这些模式。图 8-3 给出了这 8 种可能的模式。

8-3:比I/O 工作模式

比较器复位(上电复位时的默认值)
CM<2:0> = 000
RA0/AN0 C1-/SEG12
RA3/AN3/
REF+/SEG15
C1+/V
RA1/AN1 C2-/SEG7
RA2/AN2/
REF-/COM2
C2+/V
两个独立的比较器
CM<2:0> = 100
RA0/AN0 C1-/SEG12
RA3/AN3/
REF+/SEG15
C1+/V
RA1/AN1 C2-/SEG7
RA2/AN2/
REF-/COM2
C2+/V
A
IN-
V
IN+
C1
IN-
V
C2
V
IN+
IN-
V
C1
V
IN+
IN-
V
C2
V
IN+
V
A
A
A
A
A
A
A
关( 读 为 0)
关( 读 为 0)
C1OUT
C2OUT
如果改变了比较器模式,由于存在特定的模式改变延时
(如第 19.0 节“电气规范”所示),比较器的输出电平
可能会在此延时期间无效。
注: 改变比较器模式的过程中应禁止比较器中
断,否则可能产生误中断。
比较器关闭
CM<2:0> = 111
RA0/AN0 C1-/SEG12
RA3/AN3/ C1+/V
REF+/SEG15
RA1/AN1 C2-/SEG7
RA2/AN2/ C2+/V
REF-/COM2
D
D
D
D
四路输入的双比较器
CM<2:0> = 010
RA0/AN0 C1-/SEG12
RA3/AN3/ C1+/V
REF+/SEG15
RA1/AN1 C2-/SEG7
RA2/AN2/ C2+/V
REF-/COM2
A
A
A
A
IN-
V
V
IN+
IN-
V
V
IN+
CIS = 0 CIS = 1
CIS = 0 CIS = 1
C1
C2
IN-
V
V
IN+
IN-
V
V
IN+
关( 读 为 0)
关( 读 为 0)
C1
C2
C1OUT
C2OUT
来自 CVREF 模块
两个具有公共参考端的比较器
CM<2:0> = 011
RA0/AN0 C1-/SEG12
RA3/AN3/ C1+/V
REF+/SEG15
RA1/AN1 C2-/SEG7
RA2/AN2/
REF-/COM2
C2+/V
A
D
A
A
IN-
V
V
IN+
IN-
V
V
IN+
一个带参考输入选择的独立比较器
CM<2:0> = 101
RA0/AN0 C1-/SEG12
RA3/AN3/
REF+/
C1+/V
D
D
IN-
V
V
IN+
C1
C2
C1
C1OUT
C2OUT
关( 读 为 0)
两个具有公共参考端且带输出的比较器
CM<2:0> = 110
RA0/AN0 C1-/SEG12
RA1/AN1 C2-/SEG7
RA2/AN2/ C2+/V
REF-/COM2
A
A
A
IN-
V
C1
V
IN+
IN-
V
C2
V
IN+
三路输入的双比较器
CM<2:0> = 001
RA0/AN0 C1-/SEG12
RA3/AN3/ C1+/V
REF+/SEG15
A
CIS = 0
A
CIS = 1
V
V
IN-
IN+
C1OUT
RA4
C2OUT
RA5
C1
SEG15
RA1/AN1 C2-/SEG7
RA2/AN2/ C2+/V
REF-/
COM2
IN-
A
A
CIS = 0
A
CIS = 1
V
C2
IN+
V
C2OUT
RA5
RA1/AN1 C2-/SEG7
RA2/AN2/ C2+/V
REF-/COM2
A
A
IN-
V
C2
V
IN+
C2OUT
内部 0.6V 参考电压
图注:
A = 模拟输入,端口始终读为 0。 D = 数字输入。 CIS (CMCON0<3>)是比较器输入开关位。
C1OUT
2006 Microchip Technology Inc. 初稿 DS41265A_CN 第 97
PIC16F946

8-4:比C1 输出框图

C1OUT 引脚
端口引脚
MUX
C1INV
到数据总线
CMCON
C1IF 位置 1

8-5:比C2 输出框图

C2SYNC
TMR1
0
C2OUT 引脚
1
DQ
EN
DQ
EN
CMCON
CL
复位(低电平有效)
MUX
端口引脚
C2INV
DQ
EN
到数据总线
CMCON
C2IF 位置 1
1: 比较器 2 的输出在 T1 时钟源的下降沿被锁存。
DS41265A_CN 98 初稿  2006 Microchip Technology Inc.
DQ
EN
EN
CL
时钟源
DQ
复位
TMR1
(1)
CMCON
Loading...