MICROCHIP MCV18E User Manual

MCV18E
数据手册
18 引脚闪存单片机
© 2009 Microchip Technology Inc. DS41399A_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
•Microchip的产品均达到 Microchip 数据手册中所述的技术指标。
•Microchip确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的 操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•Microchip愿与那些注重代码完整性的客户合作。
•Microchip或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视 为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的
软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含 的英文部分,因为其中提供了有关 Microchip 产品性能和使用
情况的有用信息。Microchip Technology Inc. 及其分公司和相 关公司、各级主管与员工及事务代理机构对译文中可能存在的
本出版物中所述的器件应用信息及其他类似内容仅为您提供便 利,它们可能由更新之信息所替代。确保应用符合技术规范, 是您自身应负的责任。Microchip 对这些信息不作任何明示或 暗示、书面或口头、法定或其他形式的声明或担保,包括但不 限于针对其使用情况、质量、性能、适销性或特定用途的适用 性的声明或担保。 Microchip 对因这些信息及使用这些信息而 引起的后果不承担任何责任。如果将 Microchip 器件用于生命 维持和 / 或生命安全应用,一切风险由买方自负。买方同意在 由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障 Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识 产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 dsPIC K
EELOQ、 KEELOQ 徽标、 MPLAB、 PIC、 PICmicro、
PICSTARTrfPIC UNI/O 均为 Microchip Technology Inc.
在美国和其他国家或地区的注册商标。
FilterLabHampshireHI-TECH CLinear Active ThermistorMXDEVMXLABSEEVAL The Embedded
Control Solutions Company 均为 Microchip Technology Inc.
在美国的注册商标。
Analog-for-the-Digital AgeApplication Maestro CodeGuarddsPICDEM、 dsPICDEM.net、 dsPICworks、
dsSPEAKECANECONOMONITORFanSense HI-TIDEIn-Circuit Serial ProgrammingICSPMindi
MiWiMPASMMPLAB Certified 徽标、MPLIBMPLINK mTouchOctopusOmniscient Code GenerationPICC PICC-18PICDEMPICDEM.netPICkitPICtailPIC
32
徽标、REAL ICErfLABSelect ModeTotal Endurance TSHARCUniWinDriverWiperLock ZENA 均为
Microchip Technology Inc. 在美国和其他国家或地区的商标。
SQTP 是 Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。 © 2009, Microchip Technology Inc. 版权所有。
Microchip Gresham
印度的设计中心均通过了
MCU与dsPIC® DSC、KEELOQ
设、非易失性存储器和模拟产品方面的质量体系流程均符合
16949:2002
系也已通过了
位于美国亚利桑那州
的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和
。此外,
Microchip
ISO 9001:2000
Chandler和Tem pe
ISO/TS-16949:2002
®
跳码器件、串行
在开发系统的设计和生产方面的质量体
认证。
与位于俄勒冈州
认证。公司在
EEPROM
®
PIC
、单片机外
ISO/TS-
DS41399A_CN 第2 页 © 2009 Microchip Technology Inc.
18 引脚闪存单片机
MCV18E

单片机内核特性:

高性能 RISC CPU
仅需学习 35 条单字指令
- 除程序跳转指令是双周期指令外,所有指令都
是单周期指令
工作速度:DC – 20 MHz 时钟输入
DC – 200 ns 指令周期
中断能力 (最多 7 个内部 / 外部中断源)
•8级深硬件堆栈
直接、间接和相对寻址模式

单片机特性:

