PIC24FJ64GA104 系列
数据手册
采用 nanoWatt XLP 技术的
28/44 引脚 16 位
通用闪存单片机
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
•M i c r o c h i p的产品均达到 Microchip 数据手册中所述的技术指标。
•M i c r o c h i p确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的
操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•M i c r o c h i p愿与那些注重代码完整性的客户合作。
•M i c r o c h i p或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视
为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act )》。如果这种行为导致他人在未经授权的情况下,能访问您的
软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含
的英文部分,因为其中提供了有关 Microchip 产品性能和使用
情况的有用信息。Microchip Technology Inc. 及其分公司和相
关公司、各级主管与员工及事务代理机构对译文中可能存在的
任何差错不承担任何责任。建议参考 Microchip Technology
Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便
利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或
暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用
性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。如果将 Microchip 器件用于生命
维持和 / 或生命安全应用,一切风险由买方自负。买方同意在
由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障
Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识
产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 dsPIC、
K
EEL OQ、 K EEL OQ 徽标、 MPLAB、 PIC、 PICmicro、
PICSTART、 rfPIC 和 UNI/O 均为 Microchip Technology Inc.
在美国和其他国家或地区的注册商标。
FilterLab、 Hampshire、 HI-TECH C、 Linear Active
Thermistor、 MXDEV、 MXLAB、 SEEVAL 和 The Embedded
Control Solutions Company 均为 Microchip Technology Inc.
在美国的注册商标。
Analog-for-the-Digital Age、 Application Maestro、
CodeGuard、 dsPICDEM、 dsPICDEM.net、 dsPICworks、
dsSPEAK、 ECAN、 ECONOMONITOR、 FanSense、
HI-TIDE、 In-Circuit Serial Programming、 ICSP、 Mindi、
MiWi、 MPASM、 MPLAB Certified 徽标、 MPLIB、 MPLINK、
mTouch、 Octopus、 Omniscient Code Generation、 PICC、
PICC-18、 PICDEM、 PICDEM.net、 PICkit、 PICtail、 PIC
32
徽标、 REAL ICE、 rfLAB、 Select Mode、 Total Endurance、
TSHARC、 UniWinDriver、 WiperLock 和 ZENA 均为
Microchip Technology Inc. 在美国和其他国家或地区的商标。
SQTP 是 Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。
© 2009, Microchip Technology Inc . 版权所有。
Microchip
Gresham
印度的设计中心均通过了
MCU与dsPIC® DSC、KEE LOQ
设、非易失性存储器和模拟产品方面的质量体系流程均符合
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 Reset, POR)、上电延时定时器
(Power-up Timer , PWRT )和振荡器起振定时器
(Oscillator Start-up Timer, OST )
• 两个灵活的看门狗定时器 (Watchdog Timer , WDT ),
用于可靠工作:
- 标准可编程 WDT 用于正常工作模式
- 极低功耗 WDT 用于深度休眠模式 (可编程周期为
2ms至 26 天)
• 在线串行编程(In-Circuit Serial Programming™, ICSP™)
和通过两个引脚进行的在线调试( In-Circuit Debug, ICD)
•JTAG边界扫描支持
模拟特性:
• 最多 13 路通道的 10 位模数(Analog-to-Digital , A/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
系列器件
3 2 G A 1 0 22 83 2 K8 K1 65552221 03
6 4 G A 1 0 22 86 4 K8 K1 65552221 03
3 2 G A 1 0 44 43 2 K8 K2 65552221 33
6 4 G A 1 0 44 46 4 K8 K2 65552221 33
© 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):
- 提供时钟、日历和闹钟功能
- 即使处于深度休眠模式也可工作
• 两个带有 8级 FIFO缓冲区的 3 线 /4 线 SPI模块(支持4 帧
模式)
2
• 两个 I
C™ 模块,支持多主器件 / 从模式和 7 位/10 位寻址
引脚图
28 引脚 SPDIP 和 SOIC
(1)
• 两个 UART 模块:
- 支持 RS-485、 RS-232 和 LIN/J2602
- 用于 IrDA
®
的片上硬件编码器 / 解码器
- 接收到启动位时自动唤醒
- 自动波特率检测 ( Auto-Baud Detect, ABD)
-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/V DDCORE
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
23 24 25 26 27 28
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 。
3: QFN 器件上的底板应连接到 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/V DDCORE
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/RA7 TCK/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 。
3: QFN 器件上的底板应连接到 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是DS30000
的 A 版本。
勘误表
现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到
器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
•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 Loop, PLL)倍频器,
可在外部振荡器模式和采用 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 系列集成了一些串行通信
外设以满足一系列的应用要求。有两个独立的I 2C™
模块支持主模式和从模式下的操作。通过外设引脚
选择(Peripheral Pin Select ,PPS )功能,器件还
具有两个带内置 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
Notification, ICN)输入:
-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 端口 A、 B 和 C
I/O 引脚总数
可重映射的引脚
定时器:
总数 ( 16 位)
32 位 (由一对 16 位定时器组成)
输入捕捉通道
输出比较 /PWM 通道
输入电平变化通知中断
串行通信:
UART 2
SPI (3 线 /4 线)
I2C™ 2
并行通信 ( PMP/PSP)有
JTAG 边界扫描 有
10 位模数转换模块 (输入通道)
模拟比较器
CTMU 接口 有
复位 (和延时) POR 、 BOR 、 RESET 指令、 MCLR
指令集 76 条基本指令,多种寻址模式
封装 28 引脚 QFN 、 SOIC 和 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 指令、硬件陷阱和配置字不匹配
(PWRT 、 OST 和 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
读 AGU
写 AGU
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
A N 9 2 62 31 5I A N A
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 ——1 7P—
AV
SS ——1 6P—
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
C 2 I N C 1 293 4I A N A
C2IND 11 8 33 I ANA
C 3 I N A 2 62 31 5I A N A
C 3 I N B 2 52 21 4I A N A
C3INC 2 27 19 I ANA
C3IND 3 28 20 I ANA
CLKI 9 6 30 I ANA
C L K O 1 073 1O —
图注: 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
输入
缓冲器
说明
C N 0 1 293 4I S T
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
O S C O 1 073 1O A N A
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
12 61 8I S T
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
R A 3 1 073 1 I / O S T
R A 4 1 293 4 I / O S T
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
R B 5 1 41 14 1I / O S T
R B 6 1 51 24 2I / O S T
R B 7 1 61 34 3I / O S T
R B 8 1 71 44 4I / O S T
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
R P 7 1 61 34 3I / O S T
R P 8 1 71 44 4I / O S T
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
T 1 C K 1 293 4I S T
T C K 1 71 41 3IS T
T D I 1 61 33 5IS T
T D O 1 81 53 2O—
T M S 1 41 11 2IS T
图注: 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 和 V SS 引脚(见第 2.2 节“电源引脚”)
能)(见第 2.2 节 “电源引脚”)
引脚 (见第 2.3 节“主复位(MCLR )引 脚 ”)
CAP/V DDCORE 引脚(仅
限 PIC24FJ 器件)(见第 2.4 节 “稳压器引脚
(ENVREG/DISVREG 和 VCAP /VDDCORE )”)
和调试 (见第 2.5 节“ICSP 引脚”)
(见第 2.6 节 “外部振荡器引脚”)
REF +/V REF - 引脚(在实现模拟模块的外部参考电压
时使用)
注: 不论是否使用任何模拟模块,都必须始终
连接 AVDD 和 AVSS 引脚。
图 2-1 : 建议的最低限度连接
(2)
C2
V
DD
R1
R2
MCLR
C1
PIC24FXXXX
(2)
C6
关键 (所有值均为建议值):
C1 至 C6: 0.1 μF, 20V 陶瓷电容
C7: 10 μF, 16V 钽电容或陶瓷电容
R1: 10 kΩ
R2: 100Ω 至 470Ω
注 1 : 关于 ENVREG/DISVREG 引脚连接的说明,请
VSS
VDD
AVDD
AVSS
(2)
C5
参见第 2.4节“稳压器引脚( ENVREG/DISVREG
CAP/V DDCORE)”。
和 V
2: 所给出的示例针对的是具有 5 个 V
DD/AV SS 引脚对的 PIC24F 器件。其他器件
AV
的引脚对可能增多或减少,请相应地调整去耦
电容的数量。
VDD
( EN/DIS) VREG
VCAP /VDDCORE
VDD
(2)
C4
VSS
VDD
VSS
VSS
(1)
DD/V SS 和
(1)
C3
C7
(2)
© 2009 Microchip Technology Inc. 初稿 DS39951B_CN 第 17 页
PIC24FJ64GA104 系列
2.2 电源引脚
2.2.1 去耦电容
在每对电源引脚(例如, VDD 、VSS 、 AV 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 的具体值。例如,在编程和调试操作期间,建
议通过使用跳线将电容C1 与MCLR
对于正常的运行时操作,可以将跳线放回原处。
与 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
2 : R2 ≤ 470Ω 将限制任何电流从外部电容 C 流入
MCLR
Discharge, ESD)或 电 过 载 ( Electrical
Overstress,EOS)导 致 MCLR
保满足 MCLR
引脚 VIH 和 VIL 规范。
,以避免由于静电放电 (Electrostatic
引脚损坏。请确
引脚 VIH 和 VIL 规范。
DS39951B_CN 第 18 页 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列
2.4 稳压器引脚 ( ENVREG/DISVREG
CAP/V DDCORE)
和 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
V DDCORE 的电源连接。关于 V DD 和 V DDCORE 的信息,
请参见第 28.0 节 “电气特性”。
图 2-3 :所 建 议VCAP 的频率与 ESR 性能
10
DD 连接可以使能稳压器,接地
DD连接
CAP/V DDCORE 引脚上需要有低 ESR
CAP/V DDCORE。建议走线长度不要
CAP/V DDCORE 引脚必须与电压为
2.5 ICSP 引脚
PGECx 和 PGEDx 引脚用于进行在线串行编程(ICSP )
和调试。建议尽可能减小 ICSP 连接器与器件 ICSP 引
脚之间的走线长度。如果 ICSP 连接器会遇到 ESD 事
件,则建议添加一个串联电阻,电阻值介于几十欧姆的
范围,不要超出 100 Ω 。
建议不要在 PGECx 和 PGEDx 引脚上连接上拉电阻、
串联二极管和电容,因为它们会影响与器件的编程器 /
调试器通信。如果应用需要此类分立元件,则在编程和
调试期间应将它们从电路中取出。或者,请参见相应器
件闪存编程规范中的交流 / 直流特性与时序要求信息,
了解关于容性负载限制、引脚输入高电压 (V
入低电压 (VIL )要求的信息。
对于器件仿真,请确保烧写到器件中的 “通信通道选
择”(即,PGECx/PGEDx 引脚)符合 ICSP 到 MPLAB
ICD 2 、 MPLAB ICD 3 或 MPLAB REAL ICE™ 仿真器
的物理连接。
关于 ICD 2 、 ICD 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°C 、 0V 直流偏置条件下测量。
频率(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 2 、ICD 3 或 REAL ICE 仿真
器作为调试器,则它们会自动将 AD1PCFGL 寄存器中
的所有位置 1 ,从而将所有 A/D 输入引脚 (ANx )初始
化为 “数字”引脚。
禁止用户应用程序固件清零该寄存器中对应于由
MPLAB ICD 2、 ICD 3 或 REAL ICE 仿真器初始化的
A/D 引脚的位;否则,调试器和器件之间将会产生通信
错误。
如果在调试会话期间,应用程序需要使用一些特定 A/D
引脚作为模拟输入引脚,则用户应用程序必须在 ADC 模
块初始化期间,清零 AD1PCFGL 寄存器中的相应位。
使用 MPLAB ICD 2 、ICD 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 Counter ,PC )为 23 位宽,
可以寻址最大 4M 指令字的用户程序存储空间。单周期
指令预取机制可帮助维持吞吐量,并使指令的执行具有
预测性。除了改变程序流的指令、双字传送 (MOV.D )
指令和表指令以外,所有指令都在单个周期内执行。使
用 REPEAT 指令可以支持无开销的程序循环结构,该指
令在任何时间都可以被中断。
PIC24F 器件在编程模型中有 16 个 16 位工作寄存器。
每个工作寄存器都可以充当数据、地址或地址偏移寄存
器。第 16 个工作寄存器 (W15 )作为软件堆栈指针工
作,用于中断和调用。
可以选择将数据存储空间的高 32 KB 映射到由 8 位程序
空间可视性页地址 (Program Space Visibility Page
Address , PSVPAG )寄存器定义的任何 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 系列
0 15
工作 / 地址
寄存器
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: SR: ALU 状态寄存器
U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0
— — — — — — —D C
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 循环
N: ALU 负标志位
1 = 结果为负
0 = 结果为非负 (零或正值)
OV: ALU 溢出标志位
1 = 有符号 (二进制补码)算术运算中发生溢出 (本次运算)
0 = 未发生溢出
Z: ALU 全零标志位
1 =
0 = 影响 Z 位的最近一次运算已将该位清零 (即运算结果非零)
C: ALU 进位 / 借位标志位
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 状态位是只读位。
2: IPL 状态位与 IPL3 位(CORCON<3>)组合形成 CPU 中断优先级 ( Interrupt Priority Level, IPL)。
当 IPL3 = 1 时,括号中的值表示 IPL。
DS39951B_CN 第 24 页 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列
寄存器 3-2 : CORCON :CPU 控制寄存器
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
— — — —I P L 3
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
IPL3 :CPU 中断优先级状态位
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
Routine, ISR)处理每个器件中断源。关于中断向量表
更详细的讨论,请参见第 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 地址
0 8 16
000000h
000002h
000004h
000006h
DS39951B_CN 第 28 页 初稿 © 2009 Microchip Technology Inc.
PIC24FJ64GA104 系列
4.2 数据地址空间
PIC24F 内核具有独立的 16 位宽数据存储空间,可将其
作为一个线性空间寻址。使用两个地址发生单元
(Address Generation Unit ,AGU)分别对数据空间执行
读写操作。数据存储空间映射如图 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
LSB MSB
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
— —P M P I F— — —O C 5 I F— IC5IF IC4IF IC3IF — — — SPI2IF SPF2IF 0000
—R T C I F— — — — — — — — — — — MI2C2IF SI2C2IF — 0000
— —C T M U I F— — — —L V D I F— — — — CRCIF U2ERIF U1ERIF — 0000
— — — — — — — — — — — — — — — — 0000
— — AD1IE U1TXIE U1RXIE SPI1IE SPF1IE T3IE T2IE OC2IE IC2IE — T1IE OC1IE IC1IE INT0IE 0000
— —P M P I E— — —O C 5 I E— IC5IE IC4IE IC3IE — — — SPI2IE SPF2IE 0000
—R T C I E— — — — — — — — — — — MI2C2IE SI2C2IE — 0000
— —C T M U I E— — — —L V D I E— — — — 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
— I C 5 I P 2I C 5 I P 1I C 5 I P 0 — I C 4 I P 2I C 4 I P 1I C 4 I P 0 — IC3IP2 IC3IP1 IC3IP0 — — — — 4440
— — — — — — — — — OC5IP2 OC5IP1 OC5IP0 — — — — 0040
— — — — — — — — — PMPIP2 PMPIP1 PMPIP0 — — — — 0040
— — — — — MI2C2IP2 MI2C2IP1 MI2C2IP0 — SI2C2IP2 SI2C2IP1 SI2C2IP0 — — — — 0440
— — — — — R T C I P 2R T C I P 1R T C I P 0 — — — — — — — — 0400
— CRCIP2 CRCIP1 CRCIP0 — U2ERIP2 U2ERIP1 U2ERIP0 — U1ERIP2 U1ERIP1 U1ERIP0 — — — — 4440
— — — — — — — — — — — — — LVDIP2 LVDIP1 LVDIP0 0004
— — — — — — — — — CTMUIP2 CTMUIP1 CTMUIP0 — — — — 0040
— — — — — — — — — — — — — — — — 0400
—V H O L D— 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
—T S I D L— — — — — — TGATE TCKPS1 TCKPS0 — TSYNC TCS — 0000
—T S I D L— — — — — — TGATE TCKPS1 TCKPS0 T32 —T C S— 0000
—T S I D L— — — — — — TGATE TCKPS1 TCKPS0 — —T C S— 0000
—T S I D L— — — — — — TGATE TCKPS1 TCKPS0 T32 —T C S— 0000
—T S I D L— — — — — — TGATE TCKPS1 TCKPS0 — —T C S— 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 : I 2C™ 寄存器映射
寄存器名称 地址
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
—S P I S I D L— — 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
—S P I S I D L— — 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
—A D S I D L — — — FORM1 FORM0 SSRC2 SSRC1 SSRC0 — — ASAM SAMP DONE 0000
r — CSCNA — —B U F S— 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
—C S 1— — — ADDR10
—P T E N 1 4— — —P T E N 1 0
— — 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
C R C X O R L 0 6 4 4X 1 5X 1 4X 1 3X 1 2X 1 1X 1 0X 9X 8X 7X 6X 5X 4X 3X 2X 1
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
— — — I N T 1 R 4I N T 1 R 3I N T 1 R 2I N T 1 R 1I N T 1 R 0 — — — — — — — — 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 — — — — — — — — — — — — —D S B O R R E L E A S E0000
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
— — — — — — —D S I N T 0D S F L T — — DSWDT DSRTC DSMCLR —D S P O R0001
深度休眠通用寄存器 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 系列
注 1
注 2
(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 — — — — —I 2 C 2 M D— 0000
— — — — — — — — — — — —R E F O M D C T M U M DL V D M D — 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>
< 空字 >
0 15
W15(CALL 前)
W15(CALL 后)
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 指令提供了直接读或写程序空间内
任何地址的低位字的方法,无需通过数据空间。TBLRDH
和 TBLWTH 指令是可以将一个程序空间字的高 8 位作为
数据读写的唯一方法。
对于每个连续的 24 位程序字,PC 的递增量为 2 。这 使
得程序存储器地址能够直接映射到数据空间地址。于
是,程序存储器可以看作是两个 16 位字宽的地址空间,
它们并排放置,具有相同的地址范围。TBLRDL 和
TBLWTL 访问包含最低有效数据字的空间,而 TBLRDH
和 TBLWTH 则访问包含最高数据字节的空间。
提供了两条表指令来对程序空间执行字节或字(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>
0 8 16 23
00000000
00000000
00000000
00000000
“虚拟”字节
TBLRDH.B(Wn<0> = 0)
TBLRDL.B(Wn<0> = 1)
TBLRDL.B(Wn<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 循环外执行的操作,MOV
和 MOV.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 根线就可以完成编
程,其中编程时钟线和编程数据线(分别命名为 PGECx
和 PGEDx )各一根,其余 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 — —N V M O P 3
(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 时复位。
2: NVMOP<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
•SWR:RESET 指令
•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
模块
休眠或空闲
V DD 上升
检测
欠压
复位
使能稳压器
陷阱冲突
非法操作码
配置不匹配
毛刺滤波器
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
所有其他复位 任何时钟
注 1 : T
2: T
3: 如果禁止稳压器 (DISVREG 连接到 V
4: TFRC 和 T LPRC = RC 振荡器起振时间。
5: T
6: TOST = 振荡器起振定时器 (OST )延时。 10 位计数器等待 1024 个振荡周期后,才将振荡器时钟释放给系
统使用。
7 : 如果使能了双速启动,则无论选择何种主振荡器,器件都使用 FRC 启动,并且在这种情况下, FRC 起振时
间有效。
8 : T
EC TPOR + TRST + TPWRT — 1, 2, 3, 8
FRC 和 FRCDIV
LPRC T
ECPLL T
TPOR + TRST + TPWRT T FRC 1, 2, 3, 4, 7, 8
POR
+ TRST + TPWRT T LPRC 1, 2, 3, 4, 8
POR
+ TRST + TPWRT T LOCK 1, 2, 3, 5, 8
FRCPLL TPOR + TRST + TPWRT T FRC + TLOCK 1, 2, 3, 4, 5, 7, 8
POR
+ TRST + TPWRT T OST 1, 2, 3, 6, 8
XT、 HS 和 SOSC
XTPLL 和 HSPLL
FRC 和 FRCDIV
LPRC T
T
POR
+ TRST + TPWRT T OST + TLOCK 1, 2, 3, 5, 6, 8
T
RST + T PWRT T FRC 2, 3, 4, 7, 8
T
RST + T PWRT T LPRC 2, 3, 4, 8
ECPLL TRST + T PWRT T LOCK 2, 3, 5, 8
FRCPLL T
XT、 HS 和 SOSC
XTPLL 和 HSPLL
POR = 上电复位延时。
RST = 内部状态复位时间。
DD),则 TPWRT = 64 ms 标称值。
LOCK = PLL 锁定时间。
RST = 配置设置时间。
RST + T PWRT T FRC + T LOCK 2, 3, 4, 5, 7, 8
RST + T PWRT T OST 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 Routine , TSR )中切换为所需的晶振。
6.3 特殊功能寄存器的复位状态
大多数与 PIC24F CPU 和外设相关的特殊功能寄存器
(SFR )会在器件复位时复位为某个特定值。 SFR 是按
其外设或 CPU 功能分组的,其复位值在本手册的相应章
节有说明。
除了 4 个寄存器外,其他 SFR 的复位值都与复位类型
无关。复位控制寄存器 RCON 的复位值取决于器件复位
的类型。振荡器控制寄存器 OSCCON 的复位值取决于
复位类型和闪存配置字 2 (CW2 )中 FNOSC 位的编程
值;请参见表 6-2 。 RCFGCAL 和 NVMCON 寄存器只
受 POR 影响。
6.4 深度休眠 BOR (DSBOR )
深度休眠 BOR 是功耗极低的 BOR 电路,在器件处于深
度休眠模式时使用。由于电流消耗很低,因此精度会因
情况而异。
DSBOR
来使能 DSBOR。 DSBOR 会重新激活 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
Table, IVT)
• 每个中断或异常源对应一个唯一的向量
• 在指定的用户优先级内具有固定的优先级
• 用于支持调试功能的备用中断向量表 ( Alternate
Interrupt Vector Table, AIVT)
• 固定的中断进入和返回延时
7.1 中断向量表
中断向量表 (IVT )如图 7-1 所示。 IVT 位于程序存储
器中,起始单元地址是 000004h 。IVT 包含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 中的向量编号顺序分配给 IFSx 、 IECx
和 IPCx 寄存器。例如, 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 : SR :ALU 状态寄存器 (在 CPU 中)
U-0 U-0 U-0 U-0 U-0 U-0 U-0 R-0
— — — — — — —D C
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 了解其他位的说明,它们并不是专用于中断控制功能。
2: IPL 位与 IPL3 位(CORCON<3>)组合形成 CPU 中断优先级。如果 IPL3 = 1,那么括号中的值表示中断
优先级。
3 : 当 NSTDIS ( INTCON1<15> ) = 1 时, IPL 状态位是只读位。
寄存器 7-2 : CORCON :CPU 控制寄存器
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
— — — —I P L 3
(2)
bit 7 bit 0
PSV
(1)
— —
图注:
C = 可清零位
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 3
IPL3: CPU 中断优先级状态位
(2)
1 = CPU 中断优先级大于 7
0 = CPU 中断优先级等于或小于 7
注 1: 请参见寄存器 3-2 了解其他位的说明,它们并不是专用于中断控制功能。
2: IPL3 位与 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
AD1IF :A/D 转换完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
U1TXIF: UART1 发送器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
U1RXIF: UART1 接收器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
SPI1IF: SPI1 事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
SPF1IF: SPI1 故障中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
T3IF: Timer3 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
T2IF: Timer2 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
OC2IF:输出比较通道 2 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
IC2IF:输入捕捉通道 2 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
未实现:读为 0
T1IF: Timer1 中断标志状态位
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
U2TXIF : UART2 发送器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
U2RXIF: UART2 接收器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
INT2IF:外部中断 2 标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
T5IF: Timer5 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
T4IF: Timer4 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
OC4IF:输出比较通道 4 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
OC3IF:输出比较通道 3 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
未实现:读为 0
INT1IF:外部中断 1 标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
CNIF:输入电平变化通知中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
CMIF:比较器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
MI2C1IF: I2C1 主事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
SI2C1IF: I2C1 从事件中断标志状态位
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
— —P M P I F— — —O C 5 I F—
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
SPI2IF: SPI2 事件中断标志状态位
1
= 产生了中断请求
0 = 未产生中断请求
SPF2IF : SPI2 故障中断标志状态位
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
—R T C I F— — — — — —
bit 15 bit 8
U-0 U-0 U-0 U-0 U-0 R/W-0, R/W-0 U-0
— — — — —M I 2 C 2 I F S I 2 C 2 I F —
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
MI2C2IF: I2C2 主事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
SI2C2IF: I2C2 从事件中断标志状态位
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
— —C T M U I F— — — —L V D I F
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
CTMUIF :CTMU 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
未实现:读为 0
LVD IF:低压检测中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
未实现:读为 0
CRCIF: CRC 发生器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
U2ERIF: UART2 错误中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
U1ERIF: UART1 错误中断标志状态位
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
AD1IE :A/D 转换完成中断允许位
1 = 允许中断请求
0 = 禁止中断请求
U1TXIE: UART1 发送器中断允许位
1 = 允许中断请求
0 = 禁止中断请求
U1RXIE: UART1 接收器中断允许位
1 = 允许中断请求
0 = 禁止中断请求
SPI1IE: SPI1 传输完成中断允许位
1 = 允许中断请求
0 = 禁止中断请求
SPF1IE: SPI1 故障中断允许位
1 = 允许中断请求
0 = 禁止中断请求
T3IE: Timer3 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
T2IE: Timer2 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
OC2IE:输出比较通道 2 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
IC2IE:输入捕捉通道 2 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
未实现:读为 0
T1IE: Timer1 中断允许位
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
— — —I N T 1 I E
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
U2TXIE : UART2 发送器中断允许位
1 = 允许中断请求
0 = 禁止中断请求
U2RXIE: UART2 接收器中断允许位
1 = 允许中断请求
0 = 禁止中断请求
INT2IE:外部中断 2 允许位
1 = 允许中断请求
0 = 禁止中断请求
T5IE: Timer5 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
T4IE: Timer4 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
OC4IE:输出比较通道 4 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
OC3IE:输出比较通道 3 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
未实现:读为 0
INT1IE:外部中断 1 允许位
1 = 允许中断请求
0 = 禁止中断请求
CNIE:输入电平变化通知中断允许位
1 = 允许中断请求
0 = 禁止中断请求
CMIE:比较器中断允许位
1 = 允许中断请求
0 = 禁止中断请求
MI2C1IE: I2C1 主事件中断允许位
1 = 允许中断请求
0 = 禁止中断请求
SI2C1IE: I2C1 从事件中断允许位
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
— —P M P I E— — —O C 5 I E—
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
SPI2IE: SPI2 事件中断允许位
1 = 允许中断请求
0 = 禁止中断请求
SPF2IE: SPI2 故障中断允许位
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
—R T C I E— — — — — —
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
MI2C2IE: I2C2 主事件中断允许位
1 = 允许中断请求
0 = 禁止中断请求
SI2C2IE: I2C2 从事件中断允许位
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
— —C T M U I E— — — —L V D I E
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
CTMUIE :CTMU 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
未实现:读为 0
LVD IE:低压检测中断允许位
1 = 允许中断请求
0 = 禁止中断请求
未实现:读为 0
CRCIE: CRC 发生器中断允许位
1 = 允许中断请求
0 = 禁止中断请求
U2ERIE: UART2 错误中断允许位
1 = 允许中断请求
0 = 禁止中断请求
U1ERIE: UART1 错误中断允许位
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
— — — — — R T C I P 2R T C I P 1R T C I P 0
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 —V H O L D— 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
XTPLL、 HSPLL、
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 PLL 。FRC 时
钟源的频率可选择通过可编程时钟分频器降低。选定的
时钟源将产生处理器和外设的时钟源。
处理器时钟源需进行二分频,以产生内部指令周期时钟
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 )内 部
注 1 : OSCO 引脚功能由 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.