带 EEPROM A/D 型 8-Bit Flash 单片机 HT66F0175/HT66F0185 版本 : V1.30 日期 :

Size: px
Start display at page:

Download "带 EEPROM A/D 型 8-Bit Flash 单片机 HT66F0175/HT66F0185 版本 : V1.30 日期 :"

Transcription

1 版本 : V1.30 日期 :

2 目录 特性...7 CPU 特性... 7 周边特性... 8 概述...9 选型表...9 方框图...10 引脚图...10 引脚说明...12 极限参数...20 直流电气特性...20 交流电气特性...22 HIRC 电气特性...23 ADC 电气特性...24 LVD & LVR 电气特性...25 比较器电气特性...25 软件控制 LCD 驱动器电气特性...26 上电复位特性...26 系统结构...27 时序和流水线结构 程序计数器 堆栈 算术逻辑单元 ALU Flash 程序存储器...29 结构 特殊向量 查表 查表范例 在线烧录 片上调试 OCDS 数据存储器...33 结构 特殊功能寄存器...35 间接寻址寄存器 IAR0, IAR 间接寻址指针 MP0, MP 存储区指针 BP 累加器 ACC 程序计数器低字节寄存器 PCL 表格寄存器 TBLP, TBHP, TBLH 状态寄存器 STATUS Rev

3 EEPROM 数据存储器...39 EEPROM 数据存储器结构 EEPROM 寄存器 从 EEPROM 中读取数据 写数据到 EEPROM 写保护 EEPROM 中断 编程注意事项 振荡器...43 振荡器概述 系统时钟配置 外部晶体 / 陶瓷振荡器 HXT 内部高速 RC 振荡器 HIRC 外部 kHz 晶体振荡器 LXT 内部 32kHz 振荡器 LIRC 辅助振荡器 工作模式和系统时钟...47 系统时钟 系统工作模式 控制寄存器 快速唤醒 工作模式切换 静态电流的注意事项 唤醒 编程注意事项 看门狗定时器...56 看门狗定时器时钟源 看门狗定时器控制寄存器 看门狗定时器操作 复位和初始化...58 复位功能 复位初始状态 输入 / 输出端口...64 上拉电阻 PA 口唤醒 输入 / 输出端口控制寄存器 输入 / 输出端口源电流控制 引脚重置功能 输入 / 输出引脚结构 编程注意事项 Rev

4 定时器模块 TM...71 简介 TM 操作 TM 时钟源 TM 中断 TM 外部引脚 TM 输入 / 输出引脚控制寄存器 编程注意事项 简易型 TM CTM...76 简易型 TM 操作 简易型 TM 寄存器介绍 简易型 TM 工作模式 标准型 TM STM...86 标准型 TM 操作 标准型 TM 寄存器介绍 标准型 TM 工作模式 周期型 TM PTM...99 周期型 TM 操作 周期型 TM 寄存器介绍 周期型 TM 工作模式 A/D 转换器 A/D 简介 A/D 转换寄存器介绍 A/D 转换器数据寄存器 SADOL,SADOH A/D 转换控制寄存器 SADC0,SADC1,SADC2,ACERL A/D 输入引脚 A/D 转换器参考电压 A/D 操作 A/D 转换率及时序图 A/D 转换步骤 编程注意事项 A/D 转换功能 A/D 转换应用范例 串行接口模块 SIM SPI 接口 I 2 C 接口 比较器 比较器操作 比较器中断 编程注意事项 Rev

5 带 SCOM 和 SSEG 功能的 LCD LCD 操作 LCD Frames LCD 控制寄存器 UART 接口 UART 外部引脚 UART 数据传输方案 UART 状态和控制寄存器 波特率发生器 UART 模块的设置与控制 UART 发送器 UART 接收器 接收错误处理 UART 模块中断结构 地址检测模式 UART 模块暂停和唤醒 低电压检测 LVD LVD 寄存器 LVD 操作 中断 中断寄存器 中断操作 外部中断 比较器中断 HT66F 多功能中断 A/D 转换器中断 时基中断 串行接口模块中断 UART 传输中断 HT66F LVD 中断 EEPROM 中断 TM 中断 中断唤醒功能 编程注意事项 配置选项 应用电路 指令集 简介 指令周期 数据的传送 算术运算 逻辑和移位运算 分支和控制转换 Rev

6 位运算 查表运算 其它运算 指令集概要 惯例 指令定义 封装信息 pin SOP(300mil) 外形尺寸 pin SSOP (150mil) 外形尺寸 pin SOP(300mil) 外形尺寸 pin SSOP (150mil) 外形尺寸 pin SOP(300mil) 外形尺寸 pin SSOP (150mil) 外形尺寸 Rev

7 特性 CPU 特性 工作电压 : f SYS =8MHz:2.2V ~ 5.5V f SYS =12MHz:2.7V ~ 5.5V f SYS =20MHz:4.5V ~ 5.5V V DD =5V, 系统时钟为 20MHz 时, 指令周期为 0.2μs 提供暂停和唤醒功能, 以降低功耗 振荡器类型 : 外部高速晶振 HXT 外部 kHz 晶振 LXT 内部高速 RC HIRC 内部 32kHz RC LIRC 内建 8/12/16MHz 振荡器, 无需外部元件 多种工作模式 : 正常 低速 空闲和休眠 所有指令都可在 1 或 2 个指令周期内完成 查表指令 63 条指令 8 层堆栈 位操作指令 Rev

8 周边特性 Flash 程序存储器 : 最大可达 4K 16 RAM 数据存储 : 最大可达 EEPROM 存储器 : 最大可达 看门狗定时器 多达 26 个双向 I/O 口 两个引脚与外部中断口共用 多个定时器模块用于时间测量 捕捉输入 比较匹配输出 PWM 输出及单脉冲输出 串行接口模块 SIM, 用于 SPI 或 I 2 C 通信 软件控制 6 个 SCOM/SSEG 口和 18 个 SSEG 口 1/3 bias LCD 驱动 可编程输入 / 输出口源电流用于 LED 双时基功能用以产生固定的中断信号 8 个通道 12-bit A/D 转换器 比较器功能 仅适用于 HT66F0185 全双工通用异步接收器 / 发送器接口 UART, 仅适用于 HT66F0185 低电压复位功能 低电压检测功能 Flash 程序存储器烧录可达 100,000 次 Flash 程序存储器数据可保存 10 年以上 EEPROM 数据存储器烧录可达 1,000,000 次 EEPROM 数据存储器数据可保存 10 年以上 多种封装类型 Rev

9 概述 该系列单片机是一款 A/D 型具有 8 位高性能精简指令集的 Flash 单片机 这些单片机具有一系列功能和特性, 其 Flash 存储器可多次编程的特性给用户提供了极大的方便 存储器方面, 还包含了一个 RAM 数据存储器和一个可用于存储序号 校准数据等非易失性数据的 EEPROM 存储器 在模拟特性方面, 该系列单片机包含一个多通道 12 位 A/D 转换器和比较器功能 还带有多个使用灵活的定时器模块, 可提供定时功能 脉冲产生功能及 PWM 产生功能 内部看门狗定时器 低电压复位和低电压检测等内部保护特性, 外加优秀的抗干扰和 ESD 保护性能, 确保单片机在恶劣的电磁干扰环境下可靠地运行 该系列单片机提供了丰富的 HXT LXT HIRC 和 LIRC 振荡器功能选项, 且内建完整的系统振荡器, 无需外围元器件 其在不同工作模式之间动态切换的能力, 为用户提供了一个优化单片机操作和减少功耗的手段 外加时基功能 I/O 使用灵活等其它特性, 使该系列单片机可以广泛应用于各种产品中, 例如电子测量仪器 环境监控 手持式测量工具 家庭应用 电子控制工具 马达控制等方面 选型表 对此系列的芯片而言, 大多数的特性参数都是一样的 主要差异在于存储器的容量 I/O 数量 TM 特性 SSEG 数量 LED 数量 UART 和封装类型 下表列出了各单片机的主要特性 型号 ROM RAM EEPROM I/O 外部中断 A/D TM 模块 HT66F0175 2K bit 8 10-bit PTM 2 HT66F0185 4K bit 8 16-bit CTM 1 16-bit STM 1 10-bit PTM 1 型号时基 SIM UART CMP SCOM/ SSEG SSEG LED 堆栈封裝 HT66F /24SOP/SSOP HT66F /28SOP/SSOP 注 : 对于有不止一种封装形式的芯片, 选型表针对较大的封装的情况 Rev

10 方框图 Flash/EEPROM Programming Circuitry EEPROM Data Memory Flash Program Memory Watchdog Timer Low Voltage Detect RAM Data Memory Internal HIRC/LIRC Oscillators Low Voltage Reset Time Base 8-bit RISC MCU Core Reset Circuit Interrupt Controller External HXT/LXT Oscillators 12-bit A/D Converter Comparator I/O SSEG/ SCOM Timer Modules SIM (SPI/I 2 C) UART + For HT66F0185 For HT66F0185 引脚图 VSS&AVSS PC0/SSEG17/OSC1 PC1/SSEG18/OSC2 PC2/SDO/SSEG0/SCOM0 PA0/TP0/ICPDA/OCDSDA PA1/[SDO]/SCS/SSEG2/SCOM2 PA2/ICPCK/OCDSCK PA3/[SDI/SDA]/SSEG3/SCOM3 PB6/[SCK/SCL]/SSEG4/SCOM4 PB5/[SCS]/SSEG5/SCOM VDD&AVDD PB0/INT0/SSEG16/AN0/XT1 PB1/INT1/SSEG15/AN1/XT2 PB2/TCK0/SSEG14/AN2 PA4/TCK1/SSEG13/AN3 PA5/SSEG10/AN4/VREFI PA6/SSEG9/AN5/VREF PA7/TP1/SSEG8/AN6 PB3/SSEG7/AN7 PB4/CLO/SSEG6 HT66F0175/HT66V SOP-A/SSOP-A VSS&AVSS PC0/SSEG17/OSC1 PC1/SSEG18/OSC2 PC2/SDO/SSEG0/SCOM0 PA0/TP0/ICPDA/OCDSDA PC3/SDI/SDA/SSEG19 PC4/SCK/SCL/SSEG1/SCOM1 PA1/[SDO]/SCS/SSEG2/SCOM2 PA2/ICPCK/OCDSCK PA3/[SDI/SDA]/SSEG3/SCOM3 PB6/[SCK/SCL]/SSEG4/SCOM4 PB5/[SCS]/SSEG5/SCOM VDD&AVDD PB0/INT0/SSEG16/AN0/XT1 PB1/INT1/SSEG15/AN1/XT2 PB2/TCK0/SSEG14/AN2 PA4/TCK1/SSEG13/AN3 PC6/[INT0]/SSEG12 PC5/[INT1]/SSEG11 PA5/SSEG10/AN4/VREFI PA6/SSEG9/AN5/VREF PA7/TP1/SSEG8/AN6 PB3/SSEG7/AN7 PB4/CLO/SSEG6 HT66F0175/HT66V SOP-A/SSOP-A Rev

11 VSS&AVSS PC0/SSEG19/OSC1 PC1/SSEG20/OSC2 PC2/[SDO]/SSEG0/SCOM0 PA0/TP0/ICPDA/OCDSDA PC4/SDI/SDA/SSEG22 PC5/SCK/SCL/SSEG1/SCOM1 PA1/[SDO]/SSEG2/SCOM2 PA2/ICPCK/OCDSCK PA3/[SDI/SDA]/CX/SSEG3/SCOM3 PB6/[SCK/SCL]/C+/SSEG4/SCOM4 PB5/[SCS]/C-/SSEG5/SCOM VDD&AVDD PB0/INT0/SSEG18/AN0/XT1 PB1/INT1/SSEG17/AN1/XT2 PB2/TCK0/SSEG16/AN2 PA4/TCK1/SSEG15/AN3 PD2/TX/SSEG13 PD1/RX/SSEG12 PA5/SSEG10/AN4/VREFI PA6/TCK2/SSEG9/AN5/VREF PA7/TP1/SSEG8/AN6 PB3/[TX]/TP2/SSEG7/AN7 PB4/[RX]/CLO/SSEG6 HT66F0185/HT66V SOP-A/SSOP-A VSS&AVSS PC0/SSEG19/OSC VDD&AVDD PB0/INT0/SSEG18/AN0/XT1 PC1/SSEG20/OSC PB1/INT1/SSEG17/AN1/XT2 PC2/[SDO]/SSEG0/SCOM0 PA0/TP0/ICPDA/OCDSDA PC3/SDO/SSEG PB2/TCK0/SSEG16/AN2 PA4/TCK1/SSEG15/AN3 PD3/SSEG14 PC4/SDI/SDA/SSEG22 PC5/SCK/SCL/SSEG1/SCOM1 PC6/SCS/SSEG23 PA1/[SDO]/SSEG2/SCOM PD2/TX/SSEG13 PD1/RX/SSEG12 PD0/SSEG11 PA5/SSEG10/AN4/VREFI PA2/ICPCK/OCDSCK PA3/[SDI/SDA]/CX/SSEG3/SCOM3 PB6/[SCK/SCL]/C+/SSEG4/SCOM PA6/TCK2/SSEG9/AN5/VREF PA7/TP1/SSEG8/AN6 PB3/[TX]/TP2/SSEG7/AN7 PB5/[SCS]/C-/SSEG5/SCOM PB4/[RX]/CLO/SSEG6 HT66F0185/HT66V SOP-A/SSOP-A 注 :1. 若共用脚同时有多种输出, / 号右侧的引脚名具有更高的优先级 2. VDD&AVDD 指的是 VDD 和 AVDD 为同一个引脚 3. VSS&AVSS 指的是 VSS 和 AVSS 为同一个引脚 4. OCDSCK 和 OCDSDA 引脚为 OCDS 专用引脚, 仅适用于 HT66V01x5 芯片,OCDS EV 芯片 HT66V01x5 用于 HT66F01x5 单片机仿真 Rev

12 引脚说明 PA0/TP0/ ICPDA/ OCDSDA 除了电源引脚外, 这些单片机的所有引脚都以它们的端口名称进行标注, 例如 PA0 PA1 等, 用于描述这些引脚的数字输入 / 输出功能 然而, 这些引脚也与其它功能共用, 如模数转换器, 定时器模块引脚等 每个引脚的功能如下表所述, 而引脚配置的详细内容见规格书其它章节 HT66F0175 引脚名称 功能 OPT I/T O/T 描述 PA0 PAWU PAPU ST CMOS PA1/[SDO]/SCS/ SSEG2/SCOM2 PA2/ICPCK/ OCDSCK PA3/[SDI/SDA]/ SSEG3/SCOM3 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 TP0 TMPC ST CMOS TM0 输入 / 输出 ICPDA - ST CMOS ICP 数据 / 地址引脚 OCDSDA - ST CMOS OCDS 数据 / 地址引脚, 仅用于 EV 芯片 PA1 [SDO] SCS SSEG2 SCOM2 PA2 PAWU PAPU SLCDC0 SIMC0 IFS SLCDC0 SIMC0 IFS SLCDC0 SLCDC1 SLCDC0 SLCDC1 PAWU PAPU ST - ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 CMOS SPI 数据输出 CMOS SPI 从机选择 - SSEG 软件控制 LCD SEG 输出 - ST SCOM 软件控制 LCD COM 输出 CMOS ICPCK - ST CMOS ICP 时钟引脚 OCDSCK - ST - OCDS 时钟引脚, 仅用于 EV 芯片 PA3 [SDI] [SDA] SSEG3 SCOM3 PAWU PAPU SLCDC0 SIMC0 IFS SLCDC0 SIMC0 IFS SLCDC0 SLCDC1 SLCDC0 SLCDC1 ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 ST - SPI 数据输入 ST NMOS I 2 C 地址 / 数据引脚 - SSEG 软件控制 LCD SEG 输出 - SCOM 软件控制 LCD COM 输出 Rev

13 引脚名称 功能 OPT I/T O/T 描述 PA4 PAWU PAPU ST CMOS PA4/TCK1/ SSEG13/AN3 PA5/SSEG10/ AN4/VREFI PA6/SSEG9/ AN5/VREF PA7/TP1/ SSEG8/AN6 PB0/INT0/ SSEG16/ AN0/XT1 PB1/INT1/ SSEG15 /AN1/XT2 PB2/TCK0/ SSEG14/AN2 PB3/SSEG7/ AN7 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 TCK1 TM1C0 ST - TM1 输入 SSEG13 SLCDC2 - SSEG 软件控制 LCD SEG 输出 AN3 ACERL AN - A/D 转换器模拟输入 PA5 PAWU PAPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 SSEG10 SLCDC2 - SSEG 软件控制 LCD SEG 输出 AN4 ACERL AN - A/D 转换器模拟输入 VREFI SADC2 AN - A/D 转换器 PGA 电压输入 PA6 PAWU PAPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 SSEG9 SLCDC2 - SSEG 软件控制 LCD SEG 输出 AN5 ACERL AN - A/D 转换器模拟输入 VREF SADC2 - AO A/D 转换器参考电压输出 PA7 PAWU PAPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 TP1 TMPC ST CMOS TM1 输入 / 输出 SSEG8 SLCDC2 - SSEG 软件控制 LCD SEG 输出 AN6 ACERL AN - A/D 转换器模拟输入 PB0 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 INT0 INTEG IFS ST - 外部中断 0 SSEG16 SLCDC3 - SSEG 软件控制 LCD SEG 输出 AN0 ACERL AN - A/D 转换器模拟输入 XT1 CO LXT - LXT 振荡器引脚 PB1 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 INT1 INTEG IFS ST - 外部中断 1 SSEG15 SLCDC3 - SSEG 软件控制 LCD SEG 输出 AN1 ACERL AN - A/D 转换器模拟输入 XT2 CO - LXT LXT 振荡器引脚 PB2 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 TCK0 TM0C0 ST - TM0 输入 SSEG14 SLCDC3 - SSEG 软件控制 LCD SEG 输出 AN2 ACERL AN - A/D 转换器模拟输入 PB3 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SSEG7 SLCDC2 - SSEG 软件控制 LCD SEG 输出 AN7 ACERL AN - A/D 转换器模拟输入 Rev

14 引脚名称功能 OPT I/T O/T 描述 PB4/CLO/ SSEG6 PB5/[SCS]/ SSEG5/SCOM5 PB6/[SCK/SCL]/ SSEG4/SCOM4 PC0/SSEG17/ OSC1 PC1/SSEG18/ OSC2 PC2/SDO/ SSEG0/SCOM0 PC3/SDI/SDA/ SSEG19 PB4 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 CLO TMPC - CMOS 系统时钟输出 SSEG6 SLCDC2 - SSEG 软件控制 LCD SEG 输出 PB5 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SLCDC0 [SCS] SIMC0 - CMOS SPI 从机选择 IFS SSEG5 SLCDC1 - SSEG 软件控制 LCD SEG 输出 SCOM5 SLCDC1 - SCOM 软件控制 LCD COM 输出 PB6 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 [SCK] SIMC0 IFS ST CMOS SPI 串行时钟 [SCL] SIMC0 IFS ST NMOS I 2 C 时钟引脚 SSEG4 SLCDC1 - SSEG 软件控制 LCD SEG 输出 SCOM4 SLCDC1 - SCOM 软件控制 LCD COM 输出 PC0 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SSEG17 SLCDC3 - SSEG 软件控制 LCD SEG 输出 OSC1 CO HXT - HXT 振荡器引脚 PC1 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SSEG18 SLCDC3 - SSEG 软件控制 LCD SEG 输出 OSC2 CO - HXT HXT 振荡器引脚 PC2 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SDO SIMC0 IFS - CMOS SPI 数据输出 SSEG0 SLCDC0 SLCDC1 - SSEG 软件控制 LCD SEG 输出 SCOM0 SLCDC0 SLCDC1 - SCOM 软件控制 LCD COM 输出 PC3 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SDI SIMC0 IFS ST - SPI 数据输入 SDA SIMC0 IFS ST NMOS I 2 C 数据引脚 SSEG19 SLCDC3 - SSEG 软件控制 LCD SEG 输出 Rev

15 引脚名称 功能 OPT I/T O/T 描述 PC4 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SCK SIMC0 IFS ST CMOS SPI 串行时钟 PC4/SCK/SCL/ SSEG1/SCOM1 PC5/[INT1]/ SSEG11 PC6/[INT0]/ SSEG12 VDD&AVDD VSS&AVSS SCL SIMC0 IFS ST NMOS I 2 C 时钟引脚 SSEG1 SLCDC0 SLCDC1 - SSEG 软件控制 LCD SEG 输出 SCOM1 SLCDC0 SLCDC1 - SCOM 软件控制 LCD COM 输出 PC5 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 [INT1] INTEG IFS ST - 外部中断 1 SSEG11 SLCDC2 - SSEG 软件控制 LCD SEG 输出 PC6 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 [INT0] INTEG IFS ST - 外部中断 0 SSEG12 SLCDC2 - SSEG 软件控制 LCD SEG 输出 VDD - PWR - 正电源 AVDD - PWR - A/D 转换器正电源 VSS - PWR - 负电源 接地 AVSS - PWR - A/D 转换器负电源 接地 注 :I/T: 输入类型 ; O/T: 输出类型 OPT: 通过配置选项 (CO) 或寄存器选项来配置 ; CO: 配置选项 ST: 施密特触发输入 ; AN: 模拟输入 CMOS:CMOS 输出 ; NMOS:NMOS 输出 ; AO: 模拟输出 SSEG: 软件控制 LCD SEG; SCOM: 软件控制 LCD COM HXT: 高频晶体振荡器 ; LXT: 低频晶体振荡器 PWR: 电源 * AVDD 与 VDD 在内部是同一个引脚,AVSS 与 VSS 在内部是同一个引脚 此引脚功能表是针对大封装芯片而言的, 对于小封装的芯片可能不具有上述引脚和功能 Rev

16 PA0/TP0/ ICPDA/ OCDSDA HT66F0185 引脚名称 功能 OPT I/T O/T 描述 PA0 PAWU PAPU ST CMOS PA1/[SDO]/ SSEG2/SCOM2 PA2/ICPCK/ OCDSCK PA3/[SDI/SDA]/ CX/SSEG3/ SCOM3 PA4/TCK1/ SSEG15/AN3 PA5/SSEG10/ AN4/VREFI 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 TP0 TMPC ST CMOS TM0 输入 / 输出 ICPDA - ST CMOS ICP 数据 / 地址引脚 OCDSDA - ST CMOS OCDS 数据 / 地址引脚, 仅用于 EV 芯片 PA1 [SDO] SSEG2 SCOM2 PA2 PAWU PAPU SLCDC0 SIMC0 IFS SLCDC0 SLCDC1 SLCDC0 SLCDC1 PAWU PAPU ST - CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 CMOS SPI 数据输出 - SSEG 软件控制 LCD SEG 输出 - ST SCOM 软件控制 LCD COM 输出 CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 ICPCK - ST CMOS ICP 时钟引脚 OCDSCK - ST - OCDS 时钟引脚, 仅用于 EV 芯片 PA3 [SDI] [SDA] PAWU PAPU SLCDC0 SIMC0 IFS SLCDC0 SIMC0 IFS ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 ST - SPI 数据输入 ST NMOS I 2 C 地址 / 数据引脚 CX CPC - CMOS 比较器输出 SLCDC0 SSEG3 - SSEG 软件控制 LCD SEG 输出 SLCDC1 SLCDC0 SCOM3 - SCOM 软件控制 LCD COM 输出 SLCDC1 PA4 PAWU PAPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 TCK1 TM1C0 ST - TM1 输入 SSEG15 SLCDC3 - SSEG 软件控制 LCD SEG 输出 AN3 ACERL AN - A/D 转换器模拟输入 PA5 PAWU PAPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 SSEG10 SLCDC2 - SSEG 软件控制 LCD SEG 输出 AN4 ACERL AN - A/D 转换器模拟输入 VREFI SADC2 AN - A/D 转换器 PGA 电压输入 Rev

17 引脚名称 功能 OPT I/T O/T 描述 PA6 PAWU PAPU ST CMOS PA6/TCK2/ SSEG9/ AN5/VREF PA7/TP1/ SSEG8/AN6 PB0/INT0/ SSEG18/ AN0/XT1 PB1/INT1/ SSEG17/ AN1/XT2 PB2/TCK0/ SSEG16/AN2 PB3/[TX]/TP2/ SSEG7/AN7 PB4/[RX]/CLO/ SSEG6 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 TCK2 TM2C0 ST - TM2 输入 SSEG9 SLCDC2 - SSEG 软件控制 LCD SEG 输出 AN5 ACERL AN - A/D 转换器模拟输入 VREF SADC2 - AO A/D 转换器参考电压输出 PA7 PAWU PAPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 TP1 TMPC ST CMOS TM1 输入 / 输出 SSEG8 SLCDC2 - SSEG 软件控制 LCD SEG 输出 AN6 ACERL AN - A/D 转换器模拟输入 PB0 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 INT0 IFS INTEG ST - 外部中断 0 SSEG18 SLCDC3 - SSEG 软件控制 LCD SEG 输出 AN0 ACERL AN - A/D 转换器模拟输入 XT1 CO LXT - LXT 振荡器引脚 PB1 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 INT1 IFS INTEG ST - 外部中断 1 SSEG17 SLCDC3 - SSEG 软件控制 LCD SEG 输出 AN1 ACERL AN - A/D 转换器模拟输入 XT2 CO - LXT LXT 振荡器引脚 PB2 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 TCK0 TM0C0 ST - TM0 输入 SSEG16 SLCDC3 - SSEG 软件控制 LCD SEG 输出 AN2 ACERL AN - A/D 转换器模拟输入 PB3 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 [TX] UCR1 UCR2 - CMOS UART TX 串行数据输出 TP2 TMPC ST CMOS TM2 输入 / 输出 SSEG7 SLCDC2 - SSEG 软件控制 LCD SEG 输出 AN7 ACERL AN - A/D 转换器模拟输入 PB4 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 [RX] UCR1 UCR2 ST - UART RX 串行数据输入 CLO TMPC - CMOS 系统时钟输出 SSEG6 SLCDC2 - SSEG 软件控制 LCD SEG 输出 Rev

18 引脚名称功能 OPT I/T O/T 描述 PB5 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 PB5/[SCS]/C-/ SSEG5/SCOM5 PB6/[SCK/ SCL]/C+/ SSEG4/SCOM4 PC0/SSEG19/ OSC1 PC1/SSEG20/ OSC2 PC2/[SDO]/ SSEG0/SCOM0 PC3/SDO/ SSEG21 PC4/SDI/SDA/ SSEG22 [SCS] SLCDC0 SIMC0 IFS ST CMOS SPI 从机选择 C- CPC AN - 比较器输入 SSEG5 SLCDC1 - SSEG 软件控制 LCD SEG 输出 SCOM5 SLCDC1 - SCOM 软件控制 LCD COM 输出 PB6 PBPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 [SCK] SIMC0 IFS ST CMOS SPI 串行时钟 [SCL] SIMC0 IFS ST NMOS I 2 C 时钟引脚 C+ CPC AN - 比较器输入 SSEG4 SLCDC1 - SSEG 软件控制 LCD SEG 输出 SCOM4 SLCDC1 - SCOM 软件控制 LCD COM 输出 PC0 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SSEG19 SLCDC3 - SSEG 软件控制 LCD SEG 输出 OSC1 CO HXT - HXT 振荡器引脚 PC1 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SSEG20 SLCDC3 - SSEG 软件控制 LCD SEG 输出 OSC2 CO - HXT HXT 振荡器引脚 PC2 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 [SDO] SIMC0 IFS - CMOS SPI 数据输出 SSEG0 SLCDC0 SLCDC1 - SSEG 软件控制 LCD SEG 输出 SCOM0 SLCDC0 SLCDC1 - SCOM 软件控制 LCD COM 输出 PC3 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SDO SIMC0 IFS - CMOS SPI 数据输出 SSEG21 SLCDC3 - SSEG 软件控制 LCD SEG 输出 PC4 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SDI SIMC0 IFS ST - SPI 数据输入 SDA SIMC0 IFS ST NMOS I 2 C 数据引脚 SSEG22 SLCDC4 - SSEG 软件控制 LCD SEG 输出 Rev

19 引脚名称 功能 OPT I/T O/T 描述 PC5 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SCK SIMC0 IFS ST CMOS SPI 串行时钟 PC5/SCK/SCL/ SSEG1/SCOM1 PC6/SCS/ SSEG23 PD0/SSEG11 PD1/RX/ SSEG12 PD2/TX/ SSEG13 PD3/SSEG14 VDD&AVDD VSS&AVSS SCL SIMC0 IFS ST NMOS I 2 C 时钟引脚 SSEG1 SLCDC0 SLCDC1 - SSEG 软件控制 LCD SEG 输出 SCOM1 SLCDC0 SLCDC1 - SCOM 软件控制 LCD COM 输出 PC6 PCPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SLCDC0 SCS SIMC0 ST CMOS SPI 从机选择 IFS SSEG23 SLCDC4 - SSEG 软件控制 LCD SEG 输出 PD0 PDPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SSEG11 SLCDC2 - SSEG 软件控制 LCD SEG 输出 PD1 PDPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 RX UCR1 UCR2 ST - UART RX 串行数据输入 SSEG12 SLCDC2 - SSEG 软件控制 LCD SEG 输出 PD2 PDPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 TX UCR1 UCR2 - CMOS UART TX 串行数据输出 SSEG13 SLCDC2 - SSEG 软件控制 LCD SEG 输出 PD3 PDPU ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻 SSEG14 SLCDC3 - SSEG 软件控制 LCD SEG 输出 VDD - PWR - 正电源 AVDD - PWR - A/D 转换器正电源 VSS - PWR - 负电源 接地 AVSS - PWR - A/D 转换器负电源 接地 注 :I/T: 输入类型 ; O/T: 输出类型 OPT: 通过配置选项 (CO) 或寄存器选项来配置 ; CO: 配置选项 ST: 施密特触发输入 ; AN: 模拟输入 CMOS:CMOS 输出 ; NMOS:NMOS 输出 ; AO: 模拟输出 SSEG: 软件控制 LCD SEG; SCOM: 软件控制 LCD COM HXT: 高频晶体振荡器 ; LXT: 低频晶体振荡器 PWR: 电源 * AVDD 与 VDD 在内部是同一个引脚,AVSS 与 VSS 在内部是同一个引脚 此引脚功能表是针对大封装芯片而言的, 对于小封装的芯片可能不具有上述引脚和功能 Rev

20 极限参数 电源供应电压...V SS -0.3V ~ V SS +6.0V 端口输入电压... V SS -0.3V ~ V DD +0.3V 储存温度 ~ 125 工作温度 ~ 85 I OH 总电流 mA I OL 总电流... 80mA 总功耗 mW 注 : 这里只强调额定功率, 超过极限参数所规定的范围将对芯片造成损害, 无法预期芯片在上述标示范围外的工作状态, 而且若长期在标示范围外的条件下工作, 可能影响芯片的可靠性 直流电气特性 符号参数工作电压 (HXT) V DD I DD 工作电压 (HIRC) 工作电流 (HXT) 工作电流 (HIRC) 工作电流 (LXT) 工作电流 (LIRC) V DD Ta=25 测试条件条件 最小 典型 最大 单位 f SYS =f HXT =8MHz V f SYS =f HXT =12MHz V f SYS =f HXT =16MHz V f SYS =f HXT =20MHz V f SYS =f HIRC =8MHz V f SYS =f HIRC =12MHz V f SYS =f HIRC =16MHz V 3V f SYS =f H =f HXT =8MHz ma 5V 无负载, 所有外设关闭 ma 3V f SYS =f H =f HXT =12MHz ma 5V 无负载, 所有外设关闭 ma 5V f SYS=f H =f HXT =16MHz 无负载, 所有外设关闭 ma 5V f SYS=f H =f HXT =20MHz 无负载, 所有外设关闭 ma 3V f SYS =f H =f HIRC =8MHz ma 5V 无负载, 所有外设关闭 ma 3V f SYS =f H =f HIRC =12MHz ma 5V 无负载, 所有外设关闭 ma 5V f SYS=f H =f HIRC =16MHz 无负载, 所有外设关闭 ma 3V f SYS =f SUB =f LXT =32.768kHz μa 5V 无负载, 所有外设关闭 μa 3V f SYS =f SUB =f LIRC =32kHz μa 5V 无负载, 所有外设关闭 μa Rev

21 符号 I STB V IL V IH I OL I OH R PH 参数 静态电流 (IDLE0 模式 ) 静态电流 (IDLE1 模式 ) 工作电流 (SLEEP0 模式 ) 工作电流 (SLEEP1 模式 ) 输入 / 输出口或输入引脚的低电平输入电压 输入 / 输出口或输入引脚的高电平输入电压 输入 / 输出口灌电流 输入 / 输出口源电流 输入 / 输出口上拉电阻 测试条件 V DD 条件 最小 典型 最大 单位 3V 无负载, 所有外设关闭, 3 5 μa 5V f SUB on 5 10 μa 3V f SYS =f HXT =8MHz on, f SUB on ma 5V 无负载, 所有外设关闭 ma 3V f SYS =f HXT =12MHz on, f SUB on ma 5V 无负载, 所有外设关闭 ma 5V f SYS=f HXT =16MHz on, f SUB on 无负载, 所有外设关闭 ma 5V f SYS=f HXT =20MHz on, f SUB on 无负载, 所有外设关闭 ma 3V f SYS =f HIRC =8MHz on, f SUB on ma 5V 无负载, 所有外设关闭 ma 3V f SYS =f HIRC =12MHz on, f SUB on ma 5V 无负载, 所有外设关闭 ma 5V f SYS=f HIRC =16MHz on, f SUB on 无负载, 所有外设关闭 ma 3V f SUB off, WDT 除能 1.0 μa 5V 无负载, 所有外设关闭 2.0 μa 3V f SUB on, WDT 使能 3.0 μa 5V 无负载, 所有外设关闭 5.0 μa 5V V 0 0.2V DD V 5V V 0.8V DD V DD V 3V V OL =0.1V DD ma 5V V OL =0.1V DD ma 3V V OH =0.9V DD, ma SLEDCn [m+1, m]=00 5V n=0 或 1; m=0, 2, 4 或 ma 3V V OH =0.9V DD, ma SLEDCn [m+1, m]=01 5V n=0 或 1; m=0, 2, 4 或 ma 3V V OH =0.9V DD, ma SLEDCn [m+1, m]=10 5V n=0 或 1; m=0, 2, 4 或 ma 3V V OH =0.9V DD, ma SLEDCn [m+1, m]=11 5V n=0 或 1; m=0, 2, 4 或 ma 3V kω 5V kω Rev

22 交流电气特性 符号 f SYS f LIRC Ta=25 参数 测试条件 V DD 条件 最小 典型 最大 单位 2.2~ 5.5V f SYS =f HXT =8MHz 8 MHz 系统时钟 (HXT) 2.7~ 5.5V f SYS =f HXT =12MHz 12 MHz 4.5~ 5.5V f SYS =f HXT =16MHz 16 MHz 4.5~ 5.5V f SYS =f HXT =20MHz 20 MHz 2.4~ 5.5V f SYS =f HIRC =8MHz 8 MHz 系统时钟 (HIRC) 2.7~ 5.5V f SYS =f HIRC =12MHz 12 MHz 4.5~ 5.5V f SYS =f HIRC =16MHz 16 MHz 系统时钟 (LXT) 2.2~ 5.5V f SYS =f LXT =32.768kHz khz 系统时钟 (LIRC) 2.2~ 5.5V f SYS =f LIRC =32kHz 32 khz 内部低速 RC 振荡器 (LIRC) 5V Ta=25-10% % khz 2.2~ 5.5V Ta= -40 ~ 85-50% % khz t TCK TCKn 引脚最小输入脉宽 0.3 μs t INT 中断引脚最小输入脉宽 10 μs t SST t RSTD 系统启动时间 ( 从暂停模式中唤醒,f SYS off) 系统启动时间 ( 从暂停模式中唤醒 ) 系统复位延迟时间 ( 上电复位, LVR 硬件复位,LVRC/WDTC 软件复位 ) 系统复位延迟时间 (WDT 硬件复位 ) f SYS =f HXT off 128 t HXT f SYS =f HIRC off 16 t HIRC f SYS =f LXT off 128 t LXT f SYS =f LIRC off 2 t LIRC f SYS on 2 t SYS ms ms t EERD EEPROM 读周期 4 t SYS t EEWR EEPROM 写周期 2 4 ms 注 :1.t SYS =1/f SYS Rev

23 HIRC 电气特性 Ta=25 符号 f HIRC 符号 f HIRC 符号 f HIRC 频率准确性 trimmed 8MHz@V DD =3V 参数 内部高速 RC 振荡器 (HIRC) 频率准确性 trimmed 8MHz@V DD =5V 参数 内部高速 RC 振荡器 (HIRC) 频率准确性 trimmed V DD =3V 参数 内部高速 RC 振荡器 (HIRC) 测试条件最小典型最大单位 V DD 条件 3V Ta=25-2% 8 + 2% MHz 3V ± 0.3V Ta=0 ~ 70-5% 8 + 5% MHz 3V ± 0.3V Ta= -40 ~ 85-7% 8 + 7% MHz 2.2V ~ 5.5V Ta=0 ~ 70-7% 8 + 7% MHz 2.2V ~ 5.5V Ta= -40 ~ 85-10% % MHz 3V Ta=25-20% % MHz 3V Ta=25-20% % MHz 测试条件最小典型最大单位 V DD 条件 5V Ta=25-2% 8 + 2% MHz 5V ± 0.5V Ta=0 ~ 70-5% 8 + 5% MHz 5V ± 0.5V Ta= -40 ~ 85-7% 8 + 7% MHz 2.2V ~ 5.5V Ta=0 ~ 70-7% 8 + 7% MHz 2.2V ~ 5.5V Ta= -40 ~ 85-10% % MHz 5V Ta=25-20% % MHz 5V Ta=25-20% % MHz 测试条件最小典型最大单位 V DD 条件 3V Ta=25-2% % MHz 3V ± 0.3V Ta=0 ~ 70-5% % MHz 3V ± 0.3V Ta= -40 ~ 85-7% % MHz 2.2V ~ 5.5V Ta=0 ~ 70-7% % MHz 2.2V ~ 5.5V Ta= -40 ~ 85-10% % MHz 3V Ta=25-20% % MHz 3V Ta=25-20% % MHz Rev

24 符号 f HIRC 符号 f HIRC 频率准确性 trimmed 12MHz@V DD =5V 参数 内部高速 RC 振荡器 (HIRC) 频率准确性 trimmed 16MHz@V DD =5V 参数 内部高速 RC 振荡器 (HIRC) 测试条件最小典型最大单位 V DD 条件 5V Ta=25-2% % MHz 5V ± 0.5V Ta=0 ~ 70-5% % MHz 5V ± 0.5V Ta= -40 ~ 85-7% % MHz 2.2V ~ 5.5V Ta=0 ~ 70-7% % MHz 2.2V ~ 5.5V Ta= -40 ~ 85-10% % MHz 5V Ta=25-20% % MHz 5V Ta=25-20% % MHz 测试条件最小典型最大单位 V DD 条件 5V Ta=25-2% % MHz 5V ± 0.5V Ta=0 ~ 70-5% % MHz 5V ± 0.5V Ta= -40 ~ 85-7% % MHz 2.2V ~ 5.5V Ta=0 ~ 70-7% % MHz 2.2V ~ 5.5V Ta= -40 ~ 85-10% % MHz 5V Ta=25-20% % MHz 5V Ta=25-20% % MHz ADC 电气特性 符号 参数 V DD 测试条件 条件 Ta=25 最小典型最大单位 V DD 工作电压 V V ADI 输入电压 0 V REF V V REF 参考电压 2 V DD V DNL INL 非线性微分误差 非线性积分误差 3V 5V 3V 5V V REF =V DD t ADCK =0.5μs V REF =V DD t ADCK =0.5μs LSB LSB I ADC ADC 使能额外电流 3V 无负载, ma 5V t ADCK =0.5μs ma t ADCK 时钟周期 μs t ADC A/D 转换时间 ( 包括采样和保持时间 ) 16 t ADCK t ON2ST A/D 转换器 On-to-Start 时间 4 μs Rev

25 LVD & LVR 电气特性 符号 参数 V DD V LVR 低电压复位电压 V LVD 低电压检测电压 测试条件条件 LVR 使能, 电压选择 2.1V LVR 使能, 电压选择 2.55V % LVR 使能, 电压选择 3.15V 3.15 Ta=25 最小典型最大单位 2.1 LVR 使能, 电压选择 3.8V 3.8 LVD 使能, 电压选择 2.0V 2.0 LVD 使能, 电压选择 2.2V 2.2 LVD 使能, 电压选择 2.4V 2.4 LVD 使能, 电压选择 2.7V 2.7-5% LVD 使能, 电压选择 3.0V 3.0 LVD 使能, 电压选择 3.3V 3.3 LVD 使能, 电压选择 3.6V % V + 5% V LVD 使能, 电压选择 4.0V 4.0 V BG Bandgap 参考电压 - 3% % V 5V LVD/LVR 使能, VBGEN= μa I OP 工作电流 5V LVD/LVR 使能, VBGEN= μa t BGS V BG 开启到稳定的时间 无负载 150 μs t LVDS LVDO 稳定时间 LVR 使能, VBGEN=0, LVD off on 15 μs LVR 除能, VBGEN=0, LVD off on 150 μs t LVR 最小低电压复位时间 μs t LVD 最小低电压中断时间 μs 比较器电气特性 Ta=25 测试条件符号参数最小典型最大单位 V DD 条件 V DD 工作电压 V 3V μa I CMP 比较器使能额外电流 5V μa V OS 输入偏置电压 5V mv V CM 共模电压范围 V SS V DD -1.4 V A OL 开环增益 5V db 迟滞功能除能 mv V HYS 迟滞宽度 5V 迟滞功能使能 mv t RP 响应时间 100mV 偏置 ns Rev

26 软件控制 LCD 驱动器电气特性 符号 参数 V DD I BIAS 偏置电流 5V V LCD_H V LCD_L [(2/3) V DD ] 电压用于 LCD SCOM/SSEG 输出 [(1/3) V DD ] 电压用于 LCD SCOM/SSEG 输出 2.2V~ 5.5V 2.2V~ 5.5V Ta=25 测试条件条件 最小 典型 最大 单位 ISEL[1:0]= μa ISEL[1:0]= μa ISEL[1:0]= μa ISEL[1:0]= μa 无负载 V DD 无负载 V DD 上电复位特性 Ta=25 符号 参数 测试条件 V DD 条件 最小 典型 最大 单位 V POR 上电复位电压 100 mv RR VDD 上电复位电压速率 V/ms t POR V DD 保持为 V POR 的最小时间 1 ms 8,, J ,, E A Rev

27 系统结构 内部系统结构是盛群单片机具有良好性能的主要因素 由于采用 RISC 结构, 该系列单片机具有高运算速度和高性能的特点 通过流水线的方式, 指令的取得和执行同时进行, 此举使得除了跳转和调用指令外, 其它指令都能在一个指令周期内完成 8 位 ALU 参与指令集中所有的运算, 它可完成算术运算 逻辑运算 移位 递增 递减和分支等功能, 而内部的数据路径则是以通过累加器和 ALU 的方式加以简化 有些寄存器在数据存储器中被实现, 且可以直接或间接寻址 简单的寄存器寻址方式和结构特性, 确保了在提供具有最大可靠度和灵活性的 I/O 和 A/D 控制系统时, 仅需要少数的外部器件 使得该系列单片机适用于低成本和大量生产的控制应用 时序和流水线结构 主系统时钟由 HXT LXT HIRC 或 LIRC 振荡器提供, 它被细分为 T1~ T4 四个内部产生的非重叠时序 在 T1 时间, 程序计数器自动加一并抓取一条新的指令 剩下的时间 T2~ T4 完成译码和执行功能, 因此, 一个 T1~ T4 时钟周期构成一个指令周期 虽然指令的抓取和执行发生在连续的指令周期, 但单片机流水线结构会保证指令在一个指令周期内被有效执行 除非程序计数器的内容被改变, 如子程序的调用或跳转, 在这种情况下指令将需要多一个指令周期的时间去执行 B5 ;5 5OIJ A +? 2 D = I A+? 6 2 D = I A+? 6 2 D = I A+? 6! 2 D = I A+? 6 " 2 H C H = + K JAH EF A E E C. AJ?D 1 IJ NA? KA J1 IJ 2+. AJ?D 1 IJ 2+ - NA? KA J1 IJ 2+. AJ?D 1 IJ 2+ - NA? KA J1 IJ 2+ 系统时序和流水线如果指令牵涉到分支, 例如跳转或调用等指令, 则需要两个指令周期才能完成指令执行 需要一个额外周期的原因是程序先用一个周期取出实际要跳转或调用的地址, 再用另一个周期去实际执行分支动作, 因此用户需要特别考虑额外周期的问题, 尤其是在执行时间要求较严格的时候! " # $, - ); 8 ) 0 + ),- ) ; AJ?D 1 IJ -NA?K JA 1 IJ. AJ?D 1 IJ - NA? K J1 IJ A. AJ?D 1 IJ!. K ID 2 EF A E A. AJ?D 1 IJ $ - NA? K J1 I A J $. AJ?D 1 IJ % 指令捕捉 Rev

28 程序计数器 堆栈 在程序执行期间, 程序计数器用来指向下一个要执行的指令地址 除了 JMP 和 CALL 指令需要跳转到一个非连续的程序存储器地址之外, 它会在每条指令执行完成以后自动加一 只有较低的 8 位, 即所谓的程序计数器低字节寄存器 PCL, 可以被用户直接读写 当执行的指令要求跳转到不连续的地址时, 如跳转指令 子程序调用 中断或 复位等, 单片机通过加载所需要的地址到程序寄存器来控制程序, 对于条件跳 转指令, 一旦条件符合, 在当前指令执行时取得的下一条指令将会被舍弃, 而 由一个空指令周期来取代 单片机型号 程序计数器高字节低字节 (PCL) HT66F0175 PC10~ PC8 PC7~ PC0 HT66F0185 PC11~ PC8 PC7~ PC0 程序计数器的低字节, 即程序计数器的低字节寄存器 PCL, 可以通过程序控制, 且它是可以读取和写入的寄存器 通过直接写入数据到这个寄存器, 一个程序短跳转可直接执行, 然而只有低字节的操作是有效的, 跳转被限制在存储器的当前页中, 即 256 个存储器地址范围内, 当这样一个程序跳转要执行时, 会插入一个空指令周期 程序计数器的低字节可由程序直接进行读取,PCL 的使用可能引起程序跳转, 因此需要额外的指令周期 堆栈是一个特殊的存储空间, 用来存储程序计数器中的内容 该系列单片机有多层堆栈, 堆栈既不是数据部分也不是程序空间部分, 而且它既不是可读取也不是可写入的 当前层由堆栈指针 (SP) 加以指示, 同样也是不可读写的 在子程序调用或中断响应服务时, 程序计数器的内容被压入到堆栈中 当子程序或中断响应结束时, 返回指令 (RET 或 RETI) 使程序计数器从堆栈中重新得到它以前的值 当一个芯片复位后, 堆栈指针将指向堆栈顶部 如果堆栈已满, 且有非屏蔽的中断发生, 中断请求标志会被置位, 但中断响应将被禁止 当堆栈指针减少 ( 执行 RET 或 RETI), 中断将被响应 这个特性提供程序设计者简单的方法来预防堆栈溢出 然而即使堆栈已满,CALL 指令仍然可以被执行, 而造成堆栈溢出 使用时应避免堆栈溢出的情况发生, 因为这可能导致不可预期的程序分支指令执行错误 若堆栈溢出, 则首个存入堆栈的程序计数器数据将会丢失 Program Counter Top of Stack Stack Pointer Bottom of Stack Stack Level 1 Stack Level 2 Stack Level 3 : : : Stack Level 8 Program Memory Rev

29 算术逻辑单元 ALU 算术逻辑单元是单片机中很重要的部分, 执行指令集中的算术和逻辑运算 ALU 连接到单片机的数据总线, 在接收相关的指令码后执行需要的算术与逻辑操作, 并将结果存储在指定的寄存器, 当 ALU 计算或操作时, 可能导致进位 借位或其它状态的改变, 而相关的状态寄存器会因此更新内容以显示这些改变, ALU 所提供的功能如下 : 算术运算 :ADD,ADDM,ADC,ADCM,SUB,SUBM,SBC,SBCM, DAA 逻辑运算 :AND,OR,XOR,ANDM,ORM,XORM,CPL,CPLA 移位运算 :RRA,RR,RRCA,RRC,RLA,RL,RLCA,RLC 递增和递减 :INCA,INC,DECA,DEC 分支判断 :JMP,SZ,SZA,SNZ,SIZ,SDZ,SIZA,SDZA,CALL, RET,RETI Flash 程序存储器 程序存储器用来存放用户代码即储存程序 程序存储器为 Flash 类型意味着可以多次重复编程, 方便用户使用同一芯片进行程序的修改 使用适当的单片机编程工具, 此系列单片机提供用户灵活便利的调试方法和项目开发规划及更新 单片机型号容量 HT66F0175 2K 16 HT66F0185 4K 16 结构 程序存储器的容量为 2K 16~ 4K 16 位, 程序存储器用程序计数器来寻址, 其中也包含数据 表格和中断入口 数据表格可以设定在程序存储器的任何地址, 由表格指针来寻址 000H 004H HT66F0175 Initialisation Vector HT66F0185 Initialisation Vector 024H 028H Interrupt Vectors Interrupt Vectors n00h nffh Look-up Table Look-up Table 7FFH 16 bits FFFH 16 bits 程序存储器结构 Rev

30 特殊向量 程序存储器内部某些地址保留用做诸如复位和中断入口等特殊用途 地址 000H 是芯片复位后的程序起始地址 在芯片复位之后, 程序将跳到这个地址并开始执行 查表 程序存储器中的任何地址都可以定义成一个表格, 以便储存固定的数据 使用表格时, 表格指针必须先行设定, 其方式是将表格的地址放在表格指针寄存器 TBLP 和 TBHP 中 这些寄存器定义表格总的地址 在设定完表格指针后, 表格数据可以使用 TABRD [m] 或 TABRDL [m] 指令分别从程序存储器查表读取 当这个指令执行时, 程序存储器中表格数据低字节, 将被传送到使用者所指定的数据存储器 [m], 程序存储器中表格数据的高字节, 则被传送到 TBLH 特殊寄存器, 而高字节中未使用的位将被读取为 0 下图是查表中寻址 / 数据流程 : = IJF = C A H 6 *0 24A CEIJAH 6 * 24A C IJA E H 2 H CH= A H A I, =J= I $ > EJI 查表范例 4 A C IJA E H6* 0 7 IA H5A A JA@? 4 A C IJA E H 0 EC D * OJA M*OJA 以下范例说明表格指针和表格数据如何被定义和执行 这个例子使用的表格数据用 ORG 伪指令储存在存储器中 ORG 指令的值 0F00H 指向的地址是 4K 程序存储器中最后一页的起始地址 表格指针低字节寄存器的初始值设为 06H, 这可保证从数据表格读取的第一笔数据位于程序存储器地址 0F06H, 即最后一页起始地址后的第六个地址 值得注意的是, 假如 TABRD [m] 指令被使用, 则表格指针指向 TBHP 指定的页 在这个例子中, 表格数据的高字节等于零, 而当 TABRD [m] 指令被执行时, 此值将会自动的被传送到 TBLH 寄存器 TBLH 寄存器为只读寄存器, 不能重新储存, 若主程序和中断服务程序都使用表格读取指令, 应该注意它的保护 使用表格读取指令, 中断服务程序可能会改变 TBLH 的值, 若随后在主程序中再次使用这个值, 则会发生错误, 因此建议避免同时使用表格读取指令 然而在某些情况下, 如果同时使用表格读取指令是不可避免的, 则在执行任何主程序的表格读取指令前, 中断应该先除能, 另外要注意的是所有与表格相关的指令, 都需要两个指令周期去完成操作 Rev

31 表格读取程序范例 tempreg1 db? ; temporary register #1 tempreg2 db? ; temporary register #2 : mov a,06h ; initialise low table pointer - note that this ; address is referenced to the last page or the ; page that tbhp pointed mov tblp,a mov a,0fh ; initialise high table pointer mov tbhp,a : tabrd tempreg1 ; transfers value in table referenced by table ; pointer data at program memory address 0F06H ; transferred to tempreg1 and TBLH dec tblp ; reduce value of table pointer by one tabrd tempreg2 ; transfers value in table referenced by table ; pointer data at program memory address 0F05H ; transferred to tempreg2 and TBLH in this ; example the data 1AH is transferred to ; tempreg1 and data 0FH to register tempreg2 : org 0F00h ; sets initial address of program memory dc 00Ah, 00Bh, 00Ch, 00Dh, 00Eh, 00Fh, 01Ah, 01Bh : 在线烧录 Flash 型程序存储器提供用户便利地对同一芯片进行程序的更新和修改 另外, Holtek 单片机提供 4 线接口的在线烧录方式 用户可将进行过烧录或未经过烧录的单片机芯片连同电路板一起制成, 最后阶段进行程序的更新和程序的烧录, 在无需去除或重新插入芯片的情况下方便地保持程序为最新版 Holtek 烧录器引脚名称 MCU 在线烧录引脚名称 引脚说明 ICPDA PA0 串行数据 / 地址烧录 ICPCK PA2 时钟烧录 VDD VDD 电源 VSS VSS 地 程序存储器和 EEPROM 存储器可以通过 4 线的接口在线进行烧录 其中一个引脚用于数据串行下载或上传 另一个引脚用于串行时钟 两条用于提供电源 芯片在线烧写的详细使用说明超出此文档的描述范围, 将由专门的参考文献提供 烧录过程中, 用户必须确保 ICPDA 和 ICPCK 这两个引脚没有连接至其它输出脚 Rev

32 9 HEJA H+?J A H 5 EC = I 9 HEJA H 8,, +7 2 H CH= E C 2 E I 8,, 1+2,) 2 ) ) 9 HEJA H JD A H+EH?KEJ 注 :* 可能为电阻或电容 若为电阻则其值必须大于 1kΩ, 若为电容则其必须小于 1nF 片上调试 OCDS EV 芯片 HT66V01x5 用于 HT66F01x5 单片机仿真 此 EV 芯片提供片上调试功能 (OCDS) 用于开发过程中的单片机调试 除了片上调试功能方面,EV 芯片和实际 MCU 在功能上几乎是兼容的 用户可将 OCDSDA 和 OCDSCK 引脚连接至 Holtek HT-IDE 开发工具, 从而实现 EV 芯片对实际 IC 的仿真 OCDSDA 引脚为 OCDS 数据 / 地址输入 / 输出脚,OCDSCK 引脚为 OCDS 时钟输入脚 当用户用 EV 芯片进行调试时, 实际单片机 OCDSDA 和 OCDSCK 引脚上的其它共用功能无效 由于这两个 OCDS 引脚与 ICP 引脚共用, 因此在线烧录时仍用作 Flash 存储器烧录引脚 关于 OCDS 功能的详细描述, 请参考 Holtek e-link for 8-bit MCU OCDS User's Guide 文件 Holtek e-link 引脚名称 EV 芯片引脚名称 引脚说明 OCDSDA OCDSDA 片上调试串行数据 / 地址输入 / 输出 OCDSCK OCDSCK 片上调试时钟输入 VDD VDD 电源 VSS VSS 地 Rev

33 数据存储器 数据存储器是内容可更改的 8 位 RAM 内部存储器, 用来储存临时数据 结构 数据存储器分为两个部分, 第一部分是特殊功能数据存储器 这些寄存器有固定的地址且与单片机的正确操作密切相关 大多特殊功能寄存器都可在程序控制下直接读取和写入, 但有些被加以保护而不对用户开放 第二部分数据存储器是做一般用途使用, 都可在程序控制下进行读取和写入 总的数据存储器被分为两个区 大部分特殊功能数据寄存器均可在所有 Bank 被访问, 除了 EEC 寄存器只位于 Bank 1 的 40H 地址 切换不同区域可通过设置区域指针实现 单片机的数据存储器的起始地址是 00H 特殊功能数据存储器地址范围为 00H~ 7FH, 而通用数据存储器地址范围为 80H~ FFH 单片机型号容量 Banks HT66F : 80H~ FFH 0: 80H~ FFH HT66F : 80H~ FFH 数据存储器概要 00H 00H Special Purpose Data Memory 40H: EEC (Bank 1) Special Purpose Data Memory 40H:EEC (Bank 1) 7FH 80H 7FH 80H General Purpose Data Memory General Purpose Data Memory FFH Bank 0 HT66F0175 FFH Bank 0 Bank 1 HT66F0185 数据存储器结构 Rev

34 Rev H IAR0 01H MP0 02H IAR1 03H MP1 04H 05H ACC 06H PCL 07H TBLP 08H TBLH 09H TBHP 0AH STATUS 0BH 0CH 0DH 0EH 0FH 10H INTC0 11H 12H 19H PAPU 18H PAWU 1BH 1AH 1DH 1CH 1FH PA PAC 13H 14H 15H 16H 17H EEA 20H 21H 22H 28H 23H 24H 25H 26H 27H 40H 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH 50H 51H 1EH EEC Bank 0, 1 PBC PBPU PB 7FH BP LVDC LVRC EED SADOL SADC0 PCC PCPU PC SADOH 52H SMOD INTEG INTC1 INTC2 MFI0 MFI1 MFI2 TMPC WDTC TBC CTRL SADC1 SADC2 Bank 0 Bank 1 SLEDC0 SLEDC1 ACERL SIMTOC SIMC0 SIMC1 SIMD SIMA/SIMC2 SLCDC0 SLCDC1 SLCDC2 SLCDC3 IFS 2EH 38H 37H 39H 3AH 3CH 3BH 3DH 3FH 3EH TM1C0 TM1C1 TM1DL TM1DH TM1AL TM1AH TM1RPL TM1RPH 2FH 30H 31H 32H 33H 34H 35H HT66F0175 TM0C0 TM0C1 TM0DL TM0DH TM0AL TM0AH TM0RPL TM0RPH : Unused, read as 00H 36H 00H IAR0 01H MP0 02H IAR1 03H MP1 04H 05H ACC 06H PCL 07H TBLP 08H TBLH 09H TBHP 0AH STATUS 0BH 0CH 0DH 0EH 0FH 10H INTC0 11H 12H 19H PAPU 18H PAWU 1BH 1AH 1DH 1CH 1FH PA PAC 13H 14H 15H 16H 17H EEA 20H 21H 22H 28H 23H 24H 25H 26H 27H 40H 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH 50H 51H 53H 54H 1EH EEC Bank 0, 1 55H 56H PBC PBPU PB 7FH BP LVDC LVRC EED SADOL SADC0 PCC PCPU PC 57H 58H 59H 5AH SADOH 52H SMOD INTEG INTC1 INTC2 MFI0 MFI1 MFI2 TMPC WDTC TBC CTRL SADC1 SADC2 Bank 0 Bank 1 SLEDC0 USR UCR1 UCR2 TXR_RXR BRG SLEDC1 ACERL SIMTOC SIMC0 SIMC1 SIMD SIMA/SIMC2 SLCDC0 SLCDC1 SLCDC2 SLCDC3 IFS SLCDC4 PD PDC PDPU TM2C0 TM2C1 TM2DL TM2DH TM2AL TM2AH TM2RP 29H 2AH 2BH 2CH 2DH 2EH 38H 37H 39H 3AH 3CH 3BH 3DH 3FH 3EH TM1C0 TM1C1 TM1DL TM1DH TM1AL TM1AH TM1RPL TM1RPH CPC 2FH 30H 31H 32H 33H 34H 35H HT66F0185 TM0C0 TM0C1 TM0DL TM0DH TM0AL TM0AH TM0RP : Unused, read as 00H 36H 特殊功能数据存储器结构

35 特殊功能寄存器 大部分特殊功能寄存器的细节将在相关功能章节描述, 但有几个寄存器需在此章节单独描述 间接寻址寄存器 IAR0, IAR1 间接寻址寄存器 IAR0 和 IAR1 的地址虽位于数据存储区, 但其并没有实际的物理地址 间接寻址的方法准许使用间接寻址指针做数据操作, 以取代定义实际存储器地址的直接存储器寻址方法 在间接寻址寄存器 IAR0 和 IAR1 上的任何动作, 将对间接寻址指针 MP0 和 MP1 所指定的存储器地址产生对应的读 / 写操作 它们总是成对出现,IAR0 和 MP0 可以访问 Bank 0, 而 IAR1 和 MP1 可以访问任何 Bank 因为这些间接寻址寄存器不是实际存在的, 直接读取将返回 00H 的结果, 而直接写入此寄存器则不做任何操作 间接寻址指针 MP0, MP1 该系列单片机提供两个间接寻址指针, 即 MP0 和 MP1 由于这些指针在数据存储器中能像普通的寄存器一般被操作, 因此提供了一个寻址和数据追踪的有效方法 当对间接寻址寄存器进行任何操作时, 单片机指向的实际地址是由间接寻址指针所指定的地址 MP0 和 IAR0 用于访问 Bank 0, 而 MP1 和 IAR1 可通过 BP 寄存器访问所有的 Bank 直接寻址仅可以用在 Bank 0 中, 其它所有 Bank 只能使用 MP1 和 IAR1 进行间接寻址 以下例子说明如何清除一个具有 4 RAM 地址的区块, 它们已事先定义成地址 adres1 到 adres4 间接寻址程序举例 data.section data adres1 db? adres2 db? adres3 db? adres4 db? block db? code.section at 0 code org 00h start: mov a,04h ; setup size of block mov block,a mov a,offset adres1 ; Accumulator loaded with first RAM address mov mp0,a ; setup memory pointer with first RAM address loop: clr IAR0 ; clear the data at address defined by mp0 inc mp0 ; increment memory pointer sdz block ; check if last memory location has been cleared jmp loop continue: : 在上面的例子中有一点值得注意, 即并没有确定 RAM 地址 Rev

36 存储区指针 BP 对于 HT66F0185 单片机, 数据存储器被分为两个部分, 即 Bank 0 和 Bank 1 可以通过设置存储区指针 (Bank Pointer) 值来访问不同的数据存储区 BP 指针的 bit 0 用于选择数据存储区的 Bank 0 或 Bank 1 复位后, 数据存储器会初始化到 Bank 0, 但是在暂停模式下的 WDT 溢出复位, 不会改变通用数据存储器的存储区号 应该注意的是特殊功能数据存储器不受存储区的影响, 也就是说, 不论是在哪一个存储区, 都能对特殊功能寄存器进行读写操作 数据存储器的直接寻址总是访问 Bank 0, 不影响存储区指针的值 要访问 Bank 1, 则必须要使用间接寻址方式 BP 寄存器 HT66F0185 Bit Name DMBP0 R/W R/W POR 0 Bit 7~ 1 未定义, 读为 0 Bit 0 累加器 ACC DMBP0: 数据存储区选择位 0:Bank 0 1:Bank 1 对任何单片机来说, 累加器是相当重要的, 且与 ALU 所完成的运算有密切关系, 所有 ALU 得到的运算结果都会暂时存在 ACC 累加器里 若没有累加器, ALU 必须在每次进行如加法 减法和移位的运算时, 将结果写入到数据存储器, 这样会造成程序编写和时间的负担 另外数据传送也常常牵涉到累加器的临时储存功能, 例如在使用者定义的一个寄存器和另一个寄存器之间传送数据时, 由于两寄存器之间不能直接传送数据, 因此必须通过累加器来传送数据 程序计数器低字节寄存器 PCL 为了提供额外的程序控制功能, 程序计数器低字节设置在数据存储器的特殊功能区域内, 程序员可对此寄存器进行操作, 很容易的直接跳转到其它程序地址 直接给 PCL 寄存器赋值将导致程序直接跳转到程序存储器的某一地址, 然而由于寄存器只有 8 位长度, 因此只允许在本页的程序存储器范围内进行跳转, 而当使用这种运算时, 要注意会插入一个空指令周期 表格寄存器 TBLP, TBHP, TBLH 这三个特殊功能寄存器对存储在程序存储器中的表格进行操作 TBLP 和 TBHP 为表格指针, 指向表格数据存储的地址 它们的值必须在任何表格读取指令执行前加以设定, 由于它们的值可以被如 INC 或 DEC 的指令所改变, 这就提供了一种简单的方法对表格数据进行读取 表格读取数据指令执行之后, 表格数据高字节存储在 TBLH 中 其中要注意的是, 表格数据低字节会被传送到使用者指定的地址 Rev

37 状态寄存器 STATUS 这 8 位的状态寄存器由零标志位 (Z) 进位标志位 (C) 辅助进位标志位 (AC) 溢出标志位 (OV) 暂停标志位 (PDF) 和看门狗定时器溢出标志位 (TO) 组成 这些算术 / 逻辑操作和系统运行标志位是用来记录单片机的运行状态 除了 PDF 和 TO 标志外, 状态寄存器中的位像其它大部分寄存器一样可以被改变 任何数据写入到状态寄存器将不会改变 TO 或 PDF 标志位 另外, 执行不同的指令后, 与状态寄存器有关的运算可能会得到不同的结果 TO 标志位只会受系统上电 看门狗溢出或执行 CLR WDT 或 HALT 指令影响 PDF 标志位只会受执行 HALT 或 CLR WDT 指令或系统上电影响 Z OV AC 和 C 标志位通常反映最近运算的状态 C: 当加法运算的结果产生进位, 或减法运算的结果没有产生借位时, 则 C 被置位, 否则 C 被清零, 同时 C 也会被带进位的移位指令所影响 AC: 当低半字节加法运算的结果产生进位, 或高半字节减法运算的结果没有产生借位时,AC 被置位, 否则 AC 被清零 Z: 当算术或逻辑运算结果是零时,Z 被置位, 否则 Z 被清零 OV: 当运算结果高两位的进位状态异或结果为 1 时,OV 被置位, 否则 OV 被清零 PDF: 系统上电或执行 CLR WDT 指令会清零 PDF, 而执行 HALT 指令则会置位 PDF TO: 系统上电或执行 CLR WDT 或 HALT 指令会清零 TO, 而当 WDT 溢出则会置位 TO 另外, 当进入一个中断程序或执行子程序调用时, 状态寄存器不会自动压入到堆栈保存 假如状态寄存器的内容是重要的且子程序可能改变状态寄存器的话, 则需谨慎的去做正确的储存 Rev

38 STATUS 寄存器 Bit Name TO PDF OV Z AC C R/W R R R/W R/W R/W R/W POR 0 0 Bit 7~ 6 未定义, 读为 0 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 TO: 看门狗溢出标志位 0: 系统上电或执行 CLR WDT 或 HALT 指令后 1: 看门狗溢出发生 PDF: 暂停标志位 0: 系统上电或执行 CLR WDT 指令后 1: 执行 HALT 指令 为未知 OV: 溢出标志位 0: 无溢出 1: 运算结果高两位的进位状态异或结果为 1 Z: 零标志位 0: 算术或逻辑运算结果不为 0 1: 算术或逻辑运算结果为 0 AC: 辅助进位标志位 0: 无辅助进位 1: 在加法运算中低四位产生了向高四位进位, 或减法运算中低四位不发生从高四位借位 C: 进位标志位 0: 无进位 1: 如果在加法运算中结果产生了进位, 或在减法运算中结果不发生借位 C 也受循环移位指令的影响 Rev

39 EEPROM 数据存储器 该系列单片机的一个特性是内建 EEPROM 数据存储器 Electrically Erasable Programmable Read Only Memory 为电可擦可编程只读存储器, 由于其非易失的存储结构, 即使在电源掉电的情况下存储器内的数据仍然保存完好 这种存储区扩展了 ROM 空间, 对设计者来说增加了许多新的应用机会 EEPROM 可以用来存储产品编号 校准值 用户特定数据 系统配置参数或其它产品信息等 EEPROM 的数据读取和写入过程也会变的更简单 EEPROM 数据存储器结构 该系列单片机的 EEPROM 数据存储器容量最大可达 位 由于映射方式与程序存储器和数据存储器不同, 因此不能像其它类型的存储器一样寻址 使用 Bank 0 中的一个地址寄存器和一个数据寄存器以及 Bank 1 中的一个控制寄存器, 可以实现对 EEPROM 的单字节读写操作 EEPROM 寄存器 单片机型号 容量 地址 HT66F H~3FH HT66F H~7FH 有三个寄存器控制内部 EEPROM 数据存储器总的操作 地址寄存器 EEA 数据寄存器 EED 及控制寄存器 EEC EEA 和 EED 位于 Bank 0 中, 它们能像其它特殊功能寄存器一样直接被访问 EEC 位于 Bank 1 中, 不能被直接访问, 仅能通过 MP1 和 IAR1 进行间接读取或写入 由于 EEC 控制寄存器位于 Bank 1 中的 40H, 在 EEC 寄存器上的任何操作被执行前,MP1 必须先设为 40H, BP 被设为 01H 寄存器名称 EEA (HT66F0175) EEA (HT66F0185) 位 EEA5 EEA4 EEA3 EEA2 EEA1 EEA0 - EEA6 EEA5 EEA4 EEA3 EEA2 EEA1 EEA0 EED D7 D6 D5 D4 D3 D2 D1 D0 EEC WREN WR RDEN RD EEPROM 寄存器列表 EEA 寄存器 - HT66F0175 Bit Name EEA5 EEA4 EEA3 EEA2 EEA1 EEA0 R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 6 未定义, 读为 0 Bit 5~ 0 EEA5~ EEA0: 数据 EEPROM 地址 bit 5~ bit 0 Rev

40 EEA 寄存器 - HT66F0185 Bit Name EEA6 EEA5 EEA4 EEA3 EEA2 EEA1 EEA0 R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 未定义, 读为 0 Bit 6~ 0 EEA6~ EEA0: 数据 EEPROM 地址 bit 6~ bit 0 EED 寄存器 Bit Name D7 D6 D5 D4 D3 D2 D1 D0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 0 D7~ D0:EEPROM 数据 bit 7~ bit 0 EEC 寄存器 Bit Name WREN WR RDEN RD R/W R/W R/W R/W R/W POR Bit 7~ 4 未定义, 读为 0 Bit 3 Bit 2 Bit 1 Bit 0 WREN: 数据 EEPROM 写使能位 0: 除能 1: 使能此位为数据 EEPROM 写使能位, 向数据 EEPROM 写操作之前需将此位置高 将此位清零时, 则禁止向数据 EEPROM 写操作 WR:EEPROM 写控制位 0: 写周期结束 1: 写周期有效此位为数据 EEPROM 写控制位, 由应用程序将此位置高将激活写周期 写周期结束后, 硬件自动将此位清零 当 WREN 未先置高时, 此位置高无效 RDEN: 数据 EEPROM 读使能位 0: 除能 1: 使能此位为数据 EEPROM 读使能位, 向数据 EEPROM 读操作之前需将此位置高 将此位清零时, 则禁止向数据 EEPROM 读操作 RD:EEPROM 读控制位 0: 读周期结束 1: 读周期有效此位为数据 EEPROM 读控制位, 由应用程序将此位置高将激活读周期 读周期结束后, 硬件自动将此位清零 当 RDEN 未先置高时, 此位置高无效 注 : 在同一条指令中 WREN WR RDEN 和 RD 不能同时置为 1 WR 和 RD 不能同时置为 1 Rev

41 从 EEPROM 中读取数据 从 EEPROM 中读取数据,EEC 寄存器中的读使能位 RDEN 先置为高以使能读功能,EEPROM 中读取数据的地址要先放入 EEA 寄存器中 若 EEC 寄存器中的 RD 位被置高, 一个读周期将开始 若 RD 位已置为高而 RDEN 位还未被设置则不能开始读操作 若读周期结束,RD 位将自动清除为 0, 数据可以从 EED 寄存器中读取 数据在其它读或写操作执行前将一直保留在 EED 寄存器中 应用程序将轮询 RD 位以确定数据可以有效地被读取 写数据到 EEPROM 写保护 写数据至 EEPROM,EEPROM 中写入数据的地址要先放入 EEA 寄存器中, 然后将要写入的数据放入 EED 寄存器中 EEC 寄存器中的写使能位 WREN 先置为高以使能写功能, 然后立刻将 EEC 寄存器中 WR 位置为高, 此时一个内部写周期才开始 这两条指令必须连续执行 在写操作执行之前需将总中断控制位 EMI 清零, 在写周期开始后再置高 若 WR 位已置为高而 WREN 位还未被置高则不能开始写操作 由于控制 EEPROM 写周期是一个内部时钟, 与单片机的系统时钟异步, 所以数据写入 EEPROM 的时间将有所延迟 可通过轮询 EEC 寄存器中的 WR 位或判断 EEPROM 中断以侦测写周期是否完成 若写周期完成,WR 位将自动清除为 0, 通知用户数据已写入 EEPROM 因此, 应用程序将轮询 WR 位以确定写周期是否结束 防止误写入的写保护有以下几种 单片机上电后控制寄存器中的写使能位将被清除以杜绝任何写入操作 上电后 BP 将重置为 0, 这意味着数据存储区 Bank 0 被选中 由于 EEPROM 控制寄存器位于 Bank 1 中, 这增加了对写操作的保护措施 在正常程序操作中确保控制寄存器中的写使能位被清除将能防止不正确的写操作 EEPROM 中断 EEPROM 写周期结束后将产生 EEPROM 写中断, 需先通过设置相关中断寄存器的 DEE 位使能 EEPROM 中断 由于 EEPROM 中断包含在多功能中断中, 相应的多功能中断使能位需被设置 当 EEPROM 写周期结束,DEF 请求标志位及其相关多功能中断请求标志位将被置位 若总中断 EEPROM 中断和多功能中断使能且堆栈未满的情况下将跳转到相应的多功能中断向量中执行 当中断被响应, 只有多功能中断标志位将自动复位, 而 EEPROM 中断标志将通过应用程序手动复位 编程注意事项 必须注意的是数据不会无意写入 EEPROM 在没有写动作时写使能位被正常清零可以增强保护功能 BP 指针也可以正常清零以阻止进入 EEPROM 控制寄存器存在的 Bank 1 尽管没有必要, 写一个简单的读回程序以检查新写入的数据是否正确还是应该考虑的 当 WREN 位被置为高以后, 写数据位 WR 必须立刻置为高, 以确保写循环正确执行 总中断位 EMI 在写循环开始前应当被清零, 写循环开始后再将其使能 注意, 单片机不应在 EEPROM 读或写操作完全完成之前进入空闲或休眠模式, 否则 EEPROM 读或写操作将失败 Rev

42 程序举例 从 EEPROM 中读取数据 轮询法 MOV A, EEPROM_ADRES MOV EEA, A MOV A, 040H MOV MP1, A MOV A, 01H MOV BP, A SET IAR1.1 SET IAR1.0 BACK: SZ IAR1.0 JMP BACK CLR IAR1 CLR BP MOV A, EED MOV READ_DATA, A ; user defined address ; setup memory pointer MP1 ; MP1 points to EEC register ; setup Bank Pointer BP ; set RDEN bit, enable read operations ; start Read Cycle - set RD bit ; check for read cycle end ; disable EEPROM write ; move read data to register 写数据到 EEPROM 轮询法 MOV A, EEPROM_ADRES MOV EEA, A MOV A, EEPROM_DATA MOV EED, A MOV A, 040H MOV MP1, A MOV A, 01H MOV BP, A CLR EMI SET IAR1.3 SET IAR1.2 SET EMI BACK: SZ IAR1.2 JMP BACK CLR IAR1 CLR BP ; user defined address ; user defined data ; setup memory pointer MP1 ; MP1 points to EEC register ; setup Bank Pointer BP ; set WREN bit, enable write operations ; start Write Cycle - set WR bit ; after set WREN bit ; check for write cycle end ; disable EEPROM write Rev

43 振荡器 不同的振荡器选择可以让使用者在不同的应用需求中实现更大范围的功能 振荡器的灵活性使得在速度和功耗方面可以达到最优化 振荡器选择和操作是通过配置选项和相关控制寄存器共同完成的 振荡器概述 振荡器除了作为系统时钟源, 还作为看门狗定时器和时基中断的时钟源 外部 振荡器需要一些外围器件, 而集成的内部振荡器不需要任何外围器件 它们提 供的高速和低速系统振荡器具有较宽的频率范围 所有振荡器选择通过配置选 项选择 较高频率的振荡器提供更高的性能, 但要求有更高的功率, 反之亦然 动态切换快慢系统时钟的能力使单片机具有灵活而优化的性能 / 功耗比, 此特 性对功耗敏感的应用领域尤为重要 类型 名称 频率 引脚 外部高速晶振 HXT 400kHz~ 20MHz OSC1/OSC2 内部高速 RC HIRC 8/12/16MHz - 外部低速晶振 LXT kHz XT1/XT2 内部低速 RC LIRC 32kHz - 振荡器类型 系统时钟配置 该系列单片机有四个系统振荡器, 包括两个高速振荡器和两个低速振荡器 高速振荡器有外部晶体 / 陶瓷振荡器 HXT 和内部 8/12/16MHz RC 振荡器 HIRC, 低速振荡器有内部 32kHz RC 振荡器 LIRC 和外部 kHz 晶振 LXT 使用高速或低速振荡器作为系统时钟的选择是通过设置 SMOD 寄存器中的 HLCLK 位及 CKS2~ CKS0 位决定的, 系统时钟可动态选择 高速或低速振荡器的实际时钟源经由配置选项选择 低速或高速系统时钟频率由 SMOD 寄存器的 HLCLK 位及 CKS2~ CKS0 位决定的 请注意, 两个振荡器必须做出选择, 即一个高速和一个低速振荡器 High Speed Oscillator f H f H/2 HXT f H/4 f H/8 HIRC f H Prescaler f H/16 f H/32 f SYS f H/64 Low Speed Oscillator LXT High Speed Oscillator Configuration Option HLCLK, CKS2~CKS0 Fast Wake-up from IDLE or SLEEP Mode Control (for HXT only ) f SUB f SUB LIRC Low Speed Oscillator Configuration Option 系统时钟配置 Rev

44 外部晶体 / 陶瓷振荡器 HXT 外部晶体 / 陶瓷系统振荡器是一个高频振荡器, 经由配置选项选择 对于晶体振荡器, 只要简单地将晶体连接至 OSC1 和 OSC2, 则会产生振荡所需的相移及反馈, 而不需其它外部电容 为保证某些低频率的晶体振荡和陶瓷谐振器的振荡频率更精准, 建议连接两个小容量电容 C1 和 C2 到 VSS, 具体数值与客户选择的晶体 / 陶瓷晶振有关 为了确保振荡器的稳定性及减少噪声和串扰的影响, 晶体振荡器及其相关的电阻和电容以及它们之间的连线都应尽可能的接近单片机 + 4 F 5+ 4 B 1 JAH = I? =J H E + EH?K EJ E J A H =?EH?K EJI JA 4 FEI H = O HA J G KHA + = =HAHA G ) JD K C D ID J M F E D= I L A = H=IEJE? F =? = F = EJ=??A B= H % F. 晶体 / 陶瓷振荡器 HXT 振荡器 C1 和 C2 值 晶体频率 C1 C2 12MHz 0pF 0pF 8MHz 0pF 0pF 4MHz 0pF 0pF 1MHz 100pF 100pF 注 :C1 和 C2 数值仅作参考用 晶体振荡器电容推荐值 内部高速 RC 振荡器 HIRC 内部 RC 振荡器是一个集成的系统振荡器, 不需其它外部器件 内部 RC 振荡器具有三种固定的频率 :8MHz,12MHz,16MHz 芯片在制造时进行调整且内部含有频率补偿电路, 使得振荡频率因电源电压 温度以及芯片制成工艺不同的影响减至最低程度 在电源电压为 3V 或 5V 及温度为 25 的条件下, 8MHz,12MHz,16MHz 这三个固定频率的容差为 2% 如果选择了该内部时钟, 无需额外的引脚 ;I/O 引脚可以作为通用 I/O 引脚使用 Rev

45 外部 kHz 晶体振荡器 LXT 外部 kHz 晶体系统振荡器是一个低频振荡器, 经由配置选项选择 时钟频率固定为 kHz, 此时 XT1 和 XT2 间引脚必须连接 kHz 的晶体振荡器 需要外部电阻和电容连接到 kHz 晶振以帮助起振 对于那些要求精确频率的场合中, 可能需要这些元件来对由制程产生的误差提供频率补偿 在系统上电期间,LXT 振荡器启动需要一定的延时 当系统进入空闲 / 休眠模式, 系统时钟关闭以降低功耗 然而在某些应用, 比如空闲 / 休眠模式下要保持内部定时器功能, 必须提供额外的时钟, 且与系统时钟无关 然而, 对于一些晶体, 为了保证系统频率的启动与精度要求, 需要外接两个小容量电容 C1 和 C2, 具体数值与客户选择的晶体规格有关 外部并联的反馈电阻 RP, 是必需的 一些配置选项决定是否 XT1/XT2 脚是用于 LXT 振荡器还是作为普通 I/O 口使用 若 LXT 振荡器未被用于任何时钟源,XT1/XT2 脚能被用作一般 I/O 口或其它共用功能使用 若 LXT 振荡器被用于一些时钟源,32.768kHz 晶体应被连接至 XT1/XT2 脚 为了确保振荡器的稳定性及减少噪声和串扰的影响, 晶体振荡器及其相关的电阻和电容以及它们之间的连线都应尽可能的接近单片机 +! % $& 0 4 F : 6 1 JAH = I? = E J H + EH?K EJ 1 JAH = 4+ I?E = J H + : 6 6 E J A H =?EH?K EJI JA 4 F + = = HHAG A K HA ) JD K C D ID J M F D= E IL A= F = H = EJE? I?= F = EJ=??A B = H % F. 外部 LXT 振荡器 LXT 振荡器 C1 和 C2 值 晶振频率 C1 C kHz 10pF 10pF 注 :1 C1 和 C2 数值仅作参考用 2 R P 的建议值为 5MΩ~ 10MΩ kHz 振荡器电容推荐值 Rev

46 LXT 振荡器低功耗功能 LXT 振荡器可以工作在快速启动模式或低功耗模式, 可通过设置 TBC 寄存器中的 LXTLP 位进行模式选择 LXTLP LXT 工作模式 0 快速启动 1 低功耗 系统上电时会清零 LXTLP 位来快速启动 LXT 振荡器 在快速启动模式,LXT 振荡器将起振并快速稳定下来 LXT 振荡器完全起振后, 可以通过设置 LXTLP 位为高进入低功耗模式 振荡器可以继续运行, 其间耗电将少于快速启动模式 在功耗敏感的应用领域如电池应用方面, 功耗必须限制为一个最小值 为了降低功耗, 建议系统上电 2 秒后, 在应用程序中将 LXTLP 位设为 1 应注意的是, 无论 LXTLP 位是什么值,LXT 振荡器会一直运作, 不同的只是在低功耗模式时启动时间更长 内部 32kHz 振荡器 LIRC 辅助振荡器 内部 32kHz 系统振荡器是一个低频振荡器, 经由配置选项选择 它是一个完全集成 RC 振荡器, 它在 5V 电压下运行的典型频率值为 32kHz 且无需外部元件 芯片在制造时进行调整且内部含有频率补偿电路, 使得振荡器因电源电压 温度及芯片制成工艺不同的影响减至最低 因此, 内部 32kHz 振荡器频率在 25 温度 5V 电压下的精度保持在 10% 以内 低速振荡器除了提供一个系统时钟源外, 也用来为看门狗定时器和时基中断提供时钟来源 Rev

47 工作模式和系统时钟 系统时钟 现今的应用要求单片机具有较高的性能及尽可能低的功耗, 这种矛盾的要求在便携式电池供电的应用领域尤为明显 高性能所需要的高速时钟将增加功耗, 反之亦然 该系列单片机提供高 低速两种时钟源, 它们之间可以动态切换, 用户可通过优化单片机操作来获得最佳性能 / 功耗比 单片机为 CPU 和外围功能操作提供了多种不同的时钟源 用户使用配置选项和寄存器编程可获取多种时钟, 进而使系统时钟获取最大的应用性能 主系统时钟可来自高频时钟源 f H 或低频时钟源 f SUB, 通过 SMOD 寄存器中的 HLCLK 位及 CKS2~ CKS0 位进行选择 高频时钟来自 HXT 或 HIRC 振荡器, 经由配置选项选择 低频系统时钟源来自内部时钟 f SUB, 低频时钟来自 LXT 或 LIRC 振荡器, 经由配置选项选择 其它系统时钟还有高速系统振荡器的分频 f H /2~ f H /64 另外两个内部时钟用于外围电路, 次时钟源 f SUB 和时基时钟 f TBC 这两个时钟源来自 LXT 或 LIRC 振荡器, 通过配置选项选择 快速唤醒发生后,f SUB 为单片机提供一个次时钟 High Speed Oscillator f H f H/2 HXT f H/4 f H/8 HIRC f H Prescaler f H/16 f H/32 f SYS f H/64 Low Speed Oscillator LXT High Speed Oscillator Configuration Option HLCLK, CKS2~CKS0 Fast Wake-up from IDLE or SLEEP Mode Control (for HXT only ) f SUB f SUB LIRC f SUB WDT Low Speed Oscillator Configuration Option f SUB IDLEN f TBC f SYS/4 f TB Time Base f TBC TBCK 系统时钟选项注 : 当系统时钟源 f SYS 由 f H 到 f SUB 转换时, 高速振荡器将停止以节省耗电 因此, 没有为外围电路提供 f H ~ f H /64 的频率 Rev

48 系统工作模式 单片机有 6 种不同的工作模式, 每种有它自身的特性, 根据应用中不同的性能和功耗要求可选择不同的工作模式 单片机正常工作有两种模式 : 正常模式和低速模式 剩余的 4 种工作模式 : 休眠模式 0 休眠方式 1 空闲模式 0 和空闲模式 1 用于单片机 CPU 关闭时以节省耗电 正常模式 说明工作模式 CPU f SYS f SUB f TBC 正常模式 On f H ~ f H /64 On On 低速模式 On f SUB On On 空闲模式 0 Off Off On On 空闲模式 1 Off On On On 休眠模式 0 Off Off Off Off 休眠模式 1 Off Off On Off 顾名思义, 这是主要的工作模式之一, 单片机的所有功能均可在此模式中实现且系统时钟由一个高速振荡器提供 该模式下单片机正常工作的时钟源来自 HXT 或 HIRC 振荡器 高速振荡器频率可被分为 1~ 64 的不等比率, 实际的比率由 SMOD 寄存器中的 CKS2~ CKS0 位及 HLCLK 位选择的 单片机使用高速振荡器分频作为系统时钟可减少工作电流 低速模式此模式的系统时钟虽为较低速时钟源, 但单片机仍能正常工作 该低速时钟源可来自 LXT 或 LIRC 振荡器 单片机在此模式中运行所耗工作电流较低 在低速模式下,f H 关闭 休眠模式 0 在 HALT 指令执行后且 SMOD 寄存器中 IDLEN 位为低时, 系统进入休眠模式 0 在休眠模式 0 中,CPU 及 f SUB 停止运行, 看门狗定时器功能除能 在该模式中 LVDEN 位需置为 0, 否则将不能进入休眠模式 0 中 休眠模式 1 在 HALT 指令执行后且 SMOD 寄存器中 IDLEN 位为低时, 系统进入休眠模式 1 在休眠模式 1 中,CPU 停止运行 然而若看门狗定时器功能使能,f SUB 继续运行 空闲模式 0 执行 HALT 指令后且 SMOD 寄存器中 IDLEN 位为高,CTRL 寄存器中 FSYSON 位为低时, 系统进入空闲模式 0 在空闲模式 0 中,CPU 停止, 但一些外围功能如看门狗定时器 TMs 将继续工作 在空闲模式 0 中, 系统振荡器停止 空闲模式 1 执行 HALT 指令后且 SMOD 寄存器中 IDLEN 位为高,CTRL 寄存器中 FSYSON 位为高时, 系统进入空闲模式 1 在空闲模式 1 中,CPU 停止, 但会提供一个时钟源给一些外围功能如看门狗定时器 TMs 在空闲模式 1 中, 系统振荡器继续运行, 该系统振荡器可以为高速或低速系统振荡器 Rev

49 控制寄存器 寄存器 SMOD 用于控制单片机内部时钟 SMOD 寄存器 Bit Name CKS2 CKS1 CKS0 FSTEN LTO HTO IDLEN HLCLK R/W R/W R/W R/W R/W R R R/W R/W POR Bit 7~ 5 CKS2~ CKS0: 当 HLCLK 为 0 时系统时钟选择位 000:f SUB 001:f SUB 010:f H /64 011:f H /32 100:f H /16 101:f H /8 110:f H /4 111:f H /2 这三位用于选择系统时钟源 除了 LXT 或 LIRC 振荡器提供的系统时钟源外, 也可使用高频振荡器的分频作为系统时钟 Bit 4 FSTEN: 快速唤醒控制位 ( 仅用于 HXT) 0: 除能 1: 使能此位为快速唤醒控制位, 用于决定单片机被唤醒后 f SUB 是否开始工作 当此位为高且 f SUB 时钟可用, 该时钟源用作临时系统时钟以提供快速唤醒时间 Bit 3 LTO: 低速振荡器就绪标志位 0: 未就绪 1: 就绪此位为低速系统振荡器就绪标志位, 用于表明低速系统振荡器在系统上电复位或经唤醒后何时稳定下来 当系统处于 SLEEP0 模式时, 该标志为低 若系统时钟来自 LXT 振荡器, 系统唤醒后该位转换为高需 128 个时钟周期 ; 若系统时钟来自 LIRC 振荡器, 该位转换为高需 1~ 2 个时钟周期 Bit 2 HTO: 高速振荡器就绪标志位 0: 未就绪 1: 就绪此位为高速系统振荡器就绪标志位, 用于表明高速系统振荡器何时稳定下来 此标志在系统上电后经硬件清零, 高速系统振荡器稳定后变为高电平 因此, 此位在单片机上电后由应用程序读取的总为 1 该标志由休眠模式或空闲模式 0 中唤醒后会处于低电平状态, 若使用 HXT 振荡器, 该位将在 512 个时钟周期后变为高电平状态, 若使用 HIRC 振荡器则只需 15~ 16 个时钟周期即可 Bit 1 IDLEN: 空闲模式控制位 0: 除能 1: 使能此位为空闲模式控制位, 用于决定 HALT 指令执行后发生的动作 若此位为高, 当指令 HALT 执行后, 单片机进入空闲模式 若 FSYSON 位为高, 在空闲模式 1 中 CPU 停止运行, 系统时钟将继续工作以保持外围功能继续工作 ; 若 FSYSON 为低, 在空闲模式 0 中 CPU 和系统时钟都将停止运行 若此位为低, 单片机将在 HALT 指令执行后进入休眠模式 Bit 0 HLCLK: 系统时钟选择位 0:f H /2~ f H /64 或 f SUB 1:f H 此位用于选择 f H 或 f H /2~ f H /64 还是 f SUB 作为系统时钟 该位为高时选择 f H 作为系统时钟, 为低时则选择 f H /2~ f H /64 或 f SUB 作为系统时钟 当系统时钟由 f H 时钟向 f SUB 时钟转换时,f H 将自动关闭以降低功耗 Rev

50 CTRL 寄存器 快速唤醒 系统振荡器 Bit Name FSYSON LVRF LRF WRF R/W R/W R/W R/W R/W POR 为未知 Bit 7 FSYSON:IDLE 模式时,f SYS 控制位 0: 除能 1: 使能该位用于控制系统时钟在空闲模式中是否开启, 如果该位置为 0, 空闲模式中系统时钟关闭, 如果该位置为 1, 空闲模式中系统时钟开启 Bit 6~ 3 未定义, 读为 0 Bit 2 LVRF:LVR 复位标志位详见别处的描述 Bit 1 LRF:LVR 控制寄存器软件复位标志位详见别处的描述 Bit 0 WRF:WDT 控制寄存器软件复位标志位详见别处的描述 单片机进入休眠模式或空闲模式 0 后, 系统时钟将停止以降低功耗 然而单片机再次唤醒, 原来的系统时钟重新起振 稳定且恢复正常工作需要一定的时间 为确保单片机能够尽快的开始工作, 系统提供了一个快速唤醒功能 需提供一个临时时钟源 f SUB 先驱动系统直至原系统振荡器稳定, 这个临时时钟可来自 LXT 或 LIRC 振荡器 快速启动功能的时钟源为 f SUB, 该功能仅在休眠模式 1 和空闲模式 0 中有效 当单片机由休眠模式 0 唤醒时, 因 f SUB 已停止, 故快速唤醒功能无效 快速唤醒功能使能 / 除能由 SMOD 寄存器中 FSTEN 位控制的 若 HXT 振荡器作为正常模式的系统时钟, 且快速唤醒功能使能, 系统唤醒将需 1~ 2 个 t SUB 时钟周期 系统开始在 f SUB 时钟源下运行直至 512 个 HXT 时钟周期后 HTO 标志转换为高, 系统将切换到 HXT 振荡器运行 若系统振荡器选用 HIRC, 将系统从休眠模式或空闲模式 0 中唤醒需 15~ 16 个时钟周期 ; 若选用 LIRC, 则需 1~ 2 个周期 快速唤醒位 FSTEN 在这些情况下不受影响 FSTEN 位 唤醒时间 ( 休眠模式 0) 唤醒时间 ( 休眠模式 1) 唤醒时间 ( 空闲模式 0) 唤醒时间 ( 空闲模式 1) 个 HXT 周期 128 个 HXT 周期 1~ 2 个 HXT 周期 HXT 1~ 2 个 f SUB 周期 个 HXT 周期 ( 系统在 f SUB 下运行 512 个 HXT 1~ 2 个 HXT 周期 周期后切换到 HXT 振荡器运行 ) HIRC 15~ 16 个 HIRC 周期 15~ 16 个 HIRC 周期 1~ 2 个 HIRC 周期 LIRC 1~ 2 个 LIRC 周期 1~ 2 个 LIRC 周期 1~ 2 个 LIRC 周期 LXT 128 个 HXT 周期 1~ 2 个 LXT 周期 1~ 2 个 LXT 周期 : 无关 唤醒时间 注 : 若看门狗定时器除能, 意味着 LXT 和 LIRC 都关闭, 当单片机由休眠模式 0 中唤醒时快速 唤醒功能不可用 Rev

51 工作模式切换 单片机可在各个工作模式间自由切换, 使得用户可根据所需选择最佳的性能 / 功耗比 用此方式, 对单片机工作的性能要求不高的情况下, 可使用较低频时钟以减少工作电流, 在便携式应用上延长电池的使用寿命 简单来说, 正常模式和低速模式间的切换仅需设置 SMOD 寄存器中的 HLCLK 位及 CKS2~ CKS0 位即可实现, 而正常模式 / 低速模式与休眠模式 / 空闲模式间的切换经由 HALT 指令实现 当 HALT 指令执行后, 单片机是否进入空闲模式或休眠模式由 SMOD 寄存器中的 IDLEN 位和 CTRL 寄存器中的 FSYSON 位决定的 当 HLCLK 位变为低电平时, 时钟源将由高速时钟源 f H 转换成时钟源 f H /2 ~ f H /64 或 f SUB 若时钟源来自 f SUB, 高速时钟源将停止运行以节省耗电 此时须注意, f H /16 和 f H /64 内部时钟源也将停止运行, 由此会影响到如 TMs 等内部功能的工作 所附流程图显示了单片机在不同工作模式间切换时的变化 NORMAL f SYS =f H ~f H /64 f H on CPU run f SYS on f SUB on f TBC on SLOW f SYS =f SUB f SUB on CPU run f SYS on f H off f TBC on SLEEP0 HALT instruction executed CPU stop IDLEN=0 f SYS off f SUB off f TBC off WDT & LVD off IDLE0 HALT instruction executed CPU stop IDLEN=1 FSYSON=0 f SYS off f SUB on f TBC on SLEEP1 HALT instruction executed CPU stop IDLEN=0 f SYS off f SUB on f TBC off WDT on IDLE1 HALT instruction executed CPU stop IDLEN=1 FSYSON=1 f SYS on f SUB on f TBC on Rev

52 正常模式切换到低速模式 系统运行在正常模式时使用高速系统振荡器, 因此较为耗电 可通过设置 SMOD 寄存器中的 HLCLK 位为 0 及 CKS2~ CKS0 位为 000 或 001 使系统时钟切换至运行在低速模式下 此时将使用低速系统振荡器以节省耗电 用户可在对性能要求不高的操作中使用此方法以减少耗电 低速模式的时钟源来自 LXT 或 LIRC 振荡器, 且由配置选项决定 因此要求这个振荡器在所有模式切换动作发生前稳定下来 该动作由 SMOD 寄存器中 LTO 位控制 NORMAL Mode CKS2~CKS0 = 00xB & HLCLK = 0 SLOW Mode WDT and LVD are all off IDLEN=0 HALT instruction is executed SLEEP0 Mode WDT is on IDLEN=0 HALT instruction is executed SLEEP1 Mode IDLEN=1, FSYSON=0 HALT instruction is executed IDLE0 Mode IDLEN=1, FSYSON=1 HALT instruction is executed IDLE1 Mode Rev

53 低速模式切换到正常模式 在低速模式系统使用 LXT 或 LIRC 低速振荡器 切换到使用高速系统时钟振荡器的正常模式需设置 HLCLK 位为 1, 也可设置 HLCLK 位为 0 但 CKS2~ CKS0 需设为 或 111 高频时钟需要一定的稳定时间, 取决于使用哪个高速系统振荡器 SLOW Mode CKS2~CKS0? 000B or 001B as HLCLK = 0 or HLCLK = 1 WDT and LVD are all off IDLEN=0 HALT instruction is executed SLEEP0 Mode NORMAL Mode WDT is on IDLEN=0 HALT instruction is executed SLEEP1 Mode IDLEN=1, FSYSON=0 HALT instruction is executed IDLE0 Mode IDLEN=1, FSYSON=1 HALT instruction is executed IDLE1 Mode 进入休眠模式 0 进入休眠模式 0 的方法仅有一种 应用程序中执行 HALT 指令前需设置寄存器 SMOD 中 IDLEN 位为 0 且 WDT 和 LVD 除能 在上述条件下执行该指令后, 将发生的情况如下 : 系统时钟 WDT 时钟和时基时钟停止运行, 应用程序停止在 HALT 指令处 数据存储器中的内容和寄存器将保持当前值 若 WDT 时钟源来自 LXT 或 LIRC 振荡器,WDT 将被清零并停止运行 输入 / 输出口将保持当前值 状态寄存器中暂停标志 PDF 将被置起, 看门狗溢出标志 TO 将被清除 Rev

54 进入休眠模式 1 进入休眠模式 1 的方法仅有一种 应用程序中执行 HALT 指令前需设置寄存器 SMOD 中 IDLEN 位为 0 且 WDT 使能 在上述条件下执行该指令后, 将发生的情况如下 : 系统时钟和时基时钟停止运行, 应用程序停止在 HALT 指令处 WDT 继续运行, 其时钟源来自 f SUB 数据存储器中的内容和寄存器将保持当前值 若 WDT 使能,WDT 将被清零并重新开始计数 输入 / 输出口将保持当前值 状态寄存器中暂停标志 PDF 将被置起, 看门狗溢出标志 TO 将被清除 进入空闲模式 0 进入空闲模式 0 的方法仅有一种 应用程序中执行 HALT 指令前需设置寄存器 SMOD 中 IDLEN 位为 1 且 CTRL 寄存器中的 FSYSON 位为 0 在上述条件下执行该指令后, 将发生的情况如下 : 系统时钟停止运行, 应用程序停止在 HALT 指令处, 时钟 f TBC 和 f SUB 将继续运行 数据存储器中的内容和寄存器将保持当前值 若 WDT 使能,WDT 将被清零并重新开始计数 输入 / 输出口将保持当前值 状态寄存器中暂停标志 PDF 将被置起, 看门狗溢出标志 TO 将被清除 进入空闲模式 1 进入空闲模式 1 的方法仅有一种 应用程序中执行 HALT 指令前需设置寄存器 SMOD 中 IDLEN 位为 1 且 CTRL 寄存器中的 FSYSON 位为 1 在上述条件下执行该指令后, 将发生的情况如下 : 系统时钟 时钟 f TBC 和 f SUB 开启, 应用程序停止在 HALT 指令处 数据存储器中的内容和寄存器将保持当前值 若 WDT 使能,WDT 将被清零并重新开始计数 输入 / 输出口将保持当前值 状态寄存器中暂停标志 PDF 将被置起, 看门狗溢出标志 TO 将被清除 静态电流的注意事项 由于单片机进入休眠或空闲模式的主要原因是将 MCU 的电流降低到尽可能低, 可能到只有几个微安的级别 ( 空闲模式 1 除外 ), 所以如果要将电路的电流降到最低, 电路设计者还应有其它的考虑 应该特别注意的是单片机的输入 / 输出引脚 所有高阻抗输入脚都必须连接到固定的高或低电平, 因为引脚浮空会造成内部振荡并导致耗电增加 这些引脚也必须设为输出或带有上拉电阻的输入 另外还需注意单片机设为输出的 I/O 引脚上的负载 应将它们设置在有最小拉电流的状态或将它们和其它的 CMOS 输入一样接到没有拉电流的外部电路上 同时要注意的是, 若使能 LIRC 振荡器, 需要额外的静态电流 在空闲模式 1 中, 系统时钟开启 若系统时钟来自高速系统振荡器, 额外的静态电流也可能会有几百微安 Rev

55 唤醒 系统进入休眠或空闲模式之后, 可以通过以下几种方式唤醒 : PA 口下降沿 系统中断 WDT 溢出 单片机执行 HALT 指令, 系统将进入暂停模式,PDF 将被置位 ; 系统上电或执行清除看门狗的指令,PDF 将被清零 看门狗计数器溢出将会置位 TO 标志并唤醒系统, 这种复位会重置程序计数器和堆栈指针, 其它标志保持原有状态 PA 口中的每个引脚都可以通过 PAWU 寄存器使能下降沿唤醒功能 PA 端口唤醒后, 程序将在 HALT 指令后继续执行 如果系统是通过中断唤醒, 则有两种可能发生 第一种情况是 : 相关中断除能或是中断使能且堆栈已满, 则程序会在 HALT 指令之后继续执行 这种情况下, 唤醒系统的中断会等到相关中断使能或有堆栈层可以使用之后才执行 第二种情况是 : 相关中断使能且堆栈未满, 则中断可以马上执行 如果在进入休眠或空闲模式之前中断标志位已经被设置为 1, 则相关中断的唤醒功能将无效 编程注意事项 高速振荡器和低速振荡器使用相同的 SST 计数器 例如, 若系统从休眠模式 0 中唤醒,HIRC 和 LXT 振荡器都需从关闭状态快速启动 HIRC 振荡器结束其 SST 周期后,LXT 振荡器才开始使用 SST 计数器 若单片机从休眠模式 0 唤醒后进入正常模式, 高速系统振荡器需要一个 SST 周期 在 HTO 为 1 后, 单片机开始执行首条指令 此时, 若 f SUB 时钟来源于 LXT 振荡器,LXT 振荡器可能不是稳定的, 上电状态可能会发生类似情况, 首条指令执行时 LXT 振荡器还未就绪 若单片机从休眠模式 1 唤醒后进入正常模式, 系统时钟源来自 HXT 振荡器且 FSTEN 为 1, 唤醒后, 系统时钟可切换至 LIRC 振荡器 一些外围功能, 如 WDT 和 TMs, 采用系统时钟 f SYS 时, 在系统时钟源由 f H 切换至 f SUB 时, 以上这些功能的时钟源也要随之改变 当 WDT 时钟源选择为 f SUB 时,f SUB 和 f S 的开启或关闭由 WDT 是否使能决定的 Rev

56 看门狗定时器 看门狗定时器的功能在于防止如电磁的干扰等外部不可控制事件, 所造成的程序不正常动作或跳转到未知的地址 看门狗定时器时钟源 WDT 定时器时钟源来自于内部时钟 f SUB, 由 LIRC 或 LXT 振荡器提供 LXT 振荡器由外部 kHz 晶振提供 电压为 5V 时内部振荡器 LIRC 的周期大约为 32kHz 需要注意的是, 这个特殊的内部时钟周期随 V DD 温度和制成的不同而变化 看门狗定时器的时钟源可分频为 2 8 ~ 2 18 以提供更大的溢出周期, 分频比由 WDTC 寄存器中的 WS2~ WS0 位来决定 看门狗定时器控制寄存器 WDTC 寄存器用于控制 WDT 功能的使能 / 除能及选择溢出周期 这个寄存器与看门狗定时器的所有操作相关 WDTC 寄存器 Bit Name WE4 WE3 WE2 WE1 WE0 WS2 WS1 WS0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 3 Bit 2~ 0 WE4~ WE0:WDT 使能控制位 10101: 除能 01010: 使能其它值 :MCU 复位若因外部环境噪声使这些位发生改变, 单片机将复位 复位动作发生在 2~ 3 个 LIRC 时钟周期后, 且 CTRL 寄存器的 WRF 位将置为 1 WS2~ WS0:WDT 溢出周期选择位 000:2 8 /f SUB 001:2 10 /f SUB 010:2 12 /f SUB 011:2 14 /f SUB 100:2 15 /f SUB 101:2 16 /f SUB 110:2 17 /f SUB 111:2 18 /f SUB 这三位控制 WDT 时钟源的分频比, 从而实现对 WDT 溢出周期的控制 CTRL 寄存器 Bit Name FSYSON LVRF LRF WRF R/W R/W R/W R/W R/W POR 为未知 Bit 7 FSYSON:IDLE 模式时,f SYS 控制位 详见别处的描述 Bit 6~ 3 未定义, 读为 0 Rev

57 Bit 2 Bit 1 Bit 0 LVRF:LVR 复位标志位详见别处的描述 LRF:LVR 控制寄存器软件复位标志位详见别处的描述 WRF:WDT 控制寄存器软件复位标志位 0: 未发生 1: 发生 WDT 控制寄存器复位时, 该位被置为 1, 且通过应用程序清除 注意, 该位只能由应用程序清零 看门狗定时器操作 当 WDT 溢出时, 看门狗定时器产生一个芯片复位的动作 这也就意味着正常工作期间, 用户需在应用程序中看门狗溢出前有策略地清看门狗定时器以防止其产生复位, 可使用清除看门狗指令实现 无论什么原因, 程序失常跳转到一个未知的地址或进入一个死循环, 这些清除指令都不能被正确执行, 此种情况下, 看门狗将溢出以使单片机复位 WDTC 寄存器中的 WE4~ WE0 位可提供使能控制以及控制看门狗定时器复位操作 如果 WE4~ WE0 设置为 10101B, 则 WDT 除能 ; 如果 WE4~ WE0 设置为 01010B, 则 WDT 使能 如果 WE4~ WE0 设置为除 10101B 和 01010B 以外的其它任意值, 则经过 2~ 3 个 f LIRC 时钟周期后单片机复位 上电后这些位初始化为 01010B WE4~ WE0 位 WDT 功能 10101B 除能 01010B 使能其它值 MCU 复位看门狗定时器使能 / 除能控制程序正常运行时,WDT 溢出将导致芯片复位, 并置位状态标志位 TO 若系统处于休眠或空闲模式, 当 WDT 发生溢出时, 状态寄存器中的 TO 应置位, 仅 PC 和堆栈指针复位 有三种方法可以用来清除 WDT 的内容 第一种是 WDT 复位, 即将 WE4~ WE0 位设置成除了 01010B 和 10101B 外的任意值 ; 第二种是通过软件清除指令, 而第三种是通过 HALT 指令 该系列单片机只使用一条清看门狗指令 CLR WDT 因此只要执行 CLR WDT 便清除 WDT 当设置分频比为 2 18 时, 溢出周期最大 例如, 时钟源为 32kHz LIRC 振荡器, 分频比为 2 18 时最大溢出周期约 8s, 分频比为 2 8 时最小溢出周期约 7.8ms WDTC Register WE4~WE0 bits Reset MCU HALT Instruction CLR WDT Instruction CLR f SUB/2 8 f SUB 8-stage Divider WDT Prescaler WS2~WS0 (f SUB/2 8 ~ f SUB/2 18 ) 看门狗定时器 8-to-1 MUX WDT Time-out (2 8 /f SUB ~ 2 18 /f SUB) Rev

58 复位和初始化 复位功能 复位功能是任何单片机中基本的部分, 使得单片机可以设定一些与外部参数无关的先置条件 最重要的复位条件是在单片机首次上电以后, 经过短暂的延迟, 内部硬件电路使得单片机处于预期的稳定状态并开始执行第一条程序指令 上电复位以后, 在程序执行之前, 部分重要的内部寄存器将会被设定为预先设定的状态 程序计数器就是其中之一, 它会被清除为零, 使得单片机从最低的程序存储器地址开始执行程序 除上电复位以外, 另一种复位为低电压复位即 LVR 复位, 在电源供应电压低于 LVR 设定值时, 系统会产生 LVR 复位 另一种复位为看门狗溢出单片机复位 不同方式的复位操作会对寄存器产生不同的影响 包括内部和外部事件触发复位, 单片机共有四种复位方式 : 上电复位这是最基本且不可避免的复位, 发生在单片机上电后 除了保证程序存储器从开始地址执行, 上电复位也使得其它寄存器被设定在预设条件 所有的输入 / 输出端口控制寄存器在上电复位时会保持高电平, 以确保上电后所有引脚被设定为输入状态 V DD Power-on Reset t RSTD SST Time-out 注 :t RSTD 为上电延迟时间, 典型值为 50ms 上电复位时序图 低电压复位 LVR 单片机具有低电压复位电路, 用来监测它的电源电压 低电压复位功能总是使能于特定的电压值,V LVR 例如在更换电池的情况下, 单片机供应的电压可能会落在 0.9V~ V LVR 之间, 这时 LVR 将会自动复位单片机, 并且寄存器 CTRL 中的 LVRF 位将被自动置位为 1 LVR 包含以下的规格 : 有效的 LVR 信号, 即在 0.9V~ V LVR 的低电压状态的时间, 必须超过 LVD/LVR 电气特性中的 t LVR 参数的值 如果低电压存在不超过 t LVR 参数的值, 则 LVR 将会忽略它且不会执行复位功能 实际的 V LVR 参数值可通过 LVRC 寄存器中的 LVS 位进行选择 如果由于不利的环境干扰因素使得 LVS7~ LVS0 为其他值,LVR 将在 2~ 3 个 f LIRC 时钟周期后复位单片机 此时,CTRL 寄存器中的 LRF 位被设置为 1 寄存器 LVRC 上电后初始化为 B 当单片机进入暂停模式时 LVR 功能将自动除能 LVR Internal Reset t RSTD + t SST 注 :t RSTD 为上电延迟时间, 典型值为 50ms 低电压复位时序图 Rev

59 LVRC 寄存器 Bit Name LVS7 LVS6 LVS5 LVS4 LVS3 LVS2 LVS1 LVS0 R/W R/W R/W R/W R/W R R R/W R/W POR Bit 7~ 0 LVS7~ LVS0:LVR 电压选择 :2.1V :2.55V :3.15V :3.8V 其它值 : 复位单片机 - 寄存器复位为 POR 值 当低电压条件发生时, 以上四个已定义的任何一个 LVR 电压值都会使单片机复位 复位动作将在 2~ 3 个 f LIRC 时钟周期后有效 此时复位后的寄存器内容将保持不变 任何除上述四个已定义的寄存器值, 也会导致单片机复位 复位动作将在 2~ 3 个 f LIRC 时钟周期后有效 但此时寄存器内容将复位为 POR 值 CTRL 寄存器 Bit Name FSYSON LVRF LRF WRF R/W R/W R/W R/W R/W POR 为未知 Bit 7 FSYSON:IDLE 模式时,f SYS 控制位 详见别处的描述 Bit 6~ 3 未定义, 读为 0 Bit 2 LVRF:LVR 复位标志位 0: 未发生 1: 发生 当特定的低电压复位条件发生时, 该位被置为 1 该位只能由应用程序清零 Bit 1 LRF:LVR 控制寄存器软件复位标志位 0: 未发生 1: 发生 如果 LVRC 控制寄存器包含任何非定义的 LVR 电压值, 该位被置为 1, 这类似 于软件复位功能 该位只能由应用程序清零 Bit 0 WRF:WDT 控制寄存器软件复位标志位 详见别处的描述 正常运行时看门狗溢出复位除了看门狗溢出标志位 TO 将被设为 1 之外, 正常运行时看门狗溢出复位和 LVR 复位相同 WDT Time-out Internal Reset t RSTD + t SST 注 :t RSTD 为上电延迟时间, 典型值为 16.7ms 正常运行时看门狗溢出复位时序图 Rev

60 休眠或空闲时看门狗溢出复位 休眠或空闲时看门狗溢出复位和其它种类的复位有些不同 除了程序计数器与堆栈指针将被清 0 及 TO 位被设为 1 外, 绝大部分的条件保持不变 图中 t SST 的详细说明请参考交流电气特性 复位初始状态 WDT Time-out Internal Reset t SST 休眠或空闲时看门狗溢出复位时序图 不同的复位形式以不同的途径影响复位标志位 这些标志位, 即 PDF 和 TO 位存放在状态寄存器中, 由休眠或空闲模式功能或看门狗计数器等几种控制器操作控制 复位标志位如下所示 : TO PDF 复位条件 0 0 上电复位 u u 正常模式或低速模式时的 LVR 复位 1 u 正常模式或低速模式时的 WDT 溢出复位 1 1 空闲或休眠模式时的 WDT 溢出复位 在单片机上电复位之后, 各功能单元初始化的情形, 列于下表 项目程序计数器 中断 看门狗定时器, 时基 定时模块 输入 / 输出口 堆栈指针 清除为零 所有中断被除能 WDT 清除并重新计数 所有定时模块停止 I/O 口设为输入模式 堆栈指针指向堆栈顶端 复位后情况 u 代表不改变 不同的复位形式对单片机内部寄存器的影响是不同的 为保证复位后程序能正常执行, 了解寄存器在特定条件复位后的设置是非常重要的 下表即为不同方式复位后内部寄存器的状况 若芯片有多种封装类型, 表格反映较大的封装的情况 Rev

61 寄存器 HT66F0175 HT66F0185 上电复位 LVR 复位 ( 正常模式 ) WDT 溢出 ( 正常模式 ) WDT 溢出 ( 空闲或休眠模式 )* MP0 xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu MP1 xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu BP u ACC xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu PCL TBLP xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu TBLH xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu TBHP x x x u u u u u u u u u TBHP x x x x u u u u u u u u u u u u STATUS --00 xxxx --uu uuuu --1u uuuu --11 uuuu SMOD uuuu uuuu LVDC u u - u u u INTEG u u u u INTC u - u u - u u INTC uuu uuuu INTC uuuu uuuu INTC uuu -uuu INTC uuuu uuuu MFI u u - - u u MFI uuuu uuuu MFI u u - - u u PA uuuu uuuu PAC uuuu uuuu PAPU uuuu uuuu PAWU uuuu uuuu TMPC u u u TMPC u u u u WDTC uuuu uuuu TBC uuuu uuuu CTRL x u u u u LVRC uuuu uuuu EEA uu uuuu EEA uuu uuuu EED uuuu uuuu SADOL (ADRFS=0) SADOL (ADRFS=1) x x x x x x x x x x x x u u u u xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu Rev

62 寄存器 HT66F0175 HT66F0185 上电复位 LVR 复位 ( 正常模式 ) WDT 溢出 ( 正常模式 ) WDT 溢出 ( 空闲或休眠模式 )* SADOH xxxx xxxx (ADRFS=0) uuuu uuuu uuuu uuuu uuuu uuuu SADOH x x x x (ADRFS=1) u u u u u u u u u u u u SADC uuuu -uuu SADC uuu- -uuu SADC uuuu uuuu PB uuu uuuu PBC uuu uuuu PBPU uuu uuuu TM2C u u u u u TM2C uuuu uuuu TM2DL uuuu uuuu TM2DH uuuu uuuu TM2AL uuuu uuuu TM2AH uuuu uuuu TM2RP uuuu uuuu TM0C u u u u u TM0C uuuu uuuu TM0DL uuuu uuuu TM0DH u u TM0AL uuuu uuuu TM0AH u u TM0RPL uuuu uuuu TM0RPH u u TM0C u u u u u TM0C uuuu uuuu TM0DL uuuu uuuu TM0DH uuuu uuuu TM0AL uuuu uuuu TM0AH uuuu uuuu TM0RP uuuu uuuu TM1C u u u u u TM1C uuuu uuuu TM1DL uuuu uuuu TM1DH u u TM1AL uuuu uuuu TM1AH u u Rev

63 寄存器 HT66F0175 HT66F0185 上电复位 LVR 复位 ( 正常模式 ) WDT 溢出 ( 正常模式 ) WDT 溢出 ( 空闲或休眠模式 )* TM1RPL uuuu uuuu TM1RPH u u CPC uuuu uuuu PC uuu uuuu PCC uuu uuuu PCPU uuu uuuu ACERL uuuu uuuu SIMC uuu- uuuu SIMC uuuu uuuu SIMD xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu SIMA/SIMC uuuu uuuu SIMTOC uuuu uuuu SLCDC uuuu uuuu SLCDC uuuu uuuu SLCDC uuuu uuuu SLCDC uuuu uuuu SLCDC u u SLEDC uuuu uuuu SLEDC uu uuuu SLEDC u u u u IFS uu uuuu IFS uuu uuuu PD u u u u PDC u u u u PDPU u u u u USR uuuu uuuu UCR x x x0 uuuu uuuu UCR uuuu uuuu BRG xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TXR_RXR xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu EEC u u u u 注 : u 表示不改变 x 表示未知 - 表示未定义 Rev

64 输入 / 输出端口 盛群单片机的输入 / 输出口控制具有很大的灵活性 大部分引脚可在用户程序控制下被设定为输入或输出 所有引脚的上拉电阻设置以及指定引脚的唤醒设置也都由软件控制, 这些特性也使得此单片机在广泛应用上都能符合开发的需求 该系列单片机提供 PA~ PD 双向输入 / 输出口 这些寄存器在数据存储器有特定的地址 所有 I/O 口用于输入输出操作 作为输入操作, 输入引脚无锁存功能, 也就是说输入数据必须在执行 MOV A,[m],T2 的上升沿准备好,m 为端口地址 对于输出操作, 所有数据都是被锁存的, 且保持不变直到输出锁存被重写 寄存器名称 PAWU 位 PAWU7 PAWU6 PAWU5 PAWU4 PAWU3 PAWU2 PAWU1 PAWU0 PA PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 PAC PAC7 PAC6 PAC5 PAC4 PAC3 PAC2 PAC1 PAC0 PAPU PAPU7 PAPU6 PAPU5 PAPU4 PAPU3 PAPU2 PAPU1 PAPU0 PB - PB6 PB5 PB4 PB3 PB2 PB1 PB0 PBC - PBC6 PBC5 PBC4 PBC3 PBC2 PBC1 PBC0 PBPU - PBPU6 PBPU5 PBPU4 PBPU3 PBPU2 PBPU1 PBPU0 PC - PC6 PC5 PC4 PC3 PC2 PC1 PC0 PCC - PCC6 PCC5 PCC4 PCC3 PCC2 PCC1 PCC0 PCPU - PCPU6 PCPU5 PCPU4 PCPU3 PCPU2 PCPU1 PCPU0 输入 / 输出寄存器列表 HT66F0175 Rev

65 上拉电阻 PA 口唤醒 寄存器名称 PAWU 位 PAWU7 PAWU6 PAWU5 PAWU4 PAWU3 PAWU2 PAWU1 PAWU0 PA PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 PAC PAC7 PAC6 PAC5 PAC4 PAC3 PAC2 PAC1 PAC0 PAPU PAPU7 PAPU6 PAPU5 PAPU4 PAPU3 PAPU2 PAPU1 PAPU0 PB - PB6 PB5 PB4 PB3 PB2 PB1 PB0 PBC - PBC6 PBC5 PBC4 PBC3 PBC2 PBC1 PBC0 PBPU - PBPU6 PBPU5 PBPU4 PBPU3 PBPU2 PBPU1 PBPU0 PC - PC6 PC5 PC4 PC3 PC2 PC1 PC0 PCC - PCC6 PCC5 PCC4 PCC3 PCC2 PCC1 PCC0 PCPU - PCPU6 PCPU5 PCPU4 PCPU3 PCPU2 PCPU1 PCPU0 PD PD3 PD2 PD1 PD0 PDC PDC3 PDC2 PDC1 PDC0 PDPU PDPU3 PDPU2 PDPU1 PDPU0 输入 / 输出寄存器列表 HT66F0185 : 未定义, 读为 0 PAWUn:PA 口引脚唤醒功能控制 0: 除能 1: 使能 PAPUn/PBPUn/PCPUn/PDPUn: 输入 / 输出引脚上拉功能控制 0: 除能 1: 使能 PAn/PBn/PCn/PDn: 输入 / 输出口数据位 0: 数据 0 1: 数据 1 PACn/PBCn/PCCn/PDCn: 输入 / 输出引脚类型选择 0: 输出 1: 输入 许多产品应用在端口处于输入状态时需要外加一个上拉电阻来实现上拉的功能 为了免去外部上拉电阻, 当引脚规划为输入时, 可由内部连接到一个上拉电阻 这些上拉电阻可通过相关上拉电阻控制寄存器来设置, 它用一个 PMOS 晶体管来实现上拉电阻功能 当使用暂停指令 HALT 迫使单片机进入休眠或空闲模式, 单片机的系统时钟将会停止以降低功耗, 此功能对于电池及低功耗应用很重要 唤醒单片机有很多种方法, 其中之一就是使 PA 口的其中一个引脚从高电平转为低电平 这个功能特别适合于通过外部开关来唤醒的应用 PA 口的每个引脚可以通过设置 PAWU 寄存器来单独选择是否具有唤醒功能 Rev

66 输入 / 输出端口控制寄存器 每一个输入 / 输出口都具有各自的控制寄存器, 即 PAC~ PDC, 用来控制输入 / 输出状态 从而每个 I/O 引脚都可以通过软件控制, 动态的设置为 CMOS 输出或输入 所有的 I/O 端口的引脚都各自对应于 I/O 端口控制的某一位 若 I/O 引脚要实现输入功能, 则对应的控制寄存器的位需要设置为 1 这时程序指令可以直接读取输入脚的逻辑状态 若控制寄存器相应的位被设定为 0, 则此引脚被设置为 CMOS 输出 当引脚设置为输出状态时, 程序指令读取的是输出端口寄存器的内容 注意, 如果对输出口做读取动作时, 程序读取到的是内部输出数据锁存器中的状态, 而不是输出引脚上实际的逻辑状态 输入 / 输出端口源电流控制 对于此系列单片机, 每个输入 / 输出端口的源电流驱动能力不同, 通过相应选 择寄存器 SLEDC0 和 SLEDC1, 每个输入 / 输出端口有 4 个层次的源电流驱动 能力 用户可以参考直流电气特性部分选择所需的源电流用于不同应用 寄存器名称 位 SLEDC0 PBPS3 PBPS2 PBPS1 PBPS0 PAPS3 PAPS2 PAPS1 PAPS0 SLEDC1 (HT66F0175) PCPS3 PCPS2 PCPS1 PCPS0 SLEDC1 (HT66F0185) - - PDPS1 PDPS0 PCPS3 PCPS2 PCPS1 PCPS0 输入 / 输出端口源电流控制寄存器列表 SLEDC0 寄存器 Bit Name PBPS3 PBPS2 PBPS1 PBPS0 PAPS3 PAPS2 PAPS1 PAPS0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 6 Bit 5~ 4 Bit 3~ 2 Bit 1~ 0 PBPS3~ PBPS2:PB6~ PB4 引脚源电流选择位 00: 源电流 = Level 0 ( 最小 ) 01: 源电流 = Level 1 10: 源电流 = Level 2 11: 源电流 = Level 3 ( 最大 ) PBPS1~ PBPS0:PB3~ PB0 引脚源电流选择位 00: 源电流 = Level 0 ( 最小 ) 01: 源电流 = Level 1 10: 源电流 = Level 2 11: 源电流 = Level 3 ( 最大 ) PAPS3~ PAPS2:PA7~ PA4 引脚源电流选择位 00: 源电流 = Level 0 ( 最小 ) 01: 源电流 = Level 1 10: 源电流 = Level 2 11: 源电流 = Level 3 ( 最大 ) PAPS1~ PAPS0:PA3~ PA0 引脚源电流选择位 00: 源电流 = Level 0 ( 最小 ) 01: 源电流 = Level 1 10: 源电流 = Level 2 11: 源电流 = Level 3 ( 最大 ) Rev

67 SLEDC1 寄存器 HT66F0175 Bit Name PCPS3 PCPS2 PCPS1 PCPS0 R/W R/W R/W R/W R/W POR Bit 7~ 4 未定义, 读为 0 Bit 3~ 2 Bit 1~ 0 PCPS3~ PCPS2:PC6~ PC4 引脚源电流选择位 00: 源电流 = Level 0 ( 最小 ) 01: 源电流 = Level 1 10: 源电流 = Level 2 11: 源电流 = Level 3 ( 最大 ) PCPS1~ PCPS0:PC3~ PC0 引脚源电流选择位 00: 源电流 = Level 0 ( 最小 ) 01: 源电流 = Level 1 10: 源电流 = Level 2 11: 源电流 = Level 3 ( 最大 ) SLEDC1 寄存器 HT66F0185 Bit Name - - PDPS1 PDPS0 PCPS3 PCPS2 PCPS1 PCPS0 R/W - - R/W R/W R/W R/W R/W R/W POR Bit 7~ 6 未定义, 读为 0 Bit 5~ 4 PDPS1~ PDPS0:PD3~ PD0 引脚源电流选择位 00: 源电流 = Level 0 ( 最小 ) 01: 源电流 = Level 1 10: 源电流 = Level 2 11: 源电流 = Level 3 ( 最大 ) Bit 3~ 2 PCPS3~ PCPS2:PC6~ PC4 引脚源电流选择位 00: 源电流 = Level 0 ( 最小 ) 01: 源电流 = Level 1 10: 源电流 = Level 2 11: 源电流 = Level 3 ( 最大 ) Bit 1~ 0 PCPS1~ PCPS0:PC3~ PC0 引脚源电流选择位 00: 源电流 = Level 0 ( 最小 ) 01: 源电流 = Level 1 10: 源电流 = Level 2 11: 源电流 = Level 3 ( 最大 ) Rev

68 引脚重置功能 引脚的多功能可以增加单片机应用的灵活性 有限的引脚个数将会限制设计者, 而引脚的多功能将会解决很多此类问题 每个功能可单独选择所在的引脚, 以及一个确定的优先级, 使得引脚上多种功能可以同时使用 此外, 一些引脚功能可以通过寄存器 IFS 进行设定 封装中有限的引脚个数会对某些单片机功能造成影响 然而, 引脚功能重置和引脚功能选择, 使得小封装单片机具有更多不同的功能 如果共用引脚功能同时有多个输出, / 标记的引脚名称拥有更高优先级 寄存器名称 IFS (HT66F0175) IFS (HT66F0185) IFS 寄存器 HT66F0175 位 SDOPS SDI_SDAPS SCK_SCLPS SCSBPS INT1PS INT0PS - SDOPS1 SDOPS0 SDI_SDAPS SCK_SCLPS SCSBPS TXPS RXPS 引脚重置功能选择寄存器列表 Bit Name - - SDOPS SDI_SDAPS SCK_SCLPS SCSBPS INT1PS INT0PS R/W - - R/W R/W R/W R/W R/W R/W POR Bit 7~ 6 未定义, 读为 0 Bit 5 SDOPS:SDO 引脚重置选择位 0:SDO on PC2 1:SDO on PA1 Bit 4 SDI_SDAPS:SDI/SDA 引脚重置选择位 0:SDI/SDA on PC3 1:SDI/SDA on PA3 Bit 3 SCK_SCLPS:SCK/SCL 引脚重置选择位 0:SCK/SCL on PC4 1:SCK/SCL on PB6 Bit 2 SCSBPS:SCS 引脚重置选择位 0:SCS on PA1 1:SCS on PB5 Bit 1 INT1PS:INT1 引脚重置选择位 0:INT1 on PB1 1:INT1 on PC5 Bit 0 INT0PS:INT0 引脚重置选择位 0:INT0 on PB0 1:INT0 on PC6 Rev

69 IFS 寄存器 HT66F0185 Bit Name - SDOPS1 SDOPS0 SDI_SDAPS SCK_SCLPS SCSBPS TXPS RXPS R/W - R/W R/W R/W R/W R/W R/W R/W POR Bit 7 未定义, 读为 0 Bit 6~ 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 输入 / 输出引脚结构 SDOPS1~ SDOPS0:SDO 引脚重置选择位 00:SDO on PC3 01:SDO on PA1 10: 未定义 11:SDO on PC2 SDI_SDAPS:SDI/SDA 引脚重置选择位 0:SDI/SDA on PC4 1:SDI/SDA on PA3 SCK_SCLPS:SCK/SCL 引脚重置选择位 0:SCK/SCL on PC5 1:SCK/SCL on PB6 SCSBPS:SCS 引脚重置选择位 0:SCS on PC6 1:SCS on PB5 TXPS:TX 引脚重置选择位 0:TX on PD2 1:TX on PB3 RXPS:RX 引脚重置选择位 0:RX on PD1 1:RX on PB4 下图为输入 / 输出引脚的内部结构图 输入 / 输出引脚的准确逻辑结构图可能与此图不同, 这里只是为了方便对 I/O 引脚功能的理解提供的一个参考 图中的引脚共用结构并非针对所有单片机, =J= *K I + JH * EJ, 3 2 K 0ECD 4 AC EIJA H 5 A A?J 8,, 9 A= 2 K K F 9 HEJA + H 4 J AC EIJA H + DEF4A IA J JH 4A CEIJAH, =J=*EJ, 3 1 F E 9 HEJA, =J= 4A C IJA E H A =J= 4A C IEJA H 5 7 : 5 OIJ A 9 = A K F 9 = A K F 5 A A?J 通用输入 / 输出结构 2 ) O Rev

70 , =J=*K I + JH * EJ, 3 2 K 0 EC D 4 AC EIJA H 5 A A?J 8,, 9 A= 2 K KF 9 HEJA + H 4 J A C IJA E H DEF4A IA J 4 JH 4A C IJA E H, =J=*EJ, 3 ), 1 F KJ2 E I 9 HEJA, =J= 4A CEIJAH J= 4 A C IJA E H 6 ), + L AJAH H 7 : ) = C 1 F K J 5 A A?J H 编程注意事项 5 ) +5 5) +5 5 ) ) 1 5 A/D 输入 / 输出结构 在编程中, 最先要考虑的是端口的初始化 复位之后, 所有的输入 / 输出数据及端口控制寄存器都将被设为逻辑高 所有输入 / 输出引脚默认为输入状态, 而其电平则取决于其它相连接电路以及是否选择了上拉电阻 如果端口控制寄存器某些引脚位被设定输出状态, 这些输出引脚会有初始高电平输出, 除非数据寄存器端口在程序中被预先设定 设置哪些引脚是输入及哪些引脚是输出, 可通过设置正确的值到适当的端口控制寄存器, 或使用指令 SET [m].i 及 CLR [m].i 来设定端口控制寄存器中个别的位 注意, 当使用这些位控制指令时, 系统即将产生一个读 - 修改 - 写的操作 单片机需要先读入整个端口上的数据, 修改个别的位, 然后重新把这些数据写入到输出端口 A/D 转换控制寄存器的上电初始状态默认 A/D 输入引脚为模拟信号输入引脚, 但 A/D 转换功能并没自动开启 因些需注意若要将 A/D 输入引脚用作数字信号输入引脚, 或其它功能, 需在程序中修改 A/D 转换控制寄存器值以关闭 A/D 功能 另外需注意 A/D 通道使能, 内部上拉电阻将自动断开 PA 口的每个引脚都带唤醒功能 单片机处于休眠或空闲模式时, 有很多方法可以唤醒单片机, 其中之一就是通过 PA 任一引脚电平从高到低转换的方式, 可以设置 PA 口一个或多个引脚具有唤醒功能 Rev

71 定时器模块 TM 简介 TM 操作 TM 时钟源 控制和测量时间在任何单片机中都是一个很重要的部分 每个单片机提供几个定时器模块 ( 简称 TM), 来实现和时间有关的功能 定时器模块是包括多种操作的定时单元, 提供的操作有 : 定时 / 计数器, 捕捉输入, 比较匹配输出, 单脉冲输出以及 PWM 输出等功能 每个定时器模块有两个独立中断 每个 TM 外加的输入输出引脚, 扩大了定时器的灵活性, 便于用户使用 这里只介绍各种 TM 的共性, 更多详细资料请参考简易型, 标准型和周期型定时器章节 该系列单片机包含 2 到 3 个 TM, 取决于所选单片机的型号, 分别命名为 TM0,TM1,TM2 每个 TM 可被划分为一个特定的类型, 即简易型 TM, 标 准型 TM 或周期型 TM 虽然性质相似, 但不同 TM 特性复杂度不同 本章介 绍简易型, 标准型和周期型 TM 的共性, 更多详细资料分别见后面各章 三种 类型 TM 的特性和区别见下表 TM 功能 CTM STM PTM 定时 / 计数器 捕捉输入 - 比较匹配输出 PWM 通道数 单脉冲输出 PWM 对齐方式 边沿对齐 边沿对齐 边沿对齐 PWM 调节周期 & 占空比 占空比或周期 占空比或周期 占空比或周期 TM 功能概要 该系列每款单片机包括一定数目的定时器单元, 其中有简易型, 标准型和周期 型 TM, 依次命名为 TM0~ TM2 并见下表 单片机 TM0 TM1 TM2 HT66F bit PTM 10-bit PTM - HT66F bit STM 10-bit PTM 16-bit CTM TM 名称 / 类型参考 三种不同类型的 TM 提供从简单的定时操作到 PWM 信号产生等多种功能 理解 TM 操作的关键是比较 TM 内独立运行的计数器的值与内部比较器的预置值 当计数器的值与比较器的预置值相同时, 则比较匹配,TM 中断信号产生, 清零计数器并改变 TM 输出引脚的状态 用户选择内部时钟或外部时钟来驱动内部 TM 计数器 驱动 TM 计数器的时钟源很多 通过设置 TM 控制寄存器的 TnCK2~ TnCK0 位, 选择所需的时钟源 该时钟源来自系统时钟 f SYS 或内部高速时钟 f H 或 f TBC 时钟源或外部 TCKn 引脚时钟的分频比 TCKn 引脚时钟源用于允许外部信号作为 TM 时钟源或用于事件计数 Rev

72 TM 中断 简易型 TM, 标准型 TM 或周期型 TM 都有两个内部中断, 分别是内部比较器 A 或比较器 P, 当比较匹配发生时产生 TM 中断 当 TM 中断产生时, 计数器清零并改变 TM 输出引脚的状态 TM 外部引脚 无论哪种类型的 TM, 都有一个 TM 输入引脚 TCKn 通过设置 TMnC0 寄存器中的 TnCK2~ TnCK0 位, 选择 TM 功能并将该引脚作为 TM 时钟源输入脚 外部时钟源可通过该引脚来驱动内部 TM 外部 TM 输入脚也与其它功能共用, 但是, 如果设置适当值给 TnCK2~ TnCK0, 该引脚会连接到内部 TM TM 引脚可选择上升沿有效或下降沿有效 TCKn 引脚也可用作 STM 和 PTM 单脉冲模式的外部触发引脚 每个 TM 有一个输出引脚 TPn 当 TM 工作在比较匹配输出模式且比较匹配发生时, 这些引脚会由 TM 控制切换到高电平或低电平或翻转 外部 TPn 输出引脚也被 TM 用来产生 PWM 输出波形 当 TM 工作在捕捉输入模式,TPn 引脚也可作为输入脚 因为 TM 输出引脚与其它功能共用,TM 输出功能需要通过内部 TM 开启 / 关闭控制, 工作模式选择, 以及输入 / 输出控制寄存器的相应位的设置来使能或除能 当相应 TM 配置设置 TPn 用作外部输出脚, 相应的引脚将作为外部 TM 输出引脚 当相应 TM 配置设置 TPn 为输入引脚,TPn 可作为输入引脚, 且输入的信号来自于外部信号或其它共用功能的输出信号 当相应 TM 配置设置 TPn 不被使用, 这些引脚将用作其它共用功能使用 每个单片机和不同类型 TM 中输出引脚的个数是不同的, 详见下表 单片机 STM PTM CTM 寄存器 TCK0; TP0 HT66F TMPC TCK1; TP1 HT66F0185 TCK0; TP0 TCK1; TP1 TCK2; TP2 TMPC TM 外部引脚 TM 输入 / 输出引脚控制寄存器 通过设置一或两个与 TM 输入 / 输出引脚相关的寄存器的一位, 选择作为 TM 输入 / 输出功能或其它共用功能 正确设置选择位时, 相关引脚用作 TM 输入 / 输出 寄存器名称 TMPC (HT66F0175) TMPC (HT66F0175) Bit CLOP T1CP T0CP CLOP T2CP T1CP T0CP TM 引脚控制寄存器列表 Rev

73 PA0 Output Function 0 1 PA0/TP0 TM0 (PTM) Output Capture Input PA0 T0CP 1 0 T0CAPTS TCK Input PB2/TCK0 TM0 功能引脚控制方框图 仅适用于 HT66F0175 PA0 Output Function 0 1 PA0/TP0 TM0 (STM) Output 0 1 PA0 T0CP Capture Input 1 0 TCK Input PB2/TCK0 TM0 功能引脚控制方框图 仅适用于 HT66F0185 PA7 Output Function 0 1 PA7/TP1 TM1 (PTM) Output Capture Input PA7 T1CP 1 0 T1CAPTS TCK Input PA4/TCK1 TM1 功能引脚控制方框图 HT66F0175/ HT66F0185 Rev

74 PB3 Output Function 0 1 PB3/TP2 TM2 (CTM) Output 0 1 T2CP PB3 TCK Input PA6/TCK2 TM2 功能引脚控制方框图 仅适用于 HT66F0185 注 :1. 上图所示输入 / 输出寄存器数据位用于 TM 输出反向控制 2. 捕捉输入模式中,TM 引脚控制寄存器最多只能使能一个 TM 引脚输入 TMPC 寄存器 HT66F0175 Bit Name CLOP T1CP T0CP R/W R/W R/W R/W POR Bit 7 CLOP:CLO 引脚控制位 0: 除能 1: 使能 Bit 6~ 2 未定义, 读为 0 Bit 1 T1CP:TP1 引脚控制位 0: 除能 1: 使能 Bit 0 T0CP:TP0 引脚控制位 0: 除能 1: 使能 TMPC 寄存器 HT66F0185 Bit Name CLOP T2CP T1CP T0CP R/W R/W R/W R/W R/W POR Bit 7 CLOP:CLO 引脚控制位 0: 除能 1: 使能 Bit 6~ 3 未定义, 读为 0 Bit 2 T2CP:TP2 引脚控制位 0: 除能 1: 使能 Bit 1 T1CP:TP1 引脚控制位 0: 除能 1: 使能 Bit 0 T0CP:TP0 引脚控制位 0: 除能 1: 使能 Rev

75 编程注意事项 TM 计数寄存器和捕捉 / 比较寄存器 CCRA CCRP 为 10-bit 或 16-bit 的寄存器, 含有低字节和高字节结构 高字节可直接访问, 低字节则仅能通过一个内部 8-bit 的缓存器进行访问 读写这些成对的寄存器需通过特殊的方式 值得注意的是 8-bit 缓存器的存取数据及相关低字节的读写操作仅在其相应的高字节读取操作执行时发生 正如 CCRA 和 CCRP 寄存器按照下图方式执行且具体存取这些寄存器对的方式如上所述, 建议使用 MOV 指令, 通过以下步骤访问 CCRA 和 CCRP 低字节, 命名为 TMnAL 和 TMnRPL 若不采用以下步骤访问 CCRA 和 CCRP 将导致不可预期的结果 TMn Counter Register (Read only) TMnDL TMnDH 8-bit Buffer TMnAL TMnAH TMn CCRA Register (Read/Write) TMnRPL TMnRPH PTM CCRP Register (Read/Write) Data Bus 读写流程如下步骤所示 : 写数据至 CCRA 或 CCRP 步骤 1. 写数据至低字节寄存器 TMnAL 或 TMnRPL 注意, 此时数据仅写入 8-bit 缓存器 步骤 2. 写数据至高字节寄存器 TMnAH 或 TMnRPH 注意, 此时数据直接写入高字节寄存器, 同时锁存在 8-bit 缓存器中的数据写入低字节寄存器 由计数器寄存器和 CCRA 或 CCRP 中读取数据 步骤 1. 由高字节寄存器 TMnDH,TMnAH 或 TMnRPH 读取数据 注意, 此时高字节寄存器中的数据直接读取, 同时由低字节寄存器读取的数据锁存至 8-bit 缓存器中 步骤 2. 由低字节寄存器 TMnDL,TMnAL 或 TMnRPL 读取数据 注意, 此时读取 8-bit 缓存器中的数据 Rev

76 简易型 TM CTM 简易型 TM 即 CTM 只包含在单片机 HT66F0185 在虽然简易型 TM 是这几种 TM 类型中最简单的形式, 但仍然包括三种工作模式, 即比较匹配输出 定时 / 事件计数器和 PWM 输出模式 简易型 TM 由一个外部输入脚控制并驱动一个外部输出脚 单片机 TM 核心 TM 编号 TM 输入引脚 TM 输出引脚 HT66F bit CTM TM2 TCK2 TP2 CCRP 8-bit Comparator P Comparator P Match TnPF Interrupt fsys/4 fsys fh/16 fh/64 ftbc b8~b15 16-bit Count-up Counter Counter Clear 0 1 TnOC Output Control Polarity Control Pin Control TPn TCKn fh/ TnON TnPAU b0~b15 16-bit Comparator A TnCCLR Comparator A Match TnM1, TnM0 TnPOL TnIO1, TnIO0 TnAF Interrupt TnCP TnCK2~TnCK0 CCRA 简易型 TM 方框图 HT66F0185(n=2) 简易型 TM 操作 简易型 TM 核心是一个由用户选择的内部或外部时钟源驱动的 16 位向上计数器, 它还包括两个内部比较器即比较器 A 和比较器 P 这两个比较器将计数器的值与 CCRP 和 CCRA 寄存器中的值进行比较 CCRP 是 8 位的, 与计数器的高 8 位比较 ; 而 CCRA 是 16 位的, 与计数器的所有位比较 通过应用程序改变 16 位计数器值的唯一方法是使 TnON 位发生上升沿跳变清除计数器 此外, 计数器溢出或比较匹配也会自动清除计数器 上述条件发生时, 通常情况会产生 TM 中断信号 简易型 TM 可工作在不同的模式, 可由包括来自输入脚的不同时钟源驱动, 也可以控制输出脚 所有工作模式的设定都是通过设置相关寄存器来实现的 简易型 TM 寄存器介绍 简易型 TM 的所有操作由一系列寄存器控制 一对只读寄存器用来存放 16 位计数器的值, 一对读 / 写寄存器存放 16 位 CCRA 的值 还有一个读 / 写寄存器存放 8 位 CCRP 的值 剩下两个控制寄存器设置不同的操作和控制模式 寄存器名称 位 TMnC0 TnPAU TnCK2 TnCK1 TnCK0 TnON TMnC1 TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR TMnDL D7 D6 D5 D4 D3 D2 D1 D0 TMnDH D15 D14 D13 D12 D11 D10 D9 D8 TMnAL D7 D6 D5 D4 D3 D2 D1 D0 TMnAH D15 D14 D13 D12 D11 D10 D9 D8 TMnRP TnRP7 TnRP6 TnRP5 TnRP4 TnRP3 TnRP2 TnRP1 TnRP0 16-bit 简易型 TM 寄存器列表 n=2, 仅适用于 HT66F0185 Rev

77 TMnDL 寄存器 Bit Name D7 D6 D5 D4 D3 D2 D1 D0 R/W R R R R R R R R POR Bit 7~ 0 TMn 计数器低字节寄存器 bit 7 ~ bit 0 TMn 16-bit 计数器 bit 7 ~ bit 0 TMnDH 寄存器 Bit Name D15 D14 D13 D12 D11 D10 D9 D8 R/W R R R R R R R R POR Bit 7~ 0 TMn 计数器高字节寄存器 bit 7 ~ bit 0 TMn 16-bit 计数器 bit 15 ~ bit 8 TMnAL 寄存器 Bit Name D7 D6 D5 D4 D3 D2 D1 D0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 0 TMn CCRA 低字节寄存器 bit 7 ~ bit 0 TMn 16-bit CCRA bit 7 ~ bit 0 TMnAH 寄存器 Bit Name D15 D14 D13 D12 D11 D10 D9 D8 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 0 TMn CCRA 高字节寄存器 bit 7 ~ bit 0 TMn 16-bit CCRA bit 15 ~ bit 8 TMnC0 寄存器 Bit Name TnPAU TnCK2 TnCK1 TnCK0 TnON R/W R/W R/W R/W R/W R/W POR Bit 7 TnPAU: TMn 计数器暂停控制位 0: 运行 1: 暂停通过设置此位为高可使计数器暂停, 清零此位恢复正常计数器操作 当处于暂停条件时,TMn 保持上电状态并继续耗电 当此位由低到高转换时, 计数器将保留其剩余值, 直到此位再次改变为低电平, 从此值开始继续计数 Rev

78 Bit 6~ 4 TnCK2~ TnCK0: 选择 TMn 计数时钟位 000:f SYS /4 001:f SYS 010:f H /16 011:f H /64 100:f TBC 101:f H 110:TCKn 上升沿时钟 111:TCKn 下降沿时钟此三位用于选择 TMn 的时钟源 外部引脚时钟源能被选择在上升沿或下降沿有效 f SYS 是系统时钟,f H 和 f TBC 是其它的内部时钟源, 细节方面请参考振荡器章节 Bit 3 TnON:TMn 计数器 On/Off 控制位 0:Off 1:On 此位控制 TMn 的总开关功能 设置此位为高则使能计数器使其运行, 清零此位则除能 TMn 清零此位将停止计数器并关闭 TMn 减少耗电 当此位经由低到高转换时, 内部计数器将复位清零 ; 当此位经由高到低转换时, 内部计数器将保持其剩余值, 直到此位再次改变为高电平 若 TMn 处于比较匹配输出模式时, 当 TnON 位经由低到高转换时,TMn 输出脚将复位至 TnOC 位指定的初始值 Bit 2~ 0 未定义, 读为 0 TMnC1 寄存器 Bit Name TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 6 Bit 5~ 4 TnM1~ TnM0: 选择 TMn 工作模式位 00: 比较匹配输出模式 01: 未定义模式 10:PWM 模式 11: 定时 / 计数器模式这两位设置 TMn 需要的工作模式 为了确保操作可靠,TMn 应在 TnM1 和 TnM0 位有任何改变前先关掉 在定时 / 计数器模式,TMn 输出脚控制必须除能 TnIO1~ TnIO0: 选择 TPn 引脚输出功能位比较匹配输出模式 00: 无变化 01: 输出低 10: 输出高 11: 输出翻转 PWM 模式 00: 强制无效状态 01: 强制有效状态 10:PWM 输出 11: 未定义定时 / 计数器模式未使用此两位用于决定在一定条件达到时 TMn 输出脚如何改变状态 这两位值的选择决定 TMn 运行在哪种模式下 Rev

79 Bit 3 Bit 2 Bit 1 Bit 0 在比较匹配输出模式下, TnIO1 和 TnIO0 位决定当比较器 A 比较匹配输出发生时 TMn 输出脚如何改变状态 当比较器 A 比较匹配输出发生时 TMn 输出脚能设为切换高 切换低或翻转当前状态 若此两位同时为 0 时, 这个输出将不会改变 TMn 输出脚的初始值通过 TMnC1 寄存器的 TnOC 位设置取得 注意, 由 TnIO1 和 TnIO0 位得到的输出电平必须与通过 TnOC 位设置的初始值不同, 否则当比较匹配发生时,TMn 输出脚将不会发生变化 在 TMn 输出脚改变状态后, 通过 TnON 位由低到高电平的转换复位至初始值 在 PWM 模式,TnIO1 和 TnIO0 用于决定比较匹配条件发生时怎样改变 TMn 输出脚的状态 PWM 输出功能通过这两位的变化进行更新 仅在 TMn 关闭时改变 TnIO1 和 TnIO0 位的值是很有必要的 若在 TMn 运行时改变 TnIO1 和 TnIO0 的值,PWM 输出的值是无法预料的 TnOC:TPn 输出控制位比较匹配输出模式 0: 初始低 1: 初始高 PWM 模式 0: 低有效 1: 高有效这是 TMn 输出脚输出控制位 它取决于 TMn 此时正运行于比较匹配输出模式还是 PWM 模式 若 TMn 处于定时 / 计数器模式, 则其不受影响 在比较匹配输出模式时, 比较匹配发生前其决定 TMn 输出脚的逻辑电平值 在 PWM 模式时, 其决定 PWM 信号是高有效还是低有效 TnPOL:TPn 输出极性控制位 0: 同相 1: 反相此位控制 TPn 输出脚的极性 此位为高时 TMn 输出脚反相, 为低时 TMn 输出脚同相 若 TMn 处于定时 / 计数器模式时其不受影响 TnDPX:TMn PWM 周期 / 占空比控制位 0:CCRP - 周期 ;CCRA - 占空比 1:CCRP - 占空比 ;CCRA - 周期此位决定 CCRA 与 CCRP 寄存器哪个被用于 PWM 波形的周期和占空比控制 TnCCLR: 选择 TMn 计数器清零条件位 0:TMn 比较器 P 匹配 1:TMn 比较器 A 匹配此位用于选择清除计数器的方法 简易型 TM 包括两个比较器 - 比较器 A 和比较器 P 这两个比较器每个都可以用作清除内部计数器 TnCCLR 位设为高, 计数器在比较器 A 比较匹配发生时被清除 ; 此位设为低, 计数器在比较器 P 比较匹配发生或计数器溢出时被清除 计数器溢出清除的方法仅在 CCRP 被清除为 0 时才能生效 TnCCLR 位在 PWM 模式时未使用 Rev

80 TMnRP 寄存器 Bit Name TnRP7 TnRP6 TnRP5 TnRP4 TnRP3 TnRP2 TnRP1 TnRP0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 0 TnRP7~ TnRP0:TMn CCRP 8 位寄存器, 与 TMn 计数器 bit 15~ bit 8 比较 比较器 P 匹配周期 0:65535 个 TMn 时钟 1~ 255:256 (1~ 255) 个 TMn 时钟此八位设定内部 CCRP 8-bit 寄存器的值, 然后与内部计数器的高八位进行比较 如果 TnCCLR 位设为 0 时, 比较结果为 0 并清除内部计数器 TnCCLR 位设为低, CCRP 比较匹配结果将重置内部计数器 由于 CCRP 只与计数器高八位比较, 比较结果是 256 时钟周期的倍数 CCRP 被清零时, 实际上会使得计数器在最大值溢出 简易型 TM 工作模式 简易型 TM 有三种工作模式, 即比较匹配输出模式,PWM 模式或定时 / 计数器模式 通过设置 TMnC1 寄存器的 TnM1 和 TnM0 位选择任意工作模式 比较匹配输出模式 为使 TM 工作在此模式,TMnC1 寄存器中的 TnM1 和 TnM0 位需要设置为 00 当工作在该模式, 一旦计数器使能并开始计数, 有三种方法来清零, 分别是 : 计数器溢出, 比较器 A 比较匹配发生和比较器 P 比较匹配发生 当 TnCCLR 位为低, 有两种方法清除计数器 一种是比较器 P 比较匹配发生, 另一种是 CCRP 所有位设置为零并使得计数器溢出 此时, 比较器 A 和比较器 P 的请求标志位 TnAF 和 TnPF 将分别置起 如果 TMnC1 寄存器的 TnCCLR 位设置为高, 当比较器 A 比较匹配发生时计数器被清零 此时, 即使 CCRP 寄存器的值小于 CCRA 寄存器的值, 仅 TnAF 中断请求标志产生 所以当 TnCCLR 为高时, 不产生 TnPF 中断请求标志 如果 CCRA 被清零, 当计数达到最大值 FFFFH 时, 计数器溢出, 而此时不产生 TnAF 请求标志 正如该模式名所言, 当比较匹配发生后,TMn 输出脚状态改变 当比较器 A 比较匹配发生后 TnAF 标志产生时,TMn 输出脚状态改变 比较器 P 比较匹配发生时产生的 TnPF 标志不影响 TMn 输出脚 TMn 输出脚状态改变方式由 TMnC1 寄存器中 TnIO1 和 TnIO0 位决定 当比较器 A 比较匹配发生时,TnIO1 和 TnIO0 位决定 TM 输出脚输出高, 低或翻转当前状态 TMn 输出脚初始值, 既可以通过 TnON 位由低到高电平的变化设置, 也可以由 TnOC 位设置 注意, 若 TnIO1 和 TnIO0 位同时为 0 时, 引脚输出不变 Rev

81 Counter Value 0xFFFF CCRP CCRA CCRP=0 Counter overflow CCRP > 0 TnCCLR = 0; TnM [1:0] = 00 CCRP > 0 Counter cleared by CCRP value Pause Resume Stop Counter Restart Time TnON TnPAU TnPOL CCRP Int. flag TnPF CCRA Int. flag TnAF TMn O/P Pin Output pin set to initial Level Low if TnOC=0 Output Toggle with TnAF flag Here TnIO [1:0] = 11 Toggle Output select Note TnIO [1:0] = 10 Active High Output select Output not affected by TnAF flag. Remains High until reset by TnON bit Output Pin Reset to Initial value Output controlled by other pin-shared function Output Inverts when TnPOL is high 比较匹配输出模式 -- TnCCLR=0 注 : 1. TnCCLR=0, 比较器 P 匹配将清除计数器 2. TMn 输出脚仅由 TnAF 标志位控制 3. 在 TnON 上升沿 TMn 输出脚复位至初始值 4. n=2 仅适用于 HT66F0185 Rev

82 Counter Value 0xFFFF CCRA CCRP CCRA > 0 Counter cleared by CCRA value Pause TnCCLR = 1; TnM [1:0] = 00 Resume CCRA=0 Stop Counter Restart CCRA = 0 Counter overflow Time TnON TnPAU TnPOL CCRA Int. flag TnAF No TnAF flag generated on CCRA overflow CCRP Int. flag TnPF TMn O/P Pin Output pin set to initial Level Low if TnOC=0 TnPF not generated Output Toggle with TnAF flag Here TnIO [1:0] = 11 Toggle Output select Note TnIO [1:0] = 10 Active High Output select Output not affected by TnAF flag. Remains High until reset by TnON bit Output Inverts when TnPOL is high Output Pin Reset to Initial value Output controlled by other pin-shared function Output does not change 比较匹配输出模式 -- TnCCLR=1 注 : 1. TnCCLR=1, 比较器 A 匹配将清除计数器 2. TMn 输出脚仅由 TnAF 标志位控制 3. 在 TnON 上升沿 TMn 输出脚复位至初始值 4. 当 TnCCLR=1 时,TnPF 标志位不会产生 5. n=2 仅适用于 HT66F0185 Rev

83 定时 / 计数器模式 为使 TM 工作在此模式,TMnC1 寄存器中的 TnM1 和 TnM0 位需要设置为 11 定时 / 计数器模式与比较匹配输出模式操作方式相同, 并产生同样的中断请求标志 不同的是, 在定时 / 计数器模式下 TMn 输出脚未使用 因此, 比较匹配输出模式中的描述和时序图可以适用于此功能 该模式中未使用的 TMn 输出脚用作普通 I/O 脚或其它功能 PWM 输出模式 为使 TM 工作在此模式,TMnC1 寄存器中的 TnM1 和 TnM0 位需要设置为 10 TMn 的 PWM 功能在马达控制, 加热控制, 照明控制等方面十分有用 给 TMn 输出脚提供一个频率固定但占空比可调的信号, 将产生一个有效值等于 DC 均方根的 AC 方波 由于 PWM 波形的周期和占空比可调, 其波形的选择就极其灵活 在 PWM 模式中,TnCCLR 位不影响 PWM 操作 CCRA 和 CCRP 寄存器决定 PWM 波形, 一个用来清除内部计数器并控制 PWM 波形的频率, 另一个用来控制占空比 哪个寄存器控制频率或占空比取决于 TMnC1 寄存器的 TnDPX 位 所以 PWM 波形频率和占空比由 CCRA 和 CCRP 寄存器共同决定 当比较器 A 或比较器 P 比较匹配发生时, 将产生 CCRA 或 CCRP 中断标志 TMnC1 寄存器中的 TnOC 位决定 PWM 波形的极性,TnIO1 和 TnIO0 位使能 PWM 输出或将 TMn 输出脚置为逻辑高或逻辑低 TnPOL 位对 PWM 输出波形的极性取反 16-bit CTM,PWM 模式, 边沿对齐模式,TnDPX=0 CCRP 1~ 周期 CCRP 占空比 CCRA 若 f SYS =16MHz,TMn 时钟源选择 f SYS /4,CCRP=2,CCRA=128, TMn PWM 输出频率 =(f SYS /4) / (2 256)= f SYS /2048=7.8125kHz,duty=128/(2 256)=25% 若由 CCRA 寄存器定义的 Duty 值等于或大于 Period 值,PWM 输出占空比为 100% 16-bit CTM,PWM 模式, 边沿对齐模式,TnDPX=1 CCRP 1~ 周期 CCRA 占空比 CCRP PWM 的输出周期由 CCRA 寄存器的值与 TMn 的时钟共同决定,PWM 的占空比由 CCRP 256( 除了 CCRP 为 0 外 ) 的值决定 Rev

84 Counter Value CCRP CCRA Counter cleared by CCRP Pause Resume TnDPX = 0; TnM [1:0] = 10 Counter Stop if TnON bit low Counter Reset when TnON returns high Time TnON TnPAU TnPOL CCRA Int. flag TnAF CCRP Int. flag TnPF TMn O/P Pin (TnOC=1) TMn O/P Pin (TnOC=0) PWM Duty Cycle set by CCRA PWM Period set by CCRP Output controlled by other pin-shared function PWM resumes operation Output Inverts when TnPOL = 1 PWM 输出模式 -- TnDPX=0 注 : 1. TnDPX=0,CCRP 清除计数器 2. 计数器清零并设置 PWM 周期 3. 当 TnIO[1:0]=00 或 01,PWM 功能不变 4. TnCCLR 位不影响 PWM 操作 5. n=2 仅适用于 HT66F0185 Rev

85 Counter Value CCRA CCRP Counter cleared by CCRA Pause Resume TnDPX = 1; TnM [1:0] = 10 Counter Stop if TnON bit low Counter Reset when TnON returns high Time TnON TnPAU TnPOL CCRP Int. flag TnPF CCRA Int. flag TnAF TMn O/P Pin (TnOC=1) TMn O/P Pin (TnOC=0) PWM Duty Cycle set by CCRP PWM Period set by CCRA Output controlled by other pin-shared function PWM resumes operation Output Inverts when TnPOL = 1 PWM 输出模式 -- TnDPX=1 注 : 1. TnDPX=1,CCRA 清除计数器 2. 计数器清零并设置 PWM 周期 3. 当 TnIO[1:0]=00 或 01,PWM 功能不变 4. TnCCLR 位不影响 PWM 操作 5. n=2 仅适用于 HT66F0185 Rev

86 标准型 TM STM 标准型 TM 即 STM 只包含在单片机 HT66F0185 标准型 TM 包括 5 种工作模式, 即比较匹配输出 定时 / 事件计数器 捕捉输入 单脉冲输出和 PWM 输出模式 标准型 TM 由一个外部输入脚控制并驱动一个外部输出脚 单片机 TM 核心 TM 编号 TM 输入引脚 TM 输出引脚 HT66F bit STM TM0 TCK0 TP0 CCRP TCKn fsys/4 fsys fh/16 fh/64 ftbc fh/ TnCK2~TnCK0 TnON TnPAU 8-bit Comparator P b8~b15 16-bit Count-up Counter b0~b15 16-bit Comparator A Comparator P Match Counter Clear 0 1 TnCCLR Comparator A Match TnIO1, TnIO0 TnPF Interrupt TnOC Output Control TnM1, TnM0 TnIO1, TnIO0 TnAF Interrupt Polarity Control TnPOL Pin Control TnCP TPn 标准型 TM 操作 CCRA Edge Detector 标准型 TM 方框图 HT66F0185(n=0) 标准型 TM 是 16 位宽度 核心是一个由用户选择的内部或外部时钟源驱动的 16 位向上计数器, 它还包括两个内部比较器即比较器 A 和比较器 P 这两个比较器将计数器的值与 CCRP 和 CCRA 寄存器中的值进行比较 CCRP 是 8 位宽度, 与计数器的高 8 位比较 ; 而 CCRA 是 16 位的, 与计数器的所有位比较 通过应用程序改变 16 位计数器值的唯一方法是使 TnON 位发生上升沿跳变清除计数器 此外, 计数器溢出或比较匹配也会自动清除计数器 上述条件发生时, 通常情况会产生 TM 中断信号 标准型 TM 可工作在不同的模式, 可由包括来自输入脚的不同时钟源驱动, 也可以控制输出脚 所有工作模式的设定都是通过设置相关寄存器来实现的 标准型 TM 寄存器介绍 标准型 TM 的所有操作由一系列寄存器控制 一对只读寄存器用来存放 16 位计 数器的值, 一对读 / 写寄存器存放 16 位 CCRA 的值,TMnRP 寄存器存放 8 位 CCRP 的值, 剩下两个控制寄存器设置不同的操作和控制模式 寄存器 位 名称 TMnC0 TnPAU TnCK2 TnCK1 TnCK0 TnON TMnC1 TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR TMnDL D7 D6 D5 D4 D3 D2 D1 D0 TMnDH D15 D14 D13 D12 D11 D10 D9 D8 TMnAL D7 D6 D5 D4 D3 D2 D1 D0 TMnAH D15 D14 D13 D12 D11 D10 D9 D8 TMnRP TnRP7 TnRP6 TnRP5 TnRP4 TnRP3 TnRP2 TnRP1 TnRP0 16-bit 标准型 TM 寄存器列表 HT66F0185(n=0) Rev

87 TMnDL 寄存器 Bit Name D7 D6 D5 D4 D3 D2 D1 D0 R/W R R R R R R R R POR Bit 7~ 0 TMn 计数器低字节寄存器 bit 7 ~ bit 0 TMn 16-bit 计数器 bit 7 ~ bit 0 TMnDH 寄存器 Bit Name D15 D14 D13 D12 D11 D10 D9 D8 R/W R R R R R R R R POR Bit 7~ 0 TMn 计数器高字节寄存器 bit 7 ~ bit 0 TMn 16-bit 计数器 bit 15 ~ bit 8 TMnAL 寄存器 Bit Name D7 D6 D5 D4 D3 D2 D1 D0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 0 TMn CCRA 低字节寄存器 bit 7 ~ bit 0 TMn 16-bit CCRA bit 7 ~ bit 0 TMnAH 寄存器 Bit Name D15 D14 D13 D12 D11 D10 D9 D8 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 0 TMn CCRA 高字节寄存器 bit 7 ~ bit 0 TMn 16-bit CCRA bit 15 ~ bit 8 TMnC0 寄存器 Bit Name TnPAU TnCK2 TnCK1 TnCK0 TnON R/W R/W R/W R/W R/W R/W POR Bit 7 TnPAU:TMn 计数器暂停控制位 0: 运行 1: 暂停通过设置此位为高可使计数器暂停, 清零此位恢复正常计数器操作 当处于暂停条件时,TMn 保持上电状态并继续耗电 当此位由低到高转换时, 计数器将保留其剩余值, 直到此位再次改变为低电平, 并从此值开始继续计数 Rev

88 Bit 6~ 4 TnCK2~ TnCK0: 选择 TMn 计数时钟位 000:f SYS /4 001:f SYS 010:f H /16 011:f H /64 100:f TBC 101:f H /8 110:TCKn 上升沿时钟 111:TCKn 下降沿时钟此三位用于选择 TMn 的时钟源 外部引脚时钟源能被选择在上升沿或下降沿有效 f SYS 是系统时钟,f H 和 f TBC 是其它的内部时钟源, 细节方面请参考振荡器章节 Bit 3 TnON:TMn 计数器 On/Off 控制位 0:Off 1:On 此位控制 TMn 的总开关功能 设置此位为高则使能计数器使其运行, 清零此位则除能 TMn 清零此位将停止计数器并关闭 TMn 减少耗电 当此位经由低到高转换时, 内部计数器将复位清零 ; 当此位经由高到低转换时, 内部计数器将保持其剩余值, 直到此位再次改变为高电平 若 TMn 处于比较匹配输出模式时, 当 TnON 位经由低到高转换时,TMn 输出脚将复位至 TnOC 位指定的初始值 Bit 2~ 0 未定义, 读为 0 TMnC1 寄存器 Bit Name TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 6 Bit 5~ 4 TnM1~ TnM0: 选择 TMn 工作模式位 00: 比较匹配输出模式 01: 捕捉输入模式 10:PWM 模式或单脉冲输出模式 11: 定时 / 计数器模式这两位设置 TMn 需要的工作模式 为了确保操作可靠,TMn 应在 TnM1 和 TnM0 位有任何改变前先关掉 在定时 / 计数器模式,TMn 输出脚控制必须除能 TnIO1~ TnIO0: 选择 TPn 引脚输出功能位比较匹配输出模式 00: 无变化 01: 输出低 10: 输出高 11: 输出翻转 PWM 模式 / 单脉冲输出模式 00: 强制无效状态 01: 强制有效状态 10:PWM 输出 11: 单脉冲输出捕捉输入模式 00: 在 TPn 上升沿输入捕捉 01: 在 TPn 下降沿输入捕捉 10: 在 TPn 双沿输入捕捉 11: 输入捕捉除能 Rev

89 Bit 3 Bit 2 Bit 1 Bit 0 定时 / 计数器模式未使用此两位用于决定在一定条件达到时 TMn 输出脚如何改变状态 这两位值的选择决定 TMn 运行在哪种模式下 在比较匹配输出模式下, TnIO1 和 TnIO0 位决定当比较器 A 比较匹配输出发生时 TMn 输出脚如何改变状态 当比较器 A 比较匹配输出发生时 TMn 输出脚能设为切换高 切换低或翻转当前状态 若此两位同时为 0 时, 这个输出将不会改变 TMn 输出脚的初始值通过 TMnC1 寄存器的 TnOC 位设置取得 注意, 由 TnIO1 和 TnIO0 位得到的输出电平必须与通过 TnOC 位设置的初始值不同, 否则当比较匹配发生时,TMn 输出脚将不会发生变化 在 TMn 输出脚改变状态后, 通过 TnON 位由低到高电平的转换复位至初始值 在 PWM 模式,TnIO1 和 TnIO0 用于决定比较匹配条件发生时怎样改变 TMn 输出脚的状态 PWM 输出功能通过这两位的变化进行更新 仅在 TMn 关闭时改变 TnIO1 和 TnIO0 位的值是很有必要的 若在 TMn 运行时改变 TnIO1 和 TnIO0 的值,PWM 输出的值是无法预料的 TnOC:TMn TPn 输出控制位比较匹配输出模式 0: 初始低 1: 初始高 PWM 模式 / 单脉冲输出模式 0: 低有效 1: 高有效这是 TMn 输出脚输出控制位 它取决于 TMn 此时正运行于比较匹配输出模式还是 PWM 模式 若 TMn 处于定时 / 计数器模式, 则其不受影响 在比较匹配输出模式时, 比较匹配发生前其决定 TMn 输出脚的逻辑电平值 在 PWM 模式时, 其决定 PWM 信号是高有效还是低有效 TnPOL:TMn TPn 输出极性控制位 0: 同相 1: 反相此位控制 TPn 输出脚的极性 此位为高时 TMn 输出脚反相, 为低时 TMn 输出脚同相 若 TMn 处于定时 / 计数器模式时其不受影响 TnDPX:TMn PWM 周期 / 占空比控制位 0:CCRP - 周期 ;CCRA - 占空比 1:CCRP - 占空比 ;CCRA - 周期此位决定 CCRA 与 CCRP 寄存器哪个被用于 PWM 波形的周期和占空比控制 TnCCLR: 选择 TMn 计数器清零条件位 0: 比较器 P 匹配 1: 比较器 A 匹配此位用于选择清除计数器的方法 标准型 TM 包括两个比较器 - 比较器 A 和比较器 P 这两个比较器每个都可以用作清除内部计数器 TnCCLR 位设为高, 计数器在比较器 A 比较匹配发生时被清除 ; 此位设为低, 计数器在比较器 P 比较匹配发生或计数器溢出时被清除 计数器溢出清除的方法仅在 CCRP 被清除为 0 时才能生效 TnCCLR 位在 PWM 模式时未使用 Rev

90 TMnRP 寄存器 Bit Name TnRP7 TnRP6 TnRP5 TnRP4 TnRP3 TnRP2 TnRP1 TnRP0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 0 TnRP7~ TnRP0:TMn CCRP 8 位寄存器, 与 TMn 计数器 bit 15~ bit 8 比较 比较器 P 匹配周期 0:65535 个 TMn 时钟 1~ 255:(1~ 255) 256 个 TMn 时钟此八位设定内部 CCRP 8-bit 寄存器的值, 然后与内部计数器的高八位进行比较 如果 TnCCLR 位设为 0 时, 比较结果为 0 并清除内部计数器 TnCCLR 位设为低, CCRP 比较匹配结果将重置内部计数器 由于 CCRP 只与计数器高八位比较, 比较结果是 256 时钟周期的倍数 CCRP 被清零时, 实际上会使得计数器在最大值溢出 标准型 TM 工作模式 标准型 TM 有五种工作模式, 即比较匹配输出模式,PWM 输出模式, 单脉冲输出模式, 捕捉输入模式或定时 / 计数器模式 通过设置 TMnC1 寄存器的 TnM1 和 TnM0 位选择任意模式 比较匹配输出模式 为使 TM 工作在此模式,TMnC1 寄存器中的 TnM1 和 TnM0 位需要设置为 00 当工作在该模式, 一旦计数器使能并开始计数, 有三种方法来清零, 分别是 : 计数器溢出, 比较器 A 比较匹配发生和比较器 P 比较匹配发生 当 TnCCLR 位为低, 有两种方法清除计数器 一种是比较器 P 比较匹配发生, 另一种是 CCRP 所有位设置为零并使得计数器溢出 此时, 比较器 A 和比较器 P 的请求标志位 TnAF 和 TnPF 将分别置位 如果 TMnC1 寄存器的 TnCCLR 位设置为高, 当比较器 A 比较匹配发生时计数器被清零 此时, 即使 CCRP 寄存器的值小于 CCRA 寄存器的值, 仅产生 TnAF 中断请求标志 所以当 TnCCLR 为高时, 不会产生 TnPF 中断请求标志 在比较匹配输出模式下,CCRA 不能设为 0 正如该模式名所言, 当比较匹配发生后,TMn 输出脚状态改变 当比较器 A 比较匹配发生后 TnAF 标志产生时,TMn 输出脚状态改变 比较器 P 比较匹配发生时产生的 TnPF 标志不影响 TMn 输出脚 TMn 输出脚状态改变方式由 TMnC1 寄存器中 TnIO1 和 TnIO0 位决定 当比较器 A 比较匹配发生时,TnIO1 和 TnIO0 位决定 TMn 输出脚输出高, 低或翻转当前状态 TMn 输出脚初始值, 既可以通过 TnON 位由低到高电平的变化设置, 也可以由 TnOC 位设置 注意, 若 TnIO1 和 TnIO0 位同时为 0 时, 引脚输出不变 Rev

91 Counter Value 0xFFFF CCRP CCRA CCRP=0 Counter overflow CCRP > 0 TnCCLR = 0; TnM [1:0] = 00 CCRP > 0 Counter cleared by CCRP value Pause Resume Stop Counter Restart TnON Time TnPAU TnPOL CCRP Int. flag TnPF CCRA Int. flag TnAF TMn O/P Pin Output pin set to initial Level Low if TnOC=0 Output Toggle with TnAF flag Here TnIO [1:0] = 11 Toggle Output select Note TnIO [1:0] = 10 Active High Output select Output not affected by TnAF flag. Remains High until reset by TnON bit Output Pin Reset to Initial value Output controlled by other pin-shared function Output Inverts when TnPOL is high 比较匹配输出模式 -- TnCCLR=0 注 : 1. TnCCLR=0, 比较器 P 匹配将清除计数器 2. TMn 输出脚仅由 TnAF 标志位控制 3. 在 TnON 上升沿 TMn 输出脚复位至初始值 4. n=0 仅适用于 HT66F0185 Rev

92 Counter Value 0xFFFF CCRA CCRP CCRA > 0 Counter cleared by CCRA value Pause TnCCLR = 1; TnM [1:0] = 00 Resume CCRA=0 Stop Counter Restart CCRA = 0 Counter overflow Time TnON TnPAU TnPOL CCRA Int. flag TnAF No TnAF flag generated on CCRA overflow CCRP Int. flag TnPF TMn O/P Pin Output pin set to initial Level Low if TnOC=0 TnPF not generated Output Toggle with TnAF flag Here TnIO [1:0] = 11 Toggle Output select Note TnIO [1:0] = 10 Active High Output select Output not affected by TnAF flag. Remains High until reset by TnON bit Output Inverts when TnPOL is high Output Pin Reset to Initial value Output controlled by other pin-shared function Output does not change 比较匹配输出模式 -- TnCCLR=1 注 : 1. TnCCLR=1, 比较器 A 匹配将清除计数器 2. TMn 输出脚仅由 TnAF 标志位控制 3. 在 TnON 上升沿 TMn 输出脚复位至初始值 4. 当 TnCCLR=1 时, 不会产生 TnPF 标志 5. n=0 仅适用于 HT66F0185 Rev

93 定时 / 计数器模式 为使 TM 工作在此模式,TMnC1 寄存器中的 TnM1 和 TnM0 位需要设置为 11 定时 / 计数器模式与比较输出模式操作方式相同, 并产生同样的中断请求标志 不同的是, 在定时 / 计数器模式下 TMn 输出脚未使用 因此, 比较匹配输出模式中的描述和时序图可以适用于此功能 该模式中未使用的 TMn 输出脚用作普通 I/O 脚或其它功能 PWM 输出模式 为使 TM 工作在此模式,TMnC1 寄存器中的 TnM1 和 TnM0 位需要设置为 10, 且 TnIO1 和 TnIO0 位也需要设置为 10 TMn 的 PWM 功能在马达控制, 加热控制, 照明控制等方面十分有用 给 TMn 输出脚提供一个频率固定但占空比可调的信号, 将产生一个有效值等于 DC 均方根的 AC 方波 由于 PWM 波形的周期和占空比可调, 其波形的选择就极其灵活 在 PWM 模式中,TnCCLR 位不影响 PWM 周期 CCRA 和 CCRP 寄存器决定 PWM 波形, 一个用来清除内部计数器并控制 PWM 波形的频率, 另一个用来控制占空比 哪个寄存器控制频率或占空比取决于 TMnC1 寄存器的 TnDPX 位 所以 PWM 波形由 CCRA 和 CCRP 寄存器共同决定 当比较器 A 或比较器 P 比较匹配发生时, 将产生 CCRA 或 CCRP 中断标志 TMnC1 寄存器中的 TnOC 位决定 PWM 波形的极性,TnIO1 和 TnIO0 位使能 PWM 输出或将 TMn 输出脚置为逻辑高或逻辑低 TnPOL 位对 PWM 输出波形的极性取反 16-bit STM,PWM 模式, 边沿对齐模式,TnDPX=0 CCRP 1~ Period CCRP Duty CCRA 若 f SYS =16MHz,TMn 时钟源选择 f SYS /4,CCRP=2,CCRA=128, TMn PWM 输出频率 =(f SYS /4) / (2 256)= f SYS /2048=7.8125kHz,duty=128/(2 256)=25% 若由 CCRA 寄存器定义的 Duty 值等于或大于 Period 值,PWM 输出占空比为 100% 16-bit STM,PWM 模式, 边沿对齐模式,TnDPX=1 CCRP 1~ Period CCRA Duty CCRP PWM 的输出周期由 CCRA 寄存器的值与 TMn 的时钟共同决定,PWM 的占空比由 CCRP 256( 除了 CCRP 为 0 外 ) 的值决定 Rev

94 Counter Value CCRP CCRA Counter cleared by CCRP Pause Resume TnDPX = 0; TnM [1:0] = 10 Counter Stop if TnON bit low Counter Reset when TnON returns high Time TnON TnPAU TnPOL CCRA Int. flag TnAF CCRP Int. flag TnPF TMn O/P Pin (TnOC=1) TMn O/P Pin (TnOC=0) PWM Duty Cycle set by CCRA PWM Period set by CCRP Output controlled by other pin-shared function PWM resumes operation Output Inverts when TnPOL = 1 PWM 输出模式 -- TnDPX=0 注 : 1. TnDPX=0,CCRP 清除计数器 2. 计数器清零并设置 PWM 周期 3. 当 TnIO [1:0]=00 或 01,PWM 功能不变 4. TnCCLR 位不影响 PWM 操作 5. n=0 仅适用于 HT66F0185 Rev

95 Counter Value CCRA CCRP Counter cleared by CCRA Pause Resume TnDPX = 1; TnM [1:0] = 10 Counter Stop if TnON bit low Counter Reset when TnON returns high Time TnON TnPAU TnPOL CCRP Int. flag TnPF CCRA Int. flag TnAF TMn O/P Pin (TnOC=1) TMn O/P Pin (TnOC=0) PWM Duty Cycle set by CCRP PWM Period set by CCRA Output controlled by other pin-shared function PWM resumes operation Output Inverts when TnPOL = 1 PWM 输出模式 -- TnDPX=1 注 : 1. TnDPX=1,CCRA 清除计数器 2. 计数器清零并设置 PWM 周期 3. 当 TnIO [1:0]=00 或 01,PWM 功能不变 4. TnCCLR 位不影响 PWM 操作 5. n=0 仅适用于 HT66F0185 Rev

96 单脉冲输出模式 为使 TM 工作在此模式,TMnC1 寄存器中的 TnM1 和 TnM0 位需要设置为 10, 同时 TnIO1 和 TnIO0 位需要设置为 11 正如模式名所言, 单脉冲输出模式, 在 TMn 输出脚将产生一个脉冲输出 脉冲输出可以通过应用程序控制 TnON 位由低到高的转变来触发 而处于单脉冲模式时,TnON 位在 TCKn 脚自动由低转变为高, 进而初始化单脉冲输出状态 当 TnON 位转变为高电平时, 计数器将开始运行, 并产生脉冲前沿 当脉冲有效时 TnON 位保持高电平 通过应用程序使 TnON 位清零或比较器 A 比较匹配发生时, 产生脉冲下降沿 然而, 比较器 A 比较匹配发生时, 会自动清除 TnON 位并产生单脉冲输出下降沿 CCRA 的值通过这种方式控制脉冲宽度 比较器 A 比较匹配发生时, 也会产生 TMn 中断 TnON 位在计数器重启时会发生由低到高的转变, 此时计数器才复位至零 在单脉冲模式中,CCRP 寄存器,TnCCLR 和 TnDPX 位未使用 S/W Command SET TnON or TCKn Pin Transition CCRA Leading Edge TnON bit 0 à 1 CCRA Trailing Edge TnON bit 1 à 0 S/W Command CLR TnON or CCRA Compare Match TPn Output Pin 单脉冲产生示意图 Pulse Width = CCRA Value Rev

97 Counter Value CCRA CCRP Counter stopped by CCRA TnM [1:0] = 10 ; TnIO [1:0] = 11 Pause Resume Counter Stops by software Counter Reset when TnON returns high Time TnON TCKn pin Software Trigger Cleared by CCRA match Auto. set by TCKn pin Software Trigger Software Trigger Software Clear Software Trigger TnPAU TCKn pin Trigger TnPOL CCRP Int. Flag TnPF No CCRP Interrupts generated CCRA Int. Flag TnAF TMn O/P Pin (TnOC=1) TMn O/P Pin (TnOC=0) Pulse Width set by CCRA 单脉冲模式 注 : 1. 通过 CCRA 匹配停止计数器 2. CCRP 未使用 3. 通过 TCKn 脚或设置 TnON 位为高来触发脉冲 4. TCKn 脚有效沿会自动置位 TnON 5. 单脉冲模式中,TnIO[1:0] 需置位 11, 且不能更改 6. n=0 仅适用于 HT66F0185 Output Inverts when TnPOL = 1 Rev

98 捕捉输入模式 为使 TM 工作在此模式,TMnC1 寄存器中的 TnM1 和 TnM0 位需要设置为 01 此模式使能外部信号捕捉并保存内部计数器当前值, 因此被用于诸如脉冲宽度测量的应用中 TPn 脚上的外部信号, 通过设置 TMnC1 寄存器的 TnIO1 和 TnIO0 位选择有效边沿类型, 即上升沿, 下降沿或双沿有效 计数器在 TnON 位由低到高转变时启动并通过应用程序初始化 当 TPn 脚出现有效边沿转换时, 计数器当前值被锁存到 CCRA 寄存器, 并产生 TMn 中断 不考虑 TPn 引脚事件, 计数器继续工作直到 TnON 位发生下降沿跳变 当 CCRP 比较匹配发生时计数器复位至零 ;CCRP 的值通过这种方式控制计数器的最大值 当比较器 P CCRP 比较匹配发生时, 也会产生 TMn 中断 记录 CCRP 溢出中断信号的值可以测量脉宽 通过设置 TnIO1 和 TnIO0 位选择 TPn 引脚为上升沿, 下降沿或双沿有效 不考虑 TPn 引脚事件, 如果 TnIO1 和 TnIO0 位设置为高, 不会产生捕捉操作, 但计数器继续运行 TnCCLR 和 TnDPX 位在此模式中未使用 Counter Value CCRP YY XX Counter cleared by CCRP Resume Pause TnM [1:0] = 01 Counter Stop Counter Reset TnON Time TnPAU TMn capture pin TPn Active edge Active edge Active edge CCRA Int. Flag TnAF CCRP Int. Flag TnPF CCRA Value XX YY XX YY TnIO [1:0] Value 00 Rising edge 01 Falling edge 10 Both edges 11 Disable Capture 捕捉输入模式 注 : 1. TnM [1:0]=01 并通过 TnIO [1:0] 位设置有效边沿 2. TMn 捕捉输入脚的有效边沿将计数器的值转移到 CCRA 中 3. TnCCLR 位未使用 4. 无输出功能 -- TnOC 和 TnPOL 位未使用 5. 计数器值由 CCRP 决定, 在 CCRP 为 0 时, 计数器计数值可达最大 6. n=0 仅适用于 HT66F0185 Rev

99 周期型 TM PTM 周期型 TM 包括 5 种工作模式, 即比较匹配输出 定时 / 事件计数器 捕捉输入 单脉冲输出和 PWM 输出模式 周期型 TM 由一个外部输入脚控制并驱动一个外部输出脚 单片机 TM 核心 TM 编号 TM 输入引脚 TM 输出引脚 HT66F bit PTM TM0, TM1 TCK0, TCK1 TP0, TP1 HT66F bit PTM TM1 TCK1 TP1 CCRP 10-bit Comparator P Comparator P Match TnPF Interrupt fsys/4 fsys fh/16 fh/64 ftbc b0~b9 10-bit Count-up Counter Counter Clear 0 1 TnOC Output Control Polarity Control Pin Control TPn TCKn fh TnON TnPAU b0~b9 TnCCLR TnM1, TnM0 TnIO1, TnIO0 TnPOL TnCP TnCK2~TnCK0 10-bit Comparator A Comparator A Match TnIO1, TnIO0 TnAF Interrupt TnCAPTS CCRA Edge Detector 0 1 周期型 TM 方框图 n=0 或 1 周期型 TM 操作 周期型 TM 是 10 位宽度 周期型 TM 核心是一个由用户选择的内部或外部时钟源驱动的 10 位向上计数器, 它还包括两个内部比较器即比较器 A 和比较器 P 这两个比较器将计数器的值与 CCRA 和 CCRP 寄存器中的值进行比较 CCRP 和 CCRA 是 10 位的, 与计数器的所有位比较 通过应用程序改变 10 位计数器值的唯一方法是使 TnON 位发生上升沿跳变清除计数器 此外, 计数器溢出或比较匹配也会自动清除计数器 上述条件发生时, 通常情况会产生 TM 中断信号 周期型 TM 可工作在不同的模式, 可由包括来自输入脚的不同时钟源驱动, 也可以控制输出脚 所有工作模式的设定都是通过设置相关寄存器来实现的 Rev

100 周期型 TM 寄存器介绍 周期型 TM 的所有操作由一系列寄存器控制 一对只读寄存器用来存放 10 位计数器的值, 两对读 / 写寄存器存放 10 位 CCRA 和 CCRP 的值 剩下两个控制寄存器用来设置不同的操作和控制模式 寄存器名称 位 TMnC0 TnPAU TnCK2 TnCK1 TnCK0 TnON TMnC1 TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnCAPTS TnCCLR TMnDL D7 D6 D5 D4 D3 D2 D1 D0 TMnDH D9 D8 TMnAL D7 D6 D5 D4 D3 D2 D1 D0 TMnAH D9 D8 TMnRPL TnRP7 TnRP6 TnRP5 TnRP4 TnRP3 TnRP2 TnRP1 TnRP0 TMnRPH TnRP9 TnRP8 TMnDL 寄存器 周期型 TM 寄存器列表 n=0 或 1 Bit Name D7 D6 D5 D4 D3 D2 D1 D0 R/W R R R R R R R R POR Bit 7~ 0 TMn 计数器低字节寄存器 bit 7 ~ bit 0 TMn 10-bit 计数器 bit 7 ~ bit 0 TMnDH 寄存器 Bit Name D9 D8 R/W R R POR 0 0 Bit 7~ 2 未定义, 读为 0 Bit 1~ 0 TMn 计数器高字节寄存器 bit 1 ~ bit 0 TMn 10-bit 计数器 bit 9 ~ bit 8 TMnAL 寄存器 Bit Name D7 D6 D5 D4 D3 D2 D1 D0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 0 TMn CCRA 低字节寄存器 bit 7 ~ bit 0 TMn 10-bit CCRA bit 7 ~ bit 0 Rev

101 TMnAH 寄存器 Bit Name D9 D8 R/W R/W R/W POR 0 0 Bit 7~ 2 未定义, 读为 0 Bit 1~ 0 TMn CCRA 高字节寄存器 bit 1 ~ bit 0 TMn 10-bit CCRA bit 9 ~ bit 8 TMnRPL 寄存器 Bit Name TnRP7 TnRP6 TnRP5 TnRP4 TnRP3 TnRP2 TnRP1 TnRP0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 0 TnRP7~ TnRP0:TMn CCRP 低字节寄存器 bit 7 ~ bit 0 TMn 10-bit CCRP bit 7 ~ bit 0 TMnRPH 寄存器 Bit Name TnRP9 TnRP8 R/W R/W R/W POR 0 0 Bit 7~ 2 未定义, 读为 0 Bit 1~ 0 TnRP9~ TnRP8:TMn CCRP 高字节寄存器 bit 1 ~ bit 0 TMn 10-bit CCRP bit 9 ~ bit 8 TMnC0 寄存器 Bit Name TnPAU TnCK2 TnCK1 TnCK0 TnON Bit 7 R/W R/W R/W R/W R/W R/W POR Bit 6~ 4 TnPAU:TMn 计数器暂停控制位 0: 运行 1: 暂停通过设置此位为高可使计数器暂停, 清零此位恢复正常计数器操作 当处于暂停条件时,TMn 保持上电状态并继续耗电 当此位由低到高转变时, 计数器将保留其剩余值, 直到此位再次改变为低电平, 并从此值开始继续计数 TnCK2~ TnCK0: 选择 TMn 计数时钟位 000:f SYS /4 001:f SYS 010:f H /16 011:f H /64 100:f TBC 101:f H 110:TCKn 上升沿 111:TCKn 下降沿此三位用于选择 TMn 的时钟源 外部引脚时钟源能被选择在上升沿或下降沿有效 f SYS 是系统时钟,f H 和 f TBC 是其它的内部时钟源, 细节方面请参考振荡器章节 Rev

102 Bit 3 TnON:TMn 计数器 On/Off 控制位 0:Off 1:On 此位控制 TMn 的总开关功能 设置此位为高则使能计数器使其运行, 清零此位则除能 TMn 清零此位将停止计数器并关闭 TMn 减少耗电 当此位经由低到高转换时, 内部计数器将复位清零 ; 当此位经由高到低转换时, 内部计数器将保持其剩余值, 直到此位再次改变为高电平 若 TMn 处于比较匹配输出模式时, 当 TnON 位经由低到高转换时,TMn 输出脚将复位至 TnOC 位指定的初始值 Bit 2~ 0 未定义, 读为 0 TMnC1 寄存器 Bit Name TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnCAPTS TnCCLR R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 6 Bit 5~ 4 TnM1~ TnM0: 选择 TMn 工作模式位 00: 比较匹配输出模式 01: 捕捉输入模式 10:PWM 模式或单脉冲输出模式 11: 定时 / 计数器模式这两位设置 TMn 需要的工作模式 为了确保操作可靠,TMn 应在 TnM1 和 TnM0 位有任何改变前先关掉 在定时 / 计数器模式,TMn 输出脚控制必须除能 TnIO1~ TnIO0: 选择 TPn 输出功能位比较匹配输出模式 00: 无变化 01: 输出低 10: 输出高 11: 输出翻转 PWM 模式 / 单脉冲输出模式 00: 强制无效状态 01: 强制有效状态 10:PWM 输出 11: 单脉冲输出捕捉输入模式 00: 在 TPn 或 TCKn 上升沿输入捕捉 01: 在 TPn 或 TCKn 下降沿输入捕捉 10: 在 TPn 或 TCKn 双沿输入捕捉 11: 输入捕捉除能定时 / 计数器模式未使用此两位用于决定在一定条件达到时 TMn 输出脚如何改变状态 这两位值的选择决定 TMn 运行在哪种模式下 在比较匹配输出模式下,TnIO1 和 TnIO0 位决定当从比较器 A 比较匹配输出发生时 TMn 输出脚如何改变状态 当从比较器 A 比较匹配输出发生时 TMn 输出脚能设为切换高 切换低或翻转当前状态 若此两位同时为 0 时, 这个输出将不会改变 TMn 输出脚的初始值通过 TMnC1 寄存器的 TnOC 位设置取得 注意, 由 TnIO1 和 TnIO0 位得到的输出电平必须与通过 TnOC 位设置的初始值不同, 否则当比较匹配发生时,TMn 输出脚将不会发生变化 在 TMn 输出脚改变状态后, 通过 TnON 位由低到高电平的转换复位至初始值 Rev

103 Bit 3 Bit 2 Bit 1 Bit 0 在 PWM 模式,TnIO1 和 TnIO0 用于决定比较匹配条件发生时怎样改变 TMn 输出脚的状态 PWM 输出功能通过这两位的变化进行更新 必须在 TMn 关闭时才能改变 TnIO1 和 TnIO0 位的值 若在 TMn 运行时改变 TnIO1 和 TnIO0 的值, PWM 输出的值是无法预料的 TnOC:TMn TPn 输出控制位比较匹配输出模式 0: 初始低 1: 初始高 PWM 模式 / 单脉冲输出模式 0: 低有效 1: 高有效这是 TMn 输出脚输出控制位 它取决于 TMn 此时正运行于比较匹配输出模式还是 PWM 模式 / 单脉冲输出模式 若 TMn 处于定时 / 计数器模式, 则其不受影响 在比较匹配输出模式时, 比较匹配发生前其决定 TMn 输出脚的逻辑电平值 在 PWM 模式 / 单脉冲输出时, 其决定 PWM 信号是高有效还是低有效 TnPOL:TMn TPn 输出极性控制位 0: 同相 1: 反相此位控制 TPn 输出脚的极性 此位为高时 TMn 输出脚反相, 为低时 TMn 输出脚同相 若 TMn 处于定时 / 计数器模式时其不受影响 TnCAPTS: 选择 TMn 捕捉触发源 0: 来自 TPn 引脚 1: 来自 TCKn 引脚 TnCCLR: 选择 TMn 计数器清零条件位 0: 比较器 P 匹配 1: 比较器 A 匹配此位用于选择清除计数器的方法 周期型 TM 包括两个比较器 - 比较器 A 和比较器 P 这两个比较器每个都可以用作清除内部计数器 TnCCLR 位设为高, 计数器在比较器 A 比较匹配发生时被清除 ; 此位设为低, 计数器在比较器 P 比较匹配发生或计数器溢出时被清除 计数器溢出清除的方法仅在 CCRP 被清除为 0 时才能生效 TnCCLR 位在 PWM, 单脉冲或输入捕捉模式时未使用 Rev

104 周期型 TM 工作模式 周期型 TM 有五种工作模式, 即比较匹配输出模式 PWM 输出模式 单脉冲输出模式 捕捉输入模式或定时 / 计数器模式 通过设置 TMnC1 寄存器的 TnM1 和 TnM0 位选择任意模式 比较匹配输出模式 为使 TM 工作在此模式,TMnC1 寄存器的 TnM1 和 TnM0 位需要设置为 00 当工作在该模式, 一旦计数器使能并开始计数, 有三种方法来清零, 分别是 : 计数器溢出, 比较器 A 比较匹配发生和比较器 P 比较匹配发生 当 TnCCLR 位为低, 有两种方法清除计数器 一种是比较器 P 比较匹配发生, 另一种是 CCRP 所有位设置为零并使得计数器溢出 此时, 比较器 A 和比较器 P 的请求标志位 TnAF 和 TnPF 将分别置起 如果 TMnC1 寄存器的 TnCCLR 位设置为高, 当比较器 A 比较匹配发生时计数器被清零 此时, 即使 CCRP 寄存器的值小于 CCRA 寄存器的值, 仅 TnAF 中断请求标志产生 所以当 TnCCLR 为高时, 不会产生 TnPF 中断请求标志 在比较匹配输出模式中,CCRA 寄存器值不能设为 0 正如该模式名所言, 当比较匹配发生后,TMn 输出脚状态改变 当比较器 A 比较匹配发生后 TnAF 中断请求标志产生时,TM 输出脚状态改变 比较器 P 比较匹配发生时产生的 TnPF 标志不影响 TMn 输出脚 TMn 输出脚状态改变方式由 TMnC1 寄存器中 TnIO1 和 TnIO0 位决定 当比较器 A 比较匹配发生时, TnIO1 和 TnIO0 位决定 TMn 输出脚输出高, 低或翻转当前状态 TMn 输出脚初始值, 既可以通过 TnON 位由低到高电平的变化设置, 也可以由 TnOC 设置 注意, 若 TnIO1 和 TnIO0 位同时为 0 时, 引脚输出不变 Rev

105 Counter Value 0x3FF CCRP CCRA CCRP=0 Counter overflow CCRP > 0 TnCCLR = 0; TnM [1:0] = 00 CCRP > 0 Counter cleared by CCRP value Pause Resume Stop Counter Restart Time TnON TnPAU TnPOL CCRP Int. Flag TnPF CCRA Int. Flag TnAF TMn O/P Pin Output pin set to initial Level Low if TnOC=0 Output Toggle with TnAF flag Here TnIO [1:0] = 11 Toggle Output select Note TnIO [1:0] = 10 Active High Output select Output not affected by TnAF flag. Remains High until reset by TnON bit Output Pin Reset to Initial value Output controlled by other pin-shared function Output Inverts when TnPOL is high 比较匹配输出模式 -- TnCCLR = 0 注 : 1. TnCCLR=0, 比较器 P 匹配将清除计数器 2. TMn 输出脚仅由 TnAF 标志位控制 3. 在 TnON 上升沿 TMn 输出脚复位至初始值 4. n=0 或 1 适用于 HT66F0175,n=1 适用于 HT66F0185 Rev

106 Counter Value 0x3FF CCRA CCRP CCRA > 0 Counter cleared by CCRA value Pause TnCCLR = 1; TnM [1:0] = 00 Resume CCRA=0 Stop Counter Restart CCRA = 0 Counter overflow Time TnON TnPAU TnPOL CCRA Int. Flag TnAF No TnAF flag generated on CCRA overflow CCRP Int. Flag TnPF TMn O/P Pin Output pin set to initial Level Low if TnOC=0 TnPF not generated Output Toggle with TnAF flag Here TnIO [1:0] = 11 Toggle Output select Note TnIO [1:0] = 10 Active High Output select Output not affected by TnAF flag. Remains High until reset by TnON bit Output Inverts when TnPOL is high Output Pin Reset to Initial value Output controlled by other pin-shared function Output does not change 比较匹配输出模式 -- TnCCLR = 1 注 : 1. TnCCLR=1, 比较器 A 匹配将清除计数器 2. TMn 输出脚仅由 TnAF 标志位控制 3. 在 TnON 上升沿 TMn 输出脚复位至初始值 4. 当 TnCCLR=1 时, 不会产生 TnPF 标志 5. n=0 或 1 适用于 HT66F0175,n=1 适用于 HT66F0185 Rev

107 定时 / 计数器模式 为使 TM 工作在此模式,TMnC1 寄存器的 TnM1 和 TnM0 位需要设置为 11 定时 / 计数器模式与比较输出模式操作方式相同, 并产生同样的中断请求标志 不同的是, 在定时 / 计数器模式下 TMn 输出脚未使用 因此, 比较匹配输出模式中的描述和时序图可以适用于此功能 该模式中未使用的 TM 输出脚用作普通 I/O 脚或其它功能 PWM 输出模式 为使 TM 工作在此模式,TMnC1 寄存器中的 TnM1 和 TnM0 位需要设置为 10, 且 TnIO1 和 TnIO0 位也需要设置为 10 TMn 的 PWM 功能在马达控制, 加热控制, 照明控制等方面十分有用 给 TMn 输出脚提供一个频率固定但占空比可调的信号, 将产生一个有效值等于 DC 均方根的 AC 方波 由于 PWM 波形的周期和占空比可调, 其波形的选择就极其灵活 在 PWM 模式中,TnCCLR 位不影响 PWM 周期 CCRA 和 CCRP 寄存器决定 PWM 波形, 一个用来清除内部计数器并控制 PWM 波形的频率, 另一个用来控制占空比 PWM 波形的周期和占空比由 CCRP 和 CCRA 寄存器的值控制 当比较器 A 或比较器 P 比较匹配发生时, 将产生 CCRA 或 CCRP 中断标志 TMnC1 寄存器中的 TnOC 位决定 PWM 波形的极性,TnIO1 和 TnIO0 位使能 PWM 输出或将 TMn 输出脚置为逻辑高或逻辑低 TnPOL 位对 PWM 输出波形的极性取反 10-bit PTM,PWM 模式 CCRP 1~ 周期 1~ 占空比 CCRA 若 f SYS =16MHz,TM 时钟源选择 f SYS /4,CCRP=512 且 CCRA=128, TMn PWM 输出频率 =(f SYS /4)/512=f SYS /2048=7.8125kHz,duty=128/512=25%, 若由 CCRA 寄存器定义的 Duty 值等于或大于 Period 值,PWM 输出占空比为 100% Rev

108 Counter Value CCRP CCRA Counter cleared by CCRP Pause Resume TnM [1:0] = 10 Counter Stop if TnON bit low Counter Reset when TnON returns high Time TnON TnPAU TnPOL CCRA Int. Flag TnAF CCRP Int. Flag TnPF TMn O/P Pin (TnOC=1) TMn O/P Pin (TnOC=0) PWM Duty Cycle set by CCRA PWM Period set by CCRP Output controlled by other pin-shared function PWM resumes operation Output Inverts When TnPOL = 1 PWM 模式 注 : 1. CCRP 清除计数器 2. 计数器清除并决定 PWM 周期 3. 当 TnIO[1:0]=00 或 01,PWM 功能不变 4. TnCCLR 位对 PWM 功能无影响 5. n=0 或 1 适用于 HT66F0175,n=1 适用于 HT66F0185 Rev

109 单脉冲输出模式 为使 TM 工作在此模式,TMnC1 寄存器中的 TnM1 和 TnM0 位需要设置为 10, 同时 TnIO1 和 TnIO0 位需要设置为 11 正如模式名所言, 单脉冲输出模式, 在 TMn 输出脚将产生一个脉冲输出 脉冲输出可以通过应用程序控制 TnON 位由低到高的转变来触发 而处于单脉冲模式时,TnON 位在 TCKn 脚自动由低转变为高, 进而初始化单脉冲输出状态 当 TnON 位转变为高电平时, 计数器将开始运行, 并产生脉冲前沿 当脉冲有效时 TnON 位保持高电平 通过应用程序使 TnON 位清零或比较器 A 比较匹配发生时, 产生脉冲下降沿 然而, 比较器 A 比较匹配发生时, 会自动清除 TnON 位并产生单脉冲输出下降沿 CCRA 的值通过这种方式控制脉冲宽度 比较器 A 比较匹配发生时, 也会产生 TMn 中断 TnON 位在计数器重启时会发生由低到高的转变, 此时计数器才复位至零 在单脉冲模式中,CCRP 寄存器,TnCCLR 位未使用 S/W Command SET TnON or TCKn Pin Transition CCRA Leading Edge TnON bit 0 à 1 CCRA Trailing Edge TnON bit 1 à 0 S/W Command CLR TnON or CCRA Compare Match TPn Output Pin 单脉冲产生示意图 Pulse Width = CCRA Value Rev

110 Counter Value CCRA CCRP Counter stopped by CCRA TnM [1:0] = 10 ; TnIO [1:0] = 11 Pause Resume Counter Stops by software Counter Reset when TnON returns high Time TnON TCKn pin Software Trigger Cleared by CCRA match Auto. set by TCKn pin Software Trigger Software Trigger Software Clear Software Trigger TnPAU TCKn pin Trigger TnPOL CCRP Int. Flag TnPF No CCRP Interrupts generated CCRA Int. Flag TnAF TMn O/P Pin (TnOC=1) TMn O/P Pin (TnOC=0) Pulse Width set by CCRA Output Inverts when TnPOL = 1 单脉冲模式 注 : 1. 通过 CCRA 匹配停止计数器 2. CCRP 未使用 3. 通过 TCKn 脚或设置 TnON 位为高来触发脉冲 4. TCKn 脚有效沿会自动置位 TnON 5. 单脉冲模式中,TnIO[1:0] 需置位 11, 且不能更改 6. n=0 或 1 适用于 HT66F0175,n=1 适用于 HT66F0185 Rev

111 捕捉输入模式 为使 TM 工作在此模式,TMnC1 寄存器的 TnM1 和 TnM0 位需要设置为 01 此模式使能外部信号捕捉并保存内部计数器当前值, 因此被用于诸如脉冲宽度测量的应用中 TPn 或 TCKn 引脚上的外部信号, 通过设置 TMnC1 寄存器的 TnCAPTS 位选择 可通过设置 TMnC1 寄存器的 TnIO1 和 TnIO0 位选择有效边沿类型, 即上升沿, 下降沿或双沿有效 计数器在 TnON 位由低到高转变时启动并通过应用程序初始化 当 TPn 或 TCKn 引脚出现有效边沿转换时, 计数器当前值被锁存到 CCRA 寄存器, 并产生 TMn 中断 不考虑 TPn 或 TCKn 引脚事件, 计数器继续工作直到 TnON 位发生下降沿跳变 当 CCRP 比较匹配发生时计数器复位至零 ;CCRP 的值通过这种方式控制计数器的最大值 当比较器 P CCRP 比较匹配发生时, 也会产生 TMn 中断 记录 CCRP 溢出中断信号的值可以测量长脉宽 通过设置 TnIO1 和 TnIO0 位选择 TPn 或 TCKn 引脚为上升沿, 下降沿或双沿有效 不考虑 TPn 或 TCKn 引脚事件, 如果 TnIO1 和 TnIO0 位都设为高, 不会产生捕捉操作, 但计数器继续运行 当 TPn 或 TCKn 引脚与其它功能共用,TMn 工作在输入捕捉模式时需多加注意 这是因为如果引脚被设为输出, 那么该引脚上的任何电平转变都可能执行输入捕捉操作 TnCCLR,TnOC 和 TnPOL 位在此模式中未使用 Rev

112 Counter Value CCRP Counter cleared by CCRP TnM [1:0] = 01 Counter Stop Counter Reset YY Resume Pause XX Time TnON TnPAU TMn capture pin TPn or TCKn Active edge Active edge Active edge CCRA Int. Flag TnAF CCRP Int. Flag TnPF CCRA Value TnIO [1:0] Value XX YY XX YY 00 Rising edge 01 Falling edge 10 Both edges 11 Disable Capture 捕捉输入模式 注 : 1. TnM[1:0]=01 并通过 TnIO[1:0] 位设置有效边沿 2. TMn 捕捉输入脚的有效边沿将计数器的值转移到 CCRA 中 3.TnCCLR 位未使用 4. 无输出功能 -TnOC 和 TnPOL 位未使用 5. 计数器值由 CCRP 决定, 在 CCRP 为 0 时, 计数器计数值可达最大 6. n=0 或 1 适用于 HT66F0175,n=1 适用于 HT66F0185 Rev

113 A/D 转换器 A/D 简介 对于大多数电子系统而言, 处理现实世界的模拟信号是共同的需求 为了完全由单片机来处理这些信号, 首先需要通过 A/D 转换器将模拟信号转换成数字信号 将 A/D 转换器电路集成入单片机, 可有效的减少外部器件, 随之而来, 具有降低成本和减少器件空间需求的优势 此系列单片机包含一个多通道的 A/D 转换器, 它们可以直接接入外部模拟信号 ( 来自传感器或其它控制信号 ) 或内部模拟信号 (Bandgap 参考电压 ) 并直接将这些信号转换成 12 位的数字量 选择转换外部或内部模拟信号由 SAINS2~ SAINS0 位和 SACS2~ SACS0 位共同控制 注意, 当外部和内部模拟信号同时要转换, 内部模拟信号有更高优先级 若要转换内部模拟信号时, 已选的外部输入通道会自动断开以避免故障 关于 A/D 输入信号的详细描述请参考 A/D 转换寄存器介绍 和 A/D 输入引脚 两节内容 下图显示了 A/D 转换器内部结构和相关的寄存器 单片机外部输入通道内部模拟信号 A/D 信号选择位 SAINS2~ SAINS0; HT66F0175 AN0~ AN7 V DD, V DD /2, V DD /4, V R, V R /2, V R /4 SACS2~ SACS0 SAINS2~ SAINS0; HT66F0185 AN0~ AN7 V DD, V DD /2, V DD /4, V R, V R /2, V R /4 SACS2~ SACS0 f SYS V DD ACE7~ACE0 SACS2~SACS0 SACKS2~ SACKS0 2 N (N=0~7) ADCEN AN0 AN1 A/D Clock A/D Converter V SS ADRFS SADOL SADOH A/D Data Registers AN7 SAINS2~SAINS0 START ADBZ ADCEN A/D Reference Voltage V REF V DD V DD /2 V DD /4 V R V R /2 V R /4 V BG V REFI SAVRS3~SAVRS0 V RI PGA (Gain=1~4) V R V DD VREFPS VREFIPS ADPGAEN A/D 转换器结构 Rev

114 A/D 转换寄存器介绍 寄存器名称 A/D 转换器的所有工作由六个寄存器控制 一对只读寄存器来存放 12 位 A/D 转换数据的值 一个寄存器 ACERL 来配置外部模拟输入引脚功能 剩下三个控制寄存器设置 A/D 转换器的操作和控制功能 位 SADOL(ADRFS=0) D3 D2 D1 D SADOL(ADRFS=1) D7 D6 D5 D4 D3 D2 D1 D0 SADOH(ADRFS=0) D11 D10 D9 D8 D7 D6 D5 D4 SADOH(ADRFS=1) D11 D10 D9 D8 SADC0 START ADBZ ADCEN ADRFS - SACS2 SACS1 SACS0 SADC1 SAINS2 SAINS1 SAINS0 - - SACKS2 SACKS1 SACKS0 SADC2 ADPGAEN VBGEN VREFIPS VREFPS SAVRS3 SAVRS2 SAVRS1 SAVRS0 ACERL ACE7 ACE6 ACE5 ACE4 ACE3 ACE2 ACE1 ACE0 A/D 转换寄存器列表 A/D 转换器数据寄存器 SADOL,SADOH 对于具有 12 位 A/D 转换器的芯片, 需要两个数据寄存器存放转换结果, 一个高字节寄存器 SADOH 和一个低字节寄存器 SADOL 在 A/D 转换完毕后, 单片机可以直接读取这些寄存器以获得转换结果 由于寄存器只使用了 16 位中的 12 位, 其数据存储格式由 SADC0 寄存器的 ADRFS 位控制, 如下表所示 D0~ D11 是 A/D 换转数据结果位 未使用的位读为 0 当 A/D 转换器除能时, 数据寄存器的值将保持不变 SADOH SADOL ADRFS D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 A/D 转换器数据寄存器 A/D 转换控制寄存器 SADC0,SADC1,SADC2,ACERL 寄存器 SADC0 SADC1 和 SADC2 用来控制 A/D 转换器的功能和操作 这些 8 位的寄存器定义包括选择连接至内部 A/D 转换器的模拟通道, 数字化数据格式, A/D 时钟源, 并控制和监视 A/D 转换器的忙碌状态 由于每个单片机只包含一个实际的模数转换电路, 因此这些外部和内部模拟信号中的每一个都需要分别被发送到转换器 SADC0 寄存器中的 SACS2~ SACS0 位用于选择哪个外部模拟输入通道被连接到内部 A/D 转换器 SADC1 寄存器中的 SAINS2~ SAINS0 位用于选择外部模拟输入通道或内部模拟信号被连接到内部 A/D 转换器 若 SAINS2~ SAINS0 位为 000 或 100, 则选择转换外部模拟输入信号, 具体通道编号由 SACS2~ SACS0 位决定 若 SAINS2~ SAINS0 位为 000 和 100 以外的其它值, 则选择转换内部模拟信号, 这些信号可以来自 A/D 转换器电源 V DD 或内部参考电压 V R 的分压, 分压比为 1 1/2 或 1/4 当选择内部模拟信号时, 外部输入通道会自动关闭以避免信号冲突 Rev

115 SAINS[2:0] SACS[2:0] 输入信号 描述 000, ~ 111 AN0~ AN7 外部模拟通道输入 001 xxx V DD A/D 转换器电源电压 010 xxx V DD /2 A/D 转换器电源电压 /2 011 xxx V DD /4 A/D 转换器电源电压 /4 101 xxx V R 内部参考电压 110 xxx V R /2 内部参考电压 /2 111 xxx V R /4 内部参考电压 /4 A/D 转换器输入信号选择 ACERL 寄存器中的模拟输入引脚功能选择位用来定义 I/O 端口中的哪些引脚为 A/D 转换器的模拟输入, 哪些引脚不作为 A/D 转换输入 当引脚作为 A/D 输入时, 其原来的 I/O 或其它引脚共用功能消失, 此外, 其内部上拉电阻也将自动断开 SADC0 寄存器 Bit Name START ADBZ ADCEN ADRFS - SACS2 SACS1 SACS0 Bit 7 Bit 6 R/W R/W R R/W R/W - R/W R/W R/W POR START: 启动 A/D 转换位 0 1 0: 启动此位用于初始化 A/D 转换过程 通常此位为低, 但如果设为高再被清零, 将初始化 A/D 转换过程 ADBZ:A/D 转换忙碌标志位 0:A/D 转换结束或未开始转换 1:A/D 转换中此位用于表明 A/D 转换过程是否正在进行 当 START 位由低变为高再变为低时,ADBZ 位为高, 表明 A/D 转换已初始化 A/D 转换结束后, 此位被清零 Bit 5 ADCEN:A/D 转换器使能控制位 0: 除能 1: 使能此位控制 A/D 内部功能 该位被置高将使能 A/D 转换器 如果该位设为低将关闭 A/D 转换器以降低功耗 当 A/D 转换器除能时,A/D 数据寄存器 SADOH 和 SADOL 的内容将保持不变 Bit 4 ADRFS:A/D 转换数据格式选择位 0:A/D 转换数据格式 SADOH=D[11:4]; SADOL=D[3:0] 1:A/D 转换数据格式 SADOH=D[11:8]; SADOL=D[7:0] 此位控制存放在两个 A/D 数据寄存器中的 12 位 A/D 转换结果的格式 细节方面请参考 A/D 数据寄存器章节 Bit 3 未定义, 读为 0 Bit 2~ 0 SACS2~ SACS0:A/D 外部模拟通道输入选择位 000:AN0 001:AN1 010:AN2 011:AN3 100:AN4 101:AN5 110:AN6 111:AN7 Rev

116 SADC1 寄存器 Bit Name SAINS2 SAINS1 SAINS0 - - SACKS2 SACKS1 SACKS0 R/W R/W R/W R/W - - R/W R/W R/W POR Bit 7~ 5 SAINS2~ SAINS0:A/D 输入信号选择位 000, 100: 外部信号 外部模拟通道输入 001: 内部信号 内部 A/D 转换器电源电压 V DD 010: 内部信号 内部 A/D 转换器电源电压 V DD /2 011: 内部信号 内部 A/D 转换器电源电压 V DD /4 101: 内部信号 内部参考电压 V R 110: 内部信号 内部参考电压 V R /2 111: 内部信号 内部参考电压 V R /4 当选择内部模拟信号时, 无论 SACS2~ SACS0 为何值, 外部通道输入信号都会自动关闭 内部参考电压可通过 SADC2 寄存器中的 SAVRS3~ SAVRS0 位选择不同的电压源 Bit 4~ 3 未定义, 读为 0 Bit 2~ 0 SADC2 寄存器 SACKS2~ SACKS0:A/D 时钟源选择位 000:f SYS 001:f SYS /2 010:f SYS /4 011:f SYS /8 100:f SYS /16 101:f SYS /32 110:f SYS /64 111:f SYS/ 128 这三位用于选择 A/D 转换器的时钟源 Bit Name ADPGAEN VBGEN VREFIPS VREFPS SAVRS3 SAVRS2 SAVRS1 SAVRS0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 Bit 6 ADPGAEN:A/D 转换器 PGA 功能使能控制位 0: 除能 1: 使能该位用于控制 A/D 转换器的内部 PGA 功能以提供不同的参考电压 当该位被置高, 内部参考电压 V R 可作为 A/D 转换器的内部转换信号或参考电压 如果内部参考电压不用于 A/D 转换器, 应正确配置 PGA 功能以减小功耗 VBGEN: 内部 Bandgap 参考电压使能控制位 0: 除能 1: 使能该位用于控制 A/D 转换器的内部 Bandgap 电路的开启 / 关闭 当该位被置高, Bandgap 参考电压可用于 A/D 转换器 如果 Bandgap 参考电压不用于 A/D 转换器, 而 LVD 或 LVR 功能关闭, 单片机会自动关闭 Bandgap 参考电压以减小功耗 当 Bandgap 参考电压用于 A/D 转换器, 在执行 A/D 转换之前需要一定的 t BGS 时间以稳定 Bandgap 电路 Rev

117 Bit 5 Bit 4 Bit 3~ 0 VREFIPS:VREFI 引脚选择位 0: 除能 不选择 VREFI 引脚 1: 使能 选择 VREFI 引脚 VREFPS:VREF 引脚选择位 0: 除能 不选择 VREF 引脚 1: 使能 选择 VREF 引脚 SAVRS3~ SAVRS0:A/D 转换器参考电压选择位 0000:V DD 0001:V REFI 0010:V REFI :V REFI :V REFI : 保留, 未使用. 1010:V BG :V BG :V BG 4 其它值 :V DD 当 A/D 转换器参考电压选择内部 V BG 电压时, 来自 VDD 或 VREFI 引脚的参考电压会自动关闭 ACERL 寄存器 Bit Name ACE7 ACE6 ACE5 ACE4 ACE3 ACE2 ACE1 ACE0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ACE7: 定义 PB3 是否为 A/D 输入 0: 不是 A/D 输入 1:A/D 输入,AN7 ACE6: 定义 PA7 是否为 A/D 输入 0: 不是 A/D 输入 1:A/D 输入,AN6 ACE5: 定义 PA6 是否为 A/D 输入 0: 不是 A/D 输入 1:A/D 输入,AN5 ACE4: 定义 PA5 是否为 A/D 输入 0: 不是 A/D 输入 1:A/D 输入,AN4 ACE3: 定义 PA4 是否为 A/D 输入 0: 不是 A/D 输入 1:A/D 输入,AN3 ACE2: 定义 PB2 是否为 A/D 输入 0: 不是 A/D 输入 1:A/D 输入,AN2 ACE1: 定义 PB1 是否为 A/D 输入 0: 不是 A/D 输入 1:A/D 输入,AN1 ACE0: 定义 PB0 是否为 A/D 输入 0: 不是 A/D 输入 1:A/D 输入,AN0 Rev

118 A/D 输入引脚 所有的 A/D 模拟输入引脚都与 I/O 引脚及其它功能共用 使用 ACERL 寄存器中的相应引脚共用功能选择位, 可以将它们设置为 A/D 转换器模拟输入脚或具有其它功能 如果对应的引脚作为 A/D 转换输入, 那么它原来的引脚功能将除能 通过这种方式, 引脚的功能可由程序来控制, 灵活地切换引脚功能 如果将引脚设为 A/D 输入, 则通过寄存器编程设置的所有上拉电阻会自动断开 请注意, 端口控制寄存器不需要为使能 A/D 输入而先设定为输入模式, 当 A/D 输入功能选择位使能 A/D 输入时, 端口控制寄存器的状态将被重置 A/D 转换器有自己的参考电压引脚 VREFI, 而通过设置 SADC2 寄存器中的 SAVRS3~ SAVRS0 位, 参考电压也可以选择来自电源电压引脚或内部 Bandgap 电路 所选的 A/D 参考电压可以输出到 VREF 引脚 模拟输入值一定不能超过 V REF 值 请注意, 在使用参考电压引脚功能前,SADC2 寄存器中的 VREFI 或 VREF 引脚功能选择位必须被合理设置 A/D 转换器参考电压 A/D 操作 A/D 转换器参考电压来自正电源电压引脚 VDD 外部参考源引脚 VREFI 或内部 Bandgap 参考源, 所选的参考电压源除了来自 V DD 的以外, 都可通过可编程增益放大器进行放大,PGA 增益可以为 或 4, 可通过 SADC2 寄存器中的 SAVRS3~ SAVRS0 位及相关引脚共用功能选择位来选择 注意, 所选的参考电压将会输出到 VREF 引脚 由于 VREFI 和 VREF 引脚都与其它功能共用, 当选择 VREFI 或 VREF 参考电压时, 需合理设置相关引脚功能选择位选择 VREFI 或 VREF 引脚功能且除能其它共用引脚功能 SADC0 寄存器中的 START 位, 用于打开 A/D 转换器 当单片机设置此位从逻辑低到逻辑高, 然后再到逻辑低, 就会开始一个模数转换周期 SADC0 寄存器中的 ADBZ 位用于表明模数转换过程是否正在进行 A/D 转换成功启动后,ADBZ 位会被单片机自动置为 1 在转换周期结束后,ADBZ 位会自动置为 0 此外, 也会置位中断控制寄存器内相应的 A/D 中断请求标志位, 如果中断使能, 就会产生对应的内部中断信号 A/D 内部中断信号将引导程序跳转到相应的 A/D 内部中断地址 如果 A/D 内部中断被禁止, 可以让单片机轮询 SADC0 寄存器中的 ADBZ 位, 检查此位是否被清除, 作为另一种侦测 A/D 转换周期结束的方法 A/D 转换器的时钟源为系统时钟 f SYS 或其分频, 而分频系数由 SADC1 寄存器中的 SACKS2~ SACKS0 位决定 虽然 A/D 时钟源是由系统时钟 f SYS 和 SACKS2~ SACKS0 位决定, 但可选择的最大 A/D 时钟源则有一些限制 由于允许的 A/D 时钟周期 t ADCK 的范围为 0.5µs~ 10µs, 所以选择系统时钟速度时就必须小心 如果系统时钟速度为 8MHz 时,SACKS2~ SACKS0 位不能设为 或 111 必须保证设置的 A/D 转换时钟周期不小于时钟周期的最小值, 否则将会产生不准确的 A/D 转换值 使用者可以参考下面的表格, 被标上星号 * 的数值是不允许的, 因为它们的 A/D 转换时钟周期小于规定的最小值 Rev

119 f SYS SACKS [2:0]= 000 (f SYS ) SACKS [2:0]= 001 (f SYS /2) SACKS [2:0]= 010 (f SYS /4) A/D 时钟周期 (t ADCK) SACKS SACKS [2:0]= 011 [2:0]= 100 (f SYS /8) (f SYS /16) SACKS [2:0]= 101 (f SYS /62) SACKS [2:0]= 110 (f SYS /64) SACKS [2:0]= 111 (f SYS /128) 1MHz 1μs 2μs 4μs 8μs 16μs * 32μs * 64μs * 128μs * 2MHz 500ns 1μs 2μs 4μs 8μs 16μs * 32μs * 64μs * 4MHz 250ns * 500ns 1μs 2μs 4μs 8μs 16μs * 32μs * 8MHz 125ns * 250ns * 500ns 1μs 2μs 4μs 8μs 16μs * 12MHz 83ns * 167ns * 333ns * 667ns 1.33μs 2.67μs 5.33μs 10.67μs * 16MHz 62.5ns * 125ns * 250ns * 500ns 1μs 2μs 4μs 8μs 20MHz 50ns * 100ns * 200ns * 400ns * 800ns 1.6μs 3.2μs 6.4μs A/D 时钟周期范例 SADC0 寄存器中的 ADCEN 位用于控制 A/D 转换电路电源的开启和关闭 该位必须置高以开启 A/D 转换器电源 当设置 ADCEN 位为高开启 A/D 转换器内部电路时, 在 A/D 转换成功开启前需一段延时 即使选择无引脚作为 A/D 输入, 如果 ADCEN 设为 1, 那么仍然会产生功耗 因此在功耗敏感的应用中, 当未使用 A/D 转换器功能时, 建议设置 ADCEN 为低以减少功耗 A/D 转换率及时序图 一个完整的 A/D 转换包含两部分, 数据采样和数据转换 数据采样时间定义为 t ADS, 需要 4 个 A/D 时钟周期, 而数据转换需要 12 个 A/D 时钟周期 所以一个完整的 A/D 转换时间,t ADC, 一共需要 16 个 A/D 时钟周期 最大 A/D 转换率 =A/D 时钟周期 /16 下列时序图表示模数转换过程中不同阶段的图形与时序 由应用程序控制开始 A/D 转换过程后, 单片机的内部硬件就会开始进行转换, 在这个过程中, 程序可以继续其它功能 A/D 转换时间为 16t ADCK,t ADCK 为 A/D 时钟周期 ton2st ADCEN START off on off on A/D sampling time A/D sampling time tads tads Start of A/D conversion Start of A/D conversion Start of A/D conversion ADBZ End of A/D conversion End of A/D conversion SACS[2:0] (SAINS =000B) 011B 010B 000B 001B A/D channel switch tadc A/D conversion time tadc A/D conversion time tadc A/D conversion time A/D 转换时序图 Rev

120 A/D 转换步骤 下面概述实现 A/D 转换过程的各个步骤 步骤 1 通过 SADC1 寄存器中的 SACKS2~ SACKS0 位, 选择所需的 A/D 转换时钟 步骤 2 将 SADC0 寄存器中的 ADCEN 位置高使能 A/D 步骤 3 通过 SADC1 寄存器中的 SAINS2~ SAINS0 位, 选择连接至内部 A/D 转换器的信号 若选择外部通道输入, 接着执行步骤 4 若选择内部模拟信号, 接着执行步骤 5 步骤 4 若已通过 SAINS2~ SAINS0 位选择 A/D 输入信号来自外部通道输入, 接着应设置相关的引脚共用功能控制位将该引脚规划为 A/D 输入引脚 通过设置 SACS2~ SACS0 位选择哪个外部通道接至 A/D 转换器 接着执行步骤 6 步骤 5 若已通过 SAINS2~ SAINS0 位选择 A/D 输入信号来自内部模拟信号, 无论 SACS2~ SACS0 为何值, 外部通道输入都会自动断开 接着执行步骤 6 步骤 6 通过 SAVRS3~ SAVRS0 位选择参考电压 步骤 7 设置 ADRFS 位选择 A/D 转换器输出数据格式 步骤 8 如果要使用中断, 则中断控制寄存器需要正确地设置, 以确保 A/D 中断功能是激活的 总中断控制位 EMI 需要置位为 1, 以及 A/D 转换器中断位 ADE 也需要置位为 1 步骤 9 现在可以通过设置 SADC0 寄存器中的 START 位从 0 到 1 再回到 0, 开始模数转换的过程 步骤 10 如果 A/D 转换正在进行中,ADBZ 位会被置为逻辑高 A/D 转换完成后, ADBZ 位会被置为逻辑低, 并可从 SADOH 和 SADOL 寄存器中读取输出数据 注 : 若使用轮询 SADC0 寄存器中 ADBZ 位的状态的方法来检查转换过程是否结束时, 则中断使能的步骤可以省略 Rev

121 编程注意事项 在编程时, 如果 A/D 转换器未使用, 通过设置 SADC0 寄存器中的 ADCEN 为低, 关闭 A/D 内部电路以减少电源功耗 此时, 不考虑输入脚的模拟电压, 内部 A/ D 转换器电路不产生功耗 如果 A/D 转换器输入脚用作普通 I/O 脚, 必须特别注意, 输入电压为无效逻辑电平也可能增加功耗 A/D 转换功能 该系列单片机含有一组 12 位的 A/D 转换器, 它们转换的最大值可达 FFFH 由于模拟输入最大值等于 V REF 的电压值, 因此每一位可表示 V REF /4096 的模拟输入值 1 LSB=V REF 4096 通过下面的等式可估算 A/D 转换器输入电压值 : A/D 输入电压 =A/D 数字输出值 V REF 4096 下图显示 A/D 转换器模拟输入值和数字输出值之间理想的转换功能 除了数字化数值 0, 其后的数字化数值会在精确点之前的 0.5 LSB 处改变, 而数字化数值的最大值将在 V REF 之前的 1.5 LSB 处改变... 0 # 5*..- 0 ), + LA HIE 4 AIK J.., 0!0 0 # 5* 0! " '! " '" " '# " '$ ) = C 1 F KJ8 J= C A 理想的 A/D 转换功能 " '$ Rev

122 A/D 转换应用范例 下面两个范例程序用来说明怎样使用 A/D 转换 第一个范例是轮询 SADC0 寄存器中的 ADBZ 位来判断 A/D 转换是否完成 ; 第二个范例则使用中断的方式判断 范例 1: 使用查询 ADBZ 的方式来检测转换结束 clr ADE ; disable ADC interrupt mov a,03h mov SADC1,a ; select f SYS /8 as A/D clock and switch off V BG voltage set ADCEN mov a,03h ; setup ACERL to configure pin AN0 mov ACERL,a mov a,20h mov SADC0,a ; enable and connect AN0 channel to A/D converter : start_conversion: clr START ; high pulse on start bit to initiate conversion set START ; reset A/D clr START ; start A/D : polling_eoc: sz ADBZ ; poll the SADC0 register ADBZ bit to detect end of A/D ; conversion jmp polling_eoc ; continue polling : mov a,sadol ; read low byte conversion result value mov SADOL _buffer,a ; save result to user defined register mov a,sadoh ; read high byte conversion result value mov SADOH _buffer,a ; save result to user defined register : jmp start_conversion; start next A/D conversion Rev

123 范例 2: 使用中断的方式来检测转换结束 clr ADE ; disable ADC interrupt mov a,03h mov SADC1,a ; select f SYS /8 as A/D clock and switch off V BG voltage set ADCEN mov a,03h ; setup ACERL to configure pin AN0 mov ACERL,a mov a,20h mov SADC0,a ; enable and connect AN0 channel to A/D converter : Start_conversion: clr START ; high pulse on START bit to initiate conversion set START ; reset A/D clr START ; start A/D clr ADF ; clear ADC interrupt request flag set ADE ; enable ADC interrupt set EMI ; enable global interrupt : : ADC_ISR: ; ADC interrupt service routine mov acc_stack,a ; save ACC to user defined memory mov a,status mov status_stack,a ; save STATUS to user defined memory : mov a, SADOL ; read low byte conversion result value mov SADOL _buffer,a ; save result to user defined register mov a, SADOH ; read high byte conversion result value mov SADOH _buffer,a ; save result to user defined register : EXIT_INT_ISR: mov a,status_stack mov STATUS,a ; restore STATUS from user defined memory mov a,acc_stack ; restore ACC from user defined memory reti Rev

124 串行接口模块 SIM SPI 接口 该系列单片机内有一个串行接口模块, 包括两种易与外部设备通信的串行接口 : 四线 SPI 或两线 I 2 C 接口 这两种接口具有相当简单的通信协议, 单片机可以通过这些接口与传感器 闪存或 EEPROM 内存等硬件设备通信 SIM 接口的引脚与 I/O 引脚共用, 所以要使用 SIM 功能时应先通过相应的引脚功能选择位选择 SIM 功能 因为这两种接口共用引脚和寄存器, 所以要通过一个 SIMC0 寄存器中的 SIM2~ SIM0 位来选择哪一种通信接口 若 SIM 功能使能, 可通过上拉电阻控制寄存器选择与输入 / 输出口共用的 SIM 脚的上拉电阻 SPI 接口常用于与外部设备如传感器 闪存或 EEPROM 内存等通信 四线 SPI 接口最初是由摩托罗拉公司研制, 是一个有相当简单的通信协议的串行数据接口, 这个协议可以简化与外部硬件的编程要求 SPI 通信模式为全双工模式, 且能以主 / 从模式的工作方式进行通信, 单片机既可以做为主机, 也可以做为从机 虽然 SPI 接口理论上允许一个主机控制多个从机, 但此处的 SPI 中只有一个片选信号引脚 SCS 若主机需要控制多个从机, 可使用输入 / 输出引脚选择从机 SPI 接口操作 SPI 接口是一个全双工串行数据传输器 SPI 接口的四线为 :SDI SDO SCK 和 SCS SDI 和 SDO 是数据的输入和输出线 SCK 是串行时钟线,SCS 是从机的选择线 SPI 的接口引脚与普通 I/O 口和 I 2 C 的功能脚共用 通过设定 SIMC0/SIMC2 寄存器的对应位和引脚功能选择位, 来使能 SPI 接口 SPI 可以通过 SIMC0 寄存器中的 SIMEN 位来除能或使能 连接到 SPI 接口的单片机以从主 / 从模式进行通信, 且主机完成所有的数据传输初始化, 并控制时钟信号 由于单片机只有一个 SCS 引脚, 所以只能拥有一个从机设备 可通过软件控制 SCS 引脚使能与除能, 设置 CSEN 位为 1 使能 SCS 功能, 设置 CSEN 位为 0,SCS 引脚将处于浮空状态 该系列单片机的 SPI 功能具有以下特点 : 全双工同步数据传输 主从模式 最低有效位先传或最高有效位先传的数据传输模式 传输完成标志位 时钟源上升沿或下降沿有效 SPI 接口状态受很多因素的影响, 如单片机处于主机或从机的工作模式和 CSEN,SIMEN 位的状态 5 21 = I J A H = L A 5 + 5, 5, ,1 5, 5 +5 SPI 主 / 从机连接方式 Rev

125 , =J=*K I 5 1, 6 N 4N5 DEB J4A C IJA E H 5,12 E 5, 2 E + - >EJ + 2 *>EJ E +? A 2 = HEJO + JH * KIO 5 J= J K I 9 +. =C B5 ;5 B6 * =J?D BHA G K A?O +? 5 K H?A5A A J? = C E + 5- >EJ SPI 方框图 SPI 寄存器 有三个内部寄存器用于控制 SPI 接口的所有操作, 其中有一个数据寄存器 SIMD 两个控制寄存器 SIMC0 和 SIMC2 注意,SIMC1 寄存器仅用于 I 2 C 接口 寄存器名称 位 SIMC0 SIM2 SIM1 SIM0 SIMDEB1 SIMDEB0 SIMEN SIMICF SIMC2 D7 D6 CKPOLB CKEG MLS CSEN WCOL TRF SIMD D7 D6 D5 D4 D3 D2 D1 D0 SIMD 寄存器 SPI 寄存器列表 SIMD 寄存器用于存储发送和接收的数据 这个寄存器由 SPI 和 I 2 C 功能所共用 在单片机尚未将数据写入到 SPI 总线中时, 要传输的数据应先存在 SIMD 中 SPI 总线接收到数据之后, 单片机就可以从 SIMD 数据寄存器中读取 所有通过 SPI 传输或接收的数据都必须通过 SIMD 实现 Bit Name D7 D6 D5 D4 D3 D2 D1 D0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR 为未知 该系列单片机中也有两个控制 SPI 接口功能的寄存器,SIMC0 和 SIMC2 应注意的是 SIMC2 与 I 2 C 接口功能中的寄存器 SIMA 是同一个寄存器 SPI 功能不会用到寄存器 SIMC1,SIMC1 只适用于 I 2 C 中 寄存器 SIMC0 用于控制使能 / 除能功能和设置数据传输的时钟频率 寄存器 SIMC2 用于其它的控制功能如 LSB/MSB 选择, 写冲突标志位等 Rev

126 SIMC0 寄存器 Bit Name SIM2 SIM1 SIM0 SIMDEB1 SIMDEB0 SIMEN SIMICF R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 5 SIM2~ SIM0:SIM 工作模式控制位 000:SPI 主机模式 ;SPI 时钟为 f SYS /4 001:SPI 主机模式 ;SPI 时钟为 f SYS /16 010:SPI 主机模式 ;SPI 时钟为 f SYS /64 011:SPI 主机模式 ;SPI 时钟为 f TBC 100:SPI 主机模式 ;SPI 时钟为 TM1 CCRP 匹配频率 /2 101:SPI 从机模式 110:I 2 C 从机模式 111: 非 SIM 功能这几位用于设置 SIM 功能的工作模式, 用于选择 SPI 的主从模式和 SPI 的主机时钟频率及 I 2 C 或 SPI 功能 SPI 时钟源可来自于系统时钟也可以选择来自 TM1 若选择的是作为 SPI 从机, 则其时钟源从外部主机而得 Bit 4 未定义, 读为 0 Bit 3~ 2 Bit 1 Bit 0 SIMDEB1~ SIMDEB0:I 2 C 去抖时间选择位 00: 无去抖时间 01:2 个系统时钟去抖时间 1x:4 个系统时钟去抖时间 SIMEN:SIM 控制位 0: 除能 1: 使能此位为 SIM 接口的开 / 关控制位 此位为 0 时,SIM 接口除能,SDI SDO SCK 和 SCS 或 SDA 和 SCL 脚将失去 SPI 或 I 2 C 功能,SIM 工作电流减小到最小值 此位为 1 时,SIM 接口使能 若 SIM 经由 SIM2~ SIM0 位设置为工作在 SPI 接口, 当 SIMEN 位由低到高转变时,SPI 控制寄存器中的设置不会发生变化, 其首先应在应用程序中初始化 若 SIM 经由 SIM2~ SIM0 位设置为工作在 I 2 C 接口, 当 SIMEN 位由低到高转变时,I 2 C 控制寄存器中的设置, 如 HTX 和 TXAK, 将不会发生变化, 其首先应在应用程序中初始化, 此时相关 I 2 C 标志, 如 HCF HAAS HBB SRW 和 RXAK, 将被设置为其默认状态 SIMICF:SIM 未完成标志位 0: 未发生 1: 发生此位仅当 SIM 配置在 SPI 从机模式时有效 如果 SPI 工作在从机模式且 SIMEN 和 CSEN 位都为 1, 但在 SPI 数据传输完全结束前 SCS 线被外部主机拉高, SIMICF 和 TRF 位都会被置高 在这种情况下, 如果相应的中断功能使能将产生一个中断 然而, 如果 SIMICF 位是由软件应用程序设为 1, 那么 TRF 位将不会置高 Rev

127 SIMC2 寄存器 Bit Name D7 D6 CKPOLB CKEG MLS CSEN WCOL TRF R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 未定义位用户可通过软件程序对这两位进行读写 CKPOLB:SPI 时钟线的基础状态位 0: 当时钟无效时,SCK 口为高电平 1: 当时钟无效时,SCK 口为低电平此位决定了时钟线的基础状态, 当时钟无效时, 若此位为高,SCK 为低电平, 若此位为低,SCK 为高电平 CKEG:SPI 的 SCK 有效时钟边沿类型位 CKPOLB=0 0:SCK 为高电平且在 SCK 上升沿抓取数据 1:SCK 为高电平且在 SCK 下降沿抓取数据 CKPOLB=1 0:SCK 为低电平且在 SCK 下降沿抓取数据 1:SCK 为低电平且在 SCK 上升沿抓取数据 CKEG 和 CKPOLB 位用于设置 SPI 总线上时钟信号输入和输出方式 在执行数据传输前, 这两位必须被设置, 否则将产生错误的时钟边沿信号 CKPOLB 位决定时钟线的基本状态, 若时钟无效且此位为高, 则 SCK 为低电平, 若时钟无效且此位为低, 则 SCK 为高电平 CKEG 位决定有效时钟边沿类型, 取决于 CKPOLB 的状态 MLS:SPI 数据移位命令位 0:LSB 优先 1:MSB 优先数据移位选择位, 用于选择数据传输时高位优先传输还是低位优先传输 此位设置为高时高位优先传输, 为低时低位优先传输 CSEN:SPI SCS 引脚控制位 0: 除能 1: 使能 CSEN 位用于 SCS 引脚的使能 / 除能控制 此位为低时,SCS 除能并处于浮空状态 此位为高时,SCS 使能并作为选择脚 WCOL:SPI 写冲突标志位 0: 无冲突 1: 冲突 WCOL 标志位用于监测数据冲突的发生 此位为高时, 数据在传输时被写入 SIMD 寄存器 若数据正在被传输时, 此操作无效 此位可被应用程序清零 TRF:SPI 发送 / 接收结束标志位 0: 数据正在发送 1: 数据发送结束 TRF 位为发送 / 接收结束标志位, 当 SPI 数据传输结束时, 此位自动置为高, 但需通过应用程序设置为 0 此位也可用于产生中断 Rev

128 SPI 通信 将 SIMEN 设置为高, 使能 SPI 功能之后, 单片机处于主机模式, 当数据写入到寄存器 SIMD 的同时传输 / 接收开始进行 数据传输完成时,TRF 位将自动被置位但清除只能通过应用程序完成 单片机处于从机模式时, 收到主机发来的信号之后, 会传输 SIMD 中的数据, 而且在 SDI 引脚上的数据也会被移位到 SIMD 寄存器中 主机应在输出时钟信号之前先输出一个 SCS 信号以使能从机, 从机的数据传输功能也应在与 SCS 信号相关的适当时候准备就绪, 这由 CKPOLB 和 CKEG 位决定 所附时序图表明了在 CKPOLB 和 CKEG 位各种设置情况下从机数据与 SCS 信号的关系 即使在单片机处于空闲模式 1, 如果所选的 SPI 时钟源有效,SPI 主机功能仍将继续执行 NJAH = 2K 0 EC D * + - / * + - / * + - / * + - / 5, + - /, %,,$,,, #,",!,,"!,, #,,$,, % 5, + - /, %,,$,,, #,",!,,"!,, #,,$,, % 5,1,= J= + = F J KA H 9 HEJA J 5 1, SPI 主机模式时序 * * 5,, %,,$,,, #,",!,,"!,, #,,$,, % 5,1, =J=+= F J KA H 9 HEJA J 5 1, AI J?D = C A K JE BEHIJ5+ C A SPI 从机模式时序 CKEG=0 Rev

129 * * 5,, %,,$,,, #,",!,,"!,, #,,$,, % 5,1,= J= + = F J KA H 9 HEJA J 5 1, 5,?D = C A=II I =IM HEJE C??KHI 5, EIB =JE CEB JA. H52 1I AEB EI= M =OIA = > EC H AJD I A5+ 5 A L A SPI 从机模式时序 CKEG=1 ) 5 2 JH 1 = IBA H + A =H9 + 9 HEJA, =J= E J 51, =I JA H =I JA H H I = LA 5 = LA ; H EC B K H A+ 2 * + - / H= I EIIE? F 64. ; 4 A J= BH 51, ) + A =H H= IBA H. E EI D ; -, SPI 传输控制流程图 Rev

130 I 2 C 接口 I 2 C 可以和传感器 EEPROM 内存等外部硬件接口进行通信 最初是由飞利浦公司研制, 是适用于同步串行数据传输的双线式低速串行接口 I 2 C 接口具有两线通信, 非常简单的通信协议和在同一总线上和多个设备进行通信的能力的优点, 使之在很多的应用场合中大受欢迎 8,, 5,) 5 +, ALE?A 5 = LA, ALE?A =IJA H, ALE?A 5 = LA I 2 C 主从总线连接图 I 2 C 接口操作 I 2 C 串行接口是一个双线的接口, 有一条串行数据线 SDA 和一条串行时钟线 SCL 由于可能有多个设备在同一条总线上相互连接, 所以这些设备的输出都是开漏型输出 因此应在这些输出口上都应加上拉电阻 应注意的是,I 2 C 总线上的每个设备都没有选择线, 但分别与唯一的地址一一对应, 用于 I 2 C 通信 如果有两个设备通过双向的 I 2 C 总线进行通信, 那么就存在一个主机和一个从机 主机和从机都可以用于传输和接收数据, 但只有主机才可以控制总线动作 那些处于从机模式的设备, 要在 I 2 C 总线上传输数据只有两种方式, 一是从机发送模式, H AI I =J?D, =J=*K I B 5 7* 6 E A K J + H J , J=4A = C IJA E H 51, 5 = LA HA II4 AC EIJA H 51 ) E 5, ) 2 E B 5 ;5, A > K?A + EH?K EJHO 5 1,- * 5 1,- * 0 6: * J E, EHA?JE + JH 7 :, =J=E 5 *, =J= K J 5* 6 :) 5 DEBJ4 AC EIJA H 6 H= I EJ 4A? ALA E + JH 7 EJ HA II + F= H = JH 4 MHEJA 5 =LA & > J,= E J= + F AJA, AJA?J5 J= HJ H5 J F HA II =J?D 0 )) 5*EJ JAHHK FJ >EJ 5 49 * EJ 0 +. * EJ 0 ** * J E I 2 C 方框图 Rev

131 5 6 ) 46 IEC = BH = IJAH 5 =LA= 4 9 > EJBH = IJAH )? M A@ C A BH I =LA = J = JA > O BH = IJAH )? A CA BH I =L A 寄存器名称 5 6 2IEC = BH = IJAH SIMDEB1 和 SIMDEB0 位决定 I 2 C 接口的去抖时间 这个功能可以使用内部时钟在外部时钟上增加一个去抖间隔, 会减小时钟线上毛刺发生的可能性, 以避免单片机发生误动作 如果选择了这个功能, 去抖时间可以选择 2 个或 4 个系统时钟 为了达到需要的 I 2 C 数据传输速度, 系统时钟 f SYS 和 I 2 C 去抖时间之间存在一定的关系 I 2 C 标准模式或者快速模式下, 用户需注意所选的系统时钟频率与标准匹配去抖时间的设置, 其具体关系如下表所示 I 2 C 寄存器 I 2 C 去抖时间选择 I 2 C 标准模式 (100kHz) I 2 C 快速模式 (400kHz) 无去抖时间 f SYS > 2 MHz f SYS > 5 MHz 2 个系统时钟去抖时间 f SYS > 4 MHz f SYS > 10 MHz 4 个系统时钟去抖时间 f SYS > 8 MHz f SYS > 20 MHz I 2 C 最小 f SYS 频率 I 2 C 总线有三个控制寄存器 SIMC0 SIMC1 和 SIMTOC, 及一个从机地址寄存器 SIMA 和一个数据寄存器 SIMD SIMD 寄存器,SPI 章节中已有介绍, 用于存储正在传输和接收的数据, 当单片机将数据写入 I 2 C 总线之前, 实际将被传输的数据存放在寄存器 SIMD 中 从 I 2 C 总线接收到数据之后, 单片机就可以从寄存器 SIMD 中得到这个数据 I 2 C 总线上的所有传输或接收到的数据都必须通过 SIMD 应注意的是 SIMA 寄存器也有另外一个名字,SIMC2, 使用 SPI 功能时会用到 I 2 C 接口会用到寄存器 SIMC0 中的 SIMEN 位和 SIM2~ SIM0 位 位 SIMC0 SIM2 SIM1 SIM0 SIMDEB1 SIMDEB0 SIMEN SIMICF SIMC1 HCF HAAS HBB HTX TXAK SRW IAMWU RXAK SIMA IICA6 IICA5 IICA4 IICA3 IICA2 IICA1 IICA0 D0 SIMD D7 D6 D5 D4 D3 D2 D1 D0 SIMTOC SIMTOEN SIMTOF SIMTOS5 SIMTOS4 SIMTOS3 SIMTOS2 SIMTOS1 SIMTOS0 I 2 C 寄存器列表 Rev

132 SIMD 寄存器 SIMD 用于存储发送和接收的数据 这个寄存器由 SPI 和 I 2 C 功能所共用 在单片机尚未将数据写入到 I 2 C 总线中时, 要传输的数据应存在 SIMD 中 I 2 C 总线接收到数据之后, 单片机就可以从 SIMD 数据寄存器中读取 所有通过 I 2 C 传输或接收的数据都必须通过 SIMD 实现 Bit Name D7 D6 D5 D4 D3 D2 D1 D0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR SIMA 寄存器 为未知 SIMA 寄存器也在 SPI 接口功能中使用, 但其名称改为 SIMC2 SIMA 寄存器用于存放 7 位从机地址, 寄存器 SIMA 中的 bit 7 ~ bit 1 是单片机的从机地址, bit 0 未定义 如果接至 I 2 C 的主机发送处的地址和寄存器 SIMA 中存储的地址相符, 那么就选中了这个从机 应注意的是寄存器 SIMA 和 SPI 接口使用的寄存器 SIMC2 是同一个寄存器 Bit Name IICA6 IICA5 IICA4 IICA3 IICA2 IICA1 IICA0 D0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 1 IICA6~ IICA0:I 2 C 从机地址位 IICA6~ IICA0 是 I 2 C 从机地址 bit 6 ~ bit 0 Bit 0 未定义位此位可通过软件程序进行读写 单片机中有三个控制 I 2 C 接口功能的寄存器,SIMC0,SIMC1 和 SIMTOC 寄存器 SIMC0 用于控制使能 / 除能功能和设置数据传输的时钟频率 寄存器 SIMC1 包括多个用于表明 I 2 C 传输状态的相关标志位 SIMTOC 寄存器用于控制 I 2 C 总线超时功能, 在 I 2 C 超时控制章节有描述 Rev

133 SIMC0 寄存器 Bit Name SIM2 SIM1 SIM0 SIMDEB1 SIMDEB0 SIMEN SIMICF R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 5 SIM2~ SIM0:SIM 工作模式控制位 000:SPI 主机模式 ;SPI 时钟为 f SYS /4 001:SPI 主机模式 ;SPI 时钟为 f SYS /16 010:SPI 主机模式 ;SPI 时钟为 f SYS /64 011:SPI 主机模式 ;SPI 时钟为 f TBC 100:SPI 主机模式 ;SPI 时钟为 TM1 CCRP 匹配频率 /2 101:SPI 从机模式 110:I 2 C 从机模式 111: 非 SIM 功能这几位用于设置 SIM 功能的工作模式, 用于选择 SPI 的主从模式和 SPI 的主机时钟频率及 I 2 C 或 SPI 功能 SPI 时钟源可来自于系统时钟也可以选择来自 TM1 若选择的是作为 SPI 从机, 则其时钟源从外部主机而得 Bit 4 未定义, 读为 0 Bit 3~ 2 Bit 1 Bit 0 SIMDEB1~ SIMDEB0:I 2 C 去抖时间选择位 00: 无去抖时间 01:2 个系统时钟去抖时间 1x:4 个系统时钟去抖时间 SIMEN:SIM 控制位 0: 除能 1: 使能此位为 SIM 接口的开 / 关控制位 此位为 0 时,SIM 接口除能,SDI SDO SCK 和 SCS 或 SDA 和 SCL 脚将失去 SPI 或 I 2 C 功能,SIM 工作电流减小到最小值 此位为 1 时,SIM 接口使能 若 SIM 经由 SIM2~ SIM0 位设置为工作在 SPI 接口, 当 SIMEN 位由低到高转变时,SPI 控制寄存器中的设置不会发生变化, 其首先应在应用程序中初始化 若 SIM 经由 SIM2~ SIM0 位设置为工作在 I 2 C 接口, 当 SIMEN 位由低到高转变时,I 2 C 控制寄存器中的设置, 如 HTX 和 TXAK, 将不会发生变化, 其首先应在应用程序中初始化, 此时相关 I 2 C 标志, 如 HCF HAAS HBB SRW 和 RXAK, 将被设置为其默认状态 SIMICF:SIM 未完成标志位 0: 未发生 1: 发生此位仅当 SIM 配置在 SPI 从机模式时有效 如果 SPI 工作在从机模式且 SIMEN 和 CSEN 位都为 1, 但在 SPI 数据传输完全结束前 SCS 线被外部主机拉高, SIMICF 和 TRF 位都会被置高 在这种情况下, 如果相应的中断功能使能将产生一个中断 然而, 如果 SIMICF 位是由软件应用程序设为 1, 那么 TRF 位将不会置高 Rev

134 SIMC1 寄存器 Bit Name HCF HAAS HBB HTX TXAK SRW IAMWU RXAK R/W R R R R/W R/W R/W R/W R POR Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 HCF:I 2 C 总线数据传输结束标志位 0: 数据正在被传输 1:8 位数据传输完成数据正在传输时该位为低 当 8 位数据传输完成时, 此位为高并产生一个中断 HAAS:I 2 C 总线地址匹配标志位 0: 地址不匹配 1: 地址匹配此标志位用于决定从机地址是否与主机发送地址相同 若地址匹配此位为高, 否则此位为低 HBB:I 2 C 总线忙标志位 0:I 2 C 总线闲 1:I 2 C 总线忙当检测到 START 信号时 I 2 C 忙, 此位变为高 当检测到 STOP 信号时 I 2 C 总线停止, 该位变为低 HTX:I 2 C 从机处于发送或接收模式选择位 0: 从机处于接收模式 1: 从机处于发送模式 TXAK:I 2 C 总线发送确认标志位 0: 从机发送确认标志 1: 从机没有发送确认标志单片机接收 8 位数据之后会将该位在第九个时钟传到总线上 如果单片机想要接收更多的数据, 则应在接收数据之前将此位设置为 0 SRW:I 2 C 从机读 / 写标志位 0: 从机应处于接收模式 1: 从机应处于发送模式 SRW 位是 I 2 C 从机读写标志位 决定主机是否希望传输或接收来自 I 2 C 总线的数据 当传输地址和从机的地址相同时,HAAS 位会被设置为高, 主机将检测 SRW 位来决定进入发送模式还是接收模式 如果 SRW 位为高时, 主机会请求从总线上读数据, 此时设备处于传输模式 当 SRW 位为低时, 主机往总线上写数据, 设备处于接收模式以读取该数据 IAMWU:I 2 C 地址匹配唤醒控制位 0: 除能 1: 使能 唤醒后必须由应用程序清除此位应设置为 1 使能 I 2 C 地址匹配以使系统从休眠或空闲模式中唤醒 若进入休眠或空闲模式前 IAMWU 已经设置以使能 I 2 C 地址匹配唤醒功能, 在系统唤醒后须应用程序清除此位以确保单片机正确地运行 RXAK:I 2 C 总线接收确认标志位 0: 从机接收到确认标志 1: 从机没有接收到确认标志 RXAK 位是接收确认标志位 如果 RXAK 位为 0 即 8 位数据传输之后, 设备在第九个时钟有接受到一个正确的确认位 如果从机处于发送状态, 从机会检查 RXAK 位来判断主机是否愿意继续接收下一个字节 因此直到 RXAK 为 1 时, 从机传输方停止发送数据 这时, 从机传输方将释放 SDA 线, 主机发出停止信号释放 I 2 C 总线 Rev

135 I 2 C 总线通信 I 2 C 总线上的通信需要四步完成, 一个起始信号, 一个从机地址发送, 一个数据传输, 还有一个停止信号 当起始信号被写入 I 2 C 总线时, 总线上的所有从机都会接收到这个起始信号并且被通知总线上会即将有数据到达 数据的前 7 位是从机地址, 高位在前, 低位在后 如果发出的地址和从机地址匹配,SIMC1 寄存器的 HAAS 位会被置位, 同时产生 I 2 C 中断 进入中断服务程序后, 系统要检测 HAAS 位和 SIMTOF 位, 以判断 I 2 C 总线中断是来自从机地址匹配, 还是来自 8 位数据传递完毕, 或是来自 I 2 C 总线超时 在数据传递中, 注意的是, 在 7 位从机地址被发送后, 接下来的一位, 即第 8 位, 是读 / 写控制位, 该位的值会反映到 SRW 位中 从机通过检测 SRW 位以确定主控制器是要进入发送模式还是接收模式 在 I 2 C 总线开始传送数据前, 需要先初始化 I 2 C 总线, 初始化 I 2 C 总线步骤如下 : 步骤 1 设置 SIMC0 寄存器中 SIM2~ SIM0 位为 110 和 SIMEN 位为 1, 以使能 I 2 C 总线 步骤 2 向 I 2 C 总线地址寄存器 SIMA 写入从机地址 步骤 3 设置中断控制寄存器中的 SIME 中断使能位, 以使能 SIM 中断 5 J= HJ HEJA 5 = LA HA IIJ 5 1 ) + H A?E@A M DA J C J 1 + * KI * KI 1 JA HHK F J ; AI 5 AJ5 1-9 =EJB H1 JA HHKF J / J = E 2H C H = / J = E 2H C H = I 2 C 总线初始化流程图 Rev

136 I 2 C 总线起始信号 起始信号只能由连接 I 2 C 总线的主机产生, 而不是由从机产生 总线上的所有从机都可以侦测到起始信号 如果有从机侦测到起始信号, 则表明 I 2 C 总线处于忙碌状态, 并会置位 HBB 起始信号是指在 SCL 为高电平时,SDA 线上发生从高到低的电平变化 I 2 C 从机地址 I 2 C 总线上的所有从机都会侦测由主机发出的起始信号 发送起始信号后, 紧接着主机会发送从机地址以选择要进行数据传输的从机 所有在 I 2 C 总线上的从机接收到 7 位地址数据后, 都会将其与各自内部的地址进行比较 如果从机从主机上接收到的地址与自身内部的地址相匹配, 则会产生一个 I 2 C 总线中断信号 地址位接下来的一位为读 / 写状态位 ( 即第 8 位 ), 将被保存到 SIMC1 寄存器的 SRW 位, 随后发出一个低电平应答信号 ( 即第 9 位 ) 当单片机从机的地址匹配时, 会将状态标志位 HAAS 置位 I 2 C 总线有三个中断源, 当程序运行至中断服务子程序时, 通过检测 HAAS 位和 SIMTOF 位, 以判断 I 2 C 总线中断是来自从机地址匹配, 还是来自 8 位数据传递完毕, 或是来自 I 2 C 总线超时 当是从机地址匹配发生中断时, 则从机或是用于发送模式并将数据写进 SIMD 寄存器, 或是用于接收模式并从 SIMD 寄存器中读取空值以释放 SCL 线 I 2 C 总线读 / 写信号 SIMC1 寄存器的 SRW 位用来表示主机是要从 I 2 C 总线上读取数据还是要将数据写到 I 2 C 总线上 从机则通过检测该位以确定自己是作为发送方还是接收方 当 SRW 置 1, 表示主机要从 I 2 C 总线上读取数据, 从机则作为发送方, 将数据写到 I 2 C 总线 ; 当 SRW 清 0, 表示主机要写数据到 I 2 C 总线上, 从机则做为接收方, 从 I 2 C 总线上读取数据 I 2 C 总线从机地址确认信号 主机发送呼叫地址后, 当 I 2 C 总线上的任何从机内部地址与其匹配时, 会发送一个应答信号 此应答信号会通知主机有从机已经接收到了呼叫地址 如果主机没有收到应答信号, 则主机必须发送停止 (STOP) 信号以结束通信 当 HAAS 为高时, 表示从机接收到的地址与自己内部地址匹配, 则从机需检查 SRW 位, 以确定自己是作为发送方还是作为接收方 如果 SRW 位为高, 从机须设置成发送方, 这样会置位 SIMC1 寄存器的 HTX 位 如果 SRW 位为低, 从机须设置成接收方, 这样会清零 SIMC1 寄存器的 HTX 位 I 2 C 总线数据和确认信号 在从机确认接收到从机地址后, 会进行 8 位宽度的数据传输 这个数据传输顺序是的高位在前, 低位在后 接收方在接收到 8 位数据后必须发出一个应答信号 ( 0 ) 以继续接收下一个数据 如果发送方没接收到应答信号, 发送方将释放 SDA 线, 同时, 主机将发出 STOP 信号以释放 I 2 C 总线 所传送的数据存储在 SIMD 寄存器中 如果设置成发送方, 从机必须先将欲传输的数据写到 SIMD 寄存器中 ; 如果设置成接收方, 从机必须从 SIMD 寄存器读取数据 当从机接收器想要继续接收下一个数据时, 必须在第 9 个时钟发出应答信号 (TXAK) 被设为发送方的从机将检测寄存器 SIMC1 中的 RXAK 位以判断是否传输下一个字节的数据, 如果单片机不传输下一个字节, 那么它将释放 SDA 线并等待接收主机的停止信号 Rev

137 5 + 5 J= HJ 5 = LA HA II 5 49 ) + 5,) 5 +, =J= ) + 5 J F 5,) 5 5= JHJ > EJ 5 ) 5 > EJI >EJ > EJ 5 = ALE?A =? M A@ C A> EJ>EJ,, J= = & > EJI ) ) + 4 :) > EJB HJH = I EJ JAH 6: ) > EJB HHA?AELA H > EJ 2 5 JF > EJ 5 5) 54, ), ) 5 5) 54, ), ) 2 注 :* 当从机地址匹配时, 单片机必须选择设置为发送模式还是接收模式 若设置为发送模式, 需写数据至 SIMD 寄存器 ; 若设置为接收模式, 需立即从 SIMD 寄存器中虚读数据以释放 SCL 线 I 2 C 通信时序图 5 J= HJ ; AI 0 )) 5 ; AI A BH 5 1,J HA A = IA 5 + E A 0 6: ; AI ; AI : : : ) J= = J 5 1, J H A A IA5+ = E A, K O HA BH 5 1,J HA A = IA 5 + E A ; AI 4 :) : : ) 9 J= = J 5 1, HA A = I A5 + E A, K O HA BH 5 1,J AH A = A I 5 + E A I 2 C 总线 ISR 流程图 Rev

138 I 2 C 超时控制 超时功能可减少 I 2 C 接收错误的时钟源而引起的锁死问题 如果连接到 I 2 C 总线的时钟源经过一段时间还未接收到, 则在一定的超时周期后,I 2 C 电路和寄存器将复位 超时计数器在 I 2 C 总线 START 和 地址匹配 条件下开始计数, 且在 SCL 下降沿清零 在下一个 SCL 下降沿到来之前, 如果超时时间大于 SIMTOC 寄存器指定的超时周期, 则超时发生 I 2 C STOP 条件发生时超时功能终止 J= HJ 5 = LA HA II 5 49 ) + 5,) JE A K J? K JAHIJ= HJ 5 J F 5,) 1+ JE A K? J K JAHHA IAJ 5 + A C ELA = JJH = IEJE I 2 C 超时时序图 当 I 2 C 超时计数器溢出时, 计数器将停止计数,SIMTOEN 位被清零, 且 SIMTOF 位被置高以表明超时计数器中断发生 超时计数器中断使用的也是 I 2 C 中断向量 当 I 2 C 超时发生时,I 2 C 内部电路会被复位, 寄存器也将发生如下复位情况 寄存器 SIMD,SIMA,SIMC0 SIMC1 超时发生后的 I 2 C 寄存器 I 2 C 超时发生后保持不变 复位至 POR SIMTOF 标志位由应用程序清零 共有 64 个超时周期, 可通过 SIMTOC 寄存器的 SIMTOS5~ SIMTOS0 位进行选择 超时周期可通过公式计算 :((1~ 64) (32/f SUB )) 由此可得超时周期范围为 1ms~ 64ms SIMTOC 寄存器 Bit Name SIMTOEN SIMTOF SIMTOS5 SIMTOS4 SIMTOS3 SIMTOS2 SIMTOS1 SIMTOS0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 Bit 6 Bit 5~ 0 SIMTOEN:SIM I 2 C 超时功能控制位 0: 除能 1: 使能 SIMTOF:SIM I 2 C 超时标志位 0: 未发生 1: 发生 SIMTOS5~ SIMTOS0:SIM I 2 C 超时时间选择位 I 2 C 超时时钟源是 f SUB /32 I 2 C 超时时间计算方法 :(SIMTOS[5:0]+1) (32/f SUB ) Rev

139 比较器 模拟比较器仅存在于 HT66F0185 单片机内 具有暂停 极性选择 迟滞等功能, 可通过寄存器进行灵活配置 比较器的引脚与普通 I/O 引脚共用, 当比较器功能未使用时, 此引脚可做普通引脚使用而不浪费 I/O 资源 比较器 + : 2 E ID= H A IA A?J? JH 比较器操作 比较器中断 单片机 HT66F0185 包含一个比较器功能, 用于比较两个模拟电压, 基于它们的差值上提供一个输出 控制寄存器 CPC 可控制相应的内部比较器 比较器的输出可由寄存器的一位记录, 并且在共用的 I/O 引脚上输出 此外, 比较器功能有输出极性, 迟滞功能和暂停控制 当比较器使能时, 连接到与比较器共用的输入引脚的上拉电阻将自动失效 当比较器输入接近其切换电压时, 由于输入信号上升或下降速度较慢, 比较器输出端可能会产生一些伪输出信号 通过选择迟滞功能提供少量正反馈给比较器可使此种情况的发生率降至最低 理想情况下正负输入信号在同一个电压点时比较器将发生开关动作, 但是不可避免的输入失调电压会导致情况不确定 若迟滞功能使能, 也可增加切换偏差值 比较器具有中断功能 当输出状态改变时, 相应的中断标志将会置位, 若应答中断使能位被置位, 系统将跳转至相应的中断向量中执行 注意, 触发比较器产生中断的条件是 COUT 位状态的改变, 而非比较器输出引脚状态的改变 单片机处于休眠或空闲模式且比较器使能时, 若外部输入引脚导致比较器输出状态发生改变, 则由此产生的中断标志位也可产生一个唤醒动作 若要除能唤醒功能, 进入休眠或空闲模式前中断标志位应先置为高 编程注意事项 若比较器使能, 当单片机进入休眠或空闲模式时其仍保持有效并会有一定的耗电, 用户可考虑在进入休眠或空闲模式前先关闭比较器 由于比较器引脚与普通输入 / 输出脚共用, 若比较器功能使能时, 这些引脚的输入 / 输出寄存器将读为 0 ( 端口控制寄存器读为 1 ) 或读为端口数据寄存器的值 ( 端口控制寄存器读为 0 ) Rev

140 CPC 寄存器 Bit Name CSEL CEN CPOL COUT COS CMPEG1 CMPEG0 CHYEN R/W R/W R/W R/W R R/W R/W R/W R/W POR Bit7 Bit 6 Bit 5 Bit 4 Bit3 Bit 2~ 1 Bit 0 CSEL: 比较器引脚或 I/O 引脚选择位 0: 输入 / 输出引脚 1: 比较器输入引脚 C+ 和 C- 此位为比较器输入引脚或输入 / 输出引脚选择位 为 1 时, 比较器输入引脚使能 此时, 引脚的输入 / 输出引脚功能失效, 与比较器共用引脚的上拉电阻配置选项将自动失效 CEN: 比较器开 / 关控制位 0: 关闭 1: 开启此位为比较器开 / 关控制位 为 0 时, 比较器关闭, 即使其输入引脚上加有模拟电压也不会产生功耗 对功耗要求严格的应用中, 当比较器未使用或单片机进入休眠或空闲模式之前, 此位应清零 CPOL: 比较器输出极性位 0: 输出同相 1: 输出反相此位决定比较器极性 为 0 时,COUT 位与比较器输出条件同相 ; 为 1 时, COUT 位与比较器输出条件反相 COUT: 比较器输出位 CPOL=0 0:C+ < C- 1:C+ > C- CPOL=1 0: C+ > C- 1: C+ < C- 此位为比较器输出位 此位的极性由比较器输入电压和 CPOL 位的状态决定 COS: 比较器输出路径选择位 0:CX 引脚 ( 比较器输出到 CX 脚 ) 1: 输入 / 输出引脚 ( 比较器输出仅内部使用 ) CMPEG1~ CMPEG0: 比较器输出中断触发边沿选择位 00: 上升沿 如果 COUT 状态从 0 变为 1, 产生比较器中断触发信号 01: 下降沿 如果 COUT 状态从 1 变为 0, 产生比较器中断触发信号 1x: 双沿 如果 COUT 状态从从 0 变为 1 或从 1 变为 0, 产生比较器中断触发信号 CHYEN: 比较器迟滞功能控制位 0: 关闭 1: 开启此位为迟滞控制位 为 1 时, 比较器有一定量迟滞, 具体见比较器电气特性表 滞后产生的正反馈将减少比较器门槛附近的伪开关效应的影响 Rev

141 带 SCOM 和 SSEG 功能的 LCD LCD 操作 该系列单片机具有驱动外部 LCD 面板的能力 LCD 驱动的 COM 脚 SCOM0~ SCOM5 和 SEG 脚 SSEG0~ SSEG19 或 SSEG0~ SSEG23 与 I/O 口共用 LCD 信号 COM 和 SEG 由应用程序实现 该系列单片机通过设置相关 I/O 引脚为 COM 引脚和 SEG 引脚, 以驱动外部 LCD 面板 LCD 驱动功能是由几个 LCD 控制寄存器一起控制的, 另外, 这些寄存器还可设置 LCD 的开启和关闭以及 SCOM 和 SSEG 引脚的 R-type 偏压电流, 使得 LCD 驱动器 COM 和 SEG 引脚输出 V SS (1/3)V DD (2/3)V DD 和 V DD 的电压, 从而实现 1/3 bias LCD 的显示 SLCDC0 寄存器中的 LCDEN 位是 LCD 驱动的主控制位, 它与 COMnEN 和 SEGnEN 位搭配共同选择哪些输入 / 输出引脚用于 LCD 驱动 需注意的是, 输入 / 输出端口控制寄存器不需要设置为输出以使能 LCD 驱动操作 V DD V DD COMnEN COMSEGSn 6 6 SCOM0/SSEG0 (2/3) V DD (1/3) V DD LCD Voltage Select Circuit LCD COM/SEG Analog Switch SCOM5/SSEG5 SSEG6 SSEGm ISEL[1:0] SEGmEN m = 19 for HT66F0175 m = 23 for HT66F0185 LCDEN FRAME 软件控制 LCD 驱动器结构 LCD Frames 一个完整的 LCD 波形周期包含两个 Frame, 即 Frame 0 和 Frame 1 下面将做出详细解释 : Frame 0 当要输出 Frame 0 的波形, 需将 SLCDC0 寄存器中的 FRAME 位设为 0 在 Frame 0, COM 信号输出可以是 V DD, 或是 V BIAS = (1/3 ) V DD SEG 信号输出可以是 V SS, 或是 V BIAS = (2/3 ) V DD Rev

142 Frame 1 当要输出 Frame 1 的波形, 需将 SLCDC0 寄存器中的 FRAME 位设为 1 在 Frame 1, COM 信号输出可以是 V SS, 或是 V BIAS =(2/3 ) V DD SEG 信号输出可以是 V DD, 或是 V BIAS = (1/3 ) V DD COMn 的波形, 由应用程序设定 SLCDC0 寄存器中的 FRAME 位控制, 及相应的 I/O 共用引脚数据位决定 COMn 引脚目前输出是 V DD, V SS 或 V BIAS SEGm 的波形, 由应用程序设定 FRAME 位控制, 及相应的 I/O 共用引脚数据位决定 SEGm 引脚目前输出是 V DD, V SS 或 V BIAS 典型的 1/3 bias LCD 波形由应用程序以及 LCD 电压选择电路产生, 波形图如下 请注意, 图中 1 代表点亮 LCD 像素 SCOM0 ~ SCOM5 引脚的 COM 信号极性为 0 或 1, 由相应的 I/O 共用引脚数据位产生 Frame 0 Frame 1 Frame 0 Frame 1 Frame 0 Frame 0 COM V DD (2/3) V DD (1/3) V DD V SS COM V DD (2/3) V DD (1/3) V DD V SS COM V DD (2/3) V DD (1/3) V DD V SS COM V DD (2/3) V DD (1/3) V DD V SS SEG V DD (2/3) V DD (1/3) V DD V SS SEG V DD (2/3) V DD (1/3) V DD V SS 注 : 图形中的逻辑值即为相应 I/O 共用引脚数据位值 1/3 Bias LCD 波形 4-COM 和 2-SEG 应用 Rev

143 LCD 控制寄存器 寄存器列表 LCD 驱动器 COM 和 SEG 口可以提供多种驱动电流选择以适应不同 LCD 面板的需求 通过设置 SLCDC0 寄存器中 ISEL0 位和 ISEL1 位可以配置不同的偏压电阻 所有 COM 和 SEG 引脚和 I/O 引脚共用, 可分别通过 SLCDCn 寄存器的相应引脚功能选择位选择 COM 和 SEG 引脚 位 SLCDC0 FRAME ISEL1 ISEL0 LCDEN COM3EN COM2EN COM1EN COM0EN SLCDC1 COM5EN COM4EN COMSEGS5 COMSEGS4 COMSEGS3 COMSEGS2 COMSEGS1 COMSEGS0 SLCDC2 SEG13EN SEG12EN SEG11EN SEG10EN SEG9EN SEG8EN SEG7EN SEG6EN SLCDC3 - - SEG19EN SEG18EN SEG17EN SEG16EN SEG15EN SEG14EN 寄存器列表 LCD 驱动器控制寄存器列表 HT66F0175 位 SLCDC0 FRAME ISEL1 ISEL0 LCDEN COM3EN COM2EN COM1EN COM0EN SLCDC1 COM5EN COM4EN COMSEGS5 COMSEGS4 COMSEGS3 COMSEGS2 COMSEGS1 COMSEGS0 SLCDC2 SEG13EN SEG12EN SEG11EN SEG10EN SEG9EN SEG8EN SEG7EN SEG6EN SLCDC3 SEG21EN SEG20EN SEG19EN SEG18EN SEG17EN SEG16EN SEG15EN SEG14EN SLCDC SEG23EN SEG22EN SLCDC0 寄存器 LCD 驱动器控制寄存器列表 HT66F0185 Bit Name FRAME ISEL1 ISEL0 LCDEN COM3EN COM2EN COM1EN COM0EN R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 Bit 6~ 5 Bit 4 Bit 3 Bit 2 Bit 1 FRAME:SCOM/SSEG 输出 Frame 选择 0:Frame 0 1:Frame 1 ISEL1~ ISEL0:SCOM /SSEG 典型偏压电流选择 (V DD =5V) 00:8.3μA 01:16.7μA 10:50μA 11:100μA LCDEN:SCOM/SSEG 模块使能控制 0: 除能 1: 使能若 LCDEN 被置为 1, 可通过设置 COMnEN 和 SEGmEN 位使能 SCOMn 和 SSEGm 引脚功能 若 LCDEN 被清零, 则 SCOMn 和 SSEGm 将输出 V SS COM3EN:SCOM3/SSEG3 或其它引脚功能选择 0: 其它引脚功能 1:SCOM3/SSEG3 功能 COM2EN:SCOM2/SSEG2 或其它引脚功能选择 0: 其它引脚功能 1:SCOM2/SSEG2 功能 COM1EN:SCOM1/SSEG1 或其它引脚功能选择 0: 其它引脚功能 1:SCOM1/SSEG1 功能 Rev

144 Bit 0 COM0EN:SCOM0/SSEG0 或其它引脚功能选择 0: 其它引脚功能 1:SCOM0/SSEG0 功能 SLCDC1 寄存器 Bit Name COM5EN COM4EN COMSEGS5 COMSEGS4 COMSEGS3 COMSEGS2 COMSEGS1 COMSEGS0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 COM5EN:SCOM5/SSEG5 或其它引脚功能选择 0: 其它引脚功能 1:SCOM5/SSEG5 功能 COM4EN:SCOM4/SSEG4 或其它引脚功能选择 0: 其它引脚功能 1:SCOM4/SSEG4 功能 COMSEGS5:SCOM5 或 SSEG5 引脚功能选择 0:SCOM5 1:SSEG5 COMSEGS4:SCOM4 或 SSEG4 引脚功能选择 0:SCOM4 1:SSEG4 COMSEGS3:SCOM3 或 SSEG3 引脚功能选择 0:SCOM3 1:SSEG3 COMSEGS2:SCOM2 或 SSEG2 引脚功能选择 0:SCOM2 1:SSEG2 COMSEGS1:SCOM1 或 SSEG1 引脚功能选择 0:SCOM1 1:SSEG1 COMSEGS0:SCOM0 或 SSEG0 引脚功能选择 0:SCOM0 1:SSEG0 SLCDC2 寄存器 Bit Name SEG13EN SEG12EN SEG11EN SEG10EN SEG9EN SEG8EN SEG7EN SEG6EN R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 Bit 6 Bit 5 SEG13EN:SSEG13 引脚功能选择 0: 其它引脚功能 1:SSEG13 功能 SEG12EN:SSEG12 引脚功能选择 0: 其它引脚功能 1:SSEG12 功能 SEG11EN:SSEG11 引脚功能选择 0: 其它引脚功能 1:SSEG11 功能 Rev

145 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 SEG10EN:SSEG10 引脚功能选择 0: 其它引脚功能 1:SSEG10 功能 SEG9EN:SSEG9 引脚功能选择 0: 其它引脚功能 1:SSEG9 功能 SEG8EN:SSEG8 引脚功能选择 0: 其它引脚功能 1:SSEG8 功能 SEG7EN:SSEG7 引脚功能选择 0: 其它引脚功能 1:SSEG7 功能 SEG6EN:SSEG6 引脚功能选择 0: 其它引脚功能 1:SSEG6 功能 SLCDC3 寄存器 HT66F0175 Bit Name SEG19EN SEG18EN SEG17EN SEG16EN SEG15EN SEG14EN R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 6 未定义, 读为 0 Bit 5 SEG19EN:SSEG19 引脚功能选择 0: 其它引脚功能 1:SSEG19 功能 Bit 4 SEG18EN:SSEG18 引脚功能选择 0: 其它引脚功能 1:SSEG18 功能 Bit 3 SEG17EN:SSEG17 引脚功能选择 0: 其它引脚功能 1:SSEG17 功能 Bit 2 SEG16EN:SSEG16 引脚功能选择 0: 其它引脚功能 1:SSEG16 功能 Bit 1 SEG15EN:SSEG15 引脚功能选择 0: 其它引脚功能 1:SSEG15 功能 Bit 0 SEG14EN:SSEG14 引脚功能选择 0: 其它引脚功能 1:SSEG14 功能 Rev

146 SLCDC3 寄存器 HT66F0185 Bit Name SEG21EN SEG20EN SEG19EN SEG18EN SEG17EN SEG16EN SEG15EN SEG14EN R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 SEG21EN:SSEG21 引脚功能选择 0: 其它引脚功能 1:SSEG21 功能 SEG20EN:SSEG20 引脚功能选择 0: 其它引脚功能 1:SSEG20 功能 SEG19EN:SSEG19 引脚功能选择 0: 其它引脚功能 1:SSEG19 功能 SEG18EN:SSEG18 引脚功能选择 0: 其它引脚功能 1:SSEG18 功能 SEG17EN:SSEG17 引脚功能选择 0: 其它引脚功能 1:SSEG17 功能 SEG16EN:SSEG16 引脚功能选择 0: 其它引脚功能 1:SSEG16 功能 SEG15EN:SSEG15 引脚功能选择 0: 其它引脚功能 1:SSEG15 功能 SEG14EN:SSEG14 引脚功能选择 0: 其它引脚功能 1:SSEG14 功能 SLCDC4 寄存器 HT66F0185 Bit Name SEG23EN SEG22EN R/W R/W R/W POR 0 0 Bit 7~ 2 未定义, 读为 0 Bit 1 SEG23EN:SSEG23 引脚功能选择 0: 其它引脚功能 1:SSEG23 功能 Bit 0 SEG22EN:SSEG22 引脚功能选择 0: 其它引脚功能 1:SSEG22 功能 Rev

147 UART 接口 UART 接口模块仅包含在 HT66F0185 单片机内 HT66F0185 单片机具有一个全双工的异步串行通信接口 UART, 可以很方便的与其它具有串行口的芯片通信 UART 具有许多功能特性, 发送或接收串行数据时, 将数据组成一个 8 位或 9 位的数据块, 连同数据特征位一并传输 具有检测数据覆盖或帧错误等功能 UART 功能占用一个内部中断向量, 当接收到数据或数据发送结束, 触发 UART 中断 集成的 UART 功能包含以下特性 : 全双工通用异步接收器 / 发送器 8 位或 9 位传输格式 奇校验 偶校验或无校验 1 位或 2 位停止位 8 位预分频的波特率发生器 奇偶 帧 噪声和溢出检测 支持地址匹配中断 ( 最后一位 =1) 独立的发送和接收使能 2-byte FIFO 接收缓冲器 发送和接收中断 中断可由下列条件初始化 : 发送器为空 发送器空闲 接收完成 接收器溢出 地址匹配 Transmitter Shift Register (TSR) Receiver Shift Register (RSR) MSB LSB TX Pin RX Pin MSB LSB TX Register (TXR) f SYS Baud Rate Generator RX Register (RXR) Buffer Data to be transmitted Data received MCU Data Bus UART 数据传输方框图 UART 外部引脚 内部 UART 有两个外部引脚 TX 和 RX, 可与外部串行接口进行通信 TX 和 RX 分别为 UART 发送脚和接收脚, 与 I/O 口或其它功能共用引脚 当 UARTEN TXEN 和 RXEN 位置高时, 将自动设置这些 I/O 脚或其它共用功能脚作为 TX 输出和 RX 输入, 并且除能 TX 和 RX 引脚上的上拉电阻功能 当 UARTEN TXEN 或 RXEN 位清零除能 TX 或 RX 引脚功能后,TX 或 RX 引脚将用于 I/O 脚或其它共用功能脚, 取决于共用引脚功能的优先级 Rev

148 UART 数据传输方案 上图显示了 UART 接口的整体数据传输结构 需要发送的数据首先通过应用程序写入 TXR 寄存器, 接着此数据被传输到发送移位寄存器 TSR 中, 然后在波特率发生器的控制下将 TSR 寄存器中数据一位位地移到 TX 引脚上, 低位在前 TXR 寄存器被映射到单片机的数据存储器中, 而发送移位寄存器没有实际地址, 所以发送移位寄存器不可直接操作 数据在波特率发生器的控制下, 低位在前高位在后, 从外部引脚 RX 进入接收移位寄存器 RSR 当数据接收完成, 数据从接收移位寄存器移入可被用户程序操作的 RXR 寄存器中 RXR 寄存器被映射到单片机数据存储器中, 而接收移位寄存器没有实际地址, 所以接收移位寄存器不可直接操作 需要注意的是, 上述发送寄存器 TXR 和接收寄存器 RXR, 其实是共用一个地址的数据寄存器 TXR_RXR 寄存器 UART 状态和控制寄存器 与 UART 功能相关的有五个寄存器, 即控制 UART 模块整体功能的 USR UCR1 和 UCR2 寄存器, 控制波特率的 BRG 寄存器, 管理发送和接收数据的数据寄存器 TXR_RXR 寄存器名称 位 USR PERR NF FERR OERR RIDLE RXIF TIDLE TXIF UCR1 UARTEN BNO PREN PRT STOPS TXBRK RX8 TX8 UCR2 TXEN RXEN BRGH ADDEN WAKE RIE TIIE TEIE BRG BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0 TXR_RXR TXRX7 TXRX6 TXRX5 TXRX4 TXRX3 TXRX2 TXRX1 TXRX0 UART 状态和控制寄存器列表 仅适用于 HT66F0185 TXR_RXR 寄存器 TXR_RXR 是一个数据寄存器, 用来存储 TX 引脚将要发送或 RX 引脚正在接收 的数据 Bit Name TXRX7 TXRX6 TXRX5 TXRX4 TXRX3 TXRX2 TXRX1 TXRX0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR : 未知 Bit 7~ 0 TXRX7~ TXRX0:UART 发送 / 接收数据位 Rev

149 USR 寄存器 寄存器 USR 是 UART 的状态寄存器, 可以通过程序读取 所有 USR 位是只读的 详细解释如下 : Bit Name PERR NF FERR OERR RIDLE RXIF TIDLE TXIF R/W R R R R R R R R POR Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 PERR: 奇偶校验出错标志位 0: 奇偶校验正确 1: 奇偶校验出错 PERR 是奇偶校验出错标志位 若 PERR=0, 奇偶校验正确 ; 若 PERR=1, 接收到的数据奇偶校验出错 只有使能了奇偶校验此位才有效 可使用软件清除该标志位, 即先读取 USR 寄存器再读 RXR 寄存器来清除此位 NF: 噪声干扰标志位 0: 没有受到噪声干扰 1: 受到噪声干扰 NF 是噪声干扰标志位 若 NF=0, 没有受到噪声干扰 ; 若 NF=1,UART 接收数据时受到噪声干扰 它与 RXIF 在同周期内置位, 但不会与溢出标志位同时置位 可使用软件清除该标志位, 即先读取 USR 寄存器再读 RXR 寄存器将清除此标志位 FERR: 帧错误标志位 0: 无帧错误发生 1: 有帧错误发生 FREE 是帧错误标志位 若 FREE=0, 没有帧错误发生 ; 若 FREE=1, 当前的数据发生了帧错误 可使用软件清除该标志位, 即先读取 USR 寄存器再读 RXR 寄存器来清除此位 OERR: 溢出错误标志位 0: 无溢出错误发生 1: 有溢出错误发生 OERR 是溢出错误标志位, 表示接收缓冲器是否溢出 若 OERR=0, 没有溢出错误 ; 若 OERR=1, 发生了溢出错误, 它将影响下一组数据的接收 可通过软件清除该标志位, 即先读取 USR 寄存器再读 RXR 寄存器将清除此标志位 RIDLE: 接收状态标志位 0: 正在接收数据 1: 接收器空闲 RIDLE 是接收状态标志位 若 RIDLE=0, 正在接收数据 ; 若 RIDLE=1, 接收器空闲 在接收到停止位和下一个数据的起始位之间,RIDLE 被置位, 表明 UART 空闲,RX 脚处于逻辑高状态 RXIF: 接收寄存器状态标志位 0:RXR 寄存器为空 1:RXR 寄存器含有有效数据 RXIF 是接收寄存器状态标志位 当 RXIF=0,RXR 寄存器为空 ; 当 RXIF=1, RXR 寄存器接收到新数据 当数据从移位寄存器加载到 RXR 寄存器中, 如果 UCR2 寄存器中的 RIE=1, 则会触发中断 当接收数据时检测到一个或多个错误时, 相应的标志位 NF FERR 或 PERR 会在同一周期内置位 读取 USR 寄存器再读 RXR 寄存器, 如果 RXR 寄存器中没有新的数据, 那么将清除 RXIF 标志 Rev

150 Bit 1 Bit 0 TIDLE: 数据发送完成标志位 0: 数据传输中 1: 无数据传输 TIDLE 是数据发送完成标志位 若 TIDLE=0, 数据传输中 当 TXIF=1 且数据发送完毕或者暂停字被发送时,TIDLE 置位 TIDLE=1,TX 引脚空闲且处于逻辑高状态 读取 USR 寄存器再写 TXR 寄存器将清除 TIDLE 位 数据字符或暂停字就绪时, 不会产生该标志位 TXIF: 发送数据寄存器 TXR 状态位 0: 数据还没有从缓冲器加载到移位寄存器中 1: 数据已从缓冲器加载到移位寄存器中 (TXR 数据寄存器为空 ) TXIF 是发送数据寄存器为空标志位 若 TXIF=0, 数据还没有从缓冲器加载到移位寄存器中 ; 若 TXIF=1, 数据已从缓冲器中加载到移位寄存器中 读取 USR 存器再写 TXR 寄存器将清除 TXIF 当 TXEN 被置位, 由于发送缓冲器未满, TXIF 也会被置位 UCR1 寄存器 UCR1 和 UCR2 是 UART 的两个控制寄存器, 用来定义各种 UART 功能, 例如 UART 的使能与除能 奇偶校验控制和传输数据的长度等等 详细解释如下 : Bit Name UARTEN BNO PREN PRT STOPS TXBRK RX8 TX8 R/W R/W R/W R/W R/W R/W R/W R W POR : 未知 Bit 7 UARTEN:UART 功能使能位 0:UART 除能,TX 和 RX 脚作为其它功能共用引脚 1:UART 使能,TX 和 RX 脚作为 UART 功能引脚此位为 UART 的使能位 UARTEN=0,UART 除能,RX 和 TX 作为其它功能共用引脚 ;UARTEN=1,UART 使能,TX 和 RX 将分别由 TXEN 和 RXEN 控制 当 UART 被除能将清除缓冲器, 所有缓冲器中的数据将被忽略, 另外波特率计数器 错误和状态标志位被复位,TXEN RXEN TXBRK RXIF OERR FERR PERR 和 NF 清零而 TIDLE TXIF 和 RIDLE 置位,UCR1 UCR2 和 BRG 寄存器中的其它位保持不变 若 UART 工作时 UARTEN 清零, 所有发送和接收将停止, 模块也将复位成上述状态 当 UART 再次使能时, 它将在上次配置下重新工作 Bit 6 BNO: 发送数据位数选择位 0:8-bit 传输数据 1:9-bit 传输数据 BNO 是发送数据位数选择位 BNO=1, 传输数据为 9 位 ;BNO=0, 传输数据为 8 位 若选择了 9 位数据传输格式,RX8 和 TX8 将分别存储接收和发送数据的第 9 位 Bit 5 PREN: 奇偶校验使能位 0: 奇偶校验除能 1: 奇偶校验使能此位为奇偶校验使能位 PREN=1, 使能奇偶校验 ;PREN=0, 除能奇偶校验 Bit 4 PRT: 奇偶校验选择位 0: 偶校验 1: 奇校验奇偶校验选择位 PRT=1, 奇校验 ;PRT=0, 偶校验 Rev

151 Bit 3 STOPS: 停止位的长度选择位 0: 有一位停止位 1: 有两位停止位此位用来设置停止位的长度 STOP=1, 有两位停止位 ;STOP=0, 只有一位停止位 Bit 2 TXBRK: 暂停字发送控制位 0: 没有暂停字要发送 1: 发送暂停字 TXBRK 是暂停字发送控制位 TXBRK=0, 没有暂停字要发送,TX 引脚正常操作 ; TXBRK=1, 将会发送暂停字, 发送器将发送逻辑 0 若 TXBRK 为高, 缓冲器中数据发送完毕后, 发送器将至少保持 13 位宽的低电平直至 TXBRK 复位 Bit 1 RX8: 接收 9-bit 数据传输格式中的第 8 位 ( 只读 ) 此位只有在传输数据为 9 位的格式中有效, 用来存储接收数据的第 9 位 BNO 是用来控制传输位数是 8 位还是 9 位 Bit 0 TX8: 发送 9-bit 数据传输格式中的第 8 位 ( 只写 ) 此位只有在传输数据为 9 位的格式中有效, 用来存储发送数据的第 9 位 BNO 是用来控制传输位数是 8 位还是 9 位 UCR2 寄存器 UCR2 是 UART 的第二个控制寄存器, 它的主要功能是控制发送器 接收器以 及各种 UART 中断源的使能或除能 它也可用来控制波特率, 使能接收唤醒和 地址侦测 详细解释如下 : Bit Name TXEN RXEN BRGH ADDEN WAKE RIE TIIE TEIE R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 Bit 6 Bit 5 TXEN:UART 发送使能位 0:UART 发送除能 1:UART 发送使能此位为发送使能位 TXEN=0, 发送将被除能, 发送器立刻停止工作 另外缓冲器将被复位, 此时 TX 引脚将作为其它功能共用引脚 若 TXEN=1 且 UARTEN=1, 则发送将被使能,TX 引脚将由 UART 来控制 在数据传输时清除 TXEN 将中止数据发送且复位发送器, 此时 TX 引脚将作为其它功能共用引脚 RXEN:UART 接收使能位 0:UART 接收除能 1:UART 接收使能此位为接收使能位 RXEN=0, 接收将被除能, 接收器立刻停止工作 另外缓冲器将被复位, 此时 RX 引脚将作为其它功能共用引脚 若 RXEN=1 且 UARTEN=1, 则接收将被使能,RX 引脚将由 UART 来控制 在数据传输时清除 RXEN 将中止数据接收且复位接收器, 此时 RX 引脚将作为其它功能共用引脚 BRGH: 波特率发生器高低速选择位 0: 低速波特率 1: 高速波特率此位为波特率发生器高低速选择位, 它和 BRG 寄存器一起控制 UART 的波特率 BRGH=1, 为高速模式 ;BRGH=0, 为低速模式 Rev

152 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ADDEN: 地址检测使能位 0: 地址检测除能 1: 地址检测使能此位为地址检测使能控制位 ADDEN=1, 地址检测使能, 此时数据的第 8 位 (BON=0) 或第 9 位 (BON=1) 为高, 那么接到的是地址而非数据 若相应的中断使能且接收到的值最高位为 1, 那么中断请求标志将会被置位, 若最高位为 0, 那么将不会产生中断且收到的数据也会被忽略 WAKE:RX 脚下降沿唤醒功能使能位 0:RX 脚下降沿唤醒功能除能 1:RX 脚下降沿唤醒功能使能此位为接收唤醒功能的使能和除能位 若 WAKE=1 且在空闲模式 0 或休眠模式下,RX 引脚的下降沿将唤醒单片机 若 WAKE=0 且在暂停模式下,RX 引脚的任何边沿都不能唤醒单片机 RIE: 接收中断使能位 0: 接收中断除能 1: 接收中断使能此位为接收中断使能或除能位 若 RIE=1, 当 OERR 或 RXIF 置位时,UART 的中断请求标志置位 ; 若 RIE=0,UART 中断请求标志不受 OERR 和 RXIF 影响 TIIE: 发送器空闲中断使能位 0: 发送器空闲中断除能 1: 发送器空闲中断使能此位为发送器空闲中断的使能或除能位 若 TIIE=1, 当 TIDLE 置位时,UART 的中断请求标志置位 ; 若 TIIE=0,UART 中断请求标志不受 TIDLE 的影响 TEIE: 发送寄存器为空中断使能位 0: 发送寄存器为空中断除能 1: 发送寄存器为空中断使能此位为发送寄存器为空中断的使能或除能位 若 TEIE=1, 当 TXIF 置位时, UART 的中断请求标志置位 ; 若 TEIE=0,UART 中断请求标志不受 TXIF 的影响 波特率发生器 UART 自身具有一个波特率发生器, 通过它可以设定数据传输速率 波特率是由一个独立的内部 8 位计数器产生, 它由 BRG 寄存器和 UCR2 寄存器的 BRGH 位来控制 BRGH 是决定波特率发生器处于高速模式还是低速模式, 从而决定计算公式的选用 BRG 寄存器的值 N 可根据下表中的公式计算,N 的范围是 0 到 255 UCR2 的 BRGH 位 0 1 波特率 (BR) f SYS [64(N+1)] f SYS [16(N+1)] 为得到相应的波特率, 首先需要设置 BRGH 来选择相应的计算公式从而算出 BRG 的值 由于 BRG 的值不连续, 所以实际波特率和理论值之间有一个偏差 下面举例怎样计算 BRG 寄存器中的值 N 和误差 Rev

153 BRG 寄存器 Bit Name BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7~ 0 波特率和误差的计算 : 未知 BRG7~ BRG0: 波特率值软件设置 UCR2 寄存器中的 BRGH 位 ( 设置波特率发生器的速度 ) 和 BRG 寄存器 ( 设置波特率的值 ), 一起控制 UART 的波特率 系统选用 4MHz 时钟频率且 BRGH=0, 若期望的波特率为 4800, 计算它的 BRG 寄存器的值 N, 实际波特率和误差 根据上表, 波特率 BR= 转换后的公式 N= f SYS [64(N+1)] f SYS (BR 64) -1 带入参数 N= = ( ) 取最接近的值, 十进制 12 写入 BRG 寄存器, 实际波特率如下 BR= [64(12+1)] = 4808 因此, 误差 = UART 模块的设置与控制 =0.16% UART 采用标准的不归零码传输数据, 这种方法通常被称为 NRZ 法 它由 1 位起始位,8 位或 9 位数据位和 1 位或者两位停止位组成 奇偶校验是由硬件自动完成的, 可设置成奇校验 偶校验和无校验三种格式 常用的数据传输格式由 8 位数据位,1 位停止位, 无校验组成, 用 8 N 1 表示, 它是系统上电的默认格式 数据位数 停止位数和奇偶校验由 UCR1 寄存器的 BNO PRT PREN 和 STOPS 设定 用于数据发送和接收的波特率由一个内部的 8 位波特率发送器产生, 数据传输时低位在前高位在后 尽管 UART 发送器和接收器在功能上相互独立, 但它们使用相同的数据传输格式和波特率, 在任何情况下, 停止位是必须的 UART 接口的使能和除能 UART 是由 UCR1 寄存器的 UARTEN 位来使能和除能的 若 UARTEN TXEN 和 RXEN 都为高, 则 TX 和 RX 分别为 UART 的发送端口和接收端口 若没有数据发送,TX 引脚默认状态为高电平 UARTEN 清零将除能 TX 和 RX, 其可用作普通 I/O 口或其它引脚共用功能 当 UART 被除能时将清空缓冲器, 所有缓冲器中的数据将被忽略, 另外错误和状态标志位被复位,TXEN RXEN TXBRK RXIF OERR FERR PERR 和 NF 清零而 TIDLE TXIF 和 RIDLE 置位,UCR1 UCR2 和 BRG 寄存器中的其它位保持不变 若 UART 工作时 UARTEN 清零, 所有发送和接收将停止, 模块也将复位成上述状态 当 UART 再次使能时, 它将在上次配置下重新工作 Rev

154 数据位 奇偶校验位以及停止位的选择 数据传输格式由数据长度 是否校验 校验类型 地址位以及停止位长度组成 它们都是由 UCR1 寄存器的各个位控制的 BNO 决定数据传输是 8 位还是 9 位 ; PRT 决定校验类型 ;PREN 决定是否选择奇偶校验 ; 而 STOPS 决定选用 1 位还是 2 位停止位 下表列出了各种数据传输格式 地址位用来确定此帧是否为地址 停止位的长度和数据位的长度无关 起始位 数据位 地址位 校验位 停止位 8 位数据位 9 位数据位 下图是传输 8 位和 9 位数据的波形 发送和接收数据格式 5 J= HJ*EJ 2 =HEJO *EJ * EJ * EJ * EJ * EJ! * EJ" * EJ# * EJ$ * EJ% 5 J F*EJ & * EJ, =J=. H =J AN J 5 J= HJ * EJ 5 J= HJ*EJ * EJ * EJ * EJ * EJ! * EJ" * EJ# * EJ$ * EJ% 2 =HEJO *EJ * EJ& 5 J F*EJ AN J 5 J= HJ * EJ ' * EJ, =J=. H =J UART 发送器 UCR1 寄存器的 BNO 位是控制数据传输的长度 BNO=1 其长度为 9 位, 第 9 位 MSB 存储在 UCR1 寄存器的 TX8 中 发送器的核心是发送移位寄存器 TSR, 它的数据由发送寄存器 TXR 提供, 应用程序只须将发送数据写入 TXR 寄存器 上组数据的停止位发出前,TSR 寄存器禁止写入 如果还有新的数据要发送, 一旦停止位发出, 待发数据将会从 TXR 寄存器加载到 TSR 寄存器 TSR 不像其它寄存器一样映射到数据存储器, 所以应用程序不能对其进行读写操作 TXEN=1, 发送使能, 但若 TXR 寄存器没有数据或者波特率没有设置, 发送器将不会工作 先写 TXR 寄存器再置高 TXEN 也会触发发送 当发送器使能, 若 TSR 寄存器为空, 数据写入 TXR 寄存器将会直接加载到 TSR 寄存器中 发送器工作时,TXEN 清零, 发送器将立刻停止工作并且复位, 此时 TX 引脚用作普通 I/O 口或其它引脚共用功能 Rev

155 发送数据 当 UART 发送数据时, 数据从移位寄存器中移到 TX 引脚上, 其低位在前高位在后 在发送模式中,TXR 寄存器在内部总线和发送移位寄存器间形成一个缓冲 如果选择 9 位数据传输格式, 最高位 MSB 存储在 UCR1 寄存器的 TX8 中 发送器初始化可由如下步骤完成 : 正确地设置 BNO PRT PREN 和 STOPS 位以确定数据长度 校验类型和停止位长度 设置 BRG 寄存器, 选择期望的波特率 置高 TXEN, 使能 UART 发送器且使 TX 作为 UART 的发送端 读取 USR 寄存器, 然后将待发数据写入 TXR 寄存器 注意, 此步骤会清除 TXIF 标志位 如果要发送多个数据只需重复上一步骤 当 TXIF=0 时, 数据将禁止写入 TXR 寄存器 可以通过以下步骤来清除 TXIF: 1. 读取 USR 寄存器 2. 写 TXR 寄存器只读标志位 TXIF 由 UART 硬件置位 若 TXIF=1,TXR 寄存器为空, 其它数据可以写入而不会覆盖以前的数据 若 TEIE=1,TXIF 标志位会影响中断 在数据传输时, 写 TXR 指令会将待发数据暂存在 TXR 寄存器中, 当前数据发送完毕后, 待发数据被加载到发送移位寄存器中 当发送器空闲时, 写 TXR 指令会将数据直接加载到 TSR 寄存器中, 数据传输立刻开始且 TXIF 置位 当一帧数据发送完毕,TIDLE 将被置位 可以通过以下步骤来清除 TIDLE: 1. 读取 USR 寄存器 2. 写 TXR 寄存器清除 TXIF 和 TIDLE 软件执行次序相同 发送暂停字若 TXBRK=1, 下一帧将会发送暂停字 它是由一个起始位 13 N(N=1, 2 ) 位逻辑 0 组成 置位 TXBRK 将会发送暂停字, 而清除 TXBRK 将产生停止位, 传输暂停字不会产生中断 需要注意思的是, 暂停字至少 13 位宽 若 TXBRK 持续为高, 那么发送器会一直发送暂停字 ; 当应用程序清除了 TXBRK, 发送器将传输最后一帧暂停字再加上一位或者两位停止位 暂停字后的高电平保证下一帧数据起始位的检测 UART 接收器 UART 接收器支持 8 位或者 9 位数据接收 若 BNO=1, 数据长度为 9 位, 而最高位 MSB 存放在 UCR1 寄存器的 RX8 中 接收器的核心是串行移位寄存器 RSR RX 引脚上的数据送入数据恢复器中, 它在 16 倍波特率的频率下工作, 而串行移位器工作在正常波特率下 当在 RX 引脚上检测到停止位, 数据从 RSR 寄存器中加载到 RXR 寄存器 RX 引脚上的每一位数据会被采样三次以判断其逻辑状态 RSR 不像其它寄存器一样映射在数据存储器, 所以应用程序不能对其进行读写操作 Rev

156 接收数据 当 UART 接收数据时, 数据低位在前高位在后, 连续地从 RX 引脚进入 RXR 寄存器在内部总线和接收移位寄存器间形成一个缓冲 RXR 寄存器是一个两层的 FIFO 缓冲器, 它能保存两帧数据的同时接收第三帧数据, 应用程序必须保证在接收完第三帧前读取 RXR 寄存器, 否则忽略第三帧数据并且发生溢出错误 接收器的初始化可由如下步骤完成 : 正确地设置 BNO PRT PREN 和 STOPS 位以确定数据长度 校验类型和停止位长度 设置 BRG 寄存器, 选择期望的波特率 置高 RXEN, 使能 UART 发送器且使 RX 作为 UART 的接收端 此时接收器被使能并检测起始位 接收数据将会发生如下事件 : 当 RXR 寄存器中有一帧以上的数据时,USR 寄存器中的 RXIF 位将会置位 若 RIE=1, 数据从 RSR 寄存器加载到 RXR 寄存器中将产生中断 若接收器检测到帧错误 噪声干扰错误 奇偶出错或溢出错误, 那么相应的错误标志位置位 可以通过如下步骤来清除 RXIF: 1. 读取 USR 寄存器 2. 读取 RXR 寄存器 接收暂停字 UART 接收任何暂停字都会当作帧错误处理 接收器只根据 BNO 和 STOPS 位确定一帧数据的长度 若暂停字位数大于 BNO 和 STOPS 位指定的长度, 接收器认为接收已完毕,RXIF 和 FERR 置位,RXR 寄存器清 0, 若相应的中断允许且 RIDLE 为高将会产生中断 若暂停字较长, 接收器收到起始位 数据位将会置位 FERR 标志, 且在下一起始位前必须检测到有效的停止位 暂停字只会被认为包含信息 0 且会置位 FERR 标志 暂停字将会加载到缓冲器中, 在接收到停止位前不会再接收数据, 没有检测到停止位也会置位只读标志位 RIDLE UART 接收到暂停字会产生以下事件 : 帧错误标志位 FERR 置位 RXR 寄存器清零 OERR NF PERR RIDLE 或 RXIF 可能会置位 空闲状态当 UART 接收数据时, 即在起初位和停止位之间,USR 寄存器的接收标志位 RIDLE 清零 在停止位和下一帧数据的起始位之间,RIDLE 被置位, 表示接收器空闲 接收中断 USR 寄存器的只读标志位 RXIF 由接收器的边沿触发置位 若 RIE=1, 数据从移位寄存器 RSR 加载到 RXR 寄存器时产生中断, 同样地, 溢出也会产生中断 Rev

157 接收错误处理 UART 会产生几种接收错误, 下面部分将描述各错误以及怎样处理 溢出错误 OERR RXR 寄存器是一个两层的 FIFO 缓冲器, 它能保存两帧数据的同时接收第三帧数据, 应用程序必须保证在接收完第三帧前读取 RXR 寄存器, 否则发生溢出错误 产生溢出错误时将会发生以下事件 : USR 寄存器中 OERR 被置位 RXR 寄存器中数据不会丢失 RSR 寄存器数据将会被覆盖 若 RIE=1, 将会产生中断 先读取 USR 寄存器再读取 RXR 寄存器可将 OERR 清零 噪声干扰错误 NF 数据恢复时多次采样可以有效的鉴别出噪声干扰 当检测到数据受到噪声干扰时将会发生以下事件 : 在 RXIF 上升沿,USR 寄存器中只读标志位 NF 置位 数据从 RSR 寄存器加载到 RXR 寄存器中 不产生中断, 此位置位的同时由 RXIF 请求中断 先读取 USR 寄存器再读取 RXR 寄存器可将 NF 清零 帧错误 FERR 若在停止位上检测到 0,USR 寄存器中只读标志 FERR 置位 若选择两位停止位, 此两位都必须为高, 否则将置位 FERR 它同数据一起存储在缓冲器中, 可被任何复位清零 奇偶校验错误 PERR 若接收到数据出现奇偶校验错误,USR 寄存器中只读标志 PERR 置位 只有使能了奇偶校验, 选择了校验类型, 此标志位才有效 它同数据一起存储在缓冲器中, 可被任何复位清除 注意,FERR 和 PERR 与相应的数据一起存储有缓冲器中, 在读取数据之前必须先访问错误标志位 UART 模块中断结构 几个独立的 UART 条件可以产生一个 UART 中断 当条件满足时, 会产生一个低脉冲信号 发送寄存器为空 发送器空闲 接收器数据有效 溢出和地址检测和 RX 引脚唤醒都会产生中断 若 UART 中断允许且堆栈未满, 程序将会跳转到相应的中断向量执行中断服务程序, 而后再返回主程序 其中四种含有与 USR 寄存器相关的标志位, 若 UCR2 寄存器中相应中断使能控制位被置位, USR 寄存器中标志位将会产生中断 发送器有两个相应的中断使能控制位而接收器共用一个中断使能控制位 这些使能位可用于禁止个别的 UART 中断源 地址检测也是 UART 的中断源, 它没有相应的标志位, 若 UCR2 寄存器中 ADDEN=1, 当检测到地址将会产生 UART 中断 RX 引脚唤醒也可以产生 UART 中断, 它没有相应的标志位, 当 UXR2 中的 WAKE 和 RIE 位被置位, RX 引脚上有下降沿可以将单片机从空闲模式 0 或休眠模式中唤醒 应注意, RX 唤醒中断发生时, 系统必须延时 t SST 才能正常工作 Rev

158 USR Register 注意,USR 寄存器标志位为只读状态, 软件不能对其进行设置, 在进入相应中断服务程序时也不能清除这些标志位, 其它中断亦是如此 这些标志位仅在 UART 特定动作发生时才会自动被清除, 详细解释见 UART 寄存器章节 整体 UART 中断的使能或除能可由中断控制寄存器中的相关中断使能控制位控制, 其中断请求由 UART 模块决定 UCR2 Register Transmitter Empty Flag TXIF TEIE 0 1 Transmitter Idle Flag TIDLE Receiver Overrun Flag OERR OR TIIE RIE UART Interrupt Request Flag URF URE 0 1 EMI 0 1 Interrupt signal to MCU Receiver Data Available RXIF RX Pin Wake-up WAKE 0 1 ADDEN RX7 if BNO=0 RX8 if BNO=1 UCR2 Register UART 中断结构 地址检测模式置位 UCR2 寄存器中的 ADDEN 将启动地址检测模式 若此位为 1, 可产生接收数据有效中断, 其请求标志位为 RXIF 若 ADDEN 有效, 只有在接收到数据最高位为 1 才会产生中断, 中断使能控制位 URE 和 EMI 也要使能才会产生中断 地址的最高位为第 9 位 (BNO=1) 或第 8 位 (BNO=0), 若此位为高, 则接收到的是地址而非数据 只有接收的数据的最后一位为高才会产生中断 若 ADDEN 除能, 每接收到一个有效数据便会置位 RXIF, 而不用考虑数据的最后一位 地址检测和奇偶校验在功能上相互排斥, 若地址检测模式使能, 必须保证操作的正确, 同时必须将奇偶检验使能位 PREN 清零, 除能奇偶校验 Bit 9 (BNO=1) ADDEN 产生 UART 中断 Bit 8 (BNO=0) ADDEN 位功能 Rev

159 UART 模块暂停和唤醒 MCU 系统时钟关闭后 UART 模块将停止运行 当传送数据时 MCU 执行 HALT 指令并关闭系统时钟, 发送将停止直到 UART 模块时钟再次使能 同样地, 当接收数据时 MCU 执行 HALT 指令并关闭系统时钟, 数据接收也会停止 当 MCU 进入空闲或休眠模式,USR UCR1 UCR2 接收 / 发送寄存器以及 BRG 寄存器都不会受到影响 建议在 MCU 进入暂停模式前先确保数据发送或接收已完成 UART 功能中包括了 RX 引脚的唤醒功能, 由 UCR2 寄存器中 WAKE 位控制 进入空闲模式 0 或休眠模式前, 若该标志位与 UART 使能位 UARTEN 接收器使能位 RXEN 和接收器中断位 RIE 都被置位, 则 RX 引脚的下降沿可唤醒单片机 唤醒后系统需延时一定系统时钟周期才能正常工作, 在此期间,RX 引脚上的任何数据将被忽略 若要唤醒并产生 UART 中断, 除了唤醒使能控制位和接收中断使能控制位需置位外, 全局中断使能控制位 EMI 和 UART 中断使能控制位 URE 也必须置位 ; 若这两控制位没有被置位, 那么, 单片机将可以被唤醒但不会产生中断 同样唤醒后系统需一定的延时才能正常工作, 然后才会产生 UART 中断 Rev

160 低电压检测 LVD LVD 寄存器 该系列单片机都具有低电压检测功能, 即 LVD 该功能使能用于监测电源电压 V DD, 若电源电压低于一定值可提供一个警告信号 此功能在电池类产品中非常有用, 在电池电压较低时产生警告信号 低电压检测也可产生中断信号 低电压检测功能由 LVDC 寄存器控制 VLVD2~ VLVD0 位用于选择 8 个固定的电压参考点 LVDO 位被置位时低电压情况发生, 若 LVDO 位为低表明 V DD 电压工作在当前所设置低电压水平值之上 LVDEN 位用于控制低电压检测功能的开启 / 关闭, 设置此位为高使能此功能, 反之, 关闭内部低电压检测电路 低电压检测会有一定的功耗, 在不使用时可考虑关闭此功能, 此举在功耗要求严格的电池供电应用中值得考虑 LVDC 寄存器 Bit Name LVDO LVDEN VLVD2 VLVD1 VLVD0 R/W R R/W R/W R/W R/W POR Bit 7~ 6 未定义, 读为 0 Bit 5 LVDO:LVD 输出标志位 0: 未检测到低电压 1: 检测到低电压 Bit 4 LVDEN: 低电压检测使能控制位 0: 除能 1: 使能 Bit 3 未定义, 读为 0 Bit 2~ 0 VLVD2~ VLVD0: LVD 电压选择位 000:2.0V 001:2.2V 010:2.4V 011:2.7V 100:3.0V 101;3.3V 110:3.6V 111:4.0V Rev

161 LVD 操作 通过比较电源电压 V DD 与存储在 LVDC 寄存器中的预置电压值的结果, 低电压检测功能工作 其设置的范围为 2.0V~ 4.0V 当电源电压 V DD 低于预置电压值时,LVDO 位被置为高, 表明低电压产生 低电压检测功能由一个自动使能的参考电压提供 若 LVDEN 位为高, 当单片机掉电时低电压检测器保持有效状态 低电压检测器使能后, 读取 LVDO 位前, 电路稳定需要一定的延时 t LVDS 注意,V DD 电压可能上升或下降比较缓慢, 在 V LVD 电压值附近时,LVDO 位可能有多种变化 8,, 8 8, 8, - 8, J 8, 5 LVD 操作低电压检测器也有自己的中断功能, 也是属于多功能中断的一种, 它是除了轮询 LVDO 位之外的另一种检测低电压的方法 中断条件产生置位 LVDO 并延时 t LVD 后, 中断产生 若 LVDEN 位为高, 当单片机掉电时低电压检测器保持有效状态 此种情况下, 若 V DD 降至小于 LVD 预置电压值时, 中断请求标志位 LVF 将被置位, 中断产生, 单片机将从休眠或空闲模式中被唤醒 若不要求低电压检测的唤醒功能使能, 在单片机进入休眠或空闲模式前应将 LVF 标志置为高 Rev

162 中断 中断是单片机一个重要功能 当外部事件或内部功能如定时器模块或 A/D 转换器有效, 并且产生中断时, 系统会暂时中止当前的程序而转到执行相对应的中断服务程序 此系列单片机提供多个外部中断和内部中断功能, 外部中断由 INT0 和 INT1 引脚动作产生, 而内部中断由各种内部功能, 如定时器模块 时基 LVD EEPROM SIM UART 和 A/D 转换器等产生 中断寄存器 中断控制基本上是在一定单片机条件发生时设置请求标志位, 应用程序中中断 使能位的设置是通过位于特殊功能数据存储器中的一系列寄存器控制的 寄存 器总的分为三类 第一类是 INTC0~ INTC2 寄存器, 用于设置基本的中断 ; 第 二类是 MFI0~ MFI2 寄存器, 用于设置多功能中断 ; 最后一种有 INTEG 寄存器, 用于设置外部中断边沿触发类型 寄存器中含有中断控制位和中断请求标志位 中断控制位用于使能或除能各种 中断, 中断请求标志位用于存放当前中断请求的状态 它们都按照特定的模式 命名, 前面表示中断类型的缩写, 紧接着的字母 E 代表使能 / 除能位, F 代表请求标志位 功能 使能位 请求标志 注释 总中断 EMI - - INTn 脚 INTnE INTnF n=0~ 1 多功能 MFnE MFnF n=0~ 2 A/D 转换器 ADE ADF - 时基 TBnE TBnF n=0~ 1 SIM SIME SIMF - LVD LVE LVF - EEPROM 写操作 DEE DEF - TM TnPE TnPF n=0~ 1 TnAE TnAF n=0~ 1 中断寄存器位命名模式 HT66F0175 功能 使能位 请求标志 注释 总中断 EMI - - INTn 脚 INTnE INTnF n=0~ 1 比较器 CPE CPF - 多功能 MFnE MFnF n=0~ 2 A/D 转换器 ADE ADF - 时基 TBnE TBnF n=0~ 1 SIM SIME SIMF - UART URE URF - LVD LVE LVF - EEPROM 写操作 DEE DEF - TM TnPE TnPF n=0~ 2 TnAE TnAF n=0~ 2 中断寄存器位命名模式 HT66F0185 Rev

163 寄存器名称 位 INTEG INT1S1 INT1S0 INT0S1 INT0S0 INTC0 - MF0F - INT0F MF0E - INT0E EMI INTC1 TB0F ADF MF2F MF1F TB0E ADE MF2E MF1E INTC2 - SIMF INT1F TB1F - SIME INT1E TB1E MFI0 - - T0AF T0PF - - T0AE T0PE MFI1 - - T1AF T1PF - - T1AE T1PE MFI2 - - DEF LVF - - DEE LVE 寄存器名称 中断寄存器列表 HT66F0175 位 INTEG INT1S1 INT1S0 INT0S1 INT0S0 INTC0 - MF0F CPF INT0F MF0E CPE INT0E EMI INTC1 TB0F ADF MF2F MF1F TB0E ADE MF2E MF1E INTC2 URF SIMF INT1F TB1F URE SIME INT1E TB1E MFI0 - - T0AF T0PF - - T0AE T0PE MFI1 T2AF T2PF T1AF T1PF T2AE T2PE T1AE T1PE MFI2 - - DEF LVF - - DEE LVE INTEG 寄存器 中断寄存器列表 HT66F0185 Bit Name INT1S1 INT1S0 INT0S1 INT0S0 R/W R/W R/W R/W R/W POR Bit 7~ 4 未定义, 读为 0 Bit 3~ 2 Bit 1~ 0 INT1S1~ INT1S0:INT1 脚中断边沿控制位 00: 除能 01: 上升沿 10: 下降沿 11: 双沿 INT0S1~ INT0S0:INT0 脚中断边沿控制位 00: 除能 01: 上升沿 10: 下降沿 11: 双沿 Rev

164 INTC0 寄存器 HT66F0175 Bit Name - MF0F - INT0F MF0E - INT0E EMI R/W - R/W - R/W R/W - R/W R/W POR Bit 7 未定义, 读为 0 Bit 6 MF0F: 多功能中断 0 请求标志位 0: 无请求 1: 中断请求 Bit 5 未定义, 读为 0 Bit 4 INT0F:INT0 中断请求标志位 0: 无请求 1: 中断请求 Bit 3 MF0E: 多功能中断 0 控制位 0: 除能 1: 使能 Bit 2 未定义, 读为 0 Bit 1 INT0E:INT0 中断控制位 0: 除能 1: 使能 Bit 0 EMI: 总中断控制位 0: 除能 1: 使能 INTC0 寄存器 HT66F0185 Bit Name - MF0F CPF INT0F MF0E CPE INT0E EMI R/W - R/W R/W R/W R/W R/W R/W R/W POR Bit 7 未定义, 读为 0 Bit 6 MF0F: 多功能中断 0 请求标志位 0: 无请求 1: 中断请求 Bit 5 CPF: 比较器中断请求标志位 0: 无请求 1: 中断请求 Bit 4 INT0F:INT0 中断请求标志位 0: 无请求 1: 中断请求 Bit 3 MF0E: 多功能中断 0 控制位 0: 除能 1: 使能 Bit 2 CPE: 比较器中断控制位 0: 除能 1: 使能 Rev

165 Bit 1 Bit 0 INT0E:INT0 中断控制位 0: 除能 1: 使能 EMI: 总中断控制位 0: 除能 1: 使能 INTC1 寄存器 Bit Name TB0F ADF MF2F MF1F TB0E ADE MF2E MF1E R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 TB0F: 时基 0 中断请求标志位 0: 无请求 1: 中断请求 ADF:A/D 转换器中断请求标志位 0: 无请求 1: 中断请求 MF2F: 多功能中断 2 请求标志位 0: 无请求 1: 中断请求 MF1F: 多功能中断 1 请求标志位 0: 无请求 1: 中断请求 TB0E: 时基 0 中断控制位 0: 除能 1: 使能 ADE:A/D 转换器中断控制位 0: 除能 1: 使能 MF2E: 多功能中断 2 控制位 0: 除能 1: 使能 MF1E: 多功能中断 1 控制位 0: 除能 1: 使能 INTC2 寄存器 HT66F0175 Bit Name - SIMF INT1F TB1F - SIME INT1E TB1E R/W - R/W R/W R/W - R/W R/W R/W POR Bit 7 未定义, 读为 0 Bit 6 SIMF:SIM 中断请求标志位 0: 无请求 1: 中断请求 Rev

166 Bit 5 INT1F:INT1 中断请求标志位 0: 无请求 1: 中断请求 Bit 4 TB1F: 时基 1 中断请求标志位 0: 无请求 1: 中断请求 Bit 3 未定义, 读为 0 Bit 2 SIME:SIM 中断控制位 0: 除能 1: 使能 Bit 1 INT1E:INT1 中断控制位 0: 除能 1: 使能 Bit 0 TB1E: 时基 1 中断控制位 0: 除能 1: 使能 INTC2 寄存器 HT66F0185 Bit Name URF SIMF INT1F TB1F URE SIME INT1E TB1E R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 URF:UART 中断请求标志位 0: 无请求 1: 中断请求 SIMF:SIM 中断请求标志位 0: 无请求 1: 中断请求 INT1F:INT1 中断请求标志位 0: 无请求 1: 中断请求 TB1F: 时基 1 中断请求标志位 0: 无请求 1: 中断请求 URE:UART 中断控制位 0: 除能 1: 使能 SIME:SIM 中断控制位 0: 除能 1: 使能 INT1E:INT1 中断控制位 0: 除能 1: 使能 TB1E: 时基 1 中断控制位 0: 除能 1: 使能 Rev

167 MFI0 寄存器 Bit Name - - T0AF T0PF - - T0AE T0PE R/W - - R/W R/W - - R/W R/W POR Bit 7~ 6 未定义, 读为 0 Bit 5 T0AF:TM0 比较器 A 匹配中断请求标志位 0: 无请求 1: 中断请求 Bit 4 T0PF:TM0 比较器 P 匹配中断请求标志位 0: 无请求 1: 中断请求 Bit 3~ 2 未定义, 读为 0 Bit 1 T0AE:TM0 比较器 A 匹配中断控制位 0: 除能 1: 使能 Bit 0 T0PE:TM0 比较器 P 匹配中断控制位 0: 除能 1: 使能 MFI1 寄存器 HT66F0175 Bit Name - - T1AF T1PF - - T1AE T1PE R/W - - R/W R/W - - R/W R/W POR Bit 7~ 6 未定义, 读为 0 Bit 5 T1AF:TM1 比较器 A 匹配中断请求标志位 0: 无请求 1: 中断请求 Bit 4 T1PF:TM1 比较器 P 匹配中断请求标志位 0: 无请求 1: 中断请求 Bit 3~ 2 未定义, 读为 0 Bit 1 T1AE:TM1 比较器 A 匹配中断控制位 0: 除能 1: 使能 Bit 0 T1PE:TM1 比较器 P 匹配中断控制位 0: 除能 1: 使能 Rev

168 MFI1 寄存器 HT66F0185 Bit Name T2AF T2PF T1AF T1PF T2AE T2PE T1AE T1PE R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 T2AF:TM2 比较器 A 匹配中断请求标志位 0: 无请求 1: 中断请求 Bit 6 T2PF:TM2 比较器 P 匹配中断请求标志位 0: 无请求 1: 中断请求 Bit 5 T1AF:TM1 比较器 A 匹配中断请求标志位 0: 无请求 1: 中断请求 Bit 4 T1PF:TM1 比较器 P 匹配中断请求标志位 0: 无请求 1: 中断请求 Bit 3 T2AE:TM2 比较器 A 匹配中断控制位 0: 除能 1: 使能 Bit 2 T2PE:TM2 比较器 P 匹配中断控制位 0: 除能 1: 使能 Bit 1 T1AE:TM1 比较器 A 匹配中断控制位 0: 除能 1: 使能 Bit 0 T1PE:TM1 比较器 P 匹配中断控制位 0: 除能 1: 使能 MFI2 寄存器 Bit Name - - DEF LVF - - DEE LVE R/W - - R/W R/W - - R/W R/W POR Bit 7~ 6 未定义, 读为 0 Bit 5 DEF: 数据 EEPROM 中断请求标志位 0: 无请求 1: 中断请求 Bit 4 LVF:LVD 中断请求标志位 0: 无请求 1: 中断请求 Bit 3~ 2 未定义, 读为 0 Bit 1 DEE: 数据 EEPROM 中断控制位 0: 除能 1: 使能 Bit 0 LVE:LVD 中断控制位 0: 除能 1: 使能 Rev

169 中断操作 若中断事件条件产生, 如一个 TM 比较器 P 比较器 A 匹配或 A/D 转换结束等等, 相关中断请求标志将置起 中断标志产生后程序是否会跳转至相关中断向量执行是由中断使能位的条件决定的 若使能位为 1, 程序将跳至相关中断向量中执行 ; 若使能位为 0, 即使中断请求标志置起中断也不会发生, 程序也不会跳转至相关中断向量执行 若总中断使能位为 0, 所有中断都将除能 当中断发生时, 下条指令的地址将被压入堆栈 相应的中断向量地址加载至 PC 中 系统将从此向量取下条指令 中断向量处通常为 JMP 指令, 以跳转到相应的中断服务程序 中断服务程序必须以 RETI 指令返回至主程序, 以继续执行原来的程序 各个中断使能位以及相应的请求标志位, 以优先级的次序显示在下图 一些中断源有自己的向量, 但是有些中断却共用多功能中断向量 一旦中断子程序被响应, 系统将自动清除 EMI 位, 所有其它的中断将被屏蔽, 这个方式可以防止任何进一步的中断嵌套 其它中断请求可能发生在此期间, 虽然中断不会立即响应, 但是中断请求标志位会被记录 如果某个中断服务子程序正在执行时, 有另一个中断要求立即响应, 那么 EMI 位应在程序进入中断子程序后置位, 以允许此中断嵌套 如果堆栈已满, 即使此中断使能, 中断请求也不会被响应, 直到 SP 减少为止 如果要求立刻动作, 则堆栈必须避免成为储满状态 请求同时发生时, 执行优先级如下流程图所示 所有被置起的中断请求标志都可把单片机从休眠或空闲模式中唤醒, 若要防止唤醒动作发生, 在单片机进入休眠或空闲模式前应将相应的标志置起 xxf xxf xxe Legend Request Flag, no auto reset in ISR Request Flag, auto reset in ISR Enable Bits Interrupt Name INT0 Pin EMI auto disabled in ISR Request Enable Flags Bits INT0F INT0E Master Enable EMI Vector 04H Priority High M. Funct. 0 MF0F MF0E EMI 0CH TM0 P T0PF T0PE M. Funct. 1 MF1F MF1E EMI 10H TM0 A T0AF T0AE M. Funct. 2 MF2F MF2E EMI 14H TM1 P TM1 A T1PF T1AF T1PE T1AE A/D ADF ADE EMI 18H LVD LVF LVE Time Base 0 TB0F TB0E EMI 1CH EEPROM DEF DEE Time Base 1 TB1F TB1E EMI 20H Interrupts contained within Multi-Function Interrupts INT1 Pin INT1F INT1E EMI 24H SIM SIMF SIME EMI 28H Low 中断结构 HT66F0175 Rev

170 xxf xxf xxe Legend Request Flag, no auto reset in ISR Request Flag, auto reset in ISR Enable Bits Interrupt Name INT0 Pin EMI auto disabled in ISR Request Flags INT0F Enable Bits INT0E Master Enable EMI Vector 04H Priority High Comparator CPF CPE EMI 08H Interrupts contained within Multi-Function Interrupts M. Funct. 0 MF0F MF0E EMI 0CH TM0 P T0PF T0PE M. Funct. 1 MF1F MF1E EMI 10H TM0 A T0AF T0AE M. Funct. 2 MF2F MF2E EMI 14H TM1 P TM1 A T1PF T1AF T1PE T1AE A/D ADF ADE EMI 18H TM2 P T2PF T2PE TM2 A T2AF T2AE LVD LVF LVE Time Base 0 TB0F TB0E Time Base 1 TB1F TB1E EMI EMI 1CH 20H EEPROM DEF DEE INT1 Pin INT1F INT1E EMI 24H SIM SIMF SIME EMI 28H UART URF URE EMI 2CH Low 中断结构 HT66F0185 外部中断 通过 INT0~ INT1 引脚上的信号变化可控制外部中断 当触发沿选择位设置好触发类型,INT0~ INT1 引脚的状态发生变化, 外部中断请求标志 INT0F~ INT1F 被置位时外部中断请求产生 若要跳转到相应中断向量地址, 总中断控制位 EMI 和相应中断使能位 INT0E~ INT1E 需先被置位 此外, 必须使用 INTEG 寄存器使能外部中断功能并选择触发沿类型 外部中断引脚和普通 I/O 口共用, 如果相应寄存器中的中断使能位被置位, 并且通过引脚共用寄存器选择外部中断脚, 此引脚将被作为外部中断脚使用 此时该引脚必须通过设置端口控制寄存器, 将该引脚设置为输入口 当中断使能, 堆栈未满并且外部中断脚状态改变, 将调用外部中断向量子程序 当响应外部中断服务子程序时, 中断请求标志位 INT0F~ INT1F 会自动复位且 EMI 位会被清零以除能其它中断 注意, 即使此引脚被用作外部中断输入, 其上拉电阻仍保持有效 寄存器 INTEG 被用来选择有效的边沿类型, 来触发外部中断 可以选择上升沿还是下降沿或双沿触发都产生外部中断 注意 INTEG 也可以用来除能外部中断功能 比较器中断 HT66F0185 比较器中断由内部比较器控制 当比较器输出状态位改变, 比较器中断请求标志 CPF 被置位, 比较器中断请求产生 若要跳转到相应中断向量地址, 总中断控制位 EMI 和比较器中断使能位 CPE 需先被置位 当中断使能, 堆栈未满并且比较器输入产生比较器输出变化时, 将调用比较器中断向量子程序 当响应中断服务子程序时, 比较器中断请求标志位会自动复位且 EMI 位会被清零以除能其它中断 Rev

171 多功能中断 此系列单片机中有多达 3 种多功能中断, 与其它中断不同, 它没有独立源, 但由其它现有的中断源构成, 即 TM 中断 LVD 中断和 EEPROM 写中断 当多功能中断中任何一种中断请求标志 MFnF 被置位, 多功能中断请求产生 当中断使能, 堆栈未满, 包括在多功能中断中的任意一个中断发生时, 将调用多功能中断向量中的一个子程序 当响应中断服务子程序时, 相关的多功能请求标志位会自动复位且 EMI 位会自动清零以除能其它中断 但必须注意的是, 在中断响应时, 虽然多功能中断标志会自动复位, 但多功能中断源的请求标志位, 即 TM 中断 LVD 中断 EEPROM 写中断的请求标志位不会自动复位, 必须由应用程序清零 A/D 转换器中断 时基中断 A/D 转换器中断由 A/D 转换动作的结束来控制 当 A/D 转换器中断请求标志 ADF 被置位, 即 A/D 转换过程完成时, 中断请求发生 若要跳转到相应中断向量地址, 总中断控制位 EMI 和 A/D 转换器中断使能位 ADE 需先被置位 当中断使能, 堆栈未满且 A/D 转换动作结束时, 将调用 A/D 转换器中断向量子程序 当响应中断服务子程序时, 相应的中断请求标志位 ADF 会自动复位且 EMI 位会被清零以除能其它中断 时基中断提供一个固定周期的中断信号, 由各自的定时器功能产生溢出信号控制 当各自的中断请求标志 TB0F 或 TB1F 被置位时, 中断请求发生 当总中断使能位 EMI 和时基使能位 TB0E 或 TB1E 被置位, 允许程序跳转到各自的中断向量地址 当中断使能, 堆栈未满且时基溢出时, 将调用它们各自的中断向量子程序 当响应中断服务子程序时, 相应的中断请求标志位 TBnF 会自动复位且 EMI 位会被清零以除能其它中断 时基中断的目的是提供一个固定周期的中断信号 其时钟源来自内部时钟源 f TB f TB 输入时钟首先经过分频器, 分频率由程序设置 TBC 寄存器相关位获取合适的分频值以提供更长的时基中断周期 不同来源的时钟源 f TB 依次控制时基中断周期, 详见系统工作模式章节 f TBC f SYS /4 M U X TBCK f TB Prescaler Prescaler f TB /2 8 ~ f TB /2 15 f TB /2 12 ~ f TB /2 15 M U X TB02~TB00 M U X Time Base 0 Interrupt Time Base 1 Interrupt TB11~TB10 时基中断 Rev

172 TBC 寄存器 Bit Name TBON TBCK TB11 TB10 LXTLP TB02 TB01 TB00 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR Bit 7 Bit 6 Bit 5~ 4 Bit 3 Bit 2~ 0 TBON: 时基功能使能控制位 0: 除能 1: 使能 TBCK: 时基时钟源选择位 0:f TBC 1:f SYS /4 TB11~ TB10: 时基 1 溢出周期选择位 000:2 12 /f TB 001:2 13 /f TB 010:2 14 /f TB 011:2 15 /f TB LXTLP:LXT 低功耗控制位 0: 除能 LXT 快速起振 1: 使能 LXT 低功耗 TB02~ TB00: 时基 0 溢出周期选择位 000:2 8 /f TB 001:2 9 /f TB 010:2 10 /f TB 011:2 11 /f TB 100:2 12 /f TB 101:2 13 /f TB 110:2 14 /f TB 111:2 15 /f TB 串行接口模块中断 串行接口模块中断, 即 SIM 中断, 由 SPI 或 I 2 C 数据传输控制 当一个字节数据已由 SIM 接口接收或发送完, 或 I 2 C 从机地址匹配, 或 I 2 C 总线发生超时, 中断请求标志 SIMF 被置位,SIM 中断请求产生 若要程序跳转到相应中断向量地址, 总中断控制位 EMI 串行接口中断使能位 SIME 需先被置位 当中断使能, 堆栈未满且以上任何一种情况发生时, 可跳转至相关 SIM 中断向量子程序中执行 当串行接口中断响应, 相应的中断请求标志位 SIMF 会自动复位且 EMI 位会被清零以除能其它中断 UART 传输中断 HT66F0185 UART 传输中断由几种 UART 传输条件来控制 当发送器为空 发送器空闲 接收器数据有效 接收器溢出 地址检测和 RX 引脚唤醒,UART 中断请求标志 URF 被置位,UART 中断请求产生 若要程序跳转到相应中断向量地址, 总中断控制位 EMI 和 UART 中断使能位 URE 需先被置位 当中断使能, 堆栈未满且以上任何一种情况发生时, 将调用 UART 中断向量子程序 当响应中断服务子程序时, 相应的中断请求标志位 URF 会自动复位且 EMI 位会被清零以除能其它中断 Rev

173 LVD 中断 LVD 中断属于多功能中断 当低电压检测功能检测到一个低电压时,LVD 中断请求标志 LVF 被置位,LVD 中断请求产生 若要程序跳转到相应中断向量地址, 总中断控制位 EMI 低电压中断使能位 LVE 和相应多功能中断使能位需先被置位 当中断使能, 堆栈未满且低电压条件发生时, 可跳转至相关多功能中断向量子程序中执行 当 LVD 中断响应,EMI 将被自动清零以除能其它中断, 多功能中断请求标志也可自动清除, 但 LVF 标志需在应用程序中手动清除 EEPROM 中断 TM 中断 EEPROM 写中断属于多功能中断 当写周期结束,EEPROM 写中断请求标志 DEF 被置位,EEPROM 写中断请求产生 若要程序跳转到相应中断向量地址, 总中断控制位 EMI EEPROM 写中断使能位 DEE 和相应多功能中断使能位需先被置位 当中断使能, 堆栈未满且 EEPROM 写周期结束时, 可跳转至相关多功能中断向量子程序中执行 当 EEPROM 写中断响应,EMI 将被自动清零以除能其它中断, 多功能中断请求标志也可自动清除, 但 DEF 标志需在应用程序中手动清除 简易型 标准型和周期型 TM 有两个中断, 分别来自比较器 P A 匹配, 都属于多功能中断 所有类型的 TM 都有两个中断请求标志位及两个使能位 当 TM 比较器 P A 匹配情况发生时, 相应 TM 中断请求标志被置位,TM 中断请求产生 若要程序跳转到相应中断向量地址, 总中断控制位 EMI 相应 TM 中断使能位和相关多功能中断使能位 MFnE 需先被置位 当中断使能, 堆栈未满且 TM 比较器匹配情况发生时, 可跳转至相关多功能中断向量子程序中执行 当 TM 中断响应,EMI 将被自动清零以除能其它中断, 相关 MFnF 标志也可自动清除, 但 TM 中断请求标志需在应用程序中手动清除 中断唤醒功能 每个中断都具有将处于休眠或空闲模式的单片机唤醒的能力 当中断请求标志由低到高转换时唤醒动作产生, 其与中断是否使能无关 因此, 尽管单片机处于休眠或空闲模式且系统振荡器停止工作, 如有外部中断脚上产生外部边沿跳变 低电压或比较器输入改变都可能导致其相应的中断标志被置位, 由此产生中断, 因此必须注意避免伪唤醒情况的发生 若中断唤醒功能被除能, 单片机进入休眠或空闲模式前相应中断请求标志应被置起 中断唤醒功能不受中断使能位的影响 Rev

174 编程注意事项 通过禁止相关中断使能位, 可以屏蔽中断请求, 然而, 一旦中断请求标志位被设定, 它们会被保留在中断控制寄存器内, 直到相应的中断服务子程序执行或请求标志位被应用程序清除 多功能中断中所含中断相应程序执行时, 多功能中断请求标志 MFnF 可以自动清零, 但各自的请求标志需在应用程序中手动清除 建议在中断服务子程序中不要使用 CALL 子程序 指令 中断通常发生在不可预料的情况或是需要立刻执行的某些应用 假如只剩下一层堆栈且没有控制好中断, 当 CALL 子程序 在中断服务子程序中执行时, 将破坏原来的控制序列 所有中断在休眠或空闲模式下都具有唤醒功能, 当中断请求标志发生由低到高的转变时都可产生唤醒功能 若要避免相应中断产生唤醒动作, 在单片机进入休眠或空闲模式前需先将相应请求标志置为高 当进入中断服务程序, 系统仅将程序计数器的内容压入堆栈, 如果中断服务程序会改变状态寄存器或其它的寄存器的内容而破坏控制流程, 应事先将这些数据保存起来 若从中断子程序中返回可执行 RET 或 RETI 指令 除了能返回至主程序外, RETI 指令还能自动设置 EMI 位为高, 允许进一步中断 RET 指令只能返回至主程序, 清除 EMI 位, 除能进一步中断 Rev

175 配置选项 配置选项在烧写程序时写入芯片 通过 HT-IDE 的软件开发环境, 使用者在开发过程中可以选择配置选项 当配置选项烧入单片机后, 无法再通过应用程序修改 所有位必须按系统的需要定义, 具体内容可参考下表 : 序号 选项高速振荡器类型选择 f H HXT 或 HIRC 低速振荡器类型选择 f SUB LXT 或 LIRC HIRC 频率选择 f HIRC 8MHz, 12MHz 或 16MHz Rev

176 应用电路 V DD VDD 0.1µF VSS SCOMn SSEGm LCD Panel See Oscillator Section OSC Circuit PC0/OSC1 PC1/OSC2 AN0~AN7 PA0~PA7 PB0~PB6 PC0~PC6 OSC Circuit PB0/XT1 PB1/XT2 PD0~PD3 See Oscillator Section Rev

177 指令集 简介 指令周期 数据的传送 算术运算 任何单片机成功运作的核心在于它的指令集, 此指令集为一组程序指令码, 用来指导单片机如何去执行指定的工作 在 HOLTEK 单片机中, 提供了丰富且灵活的指令, 共超过六十条, 程序设计者可以事半功倍地实现他们的应用 为了更加容易理解各种各样的指令码, 接下来按功能分组介绍它们 大部分的操作均只需要一个指令周期来执行 分支 调用或查表则需要两个指令周期 一个指令周期相当于四个系统时钟周期, 因此如果在 8MHz 的系统时钟振荡器下, 大部分的操作将在 0.5µs 中执行完成, 而分支或调用操作则将在 1µs 中执行完成 虽然需要两个指令周期的指令通常指的是 JMP CALL RET RETI 和查表指令, 但如果牵涉到程序计数器低字节寄存器 PCL 也将多花费一个周期去加以执行 即指令改变 PCL 的内容进而导致直接跳转至新地址时, 需要多一个周期去执行, 例如 CLR PCL 或 MOV PCL, A 指令 对于跳转指令必须注意的是, 如果比较的结果牵涉到跳转动作将多花费一个周期, 如果没有则需一个周期即可 单片机程序中数据传送是使用最为频繁的操作之一, 使用三种 MOV 的指令, 数据不但可以从寄存器转移至累加器 ( 反之亦然 ), 而且能够直接移动立即数到累加器 数据传送最重要的应用之一是从输入端口接收数据或传送数据到输出端口 算术运算和数据处理是大部分单片机应用所必需具备的能力, 在盛群单片机内部的指令集中, 可直接实现加与减的运算 当加法的结果超出 255 或减法的结果少于 0 时, 要注意正确的处理进位和借位的问题 INC INCA DEC 和 DECA 指令提供了对一个指定地址的值加一或减一的功能 逻辑和移位运算 标准逻辑运算例如 AND OR XOR 和 CPL 全都包含在盛群单片机内部的指令集中 大多数牵涉到数据运算的指令, 数据的传送必须通过累加器 在所有逻辑数据运算中, 如果运算结果为零, 则零标志位将被置位, 另外逻辑数据运用形式还有移位指令, 例如 RR RL RRC 和 RLC 提供了向左或向右移动一位的方法 不同的移位指令可满足不同的应用需要 移位指令常用于串行端口的程序应用, 数据可从内部寄存器转移至进位标志位, 而此位则可被检验, 移位运算还可应用在乘法与除法的运算组成中 Rev

178 分支和控制转换 位运算 查表运算 其它运算 程序分支是采取使用 JMP 指令跳转至指定地址或使用 CALL 指令调用子程序的形式, 两者之不同在于当子程序被执行完毕后, 程序必须马上返回原来的地址 这个动作是由放置在子程序里的返回指令 RET 来实现, 它可使程序跳回 CALL 指令之后的地址 在 JMP 指令中, 程序则只是跳到一个指定的地址而已, 并不需如 CALL 指令般跳回 一个非常有用的分支指令是条件跳转, 跳转条件是由数据存储器或指定位来加以决定 遵循跳转条件, 程序将继续执行下一条指令或略过且跳转至接下来的指令 这些分支指令是程序走向的关键, 跳转条件可能是外部开关输入, 或是内部数据位的值 提供数据存储器中单个位的运算指令是盛群单片机的特性之一 这特性对于输出端口位的设置尤其有用, 其中个别的位或端口的引脚可以使用 SET [m].i 或 CLR [m].i 指令来设定其为高位或低位 如果没有这特性, 程序设计师必须先读入输出口的 8 位数据, 处理这些数据, 然后再输出正确的新数据 这种读入 - 修改 - 写出的过程现在则被位运算指令所取代 数据的储存通常由寄存器完成, 然而当处理大量固定的数据时, 它的存储量常常造成对个别存储器的不便 为了改善此问题, 盛群单片机允许在程序存储器中建立一个表格作为数据可直接存储的区域, 只需要一组简易的指令即可对数据进行查表 除了上述功能指令外, 其它指令还包括用于省电的 HALT 指令和使程序在极端电压或电磁环境下仍能正常工作的看门狗定时器控制指令 这些指令的使用则请查阅相关的章节 Rev

179 指令集概要 惯例 下表中说明了按功能分类的指令集, 用户可以将该表作为基本的指令参考 x: 立即数 m: 数据存储器地址 A: 累加器 i: 第 0~ 7 位 addr: 程序存储器地址 助记符 说明 指令周期 影响标志位 算术运算 ADD A,[m] ACC 与数据存储器相加, 结果放入 ACC 1 Z, C, AC, OV ADDM A,[m] ACC 与数据存储器相加, 结果放入数据存储器 注 1 Z, C, AC, OV ADD A, x ACC 与立即数相加, 结果放入 ACC 1 Z, C, AC, OV ADC A,[m] ACC 与数据存储器 进位标志相加, 结果放入 ACC 1 Z, C, AC, OV ADCM A,[m] ACC 与数据存储器 进位标志相加, 结果放入数据存储器 注 1 Z, C, AC, OV SUB A, x ACC 与立即数相减, 结果放入 ACC 1 Z, C, AC, OV SUB A,[m] ACC 与数据存储器相减, 结果放入 ACC 1 Z, C, AC, OV SUBM A,[m] ACC 与数据存储器相减, 结果放入数据存储器 注 1 Z, C, AC, OV SBC A,[m] ACC 与数据存储器 进位标志的反相减, 结果放入 ACC 1 Z, C, AC, OV SBCM A,[m] ACC 与数据存储器 进位标志相减, 结果放入数据存储器 注 1 Z, C, AC, OV DAA [m] 将加法运算中放入 ACC 的值调整为十进制数, 并将结果放入数据存储器 逻辑运算 AND A,[m] ACC 与数据存储器做 与 运算, 结果放入 ACC 1 Z OR A,[m] ACC 与数据存储器做 或 运算, 结果放入 ACC 1 Z XOR A,[m] ACC 与数据存储器做 异或 运算, 结果放入 ACC 1 Z ANDM A,[m] ACC 与数据存储器做 与 运算, 结果放入数据存储器 注 1 Z ORM A,[m] ACC 与数据存储器做 或 运算, 结果放入数据存储器 注 1 Z XORM A,[m] ACC 与数据存储器做 异或 运算, 结果放入数据存储器 注 1 Z AND A, x ACC 与立即数做 与 运算, 结果放入 ACC 1 Z OR A, x ACC 与立即数做 或 运算, 结果放入 ACC 1 Z XOR A, x ACC 与立即数做 异或 运算, 结果放入 ACC 1 Z CPL [m] 对数据存储器取反, 结果放入数据存储器 注 1 Z CPLA [m] 对数据存储器取反, 结果放入 ACC 1 Z 递增和递减 INCA [m] 递增数据存储器, 结果放入 ACC 1 Z INC [m] 递增数据存储器, 结果放入数据存储器 注 1 Z DECA [m] 递减数据存储器, 结果放入 ACC 1 Z DEC [m] 递减数据存储器, 结果放入数据存储器 注 1 Z 注 1 C Rev

180 助记符 说明 指令周期 影响标志位 移位 RRA [m] 数据存储器右移一位, 结果放入 ACC 1 无 RR [m] 数据存储器右移一位, 结果放入数据存储器 注 1 无 RRCA [m] 带进位将数据存储器右移一位, 结果放入 ACC 1 C RRC [m] 带进位将数据存储器右移一位, 结果放入数据存储器 注 1 C RLA [m] 数据存储器左移一位, 结果放入 ACC 1 无 RL [m] 数据存储器左移一位, 结果放入数据存储器 注 1 无 RLCA [m] 带进位将数据存储器左移一位, 结果放入 ACC 1 C RLC [m] 带进位将数据存储器左移一位, 结果放入数据存储器 注 1 C 数据传送 MOV A,[m] 将数据存储器送至 ACC 1 无 MOV [m],a 将 ACC 送至数据存储器 注 1 无 MOV A, x 将立即数送至 ACC 1 无 位运算 CLR [m].i 清除数据存储器的位 注 1 无 SET [m].i 置位数据存储器的位 注 1 无 转移 JMP addr 无条件跳转 2 无 SZ [m] 如果数据存储器为零, 则跳过下一条指令 注 1 无 SZA [m] 数据存储器送至 ACC, 如果内容为零, 则跳过下一条指令 注 1 无 SZ [m].i 如果数据存储器的第 i 位为零, 则跳过下一条指令 注 1 无 SNZ [m].i 如果数据存储器的第 i 位不为零, 则跳过下一条指令 注 1 无 SIZ [m] 递增数据存储器, 如果结果为零, 则跳过下一条指令 注 1 无 SDZ [m] 递减数据存储器, 如果结果为零, 则跳过下一条指令 注 1 无 SIZA SDZA [m] [m] 递增数据存储器, 将结果放入 ACC, 如果结果为零, 则跳过下一条指令递减数据存储器, 将结果放入 ACC, 如果结果为零, 则跳过下一条指令 CALL addr 子程序调用 2 无 RET 从子程序返回 2 无 RET A, x 从子程序返回, 并将立即数放入 ACC 2 无 RETI 从中断返回 2 无 查表 TABRD [m] 读取特定页的 ROM 内容, 并送至数据存储器和 TBLH 注 2 无 TABRDC [m] 读取当前页的 ROM 内容, 并送至数据存储器和 TBLH 注 2 无 TABRDL [m] 读取最后页的 ROM 内容, 并送至数据存储器和 TBLH 注 2 无 其它指令 NOP 空指令 1 无 CLR [m] 清除数据存储器 注 1 无 SET [m] 置位数据存储器 注 1 无 CLR WDT 清除看门狗定时器 1 TO, PDF 注 1 注 1 无 无 Rev

181 助记符 说明 指令周期 影响标志位 CLR WDT1 预清除看门狗定时器 1 TO, PDF CLR WDT2 预清除看门狗定时器 1 TO, PDF SWAP [m] 交换数据存储器的高低字节, 结果放入数据存储器 注 1 无 SWAPA [m] 交换数据存储器的高低字节, 结果放入 ACC 1 无 HALT 进入暂停模式 1 TO, PDF 注 :1. 对跳转指令而言, 如果比较的结果牵涉到跳转即需 2 个周期, 如果没有发生跳转, 则只需一个周期 2. 任何指令若要改变 PCL 的内容将需要 2 个周期来执行 3. 对于 CLR WDT1 或 CLR WDT2 指令而言,TO 和 PDF 标志位也许会受执行结果影响, CLR WDT1 和 CLR WDT2 被连续地执行后,TO 和 PDF 标志位会被清除, 否则 TO 和 PDF 标志位保持不变 Rev

182 指令定义 ADC A, [m] Add Data Memory to ACC with Carry 指令说明 将指定的数据存储器 累加器内容以及进位标志相加, 结果存放到累加器 功能表示 ACC ACC + [m] + C 影响标志位 OV Z AC C ADCM A, [m] Add ACC to Data Memory with Carry 指令说明 将指定的数据存储器 累加器内容和进位标志位相加, 结果存放到指定的数据存储器 功能表示 [m] ACC + [m] + C 影响标志位 OV Z AC C ADD A, [m] Add Data Memory to ACC 指令说明 将指定的数据存储器和累加器内容相加, 结果存放到累加器 功能表示 ACC ACC + [m] 影响标志位 OV Z AC C ADD A, x 指令说明功能表示影响标志位 Add immediate data to ACC 将累加器和立即数相加, 结果存放到累加器 ACC ACC + x OV Z AC C ADDM A, [m] Add ACC to Data Memory 指令说明 将指定的数据存储器和累加器内容相加, 结果存放到指定的数据存储器 功能表示 [m] ACC + [m] 影响标志位 OV Z AC C AND A, [m] Logical AND Data Memory to ACC 指令说明 将累加器中的数据和指定数据存储器内容做逻辑与, 结果存放到累加器 功能表示 ACC ACC AND [m] 影响标志位 Z Rev

183 AND A, x 指令说明功能表示影响标志位 Logical AND immediate data to ACC 将累加器中的数据和立即数做逻辑与, 结果存放到累加器 ACC ACC AND x Z ANDM A, [m] Logical AND ACC to Data Memory 指令说明 将指定数据存储器内容和累加器中的数据做逻辑与, 结果存放到数据存储器 功能表示 [m] ACC AND [m] 影响标志位 Z CALL addr Subroutine call 指令说明无条件地调用指定地址的子程序, 此时程序计数器先加 1 获得下一个要执行的指令地址并压入堆栈, 接着载入指定地址并从新地址继续执行程序, 由于此指令需要额外的运算, 所以为一个 2 周期的指令 功能表示 Stack Program Counter + 1 Program Counter addr 影响标志位无 CLR [m] 指令说明功能表示影响标志位 Clear Data Memory 将指定数据存储器的内容清零 [m] 00H 无 CLR [m].i Clear bit of Data Memory 指令说明 将指定数据存储器的 i 位内容清零 功能表示 [m].i 0 影响标志位 无 CLR WDT 指令说明功能表示影响标志位 Clear Watchdog Timer WDT 计数器 暂停标志位 PDF 和看门狗溢出标志位 TO 清零 WDT cleared TO & PDF 0 TO PDF Rev

184 CLR WDT1 指令说明功能表示影响标志位 Preclear Watchdog Timer PDF 和 TO 标志位都被清 0 必须配合 CLR WDT2 一起使用清除 WDT 计时器 当程序仅执行 CLR WDT1, 而没有执行 CLR WDT2 时,PDF 与 TO 保留原状态不变 WDT 00H TO & PDF 0 TO PDF CLR WDT2 指令说明功能表示影响标志位 Preclear Watchdog Timer PDF 和 TO 标志位都被清 0 必须配合 CLR WDT1 一起使用清除 WDT 计时器 当程序仅执行 CLR WDT2, 而没有执行 CLR WDT1 时,PDF 与 TO 保留原状态不变 WDT 00H TO & PDF 0 TO PDF CPL [m] Complement Data Memory 指令说明 将指定数据存储器中的每一位取逻辑反, 相当于从 1 变 0 或 0 变 1 功能表示 [m] [m] 影响标志位 Z CPLA [m] Complement Data Memory with result in ACC 指令说明 将指定数据存储器中的每一位取逻辑反, 相当于从 1 变 0 或 0 变 1, 而结果被储存回累加器且数据存储器中的内容 不变 功能表示 ACC [m] 影响标志位 Z Rev

185 DAA [m] Decimal-Adjust ACC for addition with result in Data Memory 指令说明将累加器中的内容转换为 BCD( 二进制转成十进制 ) 码 如果低四位的值大于 9 或 AC=1, 那么 BCD 调整就执行对原值加 6, 否则原值保持不变 ; 如果高四位的值大于 9 或 C=1, 那么 BCD 调整就执行对原值加 6 BCD 转换实质上是根据累加器和标志位执行 00H,06H, 60H 或 66H 的加法运算, 结果存放到数据存储器 只有进位标志位 C 受影响, 用来指示原始 BCD 的和是否大于 100, 并可以进行双精度十进制数的加法运算 功能表示 [m] ACC + 00H 或 [m] ACC + 06H 或 [m] ACC + 60H 或 [m] ACC + 66H 影响标志位 C DEC [m] Decrement Data Memory 指令说明 将指定数据存储器内容减 1 功能表示 [m] [m] 1 影响标志位 Z DECA [m] Decrement Data Memory with result in ACC 指令说明 将指定数据存储器的内容减 1, 把结果存放回累加器 并保持指定数据存储器的内容不变 功能表示 ACC [m] 1 影响标志位 Z HALT Enter power down mode 指令说明此指令终止程序执行并关掉系统时钟,RAM 和寄存器的内容保持原状态,WDT 计数器和分频器被清 0, 暂停标志位 PDF 被置位 1,WDT 溢出标志位 TO 被清 0 功能表示 TO 0 PDF 1 影响标志位 TO PDF INC [m] Increment Data Memory 指令说明 将指定数据存储器的内容加 1 功能表示 [m] [m] + 1 影响标志位 Z Rev

186 INCA [m] Increment Data Memory with result in ACC 指令说明 将指定数据存储器的内容加 1, 结果存放回累加器并保持 指定的数据存储器内容不变 功能表示 ACC [m] + 1 影响标志位 Z JMP addr Jump unconditionally 指令说明 程序计数器的内容无条件地由被指定的地址取代, 程序由新的地址继续执行 当新的地址被加载时, 必须插入一个空指令周期, 所以此指令为 2 个周期的指令 功能表示 Program Counter addr 影响标志位 无 MOV A, [m] 指令说明功能表示影响标志位 Move Data Memory to ACC 将指定数据存储器的内容复制到累加器 ACC [m] 无 MOV A, x 指令说明功能表示影响标志位 Move immediate data to ACC 将 8 位立即数载入累加器 ACC x 无 MOV [m], A 指令说明功能表示影响标志位 Move ACC to Data Memory 将累加器的内容复制到指定的数据存储器 [m] ACC 无 NOP 指令说明功能表示影响标志位 No operation 空操作, 接下来顺序执行下一条指令 PC PC+1 无 OR A, [m] Logical OR Data Memory to ACC 指令说明 将累加器中的数据和指定的数据存储器内容逻辑或, 结果存放到累加器 功能表示 ACC ACC OR [m] 影响标志位 Z Rev

187 OR A, x 指令说明功能表示影响标志位 Logical OR immediate data to ACC 将累加器中的数据和立即数逻辑或, 结果存放到累加器 ACC ACC OR x Z ORM A, [m] Logical OR ACC to Data Memory 指令说明 将存在指定数据存储器中的数据和累加器逻辑或, 结果放到数据存储器 功能表示 [m] ACC OR [m] 影响标志位 Z RET Return from subroutine 指令说明 将堆栈寄存器中的程序计数器值恢复, 程序由取回的地址继续执行 功能表示 Program Counter Stack 影响标志位 无 RET A, x 指令说明功能表示影响标志位 Return from subroutine and load immediate data to ACC 将堆栈寄存器中的程序计数器值恢复且累加器载入指定的立即数, 程序由取回的地址继续执行 Program Counter Stack ACC x 无 RETI 指令说明功能表示影响标志位 Return from interrupt 将堆栈寄存器中的程序计数器值恢复且中断功能通过设置 EMI 位重新使能 EMI 是控制中断使能的主控制位 如果在执行 RETI 指令之前还有中断未被相应, 则这个中断将在返回主程序之前被相应 Program Counter Stack EMI 1 无 RL [m] Rotate Data Memory left 指令说明 将指定数据存储器的内容左移 1 位, 且第 7 位移到第 0 位 功能表示 [m].(i+1) [m].i (i=0~ 6) [m].0 [m].7 影响标志位 无 Rev

188 RLA [m] Rotate Data Memory left with result in ACC 指令说明 将指定数据存储器的内容左移 1 位, 且第 7 位移到第 0 位, 结果送到累加器, 而指定数据存储器的内容保持不变 功能表示 ACC.(i+1) [m].i (i=0~ 6) ACC.0 [m].7 影响标志位 无 RLC [m] Rotate Data Memory Left through Carry 指令说明将指定数据存储器的内容连同进位标志左移 1 位, 第 7 位取代进位标志且原本的进位标志移到第 0 位 功能表示 [m].(i+1) [m].i (i=0~ 6) [m].0 C C [m].7 影响标志位 C RLC A [m] Rotate Data Memory left through Carry with result in ACC 指令说明将指定数据存储器的内容连同进位标志左移 1 位, 第 7 位取代进位标志且原本的进位标志移到第 0 位, 移位结果送回累加器, 但是指定数据寄存器的内容保持不变 功能表示 ACC.(i+1) [m].i (i=0~ 6) ACC.0 C C [m].7 影响标志位 C RR [m] Rotate Data Memory right 指令说明 将指定数据存储器的内容循环右移 1 位且第 0 位移到 第 7 位 功能表示 [m].i [m].(i+1) (i=0~ 6) [m].7 [m].0 影响标志位 无 RRA [m] Rotate Data Memory right with result in ACC 指令说明将指定数据存储器的内容循环右移 1 位, 第 0 位移到第 7 位, 移位结果存放到累加器, 而指定数据存储器的内容保持不变 功能表示 ACC.i [m].(i+1) (i=0~ 6) ACC.7 [m].0 影响标志位无 Rev

189 RRC [m] Rotate Data Memory right through Carry 指令说明将指定数据存储器的内容连同进位标志右移 1 位, 第 0 位取代进位标志且原本的进位标志移到第 7 位 功能表示 [m].i [m].(i+1) (i=0~ 6) [m].7 C C [m].0 影响标志位 C RRCA [m] Rotate Data Memory right through Carry with result in ACC 指令说明将指定数据存储器的内容连同进位标志右移 1 位, 第 0 位取代进位标志且原本的进位标志移到第 7 位, 移位结果送回累加器, 但是指定数据寄存器的内容保持不变 功能表示 ACC.i [m].(i+1) (i=0~ 6) ACC.7 C C [m].0 影响标志位 C SBC A, [m] Subtract Data Memory from ACC with Carry 指令说明 将累加器减去指定数据存储器的内容以及进位标志的反, 结果存放到累加器 如果结果为负,C 标志位清除为 0, 反之结果为正或 0,C 标志位设置为 1 功能表示 ACC ACC [m] C 影响标志位 OV Z AC C SC CZ SBCM A, [m] Subtract Data Memory from ACC with Carry and result in Data Memory 指令说明将累加器减去指定数据存储器的内容以及进位标志的反, 结果存放到数据存储器 如果结果为负,C 标志位清除为 0, 反之结果为正或 0,C 标志位设置为 1 功能表示 [m] ACC [m] C 影响标志位 OV Z AC C SC CZ SDZ [m] Skip if Decrement Data Memory is 0 指令说明将指定的数据存储器的内容减 1, 判断是否为 0, 若为 0 则跳过下一条指令, 由于取得下一个指令时会要求插入一个空指令周期, 所以此指令为 2 个周期的指令 如果结果不为 0, 则程序继续执行下一条指令 功能表示 [m] [m] -1, 如果 [m]=0 跳过下一条指令执行影响标志位无 Rev

190 SDZA [m] Decrement data memory and place result in ACC,skip if 0 指令说明将指定数据存储器内容减 1, 判断是否为 0, 如果为 0 则跳过下一条指令, 此结果将存放到累加器, 但指定数据存储器内容不变 由于取得下一个指令时会要求插入一个空指令周期, 所以此指令为 2 个周期的指令 如果结果不为 0, 则程序继续执行下一条指令 功能表示 ACC [m]-1, 如果 ACC=0 跳过下一条指令执行影响标志位无 SET [m] Set Data Memory 指令说明 将指定数据存储器的每一位设置为 1 功能表示 [m] FFH 影响标志位 无 SET [m].i Set bit of Data Memory 指令说明 将指定数据存储器的第 i 位置位为 1 功能表示 [m].i 1 影响标志位 无 SIZ [m] Skip if increment Data Memory is 0 指令说明将指定的数据存储器的内容加 1, 判断是否为 0, 若为 0 则跳过下一条指令 由于取得下一个指令时会要求插入一个空指令周期, 所以此指令为 2 个周期的指令 如果结果不为 0, 则程序继续执行下一条指令 功能表示 [m] [m]+1, 如果 [m]=0 跳过下一条指令执行影响标志位无 SIZA [m] 指令说明功能表示影响标志位 Skip if increment Data Memory is zero with result in ACC 将指定数据存储器的内容加 1, 判断是否为 0, 如果为 0 则跳过下一条指令, 此结果会被存放到累加器, 但是指定数据存储器的内容不变 由于取得下一个指令时会要求插入一个空指令周期, 所以此指令为 2 个周期的指令 如果结果不为 0, 则程序继续执行下一条指令 ACC [m]+1, 如果 ACC=0 跳过下一条指令执行无 Rev

191 SNZ [m].i Skip if bit i of Data Memory is not 0 指令说明判断指定数据存储器的第 i 位, 若不为 0, 则程序跳过下一条指令执行 由于取得下一个指令时会要求插入一个空指令周期, 所以此指令为 2 个周期的指令 如果结果为 0, 则程序继续执行下一条指令 功能表示如果 [m].i 0, 跳过下一条指令执行影响标志位无 SUB A, [m] 指令说明功能表示影响标志位 Subtract Data Memory from ACC 将累加器的内容减去指定的数据存储器的数据, 把结果存放到累加器 如果结果为负,C 标志位清除为 0, 反之结果为正或 0,C 标志位设置为 1 ACC ACC [m] OV Z AC C SC CZ SUBM A, [m] 指令说明功能表示影响标志位 Subtract Data Memory from ACC with result in Data Memory 将累加器的内容减去指定数据存储器的数据, 结果存放到指定的数据存储器 如果结果为负,C 标志位清除为 0, 反之结果为正或 0,C 标志位设置为 1 [m] ACC [m] OV Z AC C SC CZ SUB A, x 指令说明功能表示影响标志位 Subtract immediate Data from ACC 将累加器的内容减去立即数, 结果存放到累加器 如果结果为负,C 标志位清除为 0, 反之结果为正或 0,C 标志位设置为 1 ACC ACC x OV Z AC C SC CZ SWAP [m] 指令说明功能表示影响标志位 Swap nibbles of Data Memory 将指定数据存储器的低 4 位和高 4 位互相交换 [m].3~ [m].0 [m].7~ [m].4 无 SWAPA [m] 指令说明功能表示影响标志位 Swap nibbles of Data Memory with result in ACC 将指定数据存储器的低 4 位与高 4 位互相交换, 再将结果存放到累加器且指定数据寄存器的数据保持不变 ACC.3~ ACC.0 [m].7~ [m].4 ACC.7~ ACC.4 [m].3~ [m].0 无 Rev

192 SZ [m] Skip if Data Memory is 0 指令说明判断指定数据存储器的内容是否为 0, 若为 0, 则程序跳过下一条指令执行 由于取得下一个指令时会要求插入一个空指令周期, 所以此指令为 2 个周期的指令 如果结果不为 0, 则程序继续执行下一条指令 功能表示如果 [m]=0, 跳过下一条指令执行影响标志位无 SZA [m] 指令说明功能表示影响标志位 Skip if Data Memory is 0 with data movement to ACC 将指定数据存储器内容复制到累加器, 并判断指定数据存储器的内容是否为 0, 若为 0 则跳过下一条指令 由于取得下一个指令时会要求插入一个空指令周期, 所以此指令为 2 个周期的指令 如果结果不为 0, 则程序继续执行下一条指令 ACC [m], 如果 [m]=0, 跳过下一条指令执行无 SZ [m].i Skip if bit i of Data Memory is 0 指令说明判断指定数据存储器的第 i 位是否为 0, 若为 0, 则跳过下一条指令 由于取得下一个指令时会要求插入一个空指令周期, 所以此指令为 2 个周期的指令 如果结果不为 0, 则程序继续执行下一条指令 功能表示如果 [m].i=0, 跳过下一条指令执行影响标志位无 TABRD [m] 指令说明 Read table (specific page) to TBLH and Data Memory 将表格指针对 TBHP 和 TBLP 所指的程序代码低字节 ( 指定页 ) 移至指定数据存储器且将高字节移至 TBLH 功能表示 [m] 程序代码 ( 低字节 ) 影响标志位 TBLH 程序代码 ( 高字节 ) 无 TABRDC [m] Read table (current page) to TBLH and Data Memory 指令说明 将表格指针 TBLP 所指的程序代码低字节 ( 当前页 ) 移至 指定的数据存储器且将高字节移至 TBLH 功能表示 [m] 程序代码 ( 低字节 ) TBLH 程序代码 ( 高字节 ) 影响标志位 无 Rev

193 TABRDL [m] Read table ( last page ) to TBLH and Data Memory 指令说明 将表格指针 TBLP 所指的程序代码低字节 ( 最后一页 ) 移至指定数据存储器且将高字节移至 TBLH 功能表示 [m] 程序代码 ( 低字节 ) TBLH 程序代码 ( 高字节 ) 影响标志位 无 XOR A, [m] Logical XOR Data Memory to ACC 指令说明 将累加器的数据和指定的数据存储器内容逻辑异或, 结果存放到累加器 功能表示 ACC ACC XOR [m] 影响标志位 Z XORM A, [m] Logical XOR ACC to Data Memory 指令说明 将累加器的数据和指定的数据存储器内容逻辑异或, 结果放到数据存储器 功能表示 [m] ACC XOR [m] 影响标志位 Z XOR A, x Logical XOR immediate data to ACC 指令说明 将累加器的数据与立即数逻辑异或, 结果存放到累加器 功能表示 ACC ACC XOR x 影响标志位 Z Rev

194 封装信息 请注意, 这里提供的封装信息仅作为参考 由于这个信息经常更新, 提醒用户咨询 Holtek 网站以获取最新版本的封装信息 封裝信息的相关内容如下所示, 点击可链接至 Holtek 网站相关信息页面 封装信息 ( 包括外形尺寸 包装带和卷轴规格 ) 封装材料信息 纸箱信息 Rev

195 20-pin SOP(300mil) 外形尺寸 ) * +, + / 0 -. = 尺寸 ( 单位 :inch) 符号最小正常最大 A BSC B BSC C C BSC D E BSC F G H α 0 8 尺寸 ( 单位 :mm) 符号最小正常最大 A BSC B 7.5 BSC C C 12.8 BSC D 2.65 E 1.27 BSC F G H α 0 8 Rev

196 20-pin SSOP (150mil) 外形尺寸 ) * +, + / 0 -. = 尺寸 ( 单位 :inch) 符号最小正常最大 A BSC B BSC C C BSC D E BSC F G H α 0 8 尺寸 ( 单位 :mm) 符号最小正常最大 A 6.0 BSC B 3.9 BSC C C 8.66 BSC D 1.75 E BSC F G H α 0 8 Rev

197 24-pin SOP(300mil) 外形尺寸 "! ) * +, + / 0 -. = 尺寸 ( 单位 :inch) 符号最小正常最大 A BSC B BSC C C BSC D E BSC F G H α 0 8 尺寸 ( 单位 :mm) 符号最小正常最大 A BSC B 7.5 BSC C C 15.4 BSC D 2.65 E 1.27 BSC F G H α 0 8 Rev

198 24-pin SSOP (150mil) 外形尺寸 "! ) * +, + / 0 -. = 尺寸 ( 单位 :inch) 符号最小正常最大 A BSC B BSC C C BSC D E BSC F G H α 0 8 尺寸 ( 单位 :mm) 符号最小正常最大 A 6.0 BSC B 3.9 BSC C C 8.66 BSC D 1.75 E BSC F G H α 0 8 Rev

199 28-pin SOP(300mil) 外形尺寸 & # ) * " +, + / 0 -. = 尺寸 ( 单位 :inch) 符号最小正常最大 A BSC B BSC C C BSC D E BSC F G H α 0 8 尺寸 ( 单位 :mm) 符号最小正常最大 A BSC B 7.5 BSC C C 17.9 BSC D 2.65 E 1.27 BSC F G H α 0 8 Rev

200 28-pin SSOP (150mil) 外形尺寸 & # ) * " +, + / 0 -. = 尺寸 ( 单位 :inch) 符号最小正常最大 A BSC B BSC C C BSC D E BSC F G H α 0 8 尺寸 ( 单位 :mm) 符号最小正常最大 A 6.0 BSC B 3.9 BSC C C 9.9 BSC D 1.75 E BSC F G H α 0 8 Rev

201 Copyright 2015 by HOLTEK SEMICONDUCTOR INC. 使用指南中所出现的信息在出版当时相信是正确的, 然而盛群对于说明书的使用不负任何责任 文中提到的应用目的仅仅是用来做说明, 盛群不保证或表示这些没有进一步修改的应用将是适当的, 也不推荐它的产品使用在会由于故障或其它原因可能会对人身造成危害的地方 盛群产品不授权使用于救生 维生从机或系统中做为关键从机 盛群拥有不事先通知而修改产品的权利, 对于最新的信息, 请参考我们的网址 Rev

Microsoft Word - sim6xF0xC-0225.doc

Microsoft Word - sim6xF0xC-0225.doc 8-pin 内置 EEPROM 增强型八位 FLASH 单片机 技术相关信息 应用范例 -HA0075S MCU 复位电路和振荡电路的应用范例 特性 CPU 特性 工作电压 : f SYS =8MHz:2.2V~5.5V f SYS =12MHz:2.7V~5.5V f SYS =20MHz:4.5V~5.5V V DD =5V, 系统时钟为 20MHz 时, 指令周期为 0.2µs 提供省电模式和唤醒功能,

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

untitled

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

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

<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

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

目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...7 方框图...8 引脚图...8 引脚说明...10 极限参数...16 直流电气特性...16 交流电气特性...18 ADC 电气特性...19 LVR 电气特性...19 LCD 电气特性...20 上

目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...7 方框图...8 引脚图...8 引脚说明...10 极限参数...16 直流电气特性...16 交流电气特性...18 ADC 电气特性...19 LVR 电气特性...19 LCD 电气特性...20 上 HT66F002/HT66F003/HT66F004 版本 : V1.20 日期 : 目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...7 方框图...8 引脚图...8 引脚说明...10 极限参数...16 直流电气特性...16 交流电气特性...18 ADC 电气特性...19 LVR 电气特性...19 LCD 电气特性...20 上电复位特性...20

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

R/W

R/W (HD44780 KS0066 ) 3 3 5 6 10 14 HD44780/KS0066 16 2 LCM 8 1 40 4 LCD HD44780/KS0066 HD44100 IC PCB 0.1 CMOS 1. 2. 3. 4. 5. RH60% 6. 1. 2. 3. PCB 3 4. 5. 6. 1. 280 C 2. 3 4s 3. 4. 5. 3 5 1. 2. IC 3. DC-DC

More information

FM1935X智能非接触读写器芯片

FM1935X智能非接触读写器芯片 FM3316/3315 MCU 2017.06 FM3316/3315 MCU 2.21 (http://www.fmsh.com/) FM3316/3315 MCU 2.22 ... 3 1... 4 2... 5 2.1... 5 2.2... 5 2.3... 6 2.3.1... 6 2.3.2... 6 2.4... 9 2.5... 10 2.5.1 LQFP64... 10 2.5.2

More information

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

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi MICROCHIP EVM Board : APP001 1-1. APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pin 16 I/O Extension Interface 1-2. APP001 Block_A Block_B

More information

技术相关信息

技术相关信息 8-Bit 触摸按键式 Flash 单片机 BS45F2 版本 :V02 日期 :202/05/4 www.greenmcu.com 目录 目 录 第 章概述及其特性.... 特性..... CPU 特性.....2 周边特性....2 概述....3 方框图... 2.4 引脚图... 2.5 引脚说明... 3.6 极限参数... 3.7 直流电气特性... 4.8 交流电气特性... 4.9

More information

FM1935X智能非接触读写器芯片

FM1935X智能非接触读写器芯片 FM33A0xx MCU 2017. 05 2.0 1 (http://www.fmsh.com/) 2.0 2 ... 3 1... 4 1.1... 4 1.2... 4 1.3... 5 1.3.1... 5 1.3.2... 5 1.4... 8 1.4.1 LQFP100... 8 1.4.2 LQFP80... 9 1.4.3... 9 2... 15 2.1 LQFP100... 15

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

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

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

(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

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

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

untitled

untitled 0755 85286856 0755 82484849 路 4.5V ~5.5V 流 @VDD=5.0V,

More information

1 TPIS TPIS 2 2

1 TPIS TPIS 2 2 1 1 TPIS TPIS 2 2 1. 2. 3. 4. 3 3 4 5 4 TPIS TPIS 6 5 350 Mark Coil F3/F6 350 M 150 M 25 M 7.12M 8 M F3 F6 F4 F7 F8 8M AA 7 350 28V 5V IC HCPL2731 0.5mA 6 8 (TPIS) TPIS 9 7 IC AT89C2051 AT89C2051 CMOS8

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

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

第十四章 STC单片机比较器原理及实现 第 14 章 STC 单片机比较器 原理及实现 何宾 2015.02 1 本章主要内容 STC 单片机比较器结构 STC 单片机比较器寄存器组 STC 单片机比较器应用 2 STC 单片机比较器结构 STC15W 系列单片机内置了模拟比较器 对于 STC15W201S STC15W404S, 以及 STC15W1K16S 系 列单片机的比较器内部结构 3 STC 单片机比较器结构 S T C 15W

More information

文件名

文件名 Microchip MCP3221 12 I 2 C TM 12 1LSB DNL 2LSB INL 250 A 5nA 1 A I 2 C TM I 2 C 100kHz I 2 C 400kHz 2 8 I 2 C 22.3ksps 2.7V 5.5V 40 +85 40 +125 SOT-23 Microchip MCP3221 12 A/D SOT-23 CMOS MCP3221 250 A

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

目录 特性...5 CPU 特性... 5 周边特性... 5 概述...5 选型表...6 方框图...6 引脚图...6 引脚说明...7 极限参数...8 直流电气特性...9 交流电气特性...10 上电复位特性...10 系统结构 时序和流水线结构 程序计数器...

目录 特性...5 CPU 特性... 5 周边特性... 5 概述...5 选型表...6 方框图...6 引脚图...6 引脚说明...7 极限参数...8 直流电气特性...9 交流电气特性...10 上电复位特性...10 系统结构 时序和流水线结构 程序计数器... HT48R002/HT48R003 版本 : V1.11 日期 : 目录 特性...5 CPU 特性... 5 周边特性... 5 概述...5 选型表...6 方框图...6 引脚图...6 引脚说明...7 极限参数...8 直流电气特性...9 交流电气特性...10 上电复位特性...10 系统结构... 11 时序和流水线结构... 11 程序计数器... 12 堆栈... 12 算术逻辑单元

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

学习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

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

untitled

untitled EDM12864-03 : 25-1 : 116600 : (0411)7612956 7632020 7612955 : (0411)7612958 Model No.: Editor: 1. ----------------------------------------------------3 2. ----------------------------------------------------3

More information

《手机维修原理及维修实例详解》目录

《手机维修原理及维修实例详解》目录 1 IC MP3 MP4 2 CPU MP3 MP4 13M 1 LCD 2 13MHz 3 CONTACT SERVICE T SIM MP3 MP4 2 4 FLASH ROM EEPROM RAM SIM CPU CPU RST CPU FLASH Flash CE CS Flash DE WE RST Flash Flash FLASH EEPROM Phone Locked CON-TACTSERVICE

More information

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

第 卷 第 期 年 月 半 导 体 学 报!  # $%&'%' $!&' #% #$1 /#1 $'! / ?/ ?/ / 3 0,?/ ) * +!!! '!,!! -. & ' $! '! 4% %&1)/1(7%&)03 (% ) 第 卷 第 期 年 月!"# $%&'%' $!&'#%#$1/#1 $'! /18103 2?/03101?/18103 /3 0,?/0301.13 )*+!!! '!,!! -.&' $!'! 4%%&1)/1(7%&)03(%)%&,%*(1&0)%$-0*,%30)17*1*)0(+1(1+&1*+*),)1; &113(%44(10&.0701&0-&00*/)%;()1%-1+%&0)0*1*)%

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

单片机应用编程技巧(专家:邓宏杰)

单片机应用编程技巧(专家:邓宏杰) 编 者 注 : 本 文 件 为 电 子 工 程 专 辑 网 站 编 辑 部 原 创, 电 子 工 程 专 辑 享 有 本 文 章 完 全 著 作 权, 如 需 转 载 该 文 章, 必 须 经 过 电 子 工 程 专 辑 网 站 编 辑 部 同 意 联 系 电 子 工 程 专 辑 网 站 编 辑 部, 请 发 信 至 [email protected] 单 片 机 应 用 编 程 技

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

,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

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

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

More information

Ps22Pdf

Ps22Pdf ( ) ( 150 ) 25 15 20 40 ( 25, 1, 25 ), 1. A. B. C. D. 2. A. B. C. D. 3., J = 1 H = 1 ( A B, J', J, H ) A. A = B = 1, J' =0 B. A = B = J' =1 C. A = J' =1, B =0 D. B = J' = 1, A = 0 4. AB + AB A. AB B. AB

More information

版权声明 龙芯 免责声明 据 龙芯 2 Building No.2, Loongson Industrial Park, Zhongguancun Environmental Protection Park (Tel) (Fax)

版权声明 龙芯 免责声明 据 龙芯 2 Building No.2, Loongson Industrial Park, Zhongguancun Environmental Protection Park (Tel) (Fax) 2018 9 29 龙芯 版权声明 龙芯 免责声明 据 龙芯 2 Building No.2, Loongson Industrial Park, Zhongguancun Environmental Protection Park (Tel) 010-62546668 (Fax) 010-62600826 阅读指南 龙芯 1C101 处理器数据手册 龙芯 1C101 修订历史 序号 更新日期 版本号

More information

DS_MM32P021_Ver1.9.0

DS_MM32P021_Ver1.9.0 产品手册 Datasheet MM32P021 32 位基于 ARM Cortex M0 核心的微控制器 版本 :1.9.0 保留不通知的情况下, 更改相关资料的权利 目录 1. 总介... 5 1.1 概述... 5 1.2 产品特性... 5 2. 规格说明... 6 2.1 器件对比... 6 2.2 功能简述... 6 3. 引脚定义... 7 3.1 引脚配置... 7 3.2 引脚描述...

More information

HT48R10A-1/HT48R30A-1 HT48R50A-1/HT48R70A-1 I/O 型单片机使用手册 本使用手册版权为盛群半导体股份有限公司所有, 非经盛群半导体股份有限公司书面授权同意, 不得通过任何形式复制 储存或传输 目录 目录 第一部份单片机概论... 1 第一章硬件结构... 3 简介...3 特性...4 技术特性...4 内核特性...4 周边特性...5 选择表...5

More information

D/A DAC ( 1us) (10~20 ) DAC0832 1

D/A DAC ( 1us) (10~20 ) DAC0832 1 D/A DAC0832 8 ( 1us) (10~20 ) DAC0832 1 1. 20 DI7~DI0 ILE 8 8 DAC 8 D/A LE LE & RFB VREF IOUT2 IOUT1 RFB CS WR1 XFER WR2 & & AGND VCC DGND 2 DI7~DI0 ILE & 8 LE 8 DAC LE 8 D/A RFB V REF IOUT2 IOUT1 R FB

More information

2005.book

2005.book ...4... 4... 7...10... 10... 10... 10... 10... 11... 11 PCC... 11 TB170... 12 /... 12...13... 13 BP150 / BP151 / BP152 / BP155... 14...15... 15... 15... 15... 15... 15... 15... 16 PS465 / PS477... 17 PS692

More information

untitled

untitled EDM16080-01 Model No.: Editor: 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3

More information

untitled

untitled 8086/8088 CIP /. 2004.8 ISBN 7-03-014239-X.... TP313 CIP 2004 086019 16 100717 http://www.sciencep.com * 2004 8 2004 8 1 5 500 787 1092 1/16 16 1/2 391 000 1 2 ii 1 2 CAI CAI 3 To the teacher To the student

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

DL1621-1

DL1621-1 General Description: DL1621-1, 含 LCD 的控制线路, 搭配 MCU 来使用, 将使使用者的成本降低, 以及应用更加. 宽广 Features: 工作电压 2.4V-5.5V 系统频率 : - 内建 RC 振荡器 (256Khz) - 外挂 32768Hz 晶振 - 外灌 256Khz 输入 ( 由 OSCI 脚 ) 提供简单 3 pins 串接接口 (CKRB/ CKWB/

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

SPMC75F2413A_EVM_使用说明_V1.2.doc

SPMC75F2413A_EVM_使用说明_V1.2.doc SPMCFA EVM V. - Jan 0, 00 http://www.sunplusmcu.com ................ SPMCFA........... EEPROM.... I/O............ LED.... LED.... RS-........0............ EVM................ 0.....0..... SPMCFA EVM SPMCFA

More information

untitled

untitled XZL024 http://item.taobao.com/item.htm?id=6321822194 1 1 1.1 1.2 1.3 1.4 2 2.1 2.2 2.3 3 USBee Suite 3.1 3.2 3.3 3.4 4 RS232 RS485 RS422 CAN http://item.taobao.com/item.htm?id=6321822194 2 1 XZL024 PC

More information

Cost_Effective C Handbook

Cost_Effective C Handbook HT8 MCU 看门狗 (WDT) 应用范例 防止死机 文件编码 :AN0426S 简介 Holtek Flash MCU 提供了一个功能单元 WDT (Watch Dog Timer) 看门狗定时器, 其最主要的功能是避免程序因不可预期的因素 ( 如 : 电路噪声 ) 造成系统长时间的瘫痪 ( 如 : 跳至死循环或未知地址造成无法预测的结果 ) 功能说明 Holtek 新推出的 MCU 已无 2

More information

Arduino 1-1 Arduino 1-2 Arduino 1-3 Arduino IDE

Arduino 1-1 Arduino 1-2 Arduino 1-3 Arduino IDE Arduino 1-1 Arduino 1-2 Arduino 1-3 Arduino IDE Arduino 01 02 03 04 05 06 07 08 1-1 Arduino 2005 Massimo Banzi David Cuartielles David Mellis Arduino Arduino Arduino CC Arduino Arduino Arduino Arduino

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

untitled

untitled LCD EDM12864HBSL-ALC-G : 25-1 : 116600 : (0411)7612956 7632020 : (0411)7612958 Model No.: Editor: LCD 1. ----------------------------------------------------3 2. ----------------------------------------------------3

More information

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

额定规格 / 性能 单相 标准认证 UL CSA. NO. EN-- 额定规格输入 环境温度 项目电压电平额定电压使用电压范围输入电流型号动作电压复位电压 - B ma 以下 DC~V DC.~V DC.V 以下 DC.V 以上 - BL ma 以下 输出 项目 * 根据环境温度的不同而不同 详情请 加热器用固态继电器 单相 CSM_-Single-phase_DS_C 带纤细型散热器的一体式小型 SSR 备有无过零触发型号, 用途广泛 符合 RoHS 标准 包含无过零触发型号, 产品线齐全 输出回路的抗浪涌电压性能进一步提高 根据本公司的试验条件 小型 纤细形状 除了 DIN 导轨安装, 还可进行螺钉安装 获取 UL CSA EN 标准 TÜV 认证 请参见 共通注意事项 种类 关于标准认证机型的最新信息,

More information

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

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 MT90P0 4-Bit RISC MCU 使用及注意事项 MT90P0 4-bit RISC MCU PIN MAP: SOT-26 PB0 6 PB3 VSS 2 5 V PB 3 4 PB2/RTCC 2 IC 烧入注意事项 : A 需制作转接座 : Writer PIN MAP: V NC PB3 PB2 VSS PB PB0 NC ( 底 ) B 需更改 Writer Firmware WM0

More information

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

GW2A 系列 FPGA 产品 GW2A-18 器件 Pinout Version History 日期 版本 2016/8/ /9/ /11/ /2/ /6/ /6/ /8 Version History 日期 版本 2016/8/4 1.00 2016/9/2 1.01 2016/11/29 1.02 2017/2/16 1.03 2017/6/9 1.04 2018/6/27 1.05 2018/8/8 1.06 新增 MG196 PBGA256S 封装信息 ; 修改 SSPI 模式的配置功能 ; 增加 QN88 封装信息 2019/3/27 1.07 增加电源供电要求

More information

Ch03_嵌入式作業系統建置_01

Ch03_嵌入式作業系統建置_01 Chapter 3 CPU Motorola DragonBall ( Palm PDA) MIPS ( CPU) Hitachi SH (Sega DreamCast CPU) ARM StrongARM CPU CPU RISC (reduced instruction set computer ) CISC (complex instruction set computer ) DSP(digital

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

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

Microsoft Word - 專題封面.doc

Microsoft Word - 專題封面.doc 逢 甲 大 學 資 訊 工 程 學 系 專 題 研 究 報 告 8051 小 遊 戲 -21 點 指 導 教 授 : 陳 德 生 學 生 : 許 博 益 中 華 民 國 九 十 六 年 六 月 I 目 錄 第 一 章 緒 論 1 1-1 研 究 背 景 1 1-2 研 究 動 機 2 1-3 研 究 目 的 3 1-3-1 21 點 源 起 3 1-3-2 21 點 規 則 3 第 二 章 微 電

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

使用说明书 DT4221 DT4222 数字万用表 DIGITAL MULTIMETER 2013 年 11 月第一版 DT4221A982-00(A981-00) 13-11H CN ...1...1...2...3...7 1 11 1.1... 11 1.2...12 1.3...16 1.4...17 2 19 2.1...19 2.2 /...20 2.3...22 2.4...25...

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

CH559指令周期.doc

CH559指令周期.doc CH55X 汇编指令周期表 CH55X 汇编指令概述 : 型号包含 : a. 指令单周期型号 :CH557 CH558 CH559; b. 指令 4 周期型号 :CH551 CH552 CH553 CH554; c. 非跳转指令的指令周期数与指令字节数相同 ; d. 跳转指令含 MOVC/RET/CALL 通常比字节数多若干个周期 ; e.movc 指令多 4 或 5 个周期 ( 下条指令地址为奇数时多

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

RP7900 Series Regenerative Power System - Data Sheet

RP7900 Series Regenerative Power System - Data Sheet RP7900 RP7931A - RP7936A (200/208 VAC) RP7941A - RP7946A (400/480 VAC) RP7951A - RP7953A (200/208 VAC) RP7961A - RP7963A (400/480 VAC) 12V / HEV/EV 300V RP7900 Keysight RP7900 3U RP7900 950 V 800 A 10

More information

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD2 1...2 1.1...2 1.2...2 1.3 /...2 2 SoftICE...2 3 SoftICE MCU...2 4 SoftICE...3 4.1 SST BootLoader SOFTICE...3 4.2 SoftICE SST MCU...6 5 SoftICE...7

More information

TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT (f) 639 2A f B1

TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT (f) 639 2A f B1 TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT 588 4 1 0571-85121224 85121742 85121304(f) 639 2A095 0571-88256346 89902095 f B1618 010-62051209 62000662 62568913 82036512 f http://www.tsingtek.com

More information

Cerris IROS

Cerris IROS 上海海栎创微电子有限公司 CSM212/216/224 数据手册 具有专用电容检测模块的 8 位单片机 Rev: V1.2 www.hynitron.com CSM212/216/224 是一款具有高性能精简指令集且集成电容触控功能的 EERPOM 型 8051 单片机 此单 片机集成有硬件触控 CDC 模块, 可多次编程的 EEPROM 存储器和常用通讯接口, 为各种触摸按键的应用 提供了一种简单而又有效的实现方法

More information

供充放一体电源及充电电源手册_0_.doc

供充放一体电源及充电电源手册_0_.doc 2010. 05 供充放一体电源及充电电源 适用于铅酸电池 锂电池 镍氢电池 实现不间断供电 采用自动均 / 浮充 恒流 / 恒压 零电流 -ΔV 检测 / 涓充 / 滴充技术 提供各种保护 显示各种工作状态 目录 SCD 供充放一体电源 ( 锂电池系列 )-----------1 SCD 供充放一体电源 ( 铅酸电池系列 )----------3 C 充电电源 ( 镍氢电池系列 )-------------------------5

More information