MICROCHIP PIC24FJ64GA104 Technical data

PIC24FJ64GA104 系列
数据手册
采用 nanoWatt XLP 技术的
28/44 引脚 16 通用闪存单片机
© 2009 Microchip Technology Inc. 初稿 DS39951B_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 徽标、 dsPIC K
EELOQ、 KEELOQ 徽标、 MPLAB、 PIC、 PICmicro、
PICSTARTrfPIC UNI/O 均为 Microchip Technology Inc.
在美国和其他国家或地区的注册商标。
FilterLabHampshireHI-TECH CLinear Active ThermistorMXDEVMXLABSEEVAL The Embedded
Control Solutions Company 均为 Microchip Technology Inc.
在美国的注册商标。
Analog-for-the-Digital AgeApplication Maestro CodeGuarddsPICDEM、 dsPICDEM.net、 dsPICworks、
dsSPEAKECANECONOMONITORFanSense HI-TIDEIn-Circuit Serial ProgrammingICSPMindi
MiWiMPASMMPLAB Certified 徽标、MPLIBMPLINK mTouchOctopusOmniscient Code GenerationPICC PICC-18PICDEMPICDEM.netPICkitPICtailPIC
32
徽标、REAL ICErfLABSelect ModeTotal Endurance TSHARCUniWinDriverWiperLock ZENA 均为
Microchip Technology Inc. 在美国和其他国家或地区的商标。
SQTP 是 Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。
© 2009, Microchip Technology Inc. 版权所有。
Microchip Gresham
印度的设计中心均通过了
MCU与dsPIC® DSC、KEELOQ
设、非易失性存储器和模拟产品方面的质量体系流程均符合
16949:2002
系也已通过了
位于美国亚利桑那州
的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和
。此外,
Microchip
ISO 9001:2000
Chandler和Tem pe
ISO/TS-16949:2002
®
跳码器件、串行
在开发系统的设计和生产方面的质量体
认证。
与位于俄勒冈州
认证。公司在
EEPROM
®
PIC
、单片机外
ISO/TS-
DS39951B_CN ii 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列
采用 nanoWatt XLP 技术的 28/44 引脚
16 位通用闪存单片机

功耗管理模式:

