PIC16F627A/628A/648A
深圳市粤原点科技有限公司
(Microchip Authorized Design Partner)指定授权
总部地址:深圳市福田区福虹路世贸广场C座1103座
Add: Room 1103,Block C,World Trade Plaza,
9Fuhong Road,Futian District Shen Zhen City
电话(tel) :86-755-83666321,83666320,83666325
传真(fax) :86-755-83666329
Web: WWW.ORIGIN-GD.COM
E-mail:01@LZmcu.com abc85185@163.com
联系人:马先生,王小姐,汤小姐
在线咨询:QQ:42513912 MSN:action_tech@hotmail.com
7x24小时在线产品咨询:13509674380 13798484366
数据手册
采用纳瓦技术的
8 位 CMOS 闪存单片机
2005 Microchip Technology Inc. DS40044D_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
• Microchip 的产品均达到 Microchip 数据手册中所述的技术指标。
• Microchip 确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的
操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
• Microchip 愿与那些注重代码完整性的客户合作。
• Microchip 或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视
为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act )》。如果这种行为导致他人在未经授权的情况下,能访问您的
软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。Microchip
Technology Inc. 及其分公司和相关公司、各级主管与员工及
事务代理机构对译文中可能存在的任何差错不承担任何责任。
建议参考 Microchip Technology Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便
利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或
暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用
性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。未经 Microchip 书面批准,不得
将 Microchip 的产品用作生命维持系统中的关键组件。在
Microchip 知识产权保护下,不得暗中或以其他方式转让任何
许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron、
dsPIC、 K
EEL OQ、 microID 、 MPLAB、 PIC、 PICmicro、
PICSTART、 PRO MATE、 PowerSmart、 rfPIC 和
SmartShunt 均为 Microchip Technology Inc. 在美国和其他国
家或地区的注册商标。
AmpLab、 FilterLab、 Migratable Memory、 MXDEV、
MXLAB、 PICMASTER、 SEEVAL、 SmartSensor 和 The
Embedded Control Solutions Company 均为 Microchip
Technology Inc. 在美国的注册商标。
Analog-for-the-Digital Age、 Application Maestro、
dsPICDEM、 dsPICDEM.net、 dsPICworks、 ECAN、
ECONOMONITOR、 FanSense、 FlexROM、 fuzzyLAB、
In-Circuit Serial Programming、 ICSP、 ICEPIC、 Linear
Active Thermistor、 MPASM、 MPLIB、 MPLINK、 MPSIM、
PICkit、 PICDEM、 PICDEM.net、 PICLAB、 PICtail、
PowerCal、 PowerInfo、 PowerMate、 PowerTool、 rfLAB、
rfPICDEM、 Select Mode、 Smart Serial、 SmartTel、 To t al
Endurance 和 WiperLock 均为 Microchip Technology Inc.在
美国和其他国家或地区的商标。
SQTP 是 Microchip Technology Inc . 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。
© 2005, Microchip Technology Inc .版权所有。
Microchip
州
10
位单片机、
性存储器和模拟产品方面的质量体系流程均符合
16949:2002
系也已通过了
位于美国亚利桑那州
Mountain View
月通过了
ISO/TS-16949:2002
KEE LOQ
。此外 ,
ISO 9001:2000
的全球总部、设计中心和晶圆生产厂均于
®
跳码器件、串行
Microchip
Chandler和Tem p e
质量体系认证。公司在
EEPROM
在开发系统的设计和生产方面的质量体
认证。
及位于加利福尼亚
、单片机 外设、非易失
ISO/TS-
2003
PICmicro
年
®
DS40044D_CN 第 ii 页 2005 Microchip Technology Inc.
8
PIC16F627A/628A/648A
采用纳瓦技术的 18 引脚 8 位 CMOS 闪存单片机
高性能 RISC CPU :
• 工作速度可从 DC 到 20 MHz
• 中断能力
• 8 级深度硬件堆栈
• 直接、间接和相对寻址模式
• 35 条单字指令
- 除了转移指令以外,所有指令均为单周期指令
单片机的特殊功能:
• 内部和外部振荡器选择:
- 高精度的内部 4MHz振荡器,出厂时精度校
准为± 1%
- 低功耗内部 48kHz 振荡器
- 可使用晶振和谐振器作为外部振荡器。
• 节能的休眠模式
• PORTB 上有可编程的弱上拉功能
• 主复位 / 输入引脚复用
• 看门狗定时器带有独立的振荡器,能保证可靠的运
行
• 低电压编程
• 在线串行编程 ( In-Circuit Serial
Programming™)(通过两个引脚进行)
• 可编程代码保护
• 欠压复位
• 上电复位
• 上电延时定时器和振荡器起振定时器
• 宽工作电压范围 (2.0V 到 5.5V)
• 工业级和扩展级温度范围
• 高耐用性闪存 /EEPROM 单元
- 闪存可经受 10 万次写操作
- EEPROM 可经受 100 万次写操作
- 数据保持期为 40 年
程序存储器 数据存储器
器件
PIC16F627A 1024 224 128 16 1
PIC16F628A 2048 224 128 16 1
PIC16F648A 4096 256 256 16 1
闪存
( 字 )
SRAM ( 字节 )EEPROM (字节 )
低功耗功能:
• 待机电流:
- 当电压为 2.0V 时,典型值为 100 nA
• 工作电流:
- 当频率为 32 kHz,电压为 2.0V 时,典型值为
- 当频率为 1MHz,电压为 2.0V 时,典型值为
• 看门狗定时器电流
- 当电压为 2.0V 时,典型值为 1 µ A
• Timer1 振荡器电流:
- 当频率为 32 kHz,电压为 2.0V 时,典型值为
• 双速内部振荡器:
- 有 4MHz和 48kHz 两种频率可供选择
- 从休眠状态唤醒 4 µ s, 3.0V,典型值
外设功能:
• 16 个具有独立方向控制的 I/O 引脚
• 较高灌 / 拉电流用于直接驱动 LED
• 模拟比较器模块带有:
- 两个模拟比较器
- 可编程的片上参考电压 ( V
- 可选择的内部或外部参考电压
- 可外部访问比较器输出
• Timer0:带 8 位可编程预分频器的 8 位定时器 / 计数
器
• Timer1 :带有外部晶振 / 时钟源功能的 16 位定时器 /
计数器
• Timer2 :带 8 位周期寄存器、预分频器和后分频器
的 8 位定时器 / 计数器
• 捕捉、比较、 PWM 模块
-16位捕捉 / 比较
-10位 PWM
• 可寻址的通用同步 / 异步收发器 USART/SCI
I/O
12 µA
120 µA
1.2 µA
CCP
(PWM)
USART
有
有
有
REF)模块。
比较器
22 / 1
22 / 1
22 / 1
定时器
8/16 位
2005 Microchip Technology Inc. DS40044D_CN 第 1 页
PIC16F627A/628A/648A
引脚图
PDIP 和 SOIC
SSOP
RA2/AN2/V
RA3/AN3/CMP1
RA4/TOCKI/CMP2
RA5/MCLR
RA1/AN1
20
PIC16F627A/628A/648A
1
REF
RA2/AN2/V
RA3/AN3/CMP1
REF
/VPP
VSS
RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN
VDD
RA0/AN0
19181615141312
2 3 4 5 6 7 8 910
VDD
RB6/T1OSO/T1CKI/PGC
RB7/T1OSI/PGD
17
SS
VSS
V
/VPP
RB0/INT
RB1/RX/DT
RA5/MCLR
RA4/TOCKI/CMP2
11 8
2
3
4
5
6
7
8
9
RB4/PGM
RB5
11
RB3/CCP1
RB2/TX/CK
PIC16F627A/628A/648A
P I C 16F 62 7A /6 28 A / 64 8A
17
16
15
14
13
12
11
10
RA1/AN1
RA0/AN0
RA7/OSC1/CLKIN
RA6/OSC2/CLKOUT
DD
V
RB7/T1OSI/PGD
RB6/T1OSO/T1CKI/PGC
RB5
RB4/PGM
28
引脚
QFN
RA5/MCLR/VPP
NC
VSS
NC
VSS
NC
RB0/INT
RA3/AN3/CMP1
RA4/T0CKI/CMP2
RA2/AN2/VREF
NC
2827262524
1
2
3
PIC16F627A/628A
4
PIC16F648A
5
6
7
8
9
10
11
NC
RB3/CCP1
RB2/TX/CK
RB1/RX/DT
RA1/AN1
12
RB4/PGM
RA0/AN0
23
13
RB5
NC
22
21
20
19
18
17
16
15
14
NC
RA7/OSC1/CLKIN
RA6/OSC2/CLKOUT
V
DD
NC
VDD
RB7/T1OSI/PGD
RB6/T1OSO/T1CKI/PGC
DS40044D_CN 第 2 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
目录
1.0 概述 ............................................................................................................................................................................................. 5
2.0 PIC16F627A/628A/648A 器件种类 .............................................................................................................................................. 7
3.0 架构综述 ...................................................................................................................................................................................... 9
4.0 存储器构成 ................................................................................................................................................................................ 15
5.0 I/O 口 ......................................................................................................................................................................................... 31
6.0 Timer0 模块 ............................................................................................................................................................................... 45
7.0 Timer1 模块 ............................................................................................................................................................................... 48
8.0 Timer2 模块 ............................................................................................................................................................................... 52
9.0 捕捉 / 比较 /PWM ( CCP)模块 ............................................................................................................................................... 55
10.0 比较器模块 ................................................................................................................................................................................ 61
11.0 参考电压模块 ............................................................................................................................................................................. 67
12.0 通用同步 / 异步收发器 ( USART)模块 .................................................................................................................................... 71
13.0 数据 EEPROM 存储器 ............................................................................................................................................................... 89
14.0 CPU 的特殊功能 ........................................................................................................................................................................ 95
15.0 指令集综述 .............................................................................................................................................................................. 115
16.0 开发支持 .................................................................................................................................................................................. 129
17.0 电气规范 .................................................................................................................................................................................. 135
18.0 直流和交流特性图表 ................................................................................................................................................................ 151
19.0 封装信息 .................................................................................................................................................................................. 163
附录 A : 数据手册版本历史 ......................................................................................................................................................... 169
附录 B : 器件差异 ....................................................................................................................................................................... 169
附录 C : 器件移植 ....................................................................................................................................................................... 170
附录 D :从 其 他PICmicro
Microchip 网站 ................................................................................................................................................................................... 171
变更通知客户服务 ............................................................................................................................................................................. 171
客户支持............................................................................................................................................................................................ 171
读者反馈表 ........................................................................................................................................................................................ 172
产品标识体系 .................................................................................................................................................................................... 177
®
器件移植到此系列............................................................................................................................ 170
致 客 户
我们旨在提供最佳文档供客户正确使用 Microchip 产品。 为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。
出版物的质量将随新文档及更新版本的推出而得到提升。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 CTRC@microchip.com ,或将本
数据手册后附的 《读者反馈表》传真到 86-21-5407 5066 。我们期待您的反馈。
最新数据手册
欲获得本数据手册的最新版本,请查询我公司的网站:
http://www.microchip.com
查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号
DS30000 的 A 版本。
勘误表
现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到
器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
• Microchip 网站 http://www.microchip.com
• 当地 Microchip 销售办事处 (见最后一页)
在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。
客户通知系统
欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。
,例如:DS30000A 是
2005 Microchip Technology Inc. DS40044D_CN 第 3 页
PIC16F627A/628A/648A
注:
DS40044D_CN 第 4 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
1.0 概述
精度双速内部振荡器。 HS 模式是高速晶振。 EC 模式则
是采用外部时钟源。
PIC16F627A/628A/648A 系列单片机是 18 引脚的 8 位
CMOS 闪存单片机,具有多用途、低成本、高性能和全
静态的特点。
®
所有 PICmicro
单片机均采用先进的 RISC 架构。
PIC16F627A/628A/648A 具有增强的内核功能、8 级深
度的堆栈以及多种内部和外部中断源。 哈佛架构独立的
指令总线和数据总线,允许同时取 14 位宽指令字与独
立的 8 位宽数据。 两级指令流水线使得除了程序转移指
令(需要两个周期)以外的所有指令都能在单个周期内
执行。 总共有 35 条指令 (精简指令集)可用,辅之以
大的寄存器组。
PIC16F627A/628A/648A 单片机与同类的其他 8 位单片
机相比,通常能实现 2:1 的代码压缩率和 4 倍的速度提
升。
PIC16F627A/628A/648A 器件集成了很多功能部件,从
休眠(断电)模式可以节能。 用户可以通过几种外部中
断、内部中断以及复位将芯片从休眠状态唤醒。
高可靠性的看门狗自带了片上 RC 振荡器,能够避免程
序锁死。
表 1-1 给出了 PIC16F627A/628A/648A 中档单片机系
列的特性。
图 3-1 是 PIC16F627A/628A/648A 的简化框图。
PIC16F627A/628A/648A 系列适合从电池充电器到低功
耗远程传感器的一系列应用。 闪存技术使得定制应用程
序 (如检测电平、脉冲产生、定时器等)变得十分便
捷。 小尺寸的封装使该系列单片机对于有空间限制的所
有应用都很理想。 低成本、低功耗、高性能、易使用以
及 I/O 的灵活性使得 PIC16F627A/628A/648A 用途非常
广泛。
而减少了外部元件的使用,因此降低了系统成本,提高
了系统可靠性,并降低了功耗。
PIC16F627A/628A/648A有 8 种振荡器配置。 单引脚的
RC 振荡器提供了低成本的解决方案。 LP 振荡器可将功
耗降至最低, XT 是标准晶振,而 INTOSC 是独立的高
1.1 开发支持
支持 PIC16F627A/628A/648A 系列的工具有:功能全面
的宏汇编器、软件模拟器、在线仿真器、低成本在线调
试器、低成本开发编程器和功能前面的编程器。 还可使
用第三方 C 编译器支持工具。
表 1-1 : PIC16F627A/628A/648A 系列器件
PIC16F627A PIC16F628A PIC16F648A PIC16LF627A PIC16LF628A PIC16LF648A
时钟 最大工作频率 (MHz)
闪存程序存储器 ( 字 )
存储器 RAM 数据存储器 ( 字节 )
EEPROM 数据存储器 ( 字节 )
定时器模块 TMR0 、 TMR1 、
比较器
外设 捕捉 / 比较 /PWM 模块
串行通信
内 部 参 考 电 压 有有有有有有
中断源
I/O 引脚
特性 电压范围 (V)
欠 压 复 位 有有有有有有
封装 18 引脚 DIP 和
PICmicro® 系列的所有器件都有上电复位、可选择的看门狗、可选择的代码保护以及高 I/O 电流性能。
PIC16F627A/628A/648A 系列的所有器件使用时钟引脚 RB6 和数据引脚 RB7 进行串行编程。
20 20 20 20 20 20
1024 2048 4096 1024 2048 4096
224 224 256 224 224 256
128 128 256 128 128 256
TMR2
222222
111111
USART USART USART USART USART USART
10 10 10 10 10 10
16 16 16 16 16 16
3.0-5.5 3.0-5.5 3.0-5.5 2.0-5.5 2.0-5.5 2.0-5.5
SOIC、 20 引脚
SSOP、 28 引脚
QFN
TMR0、 TMR1、
TMR2
18 引脚 DIP 和
SOIC、 20 引脚
SSOP、 28 引脚
QFN
TMR0、 TMR1、
TMR2
18 引脚 DIP 和
SOIC、 20 引脚
SSOP、 28 引脚
QFN
TMR0、 TMR1、
SSOP、 28 引脚
TMR2
18 引脚 DIP 和
SOIC、 20 引脚
QFN
TMR0、 TMR1、
TMR2
18 引脚 DIP 和
SOIC、 20 引脚
SSOP、 28 引脚
QFN
TMR0、 TMR1、
TMR2
18 引脚 DIP 和
SOIC、 20 引脚
SSOP、 28 引脚
QFN
2005 Microchip Technology Inc. DS40044D_CN 第 5 页
PIC16F627A/628A/648A
注:
DS40044D_CN 第 6 页 2005 Microchip Technology Inc.
2.0 PIC16F627A/628A/648A 器件种
类
有多种频率和封装类型可供选择。 根据应用和生产要
求,可以通过器件数据手册最末的“PIC16F627A/
628A/648A 产品识别体系”来选择适当的器件。 在订购
器件的时候,也请使用数据手册的这一页来指定正确的
器件编号。
2.1 闪存器件
闪存器件是电可擦除和再编程的。 这样可以在样片开
发、试用和产品生产中都使用相同的器件。
电可擦除闪存更大的优点是它可以在线或使用器件编程
器(例如 Microchip 的PICSTART
II 编程器)进行擦除或重新编程。
2.2 快速批量生产 ( Quick-Turnaround-
Production, QTP)器件
Microchip 为工厂生产订单提供 QTP 编程服务。 这种服
务适用于那些不想对中到大批量单片机编程,并且代码
已经相对稳定的用户。 这些器件是标准的闪存器件,只
是所有的编程单元和配置已在出厂前设定。 Microchip
还在出厂前对某些代码和样片进行了校验。 欲了解更详
细信息,请联系当地 Microchip 销售办事处。
®
Plus 或 PRO MATE
PIC16F627A/628A/648A
®
2.3 带序列号的快速批量生产
(Serialized Quick-Turnaround-
Production , SQTP
Microchip 提供一种独特的编程服务,可用不同的序列
号对每个器件中的几处用户自定义单元进行编程。 这些
序列号可以是随机数、伪随机数或连续数。
这种串行编程使每个器件具有唯一的序列号,可以作为
登录码、口令或用户识别码。
SM
)器件
2005 Microchip Technology Inc. DS40044D_CN 第 7 页
PIC16F627A/628A/648A
注:
DS40044D_CN 第 8 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
3.0 架构综述
PIC16F627A/628A/648A 系列的高性能可以归功于
RISC 微处理器中普遍采用的架构特点。首先,
PIC16F627A/628A/648A 采用了哈佛架构,在这个架构
中,分别使用独立的总线从独立的存储器中存取程序和
数据。 与传统的程序和数据存储器合二为一的冯·诺依
曼架构相比,哈佛架构具有更加优良的总线带宽。 独立
的程序和数据存储器允许指令宽度超过 8 位。 由于指令
操作码为14 位宽,所以所有指令都可以是单字指令。 通
过 14 位宽的程序存储器总线可以在单周期内取一条 14
位的指令。 两级流水线可以使取指和执行指令同时进
行。 因此,除了程序转移指令以外,所有指令(35 条)
都可以在单周期 (时钟频率为 20 MHz 时为 200ns )内
执行。
表 3-1 所列为器件的存储器容量(闪存、数据存储器和
EEPROM )。
表 3-1 : 器件存储器列表
存储器
器件
PIC16F627A 1024 x 14 224 x 8 128 x 8
PIC16F628A 2048 x 14 224 x 8 128 x 8
PIC16F648A 4096 x 14 256 x 8 256 x 8
PIC16LF627A 1024 x 14 224 x 8 128 x 8
PIC16LF628A 2048 x 14 224 x 8 128 x 8
PIC16LF648A 4096 x 14 256 x 8 256 x 8
闪存
程序
数据
RAM数据EEPROM
PIC16F627A/628A/648A 可以直接或间接的寻址它的文
件寄存器或数据存储器。 所有特殊功能寄存器(Special
Function Register , SFR ),包括程序计数器,都映射
到数据存储器空间。 PIC16F627A/628A/648A 有一个正
交 (对称)指令集,因此它可以使用任何寻址模式对任
一寄存器执行任何操作。 指令集的对称特性以及无“特
别理想状态”让使用 PIC16F627A/628A/648A 编程更简
单有效。 此外,所有这些都显著地简化了学习过程。
PIC16F627A/628A/648A 器件包含一个 8 位 ALU 和工作
寄存器。 ALU 是一个通用的算术单元。 它对工作寄存器
和任何文件寄存器中的数据进行算术和布尔运算。
ALU 为 8 位宽,能够进行加、减、移位和逻辑操作。 除
非特别指明,否则算术运算一般是以 2 进制补码的形式
进行的。 在双操作数指令中,一般情况下,其中的一个
操作数是在工作寄存器(W 寄存器)中。 另一个操作数
存放在一个文件寄存器中或是立即数。 在单操作数指令
中,操作数放在 W 寄存器中或某个文件寄存器中。
W 寄存器是一个 8 位宽、用于 ALU 运算的工作寄存器。
该寄存器不可寻址。
根据所执行的指令,ALU 可能影响 Status 寄存器中的进
位标志位 C 、辅助进位标志位 DC 和全零标志位 Z 。 在
减法操作中,C 和 DC 位分别作为借位和辅助借位标志
位。 例如指令 SUBLW 和 SUBWF 。
图 3-1 给出了简化框图,表 3-2 对器件引脚作了描述。
PIC16F627A/628A/648A 器件上提供了两种类型的数据
存储器。 所提供的非易失性 EEPROM 数据存储器用于
长期存储数据,例如校准值、查表数据以及其他可能需
要现场定期更新的数据。 这些数据类型不会在掉电时丢
失。 所提供的另一个数据存储器是常规的 RAM 数据存
储器。 常规的 RAM 数据存储器用于对正常操作中的数
据进行临时存储。 这些数据会在掉电时丢失。
2005 Microchip Technology Inc. DS40044D_CN 第 9 页
PIC16F627A/628A/648A
图 3-1: 结构框图
程序
总线
OSC1/CLKIN
OSC2/CLKOUT
闪存
程序
存储器
14
指令寄存器
指令
译码与
控制
时序
产生
13
8
程序计数器
8 级堆栈
(13 位)
直接寻址
上电延时
定时器
振荡器
起振定时器
上电
复位
看门狗
定时器
欠压
复位
低电压
编程
RAM 地址(1)
7
3
8
数据总线
RAM
文件
寄存器
9
地址多路开关
8
FSR 寄存器
Stat us 寄存器
MUX
ALU
W 寄存器
8
间接
寻址
PORTA
PORTB
RA0/AN0
RA1/AN1
RA2/AN2/VREF
RA3/AN3/CMP1
RA4/T0CK1/CMP2
RA5/MCLR
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN
RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RB4/PGM
RB5
RB6/T1OSO/T1CKI/PGC
RB7/T1OSI/PGD
/VPP
MCLR
比较器
VREF
Timer0 Timer1 Timer2
注: 高位来自 Status 寄存器。
VDD , VSS
USART CCP1
数据 EEPROM
DS40044D_CN 第 10 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
表 3-2 : PIC16F627A/628A/648A 引脚配置描述
名称 功能 输入类型 输出类型 描述
RA0/AN0 RA0 ST CMOS
AN0 AN
RA1/AN1 RA1 ST CMOS
AN1 AN
RA2/AN2/V
RA3/AN3/CMP1 RA3 ST CMOS
RA4/T0CKI/CMP2 RA4 ST OD
RA5/MCLR
RA6/OSC2/CLKOUT RA6 ST CMOS
RA7/OSC1/CLKIN RA7 ST CMOS
RB0/INT RB0 TTL CMOS
RB1/RX/DT RB1 TTL CMOS
RB2/TX/CK RB2 TTL CMOS
RB3/CCP1 RB3 TTL CMOS
图注: O=输出 CMOS = CMOS 输出 P=电源
REF RA2 ST CMOS
AN2 AN
REF
V
AN3 AN
CMP1
T0CKI ST
CMP2
/VPP RA5
MCLR
PP
V
OSC2
CLKOUT
OSC1 XTAL
CLKIN ST
INT ST
RX ST
DT ST CMOS
TX
CK ST CMOS
CCP1 ST CMOS
— =未使用 I = 输入 ST = 施密特触发器输入
TTL = TTL 输入 OD = 漏极开路输出 AN = 模拟
-
-
-
ST
ST
- - 编程电压输入
-
-
-
- 模拟比较器输入
- 模拟比较器输入
- 模拟比较器输入
AN
- 模拟比较器输入
CMOS
- Timer0 时钟输入
OD
- 输入端口
-
XTAL
CMOS
- 振荡器晶振输入
- 外部时钟源输入。 RC 偏置引脚。
- 外部中断。
- USART 接收引脚
CMOS
双向 I/O 端口
双向 I/O 端口
双向 I/O 端口
V REF 输出
双向 I/O 端口
比较器 1 输出
双向 I/O 端口
比较器 2 输出
主复位。 如果将引脚配置为 MCLR
低电平有效的引脚,即低电平时器件复位。 器
件正常运行时 MCLR/VPP 上的电压不能超过
DD 。
V
双向 I/O 端口
振荡器晶振输出。 在晶体振荡器模式连接到晶
振或谐振器。
在 RC/INTOSC 模式, OSC2 引脚可以输出
CLKOUT ,其频率为 OSC1 的 1/4 。
双向 I/O 端口
双向 I/O 端口。 可以软件编程实现内部弱上
拉。
双向 I/O 端口。 可以软件编程实现内部弱上
拉。
同步数据 I/O
双向 I/O 端口。 可以软件编程实现内部弱上
拉。
USART 发送引脚
同步时钟 I/O
双向 I/O 端口。 可以软件编程实现内部弱上
拉。
捕捉 / 比较 /PWM I/O
,这是一个
2005 Microchip Technology Inc. DS40044D_CN 第 11 页
PIC16F627A/628A/648A
表 3-2 : PIC16F627A/628A/648A 引脚配置描述 (续)
名称 功能 输入类型 输出类型 描述
RB4/PGM RB4 TTL CMOS
PGM ST
RB5 RB5 TTL CMOS
RB6/T1OSO/T1CKI/PGC RB6 TTL CMOS
T1OSO
T1CKI ST
PGC ST
RB7/T1OSI/PGD RB7 TTL CMOS
T1OSI XTAL
PGD ST CMOS
V
SS V SS
DD V DD
V
图注: O=输出 CMOS = CMOS 输出 P=电源
— =未使用 I = 输入 ST = 施密特触发器输入
TTL = TTL 输入 OD = 漏极开路输出 AN = 模拟
-
电源 - 逻辑和 I/O 引脚的接地参考点
电源 - 逻辑和 I/O 引脚的正电源
- 低电压编程输入引脚。 当低电压编程被使能
XTAL
- Timer1 时钟输入。
- ICSP
- Timer1 振荡器输入。
双向 I/O 端口。 引脚电平变化可触发中断。 可
以软件编程实现内部弱上拉。
时,禁止引脚电平变化触发中断以及弱上拉电
阻。
双向 I/O 端口。 引脚电平变化可触发中断。 可
以软件编程实现内部弱上拉。
双向 I/O 端口。 引脚电平变化可触发中断。 可
以软件编程实现内部弱上拉。
Timer1 振荡器输出。
TM
编程时钟。
双向 I/O 端口。 引脚电平变化可触发中断。 可
以软件编程实现内部弱上拉。
ICSP 数据 I/O
DS40044D_CN 第 12 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
3.1 时序图 / 指令周期
时钟输入 (OSC1/CLKIN/RA7 引脚)信号在器件内部
经过 4 分频后产生 4 个不重叠的正交时钟信号,即 Q1 、
Q2 、Q3 和 Q4 。 在此过程中,程序计数器(PC )在每
个 Q1 时递增 1 ,并在 Q4 时从程序存储器取指并将指令
锁存到指令寄存器中。 在接下来的 Q1 到 Q4 周期中进
行指令的译码和执行。 图 3-2所示为时钟和指令执行流
程。
图 3-2 :时 钟/ 指令周期
Q2 Q3 Q4
OSC1
Q1
Q2
Q3
Q4
PC
CLKOUT
Q1
PC PC+1 PC+2
取指(PC )
执行指令(PC-1 )取 指 (PC+1)
Q1
3.2 指令流 / 流水线
一个指令周期由 4 个 Q 周期组成 (Q1 、 Q2 、 Q3 和
Q4 )。 取指和执行指令是流水线操作的,用一个指令周
期来取指,而用另一个指令周期来译码和执行取到的指
令。 但由于是流水线操作,所以每条指令的等效执行时
间都是一个指令周期。 如果指令(例如,GOTO)改变
了程序计数器,则需要两个指令周期来完成指令
(例 3-1 )。
在 Q1 周期开始取指操作,程序计数器 (PC )加 1 。
指令的执行过程:在 Q1 周期,将所取指令锁存到指令
寄存器(IR )。 在 Q2 、Q3 和 Q4 周期中进行指令的译
码和执行。 其中读数据存储器 (读操作数)发生在 Q2
周期,写操作发生在 Q4 周期 (写入目标单元)。
Q2 Q3 Q4
执行指令( PC)取 指 ( PC+2)
Q2 Q3 Q4
Q1
执行指令(PC+1 )
内部
相位
时钟
例 3-1 : 指令流水线流程图
1. MOVLW 55h
2. MOVWF PORTB
3. CALL SUB_1
4. BSF PORTA, 3
注: 除程序转移指令外,所有指令都是单周期指令。 由于程序转移指令导致取出的指令被从流水线中舍弃,需要重
新取指再执行指令,所以程序转移指令需要两个周期。
取指 1 执行 1
取指 2 执行 2
取指 3 执行 3
取指 4
舍弃
取指 SUB_1 执行 SUB_1
2005 Microchip Technology Inc. DS40044D_CN 第 13 页
PIC16F627A/628A/648A
注:
DS40044D_CN 第 14 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
4.0 存储器构成
4.1 程序存储器构成
PIC16F627A/628A/648A 有一个 13 位的程序计数器,
能寻址 8K x 14 的程序存储器空间。物理实现的只有
PIC16F627A 使用的第一个 1K x 14 (0000h - 03FFh )
单元、PIC16F628A 使用的 2K x 14(0000h - 07FFh )
单元和 PIC16F648A 使用的 4K x 14 (0000h-0FFFH )
单元。对超出以上范围的单元寻址时,将会导致在第一
个 1K x 14 空间 (PIC16F627A)、2K x 14 空间
(PIC16F628A )或 4K x 14 空间 (PIC16F648A )内部
溢出返回。复位矢量位于 0000h ,中断矢量位于 0004h
(图 4-1 )。
图 4-1 : 程序存储器映射和堆栈
PC<12:0>
CALL, RETURN
RETFIE, RETLW
PIC16F627A、
PIC16F628A 和
PIC16F648A
PIC16F628A 和
PIC16F648A
堆栈深度 1
堆栈深度 2
堆栈深度 8
复位矢量
中断矢量
片上程序
存储器
片上程序
存储器
13
0000h
0004
0005
03FFh
07FFh
4.2 数据存储器构成
数据存储器 (图 4-2 和图 4-3 )被划分为 4 块存储区,
其中包含通用寄存器 (General Purpose Register ,
GPR)和特殊功能寄存器(Special Function Register,
SFR)。 SFR 位于每个存储区的前 32 个存储单元。每
个存储区中的通用寄存器都是以静态 RAM 的形式实现
的。表 4-1 列出了这 4 个存储区中可用作通用寄存器的
区域。
表 4-1 :通 用 静 态RAM 寄存器
PIC16F627A/628A PIC16F648A
存储区 0
存储区 1
存储区 2
存储区 3
地址为 F0h-FFh 、 170h-17Fh 和 1F0h-1FFh 的存储单
元是以通用 RAM 的形式实现的,并映射回地址为 70h-
7Fh 的单元。
表 4-2 说明了如何通过 Status 寄存器的 RP1 和 RP0 位
访问这 4 个存储区中的寄存器。
120h-14Fh, 170h-17Fh 120h-17Fh
表 4-2 : 访问存储区中的寄存器
存储区
0 00
1 01
2 10
3 11
4.2.1 通用文件寄存器
文件寄存器在 PIC16F627A/628A 中被组织为 224 x 8 ,
而在 PIC16F648A 中则是 256 x 8 。可直接访问或通过
指针寄存器 (File Select Register , FSR )间接访问每
个寄存器,参见第 4.4 节 “间接寻址、INDF 和 FSR 寄
存器”。
20-7Fh 20-7Fh
A0h-FF A0h-FF
1F0h-1FFh 1F0h-1FFh
RP1 RP0
片上程序
存储器
仅 PIC16F648A
0FFFh
1FFFh
2005 Microchip Technology Inc. DS40044D_CN 第 15 页
PIC16F627A/628A/648A
图 4-2 : PIC16F627A 和 PIC16F628A 的数据存储器映射
文件
地址
间接地址
TMR0
PCL
STATUS
FSR
PORTA
PORTB
PCLATH
INTCON
PIR1
TMR1L
TMR1H
T1CON
TMR2
T2CON
CCPR1L
CCPR1H
CCP1CON
RCSTA
TXREG
RCREG
CMCON
通用
寄存器
80 字节
OPTION
PCL
STATUS
FSR
TRISA
TRISB
PCLATH
INTCON
PIE1
PCON
PR2
TXSTA
SPBRG
EEDATA
EEADR
EECON1
VRCON
通用
80 字节
(1)
80h
81h
82h
83h
84h
85h
86h
87h
88h
89h
8Ah
8Bh
8Ch
8Dh
8Eh
8Fh
90h
91h
92h
93h
94h
95h
96h
97h
98h
99h
9Ah
9Bh
9Ch
(1)
9Dh
9Eh
9Fh
A0h
间接地址
寄存器
(1)
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
10h
11h
12h
13h
14h
15h
16h
17h
18h
19h
1Ah
1Bh
1Ch
1Dh
1Eh
1Fh
20h
间接地址
EECON2
寄存器
TMR0
PCL
STATUS
FSR
PORTB
PCLATH
INTCON
通用
48 字节
(1)
100h
101h
102h
103h
104h
105h
106h
107h
108h
109h
10Ah
10Bh
10Ch
10Dh
10Eh
10Fh
11F h
120h
14Fh
150h
间接地址
OPTION
PCL
STATUS
FSR
TRISB
PCLATH
INTCON
(1)
180h
181h
182h
183h
184h
185h
186h
187h
188h
189h
18Ah
18Bh
18Ch
18Dh
18Eh
18Fh
6Fh
16 字节
70h
7Fh
存储区 0
未实现的数据存储器单元,读作 0。
注 1 : 非物理寄存器。
DS40044D_CN 第 16 页 2005 Microchip Technology Inc.
快速存取存储区
70h-7Fh
存储区 1
EFh
F0h
FFh
快速存取存储区
70h-7Fh
存储区 2
16Fh
170h
17Fh 1FFh
快速存取存储区
70h-7Fh
存储区 3
1EFh
1F0h
图 4-3: PIC16F648A 的数据存储器映射
PIC16F627A/628A/648A
文件
地址
间接地址
TMR0
PCL
STATUS
FSR
PORTA
PORTB
PCLATH
INTCON
PIR1
TMR1L
TMR1H
T1CON
TMR2
T2CON
CCPR1L
CCPR1H
CCP1CON
RCSTA
TXREG
RCREG
CMCON
通用
寄存器
80 字节
OPTION
PCL
STATUS
FSR
TRISA
TRISB
PCLATH
INTCON
PIE1
PCON
PR2
TXSTA
SPBRG
EEDATA
EEADR
EECON1
VRCON
通用
80 字节
(1)
80h
81h
82h
83h
84h
85h
86h
87h
88h
89h
8Ah
8Bh
8Ch
8Dh
8Eh
8Fh
90h
91h
92h
93h
94h
95h
96h
97h
98h
99h
9Ah
9Bh
9Ch
(1)
9Dh
9Eh
9Fh
A0h
间接地址
(1)
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
10h
11h
12h
13h
14h
15h
16h
17h
18h
19h
1Ah
1Bh
1Ch
1Dh
1Eh
1Fh
20h
间接地址
EECON2
寄存器
TMR0
PCL
STATUS
FSR
PORTB
PCLATH
INTCON
通用
寄存器
80 字节
(1)
100h
101h
102h
103h
104h
105h
106h
107h
108h
109h
10Ah
10Bh
10Ch
10Dh
10Eh
10Fh
11F h
120h
间接地址
OPTION
PCL
STATUS
FSR
TRISB
PCLATH
INTCON
(1)
180h
181h
182h
183h
184h
185h
186h
187h
188h
189h
18Ah
18Bh
18Ch
18Dh
18Eh
18Fh
6Fh
16 字节
70h
7Fh
存储区 0
未实现的数据存储器单元,读作 0。
注 1 : 非物理寄存器。
2005 Microchip Technology Inc. DS40044D_CN 第 17 页
快速存取存储区
70h-7Fh
存储区 1
EFh
F0h
FFh
快速存取存储区
70h-7Fh
存储区 2
16Fh
170h
17Fh 1FFh
快速存取存储区
70h-7Fh
存储区 3
1EFh
1F0h
PIC16F627A/628A/648A
4.2.2 特殊功能寄存器
SFR 用于 CPU 和外设功能,控制器件执行期望操作的
寄存器 (表 4-3 )。这些寄存器是静态 RAM 。
这些特殊功能寄存器可以分成两类 (内核与外设)。本
节讲述与“内核”有关的 SFR 。与外设功能部件操作有
关的 SFR 将外设功能部件章节中描述。
表 4-3 : 特殊功能寄存器综述存储区 0
地址 名称
存储区 0
00h INDF
01h TMR0
02h PCL
03h STATUS
04h FSR
05h PORTA
06h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx 36
07h
08h
09h
0Ah PCLATH
0Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 24
0Ch PIR1
0Dh
0Eh TMR1L
0Fh TMR1H
10h T1CON
11h TMR 2
12h T2CON
13h
14h
15h CCPR1L
16h CCPR1H
17h CCP1CON
18h RCSTA SPEN RX9 SREN CREN ADEN FERR OERR RX9D 0000 000x 71
19h TXREG
1Ah RCREG
1Bh
1Ch
1Dh
1Eh
1Fh CMCON C2OUT C1OUT
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
对此存储单元寻址会使用 FSR 的内容对数据存储器寻址 (非物理寄存器)
Timer0 模块寄存器
程序计数器 ( PC)最低有效字节
IRP RP1 RP0 TO
间接数据存储器地址指针
RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 xxxx 0000 31
- - - 程序计数器高 5 位的写缓冲器
EEIF CMIF RCIF TXIF
16 位 TMR1 最低有效字节的保持寄存器
16 位 TMR1 最高有效字节的保持寄存器
- -
TMR2 模块寄存器
捕捉 / 比较 /PWM 寄存器 (LSB )
捕捉 / 比较 /PWM 寄存器 (MSB )
USART 发送数据寄存器
USART 接收数据寄存器
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 52
-
- -
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 55
C2INV C1INV CIS CM2 CM1 CM0 0000 0000 61
PD ZD C C
CCP1IF TMR2IF TMR1IF 0000 -000 26
-
TMR1CS TMR1ON --00 0000 48
POR 复位
时的值
xxxx xxxx 28
xxxx xxxx 45
0000 0000 28
0001 1xxx 22
xxxx xxxx 28
---0 0000 28
xxxx xxxx 48
xxxx xxxx 48
0000 0000 52
xxxx xxxx 55
xxxx xxxx 55
0000 0000 77
0000 0000 80
图注: - = 未实现单元,读作 0 , u = 未改变, x = 未知, q = 值随条件变化,
阴影 = 未实现
注 1 : 如需了解寄存器表的初始化状态,请参见表 14-6 和表 1-7 。
详情请见:
(1)
(页)
DS40044D_CN 第 18 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
表 4-4 : 特殊功能寄存器综述存储区 1
地址 名称
存储区 1
80h INDF
81h OPTION RBPU
82h PCL
83h STATUS IRP RP1 RP0 TO
84h FSR
85h TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 31
86h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 36
87h
88h
89h
8Ah PCLATH
8Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 24
8Ch PIE1 EEIE CMIE RCIE TXIE
8Dh
8Eh PCON
8Fh
90h
91h
92h PR2
93h
94h
95h
96h
97h
98h TXSTA CSRC TX9 TXEN SYNC
99h SPBRG
9Ah EEDATA
9Bh EEADR
9Ch EECON1
9Dh EECON2
9Eh
9Fh VRCON VREN VROE VRR
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
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 23
程序计数器 ( PC)最低有效字节
PD ZD CC0001 1xxx 22
间接数据存储器地址指针
- - - 程序计数器高 5 位的写缓冲器
CCP1IE TMR2IE TMR1IE 0000 -000 25
-
- - - -
Timer2 周期寄存器
波特率发生器寄存器
EEPROM 数据寄存器
EEPROM 地址寄存器
- - - -
EEPROM 控制寄存器 2 (非物理寄存器)
OSCF
-
WRERR WREN WR RD ---- x000 90
-
VR3 VR2 VR1 VR0 000- 0000 67
-
BRGH TRMT TX9D 0000 -010 73
POR
POR 复位
时的值
xxxx xxxx 28
0000 0000 28
xxxx xxxx 28
---0 0000 28
BOR ---- 1-0x 27
1111 1111 52
0000 0000 73
xxxx xxxx 89
xxxx xxxx 90
---- ---- 90
图注: - = 未实现单元,读作 0 , u = 未改变, x = 未知, q = 值随条件变化,阴影 = 未实现
注 1 : 如需了解寄存器表的初始化状态,请参见表 14-6 和表 1-7 。
详情请见:
(1)
(页)
2005 Microchip Technology Inc. DS40044D_CN 第 19 页
PIC16F627A/628A/648A
表 4-5 : 特殊功能寄存器综述存储区 2
地址 名称
存储区 2
100h INDF
101h TMR0
102h PCL
103h STATUS IRP RP1 RP0 TO
104h FSR
105h
106h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx 36
107h
108h
109h
10Ah PCLATH
10Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 24
10Ch
10Dh
10Eh
10Fh
110 h
111h
112 h
113 h
114 h
115 h
116 h
117 h
118 h
119 h
11A h
11B h
11C h
11D h
11E h
11F h
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
对此存储单元寻址会使用 FSR 的内容对数据存储器寻址 (非物理寄存器)
Timer0 模块寄存器
程序计数器 ( PC)最低有效字节
PD ZD CC0001 1xxx
间接数据存储器地址指针
- - - 程序计数器高 5 位的写缓冲器
POR 复位
时的值
xxxx xxxx 28
xxxx xxxx
0000 0000 28
xxxx xxxx 28
---0 0000 28
图注: - = 未实现单元,读作 0 , u = 未改变, x = 未知, q = 值随条件变化,阴影 = 未实现
注 1 : 如需了解寄存器表的初始化状态,请参见表 14-6 和表 1-7 。
详情请见:
(1)
(页)
45
22
DS40044D_CN 第 20 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
表 4-6 : 特殊功能寄存器综述存储区 3
地址 名称
存储区 3
180h INDF
181h OPTION RBPU
182h PCL
183h STATUS IRP RP1 RP0 TO
184h FSR
185h
186h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 36
187h
188h
189h
18Ah PCLATH
18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 24
18Ch
18Dh
18Eh
18Fh
190h
191h
192h
193h
194h
195h
196h
197h
198h
199h
19Ah
19Bh
19Ch
19Dh
19Eh
19Fh
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
- 未实现位 - -
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 23
程序计数器 ( PC)最低有效字节
PD ZD CC 0001 1xxx 22
间接数据存储器地址指针
- - - 程序计数器高 5 位的写缓冲器
POR 复位
时的值
xxxx xxxx 28
0000 0000 28
xxxx xxxx 28
---0 0000 28
图注: - = 未实现单元,读作 0 , u = 未改变, x = 未知, q = 值随条件变化,阴影 = 未实现
注 1 : 如需了解寄存器表的初始化状态,请参见表 14-6 和表 1-7 。
详情请见:
(1)
(页)
2005 Microchip Technology Inc. DS40044D_CN 第 21 页
PIC16F627A/628A/648A
4.2.2.1 STATUS 寄存器
Status 寄存器 (如寄存器 4-1 所示)含有 ALU 的算术
运算结果状态、复位状态及数据存储器 (SRAM )存储
区选择位。
与其他寄存器一样,Status 寄存器也可以是任何指令的
目标寄存器。如果 Status 寄存器作为一条影响 Z 、DC 或
C 标志位的指令的目标寄存器,则会禁止写入这三个标
志位。根据器件逻辑,这些位会置位或清零。而且,TO
和 PD 位不可写。所以执行一条把 Status 寄存器作为目
标寄存器的指令所得到的结果可能和预想的不一样。
例如,执行指令 CLRF STATUS 将会把 STATUS 寄存器
的高 3 位清零,并将 Z 位置位。这将使 Status 寄存器的
结果为 000uu1uu (其中 u 表示未变化)。
因此,建议仅使用 BCF 、 BSF 、 SWAPF 和 MOVWF 指令
去改变 Status 寄存器,因为这些指令不会影响任何状态
位。对于其他不影响任何状态位的指令,请参见“指令
集综述”。
注 1 :在减法运算中, C 和 DC 位分别作为借位
和辅助借位位。例如 SUBLW 和 SUBWF 指
令。
寄存器 4-1 : STATUS — 状态寄存器 (地址:03h、 83h、 103h、 183h)
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
IRP RP1 RP0 TO
bit 7 bit 0
bit 7 IRP:寄存器存储区选择位 (用于间接寻址)
1= 存储区 2, 3 ( 100h - 1FFh)
0= 存储区 0, 1 ( 00h - FFh)
bit 6-5 RP<1:0>:寄存器存储区选择位 (用于直接寻址)
00= 存储区 0 ( 00h - 7Fh)
01= 存储区 1 ( 80h - FFh)
10= 存储区 2 ( 100h - 17Fh)
11= 存储区 3 ( 180h - 1FFh)
bit 4 TO
bit 3 PD:掉电标志位
bit 2 Z:全零标志位
bit 1 DC:辅助进位 / 借位标志位 (ADDWF 、 ADDLW 、 SUBLW 、 SUBWF 指令影响这些标志位)(对
bit 0 C:进位 / 借位
:超时位
1= 上电后,执行 CLRWDT 指令或 SLEEP 指令
0= 发生了 WDT 超时
1= 在上电后或执行 CLRWDT 指令
0= 执行 SLEEP 指令
1= 算术运算或逻辑运算结果为零
0= 算术运算或逻辑运算结果不是零
于借位,其极性是相反的)
1= 结果中发生了第 4 低位向高位的进位
0= 结果中第 4 低位没有向高位进位
标志位 (ADDWF 、 ADDLW、 SUBLW、 SUBWF 指令影响这些标志位)
1= 结果中发生了最高位进位
0= 结果中未发生最高位进位
注: 对于借位,极性是相反的。执行减法是通过加上第二个操作数的二进制补码来完成
的。对于移位指令 (RRF 和 RLF ),此位值来自源寄存器的最高位或最低位。
PD ZD CC
图注:
R= 可读位 W= 可写位 U= 未实现位,读作 0
-n=POR 时的值 1= 置位 0= 清零 x= 未知
DS40044D_CN 第 22 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
4.2.2.2 OPTION 寄存器
OPTION 寄存器是可读写的寄存器,它包含各个控制
位,用来配置 TMR0/WDT 预分频器、外部 RB0/INT 中
断、 TMR0 和 PORTB 弱上拉。
寄存器 4-2: OPTION_REG — 选择寄存器 (地址:81h, 181h)
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
bit 7 bit 0
bit 7 RBPU:PORTB 上拉使能位
1= 禁止 PORTB 上拉
0= 按各端口锁存器值使能 PORTB 上拉
bit 6 INTEDG:中断触发边沿选择位
1= 在 RB0/INT 引脚的上升沿触发中断
0= 在 RB0/INT 引脚的下降沿触发中断
bit 5 T0CS:TMR0 时钟源选择位
1=RA4/T0CKI/CMP2 引脚的信号作为时钟源
0= 内部指令周期时钟 ( CLKOUT)作为时钟源
bit 4 T0SE:TMR0 计数边沿选择位
1= 在 RA4/T0CKI/CMP2 引脚电平发生下跳变时递增
0= 在 RA4/T0CKI/CMP2 引脚电平发生上跳变时递增
bit 3 PSA:预分频器分配位
1= 将预分频器分配给 WDT
0= 将预分频器分配给 Timer0 模块
bit 2-0 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
注: 要使 TMR0 的预分频比达到 1:1 ,应将预分
频器分配给 WDT(PSA=1 )。参 见 第 6.3.1
节 “切换预分频器的分配”。
1 : 1
1 : 2
1 : 4
1 : 8
1 : 16
1 : 32
1 : 64
1 : 128
图注:
R= 可读位 W= 可写位 U= 未实现位,读作 0
-n=POR 时的值 1= 置位 0= 清零 x= 未知
2005 Microchip Technology Inc. DS40044D_CN 第 23 页
PIC16F627A/628A/648A
4.2.2.3 INTCON 寄存器
INTCON 寄存器是可读写的寄存器,其中包含除比较器
模块外的所有中断源的允许和标志位。如需了解比较器
中断允许和标志位的说明,请参见第 4.2.2.4 节 “PIE1
寄存器”和第 4.2.2.5 节 “PIR1 寄存器”。
注: 当一个中断条件发生时,不管相应的中断
允许位或全局允许位 GIE (INTCON<7> )
的状态如何,中断标志位都将置位。
寄存器 4-3: INTCON — 中断控制寄存器 (地址:0Bh、 8Bh、 10Bh、 18Bh)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF
bit 7 bit 0
bit 7 GIE:全局中断允许位
1= 允许所有未屏蔽的中断
0= 禁止所有中断
bit 6 PEIE:外设中断允许位
1= 允许所有未屏蔽的外设中断
0= 禁止所有外设中断
bit 5 T0IE:TMR0 溢出中断允许位
1= 允许 TMR0 中断
0= 禁止 TMR0 中断
bit 4 INTE:RB0/INT 外部中断允许位
1= 允许 RB0/INT 外部中断
0= 禁止 RB0/INT 外部中断
bit 3 RBIE: RB 端口电平变化中断允许位
1= 允许 RB 端口电平变化中断
0= 禁止 RB 端口电平变化中断
bit 2 T0IF:TMR0 溢出中断标志位
1=TMR0 寄存器已经溢出 (必须用软件清零)
0=TMR0 寄存器未发生溢出
bit 1 INTE:RB0/INT 外部中断标志位
1= 发生了 RB0/INT 外部中断 (必须用软件清零)
0= 未发生 RB0/INT 外部中断
bit 0 RBIF: RB 端口电平变化中断标志位
1=RB<7:4> 引脚中至少有一个引脚改变了状态 (必须用软件清零)
0=RB<7:4> 各引脚的状态都没有改变
图注:
R= 可读位 W= 可写位 U= 未实现位,读作 0
-n=POR 时的值 1= 置位 0= 清零 x= 未知
DS40044D_CN 第 24 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
4.2.2.4 PIE1 寄存器
此寄存器包含中断允许位。
寄存器 4-4: PIE1 — 外设中断允许寄存器 1 (地址:8Ch)
R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0
EEIE CMIE RCIE TXIE
bit 7 bit 0
bit 7 EEIE: EE 写操作完成中断允许位
1= 允许 EE 写操作完成中断
0= 禁止 EE 写操作完成中断
bit 6 CMIE:比较器中断允许位
1= 允许比较器中断
0= 禁止比较器中断
bit 5 RCIE:USART 接收中断允许位
1= 允许 USART 接收中断
0= 禁止 USART 接收中断
bit 4 TXIE:USART 发送中断允许位
1= 允许 USART 发送中断
0= 禁止 USART 发送中断
bit 3 未实现位:读作 0
bit 2 CCP1IE:CCP1 中断允许位
1= 允许 CCP1 中断
0= 禁止 CCP1 中断
bit 1 TMR2IE:TMR2 与 PR2 匹配中断允许位
1= 允许 TMR2 与 PR2 匹配中断
0= 禁止 TMR2 与 PR2 匹配中断
bit 0 TMR1IE:TMR1 溢出中断允许位
1= 允许 TMR1 溢出中断
0= 禁止 TMR1 溢出中断
-
CCP1IE TMR2IE TMR1IE
图注:
R= 可读位 W= 可写位 U= 未实现位,读作 0
-n=POR 时的值 1= 置位 0= 清零 x= 未知
2005 Microchip Technology Inc. DS40044D_CN 第 25 页
PIC16F627A/628A/648A
4.2.2.5 PIR1 寄存器
此寄存器包含中断标志位。
注: 当一个中断条件发生时,不管相应的中断
寄存器 4-5: PIR1 — 外设中断 1 寄存器 (地址:0Ch)
R/W-0 R/W-0 R-0 R-0 U-0 R/W-0 R/W-0 R/W-0
EEIF CMIF RCIF TXIF
bit 7 bit 0
bit 7 EEIF: EEPROM 写操作中断标志位
1= 写操作完成 (必须用软件清零)
0= 写操作未完成或未开始
bit 6 CMIF:比较器中断标志位
1= 比较器输出发生了改变
0= 比较器输出没有改变
bit 5 RCIF:USART 接收中断标志位
1=USART 接收缓冲器已满
0=USART 接收缓冲器是空的
bit 4 TXIF:USART 发送中断标志位
1=USART 发送缓冲器是空的
0=USART 发送缓冲器已满
bit 3 未实现位:读作 0
bit 2 CCP1IF:CCP1 中断标志位
捕捉模式
1= 发生了 TMR1 寄存器捕捉 (必须用软件清零)
0= 没有发生 TMR1 寄存器捕捉
比较模式
1= 发生了 TMR1 寄存器比较匹配 (必须用软件清零)
0= 没有发生 TMR1 寄存器比较匹配
模式
PWM
在此模式下未使用
bit 1 TMR2IF:TMR2 与 PR2 匹配中断标志位
1= 发生了 TMR2 与 PR2 匹配 (必须用软件清零)
0=TMR2 与 PR2 不匹配
bit 0 TMR1IF:TMR1 溢出中断标志位
1=TMR1 寄存器溢出 (必须用软件清零)
0=TMR1 寄存器没有溢出
允许位或全局允许位 GIE (INTCON<7> )
的状态如何,中断标志位都将置位。用户软
件应在允许一个中断之前,确保先将相应
的中断标志位清零。
-
CCP1IF TMR2IF TMR1IF
图注:
R= 可读位 W= 可写位 U= 未实现位,读作 0
-n=POR 时的值 1= 置位 0= 清零 x= 未知
DS40044D_CN 第 26 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
4.2.2.6 PCON 寄存器
PCON 寄存器包含用来区分上电复位、外部 MCLR 复
位、 WDT 复位或欠压复位的标志位。
注: BOR 在上电复位时未知。它必须在上电复
寄存器 4-6: PCON — 电源控制寄存器 (地址:8Eh)
U-0 U-0 U-0 U-0 R/W-1 U-0 R/W-0 R/W-x
- - - -
bit 7 bit 0
bit 7-4 未实现位:读作 0
bit 3 OSCF:INTOSC 振荡器频率位
1= 典型值 4 MHz
0= 典型值 48 kHz
bit 2 未实现位:读作 0
bit 1 POR:上电复位状态位
1= 没有发生上电复位
0= 发生了上电复位 (在上电复位发生之后必须用软件置位)
bit 0 BOR
:欠压复位状态位
1= 没有发生欠压复位
0= 发生了欠压复位 (必须在发生欠压复位后用软件置位)
位后由用户置位,并在接下来的复位中检
查 BOR 位是否为清零状态,从而指示是否
发生的是欠压复位。如果禁止了欠压电路
(将配置字中的 BOREN 位清零),则 BOR
状态位可忽略,也没必要对其内容作出预
测。
OSCF
-
POR
BOR
图注:
R= 可读位 W= 可写位 U= 未实现位,读作 0
-n=POR 时的值 1= 置位 0= 清零 x= 未知
2005 Microchip Technology Inc. DS40044D_CN 第 27 页
PIC16F627A/628A/648A
4.3 PCL 和 PCLATH
程序计数器 (PC )为 13 位宽。它的低字节来自可读写
的 PCL 寄存器。高字节 (PC<12:8> )不可直接读写,
来自 PCLATH 。任何复位时, PC 都会被清零。图 4-4
给出了装载 PC 的两种情况。图 4-4 中上面的示例给出
了在写 PCL (PCLATH<4:0> → PCH)时 ,装载 PC 的
过程。图 4-4 中下面的示例给出了在 CALL 或 GOTO 指
令执行时 (PCLATH<4:3> → PCH)装载 PC 的过程。
图 4-4 : 在不同情况下装载 PC
PCH PCL
12 8 7 0
PC
PCLATH<4:0>
5
PCLATH
PCH PCL
12 11 10 0
PC
2
87
PCLATH<4:3>
11
8
将
PCL 作为
目标寄存器
的指令
ALU 结果
,CALL
GOTO
操作码 <10:0>
堆栈是作为循环缓冲器使用的。也就是说,压栈 8 次之
后,第 9 次压栈时进栈的数据将覆盖第 1 次压栈存储的
数据。而第 10 次压栈时进栈的数据将覆盖第 2 次压栈
存储的数据,依此类推。
注 1 :没有用于表示堆栈溢出或堆栈下溢情形的
状态位。
2 :没有称为 PUSH 或 POP 的指令或助记符。
这些是执行 CALL 、 RETURN 、 RETLW 和
RETFIE 指令,或转到中断向量地址时发
生的操作。
4.4 间接寻址、 INDF 和 FSR 寄存器
INDF 寄存器不是物理寄存器。对 INDF 寄存器寻址将导
致间接寻址。
使用 INDF 寄存器可以实现间接寻址。任何使用 INDF
寄存器的指令实际上访问的是由指针寄存器(FSR )所
指向的寄存器。间接读 INDF 本身会返回 00h 。而使用
间接寻址对 INDF 寄存器进行写操作将导致执行一个空
操作 (虽然可能会影响状态位)。有效的 9 位地址是通
过组合 8 位 FSR 寄存器和 IRP 位(STATUS<7>)获 得
的,如图 4-5 所示。
例 4-1 所示为一个使用间接寻址清零RAM 单元20h-2Fh
的简单程序。
PCLATH
4.3.1 相对 GOTO
相对 GOTO 是通过向程序计数器加一个偏移量( ADDWF
PCL)来实现的。当使用相对 GOTO 指令方法进行读表操
作时,要注意表地址是否超过了 PCL 的存储边界 (每
块256 个字节)。请参见应用笔记AN556“Implementing
a Table Read ”( DS00556)。
4.3.2 堆栈
PIC16F627A/628A/648A 系列有一个 8 级深度, 13 位
宽的硬件堆栈 (图 4-1 )。该堆栈既不占用程序存储空
间也不占用数据存储空间,且栈指针不能读写。当执行
CALL 指令或中断引起程序转移时,PC 的值会被压入堆
栈。而执行 RETURN 、 RETLW 或 RETFIE 指令时, PC
值会从堆栈弹出。压栈(PUSH )或出栈(POP )的操
作不会影响 PCLATH 。
例 4-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
;yes continue
DS40044D_CN 第 28 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
图 4-5: PIC16F627A/628A/648A 的直接 / 间接寻址
Status
寄存器
RAM
数据
寄存器
来自操作码
00h
7Fh
0
00 01 10 11
RP1 RP0 6
存储区选择 单元选择
存储区 0 存储区 1 存储区 2 存储区 3
注: 如需存储器映射的详细介绍,请参见图 4-3 、图 4-2 和图 4-1 。
Status
寄存器
IRP FSR 寄存器
存储区选择
180h
间接寻址 间接寻址
7
1FFh
0
单元选择
2005 Microchip Technology Inc. DS40044D_CN 第 29 页
PIC16F627A/628A/648A
注:
DS40044D_CN 第 30 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
5.0 I/O 口
PIC16F627A/628A/648A 有两个端口, PORTA 和
PORTB。这 些 I/O 端口的部分引脚与器件外设功能部件
的备用功能复用。通常,当外设使能时,其对应的引脚
就可能无法用作一般的 I/O 引脚。
5.1 IPORTA 和 TRISA 寄存器
PORTA 是一个 8 位宽的锁存器。 RA4 为施密特触发器
输入和漏极开路输出引脚。它与 T0CKI 时钟输入复用。
(1)
只是施密特触发器输入,没有输出驱动器。所有
RA5
其他的 RA 端口引脚都有施密特触发器输入电平和完整
的 CMOS 输出驱动器。所有引脚都有数据方向控制位
(在 TRIS 寄存器中),这些位可以将引脚配置为输入或
输出。
将 TRISA 寄存器的某位置 1 ,就可以将相应的输出驱动
器置为高阻态模式。将 TRISA 寄存器的某位清零,则将
输出锁存器的内容锁存到指定的引脚。
读 PORTA 寄存器是读取引脚上的电平状态,而写
PORTA 寄存器是将数据写入端口锁存器。所有写操作
都是读-修改-写操作。因此,对一个端口进行写操作
就意味着总是先读取端口引脚电平,然后修改这个值,
最后将该值写入端口数据锁存器。
PORTA 引脚与比较器和参考电压功能复用。这些引脚
的工作状态是通过 CMCON (比较器控制寄存器)寄存
器和 VRCON 寄存器(参考电压控制寄存器)中的控制
位选择的。当选择它们作为比较器输入时,这些引脚将
读作 0 。
注 1 :RA5 与 VPP 复用。当在 RA5 上加 VPP 电
压时,器件将进入编程模式。
2 :在复位时,TRISA 寄存器各位全部被置为
输入。禁止数字输入 (RA<3:0> )并强制
比较器输入接地以降低电流消耗。
3 :振荡器配置会改写 TRISA<6:7>。当改写
PORTA<6:7> 时,数据读为 0,并且忽略
TRISA<6:7> 位。
TRISA 控制 RA 引脚的输入 / 输出方向,即使引脚作为
比较器输入时也是如此。当将这些引脚作为比较器输入
时,用户必须确保将它们配置为输入引脚。
RA2 引脚也能作为参考电压的输出。当处于此模式时,
REF 引脚是极高阻抗的输出。用户必须配置 TRISA<2>
V
位为输入并使用高阻抗负载。
在 CMCON 寄存器定义的其中一种比较器模式下,RA3
和 RA4 引脚作为比较器的输出。为了使输出能使用此功
能,必须将 TRISA<4:3> 位清零。
例 5-1 :初 始 化PORTA
CLRF PORTA ;Initialize PORTA by
MOVLW 0x07 ;Turn comparators off and
MOVWF CMCON ;enable pins for I/O
BCF STATUS, RP1
BSF STATUS, RP0 ;Select Bank1
MOVLW 0x1F ;Value used to initialize
MOVWF TRISA ;Set RA<4:0> as inputs
;setting
;output data latches
;functions
;data direction
;TRISA<5> always
;read as '1'.
;TRISA<7:6>
;depend on oscillator
;mode
图 5-1 : RA0/AN0:RA1/AN1 引脚框
图
数据
总线
WR
PORTA
WR
TRISA
RD
TRISA
RD PORTA
数据锁存器
TRIS 锁存器
CK
CK
Q D
Q
Q D
Q
(CMCON 寄存器)
模拟
输入模式
施密特触发器
输入缓冲器
EN
VDD
I/O 引
VSS
D Q
到比较器
2005 Microchip Technology Inc. DS40044D_CN 第 31 页
PIC16F627A/628A/648A
图 5-2 : RA2/AN2/VREF 引脚框图
数据
总线
WR
PORTA
WR
TRISA
数据锁存器
TRIS 锁存器
CK
CK
Q D
Q
Q D
Q
(CMCON 寄存器)
模拟
输入模式
VDD
RA2 引
VSS
RD
TRISA
RD PORTA
到比较器
VROE
VREF
施密特触发器
输入缓冲器
D Q
EN
图 5-3 : RA3/AN3/CMP1 引脚框图
数据
总线
WR
PORTA
WR
TRISA
CK
数据锁存器
CK
TRIS 锁存器
Q D
比较器输出
Q
Q D
Q
比较器模式 =110(CMCON 寄存器)
VDD
1
0
RA3 引脚
模拟
输入模式
(CMCON 寄存器)
VSS
RD
TRISA
RD PORTA
到比较器
施密特触发器
输入缓冲器
D Q
EN
DS40044D_CN 第 32 页 2005 Microchip Technology Inc.
图 5-4 : RA4/T0CKI/CMP2 引脚框图
数据
总线
WR
PORTA
WR
TRISA
RD PORTA
CK
数据锁存器
CK
TRIS 锁存器
RD TRISA
Q D
比较器输出
Q
Q D
Q
比较器模式 =110
PIC16F627A/628A/648A
(CMCON 寄存器)
1
0
N
Vss
施密特触发器
输入缓冲器
D Q
EN
RA4 引脚
Vss
TMR0 时钟输入
图 5-5 : RA5/MCLR
(配置位)
数据
总线
MCLRE
MCLR
滤波器
施密特触发器 编程
输入缓冲器
HV 检测
VSS
D Q
EN
MCLR
电路
模式
RD
TRISA
RD
PORTA
/V PP 引脚框图 图 5-6 : RA6/OSC2/CLKOUT 引脚
框图
来自
RA5/MCLR/V
VSS
PP
OSC1
CLKOUT(F
WR
PORTA
(
F
OSC
=
101, 111)
WR
TRISA
RD
TRISA
F
OSC
=
011, 100, 110
RD PORTA
OSC
DCKQ
数据锁存器
(2)
DCKQ
TRIS
(1)
/4
)
1
0
Q
Q
锁存器
QD
EN
OSC
电路
V
DD
V
SS
施密特触发器
输入缓冲器
注 1 : INTOSC 模式下, RA6=I/O ;或 RC 模式下,
RA6=I/O 。
2 : INTOSC 模式下, RA6=CLKOUT ;或 RC 模式
下, RA6=I/O 。
2005 Microchip Technology Inc. DS40044D_CN 第 33 页
PIC16F627A/628A/648A
图 5-7 : RA7/OSC1/CLKIN 引脚框图
数据总线
WR PORTA
WR TRISA
RD TRISA
OSC = 100,101
F
RD PORTA
至时钟电路
CK
数据锁存器
D
CK
TRIS 锁存器
(1)
VDD
Q D
RA7/OSC1/CLKIN 引脚
Q
Q
Q
D Q
施密特触发器
EN
输入缓冲器
VSS
注 1 : INTOSC 模式下,用作 CLKOUT 或一般 I/O 引脚。
DS40044D_CN 第 34 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
表 5-1 : PORTA 功能
名称 功能 输入类型 输出类型 描述
RA0/AN0 RA0 ST CMOS
AN0 AN
- 模拟比较器输入
RA1/AN1 RA1 ST CMOS
RA2/AN2/V
AN1 AN
REF RA2 ST CMOS
AN2 AN
V
REF
-
- 模拟比较器输入
- 模拟比较器输入
AN
RA3/AN3/CMP1 RA3 ST CMOS
AN3 AN
CMP1
-
- 模拟比较器输入
CMOS
RA4/T0CKI/CMP2 RA4 ST OD
RA5/MCLR
T0CKI ST
CMP2
-
/VPP RA5 ST
MCLR
V
PP HV
ST
- TMR0 外部时钟输入或比较器输出
OD
-
-
-
RA6/OSC2/CLKOUT RA6 ST CMOS
OSC2
CLKOUT
-
-
XTAL
CMOS
RA7/OSC1/CLKIN RA7 ST CMOS
OSC1 XTAL
CLKIN ST
- 振荡器晶振输入。在晶振模式下连接到晶体谐振器。
- 外部时钟源输入。 RC 偏置引脚。
图注: O=输出 CMOS = CMOS 输出 P=电源
- = 未使用 I= 输入 ST = 施密特触发器输入
TTL = TTL 输入 OD = 漏极开路输出 AN = 模拟
双向 I/O 端口
双向 I/O 端口
双向 I/O 端口
V REF 输出
双向 I/O 端口
比较器 1 输出
双向 I/O 端口。输出是漏极开路型
比较器 2 输出
输入端口
主复位。当配置为 MCLR 时,此引脚为低电平且器件复位。
在器件正常工作期间, MCLR
/V PP 上的电压不得高于 VDD 。
编程电压输入。
双向 I/O 端口
振荡器晶振输出。在晶振模式下连接到晶体谐振器。
在 RC 或 INTOSC 模式下, OSC2 引脚可以输出
CLKOUT ,其频率为 OSC1 的 1/4 。
双向 I/O 端口
表 5-2 :与PORTA 相关的寄存器综述
地址 名称
05h PORTA RA7 RA6
85h TRISA TRISA7 TRISA6 TRISA5TRISA4TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111
1Fh CMCON
9Fh VRCON VREN VROE
图注:
注 1 : RA5 的功能由 MCLRE 配置位设置。
- = 未实现单元,读作 0, u = 未改变, x = 未知, q = 值随条件变化
阴影单元表示 PORTA 未使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
(2)
RA5
C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 0000 0000 0000 0000
VRR
RA4 RA3 RA2 RA1 RA0 xxxx 0000 qqqu 0000
VR3 VR2 VR1 VR0 000- 0000 000- 0000
-
POR
时的值
其他复位
时的值
2005 Microchip Technology Inc. DS40044D_CN 第 35 页
PIC16F627A/628A/648A
5.2 PORTB 和 TRISB 寄存器
PORTB 是一个 8 位宽的双向端口。相应的数据方向寄存
器是 TRISB 。将 TRISB 寄存器的某位置 1 ,可以使相应
的输出驱动器为高阻态。而将 TRISB 寄存器的某位清
零,则将输出锁存器的内容锁存到选定的引脚上。
PORTB 与外部中断、 USART 、 CCP 模块和 TMR1 时
钟输入 / 输出复用。其标准端口功能和备用端口功能如
表 5-3 所示。使能时,备用端口功能可能会使 TRIS 设
置无效。
读 PORTB 寄存器可读取引脚的电平状态,而写 PORTB
寄存器是将数据写入端口锁存器。所有写操作都是读-
修改-写操作。因此,对一个端口进行写操作就意味着
总是先读取端口引脚电平,再修改这个值,然后将该值
写入端口数据锁存器。
每个 PORTB 引脚都有一个内部弱上拉电路(通常约为
200 µA)。单个控制位可以接通所有的上拉电路。这是
通过将 RBPU
PORTB 端口的引脚配置为输出时,其弱上拉电路会自
动切断。在上电复位后,弱上拉会被禁止。
PORTB 引脚中有 4 个( RB<7:4>)具有电平变化触发
中断的功能。只有当引脚配置为输入时才会发生此中断
(即,当 RB<7:4> 的任何一个引脚被配置为输出时,则
该引脚就不会具有电平变化触发中断的功能) 。当前
RB7:RB4 输入引脚上的电平与上次读 PORTB 时锁存的
旧值进行比较。将 RB7:RB4 上与旧值相比的 “失配”
输出进行或运算,以产生 RBIF 中断 (在 INTCON<0>
中锁存该中断标志)。
该中断可将器件从休眠中唤醒。在中断服务程序中,用
户可以通过下面的方式清除中断:
a)对PORTB 进行读 / 写操作。这将结束失配状态。
b)将RBIF 标志位清零。
失配状态会不断将 RBIF 标志位置位。而读 PORTB 将
结束失配状态,并且允许将 RBIF 标志位清零。
失配触发中断这个功能和这四个引脚上的可软件配置
的上拉功能,通过这些功能可以很容易地与键盘接口,
从而实现按键唤醒功能 (参见应用笔记 AN552
“Implementing Wake-up on Key Strokes”
(DS00552 ))。
(OPTION<7> )位清 零 实 现的。当 将
对于按键唤醒以及其他仅使用 PORTB 的电平变化触发
中断功能的操作,建议使用此电平变化触发中断功能来
实现。在使用电平变化触发中断功能时,建议不要查询
PORTB 的状态。
图 5-8 : RB0/INT 引脚框图
DD
TTL
输入
缓冲器
V
P
弱上拉
VDD
RB0/INT
VSS
RBPU
数据总线
WR PORTB
WR TRISB
RD TRISB
RD PORTB
INT
D
CK
数据锁存器
D
CK
TRIS
锁存器
施密特
触发器
Q
Q
Q
Q
QD
EN
EN
注: 如果I/O 引脚的电平在执行读取操作时(Q2
周期的开始)发生改变,则 RBIF 中断标志
可能不会置位。
DS40044D_CN 第 36 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
图 5-9: RB1/RX/DT 引脚框图 图 5-10: RB2/TX/CK 引脚框图
RBPU
SPEN
VDD
P
弱上拉
VDD
RBPU
SPEN
VDD
P
弱上拉
VDD
USART 数据输出
数据总线
WR PORTB
WR TRISB
(1)
外设 OE
RD TRISB
RD PORTB
USART 接收输入
注 1 : 只有外设选择有效时,外设 OE (输出使能)才会
有效。
D
Q
CK
Q
数据锁存器
D
Q
Q
CK
TRIS 锁存器
施密特
触发器
1
0
TTL
输入
缓冲器
QD
EN
VSS
RB1/
RX/DT
USART TX/CK 输出
数据总线
WR PORTB
WR TRISB
(1)
外设 OE
RD TRISB
RD PORTB
USART 从时钟输入
注 1 : 只有外设选择有效时,外设 OE (输出使能)才会
有效。
D
Q
CK
Q
数据锁存器
D
Q
CK
TRIS 锁存器
施密特
Q
QD
EN
触发器
1
0
VSS
TTL
输入
缓冲器
RB2/
TX/CK
2005 Microchip Technology Inc. DS40044D_CN 第 37 页
PIC16F627A/628A/648A
图 5-11: RB3/CCP1 引脚框图
RBPU
CCP1CON
VDD
弱上拉
P
VDD
CCP 输出
数据总线
WR PORTB
WR TRISB
(1)
外设 OE
RD TRISB
RD PORTB
CCP 输入
注 1 : 只有外设选择有效时,外设 OE (输出使能)才会
有效。
D
Q
CK
Q
数据锁存器
D
Q
Q
CK
TRIS 锁存器
施密特
触发器
0
1
QD
EN
TTL
输入
缓冲器
VSS
RB3/
CCP1
DS40044D_CN 第 38 页 2005 Microchip Technology Inc.
图 5-12 : RB4/PGM 引脚框图
RBPU
PIC16F627A/628A/648A
VDD
P
弱上拉
数据总线
WR PORTB
WR TRISB
RD TRISB
(配置位)
LVP
RD PORTB
PGM 输入
D
Q
CK
Q
数据锁存器
D
Q
CK
Q
TRIS 锁存器
施密特
触发器
TTL
输入
缓冲器
QD
VDD
RB4/PGM
VSS
设置 RBIF
来自其他
RB<7:4> 引脚
注: 低电压编程会禁止 RB4 引脚的电平变化触发中断和弱上拉。
EN
QD
EN
Q1
Q3
2005 Microchip Technology Inc. DS40044D_CN 第 39 页
PIC16F627A/628A/648A
图 5-13: RB5 引脚框图
RBPU
DD
V
VDD
弱
P
上拉
数据总线
WR PORTB
WR TRISB
RD TRISB
RD PORTB
设置 RBIF
D
Q
Q
CK
数据锁存器
D
Q
CK
Q
TRIS 锁存器
来自其它
RB<7:4> 引脚
QD
EN
QD
EN
TTL
输入
缓冲器
RB5 引脚
VSS
Q1
Q3
DS40044D_CN 第 40 页 2005 Microchip Technology Inc.
图 5-14: RB6/T1OSO/T1CKI 引脚框图
PIC16F627A/628A/648A
RBPU
数据总线
WR PORTB
WR TRISB
RD TRISB
T1OSCEN
RD PORTB
TMR1 时钟
来自 RB7
D
Q
CK
Q
数据锁存器
D
Q
CK
Q
TRIS 锁存器
施密特
触发器
VDD
P
TTL
输入
缓冲器
弱上拉
VDD
VSS
RB6/
T1OSO/
T1CKI
引脚
串行编程时钟
设置 RBIF
来自其他
RB<7:4> 引脚
TMR1 振荡器
QD
EN
QD
EN
Q1
Q3
2005 Microchip Technology Inc. DS40044D_CN 第 41 页
PIC16F627A/628A/648A
图 5-15: RB7/T1OSI 引脚框图
RBPU
VDD
P
弱上拉
至 RB6
数据总线
WR PORTB
WR TRISB
RD TRISB
T10SCEN
RD PORTB
串行编程输入
D
CK
Q
数据锁存器
D
CK
Q
TRIS 锁存器
TMR1 振荡器
VDD
Q
RB7/T1OSI
引脚
Q
施密特
触发器
QD
VSS
TTL
输入
缓冲器
设置 RBIF
来自其他
RB<7:4> 引脚
EN
QD
EN
Q1
Q3
DS40044D_CN 第 42 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
表 5-3 : PORTB 功能
名称 功能 输入类型 输出类型 说明
RB0/INT RB0 TTL CMOS
INT ST
- 外部中断。
RB1/RX/DT RB1 TTL CMOS
RX ST
- USART 接收引脚
DT ST CMOS
RB2/TX/CK RB2 TTL CMOS
TX
-
CMOS
CK ST CMOS
RB3/CCP1 RB3 TTL CMOS
CCP1 ST CMOS
RB4/PGM RB4 TTL CMOS
PGM ST
- 低电压编程输入引脚 。当低电压编程使能时,禁止引脚
RB5 RB5 TTL CMOS
RB6/T1OSO/T1CKI/
RB6 TTL CMOS
PGC
T1OSO
T1CKI ST
PGC ST
-
XTAL
- Timer1 时钟输入
- ICSP 编程时钟
RB7/T1OSI/PGD RB7 TTL CMOS
T1OSI XTAL
- Timer1 振荡器输入
PGD ST CMOS
图注: O=输出 CMOS = CMOS 输出 P=电源
- = 未使用 I= 输入 ST = 施密特触发器输入
TTL = TTL 输入 OD = 漏极开路输出 AN = 模拟
双向 I/O 端口,可以软件编程实现内部弱上拉。
双向 I/O 端口。可以软件编程实现内部弱上拉。
同步数据 I/O
双向 I/O 端口
USART 发送引脚
同步时钟 I/O 。可以软件编程实现内部弱上拉。
双向 I/O 端口。可以软件编程实现内部弱上拉。
捕捉 / 比较 /PWM/I/O
双向 I/O 端口。引脚电平变化触发中断。可以软件编程
实现内部弱上拉。
电平变化触发中断以及弱上拉电阻。
双向 I/O 端口。引脚电平变化触发中断。可以软件编程
实现内部弱上拉。
双向 I/O 端口。引脚电平变化触发中断。可以软件编程
实现内部弱上拉。
Timer1 振荡器输出
双向 I/O 端口。引脚电平变化触发中断。可以软件编程
实现内部弱上拉。
ICSP 数据 I/O
表 5-4 :与PORTB 相关的寄存器综述
地址 名称
06h,
106h
86h,
186h
81h,
181h
图注: u = 未改变, x = 未知,阴影表示相应位未被 PORTB 使用。
注 1 : RB4 的功能由 LVP 配置位设置。
2005 Microchip Technology Inc. DS40044D_CN 第 43 页
PORTB RB7 RB6 RB5 RB4
TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 1111
OPTION RBPU
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
(2)
RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
POR 时
的值
其他
复位
时的值
PIC16F627A/628A/648A
5.3 I/O 编程注意事项
5.3.1 双向 I/O 端口
任何写操作指令,其内部操作都是读操作后跟一个写操
作。例如,BCF和BSF指令先会将寄存器的值读入CPU ,
然后执行位操作,最后将结果写回寄存器。当某个端口
定义为既能输入又能输出时,对这些端口执行这些指令
时必须小心。例如,对 PORTB 的 bit 5 执行 BSF 操作
将使 PORTB 的所有 8 个位都被读入 CPU 。然后在 bit
5 上进行 BSF 操作,并且 PORTB 被写入输出锁存器。
如果 PORTB 的另一个位用作双向 I/O 引脚 (例如 bit
0 ),并且此时被定义为输入,则该引脚上的输入信号本
身将被读入 CPU ,并将该值重写入该特定引脚的数据锁
存器,覆盖了先前的内容。只要引脚一直是输入模式,
则不会有问题。但是,如果 bit 0 随后切换为输出模式,
则数据锁存器的内容将是未知的。
读端口寄存器将读取端口引脚的值。写端口寄存器将把
值写入端口锁存器。当对某个端口使用读 - 修改 - 写指
令(例如 BCF 、BSF 等)时,首先会读取该端口引脚的
值,然后对读入值执行所需的操作,最后将操作结果写
入端口锁存器。
例 5-2 给出了对 I/O 端口连续执行两个读 - 修改 - 写指令
(例如 BCF 、 BSF 等)的结果。
当某引脚正在输出低电平或高电平信号时,不应再同时
由外部器件驱动该引脚改变该引脚上的电平 (“线或”
或 “线与”)。产生的高输出电流可能会损坏芯片。
例 5-2 :对I/O 端口执行读-修改-
写指令
;Initial PORT settings:PORTB<7:4> Inputs
; PORTB<3:0> Outputs
;PORTB<7:6> have external pull-up and are
;not connected to other circuitry
;
; PORT latchPORT Pins
---------- ---------BCF STATUS, RP0 ;
BCF PORTB, 7 ;01pp pppp 11pp pppp
BSF STATUS, RP0 ;
BCF TRISB, 7 ;10pp pppp 11pp pppp
BCF TRISB, 6 ;10pp pppp 10pp pppp
;
;Note that the user may have expected the
;pin values to be 00pp pppp. The 2nd BCF
;caused RB7 to be latched as the pin value
;(High).
5.3.2 对 I/O 端口的连续操作
对 I/O 端口的写操作实际发生在指令周期的末尾;但对
于读操作,数据必须在指令周期的开始时就有效(图 5-
16 )。因此,如果进行写操作之后,接着对同一个 I/O
端口执行读操作,就要特别注意。指令的执行顺序应该
允许在下一条导致数据写入 CPU 的指令执行之前,引
脚电压达到稳定 (与负载有关)。否则,读入 CPU 的
可能是引脚的前一个状态而非新状态。当状态不确定
时,最好用一个 NOP 指令或其他不访问该 I/O 端口的指
令隔开这些指令。
图 5-16 :连 续I/O 端口操作
Q1 Q2 Q3 Q4
PC
取出的指令
注 1 :此例为写 PORTB 后,接着读 PORTB 。
2 :数据建立时间 =(0.25 T
此,在较高的时钟频率下,读取以后进行写操作可能会产生问题。
PC
MOVWF PORTB
写 PORTB
CY - T PD),其中 TCY= 指令周期, T PD=Q1 周期到输出有效的传播延时。因
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
PC+1
MOVF PORTB, W
读 PORTB
TPD
执行
MOVWF
PORTB
PC+2 PC+3
NOP NOP
端口引脚
在此采样
执行
MOVF
PORTB, W
执行
NOP
DS40044D_CN 第 44 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
6.0 TIMER0 模块
Timer0 模块定时器 / 计数器具有如下特点:
• 8 位定时器 / 计数器
• 读 / 写能力
• 8 位可软件编程的预分频器
• 内部或外部时钟选择
• FFh 到 00h 的溢出中断
• 外部时钟边沿选择
图 6-1 是 Timer0 模块的简化框图。更多信息,可查阅
《
PICmicro
(DS33023A_CN )。
可通过将 T0CS 位(OPTION<5>)清零选择定时器模
式。在定时器模式下,TMR0 寄存器的值在每个指令周
期递增 1 (不使用预分频器)。如果对 TMR0 寄存器执
行写操作,那么在接下来的两个指令周期将禁止对其进
行递增计数。用户可通过将校正值写入 TMR0 寄存器以
避开这一问题。
可通过将 T0CS 位置 1 选择计数器模式。在该模式下,
TMR0 寄存器的值将在 RA4/T0CKI/CMP2 引脚的每个
上升沿或下降沿递增计数。具体的递增沿由时钟源边沿
(T0SE )控制位 (OPTION<4> )决定。将 T0SE 位清
零选择上升沿。第 6.2 节 “Timer0 用于外部时钟计数”
中详细讨论了外部时钟输入的局限性。
预分频器由 Timer0 模块和看门狗共用。预分频器的分
配可通过软件设置 PSA 控制位 (OPTION<3> )来控
制。清零 PSA 位可将预分频器分配给 Timer0 。预分频
器是不可读写的。当将预分频器分配给 Timer0 模块时,
可供选择的预分频比有 1:2 , 1:4 ,……, 1:256 。预分
频器的具体操作参见第 6.3 节 “Timer0 预分频器”。
®
中档单片机系列参考手册》
6.2 Timer0 用于外部时钟计数
当 Timer0 用于外部时钟输入的计数时,必须满足一定
要求。这是由于内部相位时钟(T
样,在同步之后 Timer0 仍然要经过一段延时才会真正
执行递增操作。
6.2.1 外部时钟同步
当不使用预分频器时,外部时钟输入与预分频器输出相
同。在内部相位时钟的 Q2 和 Q4 周期对预分频器输出
进行采样可实现 T0CKI 与内部相位时钟的同步 (图 6-
1 )。因此,要求 T0CKI 引脚上的信号高、低电平都至
少保持 2TOSC (加上一小段 20ns 的 RC 延时)。具体
请参考所用器件的电气规范。
当使用预分频器时,外部时钟输入要先经过异步计数型
预分频器分频,而使预分频器的输出对称。为了使外部
时钟满足采样要求,必须考虑计数器。因此,要求
T0CKI 引脚上信号的周期至少为 4T
40 ns 的 RC 延时)供预分频器分频。 T0CKI 引脚的高
低电平只须满足最小脉宽为 10 ns 的要求。具体请参考
所用器件电气规范中的参数40 、41和42。参见表 17-8 。
OSC)同步引起的。同
OSC (加上一小段
6.1 Timer0 中断
当 TMR0 寄存器发生从 FFh 到 00h 的溢出时,即产生
Timer0 中断。该溢出将 T0IF 位置 1 。中断可以通过清
零 T0IE 位(INTCON<5>)来屏蔽。在重新允许中断
前,必须在 Timer0 模块的中断服务程序中用软件方法
将 T0IF 位(INTCON<2>)清零。休眠状态时,由于定
时器被关闭,所以 Timer0 中断无法唤醒单片机。
2005 Microchip Technology Inc. DS40044D_CN 第 45 页
PIC16F627A/628A/648A
6.3 Timer0 预分频器
提供了一个 8 位的计数器作为 Timer0 模块的预分频器,
或作为看门狗的后分频器。如果把预分频器分配给
Timer0 模块就意味着看门狗无后分频器可用,反之亦
然。
图 6-1 : TIMER0/WDT 的框图
F
OSC/4
0
T0CKI
引脚
看门狗
定时器
T0SE
TMR0 时钟源
0
1
PSA
1
T0CS
WDT 后分频器 /
TMR0 预分频器
8
8选 1多路开关
PSA 和 PS<2:0> 位(OPTION<3:0>)决定预分频器的
分配和分频比。
当将预分频器分配给 Timer0 模块时,所有对 TMR0 寄
存器执行的写操作指令 (如 CLRF 1 、 MOVWF 1 和
BSF 1, x 等)都将清零预分频器。当将预分频器分配
给 WDT 时,执行 CLRWDT 指令将同时清零预分频器和
看门狗。预分频器是不可读写的。
数据总线
8
1
0
PSA
同步
2 周期
PS<2:0>
TMR0 寄存器
溢出时置位标志位 T0IF
WDT 使能位
1
0
PSA
注: T0SE、T0CS、PSA和 PS<2:0>位在 Option寄存器中。
WDT
超时溢出
DS40044D_CN 第 46 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
6.3.1 切换预分频器的分配
预分频器的分配完全由软件控制(比如,它可在程序执
行期间 “随时”被改变)。当把预分频器从 Timer0 分
配给 WDT 时,必须执行例 6-1 中所示的指令序列,以
避免器件意外复位。
例 6-1 : 改变预分频器 (TIMER0 →
WDT )
BCF STATUS, RP0 ;Skip if already in
CLRWDT ;Clear WDT
CLRF TMR0 ;Clear TMR0 and
BSF STATUS, RP0 ;Bank 1
MOVLW '00101111’b ;These 3 lines
MOVWF OPTION_REG ;are required only
CLRWDT ;000 or 001
MOVLW '00101xxx’b ;Set Postscaler to
MOVWF OPTION_REG ;desired WDT rate
BCF STATUS, RP0 ;Return to Bank 0
;Bank 0
;Prescaler
;(5, 6, 7)
;if desired PS<2:0>
;are
表 6-1 :与TIMER0 相关的寄存器
地址 名称
01h、 101h
0Bh、 8Bh、
10Bh、 18Bh
81h、 181h
85h TRISA
图注:
注 1 : Option 寄存器在 MPLAB
TMR0
INTCON GIE
OPTION
- = 未实现的地址单元,读作 0, u = 未改变, x = 未知。阴影单元表示在 Timer0 模块中未使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Timer0 模块寄存器
PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u
(2)
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
TRISA7 TRISA6
®
IDE 中用 OPTION_REG 表示。
TRISA5
TRISA4
要将预分频器从 WDT 分配给 Timer0 模块,使用例 6-2
所示的指令序列。即使 WDT 被禁止也要采取该预防措
施。
例 6-2 : 改变预分频器 (WDT →
TIMER0 )
CLRWDT ;Clear WDT and
BSF STATUS, RP0
MOVLW b'xxxx0xxx' ;Select TMR0, new
MOVWF OPTION_REG
BCF STATUS, RP0
TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111
;prescaler
;prescale value and
;clock source
POR 时
的值
xxxx xxxx uuuu uuuu
所有其他
复位时的值
2005 Microchip Technology Inc. DS40044D_CN 第 47 页
PIC16F627A/628A/648A
7.0 TIMER1 模块
Timer1 模块是由两个可读写 8 位寄存器 ( TMR1H 和
TMR1L)组成的 16 位定时器 / 计数器。 TMR1 寄存器
对(TMR1H:TMR1L)从 0000h 开始递增计数,一直
递增到 FFFFh,然后从 0000h 重新开始递增计数。如
果允许 Timer1 中断,那么当用于锁存中断标志位
TMR1IF (PIR1<0> )的 TMR1 寄存器对发生溢出时就
会产生 Timer1 中断。可以通过对 Timer1 中断允许位
TMR1IE ( PIE1<0>)置位 / 清零来允许 / 禁止该中断。
Timer1 有下列两种工作模式:
• 定时器模式
• 计数器模式
工作模式由时钟选择位 TMR1CS (T1CON<1> )决定。
在定时器模式下,TMR1 寄存器对的值在每个指令周期
递增计数。而在计数器模式下,它在外部时钟输入引脚
的每个上升沿递增计数。
可以通过对控制位 TMR1ON (T1CON<0> )置位 / 清
零来使能 / 禁止 Timer1 。
Timer1 还有一个内部“复位输入”。这个复位可由 CCP
模块产生。(参见第 9.0 节 “捕捉 / 比较 /PWM (CCP )
模块”)寄存器 7-1 中是 Timer1 控制寄存器。
对于 PIC16F627A/628A/648A 而言,当使能 Timer1 的
振荡器 (T1OSCEN 位置 1 )时, RB7/T1OSI/PGD 和
RB6/T1OSO/T1CKI/PGC 引脚就变为输入引脚。即
寄存器 7-1 : T1CON — TIMER1 控制寄存器 (地址:10h )
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
- -
bit 7 bit 0
bit 7-6 未实现:读作 0
bit 5-4 T1CKPS<1:0>: Timer1 输入时钟预分频比选择位
11=1:8 预分频比
10=1:4 预分频比
01=1:2 预分频比
00=1:1 预分频比
bit 3 T1OSCEN:Timer1 振荡器使能控制位
1= 使能振荡器
0= 关闭振荡器
bit 2 T1SYNC:Timer1 外部时钟输入同步控制位
TMR1CS=1
1= 不同步外部时钟输入
0= 同步外部时钟输入
TMR1CS=0
此位被忽略。 TMR1CS=0 时, Timer1 使用内部时钟。
bit 1 TMR1CS:Tim er1 时钟源选择位
1= 选择来自 RB6/T1OSO/T1CKI/PGC 引脚的外部时钟 (上升沿有效)
0= 选择内部时钟 ( F
bit 0 TMR1ON:Timer1 开启位
1= 使能 Timer1
0= 停止 Timer1
注 1 :关断振荡器的反相器和反馈电阻以降低功耗。
(1)
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
OSC/4)
TMR1CS TMR1ON
图注:
R= 可读位 W= 可写位 U= 未实现位,读作 0
-n=POR 时的值 1= 置位 0= 清零 x= 未知
DS40044D_CN 第 48 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
7.1 Timer1 工作在定时器模式
通过将 TMR1CS (T1CON<1> )位清零选择定时器模
式。在这种模式下,定时器的输入时钟是 F
OSC /4。因 为
内部时钟总是同步的,所以同步控制位 T1SYNC
(T1CON<2> )此时不起作用。
7.2 Timer1 工作在同步计数器模式
通过将 TMR1CS 位置 1 选择计数器模式。在这种模式
下, TMR1 寄存器对的值在引脚 RB7/T1OSI/PGD
(T1OSCEN 位置 1 时)或 RB6/T1OSO/T1CKI/PGC
(T1OSCEN 位清零时)上的每个输入时钟上升沿到来
时递增 1 。
如果 T1SYNC
钟同步。同步是在预分频之后完成的。预分频器是一个
异步计数器。
在该模式配置下,由于在休眠模式下关断同步电路,所
以即使使用外部时钟,TMR1 寄存器对的值也不能递增
计数。但是预分频器会继续递增计数。
图 7-1 : TIMER1 框图
RB6/T1OSO/T1CKI/PGC
RB7/T1OSI/PGD
位清零,那么外部时钟输入与内部相位时
溢出置位
标志位 TMR1IF
TMR1
TMR1H
T1OSC
TMR1L
T1OSCEN
使能
振荡器 (1)
F
内部
时钟
OSC/4
7.2.1 同步计数器模式下的外部时钟输入
当外部时钟输入用于同步计数器模式下的Timer1 时,必
须满足一定要求。这是由于内部相位时钟(To s c )同 步
引起的。而且在同步之后,TMR1 寄存器对的值仍然要
经过一段延时才会进行递增 1 操作。
当预分频比为 1:1 时,外部时钟输入和预分频器的输出
相同。在内部相位时钟的 Q2 和 Q4 周期,对预分频器
输出进行采样,可实现 T1CKI 与内部相位时钟的同步。
因此,必须要求 T1CKI 引脚上信号的高、低电平都至少
保持 2Tosc(加上一小段 20ns 的 RC 延时)。具体请参
考电气规范章节中的参数 45 、 46 和 47 。
当使用的预分分频比不是 1:1 时,外部时钟输入要先经
过异步计数型预分频器的分频,从而使预分频器的输出
对称。为了使外部时钟满足采样要求,必须考虑计数
器。因此,必须要求 T1CKI 引脚上信号的周期至少为
4Tosc (加上一小段 40ns 的 RC 延时)供预分频器分
频。T1CKI 引脚上信号的高低电平时间只需满足最小脉
宽为 10ns 的要求。具体请参考适用电气规范中的参数
45、 46 和 47。
同步的
时钟输入
同步
检测
休眠输入
TMR1ON
1
0
TMR1CS
0
1
T1SYNC
预分频器
1, 2, 4, 8
T1CKPS<1:0>
2
注 1 : 当 T1OSCEN 位清零时,反相器和反馈电阻被关断以消除功耗。
2005 Microchip Technology Inc. DS40044D_CN 第 49 页
PIC16F627A/628A/648A
7.3 Timer1 工作在异步计数器模式
如果控制位 T1SYNC (T1CON<2> )置 1 ,外部时钟输
入就不同步。计数器继续进行与内部相位时钟异步的递
增计数。在休眠状态下计数器将仍继续运行,并在溢出
时产生中断,唤醒处理器。但在软件中应特别注意对计
数器的读写(第 7.3.2 节 “异步计数器模式下对 Timer1
的读写操作”)。
注: 在异步计数器模式下, Timer1 不能用作捕
捉器或比较器工作的时基。
7.3.1 异步时钟的外部时钟输入时序
如果控制位 T1SYNC 被置 1 ,计数器将完全异步地进行
递增计数。输入时钟必须满足高电平和低电平的最小脉
宽要求。参阅电气规范一章中的表 17-8 以及时序参数
45、 46 和 47。
7.3.2 异步计数器模式下对 TIMER1 的读写
操作
当计数器工作在外部异步时钟下时,读 TMR1H 或
TMR1L 寄存器能够产生有效的读取(由硬件完成)。但
用户应牢记,用读两个 8 位值来读一个 16 位定时器会
出现问题,这是因为在两次读取操作之间计数器可能会
溢出。
对于写操作,建议用户停止计数器后再写入需要的数
值。而寄存器正在递增计数时,向定时器寄存器写入数
据可能会产生写争用。这可能在定时器寄存器中产生无
法预知的值。
读 16 位值时应非常注意。例 7-1 是读取 16 位定时器值
的程序示例。在定时器无法停止时,该程序很有帮助。
例 7-1 : 读取独立运行的 16 位定时
器
; All interrupts are disabled
MOVF TMR1H, W ;Read high byte
MOVWF TMPH ;
MOVF TMR1L, W ;Read low byte
MOVWF TMPL ;
MOVF TMR1H, W ;Read high byte
SUBWF TMPH, W ;Sub 1st read with
;2nd read
BTFSC STATUS,Z ;Is result = 0
GOTO CONTINUE ;Good 16-bit read
;
; TMR1L may have rolled over between the
; read of the high and low bytes. Reading
; the high and low bytes now will read a good
; value.
;
MOVF TMR1H, W ;Read high byte
MOVWF TMPH ;
MOVF TMR1L, W ;Read low byte
MOVWF TMPL ;
; Re-enable the Interrupts (if required)
CONTINUE ;Continue with your
;code
DS40044D_CN 第 50 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
7.4 Timer1 振荡器
在 T1OSI (输入)和 T1OSO (放大器输出)引脚之间
内接有晶振电路。通过将控制位 T1OSCEN
(T1CON<3> )置 1 使能该电路。它在休眠状态下可以
继续工作。一般倾向于使用 32.768 kHz 的时钟晶振。
表 7-1 给出了 Timer1 振荡器的电容选择。
用户必须提供软件时间延迟来确保振荡器正确起振。
表 7-1 : TIMER1 振荡器的电容选择
频率
32.768 kHz 15 pF 15 pF
注:这些值仅供设计参考。
想要获取更多有关晶振 / 电容选择的信息,请查
阅 AN826 “Crystal Oscillator Basics and Crys-
tal Selection for rfPIC
(DS00826 )。
C1 C2
®
and PICmicro® Devices ”
7.5 用 CCP 触发器输出复位 Timer1
如果在比较模式下将 CCP1 模块配置为产生“特殊事件
触发信号”(CCP1M<3:0> = 1011 ),则该信号会复位
Timer1 。
注: CCP1 模块的特殊事件触发信号不会将中断
标志位 TMR1IF (PIR1<0> )置 1 。
为了利用这一特点,Timer1 必须设置为定时器或同步计
数器模式。如果 Timer1 在异步计数器模式下运行,该
复位操作可能不起作用。
当对 Timer1 的写操作与 CCP1 的特殊事件触发信号同
时发生时,写操作优先。
在这种工作方式下,寄存器对 CCPRxH:CCPRxL 实际
上变成了 Timer1 的周期寄存器。
7.6 复位 Timer1 寄存器对 ( TMR1H,
TMR1L)
除了 CCP1 特殊事件触发信号 (参见第 9.2.4 节 “特
殊事件触发”)外, POR 或其他复位都不会将 TMR1H
和 TMR1L 复位至 00h 。
T1CON 寄存器在上电复位或欠压复位时复位为00h ,这
样就关闭了定时器并得到 1:1 的预分频比。在所有其他
复位中,寄存器都不受影响。
7.7 Timer1 预分频器
在对 TMR1H 或 TMR1L 寄存器进行写操作时,预分频
器计数器被清零。
表 7-2 : 与作为定时器 / 计数器的 TIMER1 有关的寄存器
地址 名称
0Bh、 8Bh、
10Bh、 18Bh
0Ch PIR1
8Ch PIE1
0Eh TMR1L
0Fh TMR1H
10h T1CON
图注: x= 未知, u = 未改变,- = 未实现,读作 0 。阴影部分表示在 Timer1 模块中未使用。
INTCON GIE PEIE
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u
EEIF CMIF RCIF TXIF
EEIE CMIE RCIE TXIE
16 位 TMR1 寄存器低字节的保持寄存器
16 位 TMR1 寄存器高字节的保持寄存器
- -
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
-
-
CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
POR 时的值所有其他
复位时的值
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
TMR1CS TMR1ON --00 0000 --uu uuuu
2005 Microchip Technology Inc. DS40044D_CN 第 51 页
PIC16F627A/628A/648A
8.0 TIMER2 模块
Timer2 是一个 8 位定时器,带一个预分频器和一个后分
频器。它可用作 CCP 模块 PWM 模式的时基。TMR2 寄
存器是可读写的,任何器件复位都会使之清零。
输入时钟 (F
1:1 、 1:4 或 1:16 ,可通过控制位 T2CKPS<1:0>
(T2CON<1:0> )来进行选择。
Timer2 模块有一个 8 位周期寄存器 PR2 。 TMR2 寄存
器的值从 00h 开始递增计数,直到与 PR2 寄存器的值
匹配为止,然后在下一个计数周期复位至 00h 。PR2 寄
存器为可读写的寄存器。复位将 PR2 寄存器初始化为
FFh。
Timer2 的匹配输出通过 4 位后分频器(可提供从 1:1 到
1:16 的分频比)产生 Timer2 中断 (锁存在 TMR2IF 标
志位 (PIR1<1> )中)。
通过清零控制位 TMR2ON (T2CON<2> )可以 关 闭
Timer2 ,以最大限度地降低功耗。
寄存器 8-1 中是 Timer2 控制寄存器。
osc /4)可以选择三种预分频比,分别是
8.1 Timer2 预分频器和后分频器
当发生下列任一种情况时,都会将预分频器和后分频器
计数器清零:
• 对 TMR2 寄存器进行写操作
• 对 T2CON 寄存器进行写操作
• 任何器件复位 (上电复位、 MCLR
复位、看门狗
复位或者欠压复位)
当对 T2CON 进行写操作时, TMR2 寄存器并不清零。
8.2 TMR2 输出
将 TMR2 输出(在后分频器之前)馈送至同步串行端口
模块,亦可选择将其用于生成移位时钟。
图 8-1 : TIMER2 框图
置位标志位
TMR2IF
后分频器
1:1 1:16
TOUTPS<3:0>
TMR2
输出
复位
TMR2 寄存器
至
4
相等
比较器
PR2 寄存器
预分频器
1:1, 1:4, 1:16
2
T2CKPS<1:0>
F
OSC/4
DS40044D_CN 第 52 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
寄存器 8-1: T2CON — TIMER2 控制寄存器 (地址: 12h)
U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
-
bit 7 bit 0
bit 7 未实现位:读作 0
bit 6-3 TOUTPS<3:0>:Timer2 输出后分频比选择位
0000 = 1:1 后分频比
0001 = 1:2 后分频比
•
•
•
1111 = 1:16 后分频比
bit 2 TMR2ON:Timer2 使能位
1 = 使能 Timer2
0 = 停止 Timer2
bit 1-0 T2CKPS<1:0>:Timer2 时钟预分频比选择位
00 = 1:1 预分频比
01 = 1:4 预分频比
1x = 1:16 预分频比
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
图注:
R= 可读位 W= 可写位 U= 未实现位,读作 0
-n=POR 时的值 1= 置位 0= 清零 x= 未知
表 8-1 : 与作为定时器 / 计数器的 TIMER2 有关的寄存器
地址 名称
0Bh、8Bh、
10Bh、
18Bh
0Ch PIR1
8Ch PIE1
11h TM R2
12h T2CON
92h PR2
图注: x = 未知, u = 未改变,- = 未实现,读作 0。阴影部分表示在 Timer2 模块中未使用。
INTCON GIE PEIE
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T0IE INTE RBIE T0IF INTF RBIF
EEIF CMIF RCIF TXIF
EEIE CMIE RCIE TXIE
Timer2 模块的寄存器
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
-
Timer2 周期寄存器
CCP1IF TMR2IF TMR1IF
-
CCP1IE TMR2IE TMR1IE
-
POR 时
的值
0000 000x 0000 000u
0000 -000 0000 -000
0000 -000 0000 -000
0000 0000 0000 0000
-000 0000 -000 0000
1111 1111 1111 1111
所有其他
复位时
的值
2005 Microchip Technology Inc. DS40044D_CN 第 53 页
PIC16F627A/628A/648A
注:
DS40044D_CN 第 54 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
9.0 捕捉 / 比较 /PWM ( CCP)模块
CCP (捕捉 / 比较 /PWM )模块包含一个 16 位寄存器,
它可以作为 16 位捕捉寄存器、16 位比较寄存器或作为
PWM 主 / 从占空比寄存器。表 9-1 所示为 CCP 模块模
式的定时器资源。
模块
CCP1
捕捉 / 比较 /PWM 寄存器 1 (CCPR1 )由两个 8 位寄存
器组成,这两个寄存器为:CCPR1L (低字 节)和
CCPR1H (高字节)。 CCP1CON 寄存器控制 CCP1
的工作。 所有位均可读写。
有关 CCP 模块的更多信息,可参阅
单片机系列参考手册》
(DS33023A_CN )。
《
PICmicro
®
中档
表 9-1: CCP 模式 — 定时器资源
CCP 模式 定时器资源
PWM
寄存器 9-1 : CCP1CON — CCP 操作寄存器 (地址:17h )
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
- -
bit 7 bit 0
bit 7-6 未实现位:读作 0
bit 5-4 CCP1X:CCP1Y:PWM 最低有效位
捕捉模式
未使用
比较模式
未使用
PWM
模式
这些位是 PWM 占空比的两个 LSb。 8 个 MSb 在 CCPRxL 中。
bit 3-0 CCP1M<3:0>:CCPx 模式选择位
0000= 捕捉 / 比较 /PWM 关闭 (复位 CCP1 模块)
0100= 捕捉模式,每个下降沿发生
0101= 捕捉模式,每个上升沿发生
0110= 捕捉模式,每 4 个上升沿发生
0111= 捕捉模式,每 16 个上升沿发生
1000= 比较模式,相符时置位输出位 (置位 CCP1IF 位)
1001= 比较模式,相符时清零输出位 (置位 CCP1IF 位)
1010= 比较模式,相符时产生软件中断 (置位 CCP1IF 位,而 CCP1 引脚不受影响)
1011= 比较模式,触发特殊事件 (置位 CCP1IF 位; CCP1 复位 TMR1)
11xx=PWM 模式
CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0
捕捉
比较
Timer1
Timer1
Timer2
图注:
R= 可读位 W= 可写位 U= 未实现位,读作 0
-n=POR 时的值 1= 置位 0= 清零 x= 未知
2005 Microchip Technology Inc. DS40044D_CN 第 55 页
PIC16F627A/628A/648A
9.1 捕捉模式
在捕捉模式下, RB3/CCP1 引脚上发生事件时,
CCPR1H:CCPR1L 捕捉 TMR1 寄存器的 16 位值。 事
件定义为:
• 每个下降沿发生
• 每个上升沿发生
• 每 4 个上升沿发生
• 每 16 个上升沿发生
控制位 CCP1M<3:0> (CCP1CON<3:0> )选择事件。
当捕捉发生时,中断请求标志位 CCP1IF (PIR1<2> )
置位。 此位必须用软件清零。 如果在读取寄存器
CCPR1 中的值之前发生另一个捕捉,那么之前捕捉的
数据将会丢失。
9.1.1 CCP 引脚配置
在捕捉模式下,应该通过置位 TRISB<3> 位将 RB3/
CCP1 引脚配置为输入。
注: 如果 RB3/CCP1 引脚配置为输出,那么对
该端口的写操作可能引发一个捕捉事件。
图 9-1 : 捕捉模式工作原理框图
置位标志位 CCP1IF
预分频器
³ 1, 4, 16
RB3/CCP1
引脚
和
边沿检测
Q's
9.1.2 TIMER1 模式选择
欲使 CCP 模块使用捕捉功能,Tim er1 必须工作在定时
器或同步计数器模式。 在异步计数器模式下,可能无法
进行捕捉操作。
9.1.3 软件中断
当捕捉模式改变时,可能会产生错误的捕捉中断。 用户
应该保持 CCP1IE (PIE1<2> )位为零以避免产生错误
中断,而且应该在工作模式发生任何改变之后清零标志
位 CCP1IF 。
(PIR1<2> )
CCPR1H CCPR1L
捕捉
使能
TMR1H TMR1L
CCP1CON<3:0>
9.1.4 CCP 预分频器
通过设置 CCP1M<3:0> 可以选择四种预分频比设置。
只要 CCP 模块被关闭或者 CCP 模块不工作在捕捉模
式,就将预分频器的计数器清零。 这就意味着任何复位
都可以将预分频器计数器清零。
从一个捕捉预分频比切换到另一个捕捉预分频比可能产
生中断。 而且,也不会将预分频器的计数器清零,因此
第一个捕捉可能是从一个非零的预分频比开始的。
例 9-1 是切换捕捉预分频比时建议采用的方法。 该例也
使预分频器的计数器清零且不会产生 “错误”中断。
例 9-1 : 改变捕捉预分频器比
CLRF CCP1CON ;Turn CCP module off
MOVLW NEW_CAPT_PS ;Load the W reg with
MOVWF CCP1CON ;Load CCP1CON with this
; the new prescaler
; mode value and CCP ON
; value
9.2 比较模式
在比较模式下,始终用 16 位 CCPR1 寄存器值与 TMR1
寄存器对的值相比较。 当两者相符时,RB3/CCP1 引脚
将:
• 输出高电平
• 输出低电平
• 保持不变
引脚上的操作取决于控制位 CCP1M<3:0>
(CCP1CON<3:0> )的值。 同时,中断标志位 CCP1IF
置位。
图 9-2 : 比较模式工作原理框图
置位标志位 CCP1IF
(PIR1<2> )
CCPR1H CCPR1L
QS
RB3/CCP1
引脚
TRISB<3>
输出使能
注: 特殊事件触发信号将复位 Timer1,但不会置位
中断标志位 TMR1IF (PIR1<0> )。
输出
逻辑
R
CCP1CON<3:0>
模式选择
相符
比较器
TMR1H TMR1L
DS40044D_CN 第 56 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
9.2.1 CCP 引脚配置
用户必须通过清零 TRISB<3> 位将 RB3/CCP1 引脚配
置为输出。
注: 清零 CCP1CON 寄存器将强制 RB3/CCP1
比较输出锁存到缺省低电平。 这不是数据
锁存器。
9.2.2 TIMER1 模式选择
欲使 CCP 模块使用比较功能,Tim er1 必须工作在定时
器或同步计数器模式。 在异步计数器模式下,可能无法
进行比较操作。
9.2.4 特殊事件触发
在这一模式下,将产生一个内部硬件触发信号,可用来
触发一个操作。 参见寄存器 9-1。
CCP1 的特殊事件触发输出引起 TMR1 寄存器对复位。
这使 CCPR1 寄存器有效地成为 Timer1 的 16 位可编程
周期寄存器。
当 TMR1H 、 TMR1L 寄存器对与 CCPR1H 、 CCPR1L
寄存器对相符时,CCP 立即产生特殊事件触发输出。直
到 TMR1 时钟的下一个上升沿,TMR1H、TMR1L 寄存
器对才被复位。这使 CCPR1 寄存器对实际上等同于
Timer1 的 16 位周期控制寄存器。如果使能了 A/D 模块,
特殊事件触发输出还可以启动 A/D 转换。
9.2.3 软件中断模式
当选择了产生软件中断时,CCP1 引脚上的电平不受影
响。 只会产生一个 CCP 中断 (允许该中断时)。
注: 在产生特殊事件触发的时钟边沿和产生
TMR1 复位的时钟边沿之间,通过改变
CCPR1H、 CCPR1L 寄存器对的内容来去
除相符条件,将会阻止复位的发生。
表 9-2 : 与捕捉、比较和 TIMER1 相关的寄存器
地址 名称
0Bh, 8Bh,
10Bh, 18Bh
0Ch PIR1
8Ch PIE1
86h, 186h TRISB
0Eh TMR1L
0Fh TMR1H
10h T1CON
15h CCPR1L
16h CCPR1H
17h CCP1CON
图注: x = 未知, u = 未改变,- = 未实现,读作 0。 阴影部分表示未被捕捉和 Timer1 使用。
INTCON
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
GIE PEIE
EEIF CMIF RCIF TXIF —C C P 1 I F TMR2IF TMR1IF
EEIE CMIE RCIE TXIE — CCP1IE TMR2IE TMR1IE
PORTB 数据方向寄存器
16 位 TMR1 寄存器低字节的保持寄存器
16 位 TMR1 寄存器高字节的保持寄存器
— — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
捕捉 / 比较 /PWM 寄存器 1 (LSB)
捕捉 / 比较 /PWM 寄存器 1 (MSB)
— — CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0
T0IE INTE RBIE T0IF INTF RBIF
POR 时
的值
0000 000x 0000 000u
0000 -000 0000 -000
0000 -000 0000 -000
1111 1111 1111 1111
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
--00 0000 --uu uuuu
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
--00 0000 --00 0000
所有其他
复位时
的值
2005 Microchip Technology Inc. DS40044D_CN 第 57 页
PIC16F627A/628A/648A
9.3 PWM 模式
在脉宽调制(PWM )模式下,CCP1 引脚产生的 PWM
输出可达 10 位分辨率。 由于 CCP1 引脚与 PORTB 数
据锁存器复用,必须清零 TRISB<3> 位将 CCP1 引脚作
为输出引脚。
注: 清零 CCP1CON 寄存器将使 CCP1 PWM
输出锁存到缺省低电平。 这不是 PORTB I/
O 数据锁存器。
图 9-3 所示为 CCP 模块在 PWM 模式时的简化框图。
如需循序渐进地来了解如何为执行 PWM 操作而设置
CCP 模块,请参阅第 9.3.3 节 “ PWM 操作的设置”。
图 9-3 : 简化的 PWM 框图
占空比寄存器
CCPR1L
CCPR1H(从)
比较器
TMR2
比较器
PR2
注 1: 8 位定时器与 2 位内部 Q 时钟或预分频器的 2 位
(1)
清零定时器、
CCP1 引脚并
锁存占空比。
组合成 10 位时基。
CCP1CON<5:4>
Q
R
S
RB3/CCP1
TRISB<3>
一个 PWM 输出(图 9-4 )包含一个时基(周期)和一
段输出保持高电平的时间 (占空比)。 PWM 频率是周
期的倒数 (频率 =1/ 周期)。
图 9-4 : PWM 输出
周期
占空比
TMR2 = PR2
TMR2= 占空比
TMR2=PR2
9.3.1 PWM 周期
PWM 周期可以通过写 PR2 寄存器来指定。 可以用以下
公式计算:
PWM 周期
PWM 频率定义为 1 / [PWM 周期 ] 。
当 TMR2 等于 PR2 时, 在下一递增计数周期中将产生
下面三个事件:
• TMR2 清零
• CCP1 引脚置位 (例外:如果 PWM 占空比为
0%, CCP1 引脚将不会被置位)
• PWM 占空比从 CCPR1L 锁存到 CCPR1H
注: Timer2 后分频器对于确定 PWM 频率不起
PR2()1+[] 4 ⋅⋅= Tosc
TMR2 预分频值
⋅
1 ∠
作用 (参阅第 8.0 节 “Timer2 模块”)。
可以利用后分频器来产生频率与PWM 输出
不同的特定波形。
DS40044D_CN 第 58 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
9.3.2 PWM 占空比
PWM 占空比可通过写 CCPR1L 寄存器和
CCP1CON<5:4> 位来指定。 最高分辨率可达 10 位:其
中高 8 位包含在 CCPR1L 中,而低 2 位是
CCP1CON<5:4>。 由 CCPR1L:CCP1CON<5:4> 表示
这个 10 位值。 计算占空比的公式如下:
PWM
占空比
=
(CCPR1L:CCP1CON<5:4>)
Tosc
⋅⋅
TMR2预分频值
可以在任何时候写入 CCPR1L 和 CCP1CON<5:4> ,但
直到 PR2 和 TMR2 中的值相符 (即当周期结束时),
占空比的值才被锁存到 CCPR1H 。 在 PWM 模式下,
CCPR1H 是只读寄存器。
CCPR1H寄存器和一个 2 位的内部锁存器用于双重缓冲
PWM 占空比。 双重缓冲对于减少 PWM 的毛刺是极其
重要的。
当 CCPR1H 和 2 位锁存器的值与 TMR2 与内部 2 位 Q
时钟或 TMR2 预分频器的 2 位的组合相符时,CCP1 引
脚被清零。
表 9-3 : 20 MHz 时的 PWM 频率与分辨率示例
PWM 频率
定时器预分频比 (1,4,16 )
PR2 值
最大分辨率 (位)
1.22 kHz 4.88 kHz 19.53 kHz 78.12 kHz 156.3 kHz 208.3 kHz
16 4 1 1 1 1
0xFF 0xFF 0xFF 0x3F 0x1F 0x17
10 10 10 8 7 6.5
对于给定的 PWM 频率,其最大分辨率 (位)为:
PWM
分辨率
--------------------------------------------------------------
log
Fpwm TMR2
----------------------------------------------------------------------------
=
×
log(2)
Fosc
预分频值
位
注: 如果 PWM 占空比的值大于 PWM 周期,
CCP1 引脚将不会被清零。
《
PWM 周期和占空比计算的示例,请参阅
中档单片机系列参考手册》
(DS33023A_CN )。
PICmicro
9.3.3 PWM 操作的设置
通过以下步骤配置 CCP 模块的 PWM 操作:
1. 通过写 PR2 寄存器设置 PWM 周期。
2. 通过写 CCPR1L 寄存器和 CCP1CON<5:4> 位来
设置 PWM 占空比。
3. 通过清零 TRISB<3> 位将 CCP1 引脚配置为输
出。
4. 通过写 T2CON 设置 TMR2 预分频比并使能
Timer2。
®
表 9-4 :与PWM 和 TIMER2 相关的寄存器
地址 名称
0Bh, 8Bh,
10Bh, 18Bh
0Ch PIR1
8Ch PIE1
86h, 186h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 1111
11h TMR2
92h PR2
12h T2CON
15h CCPR1L
16h CCPR1H
17h CCP1CON
图注: x = 未知, u = 未改变,- = 未实现,读作 0 。 阴影部分表示未被 PWM 和 Timer2 使用。
INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
EEIF CMIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
EEIE CMIE RCIE TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
Timer2 模块寄存器
Timer2 模块周期寄存器
— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 uuuu uuuu
捕捉 / 比较 /PWM 寄存器 1 (LSB )
捕捉 / 比较 /PWM 寄存器 1 (MSB )
— — CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000
POR 时
的值
0000 0000 0000 0000
1111 1111 1111 1111
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
所有其他
复位时
的值
2005 Microchip Technology Inc. DS40044D_CN 第 59 页
PIC16F627A/628A/648A
注:
DS40044D_CN 第 60 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
10.0 比较器模块
如寄存器 10-1 所示, CMCON 寄存器控制比较器的输
入和输出选择。 图 10-1 是比较器的框图。
比较器模块包含两个模拟比较器。 比较器的输入端与
RA0 至 RA3 引脚复用。 片上参考电压(参见第 11.0 节
“参考电压模块”)也能作为比较器的输入。
寄存器 10-1: CMCON — 比较器配置寄存器 (地址:01Fh)
R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0
bit 7 bit 0
bit 7 C2OUT:比较器 2 输出位
当 C2INV = 0 时:
1 = C2 VIN +>C2 V IN -
= C2 VIN +<C2 VIN-
0
当
C2INV = 1 时:
1 = C2 VIN +<C2 VIN 0
= C2 VIN +>C2 VIN-
bit 6 C1OUT:比较器 1 输出位
当
C1INV = 0 时:
1 = C1 VIN +>C1 VIN 0
= C1 VIN +<C1 VIN-
当
C1INV = 1 时:
1 = C1 VIN +<C1 V IN -
= C1 VIN +>C1 VIN-
0
bit 5 C2INV:比较器 2 输出反相位
1
= C2 输出反相
= C2 输出不反相
0
bit 4 C1INV:比较器 1 输出反相位
1
= C1 输出反相
0
= C1 输出不反相
bit 3 CIS:比较器 1 输入切换位
当
CM<2:0> = 001 时
则:
= C1 VIN- 连接到 RA3
1
= C1 VIN- 连接到 RA0
0
当 CM<2:0> = 010 时
则:
1
= C1 VIN- 连接到 RA3
C2 V
0
C2 V
IN- 连接到 RA2
= C1 VIN- 连接到 RA0
IN- 连接到 RA1
bit 2-0 CM<2:0>:比较器模式位
图 10-1 显示了比较器的各种模式以及 CM<2:0> 位的设置
图注:
R
= 可读位 W = 可写位 U = 未实现位,读作 0
= POR 时的值 1 = 置位 0 = 清零 x = 未知
-n
2005 Microchip Technology Inc. DS40044D_CN 第 61 页
PIC16F627A/628A/648A
10.1 比较器配置
比较器共有 8 种工作模式。 CMCON 寄存器用于选择这
些模式,如图 10-1 所示。 TRISA 寄存器控制每种模式
下比较器引脚的数据方向。
图 10-1 : 比较器 I/O 工作模式
比较器复位(POR 时的缺省值)
CM<2:0> = 000
RA0/AN0
RA3/AN3/CMP1
RA1/AN1
RA2/AN2/V
REF
两个独立的比较器
CM<2:0> = 100
RA0/AN0
RA3/AN3/CMP1
RA1/AN1
RA2/AN2/V
REF
A
A
A
A
IN-
V
C1
IN+
V
V
IN-
C2
V
IN+
A
A
A
A
IN-
V
C1
IN+
V
IN-
V
C2
IN+
V
关闭(读作 0 )
关闭(读作 0 )
C1V
OUT
C2VOUT
如果改变了比较器模式,由于存在特定的模式改变延迟
(如表 17-2 所示),可能导致比较器的输出电平无效。
注 1 :改变比较器模式的过程中,应禁止比较器
中断,以免产生误中断。
2 :比较器输出可以反相。 参见图 10-1 。
比较器关闭
CM<2:0> = 111
RA0/AN0
RA3/AN3/CMP1
RA1/AN1
RA2/AN2/V
REF
四路输入的双比较器
CM<2:0> = 010
RA0/AN0
RA3/AN3/CMP1
RA1/AN1
RA2/AN2/V
REF
D
D
D
D
A
A
A
A
V
V
V
V
V
SS
CIS = 0
CIS = 1
CIS = 0
CIS = 1
IN-
IN+
IN-
IN+
C1
C2
关闭(读作 0 )
关闭(读作 0 )
IN-
V
C1
IN+
V
IN-
V
C2
IN+
V
来自 VREF
模块
C1VOUT
C2VOUT
两个具有公共参考端的比较器
CM<2:0> = 011
A
V
RA0/AN0
RA3/AN3/CMP1
RA1/AN1
RA2/AN2/V
REF
D
A
A
IN-
V
IN+
IN-
V
IN+
V
单个独立的比较器
CM<2:0> = 101
D
V
RA0/AN0
RA3/AN3/CMP1
D
IN-
V
IN+
VSS
RA1/AN1
RA2/AN2/V
REF
A
A
IN-
V
IN+
V
A = 模拟输入,端口始终读作 0。
C1
C2
C1
C2
C1VOUT
C2VOUT
关闭(读作 0)
C2V
OUT
D = 数字输入。
两个具有公共参考端且带输出的比较器
CM<2:0> = 110
RA0/AN0
RA3/AN3/CMP1
RA1/AN1
RA2/AN2/V
REF
RA4/T0CKI/CMP2
A
D
A
A
漏极开路
IN-
V
IN+
V
IN-
V
V
IN+
三路输入的双比较器
CM<2:0> = 001
REF
A
CIS = 0
A
CIS = 1
A
A
RA0/AN0
RA3/AN3/CMP1
RA1/AN1
RA2/AN2/V
CIS(CMCON<3>)是比较器输入切换位。
C1
C2
V
V
V
V
IN-
IN+
IN-
IN+
C1
C2
C1VOUT
C2VOUT
C1VOUT
C2VOUT
DS40044D_CN 第 62 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
例 10-1 中的代码描述了配置比较器模块所必需的步
骤。 RA3 和 RA4 配置为数字输出。 RA0 和 RA1 配置为
两个比较器的 V- 输入,RA2 配置为两个比较器的 V+ 输
入。
例 10-1 : 初始化比较器模块
FLAG_REG EQU 0X20
CLRF FLAG_REG ;Init flag register
CLRF PORTA ;Init PORTA
MOVF CMCON, W ;Load comparator bits
ANDLW 0xC0 ;Mask comparator bits
IORWF FLAG_REG,F ;Store bits in flag register
MOVLW 0x03 ;Init comparator mode
MOVWF CMCON ;CM<2:0> = 011
BSF STATUS,RP0 ;Select Bank1
MOVLW 0x07 ;Initialize data direction
MOVWF TRISA ;Set RA<2:0> as inputs
Ô0Õ
BCF STATUS,RP0 ;Select Bank 0
CALL DELAY10 ;10µs delay
MOVF CMCON,F ;Read CMCON to end change
BCF PIR1,CMIF ;Clear pending interrupts
BSF STATUS,RP0 ;Select Bank 1
BSF PIE1,CMIE ;Enable comparator interrupts
BCF STATUS,RP0 ;Select Bank 0
BSF INTCON,PEIE ;Enable peripheral interrupts
;RA<4:3> as outputs
;TRISA<7:5> always read
;condition
10.2 比较器工作原理
图 10-2 所示为单比较器及模拟输入电平与数字输出之
间的关系。 当 V
较器输出数字低电平。 当 V
V
IN- 时,比较器输出数字高电平。 图 10-2 中比较器输
IN+ 端的模拟输入电压低于 V IN- 时,比
IN+ 端的模拟输入电压高于
出部分的阴影区代表由于输入失调电压和响应时间所引
起的不确定区。 关于共模电压,请参见表 17-2。
10.3 比较器参考电压源
根据不同的工作模式,比较器可以使用外部或内部的参
考电压源。 加在 V
比较,比较器的数字输出也随着比较的结果作出相应调
整(图 10-2 )。
IN - 上的模拟信号与 V IN + 上的信号相
图 10-2 : 单个比较器
Vin+
Vin-
V
IN-
+
-
结果
VIN +
结果
10.3.1 外部参考信号
当使用外部参考电压时,比较器模块可以配置为两个比
较器在同一个参考电压源或不同的参考电压源下工作。
然而,阀值检测器应用中可能要求使用同一个参考电压
源。 参考电压信号必须介于 V
SS 和 V DD 之间,且可施
加到比较器的任一引脚上。
10.3.2 内部参考电压信号
比较器模块也可以为比较器选择使用内部产生的参考
电压。 第 11. 0 节 “参考电压模块”对提供这一信号
的参考电压模块进行了详细描述。 在 CM<2:0> = 010
模式 (图 10-1 )下,比较器使用内部参考电压信号。
这种模式下,内部参考电压加到两个比较器的 V
IN + 引
脚上。
10.4 比较器的响应时间
响应时间是指比较器从选定一个新的参考电压或输入电
压源到输出达到一个有效电平时的最短时间。 如果内部
参考电压发生了改变,在使用比较器输出时必须考虑到
内部参考电压的最大延迟的影响。 否则,应使用比较器
的最大延迟 (第 142 页的表 17-2 )。
2005 Microchip Technology Inc. DS40044D_CN 第 63 页
PIC16F627A/628A/648A
10.5 比较器输出
通过读 CMCON 寄存器的相应位,可以得到比较器的输
出。 这些位都是只读的。 比较器的输出也可以直接输出
到 I/O 引脚 RA3 和 RA4 。 当 CM<2:0> = 110 或 001
时,RA3 和 RA4/T0CK1/CMP2 引脚输出路径上的多路
开关将发生切换,那么各个引脚的输出将为比较器的不
同步输出。 每个比较器输出的不确定区与规范中给出
的输入失调电压和响应时间有关。图 10-3 为比较器的
输出框图。
在该模式下,TRISA 寄存器的相应位仍然可以允许或禁
止 RA3/AN3/CMP1 和 RA4/T0CK1/CMP2 为输出。
注 1 :当读端口寄存器时,所有配置为模拟输入
的引脚都读作“0 ”。 而配置为数字输入的
引脚将根据施密特触发器输入规范对模拟
输入进行转换。
2 :模拟电平加在定义为数字输入的引脚上,
将导致输入缓冲器的电流消耗超出规定
值。
图 10-3 : 改进的比较器输出框图
CnINV
至 RA3/AN3/CMP1
或 RA4/T0CK1/CMP2 引脚
至数据总线
CMCON<7:6>
RD CMCON
将 CMIF 位置 1
来自其他比较器
EN
D Q
CL
EN
CnVOUT
Q3
D Q
Q1
复位
DS40044D_CN 第 64 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
10.6 比较器中断
一旦两个比较器中的任意一个的输出值发生变化,就会
将该比较器的中断标志位置 1 。 当从 CMCON<7:6> 读
取数据的时候,需要用软件来保持输出位的状态信息以
判断实际发生的变化。 CMIF 位 PIR1<6> 是比较器中断
标志位。 CMIF 位必须通过清零复位。 因为也可以把
“1 ”写入该寄存器,所以可以产生模拟中断。
必须将 CMIE 位(PIE1<6> )和 PEIE 位(INTCON<6> )
置位以允许中断。 此外,GIE 位也必须置位。 只要这些
位中的任何一位被清零,虽然当有中断条件产生时
CMIF 位仍会置位,但却仍然不允许中断。
注: 当执行一个读操作时 (Q2 周期开始时),
如果 CMCON 寄存器(C1OUT 或 C2OUT )
发生变化,那么 CMIF (PIR1<6> )中断标
志位可能不会被置位。
在中断服务程序中,用户可以通过以下方式清除中断:
a) 任何对 CMCON 寄存器的读写操作都将结束失配
状态。
b) 将中断标志位 CMIF 清零。
失配状态会一直不断地将CMIF 标志位置 1 。 读CMCON
寄存器将结束这种失配状态,并允许清零CMIF 标志位。
10.7 休眠状态下比较器的操作
当比较器处于有效状态而器件处于休眠模式时,比较器
仍能继续工作,此时如果允许中断,则中断同样有效。
在允许中断时,中断会把器件从休眠模式唤醒。 当比较
器上电时,消耗的休眠电流将比掉电电流规范中指定的
高。 每个比较器工作时都会消耗额外的电流(如比较器
的规范中所示)。 若要使休眠模式下的功耗最小,可在
进入休眠状态前,配置 CM<2:0>
器件从休眠状态中唤醒时,CMCON 寄存器的内容不受
影响。
= 111,关断比较器。
10.8 复位的影响
器件复位会强制 CMCON 寄存器为其复位值。 这将使比
较器模块处于比较器复位模式 (CM<2:0> = 000 )。确
保所有可能的输入都为模拟输入。 当复位时引脚为模拟
输入将使器件电流达到最小。 在复位期间,比较器将掉
电。
10.9 模拟输入连接注意事项
图 10-4 是一个简化的模拟输入电路。 由于模拟引脚和
数字输出相连,因而它们与 V
偏置二极管。 因此模拟输入电压被限制在V
间。 如果输入电压在任一方向上偏离这个范围超过
0.6V ,就会有一个二极管正偏从而使输入电压被钳位。
推荐模拟信号源的最大内阻为 10 k Ω 。 任何连接到模拟
输入引脚上的外部元件 (如电容器、稳压二极管等),
在引脚上的泄漏电流应该极小。
DD 及 V SS 之间加有反向
SS 和 V DD 之
2005 Microchip Technology Inc. DS40044D_CN 第 65 页
PIC16F627A/628A/648A
图 10-4: 模拟输入模式
VDD
VA
S<10 K
R
VT = 0.6V
A
IN
CPIN
5pF
VT = 0.6V
ILEAKAGE
±500 nA
V
SS
RIC
图注 CPIN = 输入电容
T = 阀值电压
V
LEAKAGE = 引脚上的泄漏电流
I
R
IC = 内部走线等效阻抗
S = 信号源内阻
R
VA = 模拟电压
表 10-1 : 与比较器模块相关的寄存器
地址 名称
1Fh CMCON C2OUT C1OUT C2INV C1NV CIS CM2 CM1 CM0 0000 0000 0000 0000
0Bh, 8Bh,
10Bh, 18Bh
0Ch PIR1
8Ch PIE1
85h TRISA
INTCON GIE PEIE
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u
EEIF CMIF RCIF TXIF
EEIE CMIE RCIE TXIE
TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111
CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
-
CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
-
POR 时
的值
图注: x = 未知, u = 未改变,- = 未实现,读作 0。
所有其他
复位时
的值
DS40044D_CN 第 66 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
11.0 参考电压模块
参考电压模块是由一个 16 级的梯形电阻网络组成,提
供了可选择的参考电压。 将梯形电阻网络分段来提供两
个不同范围的V
将其关闭以降低功耗。如图 11-1 所示,VRCON 寄存器
对参考电压模块进行控制。 图 11-1 为该参考电压模块
的框图。
REF,并且在不需要使用参考电压时可以
下面是计算参考电压模块输出的公式:
如果 VRR = 1 :
VREF
RR = 0:
如果 V
VREF VDD
11.1 参考电压配置
在每个范围内,参考电压模块均可输出 16 种不同的电
压值。
间(表17-3 )。例 11- 1 说明了当 V
获得输出电压 1.25V ,如何配置参考电压模块。
寄存器 11-1: VRCON — 参考电压模块控制寄存器 (地址:9Fh)
R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
REN V ROE V RR
当改变 V
V
bit 7 bit 0
bit7 VREN :VREF 使能位
1
= VREF 电路上电
0
= VREF 电路断电,无 IDD 漏电流
bit6 VROE :VREF 输出使能位
1 = VREF 在 RA2 引脚输出
= VREF 从 RA2 引脚断开
0
bit5 V
RR:VREF 范围选择位
1
= 低参考电压范围
0
= 高参考电压范围
bit4 未实现:读作 0
bit3-0 V
R <3:0>:VREF 值选择位, 0 ≤ VR <3:0> ≤ 15
当 V
RR = 1 时:VREF = (V R <3:0>/ 24) * V DD
当 VRR = 0 时:VREF = 1/4 * VDD + (VR <3:0>/ 32) * VDD
-
REF 输出时,必需考虑参考电压模块的稳定时
R3VR2VR1VR0
V
VR <3:0>
------------- ---------24
1
V
---
×
+
------------- ----------
4
DD
×=
V
R<3:0>
32
VDD
×=
DD 为 5.0V 时,欲
图注:
R
= 可读位 W = 可写位 U = 未实现位,读作 0
-n
= POR 时的值 1 = 置位 0 = 清零 x = 未知
2005 Microchip Technology Inc. DS40044D_CN 第 67 页
PIC16F627A/628A/648A
图 11-1: 参考电压模块框图
V
DD
V
REN
8R
R
R
16
级
R
R
V
REF
注: 表 17-3 中有 R 的定义。
例 11-1 : 参考电压配置
MOVLW 0x02 ;4 Inputs Muxed
MOVWF CMCON ;to 2 comps.
BSF STATUS,RP0 ;go to Bank 1
MOVLW 0x07 ;RA3-RA0 are
MOVWF TRISA ;outputs
MOVLW 0xA6 ;enable V
MOVWF VRCON ;low range set VR <3:0>=6
BCF STATUS,RP0 ;go to Bank 0
CALL DELAY10 ;10ms delay
REF
11.2 参考电压精度 / 误差
由于结构上的限制,参考电压模块不能实现从 VSS 到
DD 的全范围输出。 梯形电阻网络顶部和底部的晶体管
V
(图 11- 1 )使 V
考电压是由 V
波动而变化。经测试的参考电压绝对精度参见表 17-3 。
REF 的值不能达到 V SS 或 V DD。 由于参
DD 产生的,因此 V
输出随着 VDD 的
REF
16选1
模拟多路开关
8R
V
SS
V
R
3
(由
VRCON<3:0>
R
0
V
V
RR
V
SS
指定)
11.5 连接注意事项
参考电压模块的操作是独立于比较器模块的。 如果
TRISA<2> 位置位并且 V
的话,参考电压发生器的输出可以连接到 RA2 引脚。 参
考电压输出与 RA2 引脚相连时,如果该引脚上还有输入
信号,将会增大电流消耗。 使能 V
为数字输出也会增加电流消耗。
RA2 引脚可以作为简单的 D/A 输出,但是其驱动能力有
限。 因为其驱动能力有限,所以必须在 V
接一个缓冲器。图 11- 2 举例说明了这一缓冲技术。
ROE 位(VRCON<6>)也置位
REF 时,连接 RA2 作
REF 输出端外
11.3 休眠期间工作原理
如果因中断或看门狗超时将器件从休眠模式下唤醒,
VRCON 寄存器内容将不受影响。 为了使休眠模式下的
电流消耗达到最小,应关闭参考电压模块。
11.4 复位的影响
单片机复位会使 VREN (VRCON<7>)位清零,从而禁
止参考电压模块。 复位还将 V
零,从而使参考电压与 RA2 引脚断开;同时通过将V
位(VRCON<5>)清零选择高电压范围。 VREF 值选择
位 VRCON<3:0> 也被清零。
ROE 位(VRCON<6>)清
RR
DS40044D_CN 第 68 页 2005 Microchip Technology Inc.
图 11-2: 参考电压输出缓冲示例
PIC16F627A/628A/648A
(1)
VREF
模块
注 1 : R 取决于参考电压配置 VRCON<3:0> 和 VRCON<5> 。
R
参考
电压
输出
阻抗
RA2
表 11-1 : 与参考电压相关的寄存器
地址 名称
9Fh VRCON VREN VROE VRR
1Fh CMCON
85h TRISA
图注: - = 未实现,读作 0 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
-
C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 0000 0000 0000 0000
TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111
运算放大器
+
VREF 输出
所有
POR 时的
值
其他
复位时的
值
VR3 VR2 VR1 VR0 000- 0000 000- 0000
2005 Microchip Technology Inc. DS40044D_CN 第 69 页
PIC16F627A/628A/648A
注:
DS40044D_CN 第 70 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
12.0 通用同步 / 异步收发器
(USART )模块
通用同步 / 异步收发器(Universal Synchronous Asyn-
chronous Receiver Transmitter ,USART )也是一种串
行通信接口(Serial Communications Interface,SCI)。
USART 可以配置为全双工异步系统,使之能与 CRT 终
端和个人计算机等外设进行通信;也可将其配置为半双
工同步系统,使之能与 A/D 或 D/A 集成电路以及串行
EEPROM 等外设进行通信。
USART 可配置为以下几种工作模式:
• 全双工异步模式
— 主模式 (半双工)
• 同步
• 同步 — 从模式 (半双工)
要将 RB2/TX/CK 引脚和 RB1/RX/DT 引脚配置为通用同
步 / 异步收发器引脚,必须置位 SPEN (RCSTA<7> )
位和 TRISB<2:1> 位。
寄存器 12-1 所示为发送状态和控制寄存器(TXSTA ),
寄存器 12-2 所示为接收状态和控制寄存器(RCSTA )。
寄存器 12-1: TXSTA — 发送状态和控制寄存器 (地址:98h)
R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R-1 R/W-0
CSRC TX9 TXEN SYNC
bit 7 bit 0
bit 7 CSRC: 时钟源选择位
异步模式
忽略
同步模式
1 = 主模式 (由内部 BRG 产生时钟信号)
= 从模式 (由外部时钟源提供时钟信号)
0
bit 6 TX9:9 位发送使能位
1
= 选择 9 位发送
0
= 选择 8 位发送
bit 5 TXEN:发送使能位
1 = 使能发送
0
= 禁止发送
bit 4 SYNC:USART 模式选择位
1
= 同步模式
= 异步模式
0
bit 3 未实现位:读作 0
bit 2 BRGH:高速波特率选择位
异步模式
1 = 高速
= 低速
0
同步模式
在此模式下未使用
bit 1 TRMT:发送移位寄存器状态位
1
= TSR 空
= TSR 满
0
bit 0 TX9D:发送数据的第 9 位。可作为奇偶校验位。
注 1 :在同步模式下, SREN/CREN 位比 TXEN 位优先级高。
(1)
-
BRGH TRMT TX9D
图注:
R
= 可读位 W = 可写位 U = 未实现位,读作 0
-n = POR 时的值 1 = 置位 0 = 清零 x = 未知
2005 Microchip Technology Inc. DS40044D_CN 第 71 页
PIC16F627A/628A/648A
寄存器 12-2: RCSTA — 接收状态和控制寄存器 (地址: 18h)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 R-0 R-x
SPEN RX9 SREN CREN ADEN FERR OERR RX9D
bit 7 bit 0
bit 7 SPEN:串行端口使能位
(当 TRISB<2:1> 位置位时, RB1/RX/DT 和 RB2/TX/CK 引脚将被配置为串行端口引脚)
= 使能串行端口
1
= 禁止串行端口
0
bit 6 RX9:9 位接收使能位
1 = 选择 9 位接收
= 选择 8 位接收
0
bit 5 SREN:单字节接收使能位
异步模式:
忽略
同步主模式
1
0
此位在接收完成后清零。
同步从模式:
在此模式下未使用
bit 4 CREN:连续接收使能位
异步模式:
1 = 允许连续接收
0
同步模式:
1 = 使能连续接收,直到 CREN 使能位被清零 (CREN 位的优先级比 SREN 位高)
0
bit 3 ADEN:地址检测使能位
9 位同步模式 ( RX9 = 1):
= 使能地址检测, RSR<8> 置位时,允许中断并装入接收缓冲器
1
0
= 禁止地址检测,已接收所有字节,第 9 位可作为奇偶校验位
位异步模式 ( RX9 = 0 ):
8
在此模式下未使用
同步模式
在此模式下未使用
bit 2 FERR:帧错误标志位
1
= 帧错误 (读 RCREG 寄存器可更新该位并可接收下一个有效字节)
0
= 无帧错误
bit 1 OERR:溢出错误标志位
1
= 有溢出错误 (清零 CREN 位可将此位清零)
0
= 无溢出错误
bit 0 RX9D:接收数据的第 9 位 (可作为奇偶校验位)
:
= 使能单字节接收
= 禁止单字节接收
= 禁止连续接收
= 禁止连续接收
图注:
R
= 可读位 W = 可写位 U = 未实现位,读作 0
-n = POR 时的值 1 = 置位 0 = 清零 x = 未知
DS40044D_CN 第 72 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
12.1 USART 波特率发生器
波特率发生器 ( Baud Rate Generator, BRG)支 持
USART 的同步模式和异步模式。这是一个专用的 8 位
波特率发生器。 SPBRG 寄存器控制着自由运行的 8 位
定时器的周期。在异步模式下, BRGH (TXSTA<2> )
位还用于控制波特率。在同步模式下可忽略 BRGH 位。
表 12-1 所示为仅应用于主模式 (内部时钟)下的不同
USART 工作模式的波特率计算公式。
在理想的波特率和 F
计算 SPBRG 寄存器的最近似整数值。因此,可以判断
波特率的误差。
公式 12-1 说明了在下列条件下波特率误差的计算方法:
FOSC = 16 MHz
目标波特率 = 9600
BRGH
= 0
= 0
SYNC
OSC 下,可以使用表 12-1 中的公式
公式 12-1 : 计算波特率误差
Fosc
目标波特率
9600
------------- ----------
=
64 x 1 + ()
16000000
------------------------ =
64 x 1 + ()
x 25.042 =
16000000
------------ ------------- --
计算波特率
误差
(计算波特率 - 目标波特率)
-------------------------------------------------- =
=
==
64 25 1 + ()
目标波特率
9615 9600 –
------------- ------------- ----0 . 1 6 % =
9600
9615
即使对于低波特率时钟,使用高波特率公式
(BRGH= 1 )也可能会有好处。这是因为公式 F
(16(X + 1)) 在某些情况下会降低波特率误差。
向 SPBRG 寄存器写入一个新值将导致 BRG 定时器复
位 (或清零),这可以确保 BRG 不必等待定时器溢出
再输出新波特率。
表 12-1 : 波特率公式
SYNC
0
1
图注: X 为 SPBRG 寄存器中的值 ( 0 到 255 )
( 异步 ) 波特率 = FOSC /(64(X+1))
表 12-2 : 与波特率发生器有关的寄存器
地址 名称
98h TXSTA CSRC TX9 TXEN SYNC
18h RCSTA SPEN
99h SPBRG
图注: x = 未知,- = 未实现,读作 0 。阴影部分表示未被 BRG 使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
BRGH
= 0( 低速 ) BRGH = 1( 高速 )
( 同步 ) 波特率
= FOSC /(4(X+1))
BRGH
-
RX9 SREN CREN ADEN FERR OERR RX9D 0000 000x 0000 000x
波特率发生器寄存器
OSC/
波特率
= FOSC /(16(X+1))
NA
POR 时的值所有其他复
位时的值
TRMT TX9D 0000 -010 0000 -010
0000 0000 0000 0000
2005 Microchip Technology Inc. DS40044D_CN 第 73 页
PIC16F627A/628A/648A
表 12-3: 同步模式下的波特率
OSC = 20 MHz
目标波特率
(Kbps )
19.2 19.53 +1.73% 255 19.23 +0.16% 207 19.23 +0.16% 129
76.8 76.92 +0.16% 64 76.92 +0.16% 51 75.76 -1.36% 32
300 294.1 -1.96 16 307.69 +2.56% 12 312.5 +4.17% 7
500 500 0 9 500 0 7 500 0 4
目标波特率
(Kbps )
19.2 19.24 +0.23% 92 19.2 0 65 19.231 +0.16% 51
76.8 77.82 +1.32 22 79.2 +3.13% 15 75.923 +0.16% 12
300 298.3 -0.57 5 316.8 5.60% 3 NA
500 NA
F
计算波特率
(Kbps )
0.3 NA
1.2 NA
2.4 NA
9.6 NA
96 96.15 +0.16% 51 95.24 -0.79% 41 96.15 +0.16% 25
高
低
0.3 NA
1.2 NA
2.4 NA
9.6 9.622 +0.23% 185 9.6 0 131 9.615 +0.16% 103
96 94.20 -1.88 18 97.48 +1.54% 12 1000 +4.17% 9
高
低
5000
19.53
F
OSC = 7.15909 MHz
计算波特率
(Kbps )
1789.8
6.991
误差
--
--
--
--
-
-
误差
--
--
--
--
-
-
SPBRG
( 10 进制)
SPBRG
( 10 进制)
16 MHz
值
255 15.625
值
255 4.950
计算波特率
(Kbps )
NA
NA
NA
NA
0 4000
5.0688 MHz
计算波特率
(Kbps )
NA
NA
NA
NA
0 1267
SPBRG
误差
误差
(10 进制)
--
--
--
--
-
-
--
--
--
-
-
-
255 9.766
SPBRG
( 10 进制)
255 3.906
OSC = 3.579545 MHz
目标波特率
(Kbps )
19.2 19.04 -0.83% 46 19.24 +0.16% 12 NA
76.8 74.57 -2.90% 11 83.34 +8.51% 2 NA
300 298.3 0.57% 2 NA
500 NA
F
计算波特率
(Kbps )
0.3 NA
1.2 NA
2.4 NA
9.6 9.622 +0.23% 92 9.615 +0.16% 25 NA
96 99.43 +3.57% 8 NA
高
低
894.9
3.496
误差
--
--
--
-
-
-
SPBRG
( 10 进制)
1 MHz
值
-
255 0.9766
计算波特率
(Kbps )
NA
1.202 +0.16% 207 1.170 -2.48% 6
2.404 +0.16% 103 NA
NA
0 250
SPBRG
误差
(10 进制)
--
--
--
--
-
-
255 0.032
10 MHz
值
值
-
值
计算波特率
(Kbps )
NA
NA
NA
9.766 +1.73% 255
0 2500
4 MHz
计算波特率
(Kbps )
NA
NA
NA
NA
0 100
32.768 kHz
计算波特率
(Kbps )
0.303 +1.14% 26
NA
NA
NA
0 8.192
误差
--
--
--
-
-
误差
--
--
--
-
--
-
-
误差
--
--
--
-
-
--
--
-
-
SPBRG
值
(10 进制)
0
255
SPBRG
值
(10 进制)
-
0
255
SPBRG
值
(10 进制)
-
-
0
255
DS40044D_CN 第 74 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
表 12-4: 异步模式下的波特率 ( BRGH = 0 )
OSC = 20 MHz
目标波特率
(Kbps )
19.2 19.53 +1.73% 15 19.23 +0.16% 12 19.53 +1.73V 7
76.8 78.13 +1.73% 3 83.33 +8.51% 2 78.13 +1.73% 1
300 312.5 +4.17% 0 NA
500 NA
目标波特率
(Kbps )
19.2 18.64 -2.90% 5 19.8 +3.13% 3 NA
76.8 NA
300 NA
500 NA
F
计算波特率
(Kbps )
0.3 NA
1.2 1.221 +1.73% 255 1.202 +0.16% 207 1.202 +0.16% 129
2.4 2.404 +0.16% 129 2.404 +0.16% 103 2.404 +0.16% 64
9.6 9.469 -1.36% 32 9.615 +0.16% 25 9.766 +1.73% 15
96 104.2 +8.51% 2 NA
高
低
0.3 NA
1.2 1.203 +0.23% 92 1.2 0 65 1.202 +1.67% 51
2.4 2.380 -0.83% 46 2.4 0 32 2.404 +1.67% 25
9.6 9.322 -2.90% 11 9.9 +3.13% 7 NA
96 NA
高
低
312.5
1.221
F
OSC = 7.15909 MHz
计算波特率
(Kbps )
111.9
0.437
误差
--
--
-
-
误差
--
--
--
--
--
-
-
SPBRG
( 10 进制)
255 0.977
SPBRG
( 10 进制)
255 0.3094
16 MHz
值
值
计算波特率
(Kbps )
NA
NA
0 250
5.0688 MHz
计算波特率
(Kbps )
0.31 +3.13% 255 0.3005 -0.17% 207
79.2 +3.13% 0 NA
NA
NA
NA
0 79.2
SPBRG
误差
误差
(10 进制)
--
--
--
--
-
-
--
--
--
-
-
255 0.6104
SPBRG
( 10 进制)
255 3.906
F
目标波特率
(Kbps )
0.3 0.301 +0.23% 185 0.300 +0.16% 51 0.256 -14.67% 1
1.2 1.190 -0.83% 46 1.202 +0.16% 12 NA
2.4 2.432 +1.32% 22 2.232 -6.99% 6 NA
9.6 9.322 -2.90% 5 NA
19.2 18.64 -2.90% 2 NA
76.8 NA
96 NA
300 NA
500 NA
高
低
OSC = 3.579545 MHz
计算波特率
(Kbps )
55.93
0.2185
误差
--
--
--
--
-
-
SPBRG
( 10 进制)
255 0.0610
1 MHz
值
计算波特率
(Kbps )
NA
NA
NA
NA
0 15.63
SPBRG
误差
(10 进制)
--
--
--
--
--
--
-
-
255 0.0020
10 MHz
值
值
值
计算波特率
(Kbps )
NA
NA
NA
NA
0 156.3
4 MHz
计算波特率
(Kbps )
NA
NA
NA
0 62.500
32.768 kHz
计算波特率
(Kbps )
NA
NA
NA
NA
NA
NA
0 0.512
误差
--
--
--
--
-
-
误差
--
--
--
--
--
--
-
-
误差
--
--
--
--
--
--
--
--
-
-
SPBRG
值
(10 进制)
0
255
SPBRG
值
(10 进制)
0
255
SPBRG
值
(10 进制)
0
255
2005 Microchip Technology Inc. DS40044D_CN 第 75 页
PIC16F627A/628A/648A
表 12-5 : 异步模式下的波特率 (BRGH = 1 )
值
值
16 MHz
计算波特率
(Kbps )
5.068 MHz
计算波特率
(Kbps )
316.75 26.700% 0 250 0.000% 0
NA
NA
误差
--
--
误差
--
--
SPBRG
( 10 进制)
SPBRG
( 10 进制)
OSC = 20 MHz
目标波特率
(Kbps )
9.600 9.615 +0.16% 129 9.615 +0.16% 103 9.615 +0.16% 64
19.200 19.230 +0.16% 64 19.230 +0.16% 51 18.939 -1.36% 32
38.400 37.878 -1.36% 32 38.461 +0.16% 25 39.062 +1.7% 15
57.600 56.818 -1.36% 21 58.823 +2.12% 16 56.818 -1.36% 10
115.200 113.636 -1.36% 10 111.111 -3.55% 8 125 +8.51% 4
250 250 0 4 250 0 3 NA
625 625 0 1 NA
1250 1250 0 0 NA
目标波特率
(Kbps )
9.600 9.520 -0.83% 46 9.598 0.016% 32 9.615 0.160% 25
19.200 19.454 +1.32% 22 18.632 -2.956% 16 19.23 0.160% 12
38.400 37.286 -2.90% 11 39.594 3.109% 7 35.714 -6.994% 6
57.600 55.930 -2.90% 7 52.792 -8.348% 5 62.5 8.507% 3
115.200 111.860 -2.90% 3 105.583 -8.348% 2 125 8.507% 1
250 NA
625 NA
1250 NA
F
计算波特率
(Kbps )
F
OSC = 7.16 MHz
计算波特率
(Kbps )
误差
误差
--
--
--
SPBRG
( 10 进制)
SPBRG
( 10 进制)
OSC = 3.579 MHz
目标波特率
(Kbps )
9.600 9.726 1.308% 22 8.928 -6.994% 6 NA NA NA
19.200 18.641 -2.913% 11 20.833 8.507% 2 NA NA NA
38.400 37.281 -2.913% 5 31.25 -18.620% 1 NA NA NA
57.600 55.922 -2.913% 3 62.5 +8.507 0 NA NA NA
115.200 111.244 -2.913% 1 NA
250 223.688 -10.525% 0 NA
625 NA
1250 NA
F
计算波特率
(Kbps )
误差
--
--
SPBRG
(10 进制)
值
1 MHz
计算波特率
(Kbps )
NA
NA
SPBRG
误差
(10 进制)
--
--
--
--
值
值
值
10 MHz
计算波特率
(Kbps )
625 0 0
NA
4 MHz
计算波特率
(Kbps )
NA
NA
32.768 kHz
计算波特率
(Kbps )
NA NA NA
NA NA NA
NA NA NA
NA NA NA
误差
--
--
误差
--
--
误差
SPBRG
( 10 进制)
SPBRG
( 10 进制)
SPBRG
(10 进制)
值
值
值
DS40044D_CN 第 76 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
12.2 USART 异步模式
在此模式下, USART 使用标准的 “非归零码”( nonreturn-to-zero, NRZ)格式 ( 1 个起始位, 8 个或 9 个
数据位, 1 个停止位)。最常用的数据格式为 8 位。专
用的 8 位波特率发生器用于从振荡器产生波特率频率。
USART 首先发送和接收 LSb 。USART 的发送器和接收
器在功能上是独立的,但采用相同的数据格式和波特
率。波特率发生器可以根据 BRGH 位(TXSTA<2> )的
状态产生相当于移位速率 16 倍或 64 倍的波特率时钟。
USART 硬件不支持奇偶校验,但该功能可由软件实现
(奇偶校验位是第 9 个数据位)。在休眠模式下,异步
模式会停止工作。
通过对 SYNC 位(TXSTA<4>)清零,可选择异步工作
模式。
USART 异步模块中的重要组成部分有:
• 波特率发生器
• 采样电路
• 异步发送器
• 异步接收器
12.2.1 USART 异步发送器
图 12-1 所示是 USART 发送器的框图。发送器的核心是
发送 (串行)移位寄存器 (TSR )。移位寄存器从读 /
写发送缓冲器 TXREG 中获取数据。 TXREG 寄存器要
用软件装入数据。在前一次装入数据的停止位发送完成
前,不会向 TSR 寄存器装入数据。一旦停止位发送完
毕, TSR 就会自动装入 TXREG 中的新数据 (如果
TXREG 中有数据的话)。一旦 TXREG 寄存器向 TSR
寄存器传输完数据 (在 1 个 T
存器就为空,同时标志位 TXIF (PIR1<4>)置位。可
以通过置位或清零 TXIE 使能位( PIE1<4> )来使能或
禁止该中断。不管使能位TXIE 的状态如何,标志位TXIF
都将置位,且无法用软件清零。只有向 TXREG 寄存器
装入新数据此位才会复位。标志位 TXIF 表示 TXREG 寄
存器的状态,而另一个位 TRMT (TXSTA<1>)则表示
TSR 寄存器的状态。状态位 TRMT 是只读位,当 TSR
寄存器为空时该位置位。因为没有与此位相关的中断逻
辑,所以用户必须查询此位以判断 TSR 寄存器是否为
空。
CY 内发生), TXREG 寄
通过将使能位 TXEN (TXSTA<5>)置位使能发送。但
是只有在 TXREG 寄存器装入数据和波特率发生器
(BRG )产生移位时钟之后才能实际进行数据发送
(图 12-1 )。也可以通过先把发送数据装入 TXREG 寄
存器,再将使能位 TXEN 位置位来启动发送。通常,在
第一次启动发送时,TSR寄存器为空,因此送到TXREG
寄存器的数据会被立即送到 TSR 寄存器,从而导致
TXREG寄存器为空。因此可以进行背对背发送(图 12-
3)。在发送过程中将 TXEN 位清零会导致发送中止,同
时复位发送器。因此 TX/CK 引脚会恢复到高阻态。
为选择 9 位数据发送方式,应将发送位 TX9 位
(TXSTA<6>)置 1 ,并且 第 9 位应写入 TX9D 位
(TXSTA<0>)。必须先写第 9 位数据,然后再将 8 位数
据写入 TXREG 寄存器。这是因为如果 TSR 寄存器为
空,向 TXREG 寄存器写数据会导致数据立即送入 TSR
寄存器。在这种情况下,装入 TSR 寄存器的第 9 位数
据可能是错误的。
注 1 :TSR 寄存器并未映射到数据存储器中,因
此用户不能直接访问它。
2 :当使能位 TXEN 置位时,标志位 TXIF 置
位。
2005 Microchip Technology Inc. DS40044D_CN 第 77 页
PIC16F627A/628A/648A
图 12-1 : USART 发送框图
数据总线
TXIE
TXIF
MSb
(8)
中断
TXREG 寄存器
8
² ² ²
TSR 寄存器
LSb
0
引脚缓冲
和控制
RB2/TX/CK 引脚
TXEN
波特率时钟
SPBRG
波特率发生器
TX9D
在设置异步发送模式时应遵循下面这些步骤:
1. 应同时置位 TRISB<1> 位和 TRISB<2> 位,将
RB1/RX/DT 和 RB2/TX/CK 引脚配置为输入。需
要时,通过外设电路控制输出驱动。
2. 用正确的波特率初始化 SPBRG 寄存器。如果需
要高速波特率,应将 BRGH 位置位。(参见
第 12.1 节 “USART 波特率发生器”)。
3. 通过将 SYNC 位清零并将 SPEN 位置位,使能异
步串行口。
4. 如果需要中断,应将使能位 TXIE 置位。
5. 如果需要发送 9 位数据,应将发送位 TX9 置位。
6. 通过将 TXEN 位置位使能发送,此操作同时也会
将 TXIF 位置位。
7. 如果选择发送 9 位数据,应该将第 9 位数据装入
TX9D 位。
8. 将数据装入 TXREG 寄存器 (开始发送)。
TX9
TRMT
SPEN
图 12-2 : 异步发送
写 TXREG
BRG 输出
(移位时钟)
RB2/TX/CK(引脚)
TXIF 位
(发送缓冲器
空标志位)
TRMT 位
(发送移位寄存器
空标志位)
DS40044D_CN 第 78 页 2005 Microchip Technology Inc.
word 1
word 1
发送移位寄存器
起始位 bit 0 bit 1 bit 7/8
word 1
停止位
图 12-3 : 异步发送 (背对背)
PIC16F627A/628A/648A
写 TXREG
BRG 输出
(移位时钟)
RB2/TX/CK(引脚)
TXIF 位
(中断寄存器标志位)
TRMT 位
(发送移位寄存器
空标志位)
注: 此时序图显示了两次连续发送。
word 1
发送移位寄存器
.
word 1
word 2
起始位
表 12-6 : 与异步发送相关的寄存器
地址 名称
0Ch PIR1
18h RCSTA
19h TXREG
8Ch PIE1
98h TXSTA
99h SPBRG
图注: x = 未知,- = 未实现,读作 0 。
阴影部分表示在异步发送模式下未使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
EEIF CMIF RCIF TXIF
SPEN RX9 SREN CREN ADEN FERR OERR RX9D 0000 000x 0000 000x
USART 发送数据寄存器
EEIE CMIE RCIE TXIE
CSRC TX9 TXEN SYNC
波特率发生器寄存器
bit 0 bit 1
word 1
-
-
-
bit 7/8 bit 0
停止位
word 2
发送移位寄存器
起始位
POR 时
的值
word 2
所有其他
复位时的值
CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
0000 0000 0000 0000
CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
BRGH TRMT TX9D 0000 -010 0000 -010
0000 0000 0000 0000
2005 Microchip Technology Inc. DS40044D_CN 第 79 页
PIC16F627A/628A/648A
12.2.2 USART 异步接收器
图 12-4 所示为接收器框图。在 RB1/RX/DT 引脚上接收
数据,并驱动数据恢复模块。数据恢复模块实际上是一
个高速移位器,工作频率为波特率的 16 倍频,但是主
接收串行移位寄存器工作频率为位速率或 F
OSC。
选择异步模式后,将 CREN 位(RCSTA<4>)置位将
使能接收。
接收器的核心部件是接收(串行)移位寄存器(RSR )。
当采样到停止位之后, RSR 中接收到的数据被送到
RCREG 寄存器 (如果 RCREG 寄存器为空)。发送完
成后,标志位 RCIF (PIR1<5> )会置位。通过置位 / 清
零使能位 RCIE (PIE1<5> ),可以允许或禁止该中断。
标志位 RCIF 是只读位,由硬件清零。在读 RCREG 寄
存器且 RCREG 寄存器为空时,它会被硬件清零。
RCREG 寄存器是一个双缓冲寄存器 (即两级深度的
图 12-4 : USART 接收框图
64 倍频波特率时钟
SPBRG
波特率发生器
RB1/RX/DT
引脚缓冲
和控制
数据
恢复
FIFO) 。因此可以实现接收两个字节的数据并传送到
RCREG FIFO,然后第三个字节开始移位到 RSR 寄存
器。在检测到第三个字节的停止位后,如果 RCREG 寄
存器仍然是满的,则溢出错误标志位 OERR
(RCSTA<1>)会被置位。RSR 寄存器中的数据将会丢
失。可以读两次 RCREG 寄存器以重新获得 FIFO 中的
两个字节。溢出标志位 OERR 必须用软件清零。这可以
通过复位接收逻辑(将 CREN 位清零后再置位)实现。
如果 OERR 位被置位,则禁止将 RSR 寄存器中的数据
传送到 RCREG 寄存器,因此如果 OERR 位已置位,则
必须将它清零。如果检测到停止位为零,则帧出错标志
位 FERR (RCSTA<2> )将被置位。FERR 位和接收到
的第 9 位以与接收数据相同的方式被缓冲。读 RCREG
会将新值装入 RX9D 和 FERR 位,因此,为了避免丢失
RX9D 和 FERR 位的原值,用户必须在读 RCREG 寄存
器前读 RCSTA 寄存器。
CREN
÷64
或
÷16
RX9
MSb
停止起始(8)
OERR
7
RSR 寄存器
• • •
FERR
1
LSb
0
SPEN
RX9
ADEN
RX9
ADEN
RSR<8>
中断
使能
装入
接收
缓冲器
RCIF
RCIE
RX9D
RX9D
8
8
RCREG 寄存器
RCREG 寄存器
8
数据总线
FIFO
DS40044D_CN 第 80 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
图 12-5: 带地址检测的异步接收
RB1/RX/DT(引脚)
RCV 移位寄存器
RCV 缓冲寄存器
读 RCV
缓冲寄存器
RCREG
RCIF
(中断标志位)
ADEN=1
(地址匹配
使能)
注: 此时序图显示了地址字节后跟一个数据字节的情况。因为 ADEN = 1 且 bit 8 = 0 ,数据字节不会被读入 RCREG
(接收缓冲器)。
起始
位
1 1
bit 1 bit 0
bit 8=0,数 据 字 节 bit 8=1,地 址 字 节
bit 8 bit 0停止
图 12-6 : 首先接收地址字节的异步接收
RB1/RX/DT(引脚)
RCV 移位寄存器
RCV 缓冲寄存器
读 RCV
缓冲寄存器
RCREG
RCIF
(中断标志位)
ADEN=1
(地址匹配
使能)
起始
位
1 1
bit 1 bit 0
bit 8=1,地址字节 bit 8=0 ,数据字节
bit 8 bit 0停止
起始
位 bit 8
位
起始
位 bit 8
位
word 1
RCREG
停止
位
停止
位
word 1
RCREG
注: 此时序图显示了数据字节后跟一个地址字节的情况。因为 ADEN 没有更新 (仍然为 1 )且 bit 8= 0 ,数据字节不会
被读入 RCREG (接收缓冲器)。
图 12-7 : 地址字节后紧接有效数据字节的异步接收
RB1/RX/DT(引脚)
RCV 移位寄存器
RCV 缓冲寄存器
读 RCV
缓冲寄存器
RCREG
RCIF
(中断标志位)
ADEN
(地址匹配
使能)
起始
位
bit 1 bit 0
bit 8=1,地址字节 bit 8=0 ,数据字节
bit 8 bit 0停止
注: 此时序图显示了数据字节后跟一个地址字节的情况。数据字节读入 RCREG (接收缓冲器),因为在发生地址匹配
后,ADEN 被更新(被清零),因此不管 bit 8 的值如何,接收移位寄存器(RSR )的内容都将被读入接收缓冲器。
起始
位 bit 8
位
word 1
RCREG
停止
位
word 2
RCREG
2005 Microchip Technology Inc. DS40044D_CN 第 81 页
PIC16F627A/628A/648A
在设置异步接收模式时应遵循以下步骤:
1. 应同时置位 TRISB<1> 位和 TRISB<2> 位,将
RB1/RX/DT 和 RB2/TX/CK 引脚配置为输入。需
要时,通过外设电路控制输出驱动。
2. 用正确的波特率初始化 SPBRG 寄存器。如果需
要高速波特率,应将 BRGH 位置位。(参见
第 12.1 节 “USART 波特率发生器”)。
3. 通过将 SYNC 位清零并将 SPEN 位置位,使能异
步串行口。
4. 如果需要中断,应将使能位 RCIE 置位。
5. 如果需要接收 9 位数据,则将 RX9 位置位。
6. 通过将 CREN 位置位使能接收。
7. 当接收完成时 RCIF 位将置位,此时如果使能位
RCIE 置位,将会产生一个中断。
8. 读 RCSTA 寄存器获取第 9 位数据 (如果已使
能),并判断在接收操作中是否发生错误。
9. 通过读 RCREG寄存器来读取接收到的8位数据。
10. 如果发生错误,通过将使能位 CREN 清零以清除
错误。
表 12-7 : 与异步接收有关的寄存器
地址 名称
0Ch PIR1
18h RCSTA SPEN RX9
1Ah RCREG
8Ch PIE1
98h TXSTA CSRC TX9 TXEN SYNC
99h SPBRG
图注: x = 未知,- = 未实现,读作 0。 阴影部分表示在异步接收模式下未使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
EEIF CMIF RCIF TXIF
SREN CREN ADEN FERR OERR RX9D 0000 000x 0000 000x
USART 接收数据寄存器
EEIE CMIE RCIE TXIE
波特率发生器寄存器
CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
-
CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
-
-
BRGH
TRMT TX9D 0000 -010 0000 -010
POR 时
的值
0000 0000 0000 0000
0000 0000 0000 0000
所有其他
复位
时的值
DS40044D_CN 第 82 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
12.3 USART 地址检测功能
12.3.1 带地址检测的 USART 9 位接收器
当 RCSTA 寄存器中的 RX9 位置位时,接收到 9 个位,
并且第 9 位被置入 RSTA 寄存器中的 RX9D 位。USART
具有多处理器通信的特殊功能。将 ADEN 位
(RCSTA<3>)与 RX9 位置位可使能多处理器通信。端
口目前被这样设置:当接收到最后一位时,接收移位寄
存器 (RSR )的内容移入接收缓冲器中, RSR 的第 9
位(RSR<8>)移入 RX9D,并且当且仅当 RSR<8>=1
时允许接收中断。此功能可用于如下多处理器系统:
主处理器希望将一个数据块发送给许多从处理器中的一
个。它必须首先发出一个地址字节来标识目标从处理
器。地址字节是通过将第 9 位(RSR<8>)置 1 标识的
(如果为 0 则是数据字节)。如果从处理器的 RCSTA 寄
存器中 ADEN 和 RX9 位被置位,使能多处理器通信,
将忽略所有的数据字节。然而,如果接收到的第 9 位为
1 ,即表示接收到的字节是地址,此时从处理器会被中
断并且 RSR 寄存器的内容将被移入接收缓冲器。这使
从处理器仅被地址中断,因此,从处理器可以检查接收
到的字节以查看自己的地址是否与该地址匹配。地址匹
配的从处理器随后将清零它的 ADEN 位,并准备接收来
自主处理器的数据字节。
当 ADEN 使能时(=1 ),所有数据字节都会被忽略。在
停止位后的数据将不会被装入接收缓存器,且不会产生
中断。如果另一个字节被移入了 RSR 寄存器,那么以
前的数据字节将被丢弃。
只有在接收器被配置为 9 位模式(RX9= 1 )时 , ADEN
位才起作用。当禁止 ADEN 位(=0)时,会接收所有
的数据字节,并且第 9 位可作为奇偶校验位。
图 12-4 所示为接收框图。
将 CREN 位(RCSTA<4>)置位可使能接收。
12.3.1.1 设置带有地址检测的 9 位模式
在使能地址检测时,要设置异步接收,请遵循以下步骤:
1. 应同时置位 TRISB<1> 位和 TRISB<2> 位,将
RB1/RX/DT 和 RB2/TX/CK 引脚配置为输入。需
要时,通过外设电路控制输出驱动。
2. 用正确的波特率初始化 SPBRG 寄存器。如果需
要高速波特率,应将 BRGH 位置位。
3. 通过将 SYNC 位清零并将 SPEN 位置位,使能异
步通信。
4. 如果需要中断,应将使能位 RCIE 置位。
5. 如果需要接收 9 位数据,则将 RX9 位置位。
6. 将 ADEN 置位以使能地址检测。
7. 将 CREN 或 SREN 位置位使能接收。
8. 当接收完成时标志位 RCIF 将置位,此时如果使
能位 RCIE 已置位,将会产生一个中断。
9. 通过读 RCREG 寄存器读取 8 位接收到的数据,
以判断器件是否正在被寻址。
10. 如果发生 OERR 错误,通过将使能位 CREN 清
零 (如果已经置位)以清除错误。
11. 如果器件被寻址(RSR<8>=1,使能地址匹
配),将 ADEN 和 RCIF 位清零以允许将数据字
节和地址字节读入接收缓冲器并中断 CPU 。
表 12-8 : 与异步接收有关的寄存器
地址 名称
0Ch PIR1
18h RCSTA SPEN RX9 SREN CREN ADEN FERR OERR RX9D 0000 000x 0000 000x
1Ah RCREG
8Ch PIE1
98h TXSTA
99h SPBRG
图注: x
= 未知,- = 未实现,读作 0。 阴影部分表示在异步接收模式下未使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
EEIF CMIF RCIF TXIF
USART 接收数据寄存器
EEIE CMIE RCIE TXIE
CSRC TX9 TXEN SYNC
波特率发生器寄存器
CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
-
CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
-
-
BRGH
TRMT TX9D 0000 -010 0000 -010
POR 时
的值
0000 0000 0000 0000
0000 0000 0000 0000
所有其他
时的值
复位
2005 Microchip Technology Inc. DS40044D_CN 第 83 页
PIC16F627A/628A/648A
12.4 USART 同步主模式
在同步主模式下,数据以半双工方式传输(即收发不同
时进行)。发送数据时,禁止接收,反之亦然。将 SYNC
位(TXSTA<4>)置位可进入同步模式。此外为了把
RB2/TX/CK 和 RB1/RX/DT I/O 引脚分别配置为时钟线
CK 和数据线 DT,应该将使能位 SPEN( RCSTA<7>)
置位。主模式意味着处理器在 CK 时钟线上发送主时钟
信号。将 CSRC 位(TXSTA<7>)置位可进入主模式。
12.4.1 USART 同步主发送
图 12-1 所示是 USART 发送器的框图。发送器的核心是
发送 (串行)移位寄存器 (TSR )。移位寄存器从读 /
写发送缓冲寄存器 TXREG 中获取数据。 TXREG 寄存
器要用软件装入数据。在前一次装入数据的最后一位发
送完成前,不会向 TSR 寄存器装入新数据。一旦最后一
位发送完成,就会将 TXREG 寄存器中的新数据装入
TSR (如果 TXREG 中有新数据的话)。当 TXREG 寄
存器把数据送入 TSR 后 (在一个 T 周期内完成) ,
TXREG 就变为空,同时中断标志位 TXIF (PIR1<4> )
置位。通过置位 / 清零使能位 TXIE (PIE1<4> ),可以
允许或禁止该中断。不管使能位 TXIE 的状态如何,都
将置位中断标志位 TXIF ,且其不能由软件清零。只有向
TXREG 寄存器装入新数据此位才会复位。TXIF 标志位
表明 TXREG 寄存器的状态,而 TRMT 位( TXSTA<1> )
表明 TSR 寄存器的状态。 TRMT 位是一个只读位,当
TSR 为空时,该位置位。没有任何与 TRMT 位相关的
中断逻辑,所以用户必须通过查询 TRMT 位来判断 TSR
寄存器是否为空。TSR 并未映射到数据存储器中,所以
用户不能对它进行访问。
通过将使能位 TXEN (TXSTA<5>)置位使能发送。但
是直到向 TXREG 寄存器装入数据之后才开始实际上的
发送。第一位数据将在 CK 线上下一个有效时钟上升沿
被移出。数据输出在同步时钟下降沿前后是稳定的
(图 12-8 )。也可以通过先将发送数据装入 TXREG 寄
存器,再将 TXEN 位置位的方式来启动发送 (图 12-
9)。这在选择低速波特率时是有利的,因为当 TXEN、
CREN 和 SREN 位清零时 BRG 保持复位状态。将TXEN
位置位将启动 BRG ,从而立即产生移位时钟。通常,在
第一次开始发送时,TSR寄存器为空,因此送到TXREG
寄存器的数据会被立即送到 TSR 寄存器,从而导致
TXREG 寄存器为空。可以进行背对背发送。
在发送过程中将 TXEN 位清零会导致发送中止,同时发
送器被复位。DT 和 CK 引脚将恢复到高阻态。在发送过
程中,无论 CREN 或 SREN 位被置位都会中止发送,同
时 DT 引脚恢复到高阻态(准备接收)。如果 CSRC 位
被置位 (内部时钟), CK 引脚将保持输出状态。虽然
发送器的逻辑电路与这两个引脚断开,但它不会复位。
要将发送器复位,用户必须将TXEN 位清零。如果SREN
位被置位 (以便中断正在进行的发送并接收一个字),
在收到一个字后,SREN 位会被清零,由于 TXEN 位仍
然为置位状态,串口将恢复到发送模式。 DT 线将立即
从高阻抗接收模式切换到发送模式并开始发送。为避免
这种情况,必须将 TXEN 位清零。
为选择 9 位发送模式, TX9 位(TXSTA<6>)应被置
位,而且第 9 位数据应当写入 TX9D 位( TXSTA<0>)。
必须先写第 9 位数据,然后将 8 位数据写入 TXREG 寄
存器。这是因为当 TSR 为空时,向 TXREG 寄存器写数
据会导致数据立即送入 TSR 寄存器。如果 TSR 空且在
向 TX9D 位写新值之前写 TXREG 寄存器,此时送入
TSR 的第 9 位数据是 TX9D 的 “当前”值。
设置同步主发送模式应遵循以下步骤:
1. 应同时置位 TRISB<1> 位和 TRISB<2> 位,将
RB1/RX/DT 和 RB2/TX/CK 引脚配置为输入。需
要时,通过外设电路控制输出驱动。
2. 用正确的波特率初始化 SPBRG 寄存器 (参见
第 12.1 节 “USART 波特率发生器”)。
3. 将 SYNC 、SPEN 和 CSRC 位置位,使能同步主
串行口。
4. 如果需要中断,应将使能位 TXIE 置位。
5. 如果需要发送 9 位数据,应将 TX9 置位。
6. 将 TXEN 位置位以使能发送。
7. 如果选择发送 9 位数据,应该将第 9 位数据装入
TX9D 位。
8. 将数据装入 TXREG 寄存器启动发送。
DS40044D_CN 第 84 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
表 12-9 : 与同步主发送有关的寄存器
地址 名称
0Ch PIR1
18h RCSTA SPEN
19h TXREG
8Ch PIE1
98h TXSTA CSRC TX9 TXEN SYNC
99h SPBRG
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
EEIF CMIF RCIF TXIF
CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
-
RX9 SREN CREN ADEN FERR OERR RX9D 0000 000x 0000 000x
USART 发送数据寄存器
EEIE CMIE RCIE TXIE
CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
-
BRGH TRMT TX9D 0000 -010 0000 -010
-
波特率发生器寄存器
POR 时的值
0000 0000 0000 0000
0000 0000 0000 0000
图注: x = 未知,- = 未实现,读作 0 。阴影部分表示在同步主发送模式下未使用。
图 12-8 : 同步发送
Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4 Q3Q4 Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1 Q2Q3Q4Q1Q2Q3Q4
所有其他复
位时的值
RB1/RX/DT 引脚
RB2/TX/CK 引脚
写入
TXREG 寄存器
TXIF 位
(中断标志)
TRMT 位
TXEN 位
写 word 1
TRMT
1
注: 同步主模式, SPBRG=0。连续发送两个 8 位字。
bit 0 bit 1 bit 7
word 1
写 word 2
bit 2 bit 0 bit 1 bit 7
图 12-9 : 同步发送 (通过 TXEN 控制)
RB1/RX/DT 引脚
RB2/TX/CK 引脚
写入
TXREG 寄存器
bit 0
bit 1
bit 2
word 2
1
bit 6 bit 7
TXIF 位
TRMT 位
TXEN 位
2005 Microchip Technology Inc. DS40044D_CN 第 85 页
PIC16F627A/628A/648A
12.4.2 USART 同步主接收模式
一旦选择同步模式后,使能位 SREN 位(RCSTA<5>)
和 CREN 位(RCSTA<4>)两者之一被置位都可以使
能接收。在时钟的下降沿采样 RB1/RX/DT 引脚上的数
据。如果使能位 SREN 已置位,则只接收一个字。如果
使能位 CREN 位置位,则可连续接收数据,直到 CREN
位清零。如果两个位同时置位,则 CREN 位优先。采样
得到最后的数据位后,接收移位寄存器(RSR )中接收
到的数据被送到RCREG 寄存器(如果该寄存器为空)。
传送完成后,中断标志位 RCIF (PIR1<5> )会置位。
通过置位 / 清零使能位 RCIE (PIE1<5> ),可以允许或
禁止该中断。 RCIF 标志位是只读位,由硬件复位。它
在 RCREG 寄存器被读之后或为空时被复位。 RCREG
寄存器是一个双缓冲寄存器(即两级深度的 FIFO )。这
可以允许在接收到两个字节的数据并传送给 RCREG
FIFO 后,第三个字节再移位到 RSR 寄存器。在接收到
第三个字节的最后一位后,如果 RCREG 寄存器仍然是
满的,则溢出错误标志位 OERR (RCSTA<1> )会被置
位。RSR 寄存器中的数据将会丢失。可以对 RCREG 寄
存器读两次,以重新获得 FIFO 中的两个字节。 OERR
位必须由软件清零 (将 CREN 位清零)。如果 OERR
位置位,则禁止 RSR 中的数据传送到 RCREG 寄存器,
因此如果 OERR 位置位,则必须将它清零。接收到的第
9 位数据以与其他接收数据同样的方式被缓冲。读
RCREG 寄存器将会给 RX9D 位装入新值,因此为了不
丢失 RX9D 位原来的信息,用户必须在读 RCREG 寄存
器之前读 RCSTA 寄存器。
设置同步主接收模式应遵循以下步骤:
1. 应同时置位 TRISB<1> 位和 TRISB<2> 位,将
RB1/RX/DT 和 RB2/TX/CK 引脚配置为输入。需
要时,通过外设电路控制输出驱动。
2. 用正确的波特率初始化 SPBRG 寄存器 (参见
第 12.1 节 “USART 波特率发生器”)。
3. 将 SYNC 、SPEN 和 CSRC 位置位,使能同步主
串行口。
4. 确保将 CREN 和 SREN 位清零。
5. 如果需要中断,应将使能位 RCIE 置位。
6. 如果需要接收 9 位数据,则将 RX9 位置位。
7. 如果需要单字节接收,则将 SREN 位置位; 如
果需要连续接收,则将 CREN 位置位。
8. 当接收完成时中断标志 RCIF 位将置位,如果使
能位 RCIE 置位,则会产生一个中断。
9. 读 RCSTA 寄存器获取第 9 位数据 (如果已使
能),并判断在接收操作中是否发生错误。
10. 通过读 RCREG寄存器来读取接收到的8位数据。
11. 如果发生 OERR 错误,将 CREN 位清零以清除
错误。
表 12-10 : 与同步主接收模式有关的寄存器
地址 名称
0Ch PIR1
18h RCSTA SPEN RX9
1Ah RCREG
8Ch PIE1
98h TXSTA CSRC
99h SPBRG
图注: x = 未知,- = 未实现,读作 0。 阴影部分表示在同步主接收方式中未使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
EEIF CMIF RCIF TXIF
SREN CREN ADEN FERR OERR RX9D 0000 000x 0000 000x
USART 接收数据寄存器
EEPIE CMIE RCIE TXIE
TX9 TXEN SYNC
波特率发生器寄存器
CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
-
CCP1IE TMR2IE TMR1IE -000 0000 -000 -000
-
BRGH TRMT TX9D 0000 -010 0000 -010
-
POR 时的值
0000 0000 0000 0000
0000 0000 0000 0000
所有其他复
位时的值
DS40044D_CN 第 86 页 2005 Microchip Technology Inc.
图 12-10 : 同步主接收模式 (SREN )
PIC16F627A/628A/648A
Q3Q4 Q1Q2Q3Q4Q1 Q2 Q3 Q4 Q2 Q1Q2 Q3 Q4Q1 Q2 Q3 Q4 Q1Q2Q3Q4Q1Q2 Q3 Q4Q1Q2 Q3 Q4Q1 Q2 Q3 Q4 Q1Q2Q3Q4
RB1/RX/DT 引脚
RB2/TX/CK 引脚
写入
SREN 位
SREN 位
CREN 位
RCIF 位
(中断标志)
读
RXREG
0
注: 时序图说明了 SREN = 1 且 BRG = 0 时同步主模式的情况。
bit 0 bit 1 bit 2 bit 3 bit 4 bit 5 bit 6 bit 7
12.5 USART 同步从模式
同步从模式与主模式的不同之处在于,其移位时钟信号
是通过 TX/CK 引脚外部提供的 (主模式由内部提供移
位时钟)。这就可以让器件在休眠状态下发送或接收数
据。将 CSRC 位(TXSTA<7>)清零即可进入从模式。
12.5.1 USART 同步从发送
除了休眠模式以外,同步主、从模式的工作原理是相同
的。
如果向 TXREG 写入两个字,然后执行 SLEEP 指令,则:
a) 第一个字立即传送到 TSR 寄存器并发送。
b) 第二个字留在 TXREG 寄存器中。
c) 标志位 TXIF 不会置位。
d) 当第一个字移出 TSR 后,TXREG 寄存器将把第
二个字送入 TSR,标志位 TXIF 置位。
e) 如果中断允许位 TXIE 为 1,中断将把芯片从休
眠状态唤醒,如果允许全局中断,则程序会跳转
到中断矢量 (0004h )。
Q1Q2Q3Q4
0
设置同步从发送模式应遵循以下步骤:
1. 应同时置位 TRISB<1> 位和 TRISB<2> 位,将
RB1/RX/DT 和 RB2/TX/CK 引脚配置为输入。需
要时,通过外设电路控制输出驱动。
2. 通过将 SYNC 和SPEN 位置位并清零 CSRC 位,
使能同步从串行口。
3. 将 CREN 和 SREN 位清零。
4. 如果需要中断,应将使能位 TXIE 置位。
5. 如果需要发送 9 位数据,应将 TX9 位置位。
6. 将使能位 TXEN 位置位以使能发送。
7. 如果选择发送 9 位数据,应该将第 9 位数据装入
TX9D 位。
8. 将数据装入 TXREG 寄存器启动发送。
2005 Microchip Technology Inc. DS40044D_CN 第 87 页
PIC16F627A/628A/648A
12.5.2 USART 同步从接收
除了休眠模式以外,同步主、从模式的工作原理是相同
的。另外, SREN 位在从模式下未使用。
如果在执行 SLEEP 指令之前已使能接收模式 (即将
CREN 位置位),那么在休眠状态下仍可以接收一个数
据字。当接收完一个数据字后,RSR 寄存器将把数据送
入 RCREG 寄存器,并且如果置位了 RCIE 使能位,将
产生中断并将芯片从休眠状态中唤醒。如果允许全局中
断,那么程序将跳转至中断失量 (0004h )。
设置同步从接收模式应遵循以下步骤:
1. 应同时置位 TRISB<1> 位和 TRISB<2> 位,将
RB1/RX/DT 和 RB2/TX/CK 引脚配置为输入。需
要时,通过外设电路控制输出驱动。
2. 通过将 SYNC 和SPEN 位置位并清零 CSRC 位,
使能同步主串行口。
3. 如果需要中断,应将使能位 RCIE 置位。
4. 如果需要接收 9 位数据,则将 RX9 位置位。
5. 将使能位 CREN 置位以使能接收。
6. 当接收完成时标志位 RCIF 将置位,此时如果使
能位 RCIE 置位,将会产生一个中断。
7. 读 RCSTA 寄存器获取第 9 位数据 (如果已使
能),并判断在接收操作中是否发生错误。
8. 通过读 RCREG寄存器来读取接收到的8位数据。
9. 如果发生 OERR 错误,将 CREN 位清零以清除
错误。
表 12-11 : 与同步从发送有关的寄存器
地址 名称
0Ch PIR1
18h RCSTA SPEN RX9 SREN CREN ADEN FERR OERR RX9D 0000 000x 0000 000x
19h TXREG
8Ch PIE1
98h TXSTA CSRC TX9 TXEN SYNC
99h SPBRG
图注: x = 未知,- = 未实现,读作 0 。阴影部分表示在同步从发送模式下未使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
EEIF CMIF RCIF TXIF
USART 发送数据寄存器
EEIE CMIE RCIE TXIE
波特率发生器寄存器
CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
-
CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
-
BRGH TRMT TX9D 0000 -010 0000 -010
-
POR 时的值
0000 0000 0000 0000
0000 0000 0000 0000
所有其他复
位时的值
表 12-12 : 与同步从接收有关的寄存器
地址 名称
0Ch PIR1
18h RCSTA SPEN RX9 SREN CREN ADEN FERR OERR RX9D 0000 000x 0000 000x
1Ah RCREG
8Ch PIE1
98h TXSTA CSRC
99h SPBRG
图注: x = 未知,- = 未实现,读作 0 。阴影部分表示在同步从接收模式下未使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
EEIF CMIF RCIF TXIF
USART 接收数据寄存器
EEIE CMIE RCIE TXIE
TX9 TXEN SYNC
波特率发生器寄存器
CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
-
CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
-
BRGH TRMT TX9D 0000 -010 0000 -010
-
POR 时的值
0000 0000 0000 0000
0000 0000 0000 0000
所有其他复
位时的值
DS40044D_CN 第 88 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
13.0 数据 EEPROM 存储器
EEPROM 数据存储器在正常工作状态下(整个 VDD 范
围内)是可读写的。这种存储器并不直接映射到文件寄
存器空间。 而是通过特殊功能寄存器(Special Function
Register ,SFR)对其进行间接寻址。 有 4 个 SFR 用于
读写该存储器。 它们是:
• EECON1
• EECON2 (不是物理实现的寄存器)
• EEDATA
• EEADR
EEDATA 保存要读 / 写的 8 位数据, EEADR 则保存要
被寻址的 EEPROM 单元的地址。PIC16F627A/628A 器
件具有 128 字节的数据 EEPROM ,地址范围从 0h 到
7Fh ; PIC16F648A 器件具有 256 字节的数据
EEPROM,地址范围从 0h 到 FFh。
EEPROM 数据存储器允许字节读写。 字节写操作会自
动擦除目标单元并写入新数据(先擦再写)。 EEPROM
数据存储器以其高擦 / 写次数而闻名。 写入时间由片上
定时器控制。 它会随着电压、温度以及具体芯片的不同
而变化。 如需了解具体的限制,请参见 AC 规范。
当器件被代码保护时, CPU 仍可继续读写数据
EEPROM 存储器。 但器件编程器将再也无法访问此存
储器。
有关数据 EEPROM 的更多信息,可参见
中档单片机系列参考手册》
寄存器 13-1: EEDATA — EEPROM 数据寄存器 (地址:9Ah)
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 EEDAT1 EEDAT0
bit 7 bit 0
bit 7-0 EEDATn:读取或写入数据 EEPROM 存储器单元的字节值
《
PICmicro
(DS33023A_CN )。
®
图注:
R = 可读位 W = 可写位 U = 未实现位,读作 0
= POR 时的值 1 = 置位 0 = 清零 x = 未知
-n
寄存器 13-2: EEADR — EEPROM 地址寄存器 (地址:9Bh)
R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
EADR7 EADR6 EADR5 EADR4 EADR3 EADR2 EADR1 EADR0
bit 7 bit 0
bit 7
bit 6-0 EEADR:指定 EEPROM 读写操作的目标地址单元 (共有 128 个地址单元)
PIC16F627A/628A
未实现地址:必须设置为 0
PIC16F648A
EEADR:置 1 指定将读写 EEPROM 128 个高地址单元 (128 到 255 )
图注:
R = 可读位 W = 可写位 U = 未实现位,读作 0
-n = POR 时的值 1 = 置位 0 = 清零 x = 未知
2005 Microchip Technology Inc. DS40044D_CN 第 89 页
PIC16F627A/628A/648A
13.1 EEADR
PIC16F648A 的 EEADR 寄存器寻址数据 EEPROM 的
256 字节。 寄存器中所有的 8 个位( EEADR<7:0>)都
是必需的。
PIC16F627A/628A 的 EEADR 寄存器只寻址数据
EEPROM 的前 128 字节,因此只需要使用此寄存器 8
个位中的 7 个(EEADR<6:0>)。 最高位也参加地址译
码。 这就意味着此位必须始终为0,以确保地址处于128
字节存储空间内。
13.2 EECON1 和 EECON2 寄存器
EECON1 控制寄存器的低 4 位是物理实现的。 其高 4 位
为不存在,读作 0 。
控制位 RD 和 WR 分别启动读和写。 用软件只能将这些
位置位而无法清零。 在读或写操作完成后,由硬件将它
们清零。 由于无法用软件将 WR 位清零,从而避免了写
操作过早地意外终止。
置位 WREN 位将允许一次写操作。 上电时, WREN 位
被清零。 正常工作时,当写操作被 MCLR
超时复位中断时,WRERR 位置位。 在这些情况下,复
位后用户可以检查 WRERR 位的状态并重写该单元。
EEDATA 和 EEADR 寄存器中的数据和地址将保持不
变。
写操作完成时,PIR1 寄存器中的中断标志位 EEIF 会置
位。 此位必须用软件清零。
EECON2 不是物理寄存器。 读 EECON2 将返回全 0。
EECON2 寄存器仅在数据 EEPROM 写过程中使用。
寄存器 13-3 : EECON1 — EEPROM 控制寄存器 1 (地址:9Ch )器件
U-0 U-0 U-0 U-0 R/W-x R/W-0 R/S-0 R/S-0
- - - -
bit 7 bit 0
WRERR WREN WR RD
复位或 WDT
bit 7-4 未实现位:读作 0
bit 3 WRERR:EEPROM 错误标志位
1= 提前终止写操作 (由于正常操作过程中的任何 MCLR 复位、 WDT 复位或 BOR 复位)
0= 写操作完成
bit 2 WREN:EEPROM 写使能位
1= 允许写周期
0= 禁止写数据 EEPROM
bit 1 WR:写控制位
1 = 开始写周期 (一旦写入完成,该位将由硬件清零。 用软件只能置位 WR 位,而不能将其清
零)。
0 = 数据 EEPROM 写周期完成
bit 0 RD:读控制位
1 = 开始读 EEPROM (读取需要一个周期。 RD 由硬件清零。 用软件只能置位 RD 位,而不能将
其清零)。
0 = 没有启动 EEPROM 读操作
图注:
R = 可读位 W = 可写位 U = 未实现位,读作 0
-n = POR 时的值 1 = 置位 0 = 清零 x = 未知
DS40044D_CN 第 90 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
13.3 读取 EEPROM 数据存储器
要读取数据存储器单元,用户必须将地址写入 EEADR
寄存器,然后置位控制位 RD (EECON1<0> )。 随后
的一个周期数据就出现 EEDATA 寄存器中,因此该数据
可在下一条指令中读取。 EEDATA 将把此值保存至下一
次用户向该单元读取或写入数据时 (在写操作过程中)
为止。
例 13-1 : 读取数据 EEPROM
BSF STATUS, RP0 ;Bank 1
MOVLW CONFIG_ADDR ;
MOVWF EEADR ;Address to read
BSF EECON1, RD ;EE Read
MOVF EEDATA, W ;W = EEDATA
BCF STATUS, RP0 ;Bank 0
13.4 写入 EEPROM 数据存储器
要写入 EEPROM 数据单元,用户必须首先将地址写入
EEADR 寄存器,并将数据写入 EEDATA 寄存器。 然后
用户必须按特定顺序开始写入每个字节。
例 13-2 : 写入数据 EEPROM
BSF STATUS, RP0 ;Bank 1
BSF EECON1, WREN ;Enable write
BCF INTCON, GIE ;Disable INTs.
BTFSC INTCON,GIE ;See AN576
GOTO $-2
MOVLW 55h ;
MOVWF EECON2 ;Write 55h
必需
顺序
MOVLW AAh ;
MOVWF EECON2 ;Write AAh
BSF EECON1,WR ;Set WR bit
如果未完全按照上例中的顺序 (先将 55h 写入
EECON2,再将 AAh 写入 EECON2,最后将 WR 位置
1)逐字节写入,写操作将不会开始。 强烈建议在这一
代码段中禁止中断。 在执行必需的指令序列时也会执行
周期计数。 如果周期计数与执行必需指令序列所需的周
期数不等,那么数据将不会写入 EEPROM 。
此外,必须将 EECON1 中的 WREN 位置位以使能写操
作。 这种机制可防止由于执行错误 (不期望的)代码
(例如 程 序 跑飞)导 致 误 写入 EEPROM 。 除了更新
EEPROM 时以外,用户应该始终保持 WREN 位清零。
硬件不能清零 WREN 位。
一个写过程开始后,将 WREN 位清零将不会影响此写
周期。 除非 WREN 位置位,否则 WR 位将无法置位。
写周期完成时, WR 位由硬件清零,并且 EE 写完成中
断标志位 (EE Write Complete Interrupt Flag bit,
EEIF )置位。 用户可以使能此中断或查询此位。 PIR1
寄存器的 EEIF 位必须用软件清零。
13.5 写校验
视应用而定,好的编程习惯可能规定将写入数据
EEPROM 的值对照期望值进行校验 (例 13-3)。当
EEPROM 的数据位擦写次数接近规范极限值的应用
中,就应进行写校验。
例 13-3 :写 校 验
BSF STATUS, RP0 ;Bank 1
MOVF EEDATA, W
BSF EECON1, RD ;Read the
;value written
;
;Is the value written (in W reg) and
;read (in EEDATA) the same?
;
SUBWF EEDATA, W ;
BTFSS STATUS, Z ;Is difference 0?
GOTO WRITE_ERR ;NO, Write error
: ;YES, Good write
: ;Continue program
13.6 防止误写
有些情况下,不宜向数据 EEPROM 写入数据。 为了防
止误写 EEPROM ,器件内建了各种保护机制。 在上电
时,WREN 位被清零。 同时,如果使能了上电延时定时
器 (持续时间为 72 ms ),也可防止误写 EEPROM 。
在掉电、电源毛刺或软件故障期间,写操作启动顺序和
WREN 位可共同防止发生误写操作。
2005 Microchip Technology Inc. DS40044D_CN 第 91 页
PIC16F627A/628A/648A
13.7 使用数据 EEPROM
数据 EEPROM 是高耐用性,通过字节寻址的阵列,优
化为用来保存经常变更的信息(例如,程序变量或其他
经常更新的数据) 。如果一个段中的变量经常发生改
变,而另一个段中的变量不发生改变,就可能造成对整
个 EEPROM 的总擦写次数超出规范(参数 D124 ),而
对某个字节的总擦写次数不会超出规范 ( 参数 D120 和
D120A )如果是这样,必须执行一次阵列刷新。因此,应
将不经常改变的变量 (如常量、 ID 和校准值等)存储到
闪存程序存储器中。
例 13-4 :数 据EEPROM 刷新程序
BANKSEL 0X80 ;select Bank1
CLRF EEADR ;start at address 0
BCF INTCON, GIE ;disable interrupts
BTFSC INTCON, GIE ;see AN576
GOTO $ - 2
BSF EECON1, WREN ;enable EE writes
Loop
BSF EECON1, RD ;retrieve data into EEDATA
MOVLW 0x55 ;first step of ...
MOVWF EECON2 ;... required sequence
MOVLW 0xAA ;second step of ...
MOVWF EECON2 ;... required sequence
BSF EECON1, WR ;start write sequence
BTFSC EECON1, WR ;wait for write complete
GOTO $ - 1
例 13-4 所示为简单的数据 EEPROM 刷新程序。
注: 如果数据 EEPROM 仅用于存储常量和 / 或
很少修改的数据,可能就不需要进行阵列
刷新。 请参见规范 D124。
#IFDEF __16F648A ;256 bytes in 16F648A
INCFSZ EEADR, f ;test for end of memory
#ELSE ;128 bytes in 16F627A/628A
INCF EEADR, f ;next address
BTFSS EEADR, 7 ;test for end of memory
#ENDIF ;end of conditional assembly
GOTO Loop ;repeat for all locations
DS40044D_CN 第 92 页 2005 Microchip Technology Inc.
13.8 代码保护时的数据 EEPROM 操作
当器件代码保护时, CPU 仍能够读写数据 EEPROM 。
表 13-1 : 与数据 EEPROM 相关的寄存器 / 位
地址 名称
9Ah EEDATA
9Bh EEADR
9Ch EECON1
9Dh EECON2
图注: x
注 1 : EECON2 不是物理存在的寄存器。
= 未知, u = 未改变,- = 未实现,读作 0, q = 值随条件变化。
阴影单元表示未被数据 EEPROM 使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
EEPROM 数据寄存器
EEPROM 地址寄存器
- - - -
(1)
EEPROM 控制寄存器 2
PIC16F627A/628A/648A
上电复位时的值所有其他复
位时的值
xxxx xxxx uuuu uuuu
xxxx xxxx uuuu uuuu
WRERR WREN WR RD ---- x000 ---- q000
---- ---- ---- ----
2005 Microchip Technology Inc. DS40044D_CN 第 93 页
PIC16F627A/628A/648A
注:
DS40044D_CN 第 94 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
14.0 CPU 的特殊功能
单片机内部集成了处理实时应用需要的特殊电路,这也
是单片机与其他处理器的区分。PIC16F627A/628A/
648A 系列具有以下功能,旨在最大限度地提高系统可
靠性,通过避免使用外部元器件将成本降至最低,提供
低功耗工作模式以及代码保护功能。
这些功能包括:
1. 振荡源选择
2. 复位
3. 上电复位 ( POR)
4. 上电延时定时器 ( PWRT)
5. 振荡器起振定时器 ( Oscillator Start-Up Timer,
OST)
6. 欠压复位 ( BOR)
7. 中断
8. 看门狗 ( WDT)
9. 休眠
10. 代码保护
11. ID 单元
12. 在线串行编程 ( In-Circuit Serial
Programming™, ICSP™ )
PIC16F627A/628A/648A 配备了一个看门狗,由配置位
来控制。看门狗依靠自身的 RC 振荡器来运行,增加了
可靠性。有两个定时器提供必要的上电延时。一个是振
荡器起振定时器 (OST ),旨在确保芯片在晶振达到稳
定前处于复位状态。另外一个是上电延时定时器
(PWRT ),仅在上电时提供 72 ms (标称值)的固定
延时,确保器件在电源电压稳定之前处于复位状态。 此
外,还有专门的电路在发生欠压时,使器件复位。由于
片上已具有这三种功能,对大多数应用而言,不需要外
部复位电路。
休眠模式是为提供一种电流消耗很低的掉电工作模式而
设计的。用户可通过外部复位、看门狗唤醒或中断将器
件从休眠状态唤醒。还有几种振荡模式供选择,使器件
能符合不同应用的需要。选择 RC 振荡模式可节省系统
的成本,而选择 LP 晶振模式可降低系统功耗。可以使
用一组配置位来选择不同的模式。
14.1 配置位
可以通过对配置位编程 (读作 “0 ”)或不编程 (读作
“1 ”)来选择不同的器件配置。这些配置位映射到程序
存储器地址 2007h 。
用户会注意到地址2007h 超出了用户程序存储空间范
围。事实上,它属于特殊配置存储空间(2000h -
3FFFh ),仅可在编程时对其进行访问。更多信息参见
PIC16F627A/628A/648A EEPROM Memory
Programming Specification (DS41196)。
2005 Microchip Technology Inc. DS40044D_CN 第 95 页
PIC16F627A/628A/648A
寄存器 14-1: CONFIG — 配置字寄存器
CP
- - - -
CPD LVP BOREN MCLRE FOSC2 PWRTE
WDTE F0SC1 F0SC0
bit 13 bit 0
bit 13:
bit 12-9:
bit 8:
bit 7:
bit 6:
bit 5:
CP:闪存程序存储器代码保护位
(PIC16F648A)
1= 代码保护关闭
0=0000h 到 0FFFh 有代码保护
(PIC16F628A)
1= 代码保护关闭
0=0000h 到 07FFh 有代码保护
(PIC16F627A)
1= 代码保护关闭
0=0000h 到 03FFh 有代码保护
未实现位:读作 0
CPD :数据代码保护位
1= 数据存储器代码保护关闭
0= 数据存储器有代码保护
LVP :低电压编程使能位
1=RB4/PGM 引脚具有 PGM 功能,低电压编程使能。
0=RB4/PGM 为数字 I/O ,如要编程,必须在 MCLR
BOREN:欠压复位使能位
1= 使能 BOR 复位
0= 禁止 BOR 复位
MCLRE:RA5/MCLR
1=RA5/MCLR
0=RA5/MCLR/VPP 引脚功能为数字输入, MCLR 内部连接到 VDD
/VPP 引脚功能选择位
/VPP 引脚功能为 MCLR
(2)
(3)
引脚加高电压。
(1)
bit 3:
bit 2:
bit 4, 1-0:
注 1 : 使能欠压复位不会像在 PIC16F627/628 中一样自动使能上电延时定时器 (PWRT)。
图注:
R= 可读位 W= 可写位 U= 未实现位,读作 “0”
-n=POR 时的值 1= 置位 0= 清零 x= 未知
PWRTE
:上电延时定时器使能位
1= 禁止 PWRT
0= 使能 PWRT
WDTEN:看门狗使能位
1= 使能 WDT
0= 禁止 WDT
FOSC<2:0>:振荡模式选择位
111=RC振荡模式:RA6/OSC2/CLKOUT 引脚为 CLKOUT 功能, RA7/OSC1/CLKIN 引脚连接电阻和电容
110=RC振荡模式:RA6/OSC2/CLKOUT 引脚为 I/O 功能, RA7/OSC1/CLKIN 引脚连接电阻和电容
101=INTOSC振荡模式:RA6/OSC2/CLKOUT 引脚为 CLKOUT 功能, RA7/OSC1/CLKIN 引脚为 I/O 功能
100=INTOSC振荡模式:RA6/OSC2/CLKOUT 引脚为 I/O 功能, RA7/OSC1/CLKIN 引脚为 I/O 功能
011=EC振荡模式:RA6/OSC2/CLKOUT 引脚为 I/O 功能, RA7/OSC1/CLKIN 引脚为 CLKIN 功能。
010=HS振荡模式:RA6/OSC2/CLKOUT 和 RA7/OSC1/CLKIN 引脚接高速晶振 / 谐振器
001=XT振荡模式:RA6/OSC2/CLKOUT 和 RA7/OSC1/CLKIN 引脚接晶振 / 谐振器
000=LP振荡模式:RA6/OSC2/CLKOUT 和 RA7/OSC1/CLKIN 引脚接低功耗晶振
2 : 该系列对代码保护方案作了修改,不同于 PIC16F627/628 原来所用的代码保护方案。为了将 CP
整个闪存程序存储器。详情参见 PIC16F627A/628A/648A EEPROM Memory Programming Specification (DS41196)。
3 : 为了将 CPD
Programming Specification (DS41196 )。
4 : 如果 MCLR
位置 1 (关闭代码保护),需要批量擦除整个数据 EEPROM 。详情参见 PIC16F627A/628A/648A EEPROM Memory
在 INTOSC 模式下被拉为低电平,则内部时钟振荡器将被禁止。
(1)
(4)
位置 1 (关闭代码保护),需要批量擦除
DS40044D_CN 第 96 页 2005 Microchip Technology Inc.
PIC16F627A/628A/648A
14.2 振荡器配置
14.2.1 振荡器类型
PIC16F627A/628A/648A 可工作在 8 种不同的振荡模
式。用户可以对三个配置位(FOSC2 到 FOSC0 )编 程
来选择其中任何一种模式。
• LP 低功耗晶振
• XT 晶振 / 谐振器
• HS 高速晶振 / 谐振器
• RC 外部电阻 / 电容 (2 种模式)
• INTOSC 高精度内部振荡器 (2 种模式)
• EC 外部时钟输入
14.2.2 晶振 / 陶瓷谐振器
在 XT 、LP 或 HS 模式下,OSC1 和 OSC2 引脚连接一
个晶振或陶瓷谐振器以产生振荡(图 14-1 )。
PIC16F627A/628A/648A 振荡器的设计要求使用平行切
割的晶体。而采用顺序切割的晶体,可能使振荡器产生
的频率超出晶体制造厂商给出的范围。在 XT 、LP 或 HS
模式下,器件可用一个外部时钟源来驱动 OSC1 引脚
(图 14-4 )。
图 14-1 : 晶振工作原理
(或陶瓷谐振器)(HS 、 XT
或 LP 振荡器配置)
OSC1
( 2)
C1
XTAL
OSC2
(1)
RS
( 2)
C2
注 1: 对于 AT 垂直切割的晶体可能需要串联一个电阻。
2: C1 和 C2 的建议值,参见表 14-1 和表 14-2 。
RF
PIC16F627A/628A/648A
休眠
FOSC
表 14-1 : 陶瓷谐振器的电容选择
模式 频率
XT 455 kHz
2.0 MHz
4.0 MHz
HS 8.0 MHz
16.0 MHz
OSC1(C1) OSC1(C2)
22 - 100 pF
15 - 68 pF
15 - 68 pF
10 - 68 pF
10 - 22 pF
22 - 100 pF
15 - 68 pF
15 - 68 pF
10 - 68 pF
10 - 22 pF
注: 采用较大的电容虽然可以提高振荡器
的稳定性,但是同时会延长振荡器的起
振时间。这些值仅供设计参考。由于谐
振器的特性各不相同,因此用户应向谐
振器厂商咨询外部元件的正确参数。
表 14-2 : 晶振的电容选择
模式 频率
LP 32 kHz
200 kHz
XT 100 kHz
2 MHz
4 MHz
HS 8 MHz
10 MHz
20 MHz
OSC1(C1) OSC1(C2)
15 - 30 pF
0 - 15 pF
68 - 150 pF
15 - 30 pF
15 - 30 pF
15 - 30 pF
15 - 30 pF
15 - 30 pF
15 - 30 pF
0 - 15 pF
150 - 200 pF
15 - 30 pF
15 - 30 pF
15 - 30 pF
15 - 30 pF
15 - 30 pF
注: 采用较大的电容值虽然可以提高振荡
器的稳定性,但是同时会延长振荡器
的起振时间。这些值仅供设计参考。
为避免对要求低驱动电压的晶振造成
过驱动,在 HS 和 XT 模式下,可能需
要串联电阻 (RS ) 。由于晶振的特
性各不相同,因此用户应向晶振厂商
咨询外部元件的正确参数。
2005 Microchip Technology Inc. DS40044D_CN 第 97 页
PIC16F627A/628A/648A
14.2.3 外部晶振电路
既可以使用现成的振荡器,也可构建一个 TTL 的简单振
荡电路。现成的振荡器有较宽的工作范围和更好的稳定
性。而一个设计良好的晶振可以通过 TTL 门提供优良的
性能。可使用两种类型的晶振电路:串联谐振电路或并
联谐振电路。
图 14-2 为并联谐振振荡电路的实现原理。该电路设计
为使用晶振的基频。 74AS04 反相器提供并联振荡器所
需的 180 °相移。 4.7k Ω 电阻则提供负反馈来提高电路
稳定性。 10k Ω 电位器将 74AS04 偏置在线性工作区。
这可用于外部振荡器的设计。
图 14-2 : 外部并联谐振器 / 晶振的振
荡电路
+5V
10K
4.7K
74AS04
10K
XTAL
10K
C1 C2
图 14-3 为串联谐振振荡电路。该电路也设计为使用晶
振的基频。反相器为串联谐振振荡电路提供 180 °相
移。330 kΩ 电阻提供负反馈,将反相器偏置在线性工作
区。
74AS04
到其他
器件
PIC16F627A/628A/648A
CLKIN
图 14-3 : 外部串联谐振 / 晶振的振荡
电路
到其他
74AS04
器件
CLKIN
PIC16F627A/
628A/648A
330 KΩ
74AS04
0.1 PF
330 KΩ
74AS04
XTAL
14.2.4 高精度 4MH
Z 内部振荡器
在 VDD = 5 V 、25 °C 条件下,高精度内部振荡器提供一
个固定的 4MHz(标称值)系统时钟。其振荡频率随工
作电压和温度变化的信息,参见第17.0 节“电气规范”。
14.2.5 外部时钟输入
对于已经有了外部时钟信号的应用,如果外部时钟源满
足第 17.6 节“时序图和规范”中列出的 AC/DC 时序要
求,则用户可以使用它来直接驱动 PIC16F627A/628A/
648A 。下面的图 14-4 说明了应当如何配置外部时钟电
路。
图 14-4 : 外部时钟输入工作原理
(EC 、 HS 、 XT 或 LP 振荡
器配置)
时钟信号来自
外部系统
RA6
RA7/OSC1/CLKIN
PIC16F627A/628A/648A
RA6/OSC2/CLKOUT
DS40044D_CN 第 98 页 2005 Microchip Technology Inc.