PIC12F510/16F506
数据手册
8/14 引脚 8 位闪存单片机
*8 位 8 引脚器件受 Microchip 低引脚数专利保护:美国专利号为 5,847,450 。其他美国或他国专利可能已经颁发,或正在
接受审查。
2006 Microchip Technology Inc. 初稿 DS41268A_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
•M i c r o c h i p的产品均达到 Microchip 数据手册中所述的技术指标。
•M i c r o c h i p确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的
操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•M i c r o c h i p愿与那些注重代码完整性的客户合作。
•M i c r o c h i p或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视
为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act )》。如果这种行为导致他人在未经授权的情况下,能访问您的
软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含
的英文部分,因为其中提供了有关 Microchip 产品性能和使用
情况的有用信息。Microchip Technology Inc. 及其分公司和相
关公司、各级主管与员工及事务代理机构对译文中可能存在的
任何差错不承担任何责任。建议参考 Microchip Technology
Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便
利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或
暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用
性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。如果将 Microchip 器件用于生命
维持和 / 或生命安全应用,一切风险由买方自负。买方同意在
由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障
Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识
产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron、
dsPIC、 K
EEL OQ、 microID 、 MPLAB、 PIC、 PICmicro、
PICSTART、 PRO MATE、 PowerSmart、 rfPIC 和
SmartShunt 均为 Microchip Technology Inc. 在美国和其他国
家或地区的注册商标。
AmpLab、 FilterLab、 Migratable Memory、 MXDEV、
MXLAB、 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、 REAL
ICE、 rfLAB、 rfPICDEM、 Select Mode、 Smart Serial、
SmartTel、 Total Endurance、 UNI/O、 WiperLock 和 Zena
均为 Microchip Technology Inc. 在美国和其他国家或地区的
商标。
SQTP 是 Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。
© 2006, Microchip Technology Inc . 版权所有。
Microchip
州
10
位单片机、
性存储器和模拟产品方面的质量体系流程均符合
16949:2002
系也已通过了
位于美国亚利桑那州
Mountain View
月通过了
ISO/TS-16949:2002
KEE LOQ
。此外,
ISO 9001:2000
的全球总部、设计中心和晶圆生产厂均于
®
跳码器件、串行
Microchip
Chandler和Tem pe
质量体系认证。公司在
EEPROM
在开发系统的设计和生产方面的质量体
认证。
及位于加利福尼亚
PICmicro
、单片机外设、非易失
ISO/TS-
2003
年
®
DS41268A_CN 第 ii 页 初稿 2006 Microchip Technology Inc.
8
PIC12F510/16F506
8/14 引脚 8 位闪存单片机
本数据手册所包含的器件:
• PIC16F506
• PIC12F510
高性能 RISC CPU :
• 仅需学习 33 条单字指令
• 除程序跳转指令为双周期指令外,其他指令都是单
周期指令。
• 指令宽度为 12 位
• 两级深硬件堆栈
• 数据和指令的直接、间接和相对寻址模式
• 数据总线宽度为 8 位
• 10 个特殊功能硬件寄存器 (PIC12F510)
• 13 个特殊功能硬件寄存器 (PIC16F506)
• 工作速度:
- 晶振频率为 DC - 8MHz( PIC12F510)
- 指令周期为 DC - 500 ns ( PIC12F510)
- 晶振频率为 DC - 20 MHz ( PIC16F506)
- 指令周期为 DC - 200 ns ( PIC16F506)
单片机的特殊性能:
• 可选的 4 或 8MHz高精度内部振荡器:
- 出厂时精度校准为 ±1%
• 在线串行编程 ( In-Circuit Serial
Programming™, ICSP™)
• 支持在线调试 ( In-Circuit Debugging, ICD)
• 上电复位 ( Power-on Reset, POR)
• 器件复位定时器 ( Device Reset Timer, DRT)
- 在 INTOSC、 EXTRC 和 EC 模式下可提供短
暂的 DRT 延时 ( 1.125 ms,典型值)
- 在 HS、 XT 和 LP 模式下可提供 DRT 延时
( 18 ms,典型值)
• 具有专用片上 RC 振荡器的看门狗定时器
( Watchdog Timer, WDT),能够可靠地工作
• 可编程代码保护
• 复用的 MCLR
• I/O 引脚具有可选的内部弱上拉
• 低功耗休眠模式
• 在引脚电平发生变化时从休眠模式唤醒
• 在比较器电平发生变化时从休眠模式唤醒
输入引脚
• 振荡器选项:
-INTOSC:4/8 MHz 高精度内部振荡器
- EXTRC:外部低成本 RC 振荡器
-XT:标准的晶振 / 谐振器
-HS:高速晶振 / 谐振器 (仅 PIC16F506)
-LP:低功耗低频晶振
-EC:高速外部时钟输入 (仅 PIC16F506)
• 模数 (A/D)转换器
-8位分辩率
- 四路输入通道 (一路通道专用于转换内部
0.6V 绝对参考电压)
• 用于直接驱动 LED 的高灌 / 拉电流
• 带有 8 位可编程预分频器的 8 位实时时钟 / 计数器
(TMR0 )
低功耗特性 /CMOS 技术:
• 工作电流:
-4MHz、 2V时 < 350 µA
• 待机电流:
-2V时典型值为 100 nA
• 低功耗、高速闪存技术:
- 可经受 10 万次擦写
- 数据保存时间 > 40年
• 全静态设计
• 宽工作电压范围:2.0V 至 5.5V
• 宽温度范围:
- 工业级: -40° C 至 +85° C
- 扩展级: -40° C 至 +125° C
外设特性 (PIC12F510 ):
• 6 个 I/O 引脚:
-5个具有独立方向控制的 I/O 引脚
-1个只可输入的引脚
• 一个带有绝对参考电压的模拟比较器
外设特性 (PIC16F506 ):
• 12 个 I/O 引脚:
-11个具有独立方向控制的 I/O 引脚
-1个只可输入的引脚
• 2 个带有绝对参考电压和可编程参考电压的模拟比
较器
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 1 页
PIC12F510/16F506
器件
程序存储器 数据存储器
闪存 (字) SRAM (字节)
I/O
定时器
PIC16F506 1024 67 12 1
PIC12F510 1024 38 6 1
引脚图
PDIP 、SOIC 和 TSSOP
VSS
RB0/AN0/C1IN+/ICSPDAT
RB1/AN1/C1IN-/ICSPCLK
RB2/AN2/C1OUT
RC0/C2IN+
RC1/C2IN-
REF
RC2/CV
VSS
GP0/AN0/C1IN+/ICSPDAT
GP1/AN1/C1IN-//ICSPCLK
GP2/AN2/T0CKI/C1OUT
PDIP、SOIC 和 MSOP
VDD
RB5/OSC1/CLKIN
RB4/OSC2/CLKOUT
RB3/MCLR
GP5/OSC1/CLKIN
GP3/MCLR
/VPP
RC5/T0CKI
RC4/C2OUT
RC3
VDD
GP4/OSC2
/VPP
1
2
3
4
5
6
7
1
2
3
4
PIC16F506
PIC12F510
14
13
12
11
10
9
8
8
7
6
5
8 位
DS41268A_CN 第 2 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
目录
1.0 一般说明 ....................................................................................................................................................................................... 5
2.0 PIC12F510/16F506 系列器件 ....................................................................................................................................................... 7
3.0 架构概述 ....................................................................................................................................................................................... 9
4.0 存储器构成 ................................................................................................................................................................................. 15
5.0 I/O 端口 ...................................................................................................................................................................................... 27
6.0 TMR0 模块和 TMR0 寄存器 ....................................................................................................................................................... 39
7.0 比较器模块 ................................................................................................................................................................................. 43
8.0 比较器参考电压模块 ................................................................................................................................................................... 49
9.0 模数 ( A/D)转换器 ................................................................................................................................................................... 51
10.0 CPU 的特殊性能 ......................................................................................................................................................................... 55
11.0 指令集综述 ................................................................................................................................................................................. 71
12.0 开发支持 ..................................................................................................................................................................................... 79
13.0 电气规范 ..................................................................................................................................................................................... 83
14.0 直流和交流特性图表 ................................................................................................................................................................... 95
15.0 封装 ............................................................................................................................................................................................ 97
索引 .................................................................................................................................................................................................... 107
Microchip 网站 .................................................................................................................................................................................... 109
变更通知客户服务 .............................................................................................................................................................................. 109
客户支持............................................................................................................................................................................................. 109
读者反馈表 ......................................................................................................................................................................................... 110
产品标识体系 ..................................................................................................................................................................................... 111
致 客 户
我们旨在提供最佳文档供客户正确使用 Microchip 产品。为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。
出版物的质量将随新文档及更新版本的推出而得到提升。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 CTRC@microchip.com ,或将本
数据手册后附的 《读者反馈表》传真到 86-21-5407 5066 。我们期待您的反馈。
最新数据手册
欲获得本数据手册的最新版本,请查询我公司的网站:
http://www.microchip.com
查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号
的 A 版本。
勘误表
现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到
器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
• Microchip 网站 http://www.microchip.com
• 当地 Microchip 销售办事处 (见最后一页)
在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。
客户通知系统
欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。
,例如:DS30000A是DS30000
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 3 页
PIC12F510/16F506
注:
DS41268A_CN 第 4 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
1.0 一般说明
PIC12F510/16F506 器件是 Microchip Technology 生产
的低成本、高性能、8 位全静态的基于闪存的 CMOS 单
片机。它们采用 RISC 架构,仅有 33 条单字 / 单周期指
令。除需要两个周期的程序跳转指令之外,所有指令都
是单周期指令。PIC12F510/16F506 器件的性能比同价
位的其他产品要高出很多。12 位宽的指令具有高度的对
称性,与同类的 8 位单片机相比其代码压缩了两倍。易
于使用和记忆的指令集,大大缩短了开发时间。
PIC12F510/16F506 产品具备可以降低系统成本和功耗
的特殊功能。上电复位(POR)和器件复位定时器
(DRT )使器件不再需要外部复位电路。有四种振荡器
配置可供选择 (PIC16F506 器件有六种) ,包括
INTOSC 内部振荡模式和节省功耗的 LP (低功耗)振
荡模式。节省功耗的休眠模式、看门狗定时器和代码保
护功能降低了系统的成本和功耗,提高了系统的可靠
性。
PIC12F510/16F506 使得用户可以充分利用 Microchip
在可编程闪存单片机市场上的价格优势,同时获得可灵
活编程的闪存产品。
支持 PIC12F510/16F506 产品的开发工具有:全功能的
宏汇编器、软件模拟器、在线仿真器、 C 编译器、低成
本的开发编程器和全功能编程器。IBM
能支持这些工具。
PC 和兼容机都
1.1 应用
PIC12F510/16F506 器件适合从个人护理设备和安防系
统到低功耗远程发送器 / 接收器等各种应用。闪存技术
使定制应用程序(发送器代码、设备设置和接收器频率
等)变得非常迅速和方便。小型封装适用于通孔或表面
贴装,使本单片机系列能适应各种空间有限的应用。低
成本、低功耗、高性能、易于使用和 I/O 灵活性使
PIC12F510/16F506 器件能够在您认为根本不能使用单
片机的场合也可以大显神通(如定时器功能、逻辑电路
和较大系统中的 PLD 以及协处理器应用)。
表 1-1 : PIC12F510/16F506 器件
PIC16F506 PIC12F510
时钟 最大工作频率 (MHz )
存储器 闪存程序存储器
数据存储器 (字节)
外设 定时器模块
在引脚电平发生变化时从休眠模式唤醒 有 有
特性 I/O 引脚
只能输入的引脚
内部上拉 有 有
在线串行编程 有 有
指令数量
封装 14 引脚 PDIP 、 SOIC 和
PIC12F510/16F506 器件具有上电复位、可选的看门狗定时器、可选的代码保护、高 I/O 电流能力和高精度内部振荡器。
PIC12F510/16F506 器件通过数据引脚 RB0/GP0 和时钟引脚 RB1/GP1 进行串行编程。
20 8
1024 1024
67 38
TMR0 TMR0
11 5
11
33 33
TSSOP
8 引脚 PDIP、 SOIC 和
MSOP
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 5 页
PIC12F510/16F506
注:
DS41268A_CN 第 6 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
2.0 PIC12F510/16F506 系列器件
器件提供不同的封装类型。根据应用和产品要求,可以
使用本章中的信息选择正确的器件。在下订单时,请使
用本数据手册后面的 PIC12F510/16F506 产品标识体系
来指定正确的器件编号。
2.1 快速批量编程 (QTP )器件
Microchip 为工厂生产订单提供快速批量变成 ( Quick
Turn Programming , QTP)编程服务。此服务适用于
那些不想为中到大批量器件进行编程并且自有代码已稳
定的用户。此器件与闪存器件相同,只是所有闪存单元
和熔丝选项已在出产前预先编程了。批量产品交付前经
过了某些代码和原型校验。欲知更多详情,请与当地
的 Microchip 销售办事处联系。
2.2 带序列号的快速批量编程
(SQTP
Microchip 提供这种独特的编程服务,可通过编程为每
个器件中一些用户定义的单元指定不同的序列号。这些
序列号可以是随机的、伪随机或连续的。
串行编程使每个器件都具有一个惟一的编号,可作为登
录码、密码或 ID 编号。
SM
)器件
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 7 页
PIC12F510/16F506
注:
DS41268A_CN 第 8 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
3.0 架构概述
PIC12F510/16F506 系列的高性能可以归功于 RISC 单
片机中普遍采用的许多架构特点。 PIC12F510/16F506
采用了哈佛架构,在这种架构中,分别使用独立的总线
访问程序和数据存储器。与传统的程序和数据存储共用
同一条总线的冯·诺依曼架构相比,哈佛架构具有更加
优良的总线带宽。独立的程序和数据存储器使得指令宽
度不再是 8 位。由于指令操作码为 12 位宽,所以所有
指令都可以是单字指令。通过 12 位宽的程序存储器总
线可以在单周期内取一条 12 位的指令。两级流水线可
以使取指和执指同时进行。因此,除了程序跳转指令以
外,所有指令 (33 条)都可以在单周期 (20 MHz 时
为 200 ns , 4MHz时为 1 µ s )内执行。
下面的表 3-1 列出了 PIC12F510/16F506 器件的程序存
储器 (闪存)和数据存储器 (RAM )。
表 3-1 : PIC12F510/16F506 存储器
器件
PIC12F510
PIC16F506
PIC12F510/16F506 器件可以直接或间接地寻址它的文
件寄存器和数据存储器。所有特殊功能寄存器( Special
Function Register,SFR), 包 括 PC,都在数据存储器
中映射。 PIC12F510/16F506 器件具有高度正交 (对
称)的指令集,让它可以在任何寄存器上使用任何寻址
模式进行任何操作。此对称特性以及没有 “最佳状态”
让使用 PIC12F510/16F506 器件编程变得非常简单而高
效。此外,学习时间也大大的缩短了。
PIC12F510/16F506 器件包含一个 8 位 ALU 和工作寄存
器。ALU 是通用算术单元。它在工作寄存器中的数据和
其他任何寄存器文件之间进行算术和布尔运算。
程序 数据
1024 × 12 38 × 8
1024 × 12 67 × 8
存储器
ALU 为 8 位宽,并且能够执行加法、减法、移位和逻辑
运算。除非另外声明,算术运算一般都是以 2 的补码
(Two’s Complement )方式进行的。在具有两个操作数
的指令中,一个操作数通常是 W (工作)寄存器。其他
操作数可以是文件寄存器或者立即数常数。在只有一个
操作数的指令中,操作数可以是 W 寄存器,也可以是文
件寄存器。
W 寄存器是用于 ALU 操作的 8 位工作寄存器。它是不
可寻址的寄存器。
根据所执行的指令,ALU 可能影响状态(STATUS)寄
存器中进位 (C )、半进位 (DC )和零位 (Z )的值。
C 位和 DC 位在减法运算中可以分别作为借位
位。请参见 SUBWF 和 ADDWF 指令示例。
图 3-1 所示为 PIC12F510 的简化框图,表 3-2 给出了该
器件的引脚配置。图 3-2 所示为PIC16F506 的简化框图,
表 3-3 给出了该器件的引脚配置。
和半借位
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 9 页
PIC12F510/16F506
图 3-1: PIC12F510 系列框图
OSC2/OSC1/CLKIN
程序
总线
闪存
1K x 12
程序
存储器
12
指令寄存器
指令
译码和
控制
时序
发生
10-11
8
MCLR
程序计数器
堆栈 1
堆栈 2
直接寻址
器件复位
定时器
上电
复位
看门狗
定时器
内部RC
时钟
5
VDD ,VSS
RAM 地址
3
8
数据总线
RAM
38 字节
文件
寄存器
地址 MUX
FSR 寄存器
ALU
W 寄存器
Timer0
9
间接寻址
5-7
状态寄存器
MUX
8
GPIO
比较器
VREF
8 位 ADC
GP0/ICSPDAT
GP1/ICSPCLK
GP2/T0CKI
GP3/MCLR/VPP
GP4/OSC2
GP5/OSC1/CLKIN
C1IN+
C1INC1OUT
AN0
AN1
AN2
DS41268A_CN 第 10 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
表 3-2 : 引脚配置说明——PIC12F510
名称 I/O/P 类型 输入类型 输出类型 说明
GP0/AN0/C1IN+/ICSP-DAT GP0 TTL CMOS
AN0 AN
C1IN+ AN
ICSPDAT ST CMOS
GP1/AN1/C1IN-/ICSPCLK GP1 TTL CMOS
AN1 AN
C1IN- AN
ICSPCLK ST CMOS
GP2/AN2/T0CKI/C1OUT GP2 TTL CMOS
AN2 AN
T0CKI ST
C1OUT CMOS
GP3/MCLR/
GP4/OSC2 GP4 TTL CMOS
GP5/OSC1/CLKIN GP5 TTL CMOS
V
DD V DD P
V
SS V SS P
图注: I = 输入, O = 输出, I/O = 输入 / 输出, P = 电源,- = 未用, TTL = TTL 输入, ST = 施密特触发器输入,
VPP GP3 TTL
AN = 模拟电压
MCLR
V
PP
OSC2
OSC1 XTAL
CLKIN ST
ST
高压 - 编程电压输入。
-
- ADC 通道输入。
- 比较器输入。
- ADC 通道输入。
- 比较器输入。
- ADC 通道输入。
- Timer0 时钟输入。
- 比较器输出。
-标 准TTL 输入。可由软件编程为内部弱上拉并在该引
- MCLR
XTAL
- XTAL 振荡器输入引脚。
- EXTRC 施密特触发器输入。
- 逻辑电路和 I/O 引脚的正电源。
- 逻辑电路和 I/O 引脚的参考地。
双向 I/O 引脚。可由软件编程为内部弱上拉并在该引
脚电平改变时从休眠模式唤醒。
在线串行编程数据引脚。
双向 I/O 引脚。可由软件编程为内部弱上拉并在该引
脚电平改变时从休眠模式唤醒。
在线串行编程时钟引脚。
双向 I/O 端口。
脚电平改变时从休眠模式唤醒。
输入——在该模式下始终使能弱上拉。
双向 I/O 端口。
XTAL 振荡器输出引脚。
双向 I/O 端口。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 11 页
PIC12F510/16F506
图 3-2: PIC16F506 系列框图
OSC1/CLKIN
OSC2/CLKOUT
程序
总线
闪存
1K x 12
程序
存储器
10
指令寄存器
指令
译码和
控制
时序
发生
10
8
MCLR
程序计数器
堆栈 1
堆栈 2
直接寻址
器件复位
定时器
上电
复位
看门狗
定时器
内部 RC
时钟
5
VDD ,VSS
RAM 地址
3
8
数据总线
RAM
67 字节
文件
寄存器
地址 MUX
FSR 寄存器
状态寄存器
ALU
W 寄存器
Timer0
5-7
9
MUX
间接
寻址
8
PORTB
PORTC
比较器 1
比较器 2
VREF
CVREF
CVREF
8 位 ADC
RB0/ICSPDAT
RB1/ICSPCLK
RB2
RB3/MCLR/VPP
RB4/OSC2/CLKOUT
RB5/OSC1/CLKIN
RC0
RC1
RC2
RC3
RC4
RC5/T0CKI
C1IN+
C1INC1OUT
C2IN+
C2IN-
C2OUT
CVREF
AN0
AN1
AN2
VREF
DS41268A_CN 第 12 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
表 3-3 : 引脚配置说明——PIC16F506
名称 功能 输入类型 输出类型 说明
RB0/AN0/C1IN+/ICSPDAT RB0 TTL CMOS
AN0 AN
C1IN+ AN
ICSPDAT ST CMOS
RB1/AN1/C1IN-/ICSPCLK RB1 TTL CMOS
AN1 AN
C1IN- AN
ICSPCLK ST
RB2/AN2/C1OUT RB2 TTL CMOS
AN2 AN
C1OUT
RB3/MCLR
RB4/OSC2/CLKOUT RB4 TTL CMOS
RB5/OSC1/CLKIN RB5 TTL CMOS
RC0/C2IN+ RC0 TTL CMOS
RC1/C2IN- RC1 TTL CMOS
RC2/CV
RC3 RC3 TTL CMOS
RC4/C2OUT RC4 TTL CMOS
RC5/T0CKI RC5 TTL CMOS
V
DD V DD P
V
SS V SS P
图注: I = 输入, O = 输出, I/O = 输入 / 输出, P = 电源,- = 未用, TTL = TTL 输入, ST = 施密特触发器输入,
/VPP RB3 TTL
MCLR
V
PP
OSC2
CLKOUT
OSC1 XTAL
CLKIN ST
C2IN+ AN
C2IN- AN
REF RC2 TTL CMOS
CV
REF
C2OUT
T0CKI ST
AN = 模拟电压
-
ST
高压 - 测试模式高压引脚。
-
-
-
-
- ADC 通道输入。
-比 较 器1 输入。
- ADC 通道输入。
-比 较 器1 输入。
- 在线串行编程数据引脚。
- ADC 通道输入。
CMOS
-标 准TTL 输入。可由软件编程为内部弱上拉并在该引脚
- MCLR 输入——在该模式下始终使能弱上拉。
XTAL
CMOS
- XTAL 振荡器输入引脚。
- EXTRC/EC 施密特触发器输入。
-比 较 器2 输入。
-比 较 器2 输入。
AN
CMOS
- Timer0 施密特触发器输入引脚。
- 逻辑电路和 I/O 引脚的正电源。
- 逻辑电路和 I/O 引脚的参考地。
双向 I/O 端口。可由软件编程为内部弱上拉并在该引脚电
平改变时从休眠模式唤醒。
在线串行编程数据引脚。
双向 I/O 端口。可由软件编程为内部弱上拉并在该引脚电
平改变时从休眠模式唤醒。
双向 I/O 端口。
比较器 1 输出。
电平改变时从休眠模式唤醒。
双向 I/O 端口。可由软件编程为内部弱上拉并在该引脚电
平改变时从休眠模式唤醒。
XTAL 振荡器输出引脚。
EXTRC/INTOSC CLKOUT 引脚 (F
双向 I/O 端口。
双向 I/O 端口。
双向 I/O 端口。
双向 I/O 端口。
可编程参考电压输出。
双向 I/O 端口。
双向 I/O 端口。
比较器 2 输出。
双向 I/O 端口。
OSC /4)。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 13 页
PIC12F510/16F506
3.1 时钟机制 / 指令周期
由OSC1/CLKIN 引脚输入的时钟信号在器件内部被四分
频后,产生四个不重叠的正交时钟节拍,称为 Q1 、Q2、
Q3 和 Q4 。在每个 Q1 节拍, PC 递增;在 Q4 节拍从程
序存储器取指并将指令锁存到指令寄存器。指令的译码
和执行是在下一个 Q1 到 Q4 节拍中完成的。图 3-3 和
例 3-1 所示为时钟和指令执行流程。
图 3-3 :时 钟/ 指令周期
Q2 Q3 Q4
OSC1
Q1
Q2
Q3
Q4
PC
Q1
PC
Q1
3.2 指令流 / 流水线
一个指令周期由四个 Q 节拍组成 (Q1 、 Q2 、 Q3 和
Q4 )。取指和执行指令是流水线操作的,因此取指需要
一个指令周期,而译码和执行指令则需要另一个指令周
期。但由于是流水线操作,所以每条指令的有效执行时
间都是一个指令周期。如果一条指令导致 PC 改变 (如
GOTO ),则执行该指令需要两个周期 (例 3-1 )。
取指周期由 Q1 节拍中 PC 加 1 开始。
在执行周期中,在 Q1 节拍将所取指令锁存到指令寄存
器(Instruction Register, IR )中。然后在 Q2 、Q3 和
Q4 节拍中对该指令译码并执行指令。其中读数据存储
器 (读操作数)发生在 Q2 节拍,写操作发生在 Q4 节
拍 (写目标单元)。
Q2 Q3 Q4
PC + 1 PC + 2
Q1
Q2 Q3 Q4
内部
相位
时钟
取指(PC )
执行指令(PC – 2 )
取指(PC + 1 )
执行指令(PC )
取指(PC + 2 )
执行指令(PC + 1 )
例 3-1 : 指令流水线
1. MOVLW 03H
2. MOVWF PORTB
3. CALL SUB_1
4. BSF PORTB, BIT1
除程序转移指令之外,所有指令都是单周期指令。由于程序转移指令将导致一条已取指令从流水线清除,需要重新
取指,然后执行指令,所以程序转移指令需要两个周期。
取指 1 执行 1
取指 2 执行 2
取指 3 执行 3
取指 4
清除
取指 SUB_1 执行 SUB_1
DS41268A_CN 第 14 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
4.0 存储器构成
PIC12F510/16F506 系列器件的存储器被分为程序存储
器和数据存储器。对于程序存储器大于 512 字节的器
件,使用分页机制。使用状态寄存器中的一位来访问程
序存储器页。对于数据存储器的文件寄存器多于 32 的
PIC12F510 和 PIC16F506 器件,使用分区机制。使用
文件选择寄存器 (File Select Register , FSR )访问数
据存储区。
4.1 PIC12F510/16F506 器件的程序存储
器构成
PIC12F510/16F506 器件具有一个 10 位程序计数器
(Program Counter ,PC ),此计数器可以寻址 2K x 12
位的程序存储空间。
只有前 1K x 12 (0000h-03FFh )单元是物理实现的
(见图 4-1 )。访问这些边界以外的单元将导致返回到
1K x 12 空间。有效的复位向量为 0000h(见图 4-1)。
03FFh 单元包含内部时钟校准值。绝不能改写该值。
图 4-1 : PIC12F510/16F506 器件的程序
存储器映射和堆栈
CALL ,RETLW
空间
用户存储
PC<11:0>
1 级堆栈
2 级堆栈
复位向量
片上程序
存储器
512 字
片上程序
存储器
1024 字
10
(1)
0000H
01FFH
0200H
03FFh
0400h
7FFH
注 1 : 地址 0000h 变为有效的复位向量。
03FFh 单元包含 MOVLW XX 内部时钟
校准值。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 15 页
PIC12F510/16F506
4.2 数据存储器构成
数据存储器由寄存器或 RAM 字节组成。因此,器件的
数据存储器是由其文件寄存器指定的。文件寄存器被分
为两个功能组:特殊功能寄存器 (SFR )和通用寄存器
(General Purpose Registers , GPR )。
特殊功能寄存器包括 TMR0 寄存器、程序计数器
(PCL )、状态寄存器、I/O 寄存器(端口)和文件选择
寄存器 (FSR )。此外,特殊功能寄存器还被用于控制
I/O 端口配置和预分频比选择。
通用寄存器被用于存储数据和对指令命令的控制信息。
对于 PIC12F510 器件,文件寄存器由 10 个特殊功能寄
存器、6 个通用寄存器和 32 个可通过分区寻址的通用寄
存器组成 (见图 4-5 )。
对于 PIC16F506 器件,文件寄存器由 13 个特殊功能寄
存器、3 个通用寄存器和 64 个可通过分区寻址的通用寄
存器组成 (见图 4-6 )。
4.2.1 通用文件寄存器
通用文件寄存器可以被直接寻址,也可以通过文件选择
寄存器 (FSR )间接寻址。请参见第 4.8 节“间接数据
寻址:INDF 和 FSR 寄存器”。
图 4-2 : PIC12F510 文件寄存器映射
FSR<5> 0 1
寄存器地址
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Fh
10h
1Fh
注 1: 不是物理寄存器。
(1)
INDF
20h
TMR0
PCL
STATUS
FSR
地址映射返回
到Bank 0 中的
地址。
OSCCAL
GPIO
CM1CON0
ADCON0
ADRES
通用
寄存器
2Fh
30h
通用
寄存器
通用
寄存器
3Fh
Bank 0 Bank 1
图 4-3 : PIC16F506 文件寄存器映射
FSR<6:5> 00 01 10 11
寄存器地址
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
0Ch
0Dh
0Fh
10h
1Fh
注 1: 不是物理寄存器。
(1)
INDF
TMR0
PCL
STATUS
FSR
OSCCAL
PORTB
PORTC
CM1CON0
ADCON0
ADRES
CM2CON0
VRCON
20h
通用
寄存器
2Fh 4Fh 6Fh
通用
寄存器
Bank 0 Bank 1 Bank 2 Bank 3
30h
3Fh
通用
寄存器
40h
地址映射返回到 Bank 0 中
的地址。
50h
通用
寄存器
5Fh
60h
70h
7Fh
通用
寄存器
DS41268A_CN 第 16 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
4.2.2 特殊功能寄存器
特殊功能寄存器 (SFR )由 CPU 和外设使用,用于控
制器件的操作 (见表 4-1 )。
特殊功能寄存器可分为两类。与内核功能有关的特殊功
能寄存器将在本节讲述。而另一类与外设功能操作有关
的特殊功能寄存器将在相应的外设功能模块章节中讲
述。
表 4-1 : 特殊功能寄存器汇总——PIC12F510
地址 名称
N/A TRIS
N/A OPTION
00h INDF
01h TMR0
(1)
02h
03h STATUS GPWUF CWUF PA0 TO PD ZD CC0001 1xxx
04h FSR
05h OSCCAL CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0
06h GPIO
07h CM1CON0 C1OUT C1OUTEN C1POL C1T0CS C1ON C1NREF C1PREF C1WU 1111 1111
08h ADCON0 ANS1 ANS0 ADCS1 ADCS0 CHS1 CHS0 GO/DONE ADON 1111 1100
09h ADRES
图注: x = 未知, u = 不变,- = 未用 (读为 0)(如果适用)。阴影单元 = 未实现或未用。
注 1 : 程序计数器的最高字节是不可直接访问的。欲知关于如何访问这些位的说明,请参见第 4.4 节 “选项寄存器”。
PCL
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
I/O 控制寄存器 (TRISGPIO )
包含配置 Timer 0 和 Tim er0/WDT 预分频器的控制位
使用 FSR 的内容寻址数据存储器 (非物理寄存器)
Timer0 模块寄存器
PC 的低 8 位
间接数据存储器地址指针
- -
ADC 转换结果
GP5 GP4 GP3 GP2 GP1 GP0 --xx xxxx
-
上电复位
时的值
--11 1111
1111 1111
xxxx xxxx
xxxx xxxx
1111 1111
110x xxxx
1111 111-
xxxx xxxx
表 4-2 : 特殊功能寄存器汇总——PIC16F506
地址 名称
N/A TRIS
N/A OPTION
00h INDF
01h TMR0
(1)
02h
03h STATUS RBWUF CWUF PA0 TO
04h FSR
05h OSCCAL CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0
06h PORTB
07h PORTC
08h CM1CON0 C1OUT C1OUTEN C1POL C1T0CS C1ON C1NREF C1PREF C1WU 1111 1111
09h ADCON0 ANS1 ANS0 ADCS1 ADCS0 CHS1 CHS0 GO/DONE ADON 1111 1100
0Ah ADRES
0Bh CM2CON0 C2OUT C2OUTEN C2POL C2PREF2 C2ON C2NREF C2PREF1 C2WU 1111 1111
0Ch VRCON VREN VROE VRR
图注: x = 未知, u = 不变,- = 未用 (读为 0 )(如果适用)。阴影单元 = 未实现或未用。
注 1 : 程序计数器的最高字节是不可直接访问的。 欲知关于如何访问这些位的说明,请参见第 4.4 节 “选项寄存器”。
PCL
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
I/O 控制寄存器 (TRISB 和 TRISC )
包含配置 Timer0 和 Timer0/WD T 预分频器的控制位
使用 FSR 的内容寻址数据存储器 (非物理寄存器)
Time r0 模块寄存器
PC 的低 8 位
PD ZD CC0001 1xxx
间接数据存储器地址指针
- -
- -
ADC 转换结果
RB5 RB4 RB3 RB2 RB1 RB0 --xx xxxx
RC5 RC4 RC3 RC2 RC1 RC0 --xx xxxx
-
VR3 VR2 VR1 VR0 001- 1111
-
上电复位
时的值
--11 1111
1111 1111
xxxx xxxx
xxxx xxxx
1111 1111
100x xxxx
1111 111-
xxxx xxxx
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 17 页
PIC12F510/16F506
4.3 状态寄存器
例如,CLRF STATUS 会将状态寄存器的高 3 位清零且
将 Z 位置 1 。这会使状态寄存器的值为 000u u1uu(其
该寄存器包含 ALU 的数学运算状态、复位状态和页预选
择位。
和其他寄存器一样,状态寄存器可以作为任何指令的目
标寄存器。如果将该寄存器作为一条影响 Z 、 DC 或 C
位的指令的目标寄存器,那么将禁止对这 3 位执行写操
中 u = 不变)。
因此,建议只使用 BCF、 BSF 和 MOVWF 指令来改变
STATUS 寄存器的值。这些指令不会影响状态寄存器的
Z、 DC 或 C 位。对于其他影响状态位的指令,请参见
第 11.0 节 “指令集综述”。
作。根据器件逻辑,这些位会被置 1 或清零。此外,TO
和 PD 位是不可写的。所以当执行一条把状态寄存器作
为目标寄存器的指令后,结果可能和预想的不同。
寄存器 4-1 : 状态寄存器 (地址:03h )( PIC12F510 )
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-X R/W-X R/W-X
GPWUF CWUF PA0 TO
bit 7 bit 0
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
GPWUF :GPIO 复位位
1 = 由于引脚电平变化从休眠唤醒的复位
0 = 上电或其他复位之后
CWUF:比较器复位位
1 = 由于比较器电平变化从休眠唤醒的复位
0 = 上电或其他复位之后
PA0 :程序页选择位
1 = 第 1 页(200h-3FFh)
0 = 第 0 页(000h-1FFh)
每页 512 个字节。
建议在不使用 PA0 位作为程序页预选择位的器件中也不要使用该位作为通用读 / 写位,因为这样可能会影
响与未来产品的向上兼容性。
TO
:超时位
1 = 在上电或执行 CLRWDT 或 SLEEP 指令后
0 = 发生了 WDT 超时
PD
:掉电位
1 = 在上电或执行 CLRWDT 指令后
0 = 执行 SLEEP 指令
Z:结果为 0 位
1 = 算术运算或逻辑运算结果为零
0 = 算术运算或逻辑运算结果不为零
DC:半进位 / 借
ADDWF:
1 = 发生了结果的第 4 个低位向高位的进位
0 = 未发生结果的第 4 个低位向高位的进位
SUBWF:
1 = 未发生结果的第 4 个低位向高位的借位
0 = 发生了结果的第 4 个低位向高位的借位
C:进位 / 借
ADDWF: SUBWF: RRF 或 RLF:
1 = 发生了进位 1 = 未发生借位 分别装载最低位和最高位
0 = 未发生进位 0 = 发生了借位
位位(对于ADDWF 和 SUBWF 指令)
位位(对于ADDWF 、 SUBWF 、 RRF 和 RLF 指令)
PD ZD C C
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
DS41268A_CN 第 18 页 初稿 2006 Microchip Technology Inc.
寄存器 4-2 : 状态寄存器 (地址:03h )( PIC16F506 )
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-X R/W-X R/W-X
RBWUF CWUF PA0 TO
bit 7 bit 0
PIC12F510/16F506
PD ZD C C
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
RBWUF :PORTB 复位位
1 = 由于引脚电平变化从休眠唤醒的复位
0 = 上电或其他复位之后
CWUF:比较器复位位
1 = 由于比较器电平变化从休眠唤醒的复位
0 = 上电或其他复位之后
PA0 :程序页选择位
1 = 第 1 页(200h-3FFh)
0 = 第 0 页(000h-1FFh)
每页 512 个字节。
建议在不使用 PA0 位作为程序页预选择位的器件中也不要使用该位作为通用读 / 写位,因为这样可能会影
响与未来产品的向上兼容性。
TO
:超时位
1 = 在上电和执行 CLRWDT 或 SLEEP 指令后
0 = 发生了 WDT 超时
PD
:掉电位
1 = 在上电或指行 CLRWDT 指令后
0 = 执行 SLEEP 指令
Z:结果为 0 位
1 = 算术运算或逻辑运算结果为零
0 = 算术运算或逻辑运算结果不为零
DC:半进位 / 借位
ADDWF:
1 = 发生了结果的第 4 个低位向高位的进位
0 = 未发生结果的第 4 个低位向高位的进位
SUBWF:
1 = 未发生结果的第 4 个低位向高位的借位
0 = 发生了结果的第 4 个低位向高位的借位
C:进位 / 借位
ADDWF: SUBWF: RRF 或 RLF:
1 = 发生了进位 1 = 未发生借位 分别装载最低位和最高位
0 = 未发生进位 0 = 发生了借位
位(对于ADDWF 和 SUBWF 指令)
位(对于ADDWF 、 SUBWF 、 RRF 和 RLF 指令)
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 19 页
PIC12F510/16F506
4.4 选项寄存器
选项 (OPTION )寄存器是一个 8 位宽的只读寄存器,
它包含各种配置 Timer0/WDT 预分频器和 Timer0 的控
制位。
通过执行 OPTION 指令,可将 W 寄存器的内容传送到
选项寄存器。复位会将 OPTION<7:0> 位置 1 。
注 1 : 当 TRIS 位清零 (=0 )时,相应引脚的电
平变化唤醒和上拉功能都被禁止 (即,注
意 TRIS 将改写 GPPU/RBPU 和 GPWU/
选择控制位)。
RBWU
2 : 当 T0CS 位置 1 时,它将改写 T0CKI 引脚
的 TRIS 功能。
寄存器 4-3 : 选项寄存器 (PIC12F510 )
W-1 W-1 W-1 W-1 W-1 W-1 W-1 W-1
GPWU GPPU T0CS T0SE PSA PS2 PS1 PS0
bit 7 bit 0
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2-0
GPWU :引脚电平变化唤醒使能位 (GP0、 GP1 和 GP3)
1 = 禁止
0 = 使能
GPPU:弱上拉使能位 (GP0 、 GP1 和 GP3)
1 = 禁止
0 = 使能
T0CS: Timer0 时钟源选择位
1 = T0CKI 引脚电平的跳变沿
0 = 内部指令周期时钟 (CLKOUT )
T0SE: Timer0 时钟源边沿选择位
1 = 在 T0CKI 引脚电平从高电平变化到低电平时递增
0 = 在 T0CKI 引脚电平从低电平变化到高电平时递增
PSA:预分频器分配位
1 = 将预分频器分配给 WDT
0 = 将预分频器分配给 Timer 0
PS<2:0>:预分频比选择位
位值 Timer0 预分频比 WDT 预分频比
000
001
010
011
100
101
110
111
1 : 2
1 : 4
1 : 8
1 : 16
1 : 32
1 : 64
1 : 128
1 : 256
1 : 1
1 : 2
1 : 4
1 : 8
1 : 16
1 : 32
1 : 64
1 : 128
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
DS41268A_CN 第 20 页 初稿 2006 Microchip Technology Inc.
寄存器 4-4 : 选项寄存器 (PIC16F506 )
W-1 W-1 W-1 W-1 W-1 W-1 W-1 W-1
RBWU RBPU T0CS T0SE PSA PS2 PS1 PS0
bit 7 bit 0
PIC12F510/16F506
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2-0
RBWU :引脚电平变化唤醒使能位 (RB0、 RB1、 RB3 和 RB4)
1 = 禁止
0 = 使能
RBPU:弱上拉使能位 ( RB0、 RB1、 RB3 和 RB4)
1 = 禁止
0 = 允许
T0CS:Timer0 时钟源选择位
1 = T0CKI 引脚电平的跳变沿
0 = 内部指令周期时钟 (CLKOUT )
T0SE: Timer0 时钟源边沿选择位
1 = 在 T0CKI 引脚电平从高电平变化到低电平时递增
0 = 在 T0CKI 引脚电平从低电平变化到高电平时递增
PSA:预分频器分配位
1 = 将预分频器分配给 WDT
0 = 将预分频器分配给 Timer 0
PS<2:0>:预分频比选择位
Timer0 预分频比 WDT 预分频比
位值
000
001
010
011
100
101
110
111
1 : 2
1 : 4
1 : 8
1 : 16
1 : 32
1 : 64
1 : 128
1 : 256
1 : 1
1 : 2
1 : 4
1 : 8
1 : 16
1 : 32
1 : 64
1 : 128
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 21 页
PIC12F510/16F506
4.5 OSCCAL 寄存器
振荡器校准( OSCCAL)寄存器被用来校准内部高精度
4/8 MHz 振荡器。它包含用于校准的 7 位。
注: 擦除器件同时也会擦除预编程的内部振荡
器内部校准值。必须在擦除该部分之前读
取校准值,这样以后才可以正确地重新编
程。
在移入了校准常数以后,请不要更改它。请参见第10.2.5
节“内部4/8 MHz RC 振荡器”。
寄存器 4-5 : OSCCAL 寄存器 (地址:05h )
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 U-0
CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0
bit 7 bit 0
-
bit 7-1
bit 0
CAL<6:0>:振荡器校准位
0111111 = 最大频率
•
•
•
0000001
0000000 = 中心频率
1111111
•
•
•
1000000 = 最小频率
未用:读为 0
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
DS41268A_CN 第 22 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
4.6 程序计数器
当执行程序指令时,程序计数器 (PC )中将包含下一
条要被执行的程序指令的地址。除更改 PC 的指令外,
每执行一条指令, PC 值都会增 1 。
对于 GOTO 指令,PC 的 bit 0 到 bit 8 由 GOTO 指令字提
供。程序计数器(PCL )被映射到 PC<7:0> 。状态寄存
器的 bit 5 将页信息提供给 PC 的 bit 9 (见图 4-4 )。
对于 CALL 指令或其他以 PCL 作为目标寄存器的指令,
PC 的 bit 0 到 bit 7 也是由指令字提供的。然而,PC<8>
不是由指令字提供,它始终保持清零 (见图 4-4 )。
以 PCL 作为目标寄存器或修改 PCL 的指令包括 MOVWF
PC , ADDWF PC 和 BSF PC,5 。
注: 由于 CALL 指令或任何修改 PCL 的指令会
将 PC<8> 清零,因此所有子程序调用或相
对跳转指令都被限制在任何程序存储器页
(512 字长)的前 256 个单元中。
图 4-4 : 执行跳转指令时装载 PC 的过程
GOTO 指令
9
87 0
PC
70
状态寄存器
PCL
指令字
PA0
4.6.1 复位的影响
复位时 PC 被置为全 1 ,这意味着 PC 指向最后一页中
的最后一个单元 (即振荡器校准指令) 。执行 MOVLW
XX 指令后,PC 将计满返回到 00h 单元并开始执行用户
代码。
复位后状态寄存器页预选择位清零,这意味着预选择
第 0 页。
因此,复位时 GOTO 指令会自动使程序跳转到第 0 页直
到页预选择位的值被更改为止。
4.7 堆栈
PIC12F510/16F506 器件具有 2 级深、 12 位宽的硬件
PUSH/POP 堆栈。
执行 CALL 指令会将堆栈第一级单元中的内容压入
(PUSH )第二级单元中,然后将 PC 的当前值加 1 压入
堆栈的第一级。如果连续执行了两条以上 CALL 指令,
只会存储最近的两个返回地址。
执行 RETLW 指令会将堆栈第一级单元中的内容弹出
(POP )到 PC ,然后将堆栈第二级单元中的内容复制到
第一级单元中。如果连续执行了两条以上 RETLW 指令,
将使用先前存储在堆栈第二级单元中的地址填充堆栈。
注 1 : 可以使用在指令中指定的立即数装载 W 寄
存器。这对于在程序存储器中实现数据查
找表尤其有用。
2: 不存在指示堆栈上溢或下溢的状态位。
3: 不存在称为 PUSH 或 POP 的指令助记符。
这些是执行 CALL 和 RETLW 指令后出现的
情形。
CALL 或修改 PCL 的指令
87 0
9
PC
复位为 0
PA0
70
状态寄存器
PCL
指令字
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 23 页
PIC12F510/16F506
4.8 间接数据寻址: INDF 和 FSR 寄存器
INDF 寄存器不是物理寄存器。寻址 INDF 实际寻址的是
地址包含在 FSR 寄存器中的寄存器 (FSR 是一个
针
)。这就是间接寻址。
4.8.1 间接寻址示例
• 地址为 07 的文件寄存器包含值 10h
• 地址为 08 的文件寄存器包含值 0Ah
• 将值 07 载入 FSR 寄存器
• 读 INDF 寄存器将返回值 10h
• 将 FSR 寄存器的值增 1 ( FSR = 08)
• 读 INDR 寄存器将返回值 0Ah
间接读 INDF (FSR = 0 )将返回 00h ,而间接写 INDF
寄存器将导致执行空操作 (虽然会影响状态位)。
例 4-1 给出了使用间接寻址将 RAM 单元 10h-1Fh 清零
的简单程序。
图 4-5 :直 接/ 间接寻址 (PIC12F510)
直接寻址
(FSR )
5
6
(操作码)
321
0 4
指
例 4-1 : 使用间接寻址清零 RAM 的方法
MOVLW 0x10 ;initiali ze po i n t er
NEXT CLRF INDF ;cl e ar I N D F r e g i s te r
CONTINUE
FSR 是一个 5 位宽的寄存器。它由 INDF 寄存器配合使
用来间接寻址数据存储区。
FSR<4:0> 位用于选择数据存储器地址 00h 到 1Fh 。
PIC16F506 ——使用 FSR<6:5> 。在 Bank 0 至 Bank 3 之
间进行选择。 FSR<7> 未用,其读取值为 1 。
PIC12F510 ——使用 FSR<5> 。在 Bank 0 至 Bank 1
之间进行选择。 FSR<7:6> 未用,其读取值为 11 。
MOVWF FSR ;to RAM
INCF FSR,F ;inc pointer
BTFSC FSR,4 ;all done?
GOTO NEXT ;NO, clear next
: ;YES, continue
:
间接寻址
(FSR )
5
3
6
4
1
2
0
存储区选择
注 1 : 对于寄存器映射的细节,请参见图 4-2。
单元选择
数据
(1)
存储器
00 01
00h
0Fh
10h
1Fh 3Fh
Bank 0 Bank 1
地址映射返回到 Bank 0
中的地址。
存储区
选择
单元选择
DS41268A_CN 第 24 页 初稿 2006 Microchip Technology Inc.
图 4-6 :直 接/ 间接寻址 (PIC16F506)
PIC12F510/16F506
直接寻址
数据
存储器
(操作码)
(1)
00 01 10 11
00h
0Fh
10h
1Fh 3Fh 5Fh 7Fh
Bank 0 Bank 1 Bank 2 Bank 3
( FSR)
65 43210
存储区选择 单元选择
注 1 : 对于寄存器映射的细节,请参见图 4-3 。
地址映射返
回到 Bank 0
中的地址。
间接寻址
(FSR )
6 543210
存储区
单元选择
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 25 页
PIC12F510/16F506
注:
DS41268A_CN 第 26 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
5.0 I/O 端口
和任何其他寄存器一样, I/O 寄存器也可在程序控制下
进行读写。但是,读指令 (如 MOVF PORTB,W)将始
终读取 I/O 引脚,而与引脚是处于输入还是输出模式无
关。复位时,由于 I/O 控制器被置为全 1 ,因此所有 I/O
端口都被定义为输入 (输入为高阻态)。
注: 在 PIC12F510 器件中,I/O 端口 PORTB 被
称为 GPIO 。在 PIC16F506 器件中,I/O 端
口 PORTB 被称为 PORTB 。
5.1 PORTB/GPIO
PORTB/GPIO 是一个 8 位 I/O 寄存器。仅使用其低 6 位
(RB/GP<5:0> )。 bit 7 和 bit 6 未用,它们的读取值为
0 。请注意 RB3/GP3 为只能输入的引脚。配置字寄存器
可以将某些 I/O 设置为备用功能。当用作备用功能时,
在读取端口期间,引脚将读为 0。 RB0/GP0 、 RB1/
GP1 、 RB3/GP3 和 RB4 引脚 (仅 PIC16F506 器件)
可以被配置为带有内部弱上拉,并且可在这些引脚的电
平发生变化时唤醒器件。电平变化时唤醒和弱上拉功能
并不可通过引脚选择。如果 RB3/GP3/MCLR
MCLR ,其弱上拉是始终使能的,但该引脚的电平变化
时唤醒则是被禁止的。
5.2 PORTC (仅 PIC16F506 器件)
PORTC 是一个 8 位 I/O 寄存器。仅使用其低 6 位
(RC<5:0> )。 bit 7 和 bit 6 未用,它们的读取值为 0 。
被配置为
5.4 I/O 接口
I/O 端口引脚的等效电路如图 5-1 所示。除只能输入的
RB3/GP3引脚外,所有端口引脚都可用于输入和输出操
作。对于输入操作,这些端口是不锁存的。所有输入数
据都必须位于引脚上,直到被输入指令 (如 MOVF
PORTB,W )读取为止。输出是锁存的并将保持不变,直
到输出锁存器被再次写入为止。要将端口引脚用作输
出,必须将 TRIS 寄存器中相应的方向控制位清零
(= 0 )。要将端口引脚用作输入,必须将相应的 TRIS
位置 1 。任何 I/O 引脚(除 RB3/GP3 )都可被分别编程
为输入或输出。
图 5-1 : PIC12F510/16F506 引脚驱动等效
数据
总线
数据
总线
接口
D
CK
电路
Q
Q
(2)
VDD
P
N
V
SS
VDD
(1)
I/O
引脚
VSS
5.3 TRIS 寄存器
通过执行 TRIS f 指令,可使用 W 寄存器的内容装载
输出驱动器控制寄存器。将 TRIS 寄存器的某位置 1 ,可
使相应的输出驱动器置于高阻模式。而将 TRIS 寄存器
的某位清零,会将输出数据锁存器的内容送入选定的引
脚并使能输出缓冲器。特殊的引脚为 RB3/GP3 引脚和
T0CKI 引脚,前者为只输入引脚,后者是由选项寄存器
控制的引脚。请参见寄存器 4-3 。
注: 读端口读的是引脚而非输出数据锁存器。
也就是说,如果使能了某个引脚的输出驱
动器,并驱动为高电平,但外部系统将该
引脚保持为低电平,那么读相应端口将表
明该引脚为低电平。
注: TRIS 寄存器是 “只写”的,并且在复位时
被置为全 1 (禁止输出驱动器)。
复位
注 1 : GP3/RB3 只有连接到 V
2 : 关于引脚具体信息,请参见图 5-2 至图 5-13。
SS 的保护二极管。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 27 页
PIC12F510/16F506
图 5-2: GP0/RB0 和 GP1/RB1 框图 图 5-3: GP3/RB3 框图 (带有弱上拉和
GPPU
RBPU
GPPU
RBPU
引脚电平变化时唤醒)
数据
总线
写
端口
W
寄存器
TRIS 'f'
Q D
数据
锁存器
CK
CK
ADC 引脚使能
COMP 引脚使能
Q
Q D
TRIS
锁存器
Q
复位
RD 端口
MCLRE
(1)
I/O 引脚
复位
I/O 引脚
数据总线
读端口
Q
不匹配
Q
D
D
CK
(1)
CK
不匹配
ADC
COMP
注 1 : I/O 引脚上有连接到 VDD 和VSS 的保护二极管。
注 1 : GP3/MCLR 引脚只有连接到 VSS 的保护二极
管。
DS41268A_CN 第 28 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
图 5-4 : GP2 框图 图 5-5 : RB2 框图
数据
总线
写
端口
W
寄存器
TRIS 'f'
数据
锁存器
CK
TRIS
锁存器
CK
复位
T0CS
C1T0CS
ADC 引脚使能
C1OUT
Q D
Q
C1OUTEN
Q D
Q
读端口
T0CKI
0
1
I/O 引脚
(1)
数据
总线
写
端口
W
寄存器
TRIS 'f'
C1OUT
数据
锁存器
CK
C1OUTEN
TRIS
锁存器
CK
复位
ADC 引脚使能
读端口
0
1
Q D
Q
Q D
Q
I/O 引脚
(1)
ADC
注 1 : I/O 引脚上有连接到 VDD 和 VSS 的保护二极管。
ADC
注 1 : I/O 引脚上有连接到 VDD 和 VSS 的保护二极管。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 29 页
PIC12F510/16F506
图 5-6 : RB4 框图 图 5-7 : GP4 框图
数据
总线
写
端口
W
寄存器
TRIS 'f'
RBPU
Q D
数据
锁存器
TRIS
锁存器
复位
Q
OSC/4
F
Q D
Q
CK
CK
INTOSC/RC/EC
数据
总线
写
0
1
(注 2 )
I/O
引脚
(1)
端口
W
寄存器
TRIS 'f'
CK
CK
Q D
数据
锁存器
Q
Q D
TRIS
锁存器
Q
复位
INTOSC/RC
读端口
OSC1
振荡器
电路
I/O
引脚
(1)
读端口
OSC1
注 1: I/O 引脚上有连接到 VDD 和 VSS 的保护二极管。
2:当引脚由振荡器使用时,禁止输入模式。
振荡器
电路
注 1 : I/O 引脚上有连接到 VDD 和VSS 的保护二极管。
DS41268A_CN 第 30 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
图 5-8 : RB5/GP5 框图 图 5-9 : RC0/RC1 框图
数据
总线
写
端口
W
寄存器
TRIS 'f'
数据
锁存器
CK
TRIS
锁存器
CK
复位
Q D
Q
Q D
Q
读端口
(注 2 )
I/O
引脚
(1)
数据
总线
写
端口
W
寄存器
TRIS 'f'
Q D
数据
锁存器
CK
CK
Q
Q D
TRIS
锁存器
Q
复位
比较器引脚使能
I/O
引脚
(1)
OSC2
注 1: I/O 引脚上有连接到 VDD 和 VSS 的保护二极管。
2: 当引脚由振荡器使用时,禁止输入模式。
振荡器
电路
读端口
COMP2
注 1 : I/O 引脚上有连接到 VDD 和 VSS 的保护二极管。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 31 页
PIC12F510/16F506
图 5-10: RC2 框图 图 5-11: RC3 框图
VROE
数据
数据
总线
写
端口
W
寄存器
TRIS 'f'
数据
锁存器
CK
TRIS
锁存器
CK
总线
CVREF
Q D
Q
Q D
Q
1
I/O
0
引脚
(1)
写
端口
W
寄存器
TRIS 'f'
CK
CK
Q D
数据
锁存器
Q
Q D
TRIS
锁存器
Q
复位
I/O 引脚
(1)
复位
读端口
COMP2
注 1 : I/O 引脚上有连接到VDD 和VSS 的保护二极管。
读端口
注 1 : I/O 引脚上有连接到 VDD 和VSS 的保护二极管。
DS41268A_CN 第 32 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
图 5-12 : RC4 框图 图 5-13 : RC5 框图
数据
总线
写
端口
W
寄存器
TRIS 'f'
数据
锁存器
CK
TRIS
锁存器
CK
C2OUT
C2OUTEN
复位
读端口
0
Q D
Q
Q D
Q
1
I/O 引脚
(1)
数据
总线
写
端口
W
寄存器
TRIS 'f'
数据
锁存器
CK
TRIS
锁存器
CK
I/O 引脚
Q D
Q
Q D
Q
T0CS
复位
读端口
T0CKI
(1)
注 1 : I/O 引脚上有连接到VDD 和VSS 的保护二极管。
注 1 : I/O 引脚上有连接到VDD 和VSS 的保护二极管。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 33 页
PIC12F510/16F506
表 5-1 : 端口寄存器汇总
地址 名称
N/A TRISGPIO
N/A TRISB
N/A TRISC
N/A OPTION
N/A OPTION
03h STATUS
03h STATUS
06h GPIO
06h PORTB
07h PORTC
图注: - = 未用 (读为 0 ), x = 未知, u = 不变, q = 取值视情况而定。
注 1 : 仅 PIC12F510 器件才具有该寄存器。
2: 仅 PIC16F506 器件才具有该寄存器。
3: 如果由于引脚电平变化唤醒而产生复位,则 bit 7 = 1 。所有其他复位都将导致 bit 7 = 0 。
(2)
(2)
(1)
(2)
(1)
(2)
(1)
(2)
(2)
表 5-2 : I/O 引脚功能的优先级 (PIC16F506 )
优先级
1 AN0/C1IN+ AN1/C1IN- C1OUT
2 TRISB TRISB AN2
3
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
(1)
- - I/O 控制寄存器
- - I/O 控制寄存器
- - I/O 控制寄存器
GPWU GPPU T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
RBWU RBPU T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
GPWUF CWUF PA0 TO PD ZD CC0001 1xxx qq0q quuu
RBWUF CWUF PA0 TO PD ZD CC0001 1xxx qq0q quuu
- -
- -
- -
GP5 GP4 GP3 GP2 GP1 GP0 --xx xxxx --uu uuuu
RB5 RB4 RB3 RB2 RB1 RB0 --xx xxxx --uu uuuu
RC5 RC4 RC3 RC2 RC1 RC0 --xx xxxx --uu uuuu
RB0 RB1 RB2 RB3 RB4 RB5
输入 /MCLR
-
- -
TRISB
- - -
上电复位
时的值
--11 1111 --11 1111
--11 1111 --11 1111
--11 1111 --11 1111
所有其他
复位时的值
OSC2/CLKOUT OSC1/CLKIN
TRISIO TRISIO
(3)
(3)
表 5-3 : I/O 引脚功能的优先级 (PIC16F506 )
优先级
1C 2 I N + C 2 I N -C VREF TRISC C2OUT T0CKI
2 TRISC TRISC TRISC
RC0 RC1 RC2 RC3 RC4 RC5
-
TRISC TRISC
表 5-4 : I/O 引脚功能的优先级 (PIC12F510 )
优先级
1 AN0/C1IN+ AN1/C1IN- C1OUT
2 TRISIO TRISIO AN2
3
4
GP0 GP1 GP2 GP3 GP4 GP5
OSC2 OSC1/CLKIN
TRISIO TRISIO
- -
- -
T0CKI
TRISIO
输入 /MCLR
-
- - -
- - -
DS41268A_CN 第 34 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
表 5-5: 数字引脚操作要求 ( PIC12F510)
GP0 GP0 GP1 GP1 GP2 GP2 GP3 GP4 GP5
CM1CON0
C1ON 010 1 01
C1PREF - 0 - 1 - -
C1NREF
C1T0CS
C1OUTEN
CM2CON0
C2ON
C2PREF1
C2PREF2
C2NREF
C2OUTEN
VRCON0
VROE
VREN
OPTION
T0CS
ADCON0
ANS<1:0> 00 , 01 00, 01 00, 01 , 10 00 , 01 , 10 00 00
CONFIG
MCLRE
INTOSC
LP
EXTRC
XT
注 1: 某一引脚列中的多项代表此引脚数字功能的不同排列顺序。
2: 阴影单元表明此位的状态不会影响引脚的数字功能。
- - - 0 - -
- - - - - 1
- - - - - 1
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - -禁 止禁 止
- - - - - - - -禁 止
- - - - - - -禁 止禁 止
0
- - -
- - -
- - -
- - -
- - -
- - -
- - -
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 35 页
PIC12F510/16F506
表 5-6: 数字引脚操作要求 ( PIC16F506 PORTB)
RB0 RB0 RB0 RB1 RB1 RB2 RB2 RB3 RB4 RB5
CM1CON0
C1ON
C1PREF
C1NREF
C1T0CS
C1OUTEN
CM2CON0
C2ON 1
C2PREF1 0
C2PREF2 1
C2NREF
C2OUTEN
OPTION
T0CS
ADCON0
ANS<1:0> 00 , 010 0 , 01 00 , 01 00 , 01 , 10 00 , 01 , 10 00 00
CONFIG
MCLRE
INTOSC
LP
EXTRC
XT
EC
HS
INTOSC CLKOUT
EXTRC CLOCKOUT
注 1: 某一引脚列中的多项代表此引脚数字功能的不同排列顺序。
2: 阴影单元表明此位的状态不会影响引脚的数字功能。
-
- -
- - - -
- - - - - - - - - -
- - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - -
- - - - - - - - - -
- - - - - - - -禁 止禁 止
- - - - - - - - -禁 止
- - - - - - - -禁 止禁 止
- - - - - - - - -禁 止
- - - - - - - -禁 止禁 止
- - - - - - - -禁 止禁 止
- - - - - - - -禁 止禁 止
01 0 1 01
0
- - - - - - - - -
- - - - - - - - -
- - - - - - - - -
- - - - - - -
(1),(2)
0
- - - - -
- - -
1
- - -
- - -
0
- -
(1),(2)
表 5-7: 数字引脚操作要求 ( PIC16F506 PORTC)
RC0 RC0 RC1 RC1 RC2 RC3 RC4 RC4 RC5 RC5
CM2CON0
C2ON 0101
C2PREF1
C2PREF2
C2NREF
C2OUTEN
VRCON0
VROE
OPTION
T0CS
注 1: 某一引脚列中的多项代表此引脚数字功能的不同排列顺序。
2: 阴影单元表明此位的状态不会影响引脚的数字功能。
DS41268A_CN 第 36 页 初稿 2006 Microchip Technology Inc.
-
-
- - -
- - - - - - -
- - - -
- - - - - - - -
0
0
- - - - - - - -
- - - - - - - -
0
- -
- - - - - -
01
1
0
- - ---
- -
- -
0
-
PIC12F510/16F506
5.5 I/O 编程注意事项
5.5.1 双向 I/O 端口
某些指令在内部是先执行一个读操作,再执行一个写操
作。例如 BCF 和 BSF 指令,这两个指令将整个端口的
数据读入 CPU ,执行位操作,然后重写结果。当一个端
口有一个或一个以上的引脚用作输入 / 输出时,对其执
行这些指令必须加倍小心。例如,对 PORTB/GPIO 的
bit 5 执行 BSF 操作时,先将 PORTB/GPIO 的全部 8 位
数据读入 CPU ,然后将 bit 5 置 1 ,最后将 PORTB/GPIO
的值写入输出锁存器。如果 PORTB/GPIO 的另一个位
被用作双向 I/O 引脚 (假设为 bit 0 ),并且该引脚此时
被定义为输入,则该引脚当前的输入信号被读入 CPU ,
然后将值重新写入该特定引脚的数据锁存器,覆盖先前
的内容。只要该引脚保持输入模式,就毫无问题。然而,
如果 bit 0 随后变成了输出模式,则输出锁存器的内容将
无法得知。
例 5-1 给出了对一个 I/O 端口执行两条连续的读—修改
—写指令 (如 BCF 和 BSF 等)的效果。
当某引脚设置为输出 (高电平或低电平)时,不应通过
外部器件来驱动该引脚,以达到改变该引脚电平的目的
(“线或”或“线与”)。否则,引起的高输出电流可能
会损坏器件。
例 5-1 :对I/O 端口执行读—修改—
写指令 (如 PIC16F506 )
;Initial PORTB Settings
;PORTB<5:3> Inputs
;PORTB<2:0> Outputs
;
; PORTB latch PORTB pins
; ---------- ----------
BCF PORTB, 5 ;--01 -ppp --11 pppp
BCF PORTB, 4 ;--10 -ppp --11 pppp
MOVLW 007h;
TRIS PORTB ;--10 -ppp --11 pppp
;
注: 用户原本希望引脚值为 --00 pppp。第二条
BCF 指令将使 RB5 被锁存为该引脚的值(高电
平)。
5.5.2 I/O 端口的连续操作
对 I/O 端口的写操作实际发生在指令周期的末尾时刻。
但对于读操作,在指令周期的开始处所读的数据就必须
有效 (见图 5-14 )。因此,如果对同一个 I/O 端口执行
写操作之后,接着执行读操作,就必须特别小心。指令
序列应使引脚电压先稳定下来 (与负载有关),才执行
下一条指令将端口值读入 CPU 。否则,读入的可能是引
脚的前一个状态而不是新状态。当状态不确定时,最好
用一条 NOP 指令或者其他不访问 I/O 端口的指令隔开这
些指令。
图 5-14 :连 续I/O 操作 (以 PIC16F506 器件为例)
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
取指令
RB<5:0>
执行指令
PC PC + 1 PC + 2
MOVWF PORTB
MOVF PORTB, W
此时写
端口引脚
MOVWF PORTB
(写入 PORTB )
NOP
此时对端口引脚
进行采样
(读 PORTB )
PC + 3
NOP
NOP MOVF PORTB,W
此例为对 PORTB 执行写操作,接着读 PORTB 。
数据建立时间 = (0.25 T
CY = 指令周期
其中: T
PD = 传播延时
T
因此,当时钟频率很高时,写端口后马上再读端口可
能会有问题。
CY – T PD)
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 37 页
PIC12F510/16F506
注:
DS41268A_CN 第 38 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
6.0 TMR0 模块和 TMR0 寄存器
Timer0 模块有以下特性:
• 8 位定时器 / 计数器 TMR0
• 可读写
• 软件可编程的 8 位预分频器
• 内部或外部时钟选择:
- 外部时钟边沿选择
- 来自 T0CKI 引脚或比较器输出的外部时钟
图 6-1 是 Timer0 模块的简化框图。
将 T0CS 位(OPTION<5>)清零可选择定时器模式。
在定时器模式下,Timer0 模块在每个指令周期递增(不
使用预分频器)。 TMR0 寄存器被写入时,在接下来的
两个指令周期禁止递增 (见图 6-2 和图 6-3 )。用户可
通过将校正值写入 TMR0 寄存器避开这一问题。
有两种计数器模式。在第一种计数器模式下,Timer0 依
靠 T0CKI 引脚电平递增。通过将 T0CKI 位
(OPTION<5> )、 CMPT0CS
COUTEN 位(CM1CON0<6>)置 1 来选择这种模式。
在这种模式下, Timer0 可在 T0CKI 引脚信号的每个上
升沿或下降沿递增。具体是上升沿还是下降沿由 T0SE
位(OPTION<4> )决定。将 T0SE 位清零选择上升沿。
外部时钟输入的限制在第 6.1 节“Timer0 外部时钟的使
用(特性2 )”中详细讨论。
位(CM1CON0<4>)和
在第二种计数器模式下,Timer0 依靠比较器输出递增。
有两种不同的方式选择这种模式。第一种方式是通过将
T0CS 位(OPTION<5>)置 1 并将 CMPT0CS
位
(CMCON<4> )清零 ( COUTEN [CMCON<6>] 不会对
这种模式产生影响)来选择的。这样允许比较器和
Timer0 之间建立内部连接。
第二种方式是通过将 T0CS 位(OPTION<5>)和
CMPT0CS
位(CM1CON0)置 1 ,并将 COUTEN 位
(CM1CON0<6> )清零来选择的。这样将允许在 T0CKI
输入保持有效的同时将比较器输出送入 T0CKI 引脚。因
此,比较器 COUT 引脚上电平的任何变化都将反馈给
T0CKI 输入引脚。导致计数器递增的边沿由 T0SE 位
(OPTION<4> )决定。将 T0SE 位清零选择上升沿。外
部时钟输入的限制在第 6.1 节“Timer0 外部时钟的使用
(特性 2 )”中详细讨论。
该预分频器可由 Timer0 模块或看门狗定时器使用,但
它们不可同时使用。预分频器的分配在软件中由 PSA
(OPTION<3> )控制位控制。将 PSA 位清零将预分频
器分配给 Timer0 。预分频器是不可读写的。当预分频器
分配给 Timer0 模块时,可选择的预分频比有 1:2 ,1:4,
...,1:256 。预分频器的具体操作请参见第 6.2 节“预分
频器”。
与 Timer0 模块相关的寄存器汇总请参见表 6-1 。
图 6-1 : TIMER0 框图
T0CKI
引脚
FOSC /4
内部
比较器
输出
注 1: T0CS 、 T0SE 、 PSA 、 PS2 、 PS1 和 PS0 均位于选项寄存器中。
2: 该预分频器是与看门狗定时器共用的 (见图 6-5 )。
3: CMPT0CS
1
0
CMPT0CS
(1)
T0SE
(3)
位位于 CM1CON0 寄存器中,为 CM1CON0<4> 。
0
1
T0CS
PS2, PS1, PS0
(1)
可编程
预分频器
3
(2)
(1)
1
PSA
OUT
PS
0
(1)
与内部
时钟
同步
(延时两个 TCY)
数据总线
8
TMR0 寄存器
PSOUT
同步
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 39 页
PIC12F510/16F506
图 6-2: TIMER0 时序图:内部时钟 / 无预分频器
PC
(程序
计数器)
取指令
Timer0
执行指令
Q1 Q2 Q3 Q4
PC - 1
T0
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
PC PC + 1 PC + 2 PC + 3 PC + 4 PC + 6
MOVWF TMR0 MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W
T0 + 1 T0 +2 NT0
执行写
TMR0
读 TMR0
为 NT0
图 6-3 : TIMER0 时序图:内部时钟 / 预分频比 1:2
PC
(程序
计数器)
取指令
Timer0
执行指令
Q1 Q2 Q3 Q4
PC - 1
T0
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
PC PC + 1 PC + 2 PC + 3 PC + 4 PC + 6
MOVWF TMR0 MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W
T0 + 1 NT0
执行写
TMR0
读 TMR0
为 NT0
读 TMR0
为 NT0
读 TMR0
为 NT0
读 TMR0
为 NT0
读 TMR0
为 NT0
PC + 5
NT0 + 1
读 TMR0
为 NT0 + 1
PC + 5
读 TMR0
为 NT0 + 1
NT0 +2
读 TMR0
为 NT0 + 2
NT0 + 1
读 TMR0
为 NT0 + 2
表 6-1 :与TIMER0 相关的寄存器
地址 名称
01h TMR0
07h
CM1CON0
08h CM1CON0
N/A OPTION
N/A TRISGPIO
图注: Time r0 不使用阴影单元,- = 未用, x = 未知, u = 不变。
注 1 : 当 T0CS = 1 时, T0CKI 引脚的 TRIS 被忽略。
2: 仅 PIC12F510 器件才具有该寄存器。
3: 仅 PIC16F506 器件才具有该寄存器。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Timer0——8 位实时时钟 / 计数器
(2)
C1OUT C1OUTEN C1POL C1T0CS C1ON C1NREF C1PREF C1WU
(3)
C1OUT C1OUTEN C1POL C1T0CS C1ON C1NREF C1PREF C1WU 1111 1111
GPWU GPPU T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
(1)
- - I/O 控制寄存器
上电复位
时的值
所有其他
复位时的值
xxxx xxxx uuuu uuuu
1111 1111
uuuu uuuu
uuuu uuuu
---- 1111 --11 1111
DS41268A_CN 第 40 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
6.1 Timer0 外部时钟的使用 (特性 2)
当 Timer0 使用外部时钟输入时,必须满足一定要求。这
种外部时钟要求是为了确保外部时钟和内部相位时钟
(TOSC)保持同步。同步后,Timer0 的实际递增还将有
一定延时。
6.1.1 外部时钟同步
当不使用预分频器时,外部时钟输入与预分频器输出
相同。在内部相位时钟的 Q2 和 Q4 周期对预分频器输
出进行采样可实现 T0CKI 与内部相位时钟的同步(见
图 6-4 )。因此, T0CKI 或比较器输出的高电平必须至
少保持 2 个 T
并且其低电平也必须至少保持 2 个 T
的一小段 RC 延时)。请参见所用器件的电气规范。
图 6-4 : TIMER0 与外部时钟时序图
OSC (加上 2 Tt0H 的一小段 RC 延时),
OSC (加上 2 Tt0H
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
外部时钟输入或
预分频器输出
采样后外部时钟 /
预分频器的输出
Timer0 递增(Q4 )
(2)
(1)
(3)
当使用预分频器时,外部时钟输入被异步波纹计数器类
型的预分频器分频,故预分频器的输出是对称的。为了
使外部时钟满足采样要求,必须考虑波纹计数器。因
此,T0CKI 或比较器输出的周期必须至少保持4 个 T
OSC
(加上4 Tt0H 的一小段RC 延时)除以分频值。对 T0CKI
或比较器输出的高、低电平时间的惟一要求是脉宽不得
小于 Tt0H 。请参见所用器件的电气规范中的参数 40 、
41 和 42。
6.1.2 TIMER0 的递增延时
由于预分频器的输出与内部时钟同步,因此从出现外部
时钟沿到 Timer0 模块实际递增有一小段延时。图 6-4 显
示了从外部时钟沿到定时器递增的延时。
窄脉冲
丢失采样
Timer0
注 1 : 从时钟输入变化到 Time r0 递增有 3 到 7 个 T
边沿之间的间隔的最大误差为± 4 个 T
2: 如果未选择预分频器,则为外部时钟,否则为预分频器输出。
3: 箭头所指为采样时刻。
OSC。
6.2 预分频器
一个 8 位的计数器可分别作为 Timer0 模块的预分频器
或看门狗定时器 (WDT )的后分频器 (见图 10-12 )。
为简化起见,在本数据手册中称该计数器为 “预分频
器”。
注: 该预分频器由 Timer0 模块或看门狗定时器
使用,但它们不可同时使用。因此,如果
把预分频器分配给 Timer0 模块就意味着
WDT 无分频器可用,反之亦然。
T0 T0 + 1 T0 +2
OSC 的延时 (持续时间 Q = T OSC)。因此,测量 Timer0 输入脉冲相邻
PSA 和 PS<2:0> 位( OPTION<3:0>)决定预分频器的
分配和分频比。
当预分频器分配给 Timer0 模块时,所有写入 TMR0 寄
存器的指令 (如 CLRF 1, MOVWF 1, BSF 1, x,
等)都会将预分频器清零。当预分频器分配给 WDT 时,
执行 CLRWDT 指令会同时将预分频器和 WDT 清零。预
分频器是不可读写的。复位时,预分频器包含为全 0 的
值。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 41 页
PIC12F510/16F506
6.2.1 切换预分频器的分配
预分频器的分配完全由软件控制(即,它可在程序执行
期间被 “随时”改变)。为避免器件意外复位,当把预
分频器从 Timer0 分配给 WDT 时,必须执行下列指令序
列 (见例 6-1 )。
例 6-1 : 改变预分频器 (TIMER0 → WDT )
CLRWDT ;Clear WDT
CLRF TMR0 ;Clear TMR0 & Prescaler
MOVLW ‘00xx1111’b ;These 3 lines (5, 6, 7)
OPTION ;are required only if
;desired
CLRWDT ;PS<2:0> are 000 or 001
MOVLW ‘00xx1xxx’b ;Set Postscaler to
OPTION ;desired WDT rate
图 6-5: TIMER0/WDT 预分频器框图
(2)
T0CKI
比较器
输出
引脚
T CY (= FOSC/4 )
1
0
(1)
T0SE
0
1
T0CS
要将预分频器从 WDT 分配给 Timer0 模块,使用例 6-2
所示的指令序列。即使在 WDT 被禁止时,也必须使用
该序列。应该在切换预分频器之前执行 CLRWDT 指令。
例 6-2 : 改变预分频器 (WDT →TIMER0 )
CLRWDT ;Clear WDT and
;prescaler
MOVLW ‘xxxx0xxx’ ;Select TMR0, new
OPTION
M
U
X
(1)
1
0
PSA
M
U
X
(1)
;prescale value and
;clock source
数据总线
2 周期
同步电路
TMR0 寄存器
8
CMPT0CS
WDT 使能位
注 1: T0CS 、 T0SE 、 PSA 和 PS<2:0> 均为选项寄存器中的位。
2: 在 PIC12F510 器件中 T0CKI 与 GP2 引脚复用,而在 PIC16F506 器件中 T0CKI 与 RC5 复用。
3: CMPT0CS
(3)
0
看门狗
定时器
位位于 CM1CON0 寄存器中。
1
PSA
M
U
X
(1)
8 位预分频器
8
8 选 1 MUX
0
MUX
WDT
超时溢出
PS<2:0>
1
(1)
PSA
(1)
DS41268A_CN 第 42 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
7.0 比较器模块
PIC12F510 器件包含一个模拟比较器模块。 PIC16F506 包
含两个比较器模块和一个比较器参考电压模块。第二个比
较器旨在为器件提供一些额外的比较器功能。
寄存器 7-1 : CM1CON0 寄存器 (地址:07h )( PIC12F510 )
R-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
C1OUT C1OUTEN
bit 7 bit 0
C1POL C1T0CS C1ON C1NREF C1PREF C1WU
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
C1OUT:比较器输出位
1 = V
IN+ > V IN-
0 = VIN + < V IN -
C1OUTEN
1 = 比较器不通过 C1OUT 引脚输出电平
0 = 比较器通过 C1OUT 引脚输出电平
C1POL:比较器输出极性位
1 = 比较器输出不反相
0 = 比较器输出反相
C1T0CS:比较器 TMR0 时钟源位
1 = T0CS 控制位决定 TMR0 时钟源的选择
0 = 比较器输出作为 TMR0 的时钟源
C1ON:比较器使能位
1 = 比较器开启
0 = 比较器关闭
C1NREF:比较器负参考电压选择位
1 = CIN- 引脚
0 = V
C1PREF:比较器正参考电压选择位
1 = CIN+ 引脚
0 = CIN- 引脚
C1WU
1 = 禁止比较器电平变化唤醒
0 = 使能比较器电平变化唤醒
注 1 : 该位改写 T0CS 位以进行 GP2 的 TRIS 控制。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
:比较器输出使能位
REF
:比较器电平变化唤醒使能位
2: 当比较器开启时,这些控制位都将有效,否则其他寄存器具有优先权。
(1),(2)
(2)
(2)
(2)
(2)
(2)
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 43 页
PIC12F510/16F506
寄存器 7-2: CM1CON0 寄存器 (地址: 08h)( PIC16F506)
R-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
C1OUT C1OUTEN
bit 7 bit 0
C1POL C1T0CS C1ON C1NREF C1PREF C1WU
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
C1OUT:比较器输出位
1 = V
IN+ > V IN-
0 = VIN + < V IN -
C1OUTEN
:比较器输出使能位
(1),(2)
1 = 比较器不通过 C1OUT 引脚输出电平
0 = 比较器通过 C1OUT 引脚输出电平
C1POL:比较器输出极性位
(2)
1 = 比较器输出不反相
0 = 比较器输出反相
C1T0CS
:比较器 TMR0 时钟源位
(2)
1 = T0CS 控制位决定 TMR0 时钟源的选择
0 = 比较器输出作为 TMR0 的时钟源
C1ON:比较器使能位
1 = 比较器开启
0 = 比较器关闭
C1NREF:比较器负参考电压选择位
(2)
1 = CIN- 引脚
0 = V
REF
C1PREF:比较器正参考电压选择位
(2)
1 = CIN+ 引脚
0 = CIN- 引脚
C1WU
:比较器电平变化唤醒使能位
(2)
1 = 禁止比较器电平变化唤醒
0 = 使能比较器电平变化唤醒
注 1: 该位改写 T0CS 位以进行 RC5 的 TRIS 控制。
2: 当比较器开启时,这些控制位都将有效,否则其他寄存器具有优先权。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
DS41268A_CN 第 44 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
寄存器 7-3: CM2CON0 寄存器 (地址: 0Bh)( PIC16F506)
R-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
C2OUT C2OUTEN
bit 7 bit 0
C2POL C2PREF2 C2ON C2NREF C2PREF1 C2WU
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
C2OUT:比较器输出位
1 = V
IN+ > V IN-
0 = VIN + < V IN -
C2OUTEN
:比较器输出使能位
(1),(2)
1 = 比较器不通过 C2OUT 引脚输出电平
0 = 比较器通过 C2OUT 引脚输出电平
C2POL:比较器输出极性位
(2)
1 = 比较器输出不反相
0 = 比较器输出反相
C2PREF2:比较器正参考电压选择位
(2)
1 = C1IN+ 引脚
0 = C2IN- 引脚
C2ON:比较器使能位
1 = 比较器开启
0 = 比较器关闭
C2NREF:比较器负参考电压选择位
(2)
1 = C1IN- 引脚
0 = V
REF
C2PREF1:比较器正参考电压选择位
(2)
1 = C2IN+ 引脚
0 = C2PREF2 控制模拟输入选择
C2WU
:比较器电平变化唤醒使能位
(2)
1 = 禁止比较器电平变化唤醒
0 = 使能比较器电平变化唤醒
注 1: 该位改写 T0CS 位以进行 RC4 的 TRIS 控制。
2: 当比较器开启时,这些控制位都将有效,否则其他寄存器具有优先权。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 45 页
PIC12F510/16F506
图 7-1: PIC12F510 的比较器框图
C1PREF
C1IN-
C1IN+
C2NREF
0
MUX
1
C1ON
至
数据总线
读 CM2CON0
DQ
Q3* 读 CM1CON0
(1)
NRESET
EN
CL
C1WU
C1WUF
使能 C1 输出
C1IN-
0.6 VREF
1
MUX
0
+
C1
-
C1POL
注 1 : 当 C1ON = 0 时, C1 比较器将产生一个 0 输出到异或门。
图 7-2 : PIC16F506 的比较器框图
C2PREF1
C1IN+
C2IN-
C2PREF2
C2NREF
1
C2VN
MUX
C2VP
0
1
C2IN+
1
MUX
0
C2IN-
+
C2
-
C2ON
(1)
C2POL
C1OUT
Q3* 读 CM2CON0
NRESET
C2OUT
DQ
EN
CL
C1OUT
至
数据总线
读 CM2CON0
C2WUF
C2WU
使能 C2 输出
C2OUT
CV
REF
注 1 : 当 C2ON = 0 时, C2 比较器将产生一个 0 输出到异或门。
MUX
0
DS41268A_CN 第 46 页 初稿 2006 Microchip Technology Inc.
7.1 比较器工作原理
图 7-3 所示为单比较器以及模拟输入电平和数字输出之
间的关系。当 VIN + 上的模拟输入小于 VIN - 上的模拟输
入时,比较器将输出数字低电平。图 7-3 中比较器输出
的阴影部分代表由于输入失调电压和响应时间所引起的
不确定区。关于共模电压,请参见表 13-1 。
PIC12F510/16F506
注: 对被定义为数字输入的任何引脚施加模拟
电平均可能使输入缓冲器的电流消耗超过
规定值。
7.5 比较器唤醒标志
图 7-3 : 单比较器
V
IN-
VIN +
结果
VIN +
V
IN-
+
–
结果
7.2 比较器参考电压
根据工作模式,比较器可以使用内部参考电压。加在
Vin- 上的模拟信号会与 Vin+ 上的信号相比较,比较器
的数字输出会相应调整 (见图 7-3 )。关于内部参考电
压规范请参见第 8.0 节 “比较器参考电压模块”。
7.3 比较器响应时间
响应时间是指比较器从选定一个新的参考电压或输入电
压源到输出达到一个有效电平时的最短时间。如果比较
器输入发生了改变,则必须要有一段延时允许比较器达
到稳定的新状态。关于比较器响应时间规范的信息请参
见表 13-1 。
当符合下面所有条件时,比较器唤醒标志将置 1 :
• C1WU
• 读取 CM1CON0 或 CM2CON0 以锁存 CMPOUT
• 器件处于休眠模式
• 比较器的输出状态发生了改变
此唤醒标志可由软件或器件复位清零。
= 0 (CM1CON0<0>)或
C2WU = 0 ( CM2CON0<0>)
位的上一个已知状态 (MOVF CM1CON0, W )
7.6 比较器在休眠模式下的工作方式
当比较器处于活动状态而器件处于休眠模式时,比较器
仍可保持正常工作。在比较器上电复位时,会产生较高
的休眠电流 (在掉电电流规范中有说明)。若要把休眠
模式下的功耗减少到最小,应该在进入休眠之前关闭比
较器。
7.7 复位的影响
上电复位会强制 CM2CON0 寄存器进入复位状态。这将
使比较器模块处于比较器复位模式。确保所有可能的输
入都为模拟输入。复位时引脚为模拟输入将使器件电流
达到最小。在复位期间,比较器将掉电。
7.8 模拟输入连接注意事项
图 7-4 是一个简化的模拟输入电路。由于模拟引脚和数
字输出端相连,因此在模拟引脚与 VDD 和 VSS 之间连
有反向偏置的二极管,将其电压限制在 V
间。一旦输入电压超出该范围 0.6V 以上,其中一个二
极管就会发生正向偏置从而可能使输入电压闭锁。模拟
信号源的最大阻抗推荐值为 10 k Ω 。任何连接到模拟输
入引脚上的外部元件 (如电容器或齐纳二极管),均应
保证其只有极小的漏电流。
SS 和 V DD 之
7.4 比较器输出
通过读取 CM1CON0 或 CM2CON0 寄存器中的相应位
可得到比较器的输出。该位是只读的。比较器输出也可
供内部使用,请参见图 7-3 。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 47 页
PIC12F510/16F506
图 7-4: 模拟输入模型
V
DD
RS < 10 K
VA
A
IN
CPIN
5pF
VT = 0.6V
T = 0.6V
V
图注: CPIN = 输入电容
T = 门限电压
V
ILEAKAGE = 引脚上的泄漏电流
RIC = 内部走线等效阻抗
RS = 信号源内阻
VA = 模拟电压
表 7-1 : 与比较器模块相关的寄存器
地址 名称
03h STATUS GPWUF CWUF
07h CM1CON0
08h CM1CON0
0Bh CM2CON0
N/A TRISB
N/A TRISC
N/A TRISGPIO
图注: x = 未知, u = 不变,- = 未用 (读为 0), q = 取值视情况而定。
注 1 : 仅 PIC12F510 器件才具有该寄存器。
2: 仅 PIC16F506 器件才具有该寄存器。
(2)
(2)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
-
(1)
C1OUT C1OUTEN C1POL C1T0CS C1ON C1NREF C1PREF C1WU 1111 1111 uuuu uuuu
(2)
C1OUT C1OUTEN C1POL C1T0CS C1ON C1NREF C1PREF C1WU 1111 1111 uuuu uuuu
(2)
C2OUT C2OUTEN C2POL C2PREF2 C2ON C2NREF C2PREF1 C2WU 1111 1111 uuuu uuuu
- - I/O 控制寄存器
- - I/O 控制寄存器
(1)
- - I/O 控制寄存器
TO
R
IC
ILEAKAGE
±500 nA
V
SS
上电复位
时的值
PD ZD CC 0001 1xxx qq0q quuu
--11 1111 --11 1111
--11 1111 --11 1111
--11 1111 --11 1111
所有其他复
位时的值
DS41268A_CN 第 48 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
8.0 比较器参考电压模块
比较器参考电压模块允许选择内部产生的参考电压作为
比较器的一个输入。 VRCON 寄存器 (寄存器 8-1 )控
制参考电压模块,如图 8-1 所示。
8.1 配置参考电压
参考电压模块可以输出 32 种不同的电压; 16 个属于高
电压范围, 16 个属于低电压范围。
公式 8-1 决定输出电压:
公式 8-1 :
VRR = 1
VRR = 0
(低电平范围):
(高电平范围)
CVREF = (V DD/4) + (VR3:VR0 x V DD/32)
CVREF = (VR3:VR0/24) x V DD
:
8.2 参考电压精度 / 误差
由于模块的结构所限,不能达到从 VSS 到 VDD 的整个
电压范围。梯形电阻网络 (图 8-1 )顶部和底部的晶体
管使 CVREF 无法达到 VSS 或 VDD 。但例外情况是当将
VREN 位(VRCON<7>)清零以禁止该模块时。如果
禁止该模块,当 VR<3:0> 是 0000 且 VRR
(VRCON<5> )置 1 时,参考电压为 V
进行过零检测且不消耗 CV
由于参考电压是由 V
DD 的波动而变化。经测试的比较器参考电压绝对
随着 V
精度请参见第 13.2 节“直流特性:PIC12F510/16F506
(扩展级)”。
寄存器 8-1 : VRCON ——仅 PIC16F506 (地址:0Ch )
R/W-0 R/W-0 R/W-1 U-0 R/W-1 R/W-1 R/W-1 R/W-1
bit 7
bit 6
bit 5
bit 4
bit 3-0
VREN VROE VRR
bit 7 bit 0
VREN : CV
1 = CV
0 = CVREF 掉电,不输出电流
VROE: CV
1 = 使能 VREF 输出
0 = 禁止 VREF 输出
VRR: CV
1 = 低电平范围
0 = 高电平范围
未用:读为 0
VR<3:0> :CV
当 VRR = 1 时:CVREF = (VR<3:0>/24)*VDD
当 VRR = 0 时:CVREF = VDD /4+(VR<3:0>/32)*VDD
注 1 : 当此位置 1 时, VREF 引脚的 TRIS 被改写并且模拟电压置于 VREF 引脚。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
REF 使能位
REF 上电
REF 输出使能位
REF 范围选择位
REF 值选择位
2 : 取 V
REF 的某个比例作为参考电压的控制仅适用于 PIC12F506 器件上的比较器 2。
(1)
(2)
-
SS。允许比较器
REF 模块电流。
DD 产生的,因此 CVREF 的输出会
VR3 VR2 VR1 VR0
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 49 页
PIC12F510/16F506
图 8-1: 比较器参考电压框图
16 阶
VDD
8R R R
16-1 模拟
VREN
MUX
CVREF 至
比较器
输入
RC3/VREF
VR3:VR0
VREN
VR3:VR0 = 0000
VRR
表 8-1 : 与比较器参考电压相关的寄存器
地址 名称
0Ch VRCON VREN VROE VRR
07h CM1CON0
08h CM1CON0
0Bh CM2CON0
图注: x = 未知, u = 不变,- = 未用 (读为 0)。
注 1 : 仅 PIC12F510 器件才具有该寄存器。
2: 仅 PIC16F506 器件才具有该寄存器。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
(1)
C1OUT C1OUTEN C1POL C1T0CS C1ON C1NREF C1PREF C1WU 1111 1111 uuuu uuuu
(2)
C1OUT C1OUTEN C1POL C1T0CS C1ON C1NREF C1PREF C1WU 1111 1111 uuuu uuuu
(2)
C2OUT C2OUTEN C2POL C2PREF2 C2ON C2NREF C2PREF1 C2WU 1111 1111 uuuu uuuu
-
RR
8R
上电复位
时的值
VR3 VR2 VR1 VR0 001- 1111 001- 1111
VRR
其他复位
时的值
DS41268A_CN 第 50 页 初稿 2006 Microchip Technology Inc.
9.0 模数 ( A/D)转换器
PIC12F510/16F506
A/D 转换器可以将模拟信号转换为表示该信号的 8 位数
字信号。
9.1 时钟分频器
AD 转换器(ADC )有 4 个时钟源可分别通过 ADCS<1:0>
进行设置。前 3 种设置分别将信号进行 32 、 16 和 8 分
频。第 4 种设置为带有分频比为 4 的分频器的 INTOSC 。
当使用工作频率为 350 KHz 到 20 MHz 之间的外部振荡
器时,这些设置使转换能顺利进行。使用工作频率低于
350 kHz 的外部振荡器时需要将 ADC 振荡器设置为
INTOSC/8,以得到有效的 ADC 转换结果。
ADC 转换需要 13 个 T
换需要的 TAD 周期数,它只决定 TAD 周期的长度。
当在 ADC 转换的过程中改变 ADCS<1:0> 位时,在下一
次转换开始前,不会选择新的 ADC 时钟源。当器件进
入休眠模式时,将丢失选择的时钟源。
注: ADC 时钟由指令时钟产生。ADCS 分频器
可用于产生 ADC 时钟。
9.1.1 参考电压
ADC 没有外部参考电压。 ADC 参考电压总是 VDD 。
9.1.2 模拟模式选择
ANS<1:0> 位用于将引脚配置为模拟输入。发生任何复
位时, ANS<1:0> 都默认为 11 ,从而将 AN0、 AN1 和
AN2 引脚配置为模拟输入。如果使能比较器输出,则比
较器输出 C1OUT 将使 AN2 变为输出。配置为模拟输入
的引脚不可用于数字输出。当在进行转换时,用户不应
改变 ANS 位。不论 ADON 的状态如何,ANS 位始终有
效。
AD 周期。分频值不会影响执行转
注: 用户负责确保在 ADC 和比较器同时使用同
一引脚时,不会影响对引脚信号的监控并
且不会对器件工作造成负面影响。
如果在 ADC 转换过程中改变了 CHS<1:0> 位,在当前
转换完成前,不会选择新通道。这样能确保当前转换完
成后的结果有效。当器件进入休眠模式时,将丢失所有
有关通道选择的信息。
表 9-1 : 事件发生后的通道选择 (ADCS)位
事件
MCLR
转换完成
转换终止
上电复位
从休眠模式唤醒
9.1.4 GO/DONE
GO/DONE 位用于确定转换状态、启动一个转换并手动
停止正在进行的转换。将 GO/DONE 位置 1 将启动转
换。当转换完成后,ADC 模块将 GO/DONE 位清零。手
动将 GO/DONE 位清零可终止正在进行的转换。手动终
止转换可能导致 ADRES 中只有部分转换结果。
当器件进入休眠模式时,GO/DONE
前转换。 ADC 没有专用的振荡器,它依靠指令时钟工
作。因此,在休眠模式不会进行转换。
当 ADON 清零时,不能将 GO/DONE
位
ADCS<1:0>
11
CS<1:0>
CS<1:0>
11
11
位被清零,停止当
位置 1 。
9.1.3 ADC 通道选择
CHS 位用于选择 ADC 采样的模拟通道。可在任何时刻
更改 CHS<1:0> 位而不会对转换造成负面影响。要获得
模拟信号,CHS<1:0> 的选择必须与 ANS<1:0> 位所选
的引脚 (或其中之一)匹配。当 ADC 启动 (ADON = 1)
并选择了比较器也正在使用的通道时,比较器和 ADC 都
将在该引脚上获得模拟电压。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 51 页
PIC12F510/16F506
9.1.5 休眠模式
ADC 没有专用的 ADC 时钟,因此在休眠模式不可能工
作。如果在转换进行过程中执行一条 SLEEP 指令,则
GO/DONE 和 ADON 位将被清零。这样会停止任何正在
进行的转换,并且关闭 ADC 模块以节约功耗。由于转
换过程的特性, ADRES 可能保存部分转换的结果,在
进入休眠模式前至少要转换 1 位数据,才会使 ADRES
中有部分完成的转换数据。 ADCS 和 CHS 位复位到默
认状态; ANS<1:0> = 11 且 CHS<1:0> = 11 。
表 9-2 : 使用各种振荡器在 ADCS 不同设置下的 TAD
时钟源
INTOSC 11 8. 5µs1 µs
FOSC 10 8
FOSC 01 16
FOSC 00 32 .8 µ s1µs2µs4µs1 6µs3 2µs4 6µs
要得到正确的转换结果, TAD 必须符合以下条件:
• 500 ns < T
• T
AD = 1/(F OSC/ 分频值 )
阴影部分表示 T
的模拟处于这些频率范围内,则请使用 INTOSC/8 作为
ADC 的时钟源。
ADCS
<1:0>
AD < 50 µs
分频器
AD 超出了精确转换范围。如果需要转换
20
MHz
.2 µs .25 µ s. 5µs1µs4µs8µs1 1µs2 0µs4 0µs 125 µs
.4 µ s. 5µs1µs2µs8µs1 6µs2 3µs4 0µs 80 µs 250 µs
16
MHz
8MHz 4MHz 1MHz
500
kHz
350
kHz
200
kHz
80 µs 160 µs 500 µs
100
kHz
32 kHz
9.1.6 模拟转换结果寄存器
ADRES 寄存器保存上次转换的结果。这些结果一直保
持到下一次模拟转换的采样阶段。当采样周期结束后,
ADRES 清零 (= 0 )。“前导位”向右移入 ADRES 作
为内部转换完成位。从高字节开始按位依次进行转换,
“前导位”不断右移以使后来转换的位填入 ADRES 中。
当 “前导位”右移 9 次后转换完成; “前导位”移出
且 GO/DONE
如果在转换过程中 GO/DONE
止。 ADRES 中的数据为部分转换结果。此数据对于已
转换的位是有效的。“前导位”的位置决定已转换位的
个数。在 GO/DONE
恢复的。
位清零。
位由软件清零,转换即停
位清零以前没有被转换的位是不可
DS41268A_CN 第 52 页 初稿 2006 Microchip Technology Inc.
寄存器 9-1 : ADCON0 寄存器
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-0 R/W-0
ANS1 ANS0 ADCS1 ADCS0 CHS1 CHS0 GO/DONE ADON
bit 7 bit 0
PIC12F510/16F506
bit 7-6
bit 5-4
bit 3-2
bit 1
bit 0
ANS<1:0> : PIC16F506 的 ADC 模拟输入引脚选择位
00 = 没有引脚被配置为模拟输入
01 = GP2/AN2 被配置为模拟输入
10 = GP2/AN2 和 GP0/AN0 被配置为模拟输入
11 = GP2/AN2 、 GP1/AN1 和 GP0/AN0 被配置为模拟输入
ADCS<1:0>: ADC 转换时钟选择位
00 = F
OSC/32
01 = FOSC/16
OSC/8
10 = F
11 = INTOSC/8
CHS<1:0>: PIC16F506 的 ADC 通道选择位
00 = 通道 00 (GP0/AN0 )
01 = 通道 01 (GP1/AN1 )
10 = 通道 02 (GP2/AN2 )
11 = 0.6V 绝对参考电压
GO/DONE
1 = 正在进行 ADC 转换。将此位置 1 启动 ADC 转换。当执行 ADC 转换时,此位会被硬件自动清
0 =ADC转换完成 / 不在进行中。在转换过程中手动清零该位将终止当前转换。
ADON: ADC 使能位
1 =ADC模块在运行
0 =ADC模块被关闭且不消耗功耗
注 1 : 在 PIC16F506 上,此项为 RBx ;在 PIC12F510 上,此项为 GPx 。
:ADC 转换状态位
零。
2 : 当 ANS 位置 1 时,不管先前将引脚定义为何功能,都会自动强制选定通道为模拟模
式。惟一的例外情况是比较器,在这种情况下,输入到比较器和 ADC 的模拟输入将
同时有效。用户负责确保比较器输入端上的 ADC 负载不会影响其应用。
3: 不论 ADON 是什么状态, ANS<1:0> 位始终有效。
4: 任何复位后, CHS<1:0> 位都默认为 11 。
5: 如果 ADON 位清零,则 GO/DONE
6: 当使能 C1OUT 时,它将改写 AN2 引脚的功能。
(5)
(4),(6)
(1),(2),(3),(6)
位不能被置 1 。
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 53 页
PIC12F510/16F506
寄存器 9-2: ADRES 寄存器
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-0 R/W-0
ADRES7 ADRES6 ADRES5 ADRES4 ADRES3 ADRES2 ADRES1 ADRES0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
表 9-3:休 眠 对 ADRES0 的影响
ANS1 ANS0 ADCS1 ADCS0 CHS1 CHS0 GO/DONE ADON
进入
不变 不变
休眠模式
唤醒或复位
11111100
例 9-1: 执行模数转换 例 9-2: 转换过程中改变通道选择
;来自于存储区 0 的采样代码
MOVLW 0xF1 ;configure A/D
MOVWF ADCON0
BSF ADCON0, 1 ;start conversion
loop0 BTFSC ADCON0, 1;wait for ‘DONE’
GOTO loop0
MOVF ADRES, W ;read result
MOVWF result0 ;save result
BSF ADCON0, 2 ;setup for read of
;channel 1
loop1 BTFSC ADCON0, 1;wait for ‘DONE’
loop2 BTFSC ADCON0, 1;wait for ‘DONE’
BSF ADCON0, 1 ;start conversion
GOTO loop1
MOVF ADRES, W ;read result
MOVWF result1 ;save result
BSF ADCON0, 3 ;setup for read of
BCF ADCON0, 2 ;channel 2
BSF ADCON0, 1 ;start conversion
GOTO loop2
MOVF ADRES, W ;read result
MOVWF result2 ;save result
111100
MOVLW 0xF1 ;configure A/D
MOVWF ADCON0
BSF ADCON0, 1 ;start conversion
BSF ADCON0, 2 ;setup for read of
;channel 1
loop0 BTFSC ADCON0, 1;wait for ‘DONE’
GOTO loop0
MOVF ADRES, W ;read result
MOVWF result0 ;save result
BSF ADCON0, 1 ;start conversion
BSF ADCON0, 3 ;setup for read of
BCF ADCON0, 2 ;channel 2
loop1 BTFSC ADCON0, 1;wait for ‘DONE’
GOTO loop1
MOVF ADRES, W ;read result
MOVWF result1 ;save result
BSF ADCON0, 1 ;start conversion
loop2 BTFSC ADCON0, 1;wait for ‘DONE’
GOTO loop2
MOVF ADRES, W ;read result
MOVWF result2 ;save result
CLRF ADCON0 ;optional: returns
;pins to Digital mode and turns off
;the ADC module
DS41268A_CN 第 54 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
10.0 CPU 的特殊性能
单片机与其他处理器的区别在于其具有处理实时应用需
要的特殊电路。PIC12F510/16F506 单片机具有许多特
性,旨在最大限度地提高系统的可靠性,通过减少外部
元件将成本降至最低,并且还提供了低功耗工作模式和
代码保护功能。这些特性如下:
• 振荡器选择
• 复位:
- 上电复位 ( POR)
- 器件复位定时器 ( DRT)
- 引脚电平变化时从休眠模式唤醒
• 看门狗定时器 (WDT)
• 休眠
• 代码保护
• ID 单元
• 在线串行编程 (ICSP™)
• 时钟输出
PIC12F510/16F506 器件具有一个看门狗定时器,只有
通过配置位 WDTE 才可将其关闭。为了增强可靠性,它
依靠自己的 RC 振荡器运行。如果使用 HS
(PIC16F506 )、 XT 或 LP 可选振荡器,就总是会由器
件复位定时器(DRT )提供一定的延时,用于在晶振稳
定之前使芯片保持为复位状态。如果使用 INTRC 、
EXTRC 或 EC ,那么将只在V
(标称值)的延时。有了此片上定时器,大部分应用都
不再需要外部复位电路。
休眠模式是为提供电流非常低的掉电模式而设计的。用
户可以通过输入引脚上的电平变化或通过看门狗定时器
超时溢出使器件从休眠模式唤醒。有几种振荡器供器件
选择以适应不同的应用,其中包括内部 4/8 MHz 振荡
器。EXTRC 振荡器可以节省系统成本,而 LP 晶振可以
节省功耗。可以使用一组配置位来选择不同的振荡器。
DD 上电时才具有 1.125 ms
10.1 配置位
PIC12F510/16F506 配置字由 12 位组成。可以编程配置
位来选择不同的器件配置。有三个位可用于选择振荡器
类型; (PIC12F510 器件为两个位),一个位是看门狗
定时器使能位,一个位是 MCLR
于代码保护 (寄存器 10-1 和寄存器 10-2 )。
使能位,还有一个位用
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 55 页
PIC12F510/16F506
寄存器 10-1 : 配置字——PIC12F510
- - - - - -
bit 11 bit 0
bit 11-6
bit 5
bit 4: MCLRE :主复位使能位
bit 3: CP :代码保护位
bit 2: WDTE :看门狗定时器使能位
bit 1-0: FOSC1:FOSC0 :振荡器选择位
未用:读为 1
IOSCFS :内部振荡器频率选择位
1 = 8 MHz INTOSC 速率
0 = 4 MHz INTOSC 速率
1 = GP3/MCLR
0 = GP3/MCLR 用作 GP3 , MCLR 内部连接到 VDD
1 = 代码保护关闭
0 = 代码保护打开
1 = 使能 WDT
0 = 禁止 WDT
00 = 带 18 ms DRT 的 LP 振荡器
01 = 带 18 ms DRT 的 XT 振荡器
10 = 带 1.125 ms DRT 的 INTOSC
11 = 带 1.125 ms DRT 的 EXTRC
注 1: 请参见 “ PIC12F510 Memory Programming Specification ”( DS41257 )和 “ PIC16F506
2: 应用设计人员负责确保使用 1.125 ms (标称值) DRT 时可实现正确的操作。请参见电气规范了
引脚功能为 MCLR
(1),(2)
(1),(2)
Memory Programming Specification ”(DS41258 )确定访问配置字的方法。
解该工作模式下对 V
DD 上升时间和稳定性的要求。
IOSCFS MCLRE CP
WDTE FOSC1 FOSC0
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 上电复位时的值 1 = 置 10 = 清零 x = 未知
DS41268A_CN 第 56 页 初稿 2006 Microchip Technology Inc.
寄存器 10-2: 配置字—— PIC16F506
PIC12F510/16F506
- - - - -
bit 11 bit 0
bit 11-7
bit 6
bit 5
bit 4
bit 3
bit 2-0
未用:读为 1
IOSCFS :内部振荡器频率选择位
1 = 8 MHz INTOSC 速率
0 = 4 MHz INTOSC 速率
MCLRE:主复位使能位
1 = RB3/MCLR
0 = RB3/MCLR 用作 RB3 , MCLR 内部连接到 VDD
CP
:代码保护位
1 = 代码保护关闭
0 = 代码保护打开
WDTE:看门狗定时器使能位
1 = 使能 WDT
0 = 禁止 WDT
FOSC2:FOSC0:振荡器选择位
000 = 带 18 ms DRT 的 LP 振荡器
001 = 带 18 ms DRT 的 XT 振荡器
010 = 带 18 ms DRT 的 HS 振荡器
011 = RB4/OSC2/CLKOUT 用作 RB4 并带 1.125 ms DRT 的 EC 振荡器
100 = RB4/OSC2/CLKOUT 用作 RB4 并带 1.125 ms DRT 的 INTOSC 振荡器
101 = RB4/OSC2/CLKOUT 用作 RCLKOUT 并带 1.125 ms DRT 的 INTOSC 振荡器
110 = RB4/OSC2/CLKOUT 用作 RB4 并带 1.125 ms DRT 的 EXTRC 振荡器
111 = RB4/OSC2/CLKOUT 用作 RCLKOUT 并带 1.125 ms DRT 的 EXTRC 振荡器
引脚用作 MCLR
IOSCFS MCLRE CP
WDTE FOSC2 FOSC1 FOSC0
(1),(2)
(1),(2)
(1),(2)
(1),(2)
(1),(2)
注 1 : 请参见 “ PIC12F510 Memory Programming Specification”( DS41257 )和 “ PIC16F506
Memory Programming Specification”(DS41258 )确定访问配置字的方法。
2 : 应用设计人员负责确保使用 1.125 ms (标称值) DRT 时可实现正确的操作。请参见电气规范了
解该工作模式下对 V
图注:
R = 可读位 W = 可写位 U = 未用位,读为 0
-n = 空白 1 = 置 10 = 清零 x = 未知
DD 上升时间和稳定性的要求。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 57 页
PIC12F510/16F506
10.2 振荡器配置
10.2.1 振荡器类型
PIC12F510/16F506 器件最多可以在 6 种不同的振荡模
式下工作。用户可以对最多三个配置位
(FOSC<1:0>[PIC12F510] , FOSC<2:0>
[PIC16F506])进行编程。要选择这些模式中的一个:
• LP: 低功耗晶振
• XT:晶 振 / 谐振器
• HS: 高速晶振 / 谐振器 (仅 PIC16F506)
• INTRC:内部 4/8 MHz 振荡器
• EXTRC:外部谐振器 / 电容
• EC: 外部高速时钟输入 (仅 PIC16F506)
10.2.2 晶振 / 陶瓷谐振器
在 HS (PIC16F506 )、 XT 或 LP 模式中,晶振或陶瓷
谐振器与(GP5/RB5 )/OSC1/(CLKIN )和( GP4/RB4)
/OSC2/ ( CLKOUT)引脚相连以产生振荡 (图 10-1)。
PIC12F510/16F506 振荡器设计要求使用平行切割的晶体。
使用顺序切割的晶体,可能会使振荡器产生的频率超出晶体
制造厂商所规定的范围。当在 HS (PIC16F506 )、 XT 或
LP 模式中时,器件可以用一个外部时钟源驱动
(GP5/RB5 ) /OSC1/CLKIN 引脚 (图 10-2 )。
注 1 : 此器件设计为按照其数据手册中的参数
运行。器件经测试达到电气规范的要求,
而这套电气规范是用以确定器件是否符
合上述参数而设计的。由于器件生产工艺
的差异,器件的性能特性可能与其早期的
版本有所不同。这些差异可能导致此器件
在您的应用中所表现的性能与早期的版
本有所不同。
2 : 用户应该验证器件振荡器的起振和运行
与预期是否相同。可能需要调整负载电容
值和 / 或振荡器模式。
图 10-1 : 晶振 (或陶瓷谐振器)工作原理
(HS 、 XT 或 LP 振荡器配置)
(1)
C1
(1)
C2
注 1: 推荐使用的 C1 和 C2 值请参见电容选择表。
2: 对于 AT 条形切割晶体可能需要串联一个电阻
(RS )。
3 : RF 近似值 = 10 MΩ 。
XTAL
RS
(2)
OSC1
OSC2
RF
(3)
PIC12F510
PIC16F506
休眠
到内部
逻辑电路
图 10-2 : 外部时钟输入工作原理 (HS 、
XT 或 LP 振荡器配置)
来自外部系统
的时钟
开路
表 10-1 : 陶瓷谐振器的电容选择——
PIC12F510/16F506
振荡
类型
HS
注 1 : 这些值仅供设计参考。由于每个谐振器都
谐振器频率
XT 4.0 MHz 30 pF 30 pF
(2)
16 MHz 10-47 pF 10-47 pF
有自己的特性,用户应该向谐振器厂商咨
询外部元件的适当值。
2 : 仅 PIC16F506 器件才可使用的振荡模式。
OSC1
OSC2
电容范围
C1
PIC12F510
PIC16F506
(1)
电容范围
C2
DS41268A_CN 第 58 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
表 10-2: 晶振的电容选择—— PIC12F510/
16F506
振荡
类型
HS
注 1 : 当 V
谐振器频率
LP 32 kHz
XT 200 kHz
1 MHz
4 MHz
(3)
20 MHz 15-47 pF 15-47 pF
DD > 4.5V 时,建议 C1 = C2 ≈ 30 pF。
(1)
(2)
电容范围
电容范围
C1
15 pF 15 pF
47-68 pF
15 pF
15 pF
47-68 pF
15 pF
15 pF
C2
2: 这些值仅供设计参考。可能需要使用电阻
Rs 以避免对低驱动规格的晶体造成过驱
动。由于每个晶振都有自己的特性,用户
应该向晶振厂商咨询外部元件的适当值。
3 : 仅 PIC16F506 器件才可使用的振荡模式。
10.2.3 外部晶体振荡电路
具有TTL 门控的预封装振荡器或简单振荡电路可以被用
作外部晶振电路。预封装的振荡器提供了一个宽工作范
围和更好的稳定性。设计优良的晶振具有 TTL 门控电
路,可提供良好的性能。可以使用两种类型的晶振电路:
并联谐振电路或串联谐振电路。
图 10-3 显示了并联谐振器振荡电路的实现方式。此电路
设计为使用晶体的基频。 74AS04 反相器可以提供并联
振荡器所需要的 180 度相移。4.7 kΩ 的电阻提供负反馈
以增强稳定性。10 kΩ电位器将 74AS04 偏置到线性区。
此电路可用于外部振荡器设计。
图 10-3 : 外部并联谐振器的晶振电路
+5V
10k
4.7k
74AS04
10k
XTAL
10k
20 pF
20 pF
图 10-4 显示了串联谐振器振荡电路。此电路也设计为使
用晶体的基频。反相器在串联谐振器振荡电路中执行
180 度相移。 330 Ω 电阻提供的负反馈将反向器偏置到
线性区。
74AS04
到其他
器件
CLKIN
PIC12F510
PIC16F506
图 10-4 : 外部串联谐振器的晶振电路
到其他
74AS04
器件
CLKIN
PIC12F510
PIC16F506
330
74AS04
330
74AS04
0.1 mF
XTAL
10.2.4 外部 RC 振荡器
对于时序要求极高的应用, EXTRC 器件选项可以进一
步节省成本。 EXTRC 振荡频率随电源电压、电阻
(REXT )和电容值 (CEXT )以及工作温度变化。除此
之外,由于正常工艺参数不同,不同器件之间的振荡频
率也各不相同。此外,不同封装类型的引线框的电容差
异也会影响振荡频率,尤其当 C
需要考虑到由于所使用的外部 R 和 C 元件的容差不同而
造成的差异。
图 10-5 显示了 RC 组合连接到 PIC12F510/16F506 器
件的方式。如果 R
EXT 值低于 5.0 kΩ ,振荡器工作就会
变得不稳定,或者完全停止。如果 REXT 值很高
(如 1MΩ),振荡器就会变得对噪声、湿度和泄漏电流
敏感。因此,建议将 R
EXT保持在5.0 kΩ 和 100 kΩ 之间。
EXT 值较小时。用户还
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 59 页
PIC12F510/16F506
虽然振荡器可以在没有外部电容的情况下 (CEXT = 0 pF)
工作,但是由于噪声和稳定性原因,还是建议使用大于
20 pF 的电容值。如果没有外部电容或外部电容值很
小,振荡频率就会由于外部电容 (比如 PCB 布线电容
和封装引线框的电容)的改变而剧烈变化。
第 13.0 节 “电气规范”显示了各器件由于正常制造工
艺的不同而产生的 RC 频率差异。 R 值越大差异越大
(因为 R 值越大,泄漏电流的差异对 RC 频率的影响越
大),而 C 值越小差异越大 (因为输入电容的差异对
RC 频率影响更大)。
另外,欲知由于给定 R
EXT/C EXT 值的 V DD 而产生的振
荡频率差异,以及由于给定 R 、C 和 VDD 值的工作温度
而产生的频率差异,请参见电气规范部分。
图 10-5 :外 部RC 振荡器模式
VDD
REXT
CEXT
VSS
FOSC /4
OSC1
N
OSC2/CLKOUT
内部
时钟
PIC12F510
PIC16F506
10.2.5 内部 4/8 MHz RC 振荡器
内部 RC 振荡器在 VDD = 5V 和 25°C 时提供固定的
4/8 MHz (标称值)系统时钟 (有关随着电压和温度
变化的信息请参见第 13.0 节 “电气规范”)。
10.2.6 外部时钟输入
对于已通过其他方式提供了时钟的应用程序,如果外部
时钟源符合第 10.6 节 “看门狗定时器 (WDT )”中所
列的 AC/DC 时序要求,则用户可以直接驱动
PIC12F510/16F506 器件。下面的图 10-6 显示了应该如
何配置外部时钟电路。
图 10-6 : 外部时钟输入操作
PIC16F506 :EC、HS、XT 和 LP
来自外部系统
的时钟
OSC2/CLKOUT/RB4
PIC12F510 :XT 和 LP
来自外部系统
的时钟
OSC2
注 1 : 仅在 EC 模式下才有 RB4 。
此外,校准指令被编写在存储器的最后一个地址,其中
包括内部 RC 振荡器的校准值。不管是否设置了代码保
护,此单元总是没有代码保护的。此值被编程为 MOVLW
XX 指令,其中 XX 是校准值,并被放在复位向量处。这将
在复位时把校准值载入 W 寄存器,然后 PC 将返回至地
址 0x000 处的用户程序。然后用户可以选择是将此值写
入 OSCCAL 寄存器 (05h )还是忽略它。
当将校准值写入 OSCCAL 寄存器时,将 “调整”内部
振荡器以消除由于制造工艺引起的振荡频率差异。
注: 擦除器件同时也会擦除内部振荡器预编程
的内部校准值。必须在擦除器件之前读取
校准值,从而以后可以正确地重新编程。
对于 PIC12F510/16F506 器件,仅实现了 OSCCAL 的
bit <7:1> 。CAL6-CAL0 位用于校准。将 CAL6-CAL0 从
0000000 调整到 1111111 会改变时钟速度。欲知更多
信息,请参见寄存器 4-3 。
注: 在修改 OSCCAL 以便与以后的器件兼容
时,不使用 OSCCAL 的 bit 0 ,并且此位应
该被写为 0 。
RB5/OSC1/CLKIN
OSC2/CLKOUT/RB4
GP5/OSC1/CLKIN
GP4/OSC2
(1)
DS41268A_CN 第 60 页 初稿 2006 Microchip Technology Inc.
10.3 复位
器件因不同类型的复位而有所区别:
• 上电复位 (POR)
• 正常工作时的 MCLR
• 休眠时的 MCLR
• 正常工作时的 WDT 超时溢出复位
• 休眠时的 WDT 超时溢出复位
• 在引脚电平发生变化时从休眠模式唤醒
• 在比较器电平发生变化时从休眠模式唤醒
某些寄存器不会以任何形式复位,它们在上电复位时未
知,在任何其他复位时不变。大部分其他寄存器都会在
正常工作过程中发生上电复位(POR )、MCLR
复位或引脚电平变化唤醒复位时复位到 “复位状态”。
它们在休眠过程中不受到 WDT 复位或 MCLR
响,因为这些复位被视为恢复正常运行。 TO
CWUF 和 RBWUF/GPWUF 位例外。在不同的复位情况
下它们的置 1 和清零状况不同。在软件中使用这些位来
确定复位的特性。所有寄存器的复位状态的完整说明请
参见表 10-3 和表 10-4 。
复位
复位
、WDT
复位的影
、 PD 、
PIC12F510/16F506
表 10-3: 寄存器的复位条件—— PIC12F510
MCLR
寄存器 地址 上电复位
W
INDF 00h xxxx xxxx uuuu uuuu
TMR0 01h xxxx xxxx uuuu uuuu
PC 02h 1111 1111 1111 1111
STATUS 03h 0001 1xxx qq0q quuu
(4)
FSR
(5)
FSR
OSCCAL 05h 1111 111- uuuu uuu-
GPIO 06h --xx xxxx --uu uuuu
CM1CON0 07h 1111 1111 uuuu uuuu
ADCON0 08h 1111 1100 uu11 1100
ADRES 09h xxxx xxxx uuuu uuuu
OPTION
TRIS
图注: u = 不变, x = 未知,- = 未用位 (读为 0), q = 取值视情况而定。
注 1 : W 寄存器的 bit <7:2> 包含振荡器校准值,这是因为存储器顶部有一条 MOVLW XX 指令。
2: 特定条件下的复位值请参见表 10-8 。
3: 如果由于引脚电平变化唤醒而产生复位,则 bit 7 = 1 。所有其他复位都将导致 bit 7 = 0 。
4: 仅 PIC12F510 。
5: 仅 PIC16F506 。
-
04h 110x xxxx 11uu uuuu
04h 111x xxxx 111u uuuu
-
-
qqqq qqqu
1111 1111 1111 1111
--11 1111 --11 1111
(1)
复位、 WDT 超时溢出、引脚电平变化
唤醒、比较器变化唤醒
qqqq qqqu
(1)
(2), (3)
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 61 页
PIC12F510/16F506
表 10-4 : 寄存器的复位条件——PIC16F506
复位、 WDT 超时溢出、引脚电平变
寄存器 地址 上电复位
W
INDF 00h xxxx xxxx uuuu uuuu
TMR0 01h xxxx xxxx uuuu uuuu
PC 02h 1111 1111 1111 1111
STATUS 03h 0001 1xxx qq0q quuu
FSR 04h 110x xxxx 11uu uuuu
OSCCAL 05h 1111 111- uuuu uuu-
PORTB 06h --xx xxxx --uu uuuu
PORTC 07h --xx xxxx --uu uuuu
CM1CON0 08h 1111 1111 uuuu uuuu
ADCON0 09h 1111 1100 uu11 1100
ADRES 0Ah xxxx xxxx uuuu uuuu
CM2CON0 0Bh 1111 1111
VRCON 0Ch 001- 1111
OPTION
TRISB
TRISC
图注: u = 不变, x = 未知,- = 未用位 (读为 0), q = 取值视情况而定。
注 1 : W 寄存器的 bit <7:2> 包含振荡器校准值,这是因为存储器顶部有一条 MOVLW XX 指令。
2: 特定条件下的复位值请参见表 10-8 。
3: 如果由于引脚电平变化唤醒而产生复位,则 bit 7 = 1 。所有其他复位都将导致 bit 7 = 0 。
-
-
-
-
qqqq qqqu
1111 1111 1111 1111
--11 1111 --11 1111
--11 1111 --11 1111
(1)
MCLR
化唤醒、比较器变化唤醒
qqqq qqqu
(1)
(2), (3)
表 10-5 : 特殊寄存器的复位条件
上电复位
正常工作时的 MCLR
休眠时的 MCLR
休眠时的 WDT
正常工作时的 WDT 复位
在引脚电平发生变化时从休眠模式唤醒
比较器变化从休眠唤醒
图注: u = 不变, x = 未知,- = 未用位 (读为 0)。
复位
复位
STATUS 地址:03h PCL 地址:02h
0001 1xxx 1111 1111
000u uuuu 1111 1111
0001 0uuu 1111 1111
0000 0uuu 1111 1111
0000 uuuu 1111 1111
1001 0uuu 1111 1111
0101 0uuu 1111 1111
DS41268A_CN 第 62 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
10.3.1 MCLR 使能
此配置位在未编程时(状态为 1 )会使能外部 MCLR 功
能引脚。在已编程时, MCLR 功能引脚将连接到内部
V DD 并且分配该引脚为 I/O 引脚。请参见图 10-7 。
图 10-7 : MCLR 选择
GPWU/RBWU
(GP3/RB3)/MCLR/VPP
MCLRE
内部 MCLR
10.4 上电复位 ( POR)
PIC12F510/16F506 器件采用了一个片上上电复位
(POR )电路,此电路为大部分上电情况提供内部芯片
复位。
片上上电复位电路将芯片保持在复位状态,直到 V
升到足以正常工作的电平。要利用内部上电复位,可以
将(GP3/RB3) /MCLR/VPP 引脚编程为 MCLR 引脚,
并通过一个电阻将此引脚连接到 V
程为(GP3/RB3 )。使用一个晶体管(上拉电阻范围请
参见表 13-4 )来实现内部弱上拉电阻。这将省掉产生上
电复位通常所需要的外部 RC 组件。指定了 VDD 的最大
上升时间。如需详细信息,请参见第 13.0 节 “电气规
范”。
当器件开始正常工作时 (退出复位条件),器件工作参
数 (电压、频率和温度)必须符合一定的条件以保证正
常工作。如果不符合这些条件,器件必须被保持在复位
状态,直到符合工作参数要求为止。
DD,或者将此引脚编
DD 上
图 10-8 所示为片上上电复位电路的简化框图。
上电复位电路和器件复位定时器 (见第 10.5 节“器件
复位定时器 (DRT )”)电路是紧密相关的。上电时,
复位锁存器置 1 且 DRT 被复位。DRT 定时器一旦检测
到 MCLR
它将使复位锁存器复位,从而结束片上复位信号。
图 10-9 所示为一个 MCLR
时示例。在 MCLR
升并保持稳定。在 MCLR
际上会延时 T
在图 10-10 中,使用片上上电复位功能(MCLR
V
DD 被连接在一起或者 MCLR 引脚被编程为 GP3/
RB3)。 VDD 在起振定时器超时溢出前趋于稳定并且能
够正常复位。但是,图 10-11 描述了一个当 V
于缓慢时出现的问题。从 DRT 检测到 MCLR
电平到 MCLR 和 VDD 实际上达到其最大值之间的时间
过长。在这种情况下,当起振定时器延时结束时, VDD
尚未达到 VDD 最小值,芯片可能无法正常运行。如果发
生这种情况,建议使用外部 RC 电路以延长上电复位延
时(图10-10 )。
注: 当器件开始正常工作时(退出复位条件),
更多信息,请参见应用笔记 AN522 “Power-Up
Considerations
Trouble Shooting”(DS00607 )。
引脚为高电平就开始计数。在延时周期之后,
引脚保持为低电平的上电延
引脚变为高电平之前,允许 VDD 上
引脚变为高电平之后,芯片实
DRT ms 才退出复位。
引脚和
DD 上升过
引脚为高
器件工作参数 (电压、频率、温度等)必
须符合一定的条件以保证正常工作。如果
不符合这些条件,那么器件必须保持在复
位状态,直到符合工作条件为止。
”
(DS00522 )和 AN607 “Power-up
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 63 页
PIC12F510/16F506
图 10-8: 片上复位电路的简化框图
VDD
上电
检测
(GP3/RB3)/MCLR/VPP
POR(上电复位)
MCLR
复位
SQ
S
Q
MCLRE
WDT 超时溢出
引脚电平变化
休眠模式
比较器变化
比较器变化时
唤醒
WDT 复位
在引脚电平变化复位时唤醒
图 10-9 : 上电时的延时序列 (MCLR
VDD
MCLR
内部上电复位
DRT 延时
内部复位
拉为低电平)
起振定时器
(10 ms 、1.125 ms
或 18 ms )
R
R
TDRT
Q
Q
芯片复位
图 10-10 : 上电时的延时序列 (MCLR
VDD
MCLR
内部上电复位
延时
DRT
内部复位
DS41268A_CN 第 64 页 初稿 2006 Microchip Technology Inc.
连接到 VDD ): 快 速 VDD 上升时间
TDRT
PIC12F510/16F506
图 10-11: 上电时的延时序列 ( MCLR 连接到 VDD ): 缓 慢 VDD 上升时间
V1
VDD
MCLR
内部上电复位
延时
DRT
内部复位
注: 当 VDD 上升缓慢时,在 VDD 达到其最终值前 TDRT 延时早就结束了。在此示例中,当且仅
当 V1 ≥ V
DD 最小值时,芯片会正确复位。
TDRT
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 65 页
PIC12F510/16F506
10.5 器件复位定时器 ( DRT)
在 PIC12F510/16F506 器件上,每次当器件上电时 DRT
都会运行。DRT 从复位开始运行并且随着振荡器选择和
复位类型的不同而有所不同 (见表 10-6 )。
DRT 用内部 RC 振荡器作为时钟来工作。只要 DRT 是
活动的,处理器就保持在复位状态。DRT 延时使 V
升到 VDD 最小值以上,并使振荡器达到稳定。
基于晶体振荡器或陶瓷谐振器的振荡电路在上电后需要
一段时间来建立稳定的振荡。如表 10-6 所示,在 MCLR
达到逻辑高电平(VIH MCLR )之后,片上 DRT 会将器
件保持一段时间的复位。在大多数情况下,不要求将
(GP3/RB3)/MCLR
络连接到 MCLR
控制严格的应用中节省开支和空间,并且允许将(GP3/
RB3) /MCLR/VPP 引脚用作通用输入引脚。
DD、温度和制造工艺的不同,芯片之间的器件
由于 V
DRT 延时也各不相同。详情请参见 AC 参数。
看门狗定时器从休眠状态超时溢出也会触发 DRT 。这 对
于使用 WDT 从休眠模式自动唤醒的应用特别重要。
复位源有 POR 、 MCLR
醒和比较器变化唤醒。请参见第 10.9.2 节 “从休眠模
式唤醒”中的注 1 、 2 和 3。
/V PP 编程为 MCLR 或使用外部RC 网
输入引脚。这可以在对成本和 / 或空间
、 WDT 超时、引脚电平变化唤
DD 上
10.6 看门狗定时器 (WDT )
看门狗定时器(WDT )是自由运行的片上 RC 振荡器,
它不需要任何外部组件。此 RC 振荡器独立于 (GP5/
RB5) /OSC1/CLKIN 引脚外接的 RC 振荡器和内部 4/
8MHz 振荡器。这意味着即使主处理器时钟已经停止
(如通过执行 SLEEP 指令) WDT 将仍然运行。在正常
工作或休眠过程中, WDT 复位或唤醒复位都会产生器
件复位。
位(STATUS<4>)将在看门狗定时器复位时清零。
TO
可以通过将配置位 WDTE 编程为 0 来永久禁止 WDT 。
如需确定访问配置字的方法,请参见 “PIC12F510/
16F506 Programming Specifications ”。
表 10-6 :典 型DRT 周期
振荡器配置 上电复位 后续复位
LP 18 ms 18 ms
XT 18 ms 18 ms
(1)
HS
(1)
EC
INTOSC 1.125 ms 10 µs
EXTRC 1.125 ms 10 µs
注 1 : 仅 PIC16F506 。
注: 应用设计人员负责确保使用 1.125 ms (标
称值) DRT 时可实现正确的操作。请参见
电气规范了解该模式下对 V
稳定性的要求。
18 ms 18 ms
1.125 ms 10 µs
DD 上升时间和
10.6.1 WDT 周期
WDT 的正常超时溢出周期为 18 ms(没有预分频器)。
如果需要更长的超时溢出周期,可以通过写选项寄存器
为 WDT(在软件控制下)分配一个分频比最高为 1:128
的预分频器。因此,可以实现一个正常的 2.3 秒超时溢
出周期。此周期根据温度、V
工艺而有所不同 (见直流规范)。
在最坏的情况下 (V
WDT 预分频比最大),在发生 WDT 超时溢出之前会有
几秒钟的延迟。
DD = 最小值、温度 = 最大值并且
DD 以及各器件的不同制造
10.6.2 WDT 编程注意事项
CLRWDT 指令将清零 WDT 和后分频器 (如果将后分频
器分配给 WDT ),并阻止它超时溢出和产生器件复位。
SLEEP 指令将复位 WDT 和后分频器(如果将后分频器
分配给 WDT )。这将在 WDT 唤醒复位之前提供一个最
大休眠时间。
DS41268A_CN 第 66 页 初稿 2006 Microchip Technology Inc.
图 10-12 : 看门狗定时器框图
来自 Timer0 时钟源
(图 6-5 )
看门狗
定时器
PIC12F510/16F506
0
M
1
U
X
后 分频器
后分频器
8 选 1 MUX
WDTE
注 1 : T0CS、 T0SE、 PSA 和 PS<2:0> 均为选项寄存器中的位。
PSA
0
WDT 超时溢出
1
MUX
表 10-7 : 与看门狗定时器相关的寄存器汇总
地址 名称
N/A OPTION
N/A OPTION
图注: 看门狗定时器不使用阴影单元。- = 未用 (读为 0 ), u = 不变。
注 1 : 仅 PIC12F510 。
2: 仅 PIC16F506 。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
(1)
GPWU GPPU T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
(2)
RBWU RBPU T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
PS<2:0>
到 Timer0
PSA
(图 6-4 )
上电复位
时的值
其他复位
时的值
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 67 页
PIC12F510/16F506
10.7 超时序列、掉电和从休眠唤醒状态位
(TO
、 PD 和 GPWUF/RBWUF )
可以通过测试状态寄存器中的 TO 、 PD 和(GPWUF/
RBWUF )位来确定是否上电条件、 MCLR
或看门狗定
时器 (WDT )复位已经导致复位条件产生。
表 10-8 : 复位后的 TO/PD/ (GPWUF/
RBWUF)状态
CWUF
图注: u = 不变
GPWUF/
RBWUF
000 0
000 u
001 0
001 1
00u u
011 0
101 0
TO
PD
导致复位的原因
WDT 从休眠模式唤醒
WDT 超时溢出 (不是从
休眠模式唤醒)
MCLR
从休眠模式唤醒
上电延时
非休眠期间的 MCLR
在引脚电平发生变化时从
休眠模式唤醒
在比较器电平发生变化时
从休眠模式唤醒
10.8 欠压复位
欠压是这样一种情况,即器件电压 (VDD )下降到最小
值以下,但不为零,然后恢复。器件应该在发生欠压事
件时复位。
要在发生欠压时复位 PIC12F510/16F506 器件,可以建
立外部欠压保护电路,如图 10-13 和图 10-14 所示。
图 10-14 : 欠压保护电路 2
VDD
VDD
R1
Q1
MCLR
R2
注 1 : 此欠压电路虽然精度较低,但相对较便宜。
当 V
DD 低于以下公式计算出的电平时,晶体
管 Q1 关闭。
DD •
V
2 : 引脚必须被配置为 MCLR
40k
R1
R1 + R2
(1)
。
(2)
= 0.7V
PIC12F510
PIC16F506
图 10-15: 欠压保护电路 3
VDD
MCP809
VSS
RST
VDD
旁路
电容
VDD
MCLR
PIC12F510
PIC16F506
图 10-13: 欠压保护电路 1
VDD
VDD
33k
Q1
40k
MCLR
(1)
10k
注 1 : 当 VDD 低于 Vz + 0.7V (其中 Vz = 齐纳电压)
时,此电路将激活复位。
2: 引脚必须被配置为 MCLR
PIC12F510
PIC16F506
(2)
。
注: 欠压保护电路使用 Microchip Technology 的
MCP809 单片机监控器。有 7 种不同的跳变点
供选择以适应 5V 到 3V 的系统。
DS41268A_CN 第 68 页 初稿 2006 Microchip Technology Inc.
10.9 掉电模式 (休眠)
PIC12F510/16F506
器件可以掉电(休眠)然后再上电(从休眠模式唤醒)。
10.9.1 休眠模式
可以通过执行 SLEEP 指令进入掉电模式。
使能时,看门狗定时器将被清零但仍然保持运行,TO
(STATUS<4>)被 置 1,PD 位(STATUS<3>)被清零
并且振荡器驱动器被关闭。I/O 端口保持 SLEEP 指令执
行前的状态(驱动为高电平、驱动为低电平或高阻态)。
注: WDT 超时溢出所产生的复位不会将 MCLR
引脚驱动为低电平。
为了使掉电时电流消耗最低, T0CKI 输入电平应该为
DD 或 V SS,而且在 MCLR 使能时,(GP3/RB3) /
V
MCLR
/VPP 引脚电平必须为逻辑高电平。
位
10.9.2 从休眠模式唤醒
器件可以通过以下事件之一从休眠模式唤醒:
1. 当配置为 MCLR
引脚上发生外部复位输入。
2. 看门狗定时器超时溢出复位(如果 WDT 使能)。
3. 当使能了电平变化时唤醒时,输入引脚 GP0/
RB0、 GP1/RB1、 GP3/RB3 或 RB4 上发生电平
变化。
4. 比较器输出位 C1OUT 和 C2OUT 变化 (如果比
较器唤醒使能)。
这些事件都将导致器件复位。可以使用 TO
CWUF 和 GPWUF/RBWUF 位来确定器件复位的原因。
如果发生 WDT 超时溢出 (并引起唤醒), TO 位被清
零。 PD 位在上电时置 1 ,在调 用 SLEEP 时清零。
GPWUF/RBWUF 位表示休眠时 GP0/RB0、GP1/RB1、
GP3/RB3 或 RB4 引脚状态的变化 (从 GP/RB 端口上
最后一次寄存器或位操作之后)。
注: 提醒:请在进入休眠模式之前,读取输入
引脚。当器件处于休眠模式时,引脚上的
值从上次读该引脚时的的状态发生改变
时,就会发生唤醒。如果发生电平变化时
唤醒,并且引脚在进入休眠模式前未被读
取,即使在休眠模式中没有引脚发生变
化,也会立即发生唤醒。
时,(GP3/RB3 ) /MCLR/VPP
、 PD 、
注 1 :提醒:请在进入休眠模式之前,读比较器
配置寄存器 CM1CON0 和 CM2CON0
当器件处于休眠模式时,当比较器输出位
C1OUT 和 C2OUT
生改变时,就会发生唤醒。如果发生比较
器电平变化时唤醒,并且引脚在进入休眠
模式前未被读取,即使在休眠模式中没有
引脚发生变化,也会立即发生唤醒。
2 : 仅 PIC16F506 。
不管是什么引起唤醒,当器件从休眠模式唤醒时,WDT
都将被清零。
(1)
从上次读取的状态发
(1)
。
10.10 程序校验和代码保护
如果代码保护位未被编程,验证时可以读出片上程序存
储器。
不管代码保护位的设置如何,都可以读前 64 个单元和
最后一个单元 (OSCCAL )。
不管是否在 PIC12F510/16F506 器件上设置了代码保护
位,都可以读最后一个存储器单元。
10.11 ID 单元
有四个存储单元指定为 ID 单元,用户可将校验和和其他
代码标识号存储其中。在正常执行过程中这些单元不可
访问,但是在编程 / 校验过程中这些单元可读写。
仅使用 ID 单元的低 4 位并总是将高 8 位编程为 0 。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 69 页
PIC12F510/16F506
10.12 在线串行编程 ( ICSP™)
PIC12F510/16F506 单片机可在最终应用电路中被串行
编程。只需要 5 根线即可完成这一操作,其中时钟线、
数据线各一根,其余 3 根分别是电源线、接地线和编程
电压线。这使用户可使用未编程的器件制造电路板,而
仅在产品交付前才对单片机进行编程。这样还可以将最
新的固件或定制的固件编程到器件中。
通过将 MCLR
同时将 GP1/RB1 和GP0/RB0 引脚的电平保持为低电平
可将器件保持在编程 / 校验模式 (见编程规范)。此时
GP1/RB1 成为编程时钟而 GP0/RB0 成为编程数据。在
此模式中 GP1/RB1 和 GP0/RB0 都是施密特触发器输
入。
复位之后,为器件提供一条 6 位的命令。根据命令,可
以为器件提供 14 位程序数据或者由器件提供 14 位程序
数据,这取决于命令是一条载入命令还是一条读取命
令。欲知串行编程的完整细节,请参见 PIC12F510/
16F506 编程规范。
图 10-16 所示为典型的在线串行编程连接。
(VPP )引脚的电平从 VIL 拉升到 VIHH ,
图 10-16 : 典型在线串行编程连接
到正常连接
外部
连接器
信号
+5V
V
CLK
数据 I/O
0V
PP
到正常连接
PIC12F510
PIC16F506
V
DD
VSS
MCLR/VPP
GP1/RB1
GP0/RB0
DD
V
DS41268A_CN 第 70 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
11.0 指令集综述
PIC16 指令集具有高度正交性,分为以下三种基本类
型:
• 字节操作类指令
• 位操作类指令
• 立即数和控制操作类指令
每条 PIC16 指令都是 12 位字的,由操作码(指定指令
类型)和一个或多个操作数 (指定指令操作)组成。图 11 -1
中显示了每种指令类型的格式,而表 11-1 总结了各种操
作码字段。
对于字节操作指令,“f ”为代表文件寄存器的指示符,
而“d”为代表目标寄存器的指示符。文件寄存器指示
符指定指令将会使用哪一个文件寄存器。
目标寄存器指示符指定操作结果的存放位置。如果“d ”
为 0 ,结果存放在 W 寄存器中。如果 “d ”为 1 ,结果
存放在指令指定的文件寄存器中。
对于位操作类指令,“b ”为代表位域的指示符,用于选
择操作所影响的位,而 “f ”则代表相应位所在的寄存
器的地址。
对于立即数和控制操作类指令,“k ”代表一个 8 位或 9
位常数或立即数值。
表 11-1 : 操作码字段说明
字段 说明
f
文件寄存器地址 (0x00 到 0x7F )
W
工作寄存器 (累加器)
b
8 位文件寄存器内的位地址
k
立即数字段、常数或标号
x
与取值无关的单元 (= 0 或 1 )。
汇编器将生成 x = 0 的代码。为了与所有的
Microchip 软件工具兼容,建议使用这种形式。
d
目标选择;
d = 0 (将结果保存在 W 寄存器中)
d = 1 (将结果保存在文件寄存器 f 中)
默认 d = 1
label
dest 目标寄存器,可以是 W 寄存器也可以是文件寄存
[ ]
( )
标号名
TOS
栈顶
PC
程序计数器
WDT
看门狗定时器计数器
TO
超时溢出位
PD
掉电位
器
选项
内容
→
赋值给
< >
寄存器位域
∈
属于指定的集合
斜体
用户定义项 (字体为 courier )
所有指令都在一个指令周期内执行,除非条件测试为真
或者指令执行改变了程序计数器的值。当上述特殊情况
发生时,指令的执行就需要两个指令周期。每个指令周
期由 4 个振荡周期组成。因此,对于频率为 4 MHz 的振
荡器,其正常的指令执行时间为 1 µ s 。如果条件测试为
真或者指令执行改变了程序计数器的值,那么指令的执
行时间将为 2 µ s 。
图 11-1 显示指令可具有的 3 种一般格式。图中的所有示
例都使用以下格式来表示一个 16 进制数:
0xhhh
其中 h 代表一个 16 进制数字。
图 11-1 : 指令的一般格式
面向字节的文件寄存器操作
11 6 5 4 0
操作码 d f(文件寄存器地址)
d = 0 表示结果存入 W 寄存器
d = 1 表示结果存入文件寄存器 f
f = 5 位文件寄存器地址
面向位的文件寄存器操作
11 8 7 5 4 0
操作码 b(位地址)f(文件寄存器地址)
b = 3 位位地址
f = 5 位文件寄存器地址
立即数和控制操作(GOTO 除外)
11 8 7 0
操作码 k(立即数)
k = 8 位立即数值
立即数和控制操作——GOTO 指令
11 9 8 0
操作码 k(立即数)
k = 9 位立即数值
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 71 页
PIC12F510/16F506
表 11- 2 : 指令集汇总
助记符,操作数 说明 周期数
ADDWF
ANDWF
CLRF
CLRW
COMF
DECF
DECFSZ
INCF
INCFSZ
IORWF
MOVF
MOVWF
NOP
RLF
RRF
SUBWF
SWAPF
XORWF
BCF
BSF
BTFSC
BTFSS
ANDLW
CALL
CLRWDT
GOTO
IORLW
MOVLW
OPTION
RETLW
SLEEP
TRIS
XORLW
注 1 : 除 GOTO 之外的任何写 PC 的指令都将把程序计数器的第 9 位强制为 0 。请参见第 4.6 节 “程序计数
f, d
W 和 f 相加
f, d
W 和 f 作逻辑与运算
f
将 f 清零
—
将 W 寄存器清零
f, d
f 取反
f, d
f 减 1
f, d
f 减 1,为 0 则跳过
f, d
f 增 1
f, d
f 增 1,为 0 则跳过
f, d
W 和 f 作逻辑或运算
f, d
将 f 的内容送到目标寄存器
f
将 W 的内容传送到 f
—
空操作
f, d
对 f 执行带进位的循环左移
f, d
对 f 执行带进位的循环右移
f, d
f 减去 W
f, d
将 f 中的两个半字节进行交换
f, d
W 和 f 作逻辑异或运算
面向位的文件寄存器操作
f, b
将 f 中的某位清零
f, b
将 f 中的某位置 1
f, b
检测 f 中的某位,为 0 则跳过
f, b
检测 f 中的某位,为 1 则跳过
立即数和控制操作
k
立即数与 W 作逻辑与运算
k
调用子程序
—
清零看门狗定时器
k
无条件跳转
k
立即数与 W 作逻辑或运算
k
将立即数传送到 W
装载 OPTION 寄存器
—
k
返回并将立即数传送到 W
—
进入待机模式
装载 TRIS 寄存器
f
k
立即数与 W 作逻辑异或运算
器”。
2 : 当 I/O 寄存器用自身内容修改自身时 (例如: MOVF PORTB, 1 ),使用的值是出现在引脚上的值。例
如,如果将一引脚配置为输入,虽然其对应数据锁存器中的值为 1 ,但此时若有外部器件将该引脚驱动
为低电平,则被写回的数据值将是 0 。
3 : 指令 TRIS f (其中 f = 6 )会将 W 寄存器的内容写入 PORTB 的三态锁存器。若写入的值为 1 ,将强
制引脚为高阻态,并且禁止输出缓冲器。
4 : 当对 TMR0 寄存器 (并且 d = 1 )执行这条指令时,如果将预分频器分配给 TMR0,则将其清零。
1
1
1
1
1
1
(2)
1
1
(2)
1
1
1
1
1
1
1
1
1
1
1
1
(2)
1
(2)
1
1
2
1
2
1
1
1
2
1
1
1
12 位操作码
MSb LSb
0001
0001
0000
0000
0010
0000
0010
0010
0011
0001
0010
0000
0000
0011
0011
0000
0011
0001
0100
0101
0110
0111
1110
1001
0000
101k
1101
1100
0000
1000
0000
0000
1111
11df
01df
011f
0100
01df
11df
11df
10df
11df
00df
00df
001f
0000
01df
00df
10df
10df
10df
bbbf
bbbf
bbbf
bbbf
kkkk
kkkk
0000
kkkk
kkkk
kkkk
0000
kkkk
0000
0000
kkkk
ffff
ffff
ffff
0000
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
0000
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
kkkk
kkkk
0100
kkkk
kkkk
kkkk
0010
kkkk
0011
0fff
kkkk
受影响的
状态位
C、 DC 和 Z
Z
Z
Z
Z
Z
无
Z
无
Z
Z
无
无
C
C
C、 DC 和 Z
无
Z
无
无
无
无
Z
无
和 PD
TO
无
Z
无
无
无
和 PD
TO
无
Z
注
1, 2, 4
2, 4
4
2, 4
2, 4
2, 4
2, 4
2, 4
2, 4
1, 4
2, 4
2, 4
1, 2, 4
2, 4
2, 4
2, 4
2, 4
1
3
DS41268A_CN 第 72 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
ADDWF
语法: [
操作数:
操作: (W) + (f) → ( 目标寄存器 )
受影响的状态位:C、 DC 和 Z
说明: 将 W 寄存器的内容与 f 寄存器的内
ANDLW
语法: [
操作数:
操作: (W) .AND.(k) → (W)
受影响的状态
位:
说明: 将 W 寄存器的内容与 8 位立即数 k
W 和 f 相加
标号
] ADDWF f, d
0 ≤ f ≤ 31
d ∈ [ 0,1]
容相加。如果 d 等于 0 ,结果存放
在 W 寄存器中。如果 d 为 1 ,结果
存回寄存器 f 。
立即数与 W 作逻辑与运算
标号
] ANDLW k
0 ≤ k ≤ 255
Z
作逻辑与运算。结果存入 W 寄存
器。
BCF
语法: [
操作数:
操作: 0 → (f<b>)
受影响的状态位:无
说明: 将寄存器 f 中的位 b 清零。
BSF
语法: [
操作数:
操作: 1 → (f<b>)
受影响的状态位: 无
说明: 将寄存器 f 的位 b 置 1 。
将 f 中的某位清零
标号
] BCF f, b
0 ≤ f ≤ 31
0 ≤ b ≤ 7
将 f 中的某位置 1
标号
] BSF f,b
0 ≤ f ≤ 31
0 ≤ b ≤ 7
ANDWF
语法: [
操作数:
操作: (W) .AND.(f) → ( 目标寄存器 )
受影响的状态位:
说明: W 寄存器与 f 寄存器作逻辑与运算。如
W 和 f 作逻辑与运算
标号
] ANDWF f, d
0 ≤ f ≤ 31
d ∈ [ 0,1]
Z
果 d 等于 0,结果存放在 W 寄存器中。
如果 d 为 1,结果存回寄存器 f。
BTFSC
语法: [
操作数:
操作: 如果 (f<b>) = 0 则跳过
受影响的状态位: 无
说明: 如果 f 寄存器中的位 b 为 1 ,则执
检测 f 中的某位,为 0 则跳过
标号
] BTFSC f,b
0 ≤ f ≤ 31
0 ≤ b ≤ 7
行下一条指令。
如果 f 寄存器中的位 b 为 0 ,则丢
弃下一条指令,转而执行一条 NOP
指令,从而使该指令成为双周期指
令。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 73 页
PIC12F510/16F506
BTFSS
语法: [
操作数:
操作: 如果 (f<b>)= 1 则跳过
受影响的状态位: 无
说明:如果 f寄存器中的位 b为0,则执
CALL
语法: [
操作数:
操作: (PC)+ 1 → 栈顶,
受影响的状态位: 无
说明: 调用子程序。首先,将返回地址
检测 f 中的某位,为 1 跳过
标号
] BTFSS f,b
0 ≤ f ≤ 31
0 ≤ b < 7
行下一条指令。如果位 b 为 1 ,则
丢弃在当前指令执行时所取的下一
条指令,转而执行一条 NOP 指令,
从而使该指令成为双周期指令。
调用子程序
标号
] CALL k
0 ≤ k ≤ 255
k → PC<7:0>,
(STATUS<6:5>) → PC<10:9>
0 → PC<8>
(PC + 1 )压入堆栈。 8 位立即数
地址被装入 PC<7:0> 。将
STATUS<6:5> 装入 PC<10:9> 。 CALL
是双周期指令。
CLRW
语法: [
操作数: 无
操作: 00h → (W)
受影响的状态位:
说明: W 寄存器被清零。全零标志位
CLRWDT
语法: [
操作数: 无
操作: 00h → WDT
受影响的状态位: TO 和 PD
说明: CLRWDT 指令复位 WDT 。如果将预
将 W 寄存器清零
标号
] CLRW
1 → Z
Z
(Z )置 1 。
清零看门狗定时器
标号
] CLRWDT
0 → WDT 预分频器 (如果分配)
1 → TO
1 → PD
分频器分配给 WDT 而不是
Timer0,该指令还将复位该预分频
器。状态位 TO
和 PD 置 1 。
CLRF
语法: [
操作数:
操作: 00h → (f)
受影响的状态位:
说明: 寄存器 f 的内容被清零, Z 位置 1 。
将 f 清零
标号
] CLRF f
0 ≤ f ≤ 31
1 → Z
Z
COMF
语法: [
操作数:
操作: (f
受影响的状态位:
说明: 将寄存器 f 的内容取反。如果 d 为
f 取反
标号
] COMF f,d
0 ≤ f ≤ 31
d ∈ [0,1]
) → ( 目标寄存器 )
Z
0,结果存入 W 寄存器。如果 d 为
1,结果存回寄存器 f 。
DS41268A_CN 第 74 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
DECF
语法: [
操作数:
操作: (f) – 1 → ( 目标寄存器 )
受影响的状态位:
说明: 将寄存器 f 的内容减 1 。如果 d 为
DECFSZ
语法: [
操作数:
操作: (f) – 1 → ( 目标寄存器 ) ;
受影响的状态位: 无
说明: 将寄存器 f 的内容减 1 。 如果 d 为
f 减 1
标号
] DECF f,d
0 ≤ f ≤ 31
d ∈ [0,1]
Z
0 ,结果存储到 W 寄存器。如果 d
为 1 ,结果存回寄存器 f 。
f 减 1 ,为 0 则跳过
标号
] DECFSZ f,d
0 ≤ f ≤ 31
d ∈ [0,1]
结果为 0 时跳过
0,结果存放在 W 寄存器中。如果
d 为 1 ,结果存回寄存器 f 。
如果结果为 0 ,则丢弃已经取指的
指令而执行一条 NOP 指令,使该指
令成为双周期指令。
INCF
语法: [
操作数:
操作: (f) + 1 → ( 目标寄存器 )
受影响的状态位:
说明: 将寄存器 f 的内容增 1 。如果 d 为
INCFSZ
语法: [
操作数:
操作: (f) + 1 → ( 目标寄存器 ),结果为 0
受影响的状态位: 无
说明: 将寄存器 f 的内容增 1 。如果 d 为
f 增 1
标号
] INCF f,d
0 ≤ f ≤ 31
d ∈ [0,1]
Z
0 ,结果存放在 W 寄存器中。如果
d 为 1 ,结果存回寄存器 f。
f 增 1 ,为 0 则跳过
标号
] INCFSZ f,d
0 ≤ f ≤ 31
d ∈ [0,1]
时跳过
0 ,结果存放在 W 寄存器中。如果
d 为 1 ,结果存回寄存器 f。
如果结果为 0 ,则丢弃已经取指的
指令而执行一条 NOP 指令,使该指
令成为双周期指令。
GOTO
语法: [
操作数:
操作: k → PC<8:0>
受影响的状态位: 无
说明: GOTO 是无条件跳转指令。 9 位立
无条件跳转
标号
] GOTO k
0 ≤ k ≤ 511
STATUS<6:5> → PC<10:9>
即数地址被装入 PC<8:0> 。 PC 高
位从 STATUS<6:5> 装入。 GOTO
是双周期指令。
IORLW
语法: [
操作数:
操作: (W) .OR. k → (W)
受影响的状态
位:
说明: 将 W 寄存器的内容与 8 位立即数 k
立即数与 W 作逻辑或运算
标号
] IORLW k
0 ≤ k ≤ 255
Z
作逻辑或运算。结果存入 W 寄存
器。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 75 页
PIC12F510/16F506
IORWF
语法: [
操作数:
操作: (W) .OR.(f) → ( 目标寄存器 )
受影响的状态位:
说明: W 寄存器与 f 寄存器作逻辑或运
MOVF
语法: [
操作数:
操作: (f) → ( 目标寄存器 )
受影响的状态位:
说明: 根据 d 的状态,将寄存器 f 的内容
将 W 和 f 作逻辑或运算
标号
] IORWF f,d
0 ≤ f ≤ 31
d ∈ [0,1]
Z
算。 如果 d 为 0 ,结果存放在 W
寄存器中。如果 d 为 1 ,结果存回
寄存器 f 。
将 f 的内容送到目标寄存器
标号
] MOVF f,d
0 ≤ f ≤ 31
d ∈ [0,1]
Z
送入目标寄存器。如果 d 为 0 ,目
标寄存器为 W 寄存器。如果 d 为
1 ,目标寄存器为寄存器 f 。由于状
态标志位 Z 受到指令结果的影响,
d = 1 可用于检测文件寄存器。
MOVWF
语法: [
操作数:
操作: (W) → (f)
受影响的状态位: 无
说明: 将 W 寄存器中的数据传送到寄存
NOP
语法: [
操作数: 无
操作: 空操作
受影响的状态位: 无
说明: 不执行任何操作。
将 W 的内容传送到 f
标号
] MOVWF f
0 ≤ f ≤ 31
器 f 。
空操作
标号
] NOP
MOVLW
语法: [
操作数:
操作: k → (W)
受影响的状态位: 无
说明: 将 8 位立即数 k 装入 W 寄存器。
将立即数传送到 W
标号
] MOVLW k
0 ≤ k ≤ 255
“无关位”被汇编为 0
。
OPTION
语法: [
操作数: 无
操作: (W) → 选项寄存器
受影响的状态位: 无
说明: 将 W 寄存器的内容装载到选项寄存
装载选项寄存器
标号
] OPTION
器。
DS41268A_CN 第76 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
RETLW
语法: [
操作数:
操作: k → (W)
受影响的状态位: 无
说明: 将 8 位立即数 k 装入 W 寄存器。栈
RLF
语法: [
操作数:
操作: 参见下面的说明
受影响的状态位:
说明: 将寄存器 f 的内容连同进位标志位
返回并将立即数传送到 W
标号
] RETLW k
0 ≤ k ≤ 255
TOS → PC
顶内容 (返回地址)被装入程序计
数器。这是一条双周期指令。
对 f 执行带进位的循环左移
标号
]
0 ≤ f ≤ 31
d ∈ [0,1]
C
一起左移 1 位。如果 d 为 0 ,结果
存放在 W 寄存器中。如果 d 为 1 ,
结果存回寄存器 f 。 `
R L F f, d
寄存器 fC
SLEEP
语法: [
操作数: 无
操作: 00h → WDT ,
受影响的状态位: TO 、 PD 和 RBWUF
说明: 超时状态位 (TO )位置 1 。掉电状
SUBWF
语法: [
操作数:
操作: (f) – (W) → ( 目标寄存器 )
受影响的状态位: C 、 DC 和 Z
说明: 从寄存器 f 中减去 W 寄存器的内容
进入休眠模式
标号
0 → WDT 预分频器,
1 → TO
0 → PD
态位 ( PD)清零。
RBWUF 不受影响。
WDT 及其预分频器被清零。
振荡器停振,处理器进入休眠模
式。欲知有关休眠的详细信息,请
参见第 10.9 节 “掉电模式 (休
眠)”。
f 减去 W
标号
0 ≤ f ≤ 31
d ∈ [0,1]
(采用 2 的补码方法进行运算)。
如果 d 为 0 ,结果存储到 W 寄存
器。如果 d 为 1 ,结果存回寄存器
f。
SLEEP
]
,
SUBWF f,d
]
RRF
语法: [
操作数:
操作: 参见下面的说明
受影响的状态位:
说明: 将寄存器 f 的内容连同进位标志位
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 77 页
对 f 执行带进位的循环右移
标号
] RRF f,d
0 ≤ f ≤ 31
d ∈ [0,1]
C
一起右移 1 位。 如果 d 为 0 ,结果
存放在 W 寄存器中。如果 d 为 1 ,
结果存回寄存器 f 。
寄存器 f C
SWAPF
语法: [
操作数:
操作: (f<3:0>) → ( 目标寄存器 <7:4>) ,
受影响的状态位: 无
说明: 将寄存器 f 的高半字节和低半字节
将 f 中的两个半字节交换
标号
0 ≤ f ≤ 31
d ∈ [0,1]
(f<7:4>) → ( 目标寄存器 <3:0>)
交换。如果 d 为 0 ,结果存放在 W
寄存器中。如果 d 为 1 ,结果存回
寄存器 f 。
SWAPF f,d
]
PIC12F510/16F506
TRIS
语法: [
操作数:
操作: (W) → TRIS 寄存器 f
受影响的状态位:无
说明: 使用 W 寄存器的内容装载 TRIS 寄
XORLW
语法: [
操作数:
操作: (W).XOR. k → (W)
受影响的状态
位:
说明: 将 W 寄存器的内容与 8 位立即数 k
装载 TRIS 寄存器
标号
f = 6
存器 f (f = 6 或 7 )。
立即数与 W 作逻辑异或运算
标号
0 ≤ k ≤ 255
Z
作逻辑异或运算。结果存入 W 寄
存器。
TRIS f
]
XORLW k
]
XORWF
语法: [
操作数:
操作: (W) .XOR.(f) → ( 目标寄存器 )
受影响的状态位:
说明: 将 W 寄存器的内容与 f 寄存器的内
W 和 f 作逻辑异或运算
标号
0 ≤ f ≤ 31
d ∈ [0,1]
Z
容作逻辑异或运算。如果 d 等于
0 ,结果存放在 W 寄存器中。如果
d 为 1 ,结果存回寄存器 f。
XORWF f,d
]
DS41268A_CN 第 78 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
12.0 开发支持
一系列硬件及软件开发工具对 PICmicro ®单片机提供支
持:
• 集成开发环境
- MPLAB
• 汇编器 / 编译器 / 链接器
- MPASM
- MPLAB C18 和 MPLAB C30 C 编译器
-MPLINK
MPLIB
- MPLAB ASM30 汇编器 / 链接器 / 库
• 模拟器
- MPLAB SIM 软件模拟器
• 仿真器
- MPLAB ICE 2000 在线仿真器
- MPLAB ICE 4000 在线仿真器
• 在线调试器
- MPLAB ICD 2
• 器件编程器
-PICSTART
- MPLAB PM3 器件编程器
• 低成本演示和开发板及评估工具包
®
IDE 软件
TM
汇编器
TM
目标链接器 /
TM
目标库管理器
®
Plus 开发编程器
12.1 MPLAB 集成开发环境软件
MPLAB IDE 软件为 8/16 位单片机市场提供了前所未有
的易于使用的软件开发平台。 MPLAB IDE 是基于
Windows®操作系统的应用软件,包括:
• 一个包含所有调试工具的图形界面
- 模拟器
- 编程器 (单独销售)
- 仿真器 (单独销售)
- 在线调试器 (单独销售)
• 具有彩色上下文代码显示的全功能编辑器
• 多项目管理器
• 内容可直接编辑的可定制式数据窗口
• 高级源代码调试
• 可视化器件初始化程序,便于进行寄存器的初始化
• 鼠标停留在变量上进行查看的功能
• 通过拖放把变量从源代码窗口拉到观察窗口
• 丰富的在线帮助
• 集成了可选的第三方工具,如 HI-TECH 软件 C 编
译器和 IAR C 编译器
MPLAB IDE 可以让您:
• 编辑源文件 (汇编语言或 C 语言)
• 点击一次即可完成汇编 (或编译)并将代码下载
到 PICmicro MCU 仿真器和模拟器工具中 (自动
更新所有项目信息)
• 可使用如下各项进行调试:
- 源文件 (汇编语言或 C 语言)
- 混合汇编语言和 C 语言
- 机器码
MPLAB IDE 在单个开发范例中支持使用多种调试工
具,包括从成本效益高的模拟器到低成本的在线调试
器,再到全功能的仿真器。这样缩短了用户升级到更加
灵活而功能更强大的工具时的学习时间。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 79 页
PIC12F510/16F506
12.2 MPASM 汇编器
MPASM 汇编器是全功能通用宏汇编器,适用于所有的
PICmicro MCU。
MPASM 汇编器可生成用于 MPLINK 目标链接器的可重
定位目标文件、Intel
使用状况和符号参考的 MAP 文件、包含源代码行及生
成机器码的绝对 LST 文件以及用于调试的COFF 文件。
MPASM 汇编器具有如下特征:
• 集成在 MPLAB IDE 项目中
• 用户定义的宏可简化汇编代码
• 对多用途源文件进行条件汇编
• 允许完全控制汇编过程的指令
®
标准 HEX 文件、详细描述存储器
12.3 MPLAB C18 和 MPLAB C30
C 编译器
MPLAB C18 和 MPLAB C30 代码开发系统是完全的
ANSI C 编译器,分别适用于 Microchip 的 PIC18 系列
单片机和 dsPIC30F 系列数据信号控制器。这些编译器
可提供其他编译器并不具备的强大的集成功能和出众的
代码优化能力,且使用方便。
为便于源代码调试,编译器提供了针对 MPLAB IDE 调
试器的优化符号信息。
12.4 MPLINK 目标链接器 /
MPLIB 目标库管理器
MPLINK 目标链接器包含了由 MPASM 汇编器、MPLAB
C18 C 编译器产生的可重定位目标。通过使用链接器脚
本中的指令,它还可链接预编译库中的可重定位目标。
MPLIB 目标库管理器管理预编译代码库文件的创建和修
改。当从源文件调用库中的一段子程序时,只有包含此
子程序的模块被链接到应用中。这样可使大型库在许多
不同应用中被高效地利用。
目标链接器 / 库管理器具有如下特征:
• 高效地连接单个的库而不是许多小文件
• 通过将相关的模块组合在一起来增强代码的可维护
性
• 只要列出、替换、删除和抽取模块,便可灵活地创
建库
12.5 MPLAB ASM30 汇编器、
链接器和库管理器
MPLAB ASM30 汇编器为 dsPIC30F 器件提供转换自符
号汇编语言的可重定位机器码。 MPLAB C30 C 编译器
使用该汇编器生成目标文件。汇编器产生可重定位目标
文件之后,可将这些目标文件存档,或与其他可重定位
目标文件和存档链接以生成可执行文件。该汇编器有如
下显著特征:
• 支持整个 dsPIC30F 指令集
• 支持定点数据和浮点数据
• 命令行界面
• 丰富的指令集
• 灵活的宏语言
• MPLAB IDE 兼容性
12.6 MPLAB SIM 软件模拟器
MPLAB SIM 软件模拟器在指令级对 PICmicro MCU 和
®
DSC 进行模拟,使得用户可以在 PC 主机的环
dsPIC
境下进行代码开发。对于任何给定的指令,用户均可对
数据区进行检查或修改,并通过各种触发机制来产生激
励。可以将各寄存器的情况记录在文件中,以便进行进
一步地运行时分析。跟踪缓冲器和逻辑分析器的显示使
模拟器还能记录和跟踪程序的执行、 I/O 的动作以及内
部寄存器的状况。
MPLAB SIM 软件模拟器完全支持使用 MPLAB C18 和
MPLAB C30 C 编译器以及 MPASM和 MAPLAB ASM30
汇编器的符号调试。该软件模拟器可用于在实验室环境
外灵活地开发和调试代码,是一款完美且经济的软件开
发工具。
DS41268A_CN 第 80 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
12.7 MPLAB ICE 2000 高性能在线仿真器
MPLAB ICE 2000 在线仿真器旨在为产品开发工程师提
供一整套用于 PICmicro 单片机的设计工具。 MPLAB
ICE 2000 在线仿真器的软件控制由 MPLAB 集成开发环
境平台提供,它允许在单一环境下进行编辑、编译、下
载以及源代码调试。
MPLAB ICE 2000 是全功能仿真器系统,它具有增强的
跟踪、触发和数据监控功能。处理器模块可插拔,使系
统可轻松进行重新配置以适应各种不同处理器的仿真需
要。MPLAB ICE 2000 在线仿真器的架构允许对其进行
扩展以支持新的 PICmicro 单片机。
MPLAB ICE 2000 在线仿真器系统设计为一款实时仿真
系统,该仿真系统具备通常只有昂贵的开发工具中才有
的高级功能。选择 PC 平台和 Microsoft
位操作系统可使这些功能在一个简单而统一的应用中得
到很好的利用。
®
Windows® 32
12.8 MPLAB ICE 4000 高性能在线仿真器
MPLAB ICE 4000 在线仿真器旨在为产品开发工程师提
供一整套用于高端 PICmicro MCU 和 dsPIC DSC 的设
计工具。 MPLAB ICE 4000 在线仿真器的软件控制由
MPLAB 集成开发环境平台提供,它允许在单一环境下
进行编辑、编译、下载以及源代码调试。
MPLAB ICE 4000 是高级的仿真系统,除具备 MPLAB
ICE 2000 的所有功能外,它还增加了适用于 dsPIC30F
和 PIC18XXXX 器件的仿真存储容量以及高速性能。该
仿真器的先进特性包括复杂触发和定时功能及高达
2Mb的仿真存储容量。
MPLAB ICE 4000 在线仿真系统设计为一款实时仿真系
统,该仿真系统具备通常只有在更加昂贵的开发工具中
才有的高级功能。选择 PC 平台和 Microsoft Windows
32 位操作系统可使这些功能在一个简单而统一的应用
程序中得以很好地利用。
12.9 MPLAB ICD 2 在线调试器
Microchip 的在线调试器 MPLAB ICD 2 是一款功能强大
而成本低廉的运行时开发工具,通过 RS-232 或高速
USB 接口与 PC 主机相连。该工具基于闪存 PICmicro
MCU,可用于开发本系列及其他 PICmicro MCU 和
dsPIC DSC。 MPLAB ICD 2 使用了闪存器件中内建的
在线调试功能。该功能结合 Microchip 的在线串行编程
TM
(ICSP
户界面上提供成本效益很高的在线闪存调试。这使设计
人员可通过设置断点、单步运行以及对变量、CPU 状态
以及外设寄存器进行监视的方法实现源代码的开发和调
试。其全速运行特性可对硬件和应用进行实时测试。
MPLAB ICD 2 还可用作某些 PICmicro 器件的开发编程
器。
)协议,可在 MPLAB 集成开发环境的图形用
12.10 MPLAB PM3 器件编程器
MPLAB PM3 器件编程器是一款通用的、符合 CE 规范
的器件编程器,其可编程电压设置在 VDDMIN 和 VDDMAX
之间时可靠性最高。它有一个用来显示菜单和错误信息
的大 LCD 显示器(128 x 64 ),以及一个支持各种封装
类型的可拆卸模块化插槽装置。编程器标准配置中带有
一根 ICSP
编程器不必与 PC 相连即可对 PICmicro 器件进行读取、
验证和编程。在该模式下它还可设置代码保护。MPLAB
PM3 通过 RS-232 或 USB 电缆连接到 PC 主机上。
MPLAB PM3 具备高速通信能力以及优化算法,可对存
储器很大的器件进行快速编程,它还采用 SD/MMC 卡
用作文件存储及数据安全应用。
TM
电缆。在单机模式下, MPLAB PM3 器件
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 81 页
PIC12F510/16F506
12.11 PICSTART Plus 开发编程器
PICSTART Plus 开发编程器是一款易于使用而成本低廉
的原型编程器。它通过 COM (RS-232 )端口与 PC 相
连。 MPLAB 集成开发环境软件使得该编程器的使用简
便、高效。PICSTART Plus 开发编程器支持采用 DIP 封
装的大部分 PICmicro 器件,其引脚数最多可达 40 个。
引脚数更多的器件,如 PIC16C92X 和 PIC17C76X ,可
通过连接一个转接插槽来获得支持。PICSTART Plus 开
发编程器符合 CE 规范。
12.12 演示、开发和评估板
有许多演示、开发和评估板可用于各种 PICmicro MCU
和 dsPIC DSC ,实现对全功能系统的快速应用开发。大
多数的演示、开发和评估板都有实验布线区,供用户添
加定制电路;还有应用固件和源代码,用于测试和修
改。
这些板支持多种功能部件,包括 LED 、温度传感器、开
关、扬声器、 RS-232 接口、 LCD 显示器、电位计和附
加 EEPROM 存储器。
演示和开发板可用于教学环境,在实验布线区设计定制
电路,从而掌握各种单片机应用。
除了 PICDEM™ 和dsPICDEM™ 演示 / 开发板系列电路
外, Microchip 还有一系列评估工具包和演示软件,适
用于模拟滤波器设计、 K
CAN 、 IrDA®、 PowerSmart ®电池管理、 SEEVAL ®评
估系统、 Σ−∆ ADC 、流速传感器,等等。
有关演示、开发和评估工具包的完整列表,请查阅
Microchip 公司网页 (www.microchip.com )以及最新
“
Product Selector Guide
的
(DS00148 )。
®
EEL OQ
数据安全产品 IC 、
(产品选型指南)”
DS41268A_CN 第 82 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
13.0 电气规范
绝对最大值 †
环境温度...............................................................................................................................................-40°C 至 +125°C
储存温度...............................................................................................................................................-65°C 至 +150°C
DD 相对于 VSS 的电压................................................................................................................................. 0 至 +7.0V
V
相对于 VSS 的电压 .............................................................................................................................. 0 至 +14V
MCLR
其他引脚相对于 V
(1)
总功耗
SS 引脚的最大输出电流.................................................................................................................................... 200 mA
V
DD 引脚的最大输入电流 ...................................................................................................................................150 mA
V
...........................................................................................................................................................700 mW
输入钳位电流 I
输出钳位电流 I
任一 I/O 引脚的最大灌电流 ..................................................................................................................................25 mA
任一 I/O 引脚的最大拉电流 ..................................................................................................................................25 mA
I/O 端口的最大拉电流 .........................................................................................................................................100 mA
I/O 端口的最大灌电流 .........................................................................................................................................100 mA
注 1 : 功耗按如下公式计算: P
SS 的电压 ........................................................................................................... -0.3V 至 (VDD +0.3V)
IK (VI < 0 或 VI > VDD )..........................................................................................................................±20 mA
OK (VO < 0 或 VO > VDD ).....................................................................................................................±20 mA
DIS = V DD x {I DD - ∑ I OH} + ∑ {(V DD-V OH) x IOH } + ∑(VOL x I OL)
† 注意:如果器件工作条件超过上述所列 “绝对最大值”,可能会对器件造成永久性损坏。上述值仅为运行条件极
大值,我们不建议器件在该规范规定的范围以外运行。器件长时间工作在最大值条件下,其稳定性会受到影响。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 83 页
PIC12F510/16F506
图 13-1:
VDD
( V)
PIC12F510 器件的电压—频率关系图 ( -40° C ≤ T
6.0
5.5
5.0
4.5
4.0
3.5
3.0
2.5
2.0
0
41 0
8
频率( MHz)
A ≤ +125° C)
20
25
图 13-2 :
最大振荡频率表 (PIC12F510 )
LP
XT
EXTRC
INTOSC
振荡模式
0 200 kHz 4 MHz
8MHz 20MHz
频率(MHz )
DS41268A_CN 第 84 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
图 13-3:
VDD
(V )
图 13-4 :
PIC16F506 器件的电压—频率关系图 (-40 ° C ≤ T
6.0
5.5
5.0
4.5
4.0
3.5
3.0
2.5
2.0
0
41 0
8
频率(MHz )
最大振荡频率表 (PIC16F506 )
A ≤ +125 ° C )
20
25
EXTRC
INTOSC
振荡模式
LP
XT
EC
HS
0 200 kHz 4 MHz
频率(MHz )
8MHz 20MHz
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 85 页
PIC12F510/16F506
13.1
直流特性:PIC12F510/16F506 (工业级)
标准工作条件 (除非另外声明)
直流特性
参数
编号
D001 V
D002 V
D003 V
符号 特性
DD
电源电压
DR
RAM 数据保存电压
POR
V DD 启动电压确保能够产
工作温度 -40 °C ≤ TA ≤ +85° C (工业级)
A ≤ +125 ° C (扩展级)
请参见图 13-1
器件工作在休眠模式
请参见第 10.4 节 “上电复位 (POR )”
(2)
最小值典型
值
2.0
-
-
-
1.5*
Vss
(1)
-40° C ≤ T
最大
单位 条件
值
5.5 V
-
-
V
V
生上电复位信号
D004 SVDD
D010 I
D020 I
D022 ∆I
D023 ∆I
DD
PD
WDT
CMP
D024 ∆IADC
D025 ∆ IV
D026 ∆ CV
REF
REF
V DD 上升速率确保能够产
生上电复位信号
供电电流
掉电电流
WDT 电流
(3)
(5)
(5)
比较器电流 -
ADC 电流 -
内部参考电流 -
比较器电压参考电流 -
0.05*
-
-
-
-
-
-
--
V/ms
详情请参见第 10.4 节 “上电复位
(POR )”
170 TBD µA
0.4 TBD mA
1.7 TBD mA
15 TBD µA
0.1 TBD µ AV
1.0 TBD µ AV
15 TBD µ AV
100 TBD µ AV
80 TBD µ AV
58 TBD µ AV
FOSC = 4 MHz, VDD = 2.0V
FOSC = 8 MHz, VDD = 3.0V
F
OSC = 20 MHz, V DD = 5.0V
F
OSC = 32 kHz,V DD = 2.0V,WDT 禁止
DD = 2.0V
DD = 2.0V
DD = 2.0V
DD = 2.0V
DD = 2.0V
DD = 2.0V
(4)
图注: TBD = 待定。
* 这些参数仅为特征值,未经测试。
注 1: “典型值”栏中的数据均为 25 °C 下的值。此数据仅供设计参考,未经测试。
2: 该电压是休眠模式下保证不丢失 RAM 数据的最小 VDD 。
3: 供电电流主要随工作电压和频率而变化。其他因素,比如总线负载、振荡器类型、总线速率、内部代码执
行模式和温度也会影响电流消耗。
a) 在正常工作模式下,所有 I
DD 测量的测试条件为:
OSC1 = 外部方波,满幅;所有 I/O 引脚均为三态,上拉至 VSS ; T0CKI = VDD, MCLR = V DD ;
根据要求使能 / 禁止 WDT。
b) 在测量待机电流时,除器件处于休眠模式外,其他条件完全相同。
4 : 不包括流经 R
EXT 的电流 (只在 EXTRC 模式下)。流经该电阻的电流可由以下公式估算:
I = VDD/2R EXT (mA),其中 REXT 的单位是 kΩ 。
5 : 休眠模式下的掉电电流与振荡器类型无关。掉电电流是在器件休眠时,所有 I/O 引脚处于高阻态并且连接
DD 或 V SS 时测得的。
到 V
DS41268A_CN 第 86 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
13.2 直流特性: PIC12F510/16F506 (扩展级)
标准工作条件 (除非另外声明)
直流特性
参数
编号
D001 V
D002 V
D003 V
符号 特性
DD
电源电压
DR
RAM 数据保存电压
POR
V DD 启动电压确保能够产
生上电复位信号
D004 SVDD
V DD 上升速率确保能够产
生上电复位信号
D010 I
D020 I
D022 ∆I
D023 ∆I
DD
PD
WDT
CMP
D024 ∆IADC
D025 ∆ IV
D026 ∆ CV
REF
REF
供电电流
掉电电流
WDT 电流
比较器电流 -
ADC 电流 -
内部参考电流 -
比较器电压参考电流 -
(3)
(5)
(5)
图注: TBD = 待定。
* 这些参数仅为特征值,未经测试。
注 1: “典型值”栏中的数据均为 25 °C 下的值。此数据仅供设计参考,未经测试。
2: 该电压是休眠模式下保证不丢失 RAM 数据的最小 VDD 。
3: 供电电流主要随工作电压和频率而变化。其他因素,比如总线负载、振荡器类型、总线速率、内部代码执
行模式和温度也会影响电流消耗。
a) 在正常工作模式下,所有 I
OSC1 = 外部方波,满幅;所有 I/O 引脚均为三态,上拉至 VSS ; T0CKI = VDD, MCLR = V DD ;
根据要求使能 / 禁止 WDT。
b) 在测量待机电流时,除器件处于休眠模式外,其他条件完全相同。
4 : 不包括流经 R
EXT 的电流 (只在 EXTRC 模式下)。流经该电阻的电流可由以下公式估算:
I = VDD/2R EXT (mA),其中 REXT 的单位是 kΩ 。
5 : 休眠模式下的掉电电流与振荡器类型无关。掉电电流是在器件休眠时,所有 I/O 引脚处于高阻态并且连接
DD 或 V SS 时测得的。
到 V
工作温度 -40 °C ≤ TA ≤ +85°C (工业级)
A ≤ +125 ° C (扩展级)
请参见图 13-1
器件工作在休眠模式
请参见第 10.4 节 “上电复位 (POR )”
详情请参见第 10.4 节 “上电复位
(2)
最小值典型
值
2.0
0.05*
-
-
-
1.5*
Vss
--
(1)
-40° C ≤ T
最大
单位 条件
值
5.5 V
-
-
V
V
V/ms
(POR )”
170 TBD µA
-
0.4 TBD mA
-
1.7 TBD mA
-
15 TBD µA
-
0.1 TBD µ AV
-
1.0 TBD µ AV
-
15 TBD µ AV
100 TBD µ AV
80 TBD µ AV
58 TBD µ AV
DD 测量的测试条件为:
FOSC = 4 MHz, VDD = 2.0V
FOSC = 8 MHz, VDD = 3.0V
F
OSC = 20 MHz, V DD = 5.0V
F
OSC = 32 kHz,V DD = 2.0V,WDT 禁止
DD = 2.0V
DD = 2.0V
DD = 2.0V
DD = 2.0V
DD = 2.0V
DD = 2.0V
(4)
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 87 页
PIC12F510/16F506
13.3 直流特性: PIC12F510/16F506 (工业级和扩展级)
直流特性
参数
编号
符号 特性 最小值
IL
V
输入低电压
工作温度 -40°C ≤ TA ≤ +85°C (工业级)
典型
值 †
-40°C ≤ T
A ≤ +125°C (扩展级)
最大值 单位 条件
I/O 端口
标准工作条件 (除非另外声明)
D030
带 TTL 缓冲器
D030A V
D031
D032
D033
D033
D033
带施密特触发缓冲器
MCLR
, T0CKI
OSC1 ( EXTRC 模式), EC
OSC1 ( HS 模式)
OSC1 ( XT 和 LP 模式)
V
IH
输入高电压
(1)
V
V
V
VSS
V
V
SS
SS
SS
SS
SS
SS
-
-
-
-
-
-
-
.8V V
DD V
0.15 V
DD V
0.15 V
DD V
0.15 V
DD V
0.15 V
DD V
0.3 V
0.3 V
由于 4.5 ≤ VDD ≤ 5.5V
其他情况
I/O 端口 -
D040
带 TTL 缓冲器
D040A 0.25 V
2.0
DD
V
-
-
DD V4 . 5 ≤ VDD ≤ 5.5V
DD V
V
其他情况
+ 0.8V
D041
D042
D043
D043
D043
D070 I
D060
带施密特触发缓冲器
MCLR
, T0CKI
OSC1 ( EXTRC 模式), EC
OSC1 ( HS 模式)
OSC1 ( XT 和 LP 模式)
PUR
GPIO/PORTB 弱上拉电流
IIL
输入泄漏电流
I/O 端口 - -
D061 GP3/RB3/MCLR
D061A GP3/RB3/MCLR
D063 OSC1
(1)
(4)
(2),(3)
(5)
(6)
0.85 V
DD
DD
0.85 V
0.85 VDD
0.7 V
DD
1.6
-
-
-
-
-
DD V
V
DD V
V
DD V
V
DD V
V
V
DD V
TBD 250 TBD µA
±1 µA
--
--
--
±30 µA Vss ≤ V
±5 µA Vss ≤ V
±5 µA
整个 V
DD 范围
V
DD = 5V, V PIN = V SS
Vss ≤ V
PIN ≤ V DD,引脚处于高阻态
PIN ≤ V DD
PIN ≤ V DD
Vss ≤ V
PIN ≤ V DD,XT、HS 和 LP 模式振荡器
配置
输出低电压
D080 V
D080A
D083 OSC2
D083A
OL
I/O 端口 /CLKOUT --
--
--
--
0.6 V
0.6 V
0.6 V
0.6 V
IOL = 8.5 mA, VDD = 4.5V, -40° C 至 +85° C
I
OL = 7.0 mA,V DD = 4.5V,-40°C 至 +125°C
I
OL = 1.6 mA, V DD = 4.5V, -40°C 至 +85°C
I
OL = 1.2 mA,V DD = 4.5V,-40°C 至 +125°C
输出高电压
D090 V
OH
I/O 端口 /CLKOUT
D090A V
D092 OSC2 V
D092A V
(3)
VDD – 0.7
DD – 0.7
DD – 0.7
DD – 0.7
--VI
--VI
--VI
--VI
OH = -3.0 mA, V DD = 4.5V, -40°C 至 +85°C
OH = -2.5 mA,V DD = 4.5V,-40°C 至 +125°C
OH = -1.3 mA, V DD = 4.5V, 40°C- 至 +85°C
OH = -1.0 mA,V DD = 4.5V,-40°C 至 +125°C
输出引脚的容性负载规范
D100 C
D101 C
OSC2
OSC2 引脚 - -
IO
所有 I/O 引脚 - -
15 pF
50 pF
当外部时钟用于驱动 OSC1 时,处于 XT 、 HS
和 LP 模式
图注: TBD = 待定。
† 除非另外声明,“典型值”栏中的数据均为 5V 和 25°C 下的值。这些参数仅作为设计参考,未经测试。
注 1 : 在 EXTRC 振荡器配置中, OSC1/CLKIN 引脚被配置为施密特触发器输入。在 RC 模式下,建议不要使用外部时钟驱动 PIC12F510/
16F506 器件。
2: MCLR
3: 负电流定义为自引脚流出的电流。
4: 不包括 GP3 。关于 GP3 请参照参数 D061 和 D061A 。
5: 此规范适用于将 GP3/MCLR
6: 当 GP3/MCLR
引脚上的泄漏电流主要由施加在该引脚上的电平决定。规定电平为正常工作条件下的电平。在不同的输入电压下可测得更高的泄
漏电流。
被配置为禁止上拉的输入时也适用此规范。 MCLR 电路的泄漏电流比标准 I/O 逻辑电路中的高。
配置为具有外部 MCLR 功能且使能内部上拉的输入引脚。
DS41268A_CN 第 88 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
表 13-1 : 比较器规范
符号 特性 最小值 典型值 最大值 单位 备注
OS
V
VCM
CMRR
TRT
输入失调电压 -
输入共模电压
共模抑制比
响应时间
(1)
+55*
-
0
图注: * 这些参数仅为特征值,未经测试。
注 1 : 响应时间是在比较器一个输入端的电压为 (VDD - 1.5)/2 ,而另一个输入端的电压从 VSS 变化到 VDD - 1.5V
的过程中测得的。
±3 ±10 mV
DD - 1.5 V
-
--
V
dB
150 400* ns
内部
表 13-2 : 比较器参考电压 (V
REF)规范
符号 特性 最小值 典型值 最大值 单位 备注
CVRES
分辨率 -
-
绝对精度 -
-
单位电阻值 (R )-
DD/24*
V
VDD /32
-
-
2K*
-
-
±1/4*
±1/2*
-
LSb
LSb
LSb
LSb
Ω
低压范围 (V
高压范围 (V
RR = 1)
RR = 0)
低压范围 (VRR = 1 )
高压范围 (V
RR = 0)
-
稳定时间
(1)
--
10* µs
图注: * 这些参数仅为特征值,未经测试。
注 1 : 稳定时间是在 VRR = 1 且 VR<3:0> 从 0000 跳变到 1111 时测得的。
表 13-3 : A/D 转换器特性
参数
编号
A01 NR
A02 EABS
A03 EIL
A04 E
A05 E
A06 EOFF
A07 E
A10
A25 V
A30 ZAIN
图注: TBD = 待定
注 1 : 总绝对误差包括积分、差分、偏移和增益误差。
符号 特性 最小值 典型值 † 最大值 单位 条件
分辨率 - - 8 位位
总绝对误差 *
(1)
--
积分误差 - -
DL
微分误差 - -
FS
满量程范围
2.2*
偏移误差 - -
GN
增益误差 - -
- 单调性 - 保证
AIN
模拟输入电压 -
V
模拟电压源阻抗推荐值 - -
-
DD
(2)
TBD LSb V
TBD LSb V
TBD LSb
5.5* V V
TBD LSb V
TBD LSb V
--
-
10 kΩ
DD = 5.0V
DD = 5.0V
不丢失编码至 8 位
DD = 5.0V
V
DD
REF = 5.0V
REF = 5.0V
SS ≤ VAIN ≤ V REF+
V
V
* 这些参数仅为特征值,未经测试。
† 除非另外声明,“典型值”栏中的数据均为 5.0V 和 25°C 下的值。这些参数仅供设计参考,未经测试。
2: A/D 转换结果不会因输入电压的增加而减小,并且不会丢失编码。
3: V
REF 电流来自选作参考电压源的外部 V REF 引脚或 V DD 引脚。
4 : 当关闭 A/D 时,它将不消耗除泄漏电流以外的任何电流。掉电电流规范包含来自 A/D 模块的任何这种泄漏
电流。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 89 页
PIC12F510/16F506
13.4 时序参数符号和负载条件
可根据以下一种格式来创建时序参数符号:
1. TppS2ppS
2. TppS
T
F 频率 T 时间
小写字母 (pp )和它们的含义:
pp
2 至
ck CLKOUT
cy 周期时间
drt 器件复位定时器
io I/O 端口 wdt 看门狗定时器
大写字母和它们的含义:
S
F 下降 P 周期
H 高 R 上升
I 无效 (高阻态) V 有效
L 低 Z 高阻态
mc MCLR
osc 振荡器
os OSC1
t0 T0CKI
图 13-5 : 负载条件
引脚
图 13-6 : 外部时钟时序
Q4
OSC1
图注 :
CL =50pF 适用于除 OSC2 之外的所有
Cl
VSS
Q1 Q2
13 3
2
引脚
15 pF 当外部时钟用于驱动 OSC1
时,适用于 XT 、 HS 或 LP
模式下的 OSC2 引脚
Q3 Q4 Q1
44
DS41268A_CN 第 90 页 初稿 2006 Microchip Technology Inc.
PIC12F510/16F506
表 13-4 : 外部时钟时序要求
标准工作条件 (除非另外声明)
交流特性
参数
编号
1A FOSC
1T
2T
3
4
符号 特性
外部 CLKIN 频率
振荡器频率
OSC
CY
To sL ,
To sH
To sR ,
To sF
外部 CLKIN 周期
振荡周期
(2)
指令周期
时钟输入 (OSC1 )的低电平
或高电平时间
时钟输入 (OSC1 )上升或下
降时间
(2)
(2)
(2)
* 这些参数仅为特征值,未经测试。
注 1: 除非另外声明,“典型值”栏中的数据均为 5V 和 25 °C 下的值。这些参数仅供设计参考,未经测试。
2: 所有值均为在特定的振荡模式下,器件在标准工作条件下执行代码时获得的特征数据。超过规定值可能导
致振荡器运行不稳定和 / 或电流消耗超出预期值。
当使用了外部时钟输入时,所有器件的 “最大”周期时间限制为 “DC ”(没有时钟)。
工作温度 -40 °C ≤ TA ≤ +85° C (工业级),
A ≤ +125° C (扩展级)
XT 振荡模式
HS/EC 振荡模式
最小
值
DC
DC
典型值
-
-
-40° C ≤ T
(1)
最大值 单位 条件
4M H z
20 MHz
(仅 PIC16F506)
DC
-
--
0.1
4
-
-
200 kHz
4M H z
4M H z
20 MHz
LP 振荡模式
EXTRC 振荡模式
XT 振荡模式
HS/EC 振荡模式
(仅 PIC16F506 )
--
250
50
--nsXT 振荡模式
--nsHS/EC 振荡模式
200 kHz
LP 振荡模式
(仅 PIC16F506)
5
250
250
50
--µs LP 振荡模式
--nsEXTRC 振荡模式
-
-
10,000 ns
250 ns
XT 振荡模式
HS/EC 振荡模式
(仅 PIC16F506)
5
200 4/F
50*
2*
10
--µ sLP 振荡模式
OSC
-
ns
--nsXT 振荡器
--µs LP 振荡器
--nsHS/EC 振荡器
(仅 PIC16F506)
--
--
--
25* ns
50* ns
15 ns
XT 振荡器
LP 振荡器
HS/EC 振荡器
(仅 PIC16F506)
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 91 页
PIC12F510/16F506
表 13-5 : 经过校准的内部 RC 频率
标准工作条件 (除非另外声明)
交流特性
参数
编号
F10 F
:
符号 特性
OSC
内部校准 INTOSC 频率
* 这些参数仅为特征值,未经测试。
注 1 : 除非另外声明,“典型值”栏中的数据均为 5V 和 25 °C 下的值。这些参数仅供设计参考,未经测试。
图 13-7 : I/O 时序
工作温度 -40 °C ≤ TA ≤ +85° C (工业级),
A ≤ +125 ° C (扩展级)
最大
单位 条件
值 *
8.08
MHz
DD 和温度待定
V
MHz
2.5V ≤ V
8.16
(1)
频率容差最小
值
±1%
±2%
7.92
7.84
典型值
8.00
8.00
-40° C ≤ T
(1)
0°C ≤ T
±5%
7.60
8.00
8.40
2.0V ≤ VDD ≤ 5.5V
MHz
-40°C ≤ T
-40°C ≤ T
DD ≤ 5.5V
A ≤ +85°C
A ≤ +85°C (工业级)
A ≤ +125°C (扩展级)
Q4
Q1
Q2 Q3
OSC1
I/O 引脚
(输入)
I/O 引脚
(输出)
17
旧值
19
18
新值
20 ,21
注: 所有测试都必须在 I/O 引脚和 CLKOUT 引脚上连有指定的电容负载 50 pF (参见数据手册)的条件下
进行。
DS41268A_CN 第 92 页 初稿 2006 Microchip Technology Inc.
表 13-6 : 时序要求
交流特性
参数
编号
17 TOSH2 IOV
符号 特性 最小值 典型值
PIC12F510/16F506
标准工作条件 (除非另外声明)
工作温度 -40 °C ≤ TA ≤ +85° C (工业级)
-40° C ≤ T
OSC1↑ ( Q1 周期)到端口输出有效的时间
(2),(3)
A ≤ +125 ° C (扩展级)
--
(1)
最大值 单位
100* ns
18 T
19 TIO V2OS H
OSH2 IOI
OSC1↑ ( Q2 周期)到端口输入无效的时间
( I/O 保持时间)
(2)
端口输入无效到 OSC1↑ 的时间 ( I/O 输入
TBD
TBD
--
--
建立时间)
20 T
IOR
21 TIO F
端口输出上升时间
端口输出下降时间
(2),(3)
(2),(3)
-
-
10 25** ns
10 25** ns
图注: TBD = 待定
* 这些参数仅为特征值,未经测试。
** 这些参数为设计目标值,未经测试。
注 1: 除非另外声明,“典型值”栏中的数据均为 5V 和 25°C 下的值。这些参数仅供设计参考,未经测试。
2: 在 EXTRC 模式下进行测量。
3: 关于负载条件请参见图 13-5 。
图 13-8: 复位、看门狗定时器和器件复位定时器时序
VDD
MCLR
内部
POR
32
30
32
32
ns
ns
DRT
(2)
延时
内部
复位
看门狗
定时器复位
31
34
I/O 引脚
注 1 : 必须通过软件使能输出驱动器使 I/O 引脚退出高阻模式。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 93 页
(1)
2: MCLR
功能或 WDT 复位只能 XT、 LP 和 HS 模式下使用。
34
PIC12F510/16F506
表 13-7 : 复位、看门狗定时器和器件复位定时器
标准工作条件 (除非另外声明)
交流特性
参数
编号
30 TMC L
31 T
符号 特性 最小值 典型值
脉冲宽度 (低电平)
MCLR
WDT
看门狗定时器延时周期
(无预分频器)
32 T
DRT
器件复位定时器周期
标准
快速
34 TIOZ
从 MCLR 低电平到 I/O 高阻抗 - -
* 这些参数仅为特征值,未经测试。
注 1 : 除非另外声明,“典型值”栏中的数据均为 5V 和 25 °C 下的值。这些参数仅供设计参考,未经测试。
图 13-9 : TIMER0 时钟时序
工作温度 -40 °C ≤ TA ≤ +85° C (工业级)
A ≤ +125° C (扩展级)
ns V
ms
ms
ms
ms
DD = 5.0V
VDD = 5.0V (商业级)
DD = 5.0V (扩展级)
V
VDD = 5.0V (工业级)
DD = 5.0V (扩展级)
V
DD = 5.0V (工业级)
V
DD = 5.0V (扩展级)
V
2000*
9*
9*
9*
9*
0.5*
0.5*
-40° C ≤ T
(1)
最大值 单位 条件
--
18*
18*
18*
18*
30*
40*
30*
40*
1.125*
1.125*2*2.5*msms
2000* ns
T0CKI
40 41
42
表 13-8 : TIMER0 时钟要求
标准工作条件 (除非另外声明)
交流特性
参数
符号 特性 最小值 典型值
编号
40 Tt0H
41 Tt0L
42 Tt0P
* 这些参数仅为特征值,未经测试。
注 1 : 除非另外声明,“典型值”栏中的数据均为 5V 和 25°C 下的值。这些参数仅供设计参考,未经测试。
T0CKI 高电平脉冲宽度 无预分频器
有预分频器
T0CKI 低电平脉冲宽度 无预分频器
有预分频器
T0CKI 周期 20 或 T
工作温度 -40 °C ≤ TA ≤ +85° C (工业级)
0.5 T
CY + 20*
10*
CY + 20*
0.5 T
10*
CY + 40* N --
-40° C ≤ T
--
--
--
--
A ≤ +125 ° C (扩展级)
最大
(1)
单位 条件
值
ns
ns
ns
ns
ns
取较大值。
N = 预分频比
(1 , 2 , 4 , ..., 256 )
DS41268A_CN 第 94 页 初稿 2006 Microchip Technology Inc.
14.0 直流和交流特性图表
当前没有图表。
PIC12F510/16F506
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 95 页
PIC12F510/16F506
注:
DS41268A_CN 第96 页 初稿 2006 Microchip Technology Inc.
15.0 封装
15.1 封装标识信息
PIC12F510/16F506
8 引脚 PDIP
XXXXXXXX
XXXXXNNN
YYWW
14 引脚 PDIP
XXXXXXXXXXXXXX
XXXXXXXXXXXXXX
YYWWNNN
8 引脚 SOIC(0.150")
XXXXXXXX
XXXXYYWW
NNN
示例
12F510/P
017
0410
示例
PIC16F506-I/P
0410017
示例
PIC12F510-I
/SN0410
017
图注: XX...X 客户信息
Y 年份代码 (日历年的最后一位数字)
YY 年份代码 (日历年的最后两位数字)
WW 星期代码 (1 月 1 日的星期代码为 “ 01”)
NNN 以字母数字排序的追踪代码
3
e
雾锡 ( Matte Tin, Sn)的 JEDEC 无铅标志
3
* 表示无铅封装。 JEDEC 无铅标志 ( )标示于此种封装的外包装
上。
注: Microchip 元器件编号如果无法在同一行内完整标注,将换行标出,因此会限制
表示客户信息的字符数。
* 标准 PICmicro 器件标识由 Microchip 元器件编号、年份代码、星期代码和追踪代码组成。若 PICmicro 器件标识超
出上述内容,需支付一定的附加费用。请向当地的 Microchip 销售办事处了解确认。对于 QTP 器件,任何特殊标记
的费用都已包含在 QTP 价格中。
2006 Microchip Technology Inc. 初稿 DS41268A_CN 第 97 页
e
PIC12F510/16F506
15.2 封装标识信息 (续)
14 引脚 SOIC(0.150")
XXXXXXXXXXX
XXXXXXXXXXX
YYWWNNN
8 引脚 MSOP
XXXXXX
YWWNNN
14 引脚 TSSOP
XXXXXXXX
YYWW
NNN
示例
PIC16F506
-I/SL
0410017
示例
602/MS
310017
示例
16F506/ST
0410
017
DS41268A_CN 第 98 页 初稿 2006 Microchip Technology Inc.