上电复位 (Power-on ResetPOR
上电延时定时器(Power-up TimerPWRT)和 振
荡器起振定时器(Oscillator Start-up Timer,OST
看门狗定时器 (Watchdog TimerWDT),具有
自己的片上 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
—14 V
5 VSS
—4 MCLR/VPP
16 OSC1/CLKIN
15 OSC2/CLKOUT
2AN3/VREF ———— —
ECCP
定时器 中断 上拉 基本功能
—INT
—IOC
有 有 有 有
有 有 有 有
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是DS30000A 版本。

客户通知系统

欲及时获知 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 VSS P—
V
DD VDD 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 CounterPC),能够寻址 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 RegisterGPR)和特殊功能 寄存器 (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 RegisterFSR)间接访问(第 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 4IRP RP1 位保留。始终保持这两位清零。 5: 发生任何器件复位时,这些引脚都被配置为输入。 6: 这是将保存在端口输出锁存器中的值。 7: 保留位,不要使用。 8MCV18E 器件上不使用 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
—ADIF— 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 ZDCC0001 1xxx 13
(7)
(8)
的外部复位和看门狗定时器复位。
RA4RA3RA2RA1RA0---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 —PORBOR ---- --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 4IRP 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
—ADIE — CCP1IE TMR2IE TMR1IE -0-- -000 16
未实现
未实现
Timer2 周期寄存器
未实现
RP1
(4)
RP0 TO PD ZDCC0001 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 寄存器可以作为任何 指令的目标寄存器。如果一条影响 ZDC C 位的指 令以 STATUS 寄存器作为目标寄存器,那么对这三个位 的写操作将被禁止。这些位根据器件逻辑被置 1 或清 零。而且, TO 一条将 STATUS 寄存器作为目标寄存器的指令时,运行 结果可能会与预想的不同。
例如,CLRF STATUS 将会清零高 3 位,并将 Z 位置 1 这将使 STATUS 寄存器中的值成为 000u u1uu (其中 u = 不变)。
PD 位均为不可写位。因此,当执行
因此,建议仅使用 BCFBSFSWAPF MOVWF 指令 来更改 STATUS 寄存器,因为这些指令不会影响 STATUS 寄存器的 ZC DC 位。关于其他不会影响 任何状态位的指令,请参见 “指令集汇总”。
1MCV18E 器件不使用 STATUS 寄存器的
IRP RP1 位。保持这两位清零以确保与 未来产品向上兼容。
2: 在减法运算中, C DC 位分别作为借位
位和半借位位。
寄存器 2-1 STATUS:状态寄存器
保留 保留
IRP RP1 RP0 TO PD ZDCC
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:半进位 / 借位位(ADDWFADDLWSUBLW SUBWF 指令),对于借位,极性是相反的。 1 = 结果的第 4 个低位发生了进位
0 = 结果的第 4 个低位未发生进位
C:进位 / 借位
1 = 结果的最高有效位发生了进位 0 = 结果的最高有效位未发生进位
RLF),此位来自源寄存器的最高位或最低位。
:超时位
(1)
ADDWFADDLWSUBLW 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 引脚的下降沿触发中断
T0CSTimer0 时钟源选择位
1 = RA4/T0CKI 引脚上的电平跳变 0 = 内部指令周期时钟 (F
OSC/4
T0SETimer0 时钟源边沿选择位
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 = 禁止所有外设中断
T0IETimer0 上溢中断允许位
1 = 允许 Timer0 中断 0 = 禁止 Timer0 中断
INTERB0/INT 外部中断允许位
1 = 允许 RB0/INT 外部中断 0 = 禁止 RB0/INT 外部中断
RBIEPORTB 电平变化中断允许位
1 = 允许 PORTB 电平变化中断 0 = 禁止 PORTB 电平变化中断
T0IFTimer0 上溢中断标志位
1 = TMR0 寄存器已上溢 (必须用软件清零) 0 = TMR0 寄存器未上溢
INTFRB0/INT 外部中断标志位
1 = 发生了 RB0/INT 外部中断 (必须用软件清零) 0 = 未发生 RB0/INT 外部中断
RBIFPORTB 电平变化中断标志位
1 = PORTB 中至少有一个通用 I/O 引脚的状态发生了变化 (必须用软件清零) 0 = PORTB 通用 I/O 引脚状态均未发生变化
(1)
(2)
(1)
T0IF
(2)
INTF RBIF
1IOCB 寄存器也必须被使能。
2: 当 Timer0 计满返回时, T0IF 位将被置 1Timer0 计数值在复位时不变,而且应在清零 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
—ADIE— 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 ADIEA/D 转换器 (ADC)中断允许位
1 = 允许 ADC 中断 0 = 禁止 ADC 中断
未实现:读为 0
CCP1IECCP1 中断允许位
1 = 允许 CCP1 中断 0 = 禁止 CCP1 中断
TMR2IETimer2 PR2 匹配中断允许位
1 = 允许 Timer2 PR2 匹配中断 0 = 禁止 Timer2 PR2 匹配中断
TMR1IETimer1 上溢中断允许位
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
—ADIF— 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
CCP1IFCCP1 中断标志位 捕捉模式
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
—PORBOR
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 值将被压入堆栈。而在执行 RETURNRETLW 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、BCFXORWF) 。用户应查阅相应的外设章节来正确设置
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
数据锁存器
QD
CK
TRIS 锁存器
QD
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 寄存器)清零。
数据锁存器
QD
Q
CK
TRIS 锁存器
QD
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 寄存器)清零。
数据锁存器
QD
Q
CK
TRIS 锁存器
QD
Q
CK
RBPU
TTL 缓冲器
DQ
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
QD
1
0
Q
QD
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
施密特触发器缓冲器
引脚框图
数据锁存器
QD
CK
TRIS 锁存器
QD
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
数据锁存器
QD
CK
TRIS 锁存器
QD
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
数据锁存器
QD
CK
TRIS 锁存器
QD
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
数据锁存器
QD
CK
TRIS 锁存器
QD
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 KHZ
INTOSC
1T0SET0CSPSA PS<2:0> OPTION 寄存器中的位。
2WDTE 位在配置字寄存器中。
看门狗 定时器
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.
Loading...
+ 78 hidden pages