PIC16F631/677/685/687/689/690
数据手册
采用纳瓦技术的
20 引脚 8 位
CMOS 闪存单片机
2007 Microchip Technology Inc. 初稿 DS41262C_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
•M i c r o c h i p的产品均达到 Microchip 数据手册中所述的技术指标。
•M i c r o c h i p确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的
操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•M i c r o c h i p愿与那些注重代码完整性的客户合作。
•M i c r o c h i p或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视
为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act )》。如果这种行为导致他人在未经授权的情况下,能访问您的
软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含
的英文部分,因为其中提供了有关 Microchip 产品性能和使用
情况的有用信息。Microchip Technology Inc. 及其分公司和相
关公司、各级主管与员工及事务代理机构对译文中可能存在的
任何差错不承担任何责任。建议参考 Microchip Technology
Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便
利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或
暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用
性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。如果将 Microchip 器件用于生命
维持和 / 或生命安全应用,一切风险由买方自负。买方同意在
由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障
Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识
产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron、
dsPIC、 K
EEL OQ、 K EEL OQ 徽标、 microID 、MPLAB、 PIC、
PICmicro、 PICSTART、 PRO MATE、 PowerSmart、 rfPIC
和 SmartShunt 均为 Microchip Technology Inc. 在美国和其他
国家或地区的注册商标。
AmpLab、 FilterLab、 Linear Active Thermistor、 Migratable
Memory、 MXDEV、 MXLAB、 PS 徽标、 SEEVAL、
SmartSensor 和 The Embedded Control Solutions Company
均为 Microchip Technology Inc. 在美国的注册商标。
Analog-for-the-Digital Age、 Application Maestro、
CodeGuard、 dsPICDEM、 dsPICDEM.net、 dsPICworks、
ECAN、 ECONOMONITOR、 FanSense、 FlexROM、
fuzzyLAB、 In-Circuit Serial Programming、 ICSP、 ICEPIC、
Mindi、 MiWi、 MPASM、 MPLAB Certified 徽标、 MPLIB、
MPLINK、 PICkit、 PICDEM、 PICDEM.net、 PICLAB、
PICtail、 PowerCal、 PowerInfo、 PowerMate、 PowerTool、
REAL ICE、 rfLAB、 rfPICDEM、 Select Mode、 Smart
Serial、 SmartTel、 Total Endurance、 UNI/O、 WiperLock 和
ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地
区的商标。
SQTP 是 Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。
© 2007, Microchip Technology Inc . 版权所有。
Microchip
Gresham
和晶圆生产厂均通过了
与
机外设、非易失性存储器和模拟产品方面的质量体系流程均符合
TS-16949:2002
量体系也已通过了
位于美国亚利桑那州
及位于加利福尼亚州
®
dsPIC
数字信号控制器、
ISO/TS-16949:2002
。此外,
Microchip
ISO 9001:2000
Chandler和Te mp e
Mountain View
®
KEE LOQ
跳码器件、串行
在开发系统的设计和生产方面的质
认证。
、位于俄勒冈州
的全球总部、设计中心
认证。公司在
PIC
EEPROM
®
单片机
、单 片
ISO/
DS41262C_CN 第 ii 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
采用纳瓦技术的 20 引脚 8 位 CMOS 闪存单片机
高性能 RISC CPU :
高性能 RISC CPU
• 仅需学习 35 条指令:
- 除了跳转指令以外,所有指令都是单周期的
• 工作速度:
-DC- 20 MHz 振荡器 / 时钟输入
-DC- 200 ns 指令周期
• 中断能力
•8级深硬件堆栈
• 直接、间接和相对寻址方式
单片机特性
• 精确的内部振荡器:
- 出厂时精度已校准到 ±1%
- 软件可选择频率范围: 8MHz到 32 kHz
- 可用软件调整
- 双速启动模式
- 用于关键应用的晶振故障检测
- 时钟模式切换以使器件省电运行
• 省电休眠模式
• 宽工作电压范围 ( 2.0V-5.5V)
• 工业级和扩展级温度范围
• 上电复位 ( Power-on Reset, POR)
• 上电延时定时器 ( Power-up Timer, PWRTE)和
振荡器起振定时器 ( Oscillator Start-up Timer,
OST)
• 带软件控制选择的欠压复位 ( Brown-out Reset,
BOR)
• 增强型低电流看门狗定时器 ( Watchdog Timer,
WDT),带有片上振荡器 (预分频器最大时,软
件可选择的标称值为 268 秒),可用软件启动
• 复用式主复位 / 输入引脚
• 可编程代码保护
• 高耐久性的闪存 /EEPROM 存储单元:
- 闪存耐写次数达 100,000 次
- EEPROM 耐写次数达 1,000,000 次
- 闪存 / 数据 EEPROM 的数据保持期 > 40 年
• 增强型 USART 模块:
- 支持 RS-485、 RS-232 和 LIN 2.0
- 自动波特率检测
- 遇到起始位时自动唤醒
低功耗特性:
• 待机电流:
-2.0V时典型值为 50 nA
• 工作电流:
-32kHz、 2.0V 时典型值为 11 µA
-4MHz、 5.5V 时典型值 220 µA
• 看门狗定时器电流:
-2.0V时典型值 <1 µA
外设特性:
•17个 I/O 引脚和 1 个只用作输入的引脚:
- 高灌 / 拉电流能力,可直接驱动 LED
- 引脚电平变化中断
- 独立可编程弱上拉
- 超低功耗唤醒 ( Ultra Low-Power Wake-up,
ULPWU)
• 模拟比较器模块,具有:
-2个模拟比较器
- 片上可编程比较器参考电压 ( CV
( VDD 的 %)
- 可从外部访问比较器输入和输出
-SR锁存器模式
-Timer1门控同步锁存器
- 固定 0.6V 的 V
•A/D转换器:
-10位精度, 12 路通道
•Timer0:带有 8 位可编程预分频器的 8 位定时器 / 计
数器
• 增强型 Timer1:
- 带有预分频器的 16 位定时器 / 计数器
- 外部 Timer1 门控 (计数使能)
- 如果选用 INTOSC 模式,在 LP 模式中可选择
OSC1 或 OSC2 作为 Timer1 的振荡器
•Timer2:带有 8 位周期寄存器、预分频器和后分频
器的 8 位定时器 / 计数器
• 增强型捕捉、比较和 PWM+ 模块:
-16位捕捉,最大精度 12.5 ns
- 比较,最大精度 200 ns
-10位 PWM,带有 1、 2 或 4 路输出通道及可
编程 “死区”,最高频率 20 kHz
-PWM输出转向 (Steering)控制
• 同步串行口 ( Synchronous Serial Port, SSP):
- SPI 模式 (主控和从动)
2
C™ (主 / 从模式):
•I
-I2C™ 地址屏蔽
• 通过两个引脚进行在线串行编程 ( In-Circuit
Serial ProgrammingTM, ICSPTM)
REF
REF)模块
2007 Microchip Technology Inc. 初稿 DS41262C_CN第 1 页
PIC16F631/677/685/687/689/690
程序
存储器
器件
闪存
(字)
数据存储器
SRAM
(字节)
EEPROM
(字节)
I/O
10 位 A/D
(通道)
比较器
8/16 位
定时器
PIC16F631 1024 64 128 18 — 2 1/1
PIC16F677 2048 128 256 18 12 2 1/1
PIC16F685 4096 256 256 18 12 2 2/1
PIC16F687 2048 128 256 18 12 2 1/1
PIC16F689 4096 256 256 18 12 2 1/1
PIC16F690 4096 256 256 18 12 2 2/1
PIC16F631 引脚图
20 引脚 PDIP、SOIC 和 SSOP
VDD
RA5/T1CKI/OSC1/CLKIN
RA4/T1G
/OSC2/CLKOUT
RA3/MCLR
RC3/C12IN3-
/VPP
RC5
RC4/C2OUT
RC6
RC7
RB7
1
2
3
4
5
6
7
8
9
10
20
19
18
17
16
15
14
PIC16F631
13
12
11
VSS
RA0/C1IN+/ICSPDAT/ULPWU
RA1/C12IN0-/ICSPCLK
RA2/T0CKI/INT/C1OUT
RC0/C2IN+
RC1/C12IN1RC2/C12IN2RB4
RB5
RB6
SSP ECCP+ EUSART
无无 无
有无 无
无有 无
有无 有
有无 有
有有 有
表 1 : PIC16F631 引脚汇总
I/O
引脚 模拟 比较器 定时器 中断 上拉 基本
RA0 19 AN0/ULPWU C1IN+ — IOC
RA1 18 AN1 C12IN0- — IOC
RA2 17 — C1OUT T0CKI IOC/INT
RA3 4 — — — IOC
RA4 3 — — T1G IOC
RA5 2 — — T1CKI IOC
RB4 13 — — — IOC
RB5 12 — — — IOC
RB6 11 — — — IOC
RB7 10 — — — IOC
是
是
是
是
(1)
是
是
是
是
是
是
RC0 16 AN4 C2IN+ — — — —
RC1 15 AN5 C12IN1- — — — —
RC2 14 AN6 C12IN2- — — — —
RC3 7 AN7 C12IN3- — — — —
RC4 6 — C2OUT — — — —
RC5 5 — — — — — —
RC6 8 — — — — — —
RC7 9 — — — — — —
— 1 — — — — — VDD
— 2 0— ———— VSS
注 1: 只有在外部 MCLR 配置时才使能上拉。
ICSPDAT
ICSPCLK
MCLR/VPP
OSC2/CLKOUT
OSC1/CLKIN
—
—
—
—
—
DS41262C_CN 第 2 页 初稿 2007 Microchip Technology Inc.
PIC16F677 引脚图
20 引脚 PDIP、SOIC 和 SSOP
PIC16F631/677/685/687/689/690
RA5/T1CKI/OSC1/CLKIN
RA4/AN3/T1G
/OSC2/CLKOUT
RA3/MCLR
RC3/AN7C12IN3-
RC7/AN9/SDO
VDD
/VPP
RC5
RC4/C2OUT
RC6/AN8/SS
RB7
1
2
3
4
5
6
7
8
9
10
PIC16F677
20
19
18
17
16
15
14
13
12
11
VSS
RA0/AN0/C1IN+/ICSPDAT/ULPWU
RA1/AN1/C12IN0-/V
RA2/AN2/T0CKI/INT/C1OUT
RC0/AN4/C2IN+
RC1/AN5/C12IN1RC2/AN6/C12IN2RB4/AN10/SDI/SDA
RB5/AN11
RB6/SCK/SCL
REF/ICSPCLK
表 2: PIC16F677 引脚汇总
I/O
引脚 模拟 比较器 定时器 中断 上拉 基本
RA0 19 AN0/ULPWU C1IN+ — — IOC
RA1 18 AN1/VREF C12IN0- — — IOC
RA2 17 AN2 C1OUT T0CKI — IOC/INT
RA3 4 — — — — IOC
RA4 3 AN3 —
T1G
— IOC
RA5 2 — — T1CKI — IOC
RB4 13 AN10 — — SDI/SDA IOC
RB5 12 AN11 — — — IOC
RB6 11 — — — SCL/SCK IOC
RB7 10 — — — — IOC
是
是
是
是
(1)
是
是
是
是
是
是
RC0 16 AN4 C2IN+ — — — — —
RC1 15 AN5 C12IN1- — — — — —
RC2 14 AN6 C12IN2- — — — — —
RC3 7 AN7 C12IN3- — — — — —
RC4 6 — C2OUT — — — — —
RC5 5 — — — — — — —
RC6 8 AN8 — — SS — — —
RC7 9 AN9 — — SDO — — —
— 1 — — — — — — VDD
—2 0 — — — — — — VSS
注 1: 只有在外部 MCLR 配置时才激活上拉。
ICSPDAT
ICSPCLK
MCLR/VPP
OSC2/CLKOUT
OSC1/CLKIN
I/O
—
—
—
—
—
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 3 页
PIC16F631/677/685/687/689/690
PIC16F685 引脚图
20 引脚 PDIP、SOIC 和 SSOP
RA5/T1CKI/OSC1/CLKIN
RA4/AN3/T1G
/OSC2/CLKOUT
RA3/MCLR
RC5/CCP1/P1A
RC4/C2OUT/P1B
RC3/AN7/C12IN3-/P1C
VDD
/VPP
RC6/AN8
RC7/AN9
RB7
1
2
3
4
5
6
7
8
9
10
20
19
18
17
16
15
14
PIC16F685
13
12
11
VSS
RA0/AN0/C1IN+/ICSPDAT/ULPWU
RA1/AN1/C12IN0-/V
RA2/AN2/T0CKI/INT/C1OUT
RC0/AN4/C2IN+
RC1/AN5/C12IN1RC2/AN6/C12IN2-/P1D
RB4/AN10
RB5/AN11
RB6
REF/ICSPCLK
表 3: PIC16F685 引脚汇总
I/O
引脚 模拟 比较器 定时器
RA0 19 AN0/ULPWU C1IN+ — — IOC
RA1 18 AN1/V
REF C12IN0- — — IOC
RA2 17 AN2 C1OUT T0CKI — IOC/INT
RA3 4 — — — — IOC
RA4 3 AN3 —
T1G
RA5 2 — — T1CKI — IOC
RB4 13 AN10 — — — IOC
RB5 12 AN11 — — — IOC
RB6 11 — — — — IOC
RB7 10 — — — — IOC
RC0 16 AN4 C2IN+ — — — — —
RC1 15 AN5 C12IN1- — — — — —
RC2 14 AN6 C12IN2- — P1D — — —
RC3 7 AN7 C12IN3- — P1C — — —
RC4 6 — C2OUT — P1B — — —
RC5 5 — — — CCP1/P1A — — —
RC6 8 AN8 — — — — — —
RC7 9 AN9 — — — — — —
— 1 — — — — — — VDD
—2 0 — — — — — — VSS
注 1: 只有在外部 MCLR 配置时才使能上拉。
ECCP
— IOC
中断 上拉 基本
是
是
ICSPDAT
ICSPCLK
是
是
(1)
是
是
MCLR/VPP
OSC2/CLKOUT
OSC1/CLKIN
是
是
是
是
—
—
—
—
—
DS41262C_CN 第 4 页 初稿 2007 Microchip Technology Inc.
PIC16F687/689 引脚图
20 引脚 PDIP、SOIC 和 SSOP
PIC16F631/677/685/687/689/690
RA5/T1CKI/OSC1/CLKIN
RA4/AN3/T1G
/OSC2/CLKOUT
RA3/MCLR
RC3/AN7/C12IN3-
RC6/AN8/SS
RC7/AN9/SDO
VDD
/VPP
RC5
RC4/C2OUT
RB7/TX/CK
1
2
3
4
5
6
7
8
9
10
20
19
18
17
16
15
14
PIC16F687/689
13
12
11
VSS
RA0/AN0/C1IN+/ICSPDAT/ULPWU
RA1/AN1/C12IN0-/V
RA2/AN2/T0CKI/INT/C1OUT
RC0/AN4/C2IN+
RC1/AN5/C12IN1RC2/AN6/C12IN2RB4/AN10/SDI/SDA
RB5/AN11/RX/DT
RB6/SCK/SCL
REF/ICSPCLK
表 4: PIC16F687/689 引脚汇总
I/O
引脚 模拟 比较器 定时器
RA0 19 AN0/ULPWU C1IN+ — — — IOC
RA1 18 AN1/V
REF C12IN0- — — — IOC
RA2 17 AN2 C1OUT T0CKI — — IOC/INT
RA3 4 — — — — — IOC
RA4 3 AN3 —
T1G
RA5 2 — — T1CKI — — IOC
RB4 13 AN10 — — — SDI/SDA IOC
RB5 12 AN11 — — RX/DT — IOC
RB6 11 — — — — SCL/SCK IOC
RB7 10 — — — TX/CK — IOC
RC0 16 AN4 C2IN+ — — — — — —
RC1 15 AN5 C12IN1- — — — — — —
RC2 14 AN6 C12IN2- — — — — — —
RC3 7 AN7 C12IN3- — — — — — —
RC4 6 — C2OUT — — — — — —
RC5 5 — — — — — — — —
RC6 8 AN8 — — —
RC7 9 AN9 — — — SDO — — —
— 1 — — — — — — — VDD
—2 0 — — — — — — — VSS
注 1:只有在外部 MCLR 配置时才使能上拉。
EUSART SSP
— — IOC
SS
中断 上拉 基本
是
是
ICSPDAT
ICSPCLK
是
(1)
是
是
是
MCLR/VPP
OSC2/CLKOUT
OSC1/CLKIN
是
是
是
是
— — —
—
—
—
—
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 5 页
PIC16F631/677/685/687/689/690
PIC16F690 引脚图 ( PDIP、 SOIC 和 SSOP)
20 引脚 PDIP、SOIC 和 SSOP
RA5/T1CKI/OSC1/CLKIN
RA4/AN3/T1G
/OSC2/CLKOUT
RA3/MCLR
RC5/CCP1/P1A
RC4/C2OUT/P1B
RC3/AN7/C12IN3-/P1C
RC7/AN9/SDO
VDD
/VPP
RC6/AN8/SS
RB7/TX/CK
1
2
3
4
5
6
7
8
9
10
20
19
18
17
16
15
14
PIC16F690
13
12
11
VSS
RA0/AN0/C1IN+/ICSPDAT/ULPWU
RA1/AN1/C12IN0-/V
RA2/AN2/T0CKI/INT/C1OUT
RC0/AN4/C2IN+
RC1/AN5/C12IN1RC2/AN6/C12IN2-/P1D
RB4/AN10/SDI/SDA
RB5/AN11/RX/DT
RB6/SCK/SCL
REF/ICSPCLK
表 5: PIC16F690 引脚汇总
I/O
引脚 模拟 比较器 定时器
RA0 19 AN0/ULPWU C1IN+ — — — — IOC
RA1 18 AN1/VREF C12IN0- — — — — IOC
RA2 17 AN2 C1OUT T0CKI — — — IOC/INT
RA3 4 — — — — — — IOC
RA4 3 AN3 —
T1G
RA5 2 — — T1CKI — — — IOC
RB4 13 AN10 — — — — SDI/
RB5 12 AN11 — — — RX/DT — IOC
RB6 11 — — — — SCL/
RB7 10 — — — — TX/CK — IOC
RC0 16 AN4 C2IN+ — — — — — — —
RC1 15 AN5 C12IN1- — — — — — — —
RC2 14 AN6 C12IN2- — P1D — — — — —
RC3 7 AN7 C12IN3- — P1C — — — — —
RC4 6 — C2OUT — P1B — — — — —
RC5 5 — — — CCP1/P1A — — — — —
RC6 8 AN8 — — — —
RC7 9 AN9 — — — — SDO — — —
— 1 — — — — — — — — VDD
—2 0 — — — — — — — — VSS
注 1:只有在外部 MCLR 配置时才使能上拉。
ECCP EUSART SSP
— — — IOC
SDA
SCK
SS
中断 上拉 基本
是
是
ICSPDAT
ICSPCLK
是
(1)
是
是
MCLR/VPP
OSC2/
CLKOUT
OSC1/CLKIN
是
IOC
是
是
IOC
是
是
— — —
—
—
—
—
DS41262C_CN 第 6 页 初稿 2007 Microchip Technology Inc.
PIC16F690 引脚图 ( QFN)
20 引脚 QFN
RA3/MCLR/VPP
RC5/CCP1/P1A
RC4/C2OUT/P1B
RC3/AN7/C12IN3-/P1C
RC6/AN8/SS
PIC16F631/677/685/687/689/690
DD
RA5/T1CKI/OSC1/CLKIN
RA4/AN3/T1G/OSC2/CLKOUT
20
1
(1)
(1)
(1)
(2)
2
PIC16F631/677/
3
685/687/689/690
4
5
6
V
VSS
RA0/AN0/C1IN+/ICSPDAT/ULPWU
19
18
17
16
15
14
13
12
11
7
8
9
10
RA1/AN1/C12IN0-/VREF /ICSPCLK
RA2/AN2/T0CKI/INT/C1OUT
RC0/AN4/C2IN+
RC1/AN5/C12IN1-
RC2/AN6/C12IN2-/P1D
(1)
(2)
(3)
(2)
(3)
(2)
RB7/TX/CK
RC7/AN9/SDO
注 1: 只有 PIC16F685/PIC16F690 上有 CCP1/P1A 、 P1B 、 P1C 和 P1D 。
2: 只有 PIC16F677/PIC16F687/PIC16F689/PIC16F690 上有 SS
3: 只有 PIC16F687/PIC16F689/PIC16F690 上有 RX/DT 和 TX/CK。
RB6/SCK/SCL
RB5/AN11/RX/DT
RB4/AN10/SDI/SDA
、 SDO、 SDI/SDA 和 SCL/SCK。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 7 页
PIC16F631/677/685/687/689/690
目录
1.0 器件概述 ....................................................................................................................................................................................... 9
2.0 存储器构成 ................................................................................................................................................................................. 25
3.0 振荡器模式 (带故障保护时钟监视器) ...................................................................................................................................... 47
4.0 I/O 端口 ....................................................................................................................................................................................... 59
5.0 Timer0 模块 ................................................................................................................................................................................ 81
6.0 带门控的 Timer1 模块 ................................................................................................................................................................. 84
7.0 Timer2 模块 ................................................................................................................................................................................ 91
8.0 比较器模块 ................................................................................................................................................................................. 93
9.0 模数转换器 ( ADC)模块 ......................................................................................................................................................... 107
10.0 数据 EEPROM 和闪存程序存储器控制 ..................................................................................................................................... 119
11.0 增强型捕捉 / 比较 /PWM 模块 ................................................................................................................................................... 127
12.0 增强型通用同步 / 异步收发器 ( EUSART).............................................................................................................................. 149
13.0 SSP 模块概述 ........................................................................................................................................................................... 175
14.0 CPU 的特殊功能 ....................................................................................................................................................................... 193
15.0 指令集汇总 ............................................................................................................................................................................... 213
16.0 开发支持 ................................................................................................................................................................................... 223
17.0 电气特性 ................................................................................................................................................................................... 227
18.0 直流和交流特性图表 ................................................................................................................................................................. 255
19.0 封装信息 ................................................................................................................................................................................... 275
附录 A : 数据手册版本历史 .......................................................................................................................................................... 281
附录 B :从 其 他PIC® 器件移植 ................................................................................................................................................... 281
致客户
我们旨在提供最佳文档供客户正确使用 Microchip 产品。为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。出
版物的质量将随新文档及更新版本的推出而得到提升。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 CTRC@microchip.com ,或将本数
据手册后附的 《读者反馈表》传真到 86-21-5407 5066 。我们期待您的反馈。
最新数据手册
欲获得本数据手册的最新版本,请查询我公司的网站:
http://www.microchip.com
查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号,例如:DS30000A 是 DS30000
的 A 版本。
勘误表
现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到器
件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
• Microchip 网站 http://www.microchip.com
• 当地 Microchip 销售办事处 (见最后一页)
在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。
客户通知系统
欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。
DS41262C_CN 第 8 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
1.0 器件概述
本数据手册涵盖 PIC16F631/677/685/687/689/690 器
件。这些器件采用 20 引脚 PDIP 、 SOIC 、 TSSOP 和
QFN 封装。
图 1-1 : PIC16F631 框图
INT
程序
总线
OSC1/CLKI
OSC2/CLKO
内部
振荡器
模块
14
指令寄存器
ULPWU
超低功耗
唤醒
配置
闪存
1K x 14
程序
存储器
指令
译码和
控制
定时
发生
13
程序计数器
8 级深堆栈(13 位)
直接寻址
8
上电延时
定时器
振荡器
起振定时器
上电
复位
看门狗
定时器
欠压
复位
VDD
MCLR
Timer0 Timer1
VSS
T1G T1CKI T0CKI
7
3
8
W 寄存器
这些器件的框图和引脚排列说明如下所示:
• PIC16F631 (图 1-1,表 1-1)
• PIC16F677 (图 1-2,表 1-2)
• PIC16F685 (图 1-3,表 1-3)
• PIC16F687/PIC16F689 (图 1-4,表 1-4)
• PIC16F690 (图 1-5,表 1-5)
数据总线
RAM
64 字节
文件
寄存器
9
寻址 MUX
8
FSR 寄存器
STATUS 寄存器
MUX
ALU
EEDAT
128 字节
数据
EEPROM
EEADR
8
RAM 地址
间接
寻址
C1IN- C1IN+ C1OUT8C2IN- C2IN+ C2OUT
PORTA
PORTB
PORTC
2 个模拟比较器和参考电压
RA0
RA1
RA2
RA3
RA4
RA5
RB4
RB5
RB6
RB7
RC0
RC1
RC2
RC3
RC4
RC5
RC6
RC7
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 9 页
PIC16F631/677/685/687/689/690
图 1-2: PIC16F677 框图
INT
程序
总线
OSC1/CLKI
OSC2/CLKO
内部
振荡器
模块
指令寄存器
ULPWU
配置
闪存
2K x 14
程序
存储器
14
指令
译码和
控制
定时
发生
13
8 级深堆栈(13 位)
8
上电延时
起振定时器
MCLR
程序计数器
直接寻址
定时器
振荡器
上电
复位
看门狗
定时器
欠压
复位
VDD
VSS
RAM 地址
9
间接
寻址
8
数据总线
RAM
128 字节
文件
寄存器
地址 MUX
7
3
8
W 寄存器
T1G T1CKI T0CKI
8
FSR 寄存器
STATUS 寄存器
MUX
ALU
PORTA
PORTB
PORTC
SDO
RA0
RA1
RA2
RA3
RA4
RA5
RC0
RC1
RC2
RC3
RC4
RC5
RC6
RC7
SDI/ SCK/
SDA SCL
RB4
RB5
RB6
RB7
SS
超低功耗
唤醒
AN8 AN9 AN10 AN11
模数转换器
VREF
AN0 AN1 AN2 AN3 AN4 AN5 AN6
Timer0 Timer1
2 个模拟比较器和参考电压
AN7
C1IN- C1IN+ C1OUT
C2IN- C2IN+ C2OUT
8
EEDAT
256 字节
数据
EEPROM
EEADR
同步
串行端口
DS41262C_CN 第 10 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
图 1-3 : PIC16F685 框图
程序
总线
配置
闪存
4K x 14
程序
存储器
14
指令寄存器
13
INT
程序计数器
8 级深堆栈(13 位)
直接地址
8
数据总线
RAM
256 字节
文件
寄存器
RAM 地址
9
地址 MUX
7
8
FSR 寄存器
间接
寻址
PORTA
RA0
RA1
RA2
RA3
RA4
RA5
PORTB
RB4
RB5
RB6
RB7
OSC1/CLKI
OSC2/CLKO
内部
振荡器
模块
ULPWU
超低功耗
唤醒
AN8 AN9 AN10 AN11
指令
译码和
控制
定时
发生
模数转换器
8
上电延时
定时器
振荡器
起振定时器
上电
复位
看门狗
定时器
欠压
复位
VDD
MCLR
Timer0 Timer1
VSS
T1G T1CKI T0CKI
2 个模拟比较器和参考电压
3
8
W 寄存器
STATUS 寄存器
MUX
ALU
Timer2
PORTC
8
CCP1/
P1A
EEDAT
256 字节
数据
EEPROM
EEADR
RC0
RC1
RC2
RC3
RC4
RC5
RC6
RC7
P1B P1C P1D
ECCP+
VREF
AN0 AN1 AN2 AN3 AN4 AN5 AN6
AN7
C1IN- C1IN+ C1OUT
C2IN- C2IN+ C2OUT
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 11 页
PIC16F631/677/685/687/689/690
图 1-4: PIC16F687/ PIC16F689 框图
INT
程序
总线
OSC1/CLKI
OSC2/CLKO
内部
振荡器
模块
2K
指令寄存器
ULPWU
配置
闪存
(1)
/4K x 14
程序
存储器
14
指令
译码和
控制
定时
发生
13
8 级深堆栈(13 位)
直接寻址
8
上电延时
定时器
振荡器
起振定时器
看门狗
定时器
MCLR
程序计数器
上电
复位
欠压
复位
VDD
VSS
RAM 地址
间接
寻址
RX/DT
8
数据总线
RAM
(1)
/256 字节
128
文件
寄存器
9
地址 MUX
7
3
8
W 寄存器
T1G T1CKI T0CKI
8
FSR 寄存器
STATUS 寄存器
MUX
ALU
TX/CK
PORTA
PORTB
PORTC
RA0
RA1
RA2
RA3
RA4
RA5
SDO
RB4
RB5
RB6
RB7
RC0
RC1
RC2
RC3
RC4
RC5
RC6
RC7
SDI/ SCK/
SDA SCL
SS
超低功耗
唤醒
AN8 AN9 AN10 AN11
模数转换器
VREF
AN0 AN1 AN2 AN3 AN4 AN5 AN6
注 1 : 仅限 PIC16F687。
Timer0 Timer1
2 个模拟比较器和参考电压
AN7
C1IN- C1IN+ C1OUT
EUSART
C2IN- C2IN+ C2OUT
8
EEDAT
256 字节
数据
EEPROM
EEADR
同步
串行端口
DS41262C_CN 第 12 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
图 1-5 : PIC16F690 框图
程序
总线
OSC1/CLKI
OSC2/CLKO
内部
振荡器
模块
ULPWU
配置
闪存
4k x 14
程序
存储器
14
指令寄存器
指令
译码和
控制
定时
发生
T0CKI
13
8 级深堆栈(13 位)
8
上电延时
起振定时器
MCLR
T1G T1CKI
直接地址
定时器
振荡器
上电
复位
看门狗
定时器
欠压
复位
VDD
INT
程序计数器
VSS
7
3
8
W 寄存器
数据总线
RAM
256 字节
文件
寄存器
9
地址 MUX
8
FSR 寄存器
STATUS 寄存器
MUX
ALU
TX/CK RX/DT
RAM 地址
间接
地址
8
PORTA
RA0
RA1
RA2
RA3
RA4
RA5
PORTB
RB4
RB5
RB6
RB7
PORTC
CCP1/
P1A
P1B P1C P1D
RC0
RC1
RC2
RC3
RC4
RC5
RC6
RC7
SDO
SDI/ SCK/
SDA SCL
SS
超低功耗
唤醒
AN8 AN9 AN10 AN11
Timer0
模拟转换器
VREF
AN0 AN1 AN2 AN3 AN4 AN5 AN6
Timer1
AN7
C1IN- C1IN+ C1OUT
Timer2
2 个模拟比较器和参考电压
C2IN- C2IN+ C2OUT
EUSART
8
ECCP+
EEDAT
256 字节
数据
EEPROM
EEADR
同步
串行端口
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 13 页
PIC16F631/677/685/687/689/690
表 1-1 : 引脚说明——PIC16F631
名称 功能
RA0/C1IN+/ICSPDAT/ULPWU RA0 TTL CMOS
C1IN+ AN —
ICSPDAT ST CMOS
ULPWU AN —
RA1/C12IN0-/ICSPCLK RA1 TTL CMOS
C12IN0- AN —
ICSPCLK ST —
RA2/T0CKI/INT/C1OUT RA2 ST CMOS
T0CKI ST —
INT ST —
C1OUT — CMOS
RA3/MCLR
RA4/T1G
RA5/T1CKI/OSC1/CLKIN RA5 TTL CMOS
RB4 RB4 TTL CMOS
RB5 RB5 TTL CMOS
RB6 RB6 TTL CMOS
RB7 RB7 TTL CMOS
RC0/C2IN+ RC0 ST CMOS
RC1/C12IN1- RC1 ST CMOS
RC2/C12IN2- RC2 ST CMOS
RC3/C12IN3- RC3 ST CMOS
RC4/C2OUT RC4 ST CMOS
RC5 RC5 ST CMOS
图注: AN = 模拟输入或输出 CMOS=CMOS 兼容输入或输出
/VPP RA3 TTL —
MCLR
V
PP HV —
/OSC2/CLKOUT RA4 TTL CMOS
T1G
OSC2 — XTAL
CLKOUT — CMOS
T1CKI ST —
OSC1 XTAL —
CLKIN ST —
C2IN+ AN —
C12IN1- AN —
C12IN2- AN —
C12IN3- AN —
C2OUT — CMOS
TTL = TTL 兼容输入 ST= 带 CMOS 电平的施密特触发器输入
HV = 高电压 XTAL= 晶体
输入类型输出
类型
ST —
ST —
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
比较器 C1 的同相输入。
ICSP™ 数据 I/O 。
超低功耗唤醒输入。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
比较器 C1 或 C2 的同相输入。
ICSP™ 时钟。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
Timer0 时钟输入。
外部中断引脚。
比较器 C1 的输出。
通用 I/O 。可单独控制电平变化中断。
带内部上拉的主复位。
编程电压。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
Timer1 门控输入。
晶体 / 谐振器。
F
OSC/4 输出。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
Timer1 时钟输入。
晶体 / 谐振器。
外部时钟输入 /RC 振荡器连接晶体 / 谐振器。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
通用 I/O 。
比较器 C2 同相输入。
通用 I/O 。
比较器 C1 或 C2 反相输入。
通用 I/O 。
比较器 C1 或 C2 反相输入。
通用 I/O 。
比较器 C1 或 C2 反相输入。
通用 I/O 。
比较器 C2 输出。
通用 I/O 。
说明
DS41262C_CN 第 14 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
表 1-1 : 引脚说明——PIC16F631 (续)
名称 功能
RC6 RC6 ST CMOS
RC7 RC7 ST CMOS
V
SS V SS
V
DD V DD
图注: AN = 模拟输入或输出 CMOS=CMOS 兼容输入或输出
TTL = TTL 兼容输入 ST= 带 CMOS 电平的施密特触发器输入
HV = 高电压 XTAL= 晶体
输入类型输出
类型
电源
电源
—
—
通用 I/O 。
通用 I/O 。
接地参考。
正电源。
说明
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 15 页
PIC16F631/677/685/687/689/690
表 1-2 : 引脚说明——PIC16F677
名称 功能
RA0/AN0/C1IN+/ICSPDAT/
ULPWU
RA1/AN1/C12IN0-/V
ICSPCLK
RA2/AN2/T0CKI/INT/C1OUT RA2 ST CMOS
RA3/MCLR
RA4/AN3/T1G
RA5/T1CKI/OSC1/CLKIN RA5 TTL CMOS
RB4/AN10/SDI/SDA RB4 TTL CMOS
RB5/AN11 RB5 TTL CMOS
RB6/SCK/SCL RB6 TTL CMOS
图注: AN = 模拟输入或输出 CMOS=CMOS 兼容输入或输出
/VPP RA3 TTL —
TTL = TTL 兼容输入 ST= 带 CMOS 电平的施密特触发器输入
HV = 高电压 XTAL= 晶体
REF/
/OSC2/CLKOUT RA4 TTL CMOS
RA0 TTL CMOS
AN0 AN —
C1IN+ AN —
ICSPDAT ST CMOS
ULPWU AN —
RA1 TTL CMOS
AN1 AN —
C12IN0- AN —
V
REF AN —
ICSPCLK ST —
AN2 AN —
T0CKI ST —
INT ST —
C1OUT — CMOS
MCLR
V
PP HV —
AN3 AN —
T1G
OSC2 — XTAL
CLKOUT — CMOS
T1CKI ST —
OSC1 XTAL —
CLKIN ST —
AN10 AN —
SDI ST —
SDA ST OD
AN11 AN —
SCK ST CMOS
SCL ST OD
输入类型输出
类型
ST —
ST —
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 0 输入。
比较器 C1 同相输入。
ICSP™ 数据 I/O。
超低功耗唤醒输入。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 1 输入。
比较器 C1 或 C2 反相输入。
A/D 的外部参考电压。
ICSP™ 时钟。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 2 输入。
Timer0 时钟输入。
外部中断引脚。
比较器 C1 输出。
通用 I/O 。可单独控制电平变化中断。
带内部上拉的主复位。
编程电压。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 3 输入。
Timer1 门控输入。
晶体 / 谐振器。
F
OSC/4 输出。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
Timer1 时钟输入。
晶体 / 谐振器。
外部时钟输入 /RC 振荡器连接。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 10 输入。
SPI 数据输入。
2
I
C™ 数据输入 / 输出。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 11 输入。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
SPI 时钟。
2
I
C™ 时钟。
说明
DS41262C_CN 第 16 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
表 1-2 : 引脚说明——PIC16F677 (续)
名称 功能
RB7 RB7 TTL CMOS
RC0/AN4/C2IN+ RC0 ST CMOS
AN4 AN —
C2IN+ AN —
RC1/AN5/C12IN1- RC1 ST CMOS
AN5 AN —
C12IN1- AN —
RC2/AN6/C12IN2- RC2 ST CMOS
AN6 AN —
C12IN2- AN —
RC3/AN7/C12IN3- RC3 ST CMOS
AN7 AN —
C12IN3- AN —
RC4/C2OUT RC4 ST CMOS
C2OUT — CMOS
RC5 RC5 ST CMOS
RC6/AN8/SS
RC7/AN9/SDO RC7 ST CMOS
V
SS V SS
V
DD V DD
图注: AN = 模拟输入或输出 CMOS=CMOS 兼容输入或输出
TTL = TTL 兼容输入 ST= 带 CMOS 电平的施密特触发器输入
HV = 高电压 XTAL= 晶体
RC6 ST CMOS
AN8 AN —
SS
AN9 AN —
SDO — CMOS
输入类型输出
类型
ST —
电源
电源
—
—
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
通用 I/O 。
A/D 通道 4 输入。
比较器 C2 同相输入。
通用 I/O 。
A/D 通道 5 输入。
比较器 C1 或 C2 反相输入。
通用 I/O 。
A/D 通道 6 输入。
比较器 C1 或 C2 反相输入。
通用 I/O 。
A/D 通道 7 输入。
比较器 C1 或 C2 反相输入。
通用 I/O 。
比较器 C2 输出。
通用 I/O 。
通用 I/O 。
A/D 通道 8 输入。
从动选择输入。
通用 I/O 。
A/D 通道 9 输入。
SPI 数据输出。
接地参考。
正电源。
说明
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 17 页
PIC16F631/677/685/687/689/690
表 1-3 : 引脚说明——PIC16F685
名称 功能
RA0/AN0/C1IN+/ICSPDAT/
ULPWU
RA1/AN1/C12IN0-/V
RA2/AN2/T0CKI/INT/C1OUT RA2 ST CMOS
RA3/MCLR
RA4/AN3/T1G
RA5/T1CKI/OSC1/CLKIN RA5 TTL CMOS
RB4/AN10 RB4 TTL CMOS
RB5/AN11 RB5 TTL CMOS
RB6 RB6 TTL CMOS
RB7 RB7 TTL CMOS
RC0/AN4/C2IN+ RC0 ST CMOS
图注: AN = 模拟输入或输出 CMOS=CMOS 兼容输入或输出
/VPP RA3 TTL —
TTL = TTL 兼容输入 ST= 带 CMOS 电平的施密特触发器输入
HV = 高电压 XTAL= 晶体
REF/ICSPCLK RA1 TTL CMOS
/OSC2/CLKOUT RA4 TTL CMOS
RA0 TTL CMOS
AN0 AN —
C1IN+ AN —
ICSPDAT TTL CMOS
ULPWU AN —
AN1 AN —
C12IN0- AN —
V
REF AN —
ICSPCLK ST —
AN2 AN —
T0CKI ST —
INT ST —
C1OUT — CMOS
MCLR
V
PP HV —
AN3 AN —
T1G
OSC2 — XTAL
CLKOUT — CMOS
T1CKI ST —
OSC1 XTAL —
CLKIN ST —
AN10 AN —
AN11 AN —
AN4 AN —
C2IN+ AN —
输入类型输出
类型
ST —
ST —
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 0 输入。
比较器 C1 的正极输入。
ICSP™ 数据 I/O。
超低功耗唤醒输入。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 1 输入。
比较器 C1 或 C2 的负极输入。
A/D 的外部参考电压。
ICSP 敝印 £
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 2 输入。
Timer0 时钟输入。
外部中断引脚。
比较器 C1 输出。
通用 I/O 。可单独控制电平变化中断。
带内部上拉的主复位。
编程电压。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 3 输入。
Timer1 门控输入。
晶体 / 谐振器。
F
OSC/4 输出。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
Timer1 时钟输入。
晶体 / 谐振器。
外部时钟输入 /RC 振荡器连接。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 10 输入。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 11 输入。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
通用 I/O 。
A/D 通道 4 输入。
比较器 C2 正输入。
说明
DS41262C_CN 第 18 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
表 1-3 : 引脚说明——PIC16F685 (续)
名称 功能
RC1/AN5/C12IN1- RC1 ST CMOS
AN5 AN —
C12IN1- AN —
RC2/AN6/C12IN2-/P1D RC2 ST CMOS
AN6 AN —
C12IN2- AN —
P1D — CMOS
RC3/AN7/C12IN3-/P1C RC3 ST CMOS
AN7 AN —
C12IN3- AN —
P1C — CMOS
RC4/C2OUT/P1B RC4 ST CMOS
C2OUT — CMOS
P1B — CMOS
RC5/CCP1/P1A RC5 ST CMOS
CCP1 ST CMOS
P1A ST CMOS
RC6/AN8 RC6 ST CMOS
AN8 AN —
RC7/AN9 RC7 ST CMOS
AN9 AN —
V
SS V SS
V
DD V DD
图注: AN = 模拟输入或输出 CMOS=CMOS 兼容输入或输出
TTL = TTL 兼容输入 ST= 带 CMOS 电平的施密特触发器输入
HV = 高电压 XTAL= 晶体
输入类型输出
类型
电源
电源
—
—
通用 I/O。
A/D 通道 5 输入。
比较器 C1 或 C2 的负极输入。
通用 I/O 。
A/D 通道 6 输入。
比较器 C1 的 C2 负极输入。
PWM 输出。
通用 I/O 。
A/D 通道 7 输入。
比较器 C1 或 C2 的负极输入。
PWM 输出。
通用 I/O 。
比较器 C2 输出。
PWM 输出。
通用 I/O 。
捕捉 / 比较输入。
PWM 输出。
通用 I/O 。
A/D 通道 8 输入。
通用 I/O 。
A/D 通道 9 输入。
接地参考。
正电源。
说明
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 19 页
PIC16F631/677/685/687/689/690
表 1-4 : 引脚说明——PIC16F687/PIC16F689
名称 功能
RA0/AN0/C1IN+/ICSPDAT/
ULPWU
RA1/AN1/C12IN0-/V
RA2/AN2/T0CKI/INT/C1OUT RA2 ST CMOS
RA3/MCLR
RA4/AN3/T1G
RA5/T1CKI/OSC1/CLKIN RA5 TTL CMOS
RB4/AN10/SDI/SDA RB4 TTL CMOS
RB5/AN11/RX/DT RB5 TTL CMOS
RB6/SCK/SCL RB6 TTL CMOS
RB7/TX/CK RB7 TTL CMOS
图注: AN = 模拟输入或输出 CMOS=CMOS 兼容输入或输出
/VPP RA3 TTL —
TTL = TTL 兼容输入 ST= 带 CMOS 电平的施密特触发器输入
HV = 高电压 XTAL= 晶体
REF/ICSPCLK RA1 TTL CMOS
/OSC2/CLKOUT RA4 TTL CMOS
RA0 TTL CMOS
AN0 AN —
C1IN+ AN —
ICSPDAT TTL CMOS
ULPWU AN —
AN1 AN —
C12IN0- AN —
V
REF AN —
ICSPCLK ST —
AN2 AN —
T0CKI ST —
INT ST —
C1OUT — CMOS
MCLR
V
PP HV —
AN3 AN —
T1G
OSC2 — XTAL
CLKOUT — CMOS
T1CKI ST —
OSC1 XTAL —
CLKIN ST —
AN10 AN —
SDI ST —
SDA ST OD
AN11 AN —
RX ST —
DT ST CMOS
SCK ST CMOS
SCL ST OD
TX — CMOS
CK ST CMOS
输入类型输出
类型
ST —
ST —
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 0 输入。
比较器 C1 的正极输入。
ICSP™ 数据 I/O。
超低功耗唤醒输入。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 1 输入。
比较器 C1 或 C2 的负极输入。
A/D 的外部参考电压。
ICSP™ 时钟。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 2 输入。
Timer0 时钟输入。
外部中断。
比较器 C1 输出。
通用 I/O 。可单独控制电平变化中断。
带内部上拉的主复位。
编程电压。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 3 输入。
Timer1 门控输入。
晶体 / 谐振器。
F
OSC/4 输出。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
Timer1 时钟输入。
晶体 / 谐振器。
外部时钟输入 /RC 振荡器连接。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 10 输入。
SPI 数据输入。
2
I
C™ 数据输入 / 输出。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 11 输入。
EUSART 异步输入。
EUSART 同步数据。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
SPI 时钟。
2
I
C™ 时钟。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
EUSART 异步输出。
EUSART 同步时钟。
说明
DS41262C_CN 第 20 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
表 1-4 : 引脚说明——PIC16F687/PIC16F689 (续)
名称 功能
RC0/AN4/C2IN+ RC0 ST CMOS
AN4 AN —
C2IN+ AN —
RC1/AN5/C12IN1- RC1 ST CMOS
AN5 AN —
C12IN1- AN —
RC2/AN6/C12IN2- RC2 ST CMOS
AN6 AN —
C12IN2- AN —
RC3/AN7/C12IN3- RC3 ST CMOS
AN7 AN —
C12IN3- AN —
RC4/C2OUT RC4 ST CMOS
C2OUT — CMOS
RC5 RC5 ST CMOS
RC6/AN8/SS
RC7/AN9/SDO RC7 ST CMOS
V
SS V SS
V
DD V DD
图注: AN = 模拟输入或输出 CMOS=CMOS 兼容输入或输出
TTL = TTL 兼容输入 ST= 带 CMOS 电平的施密特触发器输入
HV = 高电压 XTAL= 晶体
RC6 ST CMOS
AN8 AN —
SS
AN9 AN —
SDO — CMOS
输入类型输出
类型
ST —
电源
电源
—
—
通用 I/O。
A/D 通道 4 输入。
比较器 C2 正极输入。
通用 I/O 。
A/D 通道 5 输入。
比较器 C1 或 C2 的负极输入。
通用 I/O 。
A/D 通道 6 输入。
比较器 C1 或 C2 的负极输入。
通用 I/O 。
A/D 通道 7 输入。
比较器 C1 或 C2 的负极输入。
通用 I/O 。
比较器 C2 输出。
通用 I/O 。
通用 I/O 。
A/D 通道 8 输入。
从动选择输入。
通用 I/O 。
A/D 通道 9 输入。
SPI 数据输出。
接地参考。
正电源。
说明
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 21 页
PIC16F631/677/685/687/689/690
表 1-5 : 引脚说明——PIC16F690
名称 功能
RA0/AN0/C1IN+/ICSPDAT/
ULPWU
RA1/AN1/C12IN0-/V
RA2/AN2/T0CKI/INT/C1OUT RA2 ST CMOS
RA3/MCLR
RA4/AN3/T1G
RA5/T1CKI/OSC1/CLKIN RA5 TTL CMOS
RB4/AN10/SDI/SDA RB4 TTL CMOS
RB5/AN11/RX/DT RB5 TTL CMOS
图注: AN = 模拟输入或输出 CMOS=CMOS 兼容输入或输出
/VPP RA3 TTL —
TTL = TTL 兼容输入 ST= 带 CMOS 电平的施密特触发器输入
HV = 高电压 XTAL= 晶体
REF/ICSPCLK RA1 TTL CMOS
/OSC2/CLKOUT RA4 TTL CMOS
RA0 TTL CMOS
AN0 AN —
C1IN+ AN —
ICSPDAT TTL CMOS
ULPWU AN —
AN1 AN —
C12IN0- AN —
V
REF AN —
ICSPCLK ST —
AN2 AN —
T0CKI ST —
INT ST —
C1OUT — CMOS
MCLR
V
PP HV —
AN3 AN —
T1G
OSC2 — XTAL
CLKOUT — CMOS
T1CKI ST —
OSC1 XTAL —
CLKIN ST —
AN10 AN —
SDI ST —
SDA ST OD
AN11 AN —
RX ST —
DT ST CMOS
输入类型输出
类型
ST —
ST —
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 0 输入。
比较器 C1 正极输入。
ICSP™ 数据 I/O。
超低功耗唤醒输入。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 1 输入。
比较器 C1 或 C2 的负极输入。
A/D 的外部参考电压。
ICSP™ 时钟。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 2 输入。
Timer0 时钟输入。
外部中断。
比较器 C1 输出。
通用 I/O 。可单独控制电平变化中断。
带内部上拉的主复位。
编程电压。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 3 输入。
Timer1 门控输入。
晶体 / 谐振器。
F
OSC/4 输出。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
Timer1 时钟输入。
晶体 / 谐振器。
外部时钟输入 /RC 振荡器连接。
通用 I/O 。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 10 输入。
SPI 数据输入。
2
I
C™ 数据输入 / 输出。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
A/D 通道 11 输入。
EUSART 异步输入。
EUSART 同步数据。
说明
DS41262C_CN 第 22 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
表 1-5 : 引脚说明——PIC16F690 (续)
名称 功能
RB6/SCK/SCL RB6 TTL CMOS
SCK ST CMOS
SCL ST OD
RB7/TX/CK RB7 TTL CMOS
TX — CMOS
CK ST CMOS
RC0/AN4/C2IN+ RC0 ST CMOS
AN4 AN —
C2IN+ AN —
RC1/AN5/C12IN1- RC1 ST CMOS
AN5 AN —
C12IN1- AN —
RC2/AN6/C12IN2-/P1D RC2 ST CMOS
AN6 AN —
C12IN2- AN —
P1D — CMOS
RC3/AN7/C12IN3-/P1C RC3 ST CMOS
AN7 AN —
C12IN3- AN —
P1C — CMOS
RC4/C2OUT/P1B RC4 ST CMOS
C2OUT — CMOS
P1B — CMOS
RC5/CCP1/P1A RC5 ST CMOS
CCP1 ST CMOS
P1A ST CMOS
RC6/AN8/SS
RC7/AN9/SDO RC7 ST CMOS
V
SS V SS
V
DD V DD
图注: AN = 模拟输入或输出 CMOS=CMOS 兼容输入或输出
TTL = TTL 兼容输入 ST= 带 CMOS 电平的施密特触发器输入
HV = 高电压 XTAL= 晶体
RC6 ST CMOS
AN8 AN —
SS
AN9 AN —
SDO — CMOS
输入类型输出
类型
ST —
电源
电源
—
—
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
SPI 时钟。
2
I
C™ 时钟。
通用 I/O。可单独控制电平变化中断。可单独使能上拉。
EUSART 异步输出。
EUSART 同步时钟。
通用 I/O。
A/D 通道 4 输入。
比较器 C2 正极输入。
通用 I/O 。
A/D 通道 5 输入。
比较器 C1 或 C2 的负极输入。
通用 I/O 。
A/D 通道 6 输入。
比较器 C1 或 C2 的负极输入。
PWM 输出。
通用 I/O 。
A/D 通道 7 输入。
比较器 C1 或 C2 的负极输入。
PWM 输出。
通用 I/O 。
比较器 C2 输出。
PWM 输出。
通用 I/O 。
捕捉 / 比较输入。
PWM 输出。
通用 I/O 。
A/D 通道 8 输入。
从动选择输入。
通用 I/O 。
A/D 通道 9 输入。
SPI 数据输出。
接地参考
正电源。
说明
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 23 页
PIC16F631/677/685/687/689/690
注:
DS41262C_CN 第 24 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
2.0 存储器构成
2.1 程序存储器构成
PIC16F631/677/685/687/689/690 器件具有一个 13 位
程序计数器,能够寻址 8K x 14 的程序存储空间。只有
PIC16F631 的第一个 1K x 14 ( 0000h-03FFh)、
PIC16F677/PIC16F687 的第一个 2K x 14 ( 0000h07FFh)和 PIC16F685/PIC16F689/PIC16F690 的第一
个 4K x 14 (0000h-0FFFh )是物理实现的。访问超出
上述界限的存储单元,将回到原来空间。复位向量位于
0000h ,而中断向量位于 0004h (见图 2-1 至 2-3 )。
图 2-1 : PIC16F631 的程序存储器映射和堆
栈
PC<12:0>
CALL, RETURN
RETFIE, RETLW
1 级堆栈
2 级堆栈
8 级堆栈
复位向量
13
0000h
图 2-2 : PIC16F685/689/690 的程序存储器映
射和堆栈
PC<12:0>
CALL, RETURN
RETFIE, RETLW
2 级堆栈
8 级堆栈
复位向量
中断向量
片上程序
访问 0-FFFh
13
1
0000h
0004h
0005h
存储器
0FFFh
1000h
1FFFh
中断向量
片上程序
存储器
访问 0-3FFh
0004h
0005h
03FFh
0400h
1FFFh
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 25 页
PIC16F631/677/685/687/689/690
图 2-3 : PIC16F677/PIC16F687 的程序存储
器映射和堆栈
PC<12:0>
CALL, RETURN
RETFIE, RETLW
1 级堆栈
2 级堆栈
8 级堆栈
复位向量
中断向量
片上程序
访问 0-7FFh
13
0000h
0004h
0005h
存储器
07FFh
0800h
1FFFh
2.2 数据存储器构成
数据存储器(见图2-6 至2-8 )分为四个存储区(Bank ),
这四个存储区中包含通用寄存器 (General Purpose
Register, GPR)和特殊功能寄存器(Special Function
Register,SFR)。特殊功能寄存器位于每个存储区的前
32 个单元中。以静态 RAM 的形式实现的通用寄存器位
于每个存储区的前 96 个单元中。Bank 1 中的寄存器单
元 F0h-FFh 、 Bank 2 中的 170h-17Fh 和 Bank 3 中的
1F0h-1FFh 指向 Bank 0 中的地址 70h-7Fh 。每个存储
器区中通用寄存器 (GPR )的数量取决于具体 器件。
详细信息请参见图 2-4 至 2-8 。所有其他 RAM 均未使
用,读取时返回 0 。STATUS 存储器的 RP<1:0> 是存储
区选择位:
RP1
2.2.1 通用寄存器文件
PIC16F687的寄存器文件组织为 128 x 8,而PIC16F685/
PIC16F689/PIC16F690的寄存器文件则组织为 256 x 8。
通过文件选择寄存器(File Select Register ,FSR ),可
以直接或间接地访问每个寄存器 (见第 2.4 节“间接寻
址、 INDF 和 FSR 寄存器”)。
RP0
00→选 择Bank 0
01→选 择Bank 1
10→选 择Bank 2
11→选 择Bank 3
2.2.2 特殊功能寄存器
特殊功能寄存器为CPU 和外设模块用来对器件进行所需
操作控制的寄存器(见表 2-1 至 2-4 )。这些寄存器均为
静态 RAM 。
特殊功能寄存器可分为两类,即:内核和外设。本节将
介绍与 “内核”相关的特殊功能寄存器。与外设模块相
关的特殊功能寄存器将在相应的外设模块功能章节中介
绍。
DS41262C_CN 第 26 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
图 2-4 : PIC16F631 特殊功能寄存器
文件 文件 文件 文件
寄存器 寄存器 寄存器 寄存器
(1)
间接寻址
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
PORTA 05h TRISA 85h PORTA 105h TRISA 185h
PORTB 06h TRISB 86h PORTB 106h TRISB 186h
PORTC 07h TRISC 87h PORTC 107h TRISC 187h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch EEDAT 10Ch EECON1 18Ch
PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2
TMR1L 0Eh PCON 8Eh
TMR1H 0Fh OSCCON 8Fh 10Fh 18Fh
T1CON 10h OSCTUNE 90h
00h
08h 88h 108h 188h
09h 89h 109h 189h
11h 91h 111h 191h
12h 92h 112 h 192h
13h 93h 113 h 193h
14h 94h 114 h 194h
15h WPUA 95h WPUB 115h 195h
16h IOCA 96h IOCB 116h 196h
17h WDTCON 97h 117h 197h
18h 98h VRCON 118h 198h
19h 99h CM1CON0 119h 199h
1Ah 9Ah CM2CON0 11Ah 19Ah
1Bh 9Bh CM2CON1 11Bh 19Bh
1Ch 9Ch 11 C h 19Ch
1Dh 9Dh 11 D h 19Dh
1Eh 9Eh ANSEL 11Eh SRCON 19Eh
1Fh 9Fh 11Fh 19Fh
20h
间接寻址
(1)
80h
A0h 120h 1A0h
间接寻址
(1)
100h
10Eh 18Eh
110 h 190h
间接寻址
(1)
(1)
180h
18Dh
3Fh
通用
寄存器
64 字节
Bank 0 Bank 1 Bank 2 Bank 3
注 1 : 非物理寄存器。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 27 页
40h
6Fh EFh 16Fh 1EFh
70h
7Fh FFh 17Fh 1FFh
未实现数据存储器单元,读为 0 。
访问
70h-7Fh
F0h
访问
70h-7Fh
170h
访问
70h-7Fh
1F0h
PIC16F631/677/685/687/689/690
图 2-5 : PIC16F677 特殊功能寄存器
文件 文件 文件 文件
地址 地址 地址 地址
(1)
间接寻址
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
PORTA 05h TRISA 85h PORTA 105h TRISA 185h
PORTB 06h TRISB 86h PORTB 106h TRISB 186h
PORTC 07h TRISC 87h PORTC 107h TRISC 187h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch EEDAT 10Ch EECON1 18Ch
PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2
TMR1L 0Eh PCON 8Eh
TMR1H 0Fh OSCCON 8Fh 10Fh 18Fh
T1CON 10h OSCTUNE 90h
SSPBUF 13h SSPADD
SSPCON 14h SSPSTAT 94h
ADRESH 1Eh ADRESL 9Eh ANSEL 11Eh SRCON 19Eh
ADCON0 1Fh ADCON1 9Fh ANSELH 11Fh
00h
08h 88h 108h 188h
09h 89h 109h 189h
11h 91h 111h 191h
12h 92h 112 h 192h
15h WPUA 95h WPUB 115h 195h
16h IOCA 96h IOCB 116h 196h
17h WDTCON 97h 117h 197h
18h 98h VRCON 118h 198h
19h 99h CM1CON0 119h 199h
1Ah 9Ah CM2CON0 11Ah 19Ah
1Bh 9Bh CM2CON1 11Bh 19Bh
1Ch 9Ch 11 C h 19Ch
1Dh 9Dh 11 D h 19Dh
20h
间接寻址
通用
寄存器
(1)
80h
(2)
93h 113 h 193h
A0h
间接寻址
(1)
100h
10Eh 18Eh
110 h 190h
114 h 194h
120h 1A0h
间接寻址
(1)
(1)
180h
18Dh
19Fh
通用
寄存器
96 字节
7Fh FFh 17Fh 1FFh
Bank 0 Bank 1 Bank 2 Bank 3
未实现数据存储器单元,读为 0 。
注 1 : 非物理寄存器。
2 : 在某些情况下,地址 93h 还访问 SSP 屏蔽 ( SSPMSK )寄存器。
详情请参见寄存器 13-2 和 13-3 。
DS41262C_CN 第 28 页 初稿 2007 Microchip Technology Inc.
32 字节
访问
70h-7Fh
BFh
C0h
EFh 16Fh 1EFh
F0h
访问
70h-7Fh
170h
访问
70h-7Fh
1F0h
PIC16F631/677/685/687/689/690
图 2-6 : PIC16F685 特殊功能寄存器
文件 文件 文件 文件
地址 地址 地址 地址
(1)
间接寻址
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
PORTA 05h TRISA 85h PORTA 105h TRISA 185h
PORTB 06h TRISB 86h PORTB 106h TRISB 186h
PORTC 07h TRISC 87h PORTC 107h TRISC 187h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch EEDAT 10Ch EECON1 18Ch
PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2
TMR1L 0Eh PCON 8Eh EEDATH 10Eh
TMR1H 0Fh OSCCON 8Fh EEADRH 10Fh
T1CON 10h OSCTUNE 90h 11 0 h 190h
TMR2 11h
T2CON 12h PR2 92h
CCPR1L 15h WPUA 95h WPUB 115h
CCPR1H 16h IOCA 96h IOCB 116h 196h
CCP1CON 17h WDTCON 97h
PWM1CON 1Ch 9Ch 11Ch 19Ch
ECCPAS 1Dh
ADRESH 1Eh ADRESL 9Eh ANSEL 11Eh SRCON 19Eh
ADCON0 1Fh ADCON1 9Fh ANSELH 11Fh
00h
08h 88h 108h 188h
09h 89h 109h 189h
13h 93h 113 h 193h
14h 94h 114 h 194h
18h 98h VRCON 118h 198h
19h 99h CM1CON0 119h 199h
1Ah 9Ah CM2CON0 11Ah 19Ah
1Bh 9Bh CM2CON1 11Bh 19Bh
20h
间接寻址
(1)
80h
91h 111h 191h
9Dh 11Dh PSTRCON 19Dh
A0h
间接寻址
(1)
100h
112 h 192h
117 h 197h
120h
间接寻址
(1)
(1)
180h
18Dh
18Eh
18Fh
195h
19Fh
1A0h
通用
通用
寄存器
96 字节
7Fh FFh 17Fh 1FFh
Bank 0 Bank 1 Bank 2 Bank 3
未实现数据存储器单元,读为 0 。
注 1 : 非物理寄存器。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 29 页
寄存器
80 字节
访问
70h-7Fh
EFh 16Fh
F0h
通用
寄存器
80 字节
访问
70h-7Fh
170h
访问
70h-7Fh
1F0h
PIC16F631/677/685/687/689/690
图 2-7 : PIC16F687/PIC16F689 特殊功能寄存器
文件 文件 文件 文件
地址 地址 地址 地址
间接寻址
00h
间接寻址
(1)
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
PORTA 05h TRISA 85h PORTA 105h TRISA 185h
PORTB 06h TRISB 86h PORTB 106h TRISB 186h
PORTC 07h TRISC 87h PORTC 107h TRISC 187h
08h 88h 108h 188h
09h 89h 109h 189h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch EEDAT 10Ch EECON1 18Ch
PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2
TMR1L 0Eh PCON 8Eh EEDATH
TMR1H 0Fh OSCCON 8Fh EEADRH
T1CON 10h OSCTUNE 90h
11h 91h 111h 191h
12h 92h 112 h 192h
SSPBUF 13h SSPADD
SSPCON 14h SSPSTAT 94h 114h 194h
15h WPUA 95h WPUB 115h 195h
16h IOCA 96h IOCB 116h 196h
17h WDTCON 97h 117h 197h
RCSTA 18h TXSTA 98h VRCON 118h
TXREG 19h SPBRG 99h CM1CON0 119h
RCREG 1Ah SPBRGH 9Ah CM2CON0 11Ah 19Ah
1Bh BAUDCTL 9Bh CM2CON1 11Bh 19Bh
1Ch 9Ch 11 C h 19Ch
1Dh 9Dh 11 D h 19Dh
ADRESH 1Eh ADRESL 9Eh ANSEL 11Eh SRCON 19Eh
ADCON0 1Fh ADCON1 9Fh ANSELH 11Fh
20h
通用
寄存器
96 字节
PIC16F689)
7Fh FFh 17Fh 1FFh
70h-7Fh
Bank 0 Bank 1 Bank 2 Bank 3
未实现数据存储器单元,读为 0 。
注 1 : 非物理寄存器。
2 : 在某些情况下,地址 93h 还访问 SSP 屏蔽 ( SSPMSK )寄存器。
详情请参见寄存器 13-2 和 13-3 。
3 : 仅限 PIC16F689 。
通用
寄存器
32 字节
48 字节
(仅限
访问
(1)
80h
间接寻址
(1)
100h
(3)
10Eh 18Eh
(3)
10Fh 18Fh
间接寻址
110 h 190h
(2)
93h 113 h 193h
A0h
120h 1A0h
通用
寄存器
BFh
C0h
80 字节
(仅限
PIC16F689)
EFh
F0h
访问
70h-7Fh
170h
访问
70h-7Fh
(1)
(1)
180h
18Dh
198h
199h
19Fh
1F0h
DS41262C_CN 第 30 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
图 2-8 : PIC16F690 特殊功能寄存器
文件 文件 文件 文件
地址 地址 地址 地址
(1)
间接寻址
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
PORTA 05h TRISA 85h PORTA 105h TRISA 185h
PORTB 06h TRISB 86h PORTB 106h TRISB 186h
PORTC 07h TRISC 87h PORTC 107h TRISC 187h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch EEDAT 10Ch EECON1 18Ch
PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2
TMR1L 0Eh PCON 8Eh EEDATH 10Eh 18Eh
TMR1H 0Fh OSCCON 8Fh EEADRH 10Fh
T1CON 10h OSCTUNE 90h
TMR2 11h 91h 111 h 191h
T2CON 12h PR2 92h
SSPBUF 13h SSPADD
SSPCON 14h SSPSTAT 94h
CCPR1L 15h WPUA 95h WPUB 115h
CCPR1H 16h IOCA 96h IOCB 116h 196h
CCP1CON 17h WDTCON 97h
RCSTA 18h TXSTA 98h VRCON 118h
TXREG 19h SPBRG 99h CM1CON0 119h 199h
RCREG 1Ah SPBRGH 9Ah CM2CON0 11Ah
PWM1CON 1Ch 9Ch 11Ch 19Ch
ECCPAS 1Dh
ADRESH 1Eh ADRESL 9Eh ANSEL 11Eh SRCON 19Eh
ADCON0 1Fh ADCON1 9Fh ANSELH 11Fh
00h
08h 88h 108h 188h
09h 89h 109h 189h
1Bh BAUDCTL 9Bh CM2CON1 11Bh 19Bh
20h
间接寻址
(1)
80h
(2)
93h 113h 193h
9Dh 11Dh PSTRCON 19Dh
A0h
间接寻址
(1)
100h
110h 190h
112h 192h
114h 194h
117h 197h
120h
间接寻址
(1)
(1)
180h
18Dh
18Fh
195h
198h
19Ah
19Fh
1A0h
通用
通用
寄存器
96 字节
7Fh FFh 17Fh 1FFh
Bank 0 Bank 1 Bank 2 Bank 3
未实现数据存储器单元,读为 0 。
注 1 : 非物理寄存器。
2 : 在某些情况下,地址 93h 还访问 SSP 屏蔽 ( SSPMSK )寄存器。
详情请参见寄存器 13-2 和 13-3 。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 31 页
寄存器
80 字节
访问
70h-7Fh
EFh 16Fh
F0h
通用
寄存器
80 字节
访问
70h-7Fh
170h
访问
70h-7Fh
1F0h
PIC16F631/677/685/687/689/690
表 2-1 : PIC16F631/677/685/687/689/690 特殊功能寄存器汇总, BANK 0
地址 名称
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bank 0
00h INDF
01h TMR0
02h PCL
03h STATUS IRP RP1 RP0 TO
04h FSR
05h PORTA
06h PORTB
07h PORTC
08h —
09h —
0Ah PCLATH
寻址此单元使用 FSR 的内容寻址数据存储器 (非物理寄存器)
Timer0 模块寄存器
程序计数器 (Program Counter , PC )的低字节
间接数据寄存器地址指针
(7)
(7)
(7)
— — RA5 RA4 RA3 RA2 RA1 RA0 --xx xxxx 59,201
RB7 RB6 RB5 RB4 — — — — xxxx ---- 69,201
RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx 76,201
未实现
未实现
— — —
程序计数器高 5 位的写缓冲器
PD ZD CC0001 1xxx 36,201
0Bh INTCON GIE PEIE T0IE INTE RABIE T0IF INTF RABIF
0Ch PIR1
0Dh PIR2
0Eh TMR1L
0Fh TMR1H
—A D I F
OSFIF C2IF C1IF EEIF — — — — 0000 ---- 42,201
16 位 TMR1 寄存器最低有效字节的保持寄存器
16 位 TMR1 寄存器最低有效字节的保持寄存器
(4)
10h T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
11h TMR2
12h T2CON
13h SSPBUF
14h SSPCON
15h CCPR1L
16h CCPR1H
17h CCP1CON
18h RCSTA
19h TXREG
1Ah RCREG
1Bh —
1Ch
1Dh
1Eh ADRESH
1Fh ADCON0
(3)
(3)
(5)
(3)
(2)
(2)
(2)
PWM1CON
(3)
ECCPAS
Timer2 模块寄存器
— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 92,201
同步串行端口的接收缓冲器 / 发送寄存器
(5,6)
WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 177,201
捕捉 / 比较 /PWM 寄存器 1 ( LSB)
(3)
捕捉 / 比较 /PWM 寄存器 1 (MSB )
(3)
P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 127,201
SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 159,201
EUSART 发送数据寄存器
EUSART 接收数据寄存器
未实现
(3)
PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 0000 0000 144,201
ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 0000 0000 141,201
(4)
A/D 结果寄存器的高字节
(4)
ADFM VCFG CHS3 CHS2 CHS1 CHS0 GO/DONE ADON 0000 0000 113,201
RCIF
(2)
TXIF
(2)
SSPIF
(5)
CCP1IF
(3)
TMR2IF
(3)
TMR1IF -000 0000 41,201
TMR1CS TMR1ON 0000 0000 88,201
图注: – = 未实现单元读为 0, u = 不变, x = 未知, q = 取值视具体情况而定,阴影 = 未实现
注 1 : MCLR
和 WDT 复位不影响数据锁存器之前的值。 RABIF 位在复位时将清零但若存在不匹配则会再次置 1。
2: 仅限 PIC16F687/PIC16F689/PIC16F690 。
3: 仅限 PIC16F685/PIC16F690 。
4: 仅限 PIC16F677/PIC16F685/PIC16F687/PIC16F689/PIC16F690 。
5: 仅限 PIC16F677/PIC16F687/PIC16F689/PIC16F690 。
6: 当 SSPCON 寄存器的 SSPM<3:0> 位 = 1001 时,任何读取 SSPADD SFR 地址的操作均通过 SSPMSK 寄存器进行。详情请参见
寄存器 13-2 和 13-3 。
7 : 由 ANSEL 和 ANSELH 寄存器控制的具有模拟功能的端口引脚将在复位后立即读为 0 ,即使数据锁存器未定义 ( POR )或不变 (其他
复位)时也是如此。
POR 和
BOR 的值
xxxx xxxx 44,201
xxxx xxxx 81,201
0000 0000 44,201
xxxx xxxx 44,201
---0 0000 44,201
(1)
0000 000x 38,201
xxxx xxxx 86,201
xxxx xxxx 86,201
0000 0000 91,201
xxxx xxxx 178,201
xxxx xxxx 128,201
xxxx xxxx 128,201
0000 0000 151
0000 0000 154
xxxx xxxx 115,201
页
— —
— —
— —
DS41262C_CN 第 32 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
表 2-2 : PIC16F631/677/685/687/689/690 特殊功能寄存器汇总, BANK 1
地址 名称
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bank 1
80h INDF
81h OPTION_REG RABPU
82h PCL
83h STATUS IRP RP1 RP0 TO
84h FSR
85h TRISA
86h TRISB TRISB7 TRISB6 TRISB5 TRISB4
寻址此单元使用 FSR 的内容寻址数据存储器 (非物理寄存器)
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111
程序计数器 ( PC)的低字节
PD ZD CC0001 1xxx 36,201
间接数据寄存器地址指针
— — TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 59,201
— — — — 1111 ---- 70,202
87h TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 76,201
88h —
89h —
8Ah PCLATH
未实现
未实现
— — — 程序计数器高 5 位的写缓冲器 ---0 0000 44,201
8Bh INTCON GIE PEIE T0IE INTE RABIE T0IF INTF RABIF
8Ch PIE1
—A D I E
(4)
8Dh PIE2 OSFIE C2IE C1IE EEIE
8Eh PCON
8Fh OSCCON
90h OSCTUNE
91h —
92h PR2
(3)
93h SSPADD
93h SSPMSK
94h SSPSTAT
95h WPUA
(6)
96h IOCA
97h WDTCON
98h TXSTA
99h SPBRG
(2)
(2)
9Ah SPBRGH
9Bh BAUDCTL
9Ch —
9Dh —
9Eh ADRESL
9Fh ADCON1
(5,7)
(5,7)
(5)
(2)
(2)
(4)
(4)
— — ULPWUE SBOREN — —P O RBOR --01 --qq 43,202
— IRCF2 IRCF1 IRCF0 OSTS HTS LTS SCS -110 q000 48,202
— — — TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 52,202
未实现
Timer2 周期寄存器
同步串行端口 (I 2C 模式)的地址寄存器
MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0 1111 1111 187,202
SMP CKE D/A PSR / WUA BF 0000 0000 176,202
— — WPUA5 WPUA4 — WPUA2 WPUA1 WPUA0 --11 -111 62,202
— — IOCA5 IOCA4 IOCA3 IOCA2 IOCA1 IOCA0 --00 0000 62,202
— — — WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN ---0 1000 209,202
CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 0000 0010 158,202
BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0 0000 0000 161,202
BRG15 BRG14 BRG13 BRG12 BRG11 BRG10 BRG9 BRG8 0000 0000 161,202
ABDOVF RCIDL —S C K PB R G 1 6— WUE ABDEN 01-0 0-00 160,202
未实现
未实现
A/D 结果寄存器的低字节
— ADCS2 ADCS1 ADCS0 — — — — -000 ---- 114 ,20 2
RCIE
(2)
TXIE
(2)
SSPIE
(5)
CCP1IE
(3)
TMR2IE
(3)
TMR1IE -000 0000 39,202
— — — — 0000 ---- 40,202
图注: – = 未实现单元读为 0, u = 不变, x = 未知, q = 取值视具体情况而定,阴影 = 未实现
注 1 : MCLR
和 WDT 复位不影响数据锁存器之前的值。 RABIF 位在复位时将清零但若存在不匹配则会再次置 1 。
2: 仅限 PIC16F687/PIC16F689/PIC16F690 。
3: 仅限 PIC16F685/PIC16F690 。
4: 仅限 PIC16F677/PIC16F685/PIC16F687/PIC16F689/PIC16F690。
5: 仅限 PIC16F677/PIC16F687/PIC16F689/PIC16F690 。
6: 当引脚在配置字中被配置为 MCLR
时 RA3 上拉被使能。
7: 只在 SSPCON 寄存器位 SSPM<3:0> = 1001 时才可访问。
POR 和 BOR
的值
xxxx xxxx 44,201
0000 0000 44,201
xxxx xxxx 44,201
— —
— —
(1)
0000 000x 38,201
— —
1111 1111 91,202
0000 0000 184,202
— —
— —
xxxx xxxx 11 5,2 02
37,201
页
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 33 页
PIC16F631/677/685/687/689/690
表 2-3 : PIC16F631/677/685/687/689/690 特殊功能寄存器汇总, BANK 2
地址 名称
Bank 2
100h INDF
101h TMR0
102h PCL
103h STATUS IRP RP1 RP0 TO
104h FSR
105h PORTA
106h PORTB
107h PORTC
108h —
109h —
10Ah PCLATH
10Bh INTCON GIE PEIE T0IE INTE RABIE T0IF INTF RABIF
10Ch
10Dh
10Eh EEDATH
10Fh EEADRH
110 h —
111h —
112 h —
113 h —
114 h —
115h WPUB WPUB7 WPUB6 WPUB5 WPUB4
116h IOCB IOCB7 IOCB6 IOCB5 IOCB4
117 h —
118h VRCON C1VREN C2VREN VRR VP6EN VR3 VR2 VR1 VR0 0000 0000 106,202
119h CM1CON0 C1ON C1OUT
11Ah CM2CON0 C2ON C2OUT
11Bh CM2CON1 MC1OUT MC2OUT
11C h —
11D h —
11Eh ANSEL ANS7 ANS6 ANS5 ANS4 ANS3
11Fh ANSELH
图注: – = 未实现单元读为 0, u = 不变, x = 未知, q = 取值视具体情况而定,阴影 = 未实现
注 1 : MCLR
(4)
(4)
(4)
EE DAT EEDAT 7 EED AT6 EED AT5 EED AT4 EED AT3 EE DAT2 E EDAT1 E EDAT 0 0000 0000 120,202
EEADR EEADR7
(2)
(2)
(3)
2: 仅限 PIC16F685/PIC16F689/PIC16F690 。
3: 仅限 PIC16F677/PIC16F685/PIC16F687/PIC16F689/PIC16F690 。
4: 由 ANSEL 和 ANSELH 寄存器控制的具有模拟功能的端口引脚将在复位后立即读为 0 ,即使数据锁存器未定义 (POR )或不变 (其他复
位)时也是如此。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
寻址此单元使用 FSR 的内容寻址数据存储器 (非物理寄存器)
Timer0 模块寄存器
程序计数器 ( PC)的低字节
PD ZD CC0001 1xxx 36,201
间接数据寄存器地址指针
— — RA5 RA4 RA3 RA2 RA1 RA0 --xx xxxx 59,201
RB7 RB6 RB5 RB4 — — — — xxxx ---- 69,201
RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx 76,201
未实现
未实现
— — —
(3)
EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0 0000 0000 120,202
— —
— — — —
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
— — — — ANS11 ANS10 ANS9 ANS8 ---- 1111 115,202
和 WDT 复位不影响数据锁存器之前的值。 RABIF 位在复位时将清零但若存在不匹配则会再次置 1。
EEDATH5 EEDATH4 EEDATH3 EEDATH2 EEDATH1 EEDATH0
C1OE C1POL — C1R C1CH1 C1CH0 0000 -000 98,202
C2OE C2POL — C2R C2CH1 C2CH0 0000 -000 99,202
程序计数器高 5 位的写缓冲器
EEADRH3 EEADRH2 EEADRH1 EEADRH0
— — — — 1111 ---- 70,202
— — — — 0000 ---- 70,202
— — — — T1GSS C2SYNC 00-- --10 101,202
(3)
ANS2
(3)
ANS1 ANS0 1111 1111 61,202
POR 和
BOR 的值
xxxx xxxx 44,201
xxxx xxxx 81,201
0000 0000 44,201
xxxx xxxx 44,201
— —
— —
---0 0000 44,201
(1)
0000 000x 38,201
--00 0000 120,202
---- 0000 120,202
— —
— —
— —
— —
— —
— —
— —
— —
页
DS41262C_CN 第 34 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
表 2-4 : PIC16F631/677/685/687/689/690 特殊功能寄存器汇总, BANK 3
地址 名称
Bank 3
180h INDF
181h OPTION_REG RABPU
182h PCL
183h STATUS IRP RP1 RP0 TO
184h FSR
185h TRISA
186h TRISB TRISB7 TRISB6 TRISB5 TRISB4
187h TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 76,202
188h —
189h —
18Ah PCLATH
18Bh INTCON GIE PEIE T0IE INTE RABIE T0IF INTF RABIF
18Ch EECON1 EEPGD
18Dh EECON2
18Eh —
18Fh —
190h —
191h —
192h —
193h —
194h —
195h —
196h —
197h —
198h —
199h —
19Ah —
19Bh —
19Ch —
19Dh PSTRCON
19Eh SRCON SR1 SR0 C1SEN C2REN PULSS PULSR
19Fh —
图注: – = 未实现单元读为 0, u = 不变, x = 未知, q = 取值视具体情况而定,阴影 = 未实现
注 1 : MCLR
2: 仅限 PIC16F685/PIC16F690 。
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
程序计数器 ( PC)的低字节
PD ZD CC0001 1xxx 36,201
间接数据存储器地址指针
— — TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 59,201
— — — — 1111 ---- 70,202
未实现
未实现
— — — 程序计数器高 5 位的写缓冲器 ---0 0000 44,201
(2)
— — — WRERR WREN WR RD x--- x000 121,202
EEPROM 控制寄存器 2 (非物理寄存器)
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
未实现
(2)
— — — STRSYNC STRD STRC STRB STRA ---0 0001 145,202
— — 0000 00-- 103,202
未实现
和 WDT 复位不影响此前的取值数据锁存器。 RABIF 位在复位时清零但若存在不匹配则将置 1。
POR 和
BOR 的值
xxxx xxxx 44,201
0000 0000 44,201
xxxx xxxx 44,201
— —
— —
(1)
0000 000x
---- ---- 119,202
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
— —
37,201
38,201
页
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 35 页
PIC16F631/677/685/687/689/690
2.2.2.1 STATUS 寄存器
如寄存器 2-1 所示,状态 (STATUS)寄存器包括:
•ALU的算术运算结果状态位
• 复位状态位
• 数据存储 ( GPR 和 SFR)的存储区选择位
状态寄存器与其他寄存器一样,可作为任何指令的目标
寄存器。如果一条影响 Z 、 DC 或 C 位的指令以状态寄
存器为目标寄存器,那么对这三个位的写操作将被禁
止。这些位根据器件逻辑来置 1 或清零。而且, TO
标志位均为不可写位。因此,当执行一条将状态寄
PD
存器作为目标寄存器的指令时,运行结果可能会与预想
的不同。
和
例如,指令 CLRF STATUS 将会清除状态寄存器中的高
三位,并将 Z 标志位置 1 。这将使状态寄存器中的值成
为“000u u1uu”(其中 u = 不变)。
因此,若要改变状态寄存器的值,建议使用 BCF 、BSF、
SWAPF 和MOVWF 指令,因为这些指令将不会影响任何状
态位。关于其他不会影响状态位的指令,请参见第 15.0
节 “指令集汇总”。
注 1 : 在减法运算时, C 和 DC 位分别作为借位
位和辅助借位位。请参见SUBLW 和 SUBWF
指令中的示例。
寄存器 2-1 : STATUS:状态寄存器
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
IRP RP1 RP0 TO
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
PD ZD C
(1)
(1)
C
bit 7
bit 6-5
bit 4
bit 3
bit 2
bit 1
bit 0
IRP:寄存器存储区选择位 (用于间接寻址)
1 = Bank 2 和 3 (100h - 1FFh )
0 = Bank 0 和 1 (00h - FFh )
RP<1:0>:寄存器存储区选择位 (用于直接寻址)
00 = Bank 0 (00h - 7Fh )
01 = Bank 1 (80h - FFh )
10 = Bank 2 (100h - 17Fh )
11 = Bank 3 (180h - 1FFh )
TO
:超时位
1 = 在上电复位、执行 CLRWDT 或 SLEEP 指令后
0 = 产生了 WDT 超时
PD:掉电位
1 = 上电或执行 CLRWDT 指令后
0 = 执行 SLEEP 指令
Z:零标志位
1 = 算术运算或者逻辑运算的结果是 0
0 = 算术运算或者逻辑运算的结果不是 0
DC :辅助进位 / 借位位( ADDWF、 ADDLW 、 SUBLW 和 SUBWF 指令)
1 = 运算结果的低 4 位向高 4 位产生进位
0 = 运算结果的低 4 位向高 4 位没有产生进位
C:进位 / 借位
1 = 运算结果产生来自最高位的进位
0 = 运算结果没有产生来自最高位的进位
(1)
位
(ADDWF 、 ADDLW 、 SUBLW 和 SUBWF 指令)
(1)
(1)
注 1 : 对于借位,极性相反。减法操作的执行是通过加上第二个操作数的二进制补码 (Two's Complement )来
实现的。对于移位指令 (RRF 和 RLF ),是把源寄存器的最高位或最低位放入 C 中。
DS41262C_CN 第 36 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
2.2.2.2 选项寄存器
选项 (OPTION )寄存器 (如寄存器 2-2 所示)是可读
写寄存器,有各种控制位,用来配置以下各项:
• Timer0/WDT 预分频器
• 外部 RA2/INT 中断
•Timer0
•PORTA的弱上拉 / 下拉
寄存器 2-2 : OPTION_REG :选项寄存器
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
RABPU
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
INTEDG T0CS T0SE PSA PS2 PS1 PS0
注: 要使 TMR0 获得 1:1 的预分频比,可将 PSA
位(OPTION_REG<3>)置为 1 ,以将预
分频器分配给 WDT 。请参见第 6.3 节
“Timer1 预分频器”。
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2-0
RABPU
:PORTA/PORTB 上拉使能位
1 = 禁止 PORTA/PORTB 上拉
0 = 通过单独的端口锁存值使能 PORTA/PORTB 上拉
INTEDG:中断触发边沿选择位
1 = RA2/INT 引脚的上升沿触发中断
0 = RA2/INT 引脚的下降沿触发中断
T0CS: TMR0 时钟源选择位
1 = RA2/T0CKI 引脚上的电平跳变
0 = 内部指令周期时钟 (F
OSC/4)
T0SE : TMR0 信号源边沿选择位
1 = 在 RA2/T0CKI 引脚信号从高至低跳变时,递增计数
0 = 在 RA2/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
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 37 页
PIC16F631/677/685/687/689/690
2.2.2.3 INTCON 寄存器
INTCON 寄存器(如寄存器 2-3 所示)是可读写的寄存
器,它包含 TMR0 寄存器溢出、 PORTA 电平变化和外
部RA2/AN2/T0CKI/INT/C1OUT 引脚中断等各种使能控
制位和标志位。
注: 当中断条件满足时,无论相应中断允许位
或 INTCON 寄存器中的全局中断允许位
GIE 状态如何,中断标志位将被置 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-x
GIE PEIE T0IE INTE RABIE
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
注 1: IOCA 或 IOCB 寄存器也必须被使能。
2: 当 Timer0 计数出现计满返回时,T0IF 位将被置 1 。Timer0 计数值在复位时不变,而且应在清除 T0IF 位之
3: 包含 ULPWU 中断。
GIE:全局中断允许位
1 = 使能所有非屏蔽中断
0 = 禁止所有中断
PEIE:外设中断允许位
1 = 使能所有非屏蔽外设中断
0 = 禁止所有外设中断
T0IE: Timer0 溢出中断允许位
1 = 使能 Timer0 中断
0 = 禁止 Timer0 中断
INTE: RA2/INT 外部中断允许位
1 = 使能 RA2/INT 外部中断
0 = 禁止 RA2/INT 外部中断
RABIE: PORTA/PORTB 电平变化中断允许位
1 = 使能 PORTA/PORTB 电平变化中断
0 = 禁止 PORTA/PORTB 电平变化中断
T0IF: Timer0 溢出中断标志位
1 = Timer0 寄存器溢出 (必须用软件清零)
0 = Timer0 寄存器没有溢出
INTF: RA2/INT 外部中断标志
1 = RA2/INT 外部中断已经发生 (必须用软件清零)
0 = RA2/INT 外部中断没有发生
RABIF: PORTA/PORTB 电平变化中断标志位
1 = 至少有一个 PORTA 或 PORTB 通用 I/O 引脚状态发生变化时 (必须用软件清零)
0 = PORTA 或 PORTB 通用 I/O 引脚状态均未发生变化
前对其进行初始化。
(2)
(1,3)
(1,3)
T0IF
(2)
INTF RABIF
DS41262C_CN 第 38 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
2.2.2.4 PIE1 寄存器
PIE1 寄存器包含中断允许位,如寄存器 2-4 所示。
寄存器 2-4 : PIE1 :外设中断允许寄存器 1
U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
—
ADIE
(5)
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
RCIE
(3)
TXIE
(3)
注: INTCON 寄存器中的 PEIE 位必须置1 以允
许任何外设中断。
SSPIE
(4)
CCP1IE
(2)
TMR2IE
(1)
TMR1IE
bit 7
bit 6
未实现:读为 0
ADIE: A/D 转换器 (ADC ) 中断允许位
(5)
1 = 允许 ADC 中断
0 = 禁止 ADC 中断
bit 5
RCIE: EUSART 接收中断允许位
(3)
1 = 允许 EUSART 接收中断
0 = 禁止 EUSART 接收中断
bit 4
TXIE: EUSART 发送叫断允许位
(5)
1 = 允许 EUSART 发送中断
0 = 禁止 EUSART 发送中断
bit 3
SSPIE: 同步串行端口 ( SSP)中断允许位
(4)
1 = 允许 SSP 中断
0 = 禁止 SSP 中断
bit 2
CCP1IE: CCP1 中断允许位
(2)
1 = 允许 CCP1 中断
0 = 禁止 CCP1 中断
bit 1
TMR2IE: Timer2 与 PR2 匹配中断允许位
(1)
1 = 允许 Timer2 与 PR2 匹配中断
0 = 禁止 Timer2 与 PR2 匹配中断
bit 0
TMR1IE : Timer1 溢出中断允许位
1 = 允许 Timer1 溢出中断
0 = 禁止 Timer1 溢出中断
注 1: 仅限 PIC16F685/PIC16F690 。
2: 仅限 PIC16F685/PIC16F689/PIC16F690 。
3: 仅限 PIC16F687/PIC16F689/PIC16F690 。
4: 仅限 PIC16F677/PIC16F687/PIC16F689/PIC16F690 。
5: 仅限 PIC16F677/PIC16F685/PIC16F687/PIC16F689/PIC16F690 。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 39 页
PIC16F631/677/685/687/689/690
2.2.2.5 PIE2 寄存器
PIE2 寄存器包含中断允许位,如寄存器 2-5 所示。
寄存器 2-5 : PIE2 :外设中断允许寄存器 2
R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0
OSFIE C2IE C1IE EEIE
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
注: INTCON 寄存器的 PEIE 位必须置 1 以允
许任何外设中断。
— — — —
bit 7
bit 6
bit 5
bit 4
bit 3-0
OSFIE:振荡器故障中断允许位
1 = 允许振荡器故障中断
0 = 禁止振荡器故障中断
C2IE:比较器 C2 中断允许位
1 = 允许比较器 C2 中断
0 = 禁止比较器 C2 中断
C1IE:比较器 C1 中断允许位
1 = 允许比较器 C1 中断
0 = 禁止比较器 C1 中断
EEIE: EE 写操作中断允许位
1 = 允许写操作中断
0 = 禁止写操作中断
未实现: 读为 0
DS41262C_CN 第 40 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
2.2.2.6 PIR1 寄存器
PIR1 寄存器包含各种中断标志位,如寄存器 2-6 所示。
寄存器 2-6 : PIR1 :外设中断请求寄存器 1
U-0 R/W-0 R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0
(5)
—
ADIF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
RCIF
(3)
TXIF
(3)
注: 当中断条件满足时,无论相应中断允许位
或 INTCON 寄存器中的全局中断允许位
GIE 状态如何,中断标志位将被置 1 。用
户程序应确保在重新允许中断之前,相应
的中断标志位已被清零。
SSPIF
(4)
CCP1IF
(2)
TMR2IF
(1)
TMR1IF
bit 7
bit 6
未实现: 读为 0
ADIF: A/D 转换器中断标志位
(5)
1 = A/D 转换完成 (必须用软件清零)
0 = A/D 转换尚未完成或未启动
bit 5
RCIF: EUSART 接收中断标志位
(3)
1 = EUSART 接收缓冲器满 (通过读取 RCREG 清零)
0 = EUSART 接收缓冲器不满
bit 4
TXIF: EUSART 发送中断标志位
(3)
1 = EUSART 发送缓冲器为空 (通过写入 TXREG 清零)
0 = EUSART 发送缓冲器满
bit 3
SSPIF:同步串行端口 (SSP )中断标志位
(4)
1 = 发送 / 接收完成 (必须用软件清零)
0 = 等待发送 / 接收
bit 2
CCP1IF: CCP1 中断标志位
(2)
捕捉模式:
1 = 发生 TMR1 寄存器捕捉 (必须用软件清零)
0 = 未发生 TMR1 寄存器捕捉
比较模式:
1 = 发生 TMR1 寄存器比较匹配 (必须用软件清零)
0 = 未发生 TMR1 寄存器比较匹配
PWM
模式:
此模式下未使用
bit 1
TMR2IF: Timer2 与 PR2 匹配中断标志位
(1)
1 = 发生 Timer2 与 PR2 匹配 (必须用软件清零)
0 = 未发生 Timer2 与 PR2 匹配
bit 0
TMR1IF : Timer1 溢出中断标志位
1 =TMR1寄存器溢出 (必须用软件清零)
0 =TMR1寄存器未溢出
注 1: 仅限 PIC16F685/PIC16F690 。
2: 仅限 PIC16F685/PIC16F689/PIC16F690 。
3: 仅限 PIC16F687/PIC16F689/PIC16F690 。
4: 仅限 PIC16F677/PIC16F687/PIC16F689/PIC16F690 。
5: 仅限 PIC16F677/PIC16F685/PIC16F687/PIC16F689/PIC16F690 。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 41 页
PIC16F631/677/685/687/689/690
2.2.2.7 PIR2 寄存器
PIR2 寄存器包含各种中断标志位,如寄存器 2-7 所示。
寄存器 2-7 : PIR2 :外设中断请求寄存器 2
R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0
OSFIF C2IF C1IF EEIF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
注: 当中断条件满足时,无论相应中断允许位
或 INTCON 寄存器中的全局中断允许位
GIE 状态如何,中断标志位将被置 1 。用
户程序应确保在重新允许中断之前,相应
的中断标志位已被清零。
— — — —
bit 7
bit 6
bit 5
bit 4
bit 3-0
OSFIF:振荡器故障中断标志位
1 = 系统振荡器故障,时钟输入变更为 INTOSC (必须用软件清零)
0 = 系统时钟正常工作
C2IF:比较器 C2 中断标志位
1 = 比较器输出 (C2OUT 位)发生变化 (必须用软件清零)
0 = 比较器输出 (C2OUT 位)不变
C1IF:比较器 C1 中断标志位
1 = 比较器输出 (C1OUT 位)发生变化 (必须用软件清零)
0 = 比较器输出 (C1OUT 位)不变
EEIF: EE 写操作中断标志位
1 = 写操作完成 (必须用软件清零)
0 = 写操作尚未完成或未启动
未实现: 读为 0
DS41262C_CN 第 42 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
2.2.2.8 PCON 寄存器
电源控制 (PCON )寄存器 (见寄存器 2-8 )包含各种
区分以下复位的标志位:
复位
)
)
(1)
— —P O RBOR
• 上电复位 ( POR
• 欠压复位 ( BOR
• 看门狗复位 ( WDT)
• 外部 MCLR
PCON寄存器还控制超低功耗唤醒和 BOR 的软件使能。
寄存器 2-8 : PCON :电源控制寄存器
U-0 U-0 R/W-0 R/W-1 U-0 U-0 R/W-0 R/W-x
— — ULPWUE SBOREN
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-6
bit 5
bit 4
bit 3-2
bit 1
bit 0
注 1 : 配置字寄存器中的 BOREN<1:0> = 01 以使此位控制 BOR
未实现:读为 0
ULPWUE :超低功耗唤醒使能位
1 = 使能超低功耗唤酷醒
0 = 禁止超低功耗唤酷醒
SBOREN:软件 BOR 使能位
1 = 使能 BOR
0 = 禁止 BOR
未实现:读为 0
POR
:上电复位状态位
1 = 未发生上电复位
0 = 发生了上电复位 (发生上电复位后必须用软件置 1 )
BOR:欠压复位状态位
1 = 未发生欠压复位
0 = 发生了欠压复位 (欠压复位发生后必须用软件置 1 )
(1)
。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 43 页
PIC16F631/677/685/687/689/690
2.3 PCL 和 PCLATH
程序计数器 ( PC)为 13 位宽。其低 8 位来自可读写的
PCL 寄存器,高 5 位(PC<12:8>)来自 PCLATH,不
能直接读写。只要发生复位,PC 就将被清零。图 2-9 显
示了装载 PC 值的两种情形。图 2-9 上方的例子说明在写
PCL (PCLATH<4:0> → PCH )时是如何装载 PC 的。
图 2-9 下方的例子说明了在执行 CALL 或 GOTO 指令期间
(PCLATH<4:3> → PCH),是如何装载 PC 的。
图 2-9 : 在不同情况下装载 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
OPCODE<10:0>
2.3.2 堆栈
PIC16F631/677/685/687/689/690 器件具有 8级 x13位
宽的硬件堆栈 (见图 2-2 和 2-3 )。堆栈空间既不占用
程序存储区空间,也不占用数据存储区空间,而且堆栈
指针是不可读写的。当执行 CALL 指令或当中断导致程
序跳转时, PC 值将被压入 (PUSH )堆栈。而在执行
RETURN 、RETLW 或RETFIE 指令时,堆栈中的断点地址
将从堆栈中弹出(POP )到 PC 中。PCLATH不受 PUSH
或 POP 操作的影响。
堆栈的工作原理犹如循环缓冲区。这意味着当堆栈压栈
8 次后,第 9 次压栈的数值将会覆盖第一次压栈时所保
存的数值,而第十次压栈数值将覆盖第二次压栈时保存
的数值,以后依次类推。
注 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-10 所示。
例 2-1 给出了一个使用间接寻址将 RAM 地址单元 20h-
2Fh 清零的简单程序。
例 2-1 : 间接寻址
MOVLW 0x20 ;initialize pointer
MOVWF FSR ;to RAM
NEXT CLRF INDF ;clear INDF register
INCF FSR ;inc pointer
BTFSS FSR,4 ;all done?
GOTO NEXT ;no clear next
CONTINUE ;yes continue
DS41262C_CN 第 44 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
图 2-10:直 接 / 间接寻址 PIC16F631/677/685/687/689/690
RP1 RP0 6
来自操作码
0
间接寻址 直接寻址
IRP 文件选择寄存器
7
0
存储区选择 位置选择
00 01 10 11
00h
数据存储器
7Fh
Bank 0 Bank 1 Bank 2 Bank 3
存储器映射的详情请参见图 2-6 , 2-7 和 2-8 。
存储区选择
180h
1FFh
位置选择
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 45 页
PIC16F631/677/685/687/689/690
注:
DS41262C_CN 第 46 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
3.0 振荡器模式 (带故障保护时钟监
视器)
3.1 概述
振荡器模块具有多种时钟源和选择特性,广泛使用于各
种应用中,同时最大限度地发挥应用性能并降低功耗。
图 3-1 为振荡器模块的框图。
时钟源可配置为来自外部振荡器、石英晶体谐振器、陶
瓷谐振器以及阻容(Resistor-Capacitor ,RC )电路。此
外,系统时钟源可配置为两个内部振荡器之一,并通过
软件来选择速度。其他时钟特性包括:
• 可通过软件选择外部或内部系统时钟源。
• 双速启动模式,最大限度地缩短外部振荡器起振与
代码执行之间的延时。
• 故障保护时钟监控器 ( Fail-Safe Clock Monitor,
FSCM),用来检测外部时钟源 (LP、 XT、 HS、
EC 或 RC 模式)故障以及自动切换到内部振荡
器。
图 3-1 : PIC ® MCU 时钟源框图
外部振荡器
OSC2
振荡器模块可配置为以下 8 种时钟模式之一。
1. EC——外部时钟, I/O 在 OSC2/CLKOUT 上。
2. LP—— 32 kHz 低功耗晶振模式。
3. XT——中等增益晶振或陶瓷谐振振荡器模式。
4. HS——高增益晶振或陶瓷谐振器模式。
5. RC——外部阻容(RC),F
OSC/4 输出到 OSC2/
CLKOUT。
6. RCIO——外部阻容,I/O 在 OSC2/CLKOUT 上。
7. INTOSC——内部振荡器,F
OSC/4 输出到 OSC2
且 I/O 在 OSC1/CLKIN 上。
8. INTOSCIO——内部振荡器, I/O 在 OSC2/
CLKOUT 和 OSC1/CLKIN 上。
通过配置字寄存器 (CONFIG )的 FOSC<2:0> 位来配
置时钟源模式。内部时钟可用两个内部振荡器产生。
HFINTOSC 是经过校准的高频振荡器。LFINTOSC 是未
经校准的低频振荡器。
FOSC<2:0>
(配置字寄存器)
SCS<0>
( OSCCON 寄存器)
OSC1
内部振荡器
HFINTOSC
8 MHz
LFINTOSC
31 kHz
休眠
后分频器
IRCF<2:0>
( OSCCON 寄存器)
8 MHz
4 MHz
2 MHz
1 MHz
500 kHz
250 kHz
125 kHz
31 kHz
111
110
101
100
011
010
001
000
LP, XT, HS, RC, RCIO, EC
MUX
MUX
INTOSC
上电延时定时器(PWRT )
看门狗定时器(WDT )
故障保护时钟监控器(FSCM )
系统时钟
(CPU 和外设)
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 47 页
PIC16F631/677/685/687/689/690
3.2 振荡器控制
振荡器控制 (OSCCON )寄存器 (图 3-1 )控制系统时
钟和频率选择等选项。 OSCCON 寄存器包含以下位:
• 频率选择位 ( IRCF)
• 频率状态位 ( HTS, LTS)
• 系统时钟控制位 ( OSTS, SCS)
寄存器 3-1 : OSCCON :振荡器控制寄存器
U-0 R/W-1 R/W-1 R/W-0 R-1 R-0 R-0 R/W-0
— IRCF2 IRCF1 IRCF0 OSTS
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
(1)
HTS LTS SCS
bit 7
bit 6-4
bit 3
bit 2
bit 1
bit 0
注 1 : 双速启动且选取 LP 、 XT 或 HS 为振荡器模式时,或者故障保护模式使能时,该位将复位为 0 。
未实现:读为 0
IRCF<2:0> :内部振荡器频率选择位
000 = 31 kHz
001 = 125 kHz
010 = 250 kHz
011 = 500 kHz
100 = 1MHz
101 = 2MHz
110 = 4MHz(缺省值)
111 = 8MHz
OSTS:振荡器起振超时状态位
1 = 器件运行在 FOSC<2:0> 定义的外部时钟之下
0 = 器件运行在内部振荡器之下 (HFINTOSC 或 LFINTOSC )
HTS: HFINTOSC (高频—— 8MHz到 125 kHz)状态位
1 =HFINTOSC稳定
0 =HFINTOSC不稳定
LTS : LFINTOSC (低频—— 31 kHz)状态位
1 =LFINTOSC稳定
0 =LFINTOSC不稳定
SCS:系统时钟选择位
1 = 内部振荡器用于系统时钟
0 = 时钟源由 FOSC<2:0> 决定
(1)
DS41262C_CN 第 48 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
3.3 时钟源模式
时钟源模式可分为外部和内部模式。
• 外部时钟模式依靠外部电路提供时钟源。例子有:
振荡器模块 (EC 模式)、石英晶体谐振器或陶瓷
谐振器 (LP 、 XT 和 HS 模式)以及阻容 (RC )
模式电路。
• 内部时钟源内置于振荡器模块中。振荡器模块有两
个内部振荡器,一个是 8MHz高频内部振荡器
(HFINTOSC ),另一个是 31 kHz 低频内部振荡
器(LFINTOSC)。
可通过 OSCCON 寄存器的系统时钟选择 (SCS )位,
在外部或内部时钟源之间选择系统时钟。欲了解更多信
息,请参见第 3.6 节 “时钟切换”)。
3.4 外部时钟模式
3.4.1 振荡器起振定时器 (OST )
如果振荡器模块配置为 LP 、 XT 或 HS 模式,振荡器起
振定时器 (OST )对来自 OSC1 的振荡计数 1024 次。
这发生在上电复位 (POR )之后以及上电延时定时器
(PWRT )延时结束 (如果配置了)时,或从休眠中唤
醒后。在此期间,程序计数器不递增,程序执行暂停。
OST 确保使用石英晶体谐振器或陶瓷谐振器的振荡器
电路已经启动并向振荡器模块提供稳定的系统时钟信
号。当在时钟源之间切换时,需要一定的延时以使新时
钟稳定。表 3-1 给出了振荡器延时的例子。
为了使外部振荡器起振和代码执行之间的延时最小,可
选择双速时钟启动模式 (见第 3.7 节 “双速时钟启动
模式”)。
表 3-1 : 振荡器延时示例
切换自 切换到 频率 振荡器延时
休眠 /POR
休眠 /POR EC , RC DC - 20 MHz 双周期
LFINTOSC (31 kHz ) EC , RC DC - 20 MHz 每次一周期
休眠 /POR LP , XT , HS 32 kHz 到 20 MHz 1024 个时钟周期 (OST )
LFINTOSC (31 kHz )
注 1 : 5ms到 10 ms 起振延时是基于 1MHz系统时钟得出的。
LFINTOSC
HFINTOSC
HFINTOSC
31 kHz
125 kHz 到 8MHz
125 kHz 到 8MHz 1µs (近似值)
5 µ s-10 µ s (近似值) CPU 启动
(1)
3.4.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
PIC® MCU
OSC2/CLKOUT
(1)
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 49 页
PIC16F631/677/685/687/689/690
3.4.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)
至内部
逻辑
休眠
注 1 : 石英晶振的特性随类型、封装和制造商而
变化。要了解规格说明和推荐应用,应查阅
制造商提供的数据手册。
2 : 应始终验证振荡器在应用预期的 V
DD 和温
度范围内的性能。
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)
(2)
R
F
至内部
逻辑
Sleep
OSC2/CLKOUT
C2
注 1 : 低驱动电平的石英晶振可能需要串联一个电阻
(R
2: R
(1)
R
S
S)。
F 的值根据所选的振荡模式变化 (典型值在
2MΩ 到 10 M Ω 之间)。
OSC2/CLKOUT
(
C2
陶瓷
谐振器
注 1 :低驱动电平的陶瓷谐振器可能需要串联一个电
阻(R
F 的值根据所选的振荡模式变化 (典型值在
2 : R
2MΩ 到 10 M Ω 之间)。
3 :要使陶瓷谐振器正常工作,可能需要并联一个
反馈电阻 (R
1)
RS
S)。
P)(典型值 1MΩ)。
DS41262C_CN 第 50 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
3.4.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
F
OSC/4 或
(2)
I/O
建议值: 10 k Ω ≤ REXT ≤ 100 k Ω , <3V
注 1 : 该引脚的其他功能列在第 1.0 节 “器件概述”
中。
2 : 输出取决于 RC 或 RCIO 时钟模式。
OSC2/CLKOUT
3 kΩ ≤ R
C
EXT > 20 pF, 2-5V
在 RCIO 模式下, RC 电路连接到 OSC1 。 OSC2 成为
额外的通用 I/O 引脚。 I/O 引脚成为 PORTA 的 bit 4
(RA4 )。图 3-6 给出了 RCIO 模式的连接图。
RC 振荡器频率是供电电压、电阻(R
EXT)值以及工作温度的函数。影响振荡器频率的其
(C
他因素有:
• 电压门限值变化
• 元件容差
• 不同封装的电容
用户还应考虑因所使用的外部 RC 元件的容差而导致的
差异。
PIC® MCU
内部
时钟
(1)
EXT ≤ 100 kΩ, 3-5V
EXT)和电容
3.5 内部时钟模式
振荡器模块有两个独立的内部振荡器,可配置或选取为
系统时钟源。
1. HFINTOSC(高频内部振荡器)出厂时已校准,
工作频率为 8MHz。使用 OSCTUNE 寄存器
(寄存器3-1 ),用户可通过软件调整HFINTOSC
的频率,调整范围为 ±12% 。
2. LFINTOSC(低频内部振荡器)未经校准,工作
频率为 31 kHz 。
通过软件对 OSCCON 寄存器的内部振荡器频率选择位
IRCF<2:0> 进行操作,可选择系统时钟速度。
可通过 OSCCON 寄存器的系统时钟选择 (SCS )位,
在外部或内部时钟源之间选择系统时钟 (见第 3.6 节
“时钟切换”)。
3.5.1 INTOSC 和 INTOSCIO 模式
当在配置字寄存器 (CONFIG)中使用振荡器选择位
FOSC<2:0> 设置器件时,在 INTOSC 和 INTOSCIO 模
式下将内部振荡器配置为系统时钟源。
在 INTOSC 模式下, OSC1/CLKIN 可用作通用 I/O 。
OSC2/CLKOUT 输出所选内部振荡器频率的 4 分频。
CLKOUT 信号可用来为外部电路、同步、校准、测试或
其他应用需求提供时钟。
在INTOSCIO 模式下,OSC1/CLKIN和 OSC2/CLKOUT
引脚可用作通用 I/O 。
3.5.2 HFINTOSC
高频内部振荡器 ( HFINTOSC)是出厂时已校准的
8MHz 内部时钟源。使用 OSCTUNE 寄存器
(寄存器 3-2 ),可通过软件调整 HFINTOSC 的频率,
调整范围约为 ±12% 。
HFINTOSC 的输出连接到后分频器和多路复用器 (见
图 3-1 )。使用 OSCCON 寄存器的 IRCF<2:0> 位,可
通过软件选择七个频率之一(见第 3.5.4 节 “频率选择
位(IRCF)”)。
将 OSCCON 寄存器的 ICRF<2:0> 位设置为 ≠ 000 选择
8MHz 到 125 kHz 之间的任一频率,可使能
HFINTOSC。然后将 OSCCON 寄存器的系统时钟源
(SCS )位置 1 ,或通过将配置字寄存器 (CONFIG )
中的 IESO 置 1 使能双速启动。
OSCCON 寄存器的 HF 内部振荡器 (HTS )位用于显
示 HFINTOSC 是否稳定。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 51 页
PIC16F631/677/685/687/689/690
3.5.2.1 OSCTUNE 寄存器
HFINTOSC 在出厂时已校准,但可通过在软件中写入
OSCTUNE 寄存器 (寄存器 3-2)来进行调节。
OSCTUNE 寄存器的调节范围为 ±12%。 OSCTUNE 寄
存器的缺省值为 0 。该值是一个 5 位的 2 的补码。由于
制造工艺的差异,可能无法确定单调性和频率步进。
当 OSCTUNE 寄存器被修改时, HFINTOSC 频率将开
始转变为新频率。转变期间,代码将继续执行。是否已
发生频率转变并无明确的指示。
OSCTUNE 不影响LFINTOSC 频率。依赖于 LFINTOSC
时钟源频率的功能,如上电延时定时器 (PWRT )、看
门狗定时器 (WDT )、故障保护时钟监控器 (FSCM )
不
以及外设等,其工作
受频率改变的影响。
寄存器 3-2 : 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
UN<4:0> :频率调节位
01111 = 最大频率
01110 =
•
•
•
00001 =
00000 = 振荡器模块运行在经过校准的频率上。
11111 =
•
•
•
10000 = 最小频率
DS41262C_CN 第 52 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
3.5.3 LFINTOSC
低频内部振荡器 (LFINTOSC )是未经校准的 31 kHz
内部时钟源。
LFINTOSC 的输出连接到后分频器和多路复用器 (见
图 3-1 )。通过软件对 OSCCON 寄存器的 IRCF<2:0>
位进行操作,选取 31 kHz 。更多信息,请参见第 3.5.4
节“频率选择位(IRCF )”)。LFINTOSC 还是上电延
时定时器(PWRT )、看门狗定时器(WDT )以及故障
保护时钟监控器 (FSCM )的时钟源。
选取 31 kHz (将 OSCCON 寄存器的 IRCF<2:0> 位设
置为 000 )为系统时钟源(OSCCON 寄存器的位
SCS = 1),或者使能以下任一项时, LFINTOSC 将被
使能:
• 双速启动 (配置字寄存器的位 IESO = 1 且
OSCCON 寄存器的位 IRCF = 000)
• 上电延时定时器 ( PWRT)
• 看门狗定时器 ( WDT)
• 故障保护时钟监控器 ( FSCM)
OSCCON 寄存器的 LF 内部振荡器( LTS)位用于指示
LFINTOSC 是否稳定。
3.5.4 频率选择位 ( IRCF)
8 MHz HFINTOSC 和 31 kHz LFINTOSC 的输出连接到
后分频器和多路复用器(见图 3-1 )。 OSCCON 寄存器
的内部振荡器频率选择位IRCF<2:0> 用于选择内部振荡
器的频率输出。可通过软件选择以下 8 个频率之一:
•8 MHz
•4 MHz(复位后的缺省值)
•2 MHz
•1 MHz
• 500 kHz
• 250 kHz
• 125 kHz
• 31 kHz
注: 任何复位后, OSCCON 寄存器的
IRCF<2:0> 位将被置为 110 且频率选择置
为 4MHz。用户可修改 IRCF 位来选择其他
频率。
3.5.5 HFINTOSC 和 LFINTOSC 时钟切换时
序
当在 LFINTOSC 和 HFINTOSC 之间切换时,新的振荡
器可能为了省电已经关闭(见图 3-6 )。在这种情况下,
OSCCON 寄存器的IRCF 位被修改之后、频率选择生效
之前,存在一个延时。OSCCON 寄存器的 LTS 和 HTS
位将反映 LFINTOSC 和 HFINTOSC 振荡器的当前活动
状态。频率选择时序如下:
1. OSCCON 寄存器的 IRCF<2:0> 位被修改。
2. 如果新时钟是关闭的,开始一个时钟启动延时。
3. 时钟切换电路等待当前时钟下降沿的到来。
4. CLKOUT 保持为低,时钟切换电路等待新时钟上
升沿的到来。
5. 现在 CLKOUT 连接到新时钟。OSCCON 寄存器
的 HTS 和 LTS 位按要求被更新。
6. 时钟切换完成。
更多信息请参见图 3-1 。
如果选取的内部振荡器速度在 8MHz到125 kHz 之间,
选取新频率不存在启动延时。这是因为新旧频率都来自
经过后分频器和多路复用器的 HFINTOSC 。
启动延时规范在第 17.0 节 “电气特性”中与振荡器相
关的表格中。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 53 页
PIC16F631/677/685/687/689/690
图 3-6: 内部振荡器切换时序
HFINTOSC LFINTOSC(禁止 FSCM 和 WDT)
HFINTOSC
启振时间
LFINTOSC
2 周期同步 运行
IRCF<2:0>
系统时钟
HFINTOSC
HFINTOSC
LFINTOSC
IRCF<2:0>
系统时钟
LFINTOSC HFINTOSC
LFINTOSC
HFINTOSC
LFINTOSC(禁止 FSCM 或 WDT)
≠ 0 = 0
≠ 0
起振时间 2 周期同步
2 周期同步 运行
= 0
除非使能 WDT 或 FSCM ,否 则 LFINTOSC 将关闭。
运行
IRCF<2:0>
系统时钟
DS41262C_CN 第 54 页 初稿 2007 Microchip Technology Inc.
= 0 ≠ 0
PIC16F631/677/685/687/689/690
3.6 时钟切换
通过软件对 OSCCON 寄存器的系统时钟选择 (SCS )
位进行操作,可将系统时钟源在外部和内部时钟源之间
切换。
3.6.1 系统时钟选择 ( SCS)位
OSCCON 寄存器的系统时钟选择 ( SCS)位选择用于
CPU 和外设的系统时钟源。
•OSCCON寄存器的位 SCS = 0 时,系统时钟源由
配置字寄存器 (CONFIG )中 FOSC<2:0> 位的配
置决定。
•OSCCON 寄存器的位 SCS = 1 时,根据 OSCCON
寄存器的 IRCF<2:0> 位所选的内部振荡器频率选
取系统时钟源。复位后,OSCCON 寄存器的 SCS
总是被清零。
注: 任何自动时钟切换 (可能产生自双速启动
或故障保护时钟监控器)都不更新
OSCCON 寄存器的 SCS 位。用户可监控
OSCCON 寄存器的 OSTS位以确定当前的
系统时钟源。
3.6.2 振荡器起振超时状态 ( OSTS)位
OSCCON 寄存器的振荡器起振超时状态 ( OSTS)位
用于指示系统时钟是来自外部时钟源,还是来自内部时
钟源。外部时钟源由配置字寄存器(CONFIG)的
FOSC<2:0> 定义。OSTS 还特别指明在 LP 、XT 或 HS
模式下,振荡器起振定时器 (OST )是否已超时。
3.7 双速时钟启动模式
双速启动模式通过最大限度地缩短外部振荡器起振与代
码执行之间的延时,进一步节省了功耗。对于频繁使用
休眠模式的应用,双速启动模式将在器件唤醒后除去外
部振荡器的起振时间,从而可降低器件的总体功耗。
该模式使得应用能够从休眠中唤醒,将 INTOSC 用作时
钟源执行数条指令,然后再返回休眠状态而无需等待主
振荡器的稳定。
注: 执行 SLEEP 指令将中止振荡器起振时间,
并使 OSCCON 寄存器的 OSTS 位保持清
零。
当振荡器模块配置为 LP 、 XT 或 HS 模式时,振荡器起
振定时器 (OST )使能 (见第 3.4.1 节 “振荡器起振
定时器 (OST )”)。 OST 将暂停程序执行,直到完成
1024 次振荡计数。双速启动模式在 OST 计数时使用内
部振荡器进行工作,使代码执行的延时最大限度地缩
短。当 OST 计数到 1024 且 OSCCON 寄存器的 OSTS
位置 1 时,程序执行切换至外部振荡器。
3.7.1 双速启动模式配置
通过以下设定来配置双速启动模式:
• 配置字寄存器 (CONFIG )中的位 IESO = 1 ;
内部 / 外部切换位 (使能双速启动模式)。
•OSCCON寄存器的位 SCS = 0 。
• 配置字寄存器 ( CONFIG)中的 FOSC<2:0> 配置
为 LP 、 XT 或 HS 模式。
在下列操作之后,进入双速启动模式:
• 上电复位 (POR )且上电延时定时器 (PWRT )
延时结束 (使能时)后,或者
• 从休眠状态唤醒。
如果外部时钟振荡器配置为除 LP 、 XT 或 HS 模式以外
的任一模式,那么双速启动将被禁止。这是因为 POR 后
或从休眠中退出时,外部时钟振荡器不需要稳定时间。
3.7.2 双速启动顺序
1. 从上电复位或休眠中唤醒。
2. 使用内部振荡器以 OSCCON 寄存器的
IRCF<2:0> 位设置的频率开始执行指令。
3. OST 使能,计数 1024 个时钟周期。
4. OST 超时,等待内部振荡器下降沿的到来。
5. OSTS 置 1。
6. 系统时钟保持为低,直到新时钟下一个下降沿的
到来 ( LP、 XT 或 HS 模式)。
7. 系统时钟切换到外部时钟源。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 55 页
PIC16F631/677/685/687/689/690
3.7.3 检查外部 / 内部时钟状态
通过检查 OSCCON 寄存器的 OSTS 位的状态,可以确
定单片机是否如配置字寄存器(CONFIG)中
FOSC<2:0> 位定义的那样运行于外部时钟源,抑或是
运行于内部振荡器。
图 3-7 : 双速启动
HFINTOSC
TOSTT
OSC1
OSC2
程序计数器
系统时钟
0 1 1022 1023
PC - N
PC
PC + 1
DS41262C_CN 第 56 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
3.8 故障保护时钟监控器
故障保护时钟监控器 (FSCM )使得器件在出现外部振
荡器故障时仍能继续工作。FSCM 能在振荡器起振延时
定时器 (OST)到期后的任一时刻检测振荡器故障。
FSCM 通过将配置字寄存器 (CONFIG )中的 FCMEN
位置 1 来使能。FSCM 可用于所有外部振荡模式(LP 、
XT 、 HS 、 EC 、 RC 和 RCIO )。
图 3-8 : FSCM 框图
时钟监控器
锁存器(CM )
外部
时钟
LFINTOSC
振荡器
31 kHz
(~32 µs )
采样时钟
÷ 64
488 HZ
( ~2 ms)
3.8.1 故障保护检测
FSCM 模块通过将外部振荡器与 FSCM采样时钟比较来
检测振荡器故障。 LFINTOSC 除以 64,就产生了采样
时钟。请参见图 3-8 。故障检测器内部有一个锁存器。
在外部时钟的每个下降沿,锁存器被置 1 。在采样时钟
的每个上升沿,锁存器被清零。如果采样时钟的整个半
周期流逝而主时钟依然未进入低电平,就检测到故障。
(边沿触发)
S
Q
R
Q
检测到
时钟故障
3.8.3 故障保护条件清除
复位、执行 SLEEP 指令或翻转OSCCON 寄存器的 SCS
位后,故障保护条件被清除。OSCCON 寄存器的 SCS
位被修改后, OST 将重新启动。 OST 运行时,器件继
续从 OSCCON 中选定的 INTOSC 进行操作。OST 超时
后,故障保护条件被清除,器件将从外部时钟源进行操
作。必须先清除故障保护条件,才能清零 OSFIF 标志
位。
3.8.4 复位或从休眠中唤醒
FSCM 设计为能在振荡器起振延时定时器( OST)到期
后的任一时刻检测振荡器故障。OST 的使用场合为从休
眠状态唤醒后以及任何类型的复位后。OST 不能在 EC
或 RC 时钟模式下使用,所以一旦复位或唤醒完成,
FSCM 就处于激活状态。当 FSCM 被使能时,双速启动
也被使能。因此,当 OST 运行时,器件总是处于代码
执行阶段。
注: 由于振荡器起振时间的范围变化较大,在
振荡器起振期间 (即,从复位或休眠中退
出时),故障保护电路不处于激活状态。经
过一段适当的时间后,用户应检查
OSCCON 寄存器的 OSTS 位,以验证振荡
器是否已成功起振以及系统时钟是否切换
成功。
3.8.2 故障保护操作
当外部时钟出现故障时,FSCM 将器件时钟切换到内部
时钟源,并将 PIR2 寄存器的 OSFIF 标志位置 1 。如果
在 PIR2 寄存器的 OSFIE 位置 1 的同时将该标志位置
1 ,将产生中断。器件固件随后会采取措施减轻可能由
故障时钟所产生的问题。系统时钟将继续来自内部时钟
源,直到器件固件成功重启外部振荡器并切换回外部操
作。
FSCM 所选的内部时钟源由 OSCCON 寄存器的
IRCF<2:0> 位决定。这使内部振荡器可以在故障发生前
就得以配置。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 57 页
PIC16F631/677/685/687/689/690
图 3-9 : FSCM 时序图
采样时钟
振荡器
系统时钟
输出
时钟监视器输出
(Q)
OSCFIF
故障
检测到
故障
检测
注: 系统时钟通常比采样时钟频率高很多。本例中为便于说明选用相对频率。
检测 检测
表 3-2 : 与时钟源相关的寄存器汇总
名称
CONFIG
OSCCON
OSCTUNE
PIE1
PIR1
图注: x = 未知, u = 不变, – = 未实现单元读为 0 。振荡器不使用阴影单元。
注 1 : 其他 (非上电)复位包括正常工作期间的 MCLR
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
(2)
CPD CP MCLRE PWRTE WDTE FOSC2 FOSC1 FOSC0 — —
— IRCF2 IRCF1 IRCF0 OSTS HTS LTS SCS -110 x000 -110 x000
— — — TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 ---u uuuu
— ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000
— ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000
复位和看门狗定时器复位。
2: 所有寄存器位的操作请参见配置字寄存器 (寄存器 14-1 )。
POR 和
BOR 时的值
所有其他复位
时的值
(1)
DS41262C_CN 第 58 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
4.0 I/O 端口
修改这个值,最后再写入该端口的数据锁存器。当
MCLRE = 1 时, RA3 读为 0 。
器件有多达 18 个可用的通用 I/O 引脚。根据外设的使能
情况,部分甚至全部引脚可能不能用于通用 I/O 。通常
而言,当某个外设使能时,其相关引脚可能不能用作通
用 I/O 引脚。
4.1 PORTA 和 TRISA 寄存器
PORTA 是一个 6 位宽的双向端口,对应的数据方向寄存
器是 TRISA (寄存器 4-2 )。将 TRISA 某位置 1 (= 1)
TRISA 寄存器控制着 PORTA 引脚输出驱动器的方向,
即使它们用作模拟输入引脚。当引脚用于模拟输入时,
用户应确保 TRISA 寄存器中的各位保持置 1 。对配置为
模拟输入的 I/O 引脚,总是读为 0 。
注: 必须对 ANSEL (11Eh )寄存器进行初始
化,以将模拟通道配置为数字输入。配置
为模拟输入的引脚总是读为 0 。
时,会将 PORTA 的相应引脚设为输入 (即,禁止输出
驱动器)。将 TRISA 某位清零 (= 0 )时,会将 PORTA
的相应引脚设为输出 (即,使能输出驱动器并将输出锁
存器中的内容置于选中引脚)。 RA3 是个例外,仅可作
为输入引脚,其 TRIS 位总是读为 1 。例 4-1 显示了如何
初始化 PORTA 。
读取 PORTA 端口寄存器 (寄存器 4-1)将读出相应引
脚的电平状态,而对其进行写操作则是写入其数据锁存
器。所有写操作都是 “读-修改-写”操作。因此,对
端口的写操作意味着总是先读端口引脚电平状态,然后
例 4-1 :初 始 化PORTA
BCF STATUS,RP0 ;Bank 0
BCF STATUS,RP1 ;
CLRF PORTA ;Init PORTA
BSF STATUS,RP1 ;Bank 2
CLRF ANSEL ;digital I/O
BSF STATUS,RP0 ;Bank 1
BCF STATUS,RP1 ;
MOVLW 0Ch ;Set RA<3:2> as inputs
MOVWF TRISA ;and set RA<5:4,1:0>
;as outputs
BCF STATUS,RP0 ;Bank 0
寄存器 4-1 : PORTA :PORTA 寄存器
U-0 U-0 R/W-x R/W-x R-x R/W-x R/W-x R/W-x
— — RA5 RA4 RA3 RA2 RA1 RA0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-6
bit 5-0
未实现:读为 0
RA<5:0> :PORTA I/O 引脚位
1 = 端口引脚 > V
0 = 端口引脚 < VIL
IH
寄存器 4-2 : TRISA :PORTA 三态寄存器
U-0 U-0 R/W-1 R/W-1 R-1 R/W-1 R/W-1 R/W-1
— — TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-6
bit 5-0
注 1: TRISA<3> 始终读为 1 。
2: 在 XT 、 HS 和 LP 振荡模式下 TRISA<5:4> 始终读为 1 。
未实现:读为 0
TRISA<5:0> :PORTA 三态控制位
1 = PORTA 引脚配置为输入 (三态)
0 = PORTA 引脚配置为输出
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 59 页
PIC16F631/677/685/687/689/690
4.2 引脚的其他功能
本器件系列中每个 PORTA 引脚都具有电平变化中断功
能和弱上拉功能。 RA0 还有超低功耗唤醒功能。以下
三节将对这些功能进行介绍。
4.2.1 ANSEL 和 ANSELH 寄存器
ANSEL 和 ANSELH 寄存器用于禁止 I/O 引脚的输入缓
冲器,从而使模拟电压可施加在这些引脚上而不会引起
电流过大。将相应引脚的 ANSx 位置 1 可使所有对该引
脚的数字读操作返回 0 ,并使该引脚的模拟功能正常工
作。
ANSx 位的状态对相应引脚的数字输出功能没有影响。
TRISx 位清零而 ANSx 位置 1 的引脚将作为数字输出工
作,同时具有该引脚的模拟输入功能。 ANSx 位置 1 的
所有引脚始终读为 0,在执行读或写操作时这将导致意
外的操作,这是因为所有读写操作均执行读 – 修改 – 写
序列。
4.2.2 弱上拉
除 RA3 外的每个 PORTA 引脚都具有内部弱上拉功能。
控制位 WPUAx 用于使能或禁止每个上拉功能。请参见
寄存器 4-4 。当端口引脚被配置为输出时,这些弱上拉
会自动关闭。上电复位时, OPTION 寄存器的 RABPU
位将禁止上拉功能。当配置为 MCLR 时, RA3 上的弱
上拉自动使能;当 RA3 是 I/O 时则被禁止。不存在对
上拉的软件控制。
MCLR
4.2.3 电平变化中断
每个 PORTA 引脚都可单独配置具有电平变化中断功
能。控制位 IOCAx 用于使能或禁止各引脚的中断功能。
请参见寄存器 4-6 。电平变化中断功能在上电复位时被
禁止。
对于使能了电平变化中断功能的引脚,其值将与上次读
取的 PORTA 的旧锁存值相比较。所有与上次读取值不
匹配的输出进行或运算,运算结果用来设置 INTCON 寄
存器 (寄存器 2-6 )中的 PORTA 电平变化中断标志位
(RABIF )。
该中断可唤醒处于休眠状态中的器件。用户在中断服务
程序中可通过以下方式清除该中断:
a) 对 PORTA 的任何读或写操作。这将结束不匹配
条件,然后:
b) 清零标志位 RABIF 。
不匹配条件将继续将标志位 RABIF 置 1 。读 PORTA 将
结束不匹配条件并将标志位 RABIF 清零。保持上一次读
取值的锁存器不受 MCLR
复位之后,如果存在不匹配情况,RABIF 标志还将继续
被置 1 。
注: 当读操作正在执行时若发生I/O 引脚电平变
化(Q2 周期的起始时刻),则 RABIF 中断
标志位可能不会被置 1 。
或 BOR 复位的影响。在这些
DS41262C_CN 第 60 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
寄存器 4-3: ANSEL: 模拟选择寄存器
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-0
注 1 : 将某引脚设置为模拟输入将自动禁止数字输入电路、弱上拉以及电平变化中断 (如果有的话)。相应
寄存器 4-4 : ANSELH : 模拟选择高位寄存器
U-0 U-0 U-0 U-0 R/W-1 R/W-1 R/W-1 R/W-1
— — — — ANS11 ANS10 ANS9 ANS8
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-4
bit 3-0
ANS<7:0> : 模拟选择位
在 AN<7:0> 引脚上分别进行模拟或数字功能的模拟选择。
1 = 模拟输入。引脚被分配为模拟输入
0 = 数字 I/O 。引脚被分配给端口或特殊功能。
TRIS 位必须设置为输入模式以允许对该引脚的电压进行外部控制。
未实现:读为 0
ANS<11:8> : 模拟选择位
在 AN<7:0> 引脚上分别进行模拟或数字功能的模拟选择。
1 = 模拟输入。引脚被分配为模拟输入
0 = 数字 I/O 。引脚被分配给端口或特殊功能。
(1)
(1)
。
(2)
。
注 1 : 将某引脚设置为模拟输入将自动禁止数字输入电路、弱上拉以及电平变化中断 (如果有的话)。相应
TRIS 位必须设置为输入模式以允许对该引脚的电压进行外部控制。
2 : 仅限 PIC16F677/PIC16F685/PIC16F687/PIC16F689/PIC16F690 。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 61 页
PIC16F631/677/685/687/689/690
寄存器 4-5: WPUA: PORTA 寄存器
U-0 U-0 R/W-1 R/W-1 U-0 R/W-1 R/W-1 R/W-1
— — WPUA5 WPUA4 — WPUA2 WPUA1 WPUA0
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: 必须使能 OPTION 寄存器的全局 RABPU
2: 如果引脚处于输出模式 (TRISA = 0 ),则弱上拉器件被自动禁止。
3: 在配置字寄存器中配置为 MCLR 时 RA3 上拉被使能,配置为 I/O 时上拉被禁止。
4: 在 XT 、 HS 和 LP 振荡模式下 WPUA<5:4> 始终读为 1 。
未实现:读为 0
WPUA<5:4> :弱上拉寄存器位
1 = 使能上拉
0 = 禁止上拉
未实现:读为 0
WPUA<2:0>: 弱上拉寄存器位
1 = 使能上拉
0 = 禁止上拉
位以使能各个上拉。
寄存器 4-6 : IOCA : 电平变化中断 PORTA 寄存器
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
— — IOCA5 IOCA4 IOCA3 IOCA2 IOCA1 IOCA0
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 振荡模式下 IOCA<5:4> 始终读为 1 。
DS41262C_CN 第 62 页 初稿 2007 Microchip Technology Inc.
未实现:读为 0
IOCA<5:0> :电平变化中断 PORTA 控制位
1 = 允许电平变化中断
0 = 禁止电平变化中断
PIC16F631/677/685/687/689/690
4.2.4 超低功耗唤醒
RA0 上的超低功耗唤醒 ( ULPWU)功能允许缓慢下降
的电压能够在 RA0 上产生电平变化中断,同时不消耗很
大的电流。将 PCON 寄存器的 ULPWUE 位置 1 将选取
超低功耗唤醒模式。这将产生一个小的拉电流 (current
sink ),可用来对 RA0 上电容器进行放电。
要使用此功能,请按以下步骤操作:
a) 将 RA0 引脚设置为输出(= 1 )为 RA0 上的电容充
电。
b) 将 RA0 设置为输入。
c) 允许 RA0 的电平变化中断。
d) 将 PCON 寄存器的 ULPWUE 位置 1 开始为电容放
电。
e) 执行一条 SLEEP 指令。
当 RA0 上电压下降到低于 V
件将执行下一条指令。如果 INTCON 寄存器的 GIE 位置
1 ,器件随后将调用中断向量 (0004h )。更多信息,请
参见第4.4.2 节“电平变化中断”和第14.3.3 节“PORTA/
PORTB 中断”。
该功能提供了一种周期性将器件从休眠中唤醒的低功
耗方法。休眠时间取决于 RA0 上 RC 电路的放电时间。
超低功耗唤醒模块的初始化,请参见例 4-2 。
IL 时,将产生中断,唤醒器
RA0 和外部电容之间串联电阻为 RA0/AN0/C1IN+/
ICSPDAT/ULPWU引脚提供过流保护,同时允许使用软
件校准休眠时间 (见图 4-1 )。可使用一个定时器测量
电容器的充放电时间。然后调节充电时间,以提供所需
的中断延时。此方法将对温度、电压和元件精度的影响
进行补偿。超低功耗唤醒外设还可配置为简单的可编程
低压检测功能或温度传感器。
注: 更多信息,请参见应用笔记 AN879“Using
the Microchip Ultra Low-Power Wake-up
Module”( DS00879 )。
例 4-2 : 超低功耗唤醒初始化
BCF STATUS,RP0 ;Bank 0
BCF STATUS,RP1 ;
BSF PORTA,0 ;Set RA0 data latch
BSF STATUS,RP1 ;Bank 2
BCF ANSEL,0 ;RA0 to digital I/O
BSF STATUS,RP0 ;Bank 1
BCF STATUS,RP1 ;
BCF TRISA,0 ;Output high to
CALL CapDelay ;charge capacitor
BSF PCON,ULPWUE ;Enable ULP Wake-up
BSF IOCA,0 ;Select RA0 IOC
BSF TRISA,0 ;RA0 to input
MOVLW B’10001000’ ;Enable interrupt
MOVWF INTCON ;and clear flag
BCF STATUS,RP0 ;Bank 0
SLEEP ;Wait for IOC
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 63 页
PIC16F631/677/685/687/689/690
4.2.5 引脚说明和引脚图
每个 PORTA 引脚都与其他功能复用。这里将简要说
明引脚及其复合功能。各功能如比较器或 A/D 转换器
(A/D Converter ,ADC )的具体信息,请参见本数据手
册中的相关章节。
图 4-1 : RA0 框图
数据总线
WPUDA
WPUDA
PORTA
D
Q
写
读
写
CK
Q
D
Q
CK
Q
4.2.5.1 RA0/AN0/C1IN+/ICSPDAT/ULPWU
图 4-2 给出了此引脚的引脚图。 RA0/AN0/C1IN+/
ICSPDAT/ULPWU 引脚可配置为下列功能之一:
• 通用 I/O
• 连接至 ADC 的模拟输入 (除 PIC16F631 外)
• 连接至比较器 ( C1)的模拟输入
• 在线串行编程 ( In-Circuit Serial
Programming™)数据
• 超低功耗唤醒的模拟输入
(1)
模拟
输入模式
RABPU
Vdd
弱
Vdd
I/O 引脚
写
TRISA
读
TRISA
读
PORTA
WR
IOCA
读
IOCA
电平变化中断
Vss
-
+V
D
Q
CK
Q
(1)
模拟
输入模式
D
Q
CK
Q
读 PORTA
至比较器
至 A/D 转换器
(2)
01
ULPWUE
D
Q
EN
D
Q
EN
Q3
T
IULP
VSS
注 1: ANSEL 决定模拟输入模式。
2: PIC16F631 上未实现。
DS41262C_CN 第 64 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
4.2.5.2 RA1/AN1/C12IN-/VREF /ICSPCLK
图 4-2 给出了此引脚的引脚图。 RA1/AN1/C12IN0-/
VREF /ICSPCLK 引脚可配置为下列功能之一:
• 通用 I/O
• 连接至 ADC 的模拟输入 (除 PIC16F631 外)
• 连接至比较器 ( C1 或 C2)的模拟输入
•ADC的参考电压输入
• 在线串行编程时钟
图 4-2: RA1 框图
(1)
模拟
数据总线
写
WPUA
读
WPUA
写
PORTA
写
TRISA
读
TRISA
D
CK
D
CK
D
CK
输入模式
Q
Q
RABPU
Q
Q
Q
Q
模拟
输入模式
Vdd
弱
Vdd
I/O 引脚
(1)
Vss
4.2.5.3 RA2/AN2/T0CKI/INT/C1OUT
图 4-3 给出了此引脚的引脚图。 RA2/AN2/T0CKI/INT/
C1OUT 引脚可配置为下列功能之一:
• 通用 I/O
• 连接至 ADC 的模拟输入 (除 PIC16F631 外)
•TMR0的时钟输入
• 外部边沿触发的中断
• 来自比较器 ( C1)的数字输出
图 4-3: RA2 框图
(1)
模拟
数据总线
写
WPUA
读
WPUA
写
PORTA
读
TRISA
读
TRISA
D
Q
CK
Q
D
Q
CK
Q
D
Q
CK
Q
输入模式
C1OUT
使能
C1OUT
RABPU
1
0
模拟
输入模式
Vdd
弱
Vdd
I/O 引脚
Vss
(1)
读
PORTA
D
Q
CK
写
IOCA
读
IOCA
电平变化中断
注 1 : 模拟输入模式由 ANSEL 确定。
Q
读 PORTA
至比较器
至 A/D 转换器
2: PIC16F631 上未实现。
(2)
Q
Q
EN
EN
读
PORTA
D
Q
D
Q3
D
写
IOCA
读
IOCA
电平变化中断
注 1 : 模拟输入模式由 ANSEL 确定。
CK
Q
至 TMR0
至 INT
至 A/D 转换器
2: PIC16F631 上未实现。
(2)
Q
EN
Q
EN
读 PORTA
D
Q3
D
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 65 页
PIC16F631/677/685/687/689/690
4.2.5.4 RA3/MCLR/VPP
图 4-4 给出了此引脚的引脚图。RA3/ MCLR/VPP 引脚可
配置为下列功能之一:
• 通用输入
• 带弱上拉的主清零复位
图 4-4 : RA3 框图
VDD
数据总线
读
TRISA
读
PORTA
写
IOCA
读
IOCA
电平变化
中断
MCLRE
复位
VSS
Q
D
CK
Q
MCLRE
MCLRE
Q
Q
读 PORTA
EN
EN
弱
输入
引脚
SS
V
D
Q3
D
4.2.5.5 RA4/AN3/T1G
/OSC2/CLKOUT
图 4-5 给出了此引脚的引脚图。 RA4/AN3/T1G/OSC2/
CLKOUT 引脚可配置为下列功能之一:
• 通用 I/O
• 连接至 ADC 的模拟输入 (除 PIC16F631 外)
•TMR1门控输入
• 晶振 / 谐振器连接
• 时钟输出
图 4-5 : RA4 框图
(3)
模拟
数据总线
写
WPUA
读
WPUA
写
PORTA
写
TRISA
读
TRISA
读
PORTA
写
IOCA
读
IOCA
输入模式
Q
D
CK
Q
OSC1
Q
D
CK
Q
Q
D
CK
Q
Q
D
CK
Q
FOSC /4
CLKOUT
使能
INTOSC/
RC/EC
CLKOUT
CLK
模式
RABPU
振荡器
电路
CLKOUT
使能
1
0
(2)
使能
模拟
输入模式
Q
Q
(1)
EN
VDD
弱
VDD
I/O 引脚
VSS
D
Q3
D
电平变化
中断
至 T1G
至 A/D 转换器
注 1 :CLK 模式为 XT 、HS、LP 和 LPTMR1,且 CLKOUT 使
能。
2:具有 CLKOUT 选项。
3: ANSEL 决定模拟输入模式。
4: PIC16F631 上未实现。
(4)
EN
读 PORTA
DS41262C_CN 第 66 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
4.2.5.6 RA5/T1CKI/OSC1/CLKIN
图 4-6 给出了此引脚的引脚图。 RA5/T1CKI/OSC1/
CLKIN 引脚可配置为下列功能之一:
• 通用 I/O
•TMR1时钟输入
• 晶振 / 谐振器连接
• 时钟输入
图 4-6 : RA5 框图
INTOSC
数据总线
写
WPUA
读
WPUA
写
PORTA
模式
TMR1LPEN
D
Q
CK
Q
RABPU
振荡器
电路
Q
D
CK
Q
OSC2
(1)
VDD
弱
VDD
Q
D
写
TRISA
读
TRISA
读
PORTA
写
IOCA
读
IOCA
CK
Q
Q
D
CK
Q
电平变化
中断
至 TMR1 或 CLKGEN
注 1 :Timer1 LP 振荡器使能。
2 :在使用带 LP 振荡器的 Timer1 时,施密特触发器
被旁路。
INTOSC
模式
Q
Q
读 PORTA
EN
EN
I/O 引脚
VSS
(2)
D
Q3
D
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 67 页
PIC16F631/677/685/687/689/690
表 4-1 :与PORTA 相关的寄存器汇总
名称
ADCON0
ANSEL
CM1CON0
INTCON GIE
IOCA
OPTION_REG
PORTA
SSPCON
T1CON
TRISA
WPUA
图注: x = 未知, u = 不变, – = 未实现单元读为 0。 PORTA 不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
ADFM VCFG CHS3 CHS2 CHS1 CHS0
ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
C1ON C1OUT C1OE C1POL — C1R C1CH1 C1CH0 0000 -000 0000 -000
PEIE T0IE INTE RABIE T0IF INTF RABIF 0000 000x 0000 000x
— — IOCA5 IOCA4 IOCA3 IOCA2 IOCA1 IOCA0 --00 0000 --00 0000
RABPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
— — RA5 RA4 RA3 RA2 RA1 RA0 --xx xxxx --uu uuuu
WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000
T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 uuuu uuuu
— — TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 --11 1111
— —W P U A 5W P U A 4— WPUA2 WPUA1 WPUA0 --11 -111 --11 -111
GO/DONE
POR 和 BOR
时的值
ADON 0000 0000 0000 0000
所有其他
复位值
DS41262C_CN 第 68 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
4.3 PORTB 和 TRISB 寄存器
PORTB 是一个 4 位宽的双向端口,对应的数据方向寄存
器是 TRISB (寄存器 4-6 )。将 TRISB 某位置 1 (= 1)
时,会将 PORTB 的相应引脚设为输入 (即,使相应的
输出驱动器呈高阻状态) 。将 TRISB 某位清零 (= 0)
时,会将 PORTB 的相应引脚设为输出 (即,使能输出
驱动器并将输出锁存器中的内容置于选中引脚)。例 4-3
显示了如何初始化 PORTB 。读取 PORTB 寄存器(寄存
器 4-5 )将读出相应引脚的电平状态,而对其进行写操作
则是写入其数据锁存器。所有写操作都是 “读-修改-
写”操作。因此,对端口的写操作意味着总是先读端口
引脚电平状态,然后修改这个值,最后再写入该端口的
数据锁存器。
TRISB 寄存器控制着 PORTB 输出驱动器的方向,即使
它们用作模拟输入引脚。当引脚用于模拟输入时,用户
应确保 TRISB 中的各位保持置 1 。对配置为模拟输入的
I/O 引脚,总是读为 0。
例 4-3 :初 始 化PORTB
BCF STATUS,RP0 ;Bank 0
BCF STATUS,RP1 ;
CLRF PORTB ;Init PORTB
BSF STATUS,RP0 ;Bank 1
MOVLW FFh ;Set RB<7:4> as inputs
MOVWF TRISB ;
BCF STATUS,RP0 ;Bank 0
4.4.1 弱上拉
每个 PORTB 引脚都具有单独配置的内部弱上拉功能。
控制位 WPUB<7:4> 用于使能或禁止每个上拉功能 (见
寄存器 4-7 )。当端口引脚被配置为输出时,这些弱上拉
会自动关闭。上电复位时将禁止上拉功能, RABPU
(OPTION_REG<7> )置 1 。
4.4.2 电平变化中断
4 个 PORTB 引脚被单独配置为具有电平变化中断功能
的引脚。控制位 IOCB<7:4> 用于使能或禁止各引脚的中
断功能。请参见寄存器 4-10 。电平变化中断功能在上电
复位时被禁止。
对于使能了电平变化中断功能的引脚,当前值将与上次
读取的 PORTB 的旧锁存值相比较,以确定哪个值发生
了变化或与旧值不匹配。所有不匹配的输出进行或运
算,运算结果用来设置 INTCON 寄存器 (寄存器 2-3 )
中的 PORTA 电平变化中断标志位 (RABIF )。
该中断可唤醒处于休眠状态中的器件。用户在中断服务
程序中可通过以下方式清除该中断:
a) 对 PORTB 的任何读或写操作。这将结束不匹配
条件。
b) 清零标志位 RABIF 。
不匹配条件将继续把标志位 RABIF 置 1 。读或写 PORTB
将结束不匹配条件并将标志位 RABIF 清零。保持上一次
读取值的锁存器不受 MCLR
复位之后,如果存在不匹配情况, RABIF 标志还将继续
被置 1。
或欠压复位的影响。在这些
位
注: 必须对 ANSELH 寄存器进行初始化,以将
模拟通道配置为数字输入。配置为模拟输
入的引脚总是读为 0 。
4.4 PORTB 引脚的其他功能
器件系列上的 PORTB 引脚RB<7:4> 都具有电平变化中
注: 当读操作正在执行时发生了 I/O 引脚电平变
化(Q2 周期的起始时刻),则 RABIF 中断
标志位可能不会被置 1 。此外,由于端口上
的读或写操作会影响该端口的所有位,所
以在电平变化中断模式下使用多个引脚时
必须特别小心。一个引脚上的变化可能不
会在另一个引脚上反映出来。
断功能和弱上拉功能。以下三节将对这些 PORTB 引脚
功能进行介绍。
寄存器 4-7 : PORTB :PORTB 寄存器
R/W-x R/W-x R/W-x R/W-x U-0 U-0 U-0 U-0
RB7 RB6 RB5 RB4
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-4
bit 3-0
RB<7:4> :PORTB I/O 引脚位
1 = 端口引脚 > V
0 = 端口引脚 < VIL
未实现:读为 0
IH
— — — —
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 69 页
PIC16F631/677/685/687/689/690
寄存器 4-8: TRISB: PORTB 三态寄存器
R/W-1 R/W-1 R/W-1 R/W-1 U-0 U-0 U-0 U-0
TRISB7 TRISB6 TRISB5 TRISB4
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
— — — —
bit 7-4
bit 3-0
TRISB<7:4> : PORTB 三态控制位
1 = PORTB 引脚被配置为输入 (三态)
0 = PORTB 引脚被配置为输出
未实现:读为 0
寄存器 4-9 : WPUB :弱上拉 PORTB 寄存器
R/W-1 R/W-1 R/W-1 R/W-1 U-0 U-0 U-0 U-0
WPUB7 WPUB6 WPUB5 WPUB4
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-4
bit 3-0
注 1: 必须使能 OPTION 寄存器的全局 RABPU
2: 如果引脚处于输出模式 (TRISB<7:4> = 0 )则弱上拉器件被自动禁止。
WPUB<7:4>:弱上拉寄存器位
1 = 使能上拉
0 = 禁止上拉
未实现:读为 0
位以使能各上拉。
— — — —
寄存器 4-10 : IOCB :电平变化中断 PORTB 寄存器
R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0
IOCB7 IOCB6 IOCB5 IOCB4
bit 7 bit 0
— — — —
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-4
bit 3-0
DS41262C_CN 第 70 页 初稿 2007 Microchip Technology Inc.
IOCB<7:4> :电平变化中断 PORTB 控制位
1 = 允许电平变化中断
0 = 禁止电平变化中断
未实现:读为 0
PIC16F631/677/685/687/689/690
4.4.3 引脚说明和引脚图
每个 PORTB 引脚都与其他功能复用。这里将简要说明引
脚及其复用功能。各功能的具体信息 (如 SSP 、 I 2C™
或中断),请参见本数据手册中的相关章节。
4.4.3.1 RB4/AN10/SDI/SDA
图 4-7 给出了此引脚的引脚图。RB4/AN10/SDI/SDA
引脚可配置为下列功能之一:
• 通用 I/O
• 连接至 ADC 的模拟输入 (除 PIC16F631 外)
• SPI 数据 I/O
2
C™ 数据 I/O
•I
注 1 : SDI 和 SDA 仅在 PIC16F687/PIC16F689/
PIC16F690 上存在。
图 4-7: RB4 框图
(1)
模拟
数据总线
写
WPUB
读
WPUB
写
PORTB
写
TRISB
读
TRISB
D
CK
D
CK
D
CK
输入模式
Q
Q
RABPU
Q
Q
Q
Q
SSPEN
SSPSR
来自
SSP
0
1
0
1
0
1
1
0
模拟
输入模式
Vdd
弱
Vdd
I/O 引脚
Vss
(1)
(1)
读
PORTB
D
Q
D
写
IOCB
读
IOCB
电平变化中断
注 1 : 模拟输入模式由 ANSEL 确定。
CK
Q
读 PORTB
至 SSPSR
至 A/D 转换器
仅在 PIC16F677/PIC16F687/PIC16F689/PIC16F690 上存在。
2: PIC16F631 上未实现。
(2)
Q
EN
Q
EN
Q3
D
ST
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 71 页
PIC16F631/677/685/687/689/690
4.4.3.2 RB5/AN11/RX/DT
图 4-8 给出了此引脚的引脚图。 RB5/AN11/RX/DT
引脚可配置为下列功能之一:
• 通用 I/O
• 连接至 ADC 的模拟输入 (除 PIC16F631 外)
• 异步串行输入
• 同步串行数据 I/O
注 1 : RX 和 DT 仅在 PIC16F687/PIC16F689/
PIC16F690 上存在。
2:PIC16F631 上未实现 AN11。
(1,2)
图 4-8 : RB5 框图
数据总线
WPUB
WPUB
PORTB
TRISB
TRISB
PORTB
IOCB
IOCB
电平变化中断
D
Q
写
CK
Q
D
Q
CK
Q
D
Q
CK
Q
D
Q
CK
Q
读
写
写
读
读
写
读
(1)
模拟
输入模式
SYNC
SPEN
EUSART
DT
来自
EUSART
RABPU
0
1
1
0
0
1
1
0
模拟
输入模式
Q
Q
(1)
EN
EN
Vdd
弱
Vdd
I/O 引脚
Vss
D
Q3
D
ST
读 PORTB
至 EUSART RX/DT
至 A/D 转换器
仅在 PIC16F687/PIC16F689/PIC16F690 上存在。
注 1 : 模拟输入模式由 ANSEL 确定
2: PIC16F631 上未实现。
(2)
DS41262C_CN 第 72 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
4.4.3.3 RB6/SCK/SCL
图 4-9 给出了此引脚的引脚图。 RB6/SCK/SCL
可配置为下列功能之一:
• 通用 I/O
• SPI 时钟
2
C™ 时钟
•I
注 1 : SCK和 SCL 仅在 PIC16F677/PIC16F689/
PIC16F690 上存在。
(1)
引脚
图 4-9 : RB6 框图
数据总线
WPUB
WPUB
PORTB
TRISB
TRISB
PORTB
IOCB
IOCB
电平变化中断
D
Q
写
读
写
写
读
读
写
读
CK
Q
D
Q
CK
Q
D
Q
CK
Q
D
Q
CK
Q
SSP
时钟
来自
SSP
RABPU
SSPEN
0
1
1
0
0
1
1
0
Vdd
弱
Vdd
I/O 引脚
Vss
D
Q
EN
Q
EN
Q3
D
ST
读 PORTB
至 SSPSR
仅在PIC16F677/PIC16F687/PIC16F689/PIC16F690 上存在。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 73 页
PIC16F631/677/685/687/689/690
4.4.3.4 RB7/TX/CK
图 4-10 给出了此引脚的引脚图。RB7/TX/CK
配置为下列功能之一:
• 通用 I/O
• 异步串行输出
• 同步时钟 I/O
注 1 : TX 和 CK 仅在 PIC16F687/PIC16F689/
PIC16F690 上存在。
(1)
引脚可
图 4-10 : RB7 框图
数据总线
WPUB
WPUB
PORTB
TRISB
TRISB
PORTB
IOCB
IOCB
D
Q
写
CK
Q
D
Q
CK
Q
D
Q
CK
Q
D
Q
CK
Q
读
写
写
读
读
写
读
EUSART
CK
EUSART
TX
RABPU
SPEN
TXEN
SYNC
0
1
1
0
1
VDD
弱
VDD
0
1
1
0
0
1
1
0
D
Q
EN
D
Q
I/O 引
VSS
Q3
电平变化中断
读 PORTB
仅在 PIC16F687/PIC16F689/PIC16F690 上存在。
EN
DS41262C_CN 第 74 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
表 4-2 :与PORTB 相关的寄存器汇总
名称
IOCB IOCB7 IOCB6 IOCB5 IOCB4
INTCON GIE PEIE T0IE INTE RABIE T0IF INTF RABIF 0000 000x 0000 000x
PORTB RB7 RB6 RB5 RB4
TRISB TRISB7 TRISB6 TRISB5 TRISB4
WPUB WPUB7 WPUB6 WPUB5 WPUB4 — — — — 1111 ---- 1111 ----
图注: x = 求知, u = 不变, — = 未实现读为 0 。 PORTB 不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — — — 0000 ---- 0000 ----
— — — — xxxx ---- uuuu ----
— — — — 1111 ---- 1111 ----
POR 和
BOR 的值
所有其他
复位值
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 75 页
PIC16F631/677/685/687/689/690
4.5 PORTC 和 TRISC 寄存器
TRISC 寄存器控制着 PORTC 引脚输出驱动器的方向,
即使它们用作模拟输入引脚。当引脚用于模拟输入时,
PORTC 是一个 8 位宽的双向端口,对应的数据方向寄存
器是 TRISC (寄存器 4-10 )。将 TRISC 某位置 1(= 1)
时,会将 PORTC 的相应引脚设为输入 (即,使相应的
输出驱动器呈高阻状态)。将 TRISC 某位清零 (= 0)
时,会将 PORTC 的相应引脚设为输出 (即,输出锁存
器中的内容置于选中引脚)。例 4-4 显示了如何初始化
用户应确保 TRISC 中的各位保持置 1 。对配置为模拟输
入的 I/O 引脚,总是读为 0。
注: 必须对 ANSEL 和 ANSELH 寄存器进行初
始化,以将模拟通道配置为数字输入。配
置为模拟输入的引脚总是读为 0 。
PORTC 。读取 PORTC 寄存器 (寄存器 4-9 )将读出相
应引脚的电平状态,而对其进行写操作则是写入其数据
锁存器。所有写操作都是“读-修改-写”操作。因此,
对端口的写操作意味着总是先读端口引脚电平状态,然
后修改这个值,最后再写入该端口的数据锁存器。
例 4-4 :初 始 化PORTC
BCF STATUS,RP0 ;Bank 0
BCF STATUS,RP1 ;
CLRF PORTC ;Init PORTC
BSF STATUS,RP1 ;Bank 2
CLRF ANSEL ;digital I/O
BSF STATUS,RP0 ;Bank 1
BCF STATUS,RP1 ;
MOVLW 0Ch ;Set RC<3:2> as inputs
MOVWF TRISC ;and set RC<5:4,1:0>
;as outputs
BCF STATUS,RP0 ;Bank 0
寄存器 4-11 : PORTC :PORTC 寄存器
R/W-0 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-0
RC<7:0> :PORTC 通用 I/O 引脚位
1 = 端口引脚 > V
0 = 端口引脚 < VIL
IH
寄存器 4-12 : TRISC :PORTC 三态寄存器
R/W-1 R/W-1 R/W-1 R/W-1 R-1 R/W-1 R/W-1 R/W-1
TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-0
TRISC<7:0> : PORTC 三态控制位
1 = PORTC 引脚被配置为输入 (三态)
0 = PORTC 引脚被配置为输出
DS41262C_CN 第 76 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
4.5.1 RC0/AN4/C2IN+
RC0 引脚可配置为下列功能之一:
• 通用 I/O
• 连接至 ADC 的模拟输入 (除 PIC16F631 外)
• 连接至比较器 C2 的模拟输入
4.5.2 RC1/AN5/C12IN1-
RC1 引脚可配置为下列功能之一:
• 通用 I/O
• 连接至 ADC 的模拟输入
• 连接至比较器 C1 或 C2 的模拟输入
图 4-11 : RC0 和 RC1 框图
数据总线
D
Q
写
PORTC
写
TRISC
读
TRISC
读
PORTC
注 1 : ANSEL 决定模拟输入模式。
CK
Q
D
Q
CK
Q
模拟输入
至比较器
至 A/D 转换器
2: PIC16F631 上未实现。
(2)
模式
(1)
VDD
VSS
I/O 引脚
4.5.3 RC2/AN6/C12IN2-/P1D
RC2/AN6/P1D
• 通用 I/O
• 连接至 ADC 的模拟输入 (除 PIC16F631 外)
•PWM输出
• 连接至比较器 C1 或 C2 的模拟输入
注 1: P1D仅在 PIC16F685/PIC16F690 上存在。
(1)
引脚可配置为下列功能之一:
4.5.4 RC3/AN7/C12IN3-/P1C
RC3/AN7/P1C
• 通用 I/O
• 连接至 ADC 的模拟输入 (除 PIC16F631 外)
•PWM输出
• 连接至比较器 C1 或 C2 的模拟输入
注 1: P1C仅在 PIC16F685/PIC16F690 上存在。
(1)
引脚可配置为下列功能之一:
图 4-12 : RC2 和 RC3 框图
数据总线
写
PORTC
写
TRISC
读
TRISC
读
PORTC
D
CK
D
CK
至比较器
至 A/D 转换器
Q
Q
Q
Q
CCP1OUT
Enable
CCP1OUT
(2)
0
1
1
0
模拟输入
(1)
模式
Vdd
Vss
I/O 引脚
仅在 PIC16F685/PIC16F690 上存在。
注 1 : 模拟输入模式由 ANSEL 确定
2 : PIC16F631 上未实现。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 77 页
PIC16F631/677/685/687/689/690
4.5.5 RC4/C2OUT/P1B
RC4/C2OUT/P1B
• 通用 I/O
• 来自比较器 C2 的数字输出
•PWM输出
注 1:同时使能 C2OUT 和 P1B 将在 RC4 上引起
2:P1B 仅在 PIC16F685/PIC16F690上存在。
(1,2)
引脚可配置为下列功能之一:
冲突并产生不可预知的结果。因此,如果
C2OUT 被使能,则 ECCP+ 不能用于半桥
或全桥模式下,反之亦然。
图 4-13 : RC4 框图
C2OUT 使能
CCP1OUT 使能
C2OUT 使能
CCP1OUT 使能
CCP1OUT
数据总线
写
PORTC
写
TRISC
C2OUT
D
CK
D
CK
0
1
1
0
Q
Q
Q
Q
VDD
VSS
I/O 引脚
4.5.6 RC5/CCP1/P1A
RC5/CCP1/P1A
• 通用 I/O
• 增强型 CCP 的数字输入 / 输出
•PWM输出
注 1: CCP1和 P1A 仅在 PIC16F685/PIC16F690
(1)
引脚可配置为下列功能之一:
上存在。
图 4-14 : RC5 框图
数据总线
D
写
PORTC
写
TRISC
读
TRISC
读
PORTC
CK
D
CK
至增强型 CCP
仅在 PIC16F685/PIC16F690 存在。
Q
Q
Q
Q
CCP1OUT
使能
CCP1OUT
Vdd
0
1
1
0
Vss
I/O 引脚
读
TRISC
读
PORTC
仅在 PIC16F685/PIC16F690 上存在。
DS41262C_CN 第 78 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
4.5.7 RC6/AN8/SS
RC6/AN8/SS
• 通用 I/O
• 连接至 ADC 的模拟输入 (除 PIC16F631 外)
• 从动选择输入
注 1: SS 仅在 PIC16F687/PIC16F689/
(1,2)
引脚可配置为下列功能之一:
PIC16F690 上存在。
2 : PIC16F631 上未实现 AN8 。
图 4-15 : RC6 框图
数据总线
D
Q
写
PORTC
写
TRISC
读
TRISC
读
PORTC
注 1 : 模拟输入模式由 ANSEL 确定。
CK
Q
D
Q
CK
Q
模拟输入
模式
至 SS 输入
至 A/D 转换器
仅在 PIC16F685/PIC16F690 上存在。
(1)
VDD
VSS
I/O 引脚
4.5.8 RC7/AN9/SDO
RC7/AN9/SDO
• 通用 I/O
• 连接至 ADC 的模拟输入 (除 PIC16F631 外)
• 串行数据输出
注 1: SDO 仅在 PIC16F687/PIC16F689/
(1,2)
引脚可配置为下列功能之一:
PIC16F690 上存在。
2 : PIC16F631 上未实现 AN9 。
图 4-16 : RC7 框图
PORT/SDO
选择
数据总线
D
Q
写
PORTC
写
TRISC
读
TRISC
读
PORTC
注 1 : 模拟输入模式由 ANSEL 确定。
CK
Q
D
Q
CK
Q
至 A/D 转换器
仅在 PIC16F685/PIC16F690 上存在。
2 : PIC16F631 上未实现。
SDO
0
1
0
1
模拟输入
(1)
模式
(2)
Vdd
Vss
I/O 引脚
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 79 页
PIC16F631/677/685/687/689/690
表 4-3 :与PORTC 相关的寄存器汇总
名称
ANSEL ANS7 ANS6 ANS5 ANS4
ANSELH
CCP1CON
CM2CON0 C2ON C2OUT
CM2CON1
PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu
PSTRCON
SRCON SR1
SSPCON
TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111
VRCON C1VREN C2VREN VRR VP6EN VR3 VR2 VR1 VR0 0000 0000 0000 0000
图注: x = 未知, u = 不变, – = 未实现单元读为 0。 PORTC 未实现阴影单元。
注 1 : 仅限 PIC16F687/PIC16F689/PIC16F690 。
2: 仅限 PIC16F685/PIC16F690 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111
— — — — ANS11 ANS10 ANS9 ANS8 ---- 1111 ---- 1111
(2)
P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 0000 0000
C2OE C2POL — C2R C2CH1 C2CH0 0000 -000
MC1OUT MC2OUT — — — — T1GSS C2SYNC 00-- --10 00-- --10
— — — STRSYNC STRD STRC STRB STRA ---0 0001 ---0 0001
SR0 C1SEN C2REN PULSS PULSR — — 0000 00-- 0000 00--
(1)
WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000
POR 和 BOR
时的值
所有其他
复位值
0000 -000
DS41262C_CN 第 80 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
5.0 TIMER0 模块
Timer0 模块是 8 位定时器 / 计数器,具备以下特性:
•8位定时器 / 计数器寄存器 (TMR0)
•8位预分频器 (与看门狗定时器共用)
• 可编程内部或外部时钟源
• 可编程外部时钟边沿选择
• 溢出中断
图 5-1 是 Timer0 模块的框图。
图 5-1 : TIMER0/WDT 预分频器的框图
FOSC /4
0
1
T0CKI
引脚
T0SE
T0CS
0
预分频器
1
8 位
5.1 Timer0 的工作原理
作为定时器使用时,Timer0 模块可用作 8 位定时器或 8
位计数器。
5.1.1 8 位定时器模式
作为定时器使用时,Timer0 模块将在每个指令周期递增
(无预分频器)。将 OPTION 寄存器的 T0CS 位清零选
择定时器模式。
当 TMR0 被写入时,写入后将立即禁止 2 周期递增。
注: 在 TMR0 被写入时,为了计入两个指令周
期的延时,可以调整写入 TMR0 寄存器的
值。
5.1.2 8 位计数器模式
作为计数器使用时,Timer0 模块将在 T0CKI 引脚的每个
上升沿递增。递增边沿由 OPTION 寄存器的 T0SE 位决
定。将OPTION 寄存器的 T0CS 位置 1 选择计数器模式。
数据总线
1
同步
2 个周期
0
PSA
8
TMR0
溢出时将标志位
T0IF 置 1
WDTE
SWDTEN
31 kHz
INTOSC
注 1: T0SE 、 T0CS 、 PSA 和 PS<2:0> 均为 OPTION 寄存器中的位。
2: SWDTEN 和 WDTPS<3:0> 为 WDTCON 寄存器中的位。
3: WDTE 位在配置字寄存器中。
看门狗
定时器
PSA
16 位
预分频器
16
WDTPS<3:0>
8
PS<2:0>
PSA
1
WDT
0
超时
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 81 页
PIC16F631/677/685/687/689/690
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 )
BANKSELTMR0 ;
CLRWDT ;Clear WDT
CLRF TMR0 ;Clear TMR0 and
; prescaler
BANKSELOPTION_REG ;
BSF OPTION_REG,PSA ;Select WDT
CLRWDT ;
;
MOVLWb’11111000’ ;Mask prescaler
ANDWFOPTION_REG,W ; bits
IORLWb’00000101’ ;Set WDT prescaler
MOVWFOPTION_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 中断
TM0 寄存器从 FFh 溢出到 00h 时,Timer0 将产生中断。
INTCON 寄存器的 T0IF 中断标志位将在每次 TMR0 寄
存器溢出时被置 1 ,无论是否允许了 Timer0 中断。必须
用软件将 T0IF 位清零。Timer0 中断允许位是 INTCON
寄存器的 T0IE 位。
注: 由于定时器在休眠时被冻结,因此 Timer0
中断无法将处理器从休眠中唤醒。
5.1.5 TIMER0 与外部时钟配合使用
Timer0 处理计数器模式时, T0CKI 输入和 Timer0 寄存
器的同步是通过采样内部相位时钟的 Q2 和 Q4 周期实
现的。因此,外部时钟源的高低周期必须满足第 17.0 节
“电气特性”中所列的时序要求。
DS41262C_CN 第 82 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
寄存器 5-1: OPTION_REG:选项寄存器
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
RABPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
bit 7 bit 0
图注:
R = 可读位 W = 可写位
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
U = 未实现位,读为 0
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2-0
RABPU
: PORTA/PORTB 上拉使能位
1 = 使能 PORTA/PORTB 上拉
0 = PORTA/PORTB 上拉由各端口锁存器值使能
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
注 1 : 有一个专用的 16 位 WDT 后分频器。更多信息请参见第 14.5 节 “看门狗定时器 (WDT )”。
表 5-1 :与TIMER0 相关的寄存器汇总
名称
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
INTCON GIE
OPTION_REG
TMR0
TRISA
RABPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
Timer0 模块寄存器
— — TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 --11 1111
PEIE T0IE INTE RABIE T0IF INTF RABIF 0000 0000 0000 0000
POR 和
BOR 时的值
xxxx xxxx uuuu uuuu
图注: – = 未实现单元,读为 0, u = 不变, x = 未知。 Timer0 模块不使用阴影单元。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 83 页
所有其他
复位值
PIC16F631/677/685/687/689/690
6.0 带门控的 TIMER1 模块
Timer1 模块是 16 位定时器 / 计数器,具备以下特性:
• 一对 16 位定时器 / 计数器寄存器
( TMR1H:TMR1L)
• 可编程内部或外部时钟源
•3位预分频器
• 可选 LP 振荡器
• 同步或异步操作
• 通过比较器或 T1G
能)
• 溢出中断
• 溢出时唤醒 (仅限外部时钟且异步模式时)
• 捕捉 / 比较功能的时基
(仅限 PIC16F685/PIC16F690)
• 特殊事件触发 (带 ECCP)
(仅限 PIC16F685/PIC16F690)
• 比较器输出与 Timer1 时钟同步
图 6-1 是 Timer1 模块的框图。
图 6-1 : TIMER1 框图
引脚的 Timer1 门控 (计数使
6.1 Timer1 的工作原理
Timer1 模块是 16 位递增计数器,通过一对寄存器
TMR1H:TMR1L 访问。对 TMR1H 或 TMR1L 的写操作
将直接更新计数器。
与内部时钟源配合使用时,该模块为定时器。与外部时
钟源配合使用时,该模块可用作定时器或计数器。
6.2 选择时钟源
T1CON 寄存器的 TMR1CS 位用于选择时钟源。当
TMR1CS = 0 时,时钟源为 F
时钟源由外部提供。
时钟源
T1OSCEN
FOSC /4 x xxx 0
T1CKI 引脚 0 xxx 1
T1LPOSC 1
OSC/4。 TMR1CS = 1 时,
FOSC
模式
TMR1CS
LP 或
INTOSCIO
TMR1GE
T1GINV
1
溢出时将标志位
TMR1IF 置 1
TMR1H TMR1L
振荡器
OSC1/T1CKI
OSC2/T1G
T1OSCEN
FOSC = 100
OSC = 000
F
休眠
*ST 缓冲器在使用 LP 振荡器时为低功耗型,使用 T1CKI 时为高速型。
注 1 : Timer1 寄存器在上升沿递增。
2 : 休眠时不进行同步。
TMR1
TMR1ON
至 C2 比较器模块
(1)
EN
*
FOSC /4
内部时钟
Timer1 时钟
1
0
TMR1CS
0
1
T1SYNC
预分频器
1, 2, 4, 8
2
T1CKPS<1:0>
SYNCC2OUT
同步时钟输入
同步检测
1
0
T1GSS
(2)
DS41262C_CN 第 84 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
6.2.1 内部时钟源
选择内部时钟源时, TMR1H:TMR1L 这对寄存器将在
FOSC 的某个倍数递增,倍数由 Timer1 预分频器决定。
6.2.2 外部时钟源
选择外部时钟源时,Timer1 模块可作为定时器,也可作
为计数器工作。
计数时,Timer1 在外部时钟输入 T1CKI 的上升沿递增。
此外,计数器模式时钟可同步到单片机系统时钟,也可
异步运行。
若需外部时钟振荡器 (且单片机使用不带 CLKOUT 的
INTOSC ), 则 Timer1 可使用 LP 振荡器作为时钟源。
注: 在计数器模式下,发生以下任何一个或多
个情况后,计数器在首个上升沿递增前,
必须先经过一个下降沿:
•POR复位后使能 Timer1
• 写入 TMR1H 或 TMR1L
•Timer1被禁止
•T1CKI为高电平时 Timer1 被禁止
(TMR1ON = 0 ),然后在 T1CKI 为
低电平时 Timer1 被使能
(TMR1ON= 1 )。
请参见图 6-2 。
6.3 Timer1 预分频器
Timer1 有四种预分频选项,可对时钟输入进行 1、2 、4
或 8 分频。 T1CON 寄存器的 T1CKPS 位控制预分频计
数器。预分频计数器不可直接读写;但当发生对TMR1H
或 TMR1L 的写操作时,预分频计数器被清零。
6.4 Timer1 振荡器
OSC1 (输入)引脚与 OSC2 (放大器输出)引脚之间
内置有一个低功耗 32.768 kHz 晶振。将 T1CON 寄存器
的 T1OSCEN 控制位置 1 使能振荡器。休眠时振荡器继
续工作。
Timer1 振荡器与系统 LP 振荡器共用。这样,Timer1 就
只能在主系统时钟来自内部振荡器或振荡器处于 LP 模
式时使用此模式。用户必须提供软件延时以确保振荡器
正常起振。
Timer1 振荡器被使能时, TRISA5 和 TRISA4 位置 1。
RA5 和 RA4 位读为 0 且 TRISA5 和 TRISA4 位读为 1 。
注: 振荡器在使用前需要一段起振和稳定时
间。这样,应将 T1OSCEN 置 1 并在使能
Timer1 前应有一段适当的延时。
6.5 Timer1 工作于异步计数器模式下
若 T1CON 寄存器的控制位 T1SYNC 置 1 ,则外部时钟
输入不同步。定时器与内部相位时钟异步递增。若选择
了外部时钟源,则定时器将在休眠时继续运行,并可在
溢出时产生中断,唤醒处理器。然而,读写定时器时应
特别谨慎 (见第 6.5.1 节 “在异步计数器模式下读写
Timer1 ”)。
注: 从同步操作切换为异步操作时,有可能错
过一次递增从异步操作切换为同步操作
时,有可能多产生一次递增。
6.5.1 在异步计数器模式下读写 TIMER1
定时器运行于外部异步时钟时,读取 TMR1H 或 TMR1L
将确保读操作有效 (由硬件负责)。然而,应该注意的
是,用两个 8 位值来读取 16 位定时器本身就会产生某
些问题,这是因为定时器可能在两次读操作之间产生溢
出。
对于写操作,建议用户直接停止计数器,然后写入所期
望的值。如果寄存器正进行递增计数,对定时器寄存器
进行写操作,可能会导致写入竞争,从而可能在
TMR1H:TMR1L 这对寄存器中产生不可预测的值。
6.6 Timer1 门控
Timer1 门控源可软件配置为 T1G 引脚或比较器 C2 的输
出。这使器件可直接使用 T1G 为外部事件定时,或使用
比较器 C2 对模拟事件定时。 Timer1 门控源的选择请参
见 CM2CON1 寄存器 (寄存器 8-3 )。这个特性可以简
化Δ - Σ A/D 转换器和许多其他应用的程序。有关Δ - Σ
A/D 转换器的更多信息,请参见 Microchip 网站
(www.microchip.com )。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 85 页
PIC16F631/677/685/687/689/690
注: T1CON 寄存器的 TMR1GE 位必须置 1 以
将 T1G 或 C2OUT 用作 Timer1 门控源。更
多有关选择 Timer1 门控源的信息,请参见
CM2CON1 寄存器 (寄存器 8-3 )。
使用 T1CON 寄存器的 T1GINV 位可翻转 Timer1 门控,
不论其来自 T1G
Timer1 以确保事件之间存在低电平有效或高电平有效
的时间。
引脚还是比较器 C2 的输出。这将配置
6.7 Timer1 中断
Timer1 的一对寄存器(TMR1H:TMR1L )递增至 FFFFh
后返回 0000h 。 Timer1 计满返回时, PIR1 寄存器的
Timer1 中断标志位被置 1 。为确保计满返回时产生中
断,您必须将以下位置 1 :
•T1CON寄存器的 TMR1ON 位
•PIE1寄存器的 TMR1IE 位
•INTCON寄存器的 PEIE 位
•INTCON寄存器的 GIE 位
在中断服务程序中将 TMR1IF 位清零将清除中断。
注: TMR1H:TTMR1L 这对寄存器和 TMR1IF位
应在允许中断前清零。
6.8 Timer1 在休眠模式下的工作原理
只有在设定异步计数器模式时,Timer1 才能在休眠模式
下工作。在该模式下,可使用外部晶振或时钟源信号使
计数器递增。要设置定时器以唤醒器件:
• 必须将 T1CON 寄存器的 TMR1ON 位置 1
• 必须将 PIE1 寄存器的 TMR1IE 位置 1
• 必须将 INTCON 寄存器的 PEIE 位置 1
• 必须将 T1CON 寄存器的 T1SYNC
• 必须将 T1CON 寄存器的 TMR1CS 位置 1
• 可将 T1CON 寄存器的 T1OSCEN 位置 1
溢出时器件将被唤醒并执行下一条指令。若 INTCON 寄
存器的 GIE 位置 1 ,器件将调用中断服务程序
(0004h )。
位置 1
在比较模式下,当 CCPR1H:CCPR1L 这对寄存器的值
与 TMR1H:TMR1L 的值匹配时,将触发一个事件。该事
件可以是特殊事件触发。
更多信息请参见第 11.0 节“增强型捕捉 / 比较 /PWM
模块”。
6.10 ECCP 特殊事件触发器
当 ECCP 配置为触发特殊事件时,触发器会将
TMR1H:TMR1L 这对寄存器清零。该特殊事件不会产生
Timer1 中断。ECCP 模块仍可配置为产生 ECCP 中断。
在此工作模式下, CCPR1H:CCPR1L 这对寄存器成为
了 Timer1 的周期寄存器。
Timer1 应同步为 F
Timer1 异步工作可导致错过特殊事件触发器。
当对 TMR1H 或 TMR1L 的写操作与一个 ECCP 特殊事
件触发器同时发生时,写操作具有优先权。
更多信息请参见第 11.2.4 节 “特殊事件触发器”。
OSC 以充分利用特殊事件触发器。
6.11 比较器同频
用于使Timer1 递增的时钟还可用于同步比较器输出。这
功能可在比较器模块中使能。
将比较器用于 Timer1 门控时,比较器输出应同步为
Timer1 。这将在比较器发生变化时确保 Timer1 不错过
递增。
更多信息请参见第 8.8.2 节 “同步比较器 C2 输出和
Timer1”。
6.9 ECCP 捕捉 / 比较时基
工作于捕捉或比较模式时, ECCP 模块使用
TMR1H:TMR1L 这对寄存器作为时基。
在捕捉模式下,TMR1H:TMR1L 这对寄存器的值在发生
某个配置好的事件时被复制到 CCPR1H:CCPR1L 这对
寄存器中。
DS41262C_CN 第 86 页 初稿 2007 Microchip Technology Inc.
图 6-2 : TIMER1 递增边沿
T1CKI = 1
TMR1 使能时
T1CKI = 0
TMR1 使能时
注 1: 箭头所指为计数器递增。
2: 在计数器模式下,在时钟的首个递增上升沿之前必须先经过一个下降沿。
PIC16F631/677/685/687/689/690
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 87 页
PIC16F631/677/685/687/689/690
6.12 Timer1 控制寄存器
如寄存器 6-1 所示, Timer1 控制寄存器 (T1CON)用
于控制 Timer1 并选择 Timer1 模块的各种功能。
寄存器 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 = 可写位
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
TMR1GE
(2)
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
U = 未实现位,读为 0
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 振荡器关闭
否则:
此位被忽略
T1SYNC
TMR1CS = 1:
1 = 不同步外部时钟输入
0 = 同步外部时钟输入
TMR1CS = 0:
此位被忽略。 Timer1 使用内部时钟
TMR1CS :Timer1 时钟源选择位
1 = 来自 T1CK1 引脚 (上升沿)的外部时钟
0 = 内部时钟 (F
TMR1ON: Timer1 打开位
1 = 使能 Timer1
0 = 停止 Timer1
: Timer1 外部时钟输入同步控制位
OSC/4)
(1)
(2)
注 1: 无论门控源为何, T1GINV 位均将翻转 Timer1 门控逻辑。
2: 必须将 TMR1GE 位置 1 以使用 T1G 引脚或 C2OUT ,使用哪个引脚作为 Timer1 的门控源由 CM2CON1
寄存器的 T1GSS 位选择。
DS41262C_CN 第 88 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
表 6-1 :与TIMER1 相关的寄存器汇总
名称
CM2CON1 MC1OUT MC2OUT
INTCON GIE PEIE
PIE1
PIR1
TMR1H
TMR1L
T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
图注: x = 未知, u = 不变, — = 未实现,读为 0 。 Timer1 模块不使用阴影单元。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — — — T1GSS C2SYNC ---- --10 ---- --10
T0IE INTE RABIE T0IF INTF RABIF 0000 0000 0000 0000
— ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000
— ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000
16 位 TMR1 寄存器的最高有效位的保持寄存器
16 位 TMR1 寄存器的最低有效位的保持寄存器
POR 和 BOR
时的值
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
TMR1CS TMR1ON 0000 0000 uuuu uuuu
所有其他
复位值
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 89 页
PIC16F631/677/685/687/689/690
注:
DS41262C_CN 第 90 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
7.0 TIMER2 模块
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 预分频器,其预分频比有 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 位清零可关闭 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
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 91 页
PIC16F631/677/685/687/689/690
寄存器 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 = 可写位
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
(1)
U = 未实现位,读为 0
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
注 1 : 仅限 PIC16F685/PIC16F690 。
表 7-1 :与TIMER2
名称
INTCON GIE PEIE
PIE1
PIR1
PR2
TMR2
T2CON
图注: x = 未知, u = 不变, — = 未实现读为 0。 Timer2 模块不使用阴影单元。
注 1 : 仅限 PIC16F685/PIC16F690 。
DS41262C_CN 第 92 页 初稿 2007 Microchip Technology Inc.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 -000 0000
— ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 -000 0000
Timer2 模块周期寄存器
8 位 TMR2 寄存器的保持寄存器
— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
(1)
相关的寄存器汇总
POR 和 BOR
时的值
T0IE INTE RABIE T0IF INTF RABIF 0000 000x 0000 000x
1111 1111 1111 1111
0000 0000 0000 0000
所有其他
复位值
PIC16F631/677/685/687/689/690
8.0 比较器模块
比较器用于接口模拟电路与数字电路,它将两个模拟电
压相比较并提供一个表示两者相对幅度数字值。比较器
由于提供了独立于程序执行以外的模拟功能,因而对于
混合信号构建模块是相当有用的。模拟比较器模块包含
以下特性:
• 独立比较器控制
• 可编程输入选择
• 有内部 / 外部比较器输出
• 可编程输出极性
• 电平变化中断
• 从休眠中唤醒
•PWM关闭
•Timer1门控 (计数使能)
• 输出与 Timer1 时钟输入同步
•SR锁存器
• 可编程和固定参考电压
注: 只有比较器 C2 可连接到 Timer1。
8.1 比较器概述
图 8-1 所示为单比较器及模拟输入电平和数字输出之间
的关系。当 V
比较器输出数字低电平。当 VIN + 的模拟电压大于 VIN -
的模拟电压时,比较器输出数字高电平。
IN + 的模拟电压小于 V IN - 的模拟电压时,
图 8-1 : 单比较器
VIN +
VIN -
VIN -
VIN +
输出
注: 比较器输出的黑色区域表示由于输入失
调和响应时间的原因导致的不确定性。
+
–
输出
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 93 页
PIC16F631/677/685/687/689/690
图 8-2 :比 较 器C1 的简化框图
固定参考
CVREF
C1CH<1:0>
C12IN0-
C12IN1-
C12IN2-
C12IN3-
C1IN+
0
MUX
1
2
0
1
MUX
2
3
C1R
0
MUX
1
注 1 : C1ON = 0 时, C1 比较器将产生 0 至异或门。
C1VREN
2: Q1 和 Q3 为四相系统时钟的两相 (F
3: 休眠模式下 Q1 保持为高电平。
图 8-3:比 较 器 C2 的简化框图
C1VIN -
C1V
IN+
C1ON
-
C1
+
(1)
C1POL
DQ
Q1
EN
Q3*RD_CM1CON0
NRESET
C1OUT
OSC)。
C1POL
DQ
EN
CL
至
数据总线
RD_CM1CON0
将 C1IF 置 1
至其他外设
C1OUT(至 SR 锁存器)
C12IN0-
C12IN1-
FixedRef
CVREF
C2VREN
C2CH<1:0>
C2IN2-
C2IN3-
C2IN+
0
MUX
1
Q1
2
Q3*RD_CM2CON0
来自 TMR1
时钟
C2R
0
1
MUX
2
3
0
1
MUX
C2VIN -
IN+
C2V
C2ON
C2
(1)
C2POL
注 1: C1ON = 0 时, C1 比较器将产生 0 至异或门。
2: Q1 和 Q3 为四相系统时钟的两相 (F
3: 休眠模式下 Q1 保持为高电平。
DQ
EN
NRESET
C2OUT
C2SYNC
DQ
OSC)。
C2POL
DQ
EN
CL
0
MUX
1
RD_CM2CON0
将 C2IF 置 1
SYNCC2OUT
至 Timer1 门控
及其他外设
至
数据总线
,SR 锁存器
DS41262C_CN 第 94 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
8.2 比较器的控制
每个比较器都有其各自的控制和配置寄存器:比较器 C1
的为 CM1CON0 ,比 较 器 C2 的为 CM2CON0 。此 外,比
较器 C2 还有另一个控制寄存器 CM2CON1 ,用于控制与
Timer1 的互动并同时读取两个比较器的输出。
CM1CON0 和 CM2CON0 寄存器(分别见寄存器 8-1 和
8-2)包含以下各项的控制位和状态位:
• 使能
• 输出选择
• 参考电压选择
• 输出选择
• 输出极性
8.2.1 比较器的使能
将 CMxCON0 寄存器的 CxON 位置 1 使能比较器工作。
将 CxON 位清零禁止比较器,使电流消耗降至最低。
8.2.2 比较器输入的选择
CMxCON0 寄存器的 CxCH<1:0> 位将四个模拟输入引
脚之一连接到比较器的反相输入端。
注: 要将CxIN+ 和C12INx- 引脚用作模拟输入,
必须将 ANSEL 寄存器中的相应位置 1 ,相
应的 TRIS 位也必须置 1 以禁止输出驱动
器。
8.2.3 比较器参考电压的选择
将 CMxCON0 寄存器的 CxR 位置 1 将内部参考电压或
模拟输入引脚连接至比较器的同相输入端。更多有关内
部参考电压模块的信息请参见第 8.9 节 “比较器的 SR
锁存器”。
8.2.4 比较器输出的选择
比较器的输出可通过读取 CMxCON0 寄存器的任一
CxOUT 位或 CM2CON1 寄存器的 MCxOUT 位来监控。
要使输出可与外部连接,以下条件必须成立:
• CMxCON0 寄存器的 CxOE 位必须置 1
• 相应的 TRIS 位必须清零
• CMxCON0 寄存器的 CxON 位必须置 1
注 1 : CxOE 位覆盖PORT 数据锁存器。将CxON
置 1 对端口的覆盖没有影响。
2 : 比较器的内部输出与每个指令周期锁存。
除非另外说明,否则外部输出不锁存。
8.2.5 比较器输出极性
翻转比较器输出与交换比较器输入的效果相同。比较器
的输出极性可通过将 CMxCON0 寄存器的 CxPOL 位置
1 翻转。将 CxPOL 位清零将产生同相输出。
表 8-1 所示为包括极性控制在内的输出状态与输入条件
的比较。
表 8-1 : 比较器输出状态—输入条件
输入条件
CxVIN - > CxVIN + 00
CxVIN - < CxVIN + 01
CxV
IN- > CxV IN+ 11
CxV
IN- < CxV IN+ 10
CxPOL CxOUT
8.3 比较器的响应时间
在比较器的一个输入源发生改变或选择了另一个参考电
压后,比较器的输出在一段时间内无法确定。这段时间
称为响应时间。比较器的响应时间随参考电压的稳定时
间不同而不同。因此,在确定比较器输入改变时的总响
应时间时,必须将这两个时间考虑在内。详性请参见第
17.0 节 “电气特性”中比较器和参考电压规范。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 95 页
PIC16F631/677/685/687/689/690
8.4 比较器中断的工作原理
只要比较器的输出值有所变化,比较器的中断标志就可
以被置 1 。变化的识别是通过由两个锁存器和一个异或
门组成的失配电路 (见图 8-2 和图 8-3 )来实现的。当
读取 CMxCON0 寄存器时,一个锁存器被比较器输出电
平更新。该锁存器保存该值直到下次读取 CMxCON0 寄
存器或发生复位。失配电路的另一个锁存器被系统时钟
的每个 Q1 更新。在 Q1 时钟周期,当比较器输出的变
化送达第二个锁存器时,将产生失配条件。此时,失配
的两个锁存器中有着相反的输出电平,这两个电平被异
或门检测到并输送给中断电路。失配条件将持续到
CMxCON0 寄存器被读取或比较器输出返回到先前的状
态为止。
注 1 : 对 CMxCON0 寄存器执行写操作也将清除
失配条件,这是因为所有写周期开始时均
包含读操作。
2 : 无论 CxOE 状态如何,比较器中断均将正
常执行。
比较器中断由失配边沿而非失配电平设置。这意味着中
断标志无需多加一个读取或写入CMxCON0 寄存器以清
零失配寄存器的步骤即可复位。失配寄存器被清零后,
在比较器返回先前的状态时将产生中断,否则不会产生
中断。
软件必须保存从 CMxCON0寄存器或 CM2CON1 寄存器
读取的比较器输出信息,以确定实际发生的变化。
PIR1 寄存器的 CxIF 位是比较器中断标志。该位必须用
软件将其清零而复位。该寄存器也可被置 1 产生中断。
PIE1 寄存器的 CxIE 位和 INTCON 寄存器的 PEIE 和
GIE 位必须都置 1 以允许比较器中断。如果其中任一位
清零,则中断不被允许,然而 PIR1 寄存器的 CxIF 位仍
将在中断条件发生时被置 1 。
图 8-4 :不 读 取CMxCON0 时的比较器中断
时序
Q1
Q3
CxIN+
Cxout
将 CxIF 置 1(边沿)
CxIF
TRT
用软件复位
图 8-5 :读 取CMxCON0 时的比较器中断时
序
Q1
Q3
CxIN+
Cxout
将 CxIF 置 1(边沿)
CxIF
通过读 CMxCON0 清零
注 1 : 如果在读操作正在执行时不得不改变
2 : 当任一比较器先被使能时,比较器模块中
TRT
用软件复位
CMxCON0 寄存器 (CxOUT )( Q2 周期
的起始),则 PIR1 寄存器的 CxIF 中断标
志不一定会被置 1 。
的偏置电路可产生无效的比较器输出,直
到偏置电路稳定为止。应留有 1 µs 偏置电
路稳定时间,然后在使能比较器中断前清
除失配条件,并将中断标志清零。
DS41262C_CN 第 96 页 初稿 2007 Microchip Technology Inc.
PIC16F631/677/685/687/689/690
8.5 休眠时的操作
如果在比较器进入休眠模式前将其使能,它将在休眠期
间保持激活状态。比较器消耗的额外电流在第 17.0 节
“电气特性”中单独列出。如果不使用比较器唤醒器件,
可将比较器关闭,使其在休眠期间的功耗降至最低。通
过将 CMxCON0 寄存器的 CxON 位清零可关闭各个比较
器。
比较器输出变化可将器件从休眠模式唤醒。要使能比较
器唤醒休眠的器件的功能,必须将 PIE1 寄存器的 CxIE
位和 INTCON 寄存器的 PEIE 位置 1 。器件从休眠唤醒
后,将始终执行紧随休眠指令之后的一条指令。如果
INTCON 寄存器的 GIE 位也被置 1 ,器件将执行中断服
务程序。
8.6 复位的影响
器件复位强制 CMxCON0 和 CM2CON1 寄存器回到其
复位状态。这将使比较器及参考电压回到关闭状态。
2007 Microchip Technology Inc. 初稿 DS41262C_CN 第 97 页
PIC16F631/677/685/687/689/690
寄存器 8-1: CM1CON0:比较器 C1 控制寄存器 0
R/W-0 R-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0
C1ON C1OUT C1OE C1POL — C1R C1CH1 C1CH0
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-0
C1ON :比较器 C1 使能位
1 = 比较器 C1 被使能
0 = 比较器 C1 被禁止
C1OUT :比较器 C1 输出位
如果
C1POL = 1 (极性相反):
C1OUT = 0, C1VIN + > C1VIN - 时
C1OUT = 1, C1V
如果
C1POL = 0 (极性相同):
C1OUT = 1, C1VIN + > C1VIN - 时
C1OUT = 0, C1V
C1OE :比较器 C1 输出使能位
1 = C1OUT 在 C1OUT 引脚上
0 = C1OUT 仅在内部
C2POL:比较器 C2 输出极性选择位
1 = C2OUT 逻辑反相
0 = C2OUT 逻辑同相
未实现:读为 0
C1R:比较器 C1 参考电压选择位 (同相输入)
1 = C1V
0 = C1VIN + 连接到 C1IN+ 引脚
C1CH<1:0>:比较器 C1 通道选择位
00 = C1 的 C1VIN - 连接到 C12IN0- 引脚
01 = C1 的 C1V
10 = C1 的 C1VIN - 连接到 C12IN2- 引脚
11 = C1 的 C1VIN - 连接到 C12IN3- 引脚
IN+ 连接到 C1V REF 输出
IN+ < C1V IN- 时
IN+ < C1V IN- 时
(1)
IN - 连接到 C12IN1- 引脚
注 1 : 比较器输出需满足以下三个条件:C1OE = 1 , C1ON = 1 且相应 PORT 的 TRIS 位 = 0 。
DS41262C_CN 第 98 页 初稿 2007 Microchip Technology Inc.