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.
Loading...
+ 244 hidden pages