MICROCHIP PIC12F510, PIC16F506 User Manual

PIC12F510/16F506
数据手册
8/14 引脚 8 位闪存单片机
*8 8 引脚器件受 Microchip 低引脚数专利保护:美国专利号为 5,847,450。其他美国或他国专利可能已经颁发,或正在 接受审查。
2006 Microchip Technology Inc. 初稿 DS41268A_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
•Microchip的产品均达到 Microchip 数据手册中所述的技术指标。
•Microchip确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的 操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•Microchip愿与那些注重代码完整性的客户合作。
•Microchip或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视 为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的
软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含 的英文部分,因为其中提供了有关 Microchip 产品性能和使用
任何差错不承担任何责任。建议参考 Microchip Technology Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便 利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或 暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用 性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。如果将 Microchip 器件用于生命 维持和 / 或生命安全应用,一切风险由买方自负。买方同意在 由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障
Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识 产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron dsPIC、 K
EELOQ、 microID、 MPLAB、 PIC、 PICmicro、
PICSTARTPRO MATE、 PowerSmart、 rfPIC 和 SmartShunt 均为 Microchip Technology Inc. 在美国和其他国
家或地区的注册商标。
AmpLabFilterLabMigratable MemoryMXDEV MXLABSEEVAL、SmartSensor The Embedded Control Solutions Company 均为 Microchip Technology Inc. 在美国的
注册商标。
Analog-for-the-Digital AgeApplication Maestro dsPICDEMdsPICDEM.netdsPICworksECAN ECONOMONITORFanSenseFlexROMfuzzyLAB In-Circuit Serial Programming、 ICSP、 ICEPIC、 Linear
Active Thermistor、 MPASMMPLIBMPLINKMPSIM PICkitPICDEMPICDEM.netPICLABPICtail
PowerCalPowerInfoPowerMatePowerToolREAL ICErfLABrfPICDEMSelect ModeSmart Serial
SmartTelTotal 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
KEELOQ
。此外,
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 8MHzPIC12F510
- 指令周期为 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)
- INTOSCEXTRC EC 模式下可提供短 暂的 DRT 延时 (1.125 ms,典型值)
- HSXT LP 模式下可提供 DRT 延时
18 ms,典型值)
具有专用片上 RC 振荡器的看门狗定时器 Watchdog TimerWDT),能够可靠地工作
可编程代码保护
复用的 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 技术:
工作电流:
-4MHz2V时 < 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
引脚图
PDIPSOIC 和 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 引脚 PDIPSOIC
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 引脚 PDIPSOIC
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 ns4MHz时为 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+ C1IN­C1OUT
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 VDD P
V
SS VSS 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+ C1IN­C1OUT
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 VDD P
V
SS VSS 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引脚输入的时钟信号在器件内部被四分 频后,产生四个不重叠的正交时钟节拍,称为 Q1Q2、 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 节拍组成 (Q1Q2Q3 Q4)。取指和执行指令是流水线操作的,因此取指需要 一个指令周期,而译码和执行指令则需要另一个指令周 期。但由于是流水线操作,所以每条指令的有效执行时 间都是一个指令周期。如果一条指令导致 PC 改变 (如 GOTO),则执行该指令需要两个周期 (例 3-1)。
取指周期由 Q1 节拍中 PC 1 开始。
在执行周期中,在 Q1 节拍将所取指令锁存到指令寄存 器(Instruction Register, IR)中。然后在 Q2Q3 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 RegisterFSR)访问数 据存储区。

4.1 PIC12F510/16F506 器件的程序存储 器构成

PIC12F510/16F506 器件具有一个 10 位程序计数器
Program CounterPC),此计数器可以寻址 2K x 12
位的程序存储空间。
只有前 1K x 12 0000h-03FFh)单元是物理实现的
(见图 4-1)。访问这些边界以外的单元将导致返回到
1K x 12 空间。有效的复位向量为 0000h(见图 4-1)。 03FFh 单元包含内部时钟校准值。绝不能改写该值。
4-1 PIC12F510/16F506 器件的程序
存储器映射和堆栈
CALLRETLW
空间
用户存储
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 RegistersGPR)。
特殊功能寄存器包括 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 ZDCC0001 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 ZDCC0001 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 的数学运算状态、复位状态和页预选 择位。
和其他寄存器一样,状态寄存器可以作为任何指令的目 标寄存器。如果将该寄存器作为一条影响 ZDC C 位的指令的目标寄存器,那么将禁止对这 3 位执行写操
u = 不变)。 因此,建议只使用 BCF、 BSF 和 MOVWF 指令来改变
STATUS 寄存器的值。这些指令不会影响状态寄存器的 ZDC C 位。对于其他影响状态位的指令,请参见
11.0 节 “指令集综述”。
作。根据器件逻辑,这些位会被置 1 或清零。此外,TOPD 位是不可写的。所以当执行一条把状态寄存器作 为目标寄存器的指令后,结果可能和预想的不同。
寄存器 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 指令)
位位(对于ADDWFSUBWFRRF RLF 指令)
PD ZDC 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 ZDC 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 指令)
位(对于ADDWFSUBWFRRF 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:引脚电平变化唤醒使能位 (GP0GP1 GP3
1 = 禁止 0 = 使能
GPPU:弱上拉使能位 (GP0GP1 GP3
1 = 禁止 0 = 使能
T0CSTimer0 时钟源选择位
1 = T0CKI 引脚电平的跳变沿 0 = 内部指令周期时钟 (CLKOUT
T0SETimer0 时钟源边沿选择位
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:引脚电平变化唤醒使能位 (RB0RB1RB3 RB4
1 = 禁止 0 = 使能
RBPU:弱上拉使能位 (RB0RB1RB3 RB4
1 = 禁止 0 = 允许
T0CSTimer0 时钟源选择位
1 = T0CKI 引脚电平的跳变沿 0 = 内部指令周期时钟 (CLKOUT
T0SETimer0 时钟源边沿选择位
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 PCADDWF 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
04
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/GP0RB1/ GP1RB3/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 (禁止输出驱动器)。
复位
1GP3/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'
QD
数据
锁存器
CK
CK
ADC 引脚使能
COMP 引脚使能
Q
QD
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.
Loading...
+ 84 hidden pages