可选择的功耗管理模式采用 nanoWatt XLP 技术实现极低
功耗:
- 深度休眠模式支持近乎完全掉电 (典型值为 20 nA, 使能 RTCC WDT 时为 500 nA),并可通过外部触 发唤醒,或通过可编程 WDT RTCC 闹钟自唤醒
- 对于深度休眠模式使用极低功耗 DSBOR,对于所有 其他模式使用 LPBOR
- 休眠模式会关闭外设和内核,可显著降低功耗和快 速唤醒
- 空闲模式会关闭 CPU 和外设,可显著降低功耗(典 型值低至 4.5 μA
- 打盹模式支持 CPU 时钟以低于外设的速度运行
- 备用时钟模式支持在运行时切换为较低的时钟速
度,可在运行模式期间选择性地降低功耗 (典型值 低至 15 μA
高性能 CPU
改进型哈佛架构
• 32 MHz 时最高 16 MIPS 工作速度
•8MHz内部振荡器具有:
-4倍频 PLL 选项
- 多个分频选项
•17位 x 17 位单周期硬件小数 / 整数乘法器
•32位 /16 位硬件除法器
• 16 x 16 位工作寄存器阵列
优化的 C 编译器指令集架构:
-76条基本指令
- 灵活的寻址模式
可寻址最大 12 MB 的线性程序存储空间
可寻址最大 64 KB 的线性数据存储空间
两个地址发生单元,分别用于数据存储器的读和写寻址
单片机特性 (续):
闪存程序存储器:
- 最少可耐受 10,000 次擦 /
- 最少 20 年数据保存时间
- 可选择的写保护边界
故障保护时钟监视器操作:
- 检测时钟故障并切换到片上 FRC 振荡器
片上 2.5V 稳压器
上电复位 (Power-on ResetPOR)、上电延时定时器
Power-up TimerPWRT)和振荡器起振定时器 (Oscillator Start-up Timer, OST
两个灵活的看门狗定时器 (Watchdog TimerWDT), 用于可靠工作:
- 标准可编程 WDT 用于正常工作模式
- 极低功耗 WDT 用于深度休眠模式 (可编程周期为
2ms26 天)
在线串行编程(In-Circuit Serial Programming™,ICSP™ 和通过两个引脚进行的在线调试(In-Circuit DebugICD
•JTAG边界扫描支持

模拟特性:

最多 13 路通道的 10 位模数(Analog-to-DigitalA/D)转 换器:
- 转换速率为 500 ksps
- 在休眠和空闲期间可以进行转换
•3个具有可编程输入 / 输出配置的模拟比较器
充电时间测量单元 (Charge Time Measurement Unit CTMU):
- 支持触摸屏和电容式开关的电容触摸传感
- 提供高分辨率的时间测量和简单的温度检测

单片机特性:

工作电压范围为 2.0V 3.6V
可在软件控制下自编程
可承受 5.5V 输入电压 (仅对于数字引脚)
所有 I/O 引脚上的高灌 / 拉电流 (18 mA/18 mA
可重映射的外设
输出
比较 /PWM
®
IrDA
C™
2
I
SPI
UART
10 A/D
比较器
(通道数)
有有有 有有有 有有有 有有有
RTCC
PMP/PSP
CTMU
PIC24FJ
系列器件
32GA1022832K8K16555222103
64GA1022864K8K16555222103
32GA1044432K8K26555222133
64GA1044464K8K26555222133
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 1
引脚
程序存储器
(字节数)
SRAM
(字节数)
可重映射
的引脚
16
定时器
捕捉
输入
PIC24FJ64GA104 系列

外设特性:

外设引脚选择:
-
允许许多外设进行独立的
I/O
映射
- 最多 26 个可用引脚 (44 引脚器件)
- 连续的硬件完整性检查和安全互锁以防止无意中更
改配置
•8位并行主端口 (Parallel Master Port, PMP):
- 最多 16 位复用寻址,在 44 引脚器件上最多具有 11 个专用地址引脚
- 控制线上的可编程极性
- 支持传统并行从端口
硬件实时时钟/日历(Real-Time Clock/Calendar,RTCC):
- 提供时钟、日历和闹钟功能
- 即使处于深度休眠模式也可工作
两个带有8FIFO缓冲区的3 线 /4 线 SPI模块(支持4
模式)
2
两个 I
C™ 模块,支持多主器件 / 从模式和 7 位/10 位寻址
引脚图
28 引脚 SPDIP SOIC
(1)
两个 UART 模块:
- 支持 RS-485RS-232 LIN/J2602
- 用于 IrDA
®
的片上硬件编码器 / 解码器
- 接收到启动位时自动唤醒
- 自动波特率检测 (Auto-Baud DetectABD
-4级深 FIFO 缓冲区
•5个带有可编程预分频器的 16 位定时器 / 计数器
•5个 16 位捕捉输入,每个均具有一个专用时基
•5个 16 位比较 /PWM 输出,每个均具有一个专用时基
•32位可编程循环冗余校验(Cyclic Redundancy Check, CRC)发生器
数字 I/O 引脚上的可配置漏极开路输出
最多 3 个外部中断源
VSS
VDD
1 2
PIC24FJXXGA102
3 4 5 6 7 8 9 10 11 12 13 14
AN0/C3INC/VREF+/CN2/CTED1/RA0
AN1/C3IND/V
PGED1/AN2/C2INB/RP0/CN4/RB0 PGEC1/AN3/C2INA/RP1/CN5/RB1
AN4/C1INB/RP2/SDA2/CN6/RB2
AN5/C1INB/RP3/SCL2/CN7/RB3
SOSCI/C2IND/RP4/PMBE/CN1/RB4
SOSCO/SCLKI/T1CK/C2INC/CN0/PMA1/RA4
PGED3/RP5/ASDA1
REF-/CN3/CTED2/RA1
OSCI/CLKI/C1IND/CN30/RA2
OSCO/CLKO/PMA0/CN29/RA3
(2)
/CN27/PMD7/RB5
MCLR
图注: RPn 表示可重映射的外设引脚。 1: 灰色阴影表示可承受 5.5V 的输入引脚。
2: 当 I2C1SEL 位置 1 时,相应的引脚分别用作 SDA1 SCL1
28
DD
V VSS
27
AN9/C3INA/RP15/CN11/PMCS1/RB15
26
AN10/C3INB/CVREF/RTCC/RP14/CN12/PMWR/RB14
25
AN11/C1INC/RP13/CN13/PMRD/REFO/RB13
24
AN12/RP12/CN14/PMD0/RB12
23
PGEC2/TMS/RP11/CN15/PMD1/RB11
22
PGED2/TDI/RP10/CN16/PMD2/RB10
21
V
CAP/VDDCORE
20
DISVREG
19
TDO/RP9/SDA1/CN21/PMD3/RB9
18
TCK/RP8/SCL1/CN22/PMD4/RB8
17
RP7/INT0/CN23/PMD5/RB7
16 15
PGC3/EMUC3/RP6/ASCL1
(2)
/CN24/PMD6/RB6
DS39951B_CN 第 2 页 初稿 © 2009 Microchip Technology Inc.
引脚图
PIC24FJ64GA104 系列
28 引脚 QFN
PGED1/AN2/C2INB/RP0/CN4/RB0 PGEC1/AN3/C2INA/RP1/CN5/RB1
(1,3)
AN4/C1INB/SDA2/RP2/CN6/RB2
AN5/C1INA/SCL2/RP3/CN7/RB3
OSCI/CLKI/C1IND/CN30/RA2
OSCO/CLKO/CN29/PMA0/RA3
VSS
REF-/CN3/CTED2/RA1
DD
MCLR
AN0/C3INC/VREF+/CN2/CTED1/RA0
AN1/C3IND/V
1
2
3
PIC24FJXXGB002
4
5
6
7
8
9
10 11
VDD
V
12 13 14
VSS
232425262728
REF/RTCC/RP14/CN12/PMWR/RB14
AN9/C3INA/RP15/CN11/RB15
AN10/C3INB/CV
22
AN11/C1INC/RP13/CN13/PMRD/REFO/RB13
21
AN12/RP12/CN14/PMD0/RB12
20
PGEC2/TMS/RP11/CN15/PMD1/RB11
19
PGED2/TDI/RP10/CN16/PMD2/RB10
18
VCAP/VDDCORE
17
DISVREG
16
TDO/RP9/SDA1/CN21/PMD3/RB9
15
TCK/RP8/SCL1/CN22/PMD4/RB8
SOSCI/C2IND/RP4/PMBE/CN1/RB4
SOSCO/SCLKI/T1CK/C2INC/CN0/PMA1/RA4
TA4 D/ RP7/INT0/CN23/PMD5/RB7
PGEC3/RP6/ASCL1(2)/CN24/PMD6/RB6
PGED3/RP5/ASDA1(2)/CN27/PMD7/RB5
图注: RPn 表示可重映射的外设引脚。 注 1: 灰色阴影表示可承受 5.5V 的输入引脚。
2: 当 I2C1SEL 位置 1 时,相应的引脚分别用作 SDA1 SCL1 3QFN 器件上的底板应连接到 V
SS
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 第 3
PIC24FJ64GA104 系列
引脚图
44 引脚 TQFP 44 引脚 QFN
(1,3)
/CN24/PMD6/RB6
(2)
(2)
/CN27/PMD7/RB5
RP9/SDA1/CN21/PMD3/RB9
RP22/CN18/PMA1/RC6 RP23/CN17/PMA0/RC7 RP24/CN20/PMA5/RC8 RP25/CN19/PMA6/RC9
PGED2/RP10/CN16/PMD2/RB10
PGEC2/RP11/CN15/PMD1/RB11
AN12/RP12/CN14/PMD0/RB12
AN11/C1INC/RP13/PMRD/REFO/CN13/RB13
DISVREG
V
CAP/VDDCORE
RP8/SCL1/CN22/PMD4/RB8
RP7/INT0/CN23/PMD5/RB7
PGEC3/RP6/ASCL1
PGED3/RP5/ASDA1
4443424140
1 2 3 4 5
PIC24FJXXGA104
6 7 8 9 10 11
121314
15
TCK/PMA7/RA7TCK/PMA7/RA7
TMS/PMA10/RA10
AN9/C3INA/RP15/CN11/RB15
REF/RTCC/RP14/CN12/PMWR/RB14
DD
VSSRP21/CN26/PMA3/RC5
V
39
1819202122
16
17
DD
AVSS
AV
RP20/CN25/PMA4/RC4
38
37
MCLR
REF+/CN2/CTED1/RA0
AN0/C3INC/V
TDI/PMA9/RA9
SOSCO/SCLKI/T1CK/C2INC/CN0/RA4
RP19/CN28/PMBE/RC3
363435
33 32 31 30 29 28 27 26 25 24
23
REF-/CN3/CTED2/RA1
PGEC1/AN3/C2INA/RP1/CN5/RB1
PGED1/AN2/C2INB/RP0/CN4/RB0
AN1/C3IND/V
SOSCI/C1IND/RP4/CN1/RB4 TDO/PMA8/RA8 OSCO/CLKO/CN29/RA3 OSCI/CLKI/C1IND/CN30/RA2 VSS V
DD
AN8/RP18/PMA2/CN10/RC2 AN7/RP17/CN9/RC1 AN6/RP16/CN8/RC0 AN5/C1INA/RP3/SCL2/CN7/RB3 AN4/C1INB/RP2/SDA2/CN6/RB2
AN10/C3INB/CV
图注: RPn 表示可重映射的外设引脚。 注 1: 灰色阴影表示可承受 5.5V 的输入引脚。
2: 当 I2C1SEL 位置 1 时,相应的引脚分别用作 SDA1 SCL1 3QFN 器件上的底板应连接到 V
SS
DS39951B_CN 第 4 页 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列
目录
1.0 器件概述 ....................................................................................................................................................................................... 7
2.0 16 位单片机入门指南.................................................................................................................................................................. 17
3.0 CPU ........................................................................................................................................................................................... 21
4.0 存储器构成 ................................................................................................................................................................................. 27
5.0 闪存程序存储器 .......................................................................................................................................................................... 47
6.0 复位 ............................................................................................................................................................................................ 55
7.0 中断控制器 ................................................................................................................................................................................. 61
8.0 振荡器配置 ................................................................................................................................................................................. 97
9.0 节能特性 ................................................................................................................................................................................... 107
10.0 I/O 端口 .................................................................................................................................................................................... 117
11.0 Timer1 ...................................................................................................................................................................................... 139
12.0 Timer2/3 Timer4/5................................................................................................................................................................ 141
13.0 带专用定时器的输入捕捉.......................................................................................................................................................... 147
14.0 带专用定时器的输出比较.......................................................................................................................................................... 151
15.0 串行外设接口 (SPI)............................................................................................................................................................... 161
16.0 I2C™ ........................................................................................................................................................................................ 171
17.0 通用异步收发器 (UART....................................................................................................................................................... 179
18.0 并行主端口 (PMP................................................................................................................................................................ 187
19.0 实时时钟和日历 (RTCC)....................................................................................................................................................... 197
20.0 32 位可编程循环冗余校验 (CRC)发生器 .............................................................................................................................. 209
21.0 10 位高速 A/D 转换器 ............................................................................................................................................................... 215
22.0 三比较器模块............................................................................................................................................................................ 225
23.0 比较器参考电压 ........................................................................................................................................................................ 229
24.0 充电时间测量单元 (CTMU
25.0 特殊功能 ................................................................................................................................................................................... 235
26.0 开发支持 ................................................................................................................................................................................... 247
27.0 指令集汇总 ............................................................................................................................................................................... 251
28.0 电气特性 ................................................................................................................................................................................... 259
29.0 封装信息 ................................................................................................................................................................................... 277
附录 A 版本历史 .............................................................................................................................................................................. 287
Microchip 网站.................................................................................................................................................................................... 295
变更通知客户服务 .............................................................................................................................................................................. 295
客户支持............................................................................................................................................................................................. 295
读者反馈表 ......................................................................................................................................................................................... 296
产品标识体系 ..................................................................................................................................................................................... 297
................................................................................................................................................... 231
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 5
PIC24FJ64GA104 系列
致客户
我们旨在提供最佳文档供客户正确使用 Microchip 产品。为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。 出版物的质量将随新文档及更新版本的推出而得到提升。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 CTRC@microchip.com,或将本 数据手册后附的 《读者反馈表》传真到 86-21-5407 5066。我们期待您的反馈。

最新数据手册

欲获得本数据手册的最新版本,请查询我公司的网站:
http://www.microchip.com
查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号,例如:DS30000A是DS30000A 版本。
勘误表
现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到 器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
•Microchip网站 http://www.microchip.com
当地 Microchip 销售办事处 (见最后一页)
在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。

客户通知系统

欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。
DS39951B_CN 6 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

1.0 器件概述

本文档包含以下器件的具体信息:
• PIC24FJ32GA102 • PIC24FJ32GA104
• PIC24FJ64GA102 • PIC24FJ64GA104
PIC24FJ64GA104 系列器件提供了扩展的外设功能部
件,并为那些 8 位平台无法满足其需求但又不要求使用 数字信号处理器的高性能应用提供了一种新的选择。

1.1 内核特性

1.1.1 16 位架构

所有 PIC24F 器件的核心都是 16 位改进型哈佛架构,第 一次引入该架构的就是 Microchip dsPIC®数字信号控 制器。 PIC24F CPU 内核提供了众多增强功能,例如:
•16位数据路径和24位地址路径,能在数据空间和存 储空间之间传送信息
最大 12 MB(程序空间)和 64 KB(数据空间)的 线性寻址
•16个寄存器组成的工作寄存器阵列,支持内置软件 堆栈
•17位 x 17 位硬件乘法器,支持整数数学运算
硬件支持 32 /16 位的除法运算
指令集支持多种寻址模式,并针对高级语言(如 C
语言)进行了优化
工作性能最高可达 16 MIPS

1.1.2 节能技术

PIC24FJ64GA104 系列中的所有器件都具有一系列能在
工作时显著降低功耗的功能。主要包括以下几项:
动态时钟切换:在器件工作过程中,器件时钟可在 软件控制下切换为 Timer1 时钟源或内部低功耗 RC 振荡器,允许用户将节能理念融入到软件设计 中去。
打盹模式操作: 当那些对时序敏感的应用 (如串行 通信)要求外设不间断地工作时,可有选择地降低 CPU 时钟速度,从而可在不丢失时钟的前提下进一 步节约功耗。
基于指令的节能模式:有三种基于指令的节能模式:
- 空闲模式——内核关闭,而外设仍然工作。
- 休眠模式——内核和需要使用系统时钟的外设关
闭,而使用自身时钟或由其他器件提供时钟的外设 仍然工作。
- 深度休眠模式——内核、外设 (RTCC DSWDT 除外)、闪存和 SRAM 均关闭,以最大程度节约电 流来延长便携式应用的电池寿命。

1.1.3 振荡器选项和特性

PIC24FJ64GA104 系列中的所有器件均提供 5个不同的
振荡器选项,使用户在开发应用硬件时有很大的选择范 围。这些选项包括:
两种晶振模式,使用晶振或陶瓷谐振器。
两种外部时钟模式,提供 2 分频时钟输出选项。
一个标称输出值为 8 MHz 的快速内部振荡器(Fast Internal Oscillator, FRC),可在软件控制下被分 频,从而使时钟速度可低至 31 kHz
一个锁相环 (Phase Lock LoopPLL)倍频器,
可在外部振荡器模式和采用 FRC 振荡器的情况下 使用,从而使时钟速度最高可达 32 MHz
具有固定31 kHz 输出的独立低功耗内部 RC 振荡器
LPRC),可为对时序不敏感的应用提供低功耗时
钟选项。
内部振荡器模块还为故障保护时钟监视器提供了一个稳 定的参考源。故障保护时钟监视器不断地监视主时钟 源,将之与内部振荡器提供的参考信号作比较。一旦发 生时钟故障,允许控制器将时钟源切换到内部振荡器, 继续保持低速工作或安全地关闭应用。

1.1.4 易于移植

无论存储器容量如何,所有器件均共享同一组丰富外设, 使得应用程序可在升级时很方便地移植。整个系列使用 相同的引脚配置方案也有助于向更大型器件的移植。
PIC24F 系列器件的引脚同 dsPIC33 系列器件的引脚是 兼容的,并与 PIC18 dsPIC30 器件的引脚配置方案 部分兼容。这样全部采用 Microchip 器件,就可将应用 从相对简单的功能顺利扩展到强大和复杂的功能。
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 7
PIC24FJ64GA104 系列

1.2 其他特性

外设引脚选择:外设引脚选择功能允许大部分的数 字外设被映射到一组固定的数字 I/O 引脚。用户可 独立地将许多数字外设之一的输入和 / 或输出映射 到其中的任一 I/O 引脚。
通信:PIC24FJ64GA104 系列集成了一些串行通信 外设以满足一系列的应用要求。有两个独立的I2C™ 模块支持主模式和从模式下的操作。通过外设引脚 选择(Peripheral Pin SelectPPS)功能,器件还 具有两个带内置 IrDA 以及两个 SPI 模块。
模拟特性:PIC24FJ64GA104 系列的所有成员都包 括一个 10 A/D 转换器模块和一个三比较器模块。 A/D 模块实现了可编程采集时间,允许选择通道立 即开始转换而无需等待采样周期结束,同时也提高 了采样速度。比较器模块包括 3 个模拟比较器,它 们可配置为多种工作模式。
CTMU 接口:该模块为精确时间测量和脉冲产生提 供了一种便捷的方法,同时也可以作为电容传感器 的接口。
并行主 / 增强型并行从端口:可以将一个通用 I/O 口重新配置为用于增强型并行数据通信。在该模式 下,可以将端口配置为工作在主模式或从模式下。 在主模式下支持 8 位和 16 位数据传输,并具有最 多 12 条外部地址线。
实时时钟 / 日历:该模块通过硬件实现了带有闹钟 功能的全功能时钟和日历,从而释放了定时器资 源和程序存储空间供核心应用使用。
®
编码器 / 解码器的独立 UART

1.3 系列中各器件的详细说明

PIC24FJ64GA104 系列中的器件有 28 引脚和 44 引脚 两种封装形式。图 1-1 给出了所有器件的一般框图。
这些器件在以下几个方面存在差异:
闪存程序存储器:
- PIC24FJ32GA1 器件——32 KB
- PIC24FJ64GA1 器件——64 KB
可用的 I/O 引脚和端口数:
-28引脚器件——2 个端口 21 个引脚
-44引脚器件——3 个端口 35 个引脚
可用的电平变化中断通知 (Interrupt-on-Change NotificationICN)输入:
-28引脚器件——21
-44引脚器件——31
可用的可重映射引脚数:
-28引脚器件——16 个引脚
-44引脚器件——26 个引脚
可用的 PMP 地址引脚数:
-28引脚器件——3 个引脚
-44引脚器件——12 个引脚
可用的 A/D 输入通道数:
-28引脚器件——10 个引脚
-44引脚器件——13 个引脚
本系列器件的所有其他功能都是相同的。表 1-1 汇总了 这些功能。
PIC24FJ64GA104 系列器件上可用的引脚功能列表如 表 1-2 所示,按功能名称排序。注意该表只显示了各个 外设功能所使用的引脚,而没有显示同一引脚上多种功 能的复用方式。在本数据手册开始部分的引脚图中提供 了相关信息。复用的功能按功能的优先级排列,最前面 的是优先级最高的外设功能。
DS39951B_CN 8 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

1-1 PIC24FJ64GA104 系列的器件特性

特性
工作频率 程序存储器 (字节) 程序存储器 (指令) 数据存储器 (字节) 中断源 (软向量 /NMI 陷阱) 45 41/4
I/O 端口 端口 A B 端口 AB C I/O 引脚总数
可重映射的引脚 定时器:
总数 (16 位) 32 位 (由一对 16 位定时器组成)
输入捕捉通道 输出比较 /PWM 通道 输入电平变化通知中断 串行通信:
UART 2
SPI (3 线 /4 线) I2C™ 2
并行通信 (PMP/PSP)有 JTAG 边界扫描 10 位模数转换模块 (输入通道)
模拟比较器 CTMU 接口
复位 (和延时) PORBORRESET 指令、 MCLR
指令集 76 条基本指令,多种寻址模式 封装 28 引脚 QFNSOIC SPDIP 44 引脚 QFN TQFP 1: 可通过可重映射的引脚访问外设。
PIC24FJ32GA102 PIC24FJ64GA102 PIC24FJ32GA104 PIC24FJ64GA104
DC – 32 MHz
32K 64K 32K 64K
11,008 22,016 11,008 22,016
8,192
21 35
16 26
(1)
5
2
(1)
5
(1)
5
21 31
(1)
(1)
2
10 13
3
WDT
非法操作码、 REPEAT 指令、硬件陷阱和配置字不匹配
PWRTOST PLL 锁定)
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 9
PIC24FJ64GA104 系列

1-1 PIC24FJ64GA104 系列一般框图

OSCO/CLKO
OSCI/CLKI
REFO
DISVREG
PSV 和表
数据访问 控制模块
地址锁存器
程序存储器
数据锁存器
时序发生
FRC/LPRC
振荡器
高精度
带隙
参考源
稳压器
23
中断
控制器
23
指令译码
和控制
上电延时
定时器
振荡器
起振定时器
上电 复位
看门狗 定时器
BOR
LVD
8
PCH PCL
程序计数器
堆栈控制
逻辑
地址总线
24
控制信号
(2)
16
重复控制
逻辑
16
指令锁存器
指令寄存器
除法支持
17 x 17
乘法器
数据总线
16
数据锁存器
数据 RAM
地址锁存器
16
AGUAGU
EA 多路开关
16
立即数数据
16 x 16
W 寄存器阵列
16 ALU
16
(1)
PORTA
9 I/O
PORTB
16 I/O
16
(1)
PORTC
10 I/O
16
(1)
RP
RP0:RP25
16
VDDCORE/VCAP
Timer1
IC
1-5
1
2:当使能片上稳压器时可提供 3:只能通过可重映射的引脚访问外设
Timer2/3
PWM/OC
(3)
并非所有引脚或特性都能在所有器件的引脚配置中实现。实现的具体引脚数,请参见表
1-5
(3)
V
DD
SS
V
(3)
Timer4/5
ICN
BOR
(1)
功能。
(3)
I/O
MCLR
RTCC
SPI
1/2
10 ADC
(3)
I2C
1/2
比较器
UART
1/2
(3)
PMP/PSP
1-2
CTMU
(3)
DS39951B_CN 10 初稿 © 2009 Microchip Technology Inc.

1-2 PIC24FJ64GA104 系列引脚说明

引脚编号
功能
28 引脚
SPDIP/
SOIC
28 引脚
QFN
44 引脚
QFN/
TQFP
I/O
PIC24FJ64GA104 系列
输入
缓冲器
说明
AN0 2 27 19 I ANA
AN1 3 28 20 I ANA
AN2 4 1 21 I ANA
AN3 5 2 22 I ANA
AN4 6 3 23 I ANA
AN5 7 4 24 I ANA
AN6 25 I ANA
AN7 26 I ANA
AN8 27 I ANA
AN9 262315IANA
AN10 25 22 14 I ANA
AN11 24 21 11 I ANA
AN12 23 20 10 I ANA
ASCL1 15 12 42 I/O I
ASDA1 14 11 41 I/O I
AV
DD ——17P—
AV
SS ——16P—
C1INA 7 4 24 I ANA
C1INB 6 3 23 I ANA
C1INC 24 21 11 I ANA
C1IND 9 6 30 I ANA
C2INA 5 2 22 I ANA
C2INB 4 1 21 I ANA
C2INC 12934IANA
C2IND 11 8 33 I ANA
C3INA 262315IANA
C3INB 252214IANA
C3INC 2 27 19 I ANA
C3IND 3 28 20 I ANA
CLKI 9 6 30 I ANA
CLKO 10731O
图注: TTL = TTL 输入缓冲器 ST = 施密特触发器输入缓冲器
ANA = 模拟电平输入 / 输出 I
A/D 模拟输入。
2
C
备用 I2C1 同步串行时钟输入 / 输出。
2
C
备用 I2C1 同步串行数据输入 / 输出。 模拟模块的正电源。 模拟模块的参考地。 比较器 1 的输入 A。 比较器 1 的输入 B。 比较器 1 的输入 C。 比较器 1 的输入 D。 比较器 2 的输入 A。 比较器 2 的输入 B。 比较器 2 的输入 C。 比较器 2 的输入 D。 比较器 3 的输入 A。 比较器 3 的输入 B。 比较器 3 的输入 C。 比较器 3 的输入 D。 主时钟输入连接。 系统时钟输出。
2
C™ = I2C/SMBus 输入缓冲器
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 第 11
PIC24FJ64GA104 系列
1-2 PIC24FJ64GA104 系列引脚说明 (续)
引脚编号
功能
28 引脚 SPDIP/
SOIC
28 引脚
QFN
44 引脚
QFN/
TQFP
I/O
输入
缓冲器
说明
CN0 12934IST
CN1 11 8 33 I ST
CN2 2 27 19 I ST
CN3 3 28 20 I ST
CN4 4 1 21 I ST
CN5 5 2 22 I ST
CN6 6 3 23 I ST
CN7 7 4 24 I ST
CN8 25 I ST
CN9 26 I ST
CN10 27 I ST
CN11 26 23 15 I ST
CN12 25 22 14 I ST
CN13 24 21 11 I ST
CN14 23 20 10 I ST
CN15 22 19 9 I ST
CN16 21 18 8 I ST
CN17 3 I ST
CN18 2 I ST
CN19 5 I ST
CN20 4 I ST
CN21 18 15 1 I ST
CN22 17 14 44 I ST
CN23 16 13 43 I ST
CN24 15 12 42 I ST
CN25 37 I ST
CN26 38 I ST
CN27 14 11 41 I ST
CN28 36 I ST
CN29 10 7 31 I ST
CN30 9 6 30 I ST
CTED1 2 27 19 I ANA
CTED2 3 28 20 I ANA
REF 25 22 14 O
CV
DISVREG 19 16 6 I ST
图注: TTL = TTL 输入缓冲器 ST = 施密特触发器输入缓冲器
ANA = 模拟电平输入 / 输出 I
电平变化中断输入。
CTMU 外部边沿输入 1。 CTMU 外部边沿输入 2。
比较器参考电压输出。 稳压器禁止。
2
C™ = I2C/SMBus 输入缓冲器
DS39951B_CN 12 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列
1-2 PIC24FJ64GA104 系列引脚说明 (续)
引脚编号
功能
INT0 16 13 43 I ST
MCLR
OSCI 9 6 30 I ANA
OSCO 10731OANA PGEC1 5 2 22 I/O ST 在线调试器 / 仿真器 /ICSP™ 编程时钟。
PGED1 4 1 21 I/O ST
PGEC2 22 19 9 I/O ST
PGED2 21 18 8 I/O ST
PGEC3 15 12 42 I/O ST
PGED3 14 11 41 I/O ST
PMA0 10 7 3 I/O ST
PMA1 12 9 2 I/O ST
PMA2 27 O
PMA3 38 O
PMA4 37 O
PMA5 4 O
PMA6 5 O
PMA7 13 O
PMA8 32 O
PMA9 35 O
PMA10 12 O
PMCS1 26 23 15 I/O ST/TTL
PMBE 11 8 36 O
PMD0 23 20 10 I/O ST/TTL
PMD1 22 19 9 I/O ST/TTL
PMD2 21 18 8 I/O ST/TTL
PMD3 18 15 1 I/O ST/TTL
PMD4 17 14 44 I/O ST/TTL
PMD5 16 13 43 I/O ST/TTL
PMD6 15 12 42 I/O ST/TTL
PMD7 14 11 41 I/O ST/TTL
PMRD 24 21 11 O
PMWR 25 22 14 O
图注: TTL = TTL 输入缓冲器 ST = 施密特触发器输入缓冲器
28 引脚
SPDIP/
SOIC
12618IST
ANA = 模拟电平输入 / 输出 I
28 引脚
QFN
44 引脚
QFN/
TQFP
I/O
输入
缓冲器
外部中断输入。
主复位 (器件复位)输入。此线变为低电平,引起复位。 主振荡器输入连接。 主振荡器输出连接。
在线调试器 / 仿真器 /ICSP 编程数据。 在线调试器 / 仿真器 /ICSP 编程时钟。 在线调试器 / 仿真器 /ICSP 编程数据。 在线调试器 / 仿真器 /ICSP 编程时钟。 在线调试器 / 仿真器 /ICSP 编程数据。 并行主端口地址 bit 0 的输入 (带缓冲的从模式)和输出
(主模式)。
并行主端口地址 bit 1 的输入 (带缓冲的从模式)和输出
(主模式)。
并行主端口地址 (解复用的主模式)。
并行主端口片选 1 选通 / 地址 bit 15。 并行主端口字节使能选通。 并行主端口数据 (解复用的主模式)或地址 / 数据 (复用的
主模式)。
并行主端口读选通。 并行主端口写选通。
2
C™ = I2C/SMBus 输入缓冲器
说明
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 13
PIC24FJ64GA104 系列
1-2 PIC24FJ64GA104 系列引脚说明 (续)
引脚编号
功能
28 引脚 SPDIP/
SOIC
28 引脚
QFN
44 引脚
QFN/
TQFP
I/O
输入
缓冲器
说明
RA0 2 27 19 I/O ST
RA1 3 28 20 I/O ST
RA2 9 6 30 I/O ST
RA3 10731I/OST
RA4 12934I/OST
RA7 13 I/O ST
RA8 32 I/O ST
RA9 35 I/O ST
RA10 12 I/O ST
RB0 4 1 21 I/O ST
RB1 5 2 22 I/O ST
RB2 6 3 23 I/O ST
RB3 7 4 24 I/O ST
RB4 11 8 33 I/O ST
RB5 141141I/OST
RB6 151242I/OST
RB7 161343I/OST
RB8 171444I/OST
RB9 18 15 1 I/O ST
RB10 21 18 8 I/O ST
RB11 22 19 9 I/O ST
RB12 23 20 10 I/O ST
RB13 24 21 11 I/O ST
RB14 25 22 14 I/O ST
RB15 26 23 15 I/O ST
RC0 25 I/O ST
RC1 26 I/O ST
RC2 27 I/O ST
RC3 36 I/O ST
RC4 37 I/O ST
RC5 38 I/O ST
RC6 2 I/O ST
RC7 3 I/O ST
RC8 4 I/O ST
RC9 5 I/O ST
REFO 24 21 11 O
图注: TTL = TTL 输入缓冲器 ST = 施密特触发器输入缓冲器
ANA = 模拟电平输入 / 输出 I
PORTA 数字 I/O
PORTB 数字 I/O
PORTC 数字 I/O
参考时钟输出。
2
C™ = I2C/SMBus 输入缓冲器
DS39951B_CN 14 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列
1-2 PIC24FJ64GA104 系列引脚说明 (续)
引脚编号
功能
28 引脚
SPDIP/
SOIC
28 引脚
QFN
44 引脚
QFN/
TQFP
I/O
输入
缓冲器
说明
RP0 4 1 21 I/O ST
RP1 5 2 22 I/O ST
RP2 6 3 23 I/O ST
RP3 7 4 24 I/O ST
RP4 11 8 33 I/O ST
RP5 2 27 19 I/O ST
RP6 3 28 20 I/O ST
RP7 161343I/OST
RP8 171444I/OST
RP9 18 15 1 I/O ST
RP10 21 18 8 I/O ST
RP11 22 19 9 I/O ST
RP12 23 20 10 I/O ST
RP13 24 21 11 I/O ST
RP14 25 22 14 I/O ST
RP15 26 23 15 I/O ST
RP16 25 I/O ST
RP17 26 I/O ST
RP18 27 I/O ST
RP19 36 I/O ST
RP20 37 I/O ST
RP21 38 I/O ST
RP22 2 I/O ST
RP23 3 I/O ST
RP24 4 I/O ST
RP25 5 I/O ST
RTCC 25 22 14 O
SCL1 17 14 44 I/O I
SCL2 7 4 24 I/O I
SDA1 18 15 1 I/O I
SDA2 6 3 23 I/O I
SOSCI 11 8 33 I ANA
SOSCO 12 9 34 O ANA
T1CK 12934IST
TCK 171413IST
TDI 161335IST
TDO 181532O—
TMS 141112IST
图注: TTL = TTL 输入缓冲器 ST = 施密特触发器输入缓冲器
ANA = 模拟电平输入 / 输出 I
可重映射的外设 (输入或输出)。
实时时钟闹钟 / 秒脉冲输出。
2
C
I2C1 同步串行时钟输入 / 输出。
2
C
I2C2 同步串行时钟输入 / 输出。
2
C
I2C1 数据输入 / 输出。
2
C
I2C2 数据输入 / 输出。
辅助振荡器 /Timer1 时钟输入。 辅助振荡器 /Timer1 时钟输出。
Timer1 时钟输入。 JTAG 测试时钟 / 编程时钟输入。 JTAG 测试数据 / 编程数据输入。 JTAG 测试数据输出。 JTAG 测试模式选择输入。
2
C™ = I2C/SMBus 输入缓冲器
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 第 15
PIC24FJ64GA104 系列
1-2 PIC24FJ64GA104 系列引脚说明 (续)
引脚编号
功能
CAP 20 17 7 P
V
V
DD 13, 28 10, 25 28, 40 P
V
DDCORE 20 17 7 P
V
REF- 3 28 20 I ANA
V
REF+ 2 27 19 I ANA
V
SS 8, 27 5, 24 29, 39 P
图注: TTL = TTL 输入缓冲器 ST = 施密特触发器输入缓冲器
28 引脚 SPDIP/
SOIC
ANA = 模拟电平输入 / 输出 I
28 引脚
QFN
44 引脚
QFN/
TQFP
I/O
输入
缓冲器
外部滤波电容连接 (稳压器使能)。 外设数字逻辑和 I/O 引脚的正电源。 单片机内核逻辑的正电源 (稳压器禁止)。
A/D 和比较器参考电压 (低电压)输入。 A/D 和比较器参考电压 (高电压)输入。 逻辑和 I/O 引脚的参考地。
2
C™ = I2C/SMBus 输入缓冲器
说明
DS39951B_CN 16 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

2.0 16 位单片机入门指南

2.1 基本连接要求

在开始使用 PIC24FJ64GA104 系列 16 位单片机进行开 发之前,需要注意最低限度的器件引脚连接要求。
必须始终连接以下引脚:
所有 V
所有 AVDD AVSS 引脚 (不论是否使用模拟器件功
•MCLR
• ENVREG/DISVREG 和 V
如果在最终应用中使用了以下引脚,则也必须连接它们:
• PGECx/PGEDx 引脚,用于进行在线串行编程(ICSP™)
•OSCI和 OSCO 引脚 (使用外部振荡器源时)
此外,可能还需要连接以下引脚:
•V
2-1 中显示了最低限度的连接要求。
DD 和 VSS 引脚(见第 2.2 节“电源引脚”)
能)(见第 2.2 节 “电源引脚”)
引脚 (见第 2.3 节“主复位(MCLR)引 脚 ”)
CAP/VDDCORE 引脚(仅
PIC24FJ 器件)(见第 2.4 节 “稳压器引脚
ENVREG/DISVREG VCAP/VDDCORE)”)
和调试 (见第 2.5 节“ICSP 引脚”)
(见第 2.6 节 “外部振荡器引脚”)
REF+/VREF- 引脚(在实现模拟模块的外部参考电压
时使用) 注: 不论是否使用任何模拟模块,都必须始终
连接 AVDD AVSS 引脚。

2-1 建议的最低限度连接

(2)
C2
V
DD
R1
R2
MCLR
C1
PIC24FXXXX
(2)
C6
关键 (所有值均为建议值):
C1 C60.1 μF20V 陶瓷电容 C710 μF16V 钽电容或陶瓷电容 R110 kΩ R2100Ω 470Ω 1: 关于 ENVREG/DISVREG 引脚连接的说明,请
VSS
VDD
AVDD
AVSS
(2)
C5
参见第2.4节“稳压器引脚(ENVREG/DISVREG
CAP/VDDCORE)”。
V
2: 所给出的示例针对的是具有 5 V
DD/AVSS 引脚对的 PIC24F 器件。其他器件
AV
的引脚对可能增多或减少,请相应地调整去耦 电容的数量。
VDD
EN/DISVREG
VCAP/VDDCORE
VDD
(2)
C4
VSS
VDD
VSS
VSS
(1)
DD/VSS
(1)
C3
C7
(2)
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 17
PIC24FJ64GA104 系列

2.2 电源引脚

2.2.1 去耦电容

在每对电源引脚(例如, VDDVSSAV DD AV SS) 上,需要使用去耦电容。
使用去耦电容时,需要考虑以下标准:
电容的类型和电容值:建议使用参数为 0.1 μF
100 nF)、 10-20V 的电容。电容应为低 ESR
件,谐振频率处于 200 MHz 和更高范围。建议使用 陶瓷电容。
在印制电路板上的布置:去耦电容应尽可能靠近引 脚。建议将电容与器件放置在电路板的同一面。如 果空间受到限制,可以使用过孔将电容放置在 PCB 的另一层,但请确保从引脚到电容的走线长度不超 出 0.25 英寸 (6 毫米)。
高频噪声处理:如果电路板遇到高频噪声(频率高 于数十 MHz),则另外添加一个陶瓷电容,与上述 去耦电容并联。第二个电容的电容值可以介于
0.001 μF 至 0.01 μF 之间。请将第二个电容放置在 靠近每个主去耦电容的位置。在高速电路设计中, 需要考虑让 10 对电容尽可能靠近电源和接地引脚
(例如, 0.1 μF 电容与 0.001 μF 电容并联)。
最大程度提高性能:对于从电源电路开始的电路板 布线,需要将电源和回路走线先连接到去耦电容, 然后再与器件引脚连接。这可以确保去耦电容是电 源链中的第一个元件。同等重要的是尽可能减小电 容和电源引脚之间的走线长度,从而降低 PCB 走 线电感。

2.3 主复位 (MCLR)引脚

MCLR 引脚提供两种特定的器件功能:器件复位,以及 器件编程和调试。如果最终应用中不需要进行编程和调 试,则只需直接连接 V 高应用抵抗由于电压骤降导致误复位的能力,可能会是 有好处的。图 2-1 给出了一种典型配置。根据应用的需 求,还可以实现其他电路设计。
在编程和调试过程中,必须考虑到引脚上可能会增加的 电阻和电容。器件编程器和调试器会驱动 MCLR 因此,特定电平 (VIH VIL)和快速信号切换一定不 能受到影响。所以,需要根据应用和 PCB 需求来调整 R1 C1 的具体值。例如,在编程和调试操作期间,建 议通过使用跳线将电容C1MCLR 对于正常的运行时操作,可以将跳线放回原处。
MCLR
引脚关联的所有元件都应放置在引脚 0.25 英寸
6 毫米)范围内。

2-2 MCLR 引脚连接示例

DD
V
DD 即可。添加其他元件来帮助提
引脚隔离(图2-2)。
R1
R2
MCLR
JP
C1
PIC24FXXXX
引脚。

2.2.2 槽路电容

对于电源走线长度超出 6 英寸的电路板,建议对集成电 路 (包括单片机)使用槽路电容来提供本地电源。槽路 电容的电容值应根据连接电源与器件的走线电阻和应用 中的器件的最大电流确定。也就是说,选择的槽路电容 需要能够承受器件电压骤降的情况。典型值的范围为
4.7 μF 至 47 μF。
1: 建议 R1 10 kΩ。建议的起始值为 10 kΩ。请 确
保满足 MCLR
2R2 ≤ 470Ω 将限制任何电流从外部电容 C 流入
MCLR DischargeESD)或 电 过 载 (Electrical Overstress,EOS)导 致 MCLR
保满足 MCLR
引脚 VIH 和 VIL 规范。
,以避免由于静电放电 (Electrostatic
引脚损坏。请确
引脚 VIH 和 VIL 规范。
DS39951B_CN 18 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列
2.4 稳压器引脚 (ENVREG/DISVREG
CAP/VDDCORE
V
注: 本节仅适用于带有片上稳压器的 PIC24FJ
器件。
片上稳压器使能 / 禁止引脚 (ENVREG DISVREG, 取决于器件系列)必须总是直接与电源连接或直接接 地。具体的连接取决于是否使用稳压器:
对于 ENVREG,与 V 可以禁止稳压器
对于DISVREG,接地可以使能稳压器,与 V 可以禁止稳压器
关于连接和使用片上稳压器的详细信息,请参见第 25.2
“片上稳压器”。
使能稳压器时,在 V
< 5Ω)电容,以稳定稳压器的输出电压。VCAP/VDDCORE
引脚一定不能与 VDD 连接,并且必须使用 10 μF 的电容 接地。可以使用陶瓷电容或钽电容。一个合适的示例就 是 Murata GRM21BF50J106ZE01 10 μF, 6.3V),或 等效电容。设计人员可以根据图 2-3 来评估候选器件的 ESR 等效值。
该电容的位置应靠近 V 超出 0.25 英寸 (6 毫米)。更多信息,请参见第 28.0
“电气特性”。
禁止稳压器时, V VDDCORE 的电源连接。关于 VDD VDDCORE 的信息, 请参见第 28.0 节 “电气特性”。

2-3:所VCAP 的频率与 ESR 性能

10
DD 连接可以使能稳压器,接地
DD连接
CAP/VDDCORE 引脚上需要有低 ESR
CAP/VDDCORE。建议走线长度不要
CAP/VDDCORE 引脚必须与电压为

2.5 ICSP 引脚

PGECx PGEDx 引脚用于进行在线串行编程(ICSP 和调试。建议尽可能减小 ICSP 连接器与器件 ICSP 引 脚之间的走线长度。如果 ICSP 连接器会遇到 ESD 事 件,则建议添加一个串联电阻,电阻值介于几十欧姆的 范围,不要超出 100Ω
建议不要在 PGECx PGEDx 引脚上连接上拉电阻、 串联二极管和电容,因为它们会影响与器件的编程器 / 调试器通信。如果应用需要此类分立元件,则在编程和 调试期间应将它们从电路中取出。或者,请参见相应器 件闪存编程规范中的交流 / 直流特性与时序要求信息, 了解关于容性负载限制、引脚输入高电压 (V 入低电压 (VIL)要求的信息。
对于器件仿真,请确保烧写到器件中的 “通信通道选 择”(即,PGECx/PGEDx 引脚)符合 ICSP MPLAB ICD 2MPLAB ICD 3 MPLAB REAL ICE™ 仿真器 的物理连接。
关于 ICD 2ICD 3 REAL ICE 仿真器连接要求的更 多信息,请参见 Microchip 网站上提供的以下文档。
®
MPLAB
ICD 2 在线调试器用户指南》
DS51331C_CN
•“Using MPLAB® ICD 2”(海报)(DS51265)
MPLAB® ICD 2 Design Advisory”(DS51566
Using MPLAB® ICD 3”(海报)(DS51765
•“MPLAB® ICD 3 Design Advisory”(DS51764)
®
MPLAB
REAL ICE™ 在线仿真器用户指南》
DS51616A_CN
Using MPLAB® REAL ICE™ In-Circuit Emulator
(海报)(DS51749
IH)和输
®
1
0.1
ESRΩ
0.01
0.001
0.01 0.1 1 10 100 1000 10,000
注: 所显示的是对应于 Murata GRM21BF50J106ZE01
的数据。在 25°C0V 直流偏置条件下测量。
频率(MHz
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 19
PIC24FJ64GA104 系列

2.6 外部振荡器引脚

许多单片机都有至少两个振荡器可供选择:高频主振荡 器和低频辅助振荡器(详细信息,请参见第 8.0 节“振 荡器配置”)。
振荡器电路与器件应放置在电路板的同一面。请将振荡 器电路放置在靠近相应振荡器引脚的位置,电路元件与 引脚之间的距离不要超出 0.5 英寸(12 毫米)。负载电 容应靠近振荡器自身,位于电路板的同一面。
在振荡器电路周围请设置接地灌铜区,以将它与周围电 路隔离。接地灌铜区应与 MCU 地直接连接。不要在接 地灌铜区内安排任何信号走线或电源走线。此外,如果 使用双面电路板,则对于晶振所在位置,请避免在电路 板另一面有任何走线。图2-4给出了一个建议的布线图。
关于振荡器电路的其他信息和设计指南,请参见 Microchip 公司网站 (www.microchip.com)上提供的 以下应用笔记:
• AN826,“Crystal Oscillator Basics and Crystal
Selection for rfPIC
• AN849“Basic PICmicro® Oscillator Design
• AN943“Practical PICmicro® Oscillator Analysis
and Design
• AN949“Making Your Oscillator Work

2-4 振荡器电路的建议布置方式

®
and PICmicro® Devices

2.7 ICSP 操作期间的模拟和数字引脚配置

如果选择使用 MPLAB ICD 2ICD 3 或 REAL ICE 仿真 器作为调试器,则它们会自动将 AD1PCFGL 寄存器中 的所有位置 1,从而将所有 A/D 输入引脚 (ANx)初始 化为 “数字”引脚。
禁止用户应用程序固件清零该寄存器中对应于由
MPLAB ICD 2ICD 3 REAL ICE 仿真器初始化的 A/D 引脚的位;否则,调试器和器件之间将会产生通信
错误。
如果在调试会话期间,应用程序需要使用一些特定 A/D 引脚作为模拟输入引脚,则用户应用程序必须在 ADC 模 块初始化期间,清零 AD1PCFGL 寄存器中的相应位。
使用 MPLAB ICD 2ICD 3 REAL ICE 仿真器作为编 程器时,用户应用程序固件必须正确地配置 AD1PCFGL 寄存器。该寄存器的自动初始化仅在调试器操作期间执 行。未能正确配置寄存器将导致所有 A/D 引脚被识别为 模拟输入引脚,从而导致端口值读为逻辑 0,这可能会 影响用户应用程序功能。

2.8 未用 I/O

未用I/O引脚应配置为输出,并驱动为逻辑低电平状态。 或者,将未用引脚通过一个 1kΩ 至 10 kΩ 的电阻与V 连接,并将输出驱动为逻辑低电平。
SS
主振荡器
保护环
保护走线
辅助振荡器
DS39951B_CN 20 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

3.0 CPU

注: 本数据手册总结了 PIC24F 系列器件的特
性。但是不应把本手册当作无所不包的参
考手册来使用。更多信息,请参见 《PIC24F 系列参考手册》的第 2 章“CPU” (DS39703A_CN)。
PIC24F CPU 采用 16 位(数据)的改进型哈佛架构,具 有增强指令集以及带有长度可变操作码字段的 24 位指令 字。程序计数器(Program CounterPC)为 23 位宽, 可以寻址最大 4M 指令字的用户程序存储空间。单周期 指令预取机制可帮助维持吞吐量,并使指令的执行具有 预测性。除了改变程序流的指令、双字传送 (MOV.D) 指令和表指令以外,所有指令都在单个周期内执行。使 用 REPEAT 指令可以支持无开销的程序循环结构,该指 令在任何时间都可以被中断。
PIC24F 器件在编程模型中有 16 16 位工作寄存器。 每个工作寄存器都可以充当数据、地址或地址偏移寄存 器。第 16 个工作寄存器 (W15)作为软件堆栈指针工 作,用于中断和调用。
可以选择将数据存储空间的高 32 KB 映射到由 8 位程序 空间可视性页地址 (Program Space Visibility Page AddressPSVPAG)寄存器定义的任何 16K 字边界内 的程序空间内。程序空间到数据空间的映射功能让任何 指令都能像访问数据空间一样访问程序空间。
指令集架构 (Instruction Set Architecture, ISA)与 PIC18 相比有了显著的提升,但仍保持了一定程度的向 后兼容性。该架构直接支持或通过简单的宏支持所有的 PIC18 指令和寻址模式。对编译器执行效率的需求也促 使了对 ISA 的许多改进。
内核支持固有 (无操作数)寻址、相对寻址、立即数寻 址、存储器直接寻址及其他三组寻址模式。所有模式都 支持寄存器直接寻址和各种寄存器间接寻址模式。每组 都提供了最多 7 种寻址模式。指令根据其功能要求,与 预定义的寻址模式相关联。
对于大多数指令,内核能在每个指令周期内执行一次数 据(或程序数据)存储器读操作、一次工作寄存器(数 据)读操作、一次数据存储器写操作和一次程序 (指 令)存储器读操作。因此可以支持三个操作数的指令, 使三个操作数的运算 (即, A + B = C)能在单个周期 内执行。
内核中包括一个高速 17 x 17 位乘法器,显著提高了 内核的运算能力和吞吐量。乘法器支持有符号、无符号 和混合模式的 16 x 16 位或 8 x 8 位整数乘法。所 有的乘法指令都在单个周期内执行。
已对 16 ALU 进行了改进使其具备一个支持整数除法 的硬件,该硬件支持迭代的不可撤消的除法算法。它与 REPEAT 指令循环机制和迭代除法指令一起工作,支持 32 位(或16 位)除以 16 位有符号和无符号整数的除 法运算。所有除法运算都需要 19 个周期来完成,但可 以在任何周期边界被中断。
PIC24F 具有向量异常机制,带有最多 8 个不可屏蔽陷 阱源和最多 118 个中断源。可以为每个中断源分配 7 个 优先级之一。
3-1 给出了 CPU 的框图。

3.1 编程模型

3-2 给出了 PIC24F 的编程模型。编程模型中的所有 寄存器都是存储器映射的,并且可以由指令直接操作。 表 3-1 中提供了对每个寄存器的说明。所有与编程模型 相关的寄存器都是存储器映射的。
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 21
PIC24FJ64GA104 系列

3-1 PIC24F CPU 内核框图

PSV 和表
数据访问
控制模块
中断
控制器
8
23
23
23
PCH
程序计数器
堆栈控制
逻辑
16
PCL
循环控制
逻辑
数据总线
16
16
数据锁存器
数据 RAM
地址锁存器
16
16
地址锁存器
程序存储器
数据锁存器
地址总线
24
指令译码
和控制
至各模块的
控制信号
ROM 锁存器
指令寄存器
硬件
乘法器
除法支持
RAGU
WAGU
EA 多路开关
16
立即数数据
16 x 16
W 寄存器阵列
16 ALU
16
16
16
至外设模块
DS39951B_CN 22 初稿 © 2009 Microchip Technology Inc.

3-1 CPU 内核寄存器

寄存器名称 说明
W0 W15 工作寄存器阵列 PC
SR
SPLIM
TBLPAG
PSVPAG
RCOUNT
CORCON
23 位程序计数器 ALU 状态寄存器
堆栈指针限制值寄存器 表存储器页地址寄存器 程序空间可视性页地址寄存器
Repeat 循环计数器寄存器 CPU 控制寄存器

3-2 编程模型

除法器工作寄存器
乘法器寄存器
W0(WREG)
W1
W2
W3
W4
W5
W6
W7
W8
W9
W10
W11
W12
W13
W14
W15
帧指针
堆栈指针
PIC24FJ64GA104 系列
015
工作 / 地址 寄存器
0
堆栈指针限制 值寄存器
程序计数器
表存储器页 地址寄存器
程序空间可视性 页地址寄存器
Repeat 循环计数器 寄存器
ALU 状态寄存器(SR)
0
CPU 控制寄存器(CORCON)
22
SPLIM
PC
7
7
15
RCOUNT
SRH
15
——
15
———————— ——— —
DC
IPL
210
TBLPAG
PSVPAG
SRL
NOVZ C
RA
IPL3 PSV
0
0
0
0
0
0
0
——
PUSH.S POP.S 指令要用到的影子寄存器或位。
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 23
PIC24FJ64GA104 系列

3.2 CPU 控制寄存器

寄存器 3-1 SRALU 状态寄存器

U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0
—DC
bit 15 bit 8
(1)
R/W-0
(2)
IPL2
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-9
bit 8
bit 7-5
bit 4
bit 3
bit 2
bit 1
bit 0
未实现:读为 0 DC ALU 半进位 / 借位标志位
1 = 结果的第 4 个低位 (对于字节大小的数据)或第 8 个低位 (对于字大小的数据)发生了进位 0 = 结果的第 4 个或第 8 个低位未发生进位
IPL<2:0>CPU 中断优先级状态位
111 = CPU 中断优先级为 7 15);禁止用户中断 110 = CPU 中断优先级为 6 14 101 = CPU 中断优先级为 5 13 100 = CPU 中断优先级为 4 12 011 = CPU 中断优先级为 3 11 010 = CPU 中断优先级为 2 10 001 = CPU 中断优先级为 1 9 000 = CPU 中断优先级为 0 8
RA REPEAT 循环活动位 1 = 正在进行 REPEAT 循环
0 = 不在进行 REPEAT 循环
NALU 负标志位
1 = 结果为负 0 = 结果为非负 (零或正值)
OV ALU 溢出标志位
1 = 有符号 (二进制补码)算术运算中发生溢出 (本次运算) 0 = 未发生溢出
Z ALU 全零标志位
1 = 0 = 影响 Z 位的最近一次运算已将该位清零 (即运算结果非零)
CALU 进位 / 借位标志位
1 = 结果的最高有效位发生了进位 0 = 结果的最高有效位未发生进位
(1)
R/W-0
(2)
IPL1
影响 Z 位的任何运算在过去某时已将该位置 1
R/W-0
IPL0
(2)
(1)
R-0 R/W-0 R/W-0 R/W-0 R/W-0
RA N OV Z C
(1,2)
1: 当 NSTDIS INTCON1<15>= 1 时, IPL 状态位是只读位。
2IPL 状态位与 IPL3 位(CORCON<3>)组合形成 CPU 中断优先级 (Interrupt Priority LevelIPL)。
IPL3 = 1 时,括号中的值表示 IPL
DS39951B_CN 24 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 3-2 CORCONCPU 控制寄存器

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
bit 15 bit 8
U-0 U-0 U-0 U-0 R/C-0 R/W-0 U-0 U-0
—IPL3
bit 7 bit 0
(1)
PSV
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-4
bit 3
bit 2
bit 1-0
1: 当 IPL3 = 1 时,禁止用户中断。
未实现:读为 0 IPL3CPU 中断优先级状态位
1 = CPU 中断优先级大于 7 0 = CPU 中断优先级等于或小于 7
PSV数据空间中程序空间可视性使能位
1 = 程序空间在数据空间中可视 0 = 程序空间在数据空间中不可视
未实现:读为 0

3.3 算术逻辑单元 (ALU

PIC24F ALU 16 位宽,并能进行加法、减法、移位和 逻辑运算。除非另外声明,算术运算一般采用二进制补 码方式进行。根据不同的运算,ALU 可能会影响 SR 寄 存器中的进位标志位 (C)、全零标志位(Z)、负标志 位(N)、溢出标志位 (OV)和半进位标志位 (DC 的值。在减法运算中,C DC 状态位分别作为借位 和半借位
根据所使用的指令模式,ALU 可执行 8 位或 16 位运算。 根据指令的寻址模式, ALU 运算的数据可以来自 W 寄 存器阵列或数据存储器。同样,ALU 的输出数据可被写 入 W 寄存器阵列或数据存储单元。
位。
C = 可清零位
(1)
PIC24F CPU 融入了对乘法和除法的硬件支持。它带有 专用的硬件乘法器以及支持 16 位除数除法的硬件。

3.3.1 乘法器

ALU 包含一个高速 17 x 17 位乘法器。它支持以下几
种无符号、有符号或混合符号乘法运算模式:
1. 16 x 16 位有符号
2. 16 x 16 位无符号
3. 16 位有符号 x 5 位 (立即数)无符号
4. 16 位无符号 x 16 位无符号
5. 16 位无符号 x 5 位 (立即数)无符号
6. 16 位无符号 x 16 位有符号
7. 8 位无符号 x 8 位无符号
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 第 25
PIC24FJ64GA104 系列

3.3.2 除法器

除法模块支持具有以下数据长度的有符号和无符号整数 除法运算:
1. 32 位有符号 /16 位有符号除法
2. 32 位无符号 /16 位无符号除法
3. 16 位有符号 /16 位有符号除法
4. 16 位无符号 /16 位无符号除法
所有除法指令的商都被放在 W0 中,余数放在 W1 中。 16 位有符号和无符号 DIV 指令可为 16 位除数指定任一 W 寄存器(Wn),为 32 位被除数指定任意两个连续的 W 寄存器(W(m + 1):Wm)。除法运算中处理除数的每
一位需要一个周期,因此 32 /16 位和 16 /16 位指 令的执行周期数相同。
3-2 使用单位和多位移位操作的指令
指令 说明
ASR
SL
LSR
将源寄存器算术右移一位或多位。 将源寄存器左移一位或多位。 将源寄存器逻辑右移一位或多位。

3.3.3 多位移位支持

PIC24F ALU 支持单位和单周期、多位算术和逻辑移
位。多位移位使用移位寄存器模块实现,能够在单个周 期内执行最多 15 位的算术右移或最多 15 位的算术左 移。所有的多位移位指令都只支持操作数源寄存器和结 果目标寄存器的寄存器直接寻址模式。
下面的表 3-2 中提供了使用移位操作的指令的完整汇总。
DS39951B_CN 26 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

4.0 存储器构成

数器 (PC)、表操作或数据空间重映射得到的 24 位值 寻址这一空间,如第 4.3 节 “程序存储空间与数据存储
作为哈佛架构器件, PIC24F 单片机具有独立的程序和 数据存储空间以及总线。这一架构同时还允许在代码执 行过程中从数据空间直接访问程序存储器。

4.1 程序地址空间

PIC24FJ64GA104 系列器件的程序地址存储空间可存
空间的接口”中所述。
用户只能访问程序存储空间的低半地址部分(地址范围 为 000000h 7FFFFFh)。使用 TBLRD/TBLWT 指令 时,情况有所不同,这两条指令使用 TBLPAG<7> 以允 许访问配置存储空间中的配置位和器件 ID
4-1 给出了 PIC24FJ64GA104 系列器件的存储器映射。
4M 个指令字。可通过由程序执行过程中 23 位程序计

4-1 PIC24FJ64GA104 系列器件的程序存储空间映射

PIC24FJ32GA10X
GOTO 指令
复位地址
中断向量表
保留
备用向量表
用户闪存
程序存储器
11K 指令字)
闪存配置字
PIC24FJ64GA10X
22K 指令字)
GOTO 指令
复位地址
中断向量表
保留
备用向量表
用户闪存
程序存储器
000000h 000002h 000004h
0000FEh 000100h 000104h
0001FEh 000200h
0057FEh 005800h
用户存储空间
配置存储空间
未实现 读为 0
保留
器件配置寄存器
保留
DEVID (2)
闪存配置字
未实现 读为 0
保留
器件配置寄存器
保留
DEVID (2)
00ABFEh 00AC00h
7FFFFFh 800000h
F7FFFEh F80000h
F8000Eh F80010h
FEFFFEh FF0000h
FFFFFFh
注: 存储区未按比例显示。
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 27
PIC24FJ64GA104 系列

4.1.1 程序存储器构成

程序存储空间由可字寻址的块构成。虽然它被视为 24 位 宽,但将程序存储器的每个地址视作一个低位字和一个 高位字的组合更加合理,其中高位字的高字节部分未实 现。低位字的地址始终为偶数,而高位字的地址为奇数
(图 4-2)。
程序存储器地址始终在低位字处按字对齐,并且在代码 执行过程中地址将递增或递减 2。这种寻址模式与数据 存储空间寻址兼容,且为访问程序存储空间中的数据提 供了可能。

4.1.2 存储器硬编码向量

所有 PIC24F 器件中从 00000h 000200h 之间的地址 空间都是保留的,用来存储硬编码的程序执行向量。提 供了一个硬件复位向量将代码执行从器件复位时 PC 的 默认值重新定位到代码实际起始处。用户可在地址 000000h 处编写一条 GOTO 指令以将代码的实际起始地 址设置为 000002h
PIC24F 器件也具有两个中断向量表,地址分别为从 000004h 0000FFh 000100h 0001FFh。这两个 向量表允许使用不同的中断服务程序 (Interrupt Service RoutineISR)处理每个器件中断源。关于中断向量表
更详细的讨论,请参见第 7.1 节 “中断向量表”。
4-2 程序存储器构成

4.1.3 闪存配置字

PIC24FJ64GA104 系列器件中,保留片上程序存储 器的开始 4 个字用于配置信息。器件复位时,该配置信 息被复制到相应的配置寄存器中。PIC24FJ64GA104 系 列中器件的闪存配置字的地址如表 4-1 所示。图 4-1 给 出了闪存配置字以及其他存储器向量在存储器映射中的 位置。
程序存储器中的配置字为紧凑的格式。实际配置位被映 射到配置存储空间的几个不同的寄存器中。它们在闪存 配置字中的顺序并不反映它们在配置空间中的相应顺 序。第 25.1 节“配置位”中提供了关于器件配置字的更 多详细信息。
4-1 PIC24FJ64GA104 系列器件的闪
存配置字
器件
PIC24FJ32GB0 11,008
PIC24FJ64GB0 22,016
程序存储器
(字)
配置字地址
0057F8h: 0057FEh
00ABF8h:
00ABFEh
MSW
地址 LSW 地址)
000001h 000003h
000005h 000007h
00000000
00000000 00000000
00000000
程序存储器
“虚拟”字节
(读为 0
最高有效字
23
指令宽度
最低有效字
PC 地址
0816
000000h 000002h
000004h 000006h
DS39951B_CN 28 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

4.2 数据地址空间

PIC24F 内核具有独立的 16 位宽数据存储空间,可将其 作为一个线性空间寻址。使用两个地址发生单元
Address Generation UnitAGU)分别对数据空间执行
读写操作。数据存储空间映射如图 4-3 所示。
数据存储空间中的所有有效地址 (Effective Address, EA)均为 16 位宽,并且指向数据空间内的字节。这种 构成方式使得数据空间的地址范围为 64 KB 32K 字。 数据存储空间的低半地址部分 (即当 EA<15> = 0 时) 用作实现的存储单元,而高半地址部分 (EA<15> = 1) 则保留为程序空间可视性区域 (见第 4.3.3 节“使用程 序空间可视性读程序存储器中的数据”)。
PIC24FJ64GA104 系列器件实现了总共 16 KB 的数据 存储器。如果 EA 指向了该区域以外的存储单元,则将 返回一个全零的字或字节。

4.2.1 数据空间宽度

数据存储空间由可字节寻址的 16 位宽的块构成。在数 据存储器和寄存器中的数据是以 16 位字为单位对齐 的,但所有数据空间的 EA 都被解析为字节。每个字的 最低有效字节 (LSB)部分具有偶地址,而最高有效字 节(MSB)部分则具有奇地址。
4-3 PIC24FJ64GA104 系列器件的数据存储空间映射
已实现的
数据 RAM
MSB
地址
0001h
07FFh
0801h
1FFFh
2001h
27FFh
2801h
SFR 空间
数据 RAM
LSBMSB
LSB
地址
0000h
07FEh 0800h
1FFEh 2000h
27FEh 2800h
SFR
空间
Near
数据空间
7FFFh
8001h
FFFFh
注: 数据存储区未按比例显示。
未实现
读为 0
7FFFh 8000h
程序空间
可视性区域
FFFEh
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 第 29
PIC24FJ64GA104 系列

4.2.2 数据存储器构成和对齐方式

为维持与 PIC®器件的向后兼容性和提高数据存储空间 的使用效率,PIC24F 指令集同时支持字和字节操作。 字节访问会在内部对按字对齐的存储空间的所有有效 地址计算进行调整。例如,对于执行后修改寄存器间接 寻址模式 [Ws++] 的结果,字节操作时,内核将其识别 为值 Ws + 1 ;而字操作时,内核将其识别为值 Ws + 2
使用任何 EA LSb 来确定要选取的字节,数据字节读 操作将读取包含该字节的整个字。选定的字节被放在数 据路径的 LSB 处。也就是说,数据存储器和寄存器被组 织为两个并行的字节宽的实体,它们共享(字)地址译 码,但写入线相互独立。数据字节写操作只写入阵列或 寄存器中与字节地址匹配的那一侧。
所有字访问必须按偶地址对齐。不支持不对齐的字数据 取操作,因此在进行混合字节和字操作或从 8 MCU 代码移植时,必须要小心。如果试图进行不对齐的读或 写操作,将产生地址错误陷阱。如果在读操作时产生错 误,正在执行的指令将完成;而如果在写操作时产生错 误,指令仍将执行,但不会进行写入。无论是哪种情况 都将产生陷阱,从而允许系统和 / 或用户检查地址错误 发生之前的机器状态。
所有装入 W 寄存器的字节都将被装入最低有效字节
LSB)。最高有效字节不变。
提供了一条符号扩展 (SE)指令,允许用户将 8 位有 符号数据转换为 16 位有符号值。或者,对于 16 位无符 号数据,用户可以通过在适当地址处执行一条零扩展
ZE)指令清零任何 W 寄存器的 MSB
尽管大多数指令能够对字或字节大小的数据进行操作, 但必须要注意的是,某些指令仅适用于字操作。

4.2.3 NEAR 数据空间

0000h 1FFFh 之间的 8 KB 的区域被称为 Near 数 据空间。可以使用所有存储器直接寻址指令中的 13 位 绝对地址字段直接寻址这一空间中的存储单元。剩余的 数据空间通过间接寻址访问。此外,还可以使用 MOV 指 令寻址整个数据空间,支持使用 16 位地址字段的存储 器直接寻址。

4.2.4 SFR 空间

Near 数据空间的前 2 KB 单元 (从 0000h 07FFh 主要被特殊功能寄存器 (Special Function Register SFR)占用。 PIC24F 的内核和外设模块使用这些寄存 器来控制器件的工作。
SFR 被分配给受其控制的模块,通常一个模块会使用一
SFR。许多 SFR 空间包含未用的地址单元,它们读 为 0。显示实际实现的 SFR 所在地址的 SFR 空间的框 图如表 4-2 所示。每个已实现区域指示一个 32 字节区 域,其中至少有一个地址实现为SFR。表 4-3至表 4-26 给出了已实现 SFR 及其地址的完整列表。
4-2 SFR 数据空间的已实现区域
SFR 空间地址
xx00 xx20 xx40 xx60 xx80 xxA0 xxC0 xxE0
000h
100h
200h I
300h A/D A/D/CTMU
400h
500h
600h PMP RTCC
700h
图注: — = 该存储块中未实现的 SFR
定时器 捕捉 比较
2
C™ UART SPI I/O
内核
CRC/ 比较器 比较器
系统 /DS
ICN
NVM/PMD
中断
PPS
DS39951B_CN 30 初稿 © 2009 Microchip Technology Inc.
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 31
4-3 CPU 内核寄存器映射
寄存器
名称
WREG0 0000
WREG1 0002
WREG2 0004
WREG3 0006
WREG4 0008
WREG5 000A
WREG6 000C
WREG7 000E
WREG8 0010
WREG9 0012
WREG10 0014
WREG11 0016
WREG12 0018
WREG13 001A
WREG14 001C
WREG15 001E
SPLIM 0020
PCL 002E
PCH 0030
TBLPAG 0032
PSVPAG 0034
RCOUNT 0036
SR 0042
CORCON 0044
DISICNT 0052
图注: — = 未实现,读为 0。复位值以十六进制显示。
地址
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
DC IPL2 IPL1 IPL0 RA N OV Z C 0000
IPL3 PSV 0000
工作寄存器 0
工作寄存器 1
工作寄存器 2
工作寄存器 3
工作寄存器 4
工作寄存器 5
工作寄存器 6
工作寄存器 7
工作寄存器 8
工作寄存器 9
工作寄存器 10
工作寄存器 11
工作寄存器 12
工作寄存器 13
工作寄存器 14
工作寄存器 15
堆栈指针限制值寄存器
程序计数器低位字寄存器
Repeat 循环计数器寄存器
禁止中断计数器寄存器
程序计数器寄存器的高字节
表存储器页地址寄存器
程序空间可视性页地址寄存器
所有复位 时的状态
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0800
xxxx
0000
0000
0000
0000
xxxx
xxxx
PIC24FJ64GA104 系列
DS39951B_CN 32 初稿 © 2009 Microchip Technology Inc.
4-4 ICN 寄存器映射
寄存器
名称
CNEN1 0060 CN15IE CN14IE CN13IE CN12IE CN11IE CN10IE
CNEN2 0062 CN30IE CN29IE CN28IE
CNPU1 0068 CN15PUE CN14PUE CN13PUE CN12PUE CN11PUE CN10PUE
CNPU2 006A CN30PUE CN29PUE CN28PUE
图注: 注
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
(1)
(1)
— =
未实现,读为0。复位值以十六进制显示。
1:在28引脚器件上未实现;读为0。
CN27IE CN26IE
CN27PUE CN26PUE
(1)
(1)
(1)
(1)
CN9IE
CN25IE
CN9PUE
CN25PUE
(1)
(1)
(1)
(1)
(1)
CN8IE
CN7IE CN6IE CN5IE CN4IE CN3IE CN2IE CN1IE CN0IE
CN24IE CN23IE CN22IE CN21IE CN20IE
(1)
CN8PUE
CN7PUE CN6PUE CN5PUE CN4PUE CN3PUE CN2PUE CN1PUE CN0PUE
CN24PUE CN23PUE CN22PUE CN21PUE CN20PUE
(1)
(1)
CN19IE
CN19PUE
(1)
(1)
CN18IE
CN18PUE
(1)
(1)
CN17IE
CN17PUE
(1)
(1)
CN16IE
CN16PUE
PIC24FJ64GA104 系列
所有复位 时的状态
0000
0000
0000
0000
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 33
4-5 中断控制器寄存器映射
寄存器
名称
INTCON1 0080 NSTDIS
INTCON2 0082 ALTIVT DISI
IFS0 0084
IFS1 0086 U2TXIF U2RXIF INT2IF T5IF T4IF OC4IF OC3IF
IFS2 0088
IFS3 008A
IFS4 008C
IFS5 008E
IEC0 0094
IEC1 0096 U2TXIE U2RXIE INT2IE T5IE T4IE OC4IE OC3IE
IEC2 0098
IEC3 009A
IEC4 009C
IEC5 009E
IPC0 00A4
IPC1 00A6
IPC2 00A8
IPC3 00AA
IPC4 00AC
IPC5 00AE
IPC6 00B0
IPC7 00B2
IPC8 00B4
IPC9 00B6
IPC10 00B8
IPC11 00BA
IPC12 00BC
IPC15 00C2
IPC16 00C4
IPC18 00C8
IPC19 00CA
IPC21 00CE
INTTREG 00E0 CPUIRQ
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
MATHERR ADDRERR STKERR OSCFAIL 0000
INT2EP INT1EP INT0EP 0000
AD1IF U1TXIF U1RXIF SPI1IF SPF1IF T3IF T2IF OC2IF IC2IF T1IF OC1IF IC1IF INT0IF 0000
—PMPIF— —OC5IF— IC5IF IC4IF IC3IF SPI2IF SPF2IF 0000
—RTCIF— MI2C2IF SI2C2IF 0000
—CTMUIF— —LVDIF— CRCIF U2ERIF U1ERIF 0000
0000
AD1IE U1TXIE U1RXIE SPI1IE SPF1IE T3IE T2IE OC2IE IC2IE T1IE OC1IE IC1IE INT0IE 0000
—PMPIE— —OC5IE— IC5IE IC4IE IC3IE SPI2IE SPF2IE 0000
—RTCIE— MI2C2IE SI2C2IE 0000
—CTMUIE— —LVDIE— CRCIE U2ERIE U1ERIE 0000
0000
T1IP2 T1IP1 T1IP0 OC1IP2 OC1IP1 OC1IP0 IC1IP2 IC1IP1 IC1IP0 INT0IP2 INT0IP1 INT0IP0 4444
T2IP2 T2IP1 T2IP0 OC2IP2 OC2IP1 OC2IP0 IC2IP2 IC2IP1 IC2IP0 4440
U1RXIP2 U1RXIP1 U1RXIP0 SPI1IP2 SPI1IP1 SPI1IP0 SPF1IP2 SPF1IP1 SPF1IP0 T3IP2 T3IP1 T3IP0 4444
AD1IP2 AD1IP1 AD1IP0 U1TXIP2 U1TXIP1 U1TXIP0 0044
CNIP2 CNIP1 CNIP0 CMIP2 CMIP1 CMIP0 MI2C1IP2 MI2C1IP1 MI2C1IP0 SI2C1IP2 SI2C1IP1 SI2C1IP0 4444
INT1IP2 INT1IP1 INT1IP0 0004
T4IP2 T4IP1 T4IP0 OC4IP2 OC4IP1 OC4IP0 OC3IP2 OC3IP1 OC3IP0 4440
U2TXIP2 U2TXIP1 U2TXIP0 U2RXIP2 U2RXIP1 U2RXIP0 INT2IP2 INT2IP1 INT2IP0 T5IP2 T5IP1 T5IP0 4444
SPI2IP2 SPI2IP1 SPI2IP0 SPF2IP2 SPF2IP1 SPF2IP0 0044
— IC5IP2IC5IP1IC5IP0 — IC4IP2IC4IP1IC4IP0 — IC3IP2 IC3IP1 IC3IP0 4440
OC5IP2 OC5IP1 OC5IP0 0040
PMPIP2 PMPIP1 PMPIP0 0040
MI2C2IP2 MI2C2IP1 MI2C2IP0 SI2C2IP2 SI2C2IP1 SI2C2IP0 0440
— RTCIP2RTCIP1RTCIP0 — 0400
CRCIP2 CRCIP1 CRCIP0 U2ERIP2 U2ERIP1 U2ERIP0 U1ERIP2 U1ERIP1 U1ERIP0 4440
LVDIP2 LVDIP1 LVDIP0 0004
CTMUIP2 CTMUIP1 CTMUIP0 0040
0400
—VHOLD— ILR3 ILR2 ILR1 ILR0 VECNUM6 VECNUM5 VECNUM4 VECNUM3 VECNUM2 VECNUM1 VECNUM0 0000
所有复位 时的状态
INT1IF CNIF CMIF MI2C1IF SI2C1IF 0000
INT1IE CNIE CMIE MI2C1IE SI2C1IE 0000
PIC24FJ64GA104 系列
DS39951B_CN 34 初稿 © 2009 Microchip Technology Inc.
4-6 定时器寄存器映射
寄存器
名称
TMR1 0100
PR1 0102
T1CON 0104 TON
TMR2 0106
TMR3HLD 0108
TMR3 010A
PR2 010C
PR3 010E
T2CON 0110 TON
T3CON 0112 TON
TMR4 0114
TMR5HLD 0116
TMR5 0118
PR4 011A
PR5 011C
T4CON 011E TON
T5CON 0120 TON
图注: — = 未实现,读为 0。复位值以十六进制显示。
地址
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
—TSIDL— TGATE TCKPS1 TCKPS0 TSYNC TCS 0000
—TSIDL— TGATE TCKPS1 TCKPS0 T32 —TCS— 0000
—TSIDL— TGATE TCKPS1 TCKPS0 —TCS— 0000
—TSIDL— TGATE TCKPS1 TCKPS0 T32 —TCS— 0000
—TSIDL— TGATE TCKPS1 TCKPS0 —TCS— 0000
Timer1 寄存器
Timer1 周期寄存器
Timer2 寄存器
Timer3 保持寄存器 (仅适用于 32 位定时器操作)
Timer3 寄存器
Timer2 周期寄存器
Timer3 周期寄存器
Timer4 寄存器
Timer5 保持寄存器 (仅适用于 32 位定时器操作)
Timer5 寄存器
Timer4 周期寄存器
Timer5 周期寄存器
PIC24FJ64GA104 系列
所有复位 时的状态
0000
FFFF
0000
0000
0000
FFFF
FFFF
0000
0000
0000
FFFF
FFFF
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 35
4-7 输入捕捉寄存器映射
寄存器
名称
IC1CON1 0140
IC1CON2 0142
IC1BUF 0144
IC1TMR 0146
IC2CON1 0148
IC2CON2 014A
IC2BUF 014C
IC2TMR 014E
IC3CON1 0150
IC3CON2 0152
IC3BUF 0154
IC3TMR 0156
IC4CON1 0158
IC4CON2 015A
IC4BUF 015C
IC4TMR 015E
IC5CON1 0160
IC5CON2 0162
IC5BUF 0164
IC5TMR 0166
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
ICSIDL ICTSEL2 ICTSEL1 ICTSEL0 ICI1 ICI0 ICOV ICBNE ICM2 ICM1 ICM0 0000
IC32 ICTRIG TRIGSTAT SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000D
ICSIDL ICTSEL2 ICTSEL1 ICTSEL0 ICI1 ICI0 ICOV ICBNE ICM2 ICM1 ICM0 0000
IC32 ICTRIG TRIGSTAT SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000D
ICSIDL ICTSEL2 ICTSEL1 ICTSEL0 ICI1 ICI0 ICOV ICBNE ICM2 ICM1 ICM0 0000
IC32 ICTRIG TRIGSTAT SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000D
ICSIDL ICTSEL2 ICTSEL1 ICTSEL0 ICI1 ICI0 ICOV ICBNE ICM2 ICM1 ICM0 0000
IC32 ICTRIG TRIGSTAT SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000D
ICSIDL ICTSEL2 ICTSEL1 ICTSEL0 ICI1 ICI0 ICOV ICBNE ICM2 ICM1 ICM0 0000
IC32 ICTRIG TRIGSTAT SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000D
输入捕捉 1 缓冲寄存器
定时器值 1 寄存器
输入捕捉 2 缓冲寄存器
定时器值 2 寄存器
输入捕捉 3 缓冲寄存器
定时器值 3 寄存器
输入捕捉 4 缓冲寄存器
定时器值 4 寄存器
输入捕捉 5 缓冲寄存器
定时器值 5 寄存器
所有复位 时的状态
0000
xxxx
0000
xxxx
0000
xxxx
0000
xxxx
0000
xxxx
PIC24FJ64GA104 系列
DS39951B_CN 36 初稿 © 2009 Microchip Technology Inc.
4-8 输出比较寄存器映射
寄存器名称 地址
OC1CON1 0190 OCSIDL OCTSEL2 OCTSEL1 OCTSEL0 ENFLT2 ENFLT1 ENFLT0 OCFLT2 OCFLT1 OCFLT0 TRIGMODE OCM2 OCM1 OCM0
OC1CON2 0192 FLTMD FLTOUT FLTTRIEN OCINV DCB1 DCB0 OC32 OCTRIG TRIGSTAT OCTRIS SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0
OC1RS 0194
OC1R 0196
OC1TMR 0198
OC2CON1 019A OCSIDL OCTSEL2 OCTSEL1 OCTSEL0
OC2CON2 019C FLTMD FLTOUT FLTTRIEN OCINV DCB1 DCB0 OC32 OCTRIG TRIGSTAT OCTRIS SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0
OC2RS 019E
OC2R 01A0
OC2TMR 01A2
OC3CON1 01A4 OCSIDL OCTSEL2 OCTSEL1 OCTSEL0
OC3CON2 01A6 FLTMD FLTOUT FLTTRIEN OCINV DCB1 DCB0 OC32 OCTRIG TRIGSTAT OCTRIS SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0
OC3RS 01A8
OC3R 01AA
OC3TMR 01AC
OC4CON1 01AE OCSIDL OCTSEL2 OCTSEL1 OCTSEL0
OC4CON2 01B0 FLTMD FLTOUT FLTTRIEN OCINV DCB1 DCB0 OC32 OCTRIG TRIGSTAT OCTRIS SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0
OC4RS 01B2
OC4R 01B4
OC4TMR 01B6
OC5CON1 01B8 OCSIDL OCTSEL2 OCTSEL1 OCTSEL0
OC5CON2 01BA FLTMD FLTOUT FLTTRIEN OCINV DCB1 DCB0 OC32 OCTRIG TRIGSTAT OCTRIS SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0
OC5RS 01BC
OC5R 01BE
OC5TMR 01C0
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
输出比较1辅助寄存器
输出比较1寄存器 定时器值1寄存器
ENFLT2 ENFLT1
输出比较2辅助寄存器
ENFLT2 ENFLT1
输出比较3辅助寄存器
ENFLT2 ENFLT1
输出比较4辅助寄存器
ENFLT2 ENFLT1
输出比较5辅助寄存器
ENFLT0
输出比较2寄存器 定时器值2寄存器
ENFLT0
输出比较3寄存器 定时器值3寄存器
ENFLT0
输出比较4寄存器 定时器值4寄存器
ENFLT0
输出比较5寄存器 定时器值5寄存器
OCFLT2 OCFLT1
OCFLT2 OCFLT1
OCFLT2 OCFLT1
OCFLT2 OCFLT1
OCFLT0 TRIGMODE OCM2 OCM1 OCM0
OCFLT0 TRIGMODE OCM2 OCM1 OCM0
OCFLT0 TRIGMODE OCM2 OCM1 OCM0
OCFLT0 TRIGMODE OCM2 OCM1 OCM0
PIC24FJ64GA104 系列
所有复位 时的状态
0000
000C
0000
0000
xxxx
0000
000C
0000
0000
xxxx
0000
000C
0000
0000
xxxx
0000
000C
0000
0000
xxxx
0000
000C
0000
0000
xxxx
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 37
4-9 I2C™ 寄存器映射
寄存器名称 地址
I2C1RCV 0200
I2C1TRN 0202
I2C1BRG 0204
I2C1CON 0206 I2CEN
I2C1STAT 0208 ACKSTAT TRSTAT
I2C1ADD 020A
I2C1MSK 020C
I2C2RCV 0210
I2C2TRN 0212
I2C2BRG 0214
I2C2CON 0216 I2CEN
I2C2STAT 0218 ACKSTAT TRSTAT
I2C2ADD 021A
I2C2MSK 021C
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
I2CSIDL SCLREL IPMIEN A10M DISSLW SMEN GCEN STREN ACKDT ACKEN RCEN PEN RSEN SEN 1000
BCL GCSTAT ADD10 IWCOL I2COV D/A PSR/WRBF TBF 0000
I2CSIDL SCLREL IPMIEN A10M DISSLW SMEN GCEN STREN ACKDT ACKEN RCEN PEN RSEN SEN 1000
BCL GCSTAT ADD10 IWCOL I2COV D/A PSR/WRBF TBF 0000
接收寄存器 发送寄存器
波特率发生器寄存器
地址寄存器
地址掩码寄存器
接收寄存器 发送寄存器
波特率发生器寄存器
地址寄存器
地址掩码寄存器
所有复位 时的状态
0000
00FF
0000
0000
0000
0000
00FF
0000
0000
0000
4-10 UART 寄存器映射
寄存器名称 地址
U1MODE 0220 UARTEN
U1STA 0222 UTXISEL1 UTXINV UTXISEL0
U1TXREG 0224
U1RXREG 0226
U1BRG 0228
U2MODE 0230 UARTEN
U2STA 0232 UTXISEL1 UTXINV UTXISEL0
U2TXREG 0234
U2RXREG 0236
U2BRG 0238
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
USIDL IREN RTSMD UEN1 UEN0 WAKE LPBACK ABAUD RXINV BRGH PDSEL1 PDSEL0 STSEL 0000
USIDL IREN RTSMD UEN1 UEN0 WAKE LPBACK ABAUD RXINV BRGH PDSEL1 PDSEL0 STSEL 0000
所有复位 时的状态
UTXBRK UTXEN UTXBF TRMT URXISEL1 URXISEL0 ADDEN RIDLE PERR FERR OERR URXDA 0110
发送寄存器 接收寄存器
波特率发生器预分频器寄存器
UTXBRK UTXEN UTXBF TRMT URXISEL1 URXISEL0 ADDEN RIDLE PERR FERR OERR URXDA 0110
发送寄存器 接收寄存器
波特率发生器预分频器寄存器
xxxx
0000
0000
xxxx
0000
0000
PIC24FJ64GA104 系列
DS39951B_CN 38 初稿 © 2009 Microchip Technology Inc.
4-11 SPI 寄存器映射
寄存器名称 地址
SPI1STAT 0240 SPIEN
SPI1CON1 0242
SPI1CON2 0244 FRMEN SPIFSD SPIFPOL
SPI1BUF 0248
SPI2STAT 0260 SPIEN
SPI2CON1 0262
SPI2CON2 0264 FRMEN SPIFSD SPIFPOL
SPI2BUF 0268
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
—SPISIDL— SPIBEC2 SPIBEC1 SPIBEC0 SRMPT SPIROV SRXMPT SISEL2 SISEL1 SISEL0 SPITBF SPIRBF 0000
DISSCK DISSDO MODE16 SMP CKE SSEN CKP MSTEN SPRE2 SPRE1 SPRE0 PPRE1 PPRE0 0000
—SPISIDL— SPIBEC2 SPIBEC1 SPIBEC0 SRMPT SPIROV SRXMPT SISEL2 SISEL1 SISEL0 SPITBF SPIRBF 0000
DISSCK DISSDO MODE16 SMP CKE SSEN CKP MSTEN SPRE2 SPRE1 SPRE0 PPRE1 PPRE0 0000
SPIFE SPIBEN 0000
发送和接收缓冲区
SPIFE SPIBEN 0000
发送和接收缓冲区
所有复位 时的状态
0000
0000
4-12 PORTA 寄存器映射
寄存器
名称
TRISA 02C0
PORTA 02C2
LATA 02C4
ODCA 02C6
图注: — = 未实现,读为 0。复位值以十六进制显示。显示的复位值针对 44 引脚器件。 注 1: 这些位在 28 引脚器件上未实现;读为 0。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10
地址
TRISA10 TRISA9 TRISA8 TRISA7 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 079F
RA10 RA9 RA8 RA7 RA4 RA3 RA2 RA1 RA0 xxxx
L ATA10 L ATA9 LATA 8 LATA 7 LATA 4 LATA3 LATA 2 LATA1 LATA0 xxxx
ODA10 ODA9 ODA8 ODA7 ODA4 ODA3 ODA2 ODA1 ODA0 0000
(1)
Bit 9
(1)
Bit 8
(1)
Bit 7
(1)
Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
所有复位 时的状态
4-13 PORTB 寄存器映射
寄存器
名称
TRISB 02C8 TRISB15 TRISB14 TRISB13 TRISB12 TRISB11 TRISB10 TRISB9 TRISB8 TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 EFBF
PORTB 02CA RB15 RB14 RB13 RB12 RB11 RB10 RB9 RB8 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx
LATB 02CC LATB15 LATB14 LATB13 LATB12 LATB11 LATB10 LATB9 LATB8 LATB7 LATB6 LATB5 LATB4 LATB3 LATB2 LATB1 LATB0 xxxx
ODCB 02CE ODB15 ODB14 ODB13 ODB12 ODB11 ODB10 ODB9 ODB8 ODB7 ODB6 ODB5 ODB4 ODB3 ODB2 ODB1 ODB0 0000
图注: — = 未实现,读为 0。复位值以十六进制显示。
地址
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
所有复位 时的状态
PIC24FJ64GA104 系列
4-14 PORTC 寄存器映射
寄存器
名称
TRISC 02D0
PORTC 02D2
LATC 02D4
ODCC 02D6
图注: — = 未实现,读为 0。复位值以十六进制显示。显示的复位值针对 44 引脚器件。 注 1: 这些位在 28 引脚器件上未实现;读为 0。
地址
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9
TRISC9 TRISC8 TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 03FF
RC9 RC8 RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx
LATC9 LATC8 LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0 xxxx
ODC9 ODC8 ODC7 ODC6 ODC5 ODC4 ODC3 ODC2 ODC1 ODC0 0000
(1)
Bit 8
(1)
Bit 7
(1)
Bit 6
(1)
Bit 5
(1)
Bit 4
(1)
Bit 3
(1)
Bit 2
(1)
Bit 1
(1)
Bit 0
(1)
所有复位 时的状态
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 39
4-15 焊盘配置寄存器映射
寄存器名称 地址
PADCFG1 02FC
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
RTSECSEL1 RTSECSEL0 PMPTTL 0000
所有复位 时的状态
4-16 ADC 寄存器映射
寄存器名称 地址
ADC1BUF0 0300
ADC1BUF1 0302
ADC1BUF2 0304
ADC1BUF3 0306
ADC1BUF4 0308
ADC1BUF5 030A
ADC1BUF6 030C
ADC1BUF7 030E
ADC1BUF8 0310
ADC1BUF9 0312
ADC1BUFA 0314
ADC1BUFB 0316
ADC1BUFC 0318
ADC1BUFD 031A
ADC1BUFE 031C
ADC1BUFF 031E
AD1CON1 0320 ADON
AD1CON2 0322 VCFG2 VCFG1 VCFG0
AD1CON3 0324 ADRC
AD1CHS 0328 CH0NB
AD1PCFG 032C PCFG15 PCFG14 PCFG13 PCFG12
AD1CSSL 0330 CSSL15 CSSL14 CSSL13 CSSL12
图注: — = 未实现,读为 0 ; r = 保留,保持为 0。复位值以十六进制显示。 注 1: 这些位在 28 引脚器件上不可用;读为 0。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
—ADSIDL — FORM1 FORM0 SSRC2 SSRC1 SSRC0 ASAM SAMP DONE 0000
r CSCNA —BUFS— SMPI3 SMPI2 SMPI1 SMPI0 BUFM ALTS 0000
r r SAMC4 SAMC3 SAMC2 SAMC1 SAMC0 ADCS7 ADCS6 ADCS5 ADCS4 ADCS3 ADCS2 ADCS1 ADCS0 0000
CH0SB4 CH0SB3 CH0SB2 CH0SB1 CH0SB0 CH0NA CH0SA4 CH0SA3 CH0SA2 CH0SA1 CH0SA0 0000
(1)
PCFG11 PCFG10 PCFG9 PCFG8
(1)
CSSL11 CSSL10 CSSL9 CSSL8
ADC 数据缓冲区 0 ADC 数据缓冲区 1 ADC 数据缓冲区 2 ADC 数据缓冲区 3 ADC 数据缓冲区 4 ADC 数据缓冲区 5 ADC 数据缓冲区 6 ADC 数据缓冲区 7 ADC 数据缓冲区 8
ADC 数据缓冲区 9 ADC 数据缓冲区 10 ADC 数据缓冲区 11 ADC 数据缓冲区 12 ADC 数据缓冲区 13 ADC 数据缓冲区 14 ADC 数据缓冲区 15
(1)
PCFG7
(1)
CSSL7
(1)
(1)
PCFG6
CSSL6
(1)
PCFG5 PCFG4 PCFG3 PCFG2 PCFG1 PCFG0 0000
(1)
CSSL5 CSSL4 CSSL3 CSSL2 CSSL1 CSSL0 0000
所有复位 时的状态
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
PIC24FJ64GA104 系列
4-17 CTMU 寄存器映射
寄存器名称 地址
CTMUCON 033C CTMUEN
CTMUICON 033E ITRIM5 ITRIM4 ITRIM3 ITRIM2 ITRIM1 ITRIM0 IRNG1 IRNG0
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
CTMUSIDL TGEN EDGEN EDGSEQEN IDISSEN CTTRIG EDG2POL EDG2SEL1 EDG2SEL0 EDG1POL EDG1SEL1 EDG1SEL0 EDG2STAT EDG1STAT 0000
所有复位 时的状态
0000
DS39951B_CN 40 初稿 © 2009 Microchip Technology Inc.
4-18:并/ 从端口寄存器映射
寄存器名称 地址
PMCON 0600 PMPEN
PMMODE 0602 BUSY IRQM1 IRQM0 INCM1 INCM0 MODE16 MODE1 MODE0 WAITB1 WAITB0 WAITM3 WAITM2 WAITM1 WAITM0 WAITE1 WAITE0 0000
PMADDR 0604
PMDOUT1
PMDOUT2 0606
PMDIN1 0608
PMDIN2 060A
PMAEN 060C
PMSTAT 060E IBF IBOV
图注: — = 未实现,读为 0。复位值以十六进制显示。 注 1: 这些位在 28 引脚器件上不可用;读为 0。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
PSIDL ADRMUX1 ADRMUX0 PTBEEN PTWREN PTRDEN CSF1 CSF0 ALP CS1P BEP WRSP RDSP 0000
—CS1— ADDR10
—PTEN14— —PTEN10
IB3F IB2F IB1F IB0F OBE OBUF OB3E OB2E OB1E OB0E 0000
(1)
(1)
(1)
ADDR9
并行端口数据输出寄存器 1 (缓冲区 0 和 1) 并行端口数据输出寄存器 2 (缓冲区 2 和 3) 并行端口数据输入寄存器 1 (缓冲区 0 和 1) 并行端口数据输入寄存器 2 (缓冲区 2 和 3)
(1)
PTEN9
ADDR8
PTEN8
(1)
(1)
ADDR7
PTEN7
(1)
(1)
ADDR6
PTEN6
(1)
(1)
ADDR5
PTEN5
(1)
(1)
ADDR4
PTEN4
(1)
(1)
ADDR3
PTEN3
(1)
(1)
ADDR2
PTEN2
(1)
ADDR1 ADDR0 0000
(1)
PTEN1 PTEN0 0000
所有复位 时的状态
0000
0000
0000
0000
4-19 实时时钟和日历寄存器映射
寄存器名称 地址
ALRMVAL 0620
ALCFGRPT 0622 ALRMEN CHIME AMASK3 AMASK2 AMASK1 AMASK0 ALRMPTR1 ALRMPTR0 ARPT7 ARPT6 ARPT5 ARPT4 ARPT3 ARPT2 ARPT1 ARPT0 0000
RTCVAL 0624
RCFGCAL 0626 RTCEN
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
基于 ALRMPTR<1:0> 的闹钟值寄存器窗口
基于 RTCPTR<1:0> RTCC 值寄存器窗口
RTCWREN RTCSYNC HALFSEC RTCOE RTCPTR1 RTCPTR0 CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 xxxx
所有复位 时的状态
xxxx
xxxx
4-20 CRC 寄存器映射
寄存器名称 地址
CRCCON1 0640 CRCEN
CRCCON2 0642
CRCXORL0644X15X14X13X12X11X10X9X8X7X6X5X4X3X2X1
CRCXORH 0646 X31 X30 X29 X28 X27 X26 X25 X24 X23 X22 X21 X20 X19 X18 X17 X16 0000
CRCDATL 0648
CRCDATH 064A
CRCWDATL 064C
CRCWDATH 064E
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
CSIDL VWORD4 VWORD3 VWORD2 VWORD1 VWORD0 CRCFUL CRCMPT CRCISEL CRCGO LENDIAN 0000
DWIDTH4 DWIDTH3 DWIDTH2 DWIDTH1 DWIDTH0 PLEN4 PLEN3 PLEN2 PLEN1 PLEN0 0000
CRC 数据输入寄存器的低位字 CRC 数据输入寄存器的高位字
CRC 结果寄存器的低位字 CRC 结果寄存器的高位字
所有复位 时的状态
0000
xxxx
xxxx
xxxx
xxxx
PIC24FJ64GA104 系列
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 41
4-21 比较器寄存器映射
寄存器名称 地址
CMSTAT 0650 CMIDL
CVRCON 0652
CM1CON 0654 CEN COE CPOL
CM2CON 065C CEN COE CPOL
CM3CON 0664 CEN COE CPOL
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
C3EVT C2EVT C1EVT C3OUT C2OUT C1OUT 0000
CVREFP CVREFM1 CVREFM0 CVREN CVROE CVRR CVRSS CVR3 CVR2 CVR1 CVR0 0000
所有复位 时的状态
CEVT COUT EVPOL1 EVPOL0 CREF CCH1 CCH0 0000
CEVT COUT EVPOL1 EVPOL0 CREF CCH1 CCH0 0000
CEVT COUT EVPOL1 EVPOL0 CREF CCH1 CCH0 0000
4-22 外设引脚选择寄存器映射
寄存器名称 地址
RPINR0 0680
RPINR1 0682
RPINR3 0686
RPINR4 0688
RPINR7 068E
RPINR8 0690
RPINR9 0692
RPINR11 0696
RPINR18 06A4
RPINR19 06A6
RPINR20 06A8
RPINR21 06AA
RPINR22 06AC
RPINR23 06AE
RPOR0 06C0
RPOR1 06C2
RPOR2 06C4
RPOR3 06C6
RPOR4 06C8
RPOR5 06CA
RPOR6 06CC
RPOR7 06CE
(1)
RPOR8
(1)
RPOR9
(1)
RPOR10
(1)
RPOR11
(1)
RPOR12
图注: — = 未实现,读为 0。复位值以十六进制显示。 注 1: 这些寄存器在 28 引脚器件上未实现;读为 0。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— INT1R4INT1R3INT1R2INT1R1INT1R0 — 1F00
INT2R4 INT2R3 INT2R2 INT2R1 INT2R0 001F
T3CKR4 T3CKR3 T3CKR2 T3CKR1 T3CKR0 T2CKR4 T2CKR3 T2CKR2 T2CKR1 T2CKR0 1F1F
T5CKR4 T5CKR3 T5CKR2 T5CKR1 T5CKR0 T4CKR4 T4CKR3 T4CKR2 T4CKR1 T4CKR0 1F1F
IC2R4 IC2R3 IC2R2 IC2R1 IC2R0 IC1R4 IC1R3 IC1R2 IC1R1 IC1R0 1F1F
IC4R4 IC4R3 IC4R2 IC4R1 IC4R0 IC3R4 IC3R3 IC3R2 IC3R1 IC3R0 1F1F
IC5R4 IC5R3 IC5R2 IC5R1 IC5R0 001F
OCFBR4 OCFBR3 OCFBR2 OCFBR1 OCFBR0 OCFAR4 OCFAR3 OCFAR2 OCFAR1 OCFAR0 1F1F
U1CTSR4 U1CTSR3 U1CTSR2 U1CTSR1 U1CTSR0 U1RXR4 U1RXR3 U1RXR2 U1RXR1 U1RXR0 1F1F
U2CTSR4 U2CTSR3 U2CTSR2 U2CTSR1 U2CTSR0 U2RXR4 U2RXR3 U2RXR2 U2RXR1 U2RXR0 1F1F
SCK1R4 SCK1R3 SCK1R2 SCK1R1 SCK1R0 SDI1R4 SDI1R3 SDI1R2 SDI1R1 SDI1R0 1F1F
SS1R4 SS1R3 SS1R2 SS1R1 SS1R0 001F
SCK2R4 SCK2R3 SCK2R2 SCK2R1 SCK2R0 SDI2R4 SDI2R3 SDI2R2 SDI2R1 SDI2R0 1F1F
SS2R4 SS2R3 SS2R2 SS2R1 SS2R0 001F
RP1R4 RP1R3 RP1R2 RP1R1 RP1R0 RP0R4 RP0R3 RP0R2 RP0R1 RP0R0 0000
RP3R4 RP3R3 RP3R2 RP3R1 RP3R0 RP2R4 RP2R3 RP2R2 RP2R1 RP2R0 0000
RP5R4 RP5R3 RP5R2 RP5R1 RP5R0 RP4R4 RP4R3 RP4R2 RP4R1 RP4R0 0000
RP7R4 RP7R3 RP7R2 RP7R1 RP7R0 RP6R4 RP6R3 RP6R2 RP6R1 RP6R0 0000
RP9R4 RP9R3 RP9R2 RP9R1 RP9R0 RP8R4 RP8R3 RP8R2 RP8R1 RP8R0 0000
RP11R4 RP11R3 RP11R2 RP11R1 RP11R0 RP10R4 RP10R3 RP10R2 RP10R1 RP10R0 0000
RP13R4 RP13R3 RP13R2 RP13R1 RP13R0 RP12R4 RP12R3 RP12R2 RP12R1 RP12R0 0000
RP15R4 RP15R3 RP15R2 RP15R1 RP15R0 RP14R4 RP14R3 RP14R2 RP14R1 RP14R0 0000
06D0 RP17R4 RP17R3 RP17R2 RP17R1 RP17R0 RP16R4 RP16R3 RP16R2 RP16R1 RP16R0 0000
06D2 RP19R4 RP19R3 RP19R2 RP19R1 RP19R0 RP18R4 RP18R3 RP18R2 RP18R1 RP18R0 0000
06D4 RP21R4 RP21R3 RP21R2 RP21R1 RP21R0 RP20R4 RP20R3 RP20R2 RP20R1 RP20R0 0000
06D6 RP23R4 RP23R3 RP23R2 RP23R1 RP23R0 RP22R4 RP22R3 RP22R2 RP22R1 RP22R0 0000
06D8 RP25R4 RP25R3 RP25R2 RP25R1 RP25R0 RP24R4 RP24R3 RP24R2 RP24R1 RP24R0 0000
所有复位 时的状态
PIC24FJ64GA104 系列
DS39951B_CN 42 初稿 © 2009 Microchip Technology Inc.
4-23 系统寄存器映射
寄存器
名称
RCON 0740 TRAPR IOPUWR
OSCCON 0742
CLKDIV 0744 ROI DOZE2 DOZE1 DOZE0 DOZEN RCDIV2 RCDIV1 RCDIV0 CPDIV1 CPDIV0 PLLEN
OSCTUN 0748
REFOCON 074E ROEN
图注: — = 未实现,读为 0。复位值以十六进制显示。 注 1 RCON 寄存器的复位值取决于复位事件的类型。更多信息,请参见6.0 节 “复位”。
2 OSCCON 寄存器的复位值取决于复位事件的类型和器件配置。更多信息,请参见第 8.0 节 “振荡器配置”。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
DPSLP CM PMSLP EXTR SWR SWDTEN WDTO SLEEP IDLE BOR POR
COSC2 COSC1 COSC0 NOSC2 NOSC1 NOSC0 CLKLOCK IOLOCK LOCK CF POSCEN SOSCEN OSWEN
TUN5 TUN4 TUN3 TUN2 TUN1 TUN0 0000
ROSSLP ROSEL RODIV3 RODIV2 RODIV1 RODIV0 0000
0100
所有复位 时的状态
4-24 深度休眠寄存器映射
寄存器名称 地址
DSCON 758 DSEN —DSBORRELEASE0000
DSWAKE 075A
DSGPR0 075C
DSGPR1 075E
图注: — = 未实现,读为 0。复位值以十六进制显示。 注 1 深度休眠寄存器仅在 V
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
—DSINT0DSFLT — DSWDT DSRTC DSMCLR —DSPOR0001
深度休眠通用寄存器 0
深度休眠通用寄存器 1
DD POR 事件时复位。
所有复位
时的状态
0000
0000
4-25 NVM 寄存器映射
寄存器
名称
NVMCON 0760 WR WREN WRERR
NVMKEY 0766
图注: — = 未实现,读为 0。复位值以十六进制显示。 注 1 显示的复位值仅适用于 POR。其他复位状态下的值取决于复位时对存储器执行写或擦除操作的状态。
地址
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
ERASE NVMOP3 NVMOP2 NVMOP1 NVMOP0 0000
NVMKEY 寄存器 <7:0>
所有复位 时的状态
0000
PIC24FJ64GA104 系列
12
(1)
(1)
4-26 PMD 寄存器映射
寄存器
名称
PMD1 0770 T5MD T4MD T3MD T2MD T1MD
PMD2 0772
PMD3 0774
PMD4 0776
图注: — = 未实现,读为 0。复位值以十六进制显示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
IC5MD IC4MD IC3MD IC2MD IC1MD OC5MD OC4MD OC3MD OC2MD OC1MD 0000
CMPMD RTCCMD PMPMD CRCMD —I2C2MD— 0000
—REFOMDCTMUMDLVDMD — 0000
所有复位 时的状态
I2C1MD U2MD U1MD SPI2MD SPI1MD ADC1MD 0000
PIC24FJ64GA104 系列

4.2.5 软件堆栈

除了用作工作寄存器外,PIC24F 器件中的 W15 寄存器 也可用作软件堆栈指针。指针总是指向第一个可用的空 字,并且从低地址向高地址方向增长。它在弹出堆栈之 前递减,而在压入堆栈之后递增,如图 4-4 所示。注意, 对于执行任何 CALL 指令时的 PC 压栈,在压入堆栈之 前,PC的MSB要进行零扩展,从而确保MSB始终清零。
注: 在异常处理期间,在将 PC 压入堆栈之前,
要先将 PC MSB SRL 寄存器组合在 一起。
堆栈指针限制值 (SPLIM)寄存器与堆栈指针相关联, 它设置堆栈上边界的值。 SPLIM 在复位时不会被初始 化。与堆栈指针的情况一样, SPLIM<0> 被强制为 0, 因为所有的堆栈操作必须是字对齐的。每当使用 W15作 为源指针或目标指针产生 EA 时,有效地址会与 SPLIM 中的值进行比较。如果堆栈指针 (W15)的内容与 SPLIM 寄存器的内容相等,则会执行压栈操作而不产生 堆栈错误陷阱,但在随后的压栈操作时将会产生堆栈错 误陷阱。因此,例如如果想要在堆栈增长超过 RAM 中 的地址 2000h 时产生堆栈错误陷阱,则需要用值 1FFEh 来初始化 SPLIM
类似地,当堆栈指针地址小于 0800h 时,就会产生堆栈 指针下溢 (堆栈错误)陷阱。这可防止堆栈进入特殊功 能寄存器 (SFR)空间。
在对 SPLIM 寄存器进行写操作之后,不应紧跟着使用 W15 进行间接读操作的指令。
4-4:调CALL)堆栈帧
0000h
000000000
堆栈向高地址增长
PC<15:0>
PC<22:16>
< 空字 >
015
W15CALL 前)
W15CALL 后)

4.3 程序存储空间与数据存储空间的接口

PIC24F 架构采用 24 位宽的程序空间和 16 位宽的数据 空间。该架构也是一种改进型哈佛结构,这意味着数据 也能存放在程序空间内。要成功使用该数据,在访问数 据时必须确保这两种存储空间中的信息是对齐的。
除了正常执行外, PIC24F 架构还提供了两种可在操作 过程中访问程序空间的方法:
使用表指令访问程序空间中任意位置的各个字节 或字
将程序空间的一部分重映射到数据空间(程序空间 可视性)
表指令允许应用程序读写程序存储器的一小块区域。这 一功能对于访问需要随时更新的数据表来说非常理想。 也可通过表操作访问一个程序字的所有字节。重映射方 法允许应用程序访问一大块数据,但只限于读操作,它 非常适合于在一个大的静态数据表中进行查找;这一方 法只能访问程序字的最低有效字。

4.3.1 对程序空间进行寻址

由于数据空间和程序空间的地址范围分别为 16 位和 24 位,因此需要一个从 16 位数据寄存器创建一个 23 位或 24 位程序地址的方法。方法取决于所采用的接口方式。
对于表操作,使用 8 位的表存储器页地址 (TBLPAG) 寄存器定义程序空间内一个 32K 字的区域。这与 16 EA 组合形成了一个完整的 24 位程序空间地址。在这种 地址形式下, TBLPAG 的最高有效位用来决定操作是发 生在用户存储区(TBLPAG<7> = 0)中还是配置存储区
TBLPAG<7> = 1)中。
对于重映射操作,使用 8 位的程序空间可视性页地址
PSVPAG)寄存器定义程序空间中的 16K 字页。当 EA
的最高有效位为 1 时, PSVPAG EA 的低 15 位组合 形成一个 23 位的程序空间地址。与表操作不同,重映 射操作被严格限制在用户存储区中。
4-27 和图4-5 显示了如何通过表操作和重映射访问来 从数据 EA 创建程序 EA。本文中,P<23:0> 指的是程序 空间字;而 D<15:0> 指的是数据空间字。
POP : [--W15] PUSH : [W15++]
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 43
PIC24FJ64GA104 系列
4-27 程序空间地址构成
访问类型 访问空间
指令访问
(代码执行)
TBLRD/TBLWT
(读 / 写字节或字)
程序空间可视性
(块重映射 / 读)
1: 在这种情况下,数据 EA<15> 始终为 1,但并不用它来计算程序空间地址。地址的 bit 15 PSVPAG<0>。
用户
用户
配置
用户
<23> <22:16> <15> <14:1> <0>
0 PC<22:1> 0
0xx xxxx xxxx xxxx xxxx xxx0
TBLPAG<7:0>
0xxx xxxx xxxx xxxx xxxx xxxx
TBLPAG<7:0>
1xxx xxxx xxxx xxxx xxxx xxxx
0 PSVPAG<7:0>
0 xxxx xxxx xxx xxxx xxxx xxxx
4-5 访问程序空间内数据的地址生成方式
程序空间地址
数据 EA<15:0>
数据 EA<15:0>
数据 EA<14:0>
(1)
程序计数器
表操作
程序空间可视性
(重映射)
(1)
(2)
(1)
用户 / 配置
0
1/0
0
空间选择
TBLPAG
8
PSVPAG
8
选择
23
24
1
23
EA
16
EA
15
0程序计数器
1/0
0
字节选择
1:程序空间地址的 LSb 始终固定为 0,从而确保程序和数据空间中的数据是字对齐的。
2: 表操作不要求字对齐。允许在配置存储空间中执行表读操作。
DS39951B_CN 44 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

