MDT10F630/ MDT10F676

Similar documents
MDT10F630/ MDT10F676

33023A.book(31026A_cn.fm)

MDT10F630/ MDT10F676

2 PIC PIC 1 / CPU PIC MCU PIC RC

MDT10F630/ MDT10F676

MDT90P01 4-Bit RISC MCU 使用及注意事项 1. MDT90P01 4-bit RISC MCU PIN MAP: SOT-26 PB0 1 6 PB3 VSS 2 5 VDD PB1 3 4 PB2/RTCC 2. IC 烧入注意事项 : A. 需制作转接座 : Writer

DESCRIPTION

70046d_cn.book(70055c_cn.fm)

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

第10章:CCP捕捉/比较/脉宽调制

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

第十四章 STC单片机比较器原理及实现

DS_MM32P021_Ver1.9.0

文件名

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

33023A.book(31031A_cn.fm)

控制器 EtherCAT EtherCAT EtherCAT 接下一个电机驱动模块 (X4) 接下一个电机驱动模块 (X5) X11 IN X4 IN X3 OUT X5 IN X6 OUT X2 X1 X4 IN X3 OUT X5 IN X6 OUT X2 X1 SYS STA DC BUS D

FT25H16



B_CN.book

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

BJ2C004ANB

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

DPJJX1.DOC

adsd

Electrical and Optical Clock Data Recovery Solutions - Data Sheet

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

GW2A 系列 FPGA 产品 GW2A-18 器件 Pinout Version History 日期 版本 2016/8/ /9/ /11/ /2/ /6/ /6/ /8

DATASHEET SEARCH SITE ==

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

untitled

QG153中文版说明书.docx

额定规格 / 性能 单相 标准认证 UL CSA. NO. EN-- 额定规格输入 环境温度 项目电压电平额定电压使用电压范围输入电流型号动作电压复位电压 - B ma 以下 DC~V DC.~V DC.V 以下 DC.V 以上 - BL ma 以下 输出 项目 * 根据环境温度的不同而不同 详情请

规格书

Microsoft Word - EM78P156K Product Spec v1[1].3 _ _.doc

Microsoft Word - sim6xF0xC-0225.doc

四位微控制器ML64168_ _.doc

OTP-Based 8-Bit Microcontroller Series

PIC16F F MPLAB 08 16F LED 15 LED

untitled

电子技术基础 ( 第 版 ) 3. 图解单相桥式整流电路 ( 图 4-1-3) 电路名称电路原理图波形图 整流电路的工作原理 1. 单相半波整流电路 u 1 u u sin t a t 1 u 0 A B VD I A VD R B

规格书

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

Cerris IROS

深圳明和科技

MSP430单片机简介

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi

HS2303-P

untitled

目录

SD3102 带显示驱动 I 2 C 和按键的单差分通道计量 SOC 特点 高精度 ADC,24 位数据输出, 输入增益可选 和 16, 单差分通道, 可测量信号的真有效值和瞬时值 8 位 RISC 低功耗 MCU,49 条指令,6 级堆栈, 在 2.048MHz 工作时钟,MCU 部分

Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15 LM361 LM361 Zlg

R/W

第 卷 第 期 年 月 半 导 体 学 报! " # $%&'%' $!&' #% #$1 /#1 $'! / ?/ ?/ / 3 0,?/ ) * +!!! '!,!! -. & ' $! '! 4% %&1)/1(7%&)03 (% )

Transcription:

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 端口引脚电平变化中断 PA PC 端口独立的可编程弱上拉 定时器 Timer0: 带 8 位可编程预分频器的 8 位定时器 / 计数器 增强型 Timer1: - 带有预分频器的 16 位定时器 / 计数器 - 外部 Timer1 门控 ( 计数使能 ) - INTOSC 模式或者在 LP 模式下可选择使用 OSC1 和 OSC2 作为 Timer1 的振荡器 3 路 10bitPWM 模块 - 3 路 10bit 周期相同 脉宽可调的 PWM 模块 6 通道 12 位 ADC 6 个外部 ADC 输入 可选择 ADC 启动方式 ADC 参考电压可用软件选择为内部或外部参考 可通过配置寄存器选择片内 2V,3V,4V 或者 VDD 作为参考电压 双时钟系统外部高速时钟 : 高达 20MHz 内部高速时钟 :16MHz RC(Fcpu 支持 16Mhz 8MHz 4MHz 2MHZ 1MHZ 500KHz 250KHz) 内部低速时钟 :RC 振荡器 31KHz 高性能的 RISCCPU 仅需学习 35 条指令 除跳转指令外的所有指令都是单周期的 直接 间接和相对寻址模式 特殊特性 - 高精度内部振荡器, 出厂时精度校准为 +/-1% 全温全压偏差小于 +/-2% - 可用软件选择的频率范围为 250kHz 到 16MHz - 软件可选的 31kHz 内部振荡器 - 节能的休眠模式 - 宽工作电压范围 (2.2V 到 5.5V) - 工业级温度范围 - 上电复位 (Powe-onReset,POR) - 上电延时定时器 (Power-upTimer,PWRT) 和振荡器起振定时器 (OscillatorStart-upTimer,OST) - 带软件控制选择的 LVR 低电压侦测选择 ( 侦测电压有 1.7V 2.1V 3.8V 可选 ) - 带片上振荡器 ( 振荡器频率可由软件选择, 当预分频比最大时其标称值为 268 秒 ) 并且可软件使能的增强型低电流看门狗定时器 (WatchdogTimer,WDT) - 带上拉的主复位, 可复用为输入引脚 - 可编程代码保护 低功耗特性待机电流 : - 电压为 2.2V 时, 典型值 500nA 工作电流 : - 频率为 8MHz 电压为 2.2V 时, 典型值为 500uA - 频率为 31kHz 电压为 2.2V 时, 典型值为 11uA 看门狗定时器电流 : - 电压为 2.2V 时, 典型值为 1uA 通过两个引脚 (PA0,PA1) 实现在线串行编程和调试 器件 ROM RAM I/O 12 位 A/D 转换器 ( 通道数 ) Timer PWM 输出 唤醒功能引脚数目 MDT10F271 2048 128 12 6 2 3 6 封装 SOT23-6 MSOP10 PDIP8 SOP8 MSOP8 PDIP14 SOP14 1 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

1.0 器件概述... 1 系统结构图... 4 1.3 引脚说明... 6 2.0 存储器构成... 7 2.1 程序存储器构成... 7 2.2 数据存储器构成... 7 2.3 PCL 和 PCLATH... 17 2.4 间接寻址 IAR 和 MSR 寄存器... 18 2.5 看门狗定时器 (WDT)... 19 3.0 复位... 22 3.1 概述... 22 3.2 上电复位... 23 3.3 MCLR... 23 3.4 上电延时定时器 (PWRT)... 24 3.5 欠压复位... 24 3.6 延时时序... 25 3.7 电源控制 (PSTA) 寄存器... 27 4.0 系统时钟... 27 4.1 概述... 27 4.2 振荡器控制... 28 4.3 时钟源模式... 29 4.4 外部时钟模式... 30 4.5 内部时钟模式... 32 4.6 时钟切换... 34 4.7 双速时钟启动模式... 35 4.8 掉电模式 ( 休眠 )... 36 4.9 故障保护时钟监控器... 38 5.0 中断... 39 5.1 中断特殊功能寄存器... 41 5.2 外部中断... 43 5.3 TIMER0 中断... 43 5.4 PORTA 电平变化中断... 44 5.5 A/D 中断... 44 5.6 中断的现场保护... 44 6.0 I/O 端口... 44 6.1 PORTA 和 CPIOA 寄存器... 45 6.2 PORTC 和 CPIOC 寄存器... 46 6.3 其它引脚功能... 47 6.4 PORTA 引脚说明和引脚图... 50 6.5 PORTC 引脚说明和引脚图... 56 7.0 定时器及 PWM... 59 2 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

7.1 TIMER0 模块... 59 7.2 带门控的 TIMER1 模块... 61 7.3 PWM 的输出... 66 8.0 模拟数字转换器 (ADC) 模块... 72 8.1 ADC 框图... 72 8.2 ADC 的配置... 72 8.3 ADC 的工作过程... 75 8.4 ADC 寄存器定义... 77 9.0 配置寄存器... 79 9.1 CONFIG OPTION... 79 10.0 指令表... 80 11.0 电气特性... 81 11.1 绝对极限参数... 81 11.2 直流电器特性... 83 11.3 交流电气特性... 84 12.0 开发支持... 85 12.1 仿真信息... 85 12.2 烧录信息... 86 13.0 封装信息... 88 13.1 SOT23-6... 88 13.2 P-DIP 8 PIN... 89 13.3 SOP 8 PIN... 90 13.4 MSOP 8 PIN... 91 13.5 MSOP 10 PIN... 92 13.6 P-DIP 14 PIN... 93 13.7 SOP 14 PIN... 94 14.0 汇春知识产权政策... 95 14.1 专利权... 95 14.2 著作权... 95 3 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

系统结构图 配置 INT 程序总线 MTP 2K 14 程序存储器 14 13 程序计数器 8 级深堆栈 (11 位 ) 数据总线 RAM 128 字节文件寄存器 8 PORTA 指令寄存器 直接寻址 7 RAM 地址 9 地址 MUX 8 间接寻址 FSR 寄存器 PORTC 状态寄存器 8 MUX 指令译码和控制 上电延时定时器 振荡器起振定时器 3 ALU 时序发生 上电复位 看门狗定时器 8 W 寄存器 欠压复位 内部振荡电路 MCLR VDD VSS Timer0 Timer1 PWM 模数转换器 VREF AN0 AN1 AN2 AN3 AN4 AN5 4 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

1.2 封装脚位图 12.1 6 引脚图 (SOT26-6) PA0/AN0/ULPWU 1 6 PA1/AN1 VSS 2 5 VDD PC3/PWM2/INT1 3 4 PA3/MCLR/VPP 1.2.2 8 引脚图 (DIP SOP MSOP) VDD PA5/T1CKI/OSC1/CLKIN PA3/MCLR/VPP PC3/PWM2/INT1 1 8 2 7 3 6 4 5 VSS PA0/AN0/ULPWU PA1/AN1 PA2/AN2/T0CKI 1.2.3 10 引脚图 (MSOP) VDD PA5/T1CKI/OSC1/CLKIN PA3/MCLR/VPP PC5/PWM0 PC4/PWM1 1 10 2 9 3 8 4 7 5 6 VSS PA0/AN0/ULPWU PA1/AN1 PA2/AN2/T0CKI PC3/PWM2/INT1 1.2.4 14 引脚图 (DIP SOP) VDD 1 14 VSS PA5/T1CKI/OSC1/CLKIN 2 13 PA0/AN0/ULPWU PA4/AN3/T1G/OSC2/CLKOUT 3 12 PA1/AN1 PA3/MCLR/VPP 4 11 PA2/AN2/T0CKI PC5/PWM0 5 10 PC0/AN4 PC4/PWM1 6 9 PC1/AN5/VREF PC3/PWM2/INT1 7 8 PC2/INT0 5 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

1.3 引脚说明 名称 PA0/AN0/SCK/ULPWU PA1/AN1/SDA PA2/AN2/T0CKI PA3/M C L R /VPP PA4/AN3/T 1 G /OSC2/CLKOUT PA5/T1CKI/OSC1/CLKIN PC0/AN4 PC1/AN5/VREF PC2/INT0 PC3/PWM2/INT1 PC4/PWM1 PC5/PWM0 功能 输入类型 输出类型 说明 PA0 TTL CMOS 具有可编程上拉和电平变化中断的 PORTA I/O AN0 AN A/D 通道 0 输入 SCK ST 串行编程和调试时钟输入 ULPWU AN 超低功耗唤醒输入 PA1 TTL CMOS 具有可编程上拉和电平变化中断的 PORTA I/O AN1 AN A/D 通道 1 输入 SDA ST/TTL CMOS 串行编程和调试数据输入输出 PA2 ST CMOS 具有可编程上拉和电平变化中断的 PORTA I/O AN2 AN A/D 通道 2 输入 T0CKI ST Timer0 时钟输入 PA3 TTL 带电平变化中断的 PORTA 输入 M C L R ST 带有内部上拉的主复位 VPP HV 编程电压 (9.5V) PA4 TTL CMOS 具有可编程上拉和电平变化中断的 PORTA I/O AN3 AN A/D 通道 3 输入 T 1 G ST Timer1 门控 ( 计数使能 ) OSC2 XTAL 晶振 / 谐振器 CLKOUT CMOS Fosc/4 输出 PA5 TTL CMOS 具有可编程上拉和电平变化中断的 PORTA I/O T1CKI ST Timer1 时钟 OSC1 XTAL 晶振 / 谐振器 CLKIN ST 外部时钟输入 /RC 振荡器连接 PC0 TTL CMOS PORTC I/O AN4 AN A/D 通道 4 输入 PC1 TTL CMOS PORTC I/O AN5 AN A/D 通道 5 输入 VREF AN A/D 外部参考电压 PC2 TTL CMOS PORTC I/O INT0 ST 外部中断 PC3 TTL CMOS PORTC I/O PWM2 CMOS PWM 输出 INT1 ST 外部中断 PC4 TTL CMOS PORTC I/O PWM1 CMOS PWM 输出 PC5 TTL CMOS PORTC I/O PWM0 CMOS PWM 输出 VDD VDD 电源 正电源端 VSS VSS 电源 接地参考端 图注 : AN = 模拟输入或输出 CMOS = CMOS 兼容输入或输出 HV = 高压 ST = 带 CMOS 电平的施密特触发器输入 TTL = TLL 兼容输出 XTAL = 晶振 6 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

2.0 存储器构成 2.1 程序存储器构成 MDT10F271 具有一个 11 位程序计数器, 可以对 2Kx14 的程序存储空间进行寻址 而 MDT10F271 仅在物理上实现了第一个 2Kx14(0000h-07FFh) 的存储空间 访问该边界以外的单元将导致实际访问存储器的第一个 2Kx14 存储空间 复位向量地址为 0000h, 中断向量地址为 0004h PC<12:0> CALL, RET RTFI, RTIW 13 1 级堆栈 2 级堆栈 8 级堆栈 复位向量 0000h 中断向量 片上程序存储器 回到 0000h-07FFh 0004h 0005h 07FFH 1000H FFFFH 2.1.1 复位向量 (0000H) 具有一个字长的系统复位向量 (0000H) 上电复位 ; 看门狗复位 ; 外部复位 ; 欠压复位 ; 发生上述任一种复位后, 程序将从 0000H 处重新开始执行, 系统寄存器也都将恢复为默认值 根据 STATUS 寄存器中的 TO 和 PD 标志位的内容可以判断系统复位方式 2.1.2 中断向量 (0004H) 中断向量的地址为 0004H 一旦有中断响应, 程序计数器 PC 的当前值就会存入堆栈缓存器并跳转到 0004H 开始执行中断服务程序 2.2 数据存储器构成 数据存储器被分为 4 个存储区 (bank), 其中包含通用寄存器 (GeneralPurposeRegister,GPR) 和特殊功能寄存器 (SpecialFunctionRegister,SFR) 特殊功能寄存器位于每个存储区开头的 32 个单元 通用寄存器位于 Bank0 中的 20h-7Fh 和 Bank1 中的 A0h-BFh 寄存器单元中 它们以静态 RAM 的方式实现 Bank1 Bank2 和 Bank3 中的寄存器单元 F0h-FFh 指向 Bank0 中的地址单元 70h-7Fh 所有其他的 RAM 均未实现, 读取它 7 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

们时将返回 0 STATUS 寄存器的 RP1 RP0 位为存储区选择位 00 > 选定 Bank0 01 > 选定 Bank1 10 > 选定 Bank2 11 > 选定 Bank3 2.2.1 通用文件寄存器 在 MDT10F271 中通用寄存器是按 128x8 的形式实现的 可直接访问每个寄存器或通过文件选择寄存器 (FileSelectRegister,MSR) 间接访问每个存储器 ( 见第 2.4 节 间接寻址 IAR 和 MSR 寄存器 ) 2.2.2 特殊功能寄存器 特殊功能寄存器是 CPU 和外设模块用来控制所需的器件操作的寄存器, 这些寄存器都实现为静态 RAM 特殊功能寄存器可分为两类 : 内核与外设 本章仅讲述与 内核 有关的特殊功能寄存器 那些与外设功能部件的操作有关的特殊功能寄存器将在相应的外设功能部件章节中讲述 图 2-2: 数据存储映射 8 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

IAR TMR0 PCL STATUS MSR PORTA PORTC PCLATH INTS PIFB TMR1L TMR1H T1STA WDTCON PWMT0EB ADRESH 寄存器地址 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh 20h IAR OPT_REG PCL STATUS MSR CPIOA CPIOC PCLATH INTS PSTA OSCCON ADINS PAPHR PAINTR ADRESL 寄存器地址 80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8Ah 8Bh 8Ch 8Dh 8Eh 8Fh 90h 91h 92h 93h 94h 95h 96h 97h 98h 99h 9Ah 9Bh 9Ch 9Dh 9Eh 9Fh A0h IAR PCL STATUS MSR PCPHR PCLATH INTS PRL0L PRL1L PRL2L T1PRLL ADC0CN 寄存器地址 100 101 102 103 104 105 106 107 108 109 10A 10B 10C 10D 10E 10F 110 111 112 113 114 115 116 117 118 119 11A 11B 11C 11D 11E 11F 120 IAR PCL STATUS MSR PCLATH INTS PWM0L PWM1L PWM2L T1PRLH EPR0 EPR1 EPR2 ADS0 寄存器地址 180 181 182 183 184 185 186 187 188 189 18A 18B 18C 18D 18E 18F 190 191 192 193 194 195 196 197 198 199 19A 19B 19C 19D 19E 19F 1A0 通用寄存器 96 字节 6Fh 70h 通用寄存器 32 字节 禁止访问 访问 70h~7Fh BFH F0h 禁止访问访问 70h~7Fh 16F 170 禁止访问访问 70h~7Fh 1EF 1F0 7Fh BANK 0 BANK 1 FFh 17F BANK 2 BANK 3 1FF 未实现的数据存储单元, 读为 0 未实现的数据存储单元, 读为 0 9 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

2.2.2.1 特殊功能寄存器位定义 (BANK0) 地址名称 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 默认值 BANK0 00H IAR 使用 MSR 的内容对数据存储器进行寻址来寻址此单元 ( 不是物理寄存器 ) xxxx xxxx 01H TMR0 TIMER0 模块寄存器 xxxx_xxxx 02H PCL PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 0000_0000 03H STATUS IRP RP1 RP0 TF PF Z HC C 0001_1xxx 04H MSR 间接数据存储器地址指针 xxxx-xxxx 05H PORTA PA5 PA4 PA3 PA2 PA1 PA0 --x0_x000 06H 未实现 07H PORTC PC5 PC4 PC3 PC2 PC1 PC0 --x0_0000 08H 未实现 09H 未实现 0AH PCLATH PC10 PC9 PC8 ----_0000 0BH INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF 0000_0000 0CH PIFB INT1E ADIE OSFIE TMR1IE INT1F ADIF OSFIF TMR1IF 0000_0000 0DH 未实现 0EH TMR1L 16 位 TMR1 低字节的保持寄存器 xxxx-xxxx 0FH TMR1H 16 位 TMR1 高字节的保持寄存器 xxxx-xxxx 10H T1STA T1GINV TMR1GE T1CKPS T1OSCEN T1SYNC TMR1CS TMR1ON 0000_0000 11H 未实现 12H 未实现 13H 未实现 14H 未实现 15H 未实现 16H 未实现 17H 未实现 18H WDTCON WDTPS SWDTEN ---0_1000 19H 未实现 1AH PWMT0E B 1BH 未实现 1CH 未实现 1DH 未实现 PWM2_EN PWM1_EN PWM0_EN TMR0_EN T1GSS ---0_0011 1EH ADRESH ADRESH 0000_0000 1FH 未实现 图注 : = 未实现单元读为 0, u = 不变, x = 未知, q = 取值视情况而定, 阴影 = 未实现 注 1:OSCCON 寄存器的 OSTS 位复位为 0, 带双速启动且 LP HS 或 XT 被选定为振荡器 2: 配置字寄存器中的 CFG_MCLRE 为 1 时 RA3 上拉使能 10 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

