MCV18E
数据手册
18 引脚闪存单片机
© 2009 Microchip Technology Inc. DS41399A_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-
DS41399A_CN 第2 页 © 2009 Microchip Technology Inc.
18 引脚闪存单片机
MCV18E
单片机内核特性:
• 高性能 RISC CPU
• 仅需学习 35 条单字指令
- 除程序跳转指令是双周期指令外,所有指令都
是单周期指令
• 工作速度: DC – 20 MHz 时钟输入
DC – 200 ns 指令周期
• 中断能力 (最多 7 个内部 / 外部中断源)
•8级深硬件堆栈
• 直接、间接和相对寻址模式
单片机特性:
• 上电复位 ( Power-on Reset, POR)
• 上电延时定时器( Power-up Timer, PWRT)和 振
荡器起振定时器( Oscillator Start-up Timer,OST)
• 看门狗定时器 ( Watchdog Timer, WDT),具有
自己的片上 RC 振荡器,能够可靠工作
• 双电平欠压复位电路
BOR (典型值)
- 2.5 V
BOR (典型值)
- 4.0 V
• 可编程代码保护
• 节能休眠模式
• 可选的振荡器选项
• 全静态设计
• 在线串行编程 ( In-Circuit Serial Programming™,
ICSP™)
CMOS 技术:
• 宽工作电压范围:
- 工业级: 5.5V
• 高灌 / 拉电流: 25/25 mA
• 宽温度范围:
- 工业级: -40
° C 至 85 ° C
低功耗特性:
• 待机电流:
-2.4V时最小值为 125 nA
• 工作电流:
- 32 kHz、 2.4V 时最小值为 17.5 μA
-1 MHz、 2.4V 时最小值为 150 μA
• 看门狗定时器电流:
-2.4V时最小值为 1.25 μA
•Timer1振荡器电流:
- 32 kHz、 2.4V 时最小值为 3.75 μA
外设特性:
•Timer0:带有 8 位预分频器的 8 位定时器 / 计数器
•Timer1:带有预分频器的 16 位定时器 / 计数器,
能通过外部晶振 / 时钟在休眠期间进行递增
•Timer2:带有 8 位周期寄存器、预分频器和后分频
器的 8 位定时器 / 计数器
• 增强型捕捉 / 比较 /PWM 模块:
- 捕捉模块为 16 位,最大分辨率为 12.5 ns
- 比较模块为 16 位,最大分辨率为 200 ns
-PWM模块最大分辨率为 10 位
- 增强型 PWM:
- 单 PWM、半桥和全桥模式
- 数字可编程死区延时
- 自动关闭 / 重启
•8位多通道模数转换器
• 可单独进行方向控制的 13 个 I/O 引脚
•PORTB上的可编程弱上拉
器件
存储器
闪存 数据
MCV18E 2048 x 14 128 x 8 13 4 2/1 1/2/4 5.5V
© 2009 Microchip Technology Inc. DS41399A_CN 第 3 页
I/O
8 位 A/D
(通道)
8/16 位
定时器
PWM
(输出)
DD 范围
V
MCV18E
18 引脚图
18 引脚 PDIP 和 SOIC
RA2/AN2
RA3/AN3/VREF
RA4/T0CKI
MCLR
/VPP
SS
V
RB0/INT/ECCPAS2
RB1/T1OSO/T1CKI
RB2/T1OSI
RB3/CCP1/P1A
1
2
3
4
5
6
7
8
9
18
17
16
15
14
13
MCV18E
12
11
10
RA1/AN1
RA0/AN0
OSC1/CLKIN
OSC2/CLKOUT
VDD
RB7/P1D
RB6/P1C
RB5/P1B
RB4/ECCPAS0
表 1: 18 引脚 PDIP 和 SOIC 汇总
I/O
引脚 模拟
RA0 17 AN0 — — — — —
RA1 18 AN1 — — — — —
RA2 1 AN2 — — — — —
RA3
RA4 3 — — T0CKI — — —
RB0 6 — ECCPAS2
RB1 7 — — T1OSO/T1CKI —
RB2 8 — — T1OSI —
RB3 9 — CCP1/P1A — —
RB4 10 — ECCPAS0
RB5 11 — P1B — IOC
RB6 12 — P1C — IOC
RB7 13 — P1D — IOC
—1 4 — — — — — V
— 5 — — — — — VSS
—4 — — — — — M C L R /VPP
— 16 — — — — — OSC1/CLKIN
— 15 — — — — — OSC2/CLKOUT
2A N 3 / VREF ——— — —
ECCP
定时器 中断 上拉 基本功能
—I N T
—I O C
有
有
有
有
有
有
有
有
—
—
—
—
—
—
ICSPCLK
ICSPDAT
DD
DS41399A_CN 第 4 页 © 2009 Microchip Technology Inc.
MCV18E
目录
1.0 器件概述 ....................................................................................................................................................................................... 7
2.0 存储器构成 ................................................................................................................................................................................... 9
3.0 I/O 端口 ...................................................................................................................................................................................... 21
4.0 Timer0 模块 ................................................................................................................................................................................ 29
5.0 带门控的 Timer1 模块 ................................................................................................................................................................. 33
6.0 Timer2 模块 ................................................................................................................................................................................ 39
7.0 模数转换器 ( ADC)模块 .......................................................................................................................................................... 41
8.0 增强型捕捉 / 比较 /PWM 模块 ..................................................................................................................................................... 51
9.0 CPU 的特殊功能 ......................................................................................................................................................................... 65
10.0 电气特性 ..................................................................................................................................................................................... 81
11.0 封装信息 ..................................................................................................................................................................................... 95
附录 A :版本历史 ................................................................................................................................................................................. 99
索引................................................................................................................................................................................................... 101
产品标识体系 ..................................................................................................................................................................................... 107
致客户
我们旨在提供最佳文档供客户正确使用 Microchip 产品。为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。
出版物的质量将随新文档及更新版本的推出而得到提升。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 CTRC@microchip.com ,或将本
数据手册后附的 《读者反馈表》传真到 86-21-5407 5066 。我们期待您的反馈。
最新数据手册
欲获得本数据手册的最新版本,请与当地的 Microchip 销售办事处联系。
http://www.microchip.com
查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号,例如:DS30000A是DS30000
的 A 版本。
客户通知系统
欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。
© 2009 Microchip Technology Inc. DS41399A_CN 第 5 页
MCV18E
注:
DS41399A_CN 第 6 页 © 2009 Microchip Technology Inc.
1.0 器件概述
本文档包含针对 MCV18E 器件的具体信息。图 1-1 给出
了 MCV18E 器件的框图。引脚配置见表 1-1 。
图 1-1 : MCV18E 框图
MCV18E
OSC1/CLKIN
OSC2/CLKOUT
程序总线
闪存
2K x 14
程序
存储器
14
指令寄存器
指令译码
和控制
时序发生
13
8
程序计数器
8 级堆栈
(13 位)
直接地址
上电延时
定时器
振荡器
起振定时器
上电复位
看门狗
定时器
欠压复位
RAM 地址
7
3
8
数据总线
RAM
128 x 8
文件
寄存器
(1)
9
地址 MUX
8
FSR 寄存器
STATUS 寄存器
MUX
ALU
W 寄存器
8
间接
地址
PORTA
PORTB
RA0
RA11
RA2
RA3
RA4
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
MCLR
Timer0
增强型 CCP
(ECCP )
注 1 : 高位来自于 STATUS 寄存器。
Timer1 Timer2
VDD ,VSS
A/D
© 2009 Microchip Technology Inc. DS41399A_CN 第 7 页
MCV18E
表 1-1 : MCV18E 引脚配置说明
名称 功能 输入类型 输出类型 说明
/VPP MCLR ST —
MCLR
PP P—
V
OSC1/CLKIN OSC1 XTAL —
CLKIN CMOS —
CLKIN ST —
OSC2/CLKOUT OSC2 XTAL —
CLKOUT — CMOS
RA0/AN0 RA0 TTL CMOS
AN0 AN —
RA1/AN1 RA1 TTL CMOS
AN1 AN —
RA2/AN2 RA2 TTL CMOS
AN2 AN —
RA3/AN3/V
RA4/T0CKI RA4 ST OD
RB0/INT/ECCPAS2
RB1/T1OSO/T1CKI RB1 TTL CMOS
RB2/T1OSI RB2 TTL CMOS
RB3/CCP1/P1A RB3 TTL CMOS
RB4/ECCPAS0
RB5/P1B RB5 TTL CMOS
RB6/P1C RB6 TTL CMOS
RB7/P1D RB7 TTL CMOS
V
SS V SS P—
V
DD V DD P—
图注: I = 输入 AN = 模拟输入或输出 OD = 漏极开路
REF RA3 TTL CMOS
AN3 AN —
V
REF AN —
T0CKI ST —
RB0 TTL CMOS
INT ST —
ECCPAS2
T1OSO — XTAL
T1CKI ST —
T1OSI XTAL —
CCP1 ST CMOS
P1A — CMOS
RB4 TTL CMOS
ECCPAS0
P1B — CMOS
P1C — CMOS
P1D — CMOS
O= 输出 TTL = TTL 兼容输入 ST = CMOS 电平的施密特触发器输入
P= 电源 XTAL = 晶振 CMOS = CMOS 兼容输入或输出
ST —
ST —
主复位输入。此引脚为低电平有效的器件复位输入端。
编程电压输入
晶振输入
外部时钟源输入
RC 振荡器模式
晶振输出。在晶振模式下,该引脚与晶振或谐振器相连。
在 RC 模式下, OSC2 引脚输出 CLKOUT 信号,其频率是
OSC1 引脚上信号频率的 1/4 ,该频率等于指令周期的倒数。
双向 I/O
模拟通道 0 输入
双向 I/O
模拟通道 1 输入
双向 I/O
模拟通道 2 输入
双向 I/O
模拟通道 3 输入
A/D 参考电压输入
双向 I/O 。当配置为输出时为漏极开路。
Timer0 外部时钟输入
双向 I/O 。可编程弱上拉。
外部中断
ECCP 自动关闭引脚
双向 I/O 。可编程弱上拉。
Timer1 振荡器输出。在振荡器模式下,该引脚与晶振相连。
Timer1 外部时钟输入
双向 I/O。可编程弱上拉。
Timer1 振荡器输入。在振荡器模式下,该引脚与晶振相连。
双向 I/O 。可编程弱上拉。
捕捉 1 输入 / 比较 1 输出 /PWM1 输出。
PWM P1A 输出
双向 I/O 。可编程弱上拉。电平变化中断。
ECCP 自动关闭引脚
双向 I/O 。可编程弱上拉。电平变化中断。
PWM P1B 输出
双向 I/O 。可编程弱上拉。电平变化中断。用作 ICSP™ 编程
时钟时为 ST 输入。
PWM P1C 输出
双向 I/O 。可编程弱上拉。电平变化中断。用作 ICSP™ 编程
数据时为 ST 输入。
PWM P1D 输出
逻辑和 I/O 引脚的参考地。
逻辑和 I/O 引脚的正电源。
DS41399A_CN 第 8 页 © 2009 Microchip Technology Inc.
MCV18E
2.0 存储器构成
MCV18E 器件中有两个存储块。每个存储块(程序存储
器和数据存储器)都有自己的总线,因此可以同时访问
它们。
2.1 程序存储器构成
MCV18E 器件具有一个 13 位程序计数器 ( Program
Counter, PC),能够寻址 8K x 14 的程序存储空间。
MCV18E 器件具有 2K x 14 字的程序存储器。访问上述
物理实现地址之外的存储单元,将会导致循环返回到有
效地址空间。
复位向量位于 0000h ,而中断向量位于 0004h 。
图 2-1 : 程序存储器映射和 MCV18E
器件的堆栈
PC<12:0>
CALL, RETURN
RETFIE, RETLW
堆栈深度 1
堆栈深度 8
13
2.2 数据存储器构成
数据存储器被划分为多个存储区,每个存储区由通用寄
存器 (General Purpose Register , GPR )和特殊功能
寄存器 (Special Function Register, SFR )组成。
STATUS 寄存器的 RP1 和 RP0 位是存储区选择位。
RP<1:0>
(状态位 <6:5> )
注 1 : 保持状态位 bit 6 清零以确保与未来产品向
2 : 未实现。
每个存储区的容量扩展到 7Fh (128 字节)。每个存储
区的低地址单元保留为特殊功能寄存器。在特殊功能寄
存器之上为通用寄存器,以静态 RAM 的形式实现。所
有已实现的存储区均包含特殊功能寄存器。 Bank 1 中
GPR 空间的高 16 字节和一些使用频率较高的特殊功能
寄存器被映射到 Bank 0 中,以节省代码和提高访问速
度。
(1)
存储区
00 0
01 1
10 2
11 3
上兼容。
(2)
(2)
用户存储空间
复位向量
中断向量
片上程序
存储器
0000h
0004h
0005h
07FFh
0800h
1FFFh
© 2009 Microchip Technology Inc. DS41399A_CN 第 9 页
MCV18E
2.2.1 通用寄存器文件
寄存器文件可以直接访问,或通过文件选择寄存器
(File Select Register ,FSR )间接访问(第 2.5 节“间
接寻址、 INDF 和 FSR 寄存器”)。
图 2-2 : 寄存器文件映射
文件地址 文件地址
00h INDF
01h TMR0 OPTION_REG 81h
02h PCL PCL 82h
03h STATUS STATUS 83h
04h FSR FSR 84h
05h PORTA TRISA 85h
06h PORTB TRISB 86h
07h
08h
09h
0A h PCLAT H PCL ATH 8Ah
0Bh INTCON INTCON 8Bh
0Ch PIR1 PIE1 8Ch
0Dh
0Eh TMR1L PCON 8Eh
0Fh TMR1H
10h T1CON
11h TMR2
12h T2CON PR2 92h
13h
14h
15h CCPR1L
16h CCPR1H
17h CCP1CON
18h PWM1CON
19h ECCPAS
1Ah
1Bh
1Ch
1Dh
1Eh ADRES
1Fh ADCON0 ADCON1 9Fh
20h
6Fh EFh
70h
7Fh
未实现的数据存储单元,读为 0 。
注 1 : 不是物理寄存器。
(1)
通用
寄存器
80 字节
16 字节 快速操作
Bank 0 Bank 1
INDF
通用
寄存器
32 字节
存储区
70-7Fh
(1)
80h
87h
88h
89h
8Dh
8Fh
90h
91h
93h
94h
95h
96h
97h
98h
99h
9Ah
9Bh
9Ch
9Dh
9Eh
A0h
BFh
C0h
F0h
FFh
DS41399A_CN 第 10 页 © 2009 Microchip Technology Inc.
MCV18E
2.2.2 特殊功能寄存器
特殊功能寄存器是 CPU 和外设模块用来控制所需器件
操作的寄存器。这些寄存器以静态 RAM 的形式实现。
表 2-1 中列出了这些寄存器。
特殊功能寄存器可分为两组:内核(CPU )和外设。本
节详细说明与内核功能相关的特殊功能寄存器。与外设
功能操作相关的特殊功能寄存器将在相应的外设功能章
节中详细说明。
表 2-1 : 特殊功能寄存器汇总, BANK 0
地址 名称
00h INDF
01h TMR0
02h PCL
03h STATUS
04h FSR
05h PORTA
06h PORTB
07h-09h —
0Ah PCLATH
0Bh INTCON
0Ch PIR1
0Dh —
0Eh TMR1L
0Fh TMR1H
10h T1CON
11h TMR 2
12h T2CON
13h-14h
15h CCPR1L
16h CCPR1H
17h CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 52
18h PWM1CON PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 0000 0000 64
19h ECCPAS ECCPASE ECCPAS2
1Ah-1Dh —
1Eh ADRES
1Fh ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE
图注: x = 未知, u = 不变, q = 值取决于具体条件, – = 未实现 (读为 0)。阴影单元未实现,读为 0。
注 1 : 可以从任何存储区访问这些寄存器。
(1)
(1)
(1)
(5,6)
(5,6)
—
2: 不能直接访问程序计数器的高字节。 PCLATH 是 PC<12:8> 的保持寄存器,其内容被传送到程序计数器的高字节。
3: 其他 (非上电)复位包括:通过 MCLR
4: IRP 和 RP1 位保留。始终保持这两位清零。
5: 发生任何器件复位时,这些引脚都被配置为输入。
6: 这是将保存在端口输出锁存器中的值。
7: 保留位,不要使用。
8: MCV18E 器件上不使用 ECCPAS1 位。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
通过用 FSR 的内容寻址这个存储单元来寻址数据存储器 (不是物理寄存器)
Timer0 模块寄存器
程序计数器 ( PC)的最低有效字节
(1)
(1,2)
(1)
(4)
IRP
间接数据存储器地址指针
— — —
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx 23
未实现
— — —
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 15
—A D I F— — — CCP1IF TMR2IF TMR1IF -0-- -000 17
未实现
16 位 TMR1 寄存器最低有效字节的保持寄存器
16 位 TMR1 寄存器最高有效字节的保持寄存器
— — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000 36
— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 40
未实现
捕捉 / 比较 /PWM 寄存器 1 (LSB)
捕捉 / 比较 /PWM 寄存器 1 (MSB)
未实现
A/D 结果寄存器
RP1
(4)
RP0 TO PD ZD CC0001 1xxx 13
(7)
(8)
—
的外部复位和看门狗定时器复位。
R A 4R A 3R A 2R A 1R A 0---x 0000 21
程序计数器高 5 位的写缓冲区
Timer2 模块寄存器
ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 00-0 0000 61
(7)
—
ADON 0000 0000 45
POR/BOR
时的值
0000 0000 20
xxxx xxxx 29
0000 0000 19
xxxx xxxx 20
—
---0 0000 19
—
xxxx xxxx 33
xxxx xxxx 33
0000 0000 39
—
xxxx xxxx 52
xxxx xxxx 52
—
xxxx xxxx 41
所在页
© 2009 Microchip Technology Inc. DS41399A_CN 第 11 页
MCV18E
表 2-2 : 特殊功能寄存器汇总, BANK 1
地址 名称
80h INDF
81h OPTION_REG RBPU
82h PCL
83h STATUS
84h FSR
85h TRISA
86h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 23
87h-89h —
8Ah PCLATH
8Bh INTCON
8Ch PIE1
8Dh —
8Eh PCON — — — — — —P O RBOR ---- --qq 16
8Fh-91h —
92h PR2
93h-9Eh —
9Fh ADCON1 — — — — — PCFG2 PCFG1 PCFG0 ---- -000 46
图注: x = 未知, u = 不变, q = 值取决于具体条件, – = 未实现 (读为 0)。阴影单元未实现,读为 0。
注 1 : 可以从任何存储区访问这些寄存器。
(1)
(1)
(1)
(1)
(1,2)
(1)
2: 不能直接访问程序计数器的高字节。 PCLATH 是 PC<12:8> 的保持寄存器,其内容被传送到程序计数器的高字节。
3: 其他 (非上电)复位包括:通过 MCLR
4: IRP 和 RP1 位保留。始终保持这两位清零。
5: 发生任何器件复位时,这些引脚被配置为输入。
6: 这是将保存在端口输出锁存器中的值。
7: 保留位,不要使用。
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
通过用 FSR 的内容寻址这个存储单元来寻址数据存储器 (不是物理寄存器)
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 14
程序计数器 ( PC)的最低有效字节
(4)
IRP
间接数据存储器地址指针
— — —
未实现
— — —
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 15
—A D I E — — — CCP1IE TMR2IE TMR1IE -0-- -000 16
未实现
未实现
Timer2 周期寄存器
未实现
RP1
(4)
RP0 TO PD ZD CC0001 1xxx 13
(7)
TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 ---1 1111 21
程序计数器高 5 位的写缓冲区
的外部复位和看门狗定时器复位。
POR/BOR
时的值
0000 0000 20
0000 0000 19
xxxx xxxx 20
—
---0 0000 19
—
—
1111 1111 39, 56
—
所在页
DS41399A_CN 第 12 页 © 2009 Microchip Technology Inc.
MCV18E
2.2.2.1 STATUS 寄存器
STATUS 寄存器 (如寄存器 2-1 所示)包含 ALU 的算
术运算状态、复位状态和数据存储器的存储区选择位。
和任何其他寄存器一样,STATUS 寄存器可以作为任何
指令的目标寄存器。如果一条影响 Z 、 DC 或 C 位的指
令以 STATUS 寄存器作为目标寄存器,那么对这三个位
的写操作将被禁止。这些位根据器件逻辑被置 1 或清
零。而且, TO
一条将 STATUS 寄存器作为目标寄存器的指令时,运行
结果可能会与预想的不同。
例如,CLRF STATUS 将会清零高 3 位,并将 Z 位置 1 。
这将使 STATUS 寄存器中的值成为 000u u1uu (其中
u = 不变)。
和 PD 位均为不可写位。因此,当执行
因此,建议仅使用 BCF 、 BSF 、 SWAPF 和 MOVWF 指令
来更改 STATUS 寄存器,因为这些指令不会影响
STATUS 寄存器的 Z 、 C 或 DC 位。关于其他不会影响
任何状态位的指令,请参见 “指令集汇总”。
注 1 : MCV18E 器件不使用 STATUS 寄存器的
IRP 和 RP1 位。保持这两位清零以确保与
未来产品向上兼容。
2 : 在减法运算中, C 和 DC 位分别作为借位
位和半借位位。
寄存器 2-1 : STATUS:状态寄存器
保留 保留
IRP RP1 RP0 TO PD ZD CC
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
注 1: 对于借位
IRP:该位保留且应保持为 0
RP1:该位保留且应保持为 0
RP0:寄存器存储区选择位 (用于直接寻址)
1 = Bank 1 (80h-FFh )
0 = Bank 0 (00h-7Fh )
TO
1 = 在上电、执行 CLRWDT 指令或 SLEEP 指令后
0 = 产生了 WDT 超时
PD:掉电位
1 = 在上电或执行 CLRWDT 指令后
0 = 执行 SLEEP 指令
Z:全零位
1 = 算术运算或逻辑运算的结果为零
0 = 算术运算或逻辑运算的结果不为零
DC :半进位 / 借位位( ADDWF、 ADDLW 、 SUBLW 和 SUBWF 指令),对于借位,极性是相反的。
1 = 结果的第 4 个低位发生了进位
0 = 结果的第 4 个低位未发生进位
C:进位 / 借位
1 = 结果的最高有效位发生了进位
0 = 结果的最高有效位未发生进位
RLF),此位来自源寄存器的最高位或最低位。
:超时位
(1)
位
(ADDWF 、 ADDLW 、 SUBLW 和 SUBWF 指令)
,极性是相反的。减法是通过加上第二个操作数的二进制补码来执行的。对于移位指令 (RRF 和
© 2009 Microchip Technology Inc. DS41399A_CN 第 13 页
MCV18E
2.2.2.2 OPTION 寄存器
OPTION 寄存器是可读写的寄存器,它包含各种控制
位,用于配置 TMR0 预分频器 /WDT 后分频器 (单个
可分配的寄存器也称为预分频器) 、外部 INT 中断、
TMR0 以及 PORTB 上的弱上拉。
注: 要使 Timer0 寄存器获得 1:1 的预分频比,
可将预分频器分配给看门狗定时器。
寄存器 2-2 : OPTION_REG :选项寄存器
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
RBPU
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2-0
INTEDG T0CS T0SE PSA PS2 PS1 PS0
RBPU
:PORTB 上拉使能位
1 = 禁止 PORTB 上拉
0 = 根据各端口锁存值使能 PORTB 上拉
INTEDG:中断边沿选择位
1 = RB0/INT 引脚的上升沿触发中断
0 = RB0/INT 引脚的下降沿触发中断
T0CS: Timer0 时钟源选择位
1 = RA4/T0CKI 引脚上的电平跳变
0 = 内部指令周期时钟 (F
OSC/4)
T0SE : Timer0 时钟源边沿选择位
1 = 在 RA4/T0CKI 引脚信号从高至低跳变时,递增计数
0 = 在 RA4/T0CKI 引脚信号从低至高跳变时,递增计数
PSA:预分频器分配位
1 = 预分频器分配给 WDT
0 = 预分频器分配给 Timer0 模块
PS<2:0> :预分频比选择位
位值 Timer0 预分频比 WDT 预分频比
000
001
010
011
100
101
110
111
1 : 2
1 : 4
1 : 8
1 : 16
1 : 32
1 : 64
1 : 128
1 : 256
1 : 1
1 : 2
1 : 4
1 : 8
1 : 16
1 : 32
1 : 64
1 : 128
DS41399A_CN 第 14 页 © 2009 Microchip Technology Inc.
MCV18E
2.2.2.3 INTCON 寄存器
INTCON 寄存器是可读写的寄存器,它包含 TMR0 寄存
器上溢、RB 端口电平变化和外部 RB0/INT 引脚中断等
各种允许位和标志位。
注: 当中断条件发生时,无论相应的中断允许位
或在 INTCON 寄存器中的全局中断允许位
GIE 的状态如何,中断标志位都将被置 1 。
用户软件应在允许一个中断前,先将相应的
中断标志位清零。
寄存器 2-3 : INTCON :中断控制寄存器
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x
GIE PEIE T0IE INTE RBIE
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
GIE:全局中断允许位
1 = 允许所有未被屏蔽的中断
0 = 禁止所有中断
PEIE:外设中断允许位
1 = 允许所有未被屏蔽的外设中断
0 = 禁止所有外设中断
T0IE: Timer0 上溢中断允许位
1 = 允许 Timer0 中断
0 = 禁止 Timer0 中断
INTE: RB0/INT 外部中断允许位
1 = 允许 RB0/INT 外部中断
0 = 禁止 RB0/INT 外部中断
RBIE: PORTB 电平变化中断允许位
1 = 允许 PORTB 电平变化中断
0 = 禁止 PORTB 电平变化中断
T0IF: Timer0 上溢中断标志位
1 = TMR0 寄存器已上溢 (必须用软件清零)
0 = TMR0 寄存器未上溢
INTF: RB0/INT 外部中断标志位
1 = 发生了 RB0/INT 外部中断 (必须用软件清零)
0 = 未发生 RB0/INT 外部中断
RBIF: PORTB 电平变化中断标志位
1 = PORTB 中至少有一个通用 I/O 引脚的状态发生了变化 (必须用软件清零)
0 = PORTB 通用 I/O 引脚状态均未发生变化
(1)
(2)
(1)
T0IF
(2)
INTF RBIF
注 1: IOCB 寄存器也必须被使能。
2: 当 Timer0 计满返回时, T0IF 位将被置 1 。Timer0 计数值在复位时不变,而且应在清零 T0IF 位之前对其进
行初始化。
© 2009 Microchip Technology Inc. DS41399A_CN 第 15 页
MCV18E
2.2.2.4 PIE1 寄存器
该寄存器包含各外设中断的允许位。
注: 必须将 INTCON 寄存器的 PEIE 位置 1 ,以
允许任何外设中断。
寄存器 2-4 : PIE1 :外设中断允许寄存器 1
U-0 R/W-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0
—A D I E— — — CCP1IE TMR2IE TMR1IE
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
bit 6
bit 5-3
bit 2
bit 1
bit 0
未实现:读为 0
ADIE :A/D 转换器 (ADC )中断允许位
1 = 允许 ADC 中断
0 = 禁止 ADC 中断
未实现:读为 0
CCP1IE: CCP1 中断允许位
1 = 允许 CCP1 中断
0 = 禁止 CCP1 中断
TMR2IE: Timer2 与 PR2 匹配中断允许位
1 = 允许 Timer2 与 PR2 匹配中断
0 = 禁止 Timer2 与 PR2 匹配中断
TMR1IE: Timer1 上溢中断允许位
1 = 允许 Timer1 上溢中断
0 = 禁止 Timer1 上溢中断
DS41399A_CN 第 16 页 © 2009 Microchip Technology Inc.
MCV18E
2.2.2.5 PIR1 寄存器
该寄存器包含各外设中断的标志位。
注: 当中断条件发生时,无论相应的中断允许位
或在 INTCON 寄存器中的全局中断允许位
GIE 状态如何,中断标志位都将被置 1 。用
户软件应在允许一个中断前,先将相应的
中断标志位清零。
寄存器 2-5 : PIR1 :外设中断请求寄存器 1
U-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0
—A D I F— — — CCP1IF TMR2IF TMR1IF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7
bit 6
bit 5-3
bit 2
bit 1
bit 0
未实现:读为 0
ADIF : A/D 中断标志位
1 = A/D 转换完成
0 = A/D 转换未完成或尚未开始
未实现:读为 0
CCP1IF :CCP1 中断标志位
捕捉模式
1 = 发生了 TMR1 寄存器捕捉 (必须用软件清零)
0 = 未发生 TMR1 寄存器捕捉
比较模式
1 = 发生了 TMR1 寄存器的比较匹配 (必须用软件清零)
0 = 未发生 TMR1 寄存器的比较匹配
模式
PWM
在此模式下未使用
TMR2IF : Timer2 与 PR2 匹配中断标志位
1 = Timer2 与 PR2 发生匹配 (必须用软件清零)
0 = Timer2 与 PR2 未发生匹配
TMR1IF: Timer1 上溢中断标志位
1 = Timer1 寄存器上溢 (必须用软件清零)
0 = Timer1 寄存器未上溢
© 2009 Microchip Technology Inc. DS41399A_CN 第 17 页
MCV18E
2.2.2.6 PCON 寄存器
电源控制 (PCON )寄存器包含一个标志位,用来区分
上电复位(POR )、外部 MCLR
些器件还包含一个额外的位来区分欠压复位条件和上电
复位条件。
复位或 WDT 复位。这
注: 如果 BOREN 配置位置 1,在发生上电复位时
BOR 为 1 ,在发生欠压条件时则复位为 0。随
后用户必须将 BOR
生时检查该位是否清零,清零则指示发生了
另一次欠压复位。
如果 BOREN 配置位清零,在发生上电复位
时 BOR
为未知状态。
置 1 ,并在后续的复位发
寄存器 2-6 : PCON :电源控制寄存器
U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-x
— — — — — —P O RBOR
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 7-2
bit 1
bit 0
未实现:读为 0
POR
:上电复位状态位
1 = 未发生上电复位
0 = 发生了上电复位 (发生上电复位后必须用软件置 1 )
BOR:欠压复位状态位
1 = 未发生欠压复位
0 = 发生了欠压复位 (发生欠压复位后必须用软件置 1 )
DS41399A_CN 第 18 页 © 2009 Microchip Technology Inc.
MCV18E
2.3 PCL 和 PCLATH
程序计数器 ( PC)为 13 位宽。其低字节来自可读写的
PCL 寄存器,高字节 ( PC<12:8>)来自 PCLATH,不
能直接读写。只要发生复位,PC 就将被清零。图 2-3 显
示了装入 PC 值的两种情形。图 2-3 上方的示例说明在写
PCL 时(PCLATH<4:0> → PCH )是如何装入 PC 的。
图 2-3 下方的示例说明在执行 CALL 或 GOTO 指令期间
(PCLATH<4:3> → PCH)是如何装入 PC 的。
2.3.1 修改 PCL
在执行以 PCL 寄存器作为目标寄存器的任何指令的同
时,也会使程序计数器的 PC<12:8> 位(PCH)被
PCLATH 寄存器的内容所代替。这使得可以通过将所需
的高 5 位写入PCLATH 寄存器来改变程序计数器的整个
内容。当将低 8 位写入 PCL 寄存器时,程序计数器的所
有 13 位都将变为 PCLATH 寄存器中和那些被写入 PCL
寄存器的值。
计算 GOTO 指令是通过向程序计数器加一个偏移量
(ADDWF PCL )来实现的。当通过修改 PCL 寄存器跳
转到查找表或程序跳转表 (计算 GOTO )时,应特别注
意。假设 PCLATH 被设置为表起始地址,如果表长度大
于 255 条指令,或如果在表中间存储器地址的低 8 位从
0xFF 计满返回到 0x00 ,那么 PCLATH 必须为在表起始
和表中的目标存储单元之间发生计满返回的每个地址进
行递增。
更多信息,请参见应用笔记 AN556 ,“ Implementing a
Table Read ”( DS00556)。
2.3.2 程序存储器分页
CALL 和 GOTO 指令提供了地址的 11 位,允许在任意 2K
程序存储器页内跳转。当执行 CALL 或 GOTO 指令时,
由 PCLATH<3> 提供地址的高位。当执行 CALL 或 GOTO
指令时,用户必须确保已对页选择位编程,以便寻址所
需的程序存储器页。如果执行了一条从 CALL 指令 (或
中断)返回的 RETURN 指令,则整个 13 位 PC 值从堆
栈弹出。因此,RETURN 指令 (该指令会使地址从堆栈
中弹出)无需对 PCLATH<3> 位进行操作。
图 2-3 : 不同情形下 PC 的装入
PCH
12 0
PCLATH<4:0>
5
PCLATH
PCH
12 1110
PCLATH<4:3>
2
PCLATH
87
8
PCL
PCL
7
8
ALU
0
11
操作码 <10:0>
以 PCL 为
目标寄存器
的指令
GOTO, CALL
2.4 堆栈
堆栈允许最多 8 次程序调用和中断的组合。堆栈包含了
在程序执行过程中该跳转的返回地址。
中档器件具有 8 级深 x 13 位宽的硬件堆栈。堆栈空间既
不占用程序存储空间,也不占用数据存储空间,而且堆
栈指针是不可读写的。当执行 CALL 指令或当中断导致
程序跳转时,PC 值将被压入堆栈。而在执行 RETURN 、
RETLW 或 RETFIE 指令时,将从堆栈中弹出 PC 值。当
压入或弹出堆栈时,不会修改 PCLATH 。
在压栈 8 次后,第 9 次压入堆栈的值将会覆盖第一次压
栈时所保存的值,而第 10 次压入堆栈的值将覆盖第二
次压栈时所保存的值 (依此类推)。
© 2009 Microchip Technology Inc. DS41399A_CN 第 19 页
MCV18E
2.5 间接寻址、 INDF 和 FSR 寄存器
INDF 寄存器不是物理寄存器。寻址 INDF 实际上是对地
址包含在 FSR 寄存器中的寄存器进行寻址 (FSR 是一
指针
)。这就是间接寻址。
个
例 2-1 : 间接寻址
• 寄存器文件 05 包含值 10h
• 寄存器文件 06 包含值 0Ah
• 将值 05 装入 FSR 寄存器中
• 对 INDF 寄存器进行读操作将返回值 10h
• 将 FSR 寄存器的值递增 1 ( FSR = 06)
• 现在对 INDF 寄存器进行读操作将返回值 0Ah
间接对 INDF 自身进行读操作(FSR = 0 )将产生 00h 。
间接对 INDF 寄存器进行写操作将导致空操作 (尽管可
能会影响状态位)。
例2-2 给出了一个使用间接寻址将RAM 地址单元20h-2Fh
清零的简单程序。
图 2-4 :直 接/ 间接寻址
RP1:
(2)
RP0 6
来自操作码
0
例 2-2 : 如何使用间接寻址清零RAM
MOVLW 0x20 ;initialize pointer
MOVWF FSR ;to RAM
NEXT CLRF INDF ;clear RAM & FSR
CONTINUE
通过将 8 位 FSR 寄存器与 STATUS 寄存器的 IRP 位进
行组合可得到一个有效的 9 位地址,如图 2-4 所示。但
是,在 MCV18E 器件中不使用 IRP 。
INCF FSR ;inc pointer
BTFSS FSR,4 ;all done?
GOTO NEXT ;no, clear next
: ;yes, continue
间接寻址 直接寻址
IRP FSR 寄存器
(2)
7
0
存储区选择 存储单元选择
00 01 10 11
00h
数据
(1)
存储器
7Fh
Bank 0 Bank 1 Bank 2 Bank 3
注 1: 关于寄存器文件映射的详细信息,请参见图 2-2 。
2: 保持清零以与未来产品向上兼容。
3: 未实现。
80h
FFh
100h
(3) (3)
17Fh
180h
1FFh
存储区选择
存储单元选择
DS41399A_CN 第 20 页 © 2009 Microchip Technology Inc.
MCV18E
3.0 I/O 端口
I/O 端口的一些引脚与器件上外设功能复用。一般来说,
当某个外设被使能时,其相关引脚可能不能用作通用 I/O
引脚。
3.1 PORTA 和 TRISA 寄存器
PORTA 是一个 5 位宽的双向端口。对应的数据方向寄
存器是 TRISA 。将 TRISA 某位置 1 (= 1 )时,会将
PORTA 的相应引脚设为输入 (即,使相应的输出驱动
器处于高阻模式)。将 TRISA 某位清零 (= 0 )时,会
将 PORTA 的相应引脚设为输出 (即,将输出锁存器中
的内容输出到选中引脚)。
读取 PORTA 寄存器将读出相应引脚的电平状态,而对
其进行写操作则是写入其端口锁存器。所有写操作都是
读 - 修改 - 写操作。因此,写一个端口就意味着读该端
口的引脚电平,修改读到的值,然后再将改好的值写入
端口数据锁存器。
RA4 引脚与 Timer0 模块的时钟输入复用,成为 RA4/
T0CKI 引脚。RA4/T0CKI 引脚是施密特触发器输入和漏
极开路输出。所有其他 RA 端口引脚都是 TTL 输入电平
和全 CMOS 输出驱动器。
PORTA 引脚 RA<3:0> 与模拟输入和模拟 V
用。每个引脚的操作通过清零 / 置 1 ADCON1 寄存器
(A/D 控制寄存器 1 )中的控制位进行选择。
注: 发生上电复位后,这些引脚被配置为模拟
输入且读为 0 。
TRISA 寄存器控制 RA 引脚的方向,即使它们用作模拟
输入引脚。当引脚用作模拟输入时,用户必须确保
TRISA 寄存器中的相应位保持置 1 。
注: 在处于模拟模式时将 RA3:0 设置为输出将
强制引脚输出数据锁存器的内容。
REF 输入复
例 3-1 :初 始 化PORTA
BCF STATUS, RP0 ;
CLRF PORTA ;Initialize PORTA by
;clearing output
;data latches
BSF STATUS, RP0 ;Select Bank 1
MOVLW 0xEF ;Value used to
MOVWF TRISA ;Set RA<3:0> as inputs
BCF STATUS, RP0 ;Return to Bank 0
;initialize data
;direction
;RA<4> as outputs
图 3-1 : RA<3:0> 框图
数据
总线
写
端口
写
TRIS
D
CK
数据锁存器
D
CK
TRIS 锁存器
Q
Q
Q
Q
读 TRIS
QD
EN
VDD
P
N
V
模拟
输入
模式
VDD
I/O 引脚
SS
VSS
TTL
输入
缓冲器
读端口
至 A/D 转换器
© 2009 Microchip Technology Inc. DS41399A_CN 第 21 页
MCV18E
图 3-2 : RA4/T0CKI 引脚框图
数据
总线
写
端口
写
TRIS
读端口
Timer0 时钟输入
数据锁存器
Q
D
CK
Q
TRIS 锁存器
Q
D
CK
Q
读 TRIS
N
SS
V
VSS
施密特
触发器
输入
缓冲器
QD
EN
EN
RA4/T0CKI
表 3-1 :与PORTA 相关的寄存器汇总
名称
PORTA
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — — RA4 RA3 RA2 RA1 RA0 ---x 0000 ---u uuuu
POR/BOR
时的值
TRISA — — — TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 ---1 1111 ---1 1111
ADCON1
— — — — — PCFG2 PCFG1 PCFG0 ---- -000 ---- -000
图注: x = 未知, u = 不变, – = 未实现位 (读为 0)。 PORTA 不使用阴影单元。
所有其他
复位时的值
DS41399A_CN 第 22 页 © 2009 Microchip Technology Inc.
MCV18E
3.2 PORTB 和 TRISB 寄存器
PORTB 是一个 8 位宽的双向端口。对应的数据方向寄
存器是 TRISB 。将 TRISB 某位置 1 (= 1 )时,会将
PORTB 的相应引脚设为输入 (即,使相应的输出驱动
器处于高阻模式)。将 TRISB 某位清零 (= 0 )时,会
将 PORTB 的相应引脚设为输出(即,将输出锁存器中
的内容输出到选中引脚)。
例 3-2 :初 始 化PORTB
BCF STATUS, RP0 ;select Bank 0
CLRF PORTB ;Initialize PORTB by
;clearing output
;data latches
BSF STATUS, RP0 ;Select Bank 1
MOVLW 0xCF ;Value used to
;initialize data
;direction
MOVWF TRISB ;Set RB<3:0> as inputs
;RB<5:4> as outputs
;RB<7:6> as inputs
每个 PORTB 引脚都具有内部弱上拉。通过一个控制位
即可接通所有上拉。这是通过清零 OPTION 寄存器的
RBPU 位实现的。当端口引脚被配置为输出时,其弱上
拉会自动关闭。上电复位会禁止上拉功能。
当使能外设功能时,应小心定义每个 PORTB 引脚的
TRIS 位。有些外设会改写 TRIS 位的设置,将引脚重新
定义为输出引脚,而有些则重新定义为输入引脚。由于
TRIS位改写在外设使能时有效,应当避免使用将TRISB
用作目标寄存器的读 - 修改 - 写指令(例如,BSF、BCF
和 XORWF ) 。用户应查阅相应的外设章节来正确设置
TRIS 位。
PORTB 的 4 个引脚 RB<7:4> 具有电平变化中断功能。
仅当将这些引脚配置为输入时,才可引起此中断功能的
发生 (即当 RB<7:4> 中的任何一个引脚被配置为输出
时,该引脚将不再具有电平变化中断功能)。将输入引
脚 RB<7:4> 的电平与 PORTB 上次读入锁存器的旧值进
行比较。对 RB<7:4> 的 “不匹配”输出进行逻辑或运
算,产生 RB 端口电平变化中断,并将 INTCON 寄存器
的标志位 RBIF 置 1 。
该中断可将器件从休眠状态唤醒。用户可用以下方式在
中断服务程序中清除该中断:
1. 执行对 PORTB 的读操作以结束不匹配条件。
2. 清零标志位 RBIF。
不匹配条件将继续把标志位 RBIF 置 1 。读 PORTB 将
结束不匹配条件并允许将标志位 RBIF 清零。
建议使用电平变化中断功能实现按键唤醒操作,以及那
些仅用到 PORTB 的电平变化中断功能的操作。在使用
电平变化中断功能时,建议不要查询 PORTB 的状态。
图 3-3 : RB0/INT/ECCPAS2 引脚框图
VDD
DD
EN
TTL
输入
缓冲器
V
P
弱
上拉
VSS
读端口
RB0/
INT/
ECCPAS2
位
(1)
RBPU
数据
总线
写
端口
写
TRIS
RB0/INT
ECCPAS2 :ECCP 自动关闭输入
注 1 : 为使能弱上拉,需将相应的 TRIS 位置 1 并将 RBPU
数据锁存器
Q D
CK
TRIS 锁存器
Q D
CK
读 TRIS
QD
读端口
施密特触发器
缓冲器
(OPTION 寄存器)清零。
© 2009 Microchip Technology Inc. DS41399A_CN 第 23 页
MCV18E
图 3-4: RB1/T1OSO/T1CKI 引脚框图
T1OSCEN
RBPU
DD
(1)
V
弱
P
上拉
VDD
数据总线
写 PORTB
写 TRISB
读 TRISB
T1OSCEN
读 PORTB
T1OSI(来自 RB2)
至 Timer1 时钟输入
注 1 : 为使能弱上拉,需将相应的 TRIS 位置 1 并将 RBPU 位(OPTION 寄存器)清零。
数据锁存器
Q D
Q
CK
TRIS 锁存器
Q D
Q
CK
VSS
TTL 缓冲器
D
Q
EN
TMR1 振荡器
ST 缓冲器
RB1/T1OSO/T1CKI
图 3-5 : RB2/T1OSI 引脚框图
DD
(1)
T1OSCEN
数据总线
写 PORTB
写 TRISB
读 TRIS
T1OSCEN
读 PORTB
T1OSO(至 RB1)
注 1 : 为使能弱上拉,需将相应的 TRIS 位置 1 并将 RBPU 位(OPTION 寄存器)清零。
数据锁存器
Q D
Q
CK
TRIS 锁存器
Q D
Q
CK
RBPU
TTL 缓冲器
D Q
EN
V
弱
P
上拉
VDD
RB2/T1OSI
VSS
TMR1
振荡器
DS41399A_CN 第 24 页 © 2009 Microchip Technology Inc.
图 3-6 : RB3/CCP1/P1A 引脚框图
[PWMA(P1A)/CCP1 比较 ] 输出使能
[PWMA(P1A)/CCP1 比较 ] 输出
PWMA(P1A)自动关闭三态
数据总线
写 PORTB
写 TRISB
数据锁存器
CK
TRIS 锁存器
CK
Q D
1
0
Q
Q D
Q
RBPU
MCV18E
DD
(1)
V
弱
P
上拉
VDD
RB3/CCP1/P1A
VSS
读 TRIS
Q
D
EN
读 PORTB
CCP——捕捉输入
注 1 : 为使能弱上拉,需将相应的 TRIS 位置 1 并将 RBPU 位(OPTION 寄存器)清零。
图 3-7 : RB4/ECCPAS0
(1)
RBPU
数据总线
写 PORTB
写 TRISB
施密特触发器缓冲器
引脚框图
数据锁存器
Q D
CK
TRIS 锁存器
Q D
CK
TTL 缓冲器
V
P
TTL
缓冲器
DD
弱
上拉
缓冲器
VDD
RB4/ECCPAS0
VSS
ST
读 TRIS
将 RBIF 置 1
来自其他
RB<7:4> 引脚
ECCPAS0 :ECCP 自动关闭输入
读端口
锁存器
QD
EN
QD
EN
读端口
Q1
Q3
注 1 : 为使能弱上拉,需将相应的
TRIS 位置 1 并将 RBPU
(OPTION 寄存器)清零。
位
© 2009 Microchip Technology Inc. DS41399A_CN 第 25 页
MCV18E
图 3-8: RB5/P1B 引脚框图
PWMB(P1B)使 能
PWMB(P1B)数据输出
PWMB(P1B)自动关闭三态
数据总线
写 PORTB
写 TRISB
数据锁存器
Q D
CK
TRIS 锁存器
Q D
Q
CK
RBPU
DD
(1)
1
0
V
弱
上拉
TTL
缓冲器
VDD
RB5/P1B
VSS
P
读 TRISB
将 RBIF 置 1
来自其他
RB<7:4> 引脚
注 1 : 为使能弱上拉,需将相应的 TRIS 位置 1 并将 RBPU
读 PORTB
图 3-9 : RB6/P1C 引脚框图
PWMC(P1C)使 能
PWMC(P1C)数据输出
PWMC(P1C)自动关闭三态
数据总线
写 PORTB
写 TRISB
数据锁存器
Q D
CK
TRIS 锁存器
Q D
Q
CK
锁存器
QD
QD
EN
(1)
RBPU
1
0
EN
Q1
读 PORTB
Q3
位( OPTION 寄存器)清零。
ST
缓冲器
DD
V
弱
上拉
TTL
缓冲器
VDD
RB6/P1C
VSS
P
读 TRISB
将 RBIF 置 1
来自其他
RB<7:4> 引脚
ICSPC——在线串行编程时钟输入
注 1 : 为使能弱上拉,需将相应的 TRIS 位置 1 并将 RBPU
读 PORTB
锁存器
QD
QD
EN
EN
位( OPTION 寄存器)清零。
Q1
读 PORTB
Q3
DS41399A_CN 第 26 页 © 2009 Microchip Technology Inc.
图 3-10 : RB7/P1D 引脚框图
PWMD(P1D)使 能
PWMD(P1D)数据输出
PWMD(P1D)自动关闭三态
数据总线
写 PORTB
写 TRISB
数据锁存器
Q D
CK
TRIS 锁存器
Q D
Q
CK
RBPU
MCV18E
DD
(1)
1
0
ST
缓冲器
V
弱
上拉
TTL
缓冲器
VDD
RB7/P1D
VSS
P
读 TRISB
将 RBIF 置 1
来自其他
RB<7:4> 引脚
ICSPD——在线串行编程数据输入
读 PORTB
QD
锁存器
QD
EN
EN
读 PORTB
Q3
Q1
注 1 : 为使能弱上拉,需将相应的
TRIS 位置 1 并将 RBPU
(OPTION 寄存器)清零。
表 3-2 :与PORTB 相关的寄存器汇总
名称
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR/BOR
时的值
PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu
TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 1111
OPTION_REG RBPU
INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
图注: x = 未知, u = 不变。 PORTB 不使用阴影单元。
所有其他
复位时的值
位
© 2009 Microchip Technology Inc. DS41399A_CN 第 27 页
MCV18E
注:
DS41399A_CN 第 28 页 © 2009 Microchip Technology Inc.
MCV18E
4.0 TIMER0 模块
Timer0 模块是 8 位定时器 / 计数器,具有以下特性:
•8位定时器 / 计数器寄存器 (TMR0)
•8位预分频器 (与看门狗定时器共用)
• 可编程内部或外部时钟源
• 可编程外部时钟边沿选择
• 上溢时产生中断
图 4-1 给出了 Timer0 模块的框图。
图 4-1 : TIMER0/WDT 预分频器的框图
FOSC /4
0
1
T0CKI
引脚
T0SE
T0CS
0
8 位
预分频器
1
4.1 Timer0 工作原理
当用作定时器时,Timer0 模块可被用作8 位定时器或 8 位
计数器。
4.1.1 8 位定时器模式
当用作定时器时, Timer0 模块将在每个指令周期递增
(不带预分频器)。通过清零 OPTION 寄存器的 T0CS
位选择定模式时器。
当写 TMR0 时,紧跟写操作之后的两个指令周期内禁止
TMR0 递增。
注: 当写 TMR0 时,考虑到存在两个指令周期
的延时,可以调整写入 TMR0 寄存器的值。
4.1.2 8 位计数器模式
当用作计数器时,Timer0 模块将在 T0CKI 引脚的每个上
升沿或下降沿递增。递增边沿由OPTION 寄存器的T0SE
位决定。通过将 OPTION 寄存器的 T0CS 位设置为 1 选
择计数器模式。
数据总线
1
同步
2 TCY
0
PSA
8
TMR0
上溢时
将标志位 T0IF 置 1
PSA
WDTE
31 KH Z
INTOSC
注 1: T0SE 、 T0CS 、 PSA 和 PS<2:0> 是 OPTION 寄存器中的位。
2: WDTE 位在配置字寄存器中。
看门狗
定时器
8
PS<2:0>
1
0
PSA
WDT
超时
© 2009 Microchip Technology Inc. DS41399A_CN 第 29 页
MCV18E
4.1.3 可软件编程的预分频器
有一个可软件编程的预分频器可供 Timer0 或看门狗定
时器 (WDT )使用,但不能同时使用。预分频器的分
配由 OPTION 寄存器的 PSA 位控制。要将预分频器分
配给 Timer0 ,必须将 PSA 位清零。
Timer0 模块有 8 个预分频比选项,范围从 1:2 到 1:256 。
预分频值可通过 OPTION 寄存器的 PS<2:0> 位进行选
择。为了让 Timer0 模块使用 1:1 预分频值,必须将预分
频器分配给 WDT 模块。
预分频器是不可读写的。将其分配给 Timer0 模块时,所
有写入 TMR0 寄存器的指令都会将预分频器清零。
将预分频器分配给 WDT 时, CLRWDT 指令会同时将预
分频器和 WDT 清零。
4.1.3.1 在 Timer0 和 WDT 模块之间切换预
分频器
由于将预分频器分配给 Timer0 或 WDT ,在切换预分频
值时,可能会产生意外的器件复位。当将预分频器从
Timer0 模块分配给 WDT 模块时,必须执行如例 4-1 中
所示的指令序列。
例 4-1 : 改变预分频器的分配
(TIMER0 → WDT )
BANKSEL TMR0 ;
CLRWDT ;Clear WDT
CLRF TMR0 ;Clear TMR0 and
;prescaler
BANKSEL OPTION_REG ;
BSF OPTION_REG,PSA ;Select WDT
CLRWDT ;
;
MOVLW b’11111000’ ;Mask prescaler
ANDWF OPTION_REG,W ;bits
IORLW b’00000101’ ;Set WDT prescaler
MOVWF OPTION_REG ;to 1:32
当将预分频器从 WDT 模块分配给 Timer0 模块时,必须
执行以下指令序列 (见例 4-2 )。
例 4-2 : 改变预分频器的分配
(WDT → TIMER0 )
CLRWDT ;Clear WDT and
;prescaler
BANKSEL OPTION_REG ;
MOVLW b’11110000’ ;Mask TMR0 select and
ANDWF OPTION_REG,W ;prescaler bits
IORLW b’00000011’ ;Set prescale to 1:16
MOVWF OPTION_REG ;
4.1.4 TIMER0 中断
TMR0 寄存器从 FFh 上溢到 00h 时,将产生 Timer0 中
断。每次 TMR0 寄存器上溢时都会将 INTCON 寄存器
的 T0IF 中断标志位置 1 ,这与是否允许 Timer0 中断无
关。 T0IF 位必须用软件清零。 Timer0 中断允许位是
INTCON 寄存器的 T0IE 位。
注: 由于定时器在休眠状态下是停止的,所以
Timer0中断无法将处理器从休眠状态唤醒。
4.1.5 TIMER0 与外部时钟配合使用
当 Timer0 处于计数器模式下时,通过对内部相位时钟
Q2 和 Q4 周期的预分频输出进行采样,可实现 T0CKI 输
入与 Timer0 寄存器的同步。因此,外部时钟源的高低电
平周期必须满足第 10.0 节 “电气特性”中所示的时序
要求。
DS41399A_CN 第 30 页 © 2009 Microchip Technology Inc.