4.3.2 使用表指令访问程序存储器中的数据

TBLRDL TBLWTL 指令提供了直接读或写程序空间内 任何地址的低位字的方法,无需通过数据空间。TBLRDHTBLWTH 指令是可以将一个程序空间字的高 8 位作为 数据读写的唯一方法。
对于每个连续的 24 位程序字,PC 的递增量为 2。这 使 得程序存储器地址能够直接映射到数据空间地址。于 是,程序存储器可以看作是两个 16 位字宽的地址空间, 它们并排放置,具有相同的地址范围。TBLRDL TBLWTL 访问包含最低有效数据字的空间,而 TBLRDHTBLWTH 则访问包含最高数据字节的空间。
提供了两条表指令来对程序空间执行字节或字(16 位) 大小的数据读写。读和写都可以采用字节或字操作的 形式。
1. TBLRDL (表读低位字):在字模式下,该指令 将程序空间地址的低位字 (P<15:0>)映射到数 据地址 (D<15:0>)中。 在字节模式下,低位程序字的高字节或低字节被 映射到数据地址的低字节中。当字节选择位为 1 时映射高字节;当字节选择位为 0 时映射低字 节。
4-6 使用表指令访问程序存储器
TBLPAG
02
23 15 0
000000h
020000h
030000h
程序空间
2. TBLRDH(表读高位字):在字模式下,该指令将 程序地址的整个高位字(P<23:16>)映射到数据 地址中。注意,D<15:8> 为“虚拟”字节,它始 终为 0。 在字节模式下,该指令将程序字的高字节或低字 节映射到数据地址的 D<7:0> 中,就如同TBLRDL 指令。注意,当选择高位“虚拟”字节(字节选 择位 = 1)时,数据将始终为 0
表指令 TBLWTH TBLWTL 以类似的方式向程序空间地 址写入各字节或字。第 5.0 节“闪存程序存储器”对这 两条指令的详细操作给出了说明。
对于所有的表操作,要访问程序存储空间的哪个区域是 由表存储器页地址寄存器(TBLPAG)决 定 的。 TBLPAG 可寻址器件的整个程序存储空间,包括用户和 配置空间。当 TBLPAG<7> = 0
时,表页位于用户存储 空间中。当 TBLPAG<7> = 1 时,表页位于配置存储空 间中。
注: 仅表读操作可在配置存储空间中执行,且
只能在已实现区域中执行,例如器件 ID。 不允许表写操作。
数据 EA<15:0>
081623
00000000
00000000
00000000
00000000
“虚拟”字节
TBLRDH.BWn<0> = 0)
TBLRDL.BWn<0> = 1)
TBLRDL.BWn<0> = 0)
TBLRDL.W
表操作的地址是由TBLPAG寄存器定义的页中的数据EA决定的。
800000h
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 45
只给出了读操作的过程;也可以对用户存储区执行写操作。
PIC24FJ64GA104 系列