2.2.2.2 特殊功能寄存器位定义 (BANK1) 地址名称 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 默认值 BANK1 80H IAR 使用 MSR 的内容对数据存储器进行寻址来寻址此单元 ( 不是物理寄存器 ) xxxx xxxx 81H OPT_REG INT1_ EDG_SEL INT0_ EDG_SEL TCS TCE PSC PS 1111_1111 82H PCL PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 0000_0000 83H STATUS IRP RP1 RP0 TF PF Z HC C 0001_1xxx 84H MSR 间接数据存储器地址指针 xxxx-xxxx 85H CPIOA PORTA 三态控制位 --11_1111 86H 未实现 87H CPIOC PORTA 三态控制位 --11_1111 88H 未实现 89H 未实现 8AH PCLATH PC10 PC9 PC8 ----_0000 8BH INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF 0000_0000 8CH 未实现 8DH 未实现 8EH PSTA ULPWUE SBOREN MCR IER POR BOR --01_100q 8FH OSCCON IRCF OSTS HTS LTS SCS -101_x000 90H 未实现 91H ADINS 92H 未实现 93H 未实现 94H 未实现 模拟选择位 -111_1111 95H PAPHR PAPH5 PAPH4 PAPH2 PAPH1 PAPH0 --11_-111 96H PAINTR PORTA 电平变化中断允许位 --00_0000 97H 未实现 98H 未实现 99H 未实现 9AH 未实现 9BH 未实现 9CH 未实现 9DH 未实现 9EH ADRESL ADRESL 0000_0000 9FH 未实现 11 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

2.2.2.3 特殊功能寄存器位定义 (BANK2) 地址名称 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 默认值 BANK2 100H IAR 使用 MSR 的内容对数据存储器进行寻址来寻址此单元 ( 不是物理寄存器 ) xxxx xxxx 101H 未实现 102H PCL PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 0000_0000 103H STATUS IRP RP1 RP0 TF PF Z HC C 0001_1xxx 104H MSR 间接数据存储器地址指针 xxxx-xxxx 105H 未实现 106H 未实现 107H PCPHR WPUCG PORTC 弱上拉控制位 -111_1111 108H 未实现 109H 未实现 10AH PCLATH PC10 PC9 PC8 ----_-000 10BH INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF 0000_0000 10CH 未实现 10DH 未实现 10EH 未实现 10FH 未实现 110H 未实现 111H 未实现 112H PRL0L PWM0 占空比重载寄存器低字节 0000_0000 113H PRL1L PWM1 占空比重载寄存器低字节 0000_0000 114H PRL2L PWM2 占空比重载寄存器低字节 0000_0000 115H 未实现 116H 未实现 117H T1PRLL PWM0/1/2 周期寄存器的低字节 0000_0000 118H 未实现 119H 未实现 11AH 未实现 11BH 未实现 11CH 未实现 11DH 未实现 11EH ADC0CN ADFM SC ADC_EN GO/DONE 11FH 未实现 CM 0000_0000 12 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

2.2.2.4 特殊功能寄存器位定义 (BANK3) 地址名称 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 默认值 BANK3 180H IAR 使用 MSR 的内容对数据存储器进行寻址来寻址此单元 ( 不是物理寄存器 ) xxxx xxxx 181H 未实现 182H PCL PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 0000_0000 183H STATUS IRP RP1 RP0 TF PF Z HC C 0001_1xxx 184H MSR 间接数据存储器地址指针 xxxx-xxxx 185H 未实现 186H 未实现 187H 未实现 188H 未实现 189H 未实现 18AH PCLATH PC10 PC9 PC8 ----_0000 18BH INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF 0000_0000 18CH 未实现 18DH 未实现 18EH 未实现 18FH 未实现 190H 未实现 191H 未实现 192H PWM0L PWM0 占空比比较寄存器低字节 0000_0000 193H PWM1L PWM1 占空比比较寄存器低字节 0000_0000 194H PWM2L PWM2 占空比比较寄存器低字节 0000_0000 195H 未实现 196H 未实现 197H T1PRLH T1PRLH ----_--00 198H EPR0 PWM0H 占空比比较寄存器高两位 199H EPR1 PWM1H 占空比比较 寄存器高两位 19AH EPR2 PWM2H 占空比比较 寄存器高两位 19BH 未实现 19CH 未实现 EPR0L EPR1L EPR2L ----_0000 ----_0000 ----_0000 19DH ADS0 CHN_SEL REF_SEL VREF_SEL -000_0111 19EH 未实现 19FH 未实现 13 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

2.2.2.3 STATUS 状态寄存器 状态 (STATUS) 寄存器包含 : ALU 的算术运算状态 复位状态 数据存储器 (SRAM) 的存储区选择位 和其他寄存器一样, 状态寄存器也可以作为任何指令的目标寄存器 如果一条影响 Z HC 或 C 位的指令 以状态寄存器作为目标寄存器, 将禁止写这三位 根据器件逻辑, 这些位会被置 1 或清零 此外, 也不能写 TF 和 PF位 因此, 当执行一条把状态寄存器作为目标寄存器的指令后, 状态寄存器的结果可能和预想的不一样 例如, 执行 CLRR STATUS 指令会清零该寄存器的高 3 位并将 Z 位置 1 从而使状态寄存器的值为 000uu1uu ( 其中 u 表示不变 ) 因此, 建议仅使用 BCR BSR SWAPR 和 STWR 指令来改变状态寄存器, 因为这些指令不影响任何状态位 欲知其他不会影响任何状态位的指令, 请参见第 10.0 节 指令集汇总 寄存器 03H/83H/183H: 状态寄存器 (STATUS) R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x IRP RP1 RP0 TF PF Z HC C bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7 IRP: 间接寻址最高位 : 1 = 间接寻址第 2 3 页 0 = 间接寻址第 0 1 页 bit6 bit5 RP1RP0: 寄存器存储区选择位 ( 用于直接寻址 ) 00 = 直接寻址第 0 页 01 = 直接寻址第 1 页 10 = 直接寻址第 2 页 11 = 直接寻址第 3 页 bit4 TF : 超时状态位 1 = 上电后, 执行了 CLRWT 指令或 SLEEP 指令 0 = 发生 WDT 超时溢出 bit3 bit2 bit1 PF: 掉电标志位 1 = 上电复位后或执行了 CLRWT 指令 0 = 执行了 SLEEP 指令 Z: 零标志位 1 = 算术运算或逻辑运算的结果为零 0 = 算术运算或逻辑运算的结果不为零 HC: 半进位 / 借位位 (ADDWR ADDWI SUBWR 和 SUBWI 指令 ) 对于借位, 极性是相反的 1 = 结果的第 4 低位向高位发生了进位 0 = 结果的第 4 低位未向高位发生进位 14 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

bit0 注 C: 进位 / 借位位 (1) (ADDWR ADDWI SUBWR 和 SUBWI 指令 ) 1 = 结果的最高位发生了进位 ( 减法时, 没有发生借位时为 1) 0 = 结果的最高位未发生进位 1: 借位的极性是相反的 减法是通过加上第二个操作数的二进制补码 (Two scomplement) 来实现的 对于移位指令 (RRR 和 RLR), 此位的值来自源寄存器的最高位或最低位 2.2.2.4 OPT_REG 选项寄存器 选项 (OPT_REG) 寄存器是可读写的寄存器, 包含可对以下各项进行配置的各种配置位 : Timer0/WDT 预分频器分配位 外部中断 Timer0 注 : 要为 Timer0 指定 1:1 的预分频比, 应将 OPT_REG 寄存器的 PSC 位置 1, 以将预分频器分配给 WDT 请参见第 7.1.4 节 软件可编程预分频器 寄存器 81H: 选项寄存器 (OPT_REG) R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 INT1EG INT0EG TCS TCE PSC PS2 PS1 PS0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7 bit6 bit5 bit4 bit3 INT1EG:INT1 中断边沿选择位 1 = 由 PC3/INT1 引脚的上升沿触发中断 0 = 由 PC3/INT1 引脚的下降沿触发中断 INT0EG:INT0 中断边沿选择位 1 = 由 PC2/INT0 引脚的上升沿触发中断 0 = 由 PC2/INT0 引脚的下降沿触发中断 TCS:TMR0 时钟源选择位 1 = PA2/T0CKI 引脚上信号的跳变 0 = 内部指令周期时钟 (FOSC/4) TCE:TMR0 时钟源边沿选择位 1 = 在 PA2/T0CKI 引脚电平发生由高到低的跳变时递增 0 = 在 PA2/T0CKI 引脚电平发生由低到高的跳变时递增 PSC: 预分频器分配位 1 = 将预分频器分配给 WDT 0 = 将预分频器分配给 Timer0 模块 15 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

bit2-0 PS<2:0>: 预分频比选择位 TMR0 分频位值比 1:2 000 001 1:4 010 1:8 011 1:16 100 1:32 101 1:64 110 1:128 111 1:256 WDT 分频比 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128 2.2.2.5 PSTA 寄存器 电源控制 (PSTA) 寄存器包含区分以下复位的标志位 : 上电复位 (POR) 欠压复位 (BOR) 看门狗定时器复位 (WDT) 外部 MCLR复位 PSTA 寄存器也用于控制超低功耗唤醒和 BOR的软件使能 寄存器 8EH: 电源控制寄存器 1(PSTA) U-0 U-0 R/W-0 R/W-1 R/W-1 R/W-0 R/W-0 R/W-x ULPWUE SBOREN MCR IER POR BOR bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-6 未实现 : 读为 0 bit5 bit4 bit3 bit2 ULPWUE: 超低功耗唤醒使能位 1 = 使能超低功耗唤醒 0 = 禁止超低功耗唤醒 (1) SBOREN: 软件欠压检测使能位 1 = 使能欠压检测 0 = 禁止欠压检测 MCR : 外部复位状态位 1 = 上电复位值 0 = 发生了外部复位 IER: 指令错误复位状态位 1 = 发生了指令错误复位 0 = 上电复位值 16 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

