PIC16F716
数据手册
带 A/D 转换器和
增强型捕捉 / 比较 /PWM
的 8 位闪存单片机
2004 Microchip Technology Inc. 初稿 DS41206A_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
•M i c r o c h i p的产品均达到 Microchip 数据手册中所述的技术指标。
•M i c r o c h i p确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的操
作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•M i c r o c h i p愿与那些注重代码完整性的客户合作。
•M i c r o c h i p或任何其它半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视
为违反了《数字器件千年版权法案 (Digital Millennium Copyright Act )》。如果这种行为导致他人在未经授权的情况下,能访问您的软
件或其它受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。Microchip
Technology Inc. 及其分公司和相关公司、各级主管与员工及
事务代理机构对译文中可能存在的任何差错不承担任何责任。
建议参考 Microchip Technology Inc. 的原版文档。
本出版物中所述的器件应用信息及其它类似内容仅为您提供便
利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或
暗示、书面或口头的声明或担保,包括但不限于针对其使用情
况、质量、性能、适销性或特定用途的适用性的声明或担保。
Microchip 对因这些信息及使用这些信息而引起的后果不承担
任何责任。未经 Microchip 书面批准,不得将 Microchip 的产
品用作生命维持系统中的关键组件。在 Microchip 知识产权保
护下,不得暗中或以其它方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron、
dsPIC、 K
EEL OQ、 microID、 MPLAB、 PIC、 PICmicro、
PICSTART、 PRO MATE、 PowerSmart、 rfPIC 和
SmartShunt均为 Microchip Technology Inc.在美国和其它国家
或地区的注册商标。
AmpLab、 FilterLab、 Migratable Memory、 MXDEV、
MXLAB、 PICMASTER、 rfPIC、 SEEVAL、 SmartSensor
和 The Embedded Control Solutions Company 均为 Microchip
Technology Inc. 在美国的注册商标。
Analog-for-the-Digital Age、 Application Maestro、
dsPICDEM、 dsPICDEM.net、 dsPICworks、 ECAN、
ECONOMONITOR、 FanSense、 FlexROM、 fuzzyLAB、
In-Circuit Serial Programming、 ICSP、 ICEPIC、 MPASM、
MPLIB、 MPLINK、 MPSIM、 PICkit、 PICDEM、
PICDEM.net、 PICLAB、 PICtail、 PowerCal、 PowerInfo、
PowerMate、 PowerTool、 rfLAB、 rfPICDEM、 Select
Mode、 Smart Serial、 SmartTel 和 Total Endurance 均为
Microchip Technology Inc. 在美国和其它国家或地区的商标。
SQTP 是 Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其它商标均为各持有公司所有。
© 2004, Microchip Technology Inc 。版权所有。
Microchip
Mountain View
过了
机、
器和模拟产品方面的质量体系流程均符合
Microchip
9001:2000
位于美国亚利桑那州
ISO/TS-16949:2002
KEE LOQ
的全球总部、设计中心和晶圆生产厂均于
®
跳码器件、串行
在开发系统的设计和生产方面的质量体系也已通过了
认证。
Chandler和Tem pe
质量体系认证。公司在
EEPROM
、单片机外设、非易失性存储
ISO/TS-16949:2002
PICmicro
及位于加利福尼亚州
2003年10
®
8
位单片
。此外,
月通
ISO
DS41206A_CN 第 ii 页 初稿 2004 Microchip Technology Inc.
PIC16F716
带 A/D 转换器和增强型捕捉 / 比较 /PWM
的 8 位闪存单片机
单片机内核特征:
• 高性能 RISC CPU
• 只有 35 条单字节指令
- 除了程序分支指令为双周期指令外,其它所有
指令均为单周期指令
• 工作速度:DC - 20 MHz 时钟输入
DC - 200 ns 指令周期
• 中断能力 (多达 7 个内部 / 外部中断源)
•8级深度硬件堆栈
• 直接、间接和相对寻址方式
特殊单片机特征:
• 上电复位 ( POR)
• 上电延时定时器 ( PWRT)和振荡器起振定时器
( OST)
• 看门狗定时器 ( WDT),带片内 RC 振荡器,确保
可靠工作
• 双阈值欠压复位电路
- 2.5 VBOR (典型值)
- 4.0 VBOR (典型值)
• 可编程代码保护
• 降低功耗的休眠模式
• 可选择不同的振荡器工作模式
• 全静态设计
• 在线串行编程 ( In-Circuit Serial Programming,
ICSP)
CMOS 技术
• 宽工作电压范围:
- 工业级: 2.0V - 5.5V
- 扩展级: 3.0V - 5.5V
• 高灌 / 拉电流: 25/25 mA
• 宽工作温度范围:
- 工业级: -40° C - 85° C
- 扩展级: -40° C - 125° C
低功耗特性:
• 待机电流:
-2.0V时典型值为 100 nA
• 工作电流:
-32kHz, 2.0V 时典型值为 14 µA
-1MHz, 2.0V 时典型值为 120 µA
• 看门狗定时器工作电流:
-2.0V时典型值为 1 µ A
•Timer1振荡器工作电流:
-32kHz, 2.0V 时典型值为 3.0 µA
外设特性:
•Timer0:带 8 位预分频器的 8 位定时器 / 计数器
•Timer1:带预分频器的 16 位定时器 / 计数器,在休
眠状态下,可使用外部晶体 / 时钟信号继续工作
•Timer2:带 8 位周期寄存器、预分频器和后分频器
的 8 位定时器 / 计数器
• 增强型捕捉 / 比较 /PWM 模块:
- 捕捉为 16 位,最大分辨率为 12.5 ns
- 比较为 16 位,最大分辨率为 200 ns
-PWM最大分辨率为 10 位
- 增强型 PWM:
- 单输出、半桥和全桥工作方式
- 数字可编程死区延时
- 自动关断 / 重启
•8位多通道模数转换器
•13个 I/O 引脚带有独立方向控制
•PORTB口可编程弱上拉
器件
PIC16F716 2048 x 14 128 x 8 13 4 2/1 1/2/4 2.0V - 5.5V
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 1 页
存储器
I/O
闪存 数据
8 位 A/D
(通道数)
定时器
8 位 /16 位
PWM
(输出)
VDD 范围
PIC16F716
引脚配置图
18 引脚 PDIP ,SOIC
RA2/AN2
RA3/AN3/VREF
RA4/T0CKI
MCLR/VPP
RB0/INT/ECCPAS2
RB1/T1OSO/T1CKI
RB3/CCP1/P1A
V
RB2/T1OSI
20 引脚 SSOP
RA2/AN2
RA3/AN3/VREF
RA4/T0CKI
MCLR/VPP
V
RB0/INT/ECCPAS2
RB1/T1OSO/T1CKI
RB3/CCP1/P1A
V
RB2/T1OSI
1
18
PIC16F716
2
17
3
16
4
15
5
SS
1
2
3
4
SS
SS
5
6
7
8
9
10
6
7
8
9
14
13
12
11
10
20
PIC16F716
19
18
17
16
15
14
13
12
11
RA1/AN1
RA0/AN0
OSC1/CLKIN
OSC2/CLKOUT
VDD
RB7/P1D
RB6/P1C
RB5/P1B
RB4/ECCPAS0
RA1/AN1
RA0/AN0
OSC1/CLKIN
OSC2/CLKOUT
VDD
VDD
RB7/P1D
RB6/P1C
RB5/P1B
RB4/ECCPAS0
DS41206A_CN 第 2 页 初稿 2004 Microchip Technology Inc.
PIC16F716
目录
1.0 器件概述 ....................................................................................................................................................................................... 5
2.0 存储器结构 ................................................................................................................................................................................... 7
3.0 I/O 口 .......................................................................................................................................................................................... 19
4.0 Timer0 模块 ................................................................................................................................................................................ 27
5.0 Timer1 模块 ................................................................................................................................................................................ 29
6.0 Timer2 模块 ................................................................................................................................................................................ 31
7.0 增强型捕捉 / 比较 /PWM ( ECCP) 模块 .................................................................................................................................. 33
8.0 模数转换器 ( A/D)模块 ............................................................................................................................................................ 49
9.0 CPU 的特色 ................................................................................................................................................................................ 55
10.0 指令集概述 ................................................................................................................................................................................. 71
11.0 开发工具支持 .............................................................................................................................................................................. 85
12.0 电气特性 ..................................................................................................................................................................................... 91
13.0 直流和交流特性图表 ................................................................................................................................................................. 107
14.0 封装信息 ................................................................................................................................................................................... 109
附录 A :版本历史............................................................................................................................................................................ 113
附录 B : 移植注意事项 ..................................................................................................................................................................... 113
附录 C : 从低档器件移植到中档器件................................................................................................................................................ 114
在线支持............................................................................................................................................................................................. 115
系统信息与升级热线........................................................................................................................................................................... 115
读者反馈表 ......................................................................................................................................................................................... 116
索引.................................................................................................................................................................................................... 117
产品标识体系 ..................................................................................................................................................................................... 123
致 客 户
我司旨在提供最佳文档供客户正确使用 Microchip 产品。 为此,我们将持续改善公司出版物以更好地满足您的要求。出版物的质量
将随新手册及更新版本的推出而得到改善。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我司 TRC 经理,电子邮件地址为 CTRC@microchip.com ,或将本数
据手册后附的 《读者反馈表》传真到 (8621)5407 5066 。我们欢迎您的反馈。
最新数据手册
欲获得本数据手册的最新版本,请查询我公司的网站:
http://www.microchip.com
您可通过检查数据手册中任意一页外侧下角的文献编号来确定其版本。文献编号的最后一个字母是版本编号
DS30000 的 A 版本。
勘误表
现有器件可能带有一份勘误表,说明了 ( 与数据手册的 ) 小运行差异以及建议的工作条件。当器件 / 文档的差异为我们所知时,我
们将出版一份勘误表。 勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
•Microchip网站 http://www.microchip.com
• 当地 Microchip 销售办事处 ( 见尾页 )
•Microchip总部文献中心;美国传真号码:001 (480) 792-7277
当致电销售办事处或文献中心时,请说明您所使用的器件名称、芯片和数据手册版本 ( 包括文献编号 )。
客户通知系统
欲接收我司产品的最新信息,请到我公司网站 www.microchip.com/cn 上注册。
,例如:DS30000A 是
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 3 页
PIC16F716
注:
DS41206A_CN 第 4 页 初稿 2004 Microchip Technology Inc.
1.0 器件概述
PIC16F716
本文档包含了 PIC16F716 的特定信息。其它信息请参
阅《PICmicro
®
中档单片机系列参考手册》
(DS33023A_CN )。该手册可从您所在地的 Microchip
销售办事处获得,或者从 Microchip 网站下载。这个参
考手册可作为本数据手册的一个补充文档,强烈推荐您
阅读这个文档,以便更好地理解单片机的架构以及外设
的操作。
图 1-1 是 PIC16F716 的结构框图。引脚配置见表 1-1 。
图 1-1 : PIC16F716 结构框图
13
8
程序计数器
8 级堆栈
(13 位宽)
直接寻址
RAM 地址
7
程序总线
闪存
2K x 14
程序存储器
14
指令寄存器
数据总线
RAM
128 x 8
数据寄存器
(1 )
地址开关
8
特殊功能寄存器
Status 寄存器
9
8
间接寻址
PORTA
RA0/AN0
RA1/AN1
RA2/AN2
RA3/AN3/VREF
RA4/T0CKI
PORTB
RB0/INT/ECCPAS2
RB1/T1OSO/T1CKI
RB2/T1OSI
RB3/CCP1/P1A
RB4/ECCPAS0
RB5/P1B
RB6/P1C
RB7/P1D
指令
译码和
控制
OSC1/CLKIN
OSC2/CLKOUT
增强型 CCP
(ECCP )
注 1 : 高位地址来自于 Status 寄存器。
Timer0
时钟
发生
上电延时
定时器
振荡器
起振定时器
上电
复位
看门狗
定时器
欠压
复位
MCLR
VDD , VSS
Timer1 Timer2
3
8
W 寄存器
A/D
MUX
ALU
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 5 页
PIC16F716
表 1-1 : PIC16F716 引脚描述
名称 功能 输入类型 输出类型 描述
MCLR
/VPP MCLR ST —
PP P—编程电压输入
V
OSC1/CLKIN OSC1 XTAL — 振荡器晶体输入
CLKIN CMOS — 外部时钟源输入
CLKIN ST — RC 振荡器方式
OSC2/CLKOUT OSC2 XTAL — 振荡器晶体输出,在晶振方式下接晶体或谐振器。
CLKOUT — CMOS 在 RC 方式下, OSC2 引脚输出 CLKOUT,其频率为 OSC1
RA0/AN0 RA0 TTL CMOS 双向 I/O 口
AN0 AN — 模拟输入通道 0
RA1/AN1 RA1 TTL CMOS 双向 I/O 口
AN1 AN — 模拟输入通道 1
RA2/AN2 RA2 TTL CMOS 双向 I/O 口
AN2 AN — 模拟输入通道 2
RA3/AN3/V
RA4/T0CKI RA4 ST OD 双向 I/O 口。配置为输出时为漏极开路。
RB0/INT/ECCPAS2
RB1/T1OSO/T1CKI RB1 TTL CMOS 双向 I/O 口。可编程弱上拉。
RB2/T1OSI RB2 TTL CMOS 双向 I/O 口。可编程弱上拉。
RB3/CCP1/P1A RB3 TTL CMOS 双向 I/O 口。 可编程弱上拉。
RB4/ECCPAS0
RB5/P1B RB5 TTL CMOS 双向 I/O 口。可编程弱上拉。电平变化产生中断。
RB6/P1C RB6 TTL CMOS 双向 I/O 口。 可编程弱上拉。电平变化产生中断。作为 ICSP
RB7/P1D RB7 TTL CMOS 双向 I/O 口。 可编程弱上拉。电平变化产生中断。作为 ICSP
SS V SS P—逻辑和 I/O 引脚的地。
V
DD V DD P—逻辑和 I/O 引脚的电源。
V
图注: I = 输入 AN = 模拟输入或输出 OD = 漏极开路
REF RA3 TTL CMOS 双向 I/O 口
AN3 AN — 模拟输入通道 3
REF AN — A/D 参考电压输入
V
T0CKI ST — Timer0 外部时钟输入
RB0 TTL CMOS 双向 I/O 口。可编程弱上拉。
INT ST — 外部中断
ECCPAS2
T1OSO — XTAL Timer1 振荡器输出,在振荡器方式下连接到晶振。
T1CKI ST — Timer1 外部时钟输入。
T1OSI XTAL — Timer1 振荡器输入,在振荡器方式下连接到晶振。
CCP1 ST CMOS 捕捉 1 输入,比较 1 输出, PWM1 输出。
P1A — CMOS PWM P1A 输出
RB4 TTL CMOS 双向 I/O 口。可编程弱上拉。电平变化产生中断。
ECCPAS0
P1B — CMOS PWM P1B 输出
P1C — CMOS PWM P1C 输出
P1D — CMOS PWM P1D 输出。
O= 输出 TTL = TTL 兼容输入 ST = CMOS 电平施密特触发器输入
P= 电源 XTAL = 晶振 CMOS = CMOS 兼容输入或输出
ST — ECCP 自动关闭引脚
ST — ECCP 自动关闭引脚。
主复位输入,器件复位低电平有效。
频率的 1/4 ,即指令周期速度。
编程时钟时为 ST 输入。
编程数据时为 ST 输入。
DS41206A_CN 第 6 页 初稿 2004 Microchip Technology Inc.
PIC16F716
2.0 存储器结构
PIC16F716 PICmicro 单片机有两个存储器模块,每个
存储器模块 (程序存储器和数据存储器)有各自的总
线,因此可同时对它们进行访问。
®
关于器件存储器的其它信息,请查阅 《PICmicro
单片机系列参考手册》(DS33023A_CN )。
2.1 程序存储器结构
PIC16F716 有一个 13 位宽的程序计数器,最大可寻址
8K x 14 的程序存储空间。 PIC16F716 具有 2K x14 的
程序存储器。访问超过这些物理地址的存储单元将导致
循环返回到有效的程序存储空间。
复位向量位于 0000h ,中断向量位于 0004h 。
图 2-1 : PIC16F716 程序存储器映射和堆栈
PC<12:0>
CALL, RETURN
RETFIE, RETLW
堆栈级 1
堆栈级 8
13
中档
2.2 数据存储器结构
数据存储器分成多个存储区,每个存储区都包含通用寄
存器(GPR )和特殊功能寄存器(SFR )。 Status 寄存
器的 RP1 和 RP0 位为存储区选择位。
RP1:RP0
(status<6:5> )
注 1 : 将 Status 寄存器的 bit 6 保持清零以便与将
2 : 未使用。
每个存储区最大有 7Fh (128 字节)空间。特殊功能寄
存器安排在每个存储区的低地址,通用寄存器接着特殊
功能寄存器后面安排在高地址,通用寄存器实现为静态
RAM 。所有存储区都包含特殊功能寄存器。通用寄存器
空间的高 16 字节和存储区 0 中一些使用率高的特殊功
能寄存器映射到存储区 1 中,以减小代码量并提高存取
速度。
(1 )
00 0
01 1
10 2
11 3
来的产品向上兼容。
存储区
(2)
(2)
中断向量
用户存储空间
片内程序存储器
复位向量
0000h
0004h
0005h
07FFh
0800h
1FFFh
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 7 页
PIC16F716
2.2.1 通用存储器
寄存器可以直接访问,或通过指针寄存器FSR 间接访问
(第 2.5 节 “间接寻址、 INDF 和 FSR 寄存器”)。
图 2-2 : 数据寄存器映射
寄存器
地址
00h INDF
01h TMR0 OPTION_REG 81h
02h PCL PCL 82h
03h STATUS STATUS 83h
04h FSR FSR 84h
05h PORTA TRISA 85h
06h PORTB TRISB 86h
07h
08h
09h
0Ah PCLATH PCLATH 8Ah
0Bh INTCON INTCON 8Bh
0Ch PIR1 PIE1 8Ch
0Dh
0Eh TMR1L PCON 8Eh
0Fh TMR1H
10h T1CON
11h TM R2
12h T2CON PR2 92h
13h
14h
15h CCPR1L
16h CCPR1H
17h CCP1CON
18h PWM1CON
19h ECCPAS
1Ah
1Bh
1Ch
1Dh
1Eh ADRES
1Fh ADCON0 ADCON1 9Fh
20h
6Fh EFh
70h
7Fh
未使用的数据存储单元,读为 “0 ”。
注 1 : 非物理存在的寄存器。
(1)
通用
寄存器
80 字节
16 字节 访问
存储区 0 存储区 1
(1)
INDF
通用
寄存器
32 字节
70 - 7Fh
寄存器
地址
80h
87h
88h
89h
8Dh
8Fh
90h
91h
93h
94h
95h
96h
97h
98h
99h
9Ah
9Bh
9Ch
9Dh
9Eh
A0h
BFh
C0h
F0h
FFh
DS41206A_CN 第 8 页 初稿 2004 Microchip Technology Inc.
PIC16F716
2.2.2 特殊功能寄存器
特殊功能寄存器是用于控制 CPU 和外设模块进行所需
操作的寄存器。这些寄存器实现为静态 RAM 。表 2-1 列
出了这些寄存器。
特殊功能寄存器可以分为两类:一类是用于内核
(CPU )操作,另一类是用于控制外设模块的操作。本
节详细介绍用于内核操作的特殊功能寄存器,另一类与
外设操作相关的特殊功能寄存器将在相应的功外设章节
中详细介绍。
表 2-1 :存 储 区0 中的特殊功能寄存器汇总
地址 寄存器名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
00h INDF
01h TMR0 Timer0 模块的寄存器 xxxx xxxx 27
02h PCL
03h STATUS
04h FSR
05h PORTA
06h PORTB
07h-09h —
0Ah PCLATH
0Bh INTCON
0Ch PIR1
0Dh —
0Eh TMR1L 16 位 TMR1 寄存器低字节的保持寄存器 xxxx xxxx 29
0Fh TMR1H 16 位 TMR1 寄存器高字节的保持寄存器 xxxx xxxx 29
10h T1CON
11h TM R2 Ti mer 2 模块寄存器 0000 0000 31
12h T2CON
13h-14h
15h CCPR1L 捕捉 / 比较 /PWM 寄存器 1 ( LSB) xxxx xxxx 34
16h CCPR1H 捕捉 / 比较 /PWM 寄存器 1 ( MSB) xxxx xxxx 34
17h CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 33
18h PWM1CON PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 0000 0000 46
19h ECCPAS ECCPASE ECCPAS2
1Ah-1Dh —
1Eh ADRES A/D 转换结果寄存器 xxxx xxxx 49
1Fh ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE
图注: x = 未知 , u = 不变 , q = 其值取决于条件 , - = 未使用 , 读为 “0”,阴影部分未使用,读为 “0 ”。
注 1 : 这些寄存器可以从任一存储区访问。
(1)
(1)
(1)
—
2: 程序计数器的高字节不可直接访问。 PCLATH 为 PC<12:8> 的保持寄存器,其内容被传送到程序计数器的高字节。
3: 其它 (非上电)复位包括:通过 MCLR
4: IRP 和 RP1 位保留。总是保持这两位为零。
5: 无论何种器件复位,这些引脚都配置为输入。
6: 这是端口输出锁存器中的值。
7: 保留位,不要使用。
8: ECCPAS1 位在 PIC16F716 中未使用。
通过用 FSR 的内容寻址该存储单元来寻址数据存储器 (非物理寄存器)
程序计数器 (PC )的低字节
(1)
(5,6)
(5,6)
(1,2)
(1)
(4)
IRP
间接数据存储器地址指针
— ——
写入时 PORTB 锁存数据,读出时为 PORTB 引脚电平 xxxx xxxx 21
未使用
— — —
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 13
—A D I F— — — CCP1IF TMR2IF TMR1IF -0-- 0000 15
未使用
— — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000 29
— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -0 00 0000 31
未使用
未使用
RP1
(4)
RP0 TO PD ZD CC0001 1xxx 11
(7)
写入时 PORTA 锁存数据,读出时为 PORTA 引脚电平 --xx 0000 19
程序计数器高 5 位的写缓冲器
(8)
—
ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 00-0 0000 46
(7)
—
引脚的外部复位和看门狗定时器复位。
ADON 0000 0000 49
POR 、 BOR
时的值
0000 0000 18
0000 0000 17
xxxx xxxx 18
—
---0 0000 17
—
—
—
所在
页面
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 9 页
PIC16F716
表 2-2 :存 储 区1 中的特殊功能寄存器汇总
地址 寄存器名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
80h INDF
81h OPTION_REG RBPU
82h PCL
83h STATUS
84h FSR
85h TRISA
86h TRISB PORTB 数据方向寄存器 1111 1111 21
87h-89h —
8Ah PCLATH
8Bh INTCON
8Ch PIE1
8Dh —
8Eh PCON — — — — — —P O RBOR ---- --qq 16
8Fh-91h —
92h PR2 Timer2 周期寄存器 1111 1111 32, 36
93h-9Eh —
9Fh ADCON1 — — — — — PCFG2 PCFG1 PCFG0 ---- -000 50
图注: x = 未知 , u = 不变 , q = 其值取决于条件 , - = 未使用 , 读为 “0”,阴影部分未使用,读为 “0 ”。
注 1 : 这些寄存器可以从任一存储区访问。
(1)
(1)
(1)
2: 程序计数器的高字节不可直接访问。 PCLATH 为 PC<12:8> 的保持寄存器,其内容被传送到程序计数器的高字节。
3: 其它 (非上电)复位包括:通过 MCLR
4: IRP 和 RP1 位保留。这些位保持为清零。
5: 无论何种器件复位,这些引脚都配置为输入。
6: 这是端口输出锁存器中的值。
7: 保留位,不要使用。
通过用 FSR 的内容寻址该存储单元来寻址数据存储器 (非物理寄存器)
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 12
程序计数器 ( PC)的低字节
(1)
(1,2)
(1)
(4)
IRP
间接数据存储器地址指针
— ——
未使用
— — —
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 13
—A D I E — — — CCP1IE TMR2IE TMR1IE -0-- -000 14
未使用
未使用
未使用
RP1
(4)
RP0 TO PD ZD CC0001 1xxx 11
(7)
PORTA 数据方向寄存器 --11 1111 19
程序计数器高 5 位的写缓冲器
引脚的外部复位和看门狗定时器复位。
POR , BOR
时的复位值
0000 0000 18
0000 0000 17
xxxx xxxx 18
—
---0 0000 17
—
—
—
所在
页面
DS41206A_CN 第 10 页 初稿 2004 Microchip Technology Inc.
PIC16F716
2.2.2.1 Status 寄存器
Status 寄存器,如寄存器 2-1 所示,包含 ALU 算术运算
结果的状态位、复位状态位和数据存储区选择位。
Status 寄存器同其它寄存器一样,可以作为任何指令的
目的寄存器。如果 Status 寄存器作为一条影响 Z 、 DC
或 C 标志位的指令的目的寄存器,禁止对这三个标志位
进行写操作。这些位则要根据逻辑来置位或清零。此外
和 PD 位是不可写的。因此当执行一条把 Status 寄
TO
存器作为目的寄存器的指令时,执行结果可能与预想的
不一样。
例如,CLRF STATUS 将清除 Status 寄存器的高 3 位并
将 Z 位置位。结果是 Status 寄存器为 000u u1uu (u
表示不变)。
如果想改变 Status 寄存器的内容,建议使用指令 BCF 、
BSF 、SWAPF 和 MOVWF ,因为这些指令不影响 Status 寄
存器的 Z 、 C 或 DC 位。其它不影响状态位的指令,详
见 第 10.0 节 “指令系统概述”。
寄存器 2-1 : STATUS 寄存器 (地址:03h , 83h )
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
(1)
IRP
bit 7 bit 0
bit 7 IRP:存储区选择位 (间接寻址使用)
1 = 存储区 2 和 3 (100h - 1FFh )
0 = 存储区 0 和 1 (00h - FFh )
bit 6-5 RP1
bit 4 TO
bit 3 PD:掉电标志位
bit 2 Z:零标志位
bit 1 DC:辅助进位 / 借位位 (ADDWF 、 ADDLW 、 SUBLW 、 SUBWF 指令)(对于借位极性相反)
bit 0 C:进位 / 借位位 (ADDWF 、 ADDLW 、 SUBLW 、 SUBWF 指令)
(1)
:RP0:存储区选择位 (直接寻址使用)
01 = 存储区 1 (80h - FFh )
00 = 存储区 0 (00h - 7Fh )
每个存储区为 128 字节。
:超时标志位
1 = 上电后,执行 CLRWDT 指令或 SLEEP 指令
0 = WDT 超时溢出
1 = 上电复位后或执行 CLRWDT 指令后
0 = 执行了 SLEEP 指令后
1 = 算术或逻辑运算结果为零
0 = 算术或逻辑运算结果不为零
1 = 结果的低 4 位向高 4 位有进位
0 = 结果的低 4 位向高 4 位无进位
1 = 结果的最高有效位有进位
0 = 结果的最高有效位无进位
注 1: 保留,保持清零。
2: 对于借位,极性相反。减法指令是通过加上第二个操作数的二进制补码实现的。对
图注:
R = 可读位 W = 可写位 U = 未使用,读为 “ 0”
- n = 上电复位值 “1” = 该位被置位 “0” = 该位被清零 x = 未知
(1)
RP1
于移位 ( RRF、 RLF)指令,把源寄存器的最高位或最低位放入该位。
RP0 TO PD ZD C C
(1)
注 1 : PIC16F716 不使用 IRP 和 RP1 位
(STATUS<7:6>)。保持这些位清零以与
将来的产品向上兼容。
2 : 在减法中, C 和 DC 位分别作为借位和半
借位,请看 SUBLW 和 SUBWF 指令的例子。
(2)
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 11 页
PIC16F716
2.2.2.2 OPTION_REG 寄存器
OPTION_REG 寄存器是一个可读 / 写的寄存器,它包
含用于配置 TMR0 预分频器 /WDT 后分频器 (也可用
作预分频器的单个可分配寄存器) 、外部 INT 中断、
TMR0 和 PORTB 口弱上拉的各控制位。
寄存器 2-2 : OPTION_REG 寄存器 (地址:81h )
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 ,可以把
预分频器分配给看门狗定时器。
bit 7 RBPU
: PORTB 弱上拉使能位
1 = 禁止 PORTB 弱上拉
0 = PORTB 弱上拉由备用功能或 TRISBn 位的值确定
bit 6 INTEDG:中断触发边沿选择位
1 = RB0/INT 引脚上上升沿触发中断
0 = RB0/INT 引脚上下降沿触发中断
bit 5 T0CS:TMR0 时钟源选择位
1 = RA4/T0CKI 引脚上的外部时钟
0 = 内部指令周期时钟 (CLKOUT )
bit 4 T0SE:TMR0 计数脉冲边沿选择位
1 = 在 RA4/T0CKI 引脚上的下降沿递增 1
0 = 在 RA4/T0CKI 引脚上的上升沿递增 1
bit 3 PSA:预分频器分配位
1 = 预分频器分配给 WDT
0 = 预分频器分配给 Timer0 模块
bit 2-0 PS2:PS0 :预分频器分频比选择位
位值
000 1 : 2 1 : 1
001 1 : 4 1 : 2
010 1 : 8 1 : 4
011 1 : 16 1 : 8
100 1 : 32 1 : 16
101 1 : 64 1 : 32
110 1 : 128 1 : 64
111 1 : 256 1 : 128
TMR0 分频比 WDT 分频比
图注:
R = 可读位 W = 可写位 U = 未使用,读为 “ 0”
- n = 上电复位值 “1” = 该位被置位 “0” = 该位被清零 x = 未知
DS41206A_CN 第 12 页 初稿 2004 Microchip Technology Inc.
PIC16F716
2.2.2.3 INTCON 寄存器
中断控制寄存器 INTCON 是一个可读可写的寄存器,它
包含 TMR0 寄存器 溢出、 RB 口电平变化和外部 RB0/
INT 引脚中断等各种使能控制位和标志位。
寄存器 2-3 : INTCON 寄存器 (地址:0Bh 、 8Bh )
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 外部中断使能位
1 = 允许 RB0/INT 外部中断
0 = 禁止 RB0/INT 外部中断
bit 3 RBIE:RB 口电平变化中断使能位
1 = 允许 RB 口电平变化中断
0 = 禁止 RB 口电平变化中断
bit 2 T0IF:TMR0 溢出中断标志位
1 = TMR0 计数器溢出 (必须用软件清零)
0 = TMR0 计数器没有溢出
bit 1 INTF:RB0/INT 外部中断标志位
1 = RB0/INT 引脚上有外部中断发生 (必须用软件清零)
0 = RB0/INT 引脚上没有外部中断发生
bit 0 RBIF:RB 口电平变化中断标志位
1 = RB7:RB4 引脚中至少有一个引脚状态发生变化 (必须用软件清零)
0 = RB7:RB4 引脚状态无变化
注: 当中断条件发生时,中断标志位就会被置
1 ,而不管相应中断使能位或全局中断使能
位 GIE (INTCON<7> )的状态。因此在
使能中断前,用户软件必须把相应的中断
标志位清零。
图注:
R = 可读位 W = 可写位 U = 未使用,读为 “ 0”
- n = 上电复位值 “1” = 该位被置位 “0” = 该位被清零 x = 未知
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 13 页
PIC16F716
2.2.2.4 PIE1 寄存器
PIE1 寄存器包含外设中断的各使能位。
寄存器 2-4 : PIE1 寄存器 (地址:8Ch )
U-0 R/W-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0
—A D I E— — — CCP1IE TMR2IE TMR1IE
bit 7 bit 0
bit 7 未使用:读为 “0 ”
bit 6 ADIE:A/D 转换器中断使能位
1 = 允许 A/D 转换器中断
0 = 禁止 A/D 转换器中断
bit 5-3 未使用:读出时为 “0 ”。
bit 2 CCP1IE: CCP1 中断使能位
1 = 允许 CCP1 中断
0 = 禁止 CCP1 中断
bit 1 TMR2IE:TMR2 和 PR2 匹配中断使能位
1 = 允许 TMR2 和 PR2 匹配中断
0 = 禁止 TMR2 和 PR2 匹配中断
bit 0 TMR1IE:TMR1 溢出中断使能位
1 = 允许 TMR1 溢出中断
0 = 禁止 TMR1 溢出中断
注: 要使能任何外设中断,必须置位 PEIE 位
(INTCON<6> )。
图注:
R = 可读位 W = 可写位 U = 未使用,读为 “ 0”
- n = 上电复位值 “1” = 该位被置位 “0” = 该位被清零 x = 未知
DS41206A_CN 第 14 页 初稿 2004 Microchip Technology Inc.
PIC16F716
2.2.2.5 PIR1 寄存器
PIR1 寄存器包含各个外设的中断标志位。
寄存器 2-5 : PIR1 寄存器 (地址:0Ch )
U-0 R/W-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0
—A D I F— — — CCP1IF TMR2IF TMR1IF
bit 7 bit 0
bit 7 未使用:读为 “0 ”
bit 6 ADIF:A/D 转换器中断标志位
1 = A/D 转换已完成 (必须用软件清零)
0 = A/D 转换未完成
bit 5-3 未使用:读为 “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 TMR1IF:TMR1 溢出中断标志位
1 = TMR1 溢出 (必须用软件清零)
0 = TMR1 未溢出
注: 中断条件发生时,中断标志位就会被置 1,
而不管相应中断使能位或全局中断使能位
GIE (INTCON <7>)的状态。 因此在使能
用中断前,用户软件必须把相应的中断标
志位清零。
图注:
R = 可读位 W = 可写位 U = 未使用,读为 “0”
- n = 上电复位值 “1” = 该位被置位 “0” = 该位被清零 x = 未知
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 15 页
PIC16F716
2.2.2.6 PCON 寄存器
电源控制寄存器 (PCON )包含一个用以区分上电复位
(POR )与外部 MCLR
些器件还包含另外一个用于区分上电复位和欠压复位的
标志位。
复位或 WDT 复位的标志位。这
寄存器 2-6 : PCON 寄存器 (地址:8Eh )
U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-q
— — — — — —P O RBOR
bit 7 bit 0
bit 7-2 未使用:读为 “0 ”
bit 1 POR
bit 0 BOR:欠压复位状态位
:上电复位状态位
1 = 未发生上电复位
0 = 发生上电复位 (必须在上电复位后用软件置位)
1 = 未发生欠压复位
0 = 发生欠压复位 (必须在欠压复位后用软件置位)
图注: q = 其值取决于条件
R = 可读位 W = 可写位 U = 未使用,读为 “0”
- n = 上电复位值 “1” = 该位被置位 “0” = 该位被清零 x = 未知
注: 如果 BOREN 配置位被置位,则 BOR 位在
上电复位时被置 “1 ”,在欠压复位条件发
生时被清零。 BOR
以后的复位中检测其是否被清零,如果是
则表示发生了欠压复位。
如果 BOREN 配置位被清零,上电复位时
位的状态不确定。
BOR
必须由用户置位,并在
DS41206A_CN 第 16 页 初稿 2004 Microchip Technology Inc.
PIC16F716
2.3 PCL 和 PCLATH
程序计数器 (PC )指向将要被执行的指令的地址。 PC
宽 13 位,其中的低字节是 PCL 寄存器。该寄存器可读
可写;高字节是 PCH 寄存器,它包含 PC<12:8> 位,不
可直接读写,但可以通过 PCLATH 寄存器间接写入。
2.3.1 修改 PCL
执行任何将PCL 寄存器作为目的寄存器的指令将同时使
程序计数器 PC<12:8> 位(PCH)的值被 PCLATH 寄
存器的值替换。这将允许通过写 PCLATH 寄存器的高 5
位改变整个程序计数器的值。当低 8 位被写入 PCL 寄存
器时,所有程序计数器的 13 位都被修改为 PCLATH 寄
存器中的值和写到 PCL 寄存器的值。
通过修改 PCL 寄存器跳转到查找表或程序分支表 (执
行 GOTO 指令)时必须小心。PCLATH 被赋予表的起始
地址,如果表长度大于 255 条指令或者表中存储器地址
的低 8 位从 0xFF 循环返回到 0x00 ,在表的起始地址和
目标地址之间每次地址翻转时 PCLATH 必须递增 1 。
2.3.2 程序存储器分页
CALL 和 GOTO指令提供 11 位地址,允许在 2K 程序存储
页面内跳转。指行 CALL 或 GOTO 指令时,地址的高位
由 PCLATH<3> 提供。当执行 CALL 或 GOTO 指令时,
用户必须事先设置了页面选择位,以便指向所需的程序
存储页面。如果执行 CALL 指令(或中断)的 RETURN ,
整个 13 位的 PC 被全部压入堆栈。因此执行 RETURN 指
令 (它将地址从堆栈中弹出)之前无需对 PCLATH<3>
位进行设置。
图 2-3 : 不同情况下 PC 值装入情况
PCH
12 0
PCLATH<4:0>
5
PCLATH
PCH
12 1110
PCLATH<4:3>
2
PCLATH
87
8
PCL
目的寄存器
PCL
7
11
8
ALU
0
操作码 <10:0>
以
PCL 作为
的指令
GOTO, CALL
2.4 堆栈
堆栈允许最多 8 级程序调用和中断嵌套,堆栈包含从程
序分支返回的地址。
中档器件有一个 8 级深度 x13 位宽的硬件堆栈,堆栈空
间既不占用程序存储空间,也不占用数据存储空间,堆
栈指针不可读或写。当执行一条 CALL 指令或响应中断
发生程序跳转时, PC 被压入堆栈。当执行 RETURN、
RETLW 或 RETFIE 指令时,堆栈中的地址就会被弹出到
PC 中。无论是 PUSH 或 POP操作都不会改变 PCLATH
寄存器的内容。
在堆栈压栈操作 8 次之后,进行第 9 次压栈时,进栈的
值将覆盖第一次压栈的数据,而第 10 次压栈的值将覆
盖第 2 次压栈的值,依此类推。
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 17 页
PIC16F716
2.5 间接寻址、 INDF 和 FSR 寄存器
INDF 寄存器不是一个物理存在的寄存器. 对INDF 寄存
器寻址,实际上就是寻址地址包含在 FSR 寄存器(FSR
是一个指针)中的寄存器,这就是间接寻址。
例 2-1 : 间接寻址
• 寄存器 05 的值为 10h
• 寄存器 06 的值为 0Ah
• 将值 05 载入 FSR 寄存器
• 读 INDF 寄存器将返回值 10h
• 将 FSR 寄存器的值递增 1 ( FSR = 06)
• 读 INDR 寄存器将返回值 0Ah。
间接读 INDF 自身 ( FSR = 0)将得到 00h。间接写
INDF 寄存器将导致空操作 (尽管 Status 寄存器可能会
受到影响)。
例 2-2 是一个使用间接寻址,将 RAM 地址 20h - 2Fh 的
内容清零的简单程序。
图 2-4 :直接/ 间接寻址
RP1:
(2)
RP0 6
来自操作码
0
例 2-2 : 如何使用间接寻址将 RAM 清
零
MOVLW 0x20 ;initialize pointer
NEXT CLRF INDF ;clear RAM & FSR
CONTINUE
通过对 8 位 FSR 寄存器的内容与状态寄存器 Status 的
IRP 位(Status<7>)组合可以得到一个 9 位的有效地
址,如 图 2-4 所示。但是,在 PIC16F716 中 IRP 位未
使用。
MOVWF FSR ;to RAM
INCF FSR ;inc pointer
BTFSS FSR,4 ;all done?
GOTO NEXT ;no, clear next
: ;yes, continue
间接寻址 直接寻址
IRP FSR 寄存器
(2)
7
0
存储区选择 地址选择
00h
数据
(1)
存储器
7Fh
注 1: 数据寄存器映射详见见图 2-2 。
2: 保持清零以与将来的产品向上兼容。
3: 未使用。
00 01 10 11
80h
FFh
存储区 0 存储区 1 存储区 2 存储区 3
100h
(3) (3)
17Fh
180h
1FFh
存储区选择
地址选择
DS41206A_CN 第 18 页 初稿 2004 Microchip Technology Inc.
PIC16F716
3.0 I/O 口
这些 I/O 口的某些引脚与器件外设功能复用。 一般来
讲,当某个外设使能时,相应的引脚不能作为一般的
I/O 引脚使用。
关于 I/O 口的其它信息,请参阅 《PICmicro
机系列参考手册》(DS33023A_CN )。
3.1 PORTA 和 TRISA 寄存器
PORTA 是一个 5 位宽的双向端口,对应的数据方向控
制寄存器是 TRISA 。 TRISA 位置位 (=1 )会将相应的
PORTA 引脚配置为输入 (也就是使得相应的输出驱动
器为高阻方式) 。 TRISA 位清零 (= 0 )会将相应的
PORTA 引脚配置为输出 (也就是将输出锁存器的内容
输出到选定引脚)。
读 PORTA 寄存器即读相应引脚的状态,而写 PORTA
寄存器即写到端口锁存器。所有的写操作都是读-修改
-写操作。因此,写端口意味着先读此端口所有引脚,
修改其值,然后写到端口数据锁存器。
RA4 引脚与 Timer0 模块的时钟输入复用,成为 RA4/
T0CKI 引脚。RA4/T0CKI 引脚为施密特触发器输入,漏
极开路输出。所有其它 RA 端口引脚有 TTL 输入级和
CMOS 输出驱动器。
PORTA 引脚 RA3:0 复用为模拟输入和模拟 V
通过清零 / 置位 ADCON1 寄存器 (A/D 控制寄存器 1)
中的控制位来选择每个引脚的操作 。
注: 上电复位时,这些引脚被配置为模拟输
入,且读出时为 “0 ”。
TRISA 寄存器控制 RA 引脚的方向,即使当这些引脚用
作模拟输入时。当这些引脚用作模拟输入时,用户必须
确保 TRISA 寄存器中的位保持置位。
®
中档单片
REF 输入。
例 3-1 :初 始 化PORTA
BCF STATUS, RP0 ;
CLRFPORTA ;Initialize PORTA by
;clearing output
;data latches
BSF STATUS, RP0 ;Select Bank 1
MOVLW0xEF ;Value used to
MOVWFTRISA ;Set RA<3:0> as inputs
BCF STATUS, RP0 ;Return to Bank 0
;initialize data
;direction
;RA<4> as outputs
图 3-1 : RA3:RA0 引脚的结构框图
数据
总线
写
端口
写
TRIS
D
CK
数据锁存器
D
CK
TRIS 锁存器
Q
Q
Q
Q
读 TRIS
QD
VDD
P
N
V
模拟
输入
方式
VDD
SS
VSS
I/O 引脚
TTL
输入
缓冲器
注: 模拟方式下设置 RA3:0 为输出,将迫使引
脚输出数据锁存器的内容。
读端口
至 A/D 转换器
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 19 页
EN
PIC16F716
图 3-2 : RA4/T0CKI 引脚结构框图
数据
总线
写
端口
写
TRIS
读端口
TMR0 时钟输入
数据锁存器
Q
D
CK
Q
TRIS 锁存器
Q
D
CK
Q
读 TRIS
N
SS
V
VSS
施密特
触发器
输入
缓冲器
QD
EN
EN
RA4/T0CKI
表 3-1 : PORTA 功能
名称 位编号
RA0/AN0 bit 0 TTL 输入 / 输出或模拟输入
RA1/AN1 bit 1 TTL 输入 / 输出或模拟输入
RA2/AN2 bit 2 TTL 输入 / 输出或模拟输入
RA3/AN3/V
REF bit 3 TTL 输入 / 输出或模拟输入或 VREF
RA4/T0CKI bit 4 ST 输入 / 输出或 Timer0 外部时钟输入
图注: TTL = TTL 输入, ST =施密特触发器输入
缓冲器
输出是漏极开路类型
功能
表 3-2 :与PORTA 相关的寄存器一览
地址 名称
05h PORTA
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — —
85h TRISA — — —
9Fh ADCON1
— — — — — PCFG2 PCFG1 PCFG0 ---- -000 ---- -000
(1)
RA4 RA3 RA2 RA1 RA0 --xx 0000 --uu uuuu
(1)
PORTA 数据方向寄存器 --11 1111 --11 1111
POR , BOR
时的值
图注: x =未知, u =未改变, - =未使用单元,读出时为 “ 0”。阴影部分未被 PORTA 使用。
注 1 : 保留位,不要使用。
DS41206A_CN 第 20 页 初稿 2004 Microchip Technology Inc.
其它复位
时的值
PIC16F716
3.2 PORTB 和 TRISB 寄存器
PORTB 是一个 8 位宽的双向端口, 对应的数据方向寄
存器是 TRISB 。把 TRISB 位置位 (= 1 )会将相应的
PORTB 引脚配置为输入 (也就是使得相应的输出驱动
器呈高阻方式)。把 TRISB 位清零 (= 0 )会将相应的
PORTB 引脚配置为输出 (也就是将输出锁存器的内容
输出到选定引脚)。
例 3-2 :初 始 化PORTB
BCF STATUS, RP0 ;select Bank 0
CLRFPORTB ;Initialize PORTB by
;clearing output
;data latches
BSF STATUS, RP0 ;Select Bank 1
MOVLW0xCF ;Value used to
;initialize data
;direction
MOVWFTRISB ;Set RB<3:0> as inputs
;RB<5:4> as outputs
;RB<7:6> as inputs
每个 PORTB 引脚都有内部弱上拉电路,一个单独的控
制位可以打开所有的上拉,这通过清零 RBPU
(OPTION_REG<7> )位完成。当端口配置为输出时,
弱上拉自动关闭。上电复位时上拉被禁止。
PORTB 引脚 RB7:RB0 与多个外设功能复用(表 3-3 )。
当外设功能使能时,要谨慎定义每个 PORTB 引脚的
TRIS 位。有些外设改写 TRIS 位而使引脚为输出,而另
外一些外设改写 TRIS 位使引脚为输入。由于外设使能
时会改写 TRIS 位,应该避免使用以 TRISB 为目的寄存
器的读-修改-写指令(例如 BSF 、BCF 和 XORWF)。
用户可以参考相应的外设章节以便正确设置 TRIS 位。
PORTB 端口的 4 个引脚 RB7:RB4 ,有电平变化中断特
性。只有引脚配置为输入时才能产生中断 (即,
RB7:RB4 中任一配置为输出的引脚都没有电平变化中
断比较功能)。输入引脚 RB7:RB4 的当前值与上次读
PORTB 时锁存的旧值比较,RB7:RB4 的“不匹配”输
出相或,产生 RB 端口电平变化中断,并将标志位 RBIF
(INTCON<0> )置位。
这一中断可以把单片机从休眠状态唤醒。在中断服务程
序中,用户可以用下列方法清除中断:
1. 读 PORTB 端口结束不匹配条件。
2. 清零标志位 RBIF。
不匹配条件将继续置位标志位 RBIF 。读 PORTB 将结束
不匹配条件并允许将标志位 RBIF 清零。
建议将电平变化中断功能用于按键唤醒操作和仅将
PORTB 用于电平变化中断功能的操作。使用电平变化
中断功能时,不需要查询 PORTB 的状态。
图 3-3 : RB0/INT/ECCPAS2 引脚结构框图
VDD
DD
TTL
输入
缓冲器
EN
V
P
弱
上拉
VSS
读端口
RB0/
INT/
ECCPAS2
(1)
RBPU
数据
总线
写
端口
写
TRIS
RB0/INT
ECCPAS2: ECCP 自动关闭输入
注 1 : 为使能弱上拉,需置位相应的 TRIS 位并将 RBPU
数据锁存器
Q D
CK
TRIS 锁存器
Q D
CK
读 TRIS
QD
读端口
施密特触发器
缓冲器
位(OPTION_REG<7>)清零。
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 21 页
PIC16F716
图 3-4: RB1/T1OSO/T1CKI 引脚结构框图
T1OSCEN
RBPU
DD
(1)
V
弱
P
上拉
VDD
数据总线
写 PORTB
写 TRISB
读 TRISB
T1OSCEN
读 PORTB
T1OSI(接 RB2)
至 Timer1 时钟输入
注 1 : 为使能弱上拉,需置位相应的 TRIS 位并将 RBPU 位(OPTION_REG<7>)清零。
数据锁存器
Q D
Q
CK
TRIS 锁存器
Q D
Q
CK
VSS
TTL 缓冲器
D
Q
EN
TMR1 振荡器
ST 缓冲器
RB1/T1OSO/T1CKI
图 3-5 : RB2/T1OSI 引脚结构框图
DD
(1)
T1OSCEN
数据总线
写 PORTB
写 TRISB
读 TRIS
T1OSCEN
读 PORTB
T1OSO(至 RB1)
注 1 : 为使能弱上拉,需置位相应的 TRIS 位并将 RBPU 位(OPTION_REG<7>)清零。
数据锁存器
Q D
Q
CK
TRIS 锁存器
Q D
Q
CK
RBPU
TTL 缓冲器
D Q
EN
V
弱
P
上拉
VDD
RB2/T1OSI
VSS
TMR1
振荡器
DS41206A_CN 第 22 页 初稿 2004 Microchip Technology Inc.
图 3-6 : RB3/CCP1/P1A 引脚结构框图
[PWMA(P1A) / CCP1 比较 ] 输出使能
[PWMA(P1A) / CCP1 比较 ] 输出
PWMA(P1A)自动关闭三态
数据总线
写 PORTB
写 TRISB
数据锁存器
CK
TRIS 锁存器
CK
1
0
Q D
Q
Q D
Q
RBPU
PIC16F716
DD
(1)
V
弱
P
上拉
VDD
RB3/CCP1/P1A
VSS
读 TRIS
Q
D
EN
读 PORTB
CCP -捕捉输入
注 1 : 为使能弱上拉,需置位相应的 TRIS 位并将 RBPU 位(OPTION_REG<7>)清零。
图 3-7 : RB4/ECCPAS0
(1)
RBPU
数据总线
写 PORTB
写 TRISB
施密特触发器缓冲器
引脚结构框图
数据锁存器
Q D
CK
TRIS 锁存器
Q D
CK
TTL 缓冲器
DD
V
P
TTL
缓冲器
弱
上拉
ST
缓冲器
VDD
RB4/ECCPAS0
VSS
读 TRIS
置位 RBIF
接其它
RB7:RB4 引脚
ECCPAS0::ECCP 自动关闭输入
读 PORT
锁存器
QD
EN
QD
EN
Q1
读 PORTB
Q3
注 1 : 为使能弱上拉,需置位相应的
TRIS 位并将 RBPU
(OPTION_REG<7> )清零。
位
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 23 页
PIC16F716
图 3-8: RB5/P1B 引脚结构框图
PWMB(P1B)使 能
PWMB(P1B)数据输出
PWMB(P1B) 自动关闭三态
数据总线
写 PORTB
写 TRISB
数据锁存器
Q D
CK
TRIS 锁存器
Q D
Q
CK
RBPU
DD
(1)
1
0
V
弱
上拉
TTL
缓冲器
VDD
RB5/P1B
VSS
P
读 TRISB
置位 RBIF
接其它
RB7:RB4 引脚
注 1 : 为使能弱上拉,需置位相应的 TRIS 位并将 RBPU
读 PORTB
图 3-9 : RB6/P1C 引脚结构框图
PWMC(P1C)使 能
PWMC(P1C)数据输出
PWMC(P1C) 自动关闭三态
数据总线
写 PORTB
写 TRISB
数据锁存器
Q D
CK
TRIS 锁存器
Q D
Q
CK
锁存器
QD
QD
EN
(1)
RBPU
1
0
EN
Q1
读 PORTB
Q3
位(OPTION_REG<7>)清零。
DD
V
P
ST
缓冲器
弱
上拉
TTL
缓冲器
VDD
RB6/P1C
VSS
读 TRISB
置位 RBIF
接其它
RB7:RB4 引脚
ICSPC — 在线串行编程时钟输入
注 1 : 为使能弱上拉,需置位相应的 TRIS 位并将 RBPU
读 PORTB
锁存器
QD
QD
EN
EN
位(OPTION_REG<7>)清零。
Q1
读 PORTB
Q3
DS41206A_CN 第 24 页 初稿 2004 Microchip Technology Inc.
PIC16F716
图 3-10: RB7/P1D 引脚结构框图
PWMD(P1D)使 能
PWMD(P1D)数据输出
PWMD(P1D)自动关闭三态
数据总线
写 PORTB
写 TRISB
置位 RBIF
接其它
RB7:RB4 引脚
ICSPD - 在线串行编程时钟输入
数据锁存器
Q D
CK
TRIS 锁存器
Q D
Q
CK
读 TRISB
读 PORTB
(1)
RBPU
1
0
QD
QD
EN
锁存器
EN
读 PORTB
Q3
Q1
ST
缓冲器
DD
V
弱
P
VDD
上拉
RB7/P1D
VSS
TTL
缓冲器
注 1 : 为使能弱上拉,需置位相应
的 TRIS 位并将 RBPU
(OPTION_REG<7> )清
零。
位
表 3-3 : PORTB 功能
名称 位号
RB0/INT/
bit 0 TTL/ST
ECCPAS2
RB1/T1OS0/
bit 1 TTL/ST
T1CKI
RB2/T1OSI bit 2 TTL/XTAL 输入 / 输出引脚或 Timer1 振荡器输入。内部软件可编程弱上拉。具体操作
RB3/CCP1/
bit 3 TTL/ST
P1A
RB4/
bit 4 TTL 输入 / 输出引脚 (带电平变化中断)。内部软件可编程弱上拉。 ECCP 自
ECCPAS0
RB5/P1B bit 5 TTL 输入 / 输出引脚 (带电平变化中断)。内部软件可编程弱上拉。 PWM B 输
RB6/P1C bit 6 TTL/ST
RB7/P1D bit 7 TTL/ST
图注: TTL = TTL 输入, ST =施密特触发器输入, XTAL =晶体振荡器输入。
注 1 : 当配置为外部中断或外设输入时,该缓冲器为施密特触发器输入。
2 : 当用于串行编程方式时,该缓冲器为施密特触发器输入。
缓冲器
功能
(1)
输入 / 输出引脚或外部中断输入。内部软件
可编程弱上拉。 ECCP 自动关闭输入。
(1)
输入 / 输出引脚或 Timer1 振荡器输出,或 Timer1 时钟输入。内部软件可编
程弱上拉。具体操作请参见第 5.0 节“Timer1 模块” 。
请参见第 5.0 节“Timer1 模块” 。
(1)
输入 / 输出引脚或捕捉 1 输入,或比较 1 输出,或 PWM A 输出。内部软件
可编程弱上拉。具体操作请参见 CCP1 章节。
动关闭输入。
出。
(2)
输入 / 输出引脚 (带电平变化中断)。内部软件可编程弱上拉。 PWM C 输
出。串行编程时钟。
(2)
输入 / 输出引脚 (带电平变化中断)。内部软件可编程弱上拉。 PWM D 输
出。串行编程数据。
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 25 页
PIC16F716
表 3-4 :和PORTB 有关的寄存器一览
地址 名称
06h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu
86h TRISB PORTB 数据方向寄存器。 1111 1111 1111 1111
81h OPTION_REG RBPU
图注: x =未知, u =未改变。阴影部分未被 PORTB 使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
POR , BOR
时的值
其它复位
时的值
DS41206A_CN 第 26 页 初稿 2004 Microchip Technology Inc.
PIC16F716
4.0 TIMER0 模块
Timer0 模块定时器 / 计数器有以下特性:
•8位定时器 / 计数器
• 可读可写
• 可选择内部或外部时钟信号
• 外部时钟边沿选择
• 软件可编程的 8 位预分频器
• 从 FFh 计数到 00h 时,发生溢出中断
图 4-1 是 Timer0 模块的简化原理图。
®
关于定时器模块的其它信息,请参阅 《PICmicro
单片机系列参考手册》(DS33023A_CN )。
4.1 Timer0 操作
Timer0 可以作为定时器或计数器。
通过清零 T0CS (OPTION_REG<5> )位可以设置为定
时器方式。在定时器方式下,Timer0 模块在每个指令周
期递增 1 (不使用预分频器)。如果 TMR0 寄存器被写
入,则在随后的两个指令周期中禁止递增计数。用户可
以通过写一个调整值到 TMR0 寄存器来避开这一点。
通过对 T0CS (OPTION_REG<5> )位置 1 可以设置为
计数器方式。在计数器方式下, Timer0 在引脚 RA4/
T0CKI/C1OUT 的每个上升沿或下降沿递增 1 。在哪 个沿
递增由时钟源边沿选择位 T0SE (OPTION_REG<4> )
位来确定。将 T0SE 清零选择为上升沿,将其置 1 则选
择下降沿。下面将讨论对外部时钟输入的限制。
如果外部时钟输入用于 Timer0 ,它必须满足一些要求。
这些要求确保外部时钟与内部相位时钟(T
此外,同步后 Timer0 的实际递增技术会有延时。
关于外部时钟要求的其它信息,请参阅 《PICmicro
档单片机系列参考手册》(DS33023A_CN )。
OSC)同步。
中档
®
中
4.2 预分频器
片内有一个 8 位计数器,可作为 Timer0 模块的预分频
器,或看门狗的后分频器,同一时刻只能用于其一
(图 4-2 )。为方便起见,本数据手册称之为 “预分频
器”。
注: 片内只有一个预分频器,为 Timer0 模块和
看门狗共用。 如果把预分频器分配给
TMR0 模块,就意味着 WDT 无后分频器可
用,反之亦然。
该预分频器是不可读写的。
PSA 和 PS2:PS0 位( OPTION_REG<3:0> )用于确定预
分频器的分配和预分频比。
PSA 位为 0 时将预分频器分配给 Timer0 模块。当预分
频器分配给 Timer0 模块时,可选的预分频比有 1:2 ,
1:4,……, 1:256。
PSA 位为 1 时将预分频器分配给看门狗 ( WDT)。当
预分频器分配给 WDT 时,可选的预分频比有 1:1 ,1:2,
……, 1:128 。
当预分频器分配给 Timer0 模块时,所有写 TMR0 寄存
器的指令 (如 CLRF TMR0 , MOVWF TMR0 , BSF 1,x
等) 都将对预分频器清零。当预分频器分配给 WDT 时,
CLRWDT 指令将同时对预分频器和 WDT 清零。
注: 当预分频器用于 Timer0 时,写 TMR0 寄
存器会将预分频器计数值清零,但不影响
预分频器分配。
注: 对于 TMR0 寄存器,为得到 1:1 的预分频
比,可将预分频器分配给看门狗。
图 4-1 : TIMER0 原理图
数据总线
T0CS
0
1
(1)
可编程
预分频器
3
PS2、PS1、PS0
OUT
PS
1
与片内时钟同步
PSA
0
(两周期的延迟)
(1)
(2)
(1)
PSOUT
TMR0
8
溢出时将
中断标志位
T0IF 置位
FOSC /4
RA4/T0CKI
引脚
注 1 : T0CS 、 T0SE 、 PSA 和 PS2:PS0 (OPTION_REG<5:0> )。
2 : 预分频器与看门狗共用 (详细原理图请参考图 4-2 )。
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 27 页
T0SE
(1)
PIC16F716
4.2.1 切换预分频器分配
预分频器的分配完全由软件控制(即可以在程序执行时
实时地改变分配)。
注: 为了避免意外的器件复位,当把预分频器
从 Timer0 重分配给 WDT 时,必须执行一
特定指令序列 (参见 《PICmicro
®
中档单
片机系列参考手册 》
(DS33023A_CN ))。即使禁止 WDT 时也
要执行这个指令序列。
图 4-2 : TIMER0/WDT 预分频器原理图
CLKOUT(=F
RA4/T0CKI
引脚
看门狗
定时器
OSC/4)
T0SE
M
0
U
X
1
T0CS
0
M
U
1
X
PSA
8 位预分频器
8
8 选 1 MUX
4.3 Timer0 中断
当 TMR0 寄存器溢出( 从 FFh 到 00h )时 ,产 生 TMR0
中断,并置位 T0IF 位(INTCON<2>)。中断可通过清
零 T0IE (INTCON<5> )来屏蔽。重新使能该中断前,
必须在中断服务程序中将 T0IF 位清零。由于休眠状态
下 TMR0 被关闭,所以 TMR0 中断不能唤醒单片机。
数据总线
1
M
U
0
X
PSA
同步
2
周期
PS2:PS0
TMR0 寄存器
8
溢出时置位
标志位 T0IF
M U X
WDT
超时
1
PSA
WDT 使能位
注: T0CS、 T0SE 、 PSA 和 PS2:PS0 为(OPTION_REG<5:0>)。
0
表 4-1 :与TIMER0 相关的寄存器
地址 名称
01h TMR0 Timer0 模块寄存器 xxxx xxxx uuuu uuuu
0Bh,8Bh INTCON GIE
81h OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
85h TRISA
图注: x = 未知, u = 不变,- = 未使用,读出值为 “0”。 阴影部分 Timer0 未使用。
注 1 : 保留位,不要使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u
— — —
(1)
Bit 4 PORTA 数据方向寄存器 --11 1111 --11 1111
POR,
BOR 复位值
其它复位值
DS41206A_CN 第 28 页 初稿 2004 Microchip Technology Inc.
PIC16F716
5.0 TIMER1 模块
Timer1 模块定时器 / 计数器具有以下特性:
•16位定时器 / 计数器(两个 8位寄存器,TMR1H 和
TMR1L)
• 两个寄存器均可读可写
• 内部或外部时钟源选择
•
从 FFFFh 到 0000h 溢出时产生中断
• 可以被 ECCP 模块触发复位
Timer1 的控制寄存器如寄存器 5-1 所示。通过将
TMR1ON ( T1CON<0>)置位 / 清零可以使能 / 禁止
Timer1 模块。
图 5-1 是 Timer1 模块的简化原理图。
®
关于定时器模块的其它信息,请参阅 《PICmicro
单片机系列参考手册》(DS33023A_CN )。
中档
5.1 Timer1 操作
Timer1 可以有三种工作方式:
• 定时器方式
• 同步计数器方式
• 异步计数器方式
工作方式由时钟选择位 TMR1CS (T1CON<1> )确定。
在定时器方式下, Timer1 在每个指令周期递增。而在
计数器方式下, Timer1 在外部时钟输入的每个上升沿
递增计数。
当 Timer1 的振荡器使能(T1OSCEN 位置 1 )时 ,RB2/
T1OSI 和 RB1/T1OSO/T1CKI 引脚设定为输入。这就是
说, TRISB<2:1> 的值被忽略。
Timer1 还有一个内部 “复位输入”,它由 ECCP 模块
产生 (第 7.0 节 “增强型捕捉 / 比较 /PWM (ECCP )
模块”)。
寄存器 5-1 : T1CON :TIMER1 控制寄存器 (地址:10h )
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
— — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
bit 7 bit 0
bit 7-6 未使用:读出时为 “0 ”。
bit 5-4 T1CKPS1:T1CKPS0:Timer1 输入时钟预分频比选择位
11 = 1:8 预分频比
10 = 1:4 预分频比
01 = 1:2 预分频比
00 = 1:1 预分频比
bit 3 T1OSCEN:Timer1 振荡器使能控制位
1 = 使能振荡器
0 = 关闭振荡器
bit 2 T1SYNC:Timer1 外部时钟输入同步控制位
TMR1CS =
1 = 不与外部时钟输入同步
0 = 与外部时钟输入同步
TMR1CS =
忽略该位。当 TMR1CS = 0 时, Timer1 使用内部时钟。
bit 1 TMR1CS:Timer1 时钟源选择位
1 = 使用 RB1/T1OSO/T1CKI 引脚的外部时钟 (第一个下降沿后的上升沿)
0 = 使用内部时钟 (F
bit 0 TMR1ON:Timer1 使能位
1 = 使能 Timer1
0 = 关闭 Timer1
(1)
1
0
OSC /4)
注 1 : 关闭振荡器反相器和反馈电阻以降低功耗。
图注:
R = 可读位 W = 可写位 U = 未使用,读出时为 “0”
- n = 上电复位值 “1” = 该位被置位 “0” = 该位被清零 x = 未知
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 29 页
PIC16F716
图 5-1 : TIMER1 原理图
溢出时置位
TMR1IF 标志位
TMR1
TMR1H
T1OSC
RB1/T1OSO/T1CKI
RB2/T1OSI
注 1 : 当 T1OSCEN 位被清零时,反相器和反馈电阻被关闭以降低功耗。
TMR1L
T1OSCEN
使能
振荡器
TMR1ON
开启 / 关闭
1
FOSC /4
内部
(1)
时钟
0
TMR1CS
0
1
T1SYNC
预分频比
1, 2, 4, 8
2
T1CKPS1:T1CKPS0
同步后的时钟输入
同步
det
休眠输入
5.2 Timer1 振荡器
片内包含了晶体振荡器电路,接在 T1OSI (输入) 和
T1OSO (放大器输出)引脚之间。通过对 T1OSCEN 控
制位 (T1CON<3> )置位来使能该电路。 这个振荡器
是一个低功耗的振荡器 , 采用 32.768kHz 的音叉型石英
晶体。它可以在休眠状态下继续 工作。
用户必须提供软件延时,确保该振荡器能够正常起振。
注 1 : LP 振荡器 (32 kHz )的电路设计原则,
如第 9.2 节 “振荡器配置”所述,也同样
适用于 Timer1 振荡器。
2: Timer1的寄存器对 TMR1H 和 TMR1L ,连
同 Timer1 溢出标志位 (TMR1IF )一起,
可以作为振荡器起振稳定定时器。
5.4 用 ECCP 触发器输出复位 Timer1
如果 ECCP 模块配置为比较方式以产生 “特殊事件触
发”(CCP1M3 :CCP1M0 = 1011 ),这个信号将复位
Timer1 并启动 A/D 转换 (如果 A/D 模块使能)。
注: ECCP 模块的特殊事件触发不会将中断标
志位 TMR1IF (PIR1<0> )置 1 。
为了利用这个功能, Timer1 必须被配置为定时器或同
步计数器方式。如果 Timer1 在异步计数器方式下运行,
这个复位操作可能不起作用。
在对 Timer1 进行写操作和 ECCP 模块的特殊事件触发
复位同时发生时,则写操作具有优先权。
在这种操作方式下, CCPR1H :CCPR1L 寄存器对实际
上变成了 Timer1 的周期寄存器。
5.3 Timer1 中断
TMR1 寄存器对 ( TMR1H: TMR1L)从 0000h 递增到
FFFFh,然后返回到 0000h。如果使能了 TMR1 中断,
则寄存器溢出时将产生中断,并锁存到中断标志位
TMR1IF (PIR1<0> )。 该中断可以通过将 TMR1 中断
使能位 TMR1IE(PIE1<0> )置位或清零来使能或禁止。
表 5-1 :与TIMER1 工作在定时器 / 计数器方式下相关的寄存器
地址 名称
0Bh,8Bh INTCON GIE PEIE
0Ch PIR1
8Ch PIE1
0Eh TMR1L 16 位 TMR1 寄存器低字节的保持寄存器 xxxx xxxx uuuu uuuu
0Fh TMR1H 16 位 TMR1 寄存器高字节的保持寄存器 xxxx xxxx uuuu uuuu
10h T1CON
图注: x = 未知, u = 不变,- = 未使用,读出时为 “ 0 ”。 阴影部分与 Timer1 模块未使用。
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 000u
— ADIF — — — CCP1IF TMR2IF TMR1IF -0-- -000 -0-- -000
— ADIE — — — CCP1IE TMR2IE TMR1IE -0-- -000 -0-- -000
— — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000 --uu uuuu
POR,
BOR 时的值
其它复位
时的值
DS41206A_CN 第 30 页 初稿 2004 Microchip Technology Inc.
PIC16F716
6.0 TIMER2 模块
Timer2 定时器模块具有以下特性:
•8位定时器 (TMR2 寄存器)
•8位周期寄存器 (PR2)
• 这两个寄存器均可读可写
• 软件可编程预分频比 ( 1:1, 1:4, 1:16)
• 软件可编程后分频比 ( 1:1 到 1:16)
•TMR2与 PR2 匹配时产生中断
Timer2 有一个控制寄存器,如寄存器 6-1 所示。可通过
将控制位TMR2ON(T2CON<2> )清零来关闭Timer2 ,
从而降低功耗。
图 6-1 是 Timer2 模块的简化原理图。
关于定时器模块的其它信息,请参阅 《PICmicro
单片机系列参考手册》(DS33023A_CN )。
寄存器 6-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 TOUTPS3:TOUTPS0: Timer2 输出后分频比选择位
0000 = 1:1 后分频比
0001 = 1:2 后分频比
0010 = 1:3 后分频比
0011 = 1:4 后分频比
0100 = 1:5 后分频比
0101 = 1:6 后分频比
0110 = 1:7 后分频比
0111 = 1:8 后分频比
1000 = 1:9 后分频比
1001 = 1:10 后分频比
1010 = 1:11 后分频比
1011 = 1:12 后分频比
1100 = 1:13 后分频比
1101 = 1:14 后分频比
1110 = 1:15 后分频比
1111 = 1:16 后分频比
bit 2 TMR2ON:Timer2 使能位
1 = 使能 Timer2
0 = 关闭 Timer2
bit 1-0 T2CKPS1:T2CKPS0:Timer2 时钟预分频比选择位
00 = 预分频比为 1
01 = 预分频比为 4
1x = 预分频比为 16
®
中档
图注:
R = 可读位 W = 可写位 U = 未使用,读出时为 “0”
- n = 上电复位值 “1” = 该位被置位 “0” = 该位被清零 x = 未知
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 31 页
PIC16F716
6.1 Timer2 操作
Timer2 可以作为 ECCP 模块 PWM 方式下的时基。
TMR2 寄存器可读可写,器件发生任何复位时其值被清
零。
输入时钟 (F
1:16 ,这由控制位 T2CKPS1:T2CKPS0
(T2CON<1:0> )控制。
TMR2 通过一个 4 位的后分频器产生匹配输出(后分频
比为 1:1 到 1:16 ),从而产生 TMR2 中断(锁存在标志
位 TMR2IF (PIR1<1> )中)。
下述任何一种情形都将对预分频器和后分频器的计数器
清零:
• 对 TMR2 寄存器进行写操作
• 对 T2CON 寄存器进行写操作
• 器件的任何复位 (包括上电复位、 MCLR
OSC/4)的预分频比可选择为 1:1, 1:4,
复位、
6.2 Timer2 中断
Timer2 模块有一个 8 位的周期寄存器 (PR2 )。 Timer2
从 00h 开始递增,直到与 PR2 相匹配,然后在下一个
递增周期回到 00h 。PR2 寄存器是可读可写的,复位时
被初始化为 FFh 。
图 6-1 : TIMER2 原理图
将标志位
TMR2IF 置位
后分频比
1:1 1:16
TMR2
输出
复位
TMR2 寄存器
到
4
EQ
比较器
PR2 寄存器
预分频比
1:1,1:4,1:16
2
WDT 复位或欠压复位)
对写 T2CON 时不会将 TMR2 清零。
表 6-1 :与TIMER2 作为定时器 / 计数器相关的寄存器
地址 名称
0Bh, 8Bh INTCON GIE PEIE
0Ch PIR1
8Ch PIE1
11h T MR2 Time r2 模块寄存器 0000 0000 0000 0000
12h T2CON
92h PR2 Timer2 周期寄存器 1111 1111 1111 1111
图注: x = 未知, u = 不变,- = 未使用,读出值为 “ 0 ”。 阴影部分 Timer2 模块未使用。
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 000u
— ADIF — — — CCP1IF TMR2IF TMR1IF -0-- -000 -0-- -000
— ADIE — — — CCP1IE TMR2IE TMR1IE -0-- -000 -0-- -000
— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
POR、
BOR
时的值
F
OSC/4
其它复位
时的值
DS41206A_CN 第 32 页 初稿 2004 Microchip Technology Inc.
PIC16F716
7.0 增强型捕捉 / 比较 /PWM
( ECCP) 模块
ECCP (增强型捕捉 / 比较 /PWM )模块包含一个 16 位
寄存器,这个寄存器可作为:
•16位捕捉寄存器
•16位比较寄存器
•PWM主 / 从占空比寄存器
表 7-1 所示为定时器 ECCP 模块模式的定时器资源。
捕捉 / 比较 /PWM 寄存器 1(CCPR1 )由两个 8 位寄存
器组成:CCPR1L (低字节)和 CCPR1H (高字节)。
寄存器 7-1 : CCP1CON 寄存器 (地址:17h )
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0
bit 7 bit 0
bit 7-6 P1M1:P1M0:PWM 输出配置位
CCP1M<3:2> =
xx = P1A 配置为捕捉 / 比较 I/O。 P1B、 P1C 和 P1D 配置为端口引脚。
CCP1M<3:2> =
00 = 单输出, P1A 调制, P1B 、 P1C 和 P1D 配置为端口引脚;
01 = 四正向输出, P1D 调制, P1A 有效, P1B 和 P1C 无效;
10 = 双输出, P1A 和 P1B 调制,带有死区控制。 P1C 和 P1D 配置为端口引脚;
11 = 四反向输出, P1B 调制, P1C 有效, P1A 和 P1D 无效。
bit 5-4 DC1B1:DC1B0:PWM 低有效位
捕捉模式:未使用;
比较模式:未使用;
PWM 模式:这些位是 PWM 占空比的低 2 位。高 8 位在 CCPR1L 中。
bit 3-0 CCP1M3:CCP1M0:ECCP 模式选择位
0000 =捕捉 / 比较 /PWM 关闭 (复位 ECCP 模块)
0001 =未使用 (保留)
0010 =比较模式,匹配时翻转输出 (置位 CCP1IF 位)
0011 =未使用 (保留)
0100 =捕捉模式,每个下降沿
0101 =捕捉模式,每个上升沿
0110 =捕捉模式,每 4 个上升沿
0111 =捕捉模式,每 16 个上升沿
1000 =比较模式,匹配时 CCP1 输出置位 (置位 CCP1IF 位)
1001 =比较模式,匹配时 CCP1 输出清零 (置位 CCP1IF 位)
1010 =比较模式,匹配时产生软件中断 (置位 CCP1IF 位, CCP1 引脚不受影响)
1011 =比较模式,触发特殊事件(置位 CCP1IF 位,复位 TMR1 ,且如果 A/D 模块被使能,启动一次 A/D 转
1100 =PWM 模式。 P1A , P1C 高电平有效; P1B , P1D 高电平有效;
1101 =PWM 模式。 P1A , P1C 高电平有效; P1B , P1D 低电平有效;
1110 =PWM 模式。 P1A , P1C 低电平有效; P1B , P1D 高电平有效;
1111 =PWM 模式。 P1A , P1C 低电平有效; P1B , P1D 低电平有效。
00, 01, 10
11
换。 CCP1 引脚不受影响)。
CCP1CON 寄存器控制 ECCP 操作。 CCP1CON 的所
有位都是可读可写的。
®
关于 ECCP 模块的其它信息,请参阅《PICmicro
中档
单片机系列参考手册》(DS33023A_CN )。
表 7-1: ECCP 模式 - 定时器资源
ECCP 模式
捕捉
比较
PWM Timer2
定时器资源
Timer1
Timer1
图注:
R =可读位 W =可写位 U =未使用位,读出时为 “0”
-n = POR 时的值 “ 1”=置位 “ 0”=清零 x =未知
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 33 页
PIC16F716
7.1 捕捉模式
在捕捉模式下,当在引脚 RB3/CCP1/P1A 上发生下列
事件时, CCPR1H:CCPR1L 捕捉 TMR1 寄存器的 16 位
值。这些事件定义为:
• 每个下降沿
• 每个上升沿
• 每 4 个上升沿
• 每 16 个上升沿
事件由控制位 CCP1M3:CCP1M0 (CCP1CON<3:0> )
选择。进行捕捉后,中断请求标志位 CCP1IF
(PIR1<2> )被置位,该位必须由软件清零。 如果在寄
存器 CCPR1 中的值被读出之前又发生另一次捕捉,那
么原来的捕捉值将丢失。
注: 从一种捕捉模式改变到另一种捕捉模式
时,总是复位 ECCP 模块
(CCP1M3:CCP1M0 =“0000”)。这对
于复位内部捕捉计数器是必需的。
图 7-1 : 捕捉模式工作原理图
置位标志位 CCP1IF
预分频比
1,4,16
RB3/CCP1/P1A
引脚
和
边沿检测
Q’s
7.1.1 CCP1 引脚配置
在捕捉模式下,应该通过置位 TRISB<3> 位将 RB3/
CCP1/P1A 引脚配置为输入。
注: 如果 RB3/CCP1/P1A 配置为输出,则写
PORTB 将产生一次捕捉条件。
( PIR1<2>)
CCPR1H CCPR1L
捕捉
使能
TMR1H TMR1L
CCP1CON<3:0>
7.1.4 ECCP 预分频器
通过对 CCP1M3:CCP1M0 位的设置,可以选择 4 种不
同的预分频比。每当关闭 ECCP 模块,或者 ECCP 模
块不在捕捉模式时,预分频计数器都将被清零。这意味
着任何复位都会将预分频计数器清零。
从一个捕捉预分频比切换到另一个可能产生一次中断。
而且,预分频计数器不会被清零,因此第一次捕捉时可
能是一个非零的预分频比。 例 7-1 所示为在捕捉预分频
比间切换的推荐方法。这个例子在清零预分频计数器
时,不会产生误中断。
例 7-1 : 在捕捉预分频比间切换
CLRFCCP1CON ;Turn ECCP module off
MOVLWNEW_CAPT_PS ;Load the W reg with
;the new prescaler
;mode value and ECCP ON
MOVWF CCP1CON ;Load CCP1CON with this
;value
7.2 比较模式
在比较模式下, 16 位的 CCPR1 寄存器的值不断地与
TMR1 寄存器对的值作比较。如果二者匹配, RB3/
CCP1/P1A 引脚为以下状态之一:
• 拉高
• 拉低
• 翻转输出 (高 - 低或低 - 高)
• 保持不变
引脚的顿动作由控制位 CCP1M3:CCP1M0
(CCP1CON<3:0> )的值决定。同时,中断标志位
CCP1IF 被置位。
改变 ECCP 模式为匹配时清零输出 (CCP1M<3:0> =
1000 )将预置CCP1 输出锁存到逻辑 1 电平。改变 ECCP
模式为匹配时置位输出 (CCP1M<3:0> = 1001 )将预
置 CCP1 输出锁存到逻辑 0 电平。
7.1.2 TIMER1 工作模式选择
为使 ECCP 模块使用捕捉特性, Timer1 必须运行在定
时器模式或同步计数器模式。在异步计数器模式下,捕
捉操作可能无法进行。
7.1.3 软件中断
当捕捉模式改变时,可能会产生一次误捕捉中断。用户
应该保持 CCP1IE (PIE1<2> )位清零以避免误中断,
且应在任何这种工作模式改变之后将标志位 CCP1IF 清
零。
DS41206A_CN 第 34 页 初稿 2004 Microchip Technology Inc.
PIC16F716
7.2.1 CCP1 引脚配置
用户必须通过将 TRISB<3> 位清零,把 RB3/CCP1/P1A
引脚配置为 CCP1 输出。
注: 清零 CCP1CON 寄存器将强制 RB3/CCP1/
P1A 比较输出锁存为默认低电平。这不是
PORTB 的 I/O 数据锁存。
7.2.2 TIMER1 模式选择
当 ECCP 模块使用比较功能时, Timer1 必须运行在定
时器模式或者同步计数器模式。在异步计数器模式下,
比较操作可能无法进行。
7.2.3 软件中断模式
当选择产生软件中断模式时, CCP1 引脚不受影响。只
产生一个 CCP 中断 (如果使能的话)。
7.2.4 特殊事件触发
在这种模式下,将产生一个内部硬件触发信号,它可以
用于启动一个动作。
ECCP 的特殊事件触发输出将复位 TMR1 寄存器对,这
使得 CCPR1 寄存器可以作为 Timer1 的 16 位可编程周
期寄存器。
ECCP 的特殊事件触发输出也会启动一次 A/D 转换(如
果 A/D 模块使能的话)。
注: ECCP 模块的特殊事件触发将不会置位中
断标志位 TMR1IF (PIR1<0> )。
图 7-2 : 比较模式工作原理图
特殊事件触发
置位标志位 CCP1IF
RB3/CCP1/P1A
引脚
QS
R
TRISB<3>
输出使能
注 1 : 特殊事件触发将复位 Timer1 ,但是不会将中断标志位
TMR1IF (PIR1<0> )置位,并将 GO/DONE
(ADCON0<2> )置位启动一次 A/D 转换。
(PIR1<2> )
输出
逻辑
CCP1CON<3:0>
模式选择
CCPR1H CCPR1L
匹配
TMR1H TMR1L
比较器
表 7-2 : 与捕捉、比较及 TIMER1 有关的寄存器
地址 名称
0Bh,8Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u
0Ch PIR1
0Eh TMR1L
0Fh TMR1H
10h T1CON
15h CCPR1L 捕捉 / 比较 /PWM 寄存器 1 ( LSB) xxxx xxxx uuuu uuuu
16h CCPR1H 捕捉 / 比较 /PWM 寄存器 1 ( MSB) xxxx xxxx uuuu uuuu
17h CCP1CON
86h TRISB PORTB 数据方向寄存器 1111 1111 1111 1111
8Ch PIE1
图注: x =未知, u =未改变, - =未使用,读出时为 “ 0”。阴影部分未被捕捉和 Timer1 使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— ADIF — — — CCP1IF TMR2IF TMR1IF -0-- -000 -0-- -000
16 位 TMR1 寄存器低字节的保持寄存器
16 位 TMR1 寄存器高字节的保持寄存器
— — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000 --uu uuuu
P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 0000 0000
— ADIE — — — CCP1IE TMR2IE TMR1IE -0-- -000 -0-- -000
POR , BOR
时的值
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
其它复位
时的值
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 35 页
PIC16F716
7.3 PWM 模式
在脉冲宽度调制 (PWM )工作模式下, CCP1 引脚上
可输出分辨率高达 10 位的 PWM 输出。因为 CCP1 引
脚和 PORTB 数据锁存复用, TRISB<3> 位必须清零以
设置 CCP1 引脚为输出。
注: 清零 CCP1CON 寄存器将强制 CCP1 PWM
输出锁存为默认低电平。这不是 PORTB
I/O 数据锁存。
图 7-3 所示为 CCP 模块工作在 PWM 模式下的简化原
理图。
关于如何一步步设置 ECCP 模块使其工作在 PWM 模
式,请参见第 7.3.3 节“PWM 操作设置”。
图 7-3 : PWM 模式的简化原理图
占空比寄存器
CCPR1L
CCPR1H(从动)
比较器
CCP1CON<5:4>
Q
R
RB3/CCP1/P1A
PWM 输出 (图 7-4)有一个时基 (周期)和一段输出
保持为高电平的时间 (占空比)。 PWM 的频率就是周
期的倒数 (1/ 周期)。
图 7-4 : PWM 输出
周期= PR2 + 1
占空比
TMR2 = PR2
TMR2 =占空比(CCPR1H)
TMR2 = PR2
7.3.1 PWM 周期
PWM 的周期可通过写 PR2 寄存器来设定, PWM 周期
可由以下公式计算:
公式 7-1 :
PWM 周期= [(PR2) + 1] • 4 • Tosc •
(TMR2 预分频比)
TMR2
比较器
PR2
注 1 : 8 位定时器和 2 位的内部 Q 时钟或 2 位的预分频器组
(注 1 )
清零定时器和
CCP1 引脚并
锁存 D.C。
合成 10 位时基。
S
TRISB<3>
PWM 频率定义为 1/[PWM 周期 ]。
当 TMR2 等于 PR2 时,在下一个递增周期中发生以下
三个事件:
•TMR2被清零
• CCP1 引脚被置位 (例外:如果 PWM 占空
比= 0%, CCP1 引脚不会被置位)
•PWM占空比从 CCPR1L 锁存到 CCPR1H
注: 在确定 PWM 频率时未考虑使用 Timer2 后
分频器(参见第 6.0 节“Timer2 模块”)。
后分频器可用于获得与PWM 输出不同频率
的伺服更新速率。
DS41206A_CN 第 36 页 初稿 2004 Microchip Technology Inc.
PIC16F716
7.3.2 PWM 占空比
通过写入 CCPR1L 寄存器和 CCP1CON<5:4> 位可以设
定 PWM 占空比,分辨率最高可达 10 位。 CCPR1L 包
含高 8 位而 CCP1CON<5:4> 包含低 2 位,该 10 位值
由 CCPR1L:CCP1CON<5:4> 表示。以下公式用于计算
PWM 的占空比时间:
公式 7-2 :
PWM 占空比= ( CCPR1L:CCP1CON<5:4> •
TOSC • (TMR2 预分频比 ))
CCPR1L 和 CCP1CON<5 :4> 可在任何时候写入,但是
当 PR2 和 TMR2 匹配时 (即周期完成时),该占空比
值才被锁存到 CCPR1H 。在 PWM 工作模式下,
CCPR1H 是只读寄存器。
CCPR1H 寄存器和 2 位内部锁存值被用于 PWM 占空比
的双缓冲器,这个双缓冲器对于去除 PWM 操作的毛刺
是必需的。
当 CCPR1H 和 2 位内部锁存值与组合到内部 2 位 Q 时
钟或 2 位 TMR2 预分频器的 TMR2 相匹配时,CCP1 引
脚被清零。
在给定 PWM 频率的情况下,最大的 PWM 分辨率(位
数)由以下公式给出 :
公式 7-3 :
OSC
F
log
最大分辨率
(
=
F
PWM
)
位
log(2)
注: 如果 PWM 占空比值比 PWM 周期长,那么
CCP1 引脚不会被清零。
PWM 周期和占空比计算的例子,参见 《 PICmicro®中
档单片机系列参考手册》( DS33023A_CN)。
7.3.3 PWM 操作设置
当配置 ECCP 模块的 PWM 操作时,要进行如下几步 :
1. 写 PR2 寄存器设定 PWM 周期;
2. 写 CCPR1L 寄存器和 CCP1CON<5:4> 位设定
PWM 占空比;
3. 将 TRISC<3> 位清零,设定 CCP1 引脚为输出;
4. 通过写 T2CON 设置 TMR2 预分频比,并使能
Timer2 ;
5. 为 PWM 操作配置 CCP1 模块。
表 7-3: 20 MHz 时 PWM 的频率和分辨率示例
PWM 频率 1.22 kHz 4.88 kHz 19.53 kHz 78.12 kHz 156.3 kHz 208.3 kHz
定时器预分频比 (1, 4, 16) 1 641111
PR2 值 0xFF 0xFF 0xFF 0x3F 0x1F 0x17
最大分辨率 (位)
10 10 10 8 7 6.6
表 7-4 :与PWM 及 TIMER2 相关的寄存器
地址 名称
0Bh,
8Bh
0Ch PIR1
11h T MR2 Ti mer 2 模块的寄存器 0000 0000 0000 0000
12h T2CON
15h CCPR1L 捕捉 / 比较 /PWM 寄存器 1 ( LSB) xxxx xxxx uuuu uuuu
16h CCPR1H 捕捉 / 比较 /PWM 寄存器 1 ( MSB) xxxx xxxx uuuu uuuu
17h CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 0000 0000
86h TRISB PORB 数据方向寄存器 1111 1111 1111 1111
8Ch PIE1
92h PR2 Timer2 模块的周期寄存器 1111 1111 1111 1111
图注: x =未知, u =未改变, - =未使用,读出时为 “ 0 ”。阴影部分未被 PWM 和 Timer2 使用。
INTCON GIE PEIE
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 000u
— ADIF — — — CCP1IF TMR2IF TMR1IF -0-- -000 -0-- -000
— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
— ADIE — — — CCP1IE TMR2IE TMR1IE -0-- -000 -0-- -000
POR 、 BOR
时的值
其它复位
时的值
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 37 页
PIC16F716
7.4 增强型 PWM 模式
增强型 PWM 工作模式为更广泛的控制应用提供更多的
PWM 输出选择。该模块是标准 CCP 模块的向上兼容版
本,提供 P1A 到 P1D 多达四路输出。用户还可以选择
信号的极性 (高电平有效或低电平有效) 。通过设置
CCP1CON 寄存器的 P1M1:P1M0 位
(CCP1CON<7:6> )和 CCP1M3:CCP1M0 位
(CCP1CON<3:0> )来配置模块的输出模式和极性。
图 7-5 所示为简化的 PWM 工作原理图。所有控制寄存
器都是双缓冲的,且在新 PWM 周期 (当 Timer2 复位
时的周期边界)的开始装载,防止任何一路输出出现毛
刺。 PWM 死区延时是个例外,它在高电平时间的边界
或者周期边界装载 (取决于哪一个先到)。由于采用了
缓冲,模块一直等到分配的定时器复位,而不是立即开
始。这意味着增强型 PWM 波形与标准 PWM 波形不完
全一致,而是偏移一个指令周期 (4T
和前面一样,用户必须手动设置相应的 TRISB 位来配置
引脚为输出。
图 7-5 :增 强 型PWM 模块的简化原理图
占空比寄存器
CCPR1L
CCPR1H (从动)
比较器
TMR2
CCP1CON<5:4>
(注 1 )
OSC)。
P1M<1:0>
RQ
S
7.4.1 PWM 输出配置
CCP1CON 寄存器的 P1M1:P1M0 位允许以下四种配置
之一:
• 单输出
• 半桥输出
• 全桥输出,正向模式
• 全桥输出,反向模式
单输出模式是标准 PWM 模式,在第 7.3 节“PWM 模
式”中讨论。半桥和全桥输出模式在下面的章节中会详
细介绍。
图 7-6 、图 7-7 、图 7-8 和图 7-9 总结了在所有配置中的
PWM 输出关系。
CCP1M<3:0>
4
2
CCP1/P1A
输出
控制器
TRISB<3>
P1B
TRISB<5>
P1C
TRISB<6>
RB3/CCP1/P1A
RB5/P1B
RB6/P1C
比较器
PR2
注 1 : 8 位定时器 TMR2 寄存器与 2 位内部 Q 时钟或 2 位预分频器组合成 10 位时基。
清定时器、
置位 CCP1 引脚和
锁存 D.C。
PWM1CON
P1D
TRISB<7>
RB7/P1D
DS41206A_CN 第 38 页 初稿 2004 Microchip Technology Inc.
PIC16F716
图 7-6: PWM 输出关系 ( P1A、 P1B、 P1C 和 P1D 高电平有效状态)
0
延时
(1)
占空比
周期
延时
(1)
00
10
01
11
CCP1CON
<7:6>
(单输出)
(半桥)
(全桥,
正向)
(全桥,
反向)
信号
P1A 调制
P1A 调制
P1B 调制
P1A 有效
P1B 无效
P1C 无效
P1D 调制
P1A 无效
P1B 调制
P1C 有效
P1D 无效
PR2+1
图 7-7: PWM 输出关系 ( P1A、 P1B、 P1C 和 P1D 低电平有效状态)
CCP1CON
<7:6>
(单输出)
00
(半桥)
10
(全桥,
01
11
关系:
• 周期= 4 * T
• 占空比 = T
• 延时= 4 * T
注 1 : 使用 PWM1CON 寄存器对死区延时编程 (第 7.4.4 节 “可编程死区延时”)。
正向)
(全桥,
反向)
OSC * ( PR2 + 1) * ( TMR2 预分频比);
OSC * ( CCPR1L<7:0> : CCP1CON<5:4>) * ( TMR2 预分频比);
OSC * ( PWM1CON<6:0>)。
信号
P1A 调制
P1A 调制
P1B 调制
P1A 有效
P1B 无效
P1C 无效
P1D 调制
P1A 无效
P1B 调制
P1C 有效
P1D 无效
0
延时
(1)
占空比
周期
延时
(1)
PR2+1
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 39 页
PIC16F716
图 7-8: PWM 输出关系 ( P1A、 P1C 高电平有效, P1B、 P1D 低电平有效)
0
占空比
周期
延时
(1)
延时
(1)
00
10
01
11
CCP1CON
<7:6>
(单输出)
(半桥)
(全桥,
正向)
(全桥,
反向)
信号
P1A 调制
P1A 调制
P1B 调制
P1A 有效
P1B 无效
P1C 无效
P1D 调制
P1A 无效
P1B 调制
P1C 有效
P1D 无效
PR2+1
DS41206A_CN 第 40 页 初稿 2004 Microchip Technology Inc.
PIC16F716
图 7-9: PWM 输出关系 ( P1A、 P1C 低电平有效, P1B、 P1D 高电平有效)
CCP1CON
<7:6>
(单输出)
00
(半桥)
10
(全桥,
01
11
关系:
• 周期 = 4 * T
• 占空比 = T
• 延时 = 4 * T
注 1 : 使用 PWM1CON 寄存器对死区延时编程 (第 7.4.4 节 “可编程死区延时”)。
正向)
(全桥,
反向反向)
OSC *(PR2 + 1)* (TMR2 预分频比 ) ;
OSC *(CCPR1L<7:0> : CCP1CON<5:4>)*( TMR2 预分频比 ) ;
OSC *(PWM1CON<6:0>)。
信号
P1A 调制
P1A 调制
P1B 调制
P1A 有效
P1B 无效
P1C 无效
P1D 调制
P1A 无效
P1B 调制
P1C 有效
P1D 无效
0
延时
(1)
占空比
周期
延时
(1)
PR2+1
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 41 页
PIC16F716
7.4.2 半桥模式
在半桥输出模式下,有两个引脚用作输出驱动推拉式负
载。 RB3/CCP1/P1A 引脚输出 PWM 输出信号, RB5/
P1B 引脚输出互补的 PWM 输出信号(图 7-12 )。这 种
模式可用于半桥应用(如图 7-11 所示),或者用于全桥
应用,这种情况下使用两个 PWM 信号调制四个功率开
关。
在半桥输出模式下,可编程死区延时可用来防止半桥功
率器件出现直通。PWM1CON 寄存器的位 PDC6:PDC0
的值设置输出被驱动为有效之前的指令周期数。 如果这
个值比占空比大,则在整个周期中相应的输出保持为无
效。关于死区延时操作的详细内容,请参见第 7.4.4 节
“可编程死区延时”。
图 7-11 : 半桥输出模式应用实例
标准半桥电路 (“推拉式”)
PIC16F716
P1A
FET
驱动器
由于 P1A 和 P1B 输出与 PORTB<3> 和 PORTB<5> 数
据锁存是复用的,TRISB<3> 和TRISB<5>位必须清零,
将 P1A 和 P1B 配置为输出。
图 7-10 :半 桥PWM 输出
周期
占空比
(2)
P1A
td
(2)
P1B
(1)
td =死区延时
注 1 : 此时 TMR2 寄存器和 PR2 寄存器的值相等。
2 : 图中输出信号高电平有效。
V+
td
+
V
-
周期
(1) (1)
驱动全桥电路的半桥输出
PIC16F716
P1A
P1B
P1B
FET
驱动器
FET
驱动器
FET
驱动器
V+
负载
V-
负载
+
V
-
V-
FET
驱动器
FET
驱动器
DS41206A_CN 第 42 页 初稿 2004 Microchip Technology Inc.
PIC16F716
7.4.3 全桥模式
在全桥输出模式中,四个引脚都用作输出;但是,同一
时间只有两个输出有效。在正向模式下,引脚 RB3/
CCP1/P1A 持续有效,引脚 RB7/P1D 被调制。在反向
模式中,RB6/P1C 引脚持续有效,RB5/P1B 引脚被调
制。如图 7-6 到图 7-9 所示。
图 7-12 : 全桥应用实例
PIC16F716
P1A
P1B
P1C
FET
驱动器
FET
驱动器
P1A、 P1B、 P1C 和 P1D 输出与 PORTB<3> 和
PORTB<5:7>数据锁存复用,TRISB<3>和 TRISB<5:7>
位必须清零,将 P1A 、 P1B 、 P1C 和 P1D 引脚配置为
输出。
V+
QA
负载
QB
QC
QD
FET
驱动器
FET
驱动器
P1D
7.4.3.1 全桥模式中的方向改变
在全桥输出模式中,CCP1CON 寄存器中的 P1M1 位允
许用户控制正 / 反方向。当应用软件改变这个方向控制
位时,模块将在下一个 PWM 周期改用新的方向。
在当前 PWM 周期结束之前,调制输出(P1B 和 P1D )
进入无效状态,而未调制输出(P1A 和 P1C )切换到以
相反的方向驱动。这发生在下一个 PWM 周期开始之前
的(4 × T
Timer2 预分频比可以是 1、4 或 16 ,这取决于 T2CKPSx
位(T2CON<1:0>)的值。在从切换未调制输出驱动方
向到下一个周期开始的间隔中,调制输出(P1B 和P1D )
保持无效。这种关系如图 7-13 所示。
OSC ×(Timer2 预分频比))时间间隔内。
V-
注: 在全桥输出模式中, ECCP 模块不提供任
何死区延时。通常,因为始终只有一个输
出被调制,所以不需要死区延时。然而,有
一种情况将需要死区延时。这一情况发生
在以下两个条件满足时:
1.当输出的占空比达到或者接近 100%,
PWM 输出方向改变;
2.功率开关 (包括功率器件和驱动电路)
的关断时间,比开通的时间要长。
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 43 页
PIC16F716
在图 7-14 所示的例子中,在占空比接近100% 时,PWM
方向从正向改变到反向。在时间 t1 ,输出 P1C 变为有
效,输出 P1A 和 P1D 变为无效。在这个例子中,因为
功率器件的关断时间比开通时间要长,在“t ”时间内,
功率器件 QC 和 QD 可能出现直通 (见图 7-12 )。 当
PWM 方向从反向改变到正向时,功率器件 QA 和 QB 也
将出现相同的现象。
如果应用中需要在高占空比时改变 PWM 方向。必须满
足以下要求之一:
1. 在改变方向之前的一个 PWM 周期降低 PWM 占
空比;
2. 使用开关驱动电路,使驱动开关管关断比驱动开
关管开通快。
也可能存在其它避免直通的方案。
图 7-13 : PWM 方向改变
(1)
信号
P1A(高电平有效)
P1B(高电平有效)
P1C(高电平有效)
P1D(高电平有效)
DC
注 1: 可在 PWM 周期的任意时刻,写 CCP1 控制寄存器的方向位 ( CCP1CON<7> )。
2: 当改变方向时, P1A 和 P1C 信号在当前 PWM 周期结束之前,将提前 4 T
换方向,间隔大小取决于 Timer2 预分频比。此时被调制的 P1B 和 P1D 信号是无效的。
周期
DC
(注 2 )
周期
OSC、 16 TOSC 或者 64 TOSC 时间间隔切
图 7-14 : 在占空比接近 100% 时改变 PWM 方向
正向周期 反向周期
P1A
P1B
P1C
P1D
外部开关 C
外部开关 D
可能出现
直通
注 1 : 图中所有信号高电平有效。
2 : t
是功率开关 QC 及其驱动电路的开通延时。
on
3 : t
是功率开关 QD 及其驱动电路的关断延时。
off
DC
t1
DC
t
on
t
off
t = t
- t
off
on
DS41206A_CN 第 44 页 初稿 2004 Microchip Technology Inc.
PIC16F716
7.4.4 可编程死区延时
在所有功率开关管都以 PWM 频率调制的半桥应用中,
功率开关管开通通常比关断需要更多的时间。如果上下
两个功率开关管在同一时间开关(一个开通,另一个关
断)。那么在一段很短的时间里,两个开关管可能同时
导通,直到一个开关管完全关断为止。在这短暂的时间
中,两个功率开关管中可能流过较高的电流 (直通电
流),将逆变桥的电源与地短路。为避免开关过程中可
能会出现的破坏性直通电流,通常需要延迟功率开关管
的开通,保证在另一个开关管完全关断之后,再开通相
应的功率开关管。
在半桥输出模式中,可采用数字可编程死区延时,避免
出现损坏逆变桥功率开关管的直通电流。在信号从无效
状态切换到有效状态时增加延时,参见图 7-10 。
PWM1CON 寄存器(寄存器 7-2 )的 低 7 位以单片机指
令周期为单位设置延时 (T
CY 或 4TOSC)。
7.4.5 增强型 PWM 自动关闭
当 ECCP 编程设置为任一种增强 PWM 模式时,有效输
出引脚可配置为自动关闭。当关闭事件发生时,自动关
闭立即把增强型 PWM 输出引脚置为定义的关闭状态。
RB0/INT/ECCPAS2
都为逻辑低电平时,会产生自动关闭事件。不选择任何
自动关闭源可以禁止自动关闭功能。使用的自动关闭源
由 ECCPAS2 和 ECCPAS0 位(ECCPAS<6> 和
ECCPAS<4> )选择。
当关闭发生时,输出引脚被异步置为其关闭状态,关闭
状态由 PSSAC1:PSSAC0 和 PSSBD1:PSSBD0 位
(ECCPAS<3:0>)指定。每个引脚对 (P1A/P1C 和
P1B/P1D )可以设置为驱动高电平、驱动低电平或者三
态 (不驱动)。 ECCPASE 位(ECCPAS<7>)也被置
位,以保持增强型 PWM 输出为其关闭状态。
当关闭事件发生时, ECCPASE 位由硬件置位。如果自
动重新启动没有使能,当关闭起因清除时, ECCPASE
位必须由软件清零。如果自动重新启动使能,当自动关
闭起因被清除时, ECCPASE 位自动清零。
如果 ECCPASE 位在一个 PWM 周期开始时被置位,在
那整个 PWM 周期, PWM 输出保持在其关闭状态。当
ECCPASE 位被清零时,PWM 输出将在下一个PWM 周
期的开始,返回到正常操作。
注: 当关闭条件有效时,禁止写 ECCPASE 位。
或 RB4/ECCPAS0 引脚之一或两者
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 45 页
PIC16F716
寄存器 7-2: PWM1CON: PWM 配置寄存器 (地址: 18h)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0
bit 7 bit 0
bit 7 PRSEN: PWM 重新启动使能位
1 = 自动关闭时,一旦关闭事件消失, ECCPASE 位自动清零; PWM 自动重新启动。
0 = 自动关闭时, ECCPASE 必须由软件清零以重新启动 PWM 。
bit 6-0 PDC<6:0>:PWM 延时计数位
在 PWM 信号应该转换为有效的预定时间和转换为有效的实际时间之间的 FOSC /4 (4*TOSC)周
期数。
图注:
R =可读位 W =可写位 U =未用位,读为 “ 0”
- n = POR 时的值 “1”=置位 “0”=清零 x =该位未知
寄存器 7-3: ECCPAS — 增强型 CCP 自动关闭寄存器 (地址:19h)
R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
ECCPASE ECCPAS2 — ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0
bit 7 bit 0
bit 7 ECCPASE: ECCP 自动关闭事件状态位
1 = 发生了关闭事件。如果 PRSEN = 0,必须在软件中复位以重新使能 ECCP 。
0 = ECCP 输出使能,无关闭事件。
bit 6 ECCPAS2: ECCP 自动关闭位 2
1 =RB0(INT )引脚低电平 (“0 ”)导致关闭
0 =RB0(INT )引脚对 ECCP 无影响
bit 5 未使用:读出时为 “0 ”
bit 4 ECCPAS0: ECCP 自动关闭位 “0 ”
1 =RB4引脚低电平 (“0”)导致关闭
0 =RB4引脚对 ECCP 无影响
bit 3-2 PSSAC<1:0>:引脚 P1A 和 P1C 关闭状态控制
00 = 驱动引脚 P1A 和 P1C 为“0”
01 = 驱动 P1A 和 P1C 为“1”
1x = 引脚 P1A 和 P1C 为三态
bit 1-0 PSSBD<1:0>:引脚 P1B 和 P1D 关闭状态控制
00 = 驱动引脚 P1B 和 P1D 为“0”
01 = 驱动引脚 P1B 和 P1D 为“1”
1x = 引脚 P1B 和 P1D 为三态
图注:
R =可读位 W =可写位 U =未用位,读出时为 “ 0”
- n = POR 时的值 “1”=置位 “0”=清零 x =该位未知
DS41206A_CN 第 46 页 初稿 2004 Microchip Technology Inc.
PIC16F716
7.4.5.1 自动关闭和自动重新启动
自动关闭功能可以配置为允许在关闭事件后自动重新启
动模块,这可通过置位 PWM1CON 寄存器 的 PRSEN
位(PWM1CON<7>)使能。
在关闭模式下,如果 PRSEN (PWM1CON <7> ) = 1
(图 7-15 ),只要关闭的起因继续,ECCPASE 位将保
持置位。当关闭条件清除时,ECCPASE 位清零。如果
PRSEN = 0 (图 7-16) ,一旦关闭条件发生,
ECCPASE 位将保持置位直到被软件清零。一旦
ECCPASE 位被清零,增强型 PWM 将在下一个 PWM
周期的重新开始工作。
注: 当关闭条件有效时,禁止写 ECCPASE 位。
只要关闭的条件一直持续, ECCPASE 位就不能被清
零。
可以通过写 “1 ”到 ECCPASE 位,强制为自动关闭模
式。
7.4.6 启动注意事项
当 ECCP 模块用于 PWM 模式时,必须在 PWM 输出引
脚上外接适当的上拉和 / 或下拉电阻。当单片机退出复
位状态时,所有 I/O 引脚呈高阻状态。外部电路必须保
持功率开关器件处于截至状态,直到单片机将 I/O 引脚
驱动为适当的信号电平,或者激活 PWM 输出为止。
CCP1M1:CCP1M0 位(CCP1CON<1:0> )允许用户为
每一对 PWM 输出引脚 (P1A/P1C 和 P1B/P1D )选择
PWM 输出信号为高电平有效或低电平有效。PWM 输出
极性必须在 PWM 引脚配置为输出之前选择。由于可能
导致应用电路的损坏,因此不推荐 PWM 引脚配置为输
出时改变极性配置。
当 PWM 模块初始化时,P1A、P1B、P1C 和 P1D 输出
锁存可能不在正确的状态。使能 PWM 引脚为输出和使
能 ECCP 模块同时进行,可能损坏应用电路。必须在将
PWM 引脚设置为输出之前,配置 ECCP 模块为正确的
输出模式并完成一个完整的 PWM 周期。当第二个 PWM
周期开始时, TMR2IF 位置位表明一个完整的 PWM 周
期结束了。
图 7-15 : PWM 自动关闭 (PRSEN = 1 ,使能自动重新启动)
PWM 周期
关闭事件
ECCPASE 位
PWM 活动
正常 PWM
PWM 周期
开始
关闭
事件发生
关闭
事件清除
图 7-16 : PWM 自动关闭 (PRSEN = 0 ,禁止自动重新启动)
PWM 周期
关闭事件
ECCPASE 位
PWM 活动
正常 PWM
PWM 周期
开始
关闭
事件发生
关闭
事件清除
ECCPASE
由软件
清零
PWM
恢复
PWM
恢复
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 47 页
PIC16F716
7.4.7 设置 PWM 操作
若要把 ECCP 模块配置成工作于 PWM 模式,可采用下
列步骤:
1. 通过置位相应的 TRISB 位,配置 PWM 引脚 P1A
和 P1B (以及 P1C 和 P1D ,如果使用的话)为
输入。
2. 通过装载 PR2 寄存器设置 PWM 周期。
3. 通过装载恰当的值到 CCP1CON 寄存器来设置
ECCP 模块为需要的 PWM 模式和配置:
• 用 P1M1:P1M0 位选择输出配置和方向。
• 用 CCP1M3:CCP1M0位选择 PWM输出信号的
极性。
4. 通过装载 CCPR1L 寄存器和 CCP1CON<5:4> 位
设置 PWM 占空比。
5. 对于半桥输出模式,通过装载恰当的值到
PWM1CON<6:0> 设置死区延时。
6. 如果需要自动关闭操作,装载 ECCPAS 寄存器:
• 使用 ECCPAS<2>和 ECCPAS<0>位选择自动
关闭源。
• 使用 PSSAC1:PSSAC0 位和
PSSBD1:PSSBD0 位选择 PWM 输出引脚在
PWM 关闭时的状态
• 置位 ECCPASE 位(ECCPAS<7>)。
7. 如果需要自动重新启动,置位 PRSEN 位
( PWM1CON<7>)。
8. 配置及启动 TMR2:
• 清零 TMR2中断标志位 TMR2IF位(PIR1<1>)
• 通过装载 T2CKPSx 位(T2CON<1:0>)设置
TMR2 预分频比
• 通过置位 TMR2ON 位(T2CON<2>)使能
Timer2
9. 在新的 PWM 周期开始后使能 PWM 输出:
• 等待直到 TMR2 溢出 ( TMR2IF 位置位)
• 通过清零各 TRISB位,使能CCP1/P1A、P1B、
P1C 和 / 或 P1D 引脚为输出。
• 清零 ECCPASE 位(ECCPAS<7>)
更多细节请参见前面章节。
7.4.8 复位的影响
上电复位及以后的复位都将强制所有端口为输入模式,
并强制 ECCP 寄存器为复位状态。
这将强制增强型 CCP 模块复位到与标准 ECCP 模块兼
容的状态。
表 7-5 : 与增强型 PWM 及 TIMER2 相关的寄存器
地址 名称
0Bh INTCON GIE PEIE
0Ch PIR1
8Ch PIE1
11h TM R2 Time r2 模块寄存器 0000 0000 0000 0000
92h PR2 Timer2 模块周期寄存器 1111 1111 1111 1111
12h T2CON
86h TRISB PORTB 数据方向寄存器 1111 1111 1111 1111
16h CCPR1H 增强型捕捉 / 比较 /PWM 寄存器 1 高字节 xxxx xxxx uuuu uuuu
15h CCPR1L 增强型捕捉 / 比较 /PWM 寄存器 1 低字节 xxxx xxxx uuuu uuuu
17h CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 0000 0000
19h ECCPAS ECCPASE ECCPAS2
18h PWM1CON PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 0000 0000 0000 0000
图注: x =未知, u =未改变, - =未使用,读出时为 “ 0 ”。 阴影部分未被 ECCP 模块的增强型 PWM 模式使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 0000 000x 0000 000u
— ADIF — — — CCP1IF TMR2IF TMR1IF -0-- -000 -0-- -000
— ADIE — — — CCP1IE TMR2IE TMR1IE -0-- --00 -0-- --00
— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
— ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 00-0 0000 00-0 0000
POR, BOR
时的值
其它
所有
复位值
DS41206A_CN 第 48 页 初稿 2004 Microchip Technology Inc.
8.0 模数转换器 (A/D )模块
模数 (A/D )转换器模块有四个输入。
A/D 转换器将模拟输入信号转换成对应的 8 位数字量
(请参考应用笔记 AN546 中的 A/D 转换器使用)。采样
/ 保持的输出作转换器的输入,转换器通过逐次逼近产
生结果。模拟参考电压可通过软件选择为器件的正电源
电压 (V
A/D 转换器有一个特殊的功能,即能够器件处于休眠方
式时继续工作。在休眠方式下工作时,A/D 转换时钟必
须来源于 A/D 转换器内部的 RC 振荡器。
寄存器 8-1 : ADCON0 寄存器 (地址:1Fh )
DD)或 RA3/AN3/V REF 引脚上的电平。
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE
bit 7 bit 0
bit 7-6 ADCS1:ADCS0:A/D 转换时钟选择位
OSC/2
00 = F
01 = FOSC/8
10 = FOSC/32
RC (时钟来自内部 ADC RC 振荡器)
11 = F
bit 5-3 CHS2:CHS0:模拟通道选择位
000 = 通道 0 (RA0/AN0 )
001 = 通道 1 (RA1/AN1 )
010 = 通道 2 (RA2/AN2 )
011 = 通道 3 (RA3/AN3 )
1xx = 保留,不要使用
bit 2 GO/DONE:A/D 转换状态位
如果 ADON = 1
1 = A/D 转换正在进行 (将该位置位启动 A/D 转换)
0 = A/D 转换不在进行 (A/D 转换完成后该位由硬件自动清零)
bit 1 保留:保持该位为 “0 ”
bit 0 ADON:A/D 开启位
1 = A/D 转换模块正在工作
0 = A/D 转换模块关闭,不消耗工作电流
PIC16F716
®
关于 A/D 模块的其它信息,请参阅《PICmicro
片机系列参考手册》(DS33023A_CN )。
A/D 模块有三个寄存器,它们是:
•A/D结果寄存器 (ADRES)
•A/D控制寄存器 0 (ADCON0)
•A/D控制寄存器 1 (ADCON1)
器件复位强制所有寄存器为其复位状态,这将强制 A/D
转换模块关闭,并且中止任何转换。
ADCON0 寄存器,如寄存器 8-1 所示,用于控制 A/D 模
块的操作。ADCON1 寄存器,如寄存器 8-2 所示,用于
配置端口引脚的功能。端口引脚可配置为模拟输入
(RA3 也可作为参考电压)或数字 I/O 。
—A D O N
中档单
图注:
R = 可读位 W = 可写位 U = 未使用位,读为 “0”
-n = 上电复位时的值 “1”= 置位 “0” = 清零 x = 未知
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 49 页
PIC16F716
寄存器 8-2: ADCON1 寄存器 (地址: 9Fh)
U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0
— — — — — PCFG2 PCFG1 PCFG0
bit 7 bit 0
bit 7-3
未使用:读为 “0”。
bit 2-0 PCFG2:PCFG0:A/D 端口配置控制位
PCFG2:PCFG0
0x0 AAA AVDD
0x1 VREF AA AR A 3
100 ADA AV
101 VREF DA AR A 3
11x DDD DV
图注: A = 模拟输入, D = 数字 I/O 。
图注:
R = 可读位 W = 可写位 U = 未使用位,读为 “0”
-n =上电复位时的值 “1” = 置位 “0” = 清零 x = 未知
A/D 转换的结果存放在 ADRES 寄存器中。当 A/D 转换
完成时,结果被装载到 ADRES 寄存器,GO/DONE 位
(ADCON0<2> )被清零,且 A/D 中断标志位 ADIF 被
置位。 A/D 模块的原理图如图 8-1 所示。
ADRES 寄存器中的值不会被任何复位修改。上电复位
后 ADRES 各位的状态不确定。
根据需要配置 A/D 模块后,必须在转换开始前采集选择
的通道。必须将模拟输入通道对应的 TRIS 位设置为输
入。参见第 8.1 节“ A/D 转换采集要求”确定采样时间。
采集时间后,可以启动 A/D 转换。下面是实现 A/D 转换
所需要遵循的步骤:
AN3
RA3
AN2
RA2
AN2
RA1
AN0
RA0
V
REF
DD
DD
1. 配置 A/D 模块:
-配置模拟引脚 / 参考电压 / 和数字 I/O
( ADCON1)
-选择 A/D 输入通道 ( ADCON0)
-选择 A/D 转换时钟 ( ADCON0)
-打开 A/D 模块 ( ADCON0)
2. 配置 A/D 中断 (如果需要):
-清零 ADIF 位
-置位 ADIE 位
-置位 GIE 位
3. 等待需要的采集时间。
4. 启动转换:
-置位 GO/DONE
位( ADCON0)
5. 等待 A/D 转换完成,可以通过以下两种方法之一
来判断:
-查询 GO/DONE
位是否清零
或
-等待 A/D 中断
6. 读 A/D 结果寄存器(ADRES),如果需要,清除
ADIF 位。
7. 如果需要进行下一次 A/D 转换,根据需要转到步
骤 1 或步骤 2。每一位的 A/D 转换时间定义为
AD,下一次采样开始前至少需要等待 2TAD。
T
DS41206A_CN 第 50 页 初稿 2004 Microchip Technology Inc.
图 8-1 : A/D 原理图
A/D
转换器
VREF
(参考
电压)
V
IN
(输入电压)
PCFG2:PCFG0
DD
V
000 或
010 或
100 或
110 或 111
001 或
011 或
101
CHS2:CHS0
011
010
001
000
PIC16F716
RA3/AN3/V
RA2/AN2
RA1/AN1
RA0/AN0
REF
8.1 A/D 转换采集要求
为了使 A/D 转换满足指定的精度,必须让采样保持电
容(CHOLD )充分充电至输入通道的电压值。模拟输
入模型见图 8-2 。 信号源内阻 (RS )
和内部采样开关阻抗(R
充电时间。而采样开关阻抗(RSS )随电源电压(VDD )
而变。信号源内阻影响模拟输入的偏移电压(由引脚漏
电流引起)。 推荐最大模拟信号源内阻为 10kΩ。在选定
(改变)模拟输入通道后,必须在启动转换前进行采集。
图 8-2 : 模拟输入模型
SS) 直接影响电容器 CHOLD 的
VDD
ANx
Rs
VA
图注 : CPIN
CPIN
5 pF
VT
I leakage
IC
R
SS
C
HOLD
= 输入电容
= 阈值电压
= 由各结点在引脚
上引起的泄漏电流
= 片内走线等效电阻
= 采样开关
= 采样保持电容(从 DAC )
VT = 0.6V
V
T = 0.6V
最小采集时间 TACQ 的计算公式,参见 《PICmicro ® 中
档单片机系列参考手册》(DS33023A_CN ))。这个公
式计算的采集时间误差在 1/2LSb 内。 1/2 LSb 误差是
A/D 转换满足其指定精度所允许的最大误差。
注: 启动转换时,采样保持电容与输入引脚断
开。
采样开关
R
IC ≤ 1k
I leakage
± 500 nA
SS
R
SS
CHOLD
= DAC 电容
= 51.2 pF
SS
V
6V
5V
4V
DD
V
3V
2V
567891011
采样开关
(kΩ )
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 51 页
PIC16F716
8.2 选择 A/D 转换时钟
每位的 A/D 转换时间定义为 TAD。每完成一次 8 位 A/D
转换需要 9.5T
TAD 可以有以下四种选择:
OSC
•2T
•8TOSC
•32TOSC
• 内部 RC 振荡器
为确保正确的 A/D 转换, A/D 转换时钟 (TAD)必须保
证最小 T
表 8-1 所示为器件在各种工作频率下使用不同 A/D 转换
时钟源的 T
AD 。 A/D 转换的时钟源可用软件选择。
AD 时间为 1.6 µs 。
AD 时间。
8.3 配置模拟端口引脚
ADCON1 和 TRISA 寄存器控制 A/D 转换器端口引脚的
操作。 作为模拟输入的引脚,其相应的 TRIS 位必须被
置位 (输入)。如果相应 TRIS 位被清零 (输出),数
字输出电平 (VOH 或 VOL )将被转换。
A/D 转换器操作与 CHS2:CHS0 位和 TRIS 各位的状态
无关。
注 1 : 当读端口寄存器时,所有配置为模拟输入
通道的引脚都读为“0”(低电平);而配
置为数字输入的引脚电平将作为模拟输入
来转换。配置为数字输入引脚的模拟电平
将不影响转换精度。
2: 定义为数字输入的任何引脚(包括
AN3:AN0 引脚)上的模拟电平都可能会导
致输入缓冲器消耗电流超出器件规范。
表 8-1 : TAD 与器件工作频率关系表
AD 时钟源 (T AD)
工作
2T
OSC 00 100 ns
8TOSC 01 400 ns
ADCS1:ADCS0 20 MHz 5 MHz 1.25 MHz 333.33 kHz
(2)
(2)
400 ns
1.6 µ s6 . 4µs 24 µs
32 TOSC 10 1.6 µs6 . 4µs 25.6 µs
RC 11 2-6 µs
(1), (4)
2-6 µs
图注: 阴影单元超出了推荐范围。
注 1 : RC 时钟源的典型 T
2 : 这些值低于要求的最小 T
AD 时间为 4 µ s。
AD 时间。
3: 要获得更快的转换时间,推荐选择另一种时钟源。
4: 当器件频率高于 1MHz时, A/D 转换的 RC 时钟源仅推荐在休眠方式下使用。
(2)
(1), (4)
器件频率
1.6 µ s6µs
2-6 µs
(3)
(1), (4)
96 µs
2-6 µs
(3)
(3)
(1)
DS41206A_CN 第 52 页 初稿 2004 Microchip Technology Inc.
PIC16F716
8.4 A/D 转换
注: 不应在打开 A/D 的指令中置位 GO/DONE
位。
8.5 使用 ECCP 触发
A/D 转换可以通过 ECCP 模块的 “特殊事件触发” 来
启动。这需要 CCP1M3:CCP1M0 位
(CCP1CON<3:0> ) 设定为 “1011 ”,并且使能 A/D
模块 (ADON 位置位)。 当触发信号产生后, GO/
位被置位, 启动 A/D 转换,且 Timer1 计数器被
DONE
复位为 0。复位 Timer1 是为了以最小的软件开销自动重
复 A/D 采集周期(将 ADRES 移至期望位置)。 在“特
殊事件触发”将 GO/DONE
必须选择适当的模拟输入通道和最小采集时间 。
如果 A/D 转换模块未使能 (ADON 清零),则 “特殊
事件触发”将被 A/D 模块忽略, 但仍会复位 Timer1 计
数器。
表 8-2 : A/D 转换寄存器一览
地址 名称
05h PORTA
0Bh,8Bh INTCON GIE PEIE
0Ch PIR1
1Eh ADRES A/D 结果寄存器 xxxx xxxx uuuu uuuu
1Fh ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE
85h TRISA
8Ch PIE1
9Fh ADCON1
图注: x = 未知, u = 未改变, - = 未使用,读为 “0”。阴影单元未被 A/D 转换使用。
注 1 : 保留位,不要使用。
位置位 (启动转换)之前,
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — —
—A D I F — — —C C P 1 I FTMR2IF TMR1IF -0-- -000 -0-- -000
— — —
—A D I E — — — CCP1IE TMR2IE TMR1IE -0-- -000 -0-- 0000
— — — — — PCFG2 PCFG1 PCFG0 ---- -000 ---- -000
(1)
RA4 RA3 RA2 RA1 RA0 --xx 0000 --uu uuuu
T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u
(1)
(1)
PORTA 数据方向寄存器 --11 1111 --11 1111
—
ADON 0000 0000 0000 0000
POR , BOR
时的值
其它复位
时的值
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 53 页
PIC16F716
注:
DS41206A_CN 第 54 页 初稿 2004 Microchip Technology Inc.
PIC16F716
9.0 CPU 的特色
PIC16F716 有许多特色,有助于提高系统可靠性,减少
外部元器件从而降低成本,降低功耗以及代码保护等,
这些特色包括:
• 多种振荡器模式选择
• 多种复位:
- 上电复位 ( POR)
- 上电延时定时器 ( PWRT)
- 振荡器起振定时器 ( OST)
- 欠压复位 ( BOR)
• 中断
• 看门狗 ( WDT)
• 休眠
• 代码保护
•ID存储单元
• 在线串行编程 ( In-Circuit Serial
Programming
PIC16F716 器件有一个看门狗,只能通过配置位将其
关闭。看门狗通过其自身的 RC 振荡器工作,提高了可
靠性。另外还有两个定时器用来提供必要的上电延时。
一个是振荡器起振定时器 (OST ), 它可以保证晶体振
荡器稳定之前器件保持复位状态;另一个是上电延时定
时器 (PWRT ), 它仅在上电时提供固定的延时,以保
证电源电压稳定之前器件为复位状态。有这两个片内的
定时器,大多数应用中无需外加复位电路。
休眠模式是一种功耗非常低的工作模式。用户可以通过
外部复位、看门狗超时溢出或中断将器件从休眠状态唤
醒。可以选择不同的振荡模式来适应不同的应用需要,
例如可以选择低成本的 RC 振荡器,也可以选择低功耗
的 LP 晶体振荡器等。这些都可以通过配置位来选择。
关于 CPU 特色的其它信息,请参考 《PICmicro
单片机系列参考手册》(DS33023A_CN )。
TM
, ICSP™)
®
中档
9.1 配置位
可对配置位编程(读为“0 ”),或不编程(读为 “1 ”)
来选择不同的器件配置。这些位映射到程序存储单元
2007h 。
用户可能会注意到地址 2007h 超出了用户程序存储空
间。实际上,它属于特殊配置存储空间(2000h-
3FFFh ),仅在对器件编程时才能访问。
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 55 页
PIC16F716
寄存器 9-1:配 置 字
CP — — — — — BORV BOREN — —P W R T EWDTE FOSC1 FOSC0
bit 13 bit 0
bit 13 CP
bit 12-8 未使用:读为 “1”
bit 7 BORV:欠压复位电压选择位
bit 6 BOREN:欠压复位使能位
bit 5-4 未使用:读为 “1”
bit 3 PWRTE
bit 2 WDTE:看门狗使能位
bit 1-0 FOSC1:FOSC0:振荡器模式选择位
注 1 : 使能欠压复位并不自动使能上电延时定时器 (PWRTE
图注:
R = 可读位 W = 可写位 U = 未使用,读为 “0”
- n = 上电复位时的值 “1” = 置位 “0” = 清零 x = 未知
:闪存程序存储器代码保护位
1 = 关闭代码保护功能
0 = 保护所有程序存储器代码
1 = VBOR 设置为 4.0V
0 = VBOR 设置为 2.5V
1 = 使能欠压复位
0 = 禁止欠压复位
:上电延时定时器使能位
1 = 使能上电延时定时器
0 = 禁止上电延时定时器
1 = 使能看门狗
0 = 禁止看门狗
11 = RC 振荡器
10 = HS 振荡器
01 = XT 振荡器
00 = LP 振荡器
(1)
(1)
)。
DS41206A_CN 第 56 页 初稿 2004 Microchip Technology Inc.
PIC16F716
9.2 振荡器配置
9.2.1 振荡器类型
PIC16F716 可以在 4 种不同的振荡模式下工作。用户可
以通过对配置位(FOSC1 和 FOSC0 )编程,选择其中
一种工作模式:
•LP- 低功耗晶体振荡器
•XT- 晶体 / 谐振器
•HS- 高速晶体 / 谐振器
•RC- 阻容振荡器
9.2.2 晶体振荡器 / 陶瓷谐振器
在 XT 、 LP 或 HS 模式中,都是将晶体或陶瓷谐振器连
接到 OSC1/CLKIN 和 OSC2/CLKOUT 引脚来建立振荡
(图 9-1 )。 PIC16F716 的振荡器设计要求使用平行切
割的晶体。使用垂直切割的晶体其频率不符合晶体厂商
技术规范。在 XT 、 LP 和 HS 模式下,器件也可以使用
加在 OSC1/CLKIN 引脚上的外部时钟源 (图 9-2 )。
图 9-1 : 使用晶体 / 陶瓷谐振器 (HS 、
XT 或 LP 振荡器配置)
(1)
C1
(1)
C2
注 1: C1 和 C2 的推荐值见 表 9-1 和表 9-2 。
2: 可能需要串连电阻 (RS )。
3: RF 随晶体选择不同而有所不同。
XTAL
(2)
RS
OSC1
OSC2
(3)
RF
休眠
PIC16F716
至
片内
逻辑
表 9-1 : 陶瓷谐振器
测试范围
模式 频率 OSC1 (C1 )
XT
HS
455 kHz
2.0 MHz
4.0 MHz
8.0 MHz
16.0 MHz
68-100 pF
15-68 pF
10-68 pF
15-68 pF
10-22 pF
OSC2
( C2)
68-100 pF
15-68 pF
10-68 pF
15-68 pF
10-22 pF
注 1 :这些值仅供设计参考。参见本页底部的注。
表 9-2 : 石英晶体振荡器电容选择
振荡器类型 频率 电容范围 C1 电容范围 C2
LP 32 kHz 15-33 pF 15-33 pF
200 kHz 5-10 pF 5-10 pF
XT 200 kHz 47-68 pF 47-68 pF
1 MHz 15-33 pF 15-33 pF
4 MHz 15-33 pF 15-33 pF
HS 4 MHz 15-33 pF 15-33 pF
8 MHz 15-33 pF 15-33 pF
20 MHz 15-33 pF 15-33 pF
注 1 : 这些值仅供设计参考。参见本页底部的注。
注 1 : 采用较大的电容值有利于提高振荡器的稳
定性,但同时会延长起振时间。
2: 由于每种谐振器 / 晶体都有其自身的特
性,最好要求厂商提供恰当的外部元件
值。
3: 为了避免晶体过激励,可能需要接入电阻
。
Rs
4: 使用外部时钟作为 OSC1 输入时,必须将
OSC2 引脚悬空确保其负载最低。
图 9-2: 使用外部时钟输入 ( HS、 XT 或
LP 振荡器配置)
外部时钟
开路
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 57 页
OSC1
PIC16F716
OSC2
PIC16F716
9.2.3 RC 振荡器
对于时序要求不是很高的应用, RC 振荡器模式是低成
本的选择。 RC 振荡器的频率是由电源电压、电阻
EXT )和电容 (CEXT )值和工作温度以及制造中正
(R
常的工艺参数的变化决定的。另外封装类型不同带来的
引线电容值差异也会影响振荡频率,特别是电容 CEXT 较
小时,这种影响更明显。用户还需要考虑所使用外部 R 、
C 元件容差的影响。 图 9-3 给出了PIC16F716 与 R/C 组
合的连接。
图 9-3 : RC 振荡器模式
VDD
REXT
CEXT
VSS
推荐值:
3kΩ ≤ R
10 kΩ ≤ R
EXT > 20 pF
C
OSC1
OSC2/CLKOUT
OSC/4
F
EXT ≤ 100 kΩ ( V DD ≥ 3.0 V)
EXT ≤ 100 kΩ ( V DD ≥ 3.0 V)
内部
时钟
PIC16F716
9.3 复位
PIC16F716 有以下几种不同的复位:
• 上电复位 ( POR)
• 正常工作期间 M
• 休眠状态下 M
• 正常工作状态下看门狗复位
• 休眠状态下看门狗唤醒
• 欠压复位 ( BOR)
有些寄存器的值不受任何一种复位的影响,当上电复位
后它们的值是不确定的,在其它复位后其值保持不变。
而其它大多数寄存器在上电复位 (POR )、正常工作状
CLR 复位、看门狗复位、休眠状态下 MCLR 复
态下 M
位和欠压复位(BOR )后都会被置为“复位状态”。但
是看门狗唤醒不会影响这些寄存器的值,因为这被当作
恢复正常工作。表 9-4 为 TO
不同值,在软件中可以利用这些位来确定复位的类型。
表 9-6 为各个寄存器的复位状态。
CLR 复位
CLR 复位
和 PD 位在不同复位下的
图 9-5 是片内复位电路的简化原理图。
PICmicro® 单片机在MCLR 复位路径上加了一个 MCLR
噪声滤波器,它可以检测和滤除小的尖脉冲信号。
注意, WDT 复位并不把 MCLR
引脚拉低。
9.4 上电复位 (POR )
当器件检测到 VDD 的上升时,片内即产生上电复位脉
冲。为了利用 POR 特性,可以直接 (也可以通过一个
电阻)将 MCLR 引脚与 VDD 相连。这样可以避免使用
通常建立上电复位所需的外部 RC 元件。但 V
上升时间必须满足要求 (参数 D004 )。对于较长的上
升时间详见图 9-4 。
当器件开始正常工作后 (退出复位状态),器件的工作
参数 (电压、频率和温度等)必须满足要求,确保正常
工作。如果这些条件不满足,器件将保持复位状态,直
到工作条件满足为止。欠压复位可用于确保满足启动条
件。
图 9-4 : 外部上电复位电路 (用于 VDD
上电较慢的场合)
DD
V
VDD
R
R1
MCLR
C
注 1 : 只有当 VDD 电压上升过慢时才需要外部上电复
位电路。二极管 D 用于关闭 V
放电容上的电荷。
2 : 推荐 R < 40 k Ω ,以确保 R 上的压降不违反器
件的电气特性。
3: R1 取值 100 Ω到 1k Ω,用于限制当 MCLR/
VPP 引脚由于静电放电 ( ESD)或过度电性应
力(
EOS)导致击穿时,从外部电容 C 流入
MCLR
的电流。
PIC16F716
DD 的最大
DD 电源时快速释
DS41206A_CN 第 58 页 初稿 2004 Microchip Technology Inc.
PIC16F716
9.5 上电延时定时器 ( PWRT)
上电延时定时器仅在上电时检测到上电复位,才提供固
定的延时。上电延时定时器使用片内 RC 振荡器工作。
只要 PWRT 有效,器件就保持为复位状态。 PWRT 的
延时可以使电源电压 V
电延时定时器使能配置位 PWRTE 用于使能 / 禁止
PWRT 。
由于 VDD 、温度和生产工艺不同,不同器件上电延时的
时间有所不同。请参见 AC 参数。
DD 上升到一个可接受的电平。上
9.6 振荡器起振定时器 (OST )
在 PWRT 延时之后,振荡器起振定时器 (OST )提供
1024 个振荡周期 (从 OSC1 引脚输入)的延时。这是
为了保证晶体或陶瓷谐振器有足够的时间起振和建立稳
定的振荡。请参见 AC 参数
只有在 XT 、 LP 和 HS 振荡模式下,并且只有上电复位
或从休眠状态唤醒才能启动 OST 定时器工作。
9.7 可编程欠压复位 (PBOR )
PIC16F716 片内集成了欠压复位电路。配置位 BOREN
可禁止 (如果将其设定为零)或使能 (如果将其置位)
欠压复位电路。
BORV 配置位用于选择可编程的欠压复位阈值电压
BOR)。如果 BORV 为1,VBOR 为 4.0V ;如果 BORV
(V
为 0 ,则 VBOR 为 2.5V 。
DD 低于 V BOR 的时间超过参数 T BOR (见表 12-
如果 V
4),则发生欠压复位。如果 V
TBOR ,则不保证发生欠压复位。
一旦发生任何一种复位(上电复位、欠压复位或看门狗
复位等),在 V
保持复位状态。只有当配置寄存器中的上电延时定时器
使能位被置为 0 (PWRTE
启动延时,使器件继续保持复位 72 ms 。
如果在上电延时定时器使能,并在其运行期间 V
V BOR 以下,则器件将回到欠压复位状态,上电延时定
时器将被重新初始化。一旦 VDD 上升到 VBOR 以上,上
电延时定时器将执行 72 ms 的复位。详见图 9-6 。
如果期望的欠压复位电平不是 4.0V 或 2.5V ,则需要外
部欠压复位电路。 图 9-8, 图 9-9 和图 9-10 给出了外部
欠压保护电路的例子。
DD 上升到 V BOR 以上之前,器件将一直
DD 低于 V BOR 的时间小于
= 0)时,上电延时定时器才
DD 降到
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 59 页
PIC16F716
图 9-5 : 片内复位电路的简化原理图
外部复位
MCLR
Sleep
检测
欠压
复位
WDT
超时复位
上电复位
BOREN
OST
10 位计数器
PWRT
10 位计数器
VDD
OSC1
WDT
模块
V
DD 上升
OST/PWRT
(1)
片内
RC 振荡器
S
器件复位
R
Q
注 1 : 这是一个独立于 CLKIN 引脚上 RC 振荡器的振荡器。
图 9-6 : 欠压复位情况 (PWRTE
VDD
内部复位
VDD
内部复位
VDD
= 0 )
使能 OST
72 ms
<72 ms
72 ms
PWRTE
延迟时间详见表 9-3。
V
BOR
VBOR
V
BOR
内部复位
DS41206A_CN 第 60 页 初稿 2004 Microchip Technology Inc.
72 ms
PIC16F716
图 9-7: 外部欠压保护电路 1
VDD
33k
10k
注 1 : 当 VDD 低于 (Vz + 0.7V )时该电路将产生复
位,其中 Vz 为稳压二极管电压。
2 : 使用该电路时,应关闭片内的欠压复位电路。
Q1
40k
V
DD
MCLR
PIC16F716
图 9-8: 外部欠压保护电路 2
VDD
R1
Q1
R2
40k
V
DD
MCLR
PIC16F716
图 9-9: 外部欠压保护电路 3
VDD
MCP809
Vss
RST
注 1 : 该欠压保护电路使用了 Microchip 的 MCP809
单片机监控器。 MCP8XX 和 MCP1XX 系列监
控器提供推拉式和集电极开路输出,具有高电
平有效和低电平有效复位引脚。可选择 7 种不
同的跳变点值以适应 5V 和 3V 系统。
旁路电容
VDD
DD
V
MCLR
PIC16F716
注 1 : 尽管该电路不够精确,但成本很低。当 VDD 低
于如下值时晶体管 Q1 将截止:
R1
V
DD x
R1 + R2
2: 使用该电路时应关闭片内的欠压复位电路。
3: 电阻值应根据晶体管特性调整。
= 0.7 V
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 61 页
PIC16F716
9.8 延时时序
上电时,延时时序如下:在 POR 延时结束后,首先启
动 PWRT 延时。然后振荡器起振定时器 OST 开始工作。
总延时时间取决于振荡器设置和 PWRT 的状态。例如,
在 RC 模式下,如果 PWRT 被关闭,将没有延时。图 9-
10 ,图 9-11 和图 9-12 说明了上电时的延时时序。
由于延时的发生起源于 POR 脉冲,如果在足够长的时
间内 MCLR
延时会立即开始执行(图 9-12 )。这对于测试或同步并
行工作的多个 PIC16F716 器件非常有用。
表 9-5 给出了某些特殊功能寄存器的复位状态, 表 9-6
给出了所有寄存器的复位状态。
表 9-3 : 不同情况下的延时
XT、 HS 和 LP
RC
表 9-4: 状态位及其含义
POR BOR TO PD
0x11上电复位 (BOREN = 0 )
0111上电复位 (BOREN = 1 )
0x0x无效,上电复位时 TO
0xx0无效,上电复位时 PD
1011
1101WDT 复位
1100WDT 唤醒
11uu正常运行时 MCLR
1110休眠期间 MCLR
保持为低,延时将中止。将 MCLR 拉高则
上电复位或欠压复位
振荡器配置
PWRTE = 0 PWRTE = 1
72 ms + 1024 TOSC 1024 TOSC 1024 TOSC
72 ms — —
欠压复位
复位
复位或中断将器件从休眠状态唤醒
被置位
被置位
9.9 电源控制 / 状态寄存器 (PCON )
电源控制 / 状态寄存器 PCON 有两位。
bit 0 是欠压复位状态位 BOR
置位,则上电复位时 B
该位被清零。BOR 必须由用户置位,并在后续发生复位
时检测该位是否被清零,如果被清零则表示发生了另一
次欠压复位。
如果 BOREN 配置位被清零,则上电复位时 B
态不确定。
bit 1 是 POR
清零,在其它情况下不受影响。上电复位后用户必须把
该位置位。
(上电复位状态位)。它在上电复位时被
。如果 BOREN 配置位被
OR 为“1”,当欠压条件发生时
OR 的状
从休眠唤醒
DS41206A_CN 第 62 页 初稿 2004 Microchip Technology Inc.
PIC16F716
表 9-5 : 特殊寄存器的复位状态
条 件 程序计数器
上电复位 (BOREN = 0 ) 000h 0001 1xxx ---- --0x
上电复位 (BOREN = 1 ) 000h 0001 1xxx ---- --01
正常工作时 MCLR
休眠时 MCLR
WDT 复位 000h 0000 1uuu ---- --uu
WDT 唤醒 PC + 1 uuu0 0uuu ---- --uu
欠压复位 000h 0001 1uuu ---- --u0
中断将器件从休眠状态唤醒 PC + 1
图注: u = 不变, x = 未知, - = 未使用,读为 “0”。
注 1 : 当休眠被中断唤醒且 GIE 被置位时, PC 指针指向中断向量 0004h 。
复位 000h 000u uuuu ---- --uu
复位 000h 0001 0uuu ---- --uu
(1)
Status 寄存器
uuu1 0uuu ---- --uu
PCON 寄存器
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 63 页
PIC16F716
表 9-6 : PIC16F716 所有寄存器的复位状态
寄存器 上电复位,欠压复位 MCLR 复位, WDT 复位 通过 WDT 或中断唤醒
W
INDF
TMR0
PCL
STATUS
FSR
(4), (5), (6)
PORTA
(4), (5)
PORTB
PCLATH
INTCON
PIR1
TMR1L
TMR1H
T1CON
TMR2
T2CON
CCPR1L
CCPR1H
CCP1CON
PWM1CON
ECCPAS
ADRES
ADCON0
OPTION_REG
TRISA
TRISB
PIE1
PCON
PR2
ADCON1
图注: u = 不变, x = 未知, - = 未使用,读为 “0 ”, q = 其值取决于条件。
注 1 : INTCON 中的一位或多位和 / 或 PIR1 会受到影响 (引起唤醒)。
2: 当休眠被中断唤醒且 GIE 置位时, PC 指针指向中断向量 0004h 。
3: 具体条件下的复位值见表 9-5 。
4: 对于器件的任何复位,这些引脚都配置为输入。
5: 该值为端口输出锁存器的值。
6: 输出锁存的值未知或不变。模拟输入端口缺省为模拟输入状态,读为 “0 ”。
xxxx xxxx uuuu uuuu uuuu uuuu
N/A N/A N/A
xxxx xxxx uuuu uuuu uuuu uuuu
0000h 0000h PC + 1
0001 1xxx 000q quuu
(3)
xxxx xxxx uuuu uuuu uuuu uuuu
--xx 0000 --xx 0000 --uu uuuu
xxxx xxxx uuuu uuuu uuuu uuuu
---0 0000 ---0 0000 ---u uuuu
0000 -00x 0000 -00u uuuu -uuu
-0-- -000 -0-- -000 -u-- -uuu
xxxx xxxx uuuu uuuu uuuu uuuu
xxxx xxxx uuuu uuuu uuuu uuuu
--00 0000 --uu uuuu --uu uuuu
0000 0000 0000 0000 uuuu uuuu
-000 0000 -000 0000 -uuu uuuu
xxxx xxxx uuuu uuuu uuuu uuuu
xxxx xxxx uuuu uuuu uuuu uuuu
0000 0000 0000 0000 uuuu uuuu
0000 0000 0000 0000 uuuu uuuu
00-0 0000 00-0 0000 u-uu uuuu
xxxx xxxx uuuu uuuu uuuu uuuu
0000 0000 0000 0000 uuuu uuuu
1111 1111 1111 1111 uuuu uuuu
--11 1111 --11 1111 --uu uuuu
1111 1111 1111 1111 uuuu uuuu
-0-- -000 -0-- -000 -u-- -uuu
---- --qq ---- --uu ---- --uu
1111 1111 1111 1111 uuuu uuuu
---- -000 ---- -000 ---- -uuu
uuuq quuu
(2)
(3)
(1)
(1)
DS41206A_CN 第 64 页 初稿 2004 Microchip Technology Inc.
图 9-10 : 上电延时时序 (MCLR 连接到 VDD )
VDD
MCLR
内部上电复位
TPWRT
PIC16F716
PWRT 延时
OST 延时
内部复位
图 9-11 : 上电延时时序 (MCLR
VDD
MCLR
内部上电复位
PWRT 延时
OST 延时
内部复位
TOST
不接到 VDD ):情况 1
TPWRT
TOST
图 9-12 : 上电延时时序 (MCLR
VDD
MCLR
内部上电复位
PWRT 延时
OST 延时
内部复位
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 65 页
不接到 VDD ):情况 2
PWRT
T
TOST
PIC16F716
9.10 中断
PIC16F716 有多达 7 个中断源。中断控制寄存器
(INTCON )用标志位记录各种中断请求,同时也包括
各个中断源的中断使能位和全局中断使能位。
注: 各个中断标志位的置位与其相应的屏蔽位
和 GIE 位无关。
全局中断使能位 GIE (INTCON<7> )置位将开放所有
未被屏蔽的中断,清零将禁止所有中断。如果 GIE 位使
能,中断标志位和屏蔽位也置位,将立即响应中断。各
个中断可以通过设置各寄存器中相应的中断使能位来禁
止。不管 GIE 位状态如何,中断标志位都可以被置位。
复位及响应中断后, GIE 被清零。
中断返回指令 RETFIE 退出中断服务程序,并置位 GIE
位重新使能中断。
INTCON 寄存器包含 RB0/INT 引脚中断、RB 口电平变
化中断和 TMR0 溢出中断标志位等。
图 9-13 : 中断逻辑
ADIF
ADIE
外设中断标志位包含在特殊功能寄存器 PIR1 和 PIR2
中,相应的中断使能位是在特殊功能寄存器 PIE1 和
PIE2 中,外设中断使能位包含在特殊功能寄存器
INTCON 中。
在响应中断时,GIE 位被清零以禁止其它中断,返回地
址被压栈保护,PC 装入 0004h。进入中断服务程序后,
可以通过对中断标志位进行查询来判断中断源。中断标
志位必须在重新使能中断之前用软件清零,以避免重复
响应同一个中断。
对于外部中断事件,例如 INT 引脚中断或 PORTB 电平
变化中断等,其中断等待时间需要 3 到 4 个指令周期,
准确的等待时间取决于中断事件何时发生。对于 1 个或
2 个周期的指令来说,其等待时间是一样的。不管其相
应的中断屏蔽位和全局中断使能位 GIE 的状态如何,中
断标志都会被置 1 。
T0IF
T0IE
INTF
INTE
RBIF
RBIE
唤醒(如果处于休眠状态)
中断信号送至 CPU
TMR1IF
TMR1IE
TMR2IF
TMR2IE
CCP1IF
CCP1IE
PEIE
GIE
DS41206A_CN 第 66 页 初稿 2004 Microchip Technology Inc.
PIC16F716
9.10.1 INT 中断
RB0/INT 引脚上的外部中断是边沿触发的,当 INTEDG
( OPTION_REG<6>)置 1 时选用上升沿触发,当
INTEDG 位被清零时选用下降沿触发。当 RB0/INT 引脚
上出现有效边沿时, INTF 标志位( INTCON<1>)被 置
1。这个中断可以通过对中断使能位 INTE
(INTCON<4> )清零来禁止。在重新开放这个中断之前
必须在中断服务程序中用软件对 INTF 标志位清零。如
果 INTE 标志位在进入休眠状态之前已被置 1 ,则 INT
中断可以将处理器从休眠状态唤醒。全局中断允许位
GIE 位的状态决定处理器是否在唤醒后跳转到中断向
量。有关休眠模式的详细论述,请参考第 9.13 节“低
功耗休眠模式”。
9.10.2 TMR0 中断
当 TMR0 寄存器溢出 (FFh →00h )时,标志位 T0IF
(INTCON<2> )将被置 1 。这个中断可以通过对 T0IE
位(INTCON<5>) 置位 / 清零来使能或禁止。(第 4.0
节“Timer0 模块”)。
9.10.3 PORTB 电平变化中断
PORTB<7:4> 的输入电平一旦有变化就将 RBIF
( INTCON<0>)位置 1。这个中断可以通过对使能位
RBIE(INTCON<4>)置 位 / 清零来使能或禁止。(第 3.2
节“ PORTB 和 TRISB 寄存器”)。
9.11 中断现场保护
进入中断时,只有 PC 的返回值被保存在堆栈中。通常
用户需要在进入中断时保存一些关键寄存器 (比如 W
寄存器和 Status 寄存器)。这些都需要用软件来实现。
例 9-1 保存和恢复了 W 、Status 、 PCLATH 和 FSR 寄
存器。现场保护寄存器 W_TEMP 、 STATUS_TEMP、
PCLATH_TEMP 和 FSR_TEMP 必须定义到存储区
070h-7Fh地址和存储区 1F0h-FFh地址的公共 RAM 区。
这个例子完成以下功能:
a) 保存 W 寄存器。
b) 在存储区 0 中保存 Status 寄存器。
c) 保存 PCLATH 寄存器。
d) 保存 FSR 寄存器。
e) 执行中断服务程序代码 (由用户编写)。
f) 按照与保存寄存器时相反的顺序,恢复所有保存
的寄存器。
例 9-1 :在RAM 中保存 STATUS、 W 和 PCLATH 寄存器
MOVWF W_TEMP ;Copy W to TEMP register, could be bank one or zero
SWAPF STATUS,W ;Swap status to be saved into W
MOVWF STATUS_TEMP ;Save status to bank zero STATUS_TEMP register
MOVF PCLATH, W ;Only required if using pages 1, 2 and/or 3
MOVWF PCLATH_TEMP ;Save PCLATH into W
CLRF PCLATH ;Page zero, regardless of current page
BCF STATUS, IRP ;Return to Bank 0
MOVF FSR, W ;Copy FSR to W
MOVWF FSR_TEMP ;Copy FSR from W to FSR_TEMP
:
:(ISR)
:
MOVF FSR_TEMP,W ;Restore FSR
MOVWF FSR ;Move W into FSR
MOVF PCLATH_TEMP, W ;Restore PCLATH
MOVWF PCLATH ;Move W into PCLATH
SWAPF STATUS_TEMP,W ;Swap STATUS_TEMP register into W
MOVWF STATUS ;Move W into STATUS register
SWAPF W_TEMP,F ;Swap W_TEMP
SWAPF W_TEMP,W ;Swap W_TEMP into W
RETFIE ;Return from interrupt and enable GIE
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 67 页
PIC16F716
9.12 看门狗 ( WDT)
看门狗的计时脉冲由片内的 RC 振荡器产生,无需任何
外部元器件。该 RC 振荡器与接在 OSC1/CLKIN 引脚上
的 RC 振荡器是独立的。这样即使器件 OSC1/CLKIN 引
脚和 OSC2/CLKOUT 引脚上的时钟停止,例如执行了
SLEEP 指令, WDT 仍将继续运行。
正常工作期间,每次 WDT 超时都将产生一次器件复位
(看门狗复位)。如果器件处于休眠状态,WDT 超时溢
出将唤醒器件继续进行正常操作 (看门狗唤醒)。一旦
看门狗超时溢出, Status 寄存器的 TO
图 9-14 : 看门狗定时器原理图
来自 TMR0 时钟源 (图 4-2 )
WDT 定时器
WDT
使能位
位将被清零。
0
M
1
U
X
PSA
将配置位 WDTE 清零将永久禁止 WDT (第 9.1 节“配
置位”)。
WDT 超时溢出周期值可以在电气规范章节的 T
WDT 下查
到 (参数 #31 )。 WDT 预分频比 (实际上是一个后分
频器,只是与 Timer0 的预分频器共用)的值可由
OPTION_REG 寄存器来分配。
注: 如果把预分频器分频给 WDT ,CLRWDT 和
SLEEP 指令将对 WDT 和后分频器清零,从
而防止计时溢出引起器件复位。
注: 当预分频器分配给 WDT 且执行 CLRWDT 指
令时,其计数将被清零,但预分频器的分
配不变。
后分频器
8
8 选 1 MUX
PS2:PS0
到 TMR0 (图 4-2)
0
注: PSA 和 PS2:PS0 是 OPTION_REG 寄存器中的位。
MUX
WDT
超时溢出
1
PSA
图 9-15 : 看门狗相关寄存器
地址 名称 Bit 13:8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
2007h Config. bits
81h OPTION_REG
图注: 阴影部分看门狗未使用。
注 1 : 这些位的具体细节见寄存器 9-1 。
(1) BORV
N/A RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
(1)
BOREN
(1)
— —
PWRTE
(1)
WDTE FOSC1 FOSC0
DS41206A_CN 第 68 页 初稿 2004 Microchip Technology Inc.
PIC16F716
9.13 低功耗休眠模式
执行一条 SLEEP 指令, PIC 单片机即进入休眠模式。
如果看门狗使能,执行 SLEEP 指令后,看门狗定时器将
被清零,但继续运行,PD
位(STATUS<4>)被置 1 ,主振荡器停振。 I/O 端
TO
口保持执行 SLEEP 指令前的状态 (高、低电平或高阻
态)。
在休眠模式下,为了将功耗降至到最低,所有 I/O 引脚
电平要为 V
出电流,关闭 A/D 并禁止外部时钟。为了避免由于悬空
输入端引起的开关电流,将所有高阻输入的 I/O 引脚外
接上拉或下拉电阻。为了使功耗降至最低,T0CKI 输入
端也应为 V
虑到。
MCLR
DD 或 V SS,确保没有外部电路从 I/O 引脚引
DD 或 V SS。PORTB 片内上拉的影响也要考
引脚必须处于逻辑高电平 (参数 D042)。
9.13.1 从休眠状态唤醒
以下事件之一可以将器件从休眠状态唤醒:
1. MCLR
2. 看门狗唤醒 (如果使能 WDT)。
3. INT 引脚中断、RB 口电平变化中断或某些外设中
外部 MCLR
是程序继续执行,引起“唤醒”。Status 寄存器中的 TO
和PD 位可以用来确定器件复位的原因。当启动休眠时,
上电复位时被置位的 PD 位将被清零。如果 WDT 超时
溢出 (引起唤醒), TO 位被清零。
引脚上的外部复位输入。
断。
复位将引起器件复位。而其它事件都被认为
位(STATUS<3>)被清零,
如下外设中断可将器件从休眠状态唤醒:
1. TMR1 中断。 Timer1 必须工作在异步计数器方
式。
2. ECCP 捕捉模式中断。
3. ADC 工作在 ADRC 方式。
其它外设不能产生中断将器件从休眠唤醒,因为它们在
休眠模式下无片内时钟支持。
当执行 SLEEP 指令时,下一条指令 (PC + 1 )被预取
出来。为了使器件能通过某一中断事件唤醒,相应的中
断允许位必须被置位(使能)。唤醒与 GIE 位的状态无
关。如果 GIE 位被清零(禁止),器件将继续执行 SLEEP
指令的下一条指令,如果 GIE 位被置位(使能),器件
将在执行 SLEEP 指令的下一条指令之后,跳转到中断地
址(0004h )。如果用户不希望执行 SLEEP 指令的下一
条指令,那么在 SLEEP 指令后要紧跟一条 NOP 指令。
9.13.2 中断唤醒
当全局中断被禁止 (GIE 被清零),任一中断源的中断
允许位和它的中断标志位都被置位时,会发生下列事件
之一:
• 如果在 SLEEP 指令执行之前发生中断, SLEEP 指
令将作为 NOP 指令执行。因此, WDT 和 WDT 后
分频器不会被清零, TO 位不会被置位, PD 位不
会被清零。
• 如果中断发生在SLEEP 指令执行期间或执行后,器
件将立即从休眠状态唤醒。唤醒之前 SLEEP 指令
将被完全执行。因此 WDT 和 WDT 后分频器将被
清零, TO
即使执行 SLEEP 指令前检查了标志位,标志位也可能在
SLEEP 指令完成之前被置位。为了确定是否执行了一条
SLEEP 指令,要检测 PD
指令作为一条 NOP 指令执行。
为了确保 WDT 被清零,在 SLEEP 指令执行前应先执行
一条 CLRWDT 指令。
被置位, PD 被清零。
位。如果 PD 位被置位,SLEEP
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 69 页
PIC16F716
图 9-16: 通过中断从休眠状态唤醒
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
OSC1
CLKOUT(4)
INT 引脚
INTF 标志位
(INTCON<1>)
GIE 位
(INTCON<7>)
指令流程
PC
取指令
执行指令
PC PC+1 PC+2
Inst(PC) = Sleep
Inst(PC - 1)
Inst(PC + 1)
Sleep
处理器处于
休眠状态
OST(2)
T
PC+2
Inst(PC + 2)
Inst(PC + 1)
中断延时
(注 3 )
PC + 2 0004h 0005h
Inst(0004h)
空周期
空周期
Inst(0005h)
Inst(0004h)
注 1 : 假设工作在 XT 、 HS 或 LP 振荡器模式下。
OST = 1024TOSC (图中未按比例画)。若为 RC 振荡器模式,该延时将不存在。
2: T
3: 假设 GIE = “1 ”,在这种情况下,处理器被唤醒后将跳转至中断服务程序。如果 GIE = “0 ”,将继续执行进入休眠状态之前的指令
行。
4: 在这些振荡器模式下 CLKOUT 信号无效,在这里仅作为时间基准。
9.14 程序校验 / 代码保护
如果没有对代码保护位进行编程,那么片内程序存储器
的内容可以读出进行校验。
9.15 ID 存储单元
四个存储单元 (2000h - 2003h )被指定为 ID 存储单
元,用户可在其中存储校验和和或其它代码编号。正常
执行期间,这些单元是无法访问的,但在编程 / 校验期
间是可读可写的。建议仅使用 ID 存储单元的低 4 位。
9.16 在线串行编程
可以在最终的应用电路中对 PIC16F716 单片机在线串
行编程。这只需用时钟和数据两根线,加上电源、地和
编程电压三根线就可以方便地实现。这允许用户使用未
编程器件来生产电路板,在产品交付前才对单片机进行
编程,这允许将最新的软件或用户定制软件烧写到单片
机。
关于在线串行编程的完整细节,请参阅 In-Circuit Serial
Programming™ (ICSP™) Specification (DS40245)。
DS41206A_CN 第 70 页 初稿 2004 Microchip Technology Inc.
PIC16F716
10.0 指令集概述
每一条 PIC16F716 指令为 14 位字,由指定指令类型的
操作码和指定指令操作的一个或多个操作数组成。
表 10-2 所示为 PIC16F716 单片机的指令集概述,其中
列出了针对字节、针对位以及立即数和控制操作。
表 10-1 所示为操作码字段的说明。
对于针对字节的指 令,“f ”表示数据寄存器标志符,
“d ”表示目的寄存器标志符。数据寄存器标志符指定了
指令使用哪个寄存器。
目的寄存器标志符指定了操作结果的存放。如果 “d”
为 0 ,结果存入 W 寄存器;如果 “d ”为 1 ,结果存入
指令指定的数据寄存器中。
对于针对位的指令,“b”表示位域标志符,选择受到操
作影响的位的编号,而 “f”表示该位位于哪个数据寄
存器中。
对于立即数和控制操作,“k ”表示一个 8 位或 11 位的
立即数或常数。
表 10-1 : 操作码字段描述
域描 述
f 数据寄存器地址 ( 0x00 到 0x7F)
W
b8位数据寄存器内的位地址
k
x 无关位 ( = 0 或 1)
d 目的寄存器选择。 d = 0 :存入 W ;
label
TOS
PC
PCLATH
GIE
WDT 看门狗定时器 / 计数器
TO
PD
dest 目的寄存器,可以是 W 寄存器或者指定的数据寄存器单
[ ]
( )
→
< >
∈
italics 用户定义项 (字体为 courier )
工作寄存器 (累加器)
立即数、常数或标号
汇编器将按照 x = 0 生成代码,为了与所有 Microchip 软件
工具兼容,建议使用这种形式。
d = 1 :结果存入数据寄存器 f。
缺省为 d = 1
标号名称
栈顶
程序计数器
程序计数器高字节锁存器
全局中断使能位
超时位
掉电位
元。
可选项
内容
赋值给
寄存器位域
属于
指令集是高度正交的,可分为三大类:
• 针对字节的操作
• 针对位的操作
• 立即数和控制操作
所有指令都在一个指令周期内执行完,除非条件测试为
真或者指令的结果改变了程序计数器的值。在这两种情
况下,指令执行需要两个指令周期,在第二个周期内执
行 NOP 指令。 每个指令周期由 4 个振荡周期组成,因
此,对于频率为 4 MHz 的振荡器,通常的指令执行时间
为 1µ s 。如果条件测试为真或者指令的结果改变了程序
计数器的值,指令执行时间为 2 µ s 。
表 10-2 列出了 MPASM™ 汇编器可以识别的指令。
图 10-1 所示为指令的三种一般格式。
注 1 : 所有没有使用的操作码都被保留。使用任
一保留的操作码可能导致意外的操作。
2 : 为了与将来的 PICmicro 产品保持向上兼
容,不要使用
OPTION 和 TRIS 指令。
所有例子使用以下格式表示一个十六进制数:
0xhh
其中 h 代表一个十六进制数字。
图 10-1 : 指令的一般格式
针对字节的数据寄存器操作
13 8 7 6 0
操作码 d f(数据寄存器地址)
d = 0,结果入 W
d = 1,结果存入 f
f = 7 位数据寄存器地址
针对位的数据寄存器操作
13 10 9 7 0 6
操作码 b(位地址) f (数据寄存器地址)
b = 3 位地址
f = 7 位数据寄存器地址
立即数和控制操作
一般的指令
13 8 7 0
操作码 k (立即数)
k = 8 位立即数
仅对于 CALL 和 GOTO 指令
13 11 10 0
操作码 k (立即数)
k = 11 位立即数
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 71 页
PIC16F716
表 10-2 : PIC16F716 指令集
助记符,
操作数
针对字节的数据寄存器操作
ADDWF
ANDWF
CLRF
CLRW
COMF
DECF
DECFSZ
INCF
INCFSZ
IORWF
MOVF
MOVWF
NOP
RLF
RRF
SUBWF
SWAPF
XORWF
针对位的数据寄存器操作
BCF
BSF
BTFSC
BTFSS
立即数和控制操作
ADDLW
ANDLW
CALL
CLRWDT
GOTO
IORLW
MOVLW
RETFIE
RETLW
RETURN
SLEEP
SUBLW
XORLW
注 1 : 当 I/O 寄存器修改自身时 (例如 MOVF PORTB,1 ),使用的值将为其引脚上的值。例如,如果某个配置为输入的引脚的数据锁存
f, d
f, d
f
—
f, d
f, d
f, d
f, d
f, d
f, d
f, d
f
—
f, d
f, d
f, d
f, d
f, d
f, b
f, b
f, b
f, b
k
k
k
—
k
k
k
—
k
—
—
k
k
为“ 1”,并被一个外部器件驱动为低电平,那么被写回的数据将为 “0”。
2: 当预分频器分配给 TimerO 模块时,如果该指令对 TMR0 寄存器进行操作 (其中, d = 1 ),那么预分频器将被清零。
3: 如果程序计数器 (PC )被修改或者条件测试为真,指令的执行需要两个周期,第二个周期执行一条 NOP 指令。
W 与 f 相加
W 和 f 逻辑与
对 f 清零
对 W 清零
对 f 取反
f 递减 1
f 递减 1,为 0 跳过下一条指令
f 递增 1
f 递增 1,为 0 跳过下一条指令
W 与 f 逻辑或
传送至 f
将 W 内容送至 f
空操作
f 寄存器带进位位左移
f 寄存器带进位位右移
f 减 W
f 半字节交换
W 与 f 逻辑异或
清零 f 的位 b
置位 f 的位 b
判断 f 的位 b ,为 0 跳过下一条指令
判断 f 的位 b ,为 1 跳过下一条指令
立即数与 W 相加
立即数与 W 逻辑与
调用子程序
清零看门狗定时器
无条件转移
立即数与 W 逻辑或
立即数送至 W
中断返回
子程序返回,并将一立即数赋给 W
子程序返回
进入休眠模式
立即数减 W
立即数与 W 逻辑异或
描述 周期
1
1
1
1
1
1
(2)
1
1
(2)
1
1
1
1
1
1
1
1
1
1
1
1
(2)
1
(2)
1
1
1
2
1
2
1
1
2
2
2
1
1
1
14 位操作码
MSb LSb
00
0111
dfff
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
01
01
01
01
11
11
10
00
10
11
11
00
11
00
00
11
11
0101
0001
0001
1001
0011
1011
1010
1111
0100
1000
0000
0000
1101
1100
0010
1110
0110
00bb
01bb
10bb
11bb
111x
1001
0kkk
0000
1kkk
1000
00xx
0000
01xx
0000
0000
110x
1010
dfff
lfff
0xxx
dfff
dfff
dfff
dfff
dfff
dfff
dfff
lfff
0xx0
dfff
dfff
dfff
dfff
dfff
bfff
bfff
bfff
bfff
kkkk
kkkk
kkkk
0110
kkkk
kkkk
kkkk
0000
kkkk
0000
0110
kkkk
kkkk
ffff
ffff
ffff
xxxx
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
0000
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
kkkk
kkkk
kkkk
0100
kkkk
kkkk
kkkk
1001
kkkk
1000
0011
kkkk
kkkk
影响的
状态位
C,DC,Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C,DC,Z
Z
C,DC,Z
Z
TO,PD
Z
TO,PD
C,DC,Z
Z
1,2
1,2
1,2
1,2
1,2,3
1,2
1,2,3
1,2
1,2
1,2
1,2
1,2
1,2
1,2
1,2
1,2
注
2
3
3
DS41206A_CN 第 72 页 初稿 2004 Microchip Technology Inc.
10.1 指令描述
PIC16F716
ADDLW 立即数与 W 相加
标号
] ADDLW k
语法:
操作数:
操作:
影响的状态位: C , DC , Z
机器码:
说明: 将 W 寄存器的内容与 8 位立即
字数:
周期数:
例
ADDWF f 与 W 相加
语法:
操作数:
操作:
影响的状态位: C , DC , Z
机器码:
说明: 将 W 寄存器的内容与 “f ”寄存
字数:
周期数:
例
[
0 ≤ k ≤ 255
(W)+ k → (W)
11 111x kkkk kkkk
数“k”相加,结果存入 W 寄存
器。
1
1
ADDLW 0x15
执行前
W= 0x10
执行后
W= 0x25
标号
] ADDWF f,d
[
0 ≤ f ≤ 127
d ∈ [0,1]
(W)+(f) → (dest)
00 0111 dfff ffff
器内容相加。如果 “d ”为 0 ,
结果存入 W 寄存器;如果 “d ”
为 1 ,结果存入 “f ”寄存器。
1
1
ADDWF REG1, 0
执行前
W = 0x17
REG1 = 0xC2
执行后
W= 0 x D 9
REG1 = 0xC2
Z= 0
C= 0
DC = 0
ANDLW 立即数与 W 逻辑与
标号
] ANDLW k
语法:
操作数:
操作:
影响的状态位:
机器码:
说明: W 寄存器的内容与 8 位立即数
字数:
周期数:
例
ANDWF W 与 f 逻辑与
语法:
操作数:
操作: (W) 与 (f) → (dest )
影响的状态位:
机器码:
说明: 将 W 寄存器与 “f ”寄存器相
字数:
周期数:
示例
[
0 ≤ k ≤ 255
(W)与(k) →( W)
Z
11 1001 kkkk kkkk
“k ”相与,结果存入 W 寄存
器。
1
1
ANDLW 0x5F
执行前
W=0xA3
执行后
W = 0x03
标号
] ANDWF f,d
[
0 ≤ f ≤ 127
d ∈ [0,1]
Z
00 0101 dfff ffff
与。如果 “ d”为 0,结果存入
W 寄存器;如果 “ d”为 1,结
果存入 “ f”寄存器。
1
1
ANDWF REG1, 1
执行前
W= 0 x 1 7
REG1 = 0xC2
执行后
W= 0 x 1 7
REG1 = 0x02
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 73 页
PIC16F716
BCF 对 f 寄存器的指定位清零
标号
] BCF f,b
语法:
操作数:
[
0 ≤ f ≤ 127
0 ≤ b ≤ 7
操作:
0 →( f<b> )
影响的状态位: 无
机器码:
说明:
字数:
周期数:
示例
01 00bb bfff ffff
清零 “ f”寄存器中的位 “ b”。
1
1
BCF REG1, 7
执行前
REG1 = 0xC7
执行后
REG1 = 0x47
BSF 置位 f 寄存器中的指定位
标号
] BSF f,b
语法:
操作数:
[
0 ≤ f ≤ 127
0 ≤ b ≤ 7
操作:
1 →( f<b> )
影响的状态位: 无
机器码:
说明:
字数:
周期数:
示例
01 01bb bfff ffff
置位 “ f”寄存器的位 “ b”。
1
1
BSF REG1, 7
执行前
REG1 = 0x0A
执行后
REG1 = 0x8A
BTFSC
语法:
操作数:
判断 f 中的指定位,为 0 则跳过下
一条指令
标号
] BTFSC f,b
[
0 ≤ f ≤ 127
0 ≤ b ≤ 7
操作:
如果 (f<b> ) = 0 ,跳过下一条指
令
影响的状态位: 无
机器码:
01 10bb bfff ffff
说明: 如果 “f ”寄存器的位 “b ”为
“0 ”, 跳过下一条指令;
如果位 “b ”为 “1 ”, 则舍弃执
行当前指令时取出的下一条指令,
而执行一条 NOP 指令。这使该指
令成为一条双周期指令。
字数:
周期数:
示例
1
1(2)
HERE
FALSE
TRUE
BTFSC
GOTO
•
•
•
REG1
PROCESS_CODE
执行前
PC = 地址 HERE
执行后
如果 REG<1> = 0 ,
PC = 地址 TRUE
如果 REG<1>=1 ,
PC = 地址 FALSE
DS41206A_CN 第 74 页 初稿 2004 Microchip Technology Inc.
PIC16F716
BTFSS
语法:
操作数:
判断 f 中的指定位,为 1 跳过下一
条指令
[
0 ≤ f ≤ 127
0 ≤ b < 7
操作:
如果 (f<b> ) = 1 ,跳过下一条指
令
影响的状态位: 无
机器码:
说明:
01 11bb bfff ffff
如果 “f ”寄存器的位 “b ”为
“1 ”, 跳过下一条指令;
如果位 “b ”为 “0 ”, 则舍弃执
行当前指令时取出的下一条指令,
而执行一条 NOP 指令。这使该指
令成为一条双周期指令。
字数:
周期数:
示例
1
1(2)
HERE
FALSE
TRUE
执行前
执行后
如果 FLAG<1> = 1 ,
标号
] BTFSS f,b
BTFSS
GOTO
•
•
•
PC = 地址 HERE
如果 FLAG<1> = 0 ,
PC = 地址 FALSE
PC = 地址 TRUE
REG1
PROCESS_CODE
CALL
操作数:
调用子程序
0 ≤ k ≤ 2047
操作: (PC)+ 1→ TOS ,
k → PC<10:0>,
(PCLATH<4:3>) → PC<12:11>
影响的状态位: 无
操作数:
机器码:
0 ≤ k ≤ 2047
10 0kkk kkkk kkkk
说明: 调用子程序。首先,将返回地址
(PC + 1 )压入堆栈。 11 位立
即地址装入 PC 的 <10:0> 位,
PC 的高位从寄存器 PCLATH 装
入, CALL 是一条双周期指令。
字数:
周期数:
示例
1
2
HERE CALL THERE
执行前
PC = 地址 HERE
执行后
PC = 地址 THERE
TOS = 地址 HERE+1
CLRF 清零 f 寄存器
标号
] CLRF f
语法:
操作数:
操作:
[
0 ≤ f ≤ 127
00h →(f)
1 → Z
影响的状态位:
机器码:
Z
00 0001 1fff ffff
说明: 清零 “f ”寄存器的内容, Z 位
置位。
字数:
周期数:
示例
1
1
CLRF REG1
执行前
REG1 = 0x5A
执行后
REG1 = 0x00
Z= 1
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 75 页
PIC16F716
CLRW 清零 W 寄存器
标号
] CLRW
语法:
操作数: 无
操作:
影响的状态位:
机器码:
说明:
字数:
周期数:
示例
CLRWDT
语法:
操作数: 无
操作:
影响的状态位:
机器码:
说明:
字数:
周期数:
示例
[
00h →(W)
1 → Z
Z
00 0001 0000 0011
清零 W 寄存器的内容,零标志
位(Z)置位。
1
1
CLRW
执行前
W = 0x5A
执行后
W = 0x00
Z=1
清零看门狗定时器
[ 标号 ] CLRWDT
00h → WDT
0 → WDT 预分频器,
1 → TO
1 → PD
, PD
TO
00 0000 0110 0100
CLRWDT 指令复位看门狗定时
器。同时也复位 WDT 的预分频
器。状态位 TO
1
1
CLRWDT
执行前
WDT 计数器 =?
执行后
WDT 计数器 = 0x00
WDT 预分频器 =0
TO
PD =1
和 PD 置位。
=1
COMF f 取反
标号
] COMF f,d
语法:
操作数:
操作:
影响的状态位:
机器码:
说明: 对 “f ”寄存器的内容取反。如
字数:
周期数:
示例
DECF
语法:
操作数:
操作:
影响的状态位:
机器码:
说明: 将 “f ”寄存器的内容递减 1 。如
字数:
周期数:
示例
[
0 ≤ f ≤ 127
d ∈ [0,1]
) → (dest )
(f
Z
00 1001 dfff ffff
果“d”为 0,结果存入 W 寄存
器;如果 “d ”为 1 ,结果存回
“f ”寄存器。
1
1
COMF REG1, 0
执行前
REG1 = 0x13
执行后
REG1 = 0x13
W= 0 x E C
寄存器递减 1
[ 标号 ] DECF f,d
0 ≤ f ≤ 127
d ∈ [0,1]
(f) - 1 → (dest)
Z
00 0011 dfff ffff
果“d”为 0,结果存入 W 寄存
器;如果 “d ”为 1 ,结果存回
“f ”寄存器。
1
1
DECF CNT, 1
执行前
执行后
CNT = 0x01
Z= 0
CNT = 0x00
Z= 1
DS41206A_CN 第 76 页 初稿 2004 Microchip Technology Inc.
PIC16F716
DECFSZ
语法:
操作数:
操作:
影响的状态位: 无
机器码:
说明: 对寄存器 “f ”的内容递减 1 。如
字数:
周期数:
示例
f 寄存器递减 1 ,为 0 跳过下一
条指令
标号
] DECFSZ f,d
[
0 ≤ f ≤ 127
d ∈ [0,1]
(f ) - 1 → (dest ) ;如果结果 = 0
则跳过下一条指令
00 1011 dfff ffff
果“d”为 0,结果存入 W 寄存
器;如果 “d ”为 1 ,结果存回
寄存器 “f ”。
如果结果为 0 ,则舍弃已经取出
的下一条指令,而执行一条 NOP
指令,这使该指令成为一条双周
期指令。
1
1(2)
HERE DECFSZ REG1, 1
GOTO LOOP
CONTINUE •
•
•
执行前
PC = 地址 HERE
执行后
REG1 = REG1 - 1
如果 REG1 = 0,
PC = 地址 CONTINUE
如果 REG1 ≠ 0 ,
PC = 地址 HERE+1
GOTO
语法:
操作数:
操作:
影响的状态位: 无
机器码:
说明:
字数:
周期数:
示例
无条件转移
[
0 ≤ k ≤ 2047
k → PC<10:0>
PCLATH<4:3> → PC<12:11>
10 1kkk kkkk kkkk
GOTO 是一条无条件转移指令。
11 位立即值装入 PC 的 <10:0>
位。PC 的高位从 PCLATH<4:3>
装入。 GOTO 是一条双周期指
令。
1
2
GOTO THERE
执行后
标号
] GOTO k
PC = 地址 THERE
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 77 页
PIC16F716
INCF
语法:
操作数:
操作:
影响的状态位:
机器码:
说明: 寄存器 “f ”的内容递增 1 。如果
字数:
周期数:
示例
f 寄存器递增 1
[
标号
] INCF f,d
0 ≤ f ≤ 127
d ∈ [0,1]
(f) + 1 → (dest)
Z
00 1010 dfff ffff
“d ”为 0 ,结果存入 W 寄存器;
如果 “d ”为 1 ,结果存回寄存
器“f”。
1
1
INCF REG1, 1
执行前
REG1 = 0xFF
Z= 0
执行后
REG1 = 0x00
Z= 1
INCFSZ
语法:
操作数:
操作:
影响的状态位: 无
机器码:
说明: 寄存器 “f ”的内容递增 1 。如果
字数:
周期数:
示例
f 递增 1 ,为 0 跳过下一条指令
[
标号
] INCFSZ f,d
0 ≤ f ≤ 127
d ∈ [0,1]
(f) + 1 → (dest),
结果 = 0 跳过
00 1111 dfff ffff
“d ”为 0 ,结果存入 W 寄存器;
如果 “d ”为 1 ,则结果存回 寄
存器 “f”。
如果结果为 0 ,则舍弃已经取出
的下一条指令,而执行一条 NOP
指令,这使该指令成为一条双周
期指令。
1
1(2)
HERE INCFSZ REG1, 1
GOTO LOOP
CONTINUE •
•
•
执行前
PC = 地址 HERE
执行后
REG1 = REG1 + 1
如果 CNT =0,
PC = 地址 CONTINUE
如果 REG1 ≠ 0 ,
PC = 地址 HERE +1
DS41206A_CN 第 78 页 初稿 2004 Microchip Technology Inc.
PIC16F716
IORLW 立即数与 W 逻辑或
标号
] IORLW k
语法:
操作数:
操作:
影响的状态位:
机器码:
说明: W 寄存器的内容与 8 位立即数
字数:
周期数:
示例
IORWF W 和 f 逻辑或运算
语法:
操作数:
操作:
影响的状态位:
机器码:
说明:
字数:
周期数:
示例
[
0 ≤ k ≤ 255
(W) 或 k → (W)
Z
11 1000 kkkk kkkk
“k ”相或。结果存入 W 寄存
器。
1
1
IORLW 0x35
执行前
W=0x9A
执行后
W=0xBF
Z=0
标号
] IORWF f,d
[
0 ≤ f ≤ 127
d ∈ [0,1]
(W)或(f) → (dest)
Z
00 0100 dfff ffff
W 寄存器与 “f ”寄存器的内容
进行 “或”运算。如果 “d ”为
“0 ”,结果存入 W 寄存器;如
果“d”为 “1”,结果存入
“f ”寄存器。
1
1
IORWF REG1, 0
执行前
REG1 = 0x13
W = 0x91
执行后
REG1 = 0x13
W = 0x93
Z= 1
MOVLW 立即数送 W
标号
] MOVLW k
语法:
操作数:
操作:
影响的状态位: 无
机器码:
说明: 8 位立即数 “k ”送入 W 寄存
字数:
周期数:
示例
MOVF 传送 f
语法:
操作数:
操作:
影响的状态位:
机器码:
说明: 根据 “d ”的状态,将 “f ”寄存
字数:
周期数:
示例
[
0 ≤ k ≤ 255
k → (W)
11 00xx kkkk kkkk
器。无关的位汇编为 “ 0”。
1
1
MOVLW 0x5A
执行后
W = 0x5A
标号
] MOVF f,d
[
0 ≤ f ≤ 127
d ∈ [0,1]
(f) → (dest)
Z
00 1000 dfff ffff
器的内容传送到目的寄存器。如
果“d”= 0,目的寄存器为 W 寄
存器。如果 “d” = 1 ,目的寄存
器为数据寄存器 “f ”本身。由于
状态标志位 Z 会受到影响,“d ”
= 1 对于测试数据寄存器是很有用
的。
1
1
MOVF REG1, 0
执行后
W= REG1 寄存器中的值
Z= 1
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 79 页
PIC16F716
MOVWF 传送 W 的内容至 f
标号
] MOVWF f
语法:
操作数:
操作:
影响的状态位: 无
机器码:
说明:
字数:
周期数:
示例
NOP
语法:
操作数: 无
操作: 无操作
影响的状态位: 无
机器码:
说明: 无操作
字数:
周期数:
示例
[
0 ≤ f ≤ 127
(W) → (f)
00 0000 1fff ffff
将 W 寄存器中的数据传送至
“f ”寄存器。
1
1
MOVWF REG1
执行前
REG1 = 0xFF
W= 0 x 4 F
执行后
REG1 = 0x4F
W= 0 x 4 F
空操作
标号
] NOP
[
00 0000 0xx0 0000
1
1
NOP
OPTION 装载 Option 寄存器
语法: [ 标号 ] OPTION
操作数: 无
操作:
影响的状态位: 无
机器码:
说明:
字数:
周期数:
示例
RETFIE
语法:
操作数: 无
操作:
影响的状态位: 无
机器码:
说明:
字数:
周期数:
示例
(W) → OPTION
00 0000 0110 0010
W 寄存器的内容装载到 OPTION
寄存器。支持这条指令是为了与
PIC16C5X 器件代码兼容。 由于
OPTION 是可读可写的寄存器,
用户可只使用寄存器指令,如
MOVWF ,直接对其寻址。
1
1
为保持与将来 PICmicro ®器件的
向上兼容性,不要使用这条指令。
中断返回
[
标号
] RETFIE
TOS → PC,
1 → GIE
00 0000 0000 1001
中断返回。弹出堆栈栈顶
(TOS )内容并装入 PC 。可以
通过置位全局中断使能位 GIE
(INTCON<7> )使能中断。这是
一条双周期指令。
1
2
RETFIE
中断后
PC = TOS
GIE = 1
DS41206A_CN 第 80 页 初稿 2004 Microchip Technology Inc.
PIC16F716
RETLW
语法:
操作数:
操作:
子程序返回,并将一立即数赋给
W
标号
] RETLW k
[
0 ≤ k ≤ 255
k → (W) ;
TOS → PC
影响的状态位: 无
机器码:
11 01xx kkkk kkkk
说明: 将 8 位立即数 “k ”装入 W 寄存
器。栈顶 (返回地址)被装入程
序计数器。这是一条双周期指
令。
字数:
周期数:
示例
TABLE
1
2
CALL TABLE;W contains table
;offset value
• ;W now has table value
•
•
ADDWF PC;W = offset
RETLW k1;Begin table
RETLW k2;
•
•
•
RETLW kn; End of table
执行前
W = 0x07
执行后
W=k 的值
RLF f 寄存器内容带进位位左移
标号
] RLF f,d
语法:
操作数:
[
0 ≤ f ≤ 127
d ∈ [0,1]
操作: 参见如下描述
影响的状态位:
机器码:
C
00 1101 dfff ffff
说明: “f”寄存器的内容带进位位左移
一位。如果 “d ”为 “0”,结果
存入 W 寄存器;如果 “d ”为
“1 ”,结果存入 “f ”寄存器。
寄存器 f C
字数:
周期数:
示例
1
1
RLF REG1, 0
执行前
REG1=1110 0110
C=0
执行后
REG1=1110 0110
W = 1100 1100
C =1
RETURN
语法:
子程序返回
标号
] RETURN
[
操作数: 无
操作:
TOS → PC
影响的状态位: 无
机器码:
00 0000 0000 1000
说明: 子程序返回。将堆栈栈顶
(TOS )的内容弹出并装入程序
计数器。这是一条双周期指令。
字数:
周期数:
示例
1
2
RETURN
返回时
PC = TOS
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 81 页
PIC16F716
RRF f 寄存器带进位位右移
标号
] RRF f,d
语法:
操作数:
操作: 参看如下描述
影响的状态位:
机器码:
说明: “f ”寄存器的内容带进位位右移
字数:
周期数:
示例
SLEEP
语法:
操作数: 无
操作:
影响的状态位:
机器码:
说明: 掉电状态位 PD 清零。超时溢
字数:
周期数:
示例:
[
0 ≤ f ≤ 127
d ∈ [0,1]
C
00 1100 dfff ffff
一位。如果 “d ”为 “0”,结果
存入 W 寄存器;如果 “d ”为
“1 ”,结果存入 “f ”寄存器。
REGISTER F C
1
1
RRF REG1, 0
执行前
REG1 = 1110 0110
C =0
执行后
REG1 = 1110 0110
W = 0111 0011
C =0
标号
]SL E EP
[
00h → WDT,
0 → WDT 预分频器,
1 → TO
0 → PD
TO
00 0000 0110 0011
出状态位 TO
时器及其预分频器清零。
振荡器停振,处理器进入休眠
模式。
1
1
SLEEP
,
, PD
置位。看门狗定
SUBLW 立即数减去 W
标号
]S U B L W k
语法:
操作数:
操作:
影响的状态
位:
机器码:
说明: 8 位立即数 “k ”减去 W 寄存器的内
字数:
周期数:
例 1 :
例 2 : 执行前
例 3 : 执行前
[
0 ≤ k ≤ 255
k - (W) → ( W)
C, DC, Z
11 110x kkkk kkkk
容 (采用二进制补码方法),结果存
入 W 寄存器。
1
1
SUBLW 0x02
执行前
W=1
C=?
执行后
W= 1
C=1;结果为正。
W= 2
C=?
执行后
W= 0
C=1;结果为 0。
W= 3
C= ?
执行后
W= 0xFF
C = 0 ;结果为负
DS41206A_CN 第 82 页 初稿 2004 Microchip Technology Inc.
PIC16F716
SUBWF f 寄存器减去 W
标号
] SUBWF f,d
语法:
操作数:
操作:
影响的状态
位:
机器码:
Description :“f”寄存器内容减去 W 寄存器内容
字数:
周期数:
例 1 :
例 2 : 执行前
例 3 : 执行前
[
0 ≤ f ≤ 127
d ∈ [0,1]
(f) -(W) → (dest)
C, DC, Z
00 0010 dfff ffff
(采用二进制补码方法)。如果 “d ”
为“0”,结果存入 W 寄存器;如果
“d ”为 “1 ”,结果存入 “f ”寄存
器。
1
1
SUBWF REG1, 1
执行前
REG1 = 3
W= 2
C= ?
执行后
REG1 = 1
W= 2
C= 1;结果为正
Z= 0
DC = 1
REG1 = 2
W= 2
C= ?
执行后
REG1 = 0
W= 2
C= 1;结果为零
Z = DC = 1
REG1 = 1
W= 2
C= ?
执行后
REG1 = 0xFF
W= 2
C= 0;结果为负
Z = DC = 0
SWAPF f 寄存器的内容半字节交换
语法: [
操作数:
操作: (f<3:0>) → (dest<7:4>) ,
影响的状态位: 无
机器码:
说明: “f ”寄存器的高半字节和低半字节
字数:
周期数:
示例
TRIS
语法: [ 标号 ]
操作数:
操作: (W) → TRIS 寄存器 f ;
影响的状态位: 无
机器码:
说明: 支持这条指令是为了与 PIC16C5X
字数:
周期数:
示例
标号
0 ≤ f ≤ 127
d ∈ [0,1]
(f<7:4>) → (dest<3:0>)
00 1110 dfff ffff
相互交换。如果 “d ”为 “0”,
结果存入 W 寄存器;如果 “d”
为“1”,结果存入 “f ”寄存器。
1
1
SWAPF REG1, 0
执行前
执行后
装载 TRIS 寄存器
5 ≤ f ≤ 6
00 0000 0110 0fff
器件兼容。由于 TRIS 寄存器是可
读可写的,用户可以直接对其寻
址。
1
1
为保持与将来 PICmicro ® 产品的
向上兼容性,不要使用这条指令。
SWAPF f,d
]
REG1 = 0xA5
REG1 = 0xA5
W = 0x5A
TRIS f
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 83 页
PIC16F716
XORLW W 寄存器与立即数逻辑异或
标号
语法: [
操作数:
操作: (W) 异或 k → ( W)
影响的状态位:
机器码:
说明: W 寄存器的内容和 8 位立即数
字数:
周期数:
示例:
] XORLW k
0 ≤ k ≤ 255
Z
11 1010 kkkk kkkk
“k ”相异或,结果存入 W 寄存
器。
1
1
XORLW 0xAF
执行前
W=0xB5
执行后
W = 0x1A
XORWF W 与 f 逻辑异或
语法: [
操作数:
操作: (W) 异或 (f) → ( dest)
影响的状态位:
机器码:
说明: W 寄存器的内容和 “f ”寄存器的
字数:
周期数:
示例
标号
0 ≤ f ≤ 127
d ∈ [0,1]
Z
00 0110 dfff ffff
内容相异或。如果 “d ”为 “0”,
结果存入 W 寄存器;如果 “d”
为“1”,结果存入 “f ”寄存器。
1
1
XORWF REG1, 1
执行前
执行后
XORWF f,d
]
REG1 = 0xAF
W= 0 x B 5
REG1 = 0x1A
W=0 x B 5
DS41206A_CN 第 84 页 初稿 2004 Microchip Technology Inc.
PIC16F716
11.0 开发工具支持
• Microchip 提供一整套软硬件开发工具来支持
PICmicro 单片机:
- 集成开发环境
- MPLAB
• 汇编器 / 编译器 / 链接器
- MPASM
- MPLAB C17 和 MPLAB C18 C 编译器
-MPLINK
MPLIB
- MPLAB C30 C 编译器
- MPLAB ASM30 汇编器 / 链接器 / 库
• 软件模拟器
- MPLAB SIM 软件模拟器
- MPLAB dsPIC30 软件模拟器
• 仿真器
- MPLAB ICE 2000 在线仿真器
- MPLAB ICE 4000 在线仿真器
• 在线调试器
- MPLAB ICD 2
• 器件编程器
-PRO MATE
-PICSTART
• 低成本演示板
-PICDEM
-PICDEM.net
- PICDEM 2 Plus 演示板
-PICDEM 3 演示板
-PICDEM 4 演示板
-PICDEM 17 演示板
-PICDEM 18R演示板
- PICDEM LIN 演示板
- PICDEM USB 演示板
• 评估套件
-K
-PICDEM MSC
-microID
-CAN
- PowerSmart
- 模拟
EEL OQ
®
IDE 软件
TM
汇编器
TM
目标链接器 /
TM
目标库管理器
®
II 通用器件编程器
®
Plus 开发编程器
TM
1 演示板
TM
演示板
®
®
®
11.1 MPLAB 集成开发环境软件
MPLAB IDE 软件为软件开发提供了极大便利,这在 8
位 /16 位单片机市场上是前所未有的。MPLAB IDE 是基
于 Windows
®
的应用软件,它包含:
• 与调试工具的接口
- 软件模拟器
- 编程器 (单独出售)
- 仿真器 (单独出售)
- 在线调试器 (单独出售)
• 使用不同颜色表示不同类型字符的全功能编辑器
• 多项目管理器
• 直接编辑内容的用户数据窗口
• 高级源代码调试
• 移动光标查看变量
• 丰富的在线帮助
MPLAB IDE 允许用户:
• 编辑源文件 (汇编程序或者 C 程序)
• 只需点击一次鼠标即可完成汇编 (或者编译)以
及下载到 PICmicro 仿真器和软件模拟器工具 (自
动更新所有项目信息)
• 使用下列类型文件进行调试:
- 源文件 (汇编程序或者 C 程序)
- 绝对列表文件 (汇编和 C 混合编程)
- 机器代码
MPLAB IDE 支持在单个开发范例中使用多种调试工
具,从软件模拟器、低成本在线调试器,到全功能仿真
器。这样当需要升级工具时,不需要花很多功夫来学
习。
11.2 MPASM 汇编器
MPASM 汇编器是适用于所有 PICmicro 单片机的全功能
通用宏汇编器。
MPASM 汇编器生成可重定位的目标文件 (作为
MPLINK 目标链接器的输入)、 Intel
详细列出存储器使用和符号参考的 MAP 文件、包含源
程序行和生成的机器代码的绝对LST 文件以及用于调试
的 COFF 文件。
MPASM 汇编器的特征包括:
• 集成到 MPLAB IDE 项目中
• 用户定义宏可简化代码
• 多用途源文件的条件汇编
• 允许完全控制汇编过程的伪指令
®
标准 HEX 文件、
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 85 页
PIC16F716
11.3 MPLAB C17 和 MPLAB C18 C 编译
器
MPLAB C17 和 MPLAB C18 代码开发系统是用于开发
Microchip 公司的 PIC17CXXX 和 PIC18CXXX 系列单
片机的完全 ANSI C 编译器。 这些编译器提供强大的集
成功能、较好的代码优化和使用上的方便,这是其它编
译器不具备的。
为便于源代码级调试,编译器提供对 MPLAB IDE 调试
器进行了优化的符号信息。
11.4 MPLINK 目标链接器 /MPLIB 目标库
管理器
MPLINK 目标链接器组合由 MPASM 汇编器和 MPLAB
C17、MPLAB C18 C 编译器生成的可重定位目标文件。
它可以通过链接描述文件的伪指令,对预编译库中的可
重定位目标文件进行链接。
MPLIB 目标库管理器管理预编译代码的库文件的创建和
修改。当来自库的一个子程序被一个源文件调用时,只
有包含此子程序的模块才被链接到应用程序。这允许在
许多不同的应用程序中高效地使用大型的库文件。
目标链接器 / 库管理器的功能包括:
• 有效地链接单个库文件而不是很多小的文件
• 通过把相关的模块组合在一起提高代码的可维护性
• 灵活创建库文件,可方便地对库中模块进行列表、
替换、删除和抽取。
11.6 MPLAB ASM30 汇编器、链接器和
库管理器
MPLAB ASM30 汇编器将 dsPIC30F 器件的符号汇编语
言转换为可重定位的机器代码。 MPLAB C30 编译器使
用汇编器生成其目标文件。汇编器生成可链接或归档到
其它可重定位目标文件或归档文件的可重定位目标文
件,以生成可执行文件。此 汇编器的突出特性包括:
• 支持全部 dsPIC30F 指令集
• 支持定点和浮点数据类型
• 命令行界面
• 丰富的伪指令
• 灵活的宏汇编语言
• 与 MPLAB IDE 完全兼容
11.7 MPLAB SIM 软件模拟器
MPLAB SIM 软件模拟器允许在 PC 环境下,在指令级
的基础上,通过模拟 PICmicro 系列单片机进行代码开
发。对于任何给定的指令,可检查或修改数据区,并可
通过文件或用户定义的按键施加激励到任何引脚上。可
以单步、执行到断点或跟踪方式执行代码。
MPLAB SIM 软件模拟器完全支持采用 MPLAB C17 和
MPLAB C18 C 编译器以及 MPASM 汇编器进行符号调
试。软件模拟器使得用户可以灵活地、不依赖实验室环
境进行代码开发和调试,不啻为优秀和经济的软件开发
工具。
11.5 MPLAB C30 C 编译器
MPLAB C30 C 编译器是全功能、遵循 ANSI 的优化编
译器,它将标准 ANSI C 程序编译成 dsPIC30F 汇编语
言源代码。编译器也支持很多命令行选项和语言扩展,
以充分利用 dsPIC30F 器件的硬件功能,并很好地控制
编译器的代码生成。
MPLAB C30 与完整的 ANSI C 标准库一起发布。所有
库函数都已经过验证,符合 ANSI C 库标准。这个库包
括字符串操作函数、动态存储分配函数、数据转换函
数、计时函数以及数学函数 (三角、指数和双曲线)。
编译器为使用 MPLAB IDE 进行源代码级调试提供符号
信息。
11.8 MPLAB SIM30 软件模拟器
MPLAB SIM30 软件模拟器允许在 PC 环境下,在指令
级的基础上,通过模拟 dsPIC30F 系列单片机进行代码
开发。对于任何给定的指令,用户可检查或修改数据
区,并可通过文件或用户定义的按键施加激励到任一引
脚。
MPLAB SIM30 软件模拟器完全支持采用 MPLAB C30
C 编译器和 MPLAB ASM30 汇编器进行符号调试。可
通过命令行方式或者 MPLAB IDE 运行软件模拟器。该
高速软件模拟器设计为用来调试、分析和优化对时间要
求严格的 DSP 子程序。
DS41206A_CN 第 86 页 初稿 2004 Microchip Technology Inc.
PIC16F716
11.9 MPLAB ICE 2000 高性能通用在线仿
真器
MPLAB ICE 2000 通用在线仿真器为产品开发工程师提
供了一套专为 PICmicro 单片机设计的开发工具。
MPLAB ICE 2000 在线仿真器的软件控制部分由
MPLAB 集成开发环境提供,它支持在同一个环境中进
行编辑、编译、下载和源代码调试。
MPLAB ICE 2000 是一个全功能的仿真器系统,具有增
强的跟踪调试、触发和数据监控特性。可拆卸式处理器
模块使得系统极易重新配置,以仿真不同的处理器。
MPLAB ICE 在线仿真器的通用结构允许对其进行扩展
以支持新的 PICmicro 单片机。
MPLAB ICE 2000 在线仿真器系统设计为一个实时仿真
系统,这种仿真系统具有那些通常只在比其昂贵得多的
开发工具中才具有的优越特性。选择 PC 平台和
Microsoft
地在简单的、统一的应用中使用。
®
Windows 32 位操作系统能使这些特性更好
11.10 MPLAB ICE 4000 高性能通用在线仿
真器
MPLAB ICE 4000 通用在线仿真器为产品开发工程师提
供了一套专为 PICmicro 单片机设计的开发工具。
MPLAB ICE 在线仿真器的软件控制部分由MPLAB 集成
开发环境提供,它提支持在同一个环境中进行编辑、编
译、下载及源代码调试。
MPLAB ICD 4000 是一个高级仿真器系统,它具有
MPLAB ICE 2000 的所有特性,同时拥有更多的仿真存
储空间以及更高速的性能,可用于仿真 dsPIC30F 和
PIC18XXXX 系列器件。其高级仿真器特性包括复杂的
触发和时序,高达 2Mb 的仿真存储空间以及实时查看变
量的功能。
MPLAB ICE 4000 在线仿真器系统设计为一个实时仿真
系统,这种仿真系统具有那些通常只在比其昂贵得多的
开发工具中才具有的优越特性。 PC 平台和 Microsoft
Windows 32 位操作系统能使这些特性更好地在简单
的、统一的应用中使用。
®
11.11 MPLAB ICD 2 在线调试器
Microchip 的在线调试器 MPLAB ICD 2 是一个功能强
大、成本低廉的实时开发工具,它通过 RS-232 或者高
速 USB 接口与主机 PC 相连接。这套工具是基于闪存
PICmicro 单片机的,可用来开发这些器件及其它
PICmicro 单片机。 MPLAB ICD 2 利用了闪存器件的在
线编程能力。利用这个特性,结合 Microchip 的在线串
行编程(In-Circuit Serial ProgrammingTM
协议,通过 MPLAB 集成开发环境的图形用户界面,提
供廉价的在线闪存调试功能。可通过设置断点、单步执
行以及观察变量、CPU 状态和外设寄存器来开发和调试
源代码。全速运行确保实时测试硬件和应用程序。对于
某些 PICmicro 器件,MPLAB ICD 2 也可以作为开发编
程器使用。
TM
, ICSPTM )
11.12 PRO MATE II 通用器件编程器
PRO MATE II 是一个通用、符合CE 标准的器件编程器,
可在编程电压为 V
了可靠性。它有一个 LCD 显示器,用来显示指令和错误
消息, 支持各种封装类型的模块化可拆卸插座组件。在
待机模式下,不需和 PC 连接,PRO MATE II 器件编程
器可对 PICmicro 器件进行读出、校验和编程。在这种
模式下,还可设置代码保护。
DDMIN 和 V DDMAX 时进行校验,提高
11.13 PICSTART Plus 开发编程器
PICSTART Plus 开发编程器是一种易于使用、低成本的
原型编程器,它通过一个 COM (RS-232 )口与 PC 机
连接。 MPLAB 集成开发环境软件使得编程器的使用简
单而高效。PICSTART Plus 开发编程器支持大多数不超
过 40 引脚的 PICmicro 器件。对于高引脚数器件,如
PIC16C92X 和 PIC17C76X,可通过转接插座支持。
PICSTART Plus 开发编程器符合 CE 标准。
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 87 页
PIC16F716
11.14 PICDEM 1 PICmicro 演示板
PICDEM 1 演示板用于演示 PIC16C5X (从 PIC16C54
到 PIC16C58A )、PIC16C61 、 PIC16C62X 、
PIC16C71、 PIC16C8X、 PIC17C42、 PIC17C43 和
PIC17C44 的功能。该工具套件包含所有必需的硬件和
软件,可以运行基本的演示程序。通过 PRO MATE II 器
件编程器或者 PICSTART Plus 开发编程器,用户可对
随 PICDEM 1 演示板提供的单片机样片进行编程。也可
以把 PICDEM 1 演示板连接到 MPLAB ICE 在线仿真器
进行测试。另外,还提供了一个实验电路布线区,可增
加其它元器件。该板的元器件包括:一个 RS-232 接口、
一个用于仿真模拟输入的电位器、按钮式开关和 8 个
LED 。
11.15 PICDEM.net 因特网 / 以太网演示板
PICDEM.net 是一块使用 PIC18F452 单片机和 TCP/IP
固件的因特网 / 以太网演示板。该板支持所有与
PIC16F877 或 PIC18C452 引脚兼容的 40 引脚 DIP 器
件。这一工具套件包括 :用户友好 TCP/IP 协议栈、
HTML 网络服务器、用于 Xmodem 下载网页的 24L256
串行 EEPROM 、 ICSP/MPLAB ICD 2 接口连接器、以
太网接口、RS-232 接口和一个 16 x 2 LCD 显示器。另
外还包括 Jeremy Bentham 写的 “TCP/IP Lean, Web
Servers for Embedded Systems ”书和配套光盘。
11.16 PICDEM 2 Plus 演示板
PICDEM 2 Plus 演示板支持多种 18 引脚、 28 引脚和 40
引脚单片机,包括 PIC16F87X 和 PIC18FXX2 器件。该
套件包含运行演示程序必需的所有硬件和软件。通过
PRO MATE II 器件编程器、 PICSTART Plus 开发编程
器或者带有通用编程器适配头的 MPLAB ICD 2 ,用户可
对随 PICDEM 2 演示板提供的单片机样片进行编程。也
可以在 PICDEM 2 演示板上使用 MPLAB ICD 2 和
MPLAB ICE 在线编程器测试固件。另外,还提供了一
个实验电路布线区,供添加元器件扩展电路。该板的元
器件包括:1 个 RS-232 接口、1 个 2x16 LCD显示器、
1 个 piezo 扬声器、 1 个温度传感器、 4 个 LED,以及
PIC18F452 和 PIC16F877 闪存单片机样片。
11.17 PICDEM 3 PIC16C92X 演示板
PICDEM 3 演示板支持 PLCC 封装的 PIC16C923 和
PIC16C924。该套件包含运行演示程序必需的所有硬件
和软件。
11.18 PICDEM 4 8/14/18 引脚演示板
PICDEM 4 可以用来演示 8 引脚、 14 引脚和 18 引脚的
PIC16XXXX 和 PIC18XXXX 单片机的功能,包括
PIC16F818/819、 PIC16F87/88、 PIC16F62XA 和
PIC18F1320 系列单片机。 PICDEM 4 用来演示这些低
引脚数器件的很多特性,包括 LIN 和使用 ECCP 的马达
控制。此板还提供了一些低功耗运行的备选项:超级电
容电路,以及用来禁止板上部分硬件从而降低功耗的跳
线等。此板还提供了一些低功耗运行的备选项:超级电
容电路,以及用来禁止板上部分硬件从而降低功耗的跳
线等。演示板上包括:晶振、 RC 或者金属外壳
方式、用于 9V 墙式适配器和电池的 5V 稳压器、 DB-9
RS-232 接口、用于使用 MPLAB ICD 2 进行在线串行编
程和开发的 ICD 连接插座、 2x16 液晶显示器、半桥马
达驱动器的 PCB 、 LIN 收发器和 EEPROM 。 还包括:
扩展头、 8 个 LED 、 4 个电位器、 3 个按钮和实验电路
布线区。此外还附带一片 PIC16F627A 和一片
PIC18F1320 。 教程软件包含在用户指南中。
振荡器
11.19 PICDEM 17 演示板
PICDEM 17 演示板是一个可以演示多种 Microchip 单片
机功能的评估板,这些单片机包括 PIC17C752 、
PIC17C756A 、 PIC17C762 和 PIC17C766 。该套件附
带一个已编程的样片。用户可以使用 PRO MATE II 编程
器或者 PICSTART Plus 开发编程器重新对器件编程,以
根据需要进行应用开发。 PICDEM 17 演示板支持从片
外闪存存储器下载和执行程序。还提供了大片地实验电
路布线区供用户扩展硬件。
DS41206A_CN 第 88 页 初稿 2004 Microchip Technology Inc.
PIC16F716
11.20 PICDEM 18R PIC18C601/801 演示
板
PICDEM 18R 演示板支持 MicrochipPIC18C601/801 系
列单片机的开发。它用硬件实现了 8 位复用 / 分用和 16
位存储器模式。该演示板包括 2Mb 的扩展闪存存储器、
128 Kb 的 SRAM 存储器及串行 EEPROM, 允许访问
PIC18C601/801 支持的多种存储器。
11.21 PICDEM LIN PIC16C43X 演示板
功能强大的 LIN 硬件和软件工具套件包括一系列演示板
和 3 个 PICmicro 单片机。在 LIN 通信中,小封装的
PIC16C432 和 PIC16C433 作为 LIN 通信中的从器件,
用作板上的 LIN 收发器。PIC16F874 闪存单片机用作主
控器件。所有三个单片机中都已经烧写了 LIN 总线通信
软件。
11.22 PICkit
作为一套完整的集成开发系统,PICkit 闪存入门工具套
件包括一个方便使用的多功能板,可以对 8/14 引脚 闪
®
存 PIC
可通过简洁的 Windows GUI 界面对电路板进行操作。
PICkit 1闪存入门套件包括 用户指南(在CD ROM中)、
PICkit
IDE (集成开发环境)软件、软件和硬件 《8 引脚闪存
PIC® 单片机窍门和点子》手册和一根 USB 接口电缆。
支持现在所有的 8/14 引脚闪存 PIC 单片机,以及很多
计划将来推出的器件。
单片机进行编程、评估和开发。通过 USB 口,
1 教程软件和多种应用的代码,还包括 MPLAB
TM
1 闪存入门工具套件
11.23 PICDEM USB PIC16C7X5 演示板
PICDEM USB 演示板演示 PIC16C745 和 PIC16C765
USB 单片机的功能。这个演示板是将来 USB 产品的基
础。
11.24 评估和编程工具
除了 PICDEM 系列电路外, Microchip 还有一系列产品
的评估套件和演示软件。
• 支持 Microchip 的 HCS 安防数据产品的K
估和编程工具
• 用于汽车网络应用的 CAN 开发工具套件
• 模拟设计电路板和滤波器设计软件
• PowerSmart 电池充电评估 / 校准套件
®
•IrDA
•microID和 rfLab
• 支持存储器评估和耐擦写能力计算的 SEEVAL
• 包含开关电源、大功率 IR 驱动器、△ - ∑ A/D 转换
有关演示和评估工具套件的完整列表,请查看
®
Microchip 网页和最新的产品目录。
开发工具套件
TM
开发软件
计人员工具套件
器和流速率传感器的 PICDEM MSC 演示板
EEL OQ 评
®
设
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 89 页
PIC16F716
注:
DS41206A_CN 第 90 页 初稿 2004 Microchip Technology Inc.
PIC16F716
12.0 电气特性
绝对最大额定值
环境温度...............................................................................................................................................-55°C ~ +125°C
存储温度.............................................................................................................................................. -65°C ~ +150°C
相对于 V
相对于 V
相对于 V
相对于 V
SS 的任一引脚电压 (除了 V DD、 MCLR 和 RA4).........................................................-0.3V ~ (VDD +0.3V)
SS 的 V DD 引脚电压 .................................................................................................................. -0.3V ~ +7.5V
SS 的 MCLR 引脚电压 (注 2 ).................................................................................................. 0V ~ +13.25V
SS 的 RA4 引脚电压 ......................................................................................................................0V ~ +8.5V
总功耗 (注 1 )( PDIP 和 SOIC )..........................................................................................................................1.0W
总功耗 (注 1 )( SSOP )....................................................................................................................................0.65W
SS 引脚的最大电流...........................................................................................................................................300 mA
V
DD 引脚的最大电流 .......................................................................................................................................... 250 mA
V
输入箝位电流, I
输出箝位电流, I
任一 I/O 引脚最大灌电流 ...................................................................................................................................... 25 mA
任一 I/O 引脚最大拉电流 ...................................................................................................................................... 25 mA
PORTA 和 PORTB 总的最大灌电流 ...................................................................................................................200 mA
PORTA 和 PORTB 总的最大拉电流 ...................................................................................................................200 mA
注 1: 功耗按如下公式计算: Pdis = V
2: MCLR/VPP 引脚的尖峰电压低于 VSS ,导致感应电流超过 80 mA 时,可能引起锁死。因此,当把一个“低”
(†)
IK (VI < 0 或 VI > V DD)......................................................................................................................±20 mA
OK (VO < 0 或 VO > V DD).................................................................................................................±20 mA
DD x {I DD - ∑ I OH} + ∑ {(V DD - V OH) x IOH} + ∑(V Ol x I OL)
电平加到 M
CLR/VPP 引脚上时,应接入一个 50 - 100Ω 的串联电阻,而不要将这个引脚直接接到 VDD 。
† 注意:如果器件工作条件超过上述 “绝对最大额定值”,可能引起器件永久性损坏。这仅是极限参数,我们不建议
器件工作在极限值甚至超过上述极限值。 器件长时间工作在极限条件下可能会影响其可靠性。
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 91 页
PIC16F716
图 12-1: PIC16F716 电压-频率图, -40°C < TA < +85°C
6.0
5.5
5.0
4.5
V
DD
( V)
4.0
3.5
3.0
2.5
2.0
0
注 1 : 阴影区域表示电压和频率容许范围。
41 0
频率( MHz)
(1)
20
25
图 12-2 : PIC16F716 电压-频率图, 85°C <
6.0
5.5
5.0
4.5
DD
V
(V )
注 1 : 阴影区域表示电压和频率容许范围。
4.0
3.5
3.0
2.5
2.0
0
4 1 0
频率( MHz)
TA < +125°C
(1)
20
25
DS41206A_CN 第 92 页 初稿 2004 Microchip Technology Inc.
12.1 直流特性:PIC16F716 (工业级 , 扩展级)
标准工作条件 (除非另外声明)
直流特性
工作温度 工业级:-40°C ≤ TA ≤ +85°C
PIC16F716
扩展级:-40°C ≤ TA ≤ +125°C
参数
编号
D001
D001A
D002* V
D003 V
D004*
D004A*
D005 3.65 4.0 4.35 V BOREN 位置位, BOR 位= ‘1 ’
注 1 : 这是在不丢失 RAM 中数据的条件下, V
符号 特性
DD 电源电压
V
DR RAM 数据保持
POR 确保内部上电复位信号的 VDD
S
VDD 确保内部上电复位信号的
BOR
V
* 这些参数仅为特性数据,未经测试。
† 除非另外声明,否则 “典型值”列的数据是 5V、 25°C 条件下给出的。这些参数仅供设计参考,未经测试。
(1)
电压
启动电压
V DD 上升速率
欠压复位电压跳变点
最小值典型
值 † 最大值
2.0
3.0——
—1 . 5 *— V
—V s s— V参见上电复位章节
0.05
TBD————
TBD 2.5 TBD V BOREN 位置位, BOR 位= ‘0 ’
DD 能降低到的最小极限值。
单位 条件
5.5
5.5VV
工业级
扩展级
V/ms PWRT 使能 ( PWRTE 位清零)
PWRT 禁止 ( PWRTE 位置位)
参见上电复位章节
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 93 页
PIC16F716
12.2 直流特性: PIC16F716 (工业级)
直流特性
参数
编号
符号 特性
标准工作条件 (除非另外声明)
工作温度 -40°C ≤ T
最小值典型
值 † 最大值
单位 V
A ≤ +85°C
DD 条件
VDD 电源电压
D001
D020
I
PD 掉电时的基本电流
2.0 — 5.5 V —
—0 . 10 . 8µA2 . 0W D T、 BOR 和 T1OSC:禁止
— 0.1 0.85 µ A3 . 0
—0 . 22 . 7µA5 . 0
MOD 外设模块电流
∆ I
(1)
—12 . 0µA2 . 0W D T电流
D021
—23 . 5µA3 . 0
—91 3 . 5µA5 . 0
—T B DT B DµA3 . 0B O R电流
D022
—4 0T B DµA4 . 5
—4 5T B DµA5 . 0
D025 — 1.8 TBD µ A2 . 0T 1
OSC 电流
—2 . 6T B DµA3 . 0
—3 . 0T B DµA5 . 0
IDD 供电电流
D010
—1 41 7µA2 . 0F
—2 32 8µA3 . 0
OSC = 32 kHz
LP 振荡器方式
—4 56 0µA5 . 0
— 120 160 µ A2 . 0FOSC = 1MHz
D011
— 180 250 µ A3 . 0
XT 振荡器方式
— 290 370 µ A5 . 0
OSC = 4MHz
XT 振荡器方式
D012
— 220 300 µ A2 . 0F
— 350 470 µ A3 . 0
— 600 780 µ A5 . 0
— 2.1 2.9 mA 4.5 FOSC = 20 MHz
D013
— 2.5 3.3 mA 5.0
HS 振荡器方式
† 除非另外声明,否则 “典型值”列的数据为 5V、 25°C 的条件下所给出的。这些参数仅作设计参考,未经
测试。
注 1 : “∆ ”电流为当该外设使能时所消耗的附加电流。对于基本 I
DD 或 I PD 的测量,应加上这种电流。计算总电
流消耗时应使用最大值。
2 : AD 转换器打开,不在转换中。
DS41206A_CN 第 94 页 初稿 2004 Microchip Technology Inc.
12.3 直流特性: PIC16F716 (扩展级)
PIC16F716
直流特性
参数
编号
符号 特性
标准工作条件 (除非另外声明)
工作温度 -40°C ≤ T
最小值典型
值 † 最大值
单位 V
DD 条件
A ≤ +125°C
VDD 电源电压
D001 3.0 — 5.5 V —
I
PD 掉电时的基本电流
D020E
D021E
∆ IMOD 外设模块电流
(1)
—0 . 1T B DµA3 . 0W D T、 BOR 和 T1OSC:禁止
—0 . 2T B DµA5 . 0
—2T B DµA3 . 0W D T电流
—9T B DµA5 . 0
—T B DT B DµA3 . 0
D022E
—4 0T B DµA4 . 5B O R电流
—4 5T B DµA5 . 0
D025E
D010E
D011E
D012E
D013E
I
DD 供电电流
—2 . 6T B DµA3 . 0T 1
—3 . 0T B DµA5 . 0
—2 1T B DµA3 . 0F
—3 8T B DµA5 . 0
—1 8 2T B DµA3 . 0F
—2 9 3T B DµA5 . 0
—3 7 1T B DµA3 . 0F
—6 6 8T B DµA5 . 0
— 2.6 TBD mA 4.5 F
—3T B Dm A5 . 0
OSC 电流
OSC = 32 kHz
LP 振荡器方式
OSC = 1MHz
XT 振荡器方式
OSC = 4MHz
XT 振荡器方式
OSC = 20 MHz
HS 振荡器方式
† 除非另外声明,否则 “典型值”列的数据为 5V、 25°C 条件下给出的。这些参数仅供设计参考,未经测
试。
注 1 : “∆ ”电流为当该外设使能时所消耗的附加电流。对于基本 I
DD 或 I PD 的测量,应加上这种电流。计算总电
流消耗耗时应使用最大值。
2 : AD 转换器打开,不在转换中。
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 95 页
PIC16F716
12.4 直流特性: PIC16F716 (工业级,扩展级)
标准工作条件 (除非另外声明)
直流特性
参数编号 符号 特性 最小值
输入低电压
VIL I/O 端口
D030
D030A
D031 带施密特触发器缓冲器 VSS —0 . 2 VDD V
D032 MCLR、 OSC1 (在 RC 方式下) VSS —0 . 2 VDD V
D033 OSC1 (在 HS 方式下)
VIH I/O 端口 —
D040 带 TTL 缓冲器 2.0 — VDD V4 . 5 V ≤ VDD ≤ 5.5V
D040A 0.25 VDD +
D041 带施密特触发器缓冲器 0.8 VDD —VDD V
D042 MCLR 0.8 VDD —VDD V
D042A OSC1 ( XT、 HS 和 LP 方式) 0.7 VDD —VDD V
D043 OSC1 (在 RC 方式下) 0.9 VDD —VDD V
D060 IIL I/O 端口 —
D061 MCLR、 RA4/T0CKI — — ±5 µ AVs s ≤ VPIN ≤ VDD
D063 OSC1/CLKIN — — ± 5 µ A
D070 IPURB PORTB 弱上拉电流 50 250 400 µ A
D080 VOL I/O 端口 ——0 . 6V
D083 OSC2/CLKOUT ( RC 振荡器方式) ——0 . 6V
D090 VOH I/O 端口
D092 OSC2/CLKOUT ( RC 振荡器方式) VDD -0.7 — — V
D150* V
* 这些参数是特性数据,未经测试。
† 除非另外声明,否则 “典型值”列的数据为 5V 、 25°C 条件下给出的。这些参数仅供设计参考,未经测试。
注 1 : 在 RC 振荡器方式中, OSC1/CLKIN 引脚为施密特触发器输入。不推荐在 RC 方式下采用外部时钟驱动 PICmicro 器件。
2: MCLR/VPP 引脚上的漏电流很大程度上取决于所施加的电压。指定的电平表示正常工作条件。在不同的输入电压下可能会测得更
3: 负电流定义为引脚的拉电流。
带 TTL 缓冲器 VSS
OSC1 (在 XT 和 LP 方式下)
输入高电压
输入漏电流
输出低电压
输出高电压
OD 漏极开路高电压 ——8 . 5V
大的漏电流。
(2), (3)
(3)
工作温度 -40°C ≤ TA ≤ +85°C,工业级
工作电压 VDD 的范围如 DC 规范 第 12.1 节 “直流特性:PIC16F716 (工业级 , 扩
展级)”和第 12.2 节 “直流特性: PIC16F716 (工业级)”所述。
典型值
†
VSS
VSS
VSS
0.8V
—
——0 . 6V
——0 . 6V
VDD -0.7 — — V
VDD -0.7 — — V
V
DD-0.7 — — V
—
—
——0.3 VDD
—VDD V
—
—
-40°C ≤ TA ≤ +125°C,扩展级
最大值 单位 条件
0.8
0.15 VDD VV
0.6
±1
±500
4.5V ≤ V DD ≤ 5.5V
除非另外说明
V
(注 1 )
V
除非另外说明
整个 VDD 范围
(注 1 )
µA
Vss ≤ V PIN ≤ V DD 引脚为
高阻
nA
Vss ≤ VPIN ≤ VDD ,引脚配置为模拟输入
Vss ≤ VPIN ≤ VDD , XT、 HS 和 LP 振荡
器方式
VDD = 5V, VPIN = VSS
IOL = 8.5 mA, VDD = 4.5V, -40° C 到
+85°C
IOL = 7.0 mA, VDD = 4.5V, -40° C 到
+125°C
IOL = 1.6 mA, VDD = 4.5V, -40° C 到
+85°C
OL = 1.2 mA, V DD = 4.5V, -40°C 到
I
+125°C
IOH = -3.0 mA, VDD = 4.5V, -40° C 到
+85°C
IOH = -2.5 mA, VDD = 4.5V, -40° C 到
+125°C
IOH = -1.3 mA, VDD = 4.5V, -40° C 到
+85°C
OH = -1.0 mA, V DD = 4.5V, -40°C 到
I
+125°C
RA4 引脚
DS41206A_CN 第 96 页 初稿 2004 Microchip Technology Inc.
PIC16F716
标准工作条件 (除非另外声明)
直流特性
参数编号 符号 特性 最小值
输出引脚上容性负载规范
D100 COSC2 OSC2/CLKOUT 引脚 — — 15 pF
D101 CIO 所有 I/O 引脚和 OSC2 (在 RC 方式
下)
* 这些参数是特性数据,未经测试。
† 除非另外声明,否则 “典型值”列的数据为 5V 、 25°C 条件下给出的。这些参数仅供设计参考,未经测试。
注 1 : 在 RC 振荡器方式中, OSC1/CLKIN 引脚为施密特触发器输入。不推荐在 RC 方式下采用外部时钟驱动 PICmicro 器件。
2 : MCLR/VPP 引脚上的漏电流很大程度上取决于所施加的电压。指定的电平表示正常工作条件。在不同的输入电压下可能会测得更
大的漏电流。
3: 负电流定义为引脚的拉电流。
12.5 交流 (时序)特性
12.5.1 时序参数符号
使用如下格式之一来创建了时序参数符号:
工作温度 -40°C ≤ TA ≤ +85°C,工业级
工作电压 VDD 的范围如 DC 规范 第 12.1 节 “直流特性:PIC16F716 (工业级 , 扩
展级)”和第 12.2 节 “直流特性: PIC16F716 (工业级)”所述。
典型值
†
— — 50 pF
-40°C ≤ TA ≤ +125°C,扩展级
最大值 单位 条件
外部时钟驱动 OSC1 时的 XT 、 HS 和
LP 方式下。
1. TppS2ppS
2. TppS
T
F 频率 T 时间
小写字母 (pp )及其含义:
pp
cc CCP1 osc OSC1
ck CLKOUT rd RD
cs CS rw RD 或 WR
di SDI sc SCK
do SDO ss SS
dt 数据输入 t0 T0CKI
io I/O 端口 t1 T1CKI
mc MCLR
wr WR
大写字母及其含义:
S
F 下降 P 周期
H 高电平 R 上升
I 无效 (高阻态) V 有效
L 低电平 Z 高阻
2004 Microchip Technology Inc. 初稿 DS41206A_CN 第 97 页
PIC16F716
12.5.2 时序条件
除非另外说明,表 12-1 指定的温度和电压适用于所有
时序规范。图 12-3 指定了时序规范的负载条件。
表 12-1 : 温度和电压规范-交流
标准工作条件 (除非另外说明)
工作温度 -40°C ≤ T
交流特性
图 12-3 : 器件时序规范的负载条件
负载条
工作电压 VDD 的范围如第 12.1 节 “直流特性:PIC16F716 (工业级 , 扩展级)” 和
第 12.4 节 “直流特性:PIC16F716 (工业级,扩展级)”中的 DC 规范所述。 LC
元件仅工作于商业级 / 工业级温度下。
件 1 负载条件 2
VDD /2
A ≤ +85°C,工业级
-40°C ≤ TA ≤ +125°C,扩展级
引脚
12.5.3 时序图和规范
图 12-4 : 外部时钟时序
Q4
OSC1
CLKOUT
Rl
Cl
V
SS
Q1 Q2 Q3 Q4
1
RL =464Ω
L = 50 pF 对于除 OSC2/CLKOUT 外的所有引脚
C
15 pF 对于 OSC2 输出
Pin
3
3
2
VSS
4
Cl
Q1
4
DS41206A_CN 第 98 页 初稿 2004 Microchip Technology Inc.