PIC12F609/HV609
PIC12F615/HV615
数据手册
8引脚 8位
CMOS闪存单片机
* 8 位 8 引脚器件受 Microchip 的低引脚数专利 (美国专利号 5,847,450)保护。其他美国及外国的专利和应用可能已发
布或正在等待批准。
2008 Microchip Technology Inc. 初稿 DS41302A_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
• Microchip 的产品均达到 Microchip 数据手册中所述的技术指标。
• Microchip 确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的
操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
• Microchip 愿与那些注重代码完整性的客户合作。
• Microchip 或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视
为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act )》。如果这种行为导致他人在未经授权的情况下,能访问您的
软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含
的英文部分,因为其中提供了有关 Microchip 产品性能和使用
情况的有用信息。Microchip Technology Inc. 及其分公司和相
关公司、各级主管与员工及事务代理机构对译文中可能存在的
任何差错不承担任何责任。建议参考 Microchip Technology
Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便
利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或
暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用
性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。如果将 Microchip 器件用于生命
维持和 / 或生命安全应用,一切风险由买方自负。买方同意在
由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障
Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识
产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron、
dsPIC、 K
EEL OQ、 K EEL OQ 徽标、 MPLAB、 PIC、
PICmicro、 PICSTART、 PRO MATE、 rfPIC 和 SmartShunt
均为 Microchip Technology Inc. 在美国和其他国家或地区的
注册商标。
FilterLab、 Linear Active Thermistor、 MXDEV、 MXLAB、
SEEVAL、SmartSensor 和 The Embedded Control Solutions
Company 均为 Microchip Technology Inc.在美国的注册商
标。
Analog-for-the-Digital Age、 Application Maestro、
CodeGuard、 dsPICDEM、 dsPICDEM.net、 dsPICworks、
dsSPEAK、 ECAN、 ECONOMONITOR、 FanSense、
In-Circuit Serial Programming、 ICSP、 ICEPIC、 Mindi、
MiWi、MPASM、 MPLAB Certified 徽标、 MPLIB、 MPLINK、
mTouch、 PICkit、 PICDEM、 PICDEM.net、 PICtail、 PIC
32
徽标、 PowerCal、 PowerInfo、 PowerMate、 PowerTool、
REAL ICE、 rfLAB、 Select Mode、 Total Endurance、
UNI/O、WiperLock 和 ZENA 均为 Microchip Technology Inc.在
美国和其他国家或地区的商标。
SQTP 是 Microchip Technology Inc . 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。
© 2008, Microchip Technology Inc .版权所有。
Microchip
Gresham
印度的设计中心均通过了
MCU与dsPIC® DSC、KEE LOQ
设、非易失性存储器和模拟产品方面的质量体系流程均符合
16949:2002
系也已通过了
位于美国亚利桑那州
的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和
。此外,
ISO 9001:2000
Chandler和Te mp e
ISO/TS-16949:2002
®
跳码器件、串行
Microchip
在开发系统的设计和生产方面的质量体
认证。
与位于俄勒冈州
认证。公司在
EEPROM
®
PIC
、单片机外
ISO/TS-
DS41302A_CN 第 ii 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
8 引脚 8 位 CMOS 闪存单片机
高性能 RISC CPU :
• 仅需学习 35 条指令:
- 除了跳转指令以外,所有指令都是单周期的
• 工作速度:
-DC- 20 MHz 振荡器 / 时钟输入
-DC- 200 ns 指令周期
• 中断能力
•8层深硬件堆栈
• 直接、间接和相对寻址模式
单片机特性:
• 精确的内部振荡器:
- 出厂时精度已校准到 ±1%,典型值
- 软件可选择频率范围: 4MHz或 8 MHz
• 省电休眠模式
• 电压范围:
- PIC12F609/615: 2.0V 至 5.5V
- PIC12HV609/615: 2.0V 到用户定义的最大
值 (见 “注”)
• 工业级和扩展级温度范围
• 上电复位 ( Power-on Reset, POR)
• 上电延时定时器 ( Power-up Timer, PWRT)和
振荡器起振定时器 ( Oscillator Start-up Timer,
OST)
• 欠压复位 ( Brown-out Reset, BOR)
• 带独立振荡器的看门狗定时器 ( Watchdog
Timer, WDT)以保证可靠运行
• 带弱上拉的主复位引脚,与通用输入功能复用
• 可编程代码保护
• 高耐用性闪存:
- 闪存耐写次数达 100,000 次
- 闪存数据保存期: > 40 年
低功耗特性:
• 待机电流:
-2.0V时典型值为 50 nA
• 工作电流:
-32kHz、 2.0V 时典型值为 11 µA
-4MHz、 2.0V 时典型值为 260 µA
• 看门狗定时器电流:
-2.0V时典型值为 1 µ A
外设特性:
• 并联稳压器 (仅限 PIC12HV609/615):
-5伏稳压
-4mA到 50 mA 并联电流范围
•5个 I/O 引脚和 1 个只用作输入的引脚
• 高灌 / 拉电流能力,可直接驱动 LED
- 引脚电平变化中断或引脚
- 可单独编程的弱上拉
• 模拟比较器模块,具有:
-1个模拟比较器
- 片上可编程参考电压 ( CVREF )模块 ( VDD
的 %)
- 可从外部访问比较器输入和输出
- 内置滞后 (软件可选择)
• Timer0 :带有 8位可编程预分频器的 8 位定时器/ 计
数器
• 增强型 Timer1:
- 带有预分频器的 16 位定时器 / 计数器
- 外部 Timer1 门控 (计数使能)
- 如果选用 INTOSC 模式,可选择 OSC1 和
OSC2 之间的振荡器 (工作在 LP 模式下)作
为 Timer1 的振荡器
- 可选择系统时钟作为 Timer1 的振荡器
• 通过两个引脚进行在线串行编程 ( In-Circuit
Serial Programming
仅限 PIC12F615/HV615:
• 增强型捕捉、比较和 PWM 模块:
-16位捕捉,最大分辨率 12.5 ns
- 比较,最大分辨率 200 ns
-10位 PWM,带有 1 或 2 路输出通道,1路输出
通道可编程 “死区”,最高频率 20 kHz ,自
动关闭
•A/D转换器:
-10位分辨率和 4 路通道,采样内部参考电压
•Timer2:带有 8 位周期寄存器、预分频器和后分频
器的 8 位定时器 / 计数器
TM
, ICSP TM)
注: 并联稳压器两端的电压不应超过 5V 。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 1 页
PIC12F609/615/12HV609/615
器件
PIC12F609 1024 64 5 0 1 1/1 2.0V-5.5V
PIC12HV609 1024 64 5 0 1 1/1
PIC12F615 1024 64 5 4 1 2/1 2.0V-5.5V
PIC12HV615 1024 64 5 4 1 2/1
程序存储器 数据存储器
闪存 (字) SRAM (字节)
I/O
10 位 A/D
(通道数)
比较器
8/16 位
定时器
电压范围
2.0V- 用户定义
2.0V- 用户定义
PIC12F609/HV609 8 引脚示意图 ( PDIP、 SOIC、 TSSOP 和 DFN)
GP5/T1CKI/OSC1/CLKIN
GP4/CIN1-/T1G
/OSC2/CLKOUT
GP3/MCLR
VDD
/VPP
1
2
PIC12F609/
HV609
3
4
表 1: PIC12F609/HV609 引脚汇总 ( PDIP、 SOIC、 TSSOP 和 DFN)
I/O
GP0 7 CIN+ — IOC
GP1 6 CIN0- — IOC
GP2 5 COUT T0CKI INT/IOC
GP3
GP4 3 CIN1- T1G IOC
GP5 2 — T1CKI IOC
— 1 — — — — VDD
— 8— ——— VSS
注 1 : 仅用作输入。
引脚 比较器 定时器 中断 上拉 基本功能
(1)
4—
—
IOC
2 : 仅当引脚被配置为外部 MCLR 时。
V
8
7
6
5
SS
GP0/CIN+/ICSPDAT
GP1/CIN0-/ICSPCLK
GP2/T0CKI/INT/COUT
有
有
有
(2)
有
有
有
ICSPDAT
ICSPCLK
—
MCLR/VPP
OSC2/CLKOUT
OSC1/CLKIN
DS41302A_CN 第 2 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
PIC12F615/HV615 8 引脚示意图 ( PDIP、 SOIC、 TSSOP 和 DFN)
GP5/T1CKI/P1A*/OSC1/CLKIN
GP4/AN3/CIN1-/T1G
* 备用引脚功能。
VDD
/P1B*/OSC2/CLKOUT
GP3/T1G*/MCLR/VPP
1
2
PIC12F615/
HV615
3
4
V
8
7
6
5
SS
GP0/AN0/CIN+/P1B/ICSPDAT
GP1/AN1/CIN0-/V
GP2/AN2/T0CKI/INT/COUT/CCP1/P1A
REF/ICSPCLK
表 2: PIC12F615/HV615 引脚汇总 ( PDIP、 SOIC、 TSSOP 和 DFN)
I/O
引脚 模拟 比较器 定时器
GP0 7 AN0 CIN+ — P1B IOC
GP1 6 AN1 CIN0- — — IOC
GP2 5 AN2 COUT T0CKI CCP1/P1A INT/IOC
(1)
GP3
GP4 3 AN3 CIN1- T1G P1B* IOC
GP5 2 — — T1CKI P1A* IOC
— 1 — — — — — — VDD
—8 — — — — — — VSS
注 1 : 仅用作输入。
4— — T 1 G *— I O C
* 备用引脚功能。
2 : 仅当引脚被配置为外部 MCLR
时。
CCP
中断 上拉 基本功能
有
ICSPCLK/V
OSC2/CLKOUT
OSC1/CLKIN
有
有
有
(2)
有
有
ICSPDAT
REF
—
MCLR/VPP
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 3 页
PIC12F609/615/12HV609/615
目录
1.0 器件概述 ....................................................................................................................................................................................... 5
2.0 存储器构成 ................................................................................................................................................................................... 9
3.0 振荡器模块 ................................................................................................................................................................................. 25
4.0 I/O 端口 ....................................................................................................................................................................................... 31
5.0 Timer0 模块 ................................................................................................................................................................................ 41
6.0 带门控的 Timer1 模块 ................................................................................................................................................................. 45
7.0 Timer2 模块 (仅限 PIC12F615/HV615)................................................................................................................................... 51
8.0 比较器模块 ................................................................................................................................................................................. 53
9.0 模数转换器 (ADC)模块 (仅限 PIC12F615/HV615)............................................................................................................. 65
10.0 增强型捕捉 / 比较 /PWM (带自动关闭和死区)模块 (仅限 PIC12F615/HV615)................................................................... 75
11.0 CPU 的特殊功能 ......................................................................................................................................................................... 93
12.0 稳压器 ....................................................................................................................................................................................... 111
13.0 指令集汇总 ............................................................................................................................................................................... 113
14.0 开发支持 ................................................................................................................................................................................... 123
15.0 电气规范 ................................................................................................................................................................................... 127
16.0 直流和交流特性图表 ................................................................................................................................................................. 149
17.0 封装信息 ................................................................................................................................................................................... 151
附录 A : 数据手册版本历史 .......................................................................................................................................................... 157
附录 B : 从其他 PIC® 器件移植 ................................................................................................................................................... 157
索引 ................................................................................................................................................................................................... 159
Microchip 网站.................................................................................................................................................................................... 163
变更通知客户服务 .............................................................................................................................................................................. 163
客户支持............................................................................................................................................................................................. 163
读者反馈表 ......................................................................................................................................................................................... 164
产品标识体系...................................................................................................................................................................................... 165
致客户
我们旨在提供最佳文档供客户正确使用 Microchip 产品。为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。出
版物的质量将随新文档及更新版本的推出而得到提升。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为
docerrors@microchip.com ,或将本数据手册后附的 《读者反馈表》传真到 86-21-5407 5066 。我们期待您的反馈。
最新数据手册
欲获得本数据手册的最新版本,请查询我公司的网站:
http://www.microchip.com
查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号,例如:DS30000A 是 DS30000
的 A 版本。
勘误表
现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到器
件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
• Microchip 网站 http://www.microchip.com
• 当地 Microchip 销售办事处 (见最后一页)
在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。
客户通知系统
欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。
DS41302A_CN 第 4 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
1.0 器件概述
本数据手册涵盖PIC12F609/615/12HV609/615 器件。这
些器件采用 8 引脚 PDIP、SOIC、TSSOP 和 DFN 封装。
图 1-1 : PIC12F609/HV609 框图
13
MCLR
INT
程序计数器
8 层堆栈
(13 位)
直接地址
上电延时
定时器
振荡器
起振定时器
上电
复位
看门狗
定时器
欠压
复位
VDD
OSC1/CLKIN
OSC2/CLKOUT
T1G
程序
总线
内部
振荡器
模块
配置
闪存
1K X 14
程序
存储器
14
指令寄存器
指令
译码与
控制
时序
发生
8
这些器件的框图和引脚说明如下所示:
• PIC12F609/HV609 (图 1-1,表 1-1)
• PIC12F615/HV615 (图 1-2,表 1-2)
间接
地址
8
VSS
7
数据总线
RAM 地址
地址 MUX
3
8
W 寄存器
(仅限 PIC12HV609 )
RAM
64 字节
文件
寄存器
9
8
FSR 寄存器
STATUS 寄存器
MUX
ALU
并联稳压器
GPIO
GP0
GP1
GP2
GP3
GP4
GP5
T1CKI
T0CKI
Timer0 Timer1
比较器参考电压
绝对参考电压
模拟比较器
和参考电压
CIN0-
CIN1-
COUT
CIN+
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 5 页
PIC12F609/615/12HV609/615
图 1-2: PIC12F615/HV615 框图
OSC1/CLKIN
OSC2/CLKOUT
T1G*
T1G
程序
总线
内部
振荡器
模块
配置
闪存
1K X 14
程序
存储器
14
指令寄存器
指令
译码与
控制
时序
发生
8
13
MCLR
INT
程序计数器
8 层堆栈
(13 位)
直接地址
上电延时
定时器
振荡器
起振定时器
上电
复位
看门狗
定时器
欠压
复位
VDD
VSS
7
数据总线
64 字节
RAM 地址
地址 MUX
3
ALU
8
W 寄存器
(仅限 PIC12HV615 )
RAM
文件
寄存器
9
8
FSR 寄存器
STATUS 寄存器
MUX
并联稳压器
间接
地址
8
GPIO
GP0
GP1
GP2
GP3
GP4
GP5
T1CKI
T0CKI
VREF
模数转换器
AN0
AN1
AN2
AN3
* 备用引脚功能。
Timer0 Timer1
比较器参考电压
绝对参考电压
Timer2
模拟比较器
和参考电压
CIN+
CIN0-
CIN1-
COUT
ECCP
P1B*
CCP1/P1A
P1B
P1A*
DS41302A_CN 第 6 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
表 1-1 : PIC12F609/HV609 引脚说明
名称 功能 输入类型 输出类型 说明
GP0/CIN+/ICSPDAT GP0 TTL CMOS
CIN+ AN —
ICSPDAT ST CMOS
GP1/CIN0-/ICSPCLK GP1 TTL CMOS
CIN0- AN —
ICSPCLK ST —
GP2/T0CKI/INT/COUT GP2 ST CMOS
T0CKI ST —
INT ST —
COUT — CMOS
GP3/MCLR
GP4/CIN1-/T1G
CLKOUT
GP5/T1CKI/OSC1/CLKIN GP5 TTL CMOS
DD V DD
V
SS V SS
V
图注: AN = 模拟输入或输出 CMOS = CMOS 兼容输入或输出 HV = 高电压
/VPP GP3 TTL —
MCLR
PP HV —
V
/OSC2/
ST = CMOS 电平的施密特触发器输入 TTL = TTL 兼容输入 XTAL = 晶振
GP4 TTL CMOS
CIN1-
T1G
OSC2 — XTAL
CLKOUT — CMOS
T1CKI ST —
OSC1 XTAL —
CLKIN ST —
ST —
AN —
ST —
电源
电源
具有可编程上拉和电平变化中断功能的通用 I/O
比较器的同相输入
串行编程数据 I/O
具有可编程上拉和电平变化中断功能的通用 I/O
比较器的反相输入
串行编程时钟
具有可编程上拉和电平变化中断功能的通用 I/O
Timer0 的时钟输入
外部中断
比较器输出
具有电平变化中断功能的通用输入
带内部上拉的主复位
编程电压
具有可编程上拉和电平变化中断功能的通用 I/O
比较器的反相输入
Timer1 门控 (计数使能)
晶振 / 谐振器
OSC/4 输出
F
具有可编程上拉和电平变化中断功能的通用 I/O
Timer1 的时钟输入
晶振 / 谐振器
外部时钟输入 /RC 振荡器连接
—
正电源
—
参考地
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 7 页
PIC12F609/615/12HV609/615
表 1-2 : PIC12F615/HV615 引脚说明
名称 功能 输入类型 输出类型 说明
GP0/AN0/CIN+/P1B/ICSPDAT GP0 TTL CMOS
AN0 AN —
CIN+ AN —
P1B — CMOS
ICSPDAT ST CMOS
GP1/AN1/CIN0-/V
GP2/AN2/T0CKI/INT/COUT/CCP1/
P1A
GP3/T1G
GP4/AN3/CIN1-/T1G
CLKOUT
GP5/T1CKI/P1A*/OSC1/CLKIN GP5 TTL CMOS
V
V
图注: AN = 模拟输入或输出 CMOS=CMOS 兼容输入或输出 HV = 高电压
*/MCLR/VPP GP3 TTL —
DD V DD
SS V SS
* 备用引脚功能。
REF/ICSPCLK GP1 TTL CMOS
AN1 AN —
CIN0- AN —
REF AN —
V
ICSPCLK ST —
GP2 ST CMOS
AN2 AN —
T0CKI ST —
INT ST —
COUT — CMOS
CCP1 ST CMOS
P1A — CMOS
*S T —
T1G
MCLR
V
PP HV —
/P1B*/OSC2/
ST = CMOS 电平的施密特触发器输入 TTL = TTL 兼容输入 XTAL= 晶振
GP4 TTL CMOS
AN3 AN —
CIN1-
T1G
P1B* — CMOS
OSC2 — XTAL
CLKOUT — CMOS
T1CKI ST —
P1A* — CMOS
OSC1 XTAL —
CLKIN ST —
ST —
AN —
ST —
电源
电源
—
—
具有可编程上拉和电平变化中断功能的通用 I/O
A/D 通道 0 的输入
比较器的同相输入
PWM 输出
串行编程数据 I/O
具有可编程上拉和电平变化中断功能的通用 I/O
A/D 通道 1 的输入
比较器的反相输入
A/D 的外部参考电压
串行编程时钟
具有可编程上拉和电平变化中断功能的通用 I/O
A/D 通道 2 的输入
Timer0 的时钟输入
外部中断
比较器输出
捕捉输入 / 比较输出 /PWM 输出
PWM 输出
具有电平变化中断功能的通用输入
Timer1 门控 (计数使能),备用引脚
带内部上拉的主复位
编程电压
具有可编程上拉和电平变化中断功能的通用 I/O
A/D 通道 3 的输入
比较器的反相输入
Timer1 门控 (计数使能)
PWM 输出,备用引脚
晶振 / 谐振器
OSC/4 输出
F
具有可编程上拉和电平变化中断功能的通用 I/O
Timer1 的时钟输入
PWM 输出,备用引脚
晶振 / 谐振器
外部时钟输入 /RC 振荡器连接
正电源
参考地
DS41302A_CN 第 8 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
2.0 存储器构成
2.1 程序存储器构成
PIC12F609/615/12HV609/615 器件具有一个 13 位程序计
数器,能够寻址 8K x 14 的程序存储空间。只有
PIC12F609/615/12HV609/615 的前 1K x 14 ( 0000h03FFh)存储空间是物理实现的。访问超出上述范围的存
储单元,将回到前 1K x 14 空间内。复位向量位于 0000h,
而中断向量位于 0004h (见图 2-1 )。
图 2-1 : PIC12F609/615/12HV609/615
的程序存储器映射和堆栈
PC<12:0>
CALL, RETURN
RETFIE, RETLW
第 1 层堆栈
第 2 层堆栈
第 8 层堆栈
复位向量
中断向量
片上程序
存储器
折回到 0000h-07FFh
13
0000h
0004h
0005h
03FFh
0400h
2.2 数据存储器构成
数据存储器 (见图 2-2 )被划分为两个存储区,每个存
储区由通用寄存器(General Purpose Register ,GPR)
和特殊功能寄存器 (Special Function Register,SFR )
组成。特殊功能寄存器位于每个存储区的前 32 个单元
中。Bank 0 中的寄存器单元 40h-7Fh 是通用寄存器,以
静态 RAM 的形式实现。Bank 1 中的寄存器单元F0h-FFh
指向 Bank 0 中的地址 70h-7Fh 。所有其他 RAM 均未实
现,读取时返回 0。STATUS 寄存器的 RP0 位是存储区
选择位。
RP0
0 → 选择 Bank 0
1 → 选择 Bank 1
注: STATUS 寄存器的 IRP 和 RP1 位保留,且
应始终保持为 0。
2.2.1 通用寄存器文件
PIC12F609/615/12HV609/615 的寄存器文件组织为 64 x 8。
通过文件选择寄存器 (File Select Register , FSR ),
可以直接或间接地访问每个寄存器(见第 2.4 节“间接
寻址、 INDF 和 FSR 寄存器”)。
2.2.2 特殊功能寄存器
特殊功能寄存器为 CPU 和外设模块用来对器件所需操
作进行控制的寄存器 (见表 2-2 )。这些寄存器皆为静
态 RAM 。
特殊功能寄存器可分为两类,即:内核和外设。本节将
介绍与“内核”相关的特殊功能寄存器。与外设模块相
关的特殊功能寄存器将在相应的外设功能模块章节中
介绍。
1FFFh
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 9 页
PIC12F609/615/12HV609/615
图 2-2 : PIC12F609/HV609 的数据
存储器映射
间接地址
TMR0
PCL
STATUS
FSR
GPIO
PCLATH
INTCON
PIR1
TMR1L
TMR1H
T1CON
VRCON
CMCON0
CMCON1
文件
地址
(1)
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
10h
11h
12h
13h
14h
15h
16h
17h
18h
19h
1Ah
1Bh
1Ch
1Dh
1Eh
1Fh
20h
间接地址
OPTION_REG
PCL
STATUS
FSR
TRISIO
PCLATH
INTCON
PIE1
PCON
OSCTUNE
WPU
IOC
ANSEL
文件
地址
(1)
80h
81h
82h
83h
84h
85h
86h
87h
88h
89h
8Ah
8Bh
8Ch
8Dh
8Eh
8Fh
90h
91h
92h
93h
94h
95h
96h
97h
98h
99h
9Ah
9Bh
9Ch
9Dh
9Eh
9Fh
A0h
图 2-3 : PIC12F615/HV615 的数据
存储器映射
间接地址
TMR0
PCL
STATUS
FSR
GPIO
PCLATH
INTCON
PIR1
TMR1L
TMR1H
T1CON
TMR2
T2CON
CCPR1L
CCPR1H
CCP1CON
PWM1CON
ECCPAS
VRCON
CMCON0
CMCON1
ADRESH
ADCON0
文件
地址
(1)
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
10h
11h
12h
13h
14h
15h
16h
17h
18h
19h
1Ah
1Bh
1Ch
1Dh
1Eh
1Fh
20h
间接地址
OPTION_REG
PCL
STATUS
FSR
TRISIO
PCLATH
INTCON
PIE1
PCON
OSCTUNE
PR2
APFCON
WPU
IOC
ADRESL
ANSEL
文件
地址
(1)
80h
81h
82h
83h
84h
85h
86h
87h
88h
89h
8Ah
8Bh
8Ch
8Dh
8Eh
8Fh
90h
91h
92h
93h
94h
95h
96h
97h
98h
99h
9Ah
9Bh
9Ch
9Dh
9Eh
9Fh
A0h
3Fh
40h
通用
寄存器
64 字节
7Fh
Bank 0
未实现的数据存储单元,读为 0 。
注 1 : 不是实际存在的寄存器。
访问 70h-7Fh
Bank 1
EFh
F0h
FFh
通用
寄存器
64 字节
Bank 0
未实现的数据存储单元,读为 0 。
注 1 : 不是实际存在的寄存器。
3Fh
40h
7Fh
访问 70h-7Fh
Bank 1
EFh
F0h
FFh
DS41302A_CN 第 10 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
表 2-1 : PIC12F609/HV609 特殊功能寄存器汇总, BANK 0
地址 名称
Bank 0
00h INDF
01h TMR0
02h PCL
03h STATUS IRP
04h FSR
05h GPIO
06h —
07h —
08h —
09h —
0Ah PCLATH
0Bh INTCON GIE PEIE T0IE INTE GPIE T0IF INTF GPIF 0000 0000 17, 100
0Ch PIR1
0Dh —
0Eh TMR1L
0Fh TMR1H
10h T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
11h —
12h —
13h —
14h —
15h —
16h —
17h —
18h —
19h VRCON CMVREN
1Ah CMCON0 CMON COUT CMOE CMPOL
1Bh — — — — —
1Ch CMCON1
1Dh —
1Eh —
1Fh —
图注: — = 未实现位 (读为 0 ), u = 不变, x = 未知, q = 值取决于具体条件,阴影 = 未实现
注 1 : IRP 和 RP1 位保留,始终保持这两位清零。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
通过用 FSR 的内容寻址这个存储单元来寻址数据存储器 (不是实际存在的寄存器)
Timer0 模块寄存器
程序计数器 ( PC)的低字节
(1)
间接数据存储器地址指针
— — GP5 GP4 GP3 GP2 GP1 GP0 --x0 x000 31, 100
未实现
未实现
未实现
未实现
— — —
— — — —C M I F— —T M R 1 I F---- 0--0 19, 100
未实现
16 位 TMR1 寄存器低字节的保持寄存器
16 位 TMR1 寄存器高字节的保持寄存器
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
— — — T1ACS CMHYS — T1GSS CMSYNC ---0 0-10 59, 101
未实现
未实现
未实现
(1)
RP1
— VRR FVREN VR3 VR2 VR1 VR0 0-00 0000 62, 101
RP0 TO PD ZD CC0001 1xxx 15, 100
程序计数器高 5 位的写缓冲器
TMR1CS TMR1ON 0000 0000 49, 100
—C M R—C M C H0000 -0-0 58, 101
POR/BOR
时的值
xxxx xxxx 22, 100
xxxx xxxx 41, 100
0000 0000 22, 100
xxxx xxxx 22, 100
— —
— —
— —
— —
---0 0000 22, 100
— —
xxxx xxxx 45, 100
xxxx xxxx 45, 100
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
所在页
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 11 页
PIC12F609/615/12HV609/615
表 2-2 : PIC12F615/HV615 特殊功能寄存器汇总, BANK 0
地址 名称
Bank 0
00h INDF
01h TMR0
02h PCL
03h STATUS IRP
04h FSR
05h GPIO
06h —
07h —
08h —
09h —
0Ah PCLATH
0Bh INTCON GIE PEIE T0IE INTE GPIE T0IF INTF GPIF 0000 0000 17, 101
0Ch PIR1
0Dh —
0Eh TMR1L
0Fh TMR1H
10h T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
11h TM R2
12h T2CON
13h CCPR1L
14h CCPR1H
15h CCP1CON P1M
16h PWM1CON PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 0000 0000 91, 101
17h ECCPAS ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 0000 0000 88, 101
18h —
19h VRCON CMVREN
1Ah CMCON0 CMON COUT CMOE CMPOL
1Bh — — — — —
1Ch CMCON1
1Dh —
1Eh ADRESH
1Fh ADCON0 ADFM VCFG
图注: — = 未实现位 (读为 0 ), u = 不变, x = 未知, q = 值取决于具体条件,阴影 = 未实现
注 1 : IRP 和 RP1 位保留,始终保持这两位清零。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
通过用 FSR 的内容寻址这个存储单元来寻址数据存储器 (不是实际存在的寄存器)
Timer0 模块寄存器
程序计数器 ( PC)的低字节
(1)
间接数据存储器地址指针
— — GP5 GP4 GP3 GP2 GP1 GP0 --x0 x000 31, 101
未实现
未实现
未实现
未实现
— — —
— ADIF CCP1IF —C M I F— TMR2IF TMR1IF -00- 0-00 19, 101
未实现
16 位 TMR1 寄存器低字节的保持寄存器
16 位 TMR1 寄存器高字节的保持寄存器
Timer2 模块寄存器
— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 52, 101
捕捉 / 比较 /PWM 寄存器 1 的低字节
捕捉 / 比较 /PWM 寄存器 1 的高字节
未实现
— — — T1ACS CMHYS — T1GSS CMSYNC ---0 0-10 59, 101
未实现
左对齐 A/D 结果的高 8 位或右对齐 A/D 结果的高 2 位
(1)
RP1
— DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0-00 0000 75, 101
— VRR FVREN VR3 VR2 VR1 VR0 0-00 0000 62, 101
RP0 TO PD ZD CC0001 1xxx 15, 101
程序计数器高 5 位的写缓冲器
TMR1CS TMR1ON 0000 0000 49, 101
—C M R—C M C H0000 -0-0 58, 101
— CHS2 CHS1 CHS0 GO/DONE ADON 00-0 0000 70, 101
POR/BOR
时的值
xxxx xxxx 22, 101
xxxx xxxx 41, 101
0000 0000 22, 101
xxxx xxxx 22, 101
— —
— —
— —
— —
---0 0000 22, 101
— —
xxxx xxxx 45, 101
xxxx xxxx 45, 101
0000 0000 51, 101
XXXX XXXX 76, 101
XXXX XXXX 76, 101
— —
— —
xxxx xxxx 71, 101
所在页
DS41302A_CN 第 12 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
表 2-3 : PIC12F609/HV609 特殊功能寄存器汇总, BANK 1
地址 名称
Bank 1
80h INDF
81h OPTION_REG GPPU
82h PCL
83h STATUS IRP
84h FSR
85h TRISIO
86h —
87h —
88h —
89h —
8Ah PCLATH
8Bh INTCON GIE PEIE T0IE INTE GPIE T0IF INTF GPIF
8Ch PIE1
8Dh —
8Eh PCON
8Fh —
90h OSCTUNE
91h —
92h —
93h —
94h —
95h WPU
96h IOC
97h —
98h —
99h —
9Ah —
9Bh —
9Ch —
9Dh —
9Eh —
9Fh ANSEL
图注: — = 未实现位 (读为 0 ), u = 不变, x = 未知, q = 值取决于具体条件,阴影 = 未实现
注 1 : IRP 和 RP1 位保留,始终保持这两位清零。
(2)
2: 当配置字寄存器中的 MCLRE 为 1 时, GP3 上拉使能。
3: MCLR
4: 由于 TRISIO3 是仅输入引脚,因此它始终读为 1 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
通过用 FSR 的内容寻址这个存储单元来寻址数据存储器 (不是实际存在的寄存器)
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 16, 101
程序计数器 ( PC)的低字节
(1)
间接数据存储器地址指针
— — TRISIO5 TRISIO4 TRISIO3
未实现
未实现
未实现
未实现
— — —
— — — —C M I E— —T M R 1 I E---- 0--0 18, 101
未实现
— — — — — —P O RBOR ---- --qq 20, 101
未实现
— — — TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 29, 101
未实现
未实现
未实现
未实现
— —W P U 5W P U 4— W P U 2W P U 1W P U 0--11 -111 34, 101
— — IOC5 IOC4 IOC3 IOC2 IOC1 IOC0 --00 0000 34, 101
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
— — — —A N S 3— ANS1 ANS0 ---- 1-11 33, 101
和 WDT 复位不影响先前的数据锁存值。复位时 GPIF 位将清零,但如果存在不匹配则将置 1。
RP1
(1)
RP0 TO PD ZD CC0001 1xxx 15, 101
(4)
TRISIO2 TRISIO1 TRISIO0 --11 1111 31, 101
程序计数器高 5 位的写缓冲器
POR/BOR
时的值
xxxx xxxx 22, 101
0000 0000 22, 101
xxxx xxxx 22, 101
— —
— —
— —
— —
---0 0000 22, 101
(3)
0000 0000 17, 101
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
所在页
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 13 页
PIC12F609/615/12HV609/615
表 2-4 : PIC12F615/HV615 特殊功能寄存器汇总, BANK 1
地址 名称
Bank 1
80h INDF
81h OPTION_REG GPPU
82h PCL
83h STATUS IRP
84h FSR
85h TRISIO
86h —
87h —
88h —
89h —
8Ah PCLATH
8Bh INTCON GIE PEIE T0IE INTE GPIE T0IF INTF GPIF
8Ch PIE1
8Dh —
8Eh PCON
8Fh —
90h OSCTUNE
91h —
92h PR2
93h APFCON
94h —
95h WPU
96h IOC
97h —
98h —
99h —
9Ah —
9Bh —
9Ch —
9Dh —
9Eh ADRESL
9Fh ANSEL
图注: — = 未实现位 (读为 0 ), u = 不变, x = 未知, q = 值取决于具体条件,阴影 = 未实现
注 1 : IRP 和 RP1 位保留,始终保持这两位清零。
(2)
2: 当在配置字寄存器中 MCLRE 为 1 时, GP3 上拉使能。
3: MCLR
4: 由于 TRISIO3 是仅输入引脚,因此它始终读为 1 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
通过用 FSR 的内容寻址这个存储单元来寻址数据存储器 (不是实际存在的寄存器)
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 16, 101
程序计数器 ( PC)的低字节
(1)
间接数据存储器地址指针
— — TRISIO5 TRISIO4 TRISIO3
未实现
未实现
未实现
未实现
— — —
— ADIE CCP1IE —C M I E — TMR2IE TMR1IE -00- 0-00 18, 101
未实现
— — — — — —P O RBOR ---- --qq 20, 101
未实现
— — — TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 29, 101
未实现
Timer2 模块周期寄存器
— — — T1GSEL — — P1BSEL P1ASEL ---0 --00 18, 101
未实现
— —W P U 5W P U 4— WPU2 WPU1 WPU0 --11 -111 34, 101
— — IOC5 IOC4 IOC3 IOC2 IOC1 IOC0 --00 0000 34, 101
未实现
未实现
未实现
未实现
未实现
未实现
未实现
左对齐结果的低 2 位或右对齐结果的低 8 位
— ADCS2 ADCS1 ADCS0 ANS3 ANS2 ANS1 ANS0 -000 1111 33, 101
和 WDT 复位不影响先前的数据锁存值。复位时 GPIF 位将清零,但如果存在不匹配则将置 1。
RP1
(1)
RP0 TO PD ZD CC0001 1xxx 15, 101
(4)
TRISIO2 TRISIO1 TRISIO0 --11 1111 31, 101
程序计数器高 5 位的写缓冲器
POR/BOR
时的值
xxxx xxxx 22, 101
0000 0000 22, 101
xxxx xxxx 22, 101
— —
— —
— —
— —
---0 0000 22, 101
(3)
0000 0000 17, 101
— —
— —
— —
1111 1111 51, 101
— —
— —
— —
— —
— —
— —
— —
— —
xxxx xxxx 71, 101
所在页
DS41302A_CN 第 14 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
2.2.2.1 STATUS 寄存器
状态 (STATUS)寄存器如寄存器 2-1 所示,包括:
•ALU的算术运算状态
• 复位状态
• 数据存储器 ( RAM)的存储区选择位
STATUS 寄存器与任何其他寄存器一样,可作为任何指
令的目标寄存器。如果一条影响 Z 、 DC 或 C 位的指令
以 STATUS 寄存器作为目标寄存器,那么对这三个位的
写操作将被禁止。这些位根据器件逻辑被置 1 或清零。
而且, TO
将 STATUS 寄存器作为目标寄存器的指令时,运行结果
可能会与预想的不同。
和 PD 位均为不可写位。因此,当执行一条
例如,指令 CLRF STATUS 将会清零 STATUS 寄存器中
的高三位,并将 Z 位置 1 。这将使 STATUS 寄存器中的
值成为 000u u1uu (其中 u = 不变)。
因此,建议仅使用 BCF 、 BSF 、 SWAPF 和 MOVWF 指令
来改变 STATUS 寄存器的值,因为这些指令不会影响任
何状态位。关于其他不会影响任何状态位的指令,请参
见第 13.0 节 “指令集汇总”。
注 1 :PIC12F609/615/12HV609/615 器件未使
用 STATUS 寄存器的 IRP 和 RP1 位,它
们应保持清零。不建议使用这两位,因为
这可能会影响与未来产品的向上兼容性。
2 : 在减法运算中, C 和 DC 位分别作为借位
位和半借位位。请参见 SUBLW 和 SUBWF
指令中的示例。
寄存器 2-1 : STATUS:状态寄存器
保留 保留
IRP RP1 RP0 TO PD ZD CC
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
注 1: 对于借位,极性是相反的。减法是通过加上第二个操作数的二进制补码来执行的。对于移位指令 ( RRF 和
IRP:该位保留且应保持为 0 。
RP1:该位保留且应保持为 0 。
RP0:寄存器存储区选择位 (用于直接寻址)
1 = Bank 1 (80h – FFh )
0 = Bank 0 (00h – 7Fh )
TO:超时位
1 = 在上电、执行 CLRWDT 或 SLEEP 指令后
0 = 产生了 WDT 超时
PD
:掉电位
1 = 在上电或执行 CLRWDT 指令后
0 = 执行 SLEEP 指令
Z:全零标志位
1 = 算术运算或逻辑运算的结果为零
0 = 算术运算或逻辑运算的结果不为零
DC:半进位 / 借位
1 = 结果的第 4 个低位发生了进位
0 = 结果的第 4 个低位未发生进位
C:进位 / 借位
1 = 结果中最高位发生了进位
0 = 结果中最高位未发生进位
RLF),此位装入源寄存器的最高位或最低位。
位( ADDWF、 ADDLW 、 SUBLW 和 SUBWF 指令),对于借位,极性是相反的。
(1)
位
(ADDWF 、 ADDLW 、 SUBLW 和 SUBWF 指令)
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 15 页
PIC12F609/615/12HV609/615
2.2.2.2 OPTION 寄存器
选项 (OPTION)寄存器是可读写寄存器,有各种控制
位,用来配置以下各项:
•Timer0/WDT预分频器
• 外部 GP2/INT 中断
•Timer0
•GPIO的弱上拉
寄存器 2-2 : OPTION_REG :OPTION 寄存器
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
GPPU
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
INTEDG T0CS T0SE PSA PS2 PS1 PS0
注: 要使 Timer0 获得 1:1 的预分频比,可将
OPTION 寄存器的 PSA 位置为 1 ,以将预
分频器分配给 WDT 。请参见第 5.1.3 节“可
软件编程的预分频器”。
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2-0
GPPU
:GPIO 上拉使能位
1 = 禁止 GPIO 上拉
0 = 通过各端口锁存值使能 GPIO 上拉
INTEDG:中断触发边沿选择位
1 = GP2/INT 引脚的上升沿触发中断
0 = GP2/INT 引脚的下降沿触发中断
T0CS: Timer0 时钟源选择位
1 = GP2/T0CKI 引脚上的电平跳变
0 = 内部指令周期时钟 (F
OSC/4)
T0SE : Timer0 时钟源边沿选择位
1 = 在 GP2/T0CKI 引脚信号从高至低跳变时,递增计数
0 = 在 GP2/T0CKI 引脚信号从低至高跳变时,递增计数
PSA:预分频器分配控制位
1 = 预分频器分配给 WDT
0 = 预分频器分配给 Timer0 模块
PS<2:0>:预分频比选择位
位值 TIMER0 预分频比 WDT 预分频比
000
001
010
011
100
101
110
111
1 : 2
1 : 4
1 : 8
1 : 16
1 : 32
1 : 64
1 : 128
1 : 256
1 : 1
1 : 2
1 : 4
1 : 8
1 : 16
1 : 32
1 : 64
1 : 128
DS41302A_CN 第 16 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
2.2.2.3 INTCON 寄存器
INTCON 寄存器是可读写的寄存器,它包含 TMR0 寄存
器溢出、GPIO 电平变化和外部 GP2/INT 引脚中断等的
各个允许位和标志位。
注: 当中断条件发生时,无论相应中断允许位
或全局中断允许位 GIE (在 INTCON 寄存
器中)的状态如何,中断标志位都将被置
1 。用户软件应在允许一个中断前,先将相
应的中断标志位清零。
寄存器 2-3 : INTCON :中断控制寄存器
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
GIE PEIE T0IE INTE GPIE T0IF INTF GPIF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
GIE:全局中断允许位
1 = 允许所有未被屏蔽的中断
0 = 禁止所有中断
PEIE:外设中断允许位
1 = 允许所有未被屏蔽的外设中断
0 = 禁止所有外设中断
T0IE: Timer0 溢出中断允许位
1 = 允许 Timer0 中断
0 = 禁止 Timer0 中断
INTE: GP2/INT 外部中断允许位
1 = 允许 GP2/INT 外部中断
0 = 禁止 GP2/INT 外部中断
GPIE: GPIO 电平变化中断允许位
1 = 允许 GPIO 电平变化中断
0 = 禁止 GPIO 电平变化中断
T0IF: Timer0 溢出中断标志位
1 = Timer0 寄存器溢出 (必须用软件清零)
0 = Timer0 寄存器未溢出
INTF: GP2/INT 外部中断标志位
1 = GP2/INT 外部中断发生 (必须用软件清零)
0 = GP2/INT 外部中断没有发生
GPIF: GPIO 电平变化中断标志位
1 = 至少有一个 GPIO <5:0> 引脚状态发生变化时 (必须用软件清零)
0 = GPIO <5:0> 引脚状态均未发生变化
(1)
(2)
注 1: IOC 寄存器也必须被使能。
2: 当 TMR0 计数出现计满返回时, T0IF 位将被置 1 。 TMR0 计数值在复位时不变,而且应在清零 T0IF 位之
前对其进行初始化。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 17 页
PIC12F609/615/12HV609/615
2.2.2.4 PIE1 寄存器
PIE1 寄存器包含外设中断允许位,如寄存器 2-4 所示。
寄存器 2-4 : PIE1 :外设中断允许寄存器 1
U-0 R/W-0 R/W-0 U-0 R/W-0 U-0 R/W-0 R/W-0
—A D I E
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
(1)
CCP1IE
(1)
—C M I E —T M R 2 I E
注: 必须将 INTCON 寄存器的 PEIE 位置 1 ,以
允许外设中断。
(1)
TMR1IE
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
注 1 :仅限 PIC12F615/HV615 。在 PIC12F609/HV609 上未实现,读为 0 。
未实现:读为 0
ADIE :A/D 转换器 (ADC )中断允许位
1 = 允许 ADC 中断
0 = 禁止 ADC 中断
CCP1IE:CCP1 中断允许位
1 = 允许 CCP1 中断
0 = 禁止 CCP1 中断
未实现:读为 0
CMIE:比较器中断允许位
1 = 允许比较器中断
0 = 禁止比较器中断
未实现:读为 0
TMR2IE: Timer2 与 PR2 匹配中断允许位
1 = 允许 Timer2 与 PR2 匹配中断
0 = 禁止 Timer2 与 PR2 匹配中断
TMR1IE: Timer1 溢出中断允许位
1 = 允许 Timer1 溢出中断
0 = 禁止 Timer1 溢出中断
(1)
(1)
(1)
DS41302A_CN 第 18 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
2.2.2.5 PIR1 寄存器
PIR1 寄存器包含外设中断标志位,如寄存器 2-5 所示。
寄存器 2-5 : PIR1 :外设中断请求寄存器 1
U-0 R/W-0 R/W-0 U-0 R/W-0 U-0 R/W-0 R/W-0
—A D I F
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
(1)
CCP1IF
(1)
—C M I F —T M R 2 I F
注: 当中断条件发生时,无论相应中断允许位或
全局中断允许位 GIE (在 INTCON 寄存器
中)的状态如何,中断标志位都将被置 1。
用户软件应在允许一个中断前,先将相应的
中断标志位清零。
(1)
TMR1IF
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
未实现:读为 0
ADIF :A/D 中断标志位
1 = A/D 转换完成
0 = A/D 转换未完成或尚未开始
CCP1IF :CCP1 中断标志位
捕捉模式:
1 = 发生了 TMR1 寄存器捕捉 (必须用软件清零)
0 = 未发生 TMR1 寄存器捕捉
比较模式
1 = 发生了 TMR1 寄存器的比较匹配 (必须用软件清零)
0 = 未发生 TMR1 寄存器的比较匹配
PWM
在此模式下不使用
未实现:读为 0
CMIF : 比较器中断标志位
1 = 比较器输出已改变 (必须用软件清零)
0 = 比较器输出未改变
未实现:读为 0
TMR2IF: Timer2 与 PR2 匹配中断标志位
1 = Timer2 与 PR2 发生匹配 (必须用软件清零)
0 = Timer2 与 PR2 未发生匹配
TMR1IF: Timer1 溢出中断标志位
1 = Timer1 寄存器溢出 (必须用软件清零)
0 = Timer1 寄存器未溢出
:
模式:
(1)
(1)
(1)
注 1:仅限 PIC12F615/HV615 。在 PIC12F609/HV609 上未实现,读为 0 。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 19 页
PIC12F609/615/12HV609/615
2.2.2.6 PCON 寄存器
电源控制 (PCON )寄存器 (见表 11-2 )包含区分以下
各种复位的标志位:
• 上电复位 ( POR)
• 欠压复位 ( BOR
• 看门狗定时器复位 ( WDT)
• 外部 MCLR 复位
PCON 寄存器还控制 BOR
PCON 寄存器位如寄存器 2-6 所示。
寄存器 2-6 : PCON :电源控制寄存器
U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0
— — — — — —P O RBOR
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
)
的软件使能。
(1)
bit 7-2
bit 1
bit 0
注 1 : 如果禁止欠压复位,则读为 0 。
未实现:读为 0
POR
:上电复位状态位
1 = 未发生上电复位
0 = 发生上电复位 (上电复位发生后,必须用软件置 1 )
BOR
:欠压复位状态位
1 = 未发生欠压复位
0 = 发生欠压复位 (欠压复位发生后,必须用软件置 1 )
DS41302A_CN 第 20 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
2.2.2.7 APFCON 寄存器
(仅限 PIC12F615/HV615 )
备用引脚功能控制(APFCON )寄存器用于将特定的外
设输入和输出功能配置到不同的引脚上。对于这两款器
件,可将 P1A 、 P1B 和 Timer1 门控功能配置到不同的
引脚上。
APFCON 寄存器位如寄存器 2-7 所示。
寄存器 2-7 : APFCON :电源控制寄存器
U-0 U-0 U-0 R/W-0 U-0 U-0 R/W-0 R/W-0
— — — T1GSEL — — P1BSEL P1ASEL
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-5
bit 4
bit 3-2
bit 1
bit 0
注 1:仅限 PIC12F615/HV615 。
2: 备用引脚功能。
未实现:读为 0
T1GSEL : TMR1 输入引脚选择位
1 = GP3/T1G
0 = GP4/AN3/CIN1-/T1G
未实现:读为 0
P1BSEL: P1B 输出引脚选择位
1 = GP4/AN3/CIN1-/T1G
0 = GP0/AN0/CIN+/P1B/ICSPDAT 上具有 P1B 功能
P1ASEL: P1A 输出引脚选择位
1 = GP5/T1CKI/P1A
0 = GP2/AN2/T0CKI/INT/COUT/CCP1/P1A 上具有 P1A 功能
(2)
/MCLR/VPP 上具有 T1G 功能
/P1B
/P1B
(2)
/OSC1/CLKIN 上具有 P1A 功能
(1)
(2)
/OSC2/CLKOUT 上具有 T1G 功能
(2)
/OSC2/CLKOUT 上具有 P1B 功能
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 21 页
PIC12F609/615/12HV609/615
2.3 PCL 和 PCLATH
程序计数器 ( PC)为 13 位宽。其低 8 位来自可读写的
PCL 寄存器,高 5 位(PC<12:8>)来自 PCLATH,不
能直接读写。只要发生复位,PC 就将被清零。图 2-4 显
示了装入 PC 值的两种情形。图 2-4 上方的例子说明在写
PCL (PCLATH<4:0> → PCH )时是如何装入 PC 的。
图 2-4 下方的例子说明了在执行 CALL 或 GOTO指令期间
(PCLATH<4:3> → PCH),是如何装入 PC 的。
图 2-4 : 不同情况下 PC 的装入
PCH PCL
12 8 7 0
PC
PCLATH<4:0>
5
PCLATH
PCH PCL
12 11 10 0
PC
2
87
PCLATH<4:3>
PCLATH
8
11
2.3.1 修改 PCL
在执行以 PCL 寄存器作为目标寄存器的任何指令的同
时,也会使程序计数器的 PC<12:8> 位(PCH)被
PCLATH 寄存器的内容所代替。这使得可以通过将所需
的高 5 位写入PCLATH 寄存器来改变程序计数器的整个
内容。当将低 8 位写入 PCL 寄存器时,程序计数器的所
有 13 位都将变为 PCLATH 寄存器中和那些被写入 PCL
寄存器的值。
计算 GOTO 指令是通过向程序计数器加一个偏移量
(ADDWF PCL )来实现的。当通过修改 PCL 寄存器跳
转到查找表或程序转移表 (计算 GOTO )时,应特别注
意。假设 PCLATH 被设置为表起始地址,如果表长度大
于 255 条指令,或如果在表中间存储器地址的低 8 位从
0xFF 计满返回到 0x00 ,那么 PCLATH 必须为在表起始
和表中的目标存储单元之间发生计满返回的每个地址进
行递增。
更多信息,请参见应用笔记 AN556 ,“ Implementing a
Table Read ”(DS00556 )。
以 PCL 为
目标寄存器
的指令
ALU 运算结果
GOTO, CALL
操作码 <10:0>
2.3.2 堆栈
PIC12F609/615/12HV609/615 系列具有8 层 x13位宽
的硬件堆栈 (见图 2-1 )。堆栈空间既不占用程序存储
空间,也不占用数据存储空间,而且堆栈指针是不可读
写的。当执行 CALL 指令或当中断导致程序跳转时,PC
值将被压入堆栈。而在执行 RETURN 、 RETLW 或
RETFIE 指令时,将从堆栈中弹出 PC 值。 PCLATH 不
受压栈或出栈操作的影响。
堆栈的工作原理犹如循环缓冲区。这意味着当压栈 8 次
后,第 9 次压入堆栈的值将会覆盖第一次压栈时所保存
的值,而第 10 次压入堆栈的值将覆盖第二次压栈时保
存的值,依此类推。
注 1 :不存在指明堆栈是否上溢或下溢的状态标
志位。
2 : 不存在被称为 PUSH 或 POP 的指令 / 助
记符。堆栈的压入或弹出是源于执行了
CALL 、 RETURN 、 RETLW 和 RETFIE 指
令,或源于跳转到中断向量地址。
2.4 间接寻址、 INDF 和 FSR 寄存器
INDF 寄存器不是实际存在的寄存器,对 INDF 寄存器进
行寻址将产生间接寻址。
使用 INDF 寄存器可进行间接寻址。任何使用 INDF 寄
存器的指令,实际上是对文件选择寄存器(FSR )所 指
向的数据进行存取。间接对 INDF 进行读操作将返回
00h 。间接对 INDF 寄存器进行写操作将导致空操作(尽
管可能会影响状态位)。通过将 8 位的 FSR 寄存器与
STATUS 寄存器的 IRP 位进行组合可得到一个有效的 9
位地址,如图 2-5 所示。
例 2-1 给出了一个使用间接寻址将 RAM 地址单元 40h-
7Fh 清零的简单程序。
例 2-1 :间 接 寻 址
MOVLW 0x40 ;initialize pointer
MOVWF FSR ;to RAM
NEXT CLRF INDF ;clear INDF register
INCF FSR ;inc pointer
BTFSS FSR,7 ;all done?
GOTO NEXT ;no clear next
CONTINUE ;yes continue
DS41302A_CN 第 22 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
图 2-5: PIC12F609/615/12HV609/615 的直接 / 间接寻址
RP1
(1)
RP0 6
来自操作码
0
IRP
间接寻址 直接寻址
(1)
7
文件选择寄存器
0
存储区选择 存储单元选择
00 01 10 11
00h
数据存储器
7Fh
Bank 0 Bank 1 Bank 2 Bank 3
关于存储器映射的详细信息,请参见图 2-2 。
注 1 : RP1 和 IRP 位保留;始终保持这两位清零。
2 : 对该区域的访问会映射到 Bank 0 和 Bank 1 。
未使用
(2)
存储区选择
180h
1FFh
存储单元选择
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 23 页
PIC12F609/615/12HV609/615
注:
DS41302A_CN 第 24 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
3.0 振荡器模块
3.1 概述
振荡器模块具有多种时钟源和选择特性,从而使之可广
泛使用于各种应用中,同时最大限度地发挥应用性能并
降低功耗。图 3-1 为振荡器模块的框图。
时钟源可配置为来自外部振荡器、石英晶体谐振器、陶
瓷谐振器以及阻容(Resistor-Capacitor ,RC )电路。此
外,系统时钟源还可配置为两种可选速度之一:内部或
外部系统时钟源。
图 3-1 : PIC ® MCU 时钟源框图
外部振荡器
OSC2
Sleep
OSC1
振荡器模块可配置为以下 8 种时钟模式之一。
1. EC——外部时钟,OSC2/CLKOUT用作 I/O 引脚。
2. LP—— 32 kHz 低功耗晶振模式。
3. XT——中等增益晶振或陶瓷谐振器模式。
4. HS——高增益晶振或陶瓷谐振器模式。
5. RC——外部阻容( RC),通 过 OSC2/CLKOUT
引脚输出 F
OSC/4 信号。
6. RCIO——外部阻容(RC),OSC2/CLKOUT 用
作 I/O 引脚。
7. INTOSC——内部振荡器,通过 OSC2 引脚输出
OSC/4 信号, OSC1/CLKIN 用作 I/O 引脚。
F
8. INTOSCIO——内部振荡器, OSC1/CLKIN 和
OSC2/CLKOUT 用作 I/O 引脚。
通过配置字寄存器 (CONFIG )中的 FOSC<2:0> 位来
配置时钟源模式。内部振荡器模块提供一种可选的系统
时钟模式,4MHz(后分频器)或 8MHz(INTOSC )。
FOSC<2:0>
IOSCFS<7>
(配置字寄存器)
LP, XT, HS, RC, RCIO, EC
内部振荡器
INTOSC
8 MHz
后分频器
4 MHz
INTOSC
MUX
系统时钟
(CPU 和外设)
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 25 页
PIC12F609/615/12HV609/615
3.2 时钟源模式
时钟源模式可分为外部和内部模式。
• 外部时钟模式依靠外部电路提供时钟源。例如:振
荡器模块 (EC 模式)、石英晶体谐振器或陶瓷谐
振器 (LP 、 XT 和 HS 模式)以及阻容 (RC )模
式电路。
• 内部时钟源内置于振荡器模块中。振荡器模块有两
种时钟频率供选择:4MHz和 8MHz
通过配置字寄存器的 FOSC<2:0> 位在外部或内部时钟
源之间选择系统时钟。
3.3 外部时钟模式
3.3.1 振荡器起振定时器 (OST )
如果振荡器模块被配置为 LP 、 XT 或 HS 模式,则振荡
器起振定时器 (OST )对来自 OSC1 的振荡计数 1024
次。这发生在上电复位 (POR )和上电延时定时器
(PWRT )超时 (如果配置了) ,或从休眠中唤醒后。
在此期间,程序计数器不递增,程序执行暂停。OST 确
保使用石英晶体谐振器或陶瓷谐振器的振荡器电路已经
起振并为 PIC12F609/HV609 和 PIC12F615/HV615 器
件提供稳定的系统时钟。当在时钟源之间切换时,需要
一定的延时以使新时钟稳定。表 3-1 给出了振荡器延时
的例子。
表 3-1 : 振荡器延时示例
切换自 切换到 频率 振荡器延时
休眠 /POR
休眠 /POR EC 或 RC
INTOSC
125 kHz 到 8MHz 振荡器预热延时 (T
DC – 20 MHz
2 个指令周期
WARM)
休眠 /POR LP 、 XT 或 HS 32 kHz 到 20 MHz 1024 个时钟周期 ( OST)
3.3.2 EC 模式
外部时钟 (EC )模式允许外部产生的逻辑电平作为系
统时钟源。工作在此模式下时,外部时钟源连接到
OSC1 输入,OSC2 引脚可用作通用 I/O。图 3-2 给出了
EC 模式的引脚连接。
当选取 EC 模式时,振荡器起振定时器 (OST )被禁
止。因此,上电复位(POR )后或者从休眠中唤醒后的
操作不存在延时。因为 PIC
的,停止外部时钟输入将使暂停工作并保持所有数据完
整。当再次启动外部时钟时,器件恢复工作,就好像没
有停止过一样。
®
MCU 的设计是完全静态
图 3-2 : 外部时钟 (EC )模式的工作原理
来自外部
系统的时钟
I/O
注 1 :第1.0 节 “器件概述”中列出了备用引脚功
能。
OSC1/CLKIN
®
MCU
PIC
OSC2/CLKOUT
(1)
DS41302A_CN 第 26 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
3.3.3 LP、 XT 和 HS 模式
LP、 XT 和 HS 模式支持使用连接到 OSC1 和 OSC2 引
脚的石英晶体谐振器或陶瓷谐振器 (图 3-3 )。模式选
择内部反相放大器的低、中或高增益设定,以支持各种
谐振器类型及速度。
LP 振荡器模式选择内部反相放大器的最低增益设定。
LP 模式的电流消耗在三种模式中最小。该模式设计用来
驱动仅 32.768 kHz 的音叉(Tuning Fork )型晶振(钟
表晶振)。
XT 振荡器模式选择内部反相放大器的中等增益设定。
XT 模式的电流消耗在三种模式中居中。该模式最适合
驱动具备中等驱动级别规格要求的谐振器。
HS 振荡器模式选择内部反相放大器的最高增益设定。
HS 模式的电流消耗在三种模式中最大。该模式最适合
驱动需要高驱动设定的谐振器。
图 3-3 和图 3-4 分别给出了石英晶体谐振器和陶瓷谐振
器的典型电路。
图 3-3 : 石英晶振的工作原理
(LP 、 XT 或 HS 模式)
PIC® MCU
OSC1/CLKIN
C1
石英
晶振
RF
(2)
至内部逻辑
Sleep
注 1 :石英晶振的特性随类型、封装和制造商而
变化。要了解规格说明和推荐应用,应查阅
制造商提供的数据手册。
2 : 应始终验证振荡器在应用要求的 V
度范围内的性能。
3 : 如需获取振荡器设计帮助,请参见以下
Microchip 应用笔记:
• AN826,“Crystal Oscillator Basics and
Crystal Selection for rfPIC
®
and PIC®
Devices”(DS00826 )
• AN849 ,“Basic PIC ® Oscillator
Design”(DS00849 )
®
• AN943 ,“Practical PIC
Oscillator
Analysis and Design”(DS00943 )
• AN949 ,“Making Your Oscillator
Work”(DS00949 )
图 3-4 : 陶瓷谐振器的工作原理
(XT 或 HS 模式)
PIC® MCU
OSC1/CLKIN
C1
RP
(3)
RF
(2)
至内部逻辑
Sleep
DD 和温
OSC2/CLKOUT
C2
注 1: 对于低驱动级别的石英晶振,可能需要串联一
2: R
(1)
S
R
个电阻 ( R
F 的值随选取的振荡模式而变化 (典型值在
2MΩ 到 10 M Ω 之间)。
S)。
OSC2/CLKOUT
C2
陶瓷
谐振器
注 1 : 对于低驱动级别的陶瓷谐振器,可能需要串联
一个电阻 (R
F 的值随选取的振荡模式而变化 (典型值在
2 : R
2MΩ 到 10 M Ω 之间)。
3 :为使陶瓷谐振器正常工作,可能需要并联一个
反馈电阻 (R
(1)
R
S
S)。
P)。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 27 页
PIC12F609/615/12HV609/615
3.3.4 外部 RC 模式
外部阻容 (RC )模式支持使用外部 RC 电路。对时钟
精度要求不高时,这使设计人员有了很大的频率选择空
间,且保持成本最低。有以下两种模式:RC 和 RCIO。
在 RC 模式下,RC 电路连接到 OSC1 引脚。
OSC2/CLKOUT 引脚输出为 RC 振荡器频率的 4 分频。
该信号可用来为外部电路、同步、校准、测试或其他应
用需求提供时钟。图 3-5 给出了外部RC 模式的连接图。
图 3-5 :外 部RC 模式
VDD
REXT
OSC1/CLKIN
CEXT
VSS
Fosc/4 或
(2)
I/O
推荐值: 10 k Ω ≤ REXT ≤ 100 k Ω, <3V
注 1 :第1.0 节 “器件概述”中列出了备用引脚功
2 : 输出取决于 RC 或 RCIO 时钟模式。
OSC2/CLKOUT
能。
PIC® MCU
(1)
3 kΩ ≤ R
C
EXT ≤ 100 kΩ, 3-5V
EXT > 20 pF, 2-5V
内部
时钟
3.4 内部时钟模式
振荡器模块提供一个可选的系统时钟源, 4MHz 或
8MHz 。通过配置字的 IOSCFS 位来配置可选频率。
内部振荡器的频率可通过OSCTUNE 寄存器中的校准值
来平衡。
3.4.1 INTOSC 和 INTOSCIO 模式
当在配置字寄存器 (CONFIG )中使用振荡器选择或
FOSC<2:0> 位对器件进行编程时,在 INTOSC 和
INTOSCIO 模式下将内部振荡器配置为系统时钟源。更
多信息,请参见第 11.0 节“CPU 的特殊功能”。
在 INTOSC 模式下, OSC1/CLKIN 可用作通用 I/O 。
OSC2/CLKOUT 输出所选内部振荡器频率的 4 分频。
CLKOUT 信号可用来为外部电路、同步、校准、测试或
其他应用需求提供时钟。
在 INTOSCIO 模式下,OSC1/CLKIN 和 OSC2/CLKOUT
可用作通用 I/O 。
在 RCIO 模式下, RC 电路连接到 OSC1 。 OSC2 成为
额外的通用 I/O 引脚。
RC 振荡器频率与供电电压、电阻(R
EXT)和电容(CEXT )
值以及工作温度有关。影响振荡器频率的其他因素有:
• 电压门限值变化
• 元件容差
• 不同封装的电容
用户还应考虑因所使用的外部 RC 元件的容差而导致的
差异。
DS41302A_CN 第 28 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
3.4.1.1 OSCTUNE 寄存器
该振荡器在出厂时已校准,但可通过在软件中写入
OSCTUNE 寄存器 (寄存器 3-1)来进行调节。
OSCTUNE 寄存器的默认值为 0 。该值是一个 5 位的二
进制补码。
当 OSCTUNE 寄存器被修改时,该频率将开始转变为新
频率。转变期间,代码将继续执行。是否已发生频率转
变并无明确的指示。
寄存器 3-1 : OSCTUNE :振荡器调节寄存器
U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
— — — TUN4 TUN3 TUN2 TUN1 TUN0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-5
bit 4-0
未实现:读为 0
TUN<4:0> :频率调节位
01111 = 最高频率
01110 =
•
•
•
00001 =
00000 = 振荡器模块运行在经过校准的频率上。
11111 =
•
•
•
10000 = 最低频率
表 3-2 : 与时钟源相关的寄存器汇总
名称
CONFIG
OSCTUNE
图注: x = 未知, u = 不变,
注 1 : 其他 (非上电)复位包括在正常操作期间的 MCLR
2 : 请参见配置字寄存器 (寄存器 11-1 )了解所有寄存器位的操作。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 29 页
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
(2)
IOSCFS CP MCLRE PWRTE WDTE FOSC2 FOSC1 FOSC0 — —
— — —
— = 未实现位 (读为 0)。振荡器不使用阴影单元。
TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 ---u uuuu
复位和看门狗定时器复位。
POR/BOR
时的值
所有其他复位
时的值
(1)
PIC12F609/615/12HV609/615
注:
DS41302A_CN 第 30 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
4.0 I/O 端口
作意味着总是先读端口引脚电平状态,然后修改这个
值,最后再写入该端口的数据锁存器。当 MCLRE = 1
器件具有最多 6 个可用的通用 I/O 引脚。根据外设的使
能情况,部分甚至全部引脚可能不能用于通用 I/O 。通 常
而言,当某个外设使能时,其相关引脚可能不能用作通
用 I/O 引脚。
4.1 GPIO 和 TRISIO 寄存器
GPIO 是一个 6 位宽的端口,具有 5 个双向和 1 个仅输入
引脚。对应的数据方向寄存器是 TRISIO (寄存器 4-2 )。
将 TRISIO 某位置 1 (= 1)时,会将 GPIO 的相应引脚
设为输入 (即,禁止输出驱动器)。将 TRISIO 某位清零
(= 0 )时,会将 GPIO 的相应引脚设为输出 (即,使能
输出驱动器并将输出锁存器中的内容输出到选中引
脚)。GP3 是个例外,仅可作为输入引脚,其 TRIS 位总
是读为 1 。例 4-1 显示了如何初始化 GPIO 。
读 GPIO 寄存器(寄存器 4-1 )将读出相应引脚的状态,
而对其进行写操作则是将数据写入端口锁存器。所有写
操作都是 “读-修改-写”操作。因此,对端口的写操
时, GP3 读为 0 。
TRISIO 寄存器控制着 GPIO 引脚的方向,即使它们用
作模拟输入引脚。当引脚用于模拟输入时,用户必须确
保 TRISIO 寄存器中的各位保持置 1 。配置为模拟输入
的 I/O 引脚总是读为 0 。
注: 必须对 ANSEL 寄存器进行初始化,以将模
拟通道配置为数字输入。配置为模拟输入
的引脚将读为 0 ,且不能产生中断。
例 4-1 :初 始 化GPIO
BANKSEL GPIO ;
CLRF GPIO ;Init GPIO
BANKSEL ANSEL ;
CLRF ANSEL ;digital I/O, ADC clock
;setting ‘don’t care’
MOVLW 0Ch ;Set GP<3:2> as inputs
MOVWF TRISIO ;and set GP<5:4,1:0>
;as outputs
寄存器 4-1 : GPIO :GPIO 寄存器
U-0 U-0 R/W-x R/W-0 R-x R/W-0 R/W-0 R/W-0
— — GP5 GP4 GP3 GP2 GP1 GP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-6 未实现:读为 0
bit 5-0
GP<5:0> :GPIO I/O 引脚位
1 = GPIO 引脚 > V
0 = GPIO 引脚 < VIL
IH
寄存器 4-2 : TRISIO :GPIO 三态寄存器
U-0 U-0 R/W-1 R/W-1 R-1 R/W-1 R/W-1 R/W-1
— — TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-6 未实现:读为 0
bit 5-0
注 1: TRISIO<3> 总是读为 1。
2: 在 XT 、 HS 和 LP 振荡器模式下, TRISIO<5:4> 总是读为 1。
TRISIO<5:0>: GPIO 三态控制位
1 = GPIO 引脚配置为输入 (三态)
0 = GPIO 引脚配置为输出
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 31 页
PIC12F609/615/12HV609/615
4.2 引脚的其他功能
PIC12F609/615/12HV609/615 中每个 GPIO 引脚都具
有电平变化中断功能和弱上拉功能。以下三节将对这些
功能进行介绍。
4.2.1 ANSEL 寄存器
ANSEL 寄存器用于将 I/O 引脚的输入模式配置为模拟。
将相应的 ANSEL 位设置为高电平将使引脚上的所有数
字读数都读为 0 ,并允许引脚上的模拟功能正确操作。
ANSEL 位的状态不会影响数字输出功能。 TRIS 清零且
ANSEL 置 1 的引脚将仍作为数字输出工作,但输入模
式将变为模拟。当在受影响的端口上执行读-修改-写
指令时,这会引起意外操作。
4.2.2 弱上拉
除 GP3 外的每个 GPIO 引脚都具有可单独配置的内部弱
上拉功能。控制位 WPUx 用于使能或禁止每个上拉功
能。请参见寄存器 4-5 。当端口引脚被配置为输出时,这
些弱上拉会自动关闭。上电复位时上拉功能被 OPTION
寄存器的 GPPU 位禁止。当配置为 MCLR 时, GP3 上
的弱上拉自动使能;当 GP3 配置为 I/O 时则被禁止。没
有对 MCLR
4.2.3 电平变化中断
每个 GPIO 引脚都可单独配置为电平变化中断引脚。控
制位 IOCx 用于使能或禁止各引脚的中断功能。请参见
寄存器 4-6 。电平变化中断功能在上电复位时被禁止。
对于允许了电平变化中断功能的引脚,其值将与上次读
取的 GPIO 的旧锁存值相比较。所有与上次读取值不匹
配的输出进行或运算,运算结果用来设置 INTCON 寄存
器(寄存器 2-3 )中 的 GPIO 电平变化中断标志位
(GPIF )。
该中断可将器件从休眠状态唤醒。用户在中断服务程序
中可通过以下方式清除该中断:
a)对GPIO的任何读操作以及清零标志位 GPIF。这
b)对GPIO 的任何写操作以及清零标志位 GPIF 将
上拉的软件控制。
将结束不匹配条件;
或
结束不匹配条件;
不匹配条件将继续把标志位 GPIF 置 1 。读 GPIO 将结
束不匹配条件并允许将标志位 GPIF 清零。保持上一次
读取值的锁存器不受 MCLR
些复位之后,如果存在不匹配情况, GPIF 标志还将继
续被置 1 。
注: 当正在执行任何 GPIO 操作时发生了 I/O 引
脚电平变化,则 GPIF 中断标志位可能不会
被置 1 。
或 BOR 复位的影响。在这
DS41302A_CN 第 32 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
寄存器 4-3: ANSEL:模拟选择寄存器 ( PIC12F609/HV609)
U-0 U-0 U-0 U-0 R/W-1 U-0 R/W-1 R/W-1
— — — —A N S 3— ANS1 ANS0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-4 未实现:读为 0
bit 3
bit 2 未实现:读为 0
bit 1
bit 0
ANS3 :模拟选择位
将 AN<7:0> 引脚选择为模拟或数字功能。
1 = 模拟输入。引脚被配置为模拟输入
(1)
。
0 = 数字 I/O 。引脚被配置为端口或特殊功能。
ANS1 : 将 GP1 引脚选择为模拟或数字功能
1 = 模拟输入。引脚被配置为模拟输入
(1)
。
0 = 数字 I/O 。引脚被配置为端口或特殊功能。
ANS0 : 将 GP0 引脚选择为模拟或数字功能
0 = 数字 I/O 。引脚被配置为端口或特殊功能。
1 = 模拟输入。引脚被配置为模拟输入
(1)
。
注 1 : 将引脚设置为模拟输入将自动禁止数字输入电路、弱上拉和电平变化中断 (如果具有这些功能的话)。必须将相
应的 TRIS 位设置为输入模式,以允许从外部控制引脚电压。
寄存器 4-4 : ANSEL :模拟选择寄存器 (PIC12F615/HV615 )
U-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
— ADCS2 ADCS1 ADCS0 ANS3 ANS2 ANS1 ANS0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7 未实现:读为 0
bit 6-4
bit 3-0
ADCS<2:0> : A/D 转换时钟选择位
OSC/2
000 = F
OSC/8
001 = F
010 = F
OSC/32
x11 = Frc (由专用内部振荡器产生的时钟,其频率的最大值为 500 kHz )
100 = FOSC/4
OSC/16
101 = F
110 = F
OSC/64
ANS<3:0> :模拟选择位
将 AN<7:0> 引脚选择为模拟或数字功能。
1 = 模拟输入。引脚被配置为模拟输入
(1)
。
0 = 数字 I/O 。引脚被配置为端口或特殊功能。
注 1 : 将引脚设置为模拟输入将自动禁止数字输入电路、弱上拉和电平变化中断 (如果具有这些功能的话)。必须将相
应的 TRIS 位设置为输入模式,以允许从外部控制引脚电压。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 33 页
PIC12F609/615/12HV609/615
寄存器 4-5: WPU:弱上拉 GPIO 寄存器
U-0 U-0 R/W-1 R/W-1 U-0 R/W-1 R/W-1 R/W-1
— — WPU5 WPU4 — WPU2 WPU1 WPU0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-6
bit 5-4
bit 3
bit 2-0
注 1: 必须使能全局 GPPU 位才能使能单独的上拉功能。
2: 如果引脚处于输出模式 (TRISIO = 0 ),则自动禁止弱上拉功能。
3: 当在配置字中将 GP3 配置为 MCLR
4: 在 XT 、 HS 和 LP 振荡器模式下, WPU<5:4> 总是读为 1 。
未实现:读为 0
WPU<5:4> :弱上拉控制位
1 = 上拉使能
0 = 上拉禁止
未实现:读为 0
WPU<2:0>:弱上拉控制位
1 = 上拉使能
0 = 上拉禁止
时, GP3 上拉被使能,当 GP3 被配置为 I/O 时上拉功能被禁止。
寄存器 4-6 : IOC :电平变化中断 GPIO 寄存器
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
— — IOC5 IOC4 IOC3 IOC2 IOC1 IOC0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-6
bit 5-0
注 1: 要使各中断能够被识别,必须使能全局中断允许控制位 ( GIE )。
2: 在 XT 、 HS 和 LP 振荡器模式下, IOC<5:4> 总是读为 1 。
DS41302A_CN 第 34 页 初稿 2008 Microchip Technology Inc.
未实现:读为 0
IOC<5:0> :电平变化中断 GPIO 控制位
1 = 允许电平变化中断
0 = 禁止电平变化中断
PIC12F609/615/12HV609/615
4.2.4 引脚说明和引脚原理图
每个 GPIO 引脚都与其他功能复用。这里将简要说明引
脚及其复用功能。各功能的具体信息 (如比较器或
ADC),请参见本数据手册中的相关章节。
4.2.4.1 GP0/AN0
(1)
/CIN+/P1B
(1)
/ICSPDAT
图 4-1 给出了此引脚的原理图。GP0 引脚可配置为下列
功能之一:
• 通用 I/O
(1)
•ADC
的模拟输入
• 比较器的模拟同相输入
•PWM输出
(1)
• 在线串行编程数据
图 4-1 : GP<1:0> 框图
数据总线
WPU
WPU
D
Q
写
读
CK
Q
4.2.4.2 GP1/AN1
(1)
/CIN0-/VREF
(1)
/ICSPCLK
图 4-1 给出了此引脚的原理图。GP1 引脚可配置为下列
功能之一:
• 通用 I/O
(1)
•ADC
的模拟输入
• 比较器的模拟反相输入
(1)
•ADC
的参考电压输入
• 在线串行编程时钟
注 1 : 仅限 PIC12F615/HV615。
(1)
模拟
输入模式
GPPU
VDD
弱上拉
VDD
电平变化中断
Q
将 0 写入 GBIF
D
Q
写
GPIO
写
TRISIO
读
TRISIO
读
GPIO
写
IOC
读
IOC
(2)
S
R
来自其他
GP<5:0> 引脚(GP0)
GP<5:2, 0> 引脚(GP1)
CK
Q
D
Q
CK
Q
(1)
模拟
输入模式
D
Q
D
读 GPIO
(3)
Q
EN
D
Q
EN
Q1
CK
Q
至比较器
至 A/D 转换器
I/O 引脚
VSS
注 1: 比较器模式和 ANSEL 决定模拟输入模式。
2: 置 1 优先于复位。
3: 仅限 PIC12F615/HV615 。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 35 页
PIC12F609/615/12HV609/615
4.2.4.3 GP2/AN2
(1)
P1A
(1)
/T0CKI/INT/COUT/CCP1
(1)
图 4-2 给出了此引脚的原理图。GP2 引脚可配置为下列
功能之一:
• 通用 I/O
(1)
•ADC
的模拟输入
•TMR0的时钟输入
• 外部边沿触发中断
• 比较器的数字输出
• 捕捉输入 / 比较输入 /PWM 输出
•PWM输出
(1)
(1)
图 4-2 : GP2 框图
数据总线
WPU
WPU
GPIO
D
Q
写
读
CK
Q
D
Q
写
CK
Q
/
注 1: 仅限 PIC12F615/HV615 。
(1)
模拟
C1OE
使能
C1OE
输入模式
GPPU
1
0
VDD
弱上拉
VDD
I/O 引脚
VSS
电平变化中断
D
Q
写
CK
TRISIO
读
TRISIO
读
GPIO
写
IOC
读
IOC
(2)
Q
S
R
将 0 写入 GBIF
注 1 : 比较器模式和 ANSEL 决定模拟输入模式。
2: 置 1 优先于复位。
3: 仅限 PIC12F615/HV615 。
来自其他
GP<5:3, 1:0> 引脚
Q
D
Q
CK
Q
至 Timer0
至 INT
至 A/D 转换器
模拟
输入模式
读 GPIO
(3)
(1)
D
Q
EN
D
Q
EN
Q1
DS41302A_CN 第 36 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
4.2.4.4 GP3/T1G
(1, 2)
/MCLR/VPP
图 4-3 给出了此引脚的原理图。GP3 引脚可配置为下列
功能之一:
• 通用输入
•Timer1门控 (计数使能),备用引脚
(1, 2)
• 带弱上拉的主复位
注 1 :备用引脚功能。
2 : 仅限 PIC12F615/HV615。
图 4-3 : GP3 框图
数据总线
读
TRISIO
读
GPIO
Q
D
写
IOC
读
IOC
CK
Q
VSS
MCLRE
复位
Q
Q
MCLRE
MCLRE
D
EN
D
VDD
弱上拉
输入
引脚
VSS
Q1
电平变化中断
将 0 写入 GBIF
注 1 : 置 1 优先于复位。
(1)
S
Q
R
来自其他
GP<5:4, 2:0> 引脚
EN
读 GPIO
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 37 页
PIC12F609/615/12HV609/615
4.2.4.5 GP4/AN3
P1B
(1)
(1, 2)
/CIN1-/T1G/
/OSC2/CLKOUT
图 4-4 给出了此引脚的原理图。GP4 引脚可配置为下列
功能之一:
• 通用 I/O
(1, 2)
•ADC
的模拟输入
• 比较器的反相输入
•Timer1门控 (计数使能)
图 4-4 : GP4 框图
数据总线
WPU
WPU
GPIO
TRISIO
TRISIO
GPIO
IOC
IOC
D
Q
写
读
写
写
读
读
写
读
CK
Q
Q
D
CK
Q
Q
D
CK
Q
Q
D
CK
Q
•PWM输出,备用引脚
• 晶振 / 谐振器连接
• 时钟输出
注 1:备用引脚功能。
2: 仅限 PIC12F615/HV615。
(3)
模拟
输入模式
OSC1
F
OSC/4
CLKOUT
INTOSC/
RC/EC
CLKOUT
GPPU
CLKOUT
使能
使能
输入模式
CLK
模式
振荡器
电路
使能
1
0
(2)
模拟
Q
Q
(1)
VDD
D
EN
D
(1, 2)
弱上拉
VDD
I/O 引脚
VSS
Q1
(4)
Q
S
电平变化中断
R
将 0 写入 GBIF
注 1 :CLK 模式为 XT 、 HS 、 LP 、 TMR1 LP 以及 CLKOUT 使能。
2:具有 CLKOUT 选项。
3: ANSEL 决定模拟输入模式。
4:置 1 优先于复位。
5:仅限 PIC12F615/HV615。
DS41302A_CN 第 38 页 初稿 2008 Microchip Technology Inc.
来自其他
GP<5, 3:0> 引脚
至 T1G
至 A/D 转换器
(5)
EN
读 GPIO
PIC12F609/615/12HV609/615
4.2.4.6 GP5/T1CKI/P1A
(1, 2)
/OSC1/CLKIN
图 4-5 给出了此引脚的原理图。GP5 引脚可配置为下列
功能之一:
• 通用 I/O
•Timer1的时钟输入
•PWM输出,备用引脚
(1, 2)
• 晶振 / 谐振器连接
• 时钟输入
图 4-5 : GP5 框图
数据总线
写
WPU
读
WPU
D
D
CK
注 1:备用引脚功能。
2: 仅限 PIC12F615/HV615。
INTOSC
模式
Q
Q
OSC2
Q
TMR1LPEN
GPPU
振荡器
电路
(1)
VDD
弱上拉
VDD
电平变化中断
Q
将 0 写入 GBIF
S(2)
R
写
GPIO
写
TRISIO
读
TRISIO
读
GPIO
写
IOC
读
IOC
来自其他
GP<4:0> 引脚
CK
D
CK
D
CK
至 Timer1
Q
Q
Q
INTOSC
模式
Q
D
Q
Q
EN
Q
EN
读 GPIO
D
I/O 引脚
VSS
Q1
注 1: Timer1 LP 振荡器使能。
2: 置 1 优先于复位。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 39 页
PIC12F609/615/12HV609/615
表 4-1 :与GPIO 相关的寄存器汇总
名称
ANSEL
CMCON0
INTCON GIE
IOC
OPTION_REG GPPU
GPIO
TRISIO
WPU
T1CON
CCP1CON
APFCON
图注: x = 未知, u = 不变, — = 未实现位 (读为 0)。 GPIO 不使用阴影单元。
注 1 : 仅限 PIC12F615/HV615 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— ADCS2
CMON COUT CMOE CMPOL —C M R—C M C H0000 -0-0 0000 -0-0
— — IOC5 IOC4 IOC3 IOC2 IOC1 IOC0 --00 0000 --00 0000
— — GP5 GP4 GP3 GP2 GP1 GP0 --x0 x000 --u0 u000
— — TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 --11 1111
— — WPU5 WPU4 — WPU2 WPU1 WPU0 --11 -111 --11 -111
— — — — T1OSCEN — — — ---- 0---
— — — — CCP1M3 CCP1M2 CCP1M1 CCP1M0 ---- 0000
— — — T1GSEL — — P1BSEL P1ASEL ---0 --00
(1)
PEIE T0IE INTE GPIE T0IF INTF GPIF 0000 0000 0000 0000
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
ADCS1
(1)
ADCS0
(1)
ANS3 ANS2
(1)
POR/BOR
时的值
ANS1 ANS0 -000 1111 -000 1111
所有其他
复位时的值
DS41302A_CN 第 40 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
5.0 TIMER0 模块
Timer0 模块是 8 位定时器 / 计数器,具有以下特性:
•8位定时器 / 计数器寄存器 (TMR0)
•8位预分频器 (与看门狗定时器共用)
• 可编程内部或外部时钟源
• 可编程外部时钟边沿选择
• 溢出时产生中断
图 5-1 给出了 Timer0 模块的框图。
图 5-1 : TIMER0/WDT 预分频器的框图
FOSC /4
0
1
T0CKI
引脚
T0SE
T0CS
0
8 位
预分频器
1
5.1 Timer0 工作原理
当用作定时器时,Timer0 模块可被用作 8 位定时器或 8
位计数器。
5.1.1 8 位定时器模式
当用作定时器时,Timer0 模块在每个指令周期递增(不
带预分频器)。通过清零 OPTION 寄存器的 T0CS 位选
择定时器模式。
如果对 TMR0 执行写操作,则紧跟写操作之后的两个指
令周期内 TMR0 禁止递增。
注: 当写 TMR0 时,考虑到存在两个指令周期
的延时,可以调整写入 TMR0 寄存器的值。
5.1.2 8 位计数器模式
当用作计数器时,Timer0 模块将在 T0CKI 引脚的每个上
升或下降沿递增。递增边沿由 OPTION 寄存器的 T0SE
位决定。通过将 OPTION 寄存器的 T0CS 位设置为 1 选
择计数器模式。
数据总线
1
0
PSA
同步
2 个 T
CY
8
TMR0
溢出时
将标志位 T0IF 置 1
PSA
WDTE
注 1 : T0SE 、 T0CS 、 PSA 和 PS<2:0> 是 OPTION 寄存器中的位。
看门狗
定时器
2 : WDTE 位是配置字寄存器中的位。
8
PS<2:0>
1
0
PSA
WDT
超时
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 41 页
PIC12F609/615/12HV609/615
5.1.3 可软件编程的预分频器
有一个可软件编程的预分频器可供 Timer0 或看门狗定
时器 (WDT )使用,但不能同时使用。预分频器的分
配由 OPTION 寄存器的 PSA 位控制。要将预分频器分
配给 Timer0 ,必须将 PSA 位清零。
Timer0 模块有 8 个预分频比选项,范围从 1:2 到 1:256 。
预分频值可通过 OPTION 寄存器的 PS<2:0> 位进行选
择。为了对 Timer0 模块使用 1:1 预分频值,必须将预分
频器分配给 WDT 模块。
预分频器是不可读写的。将其分配给 Timer0 模块时,所
有写入 TMR0 寄存器的指令都会将预分频器清零。
将预分频器分配给 WDT 时, CLRWDT 指令会同时将预
分频器和 WDT 清零。
5.1.3.1 在 Timer0 和 WDT 模块之间切换预
分频器
由于将预分频器分配给 Timer0 或 WDT ,在切换预分频
值时,可能会产生意外的器件复位。当把预分频器从
Timer0 分配给 WDT 模块时,必须执行如例 5-1 中所示
的指令序列。
例 5-1 : 改变预分频器的分配
(TIMER0 → WDT )
BANKSEL TMR0 ;
CLRWDT ;Clear WDT
CLRF TMR0 ;Clear TMR0 and
;prescaler
BANKSEL OPTION_REG ;
BSF OPTION_REG,PSA ;Select WDT
CLRWDT ;
;
MOVLW b’11111000’ ;Mask prescaler
ANDWF OPTION_REG,W ;bits
IORLW b’00000101’ ;Set WDT prescaler
MOVWF OPTION_REG ;to 1:32
将预分频器从 WDT 分配给 Timer0 模块时,必须执行以
下指令序列 (例 5-2 )。
例 5-2 : 改变预分频器的分配
(WDT → TIMER0 )
CLRWDT ;Clear WDT and
;prescaler
BANKSEL OPTION_REG ;
MOVLW b’11110000’ ;Mask TMR0 select and
ANDWF OPTION_REG,W ;prescaler bits
IORLW b’00000011’ ;Set prescale to 1:16
MOVWF OPTION_REG ;
5.1.4 TIMER0 中断
TMR0 寄存器从 FFh 计满返回到 00h 时,将产生 Timer0
中断。每次 TMR0 寄存器计满返回时都会将 INTCON 寄
存器的 T0IF 中断标志位置 1 ,与是否允许了 Timer0 中
断无关。 T0IF 位必须用软件清零。Timer0 中断允许位
是 INTCON 寄存器的 T0IE 位。
注: 由于定时器在休眠状态下是“冻结”的,所
以 Timer0 中断无法将处理器从休眠状态唤
醒。
5.1.5 TIMER0 与外部时钟配合使用
当 Timer0 处于计数器模式下时,通过对内部相位时钟
Q2 和 Q4 周期的预分频输出进行采样,可实现 T0CKI
输入与 Timer0 寄存器的同步。因此,外部时钟源的高低
电平周期必须满足第 15.0 节 “电气规范”中所示的时
序要求。
DS41302A_CN 第 42 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
寄存器 5-1: OPTION_REG: OPTION 寄存器
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
GPPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2-0
: GPIO 上拉使能位
GPPU
1 = 禁止 GPIO 上拉
0 = 通过 WPU 寄存器中单独的端口锁存值使能 GPIO 上拉
INTEDG:中断触发边沿选择位
1 = INT 引脚的上升沿触发中断
0 = INT 引脚的下降沿触发中断
T0CS: TMR0 时钟源选择位
1 = T0CKI 引脚上的电平跳变
0 = 内部指令周期时钟 (F
OSC/4)
T0SE : TMR0 时钟源边沿选择位
1 = 在 T0CKI 引脚信号从高至低跳变时,递增计数
0 = 在 T0CKI 引脚信号从低至高跳变时,递增计数
PSA:预分频器分配控制位
1 = 预分频器分配给 WDT
0 = 预分频器分配给 Timer0 模块
PS<2:0>:预分频比选择位
位值 TMR0 预分频比 WDT 预分频比
000
001
010
011
100
101
110
111
1 : 2
1 : 4
1 : 8
1 : 16
1 : 32
1 : 64
1 : 128
1 : 256
1 : 1
1 : 2
1 : 4
1 : 8
1 : 16
1 : 32
1 : 64
1 : 128
表 5-1 :与TIMER0 相关的寄存器汇总
名称
TMR0
INTCON GIE PEIE T0IE
OPTION_REG
TRISIO
图注:
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 43 页
— = 未实现位 (读为 0 ), u = 不变, x = 未知。 Timer0 模块不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Timer0 模块寄存器
INTE GPIE T0IF INTF GPIF 0000 000x 0000 000x
GPPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
— — TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 --11 1111
POR/BOR
时的值
xxxx xxxx uuuu uuuu
所有其他
复位时的值
PIC12F609/615/12HV609/615
注:
DS41302A_CN 第 44 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
6.0 带门控的 TIMER1 模块
Timer1 模块是 16 位定时器 / 计数器,具有以下特性:
• 有一对 16 位定时器 / 计数器寄存器
( TMR1H:TMR1L)
• 可编程内部或外部时钟源
•3位预分频器
• 可选的 LP 振荡器
• 同步或异步工作
• 门控源来自比较器或 T1G
数使能)
• 溢出时产生中断
• 溢出触发唤醒 (仅限外部时钟,异步模式)
• 捕捉 / 比较功能的时基
• 特殊事件触发器 (带有 ECCP)
• 比较器输出与 Timer1 时钟同步
图 6-1 给出了 Timer1 模块的框图。
6.1 Timer1 工作原理
Timer1 模块是 16 位递增计数器,可通过 TMR1H:TMR1L
这对寄存器访问。写 TMR1H 或 TMR1L 会直接更新计数
器。
当使用内部时钟源时,模块为定时器;当使用外部时钟
源时,模块既可用作定时器,也可用作计数器。
引脚的 Timer1 门控(计
6.2 时钟源选择
T1CON 寄存器的 TMR1CS 位用于选择时钟源。当
TMR1CS = 0 时,时钟源为 F
时,时钟源由外部提供。
时钟源
OSC/4 00
F
OSC 01
F
T1CKI 引脚
OSC/4。当 TMR1CS = 1
TMR1CS T1ACS
1x
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 45 页
PIC12F609/615/12HV609/615
图 6-1 : TIMER1 框图
溢出时将标志位
TMR1IF 置 1
OSC1/T1CKI
OSC2/T1G
不带 CLKOUT 的
INTOSC
T1OSCEN
GP3/T1G
(4, 5)
(2)
TMR1
TMR1H TMR1L
振荡器
F
OSC
OSC/4
F
内部时钟
EN
(1)
1
0
T1ACS
至比较器模块
Timer1 时钟
1
0
TMR1CS
TMR1ON
0
1
T1SYNC
预分频器
1, 2, 4, 8
2
T1CKPS<1:0>
0
1
T1GSEL
TMR1GE
(2)
同步
时钟输入
同步
检测
COUT
T1GINV
(3)
1
0
T1GSS
注 1: 在使用 LP 振荡器时, ST 缓冲器是低功耗型;在使用 T1CKI 时, ST 缓冲器是高速型。
2: Timer 1 寄存器在上升沿递增。
3: 处于休眠模式时同步不工作。
4: 备用引脚功能。
5: 仅限 PIC12F615/HV615。
DS41302A_CN 第 46 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
6.2.1 内部时钟源
当选择内部时钟源时,TMR1H:TMR1L 这对寄存器将在
T
CY 的整数倍 (取决于 Timer1 预分频器)处递增。
6.2.2 外部时钟源
当选择外部时钟源时,Timer1 模块可以作为定时器或计
数器工作。
计数时,Timer1 在外部时钟输入 T1CKI 的上升沿递增。
此外,计数器模式时钟可以与单片机系统时钟同步,也
可以异步工作。
如果需要使用外部时钟振荡器(并且单片机正在使用不
带 CLKOUT 的 INTOSC ),Timer1 可以将 LP 振荡器用
作时钟源。
在计数器模式下,在下列情况之一或下列多种情况发生
后,在第一个要递增计数的上升沿之前,计数器应先记
录一个下降沿:
•POR或 BOR 复位后 Timer1 被使能
• 写 TMR1H 或 TMR1L
• 当禁止 Timer1 时, T1CKI 为高电平;当重新使能
Timer1 时, T1CKI 为低电平。请参见图 6-2。
6.3 Timer1 预分频器
Timer1 有 4 种预分频比选择,允许对时钟输入进行 1、
2、4 或 8 分频。T1CON 寄存器的 T1CKPS 位控制预分
频计数器。对预分频计数器不能直接进行读写操作;但
是,通过写入TMR1H 或TMR1L 可将预分频计数器清零。
6.4 Timer1 振荡器
在引脚 OSC1 (输入)和 OSC2 (输出)之间接有一个
内置低功耗 32.768 kHz 晶振。通过将 T1CON 寄存器的
T1OSCEN 控制位置 1 可使能该振荡器。在休眠期间,
振荡器将继续工作。
Timer1 振荡器与系统 LP 振荡器共用。因此,只有当主
系统时钟来自于内部振荡器或在 LP 振荡器模式下时,
Timer1 才能采用该模式。用户必须提供软件延时以确保
振荡器的正常起振。
当 Timer1 振荡器被使能时,TRISIO5 和 TRISIO4 位被
置 1 。 GP5 和 GP4 位读为 0 ,而 TRISIO5 和 TRISIO4
位读为 1 。
6.5 Timer1 在异步计数器模式下的工作
原理
如果 T1CON 寄存器的控制位 T1SYNC 置 1 ,外部时钟
输入将不同步。定时器继续异步于内部相位时钟进行递
增计数。在休眠期间定时器将继续运行,并在溢出时产
生中断,溢出中断将唤醒处理器。但是,用软件对定时
器进行读 / 写操作时,要特别当心 (见第 6.5.1 节“在
异步计数器模式下读写 Timer1 ”)。
注: 当从同步切换到异步操作时,可能会跳过
一次递增。当从异步切换到同步操作时,
可能会产生一次意外递增。
6.5.1 在异步计数器模式下读写 TIMER1
当定时器采用外部异步时钟工作时,对 TMR1H 或
TMR1L 的读操作将确保有效(由硬件实现)。但是,应
该注意的是,用两个 8 位值来读取 16 位定时器本身就
会产生某些问题,这是因为定时器可能在两次读操作之
间产生溢出。
对于写操作,建议用户直接停止计数器,然后写入需要
的值。如果定时器寄存器正进行递增计数,对定时器寄
存器进行写操作,可能会导致写入竞争,从而可能在
TMR1H:TTMR1L 这对寄存器中产生不可预测的值。
6.6 Timer1 门控
Timer1 门控源可用软件配置为 T1G 引脚 (或备用 T1G
引脚)或比较器的输出。这使得器件能够使用 T1G 直接
对外部事件进行计时,或者使用比较器直接对模拟事件
进行计时。 Timer1 门控源的选择,请参见 CMCON1 寄
存器(寄存器 8-2 )。这个特性可以简化Δ - Σ A/D 转换
器和许多其他应用的程序。Δ - Σ A/D 转换器的更多信
息,请参见 Microchip 网站 (www.microchip.com )。
注: 要将 T1G 或 COUT 用作 Timer1 门控源,
必须将 T1CON 寄存器的TMR1GE 位置1 。
选择 Timer1 门控源的更多信息,请参见
寄存器 8-2 。
可使用 T1CON 寄存器的 T1GINV 位将 Timer1 门控反
相,无论门控源来自 T1G
可将 Timer1 配置为测量事件之间的有效高电平或有效
低电平时间。
引脚还是比较器的输出。这样
注: 振荡器在使用之前需要一定的起振和稳定
时间。因此,T1OSCEN 应置 1 ,且在使能
Timer1 之前确保有适当的延时。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 47 页
PIC12F609/615/12HV609/615
6.7 Timer1 中断
一对 Timer1 寄存器(TMR1H:TMR1L )递增到 FFFFh ,
然后返回到 0000h 。当 Timer1 计满返回时,PIR1 寄存
器的 Timer1 中断标志位将置 1 。为允许计满返回时的中
断,必须将以下位置 1 :
•PIE1寄存器的 Timer1 中断允许位
•INTCON寄存器的 PEIE 位
•INTCON寄存器的 GIE 位
在中断服务程序中将 TMR1IF 位清零将清除中断。
注: 在重新允许中断前,应将 TMR1H:TTMR1L
这对寄存器以及 TMR1IF 位清零。
6.8 Timer1 在休眠模式下的工作原理
只有在设置为异步计数器模式时,Timer1 才能在休眠模
式下工作。在该模式下,可使用外部晶振或时钟源使计
数器递增计数。要设置定时器以唤醒器件:
• 必须将 T1CON 寄存器的 TMR1ON 位置 1
• 必须将 PIE1 寄存器的 TMR1IE 位置 1
• 必须将 INTCON 寄存器的 PEIE 位置 1
器件将在溢出时被唤醒并执行下一条指令。如果将
INTCON 寄存器的 GIE 位置 1 ,器件将调用中断服务程
序(0004h)。
6.9 ECCP 捕捉 / 比较时基
(仅限 PIC12F615/HV615 )
当工作在捕捉或比较模式下时, ECCP 模块使用
TMR1H:TMR1L 这对寄存器作为时基。
在捕捉模式下,当发生配置的事件时,TMR1H:TMR1L 这
对寄存器中的值被复制到 CCPR1H:CCPR1L 这对寄存器
中。
在比较模式下,当 CCPR1H:CCPR1L 这对寄存器中的
值与TMR1H:TMR1L 这对寄存器中的值相匹配时触发事
件。该事件可以是特殊事件触发信号。
更多信息,请参见第 10.0 节 “增强型捕捉 / 比较 /PWM
(带自动关闭和死区)模块(仅限PIC12F615/HV615 )”。
6.10 ECCP 特殊事件触发器
(仅限 PIC12F615/HV615 )
如果将 ECCP 配置为触发特殊事件,触发器将清零
TMR1H:TMR1L 这对寄存器。该特殊事件不会引起
Timer1 中断。ECCP 模块仍然可以配置为产生 ECCP 中
断。
在该工作模式下, CCPR1H:CCPR1L 这对寄存器有效
地成为 Timer1 的周期寄存器。
要利用特殊事件触发信号,应使 Timer1 与 F
Timer1 的异步操作会导致错过特殊事件触发信号。
如果对 TMR1H 或 TMR1L 的写操作和来自 ECCP 的特
殊事件触发信号同时发生,则写操作优先。
更多信息,请参见第 10.0 节 “增强型捕捉 / 比较 /PWM
(带自动关闭和死区)模块(仅限PIC12F615/HV615 )”。
OSC 同步。
6.11 比较器同步
用于递增Timer1 的时钟也可以用于同步比较器输出。比
较器模块中使能了此功能。
当使用比较器作为 Timer1 门控时,应将比较器输出与
Timer1 保持同步。这可以确保 Timer1 在比较器发生变
化时不会错过递增。
更多信息,请参见第 8.0 节 “比较器模块”。
图 6-2 : TIMER1 递增边沿
T1CKI = 1
当 TMR1
使能时
T1CKI = 0
当 TMR1
使能时
注 1 : 箭头表明计数器递增。
2 : 在计数器模式下,在时钟要进行递增的第一个上升沿之前,计数器应先记录一个下降沿。
DS41302A_CN 第 48 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
6.12 Timer1 控制寄存器
Timer1 控制寄存器 (T1CON )用于控制 Timer1 以及
选择 Timer1 模块的各种特性,如寄存器 6-1 中所示。
寄存器 6-1 : T1CON :TIMER1 控制寄存器
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
(1)
T1GINV
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
TMR1GE
(2)
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
bit 7
bit 6
bit 5-4
bit 3
bit 2
bit 1
bit 0
T1GINV : Timer1 门控反相位
1 = Timer1 门控高电平有效 (当门控为高电平时 Timer1 计数)
0 = Timer1 门控低电平有效 (当门控为低电平时 Timer1 计数)
TMR1GE :Timer1 门控使能位
如果 TMR1ON = 0 :
该位为无关位
TMR1ON = 1:
如果
1 = 如果 Timer1 门控处于有效状态,则开启 Timer1
0 = 开启 Timer1
T1CKPS<1:0>: Timer1 输入时钟预分频比选择位
11 = 1:8 预分频比
10 = 1:4 预分频比
01 = 1:2 预分频比
00 = 1:1 预分频比
T1OSCEN :LP 振荡器使能控制位
如果不带 CLKOUT 的 INTOSC 处于有效状态:
1 = LP 振荡器使能作为 Timer1 的时钟
0 = LP 振荡器关闭
否则:
该位为无关位。 LP 振荡器被禁止。
T1SYNC : Timer1 外部时钟输入同步控制位
TMR1CS = 1:
1 = 不同步外部时钟输入
0 = 同步外部时钟输入
TMR1CS = 0:
该位为无关位。 Timer1 使用内部时钟
TMR1CS :Timer1 时钟源选择位
1 = 使用来自 T1CKI 引脚 (在上升沿)的外部时钟
0 = 内部时钟 (F
TMR1ON: Timer1 使能位
1 = 使能 Timer1
0 = 停止 Timer1
OSC/4)
(1)
(2)
注 1: T1GINV 位将 Timer1 门控逻辑反相,无论其来源为何。
2: 要将 T1G
源,必须将 TMR1GE 位置 1 。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 49 页
引脚或 COUT (通过 CMCON1 寄存器的 T1GSS 位在二者之间进行选择)用作 Timer1 门控
PIC12F609/615/12HV609/615
表 6-1 :与TIMER1 相关的寄存器汇总
名称
APFCON
CMCON0 CMON COUT
CMCON1
INTCON GIE PEIE
PIE1
PIR1
TMR1H
TMR1L
T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 uuuu uuuu
图注: x = 未知, u = 不变, — = 未实现 (读为 0)。 Timer1 模块不使用阴影单元。
注 1 : 仅限 PIC12F615/HV615 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
(1)
— — — T1GSEL — — P1BSEL P1ASEL ---0 --00 ---0 --00
CMOE CMPOL —C M R —C M C H0000 -0-0 0000 -0-0
— — — T1ACS CMHYS — T1GSS CMSYNC ---0 0-10 ---0 0-10
T0IE INTE GPIE T0IF INTF GPIF 0000 000x 0000 000x
— ADIE
— ADIF
16 位 TMR1 寄存器高字节的保持寄存器
16 位 TMR1 寄存器低字节的保持寄存器
(1)
(1)
CCP1IE
CCP1IF
(1)
— CMIE — TMR2IE
(1)
— CMIF — TMR2IF
(1)
TMR1IE -00- 0-00 -00- 0-00
(1)
TMR1IF -00- 0-00 -00- 0-00
POR/BOR
时的值
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
所有其他
复位时的值
DS41302A_CN 第 50 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
7.0 TIMER2 模块
(仅限 PIC12F615/HV615)
Timer2 模块是 8 位定时器,具有以下特性:
•8位定时器寄存器 (TMR2)
•8位周期寄存器 (PR2)
•TMR2与 PR2 匹配时产生中断
• 可软件编程的预分频器 (分频比为 1:1、 1:4 和
1:16)
• 可软件编程的后分频器 (分频比为 1:1 到 1:16)
Timer2 框图请参见图 7-1。
7.1 Timer2 工作原理
Timer2 模块的时钟输入是系统指令时钟(FOSC /4 )。时
钟送入 Timer2 预分频器, Timer2 预分频器提供 1:1 、
1:4 或 1:16 三种预分频比选择。然后预分频器的输出用
于递增 TMR2 寄存器。
TMR2 的值与 PR2 的值不断进行比较以确定何时匹配。
TMR2 将从 00h 开始递增,直到与 PR2 中的值匹配。当
匹配发生时,会发生以下两件事:
•TMR2在下一个递增周期复位为 00h。
•Timer2后分频器递增。
Timer2/PR2 比较器的匹配输出被送入 Timer2 后分频
器。后分频器具有 1:1 到 1:16 的后分频比选择。Timer2
后分频器的输出用于将 PIR1 寄存器中的 TMR2IF 中断
标志位置 1 。
TMR2 和 PR2 寄存器均可完全读写。在任何复位时,
TMR2寄存器被设置为 00h,PR2 寄存器被设置为 FFh。
通过将 T2CON 寄存器中的 TMR2ON 位设置为 1 可使
能Timer2 。通过将TMR2ON 位设置为0 可关闭 Timer2 。
Timer2 预分频器由 T2CON 寄存器中的 T2CKPS 位控
制。 Timer2 后分频器由 T2CON 寄存器中的 TOUTPS
位控制。预分频和后分频计数器均会在发生以下事件时
清零:
• 对 TMR2 进行写操作。
• 对 T2CON 进行写操作。
• 发生任何器件复位 (上电复位、 MCLR
复位、看
门狗定时器复位或欠压复位)。
注: 写 T2CON 时 TMR2 不会清零。
图 7-1 : TIMER2 框图
OSC/4
F
预分频器
1:1, 1:4, 1:16
2
T2CKPS<1:0>
TMR2
比较器
PR2
复位
1:1 至 1:16
EQ
TOUTPS<3:0>
TMR2
输出
后分频器
4
将标志位
TMR2IF 置 1
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 51 页
PIC12F609/615/12HV609/615
寄存器 7-1: T2CON: TIMER2 控制寄存器
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
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
bit 6-3
bit 2
bit 1-0
未实现:读为 0
TOUTPS<3:0> :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后分频比
TMR2ON: Timer2 使能位
1 = 使能 Timer2
0 = 关闭 Timer2
T2CKPS<1:0>: Timer2 时钟预分频比选择位
00 = 预分频比为 1
01 = 预分频比为 4
1x = 预分频比为 16
表 7-1 :与TIMER2 相关的寄存器汇总
名称
INTCON GIE PEIE
PIE1
PIR1
PR2
TMR2
T2CON
图注: x = 未知, u = 不变, — = 未实现 (读为 0)。 Timer2 模块不使用阴影单元。
注 1 : 仅限 PIC12F615/HV615 。
DS41302A_CN 第 52 页 初稿 2008 Microchip Technology Inc.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— ADIE
— ADIF
Timer2 模块周期寄存器
8 位 TMR2 寄存器的保持寄存器
— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
(1)
(1)
T0IE INTE GPIE T0IF INTF GPIF 0000 0000 0000 0000
CCP1IE
CCP1IF
(1)
(1)
— CMIE —T M R 2 I E
— CMIF —T M R 2 I F
(1)
TMR1IE -00- 0-00 -00- 0-00
(1)
TMR1IF -00- 0-00 -00- 0-00
POR/BOR
时的值
1111 1111 1111 1111
0000 0000 0000 0000
所有其他
复位时的值
PIC12F609/615/12HV609/615
8.0 比较器模块
比较器模块通过比较两个模拟电压并提供其相对幅值的
数字表示,用于建立模拟电路与数字电路的接口。比较
器是非常有用的混合信号模块,因为它提供了与程序执
行相独立的模拟功能。模拟比较器模块包括以下特性:
• 可编程输入部分
• 比较器输出内部 / 外部有效
• 可编程输出极性
• 电平变化中断
• 从休眠状态唤醒
•PWM关闭
•Timer1门控 (计数使能)
• 输出与 Timer1 时钟输入同步
• 可编程参考电压
• 用户可使能的比较器滞后
8.1 比较器概述
图8-1 所示为比较器以及模拟输入电平与数字输出之间的
关系。当 V
时,比较器输出为数字低电平。当 V
于 V
图 8-2 : 比较器的简化框图
IN+ 上的模拟电压小于 V IN- 上的模拟电压值
IN+ 上的模拟电压大
IN- 上的模拟电压值时,比较器输出为数字高电平。
图 8-1 :单比较器
VIN +
V
IN-
VIN VIN +
输出
注: 比较器输出的黑色区域表示因输入失调电
压和响应时间所造成的输出不确定区域。
+
–
输出
FixedRef
CVREF
CMVREN
CIN0-
CIN1-
CIN+
0
MUX
1
CMCH
Q3*RD_CMCON0
(1)
IN+
IN-
CMON
CMPOL
来自 Time r1
时钟
0
MUX
1
CMR
0
MUX
1
REF
CMV
注 1: 当 CMON = 0 时,比较器将输出 0 到异或门。
2: Q1 和 Q3 是四相系统时钟 (F
3: Q1 在休眠模式下保持高电平。
4: 图中的输出仅供参考。更多详细信息,请参见 I/O 端口引脚图。
CMV
CMV
DQ
Q1
EN
复位
DQ
OSC)的相。
CMPOL
DQ
EN
CL
CMSYNC
0
MUX
1
数据总线
RD_CMCON0
将 CMIF 置 1
至 PWM 自动关闭
CMOE
COUT
SYNCCMOUT
至 Timer1 门控
至
(4)
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 53 页
PIC12F609/615/12HV609/615
8.2 模拟输入连接注意事项
模拟输入的简化电路如图 8-3 所示。由于模拟输入引脚
与数字输入共用连接,它们在 V
向偏置的 ESD 保护二极管。因此,模拟输入必须在 V
DD 和 V SS 之间连有反
SS
和 VDD 之间。如果输入电压与这一范围偏离的绝对值超
过 0.6V ,就可能发生一个二极管正向导通,从而可能导
致锁死发生。
模拟信号源的最大阻抗推荐值为 10 k Ω 。任何连接到模
拟输入引脚的外部元件 (如电容或齐纳二极管),应保
证其泄漏电流极小以使引入的误差降至最低。
图 8-3 : 模拟输入模型
DD
V
注 1 :读 GPIO 寄存器时,所有配置为模拟输入
的引脚均读为 0 。配置为数字输入的引脚
将根据输入规范转换为模拟输入。
2 : 定义为数字输入引脚上的模拟电平可能会
使输入缓冲器的电流消耗超过规定值。
RS < 10K
AIN
PIN
VA
C
5 pF
图注: CPIN = 输入电容
LEAKAGE = 由各连接点在引脚上产生的泄漏电流
I
R
IC = 片内走线等效电阻
S = 信号源阻抗
R
A = 模拟电压
V
V
T = 门限电压
VT ≈ 0.6V
V
T ≈ 0.6V
R
ILEAKAGE
±500 nA
V
SS
IC
至比较器
DS41302A_CN 第 54 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
8.3 比较器控制
比较器有两个控制和配置寄存器: CMCON0 和
CMCON1。CMCON1 寄存器用于控制与 Timer1 的交互
和比较器输出的同时读取。
CMCON0寄存器(寄存器8-1)包含以下控制和状态位 :
• 使能
• 输入选择
• 参考电压选择
• 输出选择
• 输出极性
8.3.1 比较器使能
将 CMCON0 寄存器的 CMON 位置1 可以使能比较器操
作。清零 CMON 位可以禁止比较器,以使电流消耗降
至最低。
8.3.2 比较器输入选择
CMCON0 寄存器的 CMCH 位指示将 4 个模拟输入引脚
之一连接到比较器的反相输入端。
注: 要将 CIN+ 和 CIN- 引脚用作模拟输入,必须
将 ANSEL 寄存器中相应的位置 1 ,同时也
必须置1 相应的TRIS 位来禁止输出驱动器。
8.3.3 比较器参考电压选择
通过设置 CMxCON0 寄存器的 CMR 位,将内部参考电
压或模拟输入引脚连接到比较器的同相输入。关于内部
参考电压模块的更多信息,请参见第 8.10 节 “比较器
参考电压”。
8.3.5 比较器输出极性
反相比较器的输出在功能上等同于交换比较器输入。
可以通过将 CMCON0 寄存器的 CMPOL 位置 1 来使
比较器输出的极性反相。清零 CMPOL 位导致同相输
出。表 8-1 给出了输出状态与输入条件及极性位的完
整表格。
表 8-1 : 输出状态与输入条件
输入条件
IN- > CMV IN+ 00
CMV
IN- < CMV IN+ 01
CMV
CMVIN - > CMVIN + 11
CMVIN - < CMVIN + 10
注: COUT 指寄存器位和输出引脚。
CMPOL COUT
8.4 比较器响应时间
在改变输入源或选择新的参考电压后,比较器输出要经
过一段不确定状态的时间。这段时间被称为响应时间。
比较器的响应时间不同于参考电压的稳定时间。因此,
在确定比较器输入改变的总响应时间时,必须考虑这两
个时间。更多详细信息,请参见第 15.0 节“电气规范”。
8.3.4 比较器输出选择
可以通过读 CMCON0 寄存器的 COUT 位监视比较器的
输出。为了使输出可用于外部连接,必须满足以下条件:
• 必须将 CMxCON0 寄存器的 CMOE 位置 1
• 必须清零相应的 TRIS 位
• 必须将 CMCON0 寄存器的 CMON 位置 1
注 1 :CMOE 位改写端口数据锁存器。将 CMON
置 1 对端口改写没有影响。
2 : 比较器的内部输出在每个指令周期被锁
存。除非另外指定,否则不锁存外部输出。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 55 页
PIC12F609/615/12HV609/615
8.5 比较器中断操作
只要比较器的输出值发生变化,相应的比较器中断标
志位就会置 1 。比较器输出值的变化由不匹配电路识
别,该电路由两个锁存器和一个异或门组成(见图 8-4
和图 8-5 )。 当 读 CMCON0 寄存器时,一个锁存器更
新为比较器的输出电平。该锁存器将保持该值,直到下
次读 CMCON0 寄存器,或者发生复位。不匹配电路的
另一个锁存器在每个 Q1 系统时钟更新。当比较器的输
出变化在 Q1 时钟周期输入到第二个锁存器时,即产生
不匹配条件。这时两个不匹配锁存器具有相反的输出
电平,由异或门检测并被送到中断电路。不匹配条件持
续直到读CMCON0 寄存器或者比较器输出返回先前的
状态。
注 1 :对 CMCON0 寄存器的写操作也将清除不
匹配条件,因为所有写操作在写周期开始
都包含一个读操作。
2 : 比较器中断的正常工作与 CMOE 的状态
无关。
比较器中断是根据不匹配边沿而不是不匹配电平置 1
的。这意味着不需要额外的读取或写入 CMCON0 寄存
器来将不匹配寄存器清零这一步骤,即可将中断标志复
位。当不匹配寄存器清零时,比较器输出返回前一个状
态将发生中断,否则不会发生中断。
需要用软件保存比较器输出状态的信息 (从 CMCON1
寄存器读取),以确定实际发生的变化。
PIR1 寄存器的 CMIF 位是比较器中断标志。必须用软件
将该位清零以将其复位。由于可以对该寄存器写入 1 ,
因此可产生中断。
必须将 PIE1 寄存器的 CMIE 位以及 INTCON 寄存器的
PEIE 和 GIE 位都置 1 以允许比较器中断。如果上述位
中有任何一位被清零,则无法允许中断,尽管中断条件
发生时仍会将 PIR1 寄存器的 CMIF 位置 1 。
图 8-4 : 比较器中断时序
(不带 CMCON0 读取)
Q1
Q3
CIN+
COUT
将 CxIF 置 1(边沿)
CMIF
TRT
由软件复位
图 8-5 : 比较器中断时序
(带 CMCON0 读取)
Q1
Q3
CIN+
COUT
将 CxIF 置 1(边沿)
CMIF
由 CMCON0 读操作清零
注 1 :在读操作执行过程中 (Q2 周期的起始时
2 : 当比较器先使能时,比较器模块中的偏置
TRT
由软件复位
刻),如 果 CMCON0 寄存器(COUT )发
生变化,那么 PIR1 寄存器的 CMIF 中断
标志位可能不会被置 1 。
电路在稳定前可能产生比较器的无效输
出。应允许偏置电路有 1 µs 的稳定时间,
然后在允许比较器中断前将不匹配条件和
中断标志清零。
DS41302A_CN 第 56 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
8.6 休眠模式下的工作原理
如果在进入休眠模式之前比较器使能,则它在休眠期间
仍将处于运行状态。第 15.0 节 “电气规范”中单独给
出了比较器消耗的额外电流。如果不使用比较器来唤醒
器件,则在休眠模式下可通过关闭比较器使功耗降至最
低。可以通过清零 CMCON0 寄存器的 CMON 位来关闭
比较器。
比较器输出变化可以将器件从休眠状态唤醒。要使比较
器能将器件从休眠状态唤醒,必须将 PIE1 寄存器的
CMIE 位和INTCON 寄存器的 PEIE 位置 1 。紧跟 SLEEP
指令后的指令总是在从休眠状态唤醒之后执行。如果也
将 INTCON 寄存器的 GIE 位置 1 ,则器件将执行中断服
务程序。
8.7 复位的影响
器件复位强制 CMCON1 寄存器为复位状态。这将比较
器和参考电压设置为 “关闭”状态。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 57 页
PIC12F609/615/12HV609/615
寄存器 8-1: CMCON0:比较器控制寄存器 0
R/W-0 R-0 R/W-0 R/W-0 U-0 R/W-0 U-0 R/W-0
CMON COUT CMOE CMPOL — CMR — CMCH
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
CMON:比较器使能位
1 = 比较器使能
0 = 比较器禁止
COUT:比较器输出位
C1POL = 1 (极性反相):
如果
当 CMVIN + > CMVIN - 时, COUT = 0
当 CMV
如果 C1POL = 0 (极性同相):
当 CMVIN + > CMVIN - 时, COUT = 1
当 CMV
CMOE :比较器输出使能位
1 = COUT 出现在 COUT 引脚上
0 = COUT 仅在内部有效
CMPOL:比较器输出极性选择位
1 = COUT 逻辑反相
0 = COUT 逻辑不反相
未实现:读为 0
CMR:比较器参考电压选择位 (同相输入)
1 = CMV
0 = CMV
未实现:读为 0
CMCH:比较器通道选择位
00 = 比较器的 CMV
01 = 比较器的 CMV
IN+ < CMV IN- 时, COUT = 1
IN+ < CMV IN- 时, COUT = 0
(1)
IN+ 连接至 CMV REF 输出
IN+ 连接至 CIN+ 引脚
IN- 引脚连接至 CIN0-
IN- 引脚连接至 CIN1-
注 1 : 比较器输出需要以下 3 个条件: CMOE = 1 , CMON = 1 且相应的端口 TRIS 位 = 0 。
DS41302A_CN 第 58 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
8.8 由比较器提供 Timer1 的门控源
这个特性可用来对模拟事件的持续时间或时间间隔计
时。清零 CMCON1 寄存器的 T1GSS 位将使 Timer1 根
据比较器的输出递增。这需要已开启 Timer1 且已使能
门控。详细信息,请参见第 6.0 节 “带门控的 Timer1
模块”。
当比较器用作 Timer1 门控源时,建议通过将 CMSYNC
位置 1 使比较器与 Timer1 同步。这可以确保当比较器
输出在递增期间改变时, Timer1 不会错过递增。
8.9 使比较器的输出与 Timer1 同步
通过将 CMCON1 寄存器的 CMSYNC 位置 1 ,可以使比
较器的输出与 Timer1 保持同步。使能比较器的输出时,
比较器的输出在 Timer1 时钟源的下降沿被锁存。如果
Timer1 使用了预分频器,则比较器的输出在经过预分频
后被锁存。为了防止发生竞争,比较器的输出在 Timer1
时钟源的下降沿被锁存,而 Timer1 在其时钟源的上升
沿递增。更多信息,请参见比较器框图 (图 8-2 )和
Timer1 框图 (图 6-1 )。
寄存器 8-2 : CMCON1 :比较器控制寄存器 1
U-0 U-0 U-0 R/W-0 R/W-0 U-0 R/W-1 R/W-0
— — — T1ACS CMHYS — T1GSS CMSYNC
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-5
bit 4
bit 3
bit 2
bit 1
bit 0
未实现:读为 0
T1ACS :Timer1 备用时钟选择位
1 =Timer1时钟源为系统时钟 (F
0 =Timer1时钟源为指令时钟 (F
CMHYS:比较器滞后选择位
1 = 比较器滞后使能
0 = 比较器滞后禁止
未实现:读为 0
T1GSS: Timer1 门控源选择位
1 =Timer1门控源为 T1G 引脚 (必须将引脚配置为数字输入)
0 =Timer1门控源为比较器输出
CMSYNC:比较器输出同步位
1 = 输出与 Timer1 时钟的下降沿同步
0 = 输出异步
OSC)
OSC\4)
(1)
(2)
注 1: 请参见第 6.6 节“ Timer1 门控”。
2: 请参见图 8-2 。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 59 页
PIC12F609/615/12HV609/615
8.10 比较器参考电压
比较器参考电压模块为比较器提供了内部产生的参考电
压。它具有以下特性:
• 与比较器操作独立
•16级电压范围
• 输出钳位到 V
• 与 VDD 成比例
• 固定参考电压 ( 0.6)
VRCON 寄存器 (寄存器 8-3)控制参考电压模块,如
寄存器 8-6 所示。
8.10.1 独立操作
比较器参考电压独立于比较器配置。将 VRCON 寄存器
的 VREN 位置 1 将使能参考电压。
8.10.2 输出电压选择
REF 参考电压有 2 个范围,每个范围有 16 个电平。
CV
范围的选择由 VRCON 寄存器的 VRR 位控制。16 个电
平通过 VRCON 寄存器的 VR<3:0> 位进行设置。
CVREF 输出电压由下面的公式确定:
公式 8-1 : CVREF 输出电压
RR 1
=
V
VRR 0
=
由于此模块的结构而无法实现 VSS 到 VDD 的满量程。请
参见图 8-6 。
SS
(低电平范围):
CVREF (VR<3:0>/24) V DD×=
(高电平范围):
CVREF (VDD /4) + =
(VR<3:0> V
DD/32)×
8.10.3 输出钳位到 VSS
可以将 CVREF 输出电压设为 Vss 且不产生功耗,方法
是将 VRCON 配置如下:
•VREN=0
•VRR=1
•VR<3:0>=0000
这使得比较器可以检测到过零点,且不消耗 CV
的电流。
REF 模块
8.10.4 输出与 VDD 成比例
比较器参考电压来自 VDD ,因此, CVREF 输出会随着
DD 的变化而变化。经过测试的比较器参考电压的绝对
V
精度,请参见第 15.0 节 “电气规范”。
8.10.5 固定参考电压
固定参考电压独立于 VDD ,输出电压标称值为 0.6V 。可
通过将 VRCON 寄存器的 FVREN 位设为 1 使能该参考
电压。当 HFINTOSC 振荡器有效时,该参考电压始终
是使能的。
8.10.6 固定参考电压稳定周期
当固定参考电压模块使能时,需要一段时间使参考电压
及其放大器电路达到稳定。用户程序必须包含允许模块
稳定的延时子程序。关于最小延时要求,请参见第 15.0 节
“电气规范”。
8.10.7 参考电压选择
参考电压模块输出上的多路开关使比较器可以选择使用
REF 或固定参考电压。
CV
将VRCON 寄存器的CMVREN 位置1 使电流流入CV
分压器,并使比较器选择使用 CVREF 电压。清 零
CMVREN 位使比较器选择使用固定电压。
当清零 CMVREN 位时,禁止电流流入 CVREF 分压器,
从而将参考电压外设的功耗降至最低。
REF
DS41302A_CN 第 60 页 初稿 2008 Microchip Technology Inc.
图 8-6 : 比较器参考电压框图
8 RRR RR
VDD
PIC12F609/615/12HV609/615
16 级
CMVREN
(1)
REF
CV
至比较器
和 ADC 模块
FixedRef
至比较器
和 ADC 模块
注 1 : 应注意确保 CV
8R
模拟
MUX
15
0
VR<3:0>
4
0.6V
REF 维持在比较器共模输入范围之内。更多详细信息,请参见第 15.0 节 “电气规范”。
(1)
FVREN
Sleep
HFINTOSC 使能
使能
固定参考
电压
VRR
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 61 页
PIC12F609/615/12HV609/615
寄存器 8-3: VRCON:参考电压控制寄存器
R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
CMVREN — VRR FVREN VR3 VR2 VR1 VR0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
bit 6
bit 5
bit 4
bit 3-0
注 1: 当 CMVREN 为低电平时, CVREF 电路将掉电且不能提供 IDD 电流。
2: 当 CMVREN 为低电平且 FVREN 位为低电平时, CMVREF 信号应为比较器提供 Vss 。
CMVREN:比较器参考电压使能位
1 = CVREF 电路上电并送到比较器的 CVREF 输入
0 = 0.6 伏固定参考电压送到比较器的 CMV
未实现:读为 0
VRR: CV
1 = 低电平范围
0 = 高电平范围
FVREN: 0.6V 参考电压使能位
1 = 使能
0 = 禁止
VR<3:0> :比较器参考电压 CV
当 VRR = 1 时:CVREF = (VR<3:0>/24) * VDD
当 VRR = 0 时:CVREF = VDD /4 + (VR<3:0>/32) * VDD
REF 范围选择位
(1, 2)
REF 输入
(2)
REF 值选择位 (0 ≤ VR<3:0> ≤ 15)
DS41302A_CN 第 62 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
8.11 比较器滞后
每个比较器都具有内置的滞后功能,它可以由用户通过
将 CMCON1 寄存器的 CMHYS 位置 1 来使能。该滞后
功能有助于滤除噪声,并在比较器输出改变状态时减少
多个比较器输出跳变。
图 8-7 : 比较器滞后
VIN +
V
IN-
V+
H+
V
IN-
V
VH -
IN+
V
图 8-7 显示了使用滞后和不使用滞后情况下比较器模拟
输入电平和数字输出之间的关系。只有当 V
拟电压上升到滞后电路上限阈值 (V
器输出才从低电平状态变化到高电平状态。只有当 V
上的模拟电压下降到滞后电路下限阈值(V
比较器输出才从高电平状态变化到低电平状态。
+
输出
–
IN+ 上的模
H+)以上时,比较
IN+
H-)以下时,
输出
(无滞后)
输出
(有滞后)
注: 比较器输出的黑色区域表示因输入失调电压和响应时间所造成的输出不确定区域。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 63 页
PIC12F609/615/12HV609/615
表 8-2 : 与比较器和参考电压模块相关的寄存器汇总
名称
ANSEL
CMCON0 CMON COUT CMOE CMPOL
CMCON1
INTCON GIE PEIE
PIE1
PIR1
GPIO
TRISIO
VRCON CMVREN
图注:
注 1 : 仅限 PIC12F615/HV615 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— ADCS2 ADCS1 ADCS0 ANS3 ANS2 ANS1 ANS0 -000 1111 -000 1111
—C M R —C M C H0000 -000 0000 -000
— — — T1ACS CMHYS — T1GSS CMSYNC 0000 0000 0000 0000
T0IE INTE GPIE T0IF INTF GPIF 0000 000x 0000 000x
— ADIE
— ADIF
— — GP5 GP4 GP3 GP2 GP1 GP0 --xx xxxx --uu uuuu
— — TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 --11 1111
(1)
(1)
— VRR FVREN VR3 VR2 VR1 VR0 0-00 0000 0-00 0000
CCP1IE
CCP1IF
(1)
—C M I E— TMR2IE
(1)
—C M I F— TMR2IF
x = 未知, u = 不变, — = 未实现 (读为 0)。比较器不使用阴影单元。
POR/BOR
时的值
(1)
TMR1IE -00- 0-00 -00- 0-00
(1)
TMR1IF -00- 0-00 -00- 0-00
所有其他
复位时的值
DS41302A_CN 第 64 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
9.0 模数转换器 ( ADC)模块
(仅限 PIC12F615/HV615 )
模数转换器 (Analog-to-digital Converter , ADC )可将
模拟输入信号转换为信号的 10 位二进制表示。该模块使
用模拟输入,这些输入通过多路开关连接到同一个采样
和保持电路。采样保持电路的输出与转换器的输入相连
接。转换器通过逐次逼近法产生 10 位二进制结果,并将
转换结果存储在 ADC 结果寄存器 (ADRESL 和
ADRESH )中。
可通过软件方式选择 V
压作为 ADC 参考电压。
ADC 可在转换完成时产生中断。该中断可用于将器件从
休眠状态唤醒。
图 9-1 给出了 ADC 的框图。
图 9-1 : ADC 框图 (+3 内部)
DD 或施加在外部参考引脚上的电
VDD
GP0/AN0
GP1/AN1/VREF
GP2/AN2
GP4/AN3
REF
CV
0.6V 参考电压
1.2V 参考电压
VREF
CHS
000
001
010
011
100
101
110
VCFG = 0
VCFG = 1
GO/DONE
ADON
VSS
A/D
ADFM
10
0 = 左对齐
1 = 右对齐
10
ADRESH ADRESL
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 65 页
PIC12F609/615/12HV609/615
9.1 ADC 配置
配置和使用 ADC 时必须考虑以下功能:
• 端口配置
• 通道选择
•ADC参考电压选择
•ADC转换时钟源
• 中断控制
• 结果格式
9.1.1 端口配置
ADC 可用于转换模拟和数字信号。转换模拟信号时,通
过设置相关的 TRIS 和ANSEL 位将I/O 引脚配置为模拟。
更多信息,请参见有关相应端口的章节。
注: 在任何定义为数字输入的引脚上施加模拟
电压可能导致输入缓冲器消耗的电流增加。
9.1.2 通道选择
ADCON0 寄存器的 CHS 位决定与采样和保持电路相连
接的通道。
改变通道时,在开始下一次转换前需要一段延时。更多
信息,请参见第 9.2 节“ADC 工作原理”。
9.1.3 ADC 参考电压
ADCON0 寄存器的 VCFG 位用于控制正参考电压。正
参考电压可以是 V
接到参考地。
DD 或外部电压源。负参考电压总是连
9.1.4 转换时钟
可通过软件方式设置 ANSEL 寄存器的 ADCS 位来选择
转换时钟源。有以下 7 种时钟频率可供选择:
•F
OSC/2
•F
OSC/4
•FOSC/8
•FOSC/16
•F
OSC/32
•FOSC/64
•F
RC (专用内部振荡器)
完成一个位转换所需的时间定义为 T
位转换需要 11 个 T
为正确转换,必须满足适当的 T
参见第 15.0 节 “电气规范”中的 A/D 转换要求。表 9-1
给出了适当的 ADC 时钟选择的示例。
注: 除非使用 FRC ,否则系统时钟频率的任何
AD 周期,如图 9-3 中所示。
改变都会改变 ADC 时钟频率,从而对 ADC
结果产生不利影响。
AD。一次完整的 10
AD 规范。更多信息,请
DS41302A_CN 第 66 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
表 9-1: ADC 时钟周期 ( TAD)与器件工作频率 ( VDD > 3.0V)关系表
ADC 时钟周期 ( T
ADC 时钟源
FOSC /2 000 100 ns
FOSC /4 100 200 ns
FOSC /8 001 400 ns
FOSC /16 101 800 ns
FOSC /32 010 1.6 µ s4 . 0 µs 8.0 µs
FOSC /64 110 3.2 µ s 8.0 µ s
FRC x11 2-6 µ s
图注: 阴影单元表示超出了建议范围。
注 1 : VDD > 3.0V 时, FRC 时钟源具有 4 µ s 的典型 TAD 时间。
2: 这些值均违反了所需的最小 T
3: 为了加快转换速度,建议选用其他时钟源。
4: 当器件频率高于 1 MHz 时,仅当在休眠状态下进行转换时才推荐使用 FRC 时钟源。
AD) 器件频率 (F OSC)
ADCS<2:0> 20 MHz 8 MHz 4 MHz 1 MHz
(2)
(2)
(2)
(2)
(1,4)
AD 时间。
(2)
250 ns
500 ns
1.0 µs
(2)
(2)
500 ns
1.0 µs
2.0 µ s4 . 0 µs 16.0 µs
2-6 µs
(3)
(1,4)
16.0 µs
2-6 µs
(2)
(2)
2.0 µs
4.0 µs
2.0 µs 8.0 µs
(3)
(3)
(1,4)
32.0 µs
64.0 µs
2-6 µs
(3)
(3)
(3)
(3)
(1,4)
图 9-2: 模数转换 T
TCY 至 TAD
TAD1 TAD2 T AD3 TAD4 TAD5 T AD6 TAD7 TAD8 T AD9
AD 周期
b9 b8 b7 b6 b5 b4 b3 b2
转换开始
保持电容与模拟输入断开连接(典型值为 100 ns )
将 GO/DONE 位置 1
9.1.5 中断
ADC 模块可在模数转换完成时产生中断。 ADC 中断标
志位是 PIR1 寄存器中的 ADIF 位。 ADC 中断允许位是
PIE1 寄存器中的 ADIE 位。 ADIF 位必须用软件清零。
注: ADIF 位在每次转换完成时置 1 ,与是否允
许了 ADC 中断无关。
器件运行或休眠时都可产生该中断。如果器件处于休眠
状态,该中断会唤醒器件。从休眠状态唤醒时,总是执
行 SLEEP 指令后紧跟的下一条指令。如果用户试图从休
眠状态唤醒器件并恢复主代码执行,必须禁止全局中
断。如果允许了全局中断,执行将切换到中断服务程序。
更多信息,请参见第 9.1.5 节 “中断”。
TAD10 TAD11
b1 b0
ADRESH 和 ADRESL 寄存器被装入值,
GO 位被清零,
ADIF 位被置 1,
保持电容与模拟输入相连接
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 67 页
PIC12F609/615/12HV609/615
9.1.6 结果格式
10 位 A/D 转换结果可以两种格式提供:左对齐或右对
齐。 ADCON0 寄存器的 ADFM 位控制输出格式。
图 9-3 给出了两种输出格式。
图 9-3 : 10 位 A/D 转换结果格式
ADRESH ADRESL
( ADFM = 0 )
MSB LSB
bit 7 bit 0 bit 7 bit 0
10 位 A/D 结果 未实现:读为 0
( ADFM = 1 )
bit 7 bit 0 bit 7 bit 0
未实现:读为 0 10 位 A/D 结果
9.2 ADC 工作原理
9.2.1 启动转换
要使能 ADC 模块,ADCON0 寄存器的 ADON 位必须设
置为 1 。将 ADCON0 寄存器的 GO/DONE
将启动模数转换。
注: 不应在启动 ADC 的同一条指令中将 GO/
位置 1 。请参见第 9.2.6 节“A/D 转
DONE
换步骤”。
9.2.2 转换完成
转换完成时, ADC 模块将:
• 清零 GO/DONE
• 将 ADIF 标志位置 1
• 用新的转换结果更新 ADRESH:ADRESL 寄存器
位
9.2.3 终止转换
如果必须在转换完成前终止转换,可用软件将 GO/
DONE
ADRESH 和 ADRESL 寄存器, ADRESH:ADRESL 这
对寄存器仍然保留前一次转换的值。此外,必须经过
2T
自动开始对选定通道的输入进行采集。
位清零。不会用部分完成的模数转换结果更新
AD 的延时后才能开始下一次采集。延时结束后,将
位设置为 1
MSB LSB
9.2.4 休眠期间的 ADC 操作
ADC 模块可以在休眠模式下工作。这需要把 ADC 转换
时钟设置为 F
待一个指令周期后才能启动转换操作。这使得可以执行
SLEEP 指令,以降低转换期间的系统噪声。如果允许了
ADC 中断,转换完成时器件将从休眠状态唤醒。如果禁
止了 ADC 中断,尽管 ADON 位仍保持置 1 ,转换完成
后 ADC 模块将关闭。
ADC 时钟源不是 F
SLEEP 指令会导致当前转换中止, ADC 模块关闭。
RC 选项。选择 F RC 时钟源后, ADC 需等
RC 时,尽管 ADON 位仍保持置 1,
9.2.5 特殊事件触发器
ECCP 特殊事件触发器允许定期测试 ADC 而无需软件
干预。当出现触发信号后, GO/DONE
Timer1 计数器复位为零。
使用特殊事件触发器不能确保正确的 ADC 时序。用户
需负责确保 ADC 时序要求得到满足。
更多信息,请参见第 10.0 节“增强型捕捉 / 比较 /PWM
(带自动关闭和死区)模块(仅限 PIC12F615/
HV615 )”。
位由硬件置 1 ,
注: 器件复位将强制所有寄存器为复位状态。
因此, ADC 模块被关闭,任何进行中的转
换操作被终止。
DS41302A_CN 第 68 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
9.2.6 A/D 转换步骤
以下是用 ADC 执行模数转换的示例步骤:
1. 配置端口:
• 禁止引脚输出驱动器 (见 TRIS 寄存器)
• 将引脚配置为模拟
2. 配置 ADC 模块:
• 选择 ADC 转换时钟
• 配置参考电压
• 选择 ADC 输入通道
• 选择结果格式
• 开启 ADC 模块
3. 配置 ADC 中断 (可选):
• 清零 ADC 中断标志
• 允许 ADC 中断
• 允许外设中断
• 允许全局中断
4. 等待所需采集时间
5. 通过将 GO/DONE 位置 1 启动转换。
6. 通过以下方式之一等待 ADC 转换完成:
• 查询 GO/DONE
• 等待 ADC 中断 (已允许中断)
7. 读取 ADC 结果。
8. 清零 ADC 中断标志(如果已允许中断则需要)。
(1)
(2)
位
。
例 9-1 : A/D 转换
;This code block configures the ADC
;for polling, Vdd reference, Frc clock
;and GP0 input.
;
;Conversion start & polling for completion
; are included.
;
BANKSEL TRISIO ;
BSF TRISIO,0 ;Set GP0 to input
BANKSEL ANSEL ;
MOVLW B’01110001’ ;ADC Frc clock,
IORWF ANSEL ; and GP0 as analog
BANKSEL ADCON0 ;
MOVLW B’10000001’ ;Right justify,
MOVWF ADCON0 ;Vdd Vref, AN0, On
CALL SampleTime ;Acquisiton delay
BSF ADCON0,GO ;Start conversion
BTFSC ADCON0,GO ;Is conversion done?
GOTO $-1 ;No, test again
BANKSEL ADRESH ;
MOVF ADRESH,W ;Read upper 2 bits
MOVWF RESULTHI ;Store in GPR space
BANKSEL ADRESL ;
MOVF ADRESL,W ;Read lower 8 bits
MOVWF RESULTLO ;Store in GPR space
注 1 :如果用户试图从休眠状态唤醒器件并恢复
主代码执行,必须禁止全局中断。
2 : 请参见第 9.3 节“A/D 采集要求”。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 69 页
PIC12F609/615/12HV609/615
9.2.7 ADC 寄存器定义
以下寄存器用于控制 ADC 的操作。
寄存器 9-1 : ADCON0 :A/D 控制寄存器 0
R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
ADFM VCFG
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
— CHS2 CHS1 CHS0 GO/DONE ADON
bit 7
bit 6
bit 5
bit 4-2
bit 1
bit 0
注 1: CHS<2:0> 位改为选择 1.2V 或 0.6V 参考电压时,参考输出电压将有一个瞬变。如果比较器模块使用 0.6V
ADFM: A/D 转换结果格式选择位
1 = 右对齐
0 = 左对齐
VCFG:参考电压位
1 = V
REF 引脚
0 = VSS
未实现:读为 0
CHS<2:0> :模拟通道选择位
000 = 通道 00 (AN0 )
001 = 通道 01 (AN1 )
010 = 通道 02 (AN2 )
011 = 通道 03 (AN3 )
100 = CV
101 = 0.6V 参考电压
110 = 1.2V 参考电压
111 = 保留。不要使用。
GO/DONE: A/D 转换状态位
1 = A/D 转换正在进行。将该位置 1 可启动 A/D 转换周期。
A/D 转换完成后,该位由硬件自动清零。
0 = A/D 转换已完成 / 未进行
ADON : ADC 使能位
1 = ADC 使能
0 = ADC 禁止,不消耗工作电流
参考电压,比较器输出可能由于该瞬变而暂时改变状态。
REF
DS41302A_CN 第 70 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
寄存器 9-2: ADRESH: ADC 结果寄存器高字节 ( ADRESH) ADFM = 0 (只读)
R-x R-x R-x R-x R-x R-x R-x R-x
ADRES9 ADRES8 ADRES7 ADRES6 ADRES5 ADRES4 ADRES3 ADRES2
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-0
ADRES<9:2> :ADC 结果寄存器位
10 位转换结果的高 8 位
寄存器 9-3 : ADRESL :ADC 结果寄存器低字节 (ADRESL ) ADFM = 0 (只读)
R-x R-x U-0 U-0 U-0 U-0 U-0 U-0
ADRES1 ADRES0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-6
bit 5-0
ADRES<1:0> :ADC 结果寄存器位
10 位转换结果的低 2 位
未实现:读为 0
— — — — — —
寄存器 9-4 : ADRESH :ADC 结果寄存器高字节 (ADRESH ) ADFM = 1 (只读)
U-0 U-0 U-0 U-0 U-0 U-0 R-x R-x
— — — — — — ADRES9 ADRES8
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-2
bit 1-0
未实现:读为 0
ADRES<9:8> :ADC 结果寄存器位
10 位转换结果的高 2 位
寄存器 9-5 : ADRESL :ADC 结果寄存器低字节 (ADRESL ) ADFM = 1 (只读)
R-x R-x R-x R-x R-x R-x R-x R-x
ADRES7 ADRES6 ADRES5 ADRES4 ADRES3 ADRES2 ADRES1 ADRES0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-0
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 71 页
ADRES<7:0> :ADC 结果寄存器位
10 位转换结果的低 8 位
PIC12F609/615/12HV609/615
9.3 A/D 采集要求
为了使 ADC 达到规定的精度,必须使充电保持电容
(C
HOLD)充满至输入通道的电平。模拟输入模型见
图 9-4。模拟信号源阻抗 ( R
SS)直接影响电容 C HO LD 的充电时间。采样开关
(R
阻抗 (R
见图 9-4 。建议模拟信号源的最大阻抗为 10 k Ω 。采集
时间随着源阻抗的降低而缩短。在选择 (或改变)模
拟输入通道后,必须在开始转换前完成 A/D 采集。可
公式 9-1 : 采集时间示例
SS)随器件电压 (V DD)的变化而变化,参
温度
:
假设
ACQ =
T
C
T
放大器稳定时间
= TAMP + TC + TCOFF
= 5µs + TC + [(
值可以用以下公式近似计算 :
VAPPLIED 1
= 50°C
VAPPLIED 1e
S)和内部采样开关阻抗
,外 部 阻 抗
+
保持电容充电时间
温度
- 25°C)(0.05 µs/° C)]
1
------------ –
10
VCHOLD=
2047
TC –
---------RC
–
VCHOLD=
KΩ ,
5.0V V
Tc –
---------
VAPPLIED 1e
RC
–
VAPPLIED 1
=
DD
+
温度系数
------------ –
2047
以使用公式 9-1 来计算最小采集时间。该公式假设误差
为 1/2 LSb (ADC 转换需要 1024 步)。1/2 LSb 误差
是 ADC 达到规定分辨率所允许的最大误差。
;[1]
充电到
;[2]
响应
1
;
结合
VCHOLD (1/2 lsb
VAPPLIED
[1]和[2]
充电到
误差范围)
VCHOLD
TC
求解
:
TC CHOLD R IC R SS R S++ () ln(1/2047) –=
因此
:
ACQ = 2
T
= 4.67
注 1:因为参考电压 ( VREF )自行抵消,因此它对该公式没有影响。
2: 充电保持电容 (C
3: 建议模拟信号源的最大阻抗为 10 k Ω 。此要求是为了符合引脚泄漏电流规范。
DS41302A_CN 第 72 页 初稿 2008 Microchip Technology Inc.
10pF 1kΩ7k
= 1.37µs
µ
s + 1.37µs + [(50° C - 25°C)(0.05 µs/° C)]
µ
s
Ω
10k
++ () – ln(0.0004885)=
HOLD)在每次转换后不会放电。
Ω
图 9-4 : 模拟输入模型
ANx
Rs
PIC12F609/615/12HV609/615
V
DD
VT = 0.6V
RIC ≤ 1K
采样开关
SS
Rss
CPIN
5 pF
图注: CPIN
VT
I LEAKAGE
RIC
SS
HOLD
C
VA
= 输入电容
= 门限电压
= 由各连接点在引脚上产生的泄漏电流
= 片内走线等效电阻
= 采样开关
= 采样 / 保持电容
图 9-5 : ADC 传递函数
3FFh
3FEh
3FDh
3FCh
3FBh
V
T = 0.6V
满量程
I LEAKAGE
± 500 nA
6V
5V
DD
V
4V
3V
2V
1 LSB 理想状况
C
HOLD = 10 pF
V
SS/V REF-
RSS
567891011
采样开关
(kΩ )
ADC 输出码
V
SS/V REF-
004h
003h
002h
001h
000h
1 LSB 理想状况
零量程
转换
DD/V REF+
V
满量程
转换
模拟输入电压
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 73 页
PIC12F609/615/12HV609/615
表 9-2 :与ADC 相关的寄存器汇总
名称
ADCON0 ADFM VCFG
ANSEL
ADRESH
ADRESL
GPIO
INTCON GIE PEIE
PIE1
PIR1
TRISIO
图注: x = 未知, u = 不变, — = 未实现 (读为 0)。 ADC 模块不使用阴影单元。
注 1 : 仅限 PIC12F615/HV615 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— CHS2 CHS1 CHS0 GO/DONE ADON 00-0 0000 00-0 0000
— ADCS2 ADCS1 ADCS0 ANS3 ANS2 ANS1 ANS0 -000 1111 -000 1111
A/D 结果寄存器的高字节
A/D 结果寄存器的低字节
— — GP5 GP4 GP3 GP2 GP1 GP0 --x0 x000 --x0 x000
T0IE INTE GPIE T0IF INTF GPIF 0000 0000 0000 0000
—A D I E
—A D I F
— — TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 --11 1111
(1)
(1)
CCP1IE
CCP1IF
(1)
— CMIE — TMR2IE
(1)
— CMIF — TMR2IF
POR/BOR
时的值
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
(1)
TMR1IE -00- 0-00 -00- 0-00
(1)
TMR1IF -00- 0-00 -00- 0-00
所有其他
复位时的值
DS41302A_CN 第 74 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
10.0 增强型捕捉 / 比较 /PWM (带自动
关闭和死区)模块 (仅限
PIC12F615/HV615 )
增强型捕捉 / 比较 /PWM 模块是允许用户计时和控制不
同事件的外设。在捕捉模式下,外设允许对事件的持续
时间进行计时。当预先确定的时间超时后,比较模式允
许用户触发一个外部事件。 PWM 模式可以产生不同频
率和占空比的脉宽调制(Pulse-Width Modulate )信号。
表 10-1 给出了 ECCP 模块所需的定时器资源。
表 10-1 : ECCP 模式——所需的定时器资源
ECCP 模式 定时器资源
捕捉
比较
PWM Timer2
Timer1
Timer1
寄存器 10-1 : CCP1CON :增强型 CCP1 控制寄存器
R/W-0
P1M
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
bit 6
bit 5-4
bit 3-0
U-0
—
P1M : PWM 输出配置位
CCP1M<3:2> = 00 、 01 和 10 :
如果
x = P1A 配置为捕捉 / 比较输入; P1B 配置为端口引脚
如果
CCP1M<3:2> = 11:
0 = 单输出; P1A 被调制; P1B 配置为端口引脚
1 = 半桥输出; P1A 和 P1B 被调制,带有死区控制
未实现:读为 0
DC1B<1:0> :PWM 占空比最低有效位
捕捉模式:
未使用。
比较模式:
未使用。
PWM
模式:
这些位是 PWM 占空比的低 2 位。高 8 位在 CCPR1L 中。
CCP1M<3:0> :ECCP 模式选择位
0000 = 捕捉 / 比较 /PWM 关闭 (复位 ECCP 模块)
0001 = 未使用 (保留)
0010 = 比较模式,匹配时翻转输出 ( CCP1IF 位置 1)
0011 = 未使用 (保留)
0100 = 捕捉模式,每个下降沿
0101 = 捕捉模式,每个上升沿
0110 = 捕捉模式,每 4 个上升沿
0111 = 捕捉模式,每 16 个上升沿
1000 = 比较模式,匹配时输出置 1 ( CCP1IF 位置 1)
1001 = 比较模式,匹配时输出清零 ( CCP1IF 位置 1)
1010 = 比较模式,匹配时产生软件中断 ( CCP1IF 位置 1, CCP1 引脚不受影响)
1011 = 比较模式,触发特殊事件 ( CCP1IF 位置 1, CCP1 复位 TMR1 或 TMR2,且如果 ADC 模块被
1100 =PWM模式; P1A 高电平有效; P1B 高电平有效
1101 =PWM模式; P1A 高电平有效; P1B 低电平有效
1110 =PWM模式; P1A 低电平有效; P1B 高电平有效
1111 =PWM模式; P1A 低电平有效; P1B 低电平有效
使能,启动一次 A/D 转换)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 75 页
PIC12F609/615/12HV609/615
10.1 捕捉模式
在捕捉模式下,当在引脚 CCP1 上发生下列事件之一
时, CCPR1H:CCPR1L 捕捉 TMR1 寄存器中的 16 位
值。这些事件如下所示,可由 CCP1CON 寄存器的
CCP1M<3:0> 位进行配置:
• 每个下降沿
• 每个上升沿
• 每 4 个上升沿
• 每 16 个上升沿
进行捕捉后,PIR1 寄存器的中断请求标志位 CCP1IF 被
置 1 。该中断标志位必须用软件清零。如果在 CCPR1H
和 CCPR1L 这对寄存器的值被读出之前又发生另一次捕
捉,那么原来的捕捉值会被新捕捉值覆盖(见图 10-1 )。
10.1.1 CCP1 引脚配置
在捕捉模式下,应该通过把相关的 TRIS 控制位置 1 将
CCP1 引脚配置为输入。
注: 如果 CCP1 引脚被配置为输出,则写端口
将产生一次捕捉条件。
图 10-1 : 捕捉模式工作原理框图
将标志位 CCP1IF 置 1
(PIR1 寄存器)
和
CCP1CON<3:0>
OSC)
CCPR1H CCPR1L
捕捉
使能
TMR1H TMR1L
CCP1
引脚
系统时钟(F
预分频器
÷ 1, 4, 16
边沿检测
10.1.2 TIMER1 模式选择
为使 CCP 模块使用捕捉特性, Timer1 必须运行在定时
器模式或同步计数器模式。在异步计数器模式下,捕捉
操作可能无法进行。
10.1.3 软件中断
当捕捉模式改变时,可能会产生错误的捕捉中断。用户
应该保持 PIE1 寄存器的 CCP1IE 中断允许位清零以避
免错误中断。此外,用户应在工作模式的任何改变之后
清零 PIR1 寄存器的 CCP1IF 中断标志位。
10.1.4 CCP 预分频器
通过对CCP1CON 寄存器的CCP1M<3:0> 位进行设置,
可以指定 4 种不同的预分频比。每当关闭 CCP 模块,
或者 CCP 模块不在捕捉模式下时,预分频器计数器就
会被清零。任何复位都会将预分频器计数器清零。
从一个捕捉预分频比切换到另一个不会清零预分频器,
而且可能产生一次错误中断。为避免此意外操作,可在
改变预分频比前通过清零 CCP1CON 寄存器来关闭模块
(见例 10-1 )。
例 10-1 : 改变捕捉预分频比
BANKSEL CCP1CON ;Set Bank bits to point
;to CCP1CON
CLRF CCP1CON ;Turn CCP module off
MOVLW NEW_CAPT_PS;Load the W reg with
; the new prescaler
; move value and CCP ON
MOVWF CCP1CON ;Load CCP1CON with this
; value
DS41302A_CN 第 76 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
表 10-2: 与捕捉相关的寄存器汇总
名称
CCP1CON
CCPR1L
CCPR1H
INTCON GIE PEIE
PIE1
PIR1
T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
TMR1L
TMR1H
TRISIO
图注:
注 1 : 仅限 PIC12F615/HV615 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P1M — DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0-00 0000 0-00 0000
捕捉 / 比较 /PWM 寄存器 1 的低字节
捕捉 / 比较 /PWM 寄存器 1 的高字节
T0IE INTE GPIE T0IF INTF GPIF
— ADIE
— ADIF
16 位 TMR1 寄存器低字节的保持寄存器
16 位 TMR1 寄存器高字节的保持寄存器
— —T R I S I O 5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 --11 1111
— = 未实现位 (读为 0 ), u = 不变, x = 未知。捕捉不使用阴影单元。
(1)
(1)
CCP1IE
CCP1IF
(1)
— CMIE — TMR2IE
(1)
— CMIF — TMR2IF
(1)
TMR1IE -00- 0-00 -00- 0-00
(1)
TMR1IF -00- 0-00 -00- 0-00
TMR1CS TMR1ON
POR/BOR
时的值
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
0000 0000 0000 0000
0000 0000 uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
所有其他
复位时的值
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 77 页
PIC12F609/615/12HV609/615
10.2 比较模式
在比较模式下, 16 位 CCPR1 寄存器的值不断与 一对
TMR1 寄存器的值作比较。如果二者匹配,CCP1 模块可
能会:
• 翻转 CCP1 输出。
• 将 CCP1 输出置 1。
• 将 CCP1 输出清零。
• 产生特殊事件触发信号。
• 产生软件中断。
引脚的动作由 CCP1CON 寄存器的 CCP1M<3:0> 控制
位的值决定。
所有比较模式都能产生中断。
图 10-2 : 比较模式工作原理框图
CCP1CON<3:0>
模式选择
将 CCP1IF 中断标志位置 1
(PIR1 )
CCP1
引脚
QS
TRIS
输出使能
特殊事件触发信号
特殊事件触发信号将:
• 清零 TMR1H 和 TMR1L 寄存器。
• 不会将 PIR1 寄存器的中断标志位 TMR1IF 置 1。
• 将 GO/DONE 位置 1 以启动 ADC 转换。
4
输出
逻辑
R
CCPR1H CCPR1L
匹配
TMR1H TMR1L
比较器
10.2.2 TIMER1 模式选择
在比较模式下, Timer1 必须运行在定时器模式或同步
计数器模式。在异步计数器模式下,比较操作可能无法
进行。
10.2.3 软件中断模式
当选择“产生软件中断”模式(CCP1M<3:0> = 1010 )
时, CCP1 模块不会对 CCP1 引脚进行控制 (见
CCP1CON 寄存器)。
10.2.4 特殊事件触发器
当选择“特殊事件触发器”模式(CCP1M<3:0> = 1011)
时, CCP1 模块将进行以下操作:
• 复位 Timer1
• 如果 ADC 被使能,则启动 ADC 转换
在此模式下, CCP1 模块不会对 CCP1 引脚进行控制
(见 CCP1CON 寄存器)。
一旦 TMR1H 和 TMR1L 这对寄存器与 CCPR1H 和
CCPR1L 这对寄存器之间发生匹配,便会发生 CCP 的
特殊事件触发输出。 TMR1H 和 TMR1L 这对寄存器在
Timer1 时钟的下一个上升沿到来之前不会复位。这使
CCPR1H 和 CCPR1L 这对寄存器可作为 Timer1 的 16
位可编程周期寄存器。
注 1 :CCP 模块的特殊事件触发信号不会将
PIR1 寄存器的中断标志位 TMRxIF 置 1 。
2 : 通过在生成特殊事件触发信号的时钟边沿
和使 Timer1 复位的时钟边沿之间更改
CCPR1H 和 CCPR1L 这对寄存器的内容
来移除匹配条件,可以避免复位发生。
10.2.1 CCP1 引脚配置
用户必须通过把相关的 TRIS 位清零将 CCP1 引脚配置
为输出。
注: 清零 CCP1CON 寄存器将把 CCP1 比较输
出锁存器强制设为默认的低电平。这不是
端口 I/O 数据锁存器。
DS41302A_CN 第 78 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
表 10-3 : 与比较相关的寄存器汇总
名称
CCP1CON
CCPR1L
CCPR1H
INTCON GIE PEIE
PIE1
PIR1
T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
TMR1L
TMR1H
TMR2 Timer2 模块寄存器 0000 0000 0000 0000
TRISIO
图注:
注 1 : 仅限 PIC12F615/HV615 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P1M — DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0-00 0000 0-00 0000
捕捉 / 比较 /PWM 寄存器 1 的低字节
捕捉 / 比较 /PWM 寄存器 1 的高字节
T0IE INTE GPIE T0IF INTF GPIF
— ADIE
— ADIF
16 位 TMR1 寄存器低字节的保持寄存器
16 位 TMR1 寄存器高字节的保持寄存器
— —T R I S I O 5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 --11 1111
— = 未实现位 (读为 0 ), u = 不变, x = 未知。比较不使用阴影单元。
(1)
(1)
CCP1IE
CCP1IF
(1)
— CMIE — TMR2IE
(1)
— CMIF — TMR2IF
(1)
TMR1IE -00- 0-00 -00- 0-00
(1)
TMR1IF -00- 0-00 -00- 0-00
TMR1CS TMR1ON
POR/BOR
时的值
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
0000 0000 0000 0000
0000 0000 uuuu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
所有其他
复位时的值
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 79 页
PIC12F609/615/12HV609/615
10.3 PWM 模式
PWM 模式在 CCP1 引脚上产生脉宽调制信号。占空比、
周期和分辨率由以下寄存器决定:
•PR2
•T2CON
• CCPR1L
• CCP1CON
在脉宽调制(PWM )模式下,CCP 模块会在 CCP1 引
脚上产生最大 10 位分辨率的 PWM 输出信号。由于
CCP1 引脚与端口数据锁存器复用,该引脚的TRIS 必须
被清零以使能 CCP1 引脚输出驱动器。
注: 清零 CCP1CON 寄存器将放弃对 CCP1 引
脚的 CCP1 控制。
图 10-3 给出了 PWM 工作原理的简化框图。
图 10-4 给出了 PWM 信号的典型波形。
关于如何设置 CCP 模块使之工作于 PWM 模式的详细
步骤,请参见第 10.3.7 节 “设置 PWM 操作”。
图 10-3 : 简化的 PWM 框图
占空比寄存器
CCPR1L
CCP1CON<5:4>
PWM 输出 (图 10-4)有一个时基 (周期)和一段输
出保持为高电平的时间 (占空比)。
图 10-4 : CCP PWM 输出
周期
脉冲宽度
TMR2 = 0
TMR2 = PR2
TMR2 = CCPRxL:CCPxCON<5:4>
(2)
CCPR1H
注 1 : 8 位定时器 TMR2 寄存器与 2 位内部系统时
(从)
比较器
TMR2
比较器
PR2
钟(F
位时基。
2: 在 PWM 模式下, CCPR1H 是只读寄存器。
(1)
清零 TIMER2 ,
翻转 CCP1 引脚并
锁存占空比
OSC)或预分频器的 2 位一起构成 10
RQ
S
TRIS
CCP1
DS41302A_CN 第 80 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
10.3.1 PWM 周期
PWM周期可通过写 Timer2 的 PR2寄存器来指定。PWM
周期可由公式 10-1 计算。
公式 10-1 : PWM 周期
PWM周期 PR2()1 +[] 4TOSC • • • =
预分频值
(TMR2
当 TMR2 中的值与 PR2 中的值相等时,在下一个递增
周期将发生以下 3 个事件:
•TMR2被清零
• CCP1 引脚被置 1。(例外情况:如果 PWM 占空
比 =0%,引脚将不会被置 1。)
•PWM占空比从 CCPR1L 锁存到 CCPR1H。
注: 在确定 PWM 频率时不会用到 Timer2 后分
频比(见第 7.1 节“Timer2 工作原理”)。
)
10.3.2 PWM 占空比
通过将 10 位值写入多个寄存器来指定 PWM 占空比:
CCPR1L 寄存器和 CCP1CON 寄存器的 DC1B<1:0>
位。 CCPR1L 包含高 8 位而 CCP1CON 寄存器的
DC1B<1:0> 位包含低 2 位。可以在任何时候写入
CCPR1L 和 CCP1CON 寄存器的 DC1B<1:0> 位。在周
期结束 (即 PR2 和 TMR2 寄存器发生匹配)前占空比
值不会被锁存到 CCPR1H 中。当 使 用 PWM 时,
CCPR1H 寄存器是只读的。
公式 10-2 用于计算 PWM 脉冲宽度。
公式 10-3 用于计算 PWM 占空比。
公式 10-2 :脉 冲 宽 度
冲宽度
CCPR1L:CCP1CON<5:4> ()
=
TOSC •(TMR2 Prescale Value)
预分频值
•
)
公式 10-3 :占 空 比
D u t y C y cl e R a t i o
CCPR1H 寄存器和一个 2 位的内部锁存器用于给 PWM
占空比提供双重缓冲。这种双重缓冲结构非常重要,它
可以避免在 PWM 操作中产生毛刺。
8 位定时器 TMR2 寄存器与 2 位内部系统时钟 (F
或预分频器的 2 位一起构成 10 位时基。如果 Timer2 预
分频比设置为 1:1 ,则使用系统时钟。
当 10 位时基与 CCPR1H 和 2 位锁存值匹配时,CCP1
引脚被清零 (见图 10-3 )。
占空比
CCPR1L:CCP1CON<5:4> ()
------------- ------------- ------------ ----------- ------------- --------- =
4PR2 1 + ()
OSC)
10.3.3 PWM 分辨率
分辨率决定给定周期的可用占空比数。例如,10 位分辨
率将可得到 1024 个不连续的占空比,而 8 位分辨率将可
得到 256 个不连续的占空比。
当 PR2 为 255 时, PWM 最大分辨率为 10 位。分辨率
是 PR2 寄存器值的函数,如公式 10-4 所示。
公式 10-4 : PWM 分辨率
Re s o lution
分辨率
4PR2 1 + () [] log
------------- ------------- ------------ ---- bits =
位
2() log
注: 如果脉冲宽度值比周期长,则指定的 PWM
引脚将保持不变。
表 10-4 : PWM 频率和分辨率示例 (F
PWM 频率
定时器预分频值 (1、 4 和 16)
PR2 值
最大分辨率 (位)
1.22 kHz 4.88 kHz 19.53 kHz 78.12 kHz 156.3 kHz 208.3 kHz
16 4 1 1 1 1
0xFF 0xFF 0xFF 0x3F 0x1F 0x17
10 10 10 8 7 6.6
表 10-5: PWM 频率和分辨率示例 ( F
PWM 频率
定时器预分频值 ( 1、 4 和 16 )
PR2 值
最大分辨率 (位)
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 81 页
1.22 kHz 4.90 kHz 19.61 kHz 76.92 kHz 153.85 kHz 200.0 kHz
16 4 1 1 1 1
0x65 0x65 0x65 0x19 0x0C 0x09
888655
OSC = 20 MHz)
OSC = 8 MHz)
PIC12F609/615/12HV609/615
10.3.4 休眠模式下的操作
在休眠模式下,TMR2 寄存器将不会递增,模块状态也
不会改变。如果 CCP1 引脚正在驱动一个值,则会继续
驱动该值。当器件被唤醒时,TMR2将从先前状态继续。
10.3.5 改变系统时钟频率
PWM 频率来自于系统时钟频率。系统时钟频率的任何
改变将导致 PWM 频率的改变。更多详细信息,请参见
第 3.0 节 “振荡器模块”。
10.3.6 复位的影响
任何复位都将强制所有端口为输入模式,并强制 CCP 寄
存器为其复位状态。
10.3.7 设置 PWM 操作
当配置 CCP 模块的 PWM 操作时,可采用以下步骤:
1. 通过将相关的 TRIS 位置 1 ,禁止 PWM 引脚
(CCP1 )输出驱动器。
2. 通过装入 PR2 寄存器设置 PWM 周期。
3. 通过装入恰当的值到 CCP1CON 寄存器将 CCP
模块配置为 PWM 模式。
4. 通过装入 CCPR1L 寄存器和 CCP1CON 寄存器
的 DC1B 位设置 PWM 占空比。
5. 配置和启动 Timer2:
• 清零 PIR1 寄存器的 TMR2IF 中断标志位。
• 通过装入 T2CON 寄存器的 T2CKPS 位设置
Timer2 预分频值。
• 通过将 T2CON 寄存器的 TMR2ON 位置 1 使能
Timer2。
6. 在新的 PWM 周期开始后使能 PWM 输出:
• 等待直到 Timer2 溢出(PIR1 寄存器的 TMR2IF
位置 1)。
• 通过清零相关的 TRIS 位使能 CCP1 引脚输出驱
动器。
DS41302A_CN 第 82 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
10.4 PWM (增强型模式)
增强型 PWM 模式可以在最多 4 个输出引脚上产生 PWM
信号,最高可达 10 位分辨率。可通过两种 PWM 输出模
式实现:
• 单 PWM
• 半桥 PWM
要选择增强型 PWM 模式,CCP1CON 寄存器的 P1M 位
必须适当置 1。
图 10-5 : 增强型 PWM 模式的简化框图示例
占空比寄存器
CCPR1L
CCPR1H(从)
比较器
TMR2
CCP1<1:0>
(1)
P1M<1:0>
2
CCP1/P1A
RQ
输出控制器
S
PWM 输出与 I/O 引脚复用,指定为 P1A 和 P1B。PWM
引脚的极性是可配置的,通过将 CCP1CON 寄存器中的
CCP1M 位适当置 1 来选择。
表 10-6 给出了每种增强型 PWM 模式的引脚分配。
图 10-5 给出了增强型 PWM 模块的简化框图的示例。
注: 为防止在第一次使能PWM 时产生不完整的
波形,ECCP 模块在产生PWM 信号前会等
待直到新的 PWM 周期开始。
CCP1M<3:0>
4
( APFCON<0>)
P1ASEL
0
TRISIO2
1
TRISIO5
( APFCON<1>)
P1BSEL
CCP1/P1A
CCP1/P1A*
比较器
PR2
* 备用引脚功能。
注 1 : 8 位定时器 TMR2 寄存器与 2 位内部 Q 时钟或预分频器中的 2 位一起构成 10 位时基。
清零 Timer2 ,
翻转 PWM 引脚并
锁存占空比
P1B
PWM1CON
注 1:每个 PWM 输出的 TRIS 寄存器值必须进行适当配置。
2: 清零 CCP1CON 寄存器将放弃对所有 PWM 输出引脚的 ECCP 控制。
3: 增强型 PWM 模式没有使用的任何引脚均可用于备用引脚功能。
表 10-6:各 种 PWM 增强型模式的引脚分配示例
ECCP 模式
单
半桥
注 1 : 脉冲转向使能单模式下的输出。
P1M<1:0> CCP1/P1A P1B
00
10
P1B
P1B*
有
(1)
有
0
TRISIO0
1
TRISIO4
(1)
有有
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 83 页
PIC12F609/615/12HV609/615
图 10-6: PWM (增强型模式)输出关系示例 (高电平有效状态)
P1M<1:0>
信号
0
脉冲宽度
周期
PR2+1
(单输出)
00
(半桥)
10
关系:
• 周期 = 4 * T OSC * (PR2 + 1) * (TMR2 预分频值 )
• 脉冲宽度 = TOSC * (CCPR1L<7:0>:CCP1CON<5:4>) * (TMR2 预分频值 )
• 延时 = 4 * T OSC * (PWM1CON<6:0>)
注 1 : 使用 PWM1CON 寄存器对死区延时编程 (第 10.4.5 节 “可编程死区延时模式”)。
P1A 调制
P1A 调制
P1B 调制
P1 A 有效
P1 B 无效
P1 C 无效
P1 D 调制
延时
(1)
图 10-7: 增强型 PWM 输出关系示例 (低电平有效状态)
P1M<1 :0>
(单输出)
00
10
关系:
(半桥)
• 周期 = 4 * T OSC * (PR2 + 1) * (TMR2 预分频值 )
• 脉冲宽度 = T OSC * (CCPR1L<7:0>:CCP1CON<5:4>) * (TMR2 预分频值 )
• 延时 = 4 * T OSC * (PWM1CON<6:0>)
注 1 : 使用 PWM1CON 寄存器对死区延时编程 (第 10.4.5 节 “可编程死区延时模式”)。
信号
P1A 调制
P1A 调制
P1B 调制
P1 A 有效
P1 B 无效
P1 C 无效
P1 D 调制
0
延时
脉冲宽度
(1)
延时
延时
(1)
PR2+1
周期
(1)
DS41302A_CN 第 84 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
10.4.1 半桥模式
在半桥模式下,有两个引脚用作输出驱动推挽式负载。
CCP1/P1A 引脚输出 PWM 输出信号,P1B 引脚输出互
补的 PWM 输出信号 (见图 10-8 )。这种模式可用于半
桥应用(如图 10-9 所示),或者用于全桥应用——这种
情况下使用两个 PWM 信号调制 4 个功率开关。
在半桥模式下,可编程死区延时可用来防止半桥功率器
件中流过直通(Shoot-through )电 流。PWM1CON 寄存
器的 PDC<6:0> 位的值设置在输出被驱动为有效之前的
指令周期数。如果这个值比占空比大,则在整个周期中
相应的输出保持为无效。关于死区延时操作的更多详细
信息,请参见第 10.4.5 节 “可编程死区延时模式”。
图 10-9 : 半桥应用示例
标准半桥电路(“推挽式”)
FET 驱动器
P1A
由于 P1A 和 P1B 输出与端口数据锁存器是复用的,相
关的TRIS 位必须清零,从而将 P1A 和 P1B 配置为输出。
图 10-8 :半 桥PWM 输出示例
周期
脉冲宽度
(2)
P1A
td
(2)
P1B
(1)
td = 死区延时
注 1 : 此时 TMR2 寄存器和 PR2 寄存器的值相等。
2 : 图中输出信号为高电平有效。
td
+
-
周期
(1) (1)
驱动全桥电路的半桥输出
P1A
P1B
P1B
FET 驱动器
FET 驱动器
FET 驱动器
负载
+
-
V+
FET 驱动器
负载
FET 驱动器
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 85 页
PIC12F609/615/12HV609/615
10.4.2 启动注意事项
当使用 PWM 模式时,应用硬件必须在 PWM 输出引脚
上外接适当的上拉和 / 或下拉电阻。
注: 当单片机退出复位状态时,所有 I/O 引脚呈
高阻态。外部电路必须保持功率开关器件处
于关断状态,直到单片机将 I/O 引脚驱动为
适当的信号电平,或者激活PWM 输出为止。
CCP1CON寄存器的 CCP1M<1:0>位允许用户为每一对
PWM 输出引脚 ( P1A 和 P1B)选择 PWM 输出信号为
高电平有效还是低电平有效。 PWM 输出极性必须在使能
PWM 引脚输出驱动器之前选择。建议不要在使能 PWM
引脚输出驱动器时改变极性配置,因为这可能导致应用
电路损坏。
当 PWM 模块初始化时,P1A 和 P1B 输出锁存器可能不
在正确的状态。这样在配置为增强型 PWM 模式的同时
使能 PWM 引脚输出驱动器,可能损坏应用电路。应首
先将增强型 PWM 模式配置为正确的输出模式并经过一
个完整的 PWM 周期之后,再配置 PWM 引脚输出驱动
器。当第二个 PWM 周期开始时,PIR1 寄存器的TMR2IF
位置 1 表明一个完整的 PWM 周期结束了。
DS41302A_CN 第 86 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
10.4.3 增强型 PWM 自动关闭模式
PWM模式支持自动关闭模式,当外部关闭事件发生时将
禁止 PWM 输出。自动关闭模式将 PWM 输出引脚置于
预先确定的状态。该模式用于防止 PWM 损坏应用。
通过使用 ECCPAS 寄存器的 ECCPASx位来选择自动关
闭源。关闭事件由以下条件产生:
•INT引脚上的逻辑 0
• 比较器
• 用固件将 ECCPASE 位置 1
图 10-10 : 自动关闭框图
ECCPAS<2:0>
111
110
101
100
INT
来自比较器
011
010
001
000
PRSEN
关闭条件由 ECCPAS 寄存器的 ECCPASE (自动关闭
事件状态)位指定。如果该位为 0 , PWM 引脚正常工
作。如果该位为 1 , PWM 输出处于关闭状态。请参见
图 10-10 。
当关闭事件发生时,会发生以下两件事:
ECCPASE 位被设置为 1。 ECCPASE 将保持置 1 直到
由固件清零或发生自动重启 (见第 10.4.4 节 “自动重
启模式”)。
使能的 PWM 引脚被异步置为其关闭状态。PWM 输出引
脚被分组为 [P1A/P1C] 和 [P1B/P1D] 对。每对引脚的状
态由 ECCPAS 寄存器的 PSSAC 和 PSSBD 位决定。每
对引脚可以设置为以下 3 种状态之一:
• 驱动逻辑 1
• 驱动逻辑 0
• 三态 (高阻态)
PSSAC<0>
P1A_DRV
1
0
来自数据总线
写入 ECCPASE
R
S
DQ
ECCPASE
PSSAC<1>
PSSBD<0>
P1B_DRV
PSSBD<1>
TRISx
TRISx
P1A
1
0
P1B
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 87 页
PIC12F609/615/12HV609/615
寄存器 10-2: ECCPAS:增强型捕捉 / 比较 /PWM 自动关闭控制寄存器
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
bit 6-4
bit 3-2
bit 1-0
注 1 : 如果 CMSYNC 被禁止,则由 Timer1 延时关闭。
注 1 :自动关闭条件是基于电平的信号,而不是
2: 当自动关闭条件持续时,禁止写
3: 一旦自动关闭条件被移除并且 PWM 重启
ECCPASE: ECCP 自动关闭事件状态位
1 = 发生了关闭事件; ECCP 输出为关闭状态
0 = ECCP 输出正常工作
ECCPAS<2:0>: ECCP 自动关闭源选择位
000 = 禁止自动关闭
001 = 比较器输出改变
010 = 禁止自动关闭
011 = 比较器输出更改
100 =INT引脚上的 VIL
101 =INT引脚的 VIL 或比较器改变
110 =INT引脚上的 V
111 =INT引脚的 VIL 或比较器改变
PSSAC<1:0>:引脚 P1A 关闭状态控制位
00 = 驱动引脚 P1A 为 0
01 = 驱动引脚 P1A 为 1
1x = 引脚 P1A 为三态
PSSBD<1:0>:引脚 P1B 关闭状态控制位
00 = 驱动引脚 P1B 为 0
01 = 驱动引脚 P1B 为 1
1x = 引脚 P1B 为三态
基于边沿的信号。只要电平存在,自动关
闭就将持续。
ECCPASE 位。
(通过固件或自动重启),PWM 信号将总
是在下一个 PWM 周期重启。
(1)
(1)
IL
DS41302A_CN 第 88 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
图 10-11 : PWM 自动关闭 (PRSEN = 0 ,带固件重启)
关闭事件
ECCPASE 位
PWM 活动
PWM 周期
开始
PWM 周期
关闭
事件发生
关闭
事件清除
10.4.4 自动重启模式
一旦自动关闭条件被移除,增强型 PWM 可被配置为自
动重启 PWM 信号。通过将 PWM1CON 寄存器中的
PRSEN 位置 1 使能自动重启。
如果使能了自动重启,只要自动关闭条件有效,
ECCPASE 位将保持置 1。当自动关闭条件被移除时,
ECCPASE 位将由硬件清零并继续正常工作。
图 10-12 : PWM 自动关闭 (PRSEN = 1 ,使能自动重启)
关闭事件
ECCPASE 位
PWM 活动
PWM 周期
开始
PWM 周期
关闭
事件发生
关闭
事件清除
ECCPASE
由固件
清零
PWM
恢复工作
PWM
恢复工作
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 89 页
PIC12F609/615/12HV609/615
10.4.5 可编程死区延时模式
在所有功率开关管都以 PWM 频率调制的半桥应用中,
功率开关管关断通常比导通需要更多的时间。如果上下
两个功率开关管在同一时间开关(一个导通,另一个关
断),那么在一段很短的时间里,两个开关管可能同时
导通,直到一个开关管完全关断为止。在这短暂的时间
中,两个功率开关管中可能流过较高的电流 (
流
),将逆变桥的电源与地短路。为避免开关过程中可
直通电
能会出现的破坏性直通电流,通常需要延迟功率开关管
的导通,保证在另一个开关管完全关断之后,再导通相
应的功率开关管。
在半桥模式下,可采用数字可编程死区延时来避免出现损
坏逆变桥功率开关管的直通电流。在信号从无效状态切换
到有效状态时增加延时。请参见图 10-13 。PWMxCON 寄
存器 (寄存器 10-3 )的低 7 位以单片机指令周期 (T
CY
或 4 TOSC)为单位设置延时。
图 10-14 : 半桥应用示例
标准半桥电路(“推挽式”)
图 10-13 :半 桥PWM 输出示例
周期
脉冲宽度
(2)
P1A
td
(2)
P1B
(1)
td = 死区延时
注 1 : 此时 TMR2 寄存器和 PR2 寄存器的值相等。
2 : 图中输出信号为高电平有效。
V+
td
周期
(1) (1)
P1A
P1B
FET 驱动器
FET 驱动器
+
V
-
负载
+
V
-
V-
DS41302A_CN 第 90 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
寄存器 10-3: PWM1CON:增强型 PWM 控制寄存器
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
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
PRSEN : PWM 重启使能位
1 = 自动关闭时,一旦关闭事件消失, ECCPASE 位自动清零; PWM 自动重启
0 = 自动关闭时, ECCPASE 必须用软件清零以重启 PWM
bit 6-0
PDC<6:0> : PWM 延时计数位
PDCn = 在 PWM 信号应该转换为有效的预定时间和转换为有效的实际时间之间的 FOSC /4 (4 * TOSC)
周期数
表 10-7 :与PWM 相关的寄存器汇总
名称
APFCON
CCP1CON P1M
CCPR1L
CCPR1H
CMCON0 CMON COUT CMOE CMPOL
CMCON1
ECCPAS ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 0000 0000 0000 0000
INTCON GIE PEIE
PIE1
PIR1
T2CON
TMR2
TRISIO
图注:
注 1 : 仅限 PIC12F615/HV615 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — —T 1 G S E L— — P1BSEL P1ASEL ---0 --00 ---0 --00
— DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0-00 0000 0-00 0000
捕捉 / 比较 /PWM 寄存器 1 的低字节
捕捉 / 比较 /PWM 寄存器 1 的高字节
—C M R —C M C H0000 -0-0 0000 -0-0
— — — T1ACS CMHYS —T 1 G S S CMSYNC ---0 0-10 ---0 0-10
T0IE INTE GPIE T0IF INTF GPIF
— ADIE
— ADIF
— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
Timer2 模块寄存器
— — TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 --11 1111
— = 未实现位 (读为 0 ), u = 不变, x = 未知。 PWM 不使用阴影单元。
(1)
(1)
CCP1IE
CCP1IF
(1)
— CMIE —T M R 2 I E
(1)
— CMIF —T M R 2 I F
(1)
TMR1IE -00- 0-00 -00- 0-00
(1)
TMR1IF -00- 0-00 -00- 0-00
POR/BOR
时的值
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
0000 0000 0000 0000
0000 0000 0000 0000
所有其他
复位时的值
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 91 页
PIC12F609/615/12HV609/615
注:
DS41302A_CN 第 92 页 初稿 2008 Microchip Technology Inc.
PIC12F609/615/12HV609/615
11.0 CPU 的特殊功能
PIC12F609/615/12HV609/615 有许多功能,旨在最大
限度地提高系统可靠性,通过减少外部元件的使用将成
本降至最低,并提供省电工作模式和代码保护功能。
这些特殊功能包括:
• 复位
- 上电复位 ( POR)
- 上电延时定时器 ( PWRT)
- 振荡器起振定时器 ( OST)
- 欠压复位 ( BOR)
• 中断
• 看门狗定时器 ( WDT)
• 振荡器选择
• 休眠
• 代码保护
•ID存储单元
• 在线串行编程
PIC12F609/615/12HV609/615 有两个定时器提供必要
的上电延时。一个是振荡器起振定时器 (OST ),旨在
确保芯片在晶振达到稳定之前始终处于复位状态。另一
个是上电延时定时器(PWRT ),仅在上电时提供 64 ms
(标称值)的固定延时,用来确保器件在供电电压稳定
之前处于复位状态。还有当器件发生欠压时使器件复位
的电路,该电路可使用上电延时定时器,提供至少
64 ms 的复位延时。有了这三种片上功能,绝大多数应
用就无需再外接复位电路了。
休眠模式的设计是为了提供电流极低的掉电模式。用户
可通过以下方法将器件从休眠模式唤醒:
• 外部复位
• 看门狗定时器唤醒
• 中断
有几种振荡器模式可供选择,以使器件适应各种应用。选
择 INTOSC 可节约系统成本,而选择 LP 晶振可以节能。
通过配置位的设定可选择不同选项 (见寄存器 11- 1 )。
11.1 配置位
可以通过对配置位编程 (读为 0 )或不编程 (读为 1 )
来选择不同的器件配置,如寄存器 11-1 所示。这些位映
射到程序存储单元 2007h 中。
注: 地址2007h 超出了用户程序存储空间范围。
它属于特殊配置存储空间(2000h-
3FFFh ),只能在编程时对其进行访问。更
多信息,请参见“PIC12F6XX/16F6XX
Memory Programming Specification
(DS41204 )。
”
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 93 页
PIC12F609/615/12HV609/615
寄存器 11 - 1 : CONFIG:配置字寄存器
— —
bit 15 bit 8
IOSCFS CP
bit 7 bit 0
图注:
R = 可读位 W = 可写位 P = 可编程位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 15-10
bit 9-8
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2-0
(2)
未实现:读为 1
BOREN<1:0> :欠压复位选择位
11 = 使能 BOR
10 = 正常工作时使能 BOR ,休眠时禁止 BOR
0x = 禁止 BOR
IOSCFS:内部振荡器频率选择位
1 = 8 MHz
0 = 4 MHz
CP:代码保护位
1 = 禁止程序存储器代码保护
0 = 使能程序存储器代码保护
MCLRE: MCLR
1 = MCLR 引脚功能为 MCLR
0 = MCLR 引脚功能为数字输入, MCLR 内部连接到 VDD
PWRTE
1 = 禁止 PWRT
0 = 使能 PWRT
WDTE:看门狗定时器使能位
1 = 使能 WDT
0 = 禁止 WDT
FOSC<2:0>:振荡器选择位
111 = RC 振荡器:GP4/OSC2/CLKOUT 引脚为 CLKOUT 功能, GP5/OSC1/CLKIN 引脚上连接 RC
110 = RCIO 振荡器:GP4/OSC2/CLKOUT 引脚为 I/O 功能, GP5/OSC1/CLKIN 引脚上连接 RC
101 = INTOSC 振荡器:GP4/OSC2/CLKOUT引脚为 CLKOUT 功能,GP5/OSC1/CLKIN 引脚为 I/O 功能
100 = INTOSCIO 振荡器:GP4/OSC2/CLKOUT 引脚为 I/O 功能, GP5/OSC1/CLKIN 引脚为 I/O 功能
011 = EC :GP4/OSC2/CLKOUT 引脚为 I/O 功能, GP5/OSC1/CLKIN 引脚为 CLKIN 功能
010 = HS 振荡器:GP4/OSC2/CLKOUT 和 GP5/OSC1/CLKIN 引脚上连接高速晶振 / 谐振器
001 = XT 振荡器:GP4/OSC2/CLKOUT 和 GP5/OSC1/CLKIN 引脚上连接晶振 / 谐振器
000 = LP 振荡器:GP4/OSC2/CLKOUT 和 GP5/OSC1/CLKIN 引脚上连接低功耗晶振
:上电延时定时器使能位
— — — —B O R E N 1
MCLRE
(3)
(2)
引脚功能选择位
PWRTE WDTE FOSC2 FOSC1 FOSC0
(1)
(3)
(1)
BOREN0
(1)
注 1: 使能欠压复位并不能自动使能上电延时定时器。
2: 当关闭代码保护时,将擦除整个程序存储器的内容。
3: 当 MCLR
DS41302A_CN 第 94 页 初稿 2008 Microchip Technology Inc.
在 INTOSC 或 RC 模式下变为有效时,将禁止内部时钟振荡器。
PIC12F609/615/12HV609/615
11.2 校准位
8MHz 内部振荡器是出厂时校准的。这些校准值存储在
校准字(2009h )的熔丝中。使用“PIC12F6XX/16F6XX
Memory Programming Specification” (DS41204 )中
指定的批量擦除序列时,校准字不会被擦除,因此也不
需要再编程。
11.3 复位
PIC12F609/615/12HV609/615 器件有以下几种不同类
型的复位:
a) 上电复位 ( POR)
b) 正常工作期间的 WDT 复位
c) 休眠期间的 WDT 复位
WDT
模块
DD 上升
检测
(1)
复位
复位
WDT
超时
复位
外部
复位
Sleep
上电复位
BOREN
d) 正常工作期间的 MCLR
e) 休眠期间的 MCLR 复位
f) 欠压复位 ( BOR)
图 11-1 : 片上复位电路的简化框图
MCLR/Vpp 引脚
V
V
DD
欠压
有些寄存器不受任何复位的影响;在上电复位时它们的
状态未知,而在其他复位时状态不变。大多数寄存器在
以下复位时会复位到各自的 “复位状态”:
• 上电复位
•MCLR
复位
• 休眠期间的 MCLR 复位
•WDT复位
• 欠压复位 ( BOR)
WDT 唤醒不会引起类似于 WDT 复位方式下的寄存器复
位,因为唤醒被视为恢复正常工作。如表 11-2 所示,TO
和 PD 位在不同的复位情形下会分别被置 1 或清零。软
件可以使用这些位来判断复位的性质。关于所有寄存器
的复位状态的完整说明,请参见表 11-5 。
图 11-1 给出了片上复位电路的简化框图。
复位路径上有一个噪声滤波器,用来检测并滤除
MCLR
小脉冲。关于脉冲宽度规范,请参见第 15.0 节 “电气
规范”。
S
OST/PWRT
OST
OSC1/
CLKIN 引脚
片上
RC 振荡器
注 1 : 请参见配置字寄存器 (寄存器 11-1 )。
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 95 页
10 位异步计数器
PWRT
11 位异步计数器
使能 PWRT
使能 OST
R
Chip_Reset
Q
PIC12F609/615/12HV609/615
11.3.1 上电复位 (POR )
在 VDD 达到足以使器件正常工作的电平之前,片上上电
复位电路将使器件保持在复位状态。要有效利用 POR ,
用户只需在 MCLR 引脚和 VDD 之间串联一个电阻。这
样就可无需使用通常产生上电复位所需的外接 RC 元
件。需要一个最大上升时间才能达到 VDD 。详情请参见
第 15.0 节“电气规范”。如果使能了欠压复位,那么该
最大上升时间规范将不再适用。BOR 电路将使器件保持
在复位状态,直到 V
DD 达到 V BOR(见第 11.3.4 节“欠
压复位 (BOR )”)。
注: 当 VDD 降低时,POR 电路不会产生内部复
位。要重新使能 POR ,V
DD 必须至少保持
100 µs 的 Vss 电压。
当器件开始正常工作 (退出复位状态)时,器件的工作
参数 (即电压、频率和温度等)必须得到满足,以确保
其正常工作。如果不满足这些条件,那么器件必须保持
在复位状态,直到满足工作条件为止。
“
更多信息,请参见应用笔记 AN607 ,
”
Shooting
(DS00607 )。
Power-up Trouble
11.3.2 MCLR
PIC12F609/615/12HV609/615 在 MCLR 复位路径中有
一个噪声滤波器。该滤波器检测并滤除小脉冲。
应该注意,WDT 复位不会将MCLR
施加在 MCLR
引脚上的电压超过规范值将导致 MCLR
复位,并且在 ESD 事件中产生的电流也将超过器件的
规范值。因此, Microchip 建议不要把 MCLR
连接到 V
DD。建议使用图 11-2 给出的 RC 网络。
通过清零配置字寄存器中的 MCLRE 位,可使能内部
选项。当 MCLRE = 0 时,在内部产生芯片的复
MCLR
位信号。当 MCLRE = 1 时,GP3/MCLR
复位输入。在这种模式下,GP3/MCLR
的弱上拉。
引脚驱动为低电平。
引脚直接
引脚变成外部
引脚具有到 VDD
图 11-2 : 建议使用的 MCLR 电路
VDD
®
PIC
MCU
MCLR
SW1
(可选)
R1
1kΩ(或更大)
R2
100 Ω
(需要与电容配合使用)
C1
0.1 µF
(可选,非关键元件)
11.3.3 上电延时定时器 (PWRT )
上电延时定时器仅在上电时 (上电复位或欠压复位)
提供一个 64 ms (标称值)的固定延时。上电延时定
时器采用内部 RC 振荡器作为时钟源。更多信息,请参
见第 3.4 节 “内部时钟模式”。只要 PWRT 处于活动
状态,芯片就保持在复位状态。PWRT 延时使 VDD 有
足够的时间上升到所需的电平。配置位 PWRTE
禁止 (如果置 1 )或使能 (如果清零或被编程)上电
延时定时器。虽然不是必需的,但是在使能欠压复位时
也应使能上电延时定时器。
由于以下原因不同芯片的上电延时定时器的延时也各不
相同:
DD 差异
•V
• 温度差异
• 制造工艺差异
详情请参见直流参数 (第 15.0 节 “电气规范”)。
可以
注: MCLR 引脚上若出现低于VSS 的尖峰电压,
感应电流超过 80 mA ,可能导致锁死。因
此,在 MCLR
用一个 50-100
引脚直接与 V
DS41302A_CN 第 96 页 初稿 2008 Microchip Technology Inc.
引脚上施加低电平时,应使
Ω 的串联电阻,而不是将该
SS 连接。
PIC12F609/615/12HV609/615
11.3.4 欠压复位 (BOR )
配置字寄存器中的 BOREN0 和 BOREN1 位用于选择 3
种 BOR 模式中的一种。新增了一种模式,允许在休眠
期间控制用于较低电流的 BOR 使 能。通 过选 择
BOREN<1:0> = 10,可使 BOR 在休眠时被自动禁止,
从而节约功耗;而在唤醒后被重新使能。关于配置字的
定义,请参见寄存器 11-1 。
DD 下降到 V BOR 以下且持续时间超过参数值T BOR
如果 V
(见第 15.0 节 “电气规范”),则会发生欠压。欠压条
件将使器件复位。不管 V
都会发生。如果 V
参数值 T
BOR,则不一定会发生复位。
DD 的变化速率如何,上述情况
DD 下降到 V BOR 以下且持续时间少于
任何复位 (上电复位、欠压复位或看门狗定时器复位
等)都会使芯片保持复位状态,直到 V
DD 上升到 V BOR
以上 (见图 11-3 )。如果使能了上电延时定时器,此时
它将启动,并且会使芯片保持复位状态的时间延长
64 ms 。
注: 配置字寄存器中的 PWRTE 位用于使能上
电延时定时器。
图 11-3: 欠压情形
V
DD
内部
复位
如果在上电延时定时器运行过程中, V
DD 降低到 V BOR
以下,芯片将重新回到欠压复位状态并且上电延时定时
器会恢复为初始状态。一旦 V
DD 上升到 V BOR 以上,上
电延时定时器将执行一段 64 ms 的复位。
11.3.5 BOR 校准
PIC12F609/615/12HV609/615 将 BOR 校准值存储在校
准字寄存器 ( 2008h )的熔丝中。使用 “ PIC12F6XX/
16F6XX Memory Programming Specification”
(DS41204 )中指定的批量擦除序列时,校准字不会被
擦除,因此也不需要再编程。
注: 地址2008h 超出了用户程序存储器空间范
围。它属于特殊配置存储器空间 (2000h-
3FFFh ),只能在编程时对其进行访问。更
多信息,请参见“PIC12F6XX/16F6XX
Memory Programming Specification
(DS41204 )。
VBOR
(1)
64 ms
”
V
DD
内部
复位
V
DD
内部
复位
注 1 : 仅在 PWRTE 位被编程为 0 时,才增加 64 ms 延时。
< 64 ms
64 ms
64 ms
VBOR
(1)
VBOR
(1)
2008 Microchip Technology Inc. 初稿 DS41302A_CN 第 97 页
PIC12F609/615/12HV609/615
11.3.6 延时时序
上电延时时序如下:
• 在 POR 延时结束后,施加一段 PWRT 延时。
• 在 PWRT 延时结束后,振荡器起振。
总延时时间取决于振荡器配置和 PWRTE
如,在 EC 模式且 PWRTE
情况下,根本不会出现延时。图 11- 4 、图 11- 5 和图 11 -6
分别描绘了各种情形下的延时时序。
由于延时是由 POR 脉冲触发的,因此如果 MCLR
足够长时间的低电平,所有延时都将结束。将 MCLR
平拉高后,器件将立即开始执行代码 (见图 11- 5 )。这
对于测试或同步多个并行工作的 PIC12F609/615/
12HV609/615 器件来说是非常有用的。
表 11 -6 给出了一些特殊寄存器的复位条件,而表 11 -5
给出了所有寄存器的复位条件。
位被擦除 (PWRT 禁止)的
位的状态。例
保持
电
表 11-1 : 各种情形下的延时
振荡器配置
XT、 HS 和 LP
RC、 EC 和 INTOSC
PWRTE
PWRT + 1024 •
T
OSC
T
PWRT —TPWRT ——
T
上电 欠压复位
= 0 PWRTE = 1 PWRTE = 0 PWRTE = 1
1024 • TOSC T PWRT + 1024 •
11.3.7 电源控制 ( PCON)寄存器
电源控制寄存器 PCON (地址 8Eh )有两个状态位,用
于指示上次发生的复位的类型。
Bit 0 是 BOR (欠压)标志位。BOR 在上电复位时未知。
用户必须将该位置 1 ,并在随后的复位发生时检查 BOR
是否为 0 ,如果是,则表示已发生欠压复位。当禁止欠压
复位电路(配置字寄存器中的 BOREN<1:0> = 00)时,
BOR 状态位是 “无关位”并且不一定预测得到。
Bit 1 是 POR
值为 0 ,其他情况下不受影响。上电复位后,用户必须
对该位写 1 。发生后续复位后,如果 POR 为 0 ,则表示
发生了上电复位 (即 V
更多信息,请参见第 11.3.4 节 “欠压复位 (BOR)”。
(上电复位)标志位。在上电复位时它的
DD 可能已经变为了低电平)。
从休眠状态唤醒
1024 • TOSC 1024 • TOSC
OSC
T
表 11-2: STATUS/PCON 位及其含义
POR
0x11
u011
uu0u
uu00
uuuu
uu10
图注: u = 不变, x = 未知
BOR TO PD
上电复位
欠压复位
WDT 复位
WDT 唤醒
正常工作期间的 MCLR
休眠期间的 MCLR
复位
条件
复位
表 11-3 : 与欠压复位相关的寄存器汇总
名称
PCON — — — — — —P O RBOR ---- --qq ---- --uu
STATUS
图注: u = 不变, x = 未知, — = 未实现位 (读为 0), q = 值取决于具体条件。 BOR 不使用阴影单元。
注 1 : 其他 (非上电)复位包括在正常操作期间的 MCLR
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
IRP RP1 RP0 TO PD Z DC C 0001 1xxx 000q quuu
复位和看门狗定时器复位。
POR/BOR
时的值
所有其他
复位时的值
(1)
DS41302A_CN 第 98 页 初稿 2008 Microchip Technology Inc.