B_CN.book

Size: px
Start display at page:

Download "B_CN.book"

Transcription

1 6/8 引脚 8 位闪存单片机 高性能 RISC CPU: 只需要学习 35 条指令 : - 除了跳转指令以外, 所有的指令都是单周期指令 工作速度 : - DC 16 MHz 时钟输入 - DC 250 ns 指令周期 最多 512 字的闪存程序存储器 64 字节数据存储器 8 级深硬件堆栈 中断功能 处理器可对程序存储器进行自写 / 读访问 引脚布局与其他 6 引脚 PIC10FXXX 单片机兼容 单片机的特性 : 低功耗 16 MHz 内部振荡器 : - 软件可选频率范围是 31 khz 至 16 MHz - 出厂时校准为 1% ( 典型值 ) 宽工作电压范围 : - 1.8V 至 3.6V (PIC10LF320/322) - 2.3V 至 5.5V (PIC10F320/322) 上电复位 (Power-On Reset, POR) 上电延时定时器 (Power-up Timer, PWRT) 欠压复位 (Brown-Out Reset, BOR) 超低功耗休眠稳压器 扩展型看门狗定时器 (Watchdog Timer, WDT) 可编程代码保护 节能的休眠模式 可选振荡器选项 (EC 模式或内部振荡器 ) 通过两个引脚进行在线串行编程 (In-Circuit Serial Programming, ICSP ) 在线调试器支持 固定参考电压 (Fixed Voltage Reference,FVR), 具有 1.024V 2.048V 和 4.096V( 仅限 F 型器件 ) 输出电平 集成温度指示器 闪存数据的保持时间为 40 年 低功耗特性 (PIC10LF320/322): 待机电流 : - 1.8V 时为 20 na ( 典型值 ) 工作电流 : - 1 MHz 1.8V 时为 25 A ( 典型值 ) 看门狗定时器电流 : - 1.8V 时为 500 na ( 典型值 ) 外设特性 : 4 个 I/O 引脚 : - 1 个仅用作输入的引脚 - 高拉 / 灌电流可直接驱动 LED - 独立的可选弱上拉 - 电平变化中断 Timer0: 带 8 位可编程预分频器的 8 位定时器 / 计数器 Timer2: 带 8 位周期寄存器 预分频器和后分频器的 8 位定时器 / 计数器 两个 PWM 模块 : - 10 位 PWM, 最高频率为 16 khz - 结合为两相单路输出 A/D 转换器 : - 8 位分辨率和 3 路通道 可配置逻辑单元 (Configurable Logic Cell,CLC): - 8 个可选输入信号源 - 每个模块有 2 个输入 - 软件可选择的逻辑功能包括 :AND/OR/XOR/ D 触发器 /D 锁存器 /SR/JK - 外部或内部输入 / 输出 - 可在休眠期间工作 数控振荡器 (Numerically Controlled Oscillator, NCO): - 20 位累加器 - 16 位递增值 - 线性频率控制 - 高速时钟输入 - 可选输出模式 - 固定占空比 (Fixed Duty Cycle, FDC) - 脉冲频率 (Pulse Frequency, PF) 模式 互补波形发生器 (Complementary Waveform Generator, CWG): - 可选下降沿和上升沿死区控制 - 极性控制 - 2 个自动关闭源 - 多个输入源 :PWM CLC 和 NCO DS B_CN 第 1 页

2 PIC10(L)F320/322 系列型号 器件 数据手册索引 闪存程序存储器 ( 字 ) 数据 SRAM ( 字节 ) I/O (2) 8 位 ADC ( 通道 ) 定时器 (8 位 ) PWM 互补波形发生器 (CWG) 可配置逻辑单元 (CLC) 固定参考电压 (FVR) 数控振荡器 (NCO) (1) 调试 XLP PIC10(L)F320 (1) H 无 PIC10(L)F322 (1) H 无 注 1: I 在芯片上集成调试功能 ; H 需要调试头进行调试 ; E 需要仿真头进行仿真 2: 其中一个引脚仅用作输入引脚 数据手册索引 : 1: DS B_CN PIC10(L)F320/322 数据手册, 6/8 引脚高性能闪存单片机 注 : 关于其他可用的小封装和标识信息, 请访问 或联系当地的销售办事处 DS B_CN 第 2 页

3 图 1: PIC10(L)F320/322 的 6 引脚图 SOT-23 ICSPDAT/RA0 VSS ICSPCLK/RA PIC10(L)F320 PIC10(L)F RA3/MCLR/VPP VDD RA2 图 2: PIC10(L)F320/322 的 8 引脚图 PDIP 和 DFN N/C VDD RA2 ICSPCLK/RA PIC10(L)F320 PIC10(L)F RA3/MCLR/VPP VSS N/C RA0/ICSPDAT 表 1: PIC10(L)F320/322 的 6 引脚和 8 引脚分配表 I/O 6 引脚 8 引脚 模拟 定时器 PWM 中断 上拉 CWG NCO CLC 基本功能 ICSP RA0 1 5 AN0 PWM1 IOC0 有 CWG1A CLC1IN0 ICSPDAT RA1 3 4 AN1 PWM2 IOC1 有 CWG1B NCO1CLK CLC1 CLKIN ICSPCLK RA2 4 3 AN2 T0CKI INT/IOC2 有 CWG1FLT NCO1 CLC1IN1 CLKR RA3 6 8 IOC3 有 MCLR VPP N/C 1 N/C 6 VDD 5 2 VDD VSS 2 7 VSS DS B_CN 第 3 页

4 目录 1.0 器件概述 存储器构成 器件配置 振荡器模块 复位 中断 掉电模式 ( 休眠 ) 看门狗定时器 (WDT) 闪存程序存储器控制 I/O 端口 电平变化中断 固定参考电压 (FVR) 内部稳压器 (IVR) 温度指示器模块 模数转换器 (ADC) 模块 Timer0 模块 Timer2 模块 脉宽调制 (PWM) 模块 可配置逻辑单元 (CLC) 数控振荡器 (NCO) 模块 互补波形发生器 (CWG) 模块 在线串行编程 (ICSP ) 指令集汇总 电气规范 直流和交流特性图表 开发支持 封装信息 附录 A: 数据手册版本历史 Microchip 网站 变更通知客户服务 客户支持 产品标识体系 DS B_CN 第 4 页

5 致客户 我们旨在提供最佳文档供客户正确使用 Microchip 产品 为此, 我们将不断改进出版物的内容和质量, 使之更好地满足您的需求 出版物的质量将随新文档及更新版本的推出而得到提升 如果您对本出版物有任何问题和建议, 请通过电子邮件联系我公司 TRC 经理, 电子邮件地址为 我们期待您的反馈 最新数据手册欲获得本数据手册的最新版本, 请访问我公司网站 : 查看数据手册中任意一页下边角处的文献编号即可确定其版本 文献编号中紧跟数字串后的字母是版本号, 例如 : DS A_CN 是文档的 A 版本 勘误表 现有器件可能带有一份勘误表, 描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法 一旦我们了解到器件 / 文档存在某些差异时, 就会发布勘误表 勘误表上将注明其所适用的硅片版本和文件版本 欲了解某一器件是否存在勘误表, 请通过以下方式之一查询 : Microchip 网站 当地 Microchip 销售办事处 ( 见最后一页 ) 在联络销售办事处时, 请说明您所使用的器件型号 硅片版本和数据手册版本 ( 包括文献编号 ) 客户通知系统欲及时获知 Microchip 产品的最新信息, 请到我公司网站 上注册 DS B_CN 第 5 页

6 1.0 器件概述 本数据手册描述了 PIC10(L)F320/322 器件 该器件采用了 6/8 引脚封装形式 图 1-1 给出了 PIC10(L)F320/322 器件的框图, 而表 1-2 给出了引脚说明 每个器件的可用外设, 请参见表 1-1 表 1-1: 器件外设汇总 外设 PIC10(L)F320 PIC10(L)F322 模数转换器 (ADC) 可配置逻辑单元 (CLC) 互补波形生成器 (CWG) 固定参考电压 (FVR) 数控振荡器 (NCO) 温度指示器 PWM 模块 PWM1 PWM2 定时器 Timer0 Timer2 DS B_CN 第 6 页

7 图 1-1: PIC10(L)F320/322 框图 闪存程序存储器 RAM PORTA CLKR 时序产生 CLKIN INTRC 振荡器 MCLR CPU 图 2-1 Timer0 Timer2 温度指示器 8 位 ADC FVR PWM1 PWM2 NCO CLC CWG 注 1: 关于外设的更多信息, 请参见适用的章节 DS B_CN 第 7 页

8 表 1-2: PIC10(L)F320/322 引脚说明 名称 功能 输入类型 输出类型 说明 RA0/PWM1/CLC1IN0/CWG1A/ AN0/ICSPDAT RA1/PWM2/CLC1/CWG1B/AN1/ CLKIN/ICSPCLK/NCO1CLK RA2/INT/T0CKI/NCO1/CLC1IN1/ CLKR/AN2/CWG1FLT RA0 TTL CMOS 带 IOC 和 WPU 的通用 I/O PWM1 CMOS PWM 输出 CLC1IN0 ST CLC 输入 CWG1A CMOS CWG 主输出 AN0 AN A/D 输入通道 ICSPDAT ST CMOS ICSP 数据 I/O RA1 TTL CMOS 带 IOC 和 WPU 的通用 I/O PWM2 CMOS PWM 输出 CLC1 CMOS CLC 输出 CWG1B CMOS CWG 互补输出 AN1 AN A/D 输入通道 CLKIN ST 外部时钟输入 (EC 模式 ) ICSPCLK ST ICSP 编程时钟 NCO1CLK ST 数控振荡器外部时钟输入 RA2 TTL CMOS 带 IOC 和 WPU 的通用 I/O INT ST 外部中断 T0CKI ST Timer0 时钟输入 NCO1 CMOS 数控振荡器输出 CLC1IN1 ST CLC 输入 CLKR CMOS 参考时钟输出 AN2 AN A/D 输入通道 CWG1FLT ST 互补波形发生器故障源 1 输入 RA3/MCLR/VPP RA3 TTL 通用输入 MCLR ST 带内部上拉的主复位 VPP HV 编程电压 VDD VDD 电源 正电源电压 VSS VSS 电源 参考地 图注 : AN = 模拟输入或输出 CMOS = CMOS 兼容输入或输出 TTL = 带 TTL 电平的 CMOS 输入 ST = 带施密特触发器电平的 CMOS 输入 HV = 高电压 DS B_CN 第 8 页

9 2.0 存储器构成 这些器件包含以下类型的存储器 : 程序存储器 - 配置字 - 器件 ID - 用户 ID - 闪存程序存储器 数据存储器 - 内核寄存器 - 特殊功能寄存器 - 通用 RAM - 公共 RAM 以下功能与程序存储器和数据存储器的访问和控制有关 : PCL 和 PCLATH 堆栈 间接寻址 2.1 程序存储器构成 中档内核具有一个 13 位的程序计数器, 可寻址 8K x 14 的程序存储空间 本器件系列仅实现了 8K 程序存储空间的最多 512 字 表 2-1 列出了 PIC10(L)F320/322 系列已实现的存储器大小 访问超出地址边界的单元将导致操作返回到已实现的存储空间内 复位向量地址为 0000h, 中断向量地址为 0004h ( 见图 2-1 和图 2-2) 表 2-1: 器件大小和地址 器件 程序存储器空间 ( 字 ) 最后的程序存储器地址 高耐用性闪存地址范围 (1) PIC10(L)F FFh 0F80h-00FFh PIC10(L)F FFh 1F80h-01FFh 注 1: 高耐用性闪存适用于范围内每个地址的低字节 DS B_CN 第 9 页

10 图 2-1: PIC10(L)F320 的程序存储器映射和堆栈 图 2-2: PIC10(L)F322 的程序存储器映射和堆栈 CALL, RETURN, RETLW RETFIE PC<12:0> 堆栈深度 0 堆栈深度 1 13 CALL RETURN, RETLW RETFIE PC<12:0> 堆栈深度 0 堆栈深度 1 13 堆栈深度 8 堆栈深度 8 复位向量 0000h 复位向量 0000h 片上程序存储器 中断向量 Page 0 计满返回到 Page 0 计满返回到 Page 计满返回到 Page 0004h 0005h 00FFh 0100h 片上程序存储器 中断向量 Page 0 计满返回到 Page 0 计满返回到 Page 0004h 0005h 01FFh 0200h 计满返回到 Page 计满返回到 Page 计满返回到 Page 0 FFFh 计满返回到 Page 0 FFFh DS B_CN 第 10 页

11 2.2 数据存储器构成 数据存储器位于一个存储区中, 其中包含通用寄存器 (General Purpose Register,GPR) 和特殊功能寄存器 (Special Function Register,SFR) STATUS 寄存器的 RP<1:0> 位是存储区选择位 RP1 RP0 0 0 选择 Bank 0 该存储区最多可以扩展到 7Fh (128 字节 ) 存储区的低地址单元保留为特殊功能寄存器 通用寄存器位于特殊功能寄存器的上方, 实现为静态 RAM 通用寄存器文件 PIC10(L)F320/322 的寄存器文件按 64 x 8 的形式构成 通过文件选择寄存器 (File Select Register, FSR) 可以直接或间接访问每个寄存器 ( 见第 2.4 节 间接寻址 INDF 和 FSR 寄存器 ) 特殊功能寄存器特殊功能寄存器是由 CPU 和外设功能对所需的器件操作进行控制的寄存器 ( 见表 2-3) 这些寄存器是静态 RAM 特殊寄存器可以分为两类 : 内核和外设 本章介绍有关 内核 的特殊功能寄存器 外设功能章节将介绍有关外设功能操作的特殊功能寄存器 DS B_CN 第 11 页

12 STATUS 寄存器 如寄存器 2-1 所示, STATUS 寄存器包含 : ALU 的算术运算状态 复位状态 数据存储器 (SRAM) 的存储区选择位与任何其他寄存器一样,STATUS 寄存器可以作为任何指令的目标寄存器 如果 STATUS 寄存器是影响 Z DC 或 C 位的指令的目标寄存器, 那么将禁止对这 3 位进行写操作 根据器件逻辑, 这些位会被置 1 或清零 此外, TO 和 PD 位均是不可写位 因此, 当执行一条将 STATUS 寄存器作为目标寄存器的指令时, 结果可能和预想的不一样 例如, CLRF STATUS 会清零高 3 位, 将 Z 位置 1, 从而使得 STATUS 寄存器的内容变为 000u u1uu( 其中 u = 不变 ) 因此, 建议仅使用 BCF BSF SWAPF 和 MOVWF 指令来改变 STATUS 寄存器的内容, 因为这些指令不影响任何状态位 关于其他不影响状态位的指令, 请参见第 23.0 节 指令集汇总 注 1: 在 PIC10(L)F320 中, STATUS 寄存器的 IRP 和 RP1 位未使用, 应保持清零 建议不要使用这些位, 因为这可能影响与未来产品的向上兼容性 2: 在减法运算中,C 和 DC 位分别作为借位位和半借位位 DS B_CN 第 12 页

13 寄存器 2-1: STATUS: 状态寄存器 R/W-0/0 R/W-0/0 R/W-0/0 R-1/q R-1/q R/W-x/u R/W-x/u R/W-x/u IRP RP1 RP0 TO PD Z DC C bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 q = 值取决于具体条件 bit 7 IRP: 保留 (2) bit 6-5 RP<1:0>: 保留 (2) bit 4 TO: 超时位 1 = 在上电 执行 CLRWDT 指令或 SLEEP 指令后 0 = 发生了 WDT 超时 bit 3 PD: 掉电位 1 = 在上电或执行 CLRWDT 指令后 0 = 执行了 SLEEP 指令 bit 2 Z: 零标志位 1 = 算术运算或逻辑运算的结果为零 0 = 算术运算或逻辑运算的结果不为零 bit 1 DC: 半进位 / 半借位位 (ADDWF ADDLW SUBLW 和 SUBWF 指令 ) (1) 1 = 结果的第 4 个低位发生了进位 0 = 结果的第 4 个低位未发生进位 bit 0 C: 进位 / 借位位 (ADDWF ADDLW SUBLW 和 SUBWF 指令 ) (1) 1 = 结果的最高有效位发生了进位 0 = 结果的最高有效位未发生进位 注 1: 对于借位, 极性是相反的 减法指令是通过加上第二个操作数的二进制补码来执行的 对于移位指令 (RRF 和 RLF), 该位值来自源寄存器的高位或低位 2: 保持 0 DS B_CN 第 13 页

14 2.2.3 器件存储器映射 PIC10(L)F320/322 的存储器映射如表 2-2 所示 表 2-2: PIC10(L)F320/322 存储器映射 (BANK 0) INDF (*) 00h PMADRL 20h TMR0 01h PMADRH 21h PCL 02h PMDATL 22h STATUS 03h PMDATH 23h FSR 04h PMCON1 24h PORTA 05h PMCON2 25h TRISA 06h CLKRCON 26h LATA 07h NCO1ACCL 27h ANSELA 08h NCO1ACCH 28h WPUA 09h NCO1ACCU 29h PCLATH 0Ah NCO1INCL 2Ah INTCON 0Bh NCO1INCH 2Bh PIR1 0Ch 保留 2Ch PIE1 0Dh NCO1CON 2Dh OPTION_REG 0Eh NCO1CLK 2Eh PCON 0Fh 保留 2Fh OSCCON 10h WDTCON 30h TMR2 11h CLC1CON 31h PR2 12h CLC1SEL1 32h T2CON 13h CLC1SEL2 33h PWM1DCL 14h CLC1POL 34h PWM1DCH 15h CLC1GLS0 35h PWM1CON 16h CLC1GLS1 36h PWM2DCL 17h CLC1GLS2 37h PWM2DCH 18h CLC1GLS3 38h PWM2CON 19h CWG1CON0 39h IOCAP 1Ah CWG1CON1 3Ah IOCAN 1Bh CWG1CON2 3Bh IOCAF 1Ch CWG1DBR 3Ch FVRCON 1Dh CWG1DBF 3Dh ADRES 1Eh VREGCON 3Eh ADCON 1Fh BORCON 3Fh 图注 : = 未实现的数据存储单元, 读为 0 * = 非物理寄存器 通用寄存器 32 字节 40h 5Fh 通用寄存器 32 字节 60h 7Fh DS B_CN 第 14 页

15 表 2-3: 特殊功能寄存器汇总 (BANK 0) 地址名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他复位时的值 Bank 0 00h INDF 通过使用 FSR 的内容寻址此存储单元来寻址数据存储器 ( 非物理寄存器 ) xxxx xxxx xxxx xxxx 01h TMR0 Timer0 模块寄存器 xxxx xxxx uuuu uuuu 02h PCL 程序计数器 (PC) 的最低有效字节 h STATUS IRP RP1 RP0 TO PD Z DC C xxx 000q quuu 04h FSR 间接数据存储器地址指针 xxxx xxxx uuuu uuuu 05h PORTA RA3 RA2 RA1 RA xxxx ---- uuuu 06h TRISA (1) TRISA2 TRISA1 TRISA h LATA LATA2 LATA1 LATA xxx uuu 08h ANSELA ANSA2 ANSA1 ANSA h WPUA WPUA3 WPUA2 WPUA1 WPUA Ah PCLATH PCLH Bh INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF u 0Ch PIR1 ADIF NCO1IF CLC1IF TMR2IF Dh PIE1 ADIE NCO1IE CLC1IE TMR2IE Eh OPTION_REG WPUEN INTEDG T0CS T0SE PSA PS<2:0> uuuu uuuu 0Fh PCON POR BOR qq uu 10h OSCCON IRCF<2:0> HFIOFR LFIOFR HFIOFS h TMR2 Timer2 模块寄存器 h PR2 Timer2 周期寄存器 h T2CON TOUTPS<3:0> TMR2ON T2CKPS<1:0> h PWM1DCL PWM1DCL<1:0> xx uu h PWM1DCH PWM1DCH<7:0> xxxx xxxx uuuu uuuu 16h PWM1CON PWM1EN PWM1OE PWM1OUT PWM1POL h PWM2DCL PWM2DCL<1:0> xx uu h PWM2DCH PWM2DCH<7:0> xxxx xxxx uuuu uuuu 19h PWM2CON PWM2EN PWM2OE PWM2OUT PWM2POL Ah IOCAP IOCAP3 IOCAP2 IOCAP1 IOCAP Bh IOCAN IOCAN3 IOCAN2 IOCAN1 IOCAN Ch IOCAF IOCAF3 IOCAF2 IOCAF1 IOCAF Dh FVRCON FVREN FVRRDY TSEN TSRNG ADFVR<1:0> 0x x Eh ADRES A/D 结果寄存器 xxxx xxxx uuuu uuuu 1Fh ADCON ADCS<2:0> CHS<2:0> 图注 : x = 未知 ; u = 不变 ; q = 值取决于具体条件 ; - = 未实现, 读为 0 ; r = 保留 阴影单元未实现, 读为 0 注 1: 未实现, 读为 1 GO/ DONE ADON DS B_CN 第 15 页

16 表 2-3: 特殊功能寄存器汇总 (BANK 0) ( 续 ) 地址名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bank 0 ( 续 ) 20h PMADRL PMADR<7:0> h PMADRH PMADR h PMDATL PMDAT<7:0> xxxx xxxx uuuu uuuu 23h PMDATH PMDAT<13:8> --xx xxxx --uu uuuu 24h PMCON1 CFGS LWLO FREE WRERR WREN WR RD q000 25h PMCON2 程序存储器控制寄存器 2 ( 非物理寄存器 ) h CLKRCON CLKROE h NCO1ACCL NCO1 累加器 <7:0> h NCO1ACCH NCO1 累加器 <15:8> h NCO1ACCU NCO1 累加器 <19..16> Ah NCO1INCL NCO1 递增值 <7:0> Bh NCO1INCH NCO1 递增值 <15:8> Ch 未实现 2Dh NCO1CON N1EN N1OE N1OUT N1POL N1PFM x Eh NCO1CLK N1PWS<2:0> N1CKS<1:0> Fh 保留 保留 xxxx xxxx uuuu uuuu 30h WDTCON WDTPS<4:0> SWDTEN h CLC1CON LC1EN LC1OE LC1OUT LC1INTP LC1INTN LC1MODE<2:0> 00x x h CLC1SEL0 LC1D2S<2:0> LC1D1S<2:0> -xxx -xxx -uuu -uuu 33h CLC1SEL1 LC1D4S<2:0> LC1D3S<2:0> -xxx -xxx -uuu -uuu 34h CLC1POL LC1POL LC1G4POL LC1G3POL LC1G2POL LC1G1POL 0--- xxxx 0--- uuuu 35h CLC1GLS0 LC1G1D4T LC1G1D4N LC1G1D3T LC1G1D3N LC1G1D2T LC1G1D2N LC1G1D1T LC1G1D1N xxxx xxxx uuuu uuuu 36h CLC1GLS1 LC1G2D4T LC1G2D4N LC1G2D3T LC1G2D3N LC1G2D2T LC1G2D2N LC1G2D1T LC1G2D1N xxxx xxxx uuuu uuuu 37h CLC1GLS2 LC1G3D4T LC1G3D4N LC1G3D3T LC1G3D3N LC1G3D2T LC1G3D2N LC1G3D1T LC1G3D1N xxxx xxxx uuuu uuuu 38h CLC1GLS3 LC1G4D4T LC1G4D4N LC1G4D3T LC1G4D3N LC1G4D2T LC1G4D2N LC1G4D1T LC1G4D1N xxxx xxxx uuuu uuuu 39h CWG1CON0 G1EN G1OEB G1OEA G1POLB G1POLA G1CS Ah CWG1CON1 G1ASDLB<1:0> G1ASDLA<1:0> G1IS<1:0> xxxx --xx uuuu --uu 3Bh CWG1CON2 G1ASE G1ARSEN G1ASDCLC1 G1ASDFLT xx-- --xx uu-- --uu 3Ch CWG1DBR CWG1DBR<5:0> --xx xxxx --uu uuuu 3Dh CWG1DBF CWG1DBF<5:0> --xx xxxx --uu uuuu 3Eh VREGCON VREGPM1 保留 Fh BORCON SBOREN BORFS BORRDY q uu-- ---u 图注 : x = 未知 ; u = 不变 ; q = 值取决于具体条件 ; - = 未实现, 读为 0 ; r = 保留 阴影单元未实现, 读为 0 注 1: 未实现, 读为 1 POR 和 BOR 时的值 所有其他复位时的值 DS B_CN 第 16 页

17 2.3 PCL 和 PCLATH 程序计数器 (Program Counter,PC) 为 13 位宽 它的低字节来自可读写的 PCL 寄存器 高字节 (PC<12:8>) 来自 PCLATH, 不可直接读写 任何复位都将清零 PC 图 2-3 给出了装入 PC 的两种情形 图 2-3 中上方的示例说明了如何在执行写操作时将 PC 装入到 PCL (PCLATH<4:0> PCH) 图 2-3 中下方的示例说明了如何在 CALL 或 GOTO 指令执行期间装入 PC (PCLATH<4:3> PCH) 图 2-3: PC PC 修改 PCL 在不同情形下装入 PC PCLATH<4:0> PCLATH PCH PCH PCLATH<4:3> PCLATH PCL PCL 将 PCL 作为目标寄存器的指令 ALU 运算结果 GOTO, CALL OPCODE <10:0> 在执行任何将 PCL 寄存器作为目标寄存器的指令的同时, 程序计数器 PC<12:8> 位 (PCH) 将替换为 PCLATH 寄存器的内容 通过将所需的高 5 位写入 PCLATH 寄存器, 可以更改程序计数器的整个内容 当将低 8 位写入 PCL 寄存器后, 程序计数器的所有 13 位值将更改为 PCLATH 寄存器中的值以及那些写入到 PCL 寄存器的值 计算 GOTO 指令是通过向程序计数器添加偏移量来实现的 (ADDWF PCL) 通过修改 PCL 寄存器跳转到查询表或程序跳转表 ( 计算 GOTO) 时应谨慎 假设 PCLATH 设置为表起始地址, 如果表长度大于 255 个指令或存储器地址的低 8 位在表中间从 0xFF 计满返回 0x00, 则对于在表开头和表内目标位置之间发生的每次地址计满返回, PCLATH 都必须递增 1 更多信息, 请参考应用笔记 AN556 Implementing a Table Read (DS00556) 堆栈 所有器件都具有一个 8 级深 x13 位宽的硬件堆栈 ( 见图 2-1) 堆栈空间不属于程序空间或数据空间的一部分, 且堆栈指针不可读写 当执行 CALL 指令或中断导致跳转时, PC 值会被压入堆栈 当执行 RETURN RETLW 或 RETFIE 指令时,PC 值从堆栈弹出 PCLATH 的值不受压栈或出栈操作的影响 堆栈充当循环缓冲区 这就是说在压栈 8 次后, 第 9 次压栈操作会覆盖第 1 次压栈操作存储的值, 而第 10 次压栈操作会覆盖第 2 次压栈操作存储的值 ( 以此类推 ) 注 2.4 间接寻址 INDF 和 FSR 寄存器 INDF 寄存器不是物理寄存器 寻址 INDF 寄存器将导致间接寻址 可以使用 INDF 寄存器进行间接寻址 任何使用 INDF 寄存器的指令实际上都将访问文件选择寄存器 (FSR) 指向的数据 读 INDF 本身将间接产生 00h 写入 INDF 寄存器不会间接产生任何操作 ( 尽管可能影响状态位 ) 通过组合 8 位 FSR 和 STATUS 寄存器的 IRP 位, 可以获得有效的 9 位地址, 如图 2-4 所示 例 2-1 给出了使用间接寻址清零 RAM 单元 40h-7Fh 的简单程序 例 2-1: 1: 不存在指示堆栈上溢或堆栈下溢情况的状态位 2: 不存在称为 PUSH 或 POP 的指令 / 助记符 这些操作都是在执行 CALL RETURN RETLW 和 RETFIE 指令或跳转到中断地址向量时发生 间接寻址 MOVLW 0x40 ;initialize pointer MOVWF FSR ;to RAM NEXT CLRF INDF ;clear INDF register INCF FSR ;inc pointer BTFSS FSR,7 ;all done? GOTO NEXT ;no clear next CONTINUE ;yes continue DS B_CN 第 17 页

18 图 2-4: 直接 / 间接寻址 PIC10(L)F320/322 直接寻址 6 来自操作码 0 间接寻址 7 文件选择寄存器 0 存储单元选择 存储单元选择 00h 数据存储器 7Fh Bank 0 注 : 关于存储器映射的详细信息, 请参见图 2-2 DS B_CN 第 18 页

19 3.0 器件配置 器件配置由配置字和器件 ID 组成 3.1 配置字 有几个配置字位可用于选择不同的振荡器和存储器保护选项, 这些位实现为位于 2007h 处的配置字 DS B_CN 第 19 页

20 3.2 寄存器定义 : 配置字寄存器 3-1: CONFIG: 配置字 U-1 R/P-1/1 R/P-1/1 R/P-1/1 R/P-1/1 R/P-1/1 WRT<1:0> BORV LPBOR LVP bit 13 bit 8 R/P-1/1 R/P-1/1 R/P-1/1 R/P-1/1 R/P-1/1 R/P-1/1 R/P-1/1 R/P-1/1 CP MCLRE PWRTE WDTE<1:0> BOREN<1:0> FOSC bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 P = 可编程位 bit 13 未实现 : 读为 1 bit WRT<1:0>: 闪存自写保护位 256 W 闪存 (PIC10(L)F320): 11 = 写保护关闭 10 = 000h 至 03Fh 受写保护, 040h 至 0FFh 可由 PMCON 控制修改 01 = 000h 至 07Fh 受写保护, 080h 至 0FFh 可由 PMCON 控制修改 00 = 000h 至 0FFh 受写保护, 没有地址可由 PMCON 控制修改 512 W 闪存 (PIC10(L)F322): 11 = 写保护关闭 10 = 000h 至 07Fh 受写保护, 080h 至 1FFh 可由 PMCON 控制修改 01 = 000h 至 0FFh 受写保护, 100h 至 1FFh 可由 PMCON 控制修改 00 = 000h 至 1FFh 受写保护, 没有地址可由 PMCON 控制修改 bit 10 BORV: 欠压复位电压选择位 1 = 欠压复位电压 (VBOR), 选择低跳变点 0 = 欠压复位电压 (VBOR), 选择高跳变点 bit 9 LPBOR: 低功耗欠压复位使能位 1 = 使能低功耗欠压复位 0 = 禁止低功耗欠压复位 bit 8 LVP: 低电压编程使能位 1 = 使能低电压编程 MCLR/VPP 引脚功能为 MCLR 0 = 必须使用 MCLR/VPP 引脚上的高电压进行编程 bit 7 (2) CP: 代码保护位 1 = 禁止程序存储器代码保护 0 = 使能程序存储器代码保护 bit 6 MCLRE: MCLR/VPP 引脚功能选择位如果 LVP 位 = 1: 忽略该位 如果 LVP 位 = 0: 1 =MCLR/VPP 引脚功能为 MCLR ; 使能弱上拉功能 0 =MCLR/VPP 引脚功能为数字输入 ; 内部禁止 MCLR ; 弱上拉功能由 WPUA3 位控制 注 1: 使能欠压复位并不能自动使能上电延时定时器 2: 一旦使能代码保护, 则只能通过批量擦除器件来禁止代码保护 3: 请参见 VBOR 参数了解特定的跳变点电压 DS B_CN 第 20 页

21 寄存器 3-1: CONFIG: 配置字 ( 续 ) bit 5 bit 4-3 bit 2-1 bit 0 PWRTE: 上电延时定时器使能位 (1) 1 = 禁止 PWRT 0 = 使能 PWRT WDTE<1:0>: 看门狗定时器使能位 11 = 使能 WDT 10 = 运行时使能 WDT, 休眠时禁止 WDT 01 = WDT 由 WDTCON 寄存器中的 SWDTEN 位控制 00 = 禁止 WDT BOREN<1:0>: 欠压复位使能位 11 = 使能欠压复位 ; 忽略 SBOREN 位 10 = 运行时使能欠压复位 ; 休眠时禁止欠压复位 ; 忽略 SBOREN 位 01 = 欠压复位由 BORCON 寄存器中的 SBOREN 位控制 00 = 禁止欠压复位 ; 忽略 SBOREN 位 FOSC: 振荡器选择位 1 = CLKIN 引脚上的 EC 0 = CLKIN 引脚为 INTOSC 振荡器 I/O 功能 注 1: 使能欠压复位并不能自动使能上电延时定时器 2: 一旦使能代码保护, 则只能通过批量擦除器件来禁止代码保护 3: 请参见 VBOR 参数了解特定的跳变点电压 DS B_CN 第 21 页

22 3.3 代码保护 代码保护可以防止对器件的未授权访问 程序存储器保护和数据存储器保护都是独立控制的 任何代码保护设置不会影响对程序存储器和数据存储器的内部访问 程序存储器保护 配置字中的 CP 位可以禁止对整个程序存储空间的外部读写操作 当 CP = 0 时, 禁止对程序存储器的外部读写操作, 读操作将返回全 0 无论保护位的设置如何, CPU 可以继续读程序存储器 写程序存储器取决于写保护设置 更多信息, 请参见第 3.4 节 写保护 3.4 写保护 写保护可以防止对器件意外的自写访问 在允许修改程序存储器其他区域的同时, 可以保护应用程序 ( 例如, 引导加载程序软件 ) 配置字中的 WRT<1:0> 位定义了受保护的程序存储块的大小 3.5 用户 ID 有 4 个存储单元 (2000h-2003h) 被指定为 ID 地址单元, 供用户存储校验和或其他代码标识号 在正常执行过程中可以读写这些单元 关于访问这些存储单元的更多信息, 请参见第 3.6 节 器件 ID 和版本 ID 关于校验和计算的更多信息, 请参见 PIC10(L)F320/322 Flash Memory Programming Specification (DS41572) DS B_CN 第 22 页

23 3.6 器件 ID 和版本 ID 存储单元 2006h 用于存储器件 ID 和版本 ID 高 9 位保存器件 ID 低 5 位保存版本 ID 关于访问这些存储单元的更多信息, 请参见第 9.4 节 用户 ID 器件 ID 和配置字访问 开发工具 ( 例如, 器件编程器和调试器 ) 可以用来读取器件 ID 和版本 ID 3.7 寄存器定义 : 器件和版本 寄存器 3-2: (1) DEVID: 器件 ID 寄存器 R R R R R R DEV<8:3> bit 13 bit 8 R R R R R R R R DEV<2:0> REV<4:0> bit 7 bit 0 图注 : R = 可读位 1 = 置 1 0 = 清零 bit 13-5 DEV<8:0>: 器件 ID 位 DEVID<13:0> 值 器件 DEV<8:0> REV<4:0> PIC10F x xxxx PIC10LF x xxxx PIC10F x xxxx PIC10LF x xxxx bit 4-0 注 REV<4:0>: 版本 ID 位这些位用于标识版本 1: 该单元不可写 DS B_CN 第 23 页

24 4.0 振荡器模块 4.1 概述 该振荡器模块有多种时钟源和选择功能, 从而使其应用非常广泛, 并可最大程度地提高性能和降低功耗 图 4-1 给出了振荡器模块的框图 系统可配置为使用内部校准高频振荡器作为时钟源, 并可通过软件选择速度 时钟源模式由配置字中的 FOSC 位 (CONFIG) 设置 1. 来自 CLKIN 的 EC 振荡器 2. INTOSC 振荡器, 未使能 CLKIN 图 4-1: PIC10(L)F320/322 时钟源框图 IRCF<2:0> HFINTOSC 16 MHz HFIOFR (1) 3 HFIOFS (1) 分频器 16 MHz 8 MHz 4 MHz 2 MHz 1 MHz 500 khz MUX INTOSC LFINTOSC 31 khz LFIOFR (1) 250 khz 31 khz FOSC ( 配置字 ) 0 CLKIN EC 1 MUX 系统时钟 (CPU 和外设 ) CLKR CLKROE 注 1: HFIOFR HFIOFS 和 LFIOFR 均为 OSCCON 寄存器中的状态位 DS B_CN 第 24 页

25 4.2 时钟源模式 时钟源模式可以分为外部或内部两类 内部时钟源 (INTOSC) 包含在振荡器模块中, 具有 8 个可选输出频率, 最高内部频率为 16 MHz 外部时钟 (External Clock, EC) 模式依靠外部信号作为时钟源 可以通过配置字的 FOSC 位选择外部或内部时钟源作为系统时钟 4.3 内部时钟模式 内部时钟源内置在振荡器模块中 内部振荡器模块具有两个内部振荡器, 用于生成所有内部系统时钟源 :16 MHz 高频内部振荡器 (HFINTOSC) 和 31 khz 低频内部振荡器 (LFINTOSC) HFINTOSC 由一个主时钟和一个辅助时钟组成 辅助时钟先以快速启动时间启动, 但精度较低 辅助时钟就绪信号通过 OSCCON 寄存器的 HFIOFR 位指示 接着, 主时钟以较慢的启动时间启动, 但具有更高的精度 当 OSCCON 寄存器的 HFIOFS 位为高电平时, 主时钟稳定 INTOSC 模式 当配置字的 FOSC 位清零时, 即选择了 INTOSC 模式 选择 INTOSC 后,CLKIN 引脚可用于通用 I/O 更多信息, 请参见第 3.0 节 器件配置 频率选择位 (IRCF) 16 MHz HFINTOSC 的输出连接到分频器和多路开关 ( 见图 4-1) OSCCON 寄存器的内部振荡器频率选择位 (IRCF) 用于选择内部振荡器的输出频率 : HFINTOSC - 16 MHz - 8 MHz ( 复位后的默认频率 ) - 4 MHz - 2 MHz - 1 MHz khz khz LFINTOSC - 31 khz 注 : 发生任何复位后, OSCCON 寄存器的 IRCF<2:0> 位被设置为 110 且频率选择设置为 8 MHz 用户可以修改 IRCF 位来选择不同的频率 使用 IRCF 位在 HFINTOSC 频率间进行切换时没有延时 这是因为切换仅涉及对频率输出分频器的更改 关于起振延时规范, 请参见第 24.0 节 电气规范 DS B_CN 第 25 页

26 4.4 寄存器定义 : 参考时钟控制 寄存器 4-1: CLKRCON 参考时钟控制寄存器 U-0 R/W-0/0 U-0 U-0 U-0 U-0 U-0 U-0 CLKROE bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 -n = POR 时的值 1 = 置 1 0 = 清零 x = 未知 q = 值取决于具体条件 bit 7 未实现 : 读为 0 bit 6 CLKROE: 参考时钟输出使能位 1 = 使能参考时钟输出 (CLKR), 无论 TRIS 设置如何 0 = 禁止参考时钟输出 bit 5-0 未实现 : 读为 寄存器定义 : 振荡器控制 寄存器 4-2: OSCCON: 振荡器控制寄存器 U-0 R/W-1/1 R/W-1/1 R/W-0/0 R-0/0 U-0 R-0/0 R-0/0 IRCF<2:0> HFIOFR LFIOFR HFIOFS bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 q = 值取决于具体条件 bit 7 未实现 : 读为 0 bit 6-4 IRCF<2:0>:INTOSC (FOSC) 频率选择位 111 = 16 MHz 110 = 8 MHz ( 默认值 ) 101 = 4 MHz 100 = 2 MHz 011 = 1 MHz 010 = 500 khz 001 = 250 khz 000 = 31 khz (LFINTOSC) bit 3 HFIOFR: 高频内部振荡器就绪位 1 = 16 MHz 内部振荡器 (HFINTOSC) 已就绪 0 = 16 MHz 内部振荡器 (HFINTOSC) 未就绪 bit 2 未实现 : 读为 0 bit 1 LFIOFR: 低频内部振荡器就绪位 1 = 31 khz 内部振荡器 (LFINTOSC) 已就绪 0 = 31 khz 内部振荡器 (LFINTOSC) 未就绪 bit 0 HFIOFS: 高频内部振荡器稳定位 1 = 16 MHz 内部振荡器 (HFINTOSC) 已稳定 0 = 16 MHz 内部振荡器 (HFINTOSC) 未稳定 DS B_CN 第 26 页

27 4.6 外部时钟模式 EC 模式 外部时钟 (EC) 模式将外部产生的逻辑电平信号作为系统时钟源 在该模式下工作时, 外部时钟源应连接到 CLKIN 输入引脚 表 4-1: 与时钟源相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 CLKRCON CLKROE 26 OSCCON IRCF<2:0> HFIOFR LFIOFR HFIOFS 26 图注 : x = 未知, u = 不变, = 未实现单元, 读为 0 ECWG 不使用阴影单元 表 4-2: 与时钟源相关的配置字汇总 名称 Bit Bit -/7 Bit -/6 Bit 13/5 Bit 12/4 Bit 11/3 Bit 10/2 Bit 9/1 Bit 8/0 CONFIG 13:8 WRT<1:0> BORV LPBOR LVP 7:0 CP MCLRE PWRTE WDTE<1:0> BOREN<1:0> FOSC 图注 : = 未实现单元, 读为 0 时钟源不使用阴影单元 寄存器所在页 20 DS B_CN 第 27 页

28 5.0 复位 有多种方式可以复位器件 : 上电复位 (POR) 欠压复位 (BOR) 低功耗欠压复位 (Low-Power Brown-out Reset, LPBOR) MCLR 复位 WDT 复位 退出编程模式要使 VDD 稳定, 可以使能可选的上电延时定时器, 以在 BOR 或 POR 事件后延长复位时间 图 5-1 给出了片上复位电路的简化框图 图 5-1: 片上复位电路的简化框图 ICSP? Programming 退出 ICSP Mode 编程模式 Exit Sleep 休眠 MCLRE VDD WDT Time-out 超时 Power-on 上电复位 Reset Device 器件 Reset 复位 Brown-out 欠压复位 Reset R PWRT Done LPBOR LPBOR Reset 复位 LFINTOSC PWRTE BOR Active 有效 (1) (1) 注 1: 关于 BOR 有效条件, 请参见表 5-1 DS B_CN 第 28 页

29 5.1 上电复位 (POR) 在 VDD 达到足以使器件正常工作的最低电平之前,POR 电路将器件保持在复位状态 VDD 上升缓慢 高速运行或模拟性能可能要求工作电压大于最小 VDD 在满足所有器件工作条件之前, 可以使用 PWRT BOR 或 MCLR 功能延长启动周期 上电延时定时器 (PWRT) 在 POR 或欠压复位时, 上电延时定时器提供一个标称值为 64 ms 的延时 只要 PWRT 处于工作状态, 器件就保持在复位状态 PWRT 延时为 VDD 上升到所需的电平提供额外的时间 通过清零配置字中的 PWRTE 位, 可以使能上电延时定时器 在释放 POR 和 BOR 之后, 启动上电延时定时器 更多信息, 请参见应用笔记 AN607 Power-up Trouble Shooting (DS00607) 5.2 欠压复位 (BOR) 当 VDD 达到可选的最低电平时, BOR 电路将器件保持在复位状态 在 BOR 和 POR 之间的整个电压范围内, 可实现执行保护功能 欠压复位模块有 4 种工作模式, 由配置字的 BOREN<1:0> 位控制这些模式 这 4 种工作模式是 : BOR 始终开启 BOR 在休眠时关闭 BOR 由软件控制 BOR 始终关闭更多信息, 请参见表 5-1 通过配置寄存器 3-1 中的 BORV 位, 可以选择欠压复位电压级别 VDD 噪声抑制滤波器可以防止在发生小事件时触发 BOR 如果 VDD 下降到 VBOR 以下, 且持续时间大于参数 TBORDC, 器件将复位 更多信息, 请参见图 5-2 表 5-1: BOR 工作模式 BOREN<1:0> SBOREN 器件模式 BOR 模式 器件工作的情况 : 释放 POR 或从休眠中唤醒 11 X X 有效等待 BOR 就绪 (1) (BORRDY = 1) 10 X 01 唤醒 休眠 有效 禁止 等待 BOR 就绪 (BORRDY = 1) 1 X 有效等待 BOR 就绪 (1) (BORRDY = 1) 0 X 禁止 00 X X 禁止 立即开始 (BORRDY = x) 注 1: 在这两种特殊情况 ( 释放 POR 和从休眠中唤醒 ) 下, 不会延时启动 由于 BOR 电路由 BOREN<1:0> 位强制启动, 因此在 CPU 准备执行指令之前, 必须将 BOR 就绪标志 (BORRDY = 1) 置 BOR 始终开启 当配置字的 BOREN 位编程为 11 时,BOR 始终开启 在 BOR 准备就绪且 VDD 高于 BOR 阈值之前, 器件启动将延时 BOR 保护功能在休眠期间有效 BOR 不会延时从休眠中唤醒 BOR 在休眠时关闭 当配置字的 BOREN 位编程为 10 时, 除了 BOR 在休眠时关闭之外,BOR 始终开启 在 BOR 准备就绪且 VDD 高于 BOR 阈值之前, 器件启动将延时 BOR 保护功能在休眠期间无效 在 BOR 准备就绪之前, 器件唤醒将延时 BOR 由软件控制 当配置字的 BOREN 位编程为 01 时,BOR 由 BORCON 寄存器的 SBOREN 位控制 BOR 就绪条件或 VDD 电平不会延时器件启动 只要 BOR 电路准备就绪, 则开始 BOR 保护 BORCON 寄存器的 BORRDY 位会反映 BOR 电路的状态 BOR 保护功能不受休眠影响 DS B_CN 第 29 页

30 图 5-2: 欠压情形 VDD VBOR 内部复位 TPWRT (1) VDD VBOR 内部 < TPWRT 复位 TPWRT (1) VDD VBOR 内部复位 TPWRT (1) 注 1: 只有在 PWRTE 位编程为 0 时, 才会有 TPWRT 延时 5.3 寄存器定义 :BOR 控制 寄存器 5-1: BORCON: 欠压复位控制寄存器 R/W-1/u R/W-0/u U-0 U-0 U-0 U-0 U-0 R-q/u SBOREN BORFS (1) BORRDY bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 q = 值取决于具体条件 bit 7 SBOREN: 软件欠压复位使能位如果配置字中的 BOREN <1:0> 01: SBOREN 位是可读写位, 但是不会影响 BOR 如果配置字中的 BOREN <1:0> = 01: 1 = 使能 BOR 0 = 禁止 BOR bit 6 BORFS: 欠压复位快速启动位 (1) 如果 BOREN<1:0> = 11 ( 始终开启 ) 或 BOREN<1:0> = 00 ( 始终关闭 ): BORFS 位是可读写位, 但是不产生任何影响 如果 BOREN <1:0> = 10 ( 在休眠模式下禁止 ) 或 BOREN<1:0> = 01 ( 由软件控制 ): 1 = 带隙始终被强制开启 ( 包括休眠 / 唤醒 / 工作情形 ) 0 = 带隙正常工作, 并且可以关闭 bit 5-1 未实现 : 读为 0 bit 0 BORRDY: 欠压复位电路就绪状态位 1 = 欠压复位电路有效 0 = 欠压复位电路无效 注 1: BOREN<1:0> 位位于配置字中 DS B_CN 第 30 页

31 5.4 低功耗欠压复位 (LPBOR) 低功耗欠压复位 (LPBOR) 是复位子系统的一个重要组成部分 欲了解 BOR 如何与其他模块交互, 请参见图 5-1 LPBOR 用于监视外部 VDD 引脚 当检测到电压太低时, 器件将保持在复位状态 当此情形发生时, 寄存器位 (BOR) 将发生变化以指示已发生 BOR 复位 对于 BOR 和 LPBOR, 所设置的是同一位 请参见寄存器 使能 LPBOR 通过配置字的 LPBOR 位控制 LPBOR 当擦除器件时, LPBOR 模块默认为禁止状态 LPBOR 模块输出 LPBOR 模块的输出是一个用于指示是否要将复位置为有效的信号 该信号与 BOR 模块的复位信号进行或运算以提供通用 BOR 信号, 并送至 PCON 寄存器和电源控制模块 5.5 MCLR MCLR 是用于复位器件的可选外部输入 MCLR 功能由配置字的 MCLRE 和 LVP 位控制 ( 表 5-2) 表 5-2: MCLR 配置 MCLRE LVP MCLR 0 0 禁止 1 0 使能 x 1 使能 5.6 看门狗定时器 (WDT) 复位 如果固件在超时周期内未发出 CLRWDT 指令, 看门狗定时器将产生复位 STATUS 寄存器中的 TO 和 PD 位都会更改, 以指示 WDT 复位 更多信息, 请参见第 8.0 节 看门狗定时器 5.7 退出 ICSP 编程模式 退出编程模式时, 器件执行的操作与发生 POR 时一样 5.8 上电延时定时器 在 BOR 或 POR 事件之后, 上电延时定时器可以延迟器件执行 在器件开始运行之前, 该定时器通常用于使 VDD 稳定下来 上电延时定时器由配置字中的 PWRTE 位控制 5.9 启动序列 当释放 POR 或 BOR 之后, 在器件开始执行之前必须发生以下事件 : 1. 上电延时定时器运行结束 ( 如果使能 ) 2. 必须释放 MCLR ( 如果使能 ) 总超时时间将根据振荡器配置和上电延时定时器配置而变化 更多信息, 请参见第 4.0 节 振荡器模块 上电延时定时器独立于 MCLR 复位运行 如果 MCLR 保持足够长时间的低电平, 上电延时定时器将超时 当 MCLR 拉为高电平之后, 器件将在 10 个 FOSC 周期后开始执行 ( 见图 5-3) 这对于测试或同步多个并行工作的器件来说非常有用 MCLR 使能 当 MCLR 使能且引脚保持为低电平时, 器件保持在复位状态 MCLR 引脚通过内部弱上拉连接到 VDD 器件在 MCLR 复位路径中有一个噪声滤波器 该滤波器能检测并滤除小脉冲 注 : 复位不会驱动 MCLR 引脚为低电平 MCLR 禁止当禁止 MCLR 时, 引脚用作通用输入, 内部弱上拉由软件控制 DS B_CN 第 31 页

32 图 5-3: 复位启动时序 VDD 内部 POR 上电延时定时器 TPWRT MCLR 内部 RESET TMCLR 振荡器模式 内部振荡器 振荡器 FOSC 外部时钟 (EC) CLKIN FOSC DS B_CN 第 32 页

33 5.10 确定复位原因 发生任何复位时,STATUS 和 PCON 寄存器中的多个位都会更新, 以指示复位原因 表 5-3 和表 5-4 给出了这些寄存器的复位条件 表 5-3: 表 5-4: 复位状态位及其含义 POR BOR TO PD 条件 0 x 1 1 上电复位 u 欠压复位 u u 0 u WDT 复位 u u 0 0 WDT 从休眠模式中唤醒 u u u u 正常工作期间的 MCLR 复位 u u 1 0 休眠期间的 MCLR 复位 特殊寄存器的复位条件 条件程序计数器 STATUS 寄存器 PCON 寄存器 上电复位 0000h x 正常工作期间的 MCLR 复位 0000h 000u uuuu uu 休眠期间的 MCLR 复位 0000h uuu uu WDT 复位 0000h 0000 uuuu uu WDT 从休眠模式中唤醒 PC uuu uu 欠压复位 0000h uuu u0 通过中断从休眠模式中唤醒 PC + 1 (1) uuu uu 图注 : u = 不变, x = 未知, - = 未实现位, 读为 0 注 1: 当器件被中断唤醒且全局中断允许位 (GIE) 置 1 时, 将返回地址压入堆栈, 并且在执行 PC + 1 之后将中断向量 (0004h) 装入 PC DS B_CN 第 33 页

34 5.11 电源控制 (PCON) 寄存器 电源控制 (PCON) 寄存器包含用于区分以下复位的标志位 : 上电复位 (POR) 欠压复位 (BOR) PCON 寄存器位如寄存器 5-2 所示 5.12 寄存器定义 : 电源控制 寄存器 5-2: PCON: 电源控制寄存器 U-0 U-0 U-0 U-0 U-0 U-0 R/W/HC-q/u R/W/HC-q/u POR BOR bit 7 bit 0 图注 : HC = 由硬件清零 R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 q = 值取决于具体条件 bit 7-2 未实现 : 读为 0 bit 1 POR: 上电复位状态位 1 = 未发生上电复位 0 = 发生了上电复位 ( 发生上电复位后, 必须用软件置 1) bit 0 BOR: 欠压复位状态位 1 = 未发生欠压复位 0 = 发生了欠压复位 ( 发生上电复位或欠压复位后, 必须用软件置 1) 表 5-5: 与复位相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 BORCON SBOREN BORFS BORRDY 30 PCON POR BOR 34 STATUS IRP RP1 RP0 TO PD Z DC C 13 WDTCON WDTPS<4:0> SWDTEN 48 图注 : 表 5-6: = 未实现单元, 读为 0 复位不使用阴影单元 与复位相关的配置字汇总 名称 Bit Bit -/7 Bit -/6 Bit 13/5 Bit 12/4 Bit 11/3 Bit 10/2 Bit 9/1 Bit 8/0 寄存器所在页 CONFIG 13:8 WRT<1:0> BORV LPBOR LVP 20 7:0 CP MCLRE PWRTE WDTE<1:0> BOREN<1:0> FOSC 图注 : = 未实现单元, 读为 0 复位不使用阴影单元 DS B_CN 第 34 页

35 6.0 中断 中断功能允许某些事件的优先级高于正常的程序流程 固件用于判断中断源并采取相应的操作 一些中断还可配置为将 MCU 从休眠模式中唤醒 本章包含以下中断信息 : 工作原理 中断响应延时 休眠期间的中断 INT 引脚 中断期间的现场保护许多外设都可以产生中断 更多详细信息, 请参见相应的章节 图 6-1 给出了中断逻辑的框图 图 6-1: 中断逻辑 Rev A 7/30/2013 TMR0IF TMR0IE Wake-up 唤醒 ((If 如果处于休眠模式 in Sleep mode) ) (TMR1IF) (TMR1IF) PIR1<0> (TMR1IE) (TMR1IE) PIE1<0> Peripheral 外设中断 Interrupts INTF INTE IOCIF IOCIE 至 Interrupt CPU 的中断 to CPU PIRn<7> PIEn<7> PEIE GIE DS B_CN 第 35 页

36 6.1 工作原理 任何器件复位都将禁止中断 可通过将以下位置 1 来允许中断 : INTCON 寄存器的 GIE 位 特殊中断事件的中断允许位 INTCON 寄存器的 PEIE 位 ( 如果 PIE1 寄存器包含中断事件的中断允许位 ) INTCON 和 PIR1 寄存器通过中断标志位来记录各个中断 无论 GIE PEIE 和各个中断允许位的状态如何, 中断标志位都会在中断发生时置 1 当 GIE 位置 1 时, 中断事件的发生会引发以下事件 : 清除当前预取的指令 GIE 位清零 当前程序计数器 (PC) 值被压入堆栈 将中断向量 0004h 装入 PC 中断服务程序 (Interrupt Service Routine, ISR) 中的固件应该通过查询中断标志位来确定中断源 在退出 ISR 之前必须将中断标志位清零, 以避免重复的中断 由于 GIE 位被清零, 所以执行 ISR 期间发生的任何中断将会通过其中断标志进行记录, 但是不会使处理器重定向到中断向量 RETFIE 指令通过将先前地址从堆栈中弹出并将 GIE 位置 1 来退出 ISR 关于特殊中断操作的更多信息, 请参见其相应的外设章节 注 1: 无论任何其他中断允许位的状态如何, 各个中断标志位都会在中断发生时置 1 2: 当 GIE 位清零时, 忽略所有中断 GIE 位清零时发生的任何中断在 GIE 位再次置 1 时得到处理 6.2 中断延时 中断延时定义为从发生中断事件到开始执行中断向量处的代码所经过的时间 同步中断的延时为 3 或 4 个指令周期 对于异步中断, 延时为 3 至 5 个指令周期, 具体取决于中断发生的时间 更多详细信息, 请参见图 6-2 和第 6.3 节 休眠期间的中断 DS B_CN 第 36 页

37 图 6-2: 中断响应延时 INTOSC Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 CLKR Interrupt 在 Q1 期间 Sampled during 采样到的中断 Q1 Interrupt 中断 GIE PC PC-1 PC PC h 0005h Execute 执行 1 Cycle PC 处的单周期指令 Instruction at PC Inst(PC) NOP NOP Inst(0004h) Interrupt 中断 GIE PC PC-1 PC PC+1/FSR ADDR 新 New PC PC/ 值 / PC h 0005h Execute 执行 2 Cycle PC 处的双周期指令 Instruction at PC Inst(PC) NOP NOP Inst(0004h) Interrupt 中断 GIE PC PC-1 PC FSR ADDR PC+1 PC h 0005h Execute 执行 3 Cycle PC 处的 Instruction 3 周期指令 at PC INST(PC) Inst(PC) NOP NOP NOP Inst(0004h) Inst(0005h) Interrupt 中断 GIE PC PC-1 PC FSR ADDR PC+1 PC h 0005h Execute 执行 3 Cycle PC 处的 Instruction 3 周期指令 at PC Inst(PC) INST(PC) NOP NOP NOP NOP Inst(0004h) DS B_CN 第 37 页

38 图 6-3: INT 引脚中断时序 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 INTOSC CLKR (3) INT 引脚 INTF (1) (4) (1) (2) 中断延时 GIE 指令流 PC 预取指令 执行指令 PC PC + 1 PC h 0005h Inst(PC) Inst(PC + 1) Inst(0004h) Inst(0005h) Inst(PC - 1) Inst(PC) 强制执行 NOP 强制执行 NOP Inst(0004h) 注 1: 在此采样 INTF 标志 ( 每个 Q1 周期 ) 2: 异步中断延时 = 3-5 TCY 同步中断延时 = 3-4 TCY, 其中 TCY = 指令周期时间 不管 Inst(PC) 是单周期还是双周期指令, 中断延时都是一样的 3: 关于 INT 脉冲的最小宽度, 请参见第 24.0 节 电气规范 中的交流规范 4: 允许在 Q1-Q4 周期内的任何时间将 INTF 置 1 DS B_CN 第 38 页

39 6.3 休眠期间的中断 有些中断可用于将器件从休眠模式中唤醒 要将器件从休眠模式中唤醒, 相应外设必须能够在无系统时钟的条件下工作 进入休眠模式之前, 必须将相应中断源的中断允许位置 1 当处理器从休眠模式中唤醒时, 如果 GIE 位也被置 1, 则处理器跳转到中断向量 否则, 处理器将继续执行 SLEEP 指令后的指令 在跳转到 ISR 之前, 始终会执行紧接着 SLEEP 指令的指令 更多详细信息, 请参见第 7.0 节 掉电模式 ( 休眠 ) 6.4 INT 引脚 INT 引脚用于产生异步边沿触发中断 将 INTCON 寄存器的 INTE 位置 1 可允许这种中断 OPTION_REG 寄存器的 INTEDG 位可确定在哪个边沿发生中断 当 INTEDG 位置 1 时, 上升沿触发中断 当 INTEDG 位清零时, 下降沿触发中断 当 INT 引脚上出现有效边沿时, INTCON 寄存器的 INTF 位置 1 如果 GIE 和 INTE 位也置 1, 则处理器将程序执行重定向到中断向量 6.5 中断期间的现场保护 中断期间, 仅将返回的 PC 值保存在堆栈中 通常, 用户可能想要在中断期间保存主要寄存器 ( 例如,W 寄存器和 STATUS 寄存器 ) 这必须由软件实现 临时保存寄存器 W_TEMP 和 STATUS_TEMP 应位于 GPR 的最后 16 字节 ( 见表 1-2) 这使得现场保护和恢复操作更简单 例 6-1 给出的代码可用于 : 存储 W 寄存器 存储 STATUS 寄存器 执行 ISR 代码 恢复状态 ( 和存储区选择位寄存器 ) 恢复 W 寄存器 注 : 这些器件不需要保存 PCLATH 但是, 如果 ISR 和主代码均使用了计算 GOTO 指令, 则必须在 ISR 中保存和恢复 PCLATH 例 6-1: 将 STATUS 寄存器和 W 寄存器的内容保存在 RAM 中 MOVWF W_TEMP ;Copy W to TEMP register SWAPF STATUS,W ;Swap status to be saved into W ;Swaps are used because they do not affect the status bits MOVWF STATUS_TEMP ;Save status to bank zero STATUS_TEMP register : :(ISR) ;Insert user code here : SWAPF STATUS_TEMP,W ;Swap STATUS_TEMP register into W ;(sets bank to original state) MOVWF STATUS ;Move W into STATUS register SWAPF W_TEMP,F ;Swap W_TEMP SWAPF W_TEMP,W ;Swap W_TEMP into W DS B_CN 第 39 页

40 6.6 中断控制寄存器 寄存器 6-1: INTCON: 中断控制寄存器 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R-0/0 GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF (1) bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 注 GIE: 全局中断允许位 1 = 允许所有有效中断 0 = 禁止所有中断 PEIE: 外设中断允许位 1 = 允许所有有效外设中断 0 = 禁止所有外设中断 TMR0IE:Timer0 溢出中断允许位 1 = 允许 Timer0 中断 0 = 禁止 Timer0 中断 INTE:INT 外部中断允许位 1 = 允许 INT 外部中断 0 = 禁止 INT 外部中断 IOCIE: 电平变化中断允许位 1 = 允许电平变化中断 0 = 禁止电平变化中断 TMR0IF:Timer0 溢出中断标志位 1 = TMR0 寄存器已溢出 0 = TMR0 寄存器未溢出 INTF:INT 外部中断标志位 1 = 发生了 INT 外部中断 0 = 未发生 INT 外部中断 (1) IOCIF: 电平变化中断的中断标志位 1 = 至少一个电平变化中断引脚的状态发生改变 0 = 没有一个电平变化中断引脚的状态发生改变 1: IOCIF 标志位是只读位, 在 IOCBF 寄存器中的所有电平变化中断标志都由软件清零后, 该位被清零 注 : 当发生中断条件时, 无论相应的中断允许位或全局中断允许位 (INTCON 寄存器的 GIE) 的状态如何, 中断标志位都将置 1 用户软件应该在允许中断之前确保将相应的中断标志位清零 DS B_CN 第 40 页

41 寄存器 6-2: PIE1: 外设中断允许寄存器 1 U-0 R/W-0/0 U-0 R/W-0/0 R/W-0/0 U-0 R/W-0/0 U-0 ADIE NCO1IE CLC1IE TMR2IE bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 未实现 : 读为 0 bit 6 ADIE:A/D 转换器中断允许位 1 = 允许 A/D 转换器中断 0 = 禁止 A/D 转换器中断 bit 5 未实现 : 读为 0 bit 4 NCO1IE: 数控振荡器中断允许位 1 = 允许 NCO 上溢中断 0 = 禁止 NCO 上溢中断 bit 3 CLC1IE: 可配置逻辑块中断允许位 1 = 允许 CLC 中断 0 = 禁止 CLC 中断 bit 2 未实现 : 读为 0 bit 1 TMR2IE:TMR2 与 PR2 匹配中断允许位 1 = 允许 TMR2 与 PR2 匹配中断 0 = 禁止 TMR2 与 PR2 匹配中断 bit 0 未实现 : 读为 0 注 : 要允许任何一个外设中断, 都必须将 INTCON 寄存器中的 PEIE 位置 1 DS B_CN 第 41 页

42 寄存器 6-3: PIR1: 外设中断请求寄存器 1 U-0 R/W-0/0 U-0 R/W-0/0 R/W-0/0 U-0 R/W-0/0 U-0 ADIF NCO1IF CLC1IF TMR2IF bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 未实现 : 读为 0 bit 6 ADIF:A/D 转换器中断标志位 1 = 完成了 A/D 转换 0 = 未完成 A/D 转换 bit 5 未实现 : 读为 0 bit 4 NCO1IF: 数控振荡器中断标志位 1 = 发生了 NCO1 上溢 ( 必须由软件清零 ) 0 = 未发生 NCO1 上溢 bit 3 CLC1IF: 可配置逻辑块上升沿中断标志位 1 = 发生了 CLC 中断 ( 必须由软件清零 ) 0 = 未发生 CLC 中断 bit 2 未实现 : 读为 0 bit 1 TMR2IF:TMR2 与 PR2 匹配中断标志位 1 = 发生了 TMR2 与 PR2 匹配 ( 必须由软件清零 ) 0 = 未发生 TMR2 与 PR2 匹配注 : 发生匹配的次数必须是 TMR2 后分频器 ( 寄存器 17-1) 指定的次数 bit 0 未实现 : 读为 0 注 : 当发生中断条件时, 无论相应的中断允许位或全局中断允许位 (INTCON 寄存器的 GIE) 的状态如何, 中断标志位都将置 1 用户软件应该在允许中断之前确保将相应的中断标志位清零 DS B_CN 第 42 页

43 表 6-1: 与中断相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 40 IOCAF IOCAF3 IOCAF2 IOCAF1 IOCAF0 76 IOCAN IOCAN3 IOCAN2 IOCAN1 IOCAN0 75 IOCAP IOCAP3 IOCAP2 IOCAP1 IOCAP0 75 OPTION_REG WPUEN INTEDG T0CS T0SE PSA PS<2:0> 95 PIE1 ADIE NCO1IE CLC1IE TMR2IE 41 PIR1 ADIF NCO1IF CLC1IF TMR2IF 42 图注 : = 未实现单元, 读为 0 中断不使用阴影单元 DS B_CN 第 43 页

44 7.0 掉电模式 ( 休眠 ) 器件通过执行 SLEEP 指令进入掉电模式 进入休眠模式时, 存在以下条件 : 1. WDT 将清零, 但是保持运行 ( 如果使能了在休眠期间工作 ) 2. STATUS 寄存器的 PD 位清零 3. STATUS 寄存器的 TO 位置 1 4. 禁止 CPU 时钟 khz LFINTOSC 不受影响, 并且由 31 khz LFINTOSC 提供时钟的外设可以在休眠模式下继续工作 6. ADC 不受影响 ( 如果选择了专用 FRC 时钟 ) 7. I/O 端口保持执行 SLEEP 指令之前的状态 ( 驱动为高电平 低电平或高阻态 ) 8. WDT 之外的复位不受休眠模式影响 关于外设在休眠期间工作的更多详细信息, 请参见各个章节 要最大程度地降低电流消耗, 应考虑以下条件 : I/O 引脚不应悬空 外部电路从 I/O 引脚的灌电流 内部电路从 I/O 引脚的拉电流 电流汲取自带有内部弱上拉的引脚 模块使用 31 khz LFINTOSC CWG 和 NCO 模块使用 HFINTOSC 为了避免输入引脚悬空而引入开关电流, 应在外部将高阻输入的 I/O 引脚拉为 VDD 或 VSS 可以拉电流的内部电路示例包括 FVR 模块 关于这些模块的更多信息, 请参见第 12.0 节 固定参考电压 (FVR) 7.1 从休眠模式中唤醒 可以通过以下任一事件将器件从休眠状态唤醒 : 1. MCLR 引脚上的外部复位输入 ( 如果使能 ) 2. BOR 复位 ( 如果使能 ) 3. POR 复位 4. 看门狗定时器 ( 如果使能 ) 5. 任何外部中断 6. 能够在休眠期间运行的外设产生的中断 ( 更多信息, 请参见各个外设 ) 前 3 个事件会使器件复位 后 3 个事件认为是程序执行的延续 要确定是发生器件复位还是唤醒事件, 请参见第 5.10 节 确定复位原因 当执行 SLEEP 指令时, 下一条指令 (PC + 1) 被预先取出 如果希望通过中断事件唤醒器件, 则必须允许相应的中断允许位 唤醒与 GIE 位的状态无关 如果禁止 GIE 位, 则器件将继续执行 SLEEP 指令后的指令 如果使能 GIE 位, 则器件先执行 SLEEP 指令后的指令, 然后调用中断服务程序 如果不想执行 SLEEP 指令后的指令, 用户应该在 SLEEP 指令后面放置一条 NOP 指令 当器件从休眠模式中唤醒时, 无论唤醒的原因如何, WDT 将清零 互补波形发生器 (CWG) 和数控振荡器 (NCO) 模块可使用 HFINTOSC 振荡器作为各自的时钟源 在某些情况下, 选择 HFINTOSC 用于 CWG 或 NCO 模块时, HFINTOSC 将在休眠期间保持有效状态 这将直接影响休眠模式下的电流 更多信息, 请参见第 21.0 节 互补波形发生器 (CWG) 模块 和第 20.0 节 数控振荡器 (NCO) 模块 DS B_CN 第 44 页

45 7.1.1 使用中断唤醒 当禁止全局中断 (GIE 清零 ), 并且任一中断源的中断允许位和中断标志位均置 1 时, 将发生以下事件之一 : 如果在执行 SLEEP 指令之前发生中断 - SLEEP 指令将作为 NOP 执行 - WDT 和 WDT 预分频器不会清零 - STATUS 寄存器的 TO 位不会置 1 - STATUS 寄存器的 PD 位不会清零 如果在执行 SLEEP 指令期间或之后发生中断 - SLEEP 指令将完全执行 - 器件将立即从休眠模式中唤醒 - WDT 和 WDT 预分频器将清零 - STATUS 寄存器的 TO 位将置 1 - STATUS 寄存器的 PD 位将清零即使在执行 SLEEP 指令之前检查到标志位为 0, 但是在执行完 SLEEP 指令之前标志位可能置 1 要确定是否执行了 SLEEP 指令, 可以测试 PD 位 如果 PD 位置 1, 则说明 SLEEP 指令被作为一条 NOP 指令执行了 图 7-1: 通过中断将器件从休眠模式中唤醒 INTOSC CLKR Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 中断标志 中断延时 (1) GIE 位 (INTCON 寄存器 ) 处理器处于休眠模式 指令流 PC 取指令 PC PC + 1 PC + 2 Inst(PC) = 休眠 Inst(PC + 1) PC + 2 Inst(PC + 2) PC h 0005h Inst(0004h) Inst(0005h) 执行指令 Inst(PC - 1) 休眠 Inst (PC + 1) 强制执行 NOP 强制执行 NOP Inst(0004h) 注 1: 假定 GIE = 1 这种情况下, 处理器被唤醒后, 将调用 0004h 处的 ISR 如果 GIE = 0, 程序继续执行 表 7-1: 与掉电模式相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 STATUS IRP RP1 RP0 TO PD Z DC C 13 WDTCON WDTPS<4:0> SWDTEN 48 图注 : = 未实现单元, 读为 0 掉电模式不使用阴影单元 DS B_CN 第 45 页

46 8.0 看门狗定时器 看门狗定时器是系统定时器, 如果固件在超时周期内未发出 CLRWDT 指令, 看门狗定时器将产生复位 看门狗定时器通常用于将系统从意外事件中恢复 WDT 具有如下特性 : 独立的时钟源 多种工作模式 - WDT 始终开启 - WDT 在休眠时关闭 - WDT 由软件控制 - WDT 始终关闭 可配置的典型超时周期为 1 ms 至 256s ( 典型值 ) 多个复位条件 休眠期间的工作原理 图 8-1: 看门狗定时器框图 WDTE<1:0> = 01 SWDTEN WDTE<1:0> = 11 WDTE<1:0> = 10 LFINTOSC 23 位可编程预分频器 WDT WDT 超时 休眠 WDTPS<4:0> DS B_CN 第 46 页

47 8.1 独立时钟源 WDT 以 31 khz LFINTOSC 的内部振荡器作为其时基 本章中的时间间隔基于 1 ms 的标称时间间隔 关于 LFINTOSC 的容差, 请参见第 24.0 节 电气规范 8.2 WDT 工作模式 看门狗定时器模块有 4 种工作模式, 由配置字的 WDTE<1:0> 位控制 请参见表 WDT 始终开启 当配置字的 WDTE 位设置为 11 时, WDT 始终开启 WDT 保护功能在休眠期间有效 WDT 在休眠时关闭 当配置字的 WDTE 位设置为 10 时, 除了 WDT 在休眠时关闭之外, WDT 一直开启 WDT 保护功能在休眠期间无效 WDT 由软件控制 当配置字的 WDTE 位设置为 01 时,WDT 由 WDTCON 寄存器的 SWDTEN 位控制 WDT 保护功能不受休眠影响 更多详细信息, 请参见表 超时周期 WDTCON 寄存器的 WDTPS 位可以设置从 1 ms 至 256s ( 标称值 ) 的超时周期 复位后, 默认超时周期为 2s 8.4 清零 WDT 发生以下任何条件时, WDT 清零 : 任何复位 执行 CLRWDT 指令 器件进入休眠模式 器件从休眠模式中唤醒 振荡器故障 WDT 禁止更多信息, 请参见表 休眠期间的工作原理 器件进入休眠模式时, WDT 清零 如果在休眠期间使能 WDT, 则 WDT 将恢复计数 器件退出休眠模式时, WDT 再次清零 如果在器件处于休眠模式时发生 WDT 超时, 不会产生复位, 而是将器件唤醒并继续工作 STATUS 寄存器中的 TO 和 PD 位会更改, 以指示此事件 更多信息, 请参见第 2.0 节 存储器构成 和寄存器 2-1 表 8-1: WDT 工作模式 WDTE<1:0> SWDTEN 器件模式 WDT 模式 11 X X 有效 10 X 唤醒 有效 休眠 禁止 01 1 有效 X 0 禁止 00 X X 禁止 表 8-2: WDT 清零条件 WDTE<1:0> = 00 WDTE<1:0> = 01 且 SWDTEN = 0 WDTE<1:0> = 10 且进入休眠模式 CLRWDT 命令退出休眠更改 INTOSC 分频比 (IRCF 位 ) 条件 WDT 清零 不受影响 DS B_CN 第 47 页

48 8.6 看门狗控制寄存器 寄存器 8-1: WDTCON: 看门狗定时器控制寄存器 U-0 U-0 R/W-0/0 R/W-1/1 R/W-0/0 R/W-1/1 R/W-1/1 R/W-0/0 WDTPS<4:0> SWDTEN bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-6 未实现 : 读为 0 bit 5-1 WDTPS<4:0>: 看门狗定时器周期选择位 (1) 位值 = 预分频比 = 保留 产生最小间隔 (1:32) = 保留 产生最小间隔 (1:32) bit = 1: (2 23 )( 标称间隔 256s) = 1: (2 22 )( 标称间隔 128s) = 1: (2 21 )( 标称间隔 64s) = 1: (2 20 )( 标称间隔 32s) = 1: (2 19 )( 标称间隔 16s) = 1: (2 18 )( 标称间隔 8s) = 1: (2 17 )( 标称间隔 4s) = 1:65536 ( 标称间隔 2s)( 复位值 ) = 1:32768 ( 标称间隔 1s) = 1:16384 ( 标称间隔 512 ms) = 1:8192 ( 标称间隔 256 ms) = 1:4096 ( 标称间隔 128 ms) = 1:2048 ( 标称间隔 64 ms) = 1:1024 ( 标称间隔 32 ms) = 1:512 ( 标称间隔 16 ms) = 1:256 ( 标称间隔 8ms) = 1:128 ( 标称间隔 4ms) = 1:64 ( 标称间隔 2ms) = 1:32 ( 标称间隔 1ms) SWDTEN: 看门狗定时器的软件使能 / 禁止位如果 WDTE<1:0> = 00: 忽略该位 如果 WDTE<1:0> = 01: 1 = WDT 开启 0 = WDT 关闭如果 WDTE<1:0> = 1x: 忽略该位 注 1: 时间均为近似值 WDT 时间基于 31 khz LFINTOSC DS B_CN 第 48 页

49 表 8-3: 与看门狗定时器相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 OSCCON IRCF<2:0> HFIOFR LFIOFR HFIOFS 26 STATUS IRP RP1 RP0 TO PD Z DC C 13 WDTCON WDTPS<4:0> SWDTEN 48 图注 : x = 未知, u = 不变, = 未实现单元, 读为 0 看门狗定时器不使用阴影单元 寄存器所在页 表 8-4: 与看门狗定时器相关的配置字汇总 名称 Bit Bit -/7 Bit -/6 Bit 13/5 Bit 12/4 Bit 11/3 Bit 10/2 Bit 9/1 Bit 8/0 寄存器所在页 CONFIG 13:8 WRT<1:0> BORV LPBOR LVP 20 7:0 CP MCLRE PWRTE WDTE<1:0> BOREN<1:0> FOSC 图注 : = 未实现单元, 读为 0 看门狗定时器不使用阴影单元 DS B_CN 第 49 页

50 9.0 闪存程序存储器控制 在整个 VDD 范围内的正常工作期间, 闪存程序存储器是可读写的 程序存储器通过特殊功能寄存器 (SFR) 进行间接寻址 用于访问程序存储器的 SFR 包括 : PMCON1 PMCON2 PMDATL PMDATH PMADRL PMADRH 当访问程序存储器时,PMDATH:PMDATL 寄存器对组成双字节字, 保存要读 / 写的 14 位数据, 而 PMADRH:PMADRL 寄存器组成双字节字, 保存被读取的程序存储单元的 9 位地址 写入时间由片上定时器控制 写入和擦除电压由片上电荷泵产生, 该电荷泵可以在器件工作电压范围内正常工作 可通过两种方式保护闪存程序存储器 : 代码保护 ( 配置字中的 CP 位 ) 和写保护 ( 配置字中的 WRT<1:0> 位 ) 代码保护 (CP = 0) (1) 禁止通过外部器件编程器对闪存程序存储器进行访问和读写 代码保护不会影响自写和擦除功能 仅可通过器件编程器对该器件执行块擦除, 并清零整个闪存程序存储器 配置位以及用户 ID 来复位代码保护 写保护禁止对部分或整个闪存程序存储器 ( 由 WRT<1:0> 位定义 ) 的自写和擦除操作 写保护不会影响器件编程器读写或擦除器件的功能 注 1: 通过将配置字的 CP 位清零, 可以使能对整个闪存程序存储器阵列的代码保护 9.1 PMADRL 和 PMADRH 寄存器 PMADRH:PMADRL 寄存器对可以寻址最大 512 字的程序存储器 当选择程序地址值时, 地址的 MSB 写入 PMADRH 寄存器, 而 LSB 写入 PMADRL 寄存器 PMCON1 和 PMCON2 寄存器 PMCON1 是访问闪存程序存储器的控制寄存器 控制位 RD 和 WR 分别启动读和写操作 用软件只能将这些位置 1 而无法清零 在完成读或写操作后, 由硬件将它们清零 由于无法用软件将 WR 位清零, 可避免因意外而过早地终止写操作 当 WREN 位置 1 时, 允许执行写操作 上电时,WREN 位被清零 在正常运行期间, 当写操作被复位中断时, WRERR 位置 1 在这些情况下, 复位后用户可以检查 WRERR 位并执行相应的错误处理程序 PMCON2 寄存器是只写寄存器 试图读 PMCON2 寄存器将返回全 0 要使能对程序存储器的写操作, 必须将特定模式 ( 解锁序列 ) 写入 PMCON2 寄存器 所需的解锁序列可防止意外写入程序存储器写锁存器和闪存程序存储器 9.2 闪存程序存储器概述 要进行擦除和编程操作, 了解闪存程序存储器结构是非常重要的 闪存程序存储器按行排列 每行包括固定数量的 14 位程序存储器字 行是用户软件可擦除的最小大小 擦除某行后, 用户可以对该行的部分或全部内容进行重新编程 写入程序存储器行的数据将被写入 14 位宽的数据写锁存器中 用户不能直接访问这些写锁存器, 但是可以通过对 PMDATH:PMDATL 寄存器对的连续写入来装入写锁存器的内容 注 : 如果用户只希望修改先前已编程行的部分内容, 则必须在擦除之前先读取整行内容, 并保存到 RAM 中 然后, 可以将新数据和已保存数据写入写锁存器, 以对闪存程序存储器行进行再编程 但是, 对于任何未经过编程的单元, 则无需先擦除行即可写入 这种情况下, 不需要保存并重新写入其他先前已编程的单元 关于闪存程序存储器的擦除行大小和写锁存器数, 请参见表 9-1 DS B_CN 第 50 页

51 表 9-1: 闪存存储器构成 ( 按器件 ) 器件 PIC10(L)F320 PIC10(L)F322 行擦除 ( 字 ) 读闪存程序存储器 写锁存器 ( 字 ) 要读程序存储单元, 用户必须 : 1. 将所需的地址写入 PMADRH:PMADRL 寄存器对 2. 将 PMCON1 寄存器的 CFGS 位清零 3. 然后, 将 PMCON1 寄存器的控制位 RD 置 1 一旦将读控制位置 1, 闪存程序存储器控制器将使用第二个指令周期读取数据 这会导致紧跟 BSF PMCON1,RD 指令后的第二条指令被忽略 在紧接着的下一个周期, PMDATH:PMDATL 寄存器对中的数据可供使用, 因此可在随后的指令中读取为两个字节 PMDATH:PMDATL 寄存器对将保存该值, 直到开始下一次读操作或用户向该单元写入数据 注 : 程序存储器读操作后的两条指令必须为 NOP 这可以防止用户在 RD 位置 1 后的下一条指令执行双周期指令 图 9-1: 闪存程序存储器读操作流程图 Start Read 开始读操作 Operation Select Program 选择程序存储器或配置存储器 or Configuration Memory (CFGS) (CFGS) Select 选择字地址 Word Address (PMADRH:PMADRL) (PMADRH:PMADRL) Initiate 启动读操作 Read operation (RD (RD = 1) 1) Instruction 忽略预取指令 Fetched ignored NOP 强制执行 execution NOP forced Instruction 忽略预取指令 Fetched ignored NOP 强制执行 execution NOP forced 现在在 Data PMDATH:PMDATL read now in 中 PMDATH:PMDATL 读取数据 End 读操作结束 Read Operation DS B_CN 第 51 页

52 图 9-2: 闪存程序存储器读周期执行时序 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 闪存地址 PC PC + 1 PMADRH,PMADRL PC PC+3+ 3 PC + 4 PC + 5 闪存数据 INSTR (PC) INSTR (PC + 1) PMDATH,PMDATL INSTR (PC + 3) INSTR (PC + 4) 在此执行 INSTR(PC - 1) 在此执行 BSF PMCON1,RD 忽略指令 INSTR (PC + 1) 在此强制执行 NOP 忽略指令 INSTR (PC + 2) 在此强制执行 NOP 在此执行 INSTR (PC + 3) 在此执行 INSTR (PC + 4) RD 位 PMDATH PMDATL 寄存器 例 9-1: 读闪存程序存储器 * This code block will read 1 word of program * memory at the memory address: PROG_ADDR_HI: PROG_ADDR_LO * data will be returned in the variables; * PROG_DATA_HI, PROG_DATA_LO BANKSEL PMADRL ; not required on devices with 1 Bank of SFRs MOVLW PROG_ADDR_LO ; MOVWF PMADRL ; Store LSB of address MOVLW PROG_ADDR_HI ; MOVWF PMADRH ; Store MSB of address BCF PMCON1,CFGS ; Do not select Configuration Space BSF PMCON1,RD ; Initiate read NOP ; Ignored (Figure 9-2) NOP ; Ignored (Figure 9-2) MOVF PMDATL,W ; Get LSB of word MOVWF PROG_DATA_LO ; Store in user location MOVF PMDATH,W ; Get MSB of word MOVWF PROG_DATA_HI ; Store in user location DS B_CN 第 52 页

53 9.2.2 闪存存储器解锁序列 注 : 在执行闪存解锁序列之前 上电复位 (POR) 之后, 需要至少 100 s 延时 解锁序列是一种防止意外自写编程或擦除闪存程序存储器的保护机制 该序列必须在无中断的情况下执行并完成, 以成功完成以下任一操作 : 行擦除 装入程序存储器写锁存器 程序存储器写锁存器到程序存储器的写操作 程序存储器写锁存器到用户 ID 的写操作解锁序列的步骤如下所示 : 1. 将 55h 写入 PMCON2 2. 将 AAh 写入 PMCON2 3. 将 PMCON1 中的 WR 位置 1 4. NOP 指令 5. NOP 指令一旦 WR 位置 1, 处理器通常强制执行两条 NOP 指令 当执行擦除行或编程行操作时, 处理器将暂停内部操作 ( 典型值为 2 ms) 直至该操作完成, 然后继续执行下一条指令 当该操作正在装入程序存储器写锁存器时, 处理器通常强制执行两条 NOP 指令并继续执行下一条指令 由于解锁序列不能中断, 因此在执行解锁序列之前应该禁止全局中断, 并在完成解锁序列之后重新允许全局中断 图 9-3: 闪存程序存储器解锁序列流程图 Start 开始解锁序列 Unlock Sequence Write 将 055h 055h 写入 to PMCON2 Write 将 0AAh 0AAh 写入 to PMCON2 Initiate 启动写或擦除操作 Write or Erase operation (WR = 1) (WR 1) Instruction 忽略预取指令 Fetched ignored NOP 强制执行 execution NOP forced Instruction 忽略预取指令 Fetched ignored NOP 强制执行 execution NOP forced End 解锁序列结束 Unlock Sequence DS B_CN 第 53 页

54 9.2.3 擦除闪存程序存储器 当执行代码时, 程序存储器只能按行擦除 要擦除某行, 请执行以下操作 : 1. 将要擦除的行中的任何地址装入 PMADRH:PMADRL 寄存器对 2. 将 PMCON1 寄存器的 CFGS 位清零 3. 将 PMCON1 寄存器的 FREE 和 WREN 位置 1 4. 依次将 55h 和 AAh 写入 PMCON2( 闪存编程解锁序列 ) 5. 将 PMCON1 寄存器的控制位 WR 置 1, 以开始擦除操作 请参见例 9-2 在 BSF PMCON1,WR 指令后, 处理器需要两个周期来设置擦除操作 用户必须在 WR 位置 1 后, 执行两条 NOP 指令 处理器将暂停内部操作, 通常为 2ms 擦除时间 这不是休眠模式, 因为时钟和外设将继续运行 擦除周期后, 处理器从 PMCON1 写指令后的第三条指令继续执行 图 9-4: 闪存程序存储器擦除操作流程图 Start 开始擦除操作 Erase Operation Disable 禁止中断 Interrupts (GIE (GIE = 0) 0) Select Program 选择程序存储器或配置存储器 or Configuration Memory (CFGS) (CFGS) Select 选择行地址 Row Address (PMADRH:PMADRL) (PMADRH:PMADRL) Select 选择擦除操作 Erase Operation (FREE (FREE = 1) 1) Enable 使能写 Write/Erase / 擦除操作 Operation (WREN (WREN = 1) 1) Unlock 解锁序列 Sequence (FIGURE 图 9-3x-x) CPU CPU stalls 暂停 while ERASE 直到擦除操作完成 operation completes ( 典型值为 (2ms typical) 2 ms) Disable 禁止写 Write/Erase / 擦除操作 Operation (WREN (WREN = 0) 0) Re-enable 重新允许中断 Interrupts (GIE (GIE = 1) 1) End 擦除操作结束 Erase Operation DS B_CN 第 54 页

55 例 9-2: 擦除程序存储器的一行 ; This row erase routine assumes the following: ; 1. A valid address within the erase row is loaded in ADDRH:ADDRL ; 2. ADDRH and ADDRL are located in shared data memory 0x70-0x7F (common RAM) BCF INTCON,GIE ; Disable ints so required sequences will execute properly BANKSEL PMADRL ; not required on devices with 1 Bank of SFRs MOVF ADDRL,W ; Load lower 8 bits of erase address boundary MOVWF PMADRL MOVF ADDRH,W ; Load upper 6 bits of erase address boundary MOVWF PMADRH BCF PMCON1,CFGS ; Not configuration space BSF PMCON1,FREE ; Specify an erase operation BSF PMCON1,WREN ; Enable writes 必需的序列 MOVLW 55h ; Start of required sequence to initiate erase MOVWF PMCON2 ; Write 55h MOVLW 0AAh ; MOVWF PMCON2 ; Write AAh BSF PMCON1,WR ; Set WR bit to begin erase NOP ; NOP instructions are forced as processor starts NOP ; row erase of program memory. ; ; The processor stalls until the erase process is complete ; after erase processor continues with 3rd instruction BCF PMCON1,WREN ; Disable writes BSF INTCON,GIE ; Enable interrupts DS B_CN 第 55 页

56 9.2.4 写闪存程序存储器 使用以下步骤编程程序存储器 : 1. 将要编程的行地址装入 PMADRH:PMADRL 2. 将数据装入每个写锁存器 3. 启动编程操作 4. 重复步骤 1 至 3, 直到写入所有数据 写入程序存储器之前, 要写入的字必须已擦除或者以前未写入 程序存储器每次只能擦除一行 启动写操作时不会自动擦除 程序存储器可以每次写入一个或多个字 每次写入的最多字数等于写锁存器数 更多详细信息, 请参见图 9-5 ( 使用 16 个写锁存器对程序存储器进行行写操作 ) 写锁存器对齐到由 PMADRH:PMADRL 的高 10 位 (PMADRH<6:0>:PMADRL<7:5>) 定义的闪存行地址边界, 而 PMADRL 的低 5 位 (PMADRL<4:0>) 确定装入的写锁存器 写操作不会跨越这些边界 当程序存储器写操作完成时, 写锁存器中的数据复位为包含 0x3FFF 要装入写锁存器和编程程序存储行, 必须完成以下步骤 这些步骤可分为两个部分 首先, 使用解锁序列 (LWLO = 1) 将 PMDATH:PMDATL 中的数据装入每个写锁存器 当要装入写锁存器的最后一个字准备就绪时, 清零 LWLO 位并执行解锁序列 这将启动编程操作, 将所有锁存器写入闪存程序存储器 注 : 必须执行特殊的解锁序列, 才能将数据装入写锁存器或启动闪存编程操作 如果解锁序列中断, 将不会启动对锁存器或程序存储器的写操作 1. 将 PMCON1 寄存器的 WREN 位置 1 2. 将 PMCON1 寄存器的 CFGS 位清零 3. 将 PMCON1 寄存器的 LWLO 位置 1 当 PMCON1 寄存器的 LWLO 位为 1 时, 写序列只能装入写锁 存器, 不会启动对闪存程序存储器的写操作 4. 将要写入的单元地址装入 PMADRH:PMADRL 寄 存器对 5. 将要写入的程序存储器数据装入 PMDATH:PMDATL 寄存器对 6. 执行解锁序列 ( 第 闪存存储器解锁序 列 ) 现在装入写锁存器 7. 将 PMADRH:PMADRL 寄存器对的内容加 1, 以 指向下一个单元 8. 重复步骤 5 至 7, 直到除最后一个写锁存器以外 的所有写锁存器都已装入完毕为止 9. 将 PMCON1 寄存器的 LWLO 位清零 当 PMCON1 寄存器的 LWLO 位为 0 时, 写序列将 启动对闪存程序存储器的写操作 10. 将要写入的程序存储器数据装入 PMDATH:PMDATL 寄存器对 11. 执行解锁序列 ( 第 闪存存储器解锁序 列 ) 现在可将整个程序存储器锁存器的内容写 入闪存程序存储器 注 : 当每次完成写或擦除操作时, 程序存储器 写锁存器复位为空白状态 (0x3FFF) 因 此, 不需要装入全部程序存储器写锁存 器 未装入的锁存器将处于空白状态 例 9-3 给出了完整的写序列示例 将初始地址装入 PMADRH:PMADRL 寄存器对 数据通过间接寻址装入 DS B_CN 第 56 页

57 DS B_CN 第 57 页 图 9-5: 使用 16 个写锁存器对闪存程序存储器进行块写操作 PMADRH PMADRL r4 r3 r2 r1 r0 c3 c2 c1 c0 5 PMADRH<0>: PMADRL<7:4> Row 行 Address 地址 Decode 译码 4 PMADRL<3:0> CFGS = 0 CFGS = PMDATH Program 程序存储器写锁存器 Memory Write Latches Write 将 00h Latch 写入 #0 锁存器 00h #0 14 Write 将 01h Latch 写入 #1 锁存器 01h #1 PMDATL Write 将 0Fh Latch 写入 #15 锁存器 0Fh # Row 行地址 Addr 地址 Addr Addr 地址地址 Addr 000h 001h 002h 01Eh 01Fh 000h 0000h 0010h 0020h 01E0h 01F0h 2000h h USER 用户 ID ID h 0011h 0021h 01E1h 01F1h 2004h h reserved 保留 Flash 闪存程序存储器 Program Memory 2006h DEVICEID 器件 ID 版本 REVID 2007h Configuration 配置字 Word Configuration 配置存储器 Memory Write 将 0Eh Latch 写入 #14 锁存器 0Eh#14 000Eh 001Eh 002Eh 01EEh 01FEh 2008h reserved 保留 000Fh 001Fh 002Fh 01EFh 01FFh PIC10(L)F320/322

58 图 9-6: 闪存程序存储器写操作流程图 Start Write 开始写操作 Operation Determine number of words to be 确定要写入程序存储器 written into Program or Configuration 或配置存储器的字数 Memory. The 字数不能超过每行的 number of words cannot exceed the 字数 number of words (word_cnt) per row. (word_cnt) Enable 使能写 Write/Erase / 擦除操作 Operation (WREN (WREN = 1) = 1) Load 装入要写入的值 the value to write (PMDATH:PMDATL) (PMDATH:PMDATL) Disable 禁止中断 Interrupts (GIE (GIE = 0) 0) Update 更新字计数器 the word counter (word_cnt--) (word_cnt--) 将锁存器写入闪存存储器 Write Latches to Flash (LWLO (LWLO = 0) 0) 选择程序存储器 Select Program 或配置存储器 or Config. Memory (CFGS) (CFGS) Last 最后一个 word to 要写入的字 write?? Unlock 解锁序列 Sequence Yes 是 (Figure 图 9-3 x-x) Select 选择行地址 Row Address (PMADRH:PMADRL) (PMADRH:PMADRL) No 否 Unlock 解锁序列 Sequence (Figure 图 9-3x-x) CPU CPU stalls 暂停直到 while Write operation 写操作完成 completes ( 典型值为 (2ms typical) 2 ms) Select 选择写操作 Write Operation (FREE (FREE = 00) ) Load 仅装入写锁存器 Write Latches Only (LWLO (LWLO = 1) 1) No delay 写入程序存储器 when writing to Program 锁存器时无延时 Memory Latches Increment 地址递增 Address 1 (PMADRH:PMADRL++) (PMADRH:PMADRL++) Disable 禁止写 / 擦除操作 Write/Erase Operation (WREN = 0) (WREN 0) Re-enable 重新允许中断 Interrupts (GIE (GIE = 1) 1) End 写操作结束 Write Operation DS B_CN 第 58 页

59 例 9-3: 写入闪存程序存储器 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; This write routine assumes the following: ; A valid starting address (the least significant bits = '00') ; is loaded in ADDRH:ADDRL ; ADDRH, ADDRL and DATADDR are all located in data memory ; BANKSEL PMADRH MOVF ADDRH,W ;Load initial address MOVWF PMADRH ; MOVF ADDRL,W ; MOVWF PMADRL ; MOVF DATAADDR,W ;Load initial data address MOVWF FSR ; LOOP MOVF INDF,W ;Load first data byte into lower MOVWF PMDATL ; INCF FSR,F ;Next byte MOVF INDF,W ;Load second data byte into upper MOVWF PMDATH ; INCF FSR,F ; BANKSEL PMCON1 BSF PMCON1,WREN ;Enable writes BCF INTCON,GIE ;Disable interrupts (if using) BTFSC INTCON,GIE ;See AN576 GOTO $-2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Required Sequence MOVLW 55h ;Start of required write sequence: MOVWF PMCON2 ;Write 55h MOVLW 0AAh ; MOVWF PMCON2 ;Write 0AAh BSF PMCON1,WR ;Set WR bit to begin write NOP ;Required to transfer data to the buffer NOP ;registers ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BCF PMCON1,WREN ;Disable writes BSF INTCON,GIE ;Enable interrupts (comment out if not using interrupts) BANKSEL PMADRL MOVF PMADRL, W INCF PMADRL,F ;Increment address ANDLW 0x03 ;Indicates when sixteen words have been programmed SUBLW 0x03 ;Change value for different size write blocks ;0x0F = 16 words ;0x0B = 12 words ;0x07 = 8 words ;0x03 = 4 words BTFSS STATUS,Z ;Exit on a match, GOTO LOOP ;Continue if more data needs to be written DS B_CN 第 59 页

60 9.3 修改闪存程序存储器 当修改程序存储器行中的已有数据, 并且必须保存该行 中的数据时, 首先必须读取它并将其保存在 RAM 镜像 中 使用以下步骤修改程序存储器 : 1. 装入要修改的行的起始地址 2. 从行中读取已有数据并将其保存到 RAM 镜像中 3. 修改 RAM 镜像, 以包含要写入到程序存储器的 新数据 4. 装入要重新写入的行的起始地址 5. 擦除程序存储器行 6. 将来自 RAM 镜像的数据装入写锁存器 7. 启动编程操作 图 9-7: 闪存程序存储器修改操作流程图开始修改操作 Start Modify Operation Read 读操作 Operation (Figure 图 9-2x.x) An image 读取的整个行的镜像 of the entire row read must 必须保存在 be stored RAM in RAM 中 Modify 修改镜像 Image The words 要修改的字必须在 to be modified are changed RAM in 镜像中进行更改 the RAM image Erase 擦除操作 Operation (Figure 图 9-4x.x) Write 写操作 Operation use 使用 RAM image 镜像 (Figure 图 9-5x.x) End 修改操作结束 Modify Operation DS B_CN 第 60 页

61 9.4 用户 ID 器件 ID 和配置字访问 当 PMCON1 寄存器中的 CFGS = 1 时, 不是访问程序存储器, 而是访问用户 ID 器件 ID/ 版本 ID 和配置字 这是 PC<13> = 1 时指向的区域, 但不是所有的地址都可访问 对于读和写操作存在不同的访问权限 请参见表 9-2 在对表 9-2 列出的参数以外的地址进行读访问时, PMDATH:PMDATL 寄存器对将被清零, 读回 0 表 9-2: 用户 ID 器件 ID 和配置字访问 (CFGS = 1) 例 9-4: 地址 功能 读访问 写访问 2000h-2003h 用户 ID 允许 允许 2006h 器件 ID/ 版本 ID 允许 禁止 2007h 配置字 允许 禁止 配置字和器件 ID 访问 * This code block will read 1 word of program memory at the memory address: * PROG_ADDR_LO (must be 00h-08h) data will be returned in the variables; * PROG_DATA_HI, PROG_DATA_LO BANKSEL PMADRL ; not required on devices with 1 Bank of SFRs MOVLW PROG_ADDR_LO ; MOVWF PMADRL ; Store LSB of address CLRF PMADRH ; Clear MSB of address BSF PMCON1,CFGS ; Select Configuration Space BCF INTCON,GIE ; Disable interrupts BSF PMCON1,RD ; Initiate read NOP ; Executed (See Figure 9-2) NOP ; Ignored (See Figure 9-2) BSF INTCON,GIE ; Restore interrupts MOVF PMDATL,W ; Get LSB of word MOVWF PROG_DATA_LO ; Store in user location MOVF PMDATH,W ; Get MSB of word MOVWF PROG_DATA_HI ; Store in user location DS B_CN 第 61 页

62 9.5 写校验 将写入程序存储器的值对照期望写入的值进行校验是一个良好的编程习惯 由于程序存储器按整页存储, 因此可在完成最后一个写操作之后将存储的程序存储器内容与存储在 RAM 中的期望数据做比较 图 9-8: 闪存程序存储器校验流程图 Start 开始校验操作 Verify Operation This 该程序假设写入的最后一行 routine assumes that the last row of data 数据来自保存在 written was from RAM an 中的 image saved 某个镜像 该镜像将用于校 in RAM. This image will be used to verify 验当前存储在闪存程序存储 the data currently stored in Flash 器中的数据 Program Memory. Read 读操作 Operation (Figure 图 9-2 x.x) PMDAT = RAM image 镜像?? Yes 是 否 No Fail 校验操作失败 Verify Operation 否 No Last 最后 Word 一个字?? Yes 是校验操作结束 End Verify Operation DS B_CN 第 62 页

63 9.6 闪存程序存储器控制寄存器 寄存器 9-1: PMDATL: 程序存储器数据低字节寄存器 R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u PMDAT<7:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-0 寄存器 9-2: PMDAT<7:0>: 在程序存储器读命令之后, PMADRH 和 PMADRL 指向的程序存储器字的值 PMDATH: 程序存储器数据高字节寄存器 U-0 U-0 R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u PMDAT<13:8> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-6 未实现 : 读为 0 bit 5-0 PMDAT<13:8>: 在程序存储器读命令之后, PMADRH 和 PMADRL 指向的程序存储器字的值 DS B_CN 第 63 页

64 寄存器 9-3: PMADRL: 程序存储器地址低字节寄存器 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 PMADR<7:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-0 PMADR<7:0>: 程序存储器读地址低位 寄存器 9-4: PMADRH: 程序存储器地址高字节寄存器 U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0/0 PMADR8 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-1 未实现 : 读为 0 bit 0 PMADR8: 程序存储器读地址高位 DS B_CN 第 64 页

65 寄存器 9-5: PMCON1: 程序存储器控制寄存器 1 U-1 (1) R/W-0/0 R/W-0/0 R/W/HC-0/0 R/W/HC-0/q (2) R/W-0/0 R/S/HC-0/0 R/S/HC-0/0 CFGS LWLO FREE WRERR WREN WR RD bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 S = 只可置 1 位 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 HC = 由硬件清零 bit 7 未实现 : 读为 1 bit 6 CFGS: 配置寄存器选择位 1 = 访问配置寄存器 用户 ID 寄存器和器件 ID 寄存器 0 = 访问闪存程序存储器 bit 5 LWLO: 仅装入写锁存器位 (3) 1 = 在下一条 WR 指令时仅装入 / 更新寻址的程序存储器写锁存器 0 = 装入 / 更新寻址的程序存储器写锁存器, 且在下一条 WR 指令将启动对所有程序存储器写锁存器的写操作 bit 4 FREE: 程序闪存擦除使能位 1 = 在下一条 WR 命令执行擦除操作 ( 擦除完成后由硬件清零 ) 0 = 在下一条 WR 命令执行写操作 bit 3 WRERR: 编程 / 擦除错误标志位 1 = 该状态表示试图进行不当的编程或试图擦除序列或意外终止 ( 试图将 WR 位置 1( 写入 1) 时, 该位自动置 1) 0 = 编程或擦除操作正常完成 bit 2 WREN: 编程 / 擦除使能位 1 = 允许执行编程 / 擦除操作 0 = 禁止编程 / 擦除闪存程序存储器 bit 1 WR: 写控制位 1 = 启动闪存程序存储器编程 / 擦除操作 该操作是自定时的, 且该位在操作完成时由硬件清零 用软件只能将 WR 位置 1, 但不能清零 0 = 对闪存的编程 / 擦除操作已完成, 当前不在进行中 bit 0 RD: 读控制位 1 = 启动对闪存程序存储器的读操作 读操作只占用一个周期 RD 由硬件清零 用软件只能将 RD 位置 1, 但不能清零 0 = 不启动闪存程序存储器读操作 注 1: 未实现位, 读为 1 2: 当启动程序存储器写或擦除操作 (WR = 1) 时, WRERR 位由硬件自动置 1 3: 在执行程序存储器擦除操作 (FREE = 1) 时, 忽略 LWLO 位 DS B_CN 第 65 页

66 寄存器 9-6: PMCON2: 程序存储器控制寄存器 2 W-0/0 W-0/0 W-0/0 W-0/0 W-0/0 W-0/0 W-0/0 W-0/0 程序存储器控制寄存器 2 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 S = 只可置 1 位 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-0 闪存解锁模式位要解锁写操作, 在将 PMCON1 寄存器的 WR 位置 1 前, 必须先写 55h, 随后写入 AAh 写入该寄存器的值用于解锁写操作 对这些写操作有特殊的时序要求 表 9-3: 与闪存程序存储器相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 40 PMCON1 CFGS LWLO FREE WRERR WREN WR RD 65 PMCON2 程序存储器控制寄存器 2 66 PMADRL PMADR<7:0> 64 PMADRH PMADR8 64 PMDATL PMDAT<7:0> 63 PMDATH PMDAT<13:8> 63 图注 : = 未实现单元, 读为 0 闪存程序存储器模块不使用阴影单元 寄存器所在页 表 9-4: 与闪存程序存储器相关的配置字汇总 名称 Bit Bit -/7 Bit -/6 Bit 13/5 Bit 12/4 Bit 11/3 Bit 10/2 Bit 9/1 Bit 8/0 CONFIG 13:8 WRT<1:0> BORV LPBOR LVP 7:0 CP MCLR PWRTE WDTE<1:0> BOREN<1:0> FOSC 图注 : = 未实现单元, 读为 0 闪存程序存储器不使用阴影单元 寄存器所在页 20 DS B_CN 第 66 页

67 10.0 I/O 端口 图 10-1: I/O 端口操作 根据所使能的外设, 部分或所有引脚可能不能用作通用 I/O 通常情况下, 当某个端口引脚上的外设使能时, 该引脚不能用作通用输出引脚, 但可读取该引脚 PORTA 有 3 个标准寄存器供其操作使用 这些寄存器包括 : D 读 LATA Q TRISA TRISA 寄存器 ( 数据方向寄存器 ) PORTA 寄存器 ( 用于读器件引脚上的电平 ) LATA 寄存器 ( 输出锁存器 ) 某些端口可能有以下一个或几个额外寄存器 这些寄存器包括 : ANSELA ( 模拟选择寄存器 ) WPUA ( 弱上拉寄存器 ) 数据锁存器 (LATA 寄存器 ) 用于对 I/O 引脚所驱动的值进行读 - 修改 - 写操作 写 LATA 写 PORTA 数据总线 读 PORTA 至外设 CK 数据寄存器 ANSELA VDD VSS I/O 引脚 对 LATA 寄存器的写操作与对相应 PORTA 寄存器的写操作具有相同的效果 读 LATA 寄存器将读取保存在 I/O 端口锁存器中的值, 而读 PORTA 寄存器将读取实际的 I/O 引脚值 支持模拟输入的端口具有相关的 ANSELA 寄存器 当 ANSEL 位置 1 时, 禁止与该位相关的数字输入缓冲器 当禁止输入缓冲器时, 可防止介于逻辑高电平和逻辑低电平之间的引脚上的模拟信号电平导致逻辑输入电路产生过电流 图 10-1 给出了一个通用 I/O 端口的简化模型, 图中未显示与其他外设的接口 例 10-1: 初始化 PORTA ; This code example illustrates ; initializing the PORTA register. The ; other ports are initialized in the same ; manner. BANKSEL PORTA ;not required on devices with 1 Bank of SFRs CLRF PORTA ;Init PORTA BANKSEL LATA ;not required on devices with 1 Bank of SFRs CLRF LATA ; BANKSEL ANSELA ;not required on devices with 1 Bank of SFRs CLRF ANSELA ;digital I/O BANKSEL TRISA ;not required on devices with 1 Bank of SFRs MOVLW B' ' ;Set RA<1:0> as inputs MOVWF TRISA ;and set RA<2:3> as ;outputs DS B_CN 第 67 页

68 10.1 PORTA 寄存器 PORTA 是 8 位宽的双向端口 其对应的数据方向寄存器是 TRISA ( 寄存器 10-2) 当 TRISA 某位置 1 (= 1) 时, 可以将相应的 PORTA 引脚作为输入引脚 ( 即, 禁止输出驱动器 ) 当 TRISA 某位清零 (= 0) 时, 可以让相应的 PORTA 引脚作为输出引脚 ( 即, 使能输出驱动器并将输出锁存器的内容传送至选定的引脚上 ) 例 10-1 说明了如何初始化 PORTA 读 PORTA 寄存器 ( 寄存器 10-1) 将读出引脚的状态, 而写该寄存器将会写入端口锁存器 所有写操作都是读 - 修改 - 写操作 因此, 写一个端口就意味着读该端口的引脚电平, 修改读到的值, 然后再将改好的值写入端口数据锁存器 (LATA) 即使 PORTA 引脚用作模拟输入引脚, TRISA 寄存器 ( 寄存器 10-2) 仍然控制 PORTA 引脚的输出驱动器 当用作模拟输入引脚时, 用户必须确保 TRISA 寄存器中的位保持为置 1 状态 配置为模拟输入引脚的 I/O 引脚总是读为 弱上拉 每个 PORTA 引脚均具有可独立配置的内部弱上拉 控制位 WPUA<3:0> 可使能或禁止每个上拉 ( 见寄存器 10-5) 当端口引脚配置为输出时, 其弱上拉电路会自动切断 上电复位时, 通过 OPTION_REG 寄存器的 WPUEN 位禁止所有上拉 PORTA 功能和输出优先级 每个 PORTA 引脚均复用多个功能 表 10-1 给出了引脚及其组合功能和输出优先级 使能多个输出时, 引脚实际上由具有最高优先级的外设控制 当引脚处于模拟模式并具有表 10-1 所示的优先级时, 数字输出功能可以控制该引脚 表 10-1: 注 引脚名称 RA0 RA1 RA2 RA3 PORTA 输出优先级 功能优先级 (1) ICSPDAT CWG1A PWM1 RA0 CWG1B PWM2 CLC1 RA1 NCO1 CLKR RA2 无 1: 按优先级从高至低排列 ANSELA 寄存器 ANSELA 寄存器 ( 寄存器 10-4) 用于将 I/O 引脚的输入模式配置为模拟模式 当相应的 ANSELA 位设置为高电平时, 可以使引脚上的所有数字读操作都读为 0, 并允许引脚上的模拟功能正确工作 ANSELA 位的状态不会影响数字输出功能 TRIS 清零且 ANSEL 置 1 的引脚将仍作为数字输出引脚工作, 但输入模式将变为模拟输入模式 当在受影响的端口上执行读 - 修改 - 写指令时, 得到的结果可能与预期不符 注 : 复位后, ANSELA 位默认为模拟模式 要将任一引脚用作数字通用或者外设输入, 相应的 ANSEL 位必须由用户软件初始化为 0 DS B_CN 第 68 页

69 10.2 寄存器定义 :PORTA 寄存器 10-1: PORTA:PORTA 寄存器 U-0 U-0 U-0 U-0 R-x/x R/W-x/x R/W-x/x R/W-x/x RA3 RA2 RA1 RA0 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-4 未实现 : 读为 0 bit 3-0 RA<3:0>:PORTA I/O 值位 (RA3 是只读位 ) 注 1: 写入 PORTx 时, 实际上写入相应的 LATx 寄存器 读取 PORTx 寄存器时, 将返回实际的 I/O 引脚值 寄存器 10-2: TRISA:PORTA 三态寄存器 U-0 U-0 U-0 U-0 U-1 R/W-1/1 R/W-1/1 R/W-1/1 (1) TRISA2 TRISA1 TRISA0 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-4 未实现 : 读为 0 bit 3 未实现 : 读为 1 bit 2-0 TRISA<2:0>:RA<2:0> 端口 I/O 三态控制位 1 = 禁止端口输出驱动器 0 = 使能端口输出驱动器注 1: 未实现, 读为 1 DS B_CN 第 69 页

70 寄存器 10-3: LATA:PORTA 数据锁存寄存器 U-0 U-0 U-0 U-0 U-0 R/W-x/u R/W-x/u R/W-x/u LATA2 LATA1 LATA0 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-3 未实现 : 读为 0 bit 2-0 注 LATA<2:0>:RA<2:0> 输出锁存器值位 1: 写入 PORTx 时, 实际上写入相应的 LATx 寄存器 读取 LATx 寄存器时, 将返回寄存器值, 而不是 I/O 引脚值 寄存器 10-4: ANSELA:PORTA 模拟选择寄存器 U-0 U-0 U-0 U-0 U-0 R/W-1/1 R/W-1/1 R/W-1/1 ANSA2 ANSA1 ANSA0 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-3 未实现 : 读为 0 bit 2-0 注 ANSA<2:0>: 将 RA<2:0> 引脚选择为模拟或数字功能 1 = 模拟输入 引脚设置为模拟输入引脚 (1) 禁止数字输入缓冲器 0 = 数字 I/O 引脚设置为端口或是数字特殊功能 1: 当引脚设置为模拟输入时, 可以自动禁止数字输入电路 弱上拉 ( 如果有 ) 不受影响 用户必须将相应的 TRIS 位设置为输入模式, 以允许外部控制引脚电压 DS B_CN 第 70 页

71 寄存器 10-5: WPUA: 弱上拉 PORTA 寄存器 U-0 U-0 U-0 U-0 R/W-1/1 R/W-1/1 R/W-1/1 R/W-1/1 WPUA3 WPUA2 WPUA1 WPUA0 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-4 未实现 : 读为 0 bit 3-0 WPUA<3:0>: 弱上拉 PORTA 控制位 1 = 使能弱上拉 (1) 0 = 禁止弱上拉 注 1: 要使能弱上拉, 还需要将 OPTION_REG 寄存器的 WPUEN 位清零 ( 寄存器 16-1) DS B_CN 第 71 页

72 表 10-2: 与 PORTA 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 ANSELA ANSA2 ANSA1 ANSA0 70 IOCAF IOCAF3 IOCAF2 IOCAF1 IOCAF0 76 IOCAN IOCAN3 IOCAN2 IOCAN1 IOCAN0 75 IOCAP IOCAP3 IOCAP2 IOCAP1 IOCAP0 75 LATA LATA2 LATA1 LATA0 70 PORTA RA3 RA2 RA1 RA0 69 TRISA (1) TRISA2 TRISA1 TRISA0 69 WPUA WPUA3 WPUA2 WPUA1 WPUA0 71 图注 : x = 未知, u = 不变, = 未实现单元, 读为 0 PORTA 不使用阴影单元 注 1: 未实现, 读为 1 DS B_CN 第 72 页

73 11.0 电平变化中断 PORTA 引脚可以配置为电平变化中断 (Interrupt-On- Change,IOC) 引脚 当检测到具有上升沿或下降沿的信号时, 产生中断 任何独立的 PORTA 引脚或 PORTA 引脚组合都可以配置为产生中断 电平变化中断模块具有以下特性 : 允许电平变化中断 ( 主开关 ) 独立的引脚配置 上升沿和下降沿检测 独立的引脚中断标志图 11-1 给出了 IOC 模块的框图 11.1 使能模块 要允许独立的 PORTA 引脚产生中断, 必须将 INTCON 寄存器的 IOCIE 位置 1 如果禁止 IOCIE 位, 则仍然会对引脚上的信号进行边沿检测, 但是不产生中断 11.2 独立的引脚配置 每个 PORTA 引脚都带有一个上升沿检测器和一个下降沿检测器 要使能某个引脚检测上升沿, 必须将 IOCAP 寄存器中相应的 IOCAPx 位置 1 要使能某个引脚检测下降沿, 必须将 IOCAN 寄存器中相应的 IOCANx 位置 1 通过分别将 IOCAP 寄存器中相应的 IOCAPx 位和 IOCAN 寄存器中相应的 IOCANx 位置 1, 可将某个引脚配置为同时检测上升沿和下降沿 11.3 中断标志 IOCAF 寄存器中的 IOCAFx 位是对应于 PORTA 的电平变化中断引脚的状态标志位 如果在相应的已使能引脚上检测到预期的边沿, 则该引脚的状态标志位将置 1, 且如果 IOCIE 位置 1 的话, 还会产生中断 INTCON 寄存器的 IOCIF 位会反映所有 IOCAFx 位的状态 11.4 清零中断标志 各个状态标志 (IOCAFx 位 ) 可以通过将其复位为零的方式进行清零 如果在清零操作期间检测到另一个边沿, 则无论实际写入的值如何, 相关的状态标志位都会在序列结束时置 1 为了确保清零标志时不丢失所检测到的边沿, 只需执行用于屏蔽已知更改位的 逻辑与 操作 以下举例说明了应执行的序列 例 11-1: MOVLW XORWF ANDWF 0xff IOCAF, W IOCAF, F 11.5 休眠期间的工作原理 如果 IOCIE 位置 1 的话, 电平变化中断序列将器件从休眠模式中唤醒 如果在休眠模式下检测到边沿, 则在退出休眠模式执行第一条指令之前, 会更新 IOCAF 寄存器 DS B_CN 第 73 页

74 图 11-1: 电平变化中断框图 IOCANx D Q Q4Q1 CK R Edge 边沿 Detect 检测 RAx IOCAPx D Q Data 数据总线 Bus = 0 或 or 1 D S Q To 至数据总线 Data Bus IOCAFx CK R Write 写 IOCAFx CK IOCIE Q2 来自所有其他 From all other IOCAFx individual 的各个引脚检测器 pin detectors 至 IOC CPU Interrupt 内核的 to CPU IOC 中断 Core Q1 Q2 Q3 Q4 Q4Q1 Q1 Q1 Q2 Q2 Q3 Q3 Q4 Q4 Q4 Q4Q1 Q4Q1 Q4Q1 DS B_CN 第 74 页

75 11.6 电平变化中断寄存器 寄存器 11-1: IOCAP: 电平变化中断 PORTA 正边沿寄存器 U-0 U-0 U-0 U-0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 IOCAP3 IOCAP2 IOCAP1 IOCAP0 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-4 未实现 : 读为 0 bit 3-0 IOCAP<3:0>: 电平变化中断 PORTA 正边沿允许位 1 = 允许引脚上的正边沿电平变化中断 检测到边沿时, 将相关的状态位和中断标志位置 1 (1) 0 = 禁止相关引脚的电平变化中断 注 1: 电平变化中断还需要将 INTCON 寄存器的 IOCIE 位置 1 ( 寄存器 6-1) 寄存器 11-2: IOCAN: 电平变化中断 PORTA 负边沿寄存器 U-0 U-0 U-0 U-0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 IOCAN3 IOCAN2 IOCAN1 IOCAN0 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-4 未实现 : 读为 0 bit 3-0 IOCAN<3:0>: 电平变化中断 PORTA 负边沿允许位 1 = 允许引脚上的负边沿电平变化中断 检测到边沿时, 将相关的状态位和中断标志位置 1 (1) 0 = 禁止相关引脚的电平变化中断 注 1: 电平变化中断还需要将 INTCON 寄存器的 IOCIE 位置 1 ( 寄存器 6-1) DS B_CN 第 75 页

76 寄存器 11-3: IOCAF: 电平变化中断 PORTA 标志寄存器 U-0 U-0 U-0 U-0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 IOCAF3 IOCAF2 IOCAF1 IOCAF0 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 HS = 由硬件清零 bit 7-4 未实现 : 读为 0 bit 3-0 IOCAF<3:0>: 电平变化中断 PORTA 标志位 1 = 检测到相关引脚上发生允许的电平变化 当 IOCAPx = 1 且检测到 RAx 引脚上出现上升沿时, 或当 IOCANx = 1 且检测到 RAx 引脚上出现下降沿时, 该标志位置 1 (1) 0 = 未检测到电平变化, 或用户清除检测到的电平变化 注 1: 电平变化中断还需要将 INTCON 寄存器的 IOCIE 位置 1 ( 寄存器 6-1) 表 11-1: 与电平变化中断相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 40 IOCAF IOCAF3 IOCAF2 IOCAF1 IOCAF0 76 IOCAN IOCAN3 IOCAN2 IOCAN1 IOCAN0 75 IOCAP IOCAP3 IOCAP2 IOCAP1 IOCAP0 75 TRISA (1) TRISA2 TRISA1 TRISA0 69 图注 : = 未实现单元, 读为 0 电平变化中断不使用阴影单元 注 1: 未实现, 读为 1 DS B_CN 第 76 页

77 12.0 固定参考电压 (FVR) 固定参考电压 (FVR) 是独立于 VDD 的稳定参考电压, 可选的输出电平具有 1.024V 2.048V 或 4.096V 可配置 FVR 的输出为以下项提供参考电压 : ADC 输入通道通过将 FVRCON 寄存器的 FVREN 位置 1 可使能 FVR 12.1 独立的增益放大器 FVR 的输出可通过 1 个独立的可编程增益放大器连接到 ADC 放大器可配置为将参考电压放大 1 倍 2 倍或 4 倍, 从而提供三种可能的电压级别 FVRCON 寄存器的 ADFVR<1:0> 位可以使能和配置增益放大器设置, 用于给 ADC 模块提供参考电压 更多信息, 请参见第 15.0 模数转换器 (ADC) 模块 要最大程度地降低 FVR 禁止时的电流消耗, 应该通过清零 ADFVR<1:0> 位来关闭 FVR 缓冲器 12.2 FVR 稳定时间 当使能固定参考电压模块时, 参考电路和放大器电路需要一定的时间才能稳定 一旦电路达到稳定且就绪时, FVRCON 寄存器的 FVRRDY 位将置 1 关于最小延时的要求, 请参见第 24.0 电气规范 图 12-1: 参考电压框图 ADFVR<1:0> 2 x1 x2 x4 FVR (To ( 至 ADC Module) 模块 ) FVREN 任何需要固定参考电压的外设 ( 见表 12-1) 1.024V Fixed 固定参考电压 Reference + FVRRDY - 表 12-1: 需要固定参考电压 (FVR) 的外设 外设条件说明 HFINTOSC FOSC = 1 CLKIN 引脚上的 EC BOREN<1:0> = 11 始终使能 BOR BOR BOREN<1:0> = 10 且 BORFS = 1 在休眠模式下禁止 BOR, 使能 BOR 快速启动 BOREN<1:0> = 01 且 BORFS = 1 BOR 由软件控制, 使能 BOR 快速启动 IVR 所有 PIC10F320/322 器件, VREGPM1 = 1 且不处于休眠模式 当处于休眠模式时, 器件将使用节能模式稳压器 DS B_CN 第 77 页

78 12.3 FVR 控制寄存器 寄存器 12-1: FVRCON: 固定参考电压控制寄存器 R/W-0/0 R-q/q R/W-0/0 R/W-0/0 U-0 U-0 R/W-0/0 R/W-0/0 FVREN FVRRDY (1) TSEN (3) TSRNG (3) ADFVR<1:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 q = 值取决于具体条件 bit 7 FVREN: 固定参考电压使能位 1 = 使能固定参考电压 0 = 禁止固定参考电压 bit 6 FVRRDY: 固定参考电压就绪标志位 (1) 1 = 固定参考电压输出已就绪 0 = 固定参考电压输出未就绪或未使能 bit 5 TSEN: 温度指示器使能位 (3) 1 = 使能温度指示器 0 = 禁止温度指示器 bit 4 (3) TSRNG: 温度指示器范围选择位 1 = VOUT = VDD - 4VT ( 高电压范围 ) 0 = VOUT = VDD - 2VT ( 低电压范围 ) bit 3-2 未实现 : 读为 0 bit 1-0 ADFVR<1:0>:ADC 固定参考电压选择位 11 = ADC 固定参考电压外设输出为 4x (4.096V) (2) 10 = ADC 固定参考电压外设输出为 2x (2.048V) (2) 01 = ADC 固定参考电压外设输出为 1x (1.024V) 00 = ADC 固定参考电压外设输出关闭 注 1: FVRRDY 表示 FVR 的真实状态 2: 固定参考电压输出不能超过 VDD 3: 更多信息, 请参见第 14.0 温度指示器模块 表 12-2: 与固定参考电压相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 FVRCON FVREN FVRRDY TSEN TSRNG ADFVR<1:0> 78 图注 : 固定参考电压不使用阴影单元 DS B_CN 第 78 页

79 13.0 内部稳压器 (IVR) 以下器件提供工作电压高于 3.6V 的内部稳压器 (Internal Voltage Regulator, IVR): PIC10F320 PIC10F322 该电路可为内部器件逻辑提供稳压, 同时允许 VDD 和 I/O 引脚工作在较高的电压下 VDD 接近稳定电压时, IVR 输出将自动跟踪输入电压 根据用户配置和外设选择,IVR 可在三种功耗模式之一下工作 工作功耗模式包括 : - 高功耗模式 - 低功耗模式 - 节能休眠模式功耗模式根据器件工作情况自动选择, 如表 13-1 所示 当 VDD 降至低于内核的安全工作电压时, 自动选择跟踪模式 注 : IVR 在跟踪模式下禁止, 但是还会耗电 更多信息, 请参见第 24.0 节 电气规范 表 13-1: IVR 功耗模式 稳压 VREGPM1 位 休眠模式 存储器偏置功耗模式 IVR 功耗模式 EC 模式或 INTOSC = 16 MHz ( 高功耗偏置 ) x 否 INTOSC = 1 MHz 至 8 MHz ( 中等功耗偏置 ) 高 INTOSC = 31 khz 至 500 khz ( 低功耗偏置 ) 低 0 是 无关位 低 1 是 无 HFINTOSC 无外设 节能 (1) 注 1: 在以下任意条件下强制为低功耗模式 : 使能 BOR HFINTOSC 是有效外设源 自写有效 ADC 正在进行有效转换 DS B_CN 第 79 页

80 寄存器 13-1: VREGCON: 稳压器控制寄存器 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0/0 R/W-1/1 VREGPM1 保留 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-2 未实现 : 读为 0 bit 1 VREGPM1: 稳压器功耗模式选择位 1 = 休眠时使能节能休眠模式 休眠时消耗的电流最少, 唤醒较慢 0 = 休眠时使能低功耗模式 休眠时消耗的电流较多, 唤醒较快 bit 0 保留 : 保持该位置 1 DS B_CN 第 80 页

81 14.0 温度指示器模块 图 14-1: 温度电路图 本器件系列配置了一个温度电路, 该电路旨在测量硅片的工作温度 电路的工作温度范围在 -40 C 至 +85 C 之间 输出电压与器件温度成正比 温度指示器的输出内部连接到器件 ADC 该电路可用作温度阈值检测器或更精确的温度指示器, 具体取决于执行的校准级别 单点校准使电路指示该点附近的温度 两点校准使电路能更精确地测量整个温度范围 关于校准过程的更多信息, 请参见应用笔记 内部温度指示器的使用与校准 (DS01333A_CN) VDD TSEN TSRNG Rev A 7/31/ 电路工作原理 图 14-1 给出了该温度电路的简化框图 与温度成正比的电压输出通过测量多个硅片接点上的正向压降实现 公式 14-1 说明了温度指示器的输出特性 VOUT Temp. 温度指示器 Indicator To 至 ADC ADC 公式 14-1: VOUT 范围 高电压范围 :VOUT = VDD - 4VT 低电压范围 :VOUT = VDD - 2VT 温度检测电路集成了固定参考电压 (FVR) 模块 更多信息, 请参见第 12.0 节 固定参考电压 (FVR) 将 FVRCON 寄存器的 TSEN 位置 1 可使能该电路 禁止时, 该电路不消耗电流 该电路可在高或低电压范围下工作 高电压范围通过将 FVRCON 寄存器的 TSRNG 位置 1 来选择, 可提供更宽的输出电压 这为整个温度范围提供了更高的分辨率, 但是各部件之间一致性较差 该范围需要更高的偏置电压才能工作, 因此, 需要更高的 VDD 低电压范围通过将 FVRCON 寄存器的 TSRNG 位清零来选择 低电压范围会产生较低的压降, 因此, 该电路需要较低的偏置电压才能工作 低电压范围针对低电压工作而提供 14.2 最小工作电压 VDD 与最低检测温度 当温度电路在低电压范围下工作时, 器件可以在规范范围内的任何工作电压下工作 当温度电路在高电压范围下工作时, 器件工作电压 VDD 必须足够高, 以确保温度电路正确偏置 表 14-1 给出了建议的最小 VDD 与范围设置 表 14-1: 14.3 温度输出 建议的 VDD 与范围 最小 VDD, TSRNG = 1 最小 VDD, TSRNG = 0 3.6V 1.8V 使用内部模数转换器测量电路的输出 预留了一个通道用于温度电路输出 更多详细信息, 请参见第 15.0 节 模数转换器 (ADC) 模块 14.4 ADC 采集时间 要确保精确的温度测量, 在 ADC 输入多路开关连接到温度指示器输出之后, 用户必须至少等待 200 s 才能执行转换 此外, 在连续转换温度指示器输出之间, 用户必须等待 200 s DS B_CN 第 81 页

82 表 14-2: 与温度指示器相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 FVRCON FVREN FVRRDY TSEN TSRNG ADFVR<1:0> 78 ADCON GO/ ADCS<2:0> CHS<2:0> DONE ADON 88 ADRES A/D 结果寄存器 89 图注 : = 未实现单元, 读为 0 温度指示器模块不使用阴影单元 DS B_CN 第 82 页

83 15.0 模数转换器 (ADC) 模块 模数转换器 (Analog-to-Digital Converter,ADC) 可以将模拟输入信号转换为该信号的 8 位二进制表示 该器件使用三路模拟输入通道, 这些输入通道通过多路开关连接到一个采样保持电路 采样保持电路的输出与转换器的输入相连 该转换器通过逐次逼近法生成 8 位二进制数并将转换结果存储到 ADC 结果寄存器 (ADRES) 图 15-1 给出了 ADC 框图 可通过软件选择内部产生的电压作为 ADC 参考电压 ADC 可在转换完成时产生中断 此中断可用于将器件从休眠状态中唤醒 图 15-1: ADC 简化框图 VREF- = Vss AN0 000 AN1 001 AN2 010 保留 011 保留 100 保留 101 温度指示器 110 FVR 111 VREF+ = VDD ADC GO/DONE ADON (1) 8 ADRES CHS<2:0> (2) VSS 注 1: 当 ADON = 0 时, 断开所有多路开关输入 2: 关于每个器件的模拟通道选择的详细信息, 请参见 ADCON 寄存器 ( 寄存器 15-1) DS B_CN 第 83 页

84 15.1 ADC 配置 当配置和使用 ADC 时, 必须考虑以下功能 : 端口配置 通道选择 ADC 转换时钟源 中断控制 端口配置 ADC 可用于将模拟信号转化为数字信号 当转换模拟信号时, 应通过设置相关 TRIS 和 ANSEL 位将 I/O 引脚配置为模拟引脚 更多信息, 请参见第 10.0 节 I/O 端口 注 : 通道选择 在任何定义为数字输入的引脚上施加模拟电压可能导致输入缓冲器消耗的电流过大 最多 5 路通道可供选择 : AN<2:0> 引脚 温度指示器 FVR ( 固定参考电压 ) 输出更多关于这些通道选择的信息, 请参见第 12.0 节 固定参考电压 (FVR) 和第 14.0 节 温度指示器模块 ADCON 寄存器的 CHS 位控制将哪一路通道与采样保持电路相连 当更改通道时, 需要一段时间的延时才能启动下一次转换 更多信息, 请参见第 15.2 节 ADC 工作原理 转换时钟 可通过软件设置 ADCON 寄存器的 ADCS 位来选择转换时钟源 ( 寄存器 15-1) 有以下 7 种时钟频率可供选择 : FOSC/2 FOSC/4 FOSC/8 FOSC/16 FOSC/32 FOSC/64 FRC ( 专用内部 RC 振荡器 ) 转换 1 位所需的时间定义为 TAD 一次完整的 8 位转换需要 9.5 个 TAD 周期, 如图 15-2 所示 要实现正确的转换, 必须满足适当的 TAD 规范 更多信息, 请参见第 24.0 节 电气规范 中的 A/D 转换要求 表 15-1 给出了一个适当的 ADC 时钟选择的示例 注 1: 除非使用 FRC, 否则系统时钟频率的任何变化都会改变 ADC 时钟频率, 这会影响 ADC 结果 ADC 参考电压 没有外部参考电压连接到 ADC 仅 VDD 可用作参考电压源 FVR 仅可用作输入通道, 而不是连接到 ADC 的 VREF+ 输入 DS B_CN 第 84 页

85 表 15-1: ADC 时钟周期 (TAD) 与器件工作频率的关系 ADC 时钟周期 (TAD) 器件频率 (FOSC) ADC 时钟源 ADCS<2:0> 16 MHz 8 MHz 4 MHz 1 MHz FOSC/ ns (1) 250 ns (1) 500 ns (1) 2.0 s FOSC/ ns (1) 500 ns (1) 1.0 s 4.0 s FOSC/ s (1) 1.0 s 2.0 s 8.0 s (2) FOSC/ s 2.0 s 4.0 s 16.0 s (2) FOSC/ s 4.0 s 8.0 s (2) 32.0 s (2) FOSC/ s 8.0 s (2) 16.0 s (2) 64.0 s (2) FRC x s (1,3) s (1,3) s (1,3) s (1,3) 图注 : 阴影单元表示超出了建议值的范围 注 1: 这些值均违反了最小 TAD 时间要求 2: 为了加快转换速度, 建议选用其他时钟源 3: 当 ADC 时钟由系统时钟 FOSC 提供时, 可以最大程度地减少 ADC 时钟周期 (TAD) 和 ADC 总转换时间 但是, 如果当器件处于休眠模式时执行转换, 则必须使用 FRC 时钟源 图 15-2: 模数转换 TAD 周期 TCY - TAD TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 转换启动 保持电容与模拟输入断开 ( 通常为 100 ns) TAD9 b7 b6 b5 b4 b3 b2 b1 b0 将 GO 位置 1 在下一个周期 : 装入 ADRES,GO 位清零, ADIF 位置 1, 保持电容连接至模拟输入 DS B_CN 第 85 页

86 中断 ADC 模块可以在模数转换完成时产生中断 ADC 中断标志位是 PIR1 寄存器中的 ADIF 位 ADC 中断允许位是 PIE1 寄存器中的 ADIE 位 必须用软件将 ADIF 位清零 注 : 器件在工作期间或者休眠模式下都可以产生该中断 如果器件处于休眠模式, 则该中断可唤醒器件 从休眠模式中唤醒时, 总是执行 SLEEP 指令后的下一条指令 如果用户试图将器件从休眠模式中唤醒并继续执行主程序代码, 则必须禁止 INTCON 寄存器的 GIE 和 PEIE 位 如果使能了 INTCON 寄存器的 GIE 和 PEIE 位, 则转为执行中断服务程序 15.2 ADC 工作原理 启动转换 要使能 ADC 模块, 必须将 ADCON 寄存器的 ADON 位设置为 1 通过将 ADCON 寄存器的 GO/DONE 位设置为 1, 可以启动模数转换 无论是否允许 ADC 中断, 每次转换完成时 都会将 ADIF 位置 1 注 : 不应该使用启动 ADC 的同一指令将 GO/ 完成转换 当转换完成时, ADC 模块将 : 清零 GO/DONE 位 置 1ADIF 中断标志位 使用新的转换结果更新 ADRES 寄存器 终止转换 如果必须在转换完成前终止转换, 则可用软件清零 GO/ DONE 位 ADRES 寄存器将使用部分完成的模数转换结果进行更新 未完成位将用最后转换的一位填充 注 : DONE 位置 1 请参见第 节 A/D 转换步骤 器件复位会强制所有寄存器进入复位状态 因此关闭 ADC 模块并终止任何待处理的转换 休眠期间的 ADC 工作原理 ADC 模块可以在休眠模式下工作 这需要将 ADC 时钟源设置为 FRC 选项 当选择 FRC 时钟源时, ADC 需要等待一个额外的指令周期才能开始转换 这允许执行一条 SLEEP 指令, 从而降低转换期间的系统噪声 如果允许 ADC 中断, 则转换完成时器件将从休眠模式中唤醒 如果禁止 ADC 中断, 即使 ADON 位保持置 1, 但是在转换完成后 ADC 模块会关闭 当 ADC 时钟源不是 FRC, 而是其他时钟源时, 即使 ADON 位保持置 1, 但是 SLEEP 指令会导致当前转换中止且 ADC 模块关闭 DS B_CN 第 86 页

87 A/D 转换步骤 以下是使用 ADC 执行模数转换的示例步骤 : 1. 配置端口 : 禁用引脚输出驱动器 ( 见 TRIS 寄存器 ) 将引脚配置为模拟引脚 ( 见 ANSEL 寄存器 ) 2. 配置 ADC 模块 : 选择 ADC 转换时钟 选择 ADC 输入通道 启动 ADC 模块 3. 配置 ADC 中断 ( 可选 ): 清零 ADC 中断标志 允许 ADC 中断 允许外设中断 (1) 允许全局中断 4. 等待所需的采集时间 (2) 5. 通过将 GO/DONE 位置 1 来启动转换 6. 通过以下任一方式等待 ADC 转换完成 : 查询 GO/DONE 位 等待 ADC 中断 ( 允许中断 ) 7. 读 ADC 结果 8. 清零 ADC 中断标志 ( 如果允许中断, 则需要进行此操作 ) 注 1: 如果用户尝试将器件从休眠模式中唤醒并继续执行主程序代码, 则应禁止全局中断 2: 请参见第 15.4 节 A/D 采集要求 DS B_CN 第 87 页

88 15.3 ADC 寄存器定义 以下寄存器用于控制 ADC 的工作 寄存器 15-1: ADCON: A/D 控制寄存器 0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 ADCS<2:0> CHS<2:0> GO/DONE ADON bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-5 bit 4-2 bit 1 bit 0 ADCS<2:0>:A/D 转换时钟选择位 111 =FRC 110 =FOSC/ =FOSC/ =FOSC/4 011 =FRC 010 =FOSC/ =FOSC/8 000 =FOSC/2 CHS<2:0>: 模拟通道选择位 111 =FVR ( 固定参考电压 ) 缓冲器输出 (2) 110 = 温度指示器 (1) 101 = 保留 未连接通道 100 = 保留 未连接通道 011 = 保留 未连接通道 010 =AN2 001 =AN1 000 =AN0 GO/DONE:A/D 转换状态位如果 ADON = 1: 1 = A/D 转换正在进行 ( 将该位置 1 可启动 A/D 转换 ) 0 = A/D 转换未进行 ( 当 A/D 转换完成时, 该位由硬件自动清零 ) 如果该位在转换正在进行时清零, 则转换将停止, 此时的转换结果将传送到结果寄存器, 但是 ADIF 中断标志位不会置 1 如果 ADON = 0: 0 = A/D 转换未进行 ADON: ADC 使能位 1 = 使能 ADC 0 = 禁止 ADC 且不消耗工作电流 注 1: 更多信息, 请参见第 14.0 节 温度指示器模块 2: 更多信息, 请参见第 12.0 节 固定参考电压 (FVR) DS B_CN 第 88 页

89 寄存器 15-2: ADRES:ADC 结果寄存器 R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u ADRES<7:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-0 ADRES<7:0>:ADC 结果寄存器位 8 位结果 DS B_CN 第 89 页

90 15.4 A/D 采集要求 为了使 ADC 达到规定精度, 必须使充电保持电容 (CHOLD) 完全充电至输入通道的电平 模拟输入模型如图 15-3 所示 信号源阻抗 (RS) 和内部采样开关 (RSS) 阻抗直接影响电容 CHOLD 的充电时间 采样开关 (RSS) 阻抗随着器件电压 (VDD) 的不同而不同, 请参见图 15-3 模拟信号源的最大阻抗推荐值为 10 k 采集时间随着信号源阻抗的减少而缩短 选择 ( 或更改 ) 模拟输入通道后, 必须在转换开始之前完成 A/D 采集 采用公式 15-1 计算最小采集时间 该公式假定误差为 1/2 LSb(ADC 转换需要 511 步 ) 1/2 LSb 的误差是 ADC 达到规定分辨率所允许的最大误差 公式 15-1: 假设 : 采集时间示例 Temper 温度 at = ur 50 C, e = 外部阻抗为 50 C and 10 external k,vdd impedance 为 5.0V of 10k 5.0V VDD TACQ = 放大器稳定时间 + 保持电容充电时间 + 温度系数 = TAMP + TC + TCOFF = 2 µs + T C + [ ( 温度 - 25 C)(0.05 µs/ C) ] 采用以下公式计算 TC 的近似值 : VAPPLIED = 2 n+ 1 VCHOLD 1 ; [1] 充电到 VCHOLD(1/2 LSb 误差范围 ) VAPPLIED 1 e VAPPLIED 1 e TC RC Tc RC = = VCHOLD VAPPLIED n+ 1 1 ; [2] 响应 VAPPLIED 充电到 VCHOLD ; 结合 [1] 和 [2] 注 : 其中 n = ADC 的位数 求解 TC : 因此 : TACQ = + + ln(1/511) = 10pF pf(1 1k + 7k 7 k k k ) ln( ) 1n( ) TC CHOLD RIC RSS RS = 1.12 µs = 2 µs µs + [(50 C - 25 C)(0.05 µs/ C)] = 4.37 µs 注 1: 参考电压 (VREF) 自行抵消, 因此它对该公式没有影响 2: 每次转换后, 充电保持电容 (CHOLD) 不会放电 3: 模拟信号源的最大推荐阻抗为 10 k 此要求是为了符合引脚泄漏电流规范 DS B_CN 第 90 页

91 图 15-3: 模拟输入模型 Rs 模拟输入引脚 VDD VT 0.6V RIC 1k 采样开关 SS Rss VA CPIN 5 pf VT 0.6V I LEAKAGE (1) CHOLD = 10 pf VSS/VREF- 图注 : CHOLD CPIN I LEAKAGE RIC RSS SS VT = 采样 / 保持电容 = 输入电容 = 各个连接点在引脚上产生的泄漏电流 = 内部走线等效电阻 = 采样开关的电阻 = 采样开关 = 阈值电压 6V 5V VDD 4V 3V 2V RSS 采样开关 (k ) 注 1: 请参见第 24.0 节 电气规范 图 15-4: ADC 传递函数 满量程范围 FFh FEh FDh FCh ADC 输出代码 FBh 03h 02h 01h 00h 模拟输入电压 0.5 LSB 1.5 LSB VREF- 零量程转换 满量程转换 VREF+ DS B_CN 第 91 页

92 表 15-2: 与 ADC 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 ADCON ADCS<2:0> CHS<2:0> GO/DONE ADON 88 ADRES ADRES<7:0> 89 ANSELA ANSA2 ANSA1 ANSA0 70 FVRCON FVREN FVRRDY TSEN TSRNG ADFVR<1:0> 78 INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 40 PIE1 ADIE NCO1IE CLC1IE TMR2IE 41 PIR1 ADIF NCO1IF CLC1IF TMR2IF 42 TRISA TRISA2 TRISA1 TRISA0 69 图注 : x = 未知 ; u = 不变 ; = 未实现, 读为 0 ; q = 值取决于具体条件 ADC 模块不使用阴影单元 DS B_CN 第 92 页

93 16.0 TIMER0 模块 Timer0 模块是具有以下功能的 8 位定时器 / 计数器 : 8 位定时器 / 计数器寄存器 (TMR0) 8 位预分频器 ( 独立于看门狗定时器 ) 可编程的内部或外部时钟源 可编程的外部时钟边沿选择 溢出时中断图 16-1 是 Timer0 模块的框图 16.1 Timer0 工作原理 Timer0 模块可以用作 8 位定时器或 8 位计数器 当写入 TMR0 时, 在接下来的两个指令周期内 TMR0 都不会递增 1 注 : 考虑到写入 TMR0 后两个指令周期的延时, 可以调整写入 TMR0 寄存器的值 位计数器模式 在 8 位计数器模式下,Timer0 模块将在 T0CKI 引脚信号的每个上升沿或下降沿进行递增计数 通过将 OPTION_REG 寄存器的 T0CS 位设置为 1, 可以选择使用 T0CKI 引脚的 8 位计数器模式 外部输入源的递增沿是上升沿还是下降沿由 OPTION_REG 寄存器中的 T0SE 位确定 位定时器模式 如果不使用预分频器, 则 Timer0 模块在每个指令周期递增 1 通过将 OPTION_REG 寄存器的 T0CS 位清零, 可以选择 8 位定时器模式 图 16-1: TIMER0 预分频器框图 FOSC/4 T0CKI 同步 2 个 TCY 数据总线 8 TMR0 T0SE T0CS 8 位预分频器 PSA 溢出时将标志位 TMR0IF 置 1 8 PS<2:0> DS B_CN 第 93 页

94 软件可编程预分频器 软件可编程预分频器可用于 Timer0 OPTION_REG 寄存器的 PSA 位控制预分频器分配 要将预分频器分配给 Timer0, PSA 位必须清零 Timer0 模块具有 8 种预分频比选择, 范围为 1:2 至 1:256 可通过 OPTION_REG 寄存器中的 PS<2:0> 位选择预分频值 该预分频器不可读写 当分配给 Timer0 模块时, 写入 TMR0 寄存器的所有指令将清零预分频器 TIMER0 中断 当 TMR0 寄存器从 FFh 溢出至 00h 时,Timer0 会产生中断 每次 TMR0 寄存器溢出时, 不管是否允许 Timer0 中断,INTCON 寄存器的 TMR0IF 中断标志位都将置 1 只能用软件将 TMR0IF 位清零 Timer0 中断允许位是 INTCON 寄存器的 TMR0IE 位 注 : 由于在休眠状态下定时器是关闭的, 因此 Timer0 中断无法唤醒处理器 位同步计数器模式 在 8 位计数器模式下, 必须使 T0CKI 引脚信号的递增沿与指令时钟同步 通过在指令时钟的 Q2 和 Q4 周期采样预分频器输出, 可以实现同步 外部时钟源的高电平和低电平周期必须符合第 24.0 节 电气规范 中的时序要求 DS B_CN 第 94 页

95 寄存器 16-1: OPTION_REG: 选项寄存器 R/W-1/u R/W-1/u R/W-1/u R/W-1/u R/W-1/u R/W-1/u R/W-1/u R/W-1/u WPUEN (1) INTEDG T0CS T0SE PSA PS<2:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2-0 WPUEN: 弱上拉使能位 (1) 1 = 禁止弱上拉 0 = 根据各端口锁存值使能弱上拉 INTEDG: 中断边沿选择位 1 = INT 引脚信号的上升沿触发中断 0 = INT 引脚信号的下降沿触发中断 T0CS:TMR0 时钟源选择位 1 = T0CKI 引脚上信号的跳变 0 = 内部指令周期时钟 (FOSC/4) T0SE:TMR0 时钟源边沿选择位 1 = 在 T0CKI 引脚电平发生由高到低的跳变时递增 0 = 在 T0CKI 引脚电平发生由低到高的跳变时递增 PSA: 预分频器分配位 1 = 预分频器无效且对 Timer0 模块无影响 0 = 将预分频器分配给 Timer0 模块 PS<2:0>: 预分频器分频比选择位 位值 TMR0 分频比 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : : 256 注 1: 当 MCLR = 1 时, WPUEN 不会禁止 MCLR 输入的上拉 表 16-1: 与 TIMER0 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 40 OPTION_REG WPUEN INTEDG T0CS T0SE PSA PS<2:0> 95 TMR0 Timer0 模块寄存器 46 TRISA TRISA2 TRISA1 TRISA0 69 图注 : = 未实现单元, 读为 0 ; u = 未变 ; x = 未知 Timer0 模块不使用阴影单元 DS B_CN 第 95 页

96 17.0 TIMER2 模块 Timer2 模块是具有以下功能的 8 位定时器 : 8 位定时器寄存器 (TMR2) 8 位周期寄存器 (PR2) TMR2 与 PR2 匹配时发生中断 可软件编程的预分频器 ( 预分频比为 1:1 1:4 1:16 和 1:64) 可软件编程的后分频器 ( 后分频比为 1:1 至 1:16) 请参见图 17-1 中的 Timer2 框图 17.1 Timer2 工作原理 Timer2 模块的时钟输入是系统指令时钟 (FOSC/4) 时钟输出传送至 Timer2 预分频器, 该预分频器具有 1:1 1:4 和 1:64 预分频比选项 然后, 预分频器的输出用于递增 TMR2 寄存器 不断比较 TMR2 和 PR2 的值以确定它们何时匹配 TMR2 将从 00h 递增直至它与 PR2 中的值匹配 当匹配发生时, 会发生以下两种情况 : TMR2 在下一个递增周期复位为 00h Timer2 后分频器递增 然后,Timer2/PR2 比较器的匹配输出传送至 Timer2 后分频器 后分频器具有 1:1 至 1:16 ( 包括 1:1 和 1:16) 的后分频比选项 Timer2 后分频器的输出用于将 PIR1 寄存器中的 TMR2IF 中断标志位置 1 TMR2 和 PR2 寄存器都是可完全读写的 发生任何复位时, TMR2 寄存器设置为 00h, 而 PR2 寄存器设置为 FFh 通过将 T2CON 寄存器中的 TMR2ON 位设置为 1, 可以使能 Timer2 通过清零 TMR2ON 位, 可以禁止 Timer2 Timer2 预分频器由 T2CON 寄存器中的 T2CKPS 位控制 Timer2 后分频器由 T2CON 寄存器中的 TOUTPS 位控制 发生以下事件时, 预分频计数器和后分频计数器都将清零 : 对 TMR2 进行写操作 对 T2CON 进行写操作 发生任一器件复位 ( 上电复位 MCLR 复位 看门狗定时器复位或欠压复位 ) 注 : 写 T2CON 时 TMR2 不会清零 图 17-1: TIMER2 框图 TMR2 输出 将标志位 TMR2IF 置 1 FOSC/4 预分频器 1:1, 1:4, 1:16, 1:64 TMR2 复位 2 T2CKPS<1:0> 比较器 PR2 相等 后分频器 1:1 至 1:16 4 TOUTPS<3:0> DS B_CN 第 96 页

97 寄存器 17-1: T2CON:TIMER2 控制寄存器 U-0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 TOUTPS<3:0> TMR2ON T2CKPS<1:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 未实现 : 读为 0 bit 6-3 bit 2 bit 1-0 TOUTPS<3:0>:Timer2 输出后分频比选择位 1111 = 1:16 后分频比 1110 = 1:15 后分频比 1101 = 1:14 后分频比 1100 = 1:13 后分频比 1011 = 1:12 后分频比 1010 = 1:11 后分频比 1001 = 1:10 后分频比 1000 = 1:9 后分频比 0111 = 1:8 后分频比 0110 = 1:7 后分频比 0101 = 1:6 后分频比 0100 = 1:5 后分频比 0011 = 1:4 后分频比 0010 = 1:3 后分频比 0001 = 1:2 后分频比 0000 = 1:1 后分频比 TMR2ON:Timer2 使能位 1 = 使能 Timer2 0 = 禁止 Timer2 T2CKPS<1:0>:Timer2 时钟预分频值选择位 11 = 预分频值为 = 预分频值为 = 预分频值为 4 00 = 预分频值为 1 表 17-1: 与 TIMER2 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 40 PIE1 ADIE NCO1IE CLC1IE TMR2IE 41 PIR1 ADIF NCO1IF CLC1IF TMR2IF 42 PR2 Timer2 模块周期寄存器 96 TMR2 Timer2 模块寄存器 96 T2CON TOUTPS<3:0> TMR2ON T2CKPS<1:0> 97 图注 : x = 未知, u = 不变, - = 未实现单元, 读为 0 Timer2 模块不使用阴影单元 DS B_CN 第 97 页

98 18.0 脉宽调制 (PWM) 模块 PWM 模块产生脉宽调制信号, 该信号由通过以下寄存器配置的占空比 周期和分辨率确定 : PR2 T2CON PWMxDCH PWMxDCL PWMxCON 图 18-1 给出了 PWM 操作的简化框图 图 18-2 给出了 PWM 信号的典型波形 图 18-1: PWM 简化框图 占空比寄存器 PWMxDCL<7:6> PWMxDCH PWMxOUT 至其他外设 : CLC 和 CWG 已锁存 ( 对用户不可见 ) 使能输出 (PWMxOE) 比较器 R Q 0 TRIS 控制 PWMx S Q 1 TMR2 模块 TMR2 (1) 输出极性 (PWMxPOL) 比较器 PR2 清零定时器 PWMx 引脚并锁存占空比 注 1: 8 位定时器与通过 Timer2 预分频器调整的 1/FOSC 的低 2 位一起构成 10 位时基 关于如何设置该模块进行 PWM 操作的详细步骤, 请参见第 节 使用 PWMx 引脚设置 PWM 工作模式 图 18-2: PWM 输出 周期 脉冲宽度 TMR2 = 0 TMR2 = PR2 TMR2 = PWMxDCH<7:0>:PWMxDCL<7:6> DS B_CN 第 98 页

99 18.1 PWMx 引脚配置 所有 PWM 输出均与端口数据锁存器复用 用户必须通过清零相关的 TRIS 位将引脚配置为输出 注 : 基本工作原理 PWM 模块产生 10 位分辨率的输出 Timer2 和 PR2 设置 PWM 的周期 PWMxDCL 和 PWMxDCH 寄存器配置占空比 周期对所有 PWM 模块都是通用的, 而占空比是独立控制的 注 : 当清零 TMR2 时, 所有与 Timer2 相关的 PWM 输出均置 1 当 TMR2 等于相应的 PWMxDCH ( 高 8 位 ) 寄存器和 PWMxDCL<7:6> ( 低 2 位 ) 寄存器中指定的值时, 清零所有 PWMx 当值大于或等于 PR2 时, 永不清零 PWM 输出 (100% 占空比 ) 注 : PWM 输出极性 通过将 PWMxCON 寄存器的 PWMxPOL 位置 1 来翻转输出极性 PWM 周期 PWM 周期由 Timer2 的 PR2 寄存器指定 采用公式 18-1 计算 PWM 周期 公式 18-1: 清零 PWMxOE 位将放弃对 PWMx 引脚的控制 Timer2 后分频器不用于确定 PWM 频率 使用该后分频器时, 其伺服更新速率不同于 PWM 输出频率 PWMxDCH 和 PWMxDCL 寄存器均为双缓冲 当 Timer2 与 PR2 匹配时, 将更新这两个缓冲区 在定时器匹配发生前应小心更新这两个寄存器 PWM 周期 当 TMR2 等于 PR2 时, 在下一个递增计数周期中将发生以下三个事件 : 清零 TMR2 PWM 输出有效 ( 例外情况 : 当 PWM 占空比为 0% 时, PWM 输出将保持无效状态 ) PWMxDCH 和 PWMxDCL 寄存器值锁存到缓冲器中 注 : PWM 占空比通过将 10 位值写入 PWMxDCH 和 PWMxDCL 寄存器对指定 PWM 占空比 PWMxDCH 寄存器包含高 8 位, 而 PWMxDCL<7:6> 包含低 2 位 可以在任何时候写入 PWMxDCH 和 PWMxDCL 寄存器 公式 18-2 用于计算 PWM 脉冲宽度 公式 18-3 用于计算 PWM 占空比 公式 18-2: 公式 18-3: Timer2 后分频器对 PWM 操作无任何影响 脉冲宽度 = 注 : TOSC = 1/FOSC 脉冲宽度 PWMxDCH:PWMxDCL<7:6> TOSC (TMR2 预分频值 ) 占空比 PWMxDCH:PWMxDCL<7:6> 占空比 = PR 位定时器 TMR2 寄存器与通过 Timer2 预分频器调整的 1/FOSC 的低 2 位一起构成 10 位时基 如果将 Timer2 预分频比设置为 1:1, 则使用系统时钟 PWM 周期 = PR TOSC (TMR2 预分频值 ) 注 : TOSC = 1/FOSC DS B_CN 第 99 页

100 PWM 分辨率 分辨率决定在给定周期内的可用占空比数 例如,10 位分辨率将产生 1024 个离散的占空比, 而 8 位分辨率将产生 256 个离散的占空比 PR2 为 255 时, PWM 的最高分辨率为 10 位 分辨率是 PR2 寄存器值的函数, 如公式 18-4 所示 公式 18-4: Restion 分辨率 = PWM 分辨率 log 4PR2 + 1 log 2 bits 位 注 : 如果脉宽值大于周期值, 则指定的 PWM 引脚电平将保持不变 表 18-1: PWM 频率与分辨率示例 (FOSC = 20 MHz) PWM 频率 0.31 khz 4.88 khz khz khz khz khz 定时器预分频值 (1 4 或 64) PR2 值 0xFF 0xFF 0xFF 0x3F 0x1F 0x17 最高分辨率 ( 位 ) 表 18-2: 休眠模式下的工作原理 在休眠模式下,TMR2 寄存器将不会递增, 并且模块的状态将保持不变 如果 PWMx 引脚有输出, 它将继续保持该输出值不变 当器件被唤醒时,TMR2 将从先前的状态继续工作 系统时钟频率的改变 PWM 频率是由系统时钟频率 (FOSC) 产生的 系统时钟频率发生任何变化都会使 PWM 频率发生变化 更多信息, 请参见第 4.0 节 振荡器模块 复位的影响 PWM 频率与分辨率示例 (FOSC = 8 MHz) PWM 频率 0.31 khz 4.90 khz khz khz khz khz 定时器预分频值 (1 4 或 64) PR2 值 0x65 0x65 0x65 0x19 0x0C 0x09 最高分辨率 ( 位 ) 任何复位都会将所有端口强制为输入模式, 并强制 PWM 寄存器进入复位状态 DS B_CN 第 100 页

101 使用 PWMx 引脚设置 PWM 工作模式 当使用 PWMx 引脚配置该模块使之工作于 PWM 模式时, 应遵循以下步骤 : 1. 通过将相应的 TRIS 位置 1 禁止 PWMx 引脚输出驱动器 2. 清零 PWMxCON 寄存器 3. 将 PWM 周期值装入 PR2 寄存器 4. 清零 PWMxDCH 寄存器和 PWMxDCL 寄存器的 bit<7:6> 5. 配置并启动 Timer2: 清零 PIR1 寄存器的 TMR2IF 中断标志位 请参见下面的 注 使用 Timer2 预分频值配置 T2CON 寄存器的 T2CKPS 位 通过将 T2CON 寄存器的 TMR2ON 位置 1 来使能 Timer2 6. 使能 PWM 输出引脚并等待直到 Timer2 溢出, 此时 PIR1 寄存器的 TMR2IF 位置 1 请参见下面的 注 7. 通过将相应的 TRIS 位清零并将 PWMxCON 寄存器的 PWMxOE 位置 1, 可以使能 PWMx 引脚输出驱动器 8. 通过将合适的值装入 PWMxCON 寄存器来配置 PWM 模块 注 1: 为了在第一个 PWM 输出中发送完整的占空比和周期, 必须按照给定顺序执行上述步骤 如果以完整的 PWM 信号开始不是很重要, 那么可以用步骤 8 替换步骤 4 2: 为了仅使用其他外设进行工作, 请禁止 PWMx 引脚输出 DS B_CN 第 101 页

102 18.2 PWM 寄存器定义 寄存器 18-1: PWMxCON:PWM 控制寄存器 R/W-0/0 R/W-0/0 R-0/0 R/W-0/0 U-0 U-0 U-0 U-0 PWMxEN PWMxOE PWMxOUT PWMxPOL bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 bit 6 bit 5 bit 4 PWMxEN:PWM 模块使能位 1 = 使能 PWM 模块 0 = 禁止 PWM 模块 PWMxOE:PWM 模块输出使能位 1 = 使能 PWMx 引脚输出 0 = 禁止 PWMx 引脚输出 PWMxOUT:PWM 模块输出值位 PWMxPOL:PWMx 输出极性选择位 1 = PWM 输出为低电平有效 0 = PWM 输出为高电平有效 bit 3-0 未实现 : 读为 0 DS B_CN 第 102 页

103 寄存器 18-2: PWMxDCH:PWM 占空比高位 R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u PWMxDCH<7:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-0 PWMxDCH<7:0>:PWM 占空比高位这些位是 PWM 占空比的高位 低 2 位在 PWMxDCL 寄存器中 寄存器 18-3: PWMxDCL:PWM 占空比低位 R/W-x/u R/W-x/u U-0 U-0 U-0 U-0 U-0 U-0 PWMxDCL<7:6> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-6 PWMxDCL<7:6>:PWM 占空比低位这些位是 PWM 占空比的低位 高位在 PWMxDCH 寄存器中 bit 5-0 未实现 : 读为 0 表 18-3: 与 PWM 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 ANSELA ANSA2 ANSA1 ANSA0 70 LATA LATA2 LATA1 LATA0 70 PORTA RA3 RA2 RA1 RA0 69 PR2 Timer2 模块周期寄存器 96 PWM1CON PWM1EN PWM1OE PWM1OUT PWM1POL 102 PWM1DCH PWM1DCH<7:0> 103 PWM1DCL PWM1DCL<7:6> 103 PWM2CON PWM2EN PWM2OE PWM2OUT PWM2POL 102 PWM2DCH PWM2DCH<7:0> 103 PWM2DCL PWM2DCL<7:6> 103 T2CON TOUTPS<3:0> TMR2ON T2CKPS<1:0> 97 TMR2 Timer2 模块寄存器 96 TRISA TRISA2 TRISA1 TRISA0 69 图注 : - = 未实现单元, 读为 0 ; u = 不变, x = 未知 PWM 不使用阴影单元 DS B_CN 第 103 页

104 19.0 可配置逻辑单元 (CLC) 可配置逻辑单元 (CLCx) 提供可在软件执行速度限制之外工作的可编程逻辑 此逻辑单元可选择八个输入信号的任意组合, 并通过使用可配置的门将可选输入减少至四根逻辑线, 这些逻辑线可驱动八个可选单输出逻辑功能中的一个 输入源为以下信号的组合 : 两个 I/O 引脚 内部时钟 外设 寄存器位可将输出内部连接到外设和一个输出引脚 请参见图 19-1 了解显示通过 CLCx 的信号流的简化框图 可行的配置包括 : 组合逻辑 - AND - NAND - AND-OR - AND-OR-INVERT - OR-XOR - OR-XNOR 锁存器 - S-R - 带置 1 和复位功能的时钟控制 D 型锁存器 - 带置 1 和复位功能的透明 D 型锁存器 - 带复位功能的时钟控制 J-K 型锁存器 图 19-1: CLCx 简化框图 CLCxIN[0] D Q LCxOUT CLCxIN[1] Q1 LE CLCxIN[2] CLCxIN[3] CLCxIN[4] CLCxIN[5] CLCxIN[6] CLCxIN[7] 输入数据选择门 请参见图 19-2 请参见图 19-3 lcxg1 lcxg2 lcxg3 lcxg4 逻辑功能 LCxEN lcxq LCxMODE<2:0> LCxPOL lcx_out 中断检测 LCxINTP LCxINTN 中断检测 LCxOE TRIS 控制 CLCx 置 1 CLCxIF 标志位 DS B_CN 第 104 页

105 19.1 CLCx 设置 通过配置逻辑信号流中的四个阶段, 可以对 CLCx 模块进行编程 这四个阶段为 : 数据选择 数据门控 逻辑功能选择 输出极性每个阶段都可在运行时通过写入相应的 CLCx 特殊功能寄存器进行设置 这允许在编程期间随时重新配置逻辑, 从而提供了额外的好处 数据选择有八个信号可作为可配置逻辑的输入 4 个 8 输入的多路开关用于选择传递到下一阶段的输入 数据输入可以使用 CLCxSEL0 和 CLCxSEL1 寄存器 ( 分别为寄存器 19-3 和寄存器 19-4) 来选择 如图 19-2 的左侧所示, 通过四个多路开关进行数据选择 图中的数据输入由通用编码的输入名称进行标记 表 19-1 给出了每个 CLC 模块中的通用输入名称与实际信号之间的关联 标为 lcxd1 至 lcxd4 的列表示所选数据输入的 MUX 输出 D1S 至 D4S 是 MUX 选择输入编码的缩写 : 分别为 LCxD1S<2:0> 至 LCxD4S<2:0> 选择了某列中的一个数据输入即排除了该列中的其他输入 注 : 表 19-1: 数据输入 数据选择在上电时未定义 lcxd1 D1S CLCx 数据输入选择 lcxd2 D2S lcxd3 D3S lcxd4 D4S CLC 1 CLCxIN[0] CLCx CLCxIN[1] CLCxIN1 CLCxIN[2] CLCxIN2 CLCxIN[3] PWM1 CLCxIN[4] PWM2 CLCxIN[5] NCOx CLCxIN[6] FOSC CLCxIN[7] LFINTOSC 数据门控输入多路开关的输出通过数据门控阶段与所需的逻辑功能输入相连 每个数据门控都可以控制四个选定输入的任意组合 注 : 数据门控在上电时未定义 门阶段不仅仅是信号方向 可将门配置为将每个输入信号指定为将数据反相或同相 在每个门中, 将连接的信号进行与操作 在传送到逻辑功能阶段之前, 可将每个门的输出反相 门控本质上就是一个 1 至 4 输入的 AND/NAND/OR/NOR 门 当将每个输入和输出反相时, 该门的作用为对所有使能数据输入进行或操作 当将输入和输出同相时, 门的作用是将所有使能输入进行与操作 表 19-2 总结了通过使用门逻辑选择位在门 1 中可获得的基本逻辑 该表给出了四个输入变量的逻辑, 但是可将每个门配置为使用少于四个的变量 如果不选择任何输入, 根据门输出极性位的不同, 输出为 0 或 1 表 19-2: 数据门控逻辑 CLCxGLS0 LCxGyPOL 门逻辑 0x55 1 AND 0x55 0 NAND 0xAA 1 NOR 0xAA 0 OR 0x00 0 逻辑 0 0x00 1 逻辑 1 可以 ( 但不推荐 ) 选择同一个输入的正负值 如果是这样的话, 不管其它输入值如何, 门输出总是为 0, 但是可能引发逻辑故障 ( 瞬态电流引起的脉冲 ) 如果通道的输出必须为 0 或 1, 推荐的方法是将所有门位设置为 0, 并使用门信号极性位设置所需的电平 使用以下逻辑门选择寄存器配置数据门控 : 门 1:CLCxGLS0 ( 寄存器 19-5) 门 2:CLCxGLS1 ( 寄存器 19-6) 门 3:CLCxGLS2 ( 寄存器 19-7) 门 4:CLCxGLS3 ( 寄存器 19-8) 寄存器编号后缀与门编号不同, 这是因为该模块的其他形式在同一寄存器中拥有多种门选择 数据门控如图 19-2 的右侧所示 其中仅详细说明了一个门 剩下的 3 个门配置相同, 只是数据使能信号对应相应的门使能信号 DS B_CN 第 105 页

106 逻辑功能 八个可用的逻辑功能包括 : AND-OR OR-XOR AND S-R 锁存器 带置 1 和复位功能的 D 型触发器 带复位功能的 D 型触发器 带复位功能的 J-K 型触发器 带置 1 和复位功能的透明锁存器逻辑功能如图 19-3 所示 每个逻辑功能都有四个输入和一个输出 四个输入为上一阶段四个数据门的输出 输出传送到反相阶段, 接着到其他外设 输出引脚, 最后返回 CLCx 输出极性 可配置逻辑单元的最后一个阶段是输出极性 通过将 CLCxCON 寄存器的 LCxPOL 位置 1, 可以将逻辑阶段的输出信号反相 允许中断时更改极性会导致中断结果输出转换 CLCx 设置步骤当设置 CLCx 时, 应遵循以下步骤 : 通过清零 LCxEN 位禁止 CLCx 使用 CLCxSEL0 和 CLCxSEL1 寄存器选择所需的输入 ( 见表 19-1) 将所有相关的 ANSEL 位清零 将所有与输入相关的 TRIS 位置 1 将所有与输出相关的 TRIS 位清零 使用 CLCxGLS0 CLCxGLS1 CLCxGLS2 和 CLCxGLS3 寄存器通过四个门来使能选中的输入 使用 CLCxPOL 寄存器的 LCxPOLy 位选择门输出极性 使用 CLCxCON 寄存器的 LCxMODE<2:0> 位选择所需的逻辑功能 使用 CLCxPOL 寄存器的 LCxPOL 位选择所需的逻辑输出极性 ( 该步骤可与先前的门输出极性步骤相结合 ) 如果驱动 CLCx 引脚, 将 CLCxCON 寄存器的 LCxOE 位置 1, 并将与该输出对应的 TRIS 位清零 如果需要中断, 需配置以下位 : - 上升事件时, 将 CLCxCON 寄存器中的 LCxINTP 位置 1 - 下降事件时, 将 CLCxCON 寄存器中的 LCxINTN 位置 1 - 将相关的 PIE 寄存器的 CLCxIE 位置 1 - 将 INTCON 寄存器的 GIE 和 PEIE 位置 1 通过将 CLCxCON 寄存器的 LCxEN 位置 1 来使能 CLCx DS B_CN 第 106 页

107 19.2 CLCx 中断 当相应的中断允许位置 1 时, 在改变 CLCx 输出值时将产生中断 因此, 每个 CLC 都有一个上升沿检测器和下降沿检测器 当触发任意一个边沿检测器且其相应使能位置 1 时, 相关 PIR 寄存器的 CLCxIF 位将置 1 LCxINTP 位允许上升沿中断,LCxINTN 位允许下降沿中断 这两位都位于 CLCxCON 寄存器中 要完全允许中断, 必须将以下各位置 1: CLCxCON 寄存器的 LCxON 位 相关 PIE 寄存器的 CLCxIE 位 CLCxCON 寄存器的 LCxINTP 位 ( 用于上升沿检测 ) CLCxCON 寄存器的 LCxINTN 位 ( 用于下降沿检测 ) INTCON 寄存器的 PEIE 和 GIE 位作为中断服务的一部分, 必须由软件清零相关 PIR 寄存器的 CLCxIF 位 如果在该标志位清零期间检测到另一个边沿, 则在该序列结束时仍将该标志位置 复位的影响 复位将导致 CLCxCON 寄存器清零 所有其他选择和门控值将保持不变 19.4 休眠期间的工作原理 选择 门控以及逻辑功能不受休眠的影响 如果源信号也不受休眠的影响, 则将继续执行操作 DS B_CN 第 107 页

108 图 19-2: 输入数据选择和门控 CLCxIN[0] CLCxIN[1] CLCxIN[2] CLCxIN[3] CLCxIN[4] CLCxIN[5] CLCxIN[6] CLCxIN[7] 数据选择 LCxD1S<2:0> lcxd1t lcxd1n LCxD1G1T LCxD1G1N LCxD2G1T 数据门 1 CLCxIN[0] CLCxIN[1] CLCxIN[2] CLCxIN[3] CLCxIN[4] CLCxIN[5] CLCxIN[6] CLCxIN[7] lcxd2t lcxd2n LCxD2G1N LCxD3G1T LCxD3G1N LCxD4G1T LCxG1POL lcxg1 LCxD2S<2:0> LCxD4G1N CLCxIN[0] CLCxIN[1] CLCxIN[2] CLCxIN[3] CLCxIN[4] CLCxIN[5] CLCxIN[6] CLCxIN[7] LCxD3S<2:0> lcxd3t lcxd3n ( 与数据门 1 相同 ) ( 与数据门 1 相同 ) 数据门 2 数据门 3 lcxg2 lcxg3 CLCxIN[0] CLCxIN[1] CLCxIN[2] CLCxIN[3] CLCxIN[4] CLCxIN[5] CLCxIN[6] CLCxIN[7] lcxd4t lcxd4n ( 与数据门 1 相同 ) 数据门 4 lcxg4 LCxD4S<2:0> 注 : 所有控制在上电时均未定义 DS B_CN 第 108 页

109 图 19-3: 可编程逻辑功能 AND-OR OR-XOR lcxg1 lcxg1 lcxg2 lcxg3 lcxq lcxg2 lcxg3 lcxq lcxg4 lcxg4 LCxMODE<2:0> = 000 LCxMODE<2:0> = 输入 AND S-R 锁存器 lcxg1 lcxg2 lcxg3 lcxg4 lcxq lcxg1 lcxg2 lcxg3 lcxg4 S R Q lcxq LCxMODE<2:0> = 010 LCxMODE<2:0> = 011 带置 1 和复位功能的单输入 D 型触发器 带复位功能的双输入 D 型触发器 lcxg4 lcxg2 D S Q lcxq lcxg4 lcxg2 D Q lcxq lcxg1 lcxg3 R lcxg1 lcxg3 R LCxMODE<2:0> = 100 LCxMODE<2:0> = 101 带复位功能的 J-K 型触发器 带置 1 和复位功能的单输入透明锁存器 lcxg2 J Q lcxq lcxg1 lcxg4 K R lcxg3 LCxMODE<2:0> = 110 lcxg4 lcxg2 D S Q lcxq lcxg1 LE R lcxg3 LCxMODE<2:0> = 111 DS B_CN 第 109 页

110 19.5 CLC 控制寄存器 寄存器 19-1: CLCxCON: 可配置逻辑单元控制寄存器 R/W-0/0 R/W-0/0 R-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 LCxEN LCxOE LCxOUT LCxINTP LCxINTN LCxMODE<2:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2-0 LCxEN: 可配置逻辑单元使能位 1 = 使能可配置逻辑单元并混合输入信号 0 = 禁止可配置逻辑单元, 输出逻辑零 LCxOE: 可配置逻辑单元输出使能位 1 = 使能可配置逻辑单元端口引脚输出 0 = 禁止可配置逻辑单元端口引脚输出 LCxOUT: 可配置逻辑单元数据输出位只读 : 经 LCxPOL 后逻辑单元输出数据 ; 从 lcx_out 线采样数据 LCxINTP: 可配置逻辑单元上升沿中断允许位 1 = 当 lcx_out 出现上升沿时, CLCxIF 将置 1 0 = CLCxIF 不会置 1 LCxINTN: 可配置逻辑单元下降沿中断允许位 1 = 当 lcx_out 出现下降沿时, CLCxIF 将置 1 0 = CLCxIF 不会置 1 LCxMODE<2:0>: 可配置逻辑单元功能模式位 111 = 单元为带置 1 和复位功能的单输入透明锁存器 110 = 单元为带复位功能的 J-K 型触发器 101 = 单元为带复位功能的双输入 D 型触发器 100 = 单元为带置 1 和复位功能的单输入 D 型触发器 011 = 单元为 S-R 锁存器 010 = 单元为 4 输入 AND 门 001 = 单元为 OR-XOR 门 000 = 单元为 AND-OR 门 DS B_CN 第 110 页

111 寄存器 19-2: CLCxPOL: 信号极性控制寄存器 R/W-x/u U-0 U-0 U-0 R/W-x/u R/W-x/u R/W-x/u R/W-x/u LCxPOL LCxG4POL LCxG3POL LCxG2POL LCxG1POL bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 LCxPOL:LCOUT 极性控制位 1 = 逻辑单元的输出反相 0 = 逻辑单元的输出同相 bit 6-4 未实现 : 读为 0 bit 3 bit 2 bit 1 bit 0 LCxG4POL: 门 4 输出极性控制位 1 = 当应用于逻辑单元时, 门 4 的输出反相 0 = 门 4 的输出同相 LCxG3POL: 门 3 输出极性控制位 1 = 当应用于逻辑单元时, 门 3 的输出反相 0 = 门 3 的输出同相 LCxG2POL: 门 2 输出极性控制位 1 = 当应用于逻辑单元时, 门 2 的输出反相 0 = 门 2 的输出同相 LCxG1POL: 门 1 输出极性控制位 1 = 当应用于逻辑单元时, 门 1 的输出反相 0 = 门 1 的输出同相 DS B_CN 第 111 页

112 寄存器 19-3: CLCxSEL0: 多路开关数据 1 和 2 选择寄存器 U-0 R/W-x/u R/W-x/u R/W-x/u U-0 R/W-x/u R/W-x/u R/W-x/u LCxD2S<2:0> (1) LCxD1S<2:0> (1) bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 未实现 : 读为 0 bit 6-4 LCxD2S<2:0>: 输入数据 2 选择控制位 (1) 111 = 为 lcxd2 选择 CLCxIN[7] 110 = 为 lcxd2 选择 CLCxIN[6] 101 = 为 lcxd2 选择 CLCxIN[5] 100 = 为 lcxd2 选择 CLCxIN[4] 011 = 为 lcxd2 选择 CLCxIN[3] 010 = 为 lcxd2 选择 CLCxIN[2] 001 = 为 lcxd2 选择 CLCxIN[1] 000 = 为 lcxd2 选择 CLCxIN[0] bit 3 未实现 : 读为 0 bit 2-0 (1) LCxD1S<2:0>: 输入数据 1 选择控制位 111 = 为 lcxd1 选择 CLCxIN[7] 110 = 为 lcxd1 选择 CLCxIN[6] 101 = 为 lcxd1 选择 CLCxIN[5] 100 = 为 lcxd1 选择 CLCxIN[4] 011 = 为 lcxd1 选择 CLCxIN[3] 010 = 为 lcxd1 选择 CLCxIN[2] 001 = 为 lcxd1 选择 CLCxIN[1] 000 = 为 lcxd1 选择 CLCxIN[0] 注 1: 关于与输入相关的信号名称, 请参见表 19-1 DS B_CN 第 112 页

113 寄存器 19-4: CLCxSEL1: 多路开关数据 3 和 4 选择寄存器 U-0 R/W-x/u R/W-x/u R/W-x/u U-0 R/W-x/u R/W-x/u R/W-x/u LCxD4S<2:0> (1) LCxD3S<2:0> (1) bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 未实现 : 读为 0 bit 6-4 LCxD4S<2:0>: 输入数据 4 选择控制位 (1) 111 = 为 lcxd4 选择 CLCxIN[7] 110 = 为 lcxd4 选择 CLCxIN[6] 101 = 为 lcxd4 选择 CLCxIN[5] 100 = 为 lcxd4 选择 CLCxIN[4] 011 = 为 lcxd4 选择 CLCxIN[3] 010 = 为 lcxd4 选择 CLCxIN[2] 001 = 为 lcxd4 选择 CLCxIN[1] 000 = 为 lcxd4 选择 CLCxIN[0] bit 3 未实现 : 读为 0 bit 2-0 (1) LCxD3S<2:0>: 输入数据 3 选择控制位 111 = 为 lcxd3 选择 CLCxIN[7] 110 = 为 lcxd3 选择 CLCxIN[6] 101 = 为 lcxd3 选择 CLCxIN[5] 100 = 为 lcxd3 选择 CLCxIN[4] 011 = 为 lcxd3 选择 CLCxIN[3] 010 = 为 lcxd3 选择 CLCxIN[2] 001 = 为 lcxd3 选择 CLCxIN[1] 000 = 为 lcxd3 选择 CLCxIN[0] 注 1: 关于与输入相关的信号名称, 请参见表 19-1 DS B_CN 第 113 页

114 寄存器 19-5: CLCxGLS0: 门 1 逻辑选择寄存器 R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u LCxG1D4T LCxG1D4N LCxG1D3T LCxG1D3N LCxG1D2T LCxG1D2N LCxG1D1T LCxG1D1N bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 LCxG1D4T: 门 1 数据 4 ( 同相 ) 位 1 = 将 lcxd4t 通过门输入到 lcxg1 0 = lcxd4t 未通过门输入到 lcxg1 LCxG1D4N: 门 1 数据 4 取反 ( 反相 ) 位 1 = 将 lcxd4n 通过门输入到 lcxg1 0 = lcxd4n 未通过门输入到 lcxg1 LCxG1D3T: 门 1 数据 3 ( 同相 ) 位 1 = 将 lcxd3t 通过门输入到 lcxg1 0 = lcxd3t 未通过门输入到 lcxg1 LCxG1D3N: 门 1 数据 3 取反 ( 反相 ) 位 1 = 将 lcxd3n 通过门输入到 lcxg1 0 = lcxd3n 未过门输入到 lcxg1 LCxG1D2T: 门 1 数据 2 ( 同相 ) 位 1 = 将 lcxd2t 通过门输入到 lcxg1 0 = lcxd2t 未通过门输入到 lcxg1 LCxG1D2N: 门 1 数据 2 取反 ( 反相 ) 位 1 = 将 lcxd2n 通过门输入到 lcxg1 0 = lcxd2n 未通过门输入到 lcxg1 LCxG1D1T: 门 1 数据 1 ( 同相 ) 位 1 = 将 lcxd1t 通过门输入到 lcxg1 0 = lcxd1t 未通过门输入到 lcxg1 LCxG1D1N: 门 1 数据 1 取反 ( 反相 ) 位 1 = 将 lcxd1n 通过门输入到 lcxg1 0 = lcxd1n 未通过门输入到 lcxg1 DS B_CN 第 114 页

115 寄存器 19-6: CLCxGLS1: 门 2 逻辑选择寄存器 R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u LCxG2D4T LCxG2D4N LCxG2D3T LCxG2D3N LCxG2D2T LCxG2D2N LCxG2D1T LCxG2D1N bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 LCxG2D4T: 门 2 数据 4 ( 同相 ) 位 1 = 将 lcxd4t 通过门输入到 lcxg2 0 = lcxd4t 未通过门输入到 lcxg2 LCxG2D4N: 门 2 数据 4 取反 ( 反相 ) 位 1 = 将 lcxd4n 通过门输入到 lcxg2 0 = lcxd4n 未通过门输入到 lcxg2 LCxG2D3T: 门 2 数据 3 ( 同相 ) 位 1 = 将 lcxd3t 通过门输入到 lcxg2 0 = lcxd3t 未通过门输入到 lcxg2 LCxG2D3N: 门 2 数据 3 取反 ( 反相 ) 位 1 = 将 lcxd3n 通过门输入到 lcxg2 0 = lcxd3n 未通过门输入到 lcxg2 LCxG2D2T: 门 2 数据 2 ( 同相 ) 位 1 = 将 lcxd2t 通过门输入到 lcxg2 0 = lcxd2t 未通过门输入到 lcxg2 LCxG2D2N: 门 2 数据 2 取反 ( 反相 ) 位 1 = 将 lcxd2n 通过门输入到 lcxg2 0 = lcxd2n 未通过门输入到 lcxg2 LCxG2D1T: 门 2 数据 1 ( 同相 ) 位 1 = 将 lcxd1t 通过门输入到 lcxg2 0 = lcxd1t 未通过门输入到 lcxg2 LCxG2D1N: 门 2 数据 1 取反 ( 反相 ) 位 1 = 将 lcxd1n 通过门输入到 lcxg2 0 = lcxd1n 未通过门输入到 lcxg2 DS B_CN 第 115 页

116 寄存器 19-7: CLCxGLS2: 门 3 逻辑选择寄存器 R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u LCxG3D4T LCxG3D4N LCxG3D3T LCxG3D3N LCxG3D2T LCxG3D2N LCxG3D1T LCxG3D1N bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 LCxG3D4T: 门 3 数据 4 ( 同相 ) 位 1 = 将 lcxd4t 通过门输入到 lcxg3 0 = lcxd4t 未通过门输入到 lcxg3 LCxG3D4N: 门 3 数据 4 取反 ( 反相 ) 位 1 = 将 lcxd4n 通过门输入到 lcxg3 0 = lcxd4n 未通过门输入到 lcxg3 LCxG3D3T: 门 3 数据 3 ( 同相 ) 位 1 = 将 lcxd3t 通过门输入到 lcxg3 0 = lcxd3t 未通过门输入到 lcxg3 LCxG3D3N: 门 3 数据 3 取反 ( 反相 ) 位 1 = 将 lcxd3n 通过门输入到 lcxg3 0 = lcxd3n 未通过门输入到 lcxg3 LCxG3D2T: 门 3 数据 2 ( 同相 ) 位 1 = 将 lcxd2t 通过门输入到 lcxg3 0 = lcxd2t 未通过门输入到 lcxg3 LCxG3D2N: 门 3 数据 2 取反 ( 反相 ) 位 1 = 将 lcxd2n 通过门输入到 lcxg3 0 = lcxd2n 未通过门输入到 lcxg3 LCxG3D1T: 门 3 数据 1 ( 同相 ) 位 1 = 将 lcxd1t 通过门输入到 lcxg3 0 = lcxd1t 未通过门输入到 lcxg3 LCxG3D1N: 门 3 数据 1 取反 ( 反相 ) 位 1 = 将 lcxd1n 通过门输入到 lcxg3 0 = lcxd1n 未通过门输入到 lcxg3 DS B_CN 第 116 页

117 寄存器 19-8: CLCxGLS3: 门 4 逻辑选择寄存器 R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u LCxG4D4T LCxG4D4N LCxG4D3T LCxG4D3N LCxG4D2T LCxG4D2N LCxG4D1T LCxG4D1N bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 LCxG4D4T: 门 4 数据 4 ( 同相 ) 位 1 = 将 lcxd4t 通过门输入到 lcxg4 0 = lcxd4t 未通过门输入到 lcxg4 LCxG4D4N: 门 4 数据 4 取反 ( 反相 ) 位 1 = 将 lcxd4n 通过门输入到 lcxg4 0 = lcxd4n 未通过门输入到 lcxg4 LCxG4D3T: 门 4 数据 3 ( 同相 ) 位 1 = 将 lcxd3t 通过门输入到 lcxg4 0 = lcxd3t 未通过门输入到 lcxg4 LCxG4D3N: 门 4 数据 3 取反 ( 反相 ) 位 1 = 将 lcxd3n 通过门输入到 lcxg4 0 = lcxd3n 未通过门输入到 lcxg4 LCxG4D2T: 门 4 数据 2 ( 同相 ) 位 1 = 将 lcxd2t 通过门输入到 lcxg4 0 = lcxd2t 未通过门输入到 lcxg4 LCxG4D2N: 门 4 数据 2 取反 ( 反相 ) 位 1 = 将 lcxd2n 通过门输入到 lcxg4 0 = lcxd2n 未通过门输入到 lcxg4 LCxG4D1T: 门 4 数据 1 ( 同相 ) 位 1 = 将 lcxd1t 通过门输入到 lcxg4 0 = lcxd1t 未通过门输入到 lcxg4 LCxG4D1N: 门 4 数据 1 取反 ( 反相 ) 位 1 = 将 lcxd1n 通过门输入到 lcxg4 0 = lcxd1n 未通过门输入到 lcxg4 DS B_CN 第 117 页

118 表 19-3: 与 CLCx 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 BIt 3 Bit 2 Bit 1 Bit 0 寄存器所在页 CLC1CON LC1EN LC1OE LC1OUT LC1INTP LC1INTN LC1MODE<2:0> 110 CLC1GLS0 LC1G1D4T LC1G1D4N LC1G1D3T LC1G1D3N LC1G1D2T LC1G1D2N LC1G1D1T LC1G1D1N 114 CLC1GLS1 LC1G2D4T LC1G2D4N LC1G2D3T LC1G2D3N LC1G2D2T LC1G2D2N LC1G2D1T LC1G2D1N 115 CLC1GLS2 LC1G3D4T LC1G3D4N LC1G3D3T LC1G3D3N LC1G3D2T LC1G3D2N LC1G3D1T LC1G3D1N 116 CLC1GLS3 LC1G4D4T LC1G4D4N LC1G4D3T LC1G4D3N LC1G4D2T LC1G4D2N LC1G4D1T LC1G4D1N 117 CLC1POL LC1POL LC1G4POL LC1G3POL LC1G2POL LC1G1POL 111 CLC1SEL0 LC1D2S<2:0> LC1D1S<2:0> 112 CLC1SEL1 LC1D4S<2:0> LC1D3S<2:0> 113 INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 40 PIE1 ADIE NCO1IE CLC1IE TMR2IE 41 PIR1 ADIF NCO1IF CLC1IF TMR2IF 42 TRISA TRISA2 TRISA1 TRISA0 69 图注 : = 未实现位, 读为 0 CLC 模块不使用阴影单元 DS B_CN 第 118 页

119 20.0 数控振荡器 (NCO) 模块 数控振荡器 (NCOx) 模块是一个定时器, 该定时器使用由于增加递增值而引起的上溢来对输入频率进行分频 加法运算优于简单计数器驱动的定时器的优势是 : 分频分辨率不会随着分频器值的变化而变化 NCOx 对于要求在固定占空比条件下确保频率精度和精细分辨率的应用最为有用 NCOx 的特性包括 : 16 位递增功能 固定占空比 (FDC) 模式 脉冲频率 (PF) 模式 输出脉宽控制 多种时钟输入源 输出极性控制 中断功能图 20-1 给出了 NCOx 模块的简化框图 DS B_CN 第 119 页

120 DS B_CN 第 120 页 图 20-1: HFINTOSC FOSC LCx LCx_out 输出 NCO1CLK NxCKS<1:0> 数控振荡器 (NCOx) 模块简化框图 NCOx NCOx_clk 时钟 NCOxINCH NCOxINCL 16 (1) INCBUFH INCBUFL 16 NCO_overflow 上溢 累加器 Adder NCOxACCU NCOxACCH NCOxACCL 20 NCO_interrupt 中断 Fixed Duty 固定占空比 Cycle Mode 模式电路 Circuitry NxOE D Q D Q 0 TRIS bit位 EN Ripple 纹波 Counter 计数器 R 3 NxPWS<2:0> S R _ Q Q _ Q 脉冲频率 Pulse Frequency 模式电路 Mode Circuitry 1 NxPFM NxPOL Q1 D Q NCOx NCOx_out 输出 NCOxIF set bit NCOxIF 置 1 Note 1: The increment registers are double-buffered to allow for value changes to be made without first disabling the NCO module. The full increment value is loaded into the buffer registers on the 注 1 : second 递增寄存器进行了双重缓冲 rising edge of the NCOx_clk, 以允许在没有先禁止 signal that occurs immediately NCO 模块的情况下更改值 在紧跟写入 after a write to NCOxINCL register. NCOxINCL The buffers are 寄存器之后出现的 not user-accessible NCOx and are 时钟信号的第二个上升沿 shown here for reference., 将完整的递增值装入缓冲寄存器 用户不能访问缓冲器, 在此仅供参考 NCOx To 至外设 Peripherals NxOUT Rev A 7/30/2013 PIC10(L)F320/322

121 20.1 NCOx 工作原理 NCOx 通过重复向累加器增加一个固定的值来工作 达到输入时钟频率时会进行加法运算 累加器会定期进行进位上溢, 该进位为原始 NCOx 的输出 这可通过增加值与最大累加器值的比率来有效地降低输入时钟 请参见公式 20-1 NCOx 输出可以通过延长脉冲或翻转触发器进一步修改 修改后的 NCOx 输出随后会内部分配到其他外设, 也可选择地输出到引脚 累加器上溢也会产生中断 NCOx 输出会产生瞬时频率, 从而导致偏差 此输出依靠接收电路 ( 即, CWG 或外部谐振转换器电路 ) 平均瞬时频率的能力来降低偏差 NCOx 时钟源可用于 NCOx 的时钟源包括 : HFINTOSC FOSC LC1OUT NCO1CLK 引脚通过配置 NCOxCLK 寄存器中的 NxCKS<1:0> 位, 可以选择 NCOx 时钟源 加法器 NCOx 加法器是一个全加器, 与所选时钟源异步工作 先前结果与递增值的加法运算结果将在每个输入时钟上升沿替换累加器值 递增寄存器递增值存储在两个 8 位寄存器中, 以构成一个 16 位递增值 寄存器按从低字节到高字节的顺序排列如下 : NCOxINCL NCOxINCH 这两个寄存器都是可读写的 递增寄存器进行了双重缓冲, 允许在没有先禁止 NCOx 模块的情况下更改值 禁止模块后, 会立即装入缓冲器 先写入 MS 寄存器是非常必要的, 因为在对低位递增寄存器执行写操作后, 缓冲器的装入与 NCOx 工作同步 注 : 用户不能访问递增缓冲寄存器 累加器 累加器是个 20 位寄存器 累加器的读写访问通过三个寄存器进行 : NCOxACCL NCOxACCH NCOxACCU 公式 20-1: FOVERFLOW NCOequency 时钟频率 = IValue 递增值 2 n n = 累加器宽度 ( 单位为位 ) DS B_CN 第 121 页

122 20.2 固定占空比 (FDC) 模式 在固定占空比 (FDC) 模式下, 每次累加器上溢时, 输出都会翻转 在递增值不变的情况下, 这会提供 50% 的占空比 更多信息, 请参见图 20-2 可以通过清零 NCOxCON 寄存器中的 NxPFM 位来选择 FDC 模式 20.3 脉冲频率 (PF) 模式 在脉冲频率 (PF) 模式下, 每次累加器上溢时, 输出都会在一个或多个时钟周期内有效 更多信息, 请参见第 节 输出脉宽控制 时钟周期结束后, 输出返回到无效状态 这就产生了一个脉冲控制的输出 输出在紧跟上溢事件后的时钟上升沿时变为有效 更多信息, 请参见图 20-2 有效状态和无效状态的值取决于 NCOxCON 寄存器中的极性位 NxPOL 通过将 NCOxCON 寄存器中的 NxPFM 位置 1, 可以选择 PF 模式 输出脉宽控制 在 PF 模式下工作时, 输出有效状态的脉宽会随多个时钟周期而变化 使用 NCOxCLK 寄存器中的 NxPWS<2:0> 位来选择各种脉宽 选定脉宽大于累加器上溢时间帧时, 未定义 NCOx 操作 20.4 输出极性控制 NCOx 模块中的最后一个阶段是输出极性 NCOxCON 寄存器中的 NxPOL 位用于选择输出极性 允许中断时更改极性会导致中断结果输出转换 NCOx 输出可以由源代码或其他外设内部使用 这可以通过读 NCOxCON 寄存器的 NxOUT( 只读 ) 位来完成 DS B_CN 第 122 页

123 DS B_CN 第 123 页 图 20-2: NCOx 时钟源 Clock Source NCOx Increment 递增值 Value NCOx Accumulator 累加器值 Value NCO_overflow 上溢 NCO_interrupt 中断 NCOx NCOx Output 输出 FDC FDC Mode 模式 NCOx Output 输出 PF Mode 模式 NCOxPWS = 000 NCOx Output 输出 PF Mode 模式 NCOxPWS = 001 NCO 固定占空比 (FDC) 和脉冲频率模式 (PFM) 的输出工作原理图 4000h 4000h 4000h 00000h 04000h 08000h FC000h 00000h 04000h 08000h FC000h 00000h 04000h 08000h Rev A 11/7/2013 PIC10(L)F320/322

124 20.5 中断 累加器上溢时, PIR1 寄存器的 NCOx 中断标志位 NCOxIF 置 1 要允许此中断事件, 必须将以下各位置 1 : NCOxCON 寄存器的 NxEN 位 PIE1 寄存器的 NCOxIE 位 INTCON 寄存器的 PEIE 位 INTCON 寄存器的 GIE 位中断必须由软件通过在中断服务程序中清零 NCOxIF 位来清除 20.6 复位的影响 复位后, 所有 NCOx 寄存器都会清零 20.7 休眠期间的工作原理 NCO 模块独立于系统时钟工作, 在所选时钟源仍然有效的情况下, 此模块在休眠期间将继续运行 使能 NCO 模块且选择 HFINTOSC 作为时钟源时, HFINTOSC 在休眠期间仍有效, 与选择的系统时钟源无关 也就是说, 如果 HFINTOSC 同时被选为系统时钟和 NCO 时钟源, 则在使能 NCO 的情况下, CPU 在休眠期间下将处于空闲, 但是 NCO 将继续工作, 且 HFINTOSC 将保持有效 这将对休眠模式下的电流产生直接影响 DS B_CN 第 124 页

125 20.8 NCOx 控制寄存器 寄存器 20-1: NCOxCON:NCOx 控制寄存器 R/W-0/0 R/W-0/0 R-0/0 R/W-0/0 U-0 U-0 U-0 R/W-0/0 NxEN NxOE NxOUT NxPOL NxPFM bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7 NxEN:NCOx 使能位 1 = 使能 NCOx 模块 0 = 禁止 NCOx 模块 bit 6 NxOE:NCOx 输出使能位 1 = 使能 NCOx 输出引脚 0 = 禁止 NCOx 输出引脚 bit 5 NxOUT:NCOx 输出位 1 = NCOx 输出为高电平 0 = NCOx 输出为低电平 bit 4 NxPOL:NCOx 极性位 1 = NCOx 输出信号为低电平有效 ( 反相 ) 0 = NCOx 输出信号为高电平有效 ( 同相 ) bit 3-1 未实现 : 读为 0 bit 0 NxPFM:NCOx 脉冲频率模式位 1 = NCOx 工作在脉冲频率模式下 0 = NCOx 工作在固定占空比模式下 寄存器 20-2: NCOxCLK:NCOx 输入时钟控制寄存器 R/W-0/0 R/W-0/0 R/W-0/0 U-0 U-0 U-0 R/W-0/0 R/W-0/0 NxPWS<2:0> (1, 2) NxCKS<1:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-5 (1, 2) NxPWS<2:0>:NCOx 输出脉宽选择位 111 = 128 个 NCOx 时钟周期 110 = 64 个 NCOx 时钟周期 101 = 32 个 NCOx 时钟周期 100 = 16 个 NCOx 时钟周期 011 = 8 个 NCOx 时钟周期 010 = 4 个 NCOx 时钟周期 001 = 2 个 NCOx 时钟周期 000 = 1 个 NCOx 时钟周期 bit 4-2 未实现 : 读为 0 bit 1-0 NxCKS<1:0>:NCOx 时钟源选择位 11 = LC1OUT 10 = HFINTOSC (16 MHz) 01 = FOSC 00 = NCO1CLK 引脚 注 1: 仅在脉冲频率模式下工作时 NxPWS 才适用 2: 如果 NCOx 脉宽大于 NCOx 上溢周期, 则未定义操作 DS B_CN 第 125 页

126 寄存器 20-3: NCOxACCL:NCOx 累加器寄存器 低字节 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 NCOxACC<7:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-0 NCOxACC<7:0>:NCOx 累加器低字节 注 1: 仅在脉冲频率模式下工作时 NxPWS 才适用 2: 如果 NCOx 脉宽大于 NCOx 上溢周期, 则未定义操作 寄存器 20-4: NCOxACCH:NCOx 累加器寄存器 高字节 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 NCOxACC<15:8> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-0 NCOxACC<15:8>:NCOx 累加器高字节 寄存器 20-5: NCOxACCU:NCOx 累加器寄存器 最高字节 U-0 U-0 U-0 U-0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 NCOxACC<19:16> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-4 未实现 : 读为 0 bit 3-0 NCOxACC<19:16>:NCOx 累加器最高字节 DS B_CN 第 126 页

127 寄存器 20-6: NCOxINCL:NCOx 递增寄存器 低字节 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-1/1 NCOxINC<7:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-0 NCOxINC<7:0>:NCOx 递增寄存器低字节 寄存器 20-7: NCOxINCH:NCOx 递增寄存器 高字节 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 NCOxINC<15:8> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 bit 7-0 NCOxINC<15:8>:NCOx 递增寄存器高字节 DS B_CN 第 127 页

128 表 20-1: 与 NCOx 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 CLC1SEL0 LC1D2S2 LC1D2S1 LC1D2S0 LC1D1S2 LC1D1S1 LC1D1S0 112 CLC1SEL1 LC1D4S2 LC1D4S1 LC1D4S0 LC1D3S2 LC1D3S1 LC1D3S0 113 CWG1CON1 G1ASDLB<1:0> G1ASDLA<1:0> G1IS<1:0> 140 INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 40 NCO1ACCH NCO1ACCH<15:8> 126 NCO1ACCL NCO1ACCL<7:0> 126 NCO1ACCU NCO1ACCU<19: NCO1CLK N1PWS<2:0> N1CKS<1:0> 125 NCO1CON N1EN N1OE N1OUT N1POL N1PFM 125 NCO1INCH NCO1INCH<15:8> 127 NCO1INCL NCO1INCL<7:0> 127 PIE1 ADIE NCO1IE CLC1IE TMR2IE 41 PIR1 ADIF NCO1IF CLC1IF TMR2IF 42 TRISA TRISA2 TRISA1 TRISA0 69 图注 : x = 未知 ; u = 不变 ; = 未实现, 读为 0 ; q = 值取决于具体条件 NCO 模块不使用阴影单元 DS B_CN 第 128 页

129 21.0 互补波形发生器 (CWG) 模块 互补波形发生器 (CWG) 从选择的输入源生成一个带死区延时的互补波形 CWG 模块具有如下特性 : 可选死区时钟源控制 可选输入源 输出使能控制 输出极性控制 使用独立的 6 位上升沿和下降沿死区计数器控制死区 使用以下方法控制自动关断 : - 可选的关断源 - 使能自动重启 - 自动关断引脚改写控制 DS B_CN 第 129 页

130 DS B_CN 第 130 页 图 21-1: GxCS FOSC HFINTOSC GxIS PWM1OUT PWM2OUT N1OUT LC1OUT CWG1FLT (INT 引脚 ) GxASDFLT LC1OUT GxASDCLC1 x = CWG 模块号 2 2 GxASE 数据位写信号 CWG 框图 cwg_clock 输入源 1 自动关断源 GxARSEN S Q R Q 设置控制权 S R Q Q S D Q CWGxDBR 6 EN R CWGxDBF 6 EN R GxASE 关断 = = GxASDLA 0 1 GxPOLA GxPOLB 0 1 GxASDLB GxASDLA = GxASDLB = 01 TRISx TRISx GxOEA CWGxA GxOEB CWGxB PIC10(L)F320/322

131 图 21-2: 使用 PWM1 时的典型 CWG 工作原理 ( 无自动关断 ) cwg_clock PWM1 CWGxA 上升沿死区 下降沿死区 上升沿死区 下降沿死区 上升沿死区 CWGxB DS B_CN 第 131 页

132 21.1 基本工作原理 CWG 通过四个可选输入源之一产生一个两路输出互补波形 每路输出由关到开的转变可能会延时其他输出的由开到关的转变, 因而在没有驱动任何输出时会立即产生延时 这被称为死区, 在第 21.5 节 死区控制 中进行介绍 图 21-2 给出了由单个输入信号产生的带有死区的典型工作波形 可能需要防止可能发生的电路故障或反馈事件到达太晚或根本不到达 这种情况下, 在故障条件导致损坏之前必须终止有效的驱动 这被称为自动关断, 在第 21.9 节 自动关断控制 中进行介绍 21.2 时钟源 CWG 模块可以选择以下时钟源 : Fosc ( 系统时钟 ) HFINTOSC ( 仅 16 MHz) 使用 CWGxCON0 寄存器的 G1CS0 位选择时钟源 ( 寄存器 21-1) 21.3 可选输入源 CWG 使用以下输入源产生互补波形 : PWM1 PWM2 N1OUT LC1OUT 使用 CWGxCON1 寄存器的 GxIS<1:0> 位选择输入源 ( 寄存器 21-2) 极性控制 每个 CWG 输出的极性可单独选择 当输出极性位置 1 时, 相应的输出为高电平有效 清零输出极性位将相应的输出配置为低电平有效 但是, 极性不会影响改写电平 使用 CWGxCON0 寄存器的 GxPOLA 和 GxPOLB 位选择输出极性 21.5 死区控制 死区控制提供无重叠的输出信号以避免在功率开关中出现直通电流 CWG 包含两个 6 位死区计数器 一个死区计数器将用于输入源控制的上升沿 另一个将用于输入源控制的下降沿 通过对 CWG 时钟周期从 0 到上升沿或下降沿死区计数器寄存器中的值进行计数, 可以实现死区计时 请参见 CWGxDBR 和 CWGxDBF 寄存器 ( 分别为寄存器 21-4 和寄存器 21-5) 21.6 上升沿死区 上升沿死区将在禁止 CWGxB 输出时延时使能 CWGxA 输出 当输入源信号出现上升沿时, 上升沿死区计时开始 此时, CWGxB 输出立即禁止且上升沿死区延时计时开始 当到达上升沿死区延时时, 使能 CWGxA 输出 CWGxDBR 寄存器设置输入源信号上升沿的死区时间间隔的持续时间 持续时间为死区的 0 至 64 次计数 死区总是在输入源信号的上升沿停止计数 计数为 0 表示无死区 如果提供输入源信号出现的时间不足以使计数完成, 那么相应的输出上将不会产生输出 21.4 输出控制 使能 CWG 模块之后, 立即配置互补驱动, 并清零 CWGxA 和 CWGxB 驱动 输出使能 每个 CWG 输出引脚都有各自的输出使能控制 使用 CWGxCON0 寄存器的 GxOEA 和 GxOEB 位选择输出使能 当清零输出使能控制时, 该模块对引脚无控制权 当输出使能置 1 时, 每次选择端口极性, 都将对该引脚施加改写值或有效的 PWM 波形 输出引脚使能取决于模块使能位 GxEN 当清零 GxEN 时, CWG 输出使能且 CWG 驱动电平不起作用 DS B_CN 第 132 页

133 21.7 下降沿死区 下降沿死区将在禁止 CWGxA 输出时延时使能 CWGxB 输出 当输入源出现下降沿时, 下降沿死区计时开始 此时, CWGxA 输出立即禁止且下降沿死区延时计时开始 当到达下降沿死区延时时, 使能 CWGxB 输出 CWGxDBF 寄存器设置输入源信号下降沿的死区时间间隔的持续时间 持续时间为死区的 0 至 64 次计数 死区总是在输入源信号的下降沿停止计数 计数为 0 表示无死区 如果提供输入源信号出现的时间不足以使计数完成, 那么相应的输出上将不会产生输出 请参见图 21-3 和图 21-4 的示例 21.8 死区偏差 当输入源的上升沿和下降沿触发死区计数器时, 输入可能是异步的 这将导致死区延时存在一定的偏差 最长偏差时间等于一个 CWG 时钟周期 更多详细信息, 请参见公式 21-1 DS B_CN 第 133 页

134 DS B_CN 第 134 页 图 21-3: 死区工作原理 (CWGxDBR = 01H, CWGxDBF = 02H) cwg_clock 输入源 CWGxA CWGxB 图 21-4: 死区工作原理 (CWGxDBR = 03H, CWGxDBF = 04H, 输入源时间短于死区 ) cwg_clock 输入源 CWGxA 输入源时间短于死区 CWGxB PIC10(L)F320/322

135 公式 21-1: 死区延时偏差 TDEADBAND_UNCERTAINTY = Fcwg_clock 例 21-1: 死区延时偏差 Fcwg_clock = 16 MHz 因此 : TDEADBAND_UNCERTAINTY = = MHz Fcwg_clock = 625ns DS B_CN 第 135 页

136 21.9 自动关断控制 自动关断是一种使用特定改写信号立即改写 CWG 输出电平, 从而安全关断电路的方法 关断状态可以自动清除或者保持到由软件清除为止 关断关断状态可以由以下两种方法之一实现 : 由软件产生 外部输入 由软件产生的关断 通过将 CWGxCON2 寄存器的 GxASE 位置 1, 可以强制 CWG 进入关断状态 当禁止自动重启时, 只要 GxASE 位置 1, 关断状态就一直保持 当使能自动重启时, GxASE 位将自动清零并在下一个上升沿事件时重新恢复工作 请参见图 休眠期间的工作原理 CWG 模块独立于系统时钟工作, 如果选择的时钟和输入源仍有效, 那么此模块在休眠期间将继续运行 如果使能 CWG 模块, 输入源有效并且选择 HFINTOSC 作为时钟源, 那么 HFINTOSC 在休眠期间仍有效, 与选择的系统时钟源无关 换句话说, 如果 HFINTOSC 同时被选为系统时钟和 CWG 时钟源, 则在使能 CWG 且输入源有效时, CPU 在休眠期间将处于空闲, 但是 CWG 将继续运行, 且 HFINTOSC 将继续有效 这将直接影响休眠模式下的电流 外部输入源 当发生故障条件时, 外部关断输入可以最快地安全中止 CWG 工作 当选中的关断输入中的任何一个变为高电平时, CWG 输出将立即变为选择的改写电平, 而没有软件延时 选择两个输入源的任何组合都将产生关断条件 这两个输入源为 : LC1OUT CWG1FLT 通过使用 CWGxCON2 寄存器的 GxASDS0 和 GxASDS1 位, 可以选择关断输入 ( 见寄存器 21-3) 注 : 关断输入对电平敏感, 而对边沿不敏感 只要关断输入电平不变, 就不能清除关断状态, 除非禁止自动关断 DS B_CN 第 136 页

137 21.11 配置 CWG 以下步骤阐述了如何正确配置 CWG 才能确保同步启动 : 1. 确保与 CWGxA 和 CWGxB 对应的 TRIS 控制位 置 1, 以便将它们配置为输入 2. 清零 GxEN 位 ( 如果尚未清零 ) 3. 使用 CWGxDBR 和 CWGxDBF 寄存器设置所需 的死区时间 4. 在 CWGxCON2 自动关断寄存器中设置以下控制 : 选择所需的关断源 将两个输出改写电平选为所需的电平 ( 即使不 使用自动关断时这也是必需的, 因为启动将从 关断状态开始 ) 将 GxASE 位置 1, 将 GxARSEN 位清零 5. 使用 CWGxCON1 寄存器选择所需的输入源 6. 在 CWGxCON0 寄存器中配置如下控制 : 选择所需的时钟源 选择所需的输出极性 对要使用的输出设置输出使能 7. 将 GxEN 位置 1 8. 将与要使用的 CWGxA 和 CWGxB 对应的 TRIS 控制位清零, 以便将这 2 个引脚配置为输出 9. 如果使用自动重启, 将 GxARSEN 位置 1, GxASE 位将自动清零 否则, 清零 GxASE 位启 动 CWG 由软件控制重启当清零 CWGxCON2 寄存器的 GxARSEN 位时, 必须在自动关断事件之后由软件重启 CWG CWG 将在清零 GxASE 位之后的第一个上升沿事件时恢复工作 清除关断状态需要所有选择的关断输入为低电平, 否则 GxASE 位仍保持置 自动重启 当 CWGxCON2 寄存器的 GxARSEN 位置 1 时,CWG 将从自动关断状态自动重启 清除关断事件之后,GxASE 位将自动清零,CWG 将在第一个上升沿事件时恢复工作 引脚改写电平 当关断输入为真时, 驱动输出引脚的电平由 CWGxCON1 寄存器 ( 寄存器 21-2) 的 GxASDLA 和 GxASDLB 位控制 GxASDLA 控制 CWG1A 改写电平, 而 GxASDLB 控制 CWG1B 改写电平 控制位逻辑电平与关断状态下的输出逻辑驱动电平相对应 极性控制不适用于改写电平 自动关断重启发生自动关断事件后, 有两种办法恢复工作 : 由软件控制 自动重启使用 CWGxCON2 寄存器的 GxARSEN 位选择重启方法 由软件控制和自动重启的波形如图 21-5 和图 21-6 所示 DS B_CN 第 137 页

138 DS B_CN 第 138 页 图 21-5: 禁止自动重启时的关断功能 (GxARSEN = 0) 关断事件停止 GxASE 由软件清零 CWG 输入源关断源 GxASE CWG1A 三态 ( 无脉冲 ) CWG1B 三态 ( 无脉冲 ) 未关断关断图 21-6: 使能自动重启时的关断功能 (GxARSEN = 1) 关断事件停止 GxASE 由硬件自动清零 CWG 输入源关断源 GxASE CWG1A 三态 ( 无脉冲 ) CWG1B 三态 ( 无脉冲 ) 未关断关断输出恢复 输出恢复 PIC10(L)F320/322

139 21.12 CWG 控制寄存器 寄存器 21-1: CWGxCON0:CWG 控制寄存器 0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 U-0 U-0 R/W-0/0 GxEN GxOEB GxOEA GxPOLB GxPOLA GxCS0 bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 q = 值取决于具体条件 bit 7 GxEN:CWGx 使能位 1 = 使能模块 0 = 禁止模块 bit 6 GxOEB:CWGxB 输出使能位 1 = CWGxB 在相应的 I/O 引脚上可用 0 = CWGxB 在相应的 I/O 引脚上不可用 bit 5 GxOEA:CWGxA 输出使能位 1 = CWGxA 在相应的 I/O 引脚上可用 0 = CWGxA 在相应的 I/O 引脚上不可用 bit 4 GxPOLB:CWGxB 输出极性位 1 = 输出极性翻转 0 = 输出极性不翻转 bit 3 GxPOLA:CWGxA 输出极性位 1 = 输出极性翻转 0 = 输出极性不翻转 bit 2-1 未实现 : 读为 0 bit 0 GxCS0:CWGx 时钟源选择位 1 = HFINTOSC 0 = FOSC DS B_CN 第 139 页

140 寄存器 21-2: CWGxCON1:CWG 控制寄存器 1 R/W-x/u R/W-x/u R/W-x/u R/W-x/u U-0 U-0 R/W-0/0 R/W-0/0 GxASDLB<1:0> GxASDLA<1:0> GxIS<1:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 q = 值取决于具体条件 bit 7-6 GxASDLB<1:0>:CWGxB 的 CWGx 关断状态发生自动关断事件 (GxASE = 1) 时 : 11 = CWGxB 引脚驱动为 1, 与 GxPOLB 位的设置无关 10 = CWGxB 引脚驱动为 0, 与 GxPOLB 位的设置无关 01 = CWGxB 引脚为三态 00 = CWGxB 在选择的死区时间间隔之后驱动为无效状态 GxPOLB 仍将控制输出的极性 bit 5-4 GxASDLA<1:0>:CWGxA 的 CWGx 关断状态发生自动关断事件 (GxASE = 1) 时 : 00 = CWGxA 在选择的死区时间间隔之后驱动为无效状态 GxPOLA 仍将控制输出的极性 01 = CWGxA 引脚为三态 10 = CWGxA 引脚驱动为 0, 与 GxPOLA 位的设置无关 11 = CWGxA 引脚驱动为 1, 与 GxPOLA 位的设置无关 bit 3-2 未实现 : 读为 0 bit 1-0 GxIS<1:0>:CWGx 死区源选择位 11 = LC1OUT 10 = N1OUT 01 = PWM2OUT 00 = PWM1OUT DS B_CN 第 140 页

141 寄存器 21-3: CWGxCON2:CWG 控制寄存器 2 R/W/HC/HS-0/0 R/W-0/0 U-0 U-0 U-0 U-0 R/W-0/0 R/W-0/0 GxASE GxARSEN GxASDCLC1 GxASDFLT bit 7 bit 0 图注 : HC = 由硬件清零 HS = 由硬件置 1 R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 q = 值取决于具体条件 bit 7 GxASE: 自动关断事件状态位 1 = 发生了自动关断事件 改写 GxOEB/GxOEA 输出控制, 禁止输出 0 = 未发生自动关断事件, 或者发生了自动重启 使能 GxOEB/GxOEA 输出控制 bit 6 GxARSEN: 自动重启使能位 1 = 使能自动重启 0 = 禁止自动重启 bit 5-2 未实现 : 读为 0 bit 1 GxASDCLC1:CWG 自动关断源使能位 1 1 = 当 LC1OUT 为高电平时关断 0 = LC1OUT 对关断没有影响 bit 0 GxASDFLT:CWG 自动关断源使能位 0 1 = 当 CWG1FLT 输入为低电平时关断 0 = CWG1FLT 输入对关断没有影响 DS B_CN 第 141 页

142 寄存器 21-4: CWGxDBR: 互补波形发生器 (CWGx) 上升沿的死区计数寄存器 U-0 U-0 R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u CWGxDBR<5:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 q = 值取决于具体条件 bit 7-6 未实现 : 读为 0 bit 5-0 CWGxDBR<5:0>: 互补波形发生器 (CWGx) 上升沿计数位 = 死区的 次计数 = 死区的 次计数 = 死区的 2-3 次计数 = 死区的 1-2 次计数 = 死区的 0 次计数 寄存器 21-5: CWGxDBF: 互补波形发生器 (CWGx) 下降沿的死区计数寄存器 U-0 U-0 R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u R/W-x/u CWGxDBF<5:0> bit 7 bit 0 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 u = 不变 x = 未知 -n/n = POR 和 BOR 时的值 / 所有其他复位时的值 1 = 置 1 0 = 清零 q = 值取决于具体条件 bit 7-6 未实现 : 读为 0 bit 5-0 CWGxDBF<5:0>: 互补波形发生器 (CWGx) 下降沿计数位 = 死区的 次计数 = 死区的 次计数 = 死区的 2-3 次计数 = 死区的 1-2 次计数 = 死区的 0 次计数 死区被旁路 DS B_CN 第 142 页

143 表 21-1: 与 CWG 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 寄存器所在页 ANSELA ANSA2 ANSA1 ANSA0 70 CWG1CON0 G1EN G1OEB G1OEA G1POLB G1POLA G1CS0 139 CWG1CON1 G1ASDLB<1:0> G1ASDLA<1:0> G1IS<1:0> 140 CWG1CON2 G1ASE G1ARSEN G1ASDCLC1 G1ASDFLT 141 CWG1DBF CWG1DBF<5:0> 142 CWG1DBR CWG1DBR<5:0> 142 LATA LATA2 LATA1 LATA0 70 TRISA TRISA2 TRISA1 TRISA0 69 图注 : x = 未知, u = 不变, = 未实现单元, 读为 0 CWG 不使用阴影单元 DS B_CN 第 143 页

144 22.0 在线串行编程 (ICSP ) ICSP 编程允许客户在生产电路板时使用未编程器件 编程可以在装配流程之后完成, 从而可以使用最新版本的固件或者定制固件对器件编程 ICSP 编程需要 5 个引脚 : ICSPCLK ICSPDAT MCLR/VPP VDD VSS 在编程 / 校验模式下, 通过串行通信对程序存储器 用户 ID 和配置字进行编程 ICSPDAT 引脚是用于传输串行数据的双向 I/O,ICSPCLK 引脚是时钟输入引脚 关于 ICSP 的更多信息, 请参见 PIC10(L)F320/322 Flash Memory Programming Specification (DS41572) 22.1 高电压编程进入模式 通过将 ICSPCLK 和 ICSPDAT 引脚保持为低电平然后将 MCLR/VPP 引脚上的电压升至 VIHH, 可将器件置于高电压编程进入模式 22.2 低电压编程进入模式 通过使用低电压编程进入模式, 只需使用 VDD 即可对 PIC 闪存 MCU 进行编程, 而无需使用高电压 当配置字的 LVP 位设置为 1 时, 将使能低电压 ICSP 编程进入模式 要禁止低电压 ICSP 模式, 必须将 LVP 位编程为 0 要使用低电压编程进入模式, 需要执行以下步骤 : 1. 将 MCLR 拉至 VIL 2. 在 ICSPDAT 引脚上输出 32 位密钥序列, 而在 ICSPCLK 引脚上输出时钟 在密钥序列完成后, 只要保持在编程 / 校验模式下, MCLR 就必须保持在 VIL 电平 如果使能了低电压编程 (LVP = 1), 将自动使能 MCLR 复位功能, 且无法禁止 更多信息, 请参见第 5.4 节 低功耗欠压复位 (LPBOR) 只能通过使用高电压编程模式将 LVP 位重新编程为 通用编程接口 通常, 与目标器件的连接通过一个 ICSP 连接头完成 开发工具上常见的连接器是采用 6P6C(6 个引脚,6 个连接器 ) 配置的 RJ-11 请参见图 22-1 图 22-1: VDD VPP/MCLR ICD RJ-11 型连接器接口 ICSPDAT NC ICSPCLK VSS 引脚说明 * 1 = VPP/MCLR 2 = VDD 目标电源 3 = VSS ( 地 ) 4 = ICSPDAT 5 = ICSPCLK 6 = 无连接 目标 PC 板底侧 另一种常用于 PICkit 编程器的连接器是间距为 0.1 英寸的标准 6 引脚插头 请参见图 22-2 DS B_CN 第 144 页

145 图 22-2: PICkit 型连接器接口 引脚 1 指示符 引脚说明 * 1 = VPP/MCLR 2 = VDD 目标电源 3 = VSS ( 地 ) 4 = ICSPDAT 5 = ICSPCLK 6 = 无连接 * 6 引脚连接头 (0.100" 间距 ) 可连接 0.025" 的方形引脚 DS B_CN 第 145 页

146 关于其他推荐接口, 在进行 PCB 设计之前, 请参见具体的器件编程器手册 建议使用隔离器件将编程引脚与其他电路隔离 隔离类型主要取决于具体应用, 可能包括电阻 二极管甚至跳线之类的器件 更多信息, 请参见图 22-3 图 22-3: ICSP 编程的典型连接 VDD 外部编程信号要编程的器件 VDD VDD VPP VSS MCLR/VPP VSS 数据时钟 ICSPDAT ICSPCLK * * * 至正常连接 * 隔离器件 ( 根据需要而定 ) DS B_CN 第 146 页

147 23.0 指令集汇总 PIC10(L)F320/322 指令集具有高度正交性, 分为以下 3 个基本类型 : 面向字节操作类指令 面向位操作类指令 立即数和控制操作类指令每条 PIC16 指令都是一个 14 位字, 由操作码 ( 指定指令类型 ) 和一个或多个操作数 ( 指定指令操作 ) 组成 图 23-1 给出了每个指令类别的格式, 而表 23-1 汇总了各种操作码字段 表 23-2 列出了可被 MPASM TM 汇编器识别的指令 对于面向字节的指令,f 表示文件寄存器指示符,d 表示目标寄存器指示符 文件寄存器指示符指定指令所使用的文件寄存器 目标寄存器指示符指定操作结果存放的位置 如果 d 为 0, 结果存放到 W 寄存器 如果 d 为 1, 结果存放到指令中指定的文件寄存器 对于面向位的指令, b 表示位字段指示符, 它将选择操作所影响的位, 而 f 表示位所在的文件寄存器地址 对于立即数和控制操作类指令,k 表示 8 位或 11 位常数或者立即数值 一个指令周期由 4 个振荡周期组成 ; 如果振荡器频率为 4 MHz, 则可提供 1 s 的标称指令执行时间 所有指令均可在单指令周期内执行完毕, 条件测试为真或程序计数器更改为指令的结果时除外 此时, 指令执行将需要两个指令周期, 第二个周期执行一条 NOP 指令 所有指令示例均使用 0xhh 格式表示一个十六进制数, 其中 h 表示一位十六进制数字 23.1 读 - 修改 - 写操作 所有需要使用文件寄存器的指令都会执行读 - 修改 - 写 (RMW) 操作 根据指令或目标寄存器指示符 d 读寄存器 修改数据和保存结果 即使存在写寄存器的指令, 也将先对该寄存器进行读操作 例如, CLRF PORTA 指令将读 PORTA, 清零所有数据位, 然后将结果写回 PORTA 该示例可能造成意外地清除将 IOCIF 标志置 1 的条件 表 23-1: 字段 f 图 23-1: 操作码字段说明 说明 文件寄存器地址 (0x00 至 0x7F) W 工作寄存器 ( 累加器 ) b k 8 位文件寄存器内的位地址 立即数字段 常数或标号 x 忽略 (= 0 或 1) 汇编器将生成 x = 0 的代码 为了与所有的 Microchip 软件工具兼容, 建议使用这种格式 d 目标寄存器选择 ; d = 0: 结果保存至 W ; d = 1: 结果保存至文件寄存器 f 默认值为 d = 1 PC TO C DC Z PD 程序计数器 超时位 进位位 半进位位 全零标志位 掉电位 指令的通用格式 面向字节的文件寄存器操作类指令 操作码 d f( 文件寄存器地址 ) d = 0 表示结果存入 W 寄存器 d = 1 表示结果存入文件寄存器 f f = 7 位文件寄存器地址 面向位的文件寄存器操作类指令 操作码 b( 位地址 ) f( 文件寄存器地址 ) b = 3 位位地址 f = 7 位文件寄存器地址 立即数和控制操作类指令 通用格式 操作码 k ( 立即数 ) k = 8 位立即数值 仅限 CALL 和 GOTO 指令 操作码 k ( 立即数 ) k = 11 位立即数值 DS B_CN 第 147 页

148 表 23-2: 指令集 助记符, 操作数说明周期数 MSb 14 位操作码 LSb 受影响的状态位 注 ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF BCF BSF BTFSC BTFSS ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE RETLW RETURN SLEEP SUBLW XORLW 注 f, d f, d f f, d f, d f, d f, d f, d f, d f, d f f, d f, d f, d f, d f, d f, b f, b f, b f, b k k k k k k k k k W 和 f 相加 W 和 f 作逻辑与运算将 f 清零将 W 寄存器清零 f 取反 f 递减 1 f 递减 1, 为 0 则跳过 f 递增 1 f 递增 1, 为 0 则跳过 W 与 f 作逻辑或运算传送 f 将 W 的内容送到 f 空操作对 f 执行带进位的循坏左移对 f 执行带进位的循坏右移 f 减去 W 将 f 中的两个半字节进行交换 W 与 f 作逻辑异或运算 将 f 中的某位清零将 f 中的某位置 1 检测 f 中的某位, 为 0 则跳过检测 f 中的某位, 为 1 则跳过 立即数和 W 相加立即数与 W 作逻辑与运算调用子程序清零看门狗定时器跳转到地址立即数与 W 作逻辑或运算将立即数传送到 W 从中断返回返回并将立即数传送到 W 从子程序返回进入待机模式从立即数中减去 W 的内容立即数与 W 作逻辑异或运算 面向字节的文件寄存器操作 (2) 1 1 (2) 面向位的文件寄存器操作 (2) 1 (2) 立即数和控制操作 bb 01bb 10bb 11bb 111x kkk kkk xx xx x 1010 dfff dfff lfff 0xxx dfff dfff dfff dfff dfff dfff dfff lfff 0xx0 dfff dfff dfff dfff dfff bfff bfff bfff bfff kkkk kkkk kkkk 0110 kkkk kkkk kkkk 0000 kkkk kkkk kkkk ffff ffff ffff xxxx ffff ffff ffff ffff ffff ffff ffff ffff 0000 ffff ffff ffff ffff ffff ffff ffff ffff ffff kkkk kkkk kkkk 0100 kkkk kkkk kkkk 1001 kkkk kkkk kkkk C DC 和 Z Z Z Z Z Z Z Z Z C C C DC 和 Z Z C DC 和 Z Z TO 和 PD Z TO 和 PD C DC 和 Z Z 1: 当 I/O 寄存器作为其自身的一个函数 ( 例如, MOVF PORTA, 1) 被修改时, 所使用的值将为该引脚上的当前值 例如, 当配置为输入的引脚上的数据锁存器为 1 并被外部器件驱动为低电平时, 数据将写回 0 2: 如果该指令在 TMR0 寄存器 ( 适用时, d = 1) 上执行, 分配给 Timer0 模块的预分频器将清零 3: 如果程序计数器 (PC) 被修改或条件测试为真, 则执行该指令需要两个周期 第二个周期执行一条 NOP 指令 1, 2 1, 2 2 1, 2 1, 2 1, 2, 3 1, 2 1, 2, 3 1, 2 1, 2 1, 2 1, 2 1, 2 1, 2 1, 2 1, 2 1, DS B_CN 第 148 页

149 23.2 指令说明 ADDLW 立即数和 W 相加 语法 : [ 标号 ] ADDLW k 操作数 : 0 k 255 操作 : (W) + k (W) 受影响的状态位 : C DC 和 Z 说明 : 将 W 寄存器的内容与 8 位立即数 k 相加, 结果存放到 W 寄存器 BCF 将 f 寄存器中的某位清零 语法 : [ 标号 ] BCF f,b 操作数 : 0 f b 7 操作 : 0 (f<b>) 受影响的状态位 : 无 说明 : 将寄存器 f 中的位 b 清零 ADDWF W 和 f 相加 语法 : [ 标号 ] ADDWF f,d 操作数 : 0 f 127 d 0,1 操作 : (W) + (f) ( 目标寄存器 ) 受影响的状态位 : C DC 和 Z 说明 : 将 W 寄存器的内容与 f 寄存器的内 容相加 如果 d 为 0, 结果存放到 W 寄存器 如果 d 为 1, 结果存回 寄存器 f BSF 将 f 中的某位置 1 语法 : [ 标号 ] BSF f,b 操作数 : 0 f b 7 操作 : 1 (f<b>) 受影响的状态位 : 无 说明 : 将寄存器 f 中的位 b 置 1 ANDLW 立即数与 W 作逻辑与运算 语法 : [ 标号 ] ANDLW k 操作数 : 0 k 255 操作 : (W).AND. (k) (W) 受影响的状态位 : Z 说明 : 将 W 寄存器的内容与 8 位立即数 k 作逻辑与运算 结果存放到 W 寄 存器 ANDWF W 和 f 作逻辑与运算 语法 : [ 标号 ] ANDWF f,d 操作数 : 0 f 127 d 0,1 操作 : (W).AND. (f) ( 目标寄存器 ) 受影响的状态位 : Z 说明 : W 寄存器与 f 寄存器作逻辑与运算 如果 d 为 0, 结果存放到 W 寄存 器 如果 d 为 1, 结果存回寄存器 f BTFSC 检测 f 中的某位, 为 0 则跳过 语法 : [ 标号 ] BTFSC f,b 操作数 : 0 f b 7 操作 : 如果 (f<b>) = 0 则跳过受影响的状态位 : 无说明 : 如果 f 寄存器中的位 b 为 1, 则执行下一条指令 如果 f 寄存器中的位 b 为 0, 则丢弃下一条指令, 转而执行一条 NOP 指令, 从而使该指令成为双周期指令 DS B_CN 第 149 页

150 BTFSS 检测 f 中的某位, 为 1 则跳过 语法 : [ 标号 ] BTFSS f,b 操作数 : 0 f b < 7 操作 : 如果 (f<b>) = 1 则跳过受影响的状态位 : 无说明 : 如果 f 寄存器中的位 b 为 0, 则执行下一条指令 如果位 b 为 1, 那么下一条指令将丢弃, 转而执行一条 NOP 指令, 从而使该指令成为双周期指令 CLRWDT 语法 : 操作数 : 操作 : 清零看门狗定时器 [ 标号 ] CLRWDT 无 受影响的状态位 : TO 和 PD 说明 : 00h WDT 0 WDT 预分频器, 1 TO 1 PD CLRWDT 指令复位看门狗定时器 还将复位 WDT 的预分频器 状态位 TO 和 PD 置 1 CALL 调用子程序 语法 : [ 标号 ] CALL k 操作数 : 0 k 2047 操作 : (PC)+ 1 TOS, k PC<10:0>, (PCLATH<4:3>) PC<12:11> 受影响的状态位 : 无说明 : 调用子程序 首先, 将返回地址 (PC+ 1) 压入堆栈 将 11 位立即数地址装入 PC 位 <10:0> 将 PCLATH 的内容装入 PC 的高位 CALL 是双周期指令 COMF f 取反 语法 : [ 标号 ] COMF f,d 操作数 : 0 f 127 d [0,1] 操作 : (f) ( 目标寄存器 ) 受影响的状态位 : Z 说明 : 将 f 寄存器的内容取反 如果 d 为 0, 结果存放到 W 寄存器 如果 d 为 1, 结果存回寄存器 f CLRF 将 f 清零 语法 : [ 标号 ] CLRF f 操作数 : 0 f 127 操作 : 00h (f) 1 Z 受影响的状态位 : Z 说明 : 将 f 寄存器的内容清零,Z 位置 1 DECF f 递减 1 语法 : [ 标号 ] DECF f,d 操作数 : 0 f 127 d [0,1] 操作 : (f) - 1 ( 目标寄存器 ) 受影响的状态位 : Z 说明 : 将 f 寄存器的内容减 1 如果 d 为 0, 结果存放在 W 寄存器 如果 d 为 1, 结果存回寄存器 f CLRW 语法 : 操作数 : 操作 : 将 W 寄存器清零 [ 标号 ] CLRW 无 00h (W) 1 Z 受影响的状态位 : Z 说明 : 将 W 寄存器清零 全零标志位 (Z) 置 1 DS B_CN 第 150 页

151 DECFSZ f 递减 1, 为 0 则跳过 语法 : [ 标号 ] DECFSZ f,d 操作数 : 0 f 127 d [0,1] 操作 : (f) - 1 ( 目标寄存器 ) ; 结果 = 0 则跳过受影响的状态位 : 无说明 : 将 f 寄存器的内容减 1 如果 d 为 0, 结果存放到 W 寄存器 如果 d 为 1, 结果存放到寄存器 f 如果结果为 1, 则执行下一条指令 如果结果为 0, 则转而执行一条 NOP 指令, 从而使该指令成为双周期指令 INCFSZ f 递增 1, 为 0 则跳过 语法 : [ 标号 ] INCFSZ f,d 操作数 : 0 f 127 d [0,1] 操作 : (f) + 1 ( 目标寄存器 ), 结果 = 0 则跳过受影响的状态位 : 无说明 : 将 f 寄存器的内容加 1 如果 d 为 0, 结果存放到 W 寄存器 如果 d 为 1, 结果存放到寄存器 f 如果结果为 1, 则执行下一条指令 如果结果为 0, 则转而执行 NOP 指令, 从而使该指令成为双周期指令 GOTO 无条件跳转 语法 : [ 标号 ] GOTO k 操作数 : 0 k 2047 操作 : k PC<10:0> PCLATH<4:3> PC<12:11> 受影响的状态位 : 无 说明 : GOTO 是无条件跳转指令 将 11 位 立即数值装入 PC 位 <10:0> 将 PCLATH<4:3> 的内容装入 PC 的 高位 GOTO 是双周期指令 IORLW 立即数与 W 作逻辑或运算 语法 : [ 标号 ] IORLW k 操作数 : 0 k 255 操作 : (W).OR. k (W) 受影响的状态位 : Z 说明 : 将 W 寄存器的内容与 8 位立即数 k 作逻辑或运算 结果存放在 W 寄存 器 INCF f 递增 1 语法 : [ 标号 ] INCF f,d 操作数 : 0 f 127 d [0,1] 操作 : (f) + 1 ( 目标寄存器 ) 受影响的状态 Z 位 : 说明 : 将 f 寄存器的内容递增 1 如果 d 为 0, 结果存放到 W 寄存器 如果 d 为 1, 结果存回寄存器 f IORWF W 与 f 作逻辑或运算 语法 : [ 标号 ] IORWF f,d 操作数 : 0 f 127 d [0,1] 操作 : (W).OR. (f) ( 目标寄存器 ) 受影响的状态位 : Z 说明 : W 寄存器与 f 寄存器作逻辑或运算 如果 d 为 0, 结果存放到 W 寄存器 如果 d 为 1, 结果存回寄存器 f DS B_CN 第 151 页

152 MOVF 传送 f 语法 : [ 标号 ] MOVF f,d 操作数 : 0 f 127 d [0,1] 操作 : (f) ( 目标寄存器 ) 受影响的状态位 : Z 说明 : 根据 d 的状态, 寄存器 f 的内容传 送到目标寄存器 如果 d = 0, 目 标寄存器为 W 寄存器 如果 d = 1, 则目标寄存器为文件寄存器 f 由 于状态标志位 Z 会受到指令结果的 影响, 可用 d = 1 检测文件寄存器 指令字数 : 1 指令周期数 : 1 示例 : MOVF FSR, 0 执行指令后 W = FSR 寄存器中的值 Z = 1 MOVWF 将 W 的内容传送到 f 语法 : [ 标号 ] MOVWF f 操作数 : 0 f 127 操作 : (W) (f) 受影响的状态位 : 无 说明 : 将数据从 W 寄存器传送到寄存器 f 指令字数 : 1 指令周期数 : 1 示例 : MOVWF OPTION_REG 执行指令前 OPTION_REG = 0xFF W = 0x4F 执行指令后 OPTION_REG = 0x4F W = 0x4F MOVLW 将立即数传送到 W 语法 : [ 标号 ] MOVLW k 操作数 : 0 k 255 操作 : k (W) 受影响的状态位 : 无 说明 : 将 8 位立即数 k 装入 W 寄存器 无关位 被汇编为 0 指令字数 : 1 指令周期数 : 1 示例 : MOVLW 0x5A 执行指令后 W = 0x5A NOP 空操作 语法 : [ 标号 ] NOP 操作数 : 无 操作 : 空操作 受影响的状态位 : 无 说明 : 空操作 指令字数 : 1 指令周期数 : 1 示例 : NOP DS B_CN 第 152 页

153 RETFIE 从中断返回 语法 : [ 标号 ] RETFIE 操作数 : 无 操作 : TOS PC, 1 GIE 受影响的状态位 : 无 说明 : 从中断返回 执行出栈操作, 将 栈顶 (TOS) 的内容装入 PC 通 过将全局中断允许位 GIE (INTCON<7>) 置 1 允许中断 这是一条双周期指令 指令字数 : 1 指令周期数 : 2 示例 : RETFIE 中断后 PC = TOS GIE = 1 RETLW 返回并将立即数传送到 W 语法 : [ 标号 ] RETLW k 操作数 : 0 k 255 操作 : k (W) ; TOS PC 受影响的状态位 : 无 说明 : 将 8 位立即数 k 装入 W 寄存器 将 栈顶内容 ( 返回地址 ) 装入程序计 数器 这是一条双周期指令 指令字数 : 1 指令周期数 : 2 示例 : CALL TABLE;W contains ;table offset ;value GOTO DONE TABLE ADDWF PC ;W = offset RETLW k1 ;Begin table RETLW k2 ; RETLW kn ;End of table DONE 执行指令前 W = 0x07 执行指令后 W = k8 的值 RETURN 从子程序返回 语法 : [ 标号 ] RETURN 操作数 : 无 操作 : TOS PC 受影响的状态位 : 无 说明 : 从子程序返回 执行出栈操作, 将 栈顶 (TOS) 内容装入程序计数 器 这是一条双周期指令 DS B_CN 第 153 页

154 RLF 对 f 执行带进位的循环左移 语法 : [ 标号 ] RLF f,d 操作数 : 0 f 127 d [0,1] 操作 : 参见下面的说明 受影响的状态位 : C 说明 : 将寄存器 f 的内容连同进位标志位 一起循环左移 1 位 如果 d 为 0, 结果存放到 W 寄存器 如果 d 为 1, 结果存回寄存器 f 寄存器 f 指令字数 : 1 指令周期数 : 1 示例 : RLF REG1,0 执行指令前 REG1 = C = 0 执行指令后 REG1 = W = C = 1 C SLEEP 进入休眠模式 语法 : [ 标号 ] SLEEP 操作数 : 无 操作 : 00h WDT, 0 WDT 预分频器, 1 TO, 0 PD 受影响的状态位 : 说明 : TO 和 PD 掉电状态位 PD 清零 超时状态位 TO 置 1 看门狗定时器及其预分频器清零 振荡器停振, 处理器进入休眠模式 RRF 对 f 执行带进位的循环右移 语法 : [ 标号 ] RRF f,d 操作数 : 0 f 127 d [0,1] 操作 : 参见下面的说明受影响的状态位 : C 说明 : 将寄存器 f 的内容连同进位标志位一起循环右移 1 位 如果 d 为 0, 结果存放到 W 寄存器 如果 d 为 1, 结果存回寄存器 f C 寄存器 f SUBLW 从立即数中减去 W 的内容 语法 : [ 标号 ] SUBLW k 操作数 : 0 k 255 操作 : k - (W) W) 受影响的状态位 : C DC 和 Z 说明 : 从 8 位立即数 k 中减去 W 寄存器的 内容 ( 采用二进制补码方法进行运 算 ) 结果存放到 W 寄存器 结果 C = 0 C = 1 DC = 0 DC = 1 条件 W k W k W<3:0> k<3:0> W<3:0> k<3:0> DS B_CN 第 154 页

155 SUBWF f 减去 W 语法 : [ 标号 ] SUBWF f,d 操作数 : 0 f 127 d [0,1] 操作 : (f) - (W) ( 目标寄存器 ) 受影响的状态位 : C DC 和 Z 说明 : 从寄存器 f 中减去 W 寄存器的内容 ( 采用二进制补码方法进行运 算 ) 如果 d 为 0, 结果存放在 W 寄存器 如果 d 为 1, 结果存回寄 存器 f XORWF W 与 f 作逻辑异或运算语法 : [ 标号 ] XORWF f,d 操作数 : 0 f 127 d [0,1] 操作 : (W).XOR. (f) ( 目标寄存器 ) 受影响的状态位 : Z 说明 : 将 W 寄存器的内容与 f 寄存器的内容作逻辑异或运算 如果 d 为 0, 结果存放到 W 寄存器 如果 d 为 1, 结果存回寄存器 f C = 0 C = 1 DC = 0 DC = 1 W f W f W<3:0> f<3:0> W<3:0> f<3:0> SWAPF 将 f 中的两个半字节进行交换语法 : [ 标号 ] SWAPF f,d 操作数 : 0 f 127 d [0,1] 操作 : (f<3:0>) ( 目标寄存器 <7:4>), (f<7:4>) ( 目标寄存器 <3:0>) 受影响的状态位 : 无说明 : 将寄存器 f 的高半字节和低半字节交换 如果 d 为 0, 结果存放到 W 寄存器 如果 d 为 1, 结果存放到寄存器 f XORLW 立即数与 W 作逻辑异或运算 语法 : [ 标号 ] XORLW k 操作数 : 0 k 255 操作 : (W).XOR. k (W) 受影响的状态位 : Z 说明 : 将 W 寄存器的内容与 8 位立即数 k 作逻辑异或运算 结果存放到 W 寄存器 DS B_CN 第 155 页

156 24.0 电气规范 ( ) 24.1 绝对最大值 偏置电压下的环境温度 C 至 +125 C 储存温度 C 至 +150 C 引脚相对于 VSS 的电压 VDD 引脚 PIC10F320/ V 至 +6.5V PIC10LF320/ V 至 +4.0V MCLR 引脚 V 至 +9.0V 所有其他引脚 V 至 (VDD + 0.3V) 最大电流 VSS 引脚 (1) -40 C TA +85 C ma -40 C TA +125 C ma VDD 引脚 (1) -40 C TA +85 C ma -40 C TA +125 C ma 任一 I/O 引脚 25 ma 钳位电流 IK (VPIN < 0 或 VPIN > VDD) 20 ma 注 1: 最大电流要求 I/O 引脚上具有均匀的负载分布 最大电流可能受限于器件封装功率耗散特性, 请参见第 24.4 节 散热考虑 来计算器件规范值 注 : 如果器件工作条件超过上述 绝对最大值, 则可能会对器件造成永久性损坏 上述值仅为运行条件极大值, 我们建议不要使器件在该规范规定的范围以外运行 器件长时间工作在最大值条件下, 其稳定性会受到影响 DS B_CN 第 156 页

157 24.2 标准工作条件 所有器件的标准工作条件定义如下 : 工作电压 : VDDMIN VDD VDDMAX 工作温度 : TA_MIN TA TA_MAX VDD 供电电压工作范围 (1) PIC10LF320/322 VDDMIN (Fosc 16 MHz) V VDDMIN (16 MHz < Fosc 20 MHz) V VDDMAX V PIC10F320/322 VDDMIN (Fosc 16 MHz) V VDDMIN (16 MHz < Fosc 20 MHz) V VDDMAX V TA 工作环境温度范围工业级温度 TA_MIN C TA_MAX C 扩展级温度 TA_MIN C TA_MAX C 注 1: 请参见参数 D001, 直流特性 : 供电电压 DS B_CN 第 157 页

158 图 24-1: PIC10F320/322 电压 频率关系图, -40 C TA +125 C 5.5 VDD(V) 频率 (MHz) 注 1: 阴影区域表示允许的电压和频率的组合 2: 关于每种振荡器模式所支持的频率, 请参见表 24-6 图 24-2: PIC10LF320/322 电压 频率关系图, -40 C TA +125 C VDD(V) 频率 (MHz) 注 1: 阴影区域表示允许的电压和频率的组合 2: 关于每种振荡器模式所支持的频率, 请参见表 24-6 DS B_CN 第 158 页

159 24.3 直流特性 表 24-1: 供电电压 PIC10LF320/322 标准工作条件 ( 除非另外声明 ) PIC10F320/322 参数编号 符号 特性 最小值 典型值 最大值 单位 条件 D001 VDD 供电电压 D D002* VDR (1) RAM 数据保持电压 V V V V FOSC 16 MHz FOSC 20 MHz FOSC 16 MHz FOSC 20 MHz 1.5 V 器件处于休眠模式 D002* 1.7 V 器件处于休眠模式 VPOR* 上电复位释放电压 1.6 V VPORR* 上电复位重新激活电压 0.8 V 器件处于休眠模式 1.7 V 器件处于休眠模式 D004* SVDD VDD 上升速率确保能够产生内部上电 复位信号 0.05 V/ms 详情请参见第 5.1 节 上电复位 (POR) * 这些参数仅为特征值, 未经测试 除非另外声明, 否则 典型值 栏中的数据均为 3.3V 25 C 条件下的值 这些参数仅作为设计参考, 未经测试 注 1: 该电压是休眠模式下保证不丢失 RAM 数据的最小 VDD DS B_CN 第 159 页

160 图 24-3: VDD 缓慢上升时的 POR 和 POR 重新激活 VDD VPOR VPORR SVDD VSS NPOR (1) POR 重新激活 VSS TVLOW (3) TPOR (2) 注 1: 当 NPOR 为低电平时, 器件保持在复位状态 2: TPOR 的典型值为 1 s 3: TVLOW 的典型值为 2.7 s DS B_CN 第 160 页

161 表 24-2: 供电电流 (IDD) (1,2) PIC10LF320/322 标准工作条件 ( 除非另外声明 ) PIC10F320/322 参数编号 器件特性最小值典型值 最大值单位 D A 1.8 FOSC = 500 khz 60 A 3.0 EC 模式 D A 2.3 FOSC = 500 khz 110 A 3.0 EC 模式 153 A 5.0 D A 1.8 FOSC = 8 MHz A 3.0 EC 模式 D A 2.3 FOSC = 8 MHz A 3.0 EC 模式 A 5.0 D ma 3.0 FOSC = 20 MHz ma 3.6 EC 模式 D ma 3.0 FOSC = 20 MHz ma 5.0 EC 模式 D A 1.8 FOSC = 32 khz 7 A 3.0 LFINTOSC 模式, 85 C D A 2.3 FOSC = 32 khz 40 A 3.0 LFINTOSC 模式, 85 C 71 A 5.0 D016A 2.4 A 1.8 FOSC = 32 khz 7 A 3.0 LFINTOSC 模式, 125 C D016A 31 A 2.3 FOSC = 32 khz 40 A 3.0 LFINTOSC 模式, 125 C 71 A 5.0 注 1: 有效工作模式下, 所有 IDD 测试的测试条件为 :CLKIN = 外部方波, 轨到轨满幅 ; 所有 I/O 引脚均为三态, 上拉至 VDD ; MCLR = VDD ; 禁止 WDT 2: 供电电流主要受工作电压和频率的影响 其他因素如 I/O 引脚负载和开关速率 振荡器类型 内部代码执行模式以及温度也对电流消耗有影响 VDD 条件 注 DS B_CN 第 161 页

162 表 24-2: 供电电流 (IDD) (1,2) ( 续 ) PIC10LF320/322 标准工作条件 ( 除非另外声明 ) PIC10F320/322 参数编号 器件特性最小值典型值 最大值单位 D A 1.8 FOSC = 500 khz 286 A 3.0 HFINTOSC 模式 D A 2.3 FOSC = 500 khz 310 A 3.0 HFINTOSC 模式 372 A 5.0 D ma 1.8 FOSC = 8 MHz ma 3.0 HFINTOSC 模式 D ma 2.3 FOSC = 8 MHz ma 3.0 HFINTOSC 模式 ma 5.0 D ma 1.8 FOSC = 16 MHz ma 3.0 HFINTOSC 模式 D ma 2.3 FOSC = 16 MHz ma 3.0 HFINTOSC 模式 ma 5.0 注 1: 有效工作模式下, 所有 IDD 测试的测试条件为 :CLKIN = 外部方波, 轨到轨满幅 ; 所有 I/O 引脚均为三态, 上拉至 VDD ; MCLR = VDD ; 禁止 WDT 2: 供电电流主要受工作电压和频率的影响 其他因素如 I/O 引脚负载和开关速率 振荡器类型 内部代码执行模式以及温度也对电流消耗有影响 VDD 条件 注 DS B_CN 第 162 页

163 表 24-3: 掉电电流 (IPD) (1,2) PIC10LF320/322 标准工作条件 ( 除非另外声明 ) PIC10F320/322 参数编号 器件特性最小值典型值 最大值 +85 C 最大值 +125 C 单位 VDD 条件 注 D A 1.8 禁止 WDT BOR 和 FVR, A 3.0 所有外设不工作 D A 2.3 禁止 WDT BOR 和 FVR, A 3.0 所有外设不工作 A 5.0 D A 1.8 WDT 电流 ( 注 1) A 3.0 D A 2.3 WDT 电流 ( 注 1) A A 5.0 D A 1.8 FVR 电流 A 3.0 D A 2.3 FVR 电流 A A 5.0 D A 3.0 BOR 电流 ( 注 1) D A 3.0 BOR 电流 ( 注 1) A 5.0 D026A A 3.0 LPBOR 电流 D026A A 3.0 LPBOR 电流 A 5.0 D A 1.8 A/D 电流 ( 注 1, 注 3), A 3.0 未进行转换 D A 2.3 A/D 电流 ( 注 1, 注 3), A 3.0 未进行转换 A 5.0 D A 1.8 A/D 电流 ( 注 1, 注 3), 250 A 3.0 正在进行转换 D A 2.3 A/D 电流 ( 注 1, 注 3), 280 A 3.0 正在进行转换 注 280 A 5.0 * 这些参数仅为特征值, 未经测试 除非另外声明, 否则 典型值 栏中的数据均为 3.0V 25 C 条件下的值 这些参数仅作为设计参考, 未经测试 1: 外设电流是基本 IDD 或 IPD 电流以及该外设使能时额外消耗的电流之和 外设 电流可以从该外设电流中减去基本 IDD 或 IPD 电流而得出 在计算总电流消耗时应使用最大值 2: 休眠模式下的掉电电流与振荡器类型无关 掉电电流是在器件处于休眠模式时, 所有 I/O 引脚处于高阻态并连接到 VDD 时测得的 3: A/D 振荡器的时钟源为 FRC DS B_CN 第 163 页

164 表 24-4: I/O 端口 标准工作条件 ( 除非另外声明 ) 参数编号 符号 特性 最小值 典型值 最大值 单位 条件 VIL 输入低电压 I/O 端口 : D032 带 TTL 缓冲器 0.8 V 4.5V VDD 5.5V D032A 0.15 VDD V 1.8V VDD 4.5V D033 带施密特触发缓冲器 0.2 VDD V 2.0V VDD 5.5V D034 MCLR 0.2 VDD V VIH 输入高电压 I/O 端口 : D040 带 TTL 缓冲器 2.0 V 4.5V VDD 5.5V D040A 0.25 VDD + V 1.8V VDD 4.5V 0.8 D041 带施密特触发缓冲器 0.8 VDD V 2.0V VDD 5.5V D042 MCLR 0.8 VDD V IIL 输入泄漏电流 (2) D060 I/O 端口 ± 5 ± 5 ± 125 ± 1000 na na VSS VPIN VDD, 引脚处于高阻态 (85 C 时 ) 125 C D061 MCLR ± 50 ± 200 na VSS VPIN VDD (85 C 时 ) IPUR 弱上拉电流 D070* VDD = 3.3V, VPIN = VSS A VDD = 5.0V, VPIN = VSS VOL 输出低电压 D080 I/O 端口 IOL = 8 ma, VDD = 5V 0.6 V IOL = 6 ma, VDD = 3.3V IOL = 1.8 ma, VDD = 1.8V VOH 输出高电压 D090 I/O 端口 IOH = 3.5 ma, VDD = 5V VDD V IOH = 3 ma, VDD = 3.3V IOH = 1 ma, VDD = 1.8V * 这些参数仅为特征值, 未经测试 除非另外声明, 否则 典型值 栏中的数据均为 3.0V 25 C 条件下的值 这些参数仅作为设计参考, 未经测试 注 1: 负电流定义为引脚的拉电流 2: MCLR 引脚上的泄漏电流主要取决于所施加的电压 规定电压为正常工作条件下的电压 在不同的输入电压下可能测得更 高的泄漏电流 DS B_CN 第 164 页

165 表 24-5: 存储器编程要求 标准工作条件 ( 除非另外声明 ) 参数编号 符号 特性 最小值 典型值 最大值 单位 条件 程序存储器编程规范 D110 VIHH MCLR/VPP 引脚上的电压 V ( 注 2) D111 IDDP 编程期间的供电电流 10 ma D112 用于批量擦除的 VDD 2.7 VDD 最大值 V D113 VPEW 用于写或行擦除的 VDD VDD 最小值 VDD 最大值 D114 IPPPGM 擦 / 写期间 MCLR/VPP 上的电流 1.0 ma D115 IDDPGM 擦 / 写期间 VDD 上的电流 5.0 ma 闪存程序存储器 D121 EP 电池耐用性 10K - E/W -40 C 至 +85 C ( 注 1) D122 VPR 用于读操作的 VDD VDD 最小值 VDD 最大值 D123 TIW 自定时的写周期 ms D124 TRETD 特性保持时间 40 年 假设没有违反其他规范 除非另外声明, 否则 典型值 栏中的数据均为 3.0V 25 C 条件下的值 这些参数仅作为设计参考, 未经测试 注 1: 自写和块擦除 2: 仅在禁止单电源编程的情况下需要 V V DS B_CN 第 165 页

166 24.4 散热考虑 标准工作条件 ( 除非另外声明 ) 参数编号 符号特性典型值单位条件 TH01 JA 结点到环境的热阻 60 C/W 6 引脚 SOT-23 封装 80 C/W 8 引脚 PDIP 封装 90 C/W 8 引脚 DFN 封装 TH02 JC 结点到管壳的热阻 31.4 C/W 6 引脚 SOT-23 封装 24 C/W 8 引脚 PDIP 封装 24 C/W 8 引脚 DFN 封装 TH03 TJMAX 最高结温 150 C TH04 PD 功耗 W PD = PINTERNAL + PI/O TH05 PINTERNAL 内部功耗 W PINTERNAL = IDD x VDD (1) TH06 PI/O I/O 功耗 W PI/O = (IOL * VOL) + (IOH * (VDD - VOH)) TH07 PDER 降额功耗 W PDER = PDMAX (TJ - TA)/ JA (2) 注 1: IDD 为单独运行芯片而不驱动输出引脚上的任何负载时的电流 2: TA = 环境温度 3: TJ = 结温 DS B_CN 第 166 页

167 24.5 交流特性 可根据以下任一格式来创建时序参数符号 : 1. TppS2ppS 2. TppS T F 频率 T 时间 小写字母 (pp) 及其含义 : pp cc CCP1 osc CLKIN ck CLKR rd RD cs CS rw RD 或 WR di SDI sc SCK do SDO ss SS dt 数据输入 t0 T0CKI io I/O 端口 t1 T1CKI mc MCLR wr WR 大写字母及其含义 : S F 下降 P 周期 H 高 R 上升 I 无效 ( 高阻态 ) V 有效 L 低 Z 高阻态 图 24-4: 负载条件 负载条件 Load Condition Rev A 8/1/2013 引脚 Pin CL VSS 图注 : Legend: CL = CL=50 pf( pf 适用于所有引脚 for all pins ) DS B_CN 第 167 页

168 图 24-5: 时钟时序 Q4 Q1 Q2 Q3 Q4 Q1 CLKIN OS02 OS03 CLKR (CLKROE = 1) 表 24-6: 时钟振荡器时序要求 标准工作条件 ( 除非另外声明 ) 参数编号 符号特性最小值典型值 最大值单位条件 OS01 FOSC 外部 CLKIN 频率 (1) DC 20 MHz EC 模式 OS02 TOSC 外部 CLKIN 周期 (1) ns EC 振荡器模式 OS03 TCY 指令周期 (1) 200 TCY DC ns TCY = 4/FOSC * 这些参数仅为特征值, 未经测试 除非另外声明, 否则 典型值 栏中的数据均为 3.0V 25 C 条件下的值 这些参数仅作为设计参考, 未经测试 注 1: 指令周期 (TCY) 等于输入振荡器时基周期的 4 倍 所有规范值均基于器件在标准工作条件下执行代码时对应特定振荡器类 型的特征数据 超出这些规范值可能导致振荡器运行不稳定和 / 或电流消耗超出预期值 所有器件在测试 最小值 时, 都 在 CLKIN 引脚上连接了外部时钟 当使用了外部时钟输入时, 所有器件的 最大值 周期时限为 DC ( 没有时钟 ) 表 24-7: 振荡器参数 标准工作条件 ( 除非另外声明 ) 参数编号 符号 特性 频率容差 最小值 典型值 最大值 单位 条件 OS08 HFOSC 经过校准的内部 HFINTOSC ±3% 16.0 MHz 0 C TA +85 C, VDD 2.3V 频率 (1) -8% 至 +4% 16.0 MHz -40 C TA +125 C OS09 LFOSC 内部 LFINTOSC 频率 ±25% 31 khz OS10* TIOSCST HFINTOSC 从休眠模式唤醒的起振时间 5 8 s 注 * 这些参数仅为特征值, 未经测试 除非另外声明, 否则 典型值 栏中的数据均为 3.0V 25 C 条件下的值 这些参数仅作为设计参考, 未经测试 1: 为了确保振荡器的频率容差, 必须尽量靠近器件在 VDD 和 VSS 之间连接去耦电容 建议并联 0.1 F 和 0.01 F 的电容 DS B_CN 第 168 页

169 图 24-6: 器件 VDD 和温度范围内的 HFINTOSC 频率精度 Rev D 2/11/ % 至 to +12% 85 Temperature 温度 ( C) ( C) ±6.5% 0-15% 至 to +12% VDD (V) (V) DS B_CN 第 169 页

170 图 24-7: 周期 CLKR 和 I/O 时序 写 取指 读 执行 Q4 Q1 Q2 Q3 FOSC CLKR OS11 OS19 OS13 OS17 OS20 OS21 OS16 OS12 OS18 I/O 引脚 ( 输入 ) OS15 OS14 I/O 引脚 ( 输出 ) 旧值 新值 OS18,OS19 表 24-8: CLKR 和 I/O 时序参数 标准工作条件 ( 除非另外声明 ) 参数编号 符号特性最小值典型值 最大值单位条件 OS11 TosH2ckL FOSC 至 CLKOUT 的时间 (1) 70 ns 3.3V VDD 5.0V OS12 TosH2ckH FOSC 至 CLKOUT 的时间 (1) 72 ns 3.3V VDD 5.0V OS13 TckL2ioV (1) CLKOUT 至端口输出有效的时间 20 ns OS14 TioV2ckH CLKOUT 之前端口输入有效的时间 (1) TOSC ns ns OS15 TosH2ioV FOSC (Q1 周期 ) 至端口输出有效的时间 50 70* ns 3.3V VDD 5.0V OS16 TosH2ioI FOSC (Q2 周期 ) 至端口输入无效的时间 50 ns 3.3V VDD 5.0V (I/O 输入保持时间 ) OS17 TioV2osH 端口输入有效至 FOSC (Q2 周期 ) 的时间 20 ns (I/O 输入建立时间 ) OS18* TioR 端口输出上升时间 ns VDD = 1.8V 3.3V VDD 5.0V OS19* TioF 端口输出下降时间 OS20* Tinp INT 引脚输入高电平或低电平的时间 25 ns OS21* Tioc 电平变化中断信号的新输入电平时间 25 ns * 这些参数仅为特征值, 未经测试 除非另外声明, 否则 典型值 栏中的数据均为 3.0V 25 C 条件下的值 注 1: 测量是在 EXTRC 模式下进行的, 其中 CLKOUT 输出为 4 x TOSC ns VDD = 1.8V 3.3V VDD 5.0V DS B_CN 第 170 页

171 图 24-8: 复位 看门狗定时器和上电延时定时器时序 VDD MCLR 内部 POR 30 PWRT 超时 33 (1) 内部复位 看门狗定时器复位 (1) I/O 引脚 注 1: 低电平有效 图 24-9: 欠压复位时序和特性 VDD VBOR VBOR 和 VHYST ( 器件处于欠压复位状态 ) ( 器件不处于欠压复位状态 ) 37 复位 ( 由于 BOR) 33 DS B_CN 第 171 页

172 表 24-9: 标准工作条件 ( 除非另外声明 ) 复位 看门狗定时器 上电延时定时器和欠压复位参数 参数编号 符号特性最小值典型值 最大值单位条件 30 TMCL MCLR 脉宽 ( 低电平 ) TWDTLP 低功耗看门狗定时器 超时周期 s s VDD = 3.3-5V, -40 C 至 +85 C VDD = 3.3-5V ms VDD = 3.3V-5V 使用 1:16 预分频比 33* TPWRT 上电延时定时器周期, PWRTE = ms 34* TIOZ 自 MCLR 低电平或看门狗定时器复位 2.0 s 起 I/O 处于高阻态的时间 35 VBOR 欠压复位电压 (1) V V V BORV = 0 BORV = 1 (PIC10F320/322) BORV = 1 (PIC10LF320/322) 36* VHYST 欠压复位迟滞 mv -40 C 至 +85 C 37* TBORDC 欠压复位直流响应时间 s VDD VBOR 注 * 这些参数仅为特征值, 未经测试 除非另外声明, 否则 典型值 栏中的数据均为 3.0V 25 C 条件下的值 这些参数仅作为设计参考, 未经测试 1: 为了确保这些电压容差, 必须尽量靠近器件在 VDD 和 VSS 之间连接去耦电容 建议并联 0.1 F 和 0.01 F 的电容 图 24-10: TIMER0 和 TIMER1 外部时钟时序 T0CKI TMR0 表 24-10: 标准工作条件 ( 除非另外声明 ) TIMER0 外部时钟要求 参数编号 符号 特性 最小值 典型值 最大值 单位 条件 40* TT0H T0CKI 高电平脉冲宽度 无预分频器 0.5 TCY + 20 ns 有预分频器 10 ns 41* TT0L T0CKI 低电平脉冲宽度 无预分频器 0.5 TCY + 20 ns 有预分频器 10 ns 42* TT0P T0CKI 周期 取以下两者中的较大值 : 20 或 TCY + 40 N ns N = 预分频值 (2,4,,256) * 这些参数仅为特征值, 未经测试 除非另外声明, 否则 典型值 栏中的数据均为 3.0V 25 C 条件下的值 这些参数仅作为设计参考, 未经测试 DS B_CN 第 172 页

173 图 24-11: CLC 传输时序 Rev A 7/30/2013 CLCxINn CLC LCx_in[n] (1) CLC CLC Input 输入时间 CLCx time Module 模块 LCx_out (1) Output 输出时间 time CLCxINn CLC CLC CLC CLCx Input 输入时间 time LCx_in[n] (1) Module 模块 LCx_out (1) Output 输出时间 time CLC01 CLC02 CLC03 注 1: 请参见图 19-1 来确定特定的 CLC 信号 表 24-11: 标准工作条件 ( 除非另外声明 ) 可配置逻辑单元 (CLC) 特性 参数符号特性最小值典型值 最大值单位条件编号 CLC01* TCLCIN CLC 输入时间 7 ns CLC02* TCLC CLC 模块输入至输出传输的时间 ns ns VDD = 1.8V VDD > 3.6V CLC03* TCLCOUT CLC 输出时间 上升时间 OS18 ( 注 1) 下降时间 OS19 ( 注 1) CLC04* FCLCMAX CLC 最高开关频率 45 MHz * 这些参数仅为特征值, 未经测试 除非另外声明, 否则 典型值 栏中的数据均为 3.0V 25 C 条件下的值 这些参数仅作为设计参考, 未经测试 注 1: 请参见表 24-8 了解 OS18 的上升时间和和 OS19 的下降时间 DS B_CN 第 173 页

174 表 24-12: 标准工作条件 ( 除非另外声明 ) 表 24-13: A/D 转换器 (ADC) 特性 参数编号 符号 特性 最小值典型值 最大值 单位 条件 AD01 NR 分辨率 8 位 AD02 EIL 积分误差 ±1.7 LSb VREF = 3.0V AD03 EDL 微分误差 ±1 LSb 不丢失编码 VREF = 3.0V AD04 EOFF 失调误差 ±2.5 LSb VREF = 3.0V AD05 EGN 增益误差 ±2.0 LSb VREF = 3.0V AD06 VREF 参考电压 (3) 1.8 VDD V VREF = (VREF+ - VREF-) ( 注 5) AD07 VAIN 满量程范围 VSS VREF V AD08 ZAIN 模拟电压源推荐阻抗 10 k 如果输入引脚上有外部 0.01 F 电容, 则该值可以更高 * 这些参数仅为特征值, 未经测试 除非另外声明, 否则 典型值 栏中的数据均为 3.0V 25 C 条件下的值 这些参数仅作为设计参考, 未经测试 注 1: 总绝对误差包括积分误差 微分误差 失调误差和增益误差 2: A/D 转换结果不会因输入电压的增加而减小, 并且不会丢失编码 3: ADC VREF 来自选为参考输入引脚的外部 VREF VDD 引脚或 FVR 4: 当 ADC 关闭时, 它除了消耗泄漏电流外, 不消耗任何其他电流 掉电电流规范包括 ADC 模块消耗的任何泄漏电流 5: 选择的 FVR 电压必须是 2.048V 或 4.096V A/D 转换要求 标准工作条件 ( 除非另外声明 ) 参数编号 符号特性最小值典型值 最大值单位条件 AD130* TAD A/D 时钟周期 s 基于 TOSC A/D 内部 FRC 振荡器周期 s ADCS<1:0> = 11 (ADRC 模式 ) AD131 TCNV 转换时间 ( 不包括采集时间 ) (1) 9.5 TAD 将 GO/DONE 位置 1 以完成转换 AD132* TACQ 采集时间 5.0 s * 这些参数仅为特征值, 未经测试 除非另外声明, 否则 典型值 栏中的数据均为 3.0V 25 C 条件下的值 这些参数仅作为设计参考, 未经测试 注 1: ADRES 寄存器可在下一个 TCY 周期被读取 DS B_CN 第 174 页

175 图 24-12: A/D 转换时序 ( 正常模式 ) BSF ADCON, GO AD134 (TOSC/2 (1) ) Q4 AD131 AD130 1 TCY A/D 时钟 A/D 数据 ADRES 旧数据 新数据 ADIF 1 TCY GO DONE 采样 AD132 停止采样 注 1: 如果选择 FRC 作为 A/D 时钟源, 则在 A/D 时钟开始前要加上一个 TCY 时间, 用于执行 SLEEP 指令 图 24-13: A/D 转换时序 ( 休眠模式 ) BSF ADCON, GO AD134 Q4 (TOSC/2 + TCY (1) ) AD131 AD130 1 TCY A/D 时钟 A/D 数据 ADRES 旧数据 新数据 ADIF 1 TCY GO DONE 采样 AD132 停止采样 注 1: 如果选择 FRC 作为 A/D 时钟源, 则在 A/D 时钟开始前要加上一个 TCY 时间, 用于执行 SLEEP 指令 DS B_CN 第 175 页

176 25.0 直流和交流特性图表 当前没有可用图表 DS B_CN 第 176 页

177 26.0 开发支持 一系列软件及硬件开发工具对 PIC 单片机 (MCU) 和 dspic 数字信号控制器 (DSC) 提供支持 : 集成开发环境 - MPLAB X IDE 软件 编译器 / 汇编器 / 链接器 - MPLAB XC 编译器 - MPASM 汇编器 - MPLINK 目标链接器 / MPLIB 目标库管理器 - 适用于各种器件系列的 MPLAB 汇编器 / 链接器 / 库管理器 模拟器 - MPLAB X SIM 软件模拟器 仿真器 - MPLAB REAL ICE 在线仿真器 在线调试器 / 编程器 - MPLAB ICD 3 - PICkit 3 器件编程器 - MPLAB PM3 器件编程器 低成本演示 / 开发板 评估工具包及入门工具包 第三方开发工具 26.1 MPLAB X 集成开发环境软件 MPLAB X IDE 是适用于 Microchip 和第三方软硬件开发工具统一的通用图形用户界面, 可以在 Windows Linux 和 Mac OS X 上运行 MPLAB X IDE 是一款全新的 IDE, 它基于 NetBeans IDE, 包含许多免费的软件组件和插件, 适用于高性能的应用程序开发和调试 通过这一无缝交互的用户界面, 在不同工具之间的迁移以及从软件模拟器到硬件调试和编程工具的升级都变得极为简便 MPLAB X IDE 具有完善的项目管理 可视化的调用图 可配置的观察窗口以及包含代码补全功能和上下文菜单的功能丰富编辑器, 因此对于新用户来说非常灵活和友好 MPLAB X IDE 支持对多个项目使用多个工具和同时调试, 因此也完全可以满足经验丰富用户的需求 功能丰富的编辑器 : 彩色高亮显示语法 智能代码补全功能, 在输入代码时提供建议和提示 基于用户定义规则, 代码自动格式化 即时解析用户友好的可定制界面 : 完全可定制界面 : 工具栏 工具栏图标 窗口和窗口放置等 调用图窗口基于项目的工作空间 : 多个项目 多个工具 多种配置 同时调试会话文件历史和错误跟踪 : 本地文件历史功能 内建对 Bugzilla 缺陷跟踪系统的支持 DS B_CN 第 177 页

178 26.2 MPLAB XC 编译器 MPLAB XC 编译器是适用于 Microchip 所有 8 位 16 位和 32 位 MCU 以及 DSC 器件的完全 ANSI C 编译器 这些编译器提供强大的集成功能以及出色的代码优化功能, 且易于使用 MPLAB XC 编译器可在 Windows Linux 或 Mac OS X 上运行 为方便进行源代码级调试, 编译器提供了已针对 MPLAB X IDE 优化的调试信息 MPLAB XC 编译器的免费版支持所有器件和命令, 没有时间或存储容量限制, 且为大多数应用程序提供了充分的代码优化 MPLAB XC 编译器包含汇编器 链接器和实用程序 汇编器生成可重定位目标文件, 然后通过链接器将生成的可重定位目标文件与其他可重定位目标文件或归档文件归档或链接在一起, 进而生成可执行文件 MPLAB XC 编译器使用汇编器来生成目标文件 汇编器具有如下突出特性 : 支持全部器件指令集 支持定点和浮点数据 命令行接口 丰富的伪指令集 灵活的宏语言 与 MPLAB X IDE 兼容 26.3 MPASM 汇编器 MPASM 汇编器是全功能通用宏汇编器, 适用于 PIC10/ 12/16/18 MCU MPASM 汇编器可生成用于 MPLINK 目标链接器的可重定位目标文件 Intel 标准 HEX 文件 详细描述存储器使用状况和符号参考的 MAP 文件 包含源代码行及生成机器码的绝对 LST 文件以及用于调试的 COFF 文件 MPASM 汇编器具有如下特性 : 集成在 MPLAB X IDE 项目中 用户定义的宏可简化汇编代码 对多用途源文件进行条件汇编 允许完全控制汇编过程的指令 26.4 MPLINK 目标链接器 / MPLIB 目标库管理器 MPLINK 目标链接器组合由 MPASM 汇编器生成的可重定位目标文件 通过使用链接器脚本中的伪指令, 它还可链接预编译库中的可重定位目标文件 MPLIB 目标库管理器管理预编译代码库文件的创建和修改 当从源文件调用库中的一段子程序时, 只有包含此子程序的模块被链接到应用程序 这样可使大型库在许多不同应用中被高效地利用 目标链接器 / 库管理器具有如下特性 : 高效地连接单个的库而不是许多小文件 通过将相关的模块组合在一起来增强代码的可维护性 只要列出 替换 删除和抽取模块, 便可灵活地创建库 26.5 适用于各种器件系列的 MPLAB 汇编器 链接器和库管理器 MPLAB 汇编器为 PIC24 和 PIC32 MCU 以及 dspic DSC 器件从符号汇编语言生成可重定位机器码 MPLAB XC 编译器使用该汇编器生成目标文件 汇编器产生可重定位目标文件之后, 可将这些目标文件存档, 或与其他可重定位目标文件和存档链接以生成可执行文件 该汇编器有如下显著特性 : 支持整个器件指令集 支持定点和浮点数据 命令行接口 丰富的指令集 与 MPLAB X IDE 兼容 DS B_CN 第 178 页

179 26.6 MPLAB X SIM 软件模拟器 MPLAB X SIM 软件模拟器通过在指令级对 PIC MCU 和 dspic DSC 进行模拟, 可在 PC 主机环境下进行代码开发 对于任何给定的指令, 都可以对数据区进行检查或修改, 并通过一个全面的激励控制器来施加激励 可以将各寄存器记录在文件中, 以便进行进一步的运行时分析 跟踪缓冲区和逻辑分析器的显示使软件模拟器还能记录和跟踪程序的执行 I/O 的动作 大部分的外设及内部寄存器 MPLAB X SIM 软件模拟器完全支持使用 MPLAB XC 编译器以及 MPASM 和 MPLAB 汇编器的符号调试 该软件模拟器可用于在硬件实验室环境外灵活地开发和调试代码, 是一款完美且经济的软件开发工具 26.7 MPLAB REAL ICE 在线仿真器系统 MPLAB REAL ICE 在线仿真器系统是 Microchip 针对其闪存 DSC 和 MCU 器件推出的新一代高速仿真器 结合 MPLAB X IDE 易于使用且功能强大的图形用户界面, 该仿真器可对所有 8 位 16 位和 32 位 MCU 及 DSC 器件进行调试和编程 该仿真器通过高速 USB 2.0 接口与设计工程师的 PC 相连, 并利用与在线调试器系统兼容的连接器 (RJ-11) 或新型抗噪声 高速低压差分信号 (LVDS) 互连电缆 (CAT5) 与目标板相连 可通过 MPLAB X IDE 下载将来版本的固件, 对该仿真器进行现场升级 在同类仿真器中,MPLAB REAL ICE 的优势十分明显 : 全速仿真 运行时变量观察 跟踪分析 复杂断点 逻辑探针 耐用的探针接口及较长 ( 长达 3 米 ) 的互连电缆 26.8 MPLAB ICD 3 在线调试器系统 MPLAB ICD 3 在线调试器系统是 Microchip 成本效益最高的高速硬件调试器 / 编程器, 适用于 Microchip 的闪存 DSC 和 MCU 器件 结合 MPLAB X IDE 功能强大但易于使用的图形用户界面, 该调试器可对 PIC 闪存单片机和 dspic DSC 进行调试和编程 MPLAB ICD 3 在线调试器通过高速 USB 2.0 接口与设计工程师的 PC 相连, 并利用与 MPLAB ICD 2 或 MPLAB REAL ICE 系统兼容的连接器 (RJ-11) 与目标板相连 MPLAB ICD 3 支持所有 MPLAB ICD 2 连接器 26.9 PICkit 3 在线调试器 / 编程器 结合 MPLAB X IDE 功能强大的图形用户界面,MPLAB PICkit 3 可对 PIC 闪存单片机和 dspic 数字信号控制器进行调试和编程, 且价位较低 MPLAB PICkit 3 通过全速 USB 接口与设计工程师的 PC 相连, 并利用 Microchip 调试连接器 (RJ-11)( 与 MPLAB ICD 3 和 MPLAB REAL ICE 兼容 ) 与目标板相连 连接器使用两个器件 I/O 引脚和复位线来实现在线调试和在线串行编程 (In- Circuit Serial Programming, ICSP ) PICkit 3 Debug Express 包括 PICkit 3 演示板和单片机 连接电缆和光盘 ( 内含用户指南 课程 教程 编译器和 MPLAB IDE 软件 ) MPLAB PM3 器件编程器 MPLAB PM3 器件编程器是一款符合 CE 规范的通用器件编程器, 在 VDDMIN 和 VDDMAX 点对其可编程电压进行校验以确保可靠性最高 它有一个用来显示菜单和错误消息的大 LCD 显示器 (128 x 64), 以及一个支持各种封装类型的可拆卸模块化插槽装置 编程器标准配置中带有一根 ICSP 电缆 在单机模式下, MPLAB PM3 器件编程器不必与 PC 相连即可对 PIC MCU 和 dspic DSC 器件进行读取 校验和编程 在该模式下它还可设置代码保护 MPLAB PM3 通过 RS-232 或 USB 电缆连接到 PC 主机上 MPLAB PM3 具备高速通信能力以及优化算法, 可对具有大存储器的器件进行快速编程 它还包含了 MMC 卡, 用于文件存储及数据应用 DS B_CN 第 179 页

180 26.11 演示 / 开发板 评估工具包及入门工具包 有许多演示 开发和评估板可用于各种 PIC MCU 和 dspic DSC, 实现对全功能系统的快速应用开发 大多数的演示 开发和评估板都有实验布线区, 供用户添加定制电路 ; 还有应用固件和源代码, 用于检查和修改 这些板支持多种功能部件, 包括 LED 温度传感器 开关 扬声器 RS-232 接口 LCD 显示器 电位计和附加 EEPROM 存储器 演示和开发板可用于教学环境, 在实验布线区设计定制电路, 从而掌握各种单片机应用 除了 PICDEM 和 dspicdem 演示 / 开发板系列电路外,Microchip 还有一系列评估工具包和演示软件, 适用于模拟滤波器设计 KEELOQ 数据安全产品 IC CAN IrDA PowerSmart 电池管理 SEEVAL 评估系统 ADC 流速传感器, 等等 同时还提供入门工具包, 其中包含体验指定器件功能所需的所有软硬件 通常提供单个应用以及调试功能, 都包含在一块电路板上 关于演示 开发和评估工具包的完整列表, 请访问 Microchip 网站 ( 第三方开发工具 Microchip 还提供一些来自第三方供应商的优秀开发工具 这些工具均经过精心挑选, 功能独特, 物有所值 SoftLog 和 CCS 等公司提供的器件编程器和量产编程器 Gimpel 和 Trace Systems 等公司提供的软件工具 Saleae 和 Total Phase 等公司提供的协议分析器 MikroElektronika Digilent 和 Olimex 等公司提供的演示板 EZ Web Lynx WIZnet 和 IPLogika 等公司提供的嵌入式以太网解决方案 DS B_CN 第 180 页

181 27.0 封装信息 27.1 封装标识信息 6 引脚 SOT-23 示例 XXNN LA11 8 引脚 PDIP(300 mil) 示例 XXXXXXXX XXXXXNNN YYWW 10F320 I/P e3 07Q 引脚 DFN(2x3x0.9 mm) 示例 BAA PIN 1 PIN 1 图注 : XX...X 客户指定信息 Y 年份代码 ( 日历年的最后一位数字 ) YY 年份代码 ( 日历年的最后两位数字 ) WW 星期代码 ( 一月一日的星期代码为 01 ) NNN e3 以字母数字排序的追踪代码雾锡 (Matte Tin, Sn) 的 JEDEC 无铅标志 * 表示无铅封装 JEDEC 无铅标志 ( e3 ) 标示于此种封装的外包装上 注 : Microchip 器件编号如果无法在同一行内完整标注, 将换行标出, 因此会限制表示客户信息的字符数 DS B_CN 第 181 页

182 表 27-1: 器件编号 PIC10F322(T)-I/MC PIC10F322(T)-E/MC PIC10F320(T)-I/MC PIC10F320(T)-E/MC PIC10LF322(T)-I/MC PIC10LF322(T)-E/MC PIC10LF320(T)-I/MC PIC10LF320(T)-E/MC 8 引脚 2x3 DFN (MC) 顶部标识 标识 BAA BAB BAC BAD BAF BAG BAH BAJ 表 27-2: 6 引脚 SOT-23 (OT) 封装顶部 标识 器件编号 标识 PIC10F322(T)-I/OT LA/LJ PIC10F322(T)-E/OT LB/LK PIC10F320(T)-I/OT LC PIC10F320(T)-E/OT LD PIC10LF322(T)-I/OT LE PIC10LF322(T)-E/OT LF PIC10LF320(T)-I/OT LG PIC10LF320(T)-E/OT LH DS B_CN 第 182 页

183 27.2 封装详细信息以下部分将介绍各种封装的技术细节 6 引脚塑封小外形晶体管封装 (OT) [SOT-23] 注 : 最新封装图请至 查看 Microchip 封装规范 b N 4 E1 E PIN1IDBY LASER MARK e e1 D A A2 c φ A1 L L1 DS B_CN 第 183 页

184 6 引脚塑封小外形晶体管封装 (OT) [SOT-23] 注 : 最新封装图请至 查看 Microchip 封装规范 DS B_CN 第 184 页

185 8 引脚塑封双列直插式封装 (P) 主体 300 mil [PDIP] 注 : 最新封装图请至 查看 Microchip 封装规范 N NOTE 1 E D E A A2 A1 L c b1 b e eb DS B_CN 第 185 页

186 8 引脚塑封双列扁平无脚封装 (MC) 主体 2x3x0.9 mm [DFN] 注 : 最新封装图请至 查看 Microchip 封装规范 N D L b e N K E E2 EXPOSED PAD NOTE NOTE 1 D2 TOP VIEW BOTTOM VIEW A A3 A1 NOTE 2 DS B_CN 第 186 页

187 8 引脚塑封双列扁平无脚封装 (MC) 主体 2x3x0.9 mm [DFN] 注 : 最新封装图请至 查看 Microchip 封装规范 DS B_CN 第 187 页

188 附录 A: 数据手册版本历史 版本 A (2011 年 7 月 ) 本文档的初始版本 版本 B (2014 年 2 月 ) 更新了电气规范, 新增了表格, 并且进行了一些细微的修改 DS B_CN 第 188 页

189 MICROCHIP 网站 Microchip 网站 ( 为客户提供在线支持 客户可通过该网站方便地获取文件和信息 只要使用常用的互联浏览器即可访问 网站提供以下信息 : 产品支持 数据手册和勘误表 应用笔记和示例程序 设计资源 用户指南以及硬件支持文档 最新的软件版本以及归档软件 一般技术支持 常见问题解答 (FAQ) 技术支持请求 在线讨论组以及 Microchip 顾问计划成员名单 Microchip 业务 产品选型和订购指南 最新 Microchip 新闻稿 研讨会和活动安排表 Microchip 销售办事处 代理商以及工厂代表列表 客户支持 Microchip 产品的用户可通过以下渠道获得帮助 : 代理商或代表 当地销售办事处 应用工程师 (FAE) 技术支持客户应联系其代理商 代表或应用工程师 (FAE) 寻求支持 当地销售办事处也可为客户提供帮助 本文档后附有销售办事处的联系方式 也可通过 获得网上技术支持 变更通知客户服务 Microchip 的变更通知客户服务有助于客户了解 Microchip 产品的最新信息 注册客户可在他们感兴趣的某个产品系列或开发工具发生变更 更新 发布新版本或勘误表时, 收到电子邮件通知 欲注册, 请登录 Microchip 网站 在 支持 (Support) 下, 点击 变更通知客户 (Customer Change Notification) 服务后按照注册说明完成注册 DS B_CN 第 189 页

190 产品标识体系 欲订货或获取价格 交货等信息, 请与我公司生产厂或各销售办事处联系 部件编号 [X] (1) - X /XX XXX 器件 : 器件 卷带式选项 温度范围 封装 定制编号 PIC10F320 PIC10LF320 PIC10F322 和 PIC10LF322 卷带式选项 : 空白 = 标准封装 ( 料管或托盘 ) T (1) = 卷带式 示例 : a) PIC10LF320T - I/OT 卷带式, 工业级温度, SOT-23 封装 b) PIC10F322 - I/P 工业级温度, PDIP 封装 c) PIC10F322 - E/MC 扩展级温度, DFN 封装 温度范围 : I = -40 C 至 +85 C( 工业级 ) E = -40 C 至 +125 C( 扩展级 ) 封装 : OT = SOT-23 P = PDIP MC = DFN 定制编号 : QTP SQTP 代码或特殊要求 ( 其它情况均为空白 ) 注 1: 卷带式标识符仅出现在目录元器件编号说明中, 此标识符用于订购用途, 不会印刷于器件封装上 请与当地的销售办事处联系, 确认是否提供卷带式包装 DS B_CN 第 190 页

191 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意 甚至是非法破坏代码保护功能的行为 就我们所知, 所有这些行为都不是以 Microchip 数据手册中规定的操作规范来使用 Microchip 产品的 这样做的人极可能侵犯了知识产权 Microchip 愿与那些注重代码完整性的客户合作 Microchip 或任何其他半导体厂商均无法保证其代码的安全性 代码保护并不意味着我们保证产品是 牢不可破 的 代码保护功能处于持续发展中 Microchip 承诺将不断改进产品的代码保护功能 任何试图破坏 Microchip 代码保护功能的行为均可视为违反了 数字器件千年版权法案 (Digital Millennium Copyright Act) 如果这种行为导致他人在未经授权的情况下, 能访问您的软件或其他受版权保护的成果, 您有权依据该法案提起诉讼, 从而制止这种行为 提供本文档的中文版本仅为了便于理解 请勿忽视文档中包含的英文部分, 因为其中提供了有关 Microchip 产品性能和使用情况的有用信息 Microchip Technology Inc. 及其分公司和相关公司 各级主管与员工及事务代理机构对译文中可能存在的任何差错不承担任何责任 建议参考 Microchip Technology Inc. 的英文原版文档 本出版物中所述的器件应用信息及其他类似内容仅为您提供便利, 它们可能由更新之信息所替代 确保应用符合技术规范, 是您自身应负的责任 Microchip 对这些信息不作任何明示或暗示 书面或口头 法定或其他形式的声明或担保, 包括但不限于针对其使用情况 质量 性能 适销性或特定用途的适用性的声明或担保 Microchip 对因这些信息及使用这些信息而引起的后果不承担任何责任 如果将 Microchip 器件用于生命维持和 / 或生命安全应用, 一切风险由买方自负 买方同意在由此引发任何一切伤害 索赔 诉讼或费用时, 会维护和保障 Microchip 免于承担法律责任, 并加以赔偿 在 Microchip 知识产权保护下, 不得暗中或以其他方式转让任何许可证 QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV == ISO/TS == 商标 Microchip 的名称和徽标组合 Microchip 徽标 dspic FlashFlex KEELOQ KEELOQ 徽标 MPLAB PIC PICmicro PICSTART PIC 32 徽标 rfpic SST SST 徽标 SuperFlash 和 UNI/O 均为 Microchip Technology Inc. 在美国和其他国家或地区的注册商标 FilterLab Hampshire HI-TECH C Linear Active Thermistor MTP SEEVAL 和 The Embedded Control Solutions Company 均为 Microchip Technology Inc. 在美国的注册商标 Silicon Storage Technology 为 Microchip Technology Inc. 在除美国外的国家或地区的注册商标 Analog-for-the-Digital Age Application Maestro BodyCom chipkit chipkit 徽标 CodeGuard dspicdem dspicdem.net dspicworks dsspeak ECAN ECONOMONITOR FanSense HI-TIDE In-Circuit Serial Programming ICSP Mindi MiWi MPASM MPF MPLAB Certified 徽标 MPLIB MPLINK mtouch Omniscient Code Generation PICC PICC-18 PICDEM PICDEM.net PICkit PICtail REAL ICE rflab Select Mode SQI Serial Quad I/O Total Endurance TSHARC UniWinDriver WiperLock ZENA 和 Z-Scale 均为 Microchip Technology Inc. 在美国和其他国家或地区的商标 SQTP 是 Microchip Technology Inc. 在美国的服务标记 GestIC 和 ULPP 为 Microchip Technology Inc. 的子公司 Microchip Technology Germany II GmbH & Co. & KG 在除美国外的国家或地区的注册商标 在此提及的所有其他商标均为各持有公司所有 2014, Microchip Technology Inc. 版权所有 ISBN: Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州 Gresham 的全球总部 设计和晶圆生产厂及位于美国加利福尼亚州和印度的设计中心均通过了 ISO/TS-16949:2009 认证 Microchip 的 PIC MCU 与 dspic DSC KEELOQ 跳码器件 串行 EEPROM 单片机外设 非易失性存储器和模拟产品严格遵守公司的质量体系流程 此外, Microchip 在开发系统的设计和生产方面的质量体系也已通过了 ISO 9001:2000 认证 DS B_CN 第 191 页

192 全球销售及服务网点 美洲 亚太地区 亚太地区 欧洲 公司总部 Corporate Office 2355 West Chandler Blvd. Chandler, AZ Tel: Fax: 技术支持 : support 网址 : 亚特兰大 Atlanta Duluth, GA Tel: Fax: 奥斯汀 Austin, TX Tel: 波士顿 Boston Westborough, MA Tel: Fax: 芝加哥 Chicago Itasca, IL Tel: Fax: 克里夫兰 Cleveland Independence, OH Tel: Fax: 达拉斯 Dallas Addison, TX Tel: Fax: 底特律 Detroit Novi, MI Tel: 休斯敦 Houston, TX Tel: 印第安纳波利斯 Indianapolis Noblesville, IN Tel: Fax: 洛杉矶 Los Angeles Mission Viejo, CA Tel: Fax: 纽约 New York, NY Tel: 圣何塞 San Jose, CA Tel: 加拿大多伦多 Toronto Tel: Fax: 亚太总部 Asia Pacific Office Suites , 37th Floor Tower 6, The Gateway Harbour City, Kowloon Hong Kong Tel: Fax: 中国 - 北京 Tel: Fax: 中国 - 成都 Tel: Fax: 中国 - 重庆 Tel: Fax: 中国 - 杭州 Tel: Fax: 中国 - 香港特别行政区 Tel: Fax: 中国 - 南京 Tel: Fax: 中国 - 青岛 Tel: Fax: 中国 - 上海 Tel: Fax: 中国 - 沈阳 Tel: Fax: 中国 - 深圳 Tel: Fax: 中国 - 武汉 Tel: Fax: 中国 - 西安 Tel: Fax: 中国 - 厦门 Tel: Fax: 中国 - 珠海 Tel: Fax: 台湾地区 - 高雄 Tel: 台湾地区 - 台北 Tel: Fax: 台湾地区 - 新竹 Tel: Fax: 澳大利亚 Australia - Sydney Tel: Fax: 印度 India - Bangalore Tel: Fax: 印度 India - New Delhi Tel: Fax: 印度 India - Pune Tel: 日本 Japan - Osaka Tel: Fax: 日本 Japan - Tokyo Tel: Fax: 韩国 Korea - Daegu Tel: Fax: 韩国 Korea - Seoul Tel: Fax: 或 马来西亚 Malaysia - Kuala Lumpur Tel: Fax: 马来西亚 Malaysia - Penang Tel: Fax: 菲律宾 Philippines - Manila Tel: Fax: 新加坡 Singapore Tel: Fax: 泰国 Thailand - Bangkok Tel: Fax: 奥地利 Austria - Wels Tel: Fax: 丹麦 Denmark-Copenhagen Tel: Fax: 法国 France - Paris Tel: Fax: 德国 Germany - Dusseldorf Tel: 德国 Germany - Munich Tel: Fax: 德国 Germany - Pforzheim Tel: 意大利 Italy - Milan Tel: Fax: 意大利 Italy - Venice Tel: 荷兰 Netherlands - Drunen Tel: Fax: 波兰 Poland - Warsaw Tel: 西班牙 Spain - Madrid Tel: Fax: 瑞典 Sweden - Stockholm Tel: 英国 UK - Wokingham Tel: Fax: /25/14 DS B_CN 第 192 页

第5章:汇编语言程序设计

第5章:汇编语言程序设计 第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令

More information

文件名

文件名 MICROCHIP PIC10F200/202/204/206 6 8 FLASH PIC10F200 PIC10F202 PIC10F204 PIC10F206 RISC CPU 33 12 8 8 4MHz 1 s 4MHz 1% TM ICSP TM ICD POR DRT WDT RC MCLR I/O /CMOS < 350 A @ 2V 4 MHz 100 na @ 2V FLASH 10000

More information

33023A.book(31026A_cn.fm)

33023A.book(31026A_cn.fm) 26 第 26 章看门狗定时器与休眠模式 目录 看门狗定时器与休眠模式 本章包括下面一些主要内容 : 26.1 简介... 26-2 26.2 控制寄存器... 26-3 26.3 看门狗定时器 (WDT) 的操作... 26-4 26.4 休眠省电模式... 26-7 26.5 初始化... 26-9 26.6 设计技巧... 26-10 26.7 相关应用笔记... 26-11 26.8 版本历史...

More information

PIC16F F MPLAB 08 16F LED 15 LED

PIC16F F MPLAB 08 16F LED 15 LED PIC16F877 PIC16F877 03 16F877 05 06 MPLAB 08 16F877 13 LED 15 LED 17 20 24 2 PIC16F877 PIC16F877 DIP VDD VSS CLOCK CPU :,AND,OR,XOR ROM: CPU ROM RAM: CPU,CPU I/O:CPU, CPU,, 16F877 RAM 512 128 Bank Bank

More information

2.5 idlocs PIC idloc idloc 0x1234 ; 0x config idloc HEX errorlevel errorlevel Error (Warning) Message HEX 3-14 errorlevel

2.5 idlocs PIC idloc idloc 0x1234 ; 0x config idloc HEX errorlevel errorlevel Error (Warning) Message HEX 3-14 errorlevel 3.2.3 MPASM PIC 35 35 #include include #include MPASM include PIC MPLAB C:\Program Files\MPLAB IDE\MCHIP_Tools PIC.inc 3-01 #include ; PIC16F877A #include math.asm ; 3-01 MPASM MPLAB

More information

ICD ICD ICD ICD ICD

ICD ICD ICD ICD ICD MPLAB ICD2 MPLAB ICD2 PIC MPLAB-IDE V6.0 ICD2 usb PC RS232 MPLAB IDE PC PC 2.0 5.5V LED EEDATA MPLAB ICD2 Microchip MPLAB-IDE v6.0 Windows 95/98 Windows NT Windows 2000 www.elc-mcu.com 1 ICD2...4 1.1 ICD2...4

More information

INCF SEC1,F ; 將 SEC1+1 作查表取回對應數字 MOVF SEC1,W banksel STRING1 banksel PORTB RETFIE run_sec2: MOVF SEC2,W SUBLW.5 GOTO run_min ; 將秒個位數歸 0 CLRF SEC1 MOVL

INCF SEC1,F ; 將 SEC1+1 作查表取回對應數字 MOVF SEC1,W banksel STRING1 banksel PORTB RETFIE run_sec2: MOVF SEC2,W SUBLW.5 GOTO run_min ; 將秒個位數歸 0 CLRF SEC1 MOVL ;************************************************ ; Null Clock REV:1.0 by Jed ; www.xuan.idv.tw ;************************************************ INCLUDE P16F84A.INC LIST P=16F84A,R=Dec CONFIG _XT_OSC&_WDT_OFF

More information

2 PIC PIC 1 / CPU PIC MCU PIC RC

2 PIC PIC 1 / CPU PIC MCU PIC RC 2 PIC PIC 1 /... 2-2 2... 2-3 3... 2-4 4... 2-4 5... 2-4 6 CPU... 2-5 7 PIC MCU... 2-6 8 PIC16... 2-6 9... 2-7 10... 2-7 11 RC... 2-7 12... 2-8 13... 2-8 14 NOP... 2-9 15 PMD... 2-9 16... 2-10 17 WDTWDT...

More information

DESCRIPTION

DESCRIPTION 8Bit CMOS OTP MCU 器件特性 RISC CPU: 仅需 35 条指令大部分指令仅需一个时钟周期存储器 1K x14 OTP ROM 48 Byte RAM 4 级堆栈时钟系统内置振荡 : Max: 4MHz ±2%.(3.3~5.5V) Max: 2MHz±2%.(2.4~3.3V) RC 振荡 : 外部晶体振荡 : IO 引脚配置输入输出双向 IO 口 : RA RC 单向输入引脚

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

untitled

untitled EDM12864-GR 1 24 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3 4. -------------------------------------------------------6

More information

Section1_16bit Arc.ppt

Section1_16bit Arc.ppt 16-bit Elite Program 2009 Summer Section-1 Microchip 16-bit 2005 Microchip Technology Incorporated. All Rights Reserved. Slide 1 MCU CPU (NOP),, (Data Memory), I/O CPU w. ALU/Working Reg. Data Mem. Data

More information

DPJJX1.DOC

DPJJX1.DOC 8051 111 2K 1 2 3 ' ' 1 CPU RAM ROM / A/D D/A PC CPU 40 68 10 20 8 51 PIII 8051 2 MCS51 8051 8031 89C51 8051 8031 89C51? MCS51 INTEL INTEL 8031 8051 8751 8032 8052 8752 8051 8051 8051 MCS51 8031 8031

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

AN579

AN579 深圳市英锐恩科技有限公司 单片机集成方案全方位解决服务商 优质智能电子产品 芯 方案解决商 Microchip 产品用户参考手册 深圳市英锐恩科技有限公司 ENROO-TECH(SHENZHEN)CO.,LTD 中国 深圳市福田区福华路嘉汇新城汇商中心 27 楼 2701 Enroo-Tech Technologies CO., Limited Light-Tech International Limited

More information

MDT10F630/ MDT10F676

MDT10F630/ MDT10F676 MDT10F271 数据手册 ( 版本 V1.2) 1.0 器件概述 8 位 MTP CMOS 单片机 存储器 : MTP 空间 :2K*14 位 可经受 1000 次写操作 SRAM 空间 :128 字节 8 级深硬件堆栈 I/O 引脚配置具有独立方向控制的 11 个 I/O 引脚 :PA 口 5 个 PC 口 6 个一个只能作输入的 PA3 口 高灌 / 拉电流可直接驱动 LED PA 端口引脚电平变化中断

More information

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0 SH79F6431 1. SH79F6431 1T 8051 FLASH SH79F JET51 Keil µ vision JTAG 1.1. SH79F6431 LQFP64 1.2. (Target Board) SH79F6431 1 V 1.0 1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F6431 1 2 1 B. 1(VCC/GND)

More information

目录

目录 ALTERA_CPLD... 3 11SY_03091... 3 12SY_03091...4....5 21 5 22...8 23..10 24..12 25..13..17 3 1EPM7128SLC.......17 3 2EPM7032SLC.......18 33HT46R47......19..20 41..20 42. 43..26..27 5151DEMO I/O...27 52A/D89C51...28

More information

T stg -40 to 125 C V cc 3.8V V dc RH 0 to 100 %RH T a -40 to +125 C -0.3 to 3.6V V -0.3 to VDD+0.3 V -10 to +10 ma = 25 = 3V) VDD

T stg -40 to 125 C V cc 3.8V V dc RH 0 to 100 %RH T a -40 to +125 C -0.3 to 3.6V V -0.3 to VDD+0.3 V -10 to +10 ma = 25 = 3V) VDD 1/16 T stg -40 to 125 C V cc 3.8V V dc RH 0 to 100 %RH T a -40 to +125 C -0.3 to 3.6V V -0.3 to VDD+0.3 V -10 to +10 ma (@T = 25 C, @Vdd = 3V) VDD 1.8 3.0 3.6 V (1) 0.08 0.3 µa Idd 300 450 500 µa 0.25

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

70046d_cn.book(70055c_cn.fm)

70046d_cn.book(70055c_cn.fm) 第 8 章复位 目录 本章包括下列主题 : 8.1 简介...8-2 8.2 复位时的时钟源选择... 8-5 8.3 POR: 上电复位... 8-5 8.4 外部复位 (EXTR)... 8-7 8.5 软件复位指令 (SWR)... 8-7 8.6 看门狗超时复位 (WDTR)... 8-7 8.7 欠压复位 (BOR)... 8-8 8.8 使用 RCON 状态位... 8-10 8.9 器件复位时间...

More information

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC LCD PIC 单片机解决方案 集成 LCD 驱动器模块的 PIC 单片机 www.microchip.com/lcd ,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC,

More information

Tel:010-62981668-2930 1

Tel:010-62981668-2930  1 Access 93C46 with SPI function V1.0.0 Jan. 31, 2005 http://www.sunplusmcu.com Tel:010-62981668-2930 http://www.sunplusmcu.com E-mail:[email protected] 1 0 0...2 1...3 2...4 2.1...4 2.2...5 3...6 3.1 AT93C46...6

More information

1 CPU

1 CPU 2000 Tel 82316285 82317634 Mail [email protected] 1 CPU 2 CPU 7 72 A B 85 15 3 1/2 M301 2~17 : 3/4 1/2 323 IBM PC 1. 2. 3. 1. 2. 3. 1.1 Hardware Software 1.2 M3 M2 M1 1.2 M3 M1 M2 M2 M1 M1 M1 1.2 M3 M1

More information

701PIC Introduction to PICMicro MCUs

701PIC Introduction to PICMicro MCUs 701 PIC PICmicro MCU 介绍 PIC16 系列产品的汇编编程 HANDS-ON Microchip Technology Incorporated. All Rights Reserved. 701 PIC PIC MCU - Introduction to Programming 1 日程 讲述部分 讲述 90 分钟 休息 20 分钟 实验部分 1 2 个实验 60 分钟 休息

More information

USB解决方案.ppt

USB解决方案.ppt USB USB? RS232 USB USB HID U modem ADSL cable modem IrDA Silabs USB CP210x USB UART USB RS-232 USB MCU 15 USB 12 FLASH MCU 3 USB MCU USB MCU C8051F32x 10 ADC 1.5%, Vref CPU 25MIPS 8051 16KB Flash -AMUX

More information

目 录

目 录 1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12

More information

MDT10F630/ MDT10F676

MDT10F630/ MDT10F676 YS65F804 数据手册 ( 版本 V1.0) 1.0 器件概述 存储器 : MTP 空间 :2K*14 位 可经受 1000 次写操作 SRAM 空间 :128 字节 CS SRAM:32 字节 8 级深硬件堆栈 I/O 引脚配置 具有独立方向控制的 6 个 I/O 引脚 :PA 口 6 个 PA3: 外部复位, 当设定为输出时为开漏输出模式 (open drain) PA 端口独立的可编程弱上

More information

MDT10F630/ MDT10F676

MDT10F630/ MDT10F676 MT10F685 数据手册 ( 版本 V1.3) 1.0 器件概述 8 位 FLASH CMOS 单片机 存储器 : FLASH 空间 :4K*14 位 可经受 10 万次写操作 EEPROM 空间 :256 字节 可经受 100 万次写操作 SRAM 空间 :256 字节 8 级深硬件堆栈 I/O 引脚配置具有独立方向控制的 22 个 I/O 引脚 :PA 口 6 个 PB 口 8 个 PC 口

More information

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x 115 AVR W.V. Awdrey ATMEL AVR PIC AVR PIC AVR RISC AVR PIC AVR AVR AVR AVR AVR ATtiny15 AVR AVR AVR RAM ROM 121 116 122 ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r31 3 16 X Y Z 6-1 118 7 0

More information

PowerPoint Presentation

PowerPoint Presentation TOEFL Practice Online User Guide Revised September 2009 In This Guide General Tips for Using TOEFL Practice Online Directions for New Users Directions for Returning Users 2 General Tips To use TOEFL Practice

More information

untitled

untitled CPU!! 00-11-8 Liping zhang, Tsinghua 1 : ADD(r1, r, r) CMPLEC(r, 5, r0) MUL(r1, r, r) SUB(r1, r, r5) ADD r, ( ) r CMP. CMP r.. t t + 1 t + t + t + t + 5 t + 6 IF( ) ADD CMP MUL SUB RF NOP ADD CMP MUL SUB

More information

MDT10F630/ MDT10F676

MDT10F630/ MDT10F676 MT10F272 数据手册 ( 版本 V1.0) 1 器件概述 8 位 MTP CMOS 单片机 存储器 : MTP 空间 :2K*14 位 可经受 1000 次操作 SRAM 空间 :128 字节 8 级深硬件堆栈 I/O 引脚配置具有独立方向控制的 14 个 I/O 引脚 :PA 口 5 个 PC 口 8 个 PA3 开漏输出, 带内部上拉 高灌 / 拉电流可直接驱动 LE PA 端口引脚电平变化中断

More information

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe   Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L 1 SH88F516 8051 64K FLASH 1024 EEPROM SH88F516 JET51 S-Lab Keil µ vision ISP51 Keil µ vision ISP51 ISP51 PC RS232 MCU SH88F516 SH88F516 1.1 SH88F516 1.1 SH88F516 SH88Fxx: QFP44, DIP40 RAM Flash E2 ADC

More information

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C AUTOMATIC TROLLEY H K Hwang K K Chen J-S Lin S-C Wang M-L Li C-C Lin W-B Lin Dept. Of Electrical Engineering Far East College ABSTRACT This paper proposes an automatic trolley which can move automatically

More information

Microsoft Word - ~ doc

Microsoft Word - ~ doc EEPROM 功能使用方法 1 适用产品 : 1.1 SM39R16A2/ SM39R12A2/ SM39R08A2 1.2 SM39R4051/ SM39R2051 1.3 SM39R04G1/ SM39R02G1 2 EEPROM 功能概述 : 2.1 使用 code flash 仿真为 Internal EEPROM, 在程序执行时, 可将 code flash 作为 data flash 储存数据使用

More information

Microsoft Word - MSP430 Launchpad 指导书.docx

Microsoft Word - MSP430 Launchpad 指导书.docx Contents 3... 9... 14 MSP430 LAUNCHPAD 指导书 3 第一部分第一个工程 New Project File > New > CCS Project Project name: ButtonLED Device>Family: MSP430 Variant: MSP430G2553 Project templates and examples : Empty Project

More information

12232A LED LED LED EL EL CCFL EL CCF

12232A LED LED LED EL EL CCFL EL CCF 12232A 0 50-20 +70-30 +85 LED LED LED EL EL CCFL EL CCF 122 x 32 1/32Duty 1/5Bias 6:00 STN( ), EL LED EL/100VAC 400HZ LED/4.2VDC 1 / VDD-VSS 0 6.5 V Ta=25 LCD VDD-V0 0 12.0 V V1 0 VDD V VDD-VSS - 4.75

More information

四位微控制器ML64168_ _.doc

四位微控制器ML64168_ _.doc SSSC /4168P 2005 8 4 4, (ADC), LCD Driver, (Buzzer), 1 3 CPU17 CPU 26 33 42 45 48 73 79 85 89 A/D 92 111 125 128 131 SSU4168P 133 143 A: / 153 B: 156 C: 158 D: 160 E: 161 F: 163 G: PAD 167 2 ,, 11 4 CMOS

More information

... 错误! 未定义书签 DATASHEET 特性 程序存储器 脚位图 特殊功能寄存器 地址映射 SFR,BANK SFR,BANK

... 错误! 未定义书签 DATASHEET 特性 程序存储器 脚位图 特殊功能寄存器 地址映射 SFR,BANK SFR,BANK DATASHEET page1 ... 错误! 未定义书签 DATASHEET... 1 1 特性... 9 1.1 程序存储器... 10 1.2 脚位图... 12 2 特殊功能寄存器... 17 2.1 地址映射... 17 2.1.1 SFR,BANK0... 17 2.1.2 SFR,BANK1... 18 2.1.3 SFR,BANK2... 20 2.1.4 STATUS 寄存器, 地址

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 [email protected] C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 GHz 世界通用 ISM 频段, 它集

XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 GHz 世界通用 ISM 频段, 它集 XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 2.400--2.483GHz 世界通用 ISM 频段, 它集成射频收发通路 频率发生器 晶体振荡器 调制解调器等功能模块, 并且支持一对多组网和带 ACK 的通信模式

More information

Microsoft PowerPoint - STU_EC_Ch08.ppt

Microsoft PowerPoint - STU_EC_Ch08.ppt 樹德科技大學資訊工程系 Chapter 8: Counters Shi-Huang Chen Fall 2010 1 Outline Asynchronous Counter Operation Synchronous Counter Operation Up/Down Synchronous Counters Design of Synchronous Counters Cascaded Counters

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

P4VM800_BIOS_CN.p65

P4VM800_BIOS_CN.p65 1 Main H/W Monitor Boot Security Exit System Overview System Time System Date [ 17:00:09] [Fri 02/25/2005] BIOS Version : P4VM800 BIOS P1.00 Processor Type : Intel (R) Pentium (R) 4 CPU 2.40 GHz Processor

More information

JLX

JLX PRODUCT:LCD MODULE. Model No.: JLX177-006 Product Type: 1.77 inch QVGA TFT Modoule. 产品规格书 晶联讯研发研发部 : Written By Checked By Approved By 客户名称 : 结构电子核准 地址 : 深圳市宝安区西乡宝安大道东华工业区 A3 栋 6 楼电话 :0755-29784961 Http://www.jlxlcd.cn

More information

投影片 1

投影片 1 2 理 1 2-1 CPU 2-2 CPU 理 2-3 CPU 類 2 什 CPU CPU Central Processing Unit ( 理 ), 理 (Processor), CPU 料 ( 例 ) 邏 ( 例 ),, 若 了 CPU, 3 什 CPU CPU 了, 行, 利 CPU 力 來 行 4 什 CPU 5 2-2-1 CPU CPU 了 (CU, Control Unit) / 邏

More information

Section 5. Flash Programming

Section 5. Flash  Programming 第 5 章闪存编程 目录 本章包括下列主题 : 5.1 简介...5-2 5.2 表指令操作... 5-2 5.3 控制寄存器... 5-5 5.4 运行时自编程 (RTSP)... 5-8 5.5 寄存器映射... 5-16 5.6 相关应用笔记... 5-17 5.7 版本历史... 5-18 5 闪存编程 2011 Microchip Technology Inc. DS70609C_CN 第

More information

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica CP Chip Power ARM Cortex-M3 (STM32F) ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplication and hardware

More information

ARM JTAG实时仿真器安装使用指南

ARM JTAG实时仿真器安装使用指南 ARM JTAG Version 1.31 2003. 11. 12 ARM JTAG ARM JTAG.3 ARM 2.1.4 2.2.4 ARM JTAG 3.1 18 3.2 18 3.2.1 Multi-ICE Server.18 3.2.2 ADS..21 ARM JTAG 4.1 Multi-ICE Server 33 4.1.1 Multi-ICE Server..... 33 4.1.2

More information

() () () () () () () () DDRAM () II

() () () () () () () () DDRAM () II 液晶模块说明书 SPEC NO YM2232A REV NO. 液晶显示模块产品说明书 产品类型 : 产品型号 : 产品描述 : 标准产品 YM2232A 22x32 图形点阵模块, 控制器 :SED52,LED 背光 客户名称 : 客户确认 : 编写 : Dexun Zou 审核 : HCC 批准 : Jingxi Yang 发行日期 : 22.8 大连佳显电子有限公司 地址 : 大连市沙河口区工华街

More information

Application Note Transient Voltage Suppressors (TVS) for 表 1 VISHAY 的 SM6T 系列的电特性 25 C 型号 击穿电压 器件标识码 V BR AT I T I T 测试电流 (ma) 关态电压 V RM 漏电流 I RM AT V

Application Note Transient Voltage Suppressors (TVS) for 表 1 VISHAY 的 SM6T 系列的电特性 25 C 型号 击穿电压 器件标识码 V BR AT I T I T 测试电流 (ma) 关态电压 V RM 漏电流 I RM AT V VISHAY GE NERAL SEMICONDUCTOR 瞬态电压抑制器 应用笔记 用于汽车电子保护的瞬态电压抑制器 (TVS) Soo Man (Sweetman) Kim, Vishay I) TVS 的重要参数 TVS 功率等级 TVS Vishay TVS 10 μs/1000 μs (Bellcore 1089) 1 TVS ESD 8 μs/20 μs 2 1 10 µs 10 µs/1000

More information

Microsoft Word - IRFWX_A051_C_SyncMOS_with_STC_APN_SC_.doc

Microsoft Word - IRFWX_A051_C_SyncMOS_with_STC_APN_SC_.doc EEPROM 应用说明 1 适用产品 :SM59D03G2 SM59D04G2 series 2 应用范围 : 针对需使用 EEPORM 功能替换 STC 89C5X 的应用及汇编语言之范例程序 ( 使用内部扩充内存为暂存区 ) 3 功能说明 : 3.1 本公司上述产品 EEPORM 功能皆可替换 STC89C5X, 仅需对特殊功能缓存器定义 ( 详见表 1) 及 ISP 命令定义 ( 详见表 2)

More information

目录 1 产品简介 功能特性 引脚图 引脚描述 中央处理器 (CPU) 存储器 程序存储器 (OTP ROM) 通用数据存储器 (RAM) 特殊功

目录 1 产品简介 功能特性 引脚图 引脚描述 中央处理器 (CPU) 存储器 程序存储器 (OTP ROM) 通用数据存储器 (RAM) 特殊功 SQ015L 数据手册 14 引脚 8 位 I/O 型 OTP 单片机 - 1 - 目录 1 产品简介... 5 1.1 功能特性... 5 1.2 引脚图... 6 1.3 引脚描述... 7 2 中央处理器 (CPU)... 9 2.1 存储器... 9 2.1.1 程序存储器 (OTP ROM)... 9 2.1.2 通用数据存储器 (RAM)... 12 2.1.3 特殊功能寄存器 (SFR)...

More information

Bus Hound 5

Bus Hound 5 Bus Hound 5.0 ( 1.0) 21IC 2007 7 BusHound perisoft PC hound Bus Hound 6.0 5.0 5.0 Bus Hound, IDE SCSI USB 1394 DVD Windows9X,WindowsMe,NT4.0,2000,2003,XP XP IRP Html ZIP SCSI sense USB Bus Hound 1 Bus

More information

P4V88+_BIOS_CN.p65

P4V88+_BIOS_CN.p65 1 Main H/W Monitor Boot Security Exit System Overview System Time System Date [ 17:00:09] [Wed 12/22/2004] BIOS Version : P4V88+ BIOS P1.00 Processor Type : Intel (R) Pentium (R) 4 CPU 2.40 GHz Processor

More information

PIC24 intro.fm

PIC24 intro.fm 1 第 1 章简介 简介 目录 本章包括下列主题 : 1.1 简介... 1-2 1.2 手册目标... 1-2 1.3 器件结构... 1-2 1.4 开发支持... 1-4 1.5 样式和符号约定... 1-4 1.6 相关文档... 1-6 1.7 版本历史... 1-7 2008 Microchip Technology Inc. 超前信息 DS39718A_CN 第 1-1 页 PIC24F

More information

模拟外设 : 10 位模数转换器 (Analog-to-Digital Converter, ): - 最多 17 路外部通道 - 可在休眠模式下进行转换 : - 最多 2 个 - 低功耗 / 高速模式 - ( 同相 ) 反相输入上的固定电压参考 - 可从外部访问输出 5 位数模转换器 (Digit

模拟外设 : 10 位模数转换器 (Analog-to-Digital Converter, ): - 最多 17 路外部通道 - 可在休眠模式下进行转换 : - 最多 2 个 - 低功耗 / 高速模式 - ( 同相 ) 反相输入上的固定电压参考 - 可从外部访问输出 5 位数模转换器 (Digit 采用 XLP 技术的全功能低引脚数单片机产品简介 说明 : 单片机具有模拟 内核独立外设以及通信外设特性, 并结合了超低功耗 (extreme Low Power,XLP) 技术, 适用于一系列广泛的通用和低功耗应用 外设引脚选择 (Peripheral Pin Select, PPS) 功能可以在使用数字外设 ( 和通信 ) 时进行引脚映射, 以增加应用设计的灵活性 内核特性 : 优化的 C 编译器

More information



 8 位微控制器 ET18F11/11 数据手册 深圳市鹏锦科技有限公司 联系电话 :07828600 手机 :1820771884 传真 :07212178 联系人 : 何颖 QQ:6700001 深圳市福田区振华路家乐大厦 4 楼 B 公司网址 :www.pj212178.com 产品订购信息 型号 FLS RM 封装 ET18F11 1KX1 64B SOIC14 目录 1 概述...4 2 芯片特征...4

More information

行业

行业 PCL-818HD/HG/L PCL-818HD/HG/L 1.1...2 1.1.1 /...2 1.1.2 ID...2 1.2...3 1.3...3 2.1...3 2.2...3 2.2.1...4 2.2.2...4 2.2.3 DMA...5 2.2.4...5 2.2.5 D/A...5 2.2.6...6 2.2.7 EXE.trigger GATE0...6 2.2.8 FIFO

More information

untitled

untitled EDM12832-08 : 25-1 : 116600 : (0411)7612956 7632020 7631122 : (0411)7612958 Model No.: Editor: LCD 1. ----------------------------------------------------3 2. ----------------------------------------------------3

More information

穨control.PDF

穨control.PDF TCP congestion control yhmiu Outline Congestion control algorithms Purpose of RFC2581 Purpose of RFC2582 TCP SS-DR 1998 TCP Extensions RFC1072 1988 SACK RFC2018 1996 FACK 1996 Rate-Halving 1997 OldTahoe

More information

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

A Preliminary Implementation of Linux Kernel Virus and Process Hiding 邵 俊 儒 翁 健 吉 妍 年 月 日 学 号 学 号 学 号 摘 要 结 合 课 堂 知 识 我 们 设 计 了 一 个 内 核 病 毒 该 病 毒 同 时 具 有 木 马 的 自 动 性 的 隐 蔽 性 和 蠕 虫 的 感 染 能 力 该 病 毒 获 得 权 限 后 会 自 动 将 自 身 加 入 内 核 模 块 中 劫 持 的 系 统 调 用 并 通 过 简 单 的 方 法 实 现 自 身 的

More information

K7VT2_QIG_v3

K7VT2_QIG_v3 ............ 1 2 3 4 5 [R] : Enter Raid setup utility 6 Press[A]keytocreateRAID RAID Type: JBOD RAID 0 RAID 1: 2 7 RAID 0 Auto Create Manual Create: 2 RAID 0 Block Size: 16K 32K

More information

PICkit2 LPC

PICkit2 LPC 深圳市英锐恩科技有限公司 单片机集成方案全方位解决服务商 优质智能电子产品 芯 方案解决商 圣邦微电子 (SG MICRO CORP) PICkit2 LPC 产品用户参考手册 深圳市英锐恩科技有限公司 ENROO-TECH(SHENZHEN)CO.,LTD 中国 深圳市福田区福华路嘉汇新城汇商中心 27 楼 2701 Enroo-Tech Technologies CO., Limited Light-Tech

More information

General Description: Preliminary TTP916 Consumer IC VCD/DVD LCD Green mode Stand-by mode( 1W ) Features: 2.2V-5.5V LCD RAM read condition 2.6V-5.5V RC

General Description: Preliminary TTP916 Consumer IC VCD/DVD LCD Green mode Stand-by mode( 1W ) Features: 2.2V-5.5V LCD RAM read condition 2.6V-5.5V RC General Description: IC VCD/DVD LCD Green mode Stand-by mode( 1W ) Features: 2.2V-5.5V LCD RAM read condition 2.6V-5.5V RC 15K 300pF 256KHZ default on 32 function key Built-in TT6221/TT6222 decoder Provide

More information

els0xu_zh_nf_v8.book Page Wednesday, June, 009 9:5 AM ELS-0/0C.8

els0xu_zh_nf_v8.book Page Wednesday, June, 009 9:5 AM ELS-0/0C.8 els0xu_zh_nf_v8.book Page Wednesday, June, 009 9:5 AM ELS-0/0C.8 Yamaha ELS-0/0C..8 LCD ELS-0/0C v. typeu LCD ELS-0/0C typeu / -6 / [SEARCH] / - ZH ELS-0/0C.8 els0xu_zh_nf_v8.book Page Wednesday, June,

More information

DATASHEET SEARCH SITE ==

DATASHEET SEARCH SITE == 1K 一次性编程, 10 位 ADC 型 4 位单片机 特性 基于 SH6610C, 10 位 ADC 型 4 位单片机 OTP ROM: 1K X 16 位 RAM: 124 X 4 位 - 28 系统控制寄存器 - 96 数据存储器 工作电压 : - fosc = 16MHz, VDD = 3.3V - 5.5V 6 个双向 I/O 端口 4 层堆栈 ( 包括中断 ) 一个 8 位自动重载定时

More information

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12 ... 3... 3... 3... 3... 4 1JTAG ICE PC... 4 2JTAG ICE... 4 3... 4 4... 4 5JTAG... 5 6ISP... 5 IDE... 6 1 AVR STUDIO... 6 2 JTAGICE... 6 3JTAGICE... 12 4.... 16 5.... 17 6. JTAG ICE... 19 ISP... 20 1PonyProg2000...

More information

33023A.book(31031A_cn.fm)

33023A.book(31031A_cn.fm) 31 第 31 章器件特性 器件特性 目录 本章包括以下一些主要内容 : 31.1 简介... 31-2 31.2 特性和电气规范... 31-2 31.3 DC 和 AC 特性图表... 31-2 31.4 版本历史... 31-22 24 Microchip Technology Inc. DS3131A_CN 第 31-1 页 PICmicro 中档单片机系列 31.1 简介 Microchip

More information

39697b.book

39697b.book 第 9 章看门狗定时器 (WDT) 目录 本章包括下列主题 : 9.1 简介...9-2 9.2 WDT 工作原理... 9-3 9.3 寄存器映射... 9-7 9.4 设计技巧... 9-8 9.5 相关应用笔记... 9-9 9.6 版本历史... 9-10 9 看门狗定时器 (WDT) 2010 Microchip Technology Inc. DS39697B_CN 第 9-1 页 PIC24F

More information

untitled

untitled FBC0409 V1.0 1.0 05.06.22 SIA 2005 SIA SIA SIA SIA SIA 114 86-24-23970133 HTTP://WWW.SIA.CN [email protected] 2 ...5...5...6 PIN...6...7 1 CPU...8 2...8 4...8 5 DMA...9 7....9 8...9 9...10 A...10 B...10...11.

More information

Edge-Triggered Rising Edge-Triggered ( Falling Edge-Triggered ( Unit 11 Latches and Flip-Flops 3 Timing for D Flip-Flop (Falling-Edge Trigger) Unit 11

Edge-Triggered Rising Edge-Triggered ( Falling Edge-Triggered ( Unit 11 Latches and Flip-Flops 3 Timing for D Flip-Flop (Falling-Edge Trigger) Unit 11 Latches and Flip-Flops 11.1 Introduction 11.2 Set-Reset Latch 11.3 Gated D Latch 11.4 Edge-Triggered D Flip-Flop 11.5 S-R Flip-Flop 11.6 J-K Flip-Flop 11.7 T Flip-Flop 11.8 Flip-Flops with additional Inputs

More information