bit1 bit0 ` 注 POR: 上电复位状态位 1 = 未发生上电复位 0 = 发生了上电复位 ( 必须在上电复位发生后用软件置 1) BOR: 欠压复位状态位 1 = 未发生欠压复位 0 = 已发生欠压复位 ( 必须在发生欠压复位后用软件置 1) 1: 当配置字寄存器中的 LVREN<1:0> = 01 时允许使用该位对 BOR 进行控制 2.3 PCL 和 PCLATH 程序计数器 (PC) 为 11 位宽 其低 8 位来自可读写的 PCL 寄存器, 高 3 位 (PC<10:8>) 来自 PCLATH, 不能直接读写 只要发生复位,PC 就将被清零 图 2-4 显示了装载 PC 值的两种情形 图 2-4 上方的例子说明在写 PCL(PCLATH<2:0> PCH) 时是如何装载 PC 的 图 2-4: 在不同情况下装载 PC PC PCH PCL 10 8 7 0 PCLATH<2:0> 8 3 以 PCL 为目标的指令 ALU 结果 PC PCLATH PCH PCL 10 8 7 0 11 LJUMP, CALL OPCODE<10:0> 2.3.1 修改 PCL 执行任何以 PCL 寄存器为目标寄存器的指令将同时使程序计数器的 PC<10:8> 位 (PCH) 被 PCLATH 寄存器的内容所取代 这样可通过将所需的高 3 位写入 PCLATH 寄存器来改变程序计数器的所有内容 当低 8 位写入 PCL 寄存器时, 程序计数器的所有 11 位将变为 PCLATH 寄存器中所包含的值以及写入 PCL 寄存器中的值 计算 LJUMP 指令是通过向程序计数器加入偏移量 (ADDWR PCL) 来实现的 通过修改 PCL 寄存器跳转到查找表或程序分支表 ( 计算 LJUMP) 时应特别谨慎 假定 PCLATH 设置为表的起始地址, 如果表长度大于 255 条指令, 或如果存储器地址的低 8 位在表的中间从 0xFF 计满返回到 0x00, 那么在每次表起始地址与表内的目标地址之间发生计满返回时,PCLATH 必须均必须递增 17 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

2.3.2 堆栈 MDT10F271 器件具有 8 级深 x11 位宽的硬件堆栈 ( 见图 2-2 和图 2-4) 堆栈空间既不占用程序存储区空间, 也不占用数据存储区空间, 而且堆栈指针是不可读写的 当执行 CALL 指令或当中断导致程序跳转时,PC 值将被压入 (PUSH) 堆栈 而在执行 RET RTIW 或 RTFI 指令时, 堆栈中的断点地址将从堆栈中弹出 (POP) 到 PC 中 PCLATH 不受 PUSH 或 POP 操作的影响 堆栈的工作原理犹如循环缓冲区 这意味着当堆栈压栈 8 次后, 第 9 次压栈的数值将会覆盖第一次压栈时所保存的数值, 而第十次压栈数值将覆盖第二次压栈时保存的数值, 以后依次类推 注 : 1: 不存在指明堆栈是否上溢或下溢的状态标志位 2: 不存在被称为 PUSH 或 POP 的指令 / 助记符 堆栈的压入或弹出是源于执行了 CALL RET RTIW 和 RTFI 指令, 或源于指向中断向量地址 寄存器 02H/82H/182H: 程序计数器低字节控制寄存器 (PCL) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 bit7 Bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-0 PC<7:0>: 程序计数器低 8 位 寄存器 0AH/8AH/18AH: 程序计数器高字节控制寄存器 (PCLATH) U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 PC10 PC9 PC8 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-5 未实现 : 读为 0 bit4-0 PC<10:8>: 程序计数器高 3 位 2.4 间接寻址 IAR 和 MSR 寄存器 IAR 寄存器不是实际存在的寄存器, 使用 IAR 寄存器寻址将产生间接寻址 使用 IAR 寄存器可进行间接寻址 任何使用 IAR 寄存器的指令, 实际上是对文件选择寄存器 (MSR) 所指向的数据进行存取 间接对 IAR 进行读操作将返回 00h 间接对 IAR 寄存器进行写操作将导致空操作 ( 尽管可能会影响状态标志位 ) 通过将 8 位的 MSR 寄存器与 STATUS 寄存器的 IRP 位进行组合可得到一个有效的 9 位地址, 如图 2-5 所示 例 2-5 给出了一个使用间接寻址将 RAM 地址单元 20h-2Fh 清零的简单程序 18 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

例 2-5: 间接寻址 ; 功能 : 地址 20 开始的连续 16 个字节的 RAM 清 0 LDWI 0X20 ; STWR MSR ; 地址指针赋初值 NEXT: CLRR IAR ; 清除 MSR 值对应的寄存器值 INCR MSR,R ; 递增地址指针 BTSS MSR,4 ; 完成没有? LJUMP NEXT ; 没完成, 继续 CONTINUE: ; 完成了 图 2-5:MDT10F271 的直接 / 间接寻址 RP1 (1) RP0 直接寻址 6 来自操作码 0 1RP (1) 间接寻址 7 文件选择寄存器 0 存储区选择单元选择存储区选择单元选择 00 01 10 11 00h 180h 数据存储器 7Fh Bank0 Bank1 Bank2 Bank3 1FFh 欲知详细的存储器映射信息, 请参见图 2-2 2.5 看门狗定时器 (WDT) WDT 具有以下特性 : 工作于 LFINTOSC(31kHz) 包含 16 位预分频器 与 Timer0 共用 8 位预分频器 超时周期从 1ms 至 268 秒 配置位和使用软件控制 WDT 在如表 2-6-1 所述的情况下清零 2.5.1 WDT 振荡器 WDT 的时基来源于 31kHz LFINTOSC OSCCON 寄存器的 LTS 位不反映 LFINTOSC 是否被使能 在所有复位时 WDTCON 的值为 ---01000 这样标称时基为 17ms 注 : 当执行振荡器起振定时器 (OST) 时,WDT 保持复位状态, 因为 OST 使用 WDT 纹波计数器来执行振荡器延时计数 OST 计数到期后,WDT 将开始计数 ( 如果使能 ) 19 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

2.5.2 WDT 控制 WDTE 位在配置字寄存器中 该位置 1 时,WDT 连续运行 配置字寄存器中的 WDTE 位置 1 时,WDTCON 寄存器中的 SWDTEN 位不起作用 如果 WDTE 清零, 那么 SWDTEN 位可用于使能和禁止 WDT 该位置 1 使能 WDT, 该位清零禁止 WDT TMR 寄存器的 PSC 和 PS<2:0> 位功能与 MDT10F271 系列单片机的早期版本相同 更多信息请参见第 7.1 节 Timer0 模块 图 2-6: 看门狗定时器框图 来自 Timer0 时钟源 16 位 WDT 预分频器 0 1 (1) 预分频器 8 31KHz LFINTOSC 时钟 WDTPS<3:0> PSA 0 1 PS<2:0> 至 Timer0 PSA 来自配置字寄存器的 WDTE 来自 WDTCON 的 SWDTEN WDT 超时 注 1: 这是 Timer0 与 WDT 共用的预分频器 更多信息, 请参见第 7.0 节 Timer0 模块 寄存器 18H: 看门狗定时器控制寄存器 (WDTCON) U-0 U-0 U-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-0 WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-5 未实现 : 读为 0 Bit4-1 WDTPS<3:0>: 看门狗定时器周期选择位位值 = 预分频 0000 = 1:32 0001 = 1:64 0010 = 1:128 0011 = 1:256 0100 = 1:512 ( 复位值 ) 0101 = 1:1024 0110 = 1:2048 0111 = 1:4096 20 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

1000 = 1:8192 1001 = 1:16384 1010 = 1:32768 1011 = 1:65536 1100 = 保留 1101 = 保留 1110 = 保留 1111 = 保留 Bit0 SWDTEN: 软件使能或禁止看门狗定时器位 (1) 1 = WDT 开启 0 = WDT 关闭 ( 复位值 ) 注 1: 如果配置字寄存器 (CONFIG) 的 WDTE 配置位 =1, 则 WDT 始终被使能, 而与该控制位的状态无关 如果配置字寄存器 (CONFIG) 的 WDTE 配置位 =0, 则可以使用该控制位开启 / 关闭 WDT 表 2-6-1:WDT 状态 条件 CLRWT 命令振荡器失效检测退出休眠 + 系统时钟 = T1OSC EXTRC NTRC 或 EXTCLK 退出休眠 + 系统时钟 = XT HS 或 LP WDT 清零 清零直到 OST 结束 表 2-6-2: 与看门狗定时器相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他 WDTCON WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN ---0 0000 ---0 0000 OPT_REG TCS TCE PSC PS2 PS1 PS0 1111 1111 1111 1111 CONFIG0 CPB MCLRE PWRTE 图注 : 看门狗定时器不使用阴影单元 注 1: 关于配置字寄存器中所有位的操作, 请参见寄存器 800H 复位值 WDTE FOSC2 FOSC1 FOSC0 21 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

3.0 复位 3.1 概述 MDT10F271 有以下几种不同类型的复位 : a) 上电复位 (POR) b) 正常工作期间的 WDT 复位 c) 休眠期间的 WDT 复位 d) 休眠期间的 MCLR复位 e) 欠压复位 (BOR) 有些寄存器不受任何复位的影响 ; 在上电复位时它们的状态未知, 而在其他复位时状态不变 大多数寄存器在以下复位时会复位到各自的 复位状态 : 上电复位 MCLR 复位 休眠期间的 MCLR复位 WDT 复位 WDT 唤醒不会导致寄存器像 WDT 复位那样复位, 这是因为唤醒被视为恢复正常工作 TO 和 PD 位在不同的复位情形下会分别被置 1 或清零, 如表 3-1 所示 软件可使用这些位判断复位的性质 图 3-1 给出了片上复位电路的简化框图 MCLR复位路径上有一个噪声滤波器, 用来检测并滤除小脉冲 关于脉冲宽度规范, 请参见第 11.0 节 电气特性 图 3-1: 片上复位电路的简化框图 外部复位 MCLR VPP 引脚 WDT 模块 SLEEP WDT 超时复位 VDD VDD 上升检测 上电复位 欠压 (1) 复位 BOREN SBOREN S OST/PWRT OST OSC1/ CLK1 引脚 10 位纹波 ( 异步 ) 计数器 R 片选 PWRT LFINTOSC 11 位纹波计数器 使能 PWRT 使能 OST 表 3-1:STATUS/PSTA 位及其含义 POR BOR TF PF 0 x 1 1 上电复位 u 0 1 1 欠压复位 u u 0 u WDT 复位 条件 22 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

u u 0 0 WDT 唤醒 u u u u 正常工作期间的 M C L R复位 U u 1 0 休眠期间的 M C L R复位 图注 : u = 不变, x = 未知 3.2 上电复位 在 VDD 达到足以使器件正常工作的电平之前, 片上上电复位电路将使器件保持在复位状态 要有效利用 POR, 只要将 MCLR引脚通过一个电阻连接到 VDD 即可 需要一个最大上升时间才能达到 VDD 详见第 11.0 节 电气特性 如果使能了欠压复位, 那么该最大上升时间规范将不再适用 欠压复位电路将使器件保持在复位状态, 直到 VDD 达到 VBOR( 见第 3.5 节 欠压复位 (BOR)) 注 : 当 VDD 降低时, 上电复位电路不会产生内部复位 要重新使能上电复位,VDD 必须至少保持 100us Vss 电压 的 当器件开始正常工作 ( 退出复位状态 ) 时, 器件的工作参数 ( 即电压 频率和温度等 ) 必须得到满足, 以确保其正常工作 如果不满足这些条件, 那么器件必须保持在复位状态, 直到满足工作条件为止 3.3 MCLR MDT10F271 在 MCLR复位路径中有一个噪声滤波器 该滤波器检测并滤除小脉冲 应注意,WDT 复位不会将 MCLR 引脚驱动为低电平 若施加在 MCLR 引脚上的电压超出规范值, 则在 ESD 事件发生期间可导致 MCLR 复位且器件中流过超过 规范值的过电流 因此, 建议不要把 MCLR引脚直接连接到 VDD 建议使用图 3-3 给出的 RC 网络 通过清零配置字寄存器中的 MCLR 位, 可使能内部 MCLR选项 当 MCLRE = 0 时, 在内部产生芯片的复 位信号 当 MCLRE = 1 时,PA3/MCLR引脚变成外部复位输入 在这种模式下,PA3/MCLR 引脚具有到 VDD 的弱上拉功能 图 3-3: 建议的 MCLR电路 MCU MCLRB SW1 ( 可选 ) C1 0.1uF( 可选 ) 23 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

3.4 上电延时定时器 (PWRT) 上电延时定时器仅在上电时 ( 上电复位或欠压复位 ) 提供一个 55ms( 标称值 ) 的固定延时 上电延时定时器采用 LFINTOSC 振荡器作为时钟源, 工作频率为 31kHz 更多信息, 请参见第 4.5 节 内部时钟模式 只要 PWRT 处于活动状态, 芯片就保持在复位状态 配 PWRT 延时使 VDD 有足够的时间上升到所需的电平 置位 PWRTE 可以禁止 ( 如果置 1) 或使能 ( 如果清零或被编程 ) 上电延时定时器 虽然不是必需的, 但是在使能欠压复位时也应使能上电延时定时器 由于以下原因不同芯片的上电延时定时器的延时也各不相同 : VDD 差异 温度差异 制造工艺差异 详见直流参数 ( 第 11.0 节 电气特性 ) 注 : 在 MCLR引脚的低于 VSS 的电压尖峰, 包括大于 80mA 的电流, 可导致闭锁 因此, 在 MCLR 引脚上施加 低 电平时, 应使用阻值在 50-100Ω 的串联电阻, 而不是将该引脚直接拉到 VSS 3.5 欠压复位 配置字寄存器中的 BOREN0 和 BOREN1 位用于选择 4 种欠压复位模式中的一种 其中添加了两种允许使用软件或硬件对 BOR 的使能进行控制的模式 当 BOREN<1:0> = 01 时, 可由 PSTA 寄存器的 SBOREN 位使能 / 禁止 BOR, 从而能用软件对其进行控制 通过选择 BOREN<1:0>, 可使欠压复位在休眠时被自动禁止, 从而节约功耗 ; 而在唤醒后被重新使能 在此模式下,SBOREN 位被禁止 关于配置字的定义, 请参见寄存器 PSTA 如果 VDD 下降到 VBOR 以下, 且持续时间超过参数值 (TBOR)( 见第 11.0 节 电气特性, 欠压状况将使 ) 器件复位 不管 VDD 的变化速率如何, 上述情况都会发生 如果 VDD 低于 VBOR 的时间少于参数值 (TBOR), 则不一定会发生复位 任何复位 ( 上电复位 欠压复位或看门狗定时器复位等 ) 都会使芯片保持复位状态, 直到 VDD 上升到 VBOR 以上 ( 见图 3-5) 如果使能了上电延时定时器, 此时它将启动, 并且会使器件保持复位状态的时间延长 64ms 注 : 配置字寄存器中的 PWRTE 位用于使能上电延时定时器 如果在上电延时定时器运行过程中,VDD 降低到 VBOR 以下, 芯片将重新回到欠压复位状态并且上电延时定时器会恢复为初始状态 一旦 VDD 上升到 VBOR 以上, 上电延时定时器将执行一段 64ms 的复位 图 3-5: 欠压情形 24 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

VDD 内部复位 64 ms (1) VBOR VDD 内部复位 VDD 内部复位 < 64 ms 64 ms (1) 64 ms (1) VBOR VBOR 注 1: 仅在 PWRTE 位被设置为 0 时, 才增加 64 ms 延时 表 3-5: 与欠压有关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他 PSTA ULPWUE SBOREN MCR IER POR BOR 0001 100x 0001 100x STATUS IRP PR1 PAGE TF 图注 : u = 不变, x = 未知, = 未实现位, 读为 0, q = 取值视具体情况而定 BOR 不使用阴影单元 注 1: 其他 ( 非上电 ) 复位包括正常工作时的 MCLR复位和看门狗定时器复位 PF 复位值 Z HC C 0001 1xxx 0001 1xxx 3.6 延时时序 上电时的延时时序如下 : 在 POR 延时结束后, 施加一段 PWRT 延时 PWRT 超时后激活 OST 总延时时间取决于振荡器配置和 PWRTE 位的状态 例如, 在 EC 模式且 PWRTE 位被擦除 (PWRT 禁止 ) 的情况下, 根本不会出现延时 图 3-6-1 3-6-2 和 3-6-3 分别给出了各种情形下的延时时序 当振荡器起振后, 通过使能双速启动或故障保护监控器, 器件将以 INTOSC 作为时钟源来执行代码 ( 见第 4.7.2 节 双速启动顺序 和第 4.9 节 故障保护时钟监控器 ) 由于延时是由上电复位脉冲触发的, 因此如果 MCLR 保持足够长时间的低电平, 所有延时都将结束 将 MCLR 电平拉高后, 器件将立即开始执行代码 ( 见图 3-6-2) 这对于测试或同步多个并行工作的 MDT10F271 器件来说是非常有用的 表 3-6-1 给出了一些特殊寄存器的复位条件, 而表 3-2 给出了所有寄存器的复位条件 图 3-6-1: 上电时的超时时序 (MCLR延时): 情形 1 VDD MCLR 内部 POR TPWRT PWRT 超时 TOST OST 超时 内部复位 25 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

图 3-6-2: 上电时的超时时序 (MCLR延时): 情形 2 VDD MCLR 内部 POR TPWRT PWRT 超时 TOST OST 超时 内部复位 图 3-6-3: 上电时的超时时序 (MCLR及 VDD) VDD MCLR 内部 POR TPWRT PWRT 超时 TOST OST 超时 内部复位 表 3-6-1: 特殊寄存器的初始状态 条件程序计数器状态寄存器 PSTA 寄存器 上电复位 0000h 0001 1xxx --01 --0x 正常工作期间的 MCLR复位 0000h 000u uuuu --0u --uu 休眠期间的 MCLR复位 0000h 0001 0uuu --0u --uu WDT 复位 0000h 0000 uuuu --0u --uu WDT 唤醒 PC + 1 uuu0 0uuu --uu --uu 欠压复位 0000h 0001 1uuu --01 --u0 通过中断从休眠唤醒 PC + 1 (1) uuu1 0uuu --uu --uu 图注 : u = 不变, x = 未知, = 未实现位, 读为 0 注 1: 当器件被中断唤醒且全局中断允许位 GIE 位置 1 时, 执行 PC+1 后,PC 装入中断向是 (0004h) 表 3-6-2: 各种情形下的超时 振荡器配置 上电 欠压复位 PWRTE = 0 PWRTE = 1 PWRTE = 0 PWRTE = 1 从休眠状态唤醒 XT,HS,LP T PWRT + 1024 * T OSC 1024 * T OSC T PWRT + 1024 * T OSC 1024 * T OSC 1024 * T OSC RC,EC,INTOSC T PWRT T PWRT 26 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

3.7 电源控制 (PSTA) 寄存器 电源控制寄存器 PSTA( 寄存器 8EH) 有两个状态位, 用于指示上次发生的复位的类型 bit0 是 BOR( 欠压复位 ) 标志位 BOR 在上电复位时未知 然后, 用户必须将该位置 1, 并在随后的复位发时检查 BOR 是否为 0, 如果是, 则表示已发生欠压复位 当禁止欠压复位电路 ( 配置字寄存器中的 BOREN<1:0> = 00) 时,BOR 状态位是 无关位 并且不一定预测得到 bit1 是 POR( 上电复位 ) 标志位, 在上电复位时值为 0, 其他情况下不受影响 上电复位后, 用户必须对该位写 1 发生后续复位后, 如果 POR 为 0, 则表示发生了上电复位 ( 即 VDD 可能已经变为了低电平 ) 更多信息, 请参见第 6.3.4 节 超低功耗唤醒 和第 3.5 节 欠压复位 (BOR) 4.0 系统时钟 4.1 概述 振荡器有多种时钟源和选择功能, 从而使其应用非常广泛, 并可最大限度地提高性能和降低功耗 图 4-1 给出了振荡器模块的框图 时钟源可以配置为由外部振荡器 石英晶体谐振器 陶瓷谐振器以及阻容 (RC) 电路提供 此外, 系统时钟源可以配置为由两个内部振荡器中的一个提供, 并可以通过软件选择速度 其他时钟功能包括 : 通过软件选择外部或内部系统时钟源 双速启动模式, 使外部振荡器从启动到代码执行间的延时达到最小 故障保护时钟监视器 (FSCM) 旨在检测外部时钟源的故障 (LP XT HS EC 或 RC 模式 ) 并自动切换到内部振荡器 振荡器模块可配置为以下 8 种时钟模式之一 1. EC 外部时钟,I/O 在 PA4 上, 时钟从 PA5 输入 2. LP32kHz 低功耗晶振模式 3. XT 中等增益晶振或陶瓷谐振振荡器模式 4. HS 高增益晶振或陶瓷谐振器模式 5. RC 外部阻容 (RC), FOSC/4 输出到 OSC2/CLKOUT 6. RC+IO 外部阻容,I/O 在 PA4 上 7. IRC 内部振荡器,PA4 输出 1/4 系统时钟频率,PA5 为 I/O PIN 8. IRC+IO 内部振荡器,PA4 PA5 作为 I/O PIN 通过配置字寄存器 (CONFIG) 的 FOSC<2:0> 位来配置时钟源模式 内部时钟可用两个内部振荡器产生 HFINTOSC 是经过校准的高频振荡器 LFINTOSC 是未经校准的低频振荡器 图 4-1:MCU 时钟源框图 27 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

CFG_CLK_MODE[2:0] CCFG0 配置字寄存器 LP XT HS RC RCIO EC IRCF[2:0] OSCCON 寄存器 SCS[0] OSCCON 寄存器 FOSC/16MHz SOSC/31KHz 分频器 16MHz 8MHz 4MHz 2MHz 1MHz 500KHz 250KHz 31KHz 111 110 101 100 011 010 001 000 MUX_8 0 1 MUX_2 系统时钟 上电延时定时器 (PWRT) 看门狗定时器 (WDT) 故障保护时钟监控器 (FSCM) 4.2 振荡器控制 振荡器控制 (OSCCON) 寄存器 ( 图 4-1) 控制系统时钟和频率选择等选项 OSCCON 寄存器包含以下位 : 频率选择位 (IRCF) 频率状态位 (HTS 和 LTS) 系统时钟控制位 (OSTS 和 SCS) 寄存器 8FH: 振荡器控制寄存器 (OSCCON) U-0 R/W-1 R/W-0 R/W-1 R-1 R-0 R-0 R/W-0 IRCF2 IRCF1 IRCF0 OSTS (1) HTS LTS SCS bit7 bit0 28 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7 未实现 : 读为 0 bit6-4 bit3 bit2 bit1 bit0 IRCF<2:0>: 内部振荡器频率选择位 000 = 31kHz 001 = 250kHz 010 = 500kHz 011 = 1MHz 100 = 2MHz 101 = 4MHz ( 缺省值 ) 110 = 8MHz 111 = 16MHz (1) OSTS: 振荡器起振超时状态位 1 = 器件运行在 FOSC<2:0> 定义的外部时钟之下 0 = 器件运行在内部振荡器之下 (HFINTOSC 或 LFINTOSC) HTS:HFINTOSC( 高频 16MHz 到 250kHz) 状态位 1 = HFINTOSC 稳定 0 = HFINTOSC 不稳定 LTS:LFINTOSC( 低频 31kHz) 状态位 1 = LFINTOSC 稳定 0 = LFINTOSC 不稳定 SCS: 系统时钟选择位 1 = 内部振荡器用于系统时钟 0 = 时钟源由 FOSC<2:0> 决定 注 (1): 故障保护模式使能时, 该位将复位为 0 4.3 时钟源模式 时钟源模式可分为外部和内部模式 外部时钟模式依靠外部电路提供时钟源 例子有 : 振荡器模块 (EC 模式 ) 石英晶体谐振器或陶瓷谐振器 (LP XT 和 HS 模式 ) 以及阻容 (RC) 模式电路 内部时钟源内置于振荡器模块中 振荡器模块有两个内部振荡器, 一个是 16MHz 高频内部振荡器 (HFINTOSC), 另一个是 31kHz 低频内部振荡器 (LFINTOSC) 可通过 OSCCON 寄存器的系统时钟选择 (SCS) 位, 在外部或内部时钟源之间选择系统时钟 ( 欲了解更多信息, 请参见第 4.6 节 时钟切换 ) 29 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

4.4 外部时钟模式 4.4.1 振荡器起振定时器 (OST) 如果振荡器模块配置为 LP XT 或 HS 模式, 振荡器起振定时器 (OST) 对来自 OSC1 的振荡计数 1024 次 这发生在上电复位 (POR) 之后以及上电延时定时器 (PWRT) 延时结束 ( 如果配置了 ) 时, 或从休眠中唤醒后 在此期间, 程序计数器不递增, 程序执行暂停 OST 确保使用石英晶体谐振器或陶瓷谐振器的振荡器电路已经启动并向振荡器模块提供稳定的系统时钟信号 当在时钟源之间切换时, 需要一定的延时以使新时钟稳定 表 4-4-1 给出了振荡器延时的例子 为了使外部振荡器起振和代码执行之间的延时最小, 可选择双速时钟启动模式 ( 见第 4.7 节 双速时钟启动模式 ) 表 4-4-1: 振荡器延时示例 休眠 /POR 切换自切换到频率振荡器延时 LFINTOSC HFINTOSC 31kHz 250kHz 到 16MHz 休眠 /POR EC,RC DC20MHz 双周期 LFINTOSC(31kHz) EC,RC DC20MHz 每次一周期 振荡器预热延时 (T WARM) 休眠 /POR LP,XT,HS 32kHz 到 20MHz 1024 个时钟周期 (OST) LFINTOSC(31kHz) HFINTOSC 250kHz 到 16MHz 1us( 近似值 ) 4.4.2 EC 模式 外部时钟 (EC) 模式允许外部产生的逻辑电平作为系统时钟源 工作在此模式下时, 外部时钟源连接到 OSC1 输入,OSC2 引脚可用作通用 I/O 图 4-4-2 给出了 EC 模式的引脚连接 当选取 EC 模式时, 振荡器起振定时器 (OST) 被禁止 因此, 上电复位 (POR) 后或者从休眠中唤醒后的操作不存在延时 因为 MCU 的设计是完全静态的, 停止外部时钟输入将使器件暂停工作并保持所有数据完整 当再次启动外部时钟时, 器件恢复工作, 就好像没有停止过一样 图 4-4-2: 外部时钟 (EC) 模式的工作原理 来自外部系统的时钟 OSC1/CLKIN MCU I/O OSC2/CLKOUT (1) 注 1: 此引脚的其他功能列在第 1.0 节 器件概述 中 4.4.3 LP XT 和 HS 模式 LP XT 和 HS 模式支持连接到 OSC1 和 OSC2 的石英晶体谐振器或陶瓷谐振器的使用 ( 图 4-4-3-1) 模式选择内部反相放大器的低 中或高增益设定, 以支持各种谐振器类型及速度 LP 振荡器模式选择内部反相放大器的最低增益设定 LP 模式的电流消耗在三种模式中最小 该模式设计仅用于驱动 32.768kHz 音叉 (Tuning Fork) 式晶振 ( 钟表晶振 ) 30 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

XT 振荡器模式选择内部反相放大器的中等增益设定 XT 模式的电流消耗在三种模式中居中 该模式最适用于驱动具备中等驱动电平规格要求的谐振器 HS 振荡器模式选择内部反相放大器的最高增益设定 HS 模式的电流消耗在三种模式中最大 该模式最适用于驱动需要高驱动设定的谐振器 图 4-4-3-1 和图 4-4-3-2 分别给出了石英晶体谐振器和陶瓷谐振器的典型电路 注 1: 石英晶振的特性随类型 封装和制造商而变化 要了解规格说明和推荐应用, 应查阅制造商提供的数据手册 2: 应始终验证振荡器在应用预期的 VDD 和温度范围内的性能 图 4-4-3-1: 石英晶体的工作原理 (LP XT 或 HS 模式 ) MDT MCU C1 石英晶体 OSC1/CLKIN RF (2) 休眠 至内部逻辑 C2 RS (1) OSC2/CLKOUT 注 1: 低驱动电平的石英晶振可能需要串联一个电阻 (RS) 2: RF 的值根据所选的振荡模式变化 ( 典型值在 2 MΩ 到 10 MΩ 之间 ) 图 4-4-3-2: 陶瓷谐振器的工作原理 (XT 或 HS 模式 ) MDT MCU C1 OSC1/CLKIN 至内部逻辑 RP (3) RF (2) Sleep C2 陶瓷谐振器 RS (1) OSC2/CLKOUT 注 1: 低驱动电平的石英晶振可能需要串联一个电阻 (RS) 2: RF 的值根据所选的振荡模式变化 ( 典型值在 2 MΩ 到 10 MΩ 之间 ) 3: 要使陶瓷谐振器正常工作, 可能需要并联一个反馈电阻 (RP)( 典型值 1 MΩ ) 4.4.4 外部 RC 模式 外部阻容 (RC) 模式支持使用外部 RC 电路 对时钟精度要求不高时, 这使设计人员有了很大的频率选择空间, 且保持成本最低 有 RC 和 RCIO 两种模式 在 RC 模式下, 电路连接到 OSC1 RCOSC2/CLKOUT 输出 RC 振荡频率的 4 分频 该信号可用来为外部电路 同步 校准 测试或其他应用需求提供时钟 图 4-4-4 给出了外部 RC 模式的连接图 31 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

图 4-4-4: 外部 RC 模式 VDD MDT MCU REXT CEXT OSC1/CLKIN 内部时钟 VSS FOSC/4 或 I/O (2) OSC2/CLKOUT (1) 建议值 : 10 kω REXT 100 kω, < 3V 3 kω REXT 100 kω, 3-5 V CEXT > 20 PF, 2-5V 注 1: 该引脚的其他功能列在第 1.0 节 器件概述 中 2: 输出取决于 RC 或 RCIO 时钟模式 在 RCIO 模式下,RC 电路连接到 OSC1 OSC2 成为额外的通用 I/O 引脚 I/O 引脚成为 PORTA 的 bit4 (PA4) 图 4-5-5 给出了 RCIO 模式的连接图 RC 振荡器频率是供电电压 电阻 (R EXT ) 和电容 (C EXT ) 值以及工作温度的函数 影响振荡器频率的其他因素有 : 电压门限值变化 元件容差 不同封装的电容 用户还应考虑因所使用的外部 RC 元件的容差而导致的差异 4.5 内部时钟模式 振荡器模块有两个独立的内部振荡器, 可配置或选取为系统时钟源 1. HFINTOSC( 高频内部振荡器 ) 出厂时已校准, 工作频率为 16MHz, 精度范围为 ±1% 2. LFINTOSC( 低频内部振荡器 ) 未经校准, 工作频率为 31kHz 通过软件对 OSCCON 寄存器的内部振荡器频率选择位 IRCF<2:0> 进行操作, 可选择系统时钟速度 可通过 OSCCON 寄存器的系统时钟选择 (SCS) 位, 在外部或内部时钟源之间选择系统时钟 ( 见第 4.6 节 时钟切换 ) 4.5.1 INTOSC 和 INTOSCIO 模式 当在配置字寄存器 (CONFIG) 中使用振荡器选择位 FOSC<2:0> 设置器件时, 在 INTOSC 和 INTOSCIO 模式下将内部振荡器配置为系统时钟源 在 INTOSC 模式下,OSC1/CLKIN 可用作通用 I/O OSC2/CLKOUT 输出所选内部振荡器频率的 4 分频 CLKOUT 信号可用来为外部电路 同步 校准 测试或其他应用需求提供时钟 在 INTOSCIO 模式下,OSC1/CLKIN 和 OSC2/CLKOUT 引脚可用作通用 I/O 32 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

4.5.2 HFINTOSC 高频内部振荡器 (HFINTOSC) 是出厂时已校准的 16MHz 内部时钟源 HFINTOSC 的输出连接到后分频器和多路复用器 ( 见图 4-1) 使用 OSCCON 寄存器的 IRCF<2:0> 位, 可通过软件选择七个频率之一 更多信息, 请参见第 4.5.4 节 频率选择位 (IRCF) 将 OSCCON 寄存器的 ICRF<2:0> 位设置为 000 选择 16MHz 到 250kHz 之间的任一频率, 可使能 HFINTOSC 然后将 OSCCON 寄存器的系统时钟源 (SCS) 位置 1, 或通过将配置寄存器 (CONFIG) 中的 IESO 置 1 使能双速启动 OSCCON 寄存器的 HF 内部振荡器 (HTS) 位用于显示 HFINTOSC 是否稳定 4.5.3 LFINTOSC 低频内部振荡器 (LFINTOSC) 是未经校准的 31kHz 内部时钟源 LFINTOSC 的输出连接到后分频器和多路复用器 ( 见图 4-1) 通过软件对 OSCCON 寄存器的 IRCF<2:0> 位进行操作, 选取 31kHz 更多信息, 请参见第 4.5.4 节 频率选择位 (IRCF) LFINTOSC 还是上电延时定时器 (PWRT) 看门狗定时器 (WDT) 以及故障保护时钟监控器 (FSCM) 的时钟源 选取 31kHz( 将 OSCCON 寄存器的 IRCF<2:0> 位设置为 000) 为系统时钟源 (OSCCON 寄存器的位 SCS = 1), 或者使能以下任一项时,LFINTOSC 将被使能 : 双速启动 ( 配置字寄存器的位 IESO = 1 且 OSCCON 寄存器的位 IRCF = 000) 上电延时定时器 (PWRT) 看门狗定时器 (WDT) 故障保护时钟监控器 (FSCM) OSCCON 寄存器的 LF 内部振荡器 (LTS) 位用于指示 LFINTOSC 是否稳定 4.5.4 频率选择位 (IRCF) 16MHz HFINTOSC 和 31kHz LFINTOSC 的输出连接到后分频器和多路复用器 ( 见图 4-1) OSCCON 寄存器的内部振荡器频率选择位 IRCF<2:0> 用于选择内部振荡器的频率输出 可通过软件选择以下 8 个频率之一 : 16MHz 8MHz 4MHz ( 复位后的缺省值 ) 2MHz 1MHz 500kHz 250kHz 31kHz 注 : 任何复位后,OSCCON 寄存器的 IRCF<2:0> 位将被置为 101 且频率选择置为 4MHz 用户可修改 IRCF 位来选择其他频率 4.5.5 HFINTOSC 和 LFINTOSC 时钟切换时序 当在 LFINTOSC 和 HFINTOSC 之间切换时, 新的振荡器可能为了省电已经关闭 ( 见图 4-5-5) 在这种情况下,OSCCON 寄存器的 IRCF 位被修改之后 频率选择生效之前, 存在一个延时 OSCCON 寄存器的 LTS 和 HTS 位将反映 LFINTOSC 和 HFINTOSC 振荡器的当前活动状态 频率选择时序如下 : 33 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

1. OSCCON 寄存器的 IRCF<2:0> 位被修改 2. 如果新时钟是关闭的, 开始一个时钟启动延时 3. 时钟切换电路等待当前时钟下降沿的到来 4. CLKOUT 保持为低, 时钟切换电路等待新时钟上升沿的到来 5. 现在 CLKOUT 连接到新时钟 OSCCON 寄存器的 HTS 和 LTS 位按要求被更新 6. 时钟切换完成 更多信息请参见图 4-1 如果选取的内部振荡器速度在 16MHz 到 250kHz 之间, 选取新频率不存在启动延时 这是因为新旧频率都来自经过后分频器和多路复用器的 HFINTOSC 启动延时规范在第 11.0 节 电气特性 中与振荡器相关的表格中 图 4-5-5: 内部振荡器切换时序 HFINTOSC LFINTOSC( 禁止 FSCM 和 WDT) HFINTOSC LFINTOSC 起振时间 2 周期同步运行 IRCF<2:0> 0 =0 系统时钟 HFINTOSC HFINTOSC LFINTOSC IRCF<2:0> LFINTOSC( 禁止 FSCM 和 WDT) 0 =0 2 周期同步运行 系统时钟 LFINTOSC LFINTOSC HFINTOSC IRCF<2:0> HFINTOSC 除非使能 WDT 或 FSCM, 否则 LFINTOSC 将关闭 起振时间 2 周期同步 运行 =0 0 系统时钟 4.6 时钟切换 通过软件对 OSCCON 寄存器的系统时钟选择 (SCS) 位进行操作, 可将系统时钟源在外部和内部时钟源之间切换 34 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

4.6.1 系统时钟选择 (SCS) 位 OSCCON 寄存器的系统时钟选择 (SCS) 位选择用于 CPU 和外设的系统时钟源 OSCCON 寄存器的位 SCS = 0 时, 系统时钟源由配置字寄存器 (CONFIG) 中 FOSC<2:0> 位的配置决定 OSCCON 寄存器的位 SCS = 1 时, 根据 OSCCON 寄存器的 IRCF<2:0> 位所选的内部振荡器频率选取系统时钟源 复位后,OSCCON 寄存器的 SCS 总是被清零 注 : 任何自动时钟切换 ( 可能产生自双速启动或故障保护时钟监控器 ) 都不更新 OSCCON 寄存器的 SCS 位 用户可监控 OSCCON 寄存器的 OSTS 位以确定当前的系统时钟源 4.6.2 振荡器起振超时状态 (OSTS) 位 OSCCON 寄存器的振荡器起振超时状态 (OSTS) 位用于指示系统时钟是来自外部时钟源, 还是来自内部时钟源 外部时钟源由配置字寄存器 (CONFIG) 的 FOSC<2:0> 定义 OSTS 还特别指明在 LP XT 或 HS 模式下, 振荡器起振定时器 (OST) 是否已超时 4.7 双速时钟启动模式 双速启动模式通过最大限度地缩短外部振荡器起振与代码执行之间的延时, 进一步节省了功耗 对于频繁使用休眠模式的应用, 双速启动模式将在器件唤醒后除去外部振荡器的起振时间, 从而可降低器件的总体功耗 该模式使得应用能够从休眠中唤醒,INTOSC 用作时将钟源执行数条指令, 然后再返回休眠状态而无需等待主振荡器的稳定 注 : 执行 SLEEP 指令将中止振荡器起振时间, 并使 OSCCON 寄存器的 OSTS 位保持清零 当振荡器模块配置为 LP XT 或 HS 模式时, 振荡器起振定时器 (OST) 使能 ( 见第 4.4.1 节 振荡器起振定时器 (OST) )OST 将暂停程序执行, 直到完成 1024 次振荡计数 双速启动模式在 OST 计数时使用内部振荡器进行工作, 使代码执行的延时最大限度地缩短 当 OST 计数到 1024 且 OSCCON 寄存器的 OSTS 位置 1 时, 程序执行切换至外部振荡器 4.7.1 双速启动模式配置 通过以下设定来配置双速启动模式 : 配置字寄存器 (CONFIG) 中的位 IESO = 1; 内部 / 外部切换位 ( 使能双速启动模式 ) OSCCON 寄存器的位 SCS = 0 配置字寄存器 (CONFIG) 中的 FOSC<2:0> 配置为 LP XT 或 HS 模式 在下列操作之后, 进入双速启动模式 : 上电复位 (POR) 且上电延时定时器 (PWRT) 延时结束 ( 使能时 ) 后, 或者 从休眠状态唤醒 如果外部时钟振荡器配置为除 LP XT 或 HS 模式以外的任一模式, 那么双速启动将被禁止 这是因为 POR 后或从休眠中退出时, 外部时钟振荡器不需要稳定时间 35 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

4.7.2 双速启动顺序 1. 从上电复位或休眠中唤醒 2. 使用内部振荡器以 OSCCON 寄存器的 IRCF<2:0> 位设置的频率开始执行指令 3. OST 使能, 计数 1024 个时钟周期 4. OST 超时, 等待内部振荡器下降沿的到来 5. OSTS 置 1 6. 系统时钟保持为低, 直到新时钟下一个下降沿的到来 (LP XT 或 HS 模式 ) 7. 系统时钟切换到外部时钟源 4.7.3 检查双速时钟状态 通过检查 OSCCON 寄存器的 OSTS 位的状态, 可以确定单片机是否如配置字寄存器 (CONFIG) 中 FOSC<2:0> 位定义的那样运行于外部时钟源, 抑或是运行于内部振荡器 图 4-7-3: 双速启动 HFINTOSC TOST OSC1 0 1 1022 1023 OSC2 程序计数器 PC - N PC PC+1 系统时钟 4.8 掉电模式 ( 休眠 ) 通过执行 SLEEP 指令可进入掉电模式 如果使能看门狗定时器 : WDT 将被清零并保持运行 状态寄存器中的 PD 位被清零 TO 位被置 1 关闭振荡器驱动器 I/O 端口保持执行 SLEEP 指令之前的状态 ( 驱动为高电平 低电平或高阻状态 ) 为使这种模式下的电流消耗降至最低, 所有 I/O 引脚都应保持为 VDD 或 VSS, 以确保没有外部电路从 I/O 引脚消耗电流 为了避免输入引脚悬空而引入开关电流, 应在外部将高阻输入的 I/O 引脚拉为高电平或低电平 为使电流消耗降至最低,T0CKI 输入也应保持为 VDD 或 VSS 还应考虑 PORTA 片上上拉的影响 36 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

MCLR引脚必须为逻辑高电平 注 : 请注意, 由于 WDT 超时产生的复位不会将 MCLR引脚驱动为低电平 4.8.1 从休眠状态唤醒 由于在休眠期间没有片上时钟处于工作状态, 下列外设中断可以将器件从休眠状态唤醒 : 1. TMR1 中断 Timer1 必须用作异步计数器 2. PORTA 电平变化中断 3. 来自 INT0 与 INT1 引脚的外部中断 4. 看门狗定时器唤醒 ( 如果 WDT 使能 ) MCLR引脚上的有效信号会导致器件复位 其他事件被认为是程序执行的继续 状态寄存器中的 TO 和 PD 位用于确定器而在执行 SLEEP 件复位的原因 位在上电时被置 1,PD 指令时被清零 TO 位在发生 WDT 唤醒时被清零 当执行 SLEEP 指令时, 下一条指令 (PC+1) 将预先取出 如果希望通过中断事件唤醒器件, 则必须将相应的中断允许位置 1( 使能 ) 发生唤醒与 GIE 位的状态无关 如果 GIE 位被清零 ( 禁止 ), 器件将继续执行 SLEEP 指令之后的指令 如果 GIE 位被置 1( 使能 ), 器件执行 SLEEP 指令之后的指令, 然后跳转到中断地址 (0004h) 处执行代码 如果不希望执行 SLEEP 指令之后的指令, 用户应该在 SLEEP 指令后面放置一条 NOP 指令 注 : 如果禁止了全局中断 (GIE 被清零 ), 但有任一中断源将其中断允许位以及相应的中断标志位置 1, 器件将立即从休眠状态唤醒 器件从休眠状态唤醒时,WDT 都将被清零, 而与唤醒原因无关 4.8.2 使用中断唤醒 当禁止全局中断 (GIE 被清零 ) 时, 并且有任一中断源将其中断允许位和中断标志位置 1, 将会发生下列事件之一 : 如果在执行 SLEEP 之前产生了中断, 那么 SLEEP 指令将被作为一条 NOP 指令执行 因此,WDT 及其预分频器和后分频器 ( 如果使能 ) 将不会被清零, 并且 TO 位将不会被置 1, 同时 PD 位也不会被清零 如果在执行 SLEEP 指令期间或之后产生了中断, 那么器件将被立即从休眠状态唤醒 SLEEP 指令将在唤醒之前执行完毕 因此,WDT 及其预分频器和后分频器 ( 如果使能 ) 将被清零, 并且 TO 位将被置 1, 同时 PD 位也将被清零 即使在执行 SLEEP 指令之前, 检查到标志位为 0, 它也可能在 SLEEP 指令执行完毕之前被置 1 要确定是否执行了 SLEEP 指令, 可测试 PD 位 如果 PD 位置 1, 则说明 SLEEP 指令被当作一条 NOP 指令执行了 在执行 SLEEP 指令之前, 必须先执行一条 CLRWT 指令, 来确保将 WDT 清零 详情请参见图 4-8 图 4-8: 通过中断将器件从休眠状态唤醒 37 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

1 2 3 4 1 2 3 4 1 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 OSC1 CLKOUT (4) TSOT (2) INT 引脚 INTF 标志 (INTCON 寄存器 ) GIE bit (INTCON 寄存器 ) 处理器 (3) 中断响应延时 休眠 指令流 PC PC PC+1 PC+2 PC+2 PC+2 0004h 0005h 取指令 { Inst(PC) = Sleep Inst(PC + 1) Inst(PC + 2) Inst(0004h) Inst(0005h) 执行指令 { Inst(PC - 1) 休眠 Inst(PC + 1) 空周期 空周期 Inst(0004h) 注 1: 假设为 XT HS 或 LP 振荡器模式 2: TOST = 1024 TOSC ( 图中未按比例绘制 ) 该延时不适用于 EC 和 RC 振荡器模式 3: 假设 GIE = 1 在这种情形下, 处理器被唤醒后, 将跳转到 0004h 处执行代码 如果 GIE = 0, 程序将继续执行 4: 在 XT HS LP 或 EC 振荡器模式下, 不输出 CLKOUT 信号, 在此处仅作为时序参考 4.9 故障保护时钟监控器 故障保护时钟监控器 (FSCM) 使得器件在出现外部振荡器故障时仍能继续工作 FSCM 能在振荡器起振延时定时器 (OST) 到期后的任一时刻检测振荡器故障 FSCM 通过将配置字寄存器 (CONFIG) 中的 FCMEN 位置 1 来使能 FSCM 可用于所有外部振荡模式 (LP XT HS EC RC 和 RCIO) 图 4-9:FSCM 框图 外部时钟 时钟监控器锁存器 (CM) ( 边沿触发 ) S LFINTOSC 振荡器 +64 R 31KHz (~32 µs) 采样时钟 488 Hz (~2 ms) 检测到时钟故障 4.9.1 故障保护检测 FSCM 模块通过将外部振荡器与 FSCM 采样时钟比较来检测振荡器故障 LFINTOSC 除以 64, 就产生了采样时钟 请参见图 4-9 故障检测器内部有一个锁存器 在外部时钟的每个下降沿, 锁存器被置 1 在采样时钟的每个上升沿, 锁存器被清零 如果采样时钟的整个半周期流逝而主时钟依然未进入低电平, 就检测到故障 4.9.2 故障保护操作 当外部时钟出现故障时,FSCM 将器件时钟切换到内部时钟源, 并将 PIFB 寄存器的 OSFIF 标志位置 1 如果在 PIFB 寄存器的 OSFIE 位置 1 的同时将该标志位置 1, 将产生中断 器件固件随后会采取措施减轻可能 38 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

由故障时钟所产生的问题 系统时钟将继续来自内部时钟源, 直到器件固件成功重启外部振荡器并切换回外部操作 FSCM 所选的内部时钟源由 OSCCON 寄存器的 IRCF<2:0> 位决定 这使内部振荡器可以在故障发生前就得以配置 4.9.3 故障保护条件清除 复位 执行 SLEEP 指令或翻转 OSCCON 寄存器的 SCS 位后, 故障保护条件被清除 OSCCON 寄存器的 SCS 位被修改后,OST 将重新启动 OST 运行时, 器件继续从 OSCCON 中选定的 INTOSC 进行操作 OST 超时后, 故障保护条件被清除, 器件将从外部时钟源进行操作 必须先清除故障保护条件, 才能清零 OSFIF 标志位 4.9.4 复位或从休眠中唤醒 FSCM 设计为能在振荡器起振延时定时器 (OST) 到期后的任一时刻检测振荡器故障 OST 的使用场合为从休眠状态唤醒后以及任何类型的复位后 OST 不能在 EC 或 RC 时钟模式下使用, 所以一旦复位或唤醒完成, FSCM 就处于激活状态 FSCM 被使能时, 当双速启动也被使能 因此, 当 OST 运行时, 器件总是处于代码执行阶段 注 : 由于振荡器起振时间的范围变化较大, 在振荡器起振期间 ( 即, 从复位或休眠中退出时 ), 故障保护电路不处于激活状态 经过一段适当的时间后, 用户应检查 OSCCON 寄存器的 OSTS 位, 以验证振荡器是否已成功起振以及系统时钟是否切换成功 5.0 中断 MDT10F271 有以下多种中断源 : 外部中断 INT0(PC2) 与 INT1(PC3) Timer0 溢出中断 PORTA 电平变化中断 A/D 中断 Timer1 溢出中断 故障保护时钟监控器中断 中断控制寄存器 (INTS) 和外设中断请求寄存器 (PIFB) 在各自的标志位中记录各种中断请求 INTS 寄存器还包括各个中断允许位和全局中断允许位 INTS 寄存器中的全局中断允许位 GIE 在置 1 时允许所有未屏蔽的中断, 而在清零时禁止所有中断 可以通过 INTS 和 PIFB 寄存器中相应的允许位来禁止各个中断 复位时 GIE 被清零 响应中断时, 自动发生以下动作 : GIE 被清零以禁止任何其他中断 返回地址被压入堆栈 在 PC 中装入 0004h 执行 从中断返回 指令 RTFI 退出中断程序并将 GIE 位置 1, 从而重新使能未屏蔽的中断 INTS 寄存器包含以下中断标志位 : 39 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

INT0 引脚中断 PORTA 电平变化中断 Timer0 溢出中断 外设中断标志位在 PIFB 寄存器中 相应的中断允许位在 PIFB 寄存器中 PIFB 寄存器包含以下中断标志位 : A/D 中断 Timer1 溢出中断 INT1 引脚中断 故障保护时钟监视器中断 对于外部中断事件, 如 INT0 INT1 引脚或 PORTA 电平变化中断, 中断响应延时将为 3 到 4 个指令周期 确切的延时时间取决于发生中断事件的时间 ( 见图 5-1-1) 对于单周期或双周期指令, 中断响应延时完全相同 进入中断服务程序之后, 就可以通过查询中断标志位来确定中断源 在重新允许中断前, 必须用软件将中断标志位清零, 以避免重复响应该中断 注 : 1: 各中断标志位的置 1 不受相应的中断屏蔽位或 GIE 位状态的影响 2: 当执行一条清零 GIE 位的指令后, 任何等待在下一周期执行的中断都将被忽略 当 GIE 位被再次置 1 后, 被忽略的中断仍会继续等待处理 关于 Timer1 A/D 模块的更多信息, 请参见相应的外设章节 图 5-1-1: 中断逻辑 PA0 IOCA0 PA1 IOCA1 PA2 IOCA2 PA3 IOCA3 PA4 IOCA4 PA5 IOCA5 OSFIF OSFIE TMR1IF TMR1IE INT1IF INT1IE ADCIF ADCIE PAIF PAIE TMR0IF TMR0IE INT0IF INT0IE PEIF PEIE GIE 唤醒 ( 如果处于睡眠模式 ) 产生中断 40 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

图 5-1-2:INT 引脚中断时序 OSC1 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 CLKOUT (3) INT 引脚 (4) (1) INTF 标志 (INTCON 寄存器 ) (1) (5) (2) 中断响应延时 GIE 位 (INTCON 寄存器 ) 指令流 PC 取指令 { PC PC + 1 PC + 1 0004h Inst(PC) Inst(PC + 1) Inst(0004h) Inst(0005h) 执行指令 { Inst(PC - 1) Inst(PC) 空周期 空周期 Inst(0004h) 注 1: 在此采样 INTF 标志 ( 每个 1 周期 ) 2: 异步中断响应延时为 3-4 个 TCY 同步中断响应延时为 3 个 TCY, 其中 TCY 为一个指令周期, 无论 Inst ( PC ) 是单周期还是双周期指令, 中断响应延时都是相同的 3: 只有在 INTOSC 和 RC 振荡器模式下 CLKOUT 才有效 4: 关于 INT 脉冲的最小宽度, 请参见第 15.0 节 电气特性 中的交流规范 5: 允许在 4-1 周期内的任何时间将 INTF 置 1 5.1 中断特殊功能寄存器 5.1.1 INTS 寄存器 INTS 寄存器是可读写的寄存器, 包含 TMR0 寄存器溢出 PORTA 电平变化和外部 PC2/INT0 引脚中断的各种允许和标志位 注 : 当有中断条件产生时, 不管相应的中断允许位或 INTS 寄存器的全局允许位 GIE 状态如何, 中断标志位都将置 1 用户软件应该在允许中断之前确保将相应的中断标志位清零 寄存器 0BH/8BH/10BH/18BH: 中断控制寄存器 (INTS) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 GIE PEIE TIS INT0E PAIE TIF INT0F PAIF bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7 bit6 GIE: 全局中断允许位 1 = 允许所有未屏蔽的中断 0 = 禁止所有中断 PEIE: 外设中断允许位 1 = 允许所有未屏蔽的外设中断 0 = 禁止所有外设中断 41 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

bit5 bit4 bit3 bit2 bit1 bit0 注 TIS:Timer0 溢出中断允许位 1 = 允许 Timer0 中断 0 = 禁止 Timer0 中断 INT0E:PC2/INT0 外部中断允许位 1 = 允许 PC2/INT0 外部中断 0 = 禁止 PC2/INT0 外部中断 (1) PAIE:PORTA 电平变化中断允许位 1 = 允许 PORTA 电平变化中断 0 = 禁止 PORTA 电平变化中断 (2) TIF:Timer0 溢出中断标志位 1 = Timer0 寄存器已经溢出 ( 必须用软件清零 ) 0 = Timer0 寄存器没有溢出 INT0F:PC2/INT0 外部中断标志位 1 = 发生了 PC2/INT0 外部中断 ( 必须用软件清零 ) 0 = 未发生 PC2/INT0 外部中断 (1) PAIF:PORTA 电平变化中断标志位 1 = 至少一个 PORTA<5:0> 引脚的电平状态发生了改变 ( 必须用软件清零 ) 0 = 没有一个 PORTA<5:0> 引脚的电平状态发生改变 1: 必须同时使能 PAINTR 寄存器 2: 当 TMR0 计满回零时,TIF 位置 1 复位时 TMR0 的状态不变, 它应该在清零 TIF 位之前被初始化 5.1.2 PIFB 寄存器 PIFB 寄存器包含外设中断标志位 注 : 当有中断条件产生时, 不管相应的中断允许位或 INTS 寄存器的全局允许位 GIE 状态如何, 中断标志位都将置 1 用户软件应该在允许中断之前确保将相应的中断标志位清零 寄存器 0CH: 外设中断请求寄存器 1(PIFB) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 INT1E ADCIE OSFIE TMR1IE INT1F ADCIF OSFIF TMR1IF bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7 bit6 INT1E:PC3/INT1 外部中断允许位 1 = 允许 PC3/INT1 外部中断 0 = 禁止 PC3/INT1 外部中断 ADCIE:ADC 转换器中断允许位 1 = 允许 A/D 转换器中断 0 = 禁止 A/D 转换器中断 42 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

bit5 bit4 bit3 bit2 bit1 bit0 OSFIE: 振荡器故障中断允许位 1 = 允许振荡器故障中断 0 = 禁止振荡器故障中断 TMR1IE:Timer1 溢出中断允许位 1 = 允许 Timer1 溢出中断 0 = 禁止 Timer1 溢出中断 INT1F:PC3/INT1 外部中断标志位 1 = 发生了 PC3/INT1 外部中断 ( 必须用软件清零 ) 0 = 未发生 PC3/INT1 外部中断 ADCIF:ADC 中断标志位 1 = A/D 转换完成 0 = A/D 转换尚未完成或尚未启动 OSFIF: 振荡器故障中断标志位 1 = 系统振荡器发生故障, 时钟输入切换为 INTOSC( 必须用软件清零 ) 0 = 系统时钟正常运行 TMR1IF:Timer1 溢出中断标志位 1 = Timer1 寄存器已经溢出 ( 必须用软件清零 ) 0 = Timer1 寄存器未溢出 表 5-1: 与中断相关的寄存器 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他 复位值 INTS GIE PEIE TIS INS PAIE TIF INTF PAIF 0000 0000 0000 0000 PAINTR PAINTR5 PAINTR4 PAINTR3 PAINTR2 PAINTR1 PAINTR0 --00 0000 0000 0000 PIFB INT1IE ADCIE OSFIE TMR1IE INT1IF ADCIF OSFIF TMRIF 0000 0000 0000 0000 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0), q = 取值视情况而定 中断模块不使用阴影单元 5.2 外部中断 INT0(PC2) INT1(PC3) 引脚上的外部中断是边沿触发的 ; 当 OPT_REG 寄存器的 INT1EG 与 INT0EG 位被置 1 时在上升沿触发, 而当 INT1EG 与 INT0EG 位被清零时在下降沿触发 当 INT0(PC2) INT1(PC3) 引脚上出现有效边沿时,INTS 寄存器的 INT0F 位 PIFB 寄存器的 INT1F 位置 1 可以通过将 INTS 寄存器的 INT0E PIFB 寄存器的 INT1E 控制位清零来禁止该中断 在重新允许该中断前, 必须在中断服务程序中先用软件将 INT0F INT1F 位清零 如果 INT0E 与 INT1E 位在进入休眠状态前被置 1, 则 INT0(PC2) INT1(PC3) 引脚上中断能将处理器从休眠状态唤醒 关于 INT0(PC2) INT1(PC3) 引脚上中断将处理器从休眠状态唤醒的时序, 请参见图 4-8 注 : 必须对 ADINS 和 CPIOC 寄存器进行初始化, 以将模拟通道配置为数字输入 配置为模拟输入的引脚总是读为 0 5.3 Timer0 中断 TMR0 寄存器溢出 (FFh 00h) 会将 INTS 寄存器的 T0IF 位置 1 可以通过置 1/ 清零 INTS 寄存器的 T0IE 位来使能 / 禁止该中断 关于 Timer0 模块的操作, 请参见第 7.1 节 Timer0 模块 43 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

5.4 PORTA 电平变化中断 PORTA 输入电平的变化会使的 PAIF 位置 1 可以通过置 1/ 清零的 PAIE 位来使能 / 禁止该中断 此外, 可通过 PAINTR 寄存器对该端口的各个引脚进行配置 注 : 当读操作正在执行时发生了 I/O 引脚电平变化, 则 PAIF 中断标志位可能不会被置 1 5.5 A/D 中断 ADC 模块在模数转换完成时,PIFB 寄存器中的 ADCIF 中断标志位均置 1 可以通过置 1/ 清零 PIFB 寄存器中的 ADCIE 位来使能 / 禁止该中断 5.6 中断的现场保护 在中断期间, 仅将返回的 PC 值压入堆栈 通常情况下, 用户可能希望在中断期间保存关键寄存器 ( 例如, W 寄存器和状态寄存器 ) 这必须用软件实现 应将临时保存寄存器 W_TEMP 和 STATUS_TEMP 置于 GPR 的末 16 字节中 ( 见图 2-2) 这 16 个单元是所有存储区共用的, 无需分区 这样就简化了现场保护和恢复操作 例 12-1 中所示的代码可用于 : 保存 W 寄存器 保存状态寄存器 执行 ISR 代码 恢复状态寄存器 ( 和存储区选择位寄存器 ) 恢复 W 寄存器 注 : MDT10F271 通常不需要保存 PCLATH 但是, 如果要在 ISR 和主程序中使用计算 LJUMP, 就必须在 ISR 中保存和恢复 PCLATH 例 5-7: 将状态寄存器和 W 寄存器保存在 RAM 中 STWR W_TEMP ; 保存 W 寄存器到 W_TEMP SWAPR STATUS,W ; 将 STATUS 寄存器高低四位交换后保存到 W( 目的 : 不改变标志 ) STWR STATUS_TEMP ; 保存 STATUS 寄存器内容到 STATUS_TEMP ; ;(ISR) ; 中断服务程序 ; SWAPR STATUS_TEMP,W ; 交换 STATUS_TEMP 高低四个字节 STWR STATUS ; 恢复标志状态寄存器 SWAPR W_TEMP,R ; 恢复 W 寄存器值 ( 用交换指令的目的 : 不改变状态寄存器值 ) SWAPR W_TEMP,W 6.0 I/O 端口 MDT10F271 共有 12 个通用 I/O 引脚 根据使能的外设不同, 有些 ( 或全部 ) 引脚不能用作通用 I/O 通常使能了一个外设后, 相关的引脚就不能用作通用 I/O 引脚了 44 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

6.1 PORTA 和 CPIOA 寄存器 PORTA 是 6 位宽的双向端口 PORTA 对应的数据方向寄存器是 CPIOA( 寄存器 85H) 将 CPIOA 位置 1( = 1) 可以使对应的 PORTA 引脚作为输入引脚 ( 即禁止相应的输出驱动器 ) 将 CPIOA 位清零 ( = 0) 将使对应的 PORTA 引脚作为输出引脚 ( 即使能输出驱动器并将输出锁存器的内容置于所选的引脚上 ) PA3 是个例外, 它只能作为输入引脚,TRIS 位始终读为 1 例 6-1 给出了初始化 PORTA 的方法 读 PORTA 寄存器 ( 寄存器 05H) 将读取引脚的状态而写该寄存器将会写入端口锁存器 所有写操作都是读 - 修改 - 写操作 因此, 写一个端口就意味着读该端口的引脚电平, 修改读到的值, 然后再将改好的值写入端口数据锁存器 当 MCLRE = 1 时,PA3 读为 0 即使在 PORTA 引脚被用作模拟输入的时候,CPIOA 寄存器仍然控制 PORTA 引脚的方向 在将它们用作模拟输入时, 用户必须确保 CPIOA 寄存器中的位保持为置 1 状态 配置为模拟输入的 I/O 引脚始终读为 0 注 : 必须对 ADINS 寄存器进行初始化以将模拟通道配置为数字输入通道 配置为模拟输入的引脚读为 0 例 6-1: 初始化 PORTA BCR STATUS,PAGE ;Bank0 CLRR PORTA ; 清除端口 A 输出缓冲器 BSR STATUS,PAGE ;Bank1 CLRR ANSEL ; 所有模拟 / 数字复用端口设置为数字端口 LDWI 0CH ; 设置端口 A 的 <3,2> 位为输入, 其他输出 STWR TRISA ; BCR STATUS,PAGE ;Bank0 寄存器 05H:PORTA 寄存器 (PORTA) U-0 U-0 R/W-x R/W-x R-x R/W-x R/W-x R/W-x PA5 PA4 PA3 PA2 PA1 PA0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-6 未实现 : 读为 0 bit5-0 PA<5:0>:PORTA I/O 引脚位 1 = PORTA 引脚电平 >V IH 0 = PORTA 引脚电平 <V IL 寄存器 85H:PORTA 三态寄存器 (CPIOA) U-0 U-0 R/W-1 R/W-1 R-1 R/W-1 R/W-1 R/W-1 CPIOA5 CPIOA4 CPIOA2 CPIOA1 CPIOA0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 45 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

bit7-6 未实现 : 读为 0 bit5-0 CPIOA<5:0>:PORTA 三态控制位 1 = PORTA 引脚配置为输入 ( 三态 ) 0 = PORTA 引脚配置为输出 注 1: 在 XT HS 和 LP 振荡模式下,CPIOA<5:4> 始终读为 1 6.2 PORTC 和 CPIOC 寄存器 PORTC 是由 6 个双向引脚组成的通用 I/O 引脚可以配置为 I/O 或作为 A/D 转换器 (ADC) 或 PWM 输出 要了解各个功能的特定信息 ( 如 PWM 或 ADC), 请参见本数据手册的相应章节 注 : 必须对 ADINS 寄存器进行初始化以将模拟通道配置为数字输入通道 配置为模拟输入的引脚读为 0 例 6-4: 初始化 PORTC BCR STATUS,PAGE ;Bank 0 CLRR PORTC ; 清输出缓冲区 BSR STATUS,PAGE ;Bank 1 CLRR ANSEL ; 设置端口为数字端口 LDWI 0Ch ; 设置 PC1,PC2 为输入, 其他 PC 口输出 STWR TRISC BCR STATUS,PAGE ;Bank 0 寄存器 07H:PORTC 寄存器 (PORTC) U-0 U-0 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x - - PC5 PC4 PC3 PC2 PC1 PC0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-0 PC<5:0>:PORTCI/O 引脚位 1 = PORTC 引脚电平 >VIH 0 = PORTC 引脚电平 <VIL 寄存器 87H:PORTC 三态寄存器 (CPIOC) U-0 U-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 - - CPIOC5 CPIOC4 CPIOC3 CPIOC2 CPIOC1 CPIOC0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 46 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

bit7-0 CPIOC<5:0>:PORTC 三态控制位 1 = PORTC 引脚配置为输入 ( 三态 ) 0 = PORTC 引脚配置为输出 6.3 其它引脚功能 MDT10F271 的 PORTA 端口上的每一个引脚都具有电平变化中断和弱上拉功能 (PA3 做为复位脚时, 使能上拉 作为 IO 口时, 没有上拉电阻 ) PA0 具有超低功耗唤醒功能 下面三个小节将介绍这些功能 6.3.1 ADINS 寄存器 ADINS 寄存器用于将 I/O 引脚的输入模式配置为模拟 将相应的 ADINS 位置为高电平将使对该引脚的所有读操作结果为 0, 并使该引脚的模拟功能正常进行 ADINS 位的状态对数字输出功能没有影响 TRIS 清零且 ADINS 置 1 的引脚仍将作为数字输出工作, 但其输出模式将为模拟 在对受影响端口执行读 修改 写指令时, 这将导致意外的操作 寄存器 91H: 模拟选择寄存器 (ADINS) U-0 U-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 - - ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 - - PC1 PC0 PA4 PA2 PA1 PA0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-0 ANS<5:0>: 模拟选择位在 ANS<5:0> 引脚上分别进行模拟或数字功能的模拟选择 1 = 模拟输入 引脚被分配为模拟输入 0 = 数字 I/O 引脚被分配给端口或特殊功能 6.3.2 弱上拉 每一个 PORTA PORTC 引脚 ( 除 PA3) 具有各自的可配置内部弱上拉 控制位 PAPHRX PCPHRx 使能或禁止每一个弱上拉 请参见寄存器 95H 和寄存器 107H PORTC 端口上有上拉总使能控制位, 每个端口引 脚还有独立的上拉控制使能位 当将端口引脚配置为输出时, 其弱上拉电路会自动切断 在 PA3 配置为 MCLR 时, 自动启动 PA3 的弱上拉功能 MCLR上拉不受软件控制 寄存器 95H: 弱上拉 PORTA 寄存器 (PAPHR) R-0 R-0 R/W-1 R/W-1 R-0 R/W-1 R/W-1 R/W-1 PAPHR5 PAPHR4 PAPHR2 PAPHR1 PAPHR0 bit7 bit0 47 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-6 未实现 : 读为 0 bit5-4 PAPHR<5:4>: 弱上拉控制位 1 = 使能上拉 0 = 禁止上拉 bit3 未实现 : 读为 0 bit2-0 注 PAPHR<2:0>: 弱上拉控制位 1 = 使能上拉 0 = 禁止上拉 1: 如果引脚处于输出模式 (TRIS = 0), 则弱上拉器件被自动禁止 2: 在配置字寄存器中配置为 MCLR时 PA3 上拉被使能, 配置为 I/O 时上拉被禁止 3: 在 XT HS 和 LP 振荡模式下 PAPHR<5:4> 始终读为 1 寄存器 107H:PORTC 总控制寄存器 (PCPHR) U-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 - WPUCG PCPHR5 PCPHR4 PCPHR3 PCPHR2 PCPHR1 PCPHR0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit6 bit5-0 WPUCG:PORTC 端口弱上拉总使能 0 = 使能上拉 1 = 禁止上拉 PCPHR<5:0>: PORTC 口弱上拉控制位 1 = 使能上拉 0 = 禁止上拉 6.3.3 电平变化中断 每一个 PORTA 引脚均可分别配置为电平变化中断引脚 控制位 PAINTR_x 使能或禁止每个引脚的中断功能, 在上电复位时禁止电平变化中断 对于已允许电平变化中断的引脚, 则将该引脚上的值同上一次读 PORTA 时锁存的值进行比较 将上一次 不匹配 的输出一起作逻辑或运算, 以便将 INTS 寄存器 ( 寄存器 0BH) 中 PORTA 电平变化中断标志位 (PAIF) 置 1 该中断能唤醒休眠下的器件 用户在中断服务程序中通过以下方式清除中断 : a) 对 PORTA 进行读或写操作 这将结束引脚电平不匹配条件 b) 将标志位 PAIF 清零 电平不匹配条件会继续将 PAIF 标志位置 1 而读 PORTA 将结束不匹配条件并允许将 PAIF 标志位清零 48 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

锁存器将保持最后一次读取的值不受 MCLR和欠压复位的影响 在这些复位之后, 如果出现电平不匹配,PAIF 标志位将继续被置 1 注 : 在执行任何 PORTA 操作时如果 I/O 引脚的电平发生变化, 则 PAIF 中断标志位可能不会被置 1 寄存器 96H: 电平变化中断 PORTA 寄存器 (PAINTR) U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PAINTR5 PAINTR4 PAINTR3 PAINTR2 PAINTR1 PAINTR0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-6 未实现 : 读为 0 bit5-0 注 PAINTR<5:0>: 电平变化中断 PORT A 控制位 1 = 允许电平变化中断 0 = 禁止电平变化中断 1: 必须允许全局中断允许 (GIE) 以使各中断被识别 2: 在 XT HS 和 LP 振荡模式下 PAINTR<5:4> 始终读为 1 6.3.4 超低功耗唤醒 PA0 上的超低功耗唤醒允许电压缓慢跌落, 从而可在不消耗额外电流的情况下, 产生 PA0 电平变化中断 通过将 ULPWUE 位 (PSTA<5>) 置 1 选择该模式 这将产生一个很小的灌电流, 可用于将 PA0 上的电容放电 要使用该功能,PA0 引脚应先被配置为输出高电平以对电容充电, 允许 PA0 的电平变化中断并且 PA0 要配置为输入引脚 将 ULPWUE 置 1 开始放电, 执行 SLEEP 指令 当 PA0 上的电压下降到 VIL 后, 器件将被唤醒并执行下一条指令 如果 INTS 寄存器的 GIE 位置 1, 器件将调用中断服务程序 (0004h) 更多信息, 请参见第 6.3.3 节 电平变化中断 和第 5.4 节 PORT A 电平变化中断 该功能提供了低功耗技术, 可周期性地唤醒休眠下的器件 延时取决于 PA0 上 RC 电路的放电时间 要了解如何初始化超低功耗唤醒模块, 请参见例 6-3-4 串联电阻提供了 PA0 引脚的过电流保护功能, 允许在软件中对延时进行校准 ( 见图 6-3-1) 可用定时器测量电容的充放电时间 然后调整充电时间以提供所需的中断延时 该技术可补偿温度 电压和元件精度所带来的影响 超低功耗唤醒外设还可以配置为简单可编程低压检测设备或温度传感器 例 6-3-4: 超低功耗唤醒的初始化 BCR STATUS,PAGE ;Bank 0 BSR PORTA,0 ; 清 0 端口 A 的 PA0 BSF STATUS,PAGE ;Bank 1 BCR ANSEL,0 ; 端口 A 的 PA0 设置为数字口 BCR TRISA,0 ; 端口 A 的 PA0 设置为输出 LCALL CapDelay ; 延时 BSR PSTA,ULPWUE ; 使能超低功耗唤醒功能 BSR IOCA,0 ; 设置 PA0 口电平变化唤醒功能 BSR TRISA,0 ; 设置 PA0 口输入 LDWI B 10001000 ; 使能电平变化中断 全局中断 STWR INTS ; SLEEP ; 睡眠, 等待唤醒 NOP NOP 49 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

6.4 PORTA 引脚说明和引脚图 每个 PORTA 引脚都与其他功能复用 这里将简要说明引脚及其复合功能 A/D 转换器 (A/DConverter, ADC) 的具体信息, 请参见本数据手册中的相关章节 6.4.1 PA0/AN0/SCK/ULPWU 图 6-4-1 给出了此引脚的引脚图 PA0/AN0/SCK/ULPWU 引脚可配置为下列功能之一 : 通用 I/O 连接至 ADC 的模拟输入 在线串行编程 (In-CircuitSerialProgramming ) 烧录和调试的时钟 SCK 超低功耗唤醒的模拟输入 图 6-4-1:PA0 框图 数据总线 写 WPUA D CK 模拟 (1) 输入模式 RAPU VDD 弱 读 WPUA VDD D 写 PORTA CK I/O 引脚 - + Vt Vss 写 TRISA D CK VSS 读 TRISA 0 1 ULPWUE Iulp 读 PORTA 写 IOCA D 模拟 (1) 输入模式 CK D 读 IOCA EN D 3 电平变化中断 EN 至 A/D 转换器 读 PORTA 注 1: 模拟输入模式由 ANSEL 决定 50 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

6.4.2 PA1/AN1/SDA 图 6-4-2 给出了此引脚的引脚图 PA1/AN1/SDA 引脚可配置为下列功能之一 : 通用 I/O 连接至 ADC 的模拟输入 在线串行编程烧录和调试的数据端口 SDA 图 6-4-2:PA1 框图 数据总线 写 WPUA D CK (1) 模拟输入模式 RBPU VDD 弱 读 WPUA D VDD 写 PORTA CK 写 TRISA D CK VSS I/O 引脚 读 TRISA (1) 模拟输入模式 读 PORTA 写 IOCA D CK D 读 IOCA EN D 3 电平变化中断 EN 至 A/D 转换器 读 PORTA 注 1: 模拟输入模式由 ANSEL 决定 51 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

6.4.3 PA2/AN2/T0CKI 图 6-4-3 给出了此引脚的引脚图 PA2/AN2/T0CKI 引脚可配置为下列功能之一 : 通用 I/O 连接至 ADC 的模拟输入 TIMER0 的时钟输入 图 6-4-3:PA2 框图 数据总线 写 WPUA D CK (1) 模拟输入模式 RBPU VDD 弱 读 WPUA D VDD 写 PORTA CK 写 TRISA D CK VSS I/O 引脚 读 TRISA (1) 模拟输入模式 读 PORTA 写 IOCA D CK D 读 IOCA EN D 3 电平变化中断 EN 读 PORTA 至 Timer0 至 A/D 转换器 注 1: 模拟输入模式由 ANSEL 决定 52 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

6.4.4 PA3/MCLR/VPP 图 6-4-4 给出了此引脚的引脚图 PA3/MCLR/VPP 引脚可配置为下列功能之一 : 通用输入 ; 带弱上拉的主清零复位 ; 高压烧写引脚 图 6-4-4:PA3 框图 VDD MCLRE 弱 数据总线 读 CPIOA 读 PORTA 写 IOCA 读 IOCA 电平变化中断 复位 MCLRE VSS MCLRE D CK D EN D EN 读 PORTA VSS 3 6.4.5 PA4/AN3/T1G/OSC2/CLKOUT 图 6-4-5 给出了此引脚的引脚图 PA4/AN3/T1G/OSC2/CLKOUT 引脚可配置为下列功能之一 : 通用 I/O 连接至 ADC 的模拟输入 Timer1 门控 ( 计数使能 ) 晶振 / 谐振器连接 时钟输出 图 6-4-5:PA4 框图 53 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

数据总线 写 WPUA D CK 模拟 (3) 输入模式 CLK (1) 模式 RAPU VDD 弱 读 WPUA OSC1 振荡器电路 CLKOUT 使能 VDD 写 PORTA D CK FOSC/4 1 0 I/O 引脚 写 CPIOA D CK CLKOUT 使能 INTOSC/ RC/EC (2) VSS 读 CPIOA CLKOUT 使能 模拟输入模式 读 PORTA 写 IOCA D CK D EN 3 读 IOCA D 电平变化中断 EN 读 PORTA 至 T1G 至 A/O 转换器 注 1:CLK 模式为 XT HS LP 和 LPTMR1, 且 CLKOUT 使能 2: 具有 CLKOUT 选项 3: 模拟输入模式来自 ADSEL 6.4.6 PA5/T1CKI/OSC1/CLKIN 图 6-4-6 给出了此引脚的引脚图 PA5/T1CKI/OSC1/CLKIN 引脚可配置为下列功能之一 : 通用 I/O TMR1 时钟输入 晶振 / 谐振器连接 时钟输入 54 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

图 6-4-6:PA5 框图 数据总线 写 WPUA D CK INTOSC 模式 TMR1LPEN (1) RAPU VDD 弱 读 WPUA OSC2 振荡器电路 D VDD 写 PORTA CK I/O 引脚 写 CPIOA 读 CPIOA D CK INTOSC 模式 VSS 读 PORTA 写 IOCA D CK D EN 3 读 IOCA D 电平变化中断 EN 至 Timer1 读 PORTA 注 1:Timer1 的 LP 振荡器使能 表 6-4: 与 PORT A 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他 复位值 ADINS ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 1111 1111 PSTA ULPWUE SBOREN MCLR IER POR BOR --01 --qq --0u --uu INTS GIE PE1E TIS INT0E PAIE TIF INT0F PAIF 0000 0000 0000 0000 PAINTR PAINTR5 PAINTR4 PAINTR3 PAINTR2 PAINTR1 PAINTR0 --00 0000 --00 0000 OPT_REG INT1EDG INT0EDG TCS TCE PSC PS2 PS1 PS0 1111 1111 1111 1111 PORTA PA5 PA4 PA3 PA2 PA1 PA0 --x0 x000 --uu uu00 CPIOA CPIOA5 CPIOA4 CPIOA2 CPIOA1 CPIOA0 --11 1111 --11 1111 PAPHR PAPHR5 PAPHR4 PAPHR2 1 PAPHR PAPHR0 --11-111 --11-111 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) PORT A 不使用阴影单元 55 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

6.5 PORTC 引脚说明和引脚图 6.5.1 PC0/AN4 PC0 引脚可以配置为下列功能之一 : 通用 I/O ADC 的模拟输入 6.5.2 PC1/AN5 PC1 引脚可以配置为下列功能之一 : 通用 I/O ADC 的模拟输入 图 6-5-2:PC0 和 PC1 框图 数据总线 写 WPUC D CK (1) 模拟输入模式 WPUCG VDD 弱 读 WPUC D VDD 写 PORTC CK 写 TRISC D CK VSS I/O 引脚 读 TRISC (1) 模拟输入模式 读 PORTC D EN 至 A/D 转换器 读 PORTC 注 1: 模拟输入模式由 ANSEL 决定 56 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

6.5.3 PC2/INT0 PC2 引脚可以配置为下列功能之一 : 通用 I/O 外部中断 INT0 框图见图 6-5-4 6.5.4 PC3/PWM2/INT1 PC3 引脚可以配置为下列功能之一 : 通用 I/O PWM2 外部中断 INT1 图 6-5-4:PC2 和 PC3 框图 数据总线 写 WPUC D CK WPUCG VDD 弱 读 WPUC D VDD 写 PORTC CK 写 TRISC D CK VSS I/O 引脚 读 TRISC 读 PORTC D EN 至 INT 读 PORTC 57 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

6.5.5 PC4/PWM1 PC4 引脚可以配置为下列功能之一 : 通用 I/O PWM1 框图见图 6-5-6 6.5.6 PC5/PWM0 PC5 引脚可以配置为下列功能之一 : 通用 I/O PWM0 图 6-5-6:PC5 框图 数据总线 写 WPUC D CK WPUCG VDD 弱 读 WPUC D PWM_EN VDD 写 PORTC 写 TRISC CK D CK PWM 0 1 VSS I/O 引脚 读 TRISC 读 PORTC D EN 读 PORTC 表 6-5: 与 PORTC 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他 复位值 PORTC PC5 PC4 PC3 PC2 PC1 PC0 xxxx 00XX uuuu uuxx CPIOC CPIOC5 CPIOC4 CPIOC3 CPIOC2 CPIOC1 CPIOC0 11 1111 11 1111 PCPHR WPUCG PCPHR5 PCPHR4 PCPHR3 PCPHR2 PCPHR1 PCPHR0 0111 1111 0111 1111 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) PORT C 不使用阴影单元 58 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

7.0 定时器及 PWM 7.1 Timer0 模块 Timer0 模块是 8 位定时器 / 计数器, 具备以下特性 : 8 位定时器 / 计数器寄存器 (TMR0) 8 位预分频器 ( 与看门狗定时器共用 ) 可编程内部或外部时钟源 可编程外部时钟边沿选择 溢出中断 定时器 / 计数器重载功能 图 7-1:Timer0 模块的框图 T0CKI 0 TMR0 重载寄存器 BUS 指令写 TMR0 RTCC 溢出 FOSC/4 RTCC 加法器 0 1 RTCC 寄存器 溢出中断 T0IF 置 1 1 0 1 同步 2 个周期 TMR0_CLK WDTE SWDTEN T0SE T0CS 0 1 PSA 8 位预分频器 PS<2:0> PSA 31Khz INTOSC WDT 16 位预分频器 0 1 WDT 超时 WDTPS<3:0> PSA 注 1: T0SE T0CS PSA 和 PS<2:0 > 均为 OPTION 寄存器中的位 2: SWDTEN 和 WDTPS<3:0> 为 WDTCON 寄存器中的位 3: WDTE 位在配置字寄存器中 7.1.1 Timer0 的工作原理 Timer0 是一个 8 位并具有重载功能的定时器 / 计数器, 读 TMR0, 读的是计数器的值, 写 TMR0, 写的是重载寄存器里的值 注意 : 上电时重载寄存值是随机的, 程序需要进行初始化 寄存器 01H:Timer0 模块寄存器 (TMR0) R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x TMR07 TMR06 TMR05 TMR04 TMR03 TMR02 TMR01 TMR00 bit7 bit0 图注 : W = 可写位 U = 未实现位, 读为 0 x = 未知 59 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

R = 可读位 -n = POR 时的值 1 = 置 1 0 = 清零 bit7-0 TMR0 <7:0>:8 位定时器 / 计数器寄存器 7.1.2 8 位定时器模式 Timer0 的开关使能位 TIMER0_ON 见寄存器 PWMT0EB( 寄存器 1AH), 只有打开使能位,Timer0 才能工作 作为定时器使用时,Timer0 模块将在每个指令周期递增 ( 无预分频器 ) 将 OPT_REG 寄存器 ( 寄存器 81H) 的 TCS 位清零选择定时器模式 当 TMR0 被写入时, 写入后将立即禁止 2 周期递增 注 : 在 TMR0 被写入时, 为了计入两个指令周期的延时, 可以调整写入 TMR0 寄存器的值 7.1.3 8 位计数器模式 作为计数器使用时,Timer0 模块将在 T0CKI 引脚的每个上升沿递增 递增边沿由 OPT_REG 寄存器 ( 寄存器 81H) 的 TCE 位决定 将 OPT_REG 寄存器的 TCS 位置 1 选择计数器模式 7.1.4 软件可编程预分频器 Timer0 或看门狗定时器 (WDT) 之一可使用一个软件可编程预分频器, 但两者不能同时使用 预分频器的分配由 OPT_REG 寄存器的 PSC 位控制 要将预分频器分配给 Timer0, 必须将 PSC 位清零 Timer0 模块的预分频比有 8 种选项, 从 1:2 至 1:256 预分频比可通过 OPT_REG 寄存器 ( 寄存器 81H) 的 PS<2:0> 位进行选择 要使 Timer0 模块得到 1:1 的预分频比, 必须将预分频器分配给 WDT 模块 预分频器不可读写 当预分频器被分配给 Timer0 模块时, 所有写入 TMR0 寄存器的指令均会将预分频器清零 当预分频器被分配给 WDT 时, 一条 CLRWT 指令将同时清零预分频器和 WDT 7.1.4.1 在 Timer0 和 WDT 模块间切换预分频器 由于预分频器可分配给 Timer0 或 WDT, 因此在切换预分频比时可能产生不想要的器件复位 当把预分频器从 Timer0 切换到 WDT 模块时, 必须执行例 7-1-4-1-1 所示的指令序列 例 7-1-4-1-1: 更改预分频器 (TIMER0 WDT) BCR STATUS,PAGE ;Bank 0 CLRWT ; 清看门狗定时器 CLRR TMR0 ; 清 TMR0 BSR STATUS,PAGE ;Bank 1 LDWI b 10001111 ; 禁止上拉,TMR0 分频给看门狗, 分频比 1:128 TMODE ; CLRWT ; 清看门狗 BCR STATUS,PAGE ;Bank 0 60 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

当将预分频器从 WDT 切换到 Timer0 模块时, 必须执行以下指令序列 ( 见例 7-1-4-1-2) 例 7-1-4-1-2: 更改预分频器 (WDT TIMER0) CLRWT ; 清看门狗 BSR STATUS,PAGE ;Bank 1 LDWI b xxxx0xxx ; 将分频器分配给 TMR0 TMODE ; BCR STATUS,PAGE ;Bank 0 7.1.5 Timer0 中断 TMR0 寄存器从 FFh 溢出到 00h 时,Timer0 将产生中断 INTS 寄存器的 TIF 中断标志位将在每次 TMR0 寄存器溢出时被置 1, 无论是否允许了 Timer0 中断 必须用软件将 TIF 位清零 Timer0 中断允许位是 INTS 寄存器的 TIS 位 注 : 由于定时器在休眠时被冻结, 因此 Timer0 中断无法将处理器从休眠中唤醒 7.1.6 Timer0 与外部时钟配合使用 Timer0 处理计数器模式时,T0CKI 输入和 Timer0 寄存器的同步是通过采样内部相位时钟的 2 和 4 周期实现的 因此, 外部时钟源的高低周期必须满足第 13.0 节 电气特性 中所列的时序要求 表 7-1-6: 与 TIMER0 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他 复位值 TMR0 Timer0 模块寄存器 xxxx xxxx uuuu uuuu INTS GIE PE1E TIS INT0E PAIE TIF INT0F PAIF 0000 0000 0000 0000 OPT_REG INT1_SEL INT0_SEL TCS TCE PSC PS2 PS1 PS0 1111 1111 1111 1111 PWMT0EB PWM2_EN PWM1_EN PWM0_EN TMR0_EN T1GSS 0000 0011 0000 0011 CPIOA CPIOA5 CPIOA4 - CPIOA2 CPIOA1 CPIOA0 --11 1111 --11 1111 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) Timer0 不使用阴影单元 7.2 带门控的 Timer1 模块 Timer1 模块是 16 位定时器 / 计数器, 具备以下特性 : 16 位定时器 / 计数器寄存器 (TMR1H:TMR1L) 可编程内部或外部时钟源 3 位预分频器 可选 LP 振荡器 同步或异步操作 T1G 引脚的 Timer1 门控 ( 计数使能 ) 溢出中断 溢出时唤醒 ( 仅限外部时钟且异步模式时 ) 61 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

图 7-2:Timer1 模块的框图 溢出时将标志位 TMR1IF 置 1 TMR1ON TMR1GE T1GINV 上升沿采样 TMR1H TMR1L EN 0 1 T1SYNC 振荡器 OSC1/T1CKI Fosc 0 1 预分频器 1 2 4 8 同步检测 OSC2/T1G TMR1CS T1CKPS<1:0> VDD 0 1 T1GSS 7.2.1 Timer1 的工作原理 Timer1 模块是 16 位递增计数器, 通过一对寄存器 TMR1H:TMR1L 访问 对 TMR1H 或 TMR1L 的写操作将直接更新计数器 与内部时钟源配合使用时, 该模块为定时器 与外部时钟源配合使用时, 该模块可用作定时器或计数器 如寄存器 10H 所示,Timer1 控制寄存器 T1STA 用于控制 Timer1 并选择 Timer1 模块的各种功能 寄存器 10H:TIMER1 控制寄存器 (T1STA) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7 bit6 (1) T1GINV:Timer1 门控翻转位 1 = Timer1 门控为高电平有效 ( 门控为高电平时 Timer1 计数 ) 0 = Timer1 门控为低电平有效 ( 门控为低电平时 Timer1 计数 ) TMR1GE:Timer1 门控使能位 (2) 如果 TMR1ON = 0: 此位被忽略如果 TMR1ON = 1: 1 = Timer1 在 Timer1 门控不活动时打开 0 = Timer1 打开 62 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

bit5-4 bit3 bit2 bit1 bit0 注 T1CKPS<1:0>:Timer1 输入时钟预分频比选择位 11 = 1:8 10 = 1:4 01 = 1:2 00 = 1:1 T1OSCEN:LP 振荡器使能控制位如果无 CLKOUT 振荡器的 INTOSC 处于激活状态 : 1 = LP 振荡器被使能用于 Timer1 时钟 0 = LP 振荡器关闭否则 : 此位被忽略 T1SYNC:Timer1 外部时钟输入同步控制位 TMR1CS = 1: 1 = 不同步外部时钟输入 0 = 同步外部时钟输入 TMR1CS = 0: 此位被忽略 Timer1 使用内部时钟 TMR1CS:Timer1 时钟源选择位 1 = 来自 T1CK1 引脚 ( 上升沿 ) 的外部时钟 0 = 内部时钟 (FOSC) TMR1ON:Timer1 打开位 1 = 使能 Timer1 0 = 停止 Timer1 1: 无论门控源为何,T1GINV 位均将翻转 Timer1 门控逻辑 2: 必须将 TMR1GE 位置 1 以使用 T1G 引脚 Timer1 模块是 16 位定时器 / 计数器,TMR1H:TMR1L 寄存器 0EH:16 位 Timer1 低字节的保持寄存器 (TMR1L) R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x TMR1<7> TMR1<6> TMR1<5> TMR1<4> TMR1<3> TMR1<2> TMR1<1> TMR1<0> bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-0 TMR1 <7:0>:16 位 Timer1 定时器 / 计数器低字节寄存器 寄存器 0FH:16 位 Timer1 高字节的保持寄存器 (TMR1H) R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x TMR1<15> TMR1<14> TMR1<13> TMR1<12> TMR1<11> TMR1<10> TMR1<9> TMR1<8> bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-0 TMR1 <15:8>:16 位 Timer1 定时器 / 计数器高字节寄存器 63 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

7.2.2 时钟源选择 T1STA 寄存器的 TMR1CS 位用于选择时钟源 当 TMR1CS = 0 时, 时钟源为 FOSC TMR1CS = 1 时, 时钟源由外部提供 7.2.2.1 内部时钟源 选择内部时钟源时,TMR1H:TMR1L 这对寄存器将在 FOSC 的某个倍数递增, 倍数由 Timer1 预分频器决定 7.2.2.2 外部时钟源 选择外部时钟源时,Timer1 模块可作为定时器, 也可作为计数器工作 计数时,Timer1 在外部时钟输入 T1CKI 的上升沿递增 此外, 计数器模式时钟可同步到单片机系统时钟, 也可异步运行 若需外部时钟振荡器 ( 且单片机使用不带 CLKOUT 的 INTOSC), 则 Timer1 可使用 LP 振荡器作为时钟源 注 : 计数器模式下, 发生以下任何一个或多个情况后, 计数器在首个上升沿递增前, 必须先经过一个下降沿 : POR 复位后使能 Timer1 写入 TMR1H 或 TMR1L Timer1 被禁止 T1CKI 为高电平时 Timer1 被禁止 (TMR1ON = 0), 然后在 T1CKI 为低电平时 Timer1 被使能 (TMR1ON = 1) 请参见图 7-2-2 图 7-2-2:TIMER1 递增边沿 TICKI = 1 TMR1 使能时 TICKI = 0 TMR1 使能时 注 1: 箭头所指为计数器递增 2: 在计数器模式下, 在时钟的首个递增上升沿之前必须先经过一个下降沿 7.2.3 Timer1 的预分频器 Timer1 有四种预分频选项, 可对时钟输入进行 1 2 4 或 8 分频 T1STA 寄存器的 T1CKPS 位控制预分频计数器 预分频计数器不可直接读写 ; 但当发生对 TMR1H 或 TMR1L 的写操作时, 预分频计数器被清零 64 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

7.2.4 Timer1 振荡器 OSC1( 输入 ) 引脚与 OSC2( 放大器输出 ) 引脚之间外置一个低功耗 32.768kHz 晶振 T1STA 寄存器的 T1OSCEN 控制位置 1 使能振荡器 休眠时振荡器继续工作 Timer1 振荡器与系统 LP 振荡器共用 这样,Timer1 就只能在主系统时钟来自内部振荡器或振荡器处于 LP 模式时使用此模式 用户必须提供软件延时以确保振荡器正常起振 Timer1 振荡器被使能时,CPIOA5 和 CPIOA4 位置 1 PA5 和 PA4 位读为 0 且 CPIOA5 和 CPIOA4 位读为 1 注 : 振荡器在使用前需要一段起振和稳定时间 这样, 应将 T1OSCEN 置 1 并在使能 Timer1 前应有一段适当的延时 7.2.5 Timer1 工作于异步计数器模式 若 T1STA 寄存器的控制位 T1SYNC置 1, 则外部时钟输入不同步 定时器与内部相位时钟异步递增 若选择了外部时钟源, 则定时器将在休眠时继续运行, 并可在溢出时产生中断, 唤醒处理器 然而, 读写定时器时应特别谨慎 ( 见第 7.2.5.1 节 在异步计数器模式下读写 Timer1 ) 注 : 从同步操作切换为异步操作时, 有可能错过一次递增从异步操作切换为同步操作时, 有可能多产生一次递增 7.2.5.1 在异步计数器模式下读写 Timer1 定时器运行于外部异步时钟时, 读取 TMR1H 或 TMR1L 将确保读操作有效 ( 由硬件负责 ) 然而, 应该注意的是, 用两个 8 位值来读取 16 位定时器本身就会产生某些问题, 这是因为定时器可能在两次读操作之间产生溢出 对于写操作, 建议用户直接停止计数器, 然后写入所期望的值 如果寄存器正进行递增计数, 对定时器寄存器进行写操作, 可能会导致写入竞争, 从而可能在 TMR1H:TMR1L 这对寄存器中产生不可预测的值 7.2.6 Timer1 门控 Timer1 门控源可软件配置为 T1G 引脚, 这使器件可直接使用 T1G 请参见 PWMT0EB 寄存器 ( 寄存器 1AH) 为外部事件定时 Timer1 门控源的选择 注 : T1STA 寄存器的 TMR1GE 位必须置 1, 更多有关选择 Timer1 门控源请参见 PWMT0EB 寄存器 ( 寄存器 1AH) 使用 T1STA 寄存器的 T1GINV 位可翻转 Timer1 门控 这将配置 Timer1 以确保事件之间存在低电平有效或高电平有效的时间 65 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

7.2.7 Timer1 中断 Timer1 的一对寄存器 (TMR1H:TMR1L) 递增至 FFFFh 后返回 0000h Timer1 计满返回时,PIFB 寄存器的 Timer1 中断标志位被置 1 为确保计满返回时产生中断, 您必须将以下位置 1: T1STA 寄存器的 TMR1ON 位 PIFB 寄存器的 TMR1IE 位 INTS 寄存器的 PEIE 位 INTS 寄存器的 GIE 位 在中断服务程序中将 TMR1IF 位清零将清除中断标志 注 : TMR1H:TTMR1L 这对寄存器和 TMR1IF 位应在允许中断前清零 7.2.8 Timer1 在休眠模式下的工作原理 只有在设定异步计数器模式时,Timer1 才能在休眠模式下工作 在该模式下, 可使用外部晶振或时钟源信号使计数器递增 要设置定时器以唤醒器件 : 必须将 T1STA 寄存器的 TMR1ON 位置 1 必须将 PIFB 寄存器的 TMR1IE 位置 1 必须将 INTS 寄存器的 PEIE 位置 1 必须将 T1STA 寄存器的 T1SYNC 位置 1 必须将 T1STA 寄存器的 TMR1CS 位置 1 可将 T1STA 寄存器的 T1OSCEN 位置 1 溢出时器件将被唤醒并执行下一条指令 INTS 寄若存器的的 GIE 位置 1, 器件将调用中断服务程序 (0004h) 7.2.9 与 Timer1 相关的寄存器汇总 表 7-2-12: 与 TIMER1 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他 复位值 PWMT0EB PWM2_EN PWM1_EN PWM0_EN TMR0_EN T1GSS 0000 0010 0000 0010 INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF 0000 0000 0000 0000 PIFB INT1E ADCIE OSFIE TMR1IE INT1IF ADCIF OSFIF TMR1IF 0000 0000 0000 0000 TMR1H 16 位 TMR1 高字节的保持寄存器 xxxx xxxx uuuu uuuu TMR1L 16 位 TMR1 低字节的保持寄存器 xxxx xxxx uuuu uuuu T1STA T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 1111 1111 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) Timer1 模块不使用阴影单元 7.3 PWM 的输出 PWM 模式将在 PC3 PC4 PC5 引脚产生频率相同, 脉宽单独可调制的 3 路 PWM 信号 当 PWM 使能时,TIMER1 工作在 PWM 模式, 此模式下当 TIMER1 计时器值与周期寄存器值 ({TMR1H,TMR1L} 与 {T1PRLH,T1PRLL}) 相等时, 下一计数周期 Timer1 计数器清零 ({TMR1H,TMR1L} = 0),PWM 输出高电平, 当 TIMER1 计时器值与占空比寄存器值 ({TMR1H,TMR1L} 大于等于 {PWMxH,PWMxL}) 时,PWM 输出低电平 其占空比, 周期和分辨率由以下寄存器决定 : T1PRLL T1PRLH 66 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

PWMxL PWMxH 图 7-3-3 PWM0 脉宽 脉宽 PWM1 脉宽 脉宽 PWM2 脉宽 脉宽 周期 周期 三路 PWM 输出 7.3.1 PWM 的周期 PWM 周期由 Timer1 的 T1PRLH T1PRLL 寄存器决定 PWM 周期计算公式 : PWM 周期 = [{T1PRLH,T1PRLL}+1] * Tosc * TMR1 预分频值 当 TMR1 等于 {T1PRLH,T1PRLL}+1 时, 下一次递增周期将发生以下三个事件 : TMR1 被清零 ; PWM 引脚被置 1( 例外 : 若 PWM 占空比 = 0%, 引脚不被置 1); PWM 占空比重载寄存器值锁存到占空比比较寄存器 ; 7.3.2 PWM 的占空比 通过对以下几个寄存器写入 10 位值可设定 PWM 占空比 :PRLxH,PRLxL 为占空比重载寄存器,PWMxL PWMxH 为占空比比较寄存器 ( 只读 ) 脉冲宽度直到周期完成时才将占空比重载寄存器的值锁存到占空比比较寄存器, 这样可以防止程序改变占空比时造成脉冲宽度跳变 用户设定占空比只需写占空比重载寄存器, 而不是占空比比较寄存器 ; 脉冲宽度计算公式 : 脉冲宽度 = [{PWMxH,PWMxL}+1] * Tosc * TMR1 预分频值 占空比 = [{PWMxH,PWMxL}+1] /[{T1PRLH,T1PRLL}+1] 67 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

高脉宽 = {PWMxH,PWMxL} * Tosc * TMR1 预分频值 Timer1 = 0 Timer1 {PWMxH,PWMxL} Timer1 = {T1PRLH,T1PRLL} 周期 = {T1PRLH,T1PRLL} * Tosc * TMR1 预分频值 7.3.3 PWM 的分辨率 分辨率决定某个周期的有效占空比 例如,10 位分辩率有 1024 个分立的占空比, 而 8 位分辩率则有 256 个分立的占空比 [{T1PRLH,T1PRLL}] 为 1024 时产生 10 位的最大 PWM 分辩率 分辩率是 [{T1PRLH,T1PRLL}] 的函数 PWM 分辨率 PWM 分辨率 分辨率 = Log([T1PRLH,T1PRLL] + 1) Log[2] 位 表 7-3-3-1:PWM 频率和分辨率示例 (Fosc = 16MHz) PWM 频率 1.953kHz 3.906kHz 7.8125kHz 15.625kHz 62.5kHz 4000kHz 定时器预分频比 (1 2 4 8) 8 4 2 1 1 1 [T1PRLH,T1PRLL] 的值 0x03,0x FF 0x03,0x FF 0x03,0x FF 0x03,0x FF 0x00,0xFF 0x00,0x03 最大分辨率 ( 位 ) 10 10 10 10 8 2 表 7-3-3-2:PWM 频率和分辨率示例 (Fosc = 4MHz) PWM 频率 0.488kHz 0.976kHz 1.953kHz 3.906kHz 15.625kHz 1000kHz 定时器预分频比 (1 2 4 8) 8 4 2 1 1 1 [T1PRLH,T1PRLL] 的值 0x03,0x FF 0x03,0x FF 0x03,0x FF 0x03,0x FF 0x00,0xFF 0x00,0x03 最大分辨率 ( 位 ) 10 10 10 10 8 2 7.3.4 PWM 输出配置 以下是配置 PWM 输出的步骤示例 : 1 端口配置 : 配置 PC3,PC4,PC5 为输出口 2 配置周期 : 配置 TIMER1 控制寄存器 (T1STA), 设定 TIMER1 为定时器模式, 并设定预分频比配置 T1PRLH T1PRLL( 详见 7.3.1 PWM 的周期 ) 3 配置占空比 : 配置占空比重载寄存器 PRLxH,PRLxL 4 使能 PWM: 68 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

设置 PWM 控制寄存器 PWMT0EB 5 使能 TIMER1 置位 TMR1ON, 此时将会使 PRLxH,PRLxL 载入 PWMxH,PWMxL 7.3.5 PWM 的寄存器定义 寄存器 1AH:PWM 控制寄存器 (PWMT0EB) R-0 R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-1 R/W-1 PWM2_EN PWM1_EN PWM0_EN TMR0_EN T1GSS bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 Bit4 Bit3 Bit2 Bit1 bit0 PWM2_EN: PWM2 输出使能位 0 = PWM2 禁止输出 1 = PWM2 允许输出 PWM1_EN: PWM1 输出使能位 0 = PWM1 禁止输出 1 = PWM1 允许输出 PWM0_EN:PWM0 输出使能位 0 = PWM0 禁止输出 1 = PWM0 允许输出 TMR0_EN:Timer0 使能位 1 = Timer0 打开 0 = Timer0 关闭 T1GSS:TIMER1 门控源选择位 1 = Timer1 门控源为 T1G 引脚 ( 配置为数字输入 ); 0 = Timer1 门控源为常开 寄存器 117H:PWM0/1/2 周期寄存器的低字节 (T1PRLL) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit7 bit0 PWM0/1/2 周期寄存器的低字节 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 寄存器 197H:PWM0/1/2 周期寄存器的高 2 位 (T1PRLH) R-0 R-0 R-0 R-0 R-0 R-0 R/W-0 R/W-0 bit7 bit1 bit0 T1PRLH 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 bit1-0 T1PRLH : PWM0/1/2 周期寄存器的高 2 位 U = 未实现位, 读为 0 0 = 清零 x = 未知 69 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

寄存器 112H:PWM0 占空比重载寄存器低字节 (PRL0L) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit7 bit0 PWM0 占空比重载寄存器的低 8 位 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 寄存器 192H:PWM0 占空比比较寄存器低字节 (PWM0L) R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-0 PWM0L : PWM0 占空比比较寄存器低字节 寄存器 198H:PWM0 占空比比较寄存器高 2 位与占空比重载寄存器高 2 位 (EPR0) R-0 R-0 R-0 R-0 R-0 R-0 R/W-0 R/W-0 bit7 bit0 PWM0H PRL0H 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit3-2 PWM0H : PWM0 占空比比较寄存器高 2 位 bit1-0 PRL0H :PWM0 占空比重载寄存器高 2 位 寄存器 113H:PWM1 占空比重载寄存器低字节 (PRL1L) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit7 bit0 PWM1 占空比重载寄存器的低 8 位 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 寄存器 193H:PWM1 占空比比较寄存器低字节 (PWM1L) R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-0 PWM1L : PWM1 占空比比较寄存器低字节 70 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

寄存器 199H:PWM1 占空比比较寄存器高 2 位与占空比重载寄存器高 2 位 (EPR1) R-0 R-0 R-0 R-0 R-0 R-0 R/W-0 R/W-0 bit7 bit0 PWM1H PRL1H 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit3-2 PWM1H : PWM1 占空比比较寄存器高 2 位 bit1-0 PRL1H : PWM1 占空比重载寄存器高 2 位 寄存器 114H:PWM2 占空比重载寄存器低字节 (PRL2L) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit7 bit0 PWM2 占空比重载寄存器的低 8 位 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 寄存器 194H:PWM2 占空比比较寄存器低字节 (PWM2L) R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-0 PWM2L : PWM2 占空比比较寄存器低字节 寄存器 19AH:PWM2 占空比比较寄存器高 2 位与占空比重载寄存器高 2 位 (EPR2) R-0 R-0 R-0 R-0 R-0 R-0 R/W-0 R/W-0 bit7 bit0 PWM2H PRL2H 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit3-2 PWM2H : PWM2 占空比比较寄存器高 2 位 bit1-0 PRL2H: PWM2 占空比重载寄存器高 2 位 71 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

8.0 模拟数字转换器 (ADC) 模块 模数转换器 (Analog-to-digitalConverter,ADC) 可将模拟输入信号转换为相应的 12 位二进制表征值 该系列器件采用多个模拟输入复用到一个采样保持电路 采样保持电路的输出与转换器的输入相连接 转换器通过逐次逼近法产生 12 位二进制值, 并将转换结果保存在 ADC 结果寄存器 (ADRESL:ADRESH) 中 ADC 参考电压可用软件选择为 VDD 或施加在外部参考引脚上的电压 8.1 ADC 框图 VDD VREF BG REF_SEL<2:0> PA0 PA1 PA2 PA4 PC0 PC1 VDD/2 BUSY A/D ADC0H ADC0L CHN_SEL<2:0> ADC_EN 8.2 ADC 的配置 配置和使用 ADC 时, 必须考虑以下功能 : 端口配置 通道选择 ADC 参考电压选择 ADC 转换时钟 72 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

ADC 启动转换的方式 ADC 中断控制 转换结果的对齐方式 8.2.1 端口配置 ADC 可用于模拟信号转换成数字信号 转换模拟信号时, 应将相关的 CPIOA CPIOC 和 ADINS 位置 1 将 I/O 引脚应配置为模拟输入功能 更多信息请参见相应的端口章节 注 : 如果定义为数字输入的引脚上存在模拟电压, 可导致输入缓冲器传导过大的电流 8.2.2 通道选择 ADS0 寄存器的 CHS 位决定将哪个通道连接到采样保持电路 改变通道时, 开始下一次转换前需要一个延时 更多信息请参见第 8.3 节 ADC 的工作过程 8.2.3 ADC 参考电压选择 ADS0 寄存器的 CHN_SEL 位决定将哪个通道连接到采样保持电路 正参考电压可以是 : 选电压电压 VDD 做为 ADC 的参考 选外部 ( 来自 PC1) 做为 ADC 的参考 选内部 BANDGAP 的输出电压做为 ADC 的参考, 这个电压可以通过配置寄存器选择 2V,3V,4V 负参考电压始终连接到参考地 8.2.4 ADC 转换时钟 可用软件选择转换时钟源, 通过设置 ADC0CN 寄存器的 SCx 位, 有以下 4 种时钟选项 : FOSC/2 FOSC/4 FOSC/8 FOSC/16 完成一位 (bit) 的转换时间定义为 T AD 完成 12 位转换需要 17 个 T AD 周期, 如图 8-2-4 所示 表 8-2-4 所示为正确选择 ADC 时钟的示例 注 : 任何系统时钟频率的变化均会改变 ADC 时钟频率, 这将对 ADC 结果产生负面影响 图 8-2-4: 模数转换 Tad 周期 73 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD9 TAD10 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 TAD11 b1 TAD12 b0 转换开始 开始采样模拟输入信号, 需要 4 个 ADC 时钟 装载 ADRESH 和 ADRESL 寄存器, BUSY 位清零, ADIF 位置 1, 保持电容连接到模拟输入 表 8-2-4:ADC 时钟周期 (T AD ) 器件工作频率 (Vdd 3.0V) ADC 时钟周期 (T AD) 器件频率 (F OSC) ADC 时钟源 SCx<1:0> 16 MHz 8 MHz 4 MHz 1 MHz F OSC/2 00 125 ns (1) 250 ns (1) 500 ns (1) 2.0 us F OSC/4 01 250 ns (1) 500 ns (1) 1.0 us 4.0 us F OSC/8 10 500 ns (2) 1.0 us 2.0 us 8.0 us (2) F OSC/16 11 1 us 2.0 us 4.0 us 16.0 us (2) 图注 : 阴影单元超出了建议范围 注 1: 这些值违反了最小 T AD 时间要求 2: 要加快转换, 建议选择其他时钟源 8.2.5 转换启动方式 有 3 种 A/D 转换启动方式, 由 ADC0CN 中的 ADC0 转换启动方式位 CM[1:0] 的状态决定采用哪一种方式 转换的触发源有 : GO/DONE写 1 Timer0 溢出 Timer1 溢出注 :ADC 转换进行中, 即使新的转换启动条件有效,ADC 并不中断当前转换, 硬件忽略新的转换启动 8.2.6 ADC 模块中断 ADC 转换完成时, 如果 ADC 中断 ADIE 使能并且全局中断标志 GIE 也使能的情况, 将产生 ADC 中断, 进入中断服务程序 ; 在中断服务程序中必须软件清除中断标志 ADIF( 清 0) 8.2.7 数据对齐方式 ADC 转换结果可以设置右对齐或者左对齐, 寄存器 ADC0CN 的 ADFM 位来决定 74 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

(ADFM = 0) MSB ADRESH bit 7 bit 0 bit 7 ADRESL LSB 12 位 A/D 结果未实现 : 读为 0 (ADFM = 1) MSB bit 7 bit 0 bit 7 LSB 未实现 : 读为 0 12 位 A/D 结果 8.3 ADC 的工作过程 8.3.1 启动转换 要使能 ADC 模块, 必须将 ADS0 寄存器的 ADON 位置 1 将 ADS0 寄存器的 GO/DONE位置 1 将启动模数转换 注 : 请参见第 8.3.4 节 A/D 转换步骤 8.3.2 转换完成 转换完成时,ADC 模块将 : 将 GO/DONE位清零 将 ADIF 标志位置 1 用新的转换结果更新 ADRESH:ADRESL 寄存器 8.3.4 A/D 转换步骤 以下是使用 ADC 进行模数转换的步骤示例 : 1. 配置端口 : 配置 IO 引脚为输入 ( 见 CPIO 寄存器 ) 将引脚配置为模拟口 2. 配置 ADC 模块 : 选择 ADC 转换时钟 配置参考电压 选择 ADC 输入通道 选择转换结果的格式 打开 ADC 模块 3. 配置 ADC 中断 ( 可选 ): 将 ADC 中断标志清零 允许 ADC 中断 75 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

允许外设中断 (1) 允许全局中断 4. 等待所需的采集时间 (2) 5. 将 GO/ DONE 置 1 启动转换 ( 或等等待 TMR0 TMR1 溢出启动 ) 6. 通过以下情况之一等待 ADC 转换完成 : 查询 GO/ DONE 位 等待 ADC 中断 ( 允许中断时 ) 7. 读取 ADC 结果 8. 将 ADC 中断标志清零 ( 必允许中断 ) 例 8-3-4:A/D 转换 ;------------------------------------------------------------ BANK1 LDWI 00000001B STWR CPIOC LDWI 00010000B ;PC0 作为模拟输入 (AN4) STWR ADINS ; 模拟口 数字口设定,1: 模拟口,0: 数字口 LDWI 01010001B LCALL GET_AD LJUMP $ ;------------------------------------------------------------ ;ADC 转换子程序 : GET_AD: BANK3 STWR ADS0 BK3TOBK2 BSR ADC_EN ; 开启 ADC 模块后需要延时 LDWI 20 LCALL DELAY_US BSR GO ; 启动 AD 转换 BTSC BUSY LJUMP $-1 ; 等待 AD 转换结束 BANK1 LDR ADRESL,W STWR ADC_L BK1TOBK0 LDR ADRESH,W STWR ADC_H BK0TOBK2 BCR ADC_EN ; 关闭 ADC 转换模块, 可以省电, BK2TOBK0 GET_AD_EXIT: RET 76 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

8.4 ADC 寄存器定义 8.4.1 ADC0CN 寄存器 11EH:A/D 控制寄存器 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 NA ADFM SC0 SC1 ADC_EN GO/DONE (BUSY) CM1 CM0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7 NA: 未实现 bit6 bit5-4 bit3 bit2 bit1-0 ADFM:ADC 输出结果对齐方式选择位 0 = 左对齐, 低位补零 1 = 右对齐, 高位补零 SC0 SC1:ADC 时钟预分频选择位 00 = sys_clk 2 分频 01 = sys_clk 4 分频 10 = sys_clk 8 分频 11 = sys_clk 16 分频 注 :sys_clk 为系统时钟, 可通过 OSCCON 设定,ADC 时钟设置推荐见表 8.4.1 ADC_EN:ADC 使能位 0 = ADC 禁止 1 = ADC 使能 GO/DONE 0 = 不忙 (BUSY):ADC 启动 ( 忙 ) 标志位 1 = 转换 ( 忙 ) CM<1:0>:ADC0 启动转换模式选择, 指定 ADC 启动转换源 0x = GO/DONE写 1 10 = Timer0 溢出 11 = Timer1 溢出 8.4.2 ADRESH:ADC 结果高位寄存器 寄存器 1EH:ADC 结果高位寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-0 ADC 结果高字节寄存器位, 注 : 写数据动作使得 ADRESH 寄存器清零 77 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

8.4.3 ADRESL:ADC 结果低位寄存器 寄存器 9EH:ADC 结果寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit7-0 ADC 结果低字节寄存器位注 : 写数据动作使得 ADRESL 寄存器清零 8.4.4 ADS0 寄存器 19DH:A/D 控制寄存器 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0 NA CHN_SEL2 CHN_SEL1 CHN_SEL0 REFSL1 REFSL0 VREF_SEL1 VREF_SEL0 bit7 bit0 图注 : R = 可读位 -n = POR 时的值 bit7 NA: 读为 0 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 Bit6-4 bit3-2 bit1-0 CHN_SEL<2:0>: ADC 模拟通道选择位 000 = ADC 输入通道关断 001 = PA0 ADC 输入通道 0 010 = PA1 ADC 输入通道 1 011 = PA2 ADC 输入通道 2 100 = PA4 ADC 输入通道 3 101 = PC0 ADC 输入通道 4 110 = PC1 ADC 输入通道 5 111 = ADC 输入电压为 VDD/2 REFSL<1:0>: 电压参考选择 00 = ADC 电压参考是 VDD pin 01 = ADC 电压参考是 PC1/VREF pin 1X = ADC 电压参考是内部电压参考 VREF_SEL<1:0>: 内部电压参考选择 (2V/3V/4V) 00 = 2V 01 = 3V 1x = 4V 表 9-5: 与 ADC 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 BOR 时的值 所有其他 复位值 ADC0CN ADFM SC1 SC0 ADC_EN GO/ DONE CM1 CM0 0000 0000 0000 0000 ADINS AN5 AN3 AN4 AN2 AN1 AN0 11 1111 11 1111 ADS0 NA CHN2 CHN1 CHN0 REFSL1 REFSL0 VREF1 VREF0 0000 0100 0000 0100 78 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

ADRESH A/D 结果寄存器高字节 xxxx xxxx uuuu uuuu ADRESL A/D 结果寄存器低字节 xxxx xxxx uuuu uuuu INTS GIE PEIE TIS INS PAIE TIF INTF PAIF 0000 0000 0000 0000 PIFB INT1E ADCIE OSFIE TMR1IE INT1IF ADCIF OSFIF TMRIF 0000 0000 0000 0000 PORTA PA5 PA4 PA3 PA2 PA1 PA0 00xx xxxx 00xx xxxx PORTC PC5 PC4 PC3 PC2 PC1 PC0 xxxx xxxx xxxx xxxx CPIOA CPIOA5 CPIOA4 CPIOA3 CPIOA2 CPIOA1 CPIOA0 --11 1111 --11 1111 CPIOC CPIOC5 CPIOC4 CPIOC3 CPIOC2 CPIOC1 CPIOC0 11 1111 11 1111 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) ADC 模块不使用阴影单元 9.0 配置寄存器 配置寄存器是用来配置 MCU 的设置, 其原始值存在 Flash 的某些位置, 在 MCU 启动时从 Flash Boot 到配置寄存器中, 配置寄存器位宽为 8 位, 由于 Flash 的位宽为 14 位,Boot 时, 只 Boot 低 8 位至配置寄存器 9.1 Config Option Config Option 用于给客户提供配置选项 寄存器 801H: 配置字寄存器高 8 位 (Config1 Option) RD_CTRL LVDS1 LVDS0 FCMEN IESO LVREN1 LVREN0 bit15 bit8 寄存器 800H: 配置字寄存器低 8 位 (Config0 Option) CPB MCLRE PWRTE bit7 WDTE FOSC2 FOSC1 FOSC0 bit0 bit15 bit14 bit13-12 bit11 未实现 : 保留 RD_CTRL: 输出模式时读端口控制 1: 读数据端口返回的 PIN 上的值 0: 读数据端口返回的锁存器上的值 LVDS <1:0>: 低电压复位电压设定 11:1.7V 10:1.7V 01:2.1V 00:3.8V FCMEN: 系统时钟失效监测使能位 1: 使能系统时钟失效监测, 仅在系统时钟为外部晶振模式才起作用 0: 禁止系统时钟失效监测 bit10 IESO: 内 外时钟切换使能位, 二速启动模式使能, 1: 使能二速启动模式, 仅在系统时钟为外部晶振模式才起作用 0: 禁止二速启动模式 bit9-8 LVDEN <1:0>: 低电压复位选择 (1) 11: 低电压复位使能 10:MCU 工作时, 低电压复位开启 ;MCU 睡眠时, 低电压复位关闭 01: 低电压复位由 PCON 之 SBOREN 位决定 00: 禁止低电压复位 79 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

bit7 未实现 : 保留 bit6 CPB: 代码保护位 (3) 1:Flash 内容不保护 0: 启动 Flash 内容保护,MCU 能读, 串口不能读 bit5 bit4 bit3 bit2-0 注 MCLRE:PA3/MCLR 引脚功能选择位 1:PA3/ MCLR (4) 脚执行 MCLR 功能, 是复位脚 0:PA3/ MCLR脚执行 PA3 功能, 是数字输入引脚 PWRTE : 上电延时定时器使能位 1:PWRT 禁止 0:PWRT 使能 WDTE: 看门狗定时器使能位 1:WDT 使能, 程序不能禁止 0:WDT 禁止, 但程序可通过设置 WDTCON 的 SWDTEN 位将 WDT 使能 FOSC <2:0>: 振荡器选择位 111:INTOSCIO Oscillator 模式,PA4 为 IO 引脚,PA5 为 IO 引脚 110:RCIO Oscillator 模式,PA4 为 IO 引脚,PA5 时钟输入脚 CLKIN 101:INTOSC Oscillator 模式,PA4 输出时钟 CLKOUT,PA5 为 IO 引脚 100:RC Oscillator 模式,PA4 输出时钟 CLKOUT,PA5 是时钟输入脚 CLKIN 011:EC 模式,PA4 为 IO 引脚,PA5 时钟输入脚 CLKIN 010:HS Oscillator 模式,PA4 PA5 接高频晶振 001:XT Oscillator 模式,PA4 PA5 接晶振 000:LP Oscillator 模式,PA4 PA5 接低频晶振 1: 使能欠压复位不会自动使能上电延时定时器 2: 在 INTOSC 或 RC 模式下当 MCLR有效时, 内部时钟振荡器被禁止 10.0 指令表 指令功能操作影响状态位 NOP 空操作无无 CLRWT 清看门狗 0 WT /TF, /PF SLEEP 进入睡眠模式 0 WT, stop OSC /TF, /PF TMODE 将 W 寄存器值装入选项寄存器 (81H) W 81H 无 CPIO R 设置端口方向寄存器 (1 输入,0 输出 ) W CPIO r 无 STWR R 将 W 寄存器内容送 R 寄存器 W R 无 LDR R, t 读寄存器 R, 结果保存在 R(t=1) 或者 W(t=0) R t Z LDWI I 立即数送 W 寄存器 I W 无 [R(0~3) SWAPR R, t 交换寄存器 R 的高低四位, 结果保存在 R(t=1) 或者 W(t=0) 中无 R(4~7)] t INCR R, t 递增寄存器 R, 结果保存在 R(t=1) 或者 W(t=0) 中 R + 1 t Z INCRSZ R, 递增寄存器 R, 结果保存在 R(t=1) 或者 W(t=0) 中 ; 如果结果等于 0 则跳 R + 1 t 无 t 过该指令接下来的指令 80 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

ADDWR R, t W 寄存器与 R 寄存器相加, 结果保存在 R(t=1) 或者 W(t=0) 中 W + R t C, HC, Z SUBWR R, t R 寄存器减去 W 寄存器, 结果保存在 R(t=1) 或者 W(t=0) 中 RАW t (R+/W+1 t) DECR R, t 递减寄存器 R, 结果保存在 R(t=1) 或者 W(t=0) 中 R А1 t Z DECRSZ R, t 递减寄存器 R, 结果保存在 R(t=1) 或者 W(t=0) 中 ; 如果结果等于 0 则跳 过该指令接下来的指令 R А1 t ANDWR R, t R 寄存器与 W 寄存器做 与 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 R W t Z ANDWI I W 寄存器与立即数 I 做 与 操作, 结果保存到 W 寄存器中 I W W Z IORWR R, t R 寄存器与 W 寄存器做 或 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 R W t Z IORWI I W 寄存器与立即数 I 做 或 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 I W W Z XORWR R, t R 寄存器与 W 寄存器做 异或 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 R W t XORWI I W 寄存器与立即数 I 做 异或 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 I W W Z COMR R, t R 寄存器 取反 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 /R t Z RRR R, t RLR R, t R 寄存器循环 右移 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 R 寄存器循环 左移 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 C, HC, Z 无 R(n) R(n-1), C R(7), R(0) C C R(n) r(n+1), C R(0), R(7) C C CLRW W 寄存器清 0 0 W Z CLRR R R 寄存器清 0 0 R Z BCR R, b R 寄存器的第 b 位清 0 0 R(b) 无 BSR R, b R 寄存器的第 b 位置 1 1 R(b) 无 BTSC R, b 如果 R 寄存器的第 b 位为 0, 则跳过该指令接下来的指令 Skip if R(b)=0 无 BTSS R, b 如果 R 寄存器的第 b 位为 1, 则跳过该指令接下来的指令 Skip if R(b)=1 无 LCALL N 在整个 2K 区域内的调用指令 N PC, PC+1 Stack LJUMP N 在整个 2K 区域内的跳转指令 N PC 无 RTIW I 带立即数从子程序返回 Stack PC, I W 无 ADDWI I W 寄存器与立即数 I 相加, 结果保存到 W 中 PC+1 PC,W+I W C,HC,Z SUBWI I 立即数 I 减去 W 寄存器, 结果保存到 W 寄存器中 I-W W C,HC,Z RTFI 中断返回 Stack PC,1 GIS 无 RET 从子程序返回 Stack PC 无 Z 无 11.0 电气特性 11.1 绝对极限参数 偏置电压下的环境温度...-40 C 至 +85 C 储存温度...-65 C 至 +150 C VDD 引脚相对于 VSS 的电压...-0.3V 至 +6.5V MCLR引脚相对于 Vss 的电压......-0.3V 至 +9.5V 所有其他引脚相对于 VSS 的电压...-0.3V 至 (VDD+0.3V) 总功耗 (1)...600mW 流出 VSS 引脚的最大电流...95mA 81 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

流入 VDD 引脚的最大电流...95mA 输入钳位电流,I IK (V I <0 或 V I >VDD)...±20mA 输出钳位电流,I OK (V o <0 或 V o >VDD)...±20mA 任一 I/O 引脚的最大输出灌电流...25mA 任一 I/O 引脚的最大输出拉电流...25mA PORTA 和 PORTC( 联合 ) 最大灌电流...90mA PORTA 和 PORTC( 联合 ) 最大拉电流...90mA 注 1: 功耗计算公式为 :P DIS = VDD x { I DD - I OH } + { ( V DD - V OH ) x I OH } + ( V OL x I OL ) 注意 : 如果运行条件超过了上述 绝对极限参数值, 即可能对器件造成永久性损坏 上述值仅为运行条件的极大值, 我们不建议器件运行在该规范范围以外 器件长时间工作在绝对极限参数条件下, 其稳定性可能受到影响 图 11-1-1:MDT10F271 外部振荡电压 - 频率图,-40 C TA +85 C 5.5 5.0 VDD (V) 4.5 4.0 3.5 3.0 2.5 2.0 0 8 16 20 频率 (MHz) 注 1: 阴影区域表示允许的电压频率组合 图 11-1-2: 器件 VDD 和温度范围内 HFINTOSC 的频率准确性 82 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

11.2 直流电器特性 直流特性 (1) 符号特性最小值典型值 标准工作条件 工作温度 -40 Ta +85 最大值单位条件 VDD 电源电压 2.2 5.5 V VDR VPOR SVDD IDD IPD IWDT VIL VIH IOL IOH VPED Rpu (2) RAM 数据保持电压 Vdd 起始电压确保能够产生上 电复位信号 Vdd 上升速率确保能够产生上 电复位信号 (3) 工作电流 (4) 掉电流 (4) WDT 电流 输入低电压 输入高电压 输出灌电流 输出拉电流 低电压复位电压 上拉电阻 0.5* V 器件处于休眠模式 Vss V 0.05* V/ms 420 1M 600 3.3V 4M 810 8M ua 510 1M 790 5V 4M 1100 8M WDT En PED Dis IRC 1 ua WDT Disable VDD=2.5V 0.5 ua VDD=5V VSS 1.1 3V TLL VSS 1.1 3V SCHMITT V VSS 1.6 5V TLL VSS 1.6 5V SCHMITT 1.1 VDD 3V TLL 1.9 VDD 3V SCHMITT 1.6 VDD V 5V TLL 3.5 VDD 5V SCHMITT 24 VOL=0.7V 28 VOL=0.9V ma 35 VOL=0.7V 42 VOL=0.9V 13 VOH=1.7V 10 VOH=2.1V ma 22 VOH=3.6V 12 VOH=4.2V 1.7-20% 1.7 1.7 +20% V LOW 2.1-20% 2.1 2.1 +20% MIDDLE 3.8-20% 3.8 3.8 +20% HIGH 32 3V K 18 5V 3V 5V 3V 5V 注 : 表示没有, 或待定 (1) 典型栏中数据均为 25 条件下值, 此部分数据仅供参考 (2) 该电压是保证不丢失 RAM 数据的最小 VDD (3) 工作电流主要随工作电压和频率而变化 其它因素, 如总线负载 总线速率 内部代码执行模式和温度也会影响电流消耗 (4) 掉电电流是在器件休眠时, 所有 I/O 引脚都处于高阻态并且连接到 Vdd 或 Vss 时测得 83 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

11.3 交流电气特性 交流特性 (1) 符号特性最小值典型值 标准工作条件 工作温度 -40 Ta +85 最大值单位条件 F OSC 系统时钟 0 8M 20M Hz 5V F HIRC 内部高速时钟 4M 16M Hz 5V F LIRC 内部低速时钟 31K Hz 5V T INT 中断脉冲 2 3 Tins 指令周期 T SST T RSTD 系统启动时间 ( 上电复位 ) 系统启动时间 ( 由 SLEEP 模式唤醒, Fsys 在 SLEEP 模式下关 闭 ) 系统启动时间 ( 由 SLEEP 模式唤醒, 主要在 SLEEP 模式下开启 ) 系统复位延迟时间 ( 上电复位 ) 系统复位时间 (WDT 正常复位 ) 13 20 ms 5V 1024 Tsys 5V 5V 1024 Tsys 5V 13 20 ms 5V 77 84 ms 5V 84 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

12.0 开发支持 12.1 仿真信息 12.1.1 软件 :MDT-IDE 12.1.2 硬件 :YS-Link 85 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

12.1.3 接口 : MDT10F271 具备片内仿真功能, 可通过串口模式仿真调试程序, 串口接口如下 : MDT10F271 YS-Link VDD VDD GND GND PA3 VPP PA0 SCK PA1 SDA 12.2 烧录信息 12.2.1 烧录软件 :YSpringPro 86 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

12.2.2 烧录器 :YS-Writer 87 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

13.0 封装信息 13.1 SOT23-6 注 : 单位 MM 88 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

13.2 P-DIP 8 PIN SYMBOLS MIN NOM MAX (mm) SYMBOLS MIN NOM MAX (mm) A 3.60 3.80 4.00 E1 6.15 6.35 6.55 A1 0.51 e 2.54BSC A2 3.00 3.30 3.40 ea 7.62BSC A3 1.55 1.60 1.65 eb 7.62 9.30 B1 1.52BSC ec 0 0.84 D 9.05 9.25 9.45 L 3.00 L/F 载体 尺寸 (mil) 80*80 89 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

13.3 SOP 8 PIN SYMBOLS MIN NOM MAX (mm) SYMBOLS MIN NOM MAX (mm) A 1.75 E1 3.70 3.90 4.10 A1 0.10 0.225 e 1.27BSC A2 1.30 1.40 1.50 h 0.25 0.50 A3 0.60 0.65 0.70 L 0.50 0.80 D 4.70 4.90 5.10 L1 1.05 BSC E 5.80 6.00 6.20 0 8 L/F 载体 尺寸 (mil) 80*80 90*90 95*130 90 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

13.4 MSOP 8 PIN SYMBOLS MIN NOM MAX (mm) SYMBOLS MIN NOM MAX (mm) A 1.10 E1 2.90 3.00 3.10 A1 0.05 0.15 e 0.65BSC A2 0.75 0.85 0.95 c 0.15 0.19 A3 0.30 0.35 0.40 L 0.40 0.70 D 2.90 3.00 3.10 L1 0.95REF E 4.70 4.90 5.10 θ 0 8º L/F 栽体尺寸 (mil) b 0.28 0.36 91 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

13.5 MSOP 10 PIN SYMBOLS MIN NOM MAX (mm) SYMBOLS MIN NOM MAX (mm) A 1.10 E1 2.90 3.00 3.10 A1 0.05 0.15 e 0.50BSC A2 0.75 0.85 0.95 c 0.15 0.19 A3 0.30 0.35 0.40 L 0.40 0.70 D 2.90 3.00 3.10 L1 0.95REF E 4.70 4.90 5.10 θ 0 8º L/F 栽体尺寸 (mil) b 0.18 0.26 92 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

13.6 P-DIP 14 PIN SYMBOLS MIN NOM MAX (mm) SYMBOLS MIN NOM MAX (mm) A 3.60 3.80 4.00 E1 6.15 6.35 6.55 A1 0.51 e 2.54BSC A2 3.20 3.30 3.40 ea 7.62BSC A3 1.47 1.52 1.57 eb 7.62 9.30 B1 1.52BSC ec 0 0.84 D 18.90 19.10 19.30 L 3.00 93 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

13.7 SOP 14 PIN SYMBOLS MIN NOM MAX (mm) SYMBOLS MIN NOM MAX (mm) A 1.75 E1 3.70 3.90 4.10 A1 0.10 0.225 e 1.27BSC A2 1.30 1.40 1.50 h 0.25 0.50 A3 0.60 0.65 0.70 L 0.50 0.80 D 8.45 8.65 8.85 L1 1.05 BSC E 5.80 6.00 6.20 0 8 L/F 载体 尺寸 (mil) 70*70 90*110 98*150 100.4*210 94 Product Specification (V1.2) 2017-03-17 www.yspringtech.com

14.0 汇春知识产权政策 14.1 专利权 汇春公司在全球各地区已核准和申请中之专利权至少有 20 件以上, 享有绝对之合法权益 与汇春公司 MCU 或其它产品有关的专利权并未被同意授权使用, 任何经由不当手段侵害汇春公司专利权之公司 组织或个人, 汇春将采取一切可能的法律行动, 遏止侵权者不当的侵权行为, 并追讨汇春公司因侵权行为所受之损失 或侵权者所得之不法利益 14.2 著作权 Copyright 2016 by INC. 规格书中所出现的信息在出版当时相信是正确的, 然而汇春对于规格内容的使用不负责任 文中提到的应用其目的仅仅是用来做说明, 汇春不保证或不表示这些应用没有更深入的修改就能适用, 也不推荐它的产品使用在会由于故障或其它原因可能会对人身造成危害的地方 汇春产品不授权使用于救生 维生器件或系统中做为关键器件 汇春拥有不事先通知而修改产品的权利, 对于最新的信息, 请参考我们的网址 http://www.yspringtech.com; 95 Product Specification (V1.2) 2017-03-17 www.yspringtech.com