4.3.3 使用程序空间可视性读程序存储器中 的数据

可选择将数据空间的高 32 KB 映射到程序空间中的任何 16K 字页中。这提供了通过数据空间对存储的常量数据 的透明访问,而无需使用特殊指令 (即 TBLRDL/H)。
如果数据空间 EA 的最高有效位 (MSb)为 1,并且程 序空间可视性使能 (方法是将 CPU 内核控制寄存器中 的 PSV 位(CORCON<2>)置 1),就能通过数据空间 访问程序空间。由程序空间可视性页地址寄存器
PSVPAG)决定要被映射到数据空间中的程序存储空
间的位置。这一 8 位的寄存器定义程序空间中 256 个可 能的 16K 字页中的任意一个。实际上,PSVPAG 用作程 序存储地址的高 8 位,而 EA 15 位则用作地址的低 位。注意,对于每个程序存储字,PC 都将递增 2,数据 空间地址的低15位将直接映射到相应程序空间地址的低 15 位。
将数据读入该区域的指令,需要增加一个额外的指令 周期,因为这类指令需要对程序存储器执行两次数据 取操作。
尽管大于或等于8000h 的每个数据空间地址直接映射到 对应的程序存储器地址(见图 4-7),但只使用 24 位程 序字的低 16 位来存放数据。任何用作数据存储空间的
4-7 程序空间可视性操作
CORCON<2> = 1 EA<15> = 1 时:
程序空间存储单元的高 8 位都应编程为 1111 1111 0000 0000,以强制为一条 NOP 指令,从而避免了可 能出现意外执行这一区域内代码的情况。
注: 在表读 / 写期间,暂时禁止 PSV 访问。
对于使用 PSV 而又在 REPEAT 循环外执行的操作,MOVMOV.D 指令除了规定的执行时间之外,还需要一个额 外的指令周期。其他所有指令都需要在规定的执行时间 之外额外增加两个指令周期。
对于使用 PSV 而又在 REPEAT
循环内执行的操作,下 列情况,除了规定的指令执行时间之外,还需要两个额 外的指令周期:
在第一次迭代中执行的指令
在最后一次迭代中执行的指令
由于中断而退出循环之前执行的指令
中断得到处理后再次进入循环时执行的指令
REPEAT 循环的所有其他各次迭代,都允许使用 PSV 访 问数据的指令在一个周期内执行。
PSVPAG
02
PSVPAG 指定的页 中的数据被映射到数 据存储空间的高半地 址部分……
程序空间
23 15 0
000000h
010000h
018000h
800000h
数据空间
PSV 区域
0000h
8000h
FFFFh
数据 EA<14:0>
……EA 的低 15 位指 定 PSV 区域内的确切 地址。这与实际程序 空间地址的低 15 位是 对应的。
DS39951B_CN 46 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

5.0 闪存程序存储器

注: 本数据手册总结了 PIC24F 系列器件的特
性。但是不应把本手册当作无所不包的参 考手册来使用。更多信息,请参见
PIC24F 系列参考手册》的第 4 章 “程序
存储器”(DS39715A_CN)。
PIC24FJ64GA104 系列器件包含用于存储和执行应用 程序代码的内部闪存程序存储器。当依靠 2.35V VDD 工作时,该存储器可读、可写、可擦除。(如果禁止稳 压器, VDDCORE 必须为 2.25V。)
闪存有以下 4 种编程方式:
在线串行编程 (ICSP™
运行时自编程 (Run-Time Self-Programming RTSP
•JTAG
增强型在线串行编程 (增强型 ICSP
ICSP 允许在最终的应用电路中对 PIC24FJ64GA104
列器件进行串行编程。只需要使用 5 根线就可以完成编 程,其中编程时钟线和编程数据线(分别命名为 PGECxPGEDx)各一根,其余 3 根分别是电源线 (V 接地线 (VSS)和主复位线 (MCLR)。这允许用户在 生产电路板时使用未编程器件,仅在产品交付之前才对 单片机进行编程,从而可以使用最新版本的固件或者定 制固件进行编程。
DD)、
使用TBLRD(表读)和TBLWT(表写)指令来实现RTSP 使用 RTSP,用户可以一次将 64 条指令 (192 字节)的 数据块写入程序存储器,也可以一次擦除 512 条指令
1536 字节)。

5.1 表指令和闪存编程

闪存的所有编程都是通过表读和表写指令完成的,与使 用的编程方法无关。这些指令允许器件在正常工作模式 下通过数据存储器直接读写程序存储空间。程序存储器 中 24 位目标地址由 TBLPAG<7:0> 位和表指令中指定 W 寄存器中的有效地址 (EA)组成,如图 5-1 所示。
TBLRDL TBLWTL 指令用于读或写程序存储器的 bit<15:0>TBLRDL 和 TBLWTL 能以字或字节模式访问 程序存储器。
TBLRDH TBLWTH 指令用于读或写程序存储器的 bit<23:16>TBLRDH TBLWTH 同样能以字或字节模 式访问程序存储器。

5-1 表寄存器寻址

使用程序 计数器
使用 表指令
用户/配置 空间选择
0
1/0
TBLPAG
8
寄存器
24
程序计数器
24位EA
工作寄存器
16
0
EA
字节选择
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 47
PIC24FJ64GA104 系列

5.2 RTSP 工作原理

PIC24F 闪存程序存储器阵列以 64 条指令或192 字节的 行为单位构成。RTSP 允许用户一次擦除 8 行(512 条 指令)的块以及一次编程一行。它还可以编程单字。
8行擦除块和单行写入块都是边沿对齐的,从程序存储器 起始地址开始,分别到 1536 字节边界和 192 字节边界。
当使用 TBLWT 指令将数据写入程序存储器时,数据并未 直接写入存储器。而是将使用表写指令写入的数据存储 在保持锁存器中,直到执行编程序列。
可以执行任意数量的 TBLWT 指令,写操作都将成功执 行。但是,需要 64 TBLWT 指令来写整行存储器。
要确保在写操作期间没有数据被改动,应将所有未使用 的地址编程为FFFFFFh。这是因为保持锁存器复位为未 知状态,因此如果地址处于复位状态,就可能改写未被 重写的行的单元。
RTSP 编程的基本步骤是先建立一个表指针,然后执行 一系列 TBLWT 指令来装载缓冲区。通过设置 NVMCON 寄存器中的控制位来执行编程。
可按任何顺序装入数据,且在执行写操作之前可以对保 持寄存器进行多次写操作。但后续写操作将覆盖先前的 所有写操作。
注:
因为只写缓冲区,因此所有表写操作都是单字写操作
2 个指令周期)。编程每行都需要一个编程周期。
建议对同一个存储单元进行多次写操作
而不进行擦除操作。

5.3 JTAG 操作

PIC24F 系列支持 JTAG 编程和边界扫描。边界扫描可 以通过校验引脚到 PCB 的连通性改进制造工艺。编程 是通过支持串行向量格式 (Serial Vector Format, SVF)的工业标准 JTAG 编程器来执行的。

5.4 增强型在线串行编程

增强型在线串行编程使用片内自举程序(称为编程执行 程序)来管理编程过程。使用 SPI 数据帧格式,编程执 行程序能够擦除、编程和校验程序存储器。关于增强型 ICSP 的更多信息,请参见器件编程规范。

5.5 控制寄存器

有两个 SFR 用于读写闪存程序存储器:NVMCON
NVMKEY
NVMCON 寄存器 (寄存器 5-1)控制要擦除的块、要
编程的存储器类型以及编程周期的开始时间。
NVMKEY 是一个只写寄存器,用于写保护。要启动编程 或擦除序列,用户必须将 55h AAh 连续写入 NVMKEY 寄存器。更多详细信息,请参见第 5.6 节“编程操作”。

5.6 编程操作

RTSP 模式下,对内部闪存进行编程或擦除需要执行 完整的编程序列。在编程或擦除操作期间,处理器暂停
(等待)直到操作完成。将 WR 位(NVMCON<15>)
1 启动操作,当操作完成时 WR 位会自动清零。
DS39951B_CN 48 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 5-1 NVMCON:闪存控制寄存器

R/SO-0, HC
(1)
WR WREN WRERR
bit 15 bit 8
R/W-0
(1)
R/W-0, HS
(1)
U-0 U-0 U-0 U-0 U-0
U-0 R/W-0
(1)
U-0 U-0 R/W-0
ERASE —NVMOP3
(1)
(2)
R/W-0
NVMOP2
(1)
(2)
R/W-0
NVMOP1
(1)
(2)
R/W-0
NVMOP0
(1)
(2)
bit 7 bit 0
图注:
SO = 只可置 1 位 HC = 硬件清零位 HS = 硬件置 1 位
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
WR:写控制位
(1)
1 = 启动闪存编程或擦除操作。操作是自定时的,一旦该操作完成,该位即由硬件清零。 0 = 编程或擦除操作完成,并处于停止状态
bit 14
WREN:写使能位
(1)
1 = 使能闪存编程 / 擦除操作 0 = 禁止闪存编程 / 擦除操作
bit 13
WRERR:写序列错误标志位
(1)
1 = 试图执行不合法的编程或擦除序列,或者发生终止 (试图将 WR 位置 1 时自动置 1 该位) 0 = 编程或擦除操作正常完成
bit 12-7
bit 6
未实现:读为 0
ERASE:擦除 / 编程使能位
(1)
1 = 在下一条 WR 命令时执行 NVMOP<3:0> 指定的擦除操作 0 = 在下一条 WR 命令时执行 NVMOP<3:0> 指定的编程操作
bit 5-4
bit 3-0
未实现:读为 0
NVMOP<3:0>NVM 操作选择位
(1,2)
1111 = 存储器批量擦除操作 (ERASE = 1)或无操作 (ERASE = 0)
(3)
0011 = 存储器字编程操作 (ERASE = 0)或无操作 (ERASE = 1) 0010 = 存储器页擦除操作 (ERASE = 1)或无操作 (ERASE = 0) 0001 = 存储器行编程操作 (ERASE = 0)或无操作 (ERASE = 1)
1: 这些位只能在 POR 时复位。
2NVMOP<3:0> 的所有其他组合均未实现。 3: 仅在 ICSP™ 模式下可用。请参见器件编程规范。
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 49
PIC24FJ64GA104 系列

5.6.1 闪存程序存储器的编程算法

用户一次可编程闪存程序存储器的一行。要实现该操 作,必须擦除包含该行在内的一个 8 行大小的块。一般 过程如下:
1. 读取程序存储器的 8 行(512 条指令),并将其 存储在数据 RAM 中。
2. 用所需的新数据更新 RAM 中的程序数据。
3. 擦除块 (见例 5-1): a) NVMOP 位(NVMCON<3:0>)设置为
0010,以配置为块擦除操作。将 ERASE
NVMCON<6>)和 WREN(NVMCON<14>
位置 1
b) 将要擦除块的起始地址写入 TBLPAG
W 寄存器。 c) 55h 写入 NVMKEY d) AAh 写入 NVMKEY e) WR 位(NVMCON<15>)置 1。擦除周
期开始,CPU 暂停,等待擦除周期完成。当
擦除操作完成时, WR 位会被自动清零。
5-1 擦除程序存储器块 (汇编语言代码)
; Set up NVMCON for block erase operation
MOV #0x4042, W0 ; MOV W0, NVMCON ; Initialize NVMCON
; Init pointer to row to be ERASED
MOV #tblpage(PROG_ADDR), W0 ; MOV W0, TBLPAG ; Initialize PM Page Boundary SFR MOV #tbloffset(PROG_ADDR), W0 ; Initialize in-page EA[15:0] pointer TBLWTL W0, [W0] ; Set base address of erase block DISI #5 ; Block all interrupts with priority <7
; for next 5 instructions MOV #0x55, W0 MOV W0, NVMKEY ; Write the 55 key MOV #0xAA, W1 ; MOV W1, NVMKEY ; Write the AA key BSET NVMCON, #WR ; Start the erase sequence NOP ; Insert two NOPs after the erase NOP ; command is asserted
4. 将数据 RAM 中的前 64 条指令写入程序存储器缓 冲区 (见例 5-1)。
5. 将程序块写入闪存: a) NVMOP 位设置为 0001,以配置为行编程
操作。将 ERASE 位清零,将 WREN 位置 1 b) 55h 写入 NVMKEY c) AAh 写入 NVMKEY d) WR 位置 1。编程周期开始,CPU 暂停,
等待写周期完成。当闪存写操作完成时,
WR 位会被自动清零。
6. TBLPAG 中的值递增 1,使用数据 RAM 中下 一个 64 条指令的块重复步骤 4 5,直到将所有 512 条指令写回闪存。
为防止意外操作,必须向 NVMKEY 写入启动序列,用 于允许执行任何擦除或编程操作。在执行编程命令后, 用户必须等待一段编程时间,直到编程操作完成。紧跟 编程启动序列后面的两条指令应为NOP,如例 5-5所示。
DS39951B_CN 50 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列
5-2 擦除程序存储器块 (C 语言代码)
// C example using MPLAB C30
unsigned long progAddr = 0xXXXXXX; // Address of row to write unsigned int offset;
//Set up pointer to the first memory location to be written
TBLPAG = progAddr>>16; // Initialize PM Page Boundary SFR offset = progAddr & 0xFFFF; // Initialize lower word of address
__builtin_tblwtl(offset, 0x0000); // Set base address of erase block
// with dummy latch write
NVMCON = 0x4042; // Initialize NVMCON
asm("DISI #5"); // Block all interrupts with priority <7
// for next 5 instructions
__builtin_write_NVM(); // C30 function to perform unlock
5-3 装载写缓冲区 (汇编语言代码)
; Set up NVMCON for row programming operations
MOV #0x4001, W0 ;
MOV W0, NVMCON ; Initialize NVMCON ; Set up a pointer to the first program memory location to be written ; program memory selected, and writes enabled
MOV #0x0000, W0 ;
MOV W0, TBLPAG ; Initialize PM Page Boundary SFR
MOV #0x6000, W0 ; An example program memory address ; Perform the TBLWT instructions to write the latches ; 0th_program_word
MOV #LOW_WORD_0, W2 ;
MOV #HIGH_BYTE_0, W3 ;
TBLWTL W2, [W0] ; Write PM low word into program latch
TBLWTH W3, [W0++] ; Write PM high byte into program latch ; 1st_program_word
MOV #LOW_WORD_1, W2 ;
MOV #HIGH_BYTE_1, W3 ;
TBLWTL W2, [W0] ; Write PM low word into program latch
TBLWTH W3, [W0++] ; Write PM high byte into program latch ; 2nd_program_word
MOV #LOW_WORD_2, W2 ;
MOV #HIGH_BYTE_2, W3 ;
TBLWTL W2, [W0] ; Write PM low word into program latch
TBLWTH W3, [W0++] ; Write PM high byte into program latch
; 63rd_program_word
MOV #LOW_WORD_31, W2 ;
MOV #HIGH_BYTE_31, W3 ;
TBLWTL W2, [W0] ; Write PM low word into program latch
TBLWTH W3, [W0] ; Write PM high byte into program latch
// sequence and set WR
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 51
PIC24FJ64GA104 系列
5-4 装载写缓冲区 (C 语言代码)
// C example using MPLAB C30
#define NUM_INSTRUCTION_PER_ROW 64 unsigned int offset; unsigned int i; unsigned long progAddr = 0xXXXXXX; // Address of row to write unsigned int progData[2*NUM_INSTRUCTION_PER_ROW]; // Buffer of data to write
//Set up NVMCON for row programming
NVMCON = 0x4001; // Initialize NVMCON
//Set up pointer to the first memory location to be written
TBLPAG = progAddr>>16; // Initialize PM Page Boundary SFR offset = progAddr & 0xFFFF; // Initialize lower word of address
//Perform TBLWT instructions to write necessary number of latches for(i=0; i < 2*NUM_INSTRUCTION_PER_ROW; i++)
{
__builtin_tblwtl(offset, progData[i++]); // Write to address low word __builtin_tblwth(offset, progData[i]); // Write to upper byte offset = offset + 2; // Increment address
}
5-5 启动编程序列 (汇编语言代码)
DISI #5 ; Block all interrupts with priority <7
; for next 5 instructions MOV #0x55, W0 MOV W0, NVMKEY ; Write the 55 key MOV #0xAA, W1 ; MOV W1, NVMKEY ; Write the AA key BSET NVMCON, #WR ; Start the erase sequence NOP ; NOP ; BTSC NVMCON, #15 ; and wait for it to be BRA $-2 ; completed
5-6 启动编程序列 (C 语言代码)
// C example using MPLAB C30
asm("DISI #5"); // Block all interrupts with priority < 7
__builtin_write_NVM(); // Perform unlock sequence and set WR
// for next 5 instructions
DS39951B_CN 52 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

5.6.2 编程闪存程序存储器的一个单字

如果已擦除了一个闪存单元,则可用表写指令对该单元 进行编程以将一个指令字 (24 位)写入写锁存器。将 闪存地址的 8 个最高有效字节装入 TBLPAG 寄存器。
指定要写入的程序存储器地址的低16位。要将NVMCON 寄存器配置为字写操作,应将 NVMOP 位(NVMCON<3:0>) 设置为 0011。通过执行解锁序列并将 WR 位置 1 来执 行该写操作 (见例 5-7)。
TBLWTL TBLWTH 指令将所需数据写入写锁存器,并
5-7 编程闪存程序存储器的一个单字 (汇编语言代码)
; Setup a pointer to data Program Memory
MOV #tblpage(PROG_ADDR), W0 ; MOV W0, TBLPAG ;Initialize PM Page Boundary SFR MOV #tbloffset(PROG_ADDR), W0 ;Initialize a register with program memory address
MOV #LOW_WORD, W2 ; MOV #HIGH_BYTE, W3 ; TBLWTL W2, [W0] ; Write PM low word into program latch TBLWTH W3, [W0++] ; Write PM high byte into program latch
; Setup NVMCON for programming one word to data Program Memory
MOV #0x4003, W0 ; MOV W0, NVMCON ; Set NVMOP bits to 0011
DISI #5 ; Disable interrupts while the KEY sequence is written MOV #0x55, W0 ; Write the key sequence MOV W0, NVMKEY MOV #0xAA, W0 MOV W0, NVMKEY BSET NVMCON, #WR ; Start the write cycle NOP ; Insert two NOPs after the erase NOP ; Command is asserted
5-8 编程闪存程序存储器的一个单字 (C 语言代码)
// C example using MPLAB C30
unsigned int offset; unsigned long progAddr = 0xXXXXXX; // Address of word to program unsigned int progDataL = 0xXXXX; // Data to program lower word unsigned char progDataH = 0xXX; // Data to program upper byte
//Set up NVMCON for word programming
NVMCON = 0x4003; // Initialize NVMCON
//Set up pointer to the first memory location to be written
TBLPAG = progAddr>>16; // Initialize PM Page Boundary SFR offset = progAddr & 0xFFFF; // Initialize lower word of address
//Perform TBLWT instructions to write latches
__builtin_tblwtl(offset, progDataL); // Write to address low word __builtin_tblwth(offset, progDataH); // Write to upper byte
asm( ISI #5”); // Block interrupts with priority < 7
// for next 5 instructions
__builtin_write_NVM(); // C30 function to perform unlock
// sequence and set WR
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 53
PIC24FJ64GA104 系列
注:
DS39951B_CN 54 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

6.0 复位

注: 本数据手册总结了 PIC24F 系列器件的特
性。但是不应把本手册当作无所不包的参 考手册来使用。更多信息,请参见
PIC24F 系列参考手册》的第 7 章“复
位”(DS39712A_CN)。
复位模块结合了所有复位源并控制器件的主复位信号
SYSRST。下面列出了器件的复位源:
•POR:上电复位
•MCLR
•SWRRESET 指令
•WDT:看门狗定时器复位
•BOR:欠压复位
•CM:配置不匹配复位
• TRAPR:陷阱冲突复位
•IOPUWR:非法操作码复位
•UWR:未初始化的 W 寄存器复位
6-1 给出了复位模块的简化框图。

6-1 复位系统框图

:引脚复位
RESET
指令
任何有效的复位源都将使 SYSRST
信号有效。许多与 CPU 和外设相关的寄存器均会被强制为已知的复位状 态。大多数寄存器都不受复位影响;它们的状态在 POR 时未知,而在所有其他复位时不变。
注: 如需了解寄存器复位状态的信息,请参见
本手册中的特定外设或 CPU 章节。
任何类型的器件复位都会将RCON寄存器中相应的状态 位置 1,以指示复位类型(见寄存器 6-1)。上电复位将 清零除 BOR POR 位( RCON<1:0>)之外的所有位, BOR POR 位在 POR 时被置 1。用户可以在代码执 行过程中的任何时间置 1 或清零任意位。RCON 寄存器 中的位仅用作状态位。用软件将特定的复位状态位置 1 不会导致器件发生复位。
RCON寄存器还包含与看门狗定时器和器件节能状态相 关的其他位。本数据手册的其他章节中将讨论这些位的 功能。
注: RCON 寄存器中的状态位应该在被读取后
清零,这样在器件复位后 RCON 寄存器的 下一个值才有意义。
MCLR
VDD
未初始化的 W 寄存器
WDT
模块
休眠或空闲
VDD 上升
检测
欠压 复位
使能稳压器
陷阱冲突
非法操作码
配置不匹配
毛刺滤波器
POR
SYSRST
BOR
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 第 55
PIC24FJ64GA104 系列
寄存器 6-1 RCON:复位控制寄存器
R/W-0 R/W-0 U-0 U-0 U-0 R/CO-0, HS R/W-0 R/W-0
TRAPR IOPUWR
bit 15 bit 8
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0, R/W-0 R/W-1 R/W-1 EXTR SWR SWDTEN
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14
bit 13-11 bit 10
bit 9
bit 8
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
TRAPR:陷阱复位标志位
1 = 发生了陷阱冲突复位 0 = 未发生陷阱冲突复位
IOPUWR:非法操作码或访问未初始化的 W 寄存器复位标志位
1 = 检测到非法操作码、非法地址模式或将未初始化的 W 寄存器用作地址指针而导致复位 0 = 未发生非法操作码或未初始化的 W 寄存器复位
未实现:读为 0
DPSLP:深度休眠模式标志位
1 = 发生了深度休眠 0 = 未发生深度休眠
CM:配置字不匹配复位标志位
1 = 发生了配置字不匹配复位 0 = 未发生配置字不匹配复位
PMSLP:程序存储器休眠期间电源位
1 = 程序存储器偏置电压在休眠期间保持供电 0 = 程序存储器偏置电压在休眠期间掉电,稳压器进入待机模式
EXTR:外部复位 (MCLR
1 = 发生了主复位 (引脚)复位 0 = 未发生主复位 (引脚)复位
SWR:软件复位 (指令)标志位
1 = 执行了 RESET 指令 0 = 未执行 RESET 指令
SWDTEN:软件使能 / 禁止 WDT
1 = 使能 WDT 0 = 禁止 WDT
WDTO:看门狗定时器超时标志位
1 = 发生了 WDT 超时 0 = 未发生 WDT 超时
SLEEP:从休眠状态唤醒标志位
1 = 器件处于休眠模式 0 = 器件不处于休眠模式
IDLE:从空闲状态唤醒标志位
1 = 器件处于空闲模式 0 = 器件不处于空闲模式
DPSLP CM PMSLP
(2)
CO = 只可清零位 HS = 硬件置 1
)引脚位
(1)
WDTO SLEEP IDLE BOR POR
(2)
1: 所有复位状态位都可以用软件置 1 或清零。用软件将这些位中的某一位置 1 不会导致器件复位。
2: 如果 FWDTEN 配置位为 1 (未编程),则 WDT 始终使能,而与 SWDTEN 位的设置无关。
DS39951B_CN 56 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列
寄存器 6-1 RCON:复位控制寄存器
bit 1
bit 0
1: 所有复位状态位都可以用软件置 1 或清零。用软件将这些位中的某一位置 1 不会导致器件复位。
2: 如果 FWDTEN 配置位为 1 (未编程),则 WDT 始终使能,而与 SWDTEN 位的设置无关。
BOR:欠压复位标志位
1 = 发生了欠压复位。注意 BOR 在上电复位后也将置 1 0 = 未发生欠压复位
POR:上电复位标志位
1 = 发生了上电复位 0 = 未发生上电复位
(1)
(续)

6-1 复位标志位操作

标志位 1 事件 清零事件
TRAPR RCON<15> 陷阱冲突事件 IOPUWR RCON<14> 非法操作码或访问了未初始化的 W 寄存器
CM RCON<9> 配置不匹配复位
EXTR RCON<7> MCLR SWR RCON<6> RESET 指令 WDTO RCON<4> WDT 超时 PWRSAV 指令和 POR SLEEP RCON<3> PWRSAV #SLEEP 指令 IDLE RCON<2> PWRSAV #IDLE 指令 BOR RCON<1> POR BOR POR RCON<0> DPSLP RCON<10> PWRSAV #SLEEP 指令且 DSCON <DSEN> 置 1
注: 所有复位标志位均可由用户软件置 1 或清零。
复位
POR
POR
POR
POR
POR
POR
POR
POR
POR

6.1 复位时的时钟源选择

如果使能了时钟切换,器件复位时的系统时钟源选择如 表 6-2 中所示。如果禁止了时钟切换,则总是根据振荡器 配置位选择系统时钟源。更多详细信息,请参见第 8.0
“振荡器配置”。
6-2 不同复位类型的振荡器选择
(使能时钟切换)
复位类型 确定时钟源的方式
POR
BOR
MCLR
WDTO
SWR
FNOSC 配置位
CW2<10:8>
COSC 控制位
OSCCON<14:12>

6.2 器件复位时间

6-3 总结了各种类型器件复位的复位时间。注意,在
POR PWRT 延时结束后会释放系统复位信号 SYSRST
器件实际开始执行代码的时间还取决于系统振荡器延 时,它包括振荡器起振定时器 (OST)延时和 PLL 锁 定时间。OST PLL 锁定时间与相应的 SYSRST 同时发生。
FSCM 延时决定在 SYSRST 视系统时钟源的时间。
延时
信号释放后 FSCM 开始监
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 57
PIC24FJ64GA104 系列

6-3 各种器件复位的复位延时

复位类型 时钟源 SYSRST 延时 系统时钟延时
(6)
POR
BOR EC TRST + TPWRT 2, 3, 8
所有其他复位 任何时钟 注 1T
2T 3: 如果禁止稳压器 (DISVREG 连接到 V 4TFRC TLPRC = RC 振荡器起振时间。 5T 6TOST = 振荡器起振定时器 (OST)延时。 10 位计数器等待 1024 个振荡周期后,才将振荡器时钟释放给系
统使用。
7: 如果使能了双速启动,则无论选择何种主振荡器,器件都使用 FRC 启动,并且在这种情况下,FRC 起振时
间有效。
8T
EC TPOR + TRST + TPWRT 1, 2, 3, 8
FRC FRCDIV LPRC T
ECPLL T
TPOR + TRST + TPWRT TFRC 1, 2, 3, 4, 7, 8
POR
+ TRST + TPWRT TLPRC 1, 2, 3, 4, 8
POR
+ TRST + TPWRT TLOCK 1, 2, 3, 5, 8
FRCPLL TPOR + TRST + TPWRT TFRC + TLOCK 1, 2, 3, 4, 5, 7, 8
POR
+ TRST + TPWRT TOST 1, 2, 3, 6, 8
XTHS SOSC XTPLL HSPLL
FRC FRCDIV LPRC T
T
POR
+ TRST + TPWRT TOST + TLOCK 1, 2, 3, 5, 6, 8
T
RST + TPWRT TFRC 2, 3, 4, 7, 8
T
RST + TPWRT TLPRC 2, 3, 4, 8
ECPLL TRST + TPWRT TLOCK 2, 3, 5, 8
FRCPLL T
XTHS SOSC XTPLL HSPLL
POR = 上电复位延时。
RST = 内部状态复位时间。
DD),则 TPWRT = 64 ms 标称值。
LOCK = PLL 锁定时间。
RST = 配置设置时间。
RST + TPWRT TFRC + TLOCK 2, 3, 4, 5, 7, 8
RST + TPWRT TOST 2, 3, 6, 8
T
TRST + TPWRT TFRC + TLOCK 2, 3, 4, 5, 8
RST 2, 8
T
注: 关于工作频率和时序规范的详细信息,请参见第 28.0 节 “电气特性”。
DS39951B_CN 58 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

6.2.1 POR 和长振荡器起振时间

振荡器起振电路及其相关的延时定时器与上电时发生的 器件复位延时没有关系。某些晶振电路(尤其是低频晶 振)的起振时间会相对较长。因此,在 SYSRST 后,可能会发生以下一种或多种情况:
振荡电路未起振。
振荡器起振定时器尚未超时 (如果使用了晶振)。
•PLL未实现锁定 (如果使用了 PLL)。
在有效时钟源供系统使用前,器件不会开始执行代码。 因此,如果必须确定复位延时,必须考虑到振荡器和 PLL 起振延时。
被释放

6.2.2 故障保护时钟监视器 (FSCM)和器件 复位

如果使能了 FSCM,它将在 SYSRST 释放后开始监视系 统时钟源。如果此时没有可用的有效时钟源,器件将自 动切换为 FRC 振荡器,并且用户可以在陷阱服务程序
Trap Service RoutineTSR)中切换为所需的晶振。

6.3 特殊功能寄存器的复位状态

大多数与 PIC24F CPU 和外设相关的特殊功能寄存器
SFR)会在器件复位时复位为某个特定值。 SFR 是按
其外设或 CPU 功能分组的,其复位值在本手册的相应章 节有说明。
除了 4 个寄存器外,其他 SFR 的复位值都与复位类型 无关。复位控制寄存器 RCON 的复位值取决于器件复位 的类型。振荡器控制寄存器 OSCCON 的复位值取决于 复位类型和闪存配置字 2CW2)中 FNOSC 位的编程 值;请参见表 6-2RCFGCAL NVMCON 寄存器只 受 POR 影响。

6.4 深度休眠 BOR DSBOR

深度休眠 BOR 是功耗极低的 BOR 电路,在器件处于深 度休眠模式时使用。由于电流消耗很低,因此精度会因 情况而异。
DSBOR 来使能 DSBORDSBOR 会重新激活 POR,以确保当 VDD 降到低于 POR 门限值时器件会发生复位。
跳变点约为
2.0V
。通过 配 置
CW4(DSBOREN)=
1
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 59
PIC24FJ64GA104 系列
注:
DS39951B_CN 60 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

7.0 中断控制器

注: 本数据手册总结了 PIC24F 系列器件的特
性。但是不应把本手册当作无所不包的参 考手册来使用。更多信息,请参见
PIC24F 系列参考手册》的第 8 章“中
断”(DS39707A_CN)。
PIC24F 中断控制器将诸多外设中断请求信号缩减为 一个送往 PIC24F CPU 的中断请求信号。它具有以下 特性:
最多 8 个处理器异常和软件陷阱
•7个可由用户选择的优先级
最多 118 个向量的中断向量表 (Interrupt Vector
TableIVT
每个中断或异常源对应一个唯一的向量
在指定的用户优先级内具有固定的优先级
用于支持调试功能的备用中断向量表 (Alternate
Interrupt Vector Table, AIVT)
固定的中断进入和返回延时

7.1 中断向量表

中断向量表 (IVT)如图 7-1 所示。 IVT 位于程序存储 器中,起始单元地址是 000004hIVT 包含126 个向量,8 个不可屏蔽陷阱向量和最多 11 8 个中断源组成。一 般来说,每个中断源都有自己的中断向量。每个中断向 量都包含一个 24 位宽的地址。每个中断向量单元中设 定的值是其相关的中断服务程序 (ISR)的起始地址。
中断向量根据它们的自然优先级区分优先次序;也就是 说每个中断向量的优先级与其在向量表中的位置有关。 如果其他方面都相同,较低地址的中断向量具有较高的 自然优先级。例如,与向量 0 相关的中断比任何其他向 量地址的中断具有更高的自然优先级。
PIC24FJ64GA104 系列器件实现了不可屏蔽陷阱和唯 一中断。表 7-1 和表 7-2 对此做了总结。

7.1.1 备用中断向量表

备用中断向量表 (AIVT)位于 IVT 之后,如图 7-1 所 示。由 ALTIVT 控制位(INTCON2<15>)控制对 AIVT 的访问。如果 ALTIVT 位置 1,则所有的中断和异常处 理都将使用备用向量,而非默认向量。备用向量与默认 向量的组织方式相同。
AIVT 通过提供一种不需要将中断向量再编程就可以在 应用程序和支持环境之间切换的方法,来支持仿真和调 试功能。此特性也支持运行时在不同应用程序之间切换 以便评估各种不同的软件算法。如果不需要 AIVT,则 应 该用 IVT 中使用的相同地址编程 AIVT

7.2 复位过程

器件复位不是真正的异常,因为复位过程中并不涉及到 中断控制器。作为对复位的响应, PIC24F 器件清零其 寄存器,同时强制 PC 为零。然后单片机从地址000000h 处开始执行程序。用户可以在复位地址中写入 GOTO 指 令,将程序执行重定向到相应的启动程序。
注: 应该使用包含 RESET 指令的默认中断处理
程序的入口地址编程 IVT AIVT 中所有未 实现或未使用的向量单元。
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 61
PIC24FJ64GA104 系列

7-1 PIC24F 中断向量表

自然顺序优先级降序排列
复位——GOTO 指令 复位——GOTO 地址
保留
振荡器故障陷阱向量
地址错误陷阱向量 堆栈错误陷阱向量 数学错误陷阱向量
保留 保留
保留 中断向量 0 中断向量 1
— — —
中断向量 52 中断向量 53 中断向量 54
— — —
中断向量 116 中断向量 117
保留
保留
保留
振荡器故障陷阱向量
地址错误陷阱向量 堆栈错误陷阱向量 数学错误陷阱向量
保留
保留
保留 中断向量 0 中断向量 1
— — —
中断向量 52 中断向量 53 中断向量 54
— — —
中断向量 116 中断向量 117
代码起始单元
000000h 000002h 000004h
000014h
00007Ch 00007Eh 000080h
0000FCh 0000FEh 000100h 000102h
000114h
00017Ch 00017Eh 000180h
0001FEh 000200h
中断向量表(IVT
备用中断向量表(AIVT
(1)
(1)
1: 请参见表 7-2 了解中断向量列表。

7-1 陷阱向量详细信息

向量编号 IVT 地址 AIVT 地址 陷阱源
0 000004h 000104h
1 000006h 000106h
2 000008h 000108h
3 00000Ah 00010Ah
4 00000Ch 00010Ch
5 00000Eh 00010Eh
6 000010h 000110h
7 000012h 000112h
DS39951B_CN 62 初稿 © 2009 Microchip Technology Inc.
保留 振荡器故障 地址错误 堆栈错误 数学错误 保留 保留 保留
PIC24FJ64GA104 系列

7-2 已实现的中断向量

中断源 向量编号 IVT 地址 AIVT 地址
ADC1 转换完成 比较器事件
CRC 发生器 CTMU 事件
外部中断 0 外部中断 1 外部中断 2
I2C1 主事件 I2C1 从事件 I2C2 主事件 I2C2 从事件
输入捕捉 1 输入捕捉 2 输入捕捉 3 输入捕捉 4 输入捕捉 5 输入电平变化通知 LVD 低压检测 输出比较 1 输出比较 2 输出比较 3 输出比较 4 输出比较 5 并行主端口 实时时钟 / 日历
SPI1 错误 SPI1 事件 SPI2 错误 SPI2 事件
Timer1 3 00001Ah 00011Ah IFS0<3> IEC0<3> IPC0<14:12>
Timer2 7 000022h 000122h IFS0<7> IEC0<7> IPC1<14:12>
Timer3 8 000024h 000124h IFS0<8> IEC0<8> IPC2<2:0>
Timer4 27 00004Ah 00014Ah IFS1<11> IEC1<11> IPC6<14:12>
Timer5 28 00004Ch 00014Ch IFS1<12> IEC1<12> IPC7<2:0>
UART1 错误 UART1 接收器 UART1 发送器 UART2 错误 UART2 接收器 UART2 发送器
13 00002Eh 00012Eh IFS0<13> IEC0<13> IPC3<6:4>
18 000038h 000138h IFS1<2> IEC1<2> IPC4<10:8>
67 00009Ah 00019Ah IFS4<3> IEC4<3> IPC16<14:12>
77 0000AEh 0001AEh IFS4<13> IEC4<13> IPC19<6:4>
0 000014h 000114h IFS0<0> IEC0<0> IPC0<2:0>
20 00003Ch 00013Ch IFS1<4> IEC1<4> IPC5<2:0>
29 00004Eh 00014Eh IFS1<13> IEC1<13> IPC7<6:4>
17 000036h 000136h IFS1<1> IEC1<1> IPC4<6:4>
16 000034h 000134h IFS1<0> IEC1<0> IPC4<2:0>
50 000078h 000178h IFS3<2> IEC3<2> IPC12<10:8>
49 000076h 000176h IFS3<1> IEC3<1> IPC12<6:4>
1 000016h 000116h IFS0<1> IEC0<1> IPC0<6:4>
5 00001Eh 00011Eh IFS0<5> IEC0<5> IPC1<6:4>
37 00005Eh 00015Eh IFS2<5> IEC2<5> IPC9<6:4>
38 000060h 000160h IFS2<6> IEC2<6> IPC9<10:8>
39 000062h 000162h IFS2<7> IEC2<7> IPC9<14:12>
19 00003Ah 00013Ah IFS1<3> IEC1<3> IPC4<14:12>
72 0000A4h 0001A4h IFS4<8> IEC4<8> IPC18<2:0>
2 000018h 000118h IFS0<2> IEC0<2> IPC0<10:8>
6 000020h 000120h IFS0<6> IEC0<6> IPC1<10:8>
25 000046h 000146h IFS1<9> IEC1<9> IPC6<6:4>
26 000048h 000148h IFS1<10> IEC1<10> IPC6<10:8>
41 000066h 000166h IFS2<9> IEC2<9> IPC10<6:4>
45 00006Eh 00016Eh IFS2<13> IEC2<13> IPC11<6:4>
62 000090h 000190h IFS3<14> IEC3<14> IPC15<10:8>
9 000026h 000126h IFS0<9> IEC0<9> IPC2<6:4>
10 000028h 000128h IFS0<10> IEC0<10> IPC2<10:8>
32 000054h 000154h IFS2<0> IEC2<0> IPC8<2:0>
33 000056h 000156h IFS2<1> IEC2<1> IPC8<6:4>
65 000096h 000196h IFS4<1> IEC4<1> IPC16<6:4>
11 00002Ah 00012Ah IFS0<11> IEC0<11> IPC2<14:12>
12 00002Ch 00012Ch IFS0<12> IEC0<12> IPC3<2:0>
66 000098h 000198h IFS4<2> IEC4<2> IPC16<10:8>
30 000050h 000150h IFS1<14> IEC1<14> IPC7<10:8>
31 000052h 000152h IFS1<15> IEC1<15> IPC7<14:12>
标志位 允许位 优先级位
中断位的位置
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 63
PIC24FJ64GA104 系列

7.3 中断控制和状态寄存器

PIC24FJ64GA104 系列器件实现了以下用于中断控制 器的寄存器:
• INTCON1
• INTCON2
•IFS0至 IFS4
•IEC0至 IEC4
•IPC0至 IPC20 (IPC13、 IPC14 和 IPC17 除外)
•INTTREG
INTCON1 INTCON2 控制全局中断。INTCON1 包含
中断嵌套禁止 (NSTDIS)位以及处理器陷阱源的控制 和状态标志。 INTCON2 寄存器控制外部中断请求信号 行为以及备用中断向量表的使用。
IFSx 寄存器包含所有中断请求标志。每个中断源都有 一个状态位,由各自的外设或外部信号置 1,而由软件 清零。
IECx寄存器包含所有中断允许位。这些控制位用于单独 允许外设或外部信号中断。
IPCx寄存器用于设置每个中断源的中断优先级。可以为 每个用户中断源分配 8 个优先级之一。
中断源按表 7-2 中的向量编号顺序分配给 IFSxIECxIPCx 寄存器。例如, INT0 (外部中断 0)具有一个 向量编号,自然顺序优先级为 0。所 以 INT0IF 状态位在 IFS0<0>中,INT0IE允许位在IEC0<0>中,INT0IP<2:0> 优先级位在 IPC0 最初的位置 (IPC0<2:0>)中。
尽管两个 CPU 控制寄存器都不是中断控制硬件的特定 组成部分,但它们仍包含控制中断功能的位。ALU 状态 寄存器 (SR)包含 IPL<2:0> 位(SR<7:5>);这些位 用于指示当前 CPU 中断优先级。用户可以通过写 IPL 位 来更改当前
CORCON 寄存器包含 IPL3 位,这个位与 IPL<2:0> 位 一起指示当前 CPU 优先级。IPL3 是只读位,所以用户 软件不能屏蔽陷阱事件。
中断控制器具有中断控制器测试寄存器 (INTTREG), 该寄存器显示中断控制器的状态。当产生中断请求 时,相关的向量编号和新的中断优先级被锁存到 INTTREG 中。
如果一个通用 ISR 用于多个向量(例如,在自举应用中 使用ISR重映射时),该信息可用来确定具体的中断源。 它还可以用来检查处于 ISR 时,是否有另一个中断正在 等待处理。
在下面各页中的寄存器 7-1 到寄存器 7-32 说明了所有的 中断寄存器。
CPU 优先级。
DS39951B_CN 64 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-1 SRALU 状态寄存器 (在 CPU 中)

U-0 U-0 U-0 U-0 U-0 U-0 U-0 R-0
—DC
bit 15 bit 8
R/W-0 R/W-0 R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0
IPL2
(2,3)
IPL1
(2,3)
IPL0
(2,3)
RA
(1)
(1)
N
OV
(1)
(1)
Z
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
(1)
(1)
C
bit 7-5
IPL<2:0>CPU 中断优先级状态位
(2,3)
111 = CPU 中断优先级为 7 15)。禁止用户中断。 110 = CPU 中断优先级为 6 14 101 = CPU 中断优先级为 5 13 100 = CPU 中断优先级为 4 12 011 = CPU 中断优先级为 3 11 010 = CPU 中断优先级为 2 10 001 = CPU 中断优先级为 1 9 000 = CPU 中断优先级为 0 8
1: 请参见寄存器 3-1 了解其他位的说明,它们并不是专用于中断控制功能。
2IPL 位与 IPL3 位(CORCON<3>)组合形成 CPU 中断优先级。如果 IPL3 = 1,那么括号中的值表示中断
优先级。
3: 当 NSTDIS INTCON1<15>= 1 时, IPL 状态位是只读位。

寄存器 7-2 CORCONCPU 控制寄存器

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
bit 15 bit 8
U-0 U-0 U-0 U-0 R/C-0 R/W-0 U-0 U-0
—IPL3
(2)
bit 7 bit 0
PSV
(1)
图注:
C = 可清零位
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 3
IPL3CPU 中断优先级状态位
(2)
1 = CPU 中断优先级大于 7 0 = CPU 中断优先级等于或小于 7
1: 请参见寄存器 3-2 了解其他位的说明,它们并不是专用于中断控制功能。
2IPL3 位与 IPL<2:0> 位(SR<7:5>)组合形成 CPU 中断优先级。
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 65
PIC24FJ64GA104 系列

寄存器 7-3 INTCON1:中断控制寄存器 1

R/W-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
NSTDIS
bit 15 bit 8
U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0
MATHERR ADDRERR STKERR OSCFAIL
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14-5
bit 4
bit 3
bit 2
bit 1
bit 0
NSTDIS中断嵌套禁止位
1 = 禁止中断嵌套 0 = 使能中断嵌套
未实现:读为 0
MATHERR算术错误陷阱状态位
1 = 发生了溢出陷阱 0 = 未发生溢出陷阱
ADDRERR地址错误陷阱状态位
1 = 发生了地址错误陷阱 0 = 未发生地址错误陷阱
STKERR:堆栈错误陷阱状态位
1 = 发生了堆栈错误陷阱 0 = 未发生堆栈错误陷阱
OSCFAIL:振荡器故障陷阱状态位
1 = 发生了振荡器故障陷阱 0 = 未发生振荡器故障陷阱
未实现:读为 0
DS39951B_CN 66 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-4 INTCON2:中断控制寄存器 2

R/W-0 R-0 U-0 U-0 U-0 U-0 U-0 U-0
ALTIVT DISI
bit 15 bit 8
U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0
INT2EP INT1EP INT0EP
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14
bit 13-3
bit 2
bit 1
bit 0
ALTIVT备用中断向量表使能位
1 = 使用备用中断向量表 0 = 使用标准 (默认)向量表
DISI DISI 指令状态位 1 = 执行了 DISI 指令
0 = 未执行 DISI 指令 未实现:读为 0
INT2EP外部中断 2 边沿检测极性选择位
1 = 下降沿中断 0 = 上升沿中断
INT1EP外部中断 1 边沿检测极性选择位
1 = 下降沿中断 0 = 上升沿中断
INT0EP外部中断 0 边沿检测极性选择位
1 = 下降沿中断 0 = 上升沿中断
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 67
PIC24FJ64GA104 系列

寄存器 7-5 IFS0:中断标志状态寄存器 0

U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
AD1IF U1TXIF U1RXIF SPI1IF SPF1IF T3IF
bit 15 bit 8
R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
T2IF OC2IF IC2IF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
T1IF OC1IF IC1IF INT0IF
bit 15-14 bit 13
bit 12
bit 11
bit 10
bit 9
bit 8
bit 7
bit 6
bit 5
bit 4 bit 3
bit 2
bit 1
bit 0
未实现:读为 0 AD1IFA/D 转换完成中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
U1TXIFUART1 发送器中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
U1RXIFUART1 接收器中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
SPI1IFSPI1 事件中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
SPF1IFSPI1 故障中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
T3IFTimer3 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
T2IFTimer2 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
OC2IF:输出比较通道 2 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
IC2IF:输入捕捉通道 2 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
未实现:读为 0
T1IFTimer1 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
OC1IF:输出比较通道 1 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
IC1IF:输入捕捉通道 1 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
INT0IF:外部中断 0 标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
DS39951B_CN 68 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-6 IFS1:中断标志状态寄存器 1

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0
U2TXIF U2RXIF INT2IF T5IF T4IF OC4IF OC3IF
bit 15 bit 8
U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
INT1IF CNIF CMIF MI2C1IF SI2C1IF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14
bit 13
bit 12
bit 11
bit 10
bit 9
bit 8-5
bit 4
bit 3
bit 2
bit 1
bit 0
U2TXIFUART2 发送器中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
U2RXIFUART2 接收器中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
INT2IF:外部中断 2 标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
T5IFTimer5 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
T4IFTimer4 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
OC4IF:输出比较通道 4 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
OC3IF:输出比较通道 3 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
未实现:读为 0
INT1IF:外部中断 1 标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
CNIF:输入电平变化通知中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
CMIF:比较器中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
MI2C1IFI2C1 主事件中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
SI2C1IFI2C1 从事件中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 69
PIC24FJ64GA104 系列

寄存器 7-7 IFS2:中断标志状态寄存器 2

U-0 U-0 R/W-0 U-0 U-0 U-0 R/W-0 U-0
—PMPIF— —OC5IF—
bit 15 bit 8
R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 R/W-0 R/W-0
IC5IF IC4IF IC3IF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
SPI2IF SPF2IF
bit 15-14
bit 13
bit 12-10
bit 9
bit 8
bit 7
bit 6
bit 5
bit 4-2
bit 1
bit 0
未实现:读为 0
PMPIF:并行主端口中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
未实现:读为 0
OC5IF:输出比较通道 5 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
未实现:读为 0
IC5IF:输入捕捉通道 5 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
IC4IF:输入捕捉通道 4 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
IC3IF:输入捕捉通道 3 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
未实现:读为 0
SPI2IFSPI2 事件中断标志状态位
1
= 产生了中断请求
0 = 未产生中断请求 SPF2IFSPI2 故障中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
DS39951B_CN 70 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-8 IFS3:中断标志状态寄存器 3

U-0 R/W-0 U-0 U-0 U-0 U-0 U-0 U-0
—RTCIF—
bit 15 bit 8
U-0 U-0 U-0 U-0 U-0 R/W-0, R/W-0 U-0
—MI2C2IFSI2C2IF —
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14
bit 13-3
bit 2
bit 1
bit 0
未实现:读为 0 RTCIF:实时时钟 / 日历中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
未实现:读为 0
MI2C2IFI2C2 主事件中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
SI2C2IFI2C2 从事件中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
未实现:读为 0
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 71
PIC24FJ64GA104 系列

寄存器 7-9 IFS4:中断标志状态寄存器 4

U-0 U-0 R/W-0 U-0 U-0 U-0 U-0 R/W-0
—CTMUIF— —LVDIF
bit 15 bit 8
U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 U-0
CRCIF U2ERIF U1ERIF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-14
bit 13
bit 12-9
bit 8
bit 7-4
bit 3
bit 2
bit 1
bit 0
未实现:读为 0 CTMUIFCTMU 中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
未实现:读为 0
LVD IF:低压检测中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
未实现:读为 0
CRCIFCRC 发生器中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
U2ERIFUART2 错误中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
U1ERIFUART1 错误中断标志状态位
1 = 产生了中断请求 0 = 未产生中断请求
未实现:读为 0
DS39951B_CN 72 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-10 IEC0:中断允许控制寄存器 0

U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
AD1IE U1TXIE U1RXIE SPI1IE SPF1IE T3IE
bit 15 bit 8
R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
T2IE OC2IE IC2IE
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
T1IE OC1IE IC1IE INT0IE
bit 15-14 bit 13
bit 12
bit 11
bit 10
bit 9
bit 8
bit 7
bit 6
bit 5
bit 4 bit 3
bit 2
bit 1
bit 0
未实现:读为 0 AD1IEA/D 转换完成中断允许位
1 = 允许中断请求 0 = 禁止中断请求
U1TXIEUART1 发送器中断允许位
1 = 允许中断请求 0 = 禁止中断请求
U1RXIEUART1 接收器中断允许位
1 = 允许中断请求 0 = 禁止中断请求
SPI1IESPI1 传输完成中断允许位
1 = 允许中断请求 0 = 禁止中断请求
SPF1IESPI1 故障中断允许位
1 = 允许中断请求 0 = 禁止中断请求
T3IETimer3 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
T2IETimer2 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
OC2IE:输出比较通道 2 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
IC2IE:输入捕捉通道 2 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
未实现:读为 0
T1IETimer1 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
OC1IE:输出比较通道 1 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
IC1IE:输入捕捉通道 1 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
INT0IE:外部中断 0 允许位
1 = 允许中断请求 0 = 禁止中断请求
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 73
PIC24FJ64GA104 系列

寄存器 7-11 IEC1:中断允许控制寄存器 1

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0
U2TXIE U2RXIE INT2IE
bit 15 bit 8
U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
—INT1IE
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14
bit 13
bit 12
bit 11
bit 10
bit 9
bit 8-5 bit 4
bit 3
bit 2
bit 1
bit 0
U2TXIEUART2 发送器中断允许位
1 = 允许中断请求 0 = 禁止中断请求
U2RXIEUART2 接收器中断允许位
1 = 允许中断请求 0 = 禁止中断请求
INT2IE:外部中断 2 允许位
1 = 允许中断请求 0 = 禁止中断请求
T5IETimer5 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
T4IETimer4 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
OC4IE:输出比较通道 4 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
OC3IE:输出比较通道 3 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
未实现:读为 0
INT1IE:外部中断 1 允许位
1 = 允许中断请求 0 = 禁止中断请求
CNIE:输入电平变化通知中断允许位
1 = 允许中断请求 0 = 禁止中断请求
CMIE:比较器中断允许位
1 = 允许中断请求 0 = 禁止中断请求
MI2C1IEI2C1 主事件中断允许位
1 = 允许中断请求 0 = 禁止中断请求
SI2C1IEI2C1 从事件中断允许位
1 = 允许中断请求 0 = 禁止中断请求
(1)
T5IE T4IE OC4IE OC3IE
(1)
(1)
(1)
CNIE CMIE MI2C1IE SI2C1IE
1: 如果允许外部中断,中断输入还必须配置给可用的 RPn PRIx 引脚。更多信息,请参见第 10.4 节 “外设
引脚选择 (PPS)”。
DS39951B_CN 74 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-12 IEC2:中断允许控制寄存器 2

U-0 U-0 R/W-0 U-0 U-0 U-0 R/W-0 U-0
—PMPIE— —OC5IE—
bit 15 bit 8
R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 R/W-0 R/W-0
IC5IE IC4IE IC3IE
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
SPI2IE SPF2IE
bit 15-14
bit 13
bit 12-10
bit 9
bit 8
bit 7
bit 6
bit 5
bit 4-2
bit 1
bit 0
未实现:读为 0 PMPIE:并行主端口中断允许位
1 = 允许中断请求 0 = 禁止中断请求
未实现:读为 0
OC5IE:输出比较通道 5 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
未实现:读为 0
IC5IE:输入捕捉通道 5 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
IC4IE:输入捕捉通道 4 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
IC3IE:输入捕捉通道 3 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
未实现:读为 0
SPI2IESPI2 事件中断允许位
1 = 允许中断请求 0 = 禁止中断请求
SPF2IESPI2 故障中断允许位
1 = 允许中断请求 0 = 禁止中断请求
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 75
PIC24FJ64GA104 系列

寄存器 7-13 IEC3:中断允许控制寄存器 3

U-0 R/W-0 U-0 U-0 U-0 U-0 U-0 U-0
—RTCIE—
bit 15 bit 8
U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 U-0
MI2C2IE SI2C2IE
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14
bit 13-3
bit 2
bit 1
bit 0
未实现:读为 0 RTCIE:实时时钟 / 日历中断允许位
1 = 允许中断请求 0 = 禁止中断请求
未实现:读为 0
MI2C2IEI2C2 主事件中断允许位
1 = 允许中断请求 0 = 禁止中断请求
SI2C2IEI2C2 从事件中断允许位
1 = 允许中断请求 0 = 禁止中断请求
未实现:读为 0
DS39951B_CN 76 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-14 IEC4:中断允许控制寄存器 4

U-0 U-0 R/W-0 U-0 U-0 U-0 U-0 R/W-0
—CTMUIE— —LVDIE
bit 15 bit 8
U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 U-0
CRCIE U2ERIE U1ERIE
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-14
bit 13
bit 12-9
bit 8
bit 7-4
bit 3
bit 2
bit 1
bit 0
未实现:读为 0 CTMUIECTMU 中断允许位
1 = 允许中断请求 0 = 禁止中断请求
未实现:读为 0
LVD IE:低压检测中断允许位
1 = 允许中断请求 0 = 禁止中断请求
未实现:读为 0
CRCIECRC 发生器中断允许位
1 = 允许中断请求 0 = 禁止中断请求
U2ERIEUART2 错误中断允许位
1 = 允许中断请求 0 = 禁止中断请求
U1ERIEUART1 错误中断允许位
1 = 允许中断请求 0 = 禁止中断请求
未实现:读为 0
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 77
PIC24FJ64GA104 系列

寄存器 7-15 IPC0:中断优先级控制寄存器 0

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
T1IP2 T1IP1 T1IP0 OC1IP2 OC1IP1 OC1IP0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
IC1IP2 IC1IP1 IC1IP0 INT0IP2 INT0IP1 INT0IP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14-12
bit 11
bit 10-8
bit 7
bit 6-4
bit 3
bit 2-0
未实现:读为 0 T1IP<2:0>Timer1 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
OC1IP<2:0>:输出比较通道 1 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
IC1IP<2:0>:输入捕捉通道 1 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
INT0IP<2:0>:外部中断 0
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
优先级位
DS39951B_CN 78 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-16 IPC1:中断优先级控制寄存器 1

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
T2IP2 T2IP1 T2IP0 OC2IP2 OC2IP1 OC2IP0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0
IC2IP2 IC2IP1 IC2IP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14-12
bit 11
bit 10-8
bit 7
bit 6-4
bit 3-0
未实现:读为 0 T2IP<2:0>Timer2 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
OC2IP<2:0>:输出比较通道 2 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
IC2IP<2:0>:输入捕捉通道 2 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 79
PIC24FJ64GA104 系列

寄存器 7-17 IPC2:中断优先级控制寄存器 2

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
U1RXIP2 U1RXIP1 U1RXIP0 SPI1IP2 SPI1IP1 SPI1IP0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
SPF1IP2 SPF1IP1 SPF1IP0 T3IP2 T3IP1 T3IP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14-12
bit 11
bit 10-8
bit 7
bit 6-4
bit 3
bit 2-0
未实现:读为 0 U1RXIP<2:0>UART1 接收器中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
SPI1IP<2:0>SPI1 事件中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
SPF1IP<2:0>SPI1 故障中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
T3IP<2:0>Timer3 中断优先级位
111 =
中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
DS39951B_CN 80 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-18 IPC3:中断优先级控制寄存器 3

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
AD1IP2 AD1IP1 AD1IP0 U1TXIP2 U1TXIP1 U1TXIP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-7
bit 6-4
bit 3
bit 2-0
未实现:读为 0 AD1IP<2:0>A/D 转换完成中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
U1TXIP<2:0>UART1 发送器中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 81
PIC24FJ64GA104 系列

寄存器 7-19 IPC4:中断优先级控制寄存器 4

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
CNIP2 CNIP1 CNIP0 CMIP2 CMIP1 CMIP0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
MI2C1IP2 MI2C1IP1 MI2C1IP0 SI2C1IP2 SI2C1IP1 SI2C1IP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14-12
bit 11
bit 10-8
bit 7
bit 6-4
bit 3
bit 2-0
未实现:读为 0 CNIP<2:0>:输入电平变化通知中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
CMIP<2:0>:比较器中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
MI2C1IP<2:0>I2C1 主事件中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
SI2C1IP<2:0>I2C1 从事件中断优先级位
111 = 中断优先级为 7
001 = 中断优先级为 1 000 = 禁止中断源
(最高优先级中断)
DS39951B_CN 82 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-20 IPC5:中断优先级控制寄存器 5

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
bit 15 bit 8
U-0 U-0 U-0 U-0 U-0 R/W-1 R/W-0 R/W-0
INT1IP2 INT1IP1 INT1IP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-3
bit 2-0
未实现:读为 0 INT1IP<2:0>:外部中断 1 优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 83
PIC24FJ64GA104 系列

寄存器 7-21 IPC6:中断优先级控制寄存器 6

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
T4IP2 T4IP1 T4IP0 OC4IP2 OC4IP1 OC4IP0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0
OC3IP2 OC3IP1 OC3IP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14-12
bit 11
bit 10-8
bit 7
bit 6-4
bit 3-0
未实现:读为 0 T4IP<2:0>Timer4 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
OC4IP<2:0>:输出比较通道 4 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
OC3IP<2:0>:输出比较通道 3 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
DS39951B_CN 84 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-22 IPC7:中断优先级控制寄存器 7

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
U2TXIP2 U2TXIP1 U2TXIP0 U2RXIP2 U2RXIP1 U2RXIP0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
INT2IP2 INT2IP1 INT2IP0 T5IP2 T5IP1 T5IP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14-12
bit 11
bit 10-8
bit 7
bit 6-4
bit 3
bit 2-0
未实现:读为 0 U2TXIP<2:0>UART2 发送器中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
U2RXIP<2:0>UART2 接收器中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
INT2IP<2:0>:外部中断 2 优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
T5IP<2:0>Timer5 中断优先级位
111
= 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 85
PIC24FJ64GA104 系列

寄存器 7-23 IPC8:中断优先级控制寄存器 8

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
SPI2IP2 SPI2IP1 SPI2IP0 SPF2IP2 SPF2IP1 SPF2IP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-7
bit 6-4
bit 3
bit 2-0
未实现:读为 0 SPI2IP<2:0>SPI2 事件中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
SPF2IP<2:0>SPI2 故障中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
DS39951B_CN 86 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-24 IPC9:中断优先级控制寄存器 9

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
IC5IP2 IC5IP1 IC5IP0 IC4IP2 IC4IP1 IC4IP0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0
IC3IP2 IC3IP1 IC3IP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14-12
bit 11
bit 10-8
bit 7
bit 6-4
bit 3-0
未实现:读为 0 IC5IP<2:0>:输入捕捉通道 5 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
IC4IP<2:0>:输入捕捉通道 4 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
IC3IP<2:0>:输入捕捉通道 3 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 87
PIC24FJ64GA104 系列

寄存器 7-25 IPC10:中断优先级控制寄存器 10

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0
OC5IP2 OC5IP1 OC5IP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-7
bit 6-4
bit 3-0
未实现:读为 0 OC5IP<2:0>:输出比较通道 5 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
DS39951B_CN 88 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-26 IPC11:中断优先级控制寄存器 11

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0
PMPIP2 PMPIP1 PMPIP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-7
bit 6-4
bit 3-0
未实现:读为 0 PMPIP<2:0>:并行主端口中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 89
PIC24FJ64GA104 系列

寄存器 7-27 IPC12:中断优先级控制寄存器 12

U-0 U-0 U-0 U-0 U-0 R/W-1 R/W-0 R/W-0
MI2C2IP2 MI2C2IP1 MI2C2IP0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0
SI2C2IP2 SI2C2IP1 SI2C2IP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-11
bit 10-8
bit 7
bit 6-4
bit 3-0
未实现:读为 0 MI2C2IP<2:0>I2C2 主事件中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
SI2C2IP<2:0>I2C2 从事件中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
DS39951B_CN 90 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-28 IPC15:中断优先级控制寄存器 15

U-0 U-0 U-0 U-0 U-0 R/W-1 R/W-0 R/W-0
RTCIP2RTCIP1RTCIP0
bit 15 bit 8
U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-11
bit 10-8
bit 7-0
未实现:读为 0 RTCIP<2:0>:实时时钟 / 日历中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 91
PIC24FJ64GA104 系列

寄存器 7-29 IPC16:中断优先级控制寄存器 16

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0
CRCIP2 CRCIP1 CRCIP0 U2ERIP2 U2ERIP1 U2ERIP0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0
U1ERIP2 U1ERIP1 U1ERIP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14-12
bit 11
bit 10-8
bit 7
bit 6-4
bit 3-0
未实现:读为 0 CRCIP<2:0>CRC 发生器错误中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
U2ERIP<2:0>UART2 错误中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
U1ERIP<2:0>UART1 错误中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
DS39951B_CN 92 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

寄存器 7-30 IPC18:中断优先级控制寄存器 18

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
bit 15 bit 8
U-0 U-0 U-0 U-0 U-0 R/W-1 R/W-0 R/W-0
LVDIP2 LVDIP1 LVDIP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-3
bit 2-0
未实现:读为 0 LVDIP<2:0>:低压检测中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源

寄存器 7-31 IPC19:中断优先级控制寄存器 19

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
bit 15 bit 8
U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0
CTMUIP2 CTMUIP1 CTMUIP0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15-7
bit 6-4
bit 3-0
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 93
未实现:读为 0 CTMUIP<2:0>CTMU 中断优先级位
111 = 中断优先级为 7 (最高优先级中断)
001 = 中断优先级为 1 000 = 禁止中断源
未实现:读为 0
PIC24FJ64GA104 系列

寄存器 7-32 INTTREG:中断控制和状态寄存器

R-0 U-0 R/W-0 U-0 R-0 R-0 R-0 R-0
CPUIRQ —VHOLD— ILR3 ILR2 ILR1 ILR0
bit 15 bit 8
U-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0
VECNUM6 VECNUM5 VECNUM4 VECNUM3 VECNUM2 VECNUM1 VECNUM0
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 10 = 清零 x = 未知
bit 15
bit 14
bit 13
bit 12
bit 11-8
bit 7
bit 6-0
CPUIRQ:中断控制器 CPU 中断请求位
1 = 产生了中断请求,但 CPU 尚未响应;当 CPU 优先级高于中断优先级时会发生这种情况 0 = 没有未响应的中断请求
未实现:读为 0
VHOLD:向量编号捕捉配置位
1 = VECNUM 位包含优先级最高的待处理中断的向量值 0 = VECNUM 位包含上次响应的中断的向量值 (即,即使有其他中断待处理,捕捉的仍然是上次产生
的优先级高于 CPU 的中断) 未实现:读为 0 ILR<3:0>:新的 CPU 中断优先级位
1111 = CPU 中断优先级为 15
0001 = CPU 中断优先级为 1 0000 = CPU 中断优先级为 0
未实现:读为 0
VECNUM<6:0>:待处理中断向量 ID 位 (待处理中断的向量编号为 VECNUM + 8
0111111 = 待处理中断的向量编号为 135
0000001 = 待处理中断的向量编号为 9 0000000 = 待处理中断的向量编号为 8
DS39951B_CN 94 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

7.4 中断设置过程

7.4.1 初始化

要配置中断源:
1. 如果不需要嵌套中断,则将 NSTDIS 控制位 (INTCON1<15>)置 1
2. 通过写相应 IPCx 寄存器中的控制位为中断源选
择由用户分配的优先级。优先级将取决于具体的 应用和中断源类型。如果不需要多个优先级,则 可以将所有允许中断源的 IPCx 寄存器控制位编 程为相同的非零值。
注: 在器件复位时,IPCx 寄存器被初始化,为
所有用户中断源分配优先级 4
3. 将相应 IFSx 寄存器中与外设相关的中断标志状
态位清零。
4. 通过将相应 IECx 寄存器中与中断源相关的中断
允许控制位置 1 来允许中断源。

7.4.2 中断服务程序

如何声明ISR以及怎样使用正确的向量地址初始化IVT, 取决于编程语言(即, C 语言或汇编语言)和用于开发 应用程序的语言开发工具包。一般情况下,用户必须将 相应 IFSx 寄存器中与 ISR 处理的中断源相对应的中断 标志清零。否则,在退出 ISR 程序后应用程序将立即再 次进入 ISR。如果 ISR 用汇编语言编码,则必须使用 RETFIE 指令结束 ISR,以便将保存的 PC 值、 SRL 和原先的 CPU 优先级弹出堆栈。

7.4.3 陷阱服务程序

除了必须清零 INTCON1 寄存器中相应的陷阱状态标志 来避免重新进入陷阱服务程序(TSR)之外,TSR 使用 与 ISR 类似的方式编写。

7.4.4 中断禁止

可以使用以下步骤禁止所有用户中断:
1. 使用 PUSH 指令将当前的 SR 值压入软件堆栈。
2. 通过将值 OEh SRL 进行逻辑或运算来强制将 CPU 的优先级设置为 7。
要允许用户中断,则可以使用POP指令恢复先前的SR值。
注意,只能禁止优先级小于等于 7 的用户中断。不能禁 止陷阱源 (优先级为 8-15)。
使用 DISI 指令可以方便地将优先级为 1-6 的中断禁止 一段固定的时间。 DISI 指令不能禁止优先级为 7 的中 断源。
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 95
PIC24FJ64GA104 系列
注:
DS39951B_CN 96 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列

8.0 振荡器配置

注: 本数据手册总结了 PIC24F 系列器件的特
性。但是不应把本手册当作无所不包的参 考手册来使用。更多信息,请参见
PIC24F 系列参考手册》的第 6 章 “振荡
器”(DS39700A_CN)。
PIC24FJ64GA104 系列器件的振荡器系统具有以下 特性:
可选择4个外部和内部振荡器作为时钟源,提供11 种不 同的时钟模式
具有片上 4x PLL,可基于所选的内部和外部振荡器源 升高内部工作频率

8-1 PIC24FJ64GA104 系列时钟框图

主振荡器
OSCO
OSCI
4 x PLL
可通过软件控制在各种时钟源之间切换
可通过软件控制预分频器有选择地为 CPU 提供时
钟,以节省系统功耗
具有故障保护时钟监视器(Fail-Safe Clock Monitor, FSCM),可检测时钟故障,以使应用安全地恢复或
关闭
用于同步外部硬件的单独和独立配置的系统时钟 输出
8-1 给出了振荡器系统的简化框图。
XT、HS EC
XTPLLHSPLL
ECPLL FRCPLL
REFOCON<15:8>
参考时钟
发生器
REFO
SOSCO
SOSCI
FRC
振荡器
LPRC
振荡器
辅助振荡器
8 MHz
(标称值)
31 kHz(标称值)
SOSCEN
使能振荡器
后分频器
CLKDIV<10:8>
8 MHz 4 MHz
FRCDIV
FRC
LPRC
SOSC
时钟控制逻辑
故障保护
时钟
监视器
外设
CLKO
CPU
后分频器
CLKDIV<14:12>
WDT PWRT
时钟源选项
(供其他模块使用)
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 97
PIC24FJ64GA104 系列

8.1 CPU 时钟机制

系统时钟源可以由以下 4 种之一提供:
•OSCI和 OSCO 引脚上的主振荡器 (POSC)
•SOSCI和 SOSCO 引脚上的辅助振荡器(SOSC)
内部快速 RC FRC)振荡器
内部低功耗 RC LPRC)振荡器
主振荡器和 FRC 源可以选择使用内部 4x PLLFRC 时 钟源的频率可选择通过可编程时钟分频器降低。选定的 时钟源将产生处理器和外设的时钟源。
处理器时钟源需进行二分频,以产生内部指令周期时钟
CY。在本文档中,指令周期时钟也表示为 FOSC/2。内
F
部指令周期时钟 FOSC/2 可以在 OSCO I/O 引脚提供, 用于主振荡器的一些工作模式。

8.2 POR 时的初始配置

在发生器件上电复位事件时使用的振荡器源 (以及工作 模式)使用配置位设置进行选择。振荡器配置位在程序存 储器的配置寄存器中进行设置 (更多详细信息,请参见
25.1 节“配置位”)。主振荡器配置位 POSCMD<1:0> (配置字2<1:0>)和初始振荡器选择配置位FNOSC<2:0> (配置字 2<10:8>)用于选择在上电复位时使用的振荡器
源。默认情况下 (未编程时)将选择带后分频器的 FRC
主振荡器 (FRCDIV)。通过编程这些位,可以选择辅助
振荡器或一个内部振荡器。
这些配置位使用户可以选择多种时钟模式,如表8-1 所示。

8.2.1 时钟切换模式配置位

FCKSM 配置位(配置字 2<7:6>)一起用于配置器件时
钟切换和故障保护时钟监视器 (FSCM) 。只有将
FCKSM1 编程 (0)时,才会使能时钟切换。只有同时
FCKSM<1:0> 位编程 (00)时,才会使能 FSCM
8-1 时钟选择的配置位值
振荡器模式 振荡器源
带后分频器的快速 RC 振荡器
FRCDIV) (保留) 内部
低功耗 RC 振荡器 (LPRC)内部 辅助 (Timer1)振荡器 (SOSC)辅助 带 PLL 模块的主振荡器 (XT
XTPLL
PLL 模块的主振荡器 (EC
ECPLL
主振荡器 (HS)主 主振荡器 (XT)主 主振荡器 (EC)主 带 PLL 模块的快速 RC 振荡器
FRCPLL
快速 RC 振荡器 (FRC)内部 注 1OSCO 引脚功能由 OSCIOFCN 配置位决定。
2: 这是未编程 (已擦除)器件的默认振荡器模式。
内部
内部
POSCMD1:
POSCMD0
11 111 1, 2
xx 110 1
11 101 1
11 100 1
01 011
00 011
10 010
01 010
00 010
11 001 1
11 000 1
FNOSC2:
FNOSC0
DS39951B_CN 98 初稿 © 2009 Microchip Technology Inc.
Loading...