0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
HT66F3197

HT66F3197

  • 厂商:

    HOLTEK(合泰)

  • 封装:

    LQFP48

  • 描述:

    具有EEPROM和UART的增强型A/D单片机

  • 数据手册
  • 价格&库存
HT66F3197 数据手册
内置 EEPROM 和 UART 的增强 A/D 型单片机 HT66F3197 版本 : V1.10 日期 : 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 目 录 特性 ..................................................................................................................................6 CPU 特性 ................................................................................................................................ 6 周边特性 ................................................................................................................................. 6 概述 ..................................................................................................................................7 方框图 ..............................................................................................................................7 引脚图 ..............................................................................................................................8 引脚说明 ..........................................................................................................................9 极限参数 ........................................................................................................................14 直流电气特性 ................................................................................................................14 交流电气特性 ................................................................................................................17 A/D 转换器电气特性.....................................................................................................20 LVD & LVR 电气特性 ..................................................................................................22 比较器电气特性 ............................................................................................................23 LCD 电气特性 ...............................................................................................................24 上电复位特性 ................................................................................................................25 系统结构 ........................................................................................................................26 时序和流水线结构 ............................................................................................................... 26 程序计数器 ........................................................................................................................... 27 堆栈 ....................................................................................................................................... 27 算术逻辑单元 – ALU ........................................................................................................... 28 Flash 程序存储器 ..........................................................................................................29 结构 ....................................................................................................................................... 29 特殊向量 ............................................................................................................................... 29 查表 ....................................................................................................................................... 29 查表范例 ............................................................................................................................... 30 在线烧录 – ICP ..................................................................................................................... 31 片上调试 – OCDS................................................................................................................. 32 数据存储器 ....................................................................................................................33 结构 ....................................................................................................................................... 33 数据存储器寻址 ................................................................................................................... 34 通用数据存储器 ................................................................................................................... 34 特殊功能数据存储器 ........................................................................................................... 34 特殊功能寄存器 ............................................................................................................36 间接寻址寄存器 – IAR0,IAR1,IAR2............................................................................. 36 存储器指针 – MP0,MP1L/MP1H,MP2L/MP2H ........................................................... 36 累加器 – ACC ....................................................................................................................... 38 程序计数器低字节寄存器 – PCL ........................................................................................ 38 表格寄存器 – TBLP,TBHP,TBLH ................................................................................. 38 状态寄存器 – STATUS ......................................................................................................... 38 Rev. 1.10 2 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 EEPROM 数据存储器 ..................................................................................................40 EEPROM 数据存储器结构 .................................................................................................. 40 EEPROM 寄存器 .................................................................................................................. 40 从 EEPROM 中读取数据 ..................................................................................................... 41 写数据到 EEPROM .............................................................................................................. 42 写保护 ................................................................................................................................... 42 EEPROM 写中断 .................................................................................................................. 42 编程注意事项 ....................................................................................................................... 43 振荡器 ............................................................................................................................44 振荡器概述 ........................................................................................................................... 44 系统时钟配置 ....................................................................................................................... 44 外部晶体 / 陶瓷振荡器 – HXT ............................................................................................ 45 内部 RC 振荡器 – HIRC ...................................................................................................... 45 外部 32.768kHz 晶体振荡器 – LXT .................................................................................... 46 内部 32kHz 振荡器 – LIRC ................................................................................................. 47 辅助振荡器 ........................................................................................................................... 47 工作模式和系统时钟 ....................................................................................................48 系统时钟 ............................................................................................................................... 48 系统工作模式 ....................................................................................................................... 49 控制寄存器 ........................................................................................................................... 50 工作模式切换 ....................................................................................................................... 53 待机电流注意事项 ............................................................................................................... 57 唤醒 ....................................................................................................................................... 57 编程注意事项 ....................................................................................................................... 57 看门狗定时器 ................................................................................................................58 看门狗定时器时钟源 ........................................................................................................... 58 看门狗定时器控制寄存器 ................................................................................................... 58 看门狗定时器操作 ............................................................................................................... 59 复位和初始化 ................................................................................................................60 复位功能 ............................................................................................................................... 60 复位初始状态 ....................................................................................................................... 63 输入 / 输出端口 .............................................................................................................67 上拉电阻 ............................................................................................................................... 68 PA 口唤醒 ............................................................................................................................. 68 输入 / 输出端口控制寄存器 ................................................................................................ 69 输入 / 输出端口源电流控制 ................................................................................................ 69 引脚共用功能 ....................................................................................................................... 71 输入 / 输出引脚结构 ............................................................................................................ 79 编程注意事项 ....................................................................................................................... 80 定时器模块 – TM ..........................................................................................................81 简介 ....................................................................................................................................... 81 TM 操作 ................................................................................................................................ 81 TM 时钟源 ............................................................................................................................ 81 TM 中断 ................................................................................................................................ 81 Rev. 1.10 3 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 TM 外部引脚 ........................................................................................................................ 82 TM 外部引脚控制寄存器 .................................................................................................... 82 编程注意事项 ....................................................................................................................... 83 简易型 TM – CTM........................................................................................................84 简易型 TM 操作 ................................................................................................................... 84 简易型 TM 寄存器介绍 ....................................................................................................... 84 简易型 TM 工作模式 ........................................................................................................... 88 标准型 TM – STM ........................................................................................................94 标准型 TM 操作 ................................................................................................................... 94 标准型 TM 寄存器介绍 ...................................................................................................... 94 标准型 TM 工作模式 ........................................................................................................... 98 周期型 TM – PTM ......................................................................................................108 周期型 TM 操作 ................................................................................................................. 108 周期型 TM 寄存器介绍 ..................................................................................................... 109 周期型 TM 工作模式 ......................................................................................................... 113 A/D 转换器...................................................................................................................122 A/D 转换器简介 ................................................................................................................. 122 A/D 转换寄存器介绍 ......................................................................................................... 123 A/D 转换器操作 ................................................................................................................. 126 A/D 转换器参考电压 ......................................................................................................... 127 A/D 转换器输入信号 ......................................................................................................... 127 A/D 转换率及时序图 ......................................................................................................... 128 A/D 转换步骤 ..................................................................................................................... 129 编程注意事项 ..................................................................................................................... 130 A/D 转换功能 ..................................................................................................................... 130 A/D 转换应用范例 ............................................................................................................. 131 比较器 ..........................................................................................................................133 比较器操作 ......................................................................................................................... 133 比较器寄存器 ..................................................................................................................... 133 输入失调校准 ..................................................................................................................... 135 串行接口模块 – SIM ...................................................................................................136 SPI 接口 .............................................................................................................................. 136 I2C 接口 ............................................................................................................................... 142 UART 接口 ..................................................................................................................152 UART 外部引脚.................................................................................................................. 152 UART 数据传输方案.......................................................................................................... 153 UART 状态和控制寄存器.................................................................................................. 153 波特率发生器 ..................................................................................................................... 158 UART 模块的设置与控制.................................................................................................. 158 UART 发送器...................................................................................................................... 159 UART 接收器...................................................................................................................... 160 接收错误处理 ..................................................................................................................... 162 UART 模块中断结构.......................................................................................................... 163 UART 模块暂停和唤醒...................................................................................................... 164 Rev. 1.10 4 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 带 SCOM 功能的 LCD ...............................................................................................165 LCD 操作 ............................................................................................................................ 165 LCD 偏压控制 .................................................................................................................... 165 中断 ..............................................................................................................................166 中断寄存器 ......................................................................................................................... 166 中断操作 ............................................................................................................................. 171 外部中断 ............................................................................................................................. 172 比较器中断 ......................................................................................................................... 172 多功能中断 ......................................................................................................................... 172 A/D 转换器中断 ................................................................................................................. 172 时基中断 ............................................................................................................................. 173 EEPROM 中断 .................................................................................................................... 175 LVD 中断 ............................................................................................................................ 175 TM 中断 .............................................................................................................................. 175 SIM 中断 ............................................................................................................................. 175 UART 中断.......................................................................................................................... 175 中断唤醒功能 ..................................................................................................................... 176 编程注意事项 ..................................................................................................................... 176 低电压检测 – LVD ......................................................................................................177 LVD 寄存器 ........................................................................................................................ 177 LVD 操作 ............................................................................................................................ 178 配置选项 ......................................................................................................................179 应用电路 ......................................................................................................................180 指令集 ..........................................................................................................................181 简介 ..................................................................................................................................... 181 指令周期 ............................................................................................................................. 181 数据的传送 ......................................................................................................................... 181 算术运算 ............................................................................................................................. 181 逻辑和移位运算 ................................................................................................................. 181 分支和控制转换 ................................................................................................................. 182 位运算 ................................................................................................................................. 182 查表运算 ............................................................................................................................. 182 其它运算 ............................................................................................................................. 182 指令集概要 ..................................................................................................................183 惯例 ..................................................................................................................................... 183 扩展指令集 ......................................................................................................................... 186 指令定义 ......................................................................................................................188 扩展指令定义 ..................................................................................................................... 200 封装信息 ......................................................................................................................210 48-pin LQFP (7mm × 7mm) 外形尺寸 ............................................................................... 211 Rev. 1.10 5 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 特性 CPU 特性 ● 工作电压: ♦ fSYS = 4MHz:1.8V~5.5V ♦ fSYS = 8MHz:2.0V~5.5V ♦ fSYS = 12MHz:2.7V~5.5V ♦ fSYS = 16MHz:3.3V~5.5V ● VDD=5V,系统时钟为 16MHz 时,指令周期为 0.25μs ● 提供暂停和唤醒功能,以降低功耗 ● 振荡器类型: ♦ 外部晶振 – HXT ♦ 外部 32.768kHz 晶振 – LXT ♦ 内部 RC – HIRC ♦ 内部 32kHz RC – LIRC ● 多种工作模式:正常、低速、空闲和休眠 ● 内部集成 4/8/12MHz 振荡器,无需外接元件 ● 所有指令都可在 1~3 个指令周期内完成 ● 查表指令 ● 115 条指令 ● 16 层堆栈 ● 位操作指令 周边特性 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● Rev. 1.10 Flash 程序存储器:8K×16 RAM 数据存储器:256×8 True EEPROM 存储器:64×8 看门狗定时器功能 44 个双向 I/O 口 软件控制的 4-SCOM 口 1/2 偏压的 LCD 驱动器 2 个引脚与外部中断口共用 多个定时器模块用于时间测量、捕捉输入、比较匹配输出、PWM 输出及单脉 冲输出 比较器功能 双时基功能,可提供固定时间的中断信号 16 通道 12-bit 的 A/D 转换器 串行接口,支持 I2C,SPI 和全双工 UART 通信 PMOS 源电流可调 低电压复位功能 低电压检测功能 封装类型:48-pin LQFP 6 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 概述 该单片机是一款 8 位高性能精简指令集的 Flash 型单片机,具有一系列功能和 特性,其 Flash 存储器可多次编程的特性给用户提供了较大的方便。存储器方 面,还包含了一个 RAM 数据存储器和一个可用于存储序列号、校准数据等非 易失性数据的 True EEPROM 存储器。 在模拟特性方面,该单片机包含一个多通道 12 位 A/D 转换器和比较器功能。 还带有多个使用灵活的定时器模块,可提供定时功能、脉冲产生功能及 PWM 产生等功能。内建 I2C,SPI 和 UART 功能,为设计者提供了一个易于外部硬件 通信的接口。内部看门狗定时器、低电压复位和低电压检测等内部保护特性, 外加优秀的抗干扰和 ESD 保护性能,确保单片机在恶劣的电磁干扰环境下可靠 地运行。 该单片机提供了丰富的内部、外部及高速、低速振荡器功能选项,其中包括完 全内建的系统振荡器,无需外接元件。其在不同工作模式之间动态切换的能力, 为用户提供了一个优化单片机操作和减少功耗的手段。 该单片机内置 UART 模块,它可以支持诸如单片机之间的数据通信交换,PC 和外部设备间的低成本数据连接,便携式和电池供电设备间的通信等。 外加时基功能、I/O 使用灵活等其它特性,使这款单片机可以广泛应用于各种 产品中,例如电子测量仪器、环境监控、手持式测量工具、家庭应用、电子控 制工具、马达控制等方面。 方框图 Flash / EEPROM Programming Circuitry EEPROM Data Memory Flash Program Memory Internal RC Oscillators Watchdog Timer Low Voltage Detect Low Voltage Reset RAM Data Memory Time Bases 8- bit RISC MCU Core Reset Circuit Interrupt Controller LXT Oscillator HXT Oscillator 12- bit A/ D Converter LCD Driver UART Rev. 1.10 SIM (I2C / SPI) Timer Modules I/O 7 LED Driver Comparator 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 引脚图 PA5/SCK/SCL PA1/INT0/SCS PA2/ICPCK/OCDSCK PC6/STPI/STP/AN6 PC7/STCK/STPB/AN7 PD0/AN8 PD1/AN9 PD2/AN10 PD3/AN11 PD4/AN12 PD5/AN13 PD6/AN14 PF6/AN15/CPF7/C+ PB0/CX PB1/PTPI/PTP PB2/PTCK/PTPB PB3/CTP PB4/CTCK/CTPB PB5 VDD VSS PB6/OSC1 PB7/OSC2 48 47 46 45 44 43 42 41 40 39 38 37 36 1 35 2 34 3 33 4 5 32 31 6 HT66F3197/HT66V3197 7 30 48 LQFP-A 29 8 28 9 27 10 26 11 25 12 13 14 15 16 17 18 19 20 21 22 23 24 PC5/AN5 PC4/AN4 PC3/PTCK/PTPB/AN3 PC2/PTPI/PTP/AN2 PC1/AN1/CMPO/VREF PC0/AN0/VREFI AVSS PF5/XT1 PF4/XT2 AVDD PF3/SCK/SCL/SCOM3 PF2/SDI/SDA/SCOM2 PF1/SDO/SCOM1 PF0/SCS/SCOM0 PE4 PE3/CTP PE2/CTCK/CTPB PE1/STPI/STP PE0/STCK/STPB PA7/INT1/TX PA6/INT0/RX PA0/ICPDA/OCDSDA PA4/SDI/SDA PA3/INT1/SDO 注:1、若一引脚可用作多种功能输出引脚,所需的引脚功能可通过对应的引脚共用功能选择寄存器设置。 2、HT66V3197 是 HT66F3197 的 EV 芯片,OCDSCK 和 OCDSDA 引脚功能仅存在于 OCDS EV 芯片。 Rev. 1.10 8 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 引脚说明 除了电源引脚外,该单片机的所有引脚都以它的端口名称进行标注,例如 PA0、PA1 等,用于描述这些引脚的数字输入 / 输出功能。然而,这些引脚也与 其它功能共用,如模数转换器、定时器模块等。每个引脚的功能如下表所述, 而引脚配置的详细内容见规格书其它章节。 引脚名称 I/T O/T ST CMOS ICPDA OPT PAPU PAWU PAS0 ─ ST OCDSDA ─ ST CMOS ICP 数据 / 地址 OCDS 数据 / 地址,仅用于 EV 芯 CMOS 片 ST CMOS ST ─ 功能 PA0 PA0/ICPDA/ OCDSDA PA1 PA1/INT0/SCS INT0 SCS PA2/ICPCK/ OCDSCK PA2 ICPCK OCDSCK PA3 PA3/INT1/SDO INT1 SDO PA4 PA4/SDI/SDA SDI SDA PA5 PA5/SCK/SCL SCK SCL Rev. 1.10 PAPU PAWU PAS0 PAS0 IFS1 INTEG PAS0 IFS0 PAPU PAWU PAS0 ─ ─ PAPU PAWU PAS0 PAS0 IFS1 INTEG PAS0 PAPU PAWU PAS1 PAS1 IFS0 PAS1 IFS0 PAPU PAWU PAS1 PAS1 IFS0 PAS1 IFS0 说明 通用 I/O 口,可通过寄存器设置 上拉电阻和唤醒功能 通用 I/O 口,可通过寄存器设置 上拉电阻和唤醒功能 外部中断 0 ST CMOS SPI 从机选择 ST CMOS ST ST ─ ─ ST CMOS ST ─ 通用 I/O 口,可通过寄存器设置 上拉电阻和唤醒功能 ICP 时钟 OCDS 时钟,仅用于 EV 芯片 通用 I/O 口,可通过寄存器设置 上拉电阻和唤醒功能 外部中断 1 ─ CMOS SPI 数据输出 ST CMOS ST ─ 通用 I/O 口,可通过寄存器设置 上拉电阻和唤醒功能 SPI 数据输入 ST NMOS I2C 数据输入 / 输出 ST CMOS ST CMOS SPI 串行时钟 ST NMOS I2C 时钟 9 通用 I/O 口,可通过寄存器设置 上拉电阻和唤醒功能 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 引脚名称 功能 PA6 PA6/INT0/RX INT0 RX PA7 PA7/INT1/TX INT1 TX PB0/CX PB0 CX PB1 PB1/PTPI/PTP PTPI PTP PB2 PB2/PTCK/ PTPB PTCK PTPB PB3/CTP PB3 CTP PB4 PB4/CTCK/ CTPB CTCK CTPB PB5 PB6/OSC1 PB7/OSC2 Rev. 1.10 PB5 PB6 OSC1 PB7 OSC2 OPT PAPU PAWU PAS1 PAS1 IFS1 INTEG PAS1 UCR1 PAPU PAWU PAS1 PAS1 IFS1 INTEG PAS1 UCR1 PBPU PBS0 PBS0 PBPU PBS0 PBS0 IFS0 PBS0 PBPU PBS0 PBS0 IFS0 PBS0 PBPU PBS0 PBS0 PBPU PBS1 PBS1 IFS0 PBS1 PBPU PBS1 PBPU PBS1 PBS1 PBPU PBS1 PBS1 I/T O/T ST CMOS ST ─ 外部中断 0 ST ─ UART 串行数据接收引脚 ST CMOS ST ─ 说明 通用 I/O 口,可通过寄存器设置 上拉电阻和唤醒功能 通用 I/O 口,可通过寄存器设置 上拉电阻和唤醒功能 外部中断 1 ─ CMOS UART 串行数据发送引脚 ST CMOS ─ ST ST ─ ST ST ─ ST ─ ST ST ─ ST ST HXT ST ─ 10 通用 I/O 口,可通过寄存器设置 上拉电阻 CMOS 比较器输出 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ PTM 捕捉输入 CMOS PTM 输出 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ PTM 时钟输入 CMOS PTM 反相输出 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 CMOS CTM 输出 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ CTM 时钟输入 CMOS CTM 反相输出 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ HXT 振荡器引脚 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 HXT HXT 振荡器引脚 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 引脚名称 功能 PC0 PC0/AN0/VREFI AN0 VREFI PC1 PC1/AN1/ CMPO/VREF AN1 CMPO VREF PC2 PC2/PTPI/PTP/ AN2 PTPI PTP AN2 PC3 PC3/PTCK/ PTPB/AN3 PC4/AN4 PC5/AN5 PTCK PTPB AN3 PC4 AN4 PC5 AN5 PC6 PC6/STPI/STP/ AN6 STPI STP AN6 PC7 PC7/STCK/ STPB/AN7 Rev. 1.10 STCK STPB AN7 OPT PCPU PCS0 PCS0 PCS0 SADC2 PCPU PCS0 PCS0 PCS0 CMPC PCS0 SADC2 PCPU PCS0 PCS0 IFS0 PCS0 PCS0 PCPU PCS0 PCS0 IFS0 PCS0 PCS0 PCPU PCS1 PCS1 PCPU PCS1 PCS1 PCPU PCS1 PCS1 IFS0 PCS1 PCS1 PCPU PCS1 PCS1 IFS0 PCS1 PCS1 I/T ST AN O/T 说明 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ A/D 转换器输入通道 0 AN ─ ST CMOS AN ─ ─ ─ ST CMOS ST ─ ST ST ─ AN ST AN ST AN ST ST ─ AN ST ST ─ AN 11 通用 I/O 口,可通过寄存器设置 上拉电阻 A/D 转换器输入通道 1 CMOS 比较器输出 AN ─ AN A/D 转换器 PGA 参考电压输入 A/D 转换器参考电压输入 通用 I/O 口,可通过寄存器设置 上拉电阻 PTM 捕捉输入 CMOS PTM 输出 ─ A/D 转换器输入通道 2 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ PTM 时钟输入 CMOS PTM 反相输出 ─ A/D 转换器输入通道 3 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ A/D 转换器输入通道 4 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ A/D 转换器输入通道 5 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ STM 捕捉输入 CMOS STM 输出 ─ A/D 转换器输入通道 6 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ STM 时钟输入 CMOS STM 反相输出 ─ A/D 转换器输入通道 7 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 引脚名称 PD0/AN8 PD1/AN9 PD2/AN10 PD3/AN11 PD4/AN12 PD5/AN13 PD6/AN14 功能 PD0 AN8 PD1 AN9 PD2 AN10 PD3 AN11 PD4 AN12 PD5 AN13 PD6 AN14 PE0 PE0/STCK/STPB STCK STPB PE1 PE1/STPI/STP STPI STP PE2 PE2/CTCK/ CTPB CTCK CTPB PE3/CTP PE4 Rev. 1.10 PE3 CTP PE4 OPT PDPU PDS0 PDS0 PDPU PDS0 PDS0 PDPU PDS0 PDS0 PDPU PDS0 PDS0 PDPU PDS1 PDS1 PDPU PDS1 PDS1 PDPU PDS1 PDS1 PEPU PES0 PES0 IFS0 PES0 PEPU PES0 PES0 IFS0 PES0 PEPU PES0 PES0 IFS0 PES0 PEPU PES0 PES0 PEPU PES1 I/T O/T ST CMOS AN ─ ST CMOS AN ─ ST CMOS AN ─ ST CMOS AN ─ ST CMOS AN ─ ST CMOS AN ─ ST CMOS AN ─ ST CMOS ST ─ ─ ST ST ─ ST ST ─ ST ST ST 12 说明 通用 I/O 口,可通过寄存器设置 上拉电阻 A/D 转换器输入通道 8 通用 I/O 口,可通过寄存器设置 上拉电阻 A/D 转换器输入通道 9 通用 I/O 口,可通过寄存器设置 上拉电阻 A/D 转换器输入通道 10 通用 I/O 口,可通过寄存器设置 上拉电阻 A/D 转换器输入通道 11 通用 I/O 口,可通过寄存器设置 上拉电阻 A/D 转换器输入通道 12 通用 I/O 口,可通过寄存器设置 上拉电阻 A/D 转换器输入通道 13 通用 I/O 口,可通过寄存器设置 上拉电阻 A/D 转换器输入通道 14 通用 I/O 口,可通过寄存器设置 上拉电阻 STM 时钟输入 CMOS STM 反相输出 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ STM 捕捉输入 CMOS STM 输出 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ CTM 时钟输入 CMOS CTM 反相输出 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ CTM 时钟输入 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 引脚名称 功能 PF0 PF0/SCS/ SCOM0 SCS SCOM0 PF1 PF1/SDO/ SCOM1 SDO SCOM1 PF2 PF2/SDI/SDA/ SCOM2 SDI SDA SCOM2 PF3 PF3/SCK/SCL/ SCOM3 SCK SCL SCOM3 PF4/XT2 PF5/XT1 PF4 XT2 PF5 XT1 PF6 PF6/AN15/C- AN15 CPF7 PF7/C+ VDD Rev. 1.10 C+ VDD OPT PFPU PFS0 PFS0 IFS0 PFS0 SCOMC PFPU PFS0 PFS0 PFS0 SCOMC PFPU PFS0 PFS0 IFS0 PFS0 IFS0 PFS0 SCOMC PFPU PFS0 PFS0 IFS0 PFS0 IFS0 PFS0 SCOMC PFPU PFS1 PFS1 PFPU PFS1 PFS1 PFPU PFS1 PFS1 PFS1 CMPC CMPVOS PFPU PFS1 PFS1 CMPC CMPVOS ─ I/T O/T ST 说明 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ST CMOS SPI 从机选择 ─ SCOM S/W LCD COM 输出 ST CMOS ─ 通用 I/O 口,可通过寄存器设置 上拉电阻 CMOS SPI 数据输出 ─ SCOM S/W LCD COM 输出 ST CMOS ST ─ 通用 I/O 口,可通过寄存器设置 上拉电阻 SPI 数据输入 ST NMOS I2C 数据输入 / 输出 ─ SCOM S/W LCD COM 输出 ST CMOS ST CMOS SPI 串行时钟 ST NMOS I2C 时钟 ─ SCOM S/W LCD COM 输出 ST CMOS ─ ST LXT ST AN 通用 I/O 口,可通过寄存器设置 上拉电阻 通用 I/O 口,可通过寄存器设置 上拉电阻 LXT LXT 振荡器引脚 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ LXT 振荡器引脚 通用 I/O 口,可通过寄存器设置 CMOS 上拉电阻 ─ A/D 转换器输入通道 15 AN ─ ST CMOS AN ─ 比较器正输入端 PWR ─ 电源电压正极 13 比较器负输入端 通用 I/O 口,可通过寄存器设置 上拉电阻 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 引脚名称 AVDD VSS AVSS 功能 AVDD VSS AVSS OPT ─ ─ ─ I/T PWR PWR PWR O/T ─ ─ ─ 说明 ADC 电源电压正极 电源电压负极,接地 ADC 电源电压接地端 O/T:输出类型; 注:I/T:输入类型; OP:通过寄存器设置; PWR:电源; CMOS:CMOS 输出; SCOM:S/W LCD COM 输出; HXT:高频晶体振荡器; ST:斯密特触发输入; NMOS:NMOS 输出 AN:模拟信号; LXT:低频晶体振荡器; 极限参数 电源供应电压 .............................................................................VSS-0.3V~VSS+6.0V 端口输入电压 ............................................................................ VSS-0.3V~VDD+0.3V 储存温度 .............................................................................................. -50°C~125°C 工作温度 ................................................................................................ -40°C~85°C IOL总电流 ............................................................................................................ 80mA IOH总电流 .......................................................................................................... -80mA 总功耗 ............................................................................................................. 500mW 注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在 上述标示范围外的工作状态,而且若长期在标示范围外的条件下工作,可能影响芯片的 可靠性。 直流电气特性 Ta = 25°C 符号 参数 VDD 工作电压 (HXT) ─ 工作电压 (HIRC) ─ 工作电压 (LXT) 工作电压 (LIRC) ─ ─ VDD Rev. 1.10 测试条件 条件 fSYS = fHXT = 4MHz fSYS = fHXT = 8MHz fSYS = fHXT = 12MHz fSYS = fHXT = 16MHz fSYS = fHIRC = 4MHz fSYS = fHIRC = 8MHz fSYS = fHIRC = 12MHz fSYS = fLXT = 32.768kHz fSYS = fLIRC = 32kHz 14 最小 典型 最大 单位 1.8 2.0 2.7 3.3 1.8 2.0 2.7 1.8 1.8 ─ ─ ─ ─ ─ ─ ─ ─ ─ 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 V V V V 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 符号 参数 工作电流 (HXT) 工作电流 (HIRC) IDD 工作电流 (LXT) 工作电流 (LIRC) 工作电流,fH = 8MHz (HIRC) 工作电流,fH = 12MHz (HXT) Rev. 1.10 VDD 3V 5V 3V 5V 3V 5V 测试条件 条件 无负载,所有外设关闭, fSYS = fHXT = 4MHz 无负载,所有外设关闭, fSYS = fHXT = 8MHz 无负载,所有外设关闭, fSYS = fHXT = 12MHz 5V 无负载,所有外设关闭, fSYS = fHXT = 16MHz 3V 5V 3V 5V 3V 5V 3V 5V 3V 5V 3V 5V 3V 5V 3V 5V 3V 5V 无负载,所有外设关闭, fSYS = fHIRC = 4MHz 无负载,所有外设关闭, fSYS = fHIRC = 8MHz 无负载,所有外设关闭, fSYS = fHIRC = 12MHz 无负载,所有外设关闭, fSYS = fLXT = 32768Hz 无负载,所有外设关闭, fSYS = fLIRC = 32kHz 无负载,所有外设关闭, fSYS = fH/2 无负载,所有外设关闭, fSYS = fH/64 无负载,所有外设关闭, fSYS = fH/2 无负载,所有外设关闭, fSYS = fH/64 15 最小 典型 最大 单位 ─ ─ ─ ─ ─ ─ 0.5 1.0 0.8 1.6 1.2 2.4 0.8 1.5 1.2 2.4 1.8 3.6 ─ 3.0 4.5 ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 0.5 1.0 0.8 1.6 1.2 2.4 10 30 10 30 0.5 1.0 0.25 0.5 0.7 1.4 0.35 0.7 0.8 1.5 1.2 2.4 1.8 3.6 20 50 20 50 1.0 2.0 0.5 1.0 1.4 2.8 0.7 1.4 mA mA mA mA mA mA mA μA μA mA mA mA mA 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 符号 ISTB 参数 VDD 3V 5V 待机电流 (SLEEP 模式 ) 3V 5V 3V 待机电流 (IDLE0 模式 ) 5V 3V 5V 3V 待机电流 (IDLE1 模式,HIRC) 5V 3V 5V 3V 5V 3V 待机电流 5V (IDLE1 模式,HXT) 3V 5V 测试条件 条件 无负载,所有外设关闭, WDT off 无负载,所有外设关闭, WDT on 无负载,所有外设关闭, fSUB on 无负载,所有外设关闭, fSUB on,fSYS = fHIRC = 4MHz 无负载,所有外设关闭, fSUB on,fSYS = fHIRC = 8MHz 无负载,所有外设关闭, fSUB on,fSYS = fHIRC = 12MHz 无负载,所有外设关闭, fSUB on,fSYS = fHXT = 4MHz 无负载,所有外设关闭, fSUB on,fSYS = fHXT = 8MHz 无负载,所有外设关闭, fSUB on,fSYS = fHXT = 12MHz 最小 典型 最大 单位 ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 无负载,所有外设关闭, ─ fSUB on,fSYS = fHXT = 16MHz 5V ─ 0 ─ ─ 0 5V 3.5 ─ ─ ─ 0.8VDD 1.8V 7 3V VOL = 0.1VDD 16 5V 32 3V VOH = 0.9VDD, -1.0 SLEDCn[m+1, m] = 00B 5V (n = 0,1,2; m = 0,2,4,6) -2.0 3V VOH = 0.9VDD, -1.75 SLEDCn[m+1, m] = 01B 5V (n = 0,1,2; m = 0,2,4,6) -3.5 5V VIL I/O 口低电平输入电压 VIH I/O 口高电平输入电压 IOL I/O 口灌电流 IOH I/O 口源电流 Rev. 1.10 3V VOH = 0.9VDD, SLEDCn[m+1, m] = 10B 5V (n = 0,1,2; m = 0,2,4,6) 3V VOH = 0.9VDD, SLEDCn[m+1, m] = 11B 5V (n = 0,1,2; m = 0,2,4,6) 16 0.2 0.5 ─ ─ 3 5 0.25 0.5 0.5 1.0 0.7 1.4 0.25 0.5 0.5 1.0 0.7 1.5 0.8 1.0 3 5 5 10 0.5 1.0 1.0 2.0 1.4 2.8 0.5 1.0 1.0 2.0 1.4 3.0 2.0 4.0 ─ ─ ─ ─ 14 32 64 μA μA μA mA mA mA mA mA mA mA 1.5 V 0.2VDD 5.0 V VDD ─ ─ mA ─ -2.0 ─ -4.0 ─ -3.5 ─ -7.0 ─ -2.5 -5.0 ─ -5.0 -10 ─ -5.5 -11 ─ -11 -22 ─ mA mA mA mA 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 符号 RPH 参数 I/O 口上拉电阻 测试条件 VDD 条件 3V LVPU = 0 5V 3V LVPU = 1 5V 最小 典型 最大 单位 20 10 6.67 3.5 60 30 15 7.5 100 50 23 12 kΩ kΩ 交流电气特性 Ta = 25°C 符号 参数 系统时钟 (HXT) fSYS 系统时钟 (HIRC) 系统时钟 (LXT) 系统时钟 (LIRC) Rev. 1.10 VDD 1.8V~5.5V 2.0V~5.5V 2.7V~5.5V 3.3V~5.5V 1.8V~5.5V 2.0V~5.5V 2.7V~5.5V 1.8V~5.5V 1.8V~5.5V 测试条件 条件 fSYS = fHXT = 4MHz fSYS = fHXT = 8MHz fSYS = fHXT = 12MHz fSYS = fHXT = 16MHz fSYS = fHIRC = 4MHz fSYS = fHIRC = 8MHz fSYS = fHIRC = 12MHz fSYS = fLXT = 32.768kHz fSYS = fLIRC = 32kHz 17 最小 典型 ─ ─ ─ ─ ─ ─ ─ ─ ─ 4 8 12 16 4 8 12 32.768 32 最大 单位 ─ ─ ─ ─ ─ ─ ─ ─ ─ MHz MHz kHz kHz 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 符号 参数 内部高速 RC 振荡器 (HIRC = 4MHz, trim 4MHz @ VDD = 3V) 内部高速 RC 振荡器 (HIRC = 4MHz, trim 4MHz @ VDD = 5V) fHIRC 内部高速 RC 振荡器 (HIRC = 8MHz, trim 8MHz @ VDD = 3V) 内部高速 RC 振荡器 (HIRC = 8MHz, trim 8MHz @ VDD = 5V) 内部高速 RC 振荡器 (HIRC = 12MHz, trim 12MHz @ VDD = 5V) Rev. 1.10 VDD 3.0V 2.2V~5.5V 3.0V 3.0V 2.2V~5.5V 2.2V~5.5V 3.0V 3.0V 5.0V 2.2V~5.5V 5.0V 5.0V 2.2V~5.5V 2.2V~5.5V 5.0V 5.0V 3.0V 3.0V~5.5V 3.0V 3.0V 3.0V~5.5V 3.0V~5.5V 3.0V 3.0V 5.0V 3.0V~5.5V 5.0V 5.0V 3.0V~5.5V 3.0V~5.5V 5.0V 5.0V 5.0V 4.0V~5.5V 5.0V 5.0V 4.0V~5.5V 4.0V~5.5V 5.0V 5.0V 测试条件 条件 Ta = 25°C Ta = 25°C Ta = 0°C~70°C Ta = -40°C~85°C Ta = 0°C~70°C Ta = -40°C~85°C Ta = 25°C Ta = 25°C Ta = 25°C Ta = 25°C Ta = 0°C~70°C Ta = -40°C~85°C Ta = 0°C~70°C Ta = -40°C~85°C Ta = 25°C Ta = 25°C Ta = 25°C Ta = 25°C Ta = 0°C~70°C Ta = -40°C~85°C Ta = 0°C~70°C Ta = -40°C~85°C Ta = 25°C Ta = 25°C Ta = 25°C Ta = 25°C Ta = 0°C~70°C Ta = -40°C~85°C Ta = 0°C~70°C Ta = -40°C~85°C Ta = 25°C Ta = 25°C Ta = 25°C Ta = 25°C Ta = 0°C~70°C Ta = -40°C~85°C Ta = 0°C~70°C Ta = -40°C~85°C Ta = 25°C Ta = 25°C 18 最小 典型 -2% -5% -5% -5% -7% -10% -20% -20% -2% -5% -5% -5% -7% -10% -20% -20% -2% -5% -5% -5% -7% -10% -20% -20% -2% -5% -5% -5% -7% -10% -20% -20% -2% -5% -5% -5% -7% -10% -20% -20% 4 4 4 4 4 4 8 12 4 4 4 4 4 4 8 12 8 8 8 8 8 8 4 12 8 8 8 8 8 8 4 12 12 12 12 12 12 12 4 8 最大 单位 +2% +5% +5% +5% +7% +10% +20% +20% +2% +5% +5% +5% +7% +10% +20% +20% +2% +5% +5% +5% +7% +10% +20% +20% +2% +5% +5% +5% +7% +10% +20% +20% +2% +5% +5% +5% +7% +10% +20% +20% MHz MHz MHz MHz MHz 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 符号 fLIRC tTCK tTPI tINT tSRESET tEERD tEEWR tRSTD 参数 LIRC 频率 CTCK,STCK,PTCK 引脚最小输入脉宽 STPI,PTPI 引脚最小 输入脉宽 外部中断最小输入脉宽 最小软件复位时间 EEPROM 读周期 EEPROM 写周期 系统复位延迟时间 ( 上电复位,LVR 硬件 复位,LVRC/WDTC/ RSTC 软件复位 ) 系统复位延迟时间 (WDT 溢出硬件复位 ) 测试条件 条件 Ta = 25°C 2.2V~5.5V Ta = -40°C~85°C VDD tSST 系统启动时间 ( 正常模式 ↔ 低速模 式或 fH = fHXT ↔ fHIRC 或 fSUB = fLXT ↔ fLIRC) 系统启动时间 ( 从 fSYS on 的 Pown down 状态下唤醒 ) 系统启动时间 (WDT 溢出硬件冷复位 ) 典型 最大 单位 -5% -10% 32 32 +5% kHz +10% ─ ─ 0.3 ─ ─ μs ─ ─ 0.3 ─ ─ μs ─ ─ ─ ─ ─ ─ ─ ─ 10 45 ─ ─ ─ 90 ─ 2 ─ 120 4 4 μs μs tSYS ms ─ ─ 25 50 100 ms ─ ─ 8.3 16.7 33.3 ms ─ ─ tLXT ─ ─ tHXT ─ ─ tHIRC ─ ─ ─ fSYS = fSUB = fLXT 1024 fSYS = fH~fH / 64, 128 fH = fHXT fSYS = fH~fH / 64, 16 fH = fHIRC fSYS = fSUB = fLIRC 2 fHXT off → on (HXTF = 1) 1024 fHIRC off → on (HIRCF = 1) 16 ─ ─ ─ ─ ─ ─ tLIRC tHXT tHIRC ─ fLXT off → on (LXTF = 1) 1024 ─ ─ tLXT 2 ─ ─ tH 2 ─ ─ tSUB 0 ─ ─ tH ─ 系统启动时间 ( 从 fSYS off 的 Pown down 状态下唤醒 ) 最小 ─ ─ ─ ─ fSYS = fH~fH / 64, fSYS = fHXT 或 fHIRC fSYS = fLXT 或 fLIRC ─ ─ 注:1. tSYS = 1/fSYS。 2. 为保证 HIRC 振荡器频率的精确度,建议在 VDD 和 VSS 之间连接一个 0.1μF 的电容,并尽可能靠 近单片机。 Rev. 1.10 19 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 A/D 转换器电气特性 符号 VDD VADI VREF 参数 A/D 转换器工作电压 A/D 转换器输入电压 A/D 转换器参考电压 Ta = 25°C VDD ─ ─ ─ 1.8V 2V 3V DNL 非线性微分误差 5V 1.8V 3V 5V Rev. 1.10 测试条件 条件 ─ ─ ─ SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 2.0μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 0.5μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 0.5μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 0.5μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 10μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 10μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 10μs 20 最小 典型 最大 单位 1.8 0 1.8 ─ ─ ─ 5.5 VREF VDD V V V ─ ─ ±3 LSB 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 符号 参数 VDD 1.8V 2V 3V INL 非线性积分误差 5V 1.8V 3V 5V IADC A/D 转换器使能的额外 电流 tADCK A/D 转换器时钟周期 tON2ST tADS tADC IPGA VCM Rev. 1.10 A/D 转换器 On-to-Start 时间 A/D 采样时间 A/D 转换时间 ( 包括采样和保持时间 ) PGA 使能的额外电流 PGA 共模电压范围 1.8V 3V 5V ─ 测试条件 条件 SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 2.0μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 0.5μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 0.5μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 0.5μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 10μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 10μs SAINS[3:0] = 0000B, SAVRS[1:0] = 01B, VREF = VDD, tADCK = 10μs 无负载 (tADCK = 2.0μs) 无负载 (tADCK = 0.5μs) 无负载 (tADCK = 0.5μs) 1.8V≤VDD[m+1]? no yes,exchange [m] and [m+1] data 注:“m”是位于任何数据存储器 Sector 的某一地址。例如,m=1F0H 表示 Sector 1 中的地 址 0F0H。 Rev. 1.10 37 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 累加器 – ACC 对任何单片机来说,累加器是相当重要的,且与 ALU 所完成的运算有密切关 系,所有 ALU 得到的运算结果都会暂时存在 ACC 累加器里。若没有累加器, ALU 必须在每次进行如加法、减法和移位的运算时,将结果写入到数据存储器, 这样会造成程序编写和时间的负担。另外数据传送也常常牵涉到累加器的临时 储存功能,例如在使用者定义的一个寄存器和另一个寄存器之间传送数据时, 由于两寄存器之间不能直接传送数据,因此必须通过累加器来传送数据。 程序计数器低字节寄存器 – PCL 为了提供额外的程序控制功能,程序计数器低字节设置在数据存储器的特殊功 能区域内,程序员可对此寄存器进行操作,很容易的直接跳转到其它程序地址。 直接给 PCL 寄存器赋值将导致程序直接跳转到程序存储器的某一地址,然而由 于寄存器只有 8 位长度,因此只允许在本页的程序存储器范围内进行跳转,而 当使用这种运算时,要注意会插入一个空指令周期。 表格寄存器 – TBLP,TBHP,TBLH 这三个特殊功能寄存器对存储在程序存储器中的表格进行操作。TBLP 和 TBHP 为表格指针,指向表格数据存储的地址。它们的值必须在任何表格读取指令执 行前加以设定,由于它们的值可以被如“INC”或“DEC”的指令所改变,这 就提供了一种简单的方法对表格数据进行读取。表格读取数据指令执行之后, 表格数据高字节存储在 TBLH 中。其中要注意的是,表格数据低字节会被传送 到使用者指定的地址。 状态寄存器 – STATUS 这 8 位的状态寄存器由 SC 标志位、CZ 标志位、零标志位 (Z)、进位标志位 (C)、 辅助进位标志位 (AC)、溢出标志位 (OV)、暂停标志位 (PDF) 和看门狗定时器 溢出标志位 (TO) 组成。这些算术 / 逻辑操作和系统运行标志位是用来记录单片 机的运行状态。 除了 PDF 和 TO 标志外,状态寄存器中的位像其它大部分寄存器一样可以被改 变。任何数据写入到状态寄存器将不会改变 TO 或 PDF 标志位。另外,执行不 同的指令后,与状态寄存器有关的运算可能会得到不同的结果。TO 标志位只会 受系统上电、看门狗溢出或执行“CLR WDT”或“HALT”指令影响。PDF 标 志位只会受执行“HALT”或“CLR WDT”指令或系统上电影响。 SC、CZ、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. 1.10 38 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 ● CZ:不同指令不同标志位的操作结果。详细资料请参考寄存器定义部分。 ● SC:当 OV 与当前指令操作结果 MSB 执行“XOR”所得结果。 另外,当进入一个中断程序或执行子程序调用时,状态寄存器不会自动压入到 堆栈保存。假如状态寄存器的内容是重要的且子程序可能改变状态寄存器的话, 则需谨慎的去做正确的储存。 STATUS 寄存器 Bit Name R/W POR 7 SC R x 6 CZ R x 5 TO R 0 4 PDF R 0 3 OV R/W x 2 Z R/W x 1 AC R/W x 0 C R/W x “x”:未知 Rev. 1.10 Bit 7 SC:当 OV 与当前指令操作结果 MSB 执行“XOR”所得结果 Bit 6 CZ:不同指令不同标志位的操作结果。 对于 SUB/SUBM/LSUB/LSUBM 指令,CZ 等于 Z 标志位。 对于 SBC/SBCM/LSBC/LSBCM 指令,CZ 等于上一个 CZ 标志位与当前零标志 位执行“AND”所得结果。对于其它指令,CZ 标志位无影响。 Bit 5 TO:看门狗溢出标志位 0:系统上电或执行“CLR WDT”或“HALT”指令后 1:看门狗溢出发生 Bit 4 PDF:暂停标志位 0:系统上电或执行“CLR WDT”指令后 1:执行“HALT” 指令 Bit 3 OV:溢出标志位 0:无溢出 1:运算结果高两位的进位状态异或结果为 1 Bit 2 Z:零标志位 0:算术或逻辑运算结果不为 0 1:算术或逻辑运算结果为 0 Bit 1 AC:辅助进位标志位 0:无辅助进位 1:在加法运算中低四位产生了向高四位进位,或减法运算中低四位不发生从 高四位借位 Bit 0 C:进位标志位 0:无进位 1:如果在加法运算中结果产生了进位,或在减法运算中结果不发生借位 C 也受循环移位指令的影响。 39 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 EEPROM 数据存储器 此 单 片 机 的 一 个 特 性 是 内 建 EEPROM 数 据 存 储 器。“Electrically Erasable Programmable Read Only Memory”为电可擦可编程只读存储器,由于其非易失 的存储结构,即使在电源掉电的情况下存储器内的数据仍然保存完好。这种存 储区扩展了 ROM 空间,对设计者来说增加了许多新的应用机会。EEPROM 可 以用来存储产品编号、校准值、用户特定数据、系统配置参数或其它产品信息 等。EEPROM 的数据读取和写入过程也会变的更简单。 EEPROM 数据存储器结构 EEPROM 数据存储器容量为 64×8。由于映射方式与程序存储器和数据存储器 不同,因此不能像其它类型的存储器一样寻址。使用 Sector 0 中的一个地址和 数据寄存器以及 Sector 1 中的一个控制寄存器,可以实现对 EEPROM 的单字节 读写操作。 EEPROM 寄存器 有三个寄存器控制内部 EEPROM 数据存储器总的操作,地址寄存器 EEA、数 据寄存器 EED 及控制寄存器 EEC。EEA 和 EED 位于 Sector 0 中,它们能像其 它特殊功能寄存器一样直接被访问。EEC 位于 Sector 1 中,不能被直接访问, 可以通过 MP1L/MP1H 和 IAR1 或 MP2L/MP2H 和 IAR2 进行间接读取或写入。 由于 EEC 控制寄存器位于 Sector 1 中的“40H”,在 EEC 寄存器上的任何操作 被执行前,MP1L 或 MP2L 必须先设为“40H”,MP1H 或 MP2H 被设为“01H”。 寄存器 名称 EEA EED EEC 位 7 ─ D7 ─ 6 ─ D6 ─ 5 D5 D5 ─ 4 D4 D4 ─ 3 D3 D3 WREN 2 D2 D2 WR 1 D1 D1 RDEN 0 D0 D0 RD EEPROM 寄存器列表 EEA 寄存器 Bit Name R/W POR 7 ─ ─ ─ 6 ─ ─ ─ 5 D5 R/W 0 Bit 7~6 未定义,读为“0” Bit 5~0 D5~D0:数据 EEPROM 地址 数据 EEPROM 地址 Bit 5~Bit 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 EED 寄存器 Bit Name R/W POR Bit 7~0 Rev. 1.10 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 D7~D0:数据 EEPROM 数据 数据 EEPROM 数据 Bit 7~Bit 0 40 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 EEC 寄存器 Bit Name R/W POR 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ 3 WREN R/W 0 2 WR R/W 0 1 RDEN R/W 0 0 RD R/W 0 Bit 7~4 未定义,读为“0” Bit 3 WREN:数据 EEPROM 写使能位 0:除能 1:使能 此位为数据 EEPROM 写使能位,向数据 EEPROM 写操作之前需将此位置高。 将此位清零时,则禁止向数据 EEPROM 写操作。 Bit 2 WR:EEPROM 写控制位 0:写周期结束 1:写周期有效 此位为数据 EEPROM 写控制位,由应用程序将此位置高将激活写周期。写周期 结束后,硬件自动将此位清零。当 WREN 未先置高时,此位置高无效。 Bit 1 RDEN:数据 EEPROM 读使能位 0:除能 1:使能 此位为数据 EEPROM 读使能位,向数据 EEPROM 读操作之前需将此位置高。 将此位清零时,则禁止向数据 EEPROM 读操作。 Bit 0 RD:EEPROM 读控制位 0:读周期结束 1:读周期有效 此位为数据 EEPROM 读控制位,由应用程序将此位置高将激活读周期。读周期 结束后,硬件自动将此位清零。当 RDEN 未首先置高时,此位置高无效。 注:在同一条指令中 WREN、WR、RDEN 和 RD 不能同时置为“1”。WR 和 RD 不能同时 置为“1”。 从 EEPROM 中读取数据 从 EEPROM 中读取数据,EEC 寄存器中的读使能位 RDEN 先置为高以使能读 功能,EEPROM 中读取数据的地址要先放入 EEA 寄存器中。若 EEC 寄存器中 的 RD 位被置高,一个读周期将开始。若 RD 位已置为高而 RDEN 位还未被设 置则不能开始读操作。若读周期结束,RD 位将自动清除为“0”,数据可以从 EED 寄存器中读取。数据在其它读或写操作执行前将一直保留在 EED 寄存器 中。应用程序将轮询 RD 位以确定数据可以有效地被读取。 Rev. 1.10 41 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 写数据到 EEPROM 写数据至 EEPROM,EEPROM 中写入数据的地址要先放入 EEA 寄存器中。写 入的数据要存入 EED 寄存器中。写数据至 EEPROM,EEC 寄存器中的写使能 位 WREN 先置为高以使能写功能。之后将 WR 位置为高,初始化一个写周期。 这两个指令必须连续执行。在执行任何写操作之前,总中断位 EMI 要先清零, 写周期开始后,再将 EMI 置为高。需要注意的是若 WR 位已置为高而 WREN 位还未被设置则不能开始写操作。由于控制 EEPROM 写周期是一个内部时钟, 与单片机的系统时钟异步,所以数据写入 EEPROM 的时间将有所延迟。可通过 轮询 EEC 寄存器中的 WR 位或判断 EEPROM 中断以侦测写周期是否完成。若 写周期完成,WR 位将自动清除为“0”,通知用户数据已写入 EEPROM。因此, 应用程序将轮询 WR 位以确定写周期是否结束。 写保护 防止误写入的写保护有以下几种。单片机上电后控制寄存器中的写使能位将被 清除以杜绝任何写入操作。上电后存储区指针高字节寄存器 MP1H 和 MP2H 将 重置为“0”,这意味着数据存储区 Sector 0 被选中。由于 EEPROM 控制寄存 器位于 Sector 1 中,这增加了对写操作的保护措施。在正常程序操作中确保控 制寄存器中的写使能位被清除将能防止不正确的写操作。 EEPROM 写中断 EEPROM 写周期结束后将产生 EEPROM 写中断,需先通过设置相关中断寄存 器的 DEE 位使能 EEPROM 写中断。由于 EEPROM 写中断包含在多功能中断中, 相应的多功能中断使能位需被设置。当 EEPROM 写周期结束,DEF 请求标志 位及其相关多功能中断请求标志位将被置位。若 EEPROM 和多功能中断使能且 堆栈未满的情况下将跳转到相应的多功能中断向量中执行。当中断被响应,只 有多功能中断标志位将自动复位,而 EEPROM 写中断标志将通过应用程序手动 复位。更多细节将在中断章节讲述。 Rev. 1.10 42 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 编程注意事项 必须注意的是数据不会无意写入 EEPROM。在没有写动作时写使能位被正常清 零可以增强保护功能。存储器指针高字节也可以正常清零以阻止进入 EEPROM 控制寄存器存在的 Sector 1。尽管没有必要,写一个简单的读回程序以检查新写 入的数据是否正确还是应该考虑的。 写数据时,WREN 位置为“1”后,WR 须立即设置为高,以确保写周期正确地 执行。写周期执行前总中断位 EMI 应先清零,写周期开始执行后再将此位重新 使能。注意,EEPROM 读或写周期彻底完成前单片机不能进入 IDLE 或 SLEEP 模式,否则将导致 EEPROM 读或写操作失败。 程序举例 ● 从 EEPROM 中读取数据 – 轮询法 MOV A,EEPROM_ADRES MOV EEA,A MOV A,040H MOV MP1L,A MOV A,01H MOV MP1H,A SET IAR1.1 SET IAR1.0 BACK: SZ IAR1.0 JMP BACK CLR IAR1 CLR MP1H MOV A,EED MOV READ_DATA,A ● 写数据到 EEPROM – 轮询法 MOV A,EEPROM_ADRES MOV EEA,A MOV A,EEPROM_DATA MOV EED,A MOV A,040H MOV MP1L,A MOV A,01H MOV MP1H,A CLR EMI SET IAR1.3 SET IAR1.2 SET EMI BACK: SZ IAR1.2 JMP BACK CLR IAR1 CLR MP1H Rev. 1.10 ; user defined address ; setup memory pointer low byte MP1L ; MP1L points to EEC register ; setup Memory Pointer high byte MP1H ; set RDEN bit,enable read operations ; start Read Cycle - set RD bit ; check for read cycle end ; disable EEPROM read/write ; move read data to register ; user defined address ; user defined data ; setup memory pointer low byte MP1L ; MP1L points to EEC register ; setup Memory Pointer high byte MP1H ; set WREN bit,enable write operations ; start Write Cycle - set WR bit–executed ; immediately after set WREN bit ; check for write cycle end ; disable EEPROM read/write 43 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 振荡器 不同的振荡器选择可以让使用者在不同的应用需求中实现更大范围的功能。振 荡器的灵活性使得在速度和功耗方面可以达到较佳的优化。振荡器选择及操作 是通过配置选项结合寄存器设置完成的。 振荡器概述 振荡器除了作为系统时钟源,还作为看门狗定时器和时基功能的时钟源。外部 振荡器需要一些外围器件,而集成的两个内部振荡器不需要任何外围器件。它 们提供的高速和低速系统振荡器具有较宽的频率范围。所有振荡器选择通过配 置选项选择。较高频率的振荡器提供更高的性能,但要求有更高的功率,反之 亦然。动态切换快慢系统时钟的能力使单片机具有灵活而优化的性能 / 功耗比, 此特性对功耗敏感的应用领域尤为重要。 类型 名称 外部高速晶振 内部高速 RC 外部低速晶振 内部低速 RC HXT HIRC LXT LIRC 频率 引脚 400kHz~16MHz OSC1/OSC2 4,8,12MHz ─ 32.768kHz XT1/XT2 32kHz ─ 振荡器类型 系统时钟配置 该单片机有四个振荡器可被用作系统振荡器,包括两个高速振荡器和两个低速 振荡器。高速振荡器有外部晶体 / 陶瓷振荡器 HXT 和内部 4/8/12MHz 高速振荡 器 HIRC,低速振荡器有内部 32kHz 低速振荡器 LIRC 和外部 32.768kHz 晶振 LXT。使用高速或低速振荡器作为系统时钟的选择是通过设置 SCC 寄存器中的 CKS2~CKS0 位决定的,系统时钟可动态选择。 低速振荡器的实际时钟源由 SCC 寄存器的 FSS 位选择,高速振荡器的实际时钟 源由 SCC 寄存器的 FHS 位选择。低速或高速系统时钟频率由 SCC 寄存器的 CKS2~CKS0 位决定的。请注意,两个振荡器必须做出选择,即一个高速和一 个低速振荡器。 High Speed Oscillators HIRCEN HXTEN fH FHS fH /2 fH /4 HIRC fH /8 IDLE0 SLEEP fH HXT Prescaler fH /32 fH /64 FSS LXTEN CKS2~ CKS0 LXT LIRC fSYS fH /16 fLIRC fSUB IDLE2 SLEEP Low Speed Oscillators fSUB fLIRC 系统时钟配置 Rev. 1.10 44 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 外部晶体 / 陶瓷振荡器 – HXT 外部高频晶体 / 陶瓷振荡器是一个高频振荡器,可通过 FHS 位进行选择。对于 多数晶体振荡器,只要简单地将晶体连接至 OSC1 和 OSC2,则会产生振荡所 需的相移及反馈,而不需其它外部器件。为保证某些低频率的晶体振荡和陶瓷 谐振器的振荡频率更精准,建议连接两个小容量电容 C1 和 C2 到 VSS,具体数 值与客户选择的晶体 / 陶瓷晶振有关。 为了确保振荡器的稳定性及减少噪声和串扰的影响,晶体振荡器及其相关的电 阻和电容以及它们之间的连线都应尽可能的靠近单片机。 C1 Internal Oscillator Circuit OSC1 RP Rf OSC2 C2 To internal circuits Note: 1. RP is normally not required. C1 and C2 are required. 2. Although not shown OSC1/OSC2 pins have a parasitic capacitance of around 7pF. 晶体 / 陶瓷振荡器 – HXT 晶体振荡器 C1 和 C2 值 晶体频率 C1 16MHz 0pF 12MHz 0pF 8MHz 0pF 4MHz 0pF 1MHz 100pF 注:C1 和 C2 数值仅作参考用 C2 0pF 0pF 0pF 0pF 100pF 晶体振荡器电容推荐值 内部 RC 振荡器 – HIRC 内部 RC 振荡器是一个集成的系统振荡器,不需其它外部器件。内部 RC 振荡 器具有三种固定的频率:4MHz,8MHz,12MHz。芯片在制造时进行调整且内 部含有频率补偿电路,使得振荡频率因 VDD、温度以及芯片制成工艺不同的影 响较大程度地降低。在电源电压为 3V 或 5V 及温度为 25°C 的条件下,4MHz, 8MHz,12MHz 这三个固定频率的容差为 2%。如果选择了该内部时钟,无需使 用外部引脚。 Rev. 1.10 45 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 外部 32.768kHz 晶体振荡器 – LXT 外部 32.768kHz 晶体振荡器是一个低频振荡器,由 FSS 位进行选择。时钟频率 固定为 32.768kHz,此时 XT1 和 XT2 间引脚必须连接 32.768kHz 的晶体振荡器。 需要外部电阻和电容连接到 32.768kHz 晶振以帮助起振。对于那些要求精确频 率的场合中,可能需要这些元件来对由制程产生的误差提供频率补偿。当 LXT 振荡器通过置高 LXTEN 位被使能后,LXT 振荡器启动需要一定的延时。 当系统进入空闲 / 休眠模式,系统时钟关闭以降低功耗。然而在某些应用,比 如空闲 / 休眠模式下要保持内部定时器功能,必须提供额外的时钟,且与系统 时钟无关。 然而,对于一些晶体,为了保证系统频率的启动与精度要求,需要外接两个小 容量电容 C1 和 C2,具体数值与客户选择的晶体规格有关。外部并联的反馈电 阻 RP,是必需的。 引脚共用的软件控制位决定 XT1/XT2 脚是用于 LXT 还是作为普通 I/O 口或其 它共用功能使用。 ● 若 LXT 振荡器未被用于任何时钟源,XT1/XT2 脚能被用作一般 I/O 口或其他 引脚共用功能使用。 ● 若 LXT 振荡器被用于一些时钟源,32.768kHz 晶体应被连接至 XT1/XT2 脚。 为了确保振荡器的稳定性及减少噪声和串扰的影响,晶体振荡器及其相关的电 阻和电容以及它们之间的连线都应尽可能的靠近单片机。 C1 XT1 32.768 kHz Internal Oscillator Circuit Internal RC Oscillator RP XT2 C2 To internal circuits Note: 1. RP, C1 and C2 are required. 2. Although not shown XT1/XT2 pins have a parasitic capacitance of around 7pF. 外部 LXT 振荡器 LXT 振荡器 C1 和 C2 值 晶体频率 C1 32.768kHz 10pF 注:1、C1 和 C2 数值仅作参考用 2、RP 的建议值为 5MΩ~10MΩ C2 10pF 32.768kHz 振荡器电容推荐值 Rev. 1.10 46 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LXT 振荡器低功耗功能 LXT 振荡器可以工作在快速启动模式或低功耗模式,可通过设置 LXTC 寄存器 中的 LXTSP 位进行模式选择。 LXTSP 位 0 1 LXT 工作模式 低功耗 快速启动 设置 LXTSP 为高,可使 LXT 振荡器工作于快速启动模式。在此模式,LXT 振 荡器将快速起振然后稳定下来。LXT 振荡器完全起振后,可以通过设置 LXTSP 位为低进入低功耗模式。振荡器可以继续运行,其间耗电将少于快速启动模式。 需要注意的是,在选择 LXT 振荡器时钟作为系统时钟源之前,必须先完成 LXT 工作模式的切换。一旦通过设置 SCC 寄存器中的 CKS2~CKS0 位和 FSS 位选择了 LXT 振荡器时钟作为系统时钟源,LXT 振荡器工作模式将不能改变。 应注意的是,无论 LXTSP 位是什么值,LXT 振荡器都会正常运作,不同的只 是在低功耗模式时需要更长的启动时间。 内部 32kHz 振荡器 – LIRC 内部 32kHz 系统振荡器是一个低频振荡器,由 FSS 位进行选择。LIRC 为一个 完全集成的 RC 振荡器,它在 5V 电压下运行的典型频率值为 32kHz 且无需外 部元件。芯片在制造时进行调整且内部含有频率补偿电路,使得振荡器因电源 电压、温度及芯片制成工艺不同的影响较大程度地降低。 辅助振荡器 低速振荡器除了提供一个系统时钟源外,也用来为看门狗定时器和时基中断提 供时钟来源。 Rev. 1.10 47 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 工作模式和系统时钟 现今的应用要求单片机具有较高的性能及尽可能低的功耗,这种矛盾的要求在 便携式电池供电的应用领域尤为明显。高性能所需要的高速时钟将增加功耗, 反之亦然。此单片机提供高、低速两种时钟源,它们之间可以动态切换,用户 可通过优化单片机操作来获得较佳性能 / 功耗比。 系统时钟 单片机为 CPU 和外围功能操作提供了多种不同的时钟源。用户使用寄存器编程 可获取多种时钟,进而使系统时钟获取较大的应用性能。 主系统时钟可来自高频时钟源 fH 或低频时钟源 fSUB,通过 SCC 寄存器中的 CKS2~CKS0 位进行选择。高频时钟来自 HXT 或 HIRC 振荡器,可通过 SCC 寄 存器中的 FHS 位选择。低频系统时钟源来自 fSUB,若 fSUB 被选择,低频时钟来 自 LXT 或 LIRC 振荡器,可通过 SCC 寄存器中的 FSS 位选择。其它系统时钟 还有高速系统振荡器的分频 fH/2~fH/64。 High Speed Oscillators HIRCEN HXTEN fH FHS fH /2 fH /4 HIRC fH /8 IDLE0 SLEEP fH HXT Prescaler fH /32 fH /64 FSS LXTEN CKS2~ CKS0 LXT LIRC fSYS fH /16 fLIRC fSUB IDLE2 SLEEP fSUB fSYS fSYS/4 Low Speed Oscillators fSUB fPSC0 Prescaler 0 Time Base 0 TB0 [2:0] CLKSEL0[1:0] fSYS fSYS/4 fSUB fPSC1 Prescaler 1 Time Base 1 TB1 [2:0] CLKSEL1[1:0] fLIRC fLIRC WDT LVR 设备时钟配置 注:当系统时钟源 fSYS 从 fH 切换为 fSUB 时,高速振荡器可通过程序设置关闭以节省耗电,若有需要 则也可通过设置对应高速振荡器使能控制位继续开启为外围电路提供 fH~fH/64 的频率。 Rev. 1.10 48 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 系统工作模式 单片机有 6 种不同的工作模式,每种有它自身的特性,根据应用中不同的性能 和功耗要求可选择不同的工作模式。单片机正常工作有两种模式:正常模式和 低速模式。剩余的 4 种工作模式:休眠模式、空闲模式 0、空闲模式 1 和空闲 模式 2 用于单片机 CPU 关闭时以节省耗电。 寄存器设置 fSYS fH FHIDEN FSIDEN CKS[2:0] On x x 000~110 fH~fH/64 On (1) On x x 111 fSUB On/Off 000~110 Off Off 0 1 Off 111 On Off 1 1 xxx On On 000~110 On Off 1 0 On 111 Off Off 0 0 xxx Off Off 工作模式 CPU 正常模式 低速模式 空闲模式 0 空闲模式 1 空闲模式 2 休眠模式 fSUB fLIRC On On On On On On On On Off On Off On/Off (2) “x”:任意值 注:1. 在低速模式中,fH 开启或关闭由对应的高速振荡器使能位控制。 2. 在休眠模式中,fLIRC 时钟开启或关闭取决于 WDT 功能的使能或除能。 正常模式 顾名思义,这是主要的工作模式之一,单片机的所有功能均可在此模式中实现 且系统时钟由一个高速振荡器提供。该模式下单片机正常工作的时钟源来自 HXT 或 HIRC 振荡器。高速振荡器频率可被分为 1~64 的不等比率,实际的比 率由 SCC 寄存器中的 CKS2~CKS0 位选择。单片机使用高速振荡器分频作为系 统时钟可减少工作电流。 低速模式 此模式的系统时钟虽来自较低速时钟源,但单片机仍能正常工作。该低速时钟 源来自 fSUB,而 fSUB 可来自于 LXT 或 LIRC 振荡器。 休眠模式 执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 和 FSIDEN 位都为 0 时,系统 进入休眠模式。在休眠模式中,CPU 停止运行,fSUB 时钟也将停止。WDT 功能 可通过应用程序设置为关闭或开启。 空闲模式 0 执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 位为低、FSIDEN 位为高时,系 统进入空闲模式 0。在空闲模式 0 中,CPU 停止,但低速振荡器会开启以驱动 一些外围功能。 空闲模式 1 执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 和 FSIDEN 位都为高时,系统 进入空闲模式 1。在空闲模式 1 中,CPU 停止,但高速和低速振荡器都会开启 以保持一些外围功能继续工作。 Rev. 1.10 49 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 空闲模式 2 执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 位为高、FSIDEN 位为低时,系 统进入空闲模式 2。在空闲模式 2 中,CPU 停止,但高速振荡器会开启以保持 一些外围功能继续工作。 控制寄存器 寄存器 SCC、HIRCC、HXTC 和 LXTC 用于控制系统时钟和对应的振荡器配置。 寄存器 名称 SCC HIRCC HXTC LXTC 位 7 CKS2 ─ ─ ─ 6 CKS1 ─ ─ ─ 5 CKS0 ─ ─ ─ 4 ─ ─ ─ ─ 3 FHS HIRC1 ─ ─ 2 1 0 FSS FHIDEN FSIDEN HIRC0 HIRCF HIRCEN HXTM HXTF HXTEN LXTSP LXTF LXTEN 系统工作模式控制寄存器列表 SCC 寄存器 Bit Name R/W POR Rev. 1.10 7 CKS2 R/W 0 6 CKS1 R/W 0 5 CKS0 R/W 0 4 ─ ─ ─ 3 FHS R/W 0 2 FSS R/W 0 1 0 FHIDEN FSIDEN R/W R/W 0 0 Bit 7~5 CKS2~CKS0:系统时钟选择 000:fH 001:fH/2 010:fH/4 011:fH/8 100:fH/16 101:fH/32 110:fH/64 111:fSUB 这三位用于选择系统时钟源。除了 fH 或 fSUB 提供的系统时钟源外,也可使用高 频振荡器的分频作为系统时钟。 Bit 4 未定义,读为“0” Bit 3 FHS:高频时钟选择 0:HIRC 1:HXT Bit 2 FSS:低频时钟选择 0:LIRC 1:LXT Bit 1 FHIDEN:CPU 关闭时高速振荡器控制 0:除能 1:使能 此位用来控制在执行 HALT 指令 CPU 关闭后,高速振荡器是否停止。 50 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 0 FSIDEN:CPU 关闭时低速振荡器控制 0:除能 1:使能 此位用来控制在执行 HALT 指令 CPU 关闭后,低速振荡器是否停止。若选择 LIRC 作为低频时钟源,则 LIRC 振荡器关闭与否是由该位与 WDT 功能使能控 制位共同决定的。设置此位为高或使能 WDT 功能都将使 LIRC 振荡器继续工作。 即使设置此位为零但 WDT 功能使能,LIRC 也将保持运行以提供 WDT 时钟。 HIRCC 寄存器 Bit Name R/W POR 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ 3 HIRC1 R/W 0 2 HIRC0 R/W 0 1 0 HIRCF HIRCEN R R/W 0 1 Bit 7~4 未定义,读为“0” Bit 3~2 HIRC1~HIRC0:HIRC 频率选择 00:4MHz 01:8MHz 10:12MHz 11:4MHz 当 HIRC 振荡器使能或通过应用程序改变 HIRC 频率选择位时,时钟频率会在 HIRCF 标志位置高后自动改变。 Bit 1 HIRCF:HIRC 振荡器稳定标志位 0:HIRC 未稳定 1:HIRC 稳定 此位用于表明 HIRC 振荡器是否稳定。HIRCEN 位置高使能 HIRC 振荡器,或者 通过应用程序改变 HIRC 频率选择位时,HIRCF 位会先被清零,在 HIRC 稳定 后会被置高。 Bit 0 HIRCEN:HIRC 振荡器使能控制 0:除能 1:使能 HXTC 寄存器 Bit Name R/W POR Bit 7~3 Bit 2 Bit 1 Bit 0 Rev. 1.10 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ 3 ─ ─ ─ 2 HXTM R/W 0 1 HXTF R 0 0 HXTEN R/W 0 未定义,读为“0” HXTM:HXT 模式选择 0:HXT 频率 ≤10MHz 1:HXT 频率 >10MHz 此位用于选择 HXT 振荡器的工作模式。注意,此位必须在 HXT 使能前正确地 配置,在 HXTEN 位置高使能 HXT 振荡器后改变此位的值将无效。 HXTF:HXT 振荡器稳定标志位 0:HXT 不稳定 1:HXT 稳定 此 位 用 于 表 明 HXT 振 荡 器 是 否 稳 定。HXTEN 位 置 高 使 能 HXT 振 荡 器 后, HXTF 位会先被清零,在 HXT 稳定后会被置高。 HXTEN:HXT 振荡器使能控制 0:除能 1:使能 51 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LXTC 寄存器 Bit Name R/W POR Rev. 1.10 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ 3 ─ ─ ─ 2 LXTSP R/W 0 1 LXTF R 0 0 LXTEN R/W 0 Bit 7~3 未定义,读为“0” Bit 2 LXTSP:LXT 振荡器快速启动控制 0:除能 – 低功耗模式 1:使能 – 快速启动模式 此位用来控制 LXT 振荡器工作在低功耗模式或快速启动模式。当 LXTSP 位被 置高,LXT 振荡器的振荡加快,但功耗增加。如果 LXTSP 位被清零,LXT 振 荡器功耗将减少,但需要较长的启动稳定时间。需要注意的是,通过设置 SCC 寄存器中的 CKS2~CKS0 位和 FSS 位选择 LXT 振荡器作为系统时钟源后,该位 不能改变。 Bit 1 LXTF:LXT 振荡器稳定标志位 0:LXT 不稳定 1:LXT 稳定 此 位 用 于 表 明 LXT 振 荡 器 是 否 稳 定。LXTEN 位 置 高 使 能 LXT 振 荡 器 后, LXTF 位会先被清零,在 LXT 稳定后会被置高。 Bit 0 LXTEN:LXT 振荡器使能控制 0:除能 1:使能 52 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 工作模式切换 单片机可在各个工作模式间自由切换,使得用户可根据所需选择较佳的性能 / 功耗比。用此方式,对单片机工作的性能要求不高的情况下,可使用较低频时 钟以减少工作电流,在便携式应用上延长电池的使用寿命。 简 单 来 说, 正 常 模 式 和 低 速 模 式 间 的 切 换 仅 需 设 置 SCC 寄 存 器 中 的 CKS2~CKS0 位即可实现,而正常模式 / 低速模式与休眠模式 / 空闲模式间的切 换经由 HALT 指令实现。当 HALT 指令执行后,单片机是否进入空闲模式或休 眠模式由 SCC 寄存器中的 FHIDEN 和 FSIDEN 位决定的。 NORMAL fSYS=fH~fH/64 fH on CPU run fSYS on fSUB on SLOW fSYS=fSUB fSUB on CPU run fSYS on fH on/off SLEEP HALT instruction executed CPU stop FHIDEN=0 FSIDEN=0 fH off fSUB off IDLE0 HALT instruction executed CPU stop FHIDEN=0 FSIDEN=1 fH off fSUB on IDLE2 HALT instruction executed CPU stop FHIDEN=1 FSIDEN=0 fH on fSUB off Rev. 1.10 53 IDLE1 HALT instruction executed CPU stop FHIDEN=1 FSIDEN=1 fH on fSUB on 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 正常模式切换到低速模式 系统运行在正常模式时使用高速系统振荡器,因此较为耗电。可通过设置 SCC 寄存器中的 CKS2~CKS0 位为“111”使系统时钟切换至运行在低速模式下。此 时将使用低速系统振荡器以节省耗电。用户可在对性能要求不高的操作中使用 此方法以减少耗电。 低速模式的时钟源来自 LXT 或 LIRC 振荡器,由 SCC 寄存器中的 FSS 位确定, 因此要求这些振荡器在所有模式切换动作发生前稳定下来。 NORMAL Mode CKS2~CKS0 = 111 SLOW Mode FHIDEN=0, FSIDEN=0 HALT instruction is executed SLEEP Mode FHIDEN=0, FSIDEN=1 HALT instruction is executed IDLE0 Mode FHIDEN=1, FSIDEN=1 HALT instruction is executed IDLE1 Mode FHIDEN=1, FSIDEN=0 HALT instruction is executed IDLE2 Mode Rev. 1.10 54 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 低速模式切换到正常模式 在低速模式时系统时钟来自 fSUB。切换回正常模式时,需设置 CKS2~CKS0 位 为“000”~“110”使系统时钟从 fSUB 切换到 fH ~ fH/64。 然而,如果在低速模式下 fH 因未使用而关闭,那么从低速模式切换到正常模式 时,它需要一定的时间来重新起振和稳定,可通过检测 HXTC 寄存器中的 HXTF 位或 HIRCC 寄存器中的 HIRCF 位进行判断,高速振荡器稳定时间具体 值可参考交流电气特性表。 SLOW Mode CKS2~CKS0 = 000~110 NORMAL Mode FHIDEN=0, FSIDEN=0 HALT instruction is executed SLEEP Mode FHIDEN=0, FSIDEN=1 HALT instruction is executed IDLE0 Mode FHIDEN=1, FSIDEN=1 HALT instruction is executed IDLE1 Mode FHIDEN=1, FSIDEN=0 HALT instruction is executed IDLE2 Mode Rev. 1.10 55 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 进入休眠模式 进入休眠模式的方法仅有一种——应用程序中执行“HALT”指令前需设置 SCC 寄存器中的 FHIDEN 和 FSIDEN 位都为“0”。在上述条件下执行该指令后, 将发生的情况如下: ● 系统时钟停止运行,应用程序停止在“HALT”指令处。 ● 数据存储器中的内容和寄存器将保持当前值。 ● 输入 / 输出口将保持当前值。 ● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清除。 ● 若 WDT 功能使能,WDT 将被清零并重新开始计数。若 WDT 功能除能, WDT 将被清零并停止。 进入空闲模式 0 进入空闲模式 0 的方法仅有一种——应用程序中执行“HALT”指令前需设置 SCC 寄存器中的 FHIDEN 位为“0”且 FSIDEN 位为“1”。在上述条件下执行 该指令后,将发生的情况如下: ● fH 时钟停止运行,应用程序停止在“HALT”指令处,但 fSUB 时钟将继续运行。 ● 数据存储器中的内容和寄存器将保持当前值。 ● 输入 / 输出口将保持当前值。 ● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清除。 ● 若 WDT 功能使能,WDT 将被清零并重新开始计数。若 WDT 功能除能, WDT 将被清零并停止。 进入空闲模式 1 进入空闲模式 1 的方法仅有一种——应用程序中执行“HALT”指令前需设置 SCC 寄存器中的 FHIDEN 和 FSIDEN 位都为“1”。在上述条件下执行该指令后, 将发生的情况如下: ● fH 和 fSUB 时钟开启,应用程序停止在“HALT”指令处。 ● 数据存储器中的内容和寄存器将保持当前值。 ● 输入 / 输出口将保持当前值。 ● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清除。 ● 若 WDT 功能使能,WDT 将被清零并重新开始计数。若 WDT 功能除能, WDT 将被清零并停止。 进入空闲模式 2 进入空闲模式 2 的方法仅有一种——应用程序中执行“HALT”指令前需设置 SCC 寄存器中的 FHIDEN 位为“1”且 FSIDEN 位为“0”。在上述条件下执行 该指令后,将发生的情况如下: ● fH 时钟开启,fSUB 时钟关闭,应用程序停止在“HALT”指令处。 ● 数据存储器中的内容和寄存器将保持当前值。 ● 输入 / 输出口将保持当前值。 ● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清除。 ● 若 WDT 功能使能,WDT 将被清零并重新开始计数。若 WDT 功能除能, WDT 将被清零并停止。 Rev. 1.10 56 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 待机电流注意事项 由于单片机进入休眠或空闲模式的主要原因是将 MCU 的电流降低到尽可能低, 可能到只有几个微安的级别(空闲模式 1 和空闲模式 2 除外),所以如果要将 电路的电流进一步降低,电路设计者还应有其它的考虑。应该特别注意的是单 片机的输入 / 输出引脚。所有高阻抗输入脚都必须连接到固定的高或低电平, 因为引脚浮空会造成内部振荡并导致耗电增加。这也应用于有不同封装的单片 机,因为它们可能含有未引出的引脚,这些引脚也必须设为输出或带有上拉电 阻的输入。 另外还需注意单片机设为输出的 I/O 引脚上的负载。应将它们设置在有最小拉 电流的状态或将它们和其它的 CMOS 输入一样接到没有拉电流的外部电路上。 还应注意的是,如果选择 LIRC 或 LXT 振荡器,会导致耗电增加。 在空闲模式 1 和空闲模式 2 中,高速振荡器开启。若外围功能时钟源来自高速 振荡器,额外的待机电流也可能会有几百微安。 唤醒 单片机进入休眠模式或空闲模式后,系统时钟将停止以降低功耗。然而单片机 再次唤醒,原来的系统时钟重新起振、稳定且恢复正常工作需要一定的时间。 系统进入休眠或空闲模式之后,可以通过以下几种方式唤醒: ● PA 口下降沿 ● 系统中断 ● WDT 溢出 单片机执行 HALT 指令,PDF 将被置位;系统上电或执行清除看门狗的指令, PDF 将被清零。看门狗计数器溢出将会置位 TO 标志并唤醒系统,这种复位会 重置程序计数器和堆栈指针,其它标志保持原有状态。 PA 口中的每个引脚都可以通过 PAWU 寄存器使能下降沿唤醒功能。PA 端口唤 醒后,程序将在“HALT”指令后继续执行。如果系统是通过中断唤醒,则有两 种可能发生。第一种情况是:相关中断除能或是中断使能且堆栈已满,则程序 会在“HALT”指令之后继续执行。这种情况下,唤醒系统的中断会等到相关中 断使能或有堆栈层可以使用之后才执行。第二种情况是:相关中断使能且堆栈 未满,则中断可以马上执行。如果在进入休眠或空闲模式之前中断标志位已经 被设置为“1”,则相关中断的唤醒功能将无效。 编程注意事项 HXT 和 LXT 振荡器使用不同的 SST 计数器。例如,若系统从休眠模式中唤醒, HXT 和 LXT 振荡器都需从关闭状态中启动。 ● 若单片机从休眠模式唤醒后进入正常模式,高速系统振荡器需要一个 SST 周 期。在 HIRCF 或 HXTF 为“1”后,单片机开始执行首条指令。同时若 fSUB 时钟来自 LXT 振荡器,LXT 振荡器可能还未稳定。上电时也可能会发生类似 情况即第一条指令执行的时候,LXT 振荡器还没有稳定。 ● 一些外围功能,如 TM,若使用系统时钟 fSYS,在系统时钟源由 fH 切换至 fSUB 时,这些功能的时钟源也会随之改变。 Rev. 1.10 57 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 看门狗定时器 看门狗定时器的功能在于防止如电磁的干扰等外部不可控制事件,所造成的程 序不正常动作或跳转到未知的地址。 看门狗定时器时钟源 WDT 定时器时钟源由内部低速振荡器 LIRC 提供。内部振荡器 LIRC 的频率大 约为 32kHz,这个特殊的内部时钟周期会随 VDD、温度和制成的不同而变化。 看门狗定时器的时钟源可分频为 28~218 以提供更大的溢出周期,分频比由 WDTC 寄存器中的 WS2~WS0 位来决定。 看门狗定时器控制寄存器 WDTC 寄存器用于控制 WDT 功能的整个操作如使能 / 除能及复位控制,选择 WDT 溢出周期。 WDTC 寄存器 Bit Name R/W POR 7 WE4 R/W 0 6 WE3 R/W 1 5 WE2 R/W 0 4 WE1 R/W 1 3 WE0 R/W 0 2 WS2 R/W 0 1 WS1 R/W 1 0 WS0 R/W 1 Bit 7~3 WE4~WE0:WDT 功能控制 10101:除能 01010:使能 其它值:单片机复位 如果由于不利的环境因素使这些位变为其它值,单片机将复位。复位动作发生 在 tSRESET 延迟时间后,且 RSTFC 寄存器的 WRF 位将置为“1”。 Bit 2~0 WS2~WS0:WDT 溢出周期选择位 000:28/fLIRC 001:210/fLIRC 010:212/fLIRC 011:214/fLIRC 100:215/fLIRC 101:216/fLIRC 110:217/fLIRC 111:218/fLIRC 这三位控制 WDT 时钟源的分频比,从而实现对 WDT 溢出周期的控制。 RSTFC 寄存器 Bit Name R/W POR 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ 3 RSTF R/W 0 2 LVRF R/W x 1 LRF R/W 0 0 WRF R/W 0 “x”:未知 Rev. 1.10 Bit 7~4 未定义,读为“0” Bit 3 RSTF:复位控制寄存器软件复位标志位 具体描述见其它章节 Bit 2 LVRF:LVR 复位标志位 具体描述见其它章节 58 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 1 LRF:LVRC 寄存器软件复位标志位 具体描述见其它章节 Bit 0 WRF:WDTC 寄存器软件复位标志位 0:未发生 1:发生 当 WDT 控制寄存器软件复位发生时,此位被置为“1”,且只能通过应用程序 清零。 看门狗定时器操作 当 WDT 溢出时,它产生一个单片机复位的动作。这也就意味着正常工作期间, 用户需在应用程序中看门狗溢出前有策略地清看门狗定时器以防止其产生复 位,可使用清除看门狗指令实现。无论什么原因,程序失常跳转到一个未知的 地址或进入一个死循环,这些清除指令都不能被正确执行,此种情况下,看门 狗将溢出以使单片机复位。看门狗定时器控制寄存器 WDTC 中的 WE4~WE0 位可提供使能 / 除能控制以及控制看门狗定时器复位操作。当 WE4~WE0 设置 为“10101B”时除能 WDT 功能,而当设置为“01010B”时使能 WDT 功能。 如果 WE4~WE0 设置为除“01010B”和“10101B”以外的值时,单片机将在 tSRESET 延迟时间后复位。上电后这些位初始化为“01010B”。 WE4~WE0 位 10101B 01010B 其它值 WDT 功能 除能 使能 单片机复位 看门狗定时器使能 / 除能控制 程序正常运行时,WDT 溢出将导致单片机复位,并置位状态标志位 TO。若系 统处于休眠或空闲模式,当 WDT 发生溢出时,状态寄存器中的 TO 应置位, 仅 PC 和堆栈指针复位。有三种方法可以用来清除 WDT 的内容。第一种是 WDT 复位,即将 WE4~WE0 位设置成除了 01010B 和 10101B 外的任意值;第 二种是通过软件清除指令,而第三种是通过“HALT”指令。 该 单 片 机 只 使 用 一 条 清 看 门 狗 指 令“CLR WDT”。 因 此 只 要 执 行“CLR WDT”便清除 WDT。 当设置分频比为 218 时,溢出周期最大。例如,时钟源为 32kHz LIRC 振荡器, 分频比为 218 时最大溢出周期约 8s,分频比为 28 时最小溢出周期约 8ms。 WDTC Register Reset MCU WE4~WE 0 bits CLR “ HALT” Instruction “ CLR WDT” Instruction LIRC fLIRC 8-stage Divider fLIRC/28 WS2~WS0 8 18 (fLIRC/2 ~ f LIRC/2 ) WDT Prescaler 8-to- 1 MUX WDT Time-out 8 18 (2 /fLIRC ~ 2 /fLIRC) 看门狗定时器 Rev. 1.10 59 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 复位和初始化 复位功能是任何单片机中基本的部分,使得单片机可以设定一些与外部参数无 关的先置条件。最重要的复位条件是在单片机首次上电以后,经过短暂的延迟, 内部硬件电路使得单片机处于预期的稳定状态并开始执行第一条程序指令。上 电复位以后,在程序执行之前,部分重要的内部寄存器将会被设定为预先设定 的状态。程序计数器就是其中之一,它会被清除为零,使得单片机从最低的程 序存储器地址开始执行程序。 另一种复位为看门狗溢出单片机复位。不同方式的复位操作会对寄存器产生不 同的影响。另一种复位为低电压复位即 LVR 复位,在电源供应电压低于 LVR 设定值时,系统会产生 LVR 复位。 复位功能 单片机的几种复位方式将在此处做具体介绍。 上电复位 这是最基本且不可避免的复位,发生在单片机上电后。除了保证程序存储器从 开始地址执行,上电复位也使得其它寄存器被设定在预设条件。所有的输入 / 输出端口控制寄存器在上电复位时会保持高电平,以确保上电后所有引脚被设 定为输入状态。 VDD Power-on Reset tRSTD SST Time-out 注:tRSTD 为上电延迟时间,典型值为 50ms。 上电复位时序图 内部复位控制 内部复位控制寄存器 RSTC 用于为单片机在受到环境噪声干扰而异常工作时提 供复位。如果 RSTC 寄存器的内容被设置为除 01010101B 或 10101010B 以外的 其它任何值,单片机会在 tSRESET 延迟时间后发生复位。上电后寄存器的值为 01010101B。 RSTC7~RSTC0 位 01010101B 10101010B 其它值 复位功能 无操作 无操作 单片机复位 内部复位功能控制 Rev. 1.10 60 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 ● RSTC 寄存器 Bit Name R/W POR Bit 7~0 7 RSTC7 R/W 0 6 RSTC6 R/W 1 5 RSTC5 R/W 0 4 RSTC4 R/W 1 3 RSTC3 R/W 0 2 RSTC2 R/W 1 1 RSTC1 R/W 0 0 RSTC0 R/W 1 RSTC7~RSTC0:复位功能控制位 01010101:无操作 10101010:无操作 其它值:MCU 复位 如果由于不利的环境因素使这些位发生改变,单片机将复位。复位动作发生在 tSRESET 延迟时间后,且 RSTFC 寄存器的 RSTF 位将置为“1”。 ● RSTFC 寄存器 Bit Name R/W POR 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ 3 RSTF R/W 0 2 LVRF R/W x 1 LRF R/W 0 0 WRF R/W 0 “x”:未知 Bit 7~4 Bit 3 Bit 2 Bit 1 Bit 0 未定义,读为“0” RSTF:复位控制寄存器软件复位标志位 0:未发生 1:发生 当 RSTC 控制寄存器软件复位发生时,此位被置为“1”,且只能通过应用程序 清零。 LVRF:LVR 复位标志位 具体描述见其它章节 LRF:LVRC 寄存器软件复位标志位 具体描述见其它章节 WRF:WDTC 寄存器软件复位标志位 具体描述见其它章节 低电压复位 – LVR 单片机具有低电压复位电路,用来监测它的电源电压。若 LVR 功能使能将会同 时设定一个电源复位低电压,VLVR。当单片机供应的电压下降到 0.9V~VLVR 之 间,比如在更换电池的情况下,这时 LVR 将会自动复位单片机且置位 RSTFC 寄存器中的 LVRF 标志位。 LVR 包含以下的规格:有效的 LVR 信号,即在 0.9V~VLVR 的低电压状态的保持 时间,必须超过 LVD & LVR 电气特性中 tLVR 参数的值。如果低电压存在时间不 超过 tLVR 参数的值,则 LVR 将会忽略此次低电压,不执行复位功能。实际的 VLVR 参数值可通过 LVRC 寄存器中的 LVS7~LVS0 位进行选择。若因环境噪声 或软件设置修改了 LVRC 寄存器的值,将在 tSRESET 时间后复位单片机。同时 RSTFC 寄 存 器 LRF 位 将 被 置“1”。 上 电 复 位 后 LVRC 的 初 始 值 是 01100110B。注意当单片机进入空闲或休眠模式,LVR 功能将自动关闭。 LVR tRSTD + tSST Internal Reset 注:tRSTD 为上电延迟时间,典型值为 50ms。 低电压复位时序图 Rev. 1.10 61 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 ● LVRC 寄存器 Bit Name R/W POR Bit 7~0 7 LVS7 R/W 0 6 LVS6 R/W 1 5 LVS5 R/W 1 4 LVS4 R/W 0 3 LVS3 R/W 0 2 LVS2 R/W 1 1 LVS1 R/W 1 0 LVS0 R/W 0 LVS7~LVS0:LVR 电压选择位 01100110:1.7V 01010101:1.9V 00110011:2.55V 10011001:3.15V 10101010:3.8V 11110000:LVR 除能 其它值:单片机复位(LVRC 恢复到上电复位值) 当上述定义的相应的低电压出现,且低电压保持时间超过 tLVR 值,之后将会产 生单片机复位。单片机复位后寄存器中的值与复位前保持不变。 若将 LVRC 寄存器定义为其它值,将会产生单片机复位。复位操作会在 tSRESET 时间后执行。注意的是此处单片机复位后,寄存器的值将恢复到上电复位值。 ● RSTFC 寄存器 Bit Name R/W POR 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ 3 RSTF R/W 0 2 LVRF R/W x 1 LRF R/W 0 0 WRF R/W 0 “x”:未知 Bit 7~4 未定义,读为“0” Bit 3 RSTF:复位控制寄存器软件复位标志位 具体描述见其它章节 Bit 2 LVRF:LVR 复位标志位 0:未发生 1:发生 当特定的低电压复位条件发生时,该位被置为“1”。只能通过应用程序清零。 Bit 1 LRF:LVRC 寄存器软件复位标志位 0:未发生 1:发生 如果 LVRC 寄存器被修改为任何非定义的 LVR 电压值,将会产生单片机复位, 同时该位被置为“1”,这类似于软件复位功能。只能通过应用程序清零。 Bit 0 WRF:WDTC 寄存器软件复位标志位 具体描述见其它章节 正常运行时看门狗溢出复位 除了看门狗溢出标志位 TO 将被设为“1”之外,正常运行时看门狗溢出复位和 LVR 复位相同。 WDT Time-out tRSTD + tSST Internal Reset 注:tRSTD 为上电延迟时间,典型值为 16.7ms。 正常运行时看门狗溢出时序图 Rev. 1.10 62 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 休眠或空闲时看门狗溢出复位 休眠或空闲时看门狗溢出复位和其它种类的复位有些不同。除了程序计数器与 堆栈指针将被清“0”及 TO 位被设为“1”外,绝大部分的条件保持不变。图 中 tSST 的详细说明请参考交流电气特性。 WDT Time-out tSST Internal Reset 休眠或空闲时看门狗溢出复位时序图 复位初始状态 不同的复位形式以不同的途径影响复位标志位。这些标志位,即 PDF 和 TO 位 存放在状态寄存器中,由休眠或空闲模式功能或看门狗计数器等几种控制器操 作控制。复位标志位如下所示: TO 0 u 1 1 PDF 0 u u 1 复位条件 上电复位 正常模式或低速模式时的 LVR 复位 正常模式或低速模式时的 WDT 溢出复位 空闲或休眠模式时的 WDT 溢出复位 “u”代表不改变 在单片机上电复位之后,各功能单元初始化的情形,列于下表。 项目 程序计数器 中断 看门狗定时器 定时 / 计数器 输入 / 输出口 堆栈指针 复位后情况 清除为零 所有中断被除能 WDT 清除并重新计数 所有定时模块 / 计数器停止 I/O 口设为输入模式 堆栈指针指向堆栈顶端 不同的复位形式对单片机内部寄存器的影响是不同的。为保证复位后程序能正 常执行,了解寄存器在特定条件复位后的设置是非常重要的。下表即为不同方 式复位后内部寄存器的状况。若芯片有多种封装类型,表格反映较大的封装的 情况。 寄存器 程序计数器 IAR0 MP0 IAR1 MP1L MP1H ACC PCL TBLP Rev. 1.10 上电复位 LVR 复位 WDT 溢出 ( 正常运行 ) WDT 溢出 ( 空闲或休眠 ) 0000H 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 xxxx xxxx 0000 0000 xxxx xxxx 0000H 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 uuuu uuuu 0000 0000 uuuu uuuu 0000H 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 uuuu uuuu 0000 0000 uuuu uuuu 0000H uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu 0000 0000 uuuu uuuu 63 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 寄存器 TBLH TBHP STATUS IAR2 MP2L MP2H RSTFC INTC0 INTC1 INTC2 PA PAC PAPU PAWU PB PBC PBPU PC PCC PCPU PD PDC PDPU PE PEC PEPU PF PFC PFPU RSTC VBGRC MFI0 MFI1 MFI2 INTEG SCC HIRCC HXTC LXTC WDTC Rev. 1.10 上电复位 LVR 复位 WDT 溢出 ( 正常运行 ) WDT 溢出 ( 空闲或休眠 ) xxxx xxxx ---x xxxx xx00 xxxx 0000 0000 0000 0000 0000 0000 ---- 0x00 -000 0000 0000 0000 0000 0000 1111 1111 1111 1111 0000 0000 0000 0000 1111 1111 1111 1111 0000 0000 1111 1111 1111 1111 0000 0000 - 111 1111 - 111 1111 -000 0000 - - - 1 1111 - - - 1 1111 ---0 0000 1111 1111 1111 1111 0000 0000 0101 0101 ---- ---0 --00 --00 0000 0000 --00 --00 ---- 0000 000- 0000 ---- 0001 ---- -000 ---- -000 0101 0011 uuuu uuuu ---u uuuu uuuu uuuu 0000 0000 0000 0000 0000 0000 ---- u1uu -000 0000 0000 0000 0000 0000 1111 1111 1111 1111 0000 0000 0000 0000 1111 1111 1111 1111 0000 0000 1111 1111 1111 1111 0000 0000 - 111 1111 - 111 1111 -000 0000 - - - 1 1111 - - - 1 1111 ---0 0000 1111 1111 1111 1111 0000 0000 0101 0101 ---- ---0 --00 --00 0000 0000 --00 --00 ---- 0000 000- 0000 ---- 0001 ---- -000 ---- -000 0101 0011 uuuu uuuu ---u uuuu xx1u uuuu 0000 0000 0000 0000 0000 0000 ---- uuuu -000 0000 0000 0000 0000 0000 1111 1111 1111 1111 0000 0000 0000 0000 1111 1111 1111 1111 0000 0000 1111 1111 1111 1111 0000 0000 - 111 1111 - 111 1111 -000 0000 - - - 1 1111 - - - 1 1111 ---0 0000 1111 1111 1111 1111 0000 0000 0101 0101 ---- ---0 --00 --00 0000 0000 --00 --00 ---- 0000 000- 0000 ---- 0001 ---- -000 ---- -000 0101 0011 uuuu uuuu ---u uuuu uu11 uuuu uuuu uuuu uuuu uuuu uuuu uuuu ---- uuuu -uuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu -uuu uuuu -uuu uuuu -uuu uuuu ---u uuuu ---u uuuu ---u uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu ---- ---u --uu --uu uuuu uuuu --uu --uu ---- uuuu uuu- uuuu ---- uuuu ---- -uuu ---- -uuu uuuu uuuu 64 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 寄存器 LVRC LVDC LVPUC CMPC CMPVOS CTMC0 CTMC1 CTMDL CTMDH CTMAL CTMAH CTMRP EEA EED PTMC0 PTMC1 PTMDL PTMDH PTMAL PTMAH PTMRPL PTMRPH STMC0 STMC1 STMDL STMDH STMAL STMAH STMRP SLEDC0 SLEDC1 SLEDC2 TB0C TB1C PSC0R PSC1R SADOL (ADRFS=0) SADOL (ADRFS=1) Rev. 1.10 上电复位 LVR 复位 WDT 溢出 ( 正常运行 ) WDT 溢出 ( 空闲或休眠 ) 0110 0110 --00 0000 ---- ---0 -000 00--001 0000 0000 0--0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 --00 0000 0000 0000 0000 0--0000 0000 0000 0000 ---- --00 0000 0000 ---- --00 0000 0000 ---- --00 0000 0--0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0--- -000 0--- -000 ---- --00 ---- --00 0110 0110 --00 0000 ---- ---0 -000 00--001 0000 0000 0--0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 --00 0000 0000 0000 0000 0--0000 0000 0000 0000 ---- --00 0000 0000 ---- --00 0000 0000 ---- --00 0000 0--0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0--- -000 0--- -000 ---- --00 ---- --00 0110 0110 --00 0000 ---- ---0 -000 00--001 0000 0000 0--0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 --00 0000 0000 0000 0000 0--0000 0000 0000 0000 ---- --00 0000 0000 ---- --00 0000 0000 ---- --00 0000 0--0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0--- -000 0--- -000 ---- --00 ---- --00 uuuu uuuu --uu uuuu ---- ---u -uuu uu--uuu uuuu uuuu u--uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu --uu uuuu uuuu uuuu uuuu u--uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu ---- --uu uuuu uuuu ---- --uu uuuu u--uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu u--- -uuu u--- -uuu ---- --uu ---- --uu xxxx ---- xxxx ---- xxxx ---- uuuu ---- xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu 65 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 寄存器 SADOH (ADRFS=0) SADOH (ADRFS=1) SADC0 SADC1 SADC2 SIMC0 SIMC1 SIMD SIMA/ SIMC2 SIMTOC SCOMC USR UCR1 UCR2 TXR_RXR BRG IFS0 IFS1 PAS0 PAS1 PBS0 PBS1 PCS0 PCS1 PDS0 PDS1 PES0 PES1 PFS0 PFS1 EEC 上电复位 LVR 复位 WDT 溢出 ( 正常运行 ) WDT 溢出 ( 空闲或休眠 ) xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu ---- xxxx ---- xxxx ---- xxxx ---- uuuu 0000 0000 0000 -000 0--0 0000 111- 0000 1000 0001 xxxx xxxx 0000 0000 0000 -000 0--0 0000 111- 0000 1000 0001 xxxx xxxx 0000 0000 0000 -000 0--0 0000 111- 0000 1000 0001 xxxx xxxx uuuu uuuu uuuu -uuu u--u uuuu uuu- uuuu uuuu uuuu uuuu uuuu 0000 0000 0000 0000 0000 0000 uuuu uuuu 0000 0000 -000 ---0000 1011 0000 00x0 0000 0000 xxxx xxxx xxxx xxxx 0000 0000 ---- --00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 --00 0000 0000 0000 ---- --00 0000 0000 0000 0000 ---- 0000 0000 0000 -000 ---0000 1011 0000 00x0 0000 0000 xxxx xxxx xxxx xxxx 0000 0000 ---- --00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 --00 0000 0000 0000 ---- --00 0000 0000 0000 0000 ---- 0000 0000 0000 -000 ---0000 1011 0000 00x0 0000 0000 xxxx xxxx xxxx xxxx 0000 0000 ---- --00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 --00 0000 0000 0000 ---- --00 0000 0000 0000 0000 ---- 0000 uuuu uuuu -uuu ---uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu --uu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu ---- uuuu 注:“u”表示不改变 “x”表示未知 “-”表示未定义 Rev. 1.10 66 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 输入 / 输出端口 盛群单片机的输入 / 输出口控制具有很大的灵活性。大部分引脚可在用户程序 控制下被设定为输入或输出。所有引脚的上拉电阻设置以及指定引脚的唤醒设 置也都由软件控制,这些特性也使得此类单片机在广泛应用上都能符合开发的 需求。 此单片机提供 PA~PF 双向输入 / 输出口。这些寄存器在数据存储器有特定的地 址。所有 I/O 口用于输入输出操作。作为输入操作,输入引脚无锁存功能,也就 是说输入数据必须在执行“MOV A,[m]”,T2 的上升沿准备好,m 为端口地址。 对于输出操作,所有数据都是被锁存的,且保持不变直到输出锁存被重写。 寄存器 名称 PA PAC PAPU PAWU PB PBC PBPU PC PCC PCPU PD PDC PDPU PE PEC PEPU PF PFC PFPU LVPUC 位 7 PA7 PAC7 PAPU7 PAWU7 PB7 PBC7 PBPU7 PC7 PCC7 PCPU7 ─ ─ ─ ─ ─ ─ PF7 PFC7 PFPU7 ─ 6 PA6 PAC6 PAPU6 PAWU6 PB6 PBC6 PBPU6 PC6 PCC6 PCPU6 PD6 PDC6 PDPU6 ─ ─ ─ PF6 PFC6 PFPU6 ─ 5 PA5 PAC5 PAPU5 PAWU5 PB5 PBC5 PBPU5 PC5 PCC5 PCPU5 PD5 PDC5 PDPU5 ─ ─ ─ PF5 PFC5 PFPU5 ─ 4 PA4 PAC4 PAPU4 PAWU4 PB4 PBC4 PBPU4 PC4 PCC4 PCPU4 PD4 PDC4 PDPU4 PE4 PEC4 PEPU4 PF4 PFC4 PFPU4 ─ 3 PA3 PAC3 PAPU3 PAWU3 PB3 PBC3 PBPU3 PC3 PCC3 PCPU3 PD3 PDC3 PDPU3 PE3 PEC3 PEPU3 PF3 PFC3 PFPU3 ─ 2 PA2 PAC2 PAPU2 PAWU2 PB2 PBC2 PBPU2 PC2 PCC2 PCPU2 PD2 PDC2 PDPU2 PE2 PEC2 PEPU2 PF2 PFC2 PFPU2 ─ 1 PA1 PAC1 PAPU1 PAWU1 PB1 PBC1 PBPU1 PC1 PCC1 PCPU1 PD1 PDC1 PDPU1 PE1 PEC1 PEPU1 PF1 PFC1 PFPU1 ─ 0 PA0 PAC0 PAPU0 PAWU0 PB0 PBC0 PBPU0 PC0 PCC0 PCPU0 PD0 PDC0 PDPU0 PE0 PEC0 PEPU0 PF0 PFC0 PFPU0 LVPU I/O 逻辑功能寄存器列表 Rev. 1.10 67 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 上拉电阻 许多产品应用在端口处于输入状态时需要外加一个上拉电阻来实现上拉的功 能。为了免去外部上拉电阻,当引脚规划为输入时,可由内部连接到一个上拉 电阻。这些上拉电阻可通过寄存器 PAPU~PFPU 和 LVPUC 来设置,它用一个 PMOS 晶体管来实现上拉电阻功能。 需注意的是,当 I/O 引脚设为逻辑输入或 NMOS 输出时,上拉功能才会受相应 的上拉电阻控制寄存器控制开启,其它状态下上拉功能不可用。 PxPU 寄存器 Bit Name R/W POR 7 PxPU7 R/W 0 6 PxPU6 R/W 0 5 PxPU5 R/W 0 4 PxPU4 R/W 0 3 PxPU3 R/W 0 2 PxPU2 R/W 0 1 PxPU1 R/W 0 0 PxPU0 R/W 0 PxPUn:I/O 口 Px.n 引脚上拉电阻控制位 0:除能 1:使能 PxPUn 位用于控制 Px.n 引脚上的上拉电阻功能。这里的 x 可以是端口 A,B,C,D,E 和 F。 但是,每个 I/O 端口实际有效位可能不同。 LVPUC 寄存器 Bit Name R/W POR 7 ─ ─ ─ Bit 7~1 Bit 0 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ 3 ─ ─ ─ 2 ─ ─ ─ 1 ─ ─ ─ 0 LVPU R/W 0 未定义,读为“0” LVPU:低电压上拉电阻控制位 0:所有引脚上拉电阻为 30KΩ 1:所有引脚上拉电阻为 7.5KΩ 注意因上拉电阻采用长 PMOS 晶体管,工作电压越低产生的电阻抗越高。因此 建议对于低压应用可选择较低的上拉电阻值。 PA 口唤醒 当使用暂停指令“HALT”迫使单片机进入休眠或空闲模式,单片机的系统时钟 将会停止以降低功耗,此功能对于电池及低功耗应用很重要。唤醒单片机有很 多种方法,其中之一就是使 PA 口的其中一个引脚从高电平转为低电平。这个 功能特别适合于通过外部开关来唤醒的应用。PA 口的每个引脚可以通过设置 PAWU 寄存器来单独选择是否具有唤醒功能。需要注意的是,只有当引脚功能 选为通用 I/O 功能且单片机处于休眠或空闲模式时,唤醒功能才会受 PAWU 控 制开启,其它状态下此唤醒功能不可用。 PAWU 寄存器 Bit Name R/W POR Bit 7~0 Rev. 1.10 7 6 5 4 3 2 1 0 PAWU7 PAWU6 PAWU5 PAWU4 PAWU3 PAWU2 PAWU1 PAWU0 R/W R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 0 PAWU7~PAWU0:PA 口唤醒功能控制位 0:除能 1:使能 68 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 输入 / 输出端口控制寄存器 每一个输入 / 输出口都具有各自的控制寄存器,即 PAC~PFC,用来控制输入 / 输出状态。从而每个 I/O 引脚都可以通过软件控制,动态的设置为 CMOS 输出 或输入。所有的 I/O 端口的引脚都各自对应于 I/O 端口控制的某一位。若 I/O 引 脚要实现输入功能,则对应的控制寄存器的位需要设置为“1”。这时程序指令 可以直接读取输入脚的逻辑状态。若控制寄存器相应的位被设定为“0”,则此 引脚被设置为 CMOS 输出。当引脚设置为输出状态时,程序指令读取的是输出 端口寄存器的内容。注意,如果对输出口做读取动作时,程序读取到的是内部 输出数据锁存器中的状态,而不是输出引脚上实际的逻辑状态。 PxC 寄存器 Bit Name R/W POR 7 PxC7 R/W 1 6 PxC6 R/W 1 5 PxC5 R/W 1 4 PxC4 R/W 1 3 PxC3 R/W 1 2 PxC2 R/W 1 1 PxC1 R/W 1 0 PxC0 R/W 1 PxCn:I/O 口 Px.n 引脚输入 / 输出类型选择位 0:输出 1:输入 PxCn 位用于控制 Px.n 引脚类型。这里的 x 可以是端口 A,B,C,D,E 和 F。但是,每个 I/O 端口实际有效位可能不同。 输入 / 输出端口源电流控制 该单片机的每个 I/O 口都支持多种源电流驱动能力。通过设置相应的源电流选 择寄存器,每个 I/O 口可以提供四阶源电流输出控制。用户可参考直流电气特 性章节针对不同应用选择所需的源电流。 位 7 6 5 4 3 2 1 0 SLEDC0 SLEDC07 SLEDC06 SLEDC05 SLEDC04 SLEDC03 SLEDC02 SLEDC01 SLEDC00 SLEDC1 SLEDC17 SLEDC16 SLEDC15 SLEDC14 SLEDC13 SLEDC12 SLEDC11 SLEDC10 SLEDC2 SLEDC27 SLEDC26 SLEDC25 SLEDC24 SLEDC23 SLEDC22 SLEDC21 SLEDC20 寄存器 名称 I/O 口源电流控制寄存器列表 SLEDC0 寄存器 Bit 7 6 5 4 3 2 1 0 Name SLEDC07 SLEDC06 SLEDC05 SLEDC04 SLEDC03 SLEDC02 SLEDC01 SLEDC00 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 0 0 0 0 Bit 7~6 Bit 5~4 Rev. 1.10 SLEDC07~SLEDC06:PB7~PB4 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) SLEDC05~SLEDC04:PB3~PB0 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) 69 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 3~2 SLEDC03~SLEDC02:PA7~PA4 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) Bit 1~0 SLEDC01~SLEDC00:PA3~PA0 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) SLEDC1 寄存器 Bit 7 6 5 4 3 2 1 0 Name SLEDC17 SLEDC16 SLEDC15 SLEDC14 SLEDC13 SLEDC12 SLEDC11 SLEDC10 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 0 0 0 0 2 1 0 Bit 7~6 SLEDC17~SLEDC16:PD6~PD4 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) Bit 5~4 SLEDC15~SLEDC14:PD3~PD0 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) Bit 3~2 SLEDC13~SLEDC12:PC7~PC4 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) Bit 1~0 SLEDC11~SLEDC10:PC3~PC0 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) SLEDC2 寄存器 Bit 7 6 5 4 3 Name SLEDC27 SLEDC26 SLEDC25 SLEDC24 SLEDC23 SLEDC22 SLEDC21 SLEDC20 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 0 0 0 0 Bit 7~6 Rev. 1.10 SLEDC27~SLEDC26:PF7~PF4 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) 70 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 5~4 SLEDC25~SLEDC24:PF3~PF0 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) Bit 3~2 SLEDC23~SLEDC22:PE4 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) Bit 1~0 SLEDC21~SLEDC20:PE3~PE0 源电流选择位 00:Level 0(最小) 01:Level 1 10:Level 2 11:Level 3(最大) 引脚共用功能 引脚的多功能可以增加单片机应用的灵活性。有限的引脚个数将会限制设计者, 而引脚的多功能将会解决很多此类问题。此外,这些引脚功能可以通过一系列 寄存器进行设定。 引脚共用功能选择寄存器 封装中有限的引脚个数会对某些单片机功能造成影响。然而,引脚功能共用和 引脚功能选择,使得小封装单片机具有更多不同的功能。单片机包含端口输出 功能选择寄存器和输入功能选择寄存器,这些寄存器可以用来选择多功能共用 引脚上的特定功能。 当要使用引脚上的输入功能,相关的 PxSn 及 IFSi 寄存器需先进行合理设定。 例如,I2C SDA 引脚功能被选择,需通过 IFS0 寄存器选择 SDA 信号的输入引脚, 且对应的引脚共用功能要通过寄存器 PxSn 设置为 SDI/SDA 功能。但是,如果 要使用外部中断功能,需通过 IFS1 寄存器选择外部中断信号的输入引脚,且对 应的共用引脚功能通过寄存器 PxSn 选择为普通 I/O 功能。 特别需要注意的是,要确保所需的引脚共用功能被正确地选择和取消。要选择 所需的引脚共用功能,首先应通过相应的引脚共用控制寄存器正确地选择该功 能,然后再配置相应的外围功能设置以使能外围功能。要正确地取消引脚共用 功能,首先应除能外围功能,然后再修改相应的引脚共用控制寄存器以选择其 它的共用功能。 Rev. 1.10 71 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 位 寄存器 名称 7 6 5 PAS0 PAS07 PAS06 PAS05 PAS1 PAS17 PAS16 PAS15 PBS0 PBS07 PBS06 PBS1 PBS17 PBS16 PCS0 PCS07 PCS1 PCS17 PDS0 PDS1 2 1 0 PAS04 PAS03 PAS02 PAS01 PAS00 PAS14 PAS13 PAS12 PAS11 PAS10 PBS05 PBS04 PBS03 PBS02 PBS01 PBS00 PBS15 PBS14 PBS13 PBS12 PBS11 PBS10 PCS06 PCS05 PCS04 PCS03 PCS02 PCS01 PCS00 PCS16 PCS15 PCS14 PCS13 PCS12 PCS11 PCS10 PDS07 PDS06 PDS05 PDS04 PDS03 PDS02 PDS01 PDS00 ─ ─ PDS15 PDS14 PDS13 PDS12 PDS11 PDS10 PES0 PES07 PES06 PES05 PES04 PES03 PES02 PES01 PES00 PES1 ─ ─ ─ ─ ─ ─ PES11 PES10 PFS0 PFS07 PFS06 PFS05 PFS04 PFS03 PFS02 PFS01 PFS00 PFS17 PFS16 PFS15 PFS14 PFS13 PFS12 PFS11 PFS10 PFS1 IFS0 IFS1 SCSBPS SDISDAPS ─ ─ 4 3 SCKSCLPS STPIPS PTPIPS STCKPS CTCKPS PTCKPS ─ ─ ─ ─ INT1PS INT0PS 1 PAS01 R/W 0 0 PAS00 R/W 0 引脚共用功能选择寄存器列表 ● PAS0 寄存器 Bit Name R/W POR Rev. 1.10 7 PAS07 R/W 0 6 PAS06 R/W 0 5 PAS05 R/W 0 4 PAS04 R/W 0 Bit 7~6 PAS07~PAS06:PA3 引脚共用功能选择 00: PA3/INT1 01: PA3/INT1 10: PA3/INT1 11: SDO Bit 5~4 PAS05~PAS04:PA2 引脚共用功能选择 00: PA2 01: PA2 10: PA2 11: PA2 Bit 3~2 PAS03~PAS02:PA1 引脚共用功能选择 00: PA1/INT0 01: PA1/INT0 10: PA1/INT0 11: SCS Bit 1~0 PAS01~PAS00:PA0 引脚共用功能选择 00: PA0 01: PA0 10: PA0 11: PA0 72 3 PAS03 R/W 0 2 PAS02 R/W 0 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 ● PAS1 寄存器 Bit Name R/W POR 7 PAS17 R/W 0 6 PAS16 R/W 0 5 PAS15 R/W 0 4 PAS14 R/W 0 Bit 7~6 PAS17~PAS16:PA7 引脚共用功能选择 00: PA7/INT1 01: PA7/INT1 10: PA7/INT1 11: TX Bit 5~4 PAS15~PAS14:PA6 引脚共用功能选择 00: PA6/INT0 01: PA6/INT0 10: PA6/INT0 11: RX Bit 3~2 PAS13~PAS12:PA5 引脚共用功能选择 00: PA5 01: PA5 10: PA5 11: SCK/SCL Bit 1~0 PAS11~PAS10:PA4 引脚共用功能选择 00: PA4 01: PA4 10: PA4 11: SDI/SDA 3 PAS13 R/W 0 2 PAS12 R/W 0 1 PAS11 R/W 0 0 PAS10 R/W 0 3 PBS03 R/W 0 2 PBS02 R/W 0 1 PBS01 R/W 0 0 PBS00 R/W 0 ● PBS0 寄存器 Bit Name R/W POR Rev. 1.10 7 PBS07 R/W 0 6 PBS06 R/W 0 5 PBS05 R/W 0 4 PBS04 R/W 0 Bit 7~6 PBS07~PBS06:PB3 引脚共用功能选择 00: PB3 01: PB3 10: PB3 11: CTP Bit 5~4 PBS05~PBS04:PB2 引脚共用功能选择 00: PB2/PTCK 01: PB2/PTCK 10: PB2/PTCK 11: PTPB Bit 3~2 PBS03~PBS02:PB1 引脚共用功能选择 00: PB1/PTPI 01: PB1/PTPI 10: PB1/PTPI 11: PTP 73 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 1~0 PBS01~PBS00:PB0 引脚共用功能选择 00: PB0 01: PB0 10: PB0 11: CX ● PBS1 寄存器 Bit Name R/W POR 7 PBS17 R/W 0 6 PBS16 R/W 0 5 PBS15 R/W 0 4 PBS14 R/W 0 Bit 7~6 PBS17~PBS16:PB7 引脚共用功能选择 00: PB7 01: PB7 10: PB7 11: OSC2 Bit 5~4 PBS15~PBS14:PB6 引脚共用功能选择 00: PB6 01: PB6 10: PB6 11: OSC1 Bit 3~2 PBS13~PBS12:PB5 引脚共用功能选择 00: PB5 01: PB5 10: PB5 11: PB5 Bit 1~0 PBS11~PBS10:PB4 引脚共用功能选择 00: PB4/CTCK 01: PB4/CTCK 10: PB4/CTCK 11: CTPB 3 PBS13 R/W 0 2 PBS12 R/W 0 1 PBS11 R/W 0 0 PBS10 R/W 0 3 PCS03 R/W 0 2 PCS02 R/W 0 1 PCS01 R/W 0 0 PCS00 R/W 0 ● PCS0 寄存器 Bit Name R/W POR Rev. 1.10 7 PCS07 R/W 0 6 PCS06 R/W 0 5 PCS05 R/W 0 4 PCS04 R/W 0 Bit 7~6 PCS07~PCS06:PC3 引脚共用功能选择 00: PC3/PTCK 01: PC3/PTCK 10: PTPB 11: AN3 Bit 5~4 PCS05~PCS04:PC2 引脚共用功能选择 00: PC2/PTPI 01: PC2/PTPI 10: PTP 11: AN2 74 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 3~2 PCS03~PCS02:PC1 引脚共用功能选择 00: PC1 01: CMPO 10: VREF 11: AN1 Bit 1~0 PCS01~PCS00:PC0 引脚共用功能选择 00: PC0 01: PC0 10: VREFI 11: AN0 ● PCS1 寄存器 Bit Name R/W POR 7 PCS17 R/W 0 6 PCS16 R/W 0 5 PCS15 R/W 0 4 PCS14 R/W 0 Bit 7~6 PCS17~PCS16:PC7 引脚共用功能选择 00: PC7/STCK 01: PC7/STCK 10: STPB 11: AN7 Bit 5~4 PCS15~PCS14:PC6 引脚共用功能选择 00: PC6/STPI 01: PC6/STPI 10: STP 11: AN6 Bit 3~2 PCS13~PCS12:PC5 引脚共用功能选择 00: PC5 01: PC5 10: PC5 11: AN5 Bit 1~0 PCS11~PCS10:PC4 引脚共用功能选择 00: PC4 01: PC4 10: PC4 11: AN4 3 PCS13 R/W 0 2 PCS12 R/W 0 1 PCS11 R/W 0 0 PCS10 R/W 0 3 PDS03 R/W 0 2 PDS02 R/W 0 1 PDS01 R/W 0 0 PDS00 R/W 0 ● PDS0 寄存器 Bit Name R/W POR Bit 7~6 Rev. 1.10 7 PDS07 R/W 0 6 PDS06 R/W 0 5 PDS05 R/W 0 4 PDS04 R/W 0 PDS07~PDS06:PD3 引脚共用功能选择 00: PD3 01: PD3 10: PD3 11: AN11 75 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 5~4 PDS05~PDS04:PD2 引脚共用功能选择 00: PD2 01: PD2 10: PD2 11: AN10 Bit 3~2 PDS03~PDS02:PD1 引脚共用功能选择 00: PD1 01: PD1 10: PD1 11: AN9 Bit 1~0 PDS01~PDS00:PD0 引脚共用功能选择 00: PD0 01: PD0 10: PD0 11: AN8 ● PDS1 寄存器 Bit Name R/W POR 7 ─ ─ ─ 6 ─ ─ ─ 5 PDS15 R/W 0 4 PDS14 R/W 0 Bit 7~6 未定义,读为“0” Bit 5~4 PDS15~PDS14:PD6 引脚共用功能选择 00: PD6 01: PD6 10: PD6 11: AN14 Bit 3~2 PDS13~PDS12:PD5 引脚共用功能选择 00: PD5 01: PD5 10: PD5 11: AN13 Bit 1~0 PDS11~PDS10:PD4 引脚共用功能选择 00: PD4 01: PD4 10: PD4 11: AN12 3 PDS13 R/W 0 2 PDS12 R/W 0 1 PDS11 R/W 0 0 PDS10 R/W 0 3 PES03 R/W 0 2 PES02 R/W 0 1 PES01 R/W 0 0 PES00 R/W 0 ● PES0 寄存器 Bit Name R/W POR Bit 7~6 Rev. 1.10 7 PES07 R/W 0 6 PES06 R/W 0 5 PES05 R/W 0 4 PES04 R/W 0 PES07~PES06:PE3 引脚共用功能选择 00: PE3 01: PE3 10: PE3 11: CTP 76 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 5~4 PES05~PES04:PE2 引脚共用功能选择 00: PE2/CTCK 01: PE2/CTCK 10: PE2/CTCK 11: CTPB Bit 3~2 PES03~PES02:PE1 引脚共用功能选择 00: PE1/STPI 01: PE1/STPI 10: PE1/STPI 11: STP Bit 1~0 PES01~PES00:PE0 引脚共用功能选择 00: PE0/STCK 01: PE0/STCK 10: PE0/STCK 11: STPB ● PES1 寄存器 Bit Name R/W POR 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ Bit 7~2 未定义,读为“0” Bit 1~0 PES11~PES10:PE4 引脚共用功能选择 00: PE4 01: PE4 10: PE4 11: PE4 3 ─ ─ ─ 2 ─ ─ ─ 1 PES11 R/W 0 0 PES10 R/W 0 3 PFS03 R/W 0 2 PFS02 R/W 0 1 PFS01 R/W 0 0 PFS00 R/W 0 ● PFS0 寄存器 Bit Name R/W POR Rev. 1.10 7 PFS07 R/W 0 6 PFS06 R/W 0 5 PFS05 R/W 0 4 PFS04 R/W 0 Bit 7~6 PFS07~PFS06:PF3 引脚共用功能选择 00: PF3 01: PF3 10: SCK/SCL 11: SCOM3 Bit 5~4 PFS05~PFS04:PF2 引脚共用功能选择 00: PF2 01: PF2 10: SDI/SDA 11: SCOM2 Bit 3~2 PFS03~PFS02:PF1 引脚共用功能选择 00: PF1 01: PF1 10: SDO 11: SCOM1 77 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 1~0 PFS01~PFS00:PF0 引脚共用功能选择 00: PF0 01: PF0 10: SCS 11: SCOM0 ● PFS1 寄存器 Bit Name R/W POR 7 PFS17 R/W 0 6 PFS16 R/W 0 5 PFS15 R/W 0 4 PFS14 R/W 0 Bit 7~6 PFS17~PFS16:PF7 引脚共用功能选择 00: PF7 01: PF7 10: PF7 11: C+ Bit 5~4 PFS15~PFS14:PF6 引脚共用功能选择 00: PF6 01: PF6 10: C11: AN15 Bit 3~2 PFS13~PFS12:PF5 引脚共用功能选择 00: PF5 01: PF5 10: PF5 11: XT1 Bit 1~0 PFS11~PFS10:PF4 引脚共用功能选择 00: PF4 01: PF4 10: PF4 11: XT2 3 PFS13 R/W 0 2 PFS12 R/W 0 1 PFS11 R/W 0 0 PFS10 R/W 0 3 2 1 0 ● IFS0 寄存器 Bit 7 6 5 4 Name SCSBPS SDISDAPS SCKSCLPS STPIPS PTPIPS STCKPS CTCKPS PTCKPS Rev. 1.10 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 0 0 0 0 Bit 7 SCSBPS:SCS 输入源引脚选择 0: PA1 1: PF0 Bit 6 SDISDAPS:SDI/SDA 输入源引脚选择 0: PA4 1: PF2 Bit 5 SCKSCLPS:SCK/SCL 输入源引脚选择 0: PA5 1: PF3 Bit 4 STPIPS:STPI 输入源引脚选择 0: PC6 1: PE1 78 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 3 PTPIPS:PTPI 输入源引脚选择 0: PC2 1: PB1 Bit 2 STCKPS:STCK 输入源引脚选择 0: PC7 1: PE0 Bit 1 CTCKPS:CTCK 输入源引脚选择 0: PB4 1: PE2 Bit 0 PTCKPS:PTCK 输入源引脚选择 0: PC3 1: PB2 ● IFS1 寄存器 Bit Name R/W POR 7 — — — 6 — — — 5 — — — 4 — — — Bit 7~2 未定义,读为“0” Bit 1 INT1PS:INT1 输入源引脚选择 0: PA3 1: PA7 Bit 0 INT0PS:INT0 输入源引脚选择 0: PA1 1: PA6 3 — — — 2 — — — 1 0 INT1PS INT0PS R/W R/W 0 0 输入 / 输出引脚结构 下图为输入 / 输出引脚逻辑功能的内部结构图。具体输入 / 输出引脚的逻辑结构 图可能与此图不同,这里只是为了方便对 I/O 引脚逻辑功能的理解提供一个参 考。由于存在诸多的引脚共用结构,在此不方便提供所有类型引脚功能结构图。 VDD Control Bit Data Bus Write Control Register Chip Reset Read Control Register D Weak Pull-up CK Q S I/O pin Data Bit D Write Data Register Q Pull-high Register Select Q CK Q S Read Data Register System Wake-up M U X wake-up Select PA only 逻辑功能输入 / 输出端口 Rev. 1.10 79 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 编程注意事项 在编程中,最先要考虑的是端口的初始化。复位之后,所有的输入 / 输出数据 及端口控制寄存器都将被设为逻辑高。所有输入 / 输出引脚默认为输入状态, 而其电平则取决于其它相连接电路以及是否选择了上拉电阻。如果端口控制寄 存器 PAC~PFC,某些引脚位被设定输出状态,这些输出引脚会有初始高电平输 出,除非数据寄存器端口 PA~PF 在程序中被预先设定。设置哪些引脚是输入及 哪些引脚是输出,可通过设置正确的值到适当的端口控制寄存器,或使用指令 “SET [m].i”及“CLR [m].i”来设定端口控制寄存器中个别的位。注意,当使 用这些位控制指令时,系统即将产生一个读 - 修改 - 写的操作。单片机需要先 读入整个端口上的数据,修改个别的位,然后重新把这些数据写入到输出端口。 PA 口的每个引脚都带唤醒功能。单片机处于休眠或空闲模式时,有很多方法可 以唤醒单片机,其中之一就是通过 PA 任一引脚电平从高到低转换的方式,可 以设置 PA 口一个或多个引脚具有唤醒功能。 Rev. 1.10 80 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 定时器模块 – TM 控制和测量时间在任何单片机中都是一个很重要的部分。该单片机提供几个定 时器模块(简称 TM),来实现和时间有关的功能。定时器模块是包括多种操 作的定时单元,提供的操作有:定时 / 事件计数器,捕捉输入,比较匹配输出, 单脉冲输出以及 PWM 输出等功能。每个定时器模块有两个独立中断。每个 TM 外加的输入输出引脚,扩大了定时器的灵活性,便于用户使用。 这里只介绍各种 TM 的共性,更多详细资料请参考简易型、标准型和周期型定 时器章节。 简介 该单片机包含 3 个 TM,每个 TM 即可归为一类,分别为简易型 TM(CTM)、 标准型 TM(STM)或周期型 TM(PTM)。虽然性质相似,但不同 TM 特性 复杂度不同。本章介绍简易型、标准型和周期型 TM 的共性,更多详细资料分 别见后面各章。三种类型 TM 的特性和区别见下表。 功能 定时 / 计数器 捕捉输入 比较匹配输出 PWM 通道数 单脉冲输出 PWM 对齐方式 PWM 调节周期 & 占空比 CTM √ ─ √ 1 ─ 边沿对齐 占空比或周期 STM √ √ √ 1 1 边沿对齐 占空比或周期 PTM √ √ √ 1 1 边沿对齐 占空比或周期 TM 操作 三种不同类型的 TM 提供从简单的定时操作到 PWM 信号产生等多种功能。理 解 TM 操作的关键是比较 TM 内独立运行的计数器的值与内部比较器的预置值。 当计数器的值与比较器的预置值相同时,则比较匹配,TM 中断信号产生,清 零计数器并改变 TM 输出引脚的状态。用户选择内部时钟或外部时钟来驱动内 部 TM 计数器。 TM 时钟源 驱动 TM 计数器的时钟源很多。通过设置 TM 控制寄存器的 xTCK2~xTCK0 位 ( 其中的 x 可为 C,S 或 P,即表示不同的 TM 类型 ),选择所需的时钟源。该 时钟源来自系统时钟 fSYS 或内部高速时钟 fH 或 fSUB 时钟源或外部 xTCK 引脚。 xTCK 引脚时钟源用于允许外部信号作为 TM 时钟源或用于事件计数。 TM 中断 每种类型 TM 都拥有两个内部中断,分别是内部比较器 A 或比较器 P,当比较 匹配发生时产生 TM 中断。当 TM 中断产生时,计数器清零并改变 TM 输出引 脚的状态。 Rev. 1.10 81 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 TM 外部引脚 每种类型的 TM 都有一个或两个 TM 输入引脚 xTCK 或 xTPI。 xTM 输入引脚 xTCK 作为 xTM 时钟源输入脚,通过设置 xTMC0 寄存器中的 xTCK2~xTCK0 位进行选择。外部时钟源可通过该引脚来驱动内部 TM。TM 引脚可选择上升沿 有效或下降沿有效。对于 PTM 和 STM,xTCK 引脚还可用作 xTM 单脉冲输出 模式的外部触发引脚。 对于 PTM 和 STM,具有另一个输入引脚 xTPI,可作为捕捉输入脚,其有效边 沿有上升沿、下降沿和双沿,通过设置 xTMC1 寄存器中的 xTIO1~xTIO0 位来 选择有效边沿类型。此外,对于 PTM,除了 PTPI 引脚,PTCK 引脚除可以用 作外部触发引脚外也可用作 PTM 捕捉输入模式时输入源。 每个 TM 都提供两个输出引脚 xTP 和 xTPB。xTPB 输出信号为 xTP 输出的反相 信号。当 TM 工作在比较匹配输出模式且比较匹配发生时,这些引脚会由 TM 控制切换到高电平或低电平或翻转。外部 xTPn 和 xTPnB 输出引脚也被 TM 用 来产生 PWM 输出波形。因 TM 输入和输出引脚与其它功能共用引脚,在使能 TM 功能前,应先通过相关引脚共用功能选择寄存器选择 TM 输入和输出引脚 功能。 CTM 输入 输出 CTCK CTP,CTPB STM 输入 STCK,STPI PTM 输出 STP,STPB 输入 PTCK,PTPI 输出 PTP,PTPB TM 外部引脚 TM 外部引脚控制寄存器 通过设置相关引脚共用功能选择寄存器选择引脚功能为 TM 输入 / 输出功能或 其它共用功能。每个 TM 输入 / 输出引脚都可通过对应的引脚共用功能选择位 进行设置。正确设置选择位将相应的引脚用作 TM 输入 / 输出。更多引脚共用 功能选择详见引脚共用功能章节。 CTCK CTM CCR output CTP CTPB CTM 功能引脚控制方框图 STCK CCR capture input STM CCR output STPI STP STPB STM 功能引脚控制方框图 Rev. 1.10 82 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 PTCK CCR capture input PTM CCR output PTPI PTP PTPB PTM 功能引脚控制方框图 编程注意事项 TM 计数寄存器和捕捉 / 比较寄存器 CCRA 或 CCRP,含有低字节和高字节结构。 高字节可直接访问,低字节则仅能通过一个内部 8-bit 的缓存器进行访问。值得 注意的是 8-bit 缓存器的存取数据及相关低字节的读写操作仅在其相应的高字节 读取操作执行时发生。 CCRA 和 CCRP 寄存器访问方式如下图所示,读写这些成对的寄存器需通过特 殊的方式。建议使用“MOV”指令按照以下步骤访问 CCRA 或 CCRP 低字节 寄存器,xTMAL 或 PTMRPL,否则可能导致无法预期的结果。 xTM Counter Register (Read only) xTMDL xTMDH 8-bit Buffer xTMAL xTMAH xTM CCRA Register (Read/Write) PTMRPL PTMRPH PTM CCRP Register (Read/Write) Data Bus 读写流程如下步骤所示: ● 写数据至 CCRA 或 CCRP ♦ 步骤 1. 写数据至低字节寄存器 xTMAL 或 PTMRPL – 注意,此时数据仅写入 8-bit 缓存器。 ♦ 步骤 2. 写数据至高字节寄存器 xTMAH 或 PTMRPH – 注意,此时数据直接写入高字节寄存器,同时锁存在 8-bit 缓存器中的数据写 入低字节寄存器。 ● 由计数器寄存器和 CCRA 或 CCRP 中读取数据 ♦ 步骤 1. 由高字节寄存器 xTMDH、xTMAH 或 PTMRPH 读取数据 – 注意,此时高字节寄存器中的数据直接读取,同时由低字节寄存器读取的数 据锁存至 8-bit 缓存器中。 ♦ 步骤 2. 由低字节寄存器 xTMDL、xTMAL 或 PTMRPL 读取数据 – 注意,此时读取 8-bit 缓存器中的数据。 Rev. 1.10 83 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 简易型 TM – CTM 简易型 TM 包括三种工作模式,即比较匹配输出,定时 / 事件计数器和 PWM 输出模式。简易型 TM 也由一个外部输入脚控制并驱动两个外部输出脚。 CTM 核心 16-bit CTM CTM 输入引脚 CTCK CTM 输出引脚 CTP,CTPB CCRP 8-bit Comparator P fSYS/4 fSYS fH/16 fH/64 fSUB fSUB 001 011 101 Counter Clear 16-bit Count-up Counter 100 CTON CTPAU 16-bit Comparator A 0 1 CTCCLR b0~b15 111 CTMPF Interrupt CTOC b8~b15 010 110 CTCK Comparator P Match 000 Comparator A Match Output Control Polarity Control Pin Control CTM1, CTM0 CTIO1, CTIO0 CTPOL PxSn CTP CTPB CTMAF Interrupt CTCK2~CTCK0 CCRA 简易型 TM 方框图 简易型 TM 操作 简易型 TM 核心是一个由用户选择的内部或外部时钟源驱动的 16 位向上计数 器,它还包括两个内部比较器即比较器 A 和比较器 P。这两个比较器将计数器 的值与 CCRP 和 CCRA 寄存器中的值进行比较。CCRP 是 8 位的,与计数器的 高 8 位比较;而 CCRA 是 16 位的,与计数器的所有位比较。 通过应用程序改变 16 位计数器值的唯一方法是使 CTON 位发生上升沿跳变清 除计数器。此外,计数器溢出或比较匹配也会自动清除计数器。上述条件发生 时,通常情况下会产生 TM 中断信号。简易型 TM 可工作在不同的模式,可由 包括来自输入脚的不同时钟源驱动,也可以控制两个输出脚。所有工作模式的 设定都是通过设置相关内部寄存器来实现的。 简易型 TM 寄存器介绍 简易型 TM 的所有操作由一系列寄存器控制。包含一对只读寄存器用来存放 16 位计数器的值,一对读 / 写寄存器存放 16 位 CCRA 的值,CTMRP 寄存器用于 存放 8 位 CCRP 的值。剩下两个控制寄存器设置不同的操作和控制模式。 位 寄存器 名称 7 6 5 4 3 CTMC0 CTPAU CTCK2 CTCK1 CTCK0 CTON CTMC1 CTM1 CTM0 CTIO1 CTIO0 CTOC CTMDL D7 D6 D5 D4 D3 CTMDH D15 D14 D13 D12 D11 CTMAL D7 D6 D5 D4 D3 CTMAH D15 D14 D13 D12 D11 CTMRP D7 D6 D5 D4 D3 2 1 0 ─ ─ ─ CTPOL CTDPX CTCCLR D2 D1 D0 D10 D9 D8 D2 D1 D0 D10 D9 D8 D2 D1 D0 16-bit 简易型 TM 寄存器列表 Rev. 1.10 84 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 CTMC0 寄存器 Bit Name R/W POR 7 6 5 4 CTPAU CTCK2 CTCK1 CTCK0 R/W R/W R/W R/W 0 0 0 0 3 CTON R/W 0 2 ─ ─ ─ 1 ─ ─ ─ 0 ─ ─ ─ Bit 7 CTPAU:CTM 计数器暂停控制位 0:运行 1:暂停 通过设置此位为高可暂停计数器。此位清零可恢复正常计数器操作。在暂停情 况下 CTM 将保持上电并继续产生功耗。当此位由低到高转换,计数器将保留其 剩余值,当其电平再变为低时从此位开始继续计数。 Bit 6~4 CTCK2~CTCK0:CTM 计数器时钟选择位 000:fSYS/4 001:fSYS 010:fH/16 011:fH/64 100:fSUB 101:fSUB 110:CTCK 上升沿时钟 111:CTCK 下降沿时钟 此三位用于选择 CTM 的时钟源。外部引脚时钟源能被选择在上升沿或下降沿有 效。fSYS 是系统时钟,fH 和 fSUB 是其它的内部时钟源,细节方面请参考振荡器章 节。 Bit 3 CTON:CTM 计数器 On/Off 控制位 0:Off 1:On 此位控制 CTM 的总开关功能。设置此位为高可使能计数器使其运行,清零此位 则除能 CTM。清零此位将停止计数器并关闭 CTM 减少功耗。当此位经由低到 高转换时,内部计数器将复位清零,当此位由高到低转换时,内部计数器将保 持其剩余值直到此位再次转变为高。 若 CTM 处于比较匹配输出模式或 PWM 输出模式,当 CTON 位经由低到高转换 时, CTM 输出脚将复位至 CTOC 位指定的初始值。 Bit 2~0 未定义,读为“0” CTMC1 寄存器 Bit Name R/W POR Bit 7~6 Rev. 1.10 7 CTM1 R/W 0 6 CTM0 R/W 0 5 CTIO1 R/W 0 4 CTIO0 R/W 0 3 CTOC R/W 0 2 1 0 CTPOL CTDPX CTCCLR R/W R/W R/W 0 0 0 CTM1~CTM0:CTM 工作模式选择位 00:比较匹配输出模式 01:未定义 10:PWM 输出模式 11:定时 / 计数器模式 这两个位为 CTM 设置所需的工作模式。为保证操作的可靠性,在此位段发生任 何改变之前需先关闭 CTM。在定时 / 计数器模式下,CTM 输出引脚状态未定义。 85 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 5~4 Bit 3 Rev. 1.10 CTIO1~CTIO0:CTM CTP 引脚功能选择位 比较匹配输出模式 00:未改变 01:输出低 10:输出高 11:输出翻转 PWM 输出模式 00:PWM 输出无效状态 01:PWM 输出有效状态 10:PWM 输出 11:未定义 定时 / 计数器模式 未使用 这两位用于确定在达到某些条件时 CTM 输出状态应如何改变。这些位的功能选 择取决于当下 CTM 的工作模式。 在比较匹配输出模式下,CTIO1 和 CTIO0 位决定当比较器 A 比较匹配输出发生 时 CTM 输出脚如何改变状态。当比较器 A 比较匹配输出发生时 CTM 输出脚能 设为切换高、切换低或翻转当前状态。若此两位同时为 0 时,输出将不会改变。 CTM 输出脚的初始值通过 CTOC 位设置取得。注意,由 CTIO1 和 CTIO0 位得 到的输出电平必须与通过 CTOC 位设置的初始值不同,否则当比较匹配发生时, CTM 输出脚将不会发生变化。在 CTM 输出脚改变状态后,通过 CTON 位由低 到高电平的转换可复位至初始值。 在 PWM 输出模式,CTIO1 和 CTIO0 用于决定比较匹配条件发生时怎样改变 TM 输出脚的状态。PWM 输出功能通过这两位的变化进行更新。仅在 CTM 关 闭时改变 CTIO1 和 CTIO0 位的值是很有必要的。若在 CTM 运行时改变 CTIO1 和 CTIO0 的值,PWM 输出的值将无法预料。 CTOC:CTP 输出控制位 比较匹配输出模式 0:初始低 1:初始高 PWM 输出模式 0:低有效 1:高有效 此位为 CTM 输出脚的输出控制位。它取决于 CTM 此时正运行于比较匹配输出 模式还是 PWM 输出模式。若 CTM 处于定时 / 计数器模式,则其不受影响。在 比较匹配输出模式时,比较匹配发生前其决定 CTM 输出脚的逻辑电平值。在 PWM 输出模式时,其决定 PWM 信号是高有效还是低有效。 Bit2 CTPOL:CTP 输出极性控制位 0:同相 1:反相 此位控制 CTP 输出脚的极性。此位为高时 CTP 输出脚反相,为低时 CTP 输出 脚同相。若 CTM 处于定时 / 计数器模式时,此位无效。 Bit 1 CTDPX:CTM PWM 周期 / 占空比控制位 0:CCRP - 周期;CCRA - 占空比 1:CCRP - 占空比;CCRA - 周期 此位决定 CCRA 与 CCRP 寄存器哪个被用于 PWM 波形的周期和占空比控制。 Bit 0 CTCCLR:选择 CTM 计数器清零条件位 0:CTM 比较器 P 匹配 1:CTM 比较器 A 匹配 此位用于选择清除计数器的方法。简易型 TM 包括两个比较器 - 比较器 A 和比 较器 P。这两个比较器每个都可以用于清除内部计数器。CTCCLR 位设为高, 计数器在比较器 A 比较匹配发生时被清除;此位设为低,计数器在比较器 P 比 较匹配发生或计数器溢出时被清除。计数器溢出清除的方法仅在 CCRP 的位都 被清除为 0 时才能生效。CTCCLR 位在 PWM 输出模式时未使用。 86 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 CTMDL 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R 0 6 D6 R 0 5 D5 R 0 4 D4 R 0 3 D3 R 0 2 D2 R 0 1 D1 R 0 0 D0 R 0 3 D11 R 0 2 D10 R 0 1 D9 R 0 0 D8 R 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 3 D11 R/W 0 2 D10 R/W 0 1 D9 R/W 0 0 D8 R/W 0 CTM 计数器低字节寄存器 bit7~bit0 CTM 16-bit 计数器 bit7~bit0 CTMDH 寄存器 Bit Name R/W POR Bit 7~0 7 D15 R 0 6 D14 R 0 5 D13 R 0 4 D12 R 0 CTM 计数器高字节寄存器 bit7~bit0 CTM 16-bit 计数器 bit15~bit8 CTMAL 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 CTM CCRA 低字节寄存器 bit7~bit0 CTM 16-bit CCRA bit7~bit0 CTMAH 寄存器 Bit Name R/W POR Bit 7~0 Rev. 1.10 7 D15 R/W 0 6 D14 R/W 0 5 D13 R/W 0 4 D12 R/W 0 CTM CCRA 高字节寄存器 bit7~bit0 CTM 16-bit CCRA bit15~bit8 87 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 CTMRP 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 CTM CCRP 寄存器 bit7~bit0 CTM CCRP 8-bit 寄存器,与 CTM 计数器 bit15~bit8 比较。 比较器 P 匹配周期 0:65536 个 CTM 时钟周期 1~255:256×(1~255) 个 CTM 时钟周期 此八位设定内部 CCRP 8-bit 寄存器的值,然后与内部计数器的高八位进行比较。 如果 CTCCLR 位设为 0 时,此比较结果可用于清零内部计数器。CTCCLR 位设 为低,CCRP 比较匹配结果将重置内部计数器。由于 CCRP 只与计数器高八位 比较,比较结果是 256 时钟周期的倍数。CCRP 被清零时,实际上会使得计数 器在最大值溢出。 简易型 TM 工作模式 简易型 TM 有三种工作模式,即比较匹配输出模式,PWM 输出模式或定时 / 计 数器模式。通过设置 CTMC1 寄存器的 CTM1 和 CTM0 位选择任意工作模式。 比较匹配输出模式 要工作在此模式,CTMC1 寄存器中的 CTM1 和 CTM0 位需要设置为“00”。 当工作在该模式,一旦计数器使能并开始计数,有三种方法来清零,分别是: 计数器溢出,比较器 A 比较匹配发生和比较器 P 比较匹配发生。当 CTCCLR 位为低,有两种方法清除计数器。一种是比较器 P 比较匹配发生,另一种是 CCRP 所有位设置为零并使得计数器溢出。此时,比较器 A 和比较器 P 的请求 标志位 CTMAF 和 CTMPF 将分别置起。 如果 CTMC1 寄存器的 CTCCLR 位设置为高,当比较器 A 比较匹配发生时计数 器被清零。此时,即使 CCRP 寄存器的值小于 CCRA 寄存器的值,仅 CTMAF 中断请求标志产生。所以当 CTCCLR 为高时,不产生 CTMPF 中断请求标志。 如果 CCRA 被清零,当计数达到最大值 FFFFH 时,计数器溢出,而此时不产 生 CTMAF 请求标志。 正如该模式名所言,当比较匹配发生后,CTM 输出脚状态改变。当比较器 A 比较匹配发生后 CTMAF 标志产生时,CTM 输出脚状态改变。比较器 P 比较匹 配发生时产生的 CTMPF 标志不影响 CTM 输出脚。CTM 输出脚状态改变方式 由 CTMC1 寄存器中 CTIO1 和 CTIO0 位决定。当比较器 A 比较匹配发生时, CTIO1 和 CTIO0 位决定 CTM 输出脚输出高,低或翻转当前状态。CTM 输出脚 初 始 值, 在 CTON 位 由 低 到 高 电 平 的 变 化 后 通 过 CTOC 位 设 置。 注 意, 若 CTIO1 和 CTIO0 位同时为 0 时,引脚输出不变。 Rev. 1.10 88 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter overflow Counter Value 0xFFFF CTCCLR = 0; CTM [1:0] = 00 CCRP > 0 Counter cleared by CCRP value CCRP=0 CCRP > 0 Counter Restart Resume CCRP Stop Pause CCRA Time CTON CTPAU CTPOL CCRP Int. flag CTMPF CCRA Int. flag CTMAF CTM O/P Pin Output pin set to initial Level Low if CTOC=0 Output not affected by CTMAF flag. Remains High until reset by CTON bit Output Toggle with CTMAF flag Here CTIO [1:0] = 11 Toggle Output select Note CTIO [1:0] = 10 Active High Output select Output Inverts when CTPOL is high Output Pin Reset to Initial value Output controlled by other pin-shared function 比较匹配输出模式 – CTCCLR=0 注:1. CTCCLR = 0 时,比较器 P 匹配将清除计数器。 2. CTM 输出引脚仅由 CTMAF 标志位控制 3. 输出引脚通过 CTON 位上升沿复位为初始值 Rev. 1.10 89 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value CTCCLR = 1; CTM [1:0] = 00 CCRA = 0 Counter overflow CCRA > 0 Counter cleared by CCRA value 0xFFFF CCRA=0 Resume CCRA Pause Stop Counter Restart CCRP Time CTON CTPAU CTPOL No CTMAF flag generated on CCRA overflow CCRA Int. flag CTMAF CCRP Int. flag CTMPF CTM O/P Pin CTMPF not generated Output pin set to initial Level Low if CTOC=0 Output does not change Output not affected by CTMAF flag. Remains High until reset by CTON bit Output Toggle with CTMAF flag Here CTIO [1:0] = 11 Toggle Output select Note CTIO [1:0] = 10 Active High Output select Output Inverts when CTPOL is high Output Pin Reset to Initial value Output controlled by other pin-shared function 比较匹配输出模式 – CTCCLR = 1 注:1. CTCCLR = 1 时,比较器 A 匹配将清除计数器 2. CTM 输出引脚控制仅由 CTMAF 标志位控制 3. 输出引脚通过 CTON 上升沿复位至初始值 4. 当 CTCCLR = 1 时不产生 CTMPF 标志位 Rev. 1.10 90 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 定时 / 计数器模式 要工作在此模式,CTMC1 寄存器中的 CTM1 和 CTM0 位需要设置为“11”。 定时 / 计数器模式与比较输出模式操作方式相同,并产生同样的中断请求标志。 不同的是,在定时 / 计数器模式下 CTM 输出脚未使用。因此,比较匹配输出模 式中的描述和时序图可以帮助理解此功能。该模式中未使用的 CTM 输出脚用 作普通 I/O 脚或其它功能。 PWM 输出模式 要工作在此模式,CTMC1 寄存器中的 CTM1 和 CTM0 位需要设置为“10”。 TM 的 PWM 功能在马达控制,加热控制,照明控制等方面十分有用。给 TM 输出脚提供一个频率固定但占空比可调的信号,将产生一个有效值等于 DC 均 方根的 AC 方波。 由于 PWM 波形的周期和占空比可控,其波形的选择就较为灵活。在 PWM 输 出模式中,CTCCLR 位不影响 PWM 操作。CCRA 和 CCRP 寄存器决定 PWM 波形,一个用来清除内部计数器并控制 PWM 波形的频率,另一个用来控制占 空比。哪个寄存器控制频率或占空比取决于 CTMC1 寄存器的 CTDPX 位。所 以 PWM 波形频率和占空比由 CCRA 和 CCRP 寄存器共同决定。 当比较器 A 或比较器 P 比较匹配发生时,将产生 CCRA 或 CCRP 中断标志。 CTMC1 寄存器中的 CTOC 位决定 PWM 波形的极性,CTIO1 和 CTIO0 位使能 PWM 输出或将 CTM 输出脚置为逻辑高或逻辑低。CTPOL 位对 PWM 输出波 形的极性取反。 ● 16-bit CTM,PWM 输出模式,边沿对其模式,CTDPX = 0 CCRP Period Duty 1~255 CCRP×256 0 65536 CCRA 若 fSYS=16MHz,CTM 时钟源选择 fSYS/4,CCRP=2,CCRA=128, CTM PWM 输出频率 = (fSYS/4)/(2×256) = fSYS/2048=8kHz,duty=128/(2×256)= 25%。 若由 CCRA 寄存器定义的 Duty 值等于或大于 Period 值,PWM 输出占空比为 100%。 ● 16-bit CTM,PWM 输出模式,边沿对其模式,CTDPX = 1 CCRP Period Duty 1~255 0 CCRA CCRP×256 65536 PWM 的输出周期由 CCRA 寄存器的值与 CTM 的时钟共同决定,PWM 的占空 比由 CCRP 寄存器的值决定。 Rev. 1.10 91 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value CTDPX = 0; CTM [1:0] = 10 Counter cleared by CCRP Counter Reset when CTON returns high CCRP Pause Resume Counter Stop if CTON bit low CCRA Time CTON CTPAU CTPOL CCRA Int. flag CTMAF CCRP Int. flag CTMPF PWM resumes Output controlled by operation other pin-shared function Output Inverts when CTPOL = 1 PWM Period set by CCRP PWM Duty Cycle set by CCRA PWM 输出模式 – CTDPX = 0 注:1. CTDPX = 0 ,计数器由 CCRP 清除 2. 计数器清零设置 PWM 周期 3. 即使当 CTIO[1:0] = 00 或 01,内部 PWM 功能不变 4. CTCCLR 位对 PWM 操作没有影响 Rev. 1.10 92 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value CTDPX = 1; CTM [1:0] = 10 Counter cleared by CCRA Counter Reset when CTON returns high CCRA Pause Resume Counter Stop if CTON bit low CCRP Time CTON CTPAU CTPOL CCRP Int. flag CTMPF CCRA Int. flag CTMAF CTM O/P Pin (CTOC=1) CTM O/P Pin (CTOC=0) PWM Duty Cycle set by CCRP PWM resumes operation Output controlled by other pin-shared function Output Inverts when CTPOL = 1 PWM Period set by CCRA PWM 输出模式 – CTDPX = 1 注:1. CTDPX = 1,计数器由 CCRA 清除 2. 计数器清除设置 PWM 周期 3. 即使当 CTIO[1:0] = 00 或 01,内部 PWM 功能不变 4. CTCCLR 位对 PWM 操作无影响 Rev. 1.10 93 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 标准型 TM – STM 标准型 TM 包括 5 种工作模式,即比较匹配输出,定时 / 事件计数器,捕捉输入, 单脉冲输出和 PWM 输出模式。标准型 TM 由两个外部输入脚控制并驱动两个 外部输出脚。 STM 核心 16-bit STM STM 输入引脚 STCK,STPI STM 输出引脚 STP,STPB CCRP fSYS/4 fSYS fH/16 fH/64 fSUB fSUB 001 011 101 Counter Clear 16-bit Count-up Counter 100 STON STPAU 111 STCK2~STCK0 STMPF Interrupt STOC b8~b15 010 110 STCK Comparator P Match 8-bit Comparator P 000 0 1 STCCLR b0~b15 16-bit Comparator A Comparator A Match STIO1, STIO0 Edge Detector CCRA Output Control Polarity Control Pin Control STM1, STM0 STIO1, STIO0 STPOL PxSn STP STPB STMAF Interrupt PxSn IFSi Pin Control STPI 标准型 TM 框图 标准型 TM 操作 标准型 TM 核心是一个由用户选择的内部或外部时钟源驱动的 16 位向上计数 器,它还包括两个内部比较器即比较器 A 和比较器 P。这两个比较器将计数器 的值与 CCRP 和 CCRA 寄存器中的值进行比较。CCRP 是 8 位宽度,与计数器 的高 8 位比较;而 CCRA 是 16 位的,与计数器的所有位比较。 通过应用程序改变 16 位计数器值的唯一方法是使 STON 位发生上升沿跳变清 除计数器。此外,计数器溢出或比较匹配也会自动清除计数器。上述条件发生 时,通常情况会产生 STM 中断信号。标准型 TM 可工作在不同的模式,可由包 括来自输入脚的不同时钟源驱动,也可以控制输出脚。所有工作模式的设定都 是通过设置相关寄存器来实现的。 标准型 TM 寄存器介绍 标准型 TM 的所有工作由一系列寄存器控制。一对只读寄存器用来存放 16 位计 数器的值,一对读 / 写寄存器存放 16 位 CCRA 的值,一个读 / 写寄存器存放 8 位 CCRP 的值。剩下两个控制寄存器设置不同的操作和控制模式。 位 寄存器 名称 7 6 5 4 3 STMC0 STPAU STCK2 STCK1 STCK0 STON STMC1 STM1 STM0 STIO1 STIO0 STOC STMDL D7 D6 D5 D4 D3 STMDH D15 D14 D13 D12 D11 STMAL D7 D6 D5 D4 D3 STMAH D15 D14 D13 D12 D11 STMRP D7 D6 D5 D4 D3 2 1 0 — — — STPOL STDPX STCCLR D2 D1 D0 D10 D9 D8 D2 D1 D0 D10 D9 D8 D2 D1 D0 16-bit 标准型 TM 寄存器列表 Rev. 1.10 94 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 STMC0 寄存器 Bit Name R/W POR 7 6 5 4 STPAU STCK2 STCK1 STCK0 R/W R/W R/W R/W 0 0 0 0 3 STON R/W 0 2 — — — 1 — — — 0 — — — Bit 7 STPAU:STM 计数器暂停控制位 0:运行 1:暂停 通过设置此位为高可使计数器暂停,清零此位恢复正常计数器操作。当处于暂 停条件时,STM 保持上电状态并继续耗电。当此位由低到高转换时,计数器将 保留其剩余值,直到此位再次改变为低电平,并从此值开始继续计数。 Bit 6~4 STCK2~STCK0:选择 STM 计数时钟位 000:fSYS/4 001:fSYS 010:fH/16 011:fH/64 100:fSUB 101:fSUB 110:STCK 上升沿时钟 111:STCK 下降沿时钟 此三位用于选择 STM 的时钟源。外部引脚时钟源能被选择在上升沿或下降沿有 效。fSYS 是系统时钟,fH 和 fSUB 是其它的内部时钟源,细节方面请参考振荡器章节。 Bit 3 STON:STM 计数器 On/Off 控制位 0:Off 1:On 此位控制 STM 的总开关功能。设置此位为高则使能计数器使其运行,清零此位 则除能 STM。清零此位将停止计数器并关闭 STM 减少耗电。当此位经由高到 低转换时,内部计数器将复位清零;当此位经由高到低的转换时,内部计数器 将保持其剩余值,直到此位再次改变为高电平。 若 STM 处于比较匹配输出模式、PWM 输出模式或单脉冲输出模式,当 STON 位经由低到高的转换时,STM 输出脚将复位至 STOC 位指定的初始值。 Bit 2~0 未定义,读为“0” STMC1 寄存器 Bit Name R/W POR Bit 7~6 Rev. 1.10 7 STM1 R/W 0 6 STM0 R/W 0 5 STIO1 R/W 0 4 STIO0 R/W 0 3 STOC R/W 0 2 1 0 STPOL STDPX STCCLR R/W R/W R/W 0 0 0 STM1~STM0:STM 工作模式选择位 00:比较匹配输出模式 01:捕捉输入模式 10:PWM 输出模式或单脉冲输出模式 11:定时 / 计数器模式 这两位设置 STM 需要的工作模式。为了确保操作可靠,STM 应在 STM1 和 STM0 位有任何改变前先关掉。在定时 / 计数器模式,STM 输出引脚状态未定义。 95 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Rev. 1.10 Bit 5~4 STIO1~STIO0:STM STP 或 STPI 引脚功能选择位 比较匹配输出模式 00:无变化 01:输出低 10:输出高 11:输出翻转 PWM 输出模式 / 单脉冲输出模式 00:强制无效状态 01:强制有效状态 10:PWM 输出 11:单脉冲输出 捕捉输入模式 00:在 STPI 上升沿输入捕捉 01:在 STPI 下降沿输入捕捉 10:在 STPI 双沿输入捕捉 11:输入捕捉除能 定时 / 计数器模式 未使用 此两位用于决定在满足特定条件时 STM 外部引脚如何改变状态。这两位值的选 择取决于 STM 运行在哪种工作模式。 在比较匹配输出模式下,STIO1 和 STIO0 位决定当从比较器 A 比较匹配输出发 生时 STM 输出脚 STP 如何改变状态。当从比较器 A 比较匹配输出发生时 STP 输出脚能设为切换高、切换低或翻转当前状态。若此两位同时为 0 时,这个输 出将不会改变。STP 输出脚的初始值通过 STMC1 寄存器的 STOC 位设置取得。 注意,由 STIO1 和 STIO0 位得到的输出电平必须与通过 STOC 位设置的初始值 不同,否则当比较匹配发生时,STP 输出脚将不会发生变化。在 STP 输出脚改 变状态后,通过 STON 位由低到高电平的转换复位至初始值。 在 PWM 输出模式,STIO1 和 STIO0 决定比较匹配条件发生时怎样改变 STM 输 出脚的状态。PWM 输出功能通过这两位的变化进行更新。仅在 STM 关闭时改 变 STIO1 和 STIO0 位 的 值 是 很 有 必 要 的。 若 在 STM 运 行 时 改 变 STIO1 和 STIO0 的值,PWM 输出的值将无法预料。 Bit 3 STOC:STM 输出脚 STP 输出控制位 比较匹配输出模式 0:初始低 1:初始高 PWM 输出模式 / 单脉冲输出模式 0:低有效 1:高有效 这是 STM 输出脚输出控制位。它取决于 STM 此时正运行于比较匹配输出模式 还是 PWM 输出模式 / 单脉冲输出模式。若 STM 处于定时 / 计数器模式,则其 不受影响。在比较匹配输出模式时,比较匹配发生前其决定 STM 输出脚 STP 的 逻辑电平值。在 PWM 输出模式 / 单脉冲输出模式时,其决定输出信号是高有效 还是低有效。 Bit 2 STPOL:STP 输出脚输出极性控制位 0:同相 1:反相 此位控制 STP 输出脚的极性。此位为高时 STP 输出脚反相,为低时 STP 输出脚 同相。若 STM 处于定时 / 计数器模式时其不受影响。 96 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 1 STDPX:STM PWM 周期 / 占空比控制位 0:CCRP - 周期;CCRA - 占空比 1:CCRP - 占空比;CCRA - 周期 此位决定 CCRA 与 CCRP 寄存器哪个被用于 PWM 波形的周期和占空比控制。 Bit 0 STCCLR:选择 STM 计数器清零条件位 0:STM 比较器 P 匹配 1:STM 比较器 A 匹配 此位用于选择清除计数器的方法。标准型 TM 包括两个比较器 - 比较器 A 和比 较器 P。这两个比较器每个都可以用于清除内部计数器。STCCLR 位设为高, 计数器在比较器 A 比较匹配发生时被清除;此位设为低,计数器在比较器 P 比 较匹配发生或计数器溢出时被清除。计数器溢出清除的方法仅在 CCRP 被清除 为 0 时才能生效。STCCLR 位在 PWM 输出模式、单脉冲输出模式或输入捕捉 模式时未使用。 STMDL 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R 0 6 D6 R 0 5 D5 R 0 4 D4 R 0 3 D3 R 0 2 D2 R 0 1 D1 R 0 0 D0 R 0 3 D11 R 0 2 D10 R 0 1 D9 R 0 0 D8 R 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 3 D11 R/W 0 2 D10 R/W 0 1 D9 R/W 0 0 D8 R/W 0 STM 计数器低字节寄存器 bit7~bit0 STM 16-bit 计数器 bit7~bit0 STMDH 寄存器 Bit Name R/W POR Bit 7~0 7 D15 R 0 6 D14 R 0 5 D13 R 0 4 D12 R 0 STM 计数器高字节寄存器 bit7~bit0 STM 16-bit 计数器 bit15~bit8 STMAL 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 STM CCRA 低字节寄存器 bit7~bit0 STM 16-bit CCRA bit7~bit0 STMAH 寄存器 Bit Name R/W POR Bit 7~0 Rev. 1.10 7 D15 R/W 0 6 D14 R/W 0 5 D13 R/W 0 4 D12 R/W 0 STM CCRA 高字节寄存器 bit7~bit0 STM 16-bit CCRA bit15~bit8 97 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 STMRP 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 STM CCRP 寄存器 bit7~bit0 STM CCRP 8-bit 寄存器,与 STM 计数器 bit15~bit8 比较。 比较器 P 匹配周期 0:65536 个 STM 时钟周期 1~255:(1~255) ×256 个 STM 时钟周期 此八位设定内部 CCRP 8-bit 寄存器的值,然后与内部计数器的高八位进行比较。 如果 STCCLR 位设为 0 时,此比较结果可用于清零内部计数器。STCCLR 位设 为低,CCRP 比较匹配结果将重置内部计数器。由于 CCRP 只与计数器高八位 比较,比较结果是 256 时钟周期的倍数。CCRP 被清零时,实际上会使得计数 器在最大值溢出。 标准型 TM 工作模式 标准型 TM 有五种工作模式,即比较匹配输出模式,PWM 输出模式,单脉冲 输出模式,捕捉输入模式或定时 / 计数器模式。通过设置 STMC1 寄存器的 STM1 和 STM0 位选择任意模式。 比较匹配输出模式 为 使 TM 工 作 在 此 模 式,STMC1 寄 存 器 中 的 STM1 和 STM0 位 需 要 设 置 为 “00”。当工作在该模式,一旦计数器使能并开始计数,有三种方法来清零, 分别是:计数器溢出,比较器 A 比较匹配发生和比较器 P 比较匹配发生。当 STCCLR 位为低,有两种方法清除计数器。一种是比较器 P 比较匹配发生,另 一种是 CCRP 所有位设置为零并使得计数器溢出。此时,比较器 A 和比较器 P 的请求标志位 STMAF 和 STMPF 将分别置位。 如果 STMC1 寄存器的 STCCLR 位设置为高,当比较器 A 比较匹配发生时计数 器 被 清 零。 此 时, 即 使 CCRP 寄 存 器 的 值 小 于 CCRA 寄 存 器 的 值, 仅 产 生 STMAF 中断请求标志。所以当 STCCLR 为高时,不会产生 STMPF 中断请求标 志。在比较匹配输出模式下,CCRA 不能设为“0”。 如果 CCRA 位都清除为零,当计数器的值达到 16 位最大值 FFFFH 时将溢出, 但此时不会产生 STMAF 中断请求标志。 正如该模式名所言,当比较匹配发生后,STM 输出脚状态改变。当比较器 A 比 较匹配发生后 STMAF 标志产生时,STM 输出脚状态改变。比较器 P 比较匹配 发生时产生的 STMPF 标志不影响 STM 输出脚。STM 输出脚状态改变方式由 STMC1 寄 存 器 中 STIO1 和 STIO0 位 决 定。 当 比 较 器 A 比 较 匹 配 发 生 时, STIO1 和 STIO0 位决定 STM 输出脚输出高、低或翻转当前状态。STM 输出脚 初 始 值, 在 STON 位 由 低 到 高 电 平 的 变 化 后 通 过 STOC 位 设 置。 注 意, 若 STIO1 和 STIO0 位同时为 0 时,引脚输出不变。 Rev. 1.10 98 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter overflow Counter Value 0xFFFF STCCLR = 0; STM [1:0] = 00 CCRP > 0 Counter cleared by CCRP value CCRP=0 CCRP > 0 Counter Restart Resume CCRP Pause CCRA Stop Time STON STPAU STPOL CCRP Int. flag STMPF CCRA Int. flag STMAF STM O/P Pin Output pin set to initial Level Low if STOC=0 Output not affected by STMAF flag. Remains High until reset by STON bit Output Toggle with STMAF flag Here STIO [1:0] = 11 Toggle Output select Note STIO [1:0] = 10 Active High Output select Output Inverts when STPOL is high Output Pin Reset to Initial value Output controlled by other pin-shared function 比较匹配输出模式 – STCCLR=0 注:1. STCCLR=0,比较器 P 匹配将清除计数器 2. STM 输出脚仅由 STMAF 标志位控制 3. 在 STON 上升沿 STM 输出脚复位至初始值 Rev. 1.10 99 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value STCCLR = 1; STM [1:0] = 00 CCRA = 0 Counter overflow CCRA > 0 Counter cleared by CCRA value 0xFFFF CCRA=0 Resume CCRA Pause Stop Counter Restart CCRP Time STON STPAU STPOL No STMAF flag generated on CCRA overflow CCRA Int. flag STMAF CCRP Int. flag STMPF STMPF not generated Output does not change STM O/P Pin Output pin set to initial Level Low if STOC=0 Output not affected by STMAF flag. Remains High until reset by STON bit Output Toggle with STMAF flag Here STIO [1:0] = 11 Toggle Output select Note STIO [1:0] = 10 Active High Output select Output Inverts when STPOL is high Output Pin Reset to Initial value Output controlled by other pin-shared function 比较匹配输出模式 – STCCLR=1 注:1. STCCLR=1,比较器 A 匹配将清除计数器 2. STM 输出脚仅由 STMAF 标志位控制 3. 在 STON 上升沿 TM 输出脚复位至初始值 4. 当 STCCLR=1 时,不会产生 STMPF 标志 Rev. 1.10 100 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 定时 / 计数器模式 为使 STM 工作在此模式,STMC1 寄存器中的 STM1 和 STM0 位需要设置为 “11”。定时 / 计数器模式与比较输出模式操作方式相同,并产生同样的中断 请求标志。不同的是,在定时 / 计数器模式下 STM 输出脚未使用。因此,比较 匹配输出模式中的描述和时序图可以适用于此功能。该模式中未使用的 STM 输 出脚用作普通 I/O 脚或其它功能。 PWM 输出模式 为使 STM 工作在此模式,STMC1 寄存器中的 STM1 和 STM0 位需要设置为 “10”,且 STIO1 和 STIO0 位也需要设置为“10”。STM 的 PWM 功能在马 达控制,加热控制,照明控制等方面十分有用。给 STM 输出脚提供一个频率固 定但占空比可调的信号,将产生一个有效值等于 DC 均方根的 AC 方波。 由于 PWM 波形的周期和占空比可调,其波形的选择就较为灵活。在 PWM 输 出模式中,STCCLR 位不影响 PWM 周期。CCRA 和 CCRP 寄存器决定 PWM 波形,一个用来清除内部计数器并控制 PWM 波形的频率,另一个用来控制占 空比。哪个寄存器控制频率或占空比取决于 STMC1 寄存器的 STDPX 位。所以 PWM 波形由 CCRA 和 CCRP 寄存器共同决定。 当比较器 A 或比较器 P 比较匹配发生时,将产生 CCRA 或 CCRP 中断标志。 STMC1 寄存器中的 STOC 位决定 PWM 波形的极性,STIO1 和 STIO0 位使能 PWM 输出或将 STM 输出脚置为逻辑高或逻辑低。STPOL 位对 PWM 输出波形 的极性取反。 ● 16-bit STM,PWM 输出模式,边沿对齐模式,STDPX=0 CCRP Period Duty 1~255 CCRP×256 0 65536 CCRA 若 fSYS=16MHz,STM 时钟源选择 fSYS/4,CCRP=2,CCRA=128, STM PWM 输出频率 =(fSYS/4)/(2×256)= fSYS/2048=8kHz,duty=128/(2×256)=25% 若由 CCRA 寄存器定义的 Duty 值等于或大于 Period 值,PWM 输出占空比为 100% ● 16-bit STM,PWM 输出模式,边沿对齐模式,STDPX=1 CCRP Period Duty 1~255 0 CCRA CCRP×256 65536 PWM 的输出周期由 CCRA 寄存器的值与 STM 的时钟共同决定,PWM 的占空 比由 CCRP×256(除了 CCRP 为“0”外)的值决定。 Rev. 1.10 101 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value STDPX = 0; STM [1:0] = 10 Counter cleared by CCRP Counter Reset when STON returns high CCRP Pause Resume Counter Stop if STON bit low CCRA Time STON STPAU STPOL CCRA Int. flag STMAF CCRP Int. flag STMPF STM O/P Pin (STOC=1) STM O/P Pin (STOC=0) PWM Duty Cycle set by CCRA PWM Period set by CCRP PWM resumes operation Output controlled by other pinOutput Inverts shared function when STPOL = 1 PWM 输出模式 – STDPX=0 注:1. STDPX=0,计数器由 CCRP 清除 2. 计数器清零并设置 PWM 周期 3. 即使当 STIO[1:0]=00 或 01,内部 PWM 功能不变 4. STCCLR 位对 PWM 操作无影响 Rev. 1.10 102 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value STDPX = 1; STM [1:0] = 10 Counter cleared by CCRA Counter Reset when STON returns high CCRA Pause Resume Counter Stop if STON bit low CCRP Time STON STPAU STPOL CCRP Int. flag STMPF CCRA Int. flag STMAF STM O/P Pin (STOC=1) STM O/P Pin (STOC=0) PWM Duty Cycle set by CCRP PWM Period set by CCRA PWM resumes operation Output controlled by other Output Inverts pin-shared function when STPOL = 1 PWM 输出模式 – STDPX=1 注:1. STDPX=1,计数器由 CCRA 清除 2. 计数器清零设置 PWM 周期 3. 即使当 STIO[1:0]=00 或 01,内部 PWM 功能不变 4. STCCLR 对 PWM 操作无影响 Rev. 1.10 103 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 单脉冲输出模式 为使 STM 工作在此模式,STMC1 寄存器中的 STM1 和 STM0 位需要设置为 “10”,同时 STIO1 和 STIO0 位需要设置为“11”。正如模式名所言,单脉冲 输出模式,在 STM 输出脚将产生一个脉冲输出。 脉冲输出可以通过应用程序控制 STON 位由低到高的转变来触发。而处于单脉 冲输出模式时,STON 位可在 STCK 脚发生有效边沿跳转时自动由低转变为高, 进而开始单脉冲输出。当 STON 位转变为高电平时,计数器将开始运行,并产 生脉冲前沿。当脉冲有效时 STON 位保持高电平。通过应用程序使 STON 位清 零或比较器 A 比较匹配发生时,产生脉冲后沿。 然而,比较器 A 比较匹配发生时,会自动清除 STON 位并产生单脉冲输出边沿 跳转。CCRA 的值通过这种方式控制脉冲宽度。比较器 A 比较匹配发生时,也 会产生 STM 中断。STON 位在计数器重启时会发生由低到高的转变,此时计数 器才复位至零。在单脉冲输出模式中,CCRP 寄存器,STCCLR 和 STDPX 位未 使用。 S/W Command SET“STON” or STCK Pin Transition CCRA Leading Edge CCRA Trailing Edge STON bit 0à1 STON bit 1à0 S/W Command CLR“STON” or CCRA Compare Match STP Output Pin Pulse Width = CCRA Value 单脉冲产生示意图 Rev. 1.10 104 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value STM [1:0] = 10 ; STIO [1:0] = 11 Counter stopped by CCRA Counter Reset when STON returns high CCRA Pause Counter Stops by software Resume CCRP Time STON Software Trigger Cleared by CCRA match Auto. set by STCK pin STCK pin Software Trigger Software Trigger Software Clear Software Trigger STCK pin Trigger STPAU STPOL No CCRP Interrupts generated CCRP Int. Flag STMPF CCRA Int. Flag STMAF STM O/P Pin (STOC=1) STM O/P Pin (STOC=0) Output Inverts when STPOL = 1 Pulse Width set by CCRA 单脉冲输出模式 注:1. 通过 CCRA 匹配停止计数器 2. CCRP 未使用 3. 通过 STCK 脚或设置 STON 位为高来触发脉冲 4. STCK 脚有效沿会自动置高 STON 位 5. 单脉冲输出模式中,STIO[1:0] 需置位“11”,且不能更改。 Rev. 1.10 105 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 捕捉输入模式 为使 STM 工作在此模式,STMC1 寄存器中的 STM1 和 STM0 位需要设置为 “01”。此模式使能外部信号捕捉并保存内部计数器当前值,因此被用于诸如 脉冲宽度测量的应用中。STPI 脚上的外部信号,通过设置 STMC1 寄存器的 STIO1 和 STIO0 位选择有效边沿类型,即上升沿,下降沿或双沿有效。通过应 用程序将 STON 位由低置为高时,计数器启动。 当 STPI 脚出现有效边沿转换时,计数器当前值被锁存到 CCRA 寄存器,并产 生 STM 中断。无论 STPI 引脚发生哪种边沿转换,计数器继续工作直到 STON 位发生下降沿跳变。当 CCRP 比较匹配发生时计数器复位至零;通过这种方式 CCRP 的值可控制计数器的最大值。当比较器 P CCRP 比较匹配发生时,也会 产生 STM 中断。记录 CCRP 溢出中断信号的值可以测量长脉宽。通过设置 STIO1 和 STIO0 位选择 STPI 引脚为上升沿,下降沿或双沿有效。如果 STIO1 和 STIO0 都设置为高,无论 STPI 引脚发生哪种边沿转换都不会产生捕捉操作, 但计数器仍会继续运行。STCCLR 和 STDPX 位在此模式中未使用。 Rev. 1.10 106 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value STM [1:0] = 01 Counter cleared by CCRP Counter Stop Counter Reset CCRP Resume YY Pause XX Time STON STPAU Active edge Active edge Active edge STM Capture Pin STPI CCRA Int. Flag STMAF CCRP Int. Flag STMPF XX CCRA Value STIO [1:0] Value 00 – Rising edge YY 01 – Falling edge XX 10 – Both edges YY 11 – Disable Capture 捕捉输入模式 注:1. STM1,STM0=01 并通过 STIO1 和 STIO0 位设置有效边沿 2. STM 捕捉输入脚的有效边沿将计数器的值转移到 CCRA 中 3. STCCLR 位未使用 4. 无输出功能 – STOC 和 STPOL 位未使用 5. 计数器值由 CCRP 决定,在 CCRP 为“0”时,计数器计数值可达最大 Rev. 1.10 107 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 周期型 TM – PTM 周期型 TM 包括 5 种工作模式,即比较匹配输出、定时 / 事件计数器、捕捉输入、 单脉冲输出和 PWM 输出模式。周期型 TM 由两个外部输入脚控制并驱动两个 外部输出脚。 PTM 核心 10-bit PTM PTM 输入引脚 PTCK,PTPI PTM 输出引脚 PTP,PTPB CCRP fSYS/4 fSYS fH/16 fH/64 fSUB fSUB 001 PTMPF Interrupt 011 10-bit Count-up Counter 100 101 PTOC b0~b9 010 110 PTCK Comparator P Match 10-bit Comparator P 000 PTON PTPAU 111 PTCK2~PTCK0 Counter Clear PTCCLR b0~b9 10-bit Comparator A Output Control Polarity Control Pin Control PTM1, PTM0 PTIO1, PTIO0 PTPOL PxSn 0 1 Comparator A Match CCRA PTIO1, PTIO0 PTCAPTS Edge Detector 0 1 PTP PTPB PTMAF Interrupt PxSn IFSi Pin Control PTPI 周期型 TM 方框图 周期型 TM 操作 周期型 TM 是 10 位宽度。周期型 TM 核心是一个由用户选择的内部或外部时钟 源驱动的 10 位向上计数器,它还包括两个内部比较器即比较器 A 和比较器 P。 这两个比较器将计数器的值与 CCRA 和 CCRP 寄存器中的值进行比较。CCRP 和 CCRA 是 10 位的,与计数器的所有位比较。 通过应用程序改变 10 位计数器值的唯一方法是使 PTON 位发生上升沿跳变清 除计数器。此外,计数器溢出或比较匹配也会自动清除计数器。上述条件发生 时,通常情况会产生 PTM 中断信号。周期型 TM 可工作在不同的模式,可由包 括来自输入脚的不同时钟源驱动,也可以控制输出脚。所有工作模式的设定都 是通过设置相关寄存器来实现的。 Rev. 1.10 108 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 周期型 TM 寄存器介绍 周期型 TM 的所有操作由一系列寄存器控制。一对只读寄存器用来存放 10 位计 数器的值,两对读 / 写寄存器存放 10 位 CCRA 和 CCRP 的值。剩下两个控制寄 存器用来设置不同的操作和控制模式。 位 寄存器 名称 7 6 5 4 3 2 1 0 PTMC0 PTPAU PTCK2 PTCK1 PTCK0 PTON ─ ─ ─ PTMC1 PTM1 PTM0 PTIO1 PTIO0 PTOC PTPOL PTCAPTS PTCCLR PTMDL D7 D6 D5 D4 D3 D2 D1 D0 PTMDH ─ ─ ─ ─ ─ ─ D9 D8 PTMAL D7 D6 D5 D4 D3 D2 D1 D0 PTMAH ─ ─ ─ ─ ─ ─ D9 D8 PTMRPL PTRP7 PTRP6 PTRP5 PTRP4 PTRP3 PTRP2 PTRP1 PTRP0 PTMRPH ─ ─ ─ ─ ─ ─ PTRP9 PTRP8 10-bit 周期型 TM 寄存器列表 PTMC0 寄存器 Bit Name R/W POR Bit 7 Bit 6~4 Rev. 1.10 7 6 5 4 PTPAU PTCK2 PTCK1 PTCK0 R/W R/W R/W R/W 0 0 0 0 3 PTON R/W 0 2 ─ ─ ─ 1 ─ ─ ─ 0 ─ ─ ─ PTPAU:PTM 计数器暂停控制位 0:运行 1:暂停 通过设置此位为高可使计数器暂停,清零此位恢复正常计数器操作。当处于暂 停条件时,PTM 保持上电状态并继续耗电。当此位由低到高转变时,计数器将 保留其剩余值,直到此位再次改变为低电平,并从此值开始继续计数。 PTCK2~PTCK0:选择 PTM 计数时钟位 000:fSYS/4 001:fSYS 010:fH/16 011:fH/64 100:fSUB 101:fSUB 110:PTCK 上升沿 111:PTCK 下降沿 此三位用于选择 PTM 的时钟源。外部引脚时钟源能被选择在上升沿或下降沿有效。 fSYS 是系统时钟,fH 和 fSUB 是其它的内部时钟源,细节方面请参考振荡器章节 Bit 3 PTON:PTM 计数器 On/Off 控制位 0:Off 1:On 此位控制 PTM 的总开关功能。设置此位为高则使能计数器使其运行,清零此位 则除能 PTM。清零此位将停止计数器并关闭 PTM 减少耗电。当此位经由低到 高转变时,内部计数器将复位清零;当此位经由高到低转换时,内部计数器将 保持其剩余值,直到此位再次改变为高电平。 若 PTM 处于比较匹配输出模式时,当 PTON 位经由低到高转换时,PTM 输出 脚将复位至 PTOC 位指定的初始值。 Bit 2~0 未定义,读为“0” 109 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 PTMC1 寄存器 Bit Name R/W POR Rev. 1.10 7 PTM1 R/W 0 6 PTM0 R/W 0 5 PTIO1 R/W 0 4 PTIO0 R/W 0 3 PTOC R/W 0 2 1 0 PTPOL PTCAPTS PTCCLR R/W R/W R/W 0 0 0 Bit 7~6 PTM1~PTM0:PTM 工作模式选择位 00:比较匹配输出模式 01:捕捉输入模式 10:PWM 输出模式或单脉冲输出模式 11:定时 / 计数器模式 这两位设置 PTM 需要的工作模式。为了确保操作可靠,PTM 应在 PTM1 和 PTM0 位有任何改变前先关掉。在定时 / 计数器模式,PTM 输出脚状态未定义。 Bit 5~4 PTIO1~PTIO0:PTM 引脚功能选择位 比较匹配输出模式 00:无变化 01:输出低 10:输出高 11:输出翻转 PWM 输出模式 / 单脉冲输出模式 00:PWM 输出无效状态 01:PWM 输出有效状态 10:PWM 输出 11:单脉冲输出 捕捉输入模式 00:在 PTPI 或 PTCK 上升沿输入捕捉 01:在 PTPI 或 PTCK 下降沿输入捕捉 10:在 PTPI 或 PTCK 双沿输入捕捉 11:输入捕捉除能 定时 / 计数器模式 未使用 此两位用于决定在一定条件达到时 PTM 输出如何改变状态。这两位值的选择取 决于 PTM 运行在哪种模式下。 在比较匹配输出模式下,PTIO1 和 PTIO0 位决定当从比较器 A 比较匹配输出发 生时 PTM 输出脚如何改变状态。当从比较器 A 比较匹配输出发生时 PTM 输出 脚能设为切换高、切换低或翻转当前状态。若此两位同时为 0 时,这个输出将 不会改变。PTM 输出脚的初始值通过 PTMC1 寄存器的 PTOC 位设置取得。注意, 由 PTIO1 和 PTIO0 位得到的输出电平必须与通过 PTOC 位设置的初始值不同, 否则当比较匹配发生时,PTM 输出脚将不会发生变化。在 PTM 输出脚改变状 态后,通过 PTON 位由低到高电平的转换复位至初始值。 在 PWM 输出模式,PTIO1 和 PTIO0 用于决定比较匹配条件发生时怎样改变 PTM 输出脚的状态。PWM 输出功能通过这两位的变化进行更新。仅在 PTM 关 闭时改变 PTIO1 和 PTIO0 位的值是很有必要的。若在 PTM 运行时改变 PTIO1 和 PTIO0 的值,PWM 输出的值是无法预料的。 110 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 3 PTOC:PTM PTP 输出控制位 比较匹配输出模式 0:初始低 1:初始高 PWM 输出模式 / 单脉冲输出模式 0:低有效 1:高有效 这是 PTM 输出脚输出控制位。它取决于 PTM 此时正运行于比较匹配输出模式 还是 PWM 输出模式 / 单脉冲输出模式。若 PTM 处于定时 / 计数器模式,则其 不受影响。在比较匹配输出模式时,比较匹配发生前其决定 PTM 输出脚的逻辑 电平值。在 PWM 输出模式时,其决定 PWM 信号是高有效还是低有效。 Bit 2 PTPOL:PTM PTP 输出极性控制位 0:同相 1:反相 此位控制 PTP 输出脚的极性。此位为高时 PTM 输出脚反相,为低时 PTM 输出 脚同相。若 PTM 处于定时 / 计数器模式时其不受影响。 Bit 1 PTCAPTS:选择 PTM 捕捉触发源 0:来自 PTPI 引脚 1:来自 PTCK 引脚 Bit 0 PTCCLR:选择 PTM 计数器清零条件位 0:PTM 比较器 P 匹配 1:PTM 比较器 A 匹配 此位用于选择清除计数器的方法。周期型 PTM 包括两个比较器 - 比较器 A 和比 较器 P,两者都可以用作清除内部计数器。PTCCLR 位设为高,计数器在比较 器 A 比较匹配发生时被清除;此位设为低,计数器在比较器 P 比较匹配发生或 计数器溢出时被清除。计数器溢出清除的方法仅在 CCRP 被清除为 0 时才能生 效。PTCCLR 位在 PWM 输出模式、单脉冲输出或输入捕捉模式时未使用。 PTMDL 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R 0 6 D6 R 0 5 D5 R 0 4 D4 R 0 3 D3 R 0 2 D2 R 0 1 D1 R 0 0 D0 R 0 3 ─ ─ ─ 2 ─ ─ ─ 1 D9 R 0 0 D8 R 0 PTM 计数器低字节寄存器 bit 7 ~ bit 0 PTM 10-bit 计数器 bit 7 ~ bit 0 PTMDH 寄存器 Bit Name R/W POR Rev. 1.10 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ Bit 7~2 未定义,读为“0” Bit 1~0 PTM 计数器高字节寄存器 bit 1 ~ bit 0 PTM 10-bit 计数器 bit 9 ~ bit 8 111 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 PTMAL 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 3 ─ ─ ─ 2 ─ ─ ─ 1 D9 R/W 0 0 D8 R/W 0 3 PTRP3 R/W 0 2 PTRP2 R/W 0 1 PTRP1 R/W 0 0 3 ─ ─ ─ 2 ─ ─ ─ 1 PTRP9 R/W 0 PTM CCRA 低字节寄存器 bit 7 ~ bit 0 PTM 10-bit CCRA bit 7 ~ bit 0 PTMAH 寄存器 Bit Name R/W POR 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ Bit 7~2 未定义,读为“0” Bit 1~0 PTM CCRA 高字节寄存器 bit 1 ~ bit 0 PTM 10-bit CCRA bit 9 ~ bit 8 PTMRPL 寄存器 Bit Name R/W POR Bit 7~0 7 PTRP7 R/W 0 6 PTRP6 R/W 0 5 PTRP5 R/W 0 4 PTRP4 R/W 0 PTRP0 R/W 0 PTM CCRP 低字节寄存器 bit 7 ~ bit 0 PTM 10-bit CCRP bit 7 ~ bit 0 PTMRPH 寄存器 Bit Name R/W POR Rev. 1.10 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ Bit 7~2 未定义,读为“0” Bit 1~0 PTM CCRP 高字节寄存器 bit 1 ~ bit 0 PTM 10-bit CCRP bit 9 ~ bit 8 112 0 PTRP8 R/W 0 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 周期型 TM 工作模式 周期型 TM 有五种工作模式,即比较匹配输出模式、PWM 输出模式、单脉冲 输出模式、捕捉输入模式或定时 / 计数器模式。通过设置 PTMC1 寄存器的 PTM1 和 PTM0 位选择任意模式。 比较匹配输出模式 为使 PTM 工作在此模式,PTMC1 寄存器的 PTM1 和 PTM0 位需要设置为“00”。 当工作在该模式,一旦计数器使能并开始计数,有三种方法来清零,分别是: 计数器溢出,比较器 A 比较匹配发生和比较器 P 比较匹配发生。当 PTCCLR 位 为低,有两种方法清除计数器。一种是比较器 P 比较匹配发生,另一种是 CCRP 所有位设置为零并使得计数器溢出。此时,比较器 A 和比较器 P 的请求 标志位 PTMAF 和 PTMPF 将分别置起。 如果 PTMC1 寄存器的 PTCCLR 位设置为高,当比较器 A 比较匹配发生时计数 器被清零。此时,即使 CCRP 寄存器的值小于 CCRA 寄存器的值,仅 PTMAF 中断请求标志产生。所以当 PTCCLR 为高时,不会产生 PTMPF 中断请求标志。 在比较匹配输出模式中,CCRA 寄存器值不能设为“0”。 正如该模式名所言,当比较匹配发生后,PTM 输出脚状态改变。当比较器 A 比 较匹配发生后 PTMAF 中断请求标志产生时,PTM 输出脚状态改变。比较器 P 比较匹配发生时产生的 PTMPF 标志不影响 PTM 输出脚。PTM 输出脚状态改变 方式由 PTMC1 寄存器中 PTIO1 和 PTIO0 位决定。当比较器 A 比较匹配发生时, PTIO1 和 PTIO0 位决定 PTM 输出脚输出高,低或翻转当前状态。PTM 输出脚 初 始 值, 在 PTON 位 由 低 到 高 电 平 的 变 化 后 通 过 PTOC 位 设 置。 注 意, 若 PTIO1 和 PTIO0 位同时为 0 时,引脚输出不变。 Rev. 1.10 113 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value Counter overflow CCRP > 0 Counter cleared by CCRP value CCRP=0 0x3FF CCRP > 0 PTCCLR = 0; PTM[1:0] = 00 Counter Restart Resume CCRP Pause CCRA Stop Time PTON PTPAU PTPOL CCRP Int. Flag PTMPF CCRA Int. Flag PTMAF PTM O/P Pin Output pin set to initial Level Low if PTOC=0 Output not affected by PTMAF flag. Remains High until reset by PTON bit Output Toggle with PTMAF flag Here PTIO [1:0] = 11 Toggle Output select Note PTIO [1:0] = 10 Active High Output select Output Inverts when PTPOL is high Output Pin Reset to Initial value Output controlled by other pin-shared function 比较器匹配输出模式 – PTCCLR = 0 注:1 PTCCLR=0,比较器 P 匹配将清除计数器 2. PTM 输出脚仅由 PTMAF 标志位控制 3. 在 PTON 上升沿 PTM 输出脚复位至初始值 Rev. 1.10 114 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value PTCCLR = 1; PTM[1:0] = 00 CCRA = 0 Counter overflow CCRA > 0 Counter cleared by CCRA value 0x3FF CCRA=0 Resume CCRA Stop Pause Counter Restart CCRP Time PTON PTPAU PTPOL No PTMAF flag generated on CCRA overflow CCRA Int. Flag PTMAF CCRP Int. Flag PTMPF PTMPF not generated Output does not change PTM O/P Pin Output pin set to initial Level Low if PTOC=0 Output not affected by PTMAF flag. Remains High until reset by PTON bit Output Toggle with PTMAF flag Here PTIO [1:0] = 11 Toggle Output select Note PTIO [1:0] = 10 Active High Output select Output Inverts when PTPOL is high Output Pin Reset to Initial value Output controlled by other pin-shared function 比较器匹配输出模式 – PTCCLR = 1 注:1. PTCCLR=1,比较器 P 匹配将清除计数器 2. PTM 输出脚仅由 PTMAF 标志位控制 3. 在 PTON 上升沿 PTM 输出脚复位至初始值 4. 当 PTCCLR=1 时,不会产生 PTMPF 标志位 Rev. 1.10 115 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 定时 / 计数器模式 为使 PTM 工作在此模式,PTMC1 寄存器的 PTM1 和 PTM0 位需要设置为“11”。 定时 / 计数器模式与比较输出模式操作方式相同,并产生同样的中断请求标志。 不同的是,在定时 / 计数器模式下 PTM 输出脚未使用。因此,比较匹配输出模 式中的描述和时序图可以适用于此功能。该模式中未使用的 PTM 输出脚用作普 通 I/O 脚或其它功能。 PWM 输出模式 为使 PTM 工作在此模式,PTMC1 寄存器的 PTM1 和 PTM0 位需要设置为“10”, 且 PTIO1 和 PTIO0 位也需要设置为“10”。PTM 的 PWM 功能在马达控制, 加热控制,照明控制等方面十分有用。给 PTM 输出脚提供一个频率固定但占空 比可调的信号,将产生一个有效值等于 DC 均方根的 AC 方波。 由于 PWM 波形的周期和占空比可调,其波形的选择就较为灵活。在 PWM 模 式 中,PTCCLR 位 对 PWM 周 期 无 影 响。CCRP 和 CCRA 寄 存 器 都 用 于 控 制 PWM 方波。CCRP 寄存器通过清除内部计数从而控制 PWM 周期,CCRA 寄存 器设置 PWM 的占空比。PWM 波形的周期和占空比由 CCRP 和 CCRA 寄存器 的值控制。 当比较器 A 或比较器 P 比较匹配发生时,CCRA 和 CCRP 中断标志位分别产生。 PTMC1 寄 存 器 的 PTOC 位 选 择 PWM 波 形 的 极 性,PTIO1 和 PTIO0 位 使 能 PWM 输出或强制 PTM 输出脚为高电平或低电平。PTPOL 位用于 PWM 输出波 形的极性反相控制。 ● 10-bit PTM,PWM 输出模式,边沿对齐 CCRP Period Duty 1~1023 1~1023 0 1024 CCRA 若 fSYS=16MHz,PTM 时钟源选择 fSYS/4,CCRP=512 且 CCRA=128, PTM PWM 输出频率 =(fSYS/4) / 512=fSYS/2048= 8kHz,duty=128/512 =25%, 若由 CCRA 寄存器定义的 Duty 值等于或大于 Period 值,PWM 输出占空比为 100%。 Rev. 1.10 116 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value PTM[1:0] = 10 Counter cleared by CCRP Counter Reset when PTON returns high CCRP Pause Resume Counter Stop if PTON bit low CCRA Time PTON PTPAU PTPOL CCRA Int. Flag PTMAF CCRP Int. Flag PTMPF PTM O/P Pin (PTOC=1) PTM O/P Pin (PTOC=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 PTPOL = 1 PWM 输出模式 注:1. 计数器由 CCRP 清除 2. 计数器清零设置 PWM 周期 3. 当 PTIO[1:0]=00 或 01,PWM 功能不变 4. PTCCLR 位对 PWM 功能无影响 Rev. 1.10 117 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 单脉冲输出模式 为使 PTM 工作在此模式,PTMC1 寄存器中的 PTM1 和 PTM0 位需要设置为 “10”,并且相应的 PTIO1 和 PTIO0 需要设置为“11”。正如模式名所言,单 脉冲输出模式,在 PTM 输出脚将产生一个脉冲输出。 通过应用程序控制 PTON 位由低到高的转变来触发脉冲前沿输出。而处于单脉 冲模式时,PTON 位可在 PTCK 脚发生有效边沿跳转时自动由低转变为高,进 而开始单脉冲输出。当 PTON 位转变为高电平时,计数器将开始运行,并产生 脉冲前沿。当脉冲有效时,PTON 位保持高电平。通过应用程序将 PTON 位清 零或比较器 A 比较匹配发生时,产生脉冲后沿。 而比较器 A 比较匹配发生时,会自动清除 PTON 位并产生单脉冲输出边沿跳变。 CCRA 的值通过这种方式控制脉冲宽度。比较器 A 比较匹配发生时,也会产生 PTM 中断。PTON 位在计数器重启时会发生由低到高的转变,此时计数器才复 位至零。在单脉冲模式中,CCRP 寄存器和 PTCCLR 位未使用。 S/W Command SET“PTON” or PTCK Pin Transition CCRA Leading Edge CCRA Trailing Edge PTON bit 0à1 PTON bit 1à0 S/W Command CLR“PTON” or CCRA Compare Match PTP Output Pin Pulse Width = CCRA Value 单脉冲产生示意图 Rev. 1.10 118 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value PTM[1:0] = 10 ; PTIO[1:0] = 11 Counter stopped by CCRA Counter Reset when PTON returns high CCRA Pause Counter Stops by software Resume CCRP Time PTON Software Trigger Auto. set by PTCK pin Software Trigger Cleared by CCRA match PTCK pin Software Trigger Software Software Trigger Clear PTCK pin Trigger PTPAU PTPOL CCRP Int. Flag PTMPF No CCRP Interrupts generated CCRA Int. Flag PTMAF PTM O/P Pin (PTOC=1) PTM O/P Pin (PTOC=0) Output Inverts when PTPOL = 1 Pulse Width set by CCRA 单脉冲模式 注:1. 通过 CCRA 匹配停止计数器 2. CCRP 未使用 3. 通过 PTCK 脚或设置 PTON 位为高来触发脉冲 4. PTCK 脚有效沿会自动置位 PTON 5. 单脉冲模式中,PTIO[1:0] 需置位“11”,且不能更改。 Rev. 1.10 119 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 捕捉输入模式 为使 PTM 工作在此模式,PTMC1 寄存器的 PTM1 和 PTM0 位需要设置为“01”。 此模式使能外部信号捕捉并保存内部计数器当前值,因此被用于诸如脉冲宽度 测量的应用中。PTPI 或 PTCK 引脚上的外部信号,通过设置 PTMC1 寄存器的 PTCAPTS 位选择。可通过设置 PTMC1 寄存器的 PTIO1 和 PTIO0 位选择有效 边沿类型,即上升沿,下降沿或双沿有效。通过应用程序将 PTON 位由低到高 转变时,计数器启动。 当 PTPI 或 PTCK 引脚出现有效边沿转换时,计数器当前值被锁存到 CCRA 寄 存器,并产生 PTM 中断。无论 PTPI 或 PTCK 引脚发生哪种边沿转换,计数器 将继续工作直到 PTON 位发生下降沿跳变。当 CCRP 比较匹配发生时计数器复 位至零;CCRP 的值通过这种方式控制计数器的最大值。当比较器 P CCRP 比 较匹配发生时,也会产生 PTM 中断。记录 CCRP 溢出中断信号的值可以测量 长脉宽。通过设置 PTIO1 和 PTIO0 位选择 PTPI 或 PTCK 引脚为上升沿,下降 沿或双沿有效。如果 PTIO1 和 PTIO0 位都设置为高,无论 PTPI 或 PTCK 引脚 发生哪种边沿转换都不会产生捕捉操作,但计数器仍会继续运行。 当 PTPI 或 PTCK 引脚与其它功能共用,PTM 工作在输入捕捉模式时需多加注 意。这是因为如果引脚被设为输出,那么该引脚上的任何电平转变都可能执行 输入捕捉操作。PTCCLR,PTOC 和 PTPOL 位在此模式中未使用。 Rev. 1.10 120 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Counter Value PTM[1:0] = 01 Counter cleared by CCRP Counter Stop Counter Reset CCRP YY Resume Pause XX Time PTON PTPAU Active edge Active edge Active edge PTM Capture Pin PTPI or PTCK CCRA Int. Flag PTMAF CCRP Int. Flag PTMPF CCRA Value PTIO [1:0] Value XX 00 - Rising edge YY XX 01 - Falling edge 10 - Both edges YY 11 - Disable Capture 捕捉输入模式 注:1. PTM[1:0]=01 并通过 PTIO[1:0] 位设置有效边沿 2. PTM 捕捉输入脚的有效边沿将计数器的值转移到 CCRA 中 3. PTCCLR 位未使用 4. 无输出功能 – PTOC 和 PTPOL 位未使用 5. 计数器值由 CCRP 决定,在 CCRP 为“0”时,计数器计数值可达最大 Rev. 1.10 121 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 A/D 转换器 对于大多数电子系统而言,处理现实世界的模拟信号是共同的需求。为了完全 由单片机来处理这些信号,首先需要通过 A/D 转换器将模拟信号转换成数字信 号。将 A/D 转换器电路集成入单片机,可有效的减少外部器件,随之而来,具 有降低成本和减少器件空间需求的优势。 A/D 转换器简介 此系列单片机包含一个多通道的 A/D 转换器,它们可以直接接入外部模拟信号 (来自传感器或其它控制信号)或内部模拟信号(电源电压或参考电压信号) 并直接将这些信号转换成 12 位的数字量。选择转换外部或内部模拟信号由 SAINS3~SAINS0 位和 SACS3~SACS0 位共同控制。注意若选择内部信号作为 A/D 转换器输入,外部输入通道的连接将自动断开,以防止错误发生。关于 A/D 转换器输入信号的详细描述可参考“A/D 转换寄存器介绍”和“A/D 转换器输 入信号”章节进行了解。 外部输入通道 内部模拟信号 实际输入信号选择位 SAINS3~SAINS0, 16: AN0~AN15 6: AVDD,AVDD/2,AVDD/4,VR,VR/2,VR/4 SACS3~SACS0 下图显示了 A/D 转换器内部结构和相关的寄存器。 AVDD fSYS Pin-shared selection SACS3~SACS0 AN0 SACKS2~ SACKS0 ÷ 2N (N=0~7) ADCEN AVSS A/ D Clock AN1 SADOL A/D Converter AN15 START ADBZ ADCEN ADRFS SADOH A/D Data Registers A/D Converter Reference Voltage SAINS3~SAINS0 SAVRS1~SAVRS0 AVDD AVDD/4 VR VR /2 ADPGAEN PGAIS AVDD/2 ADVBGIN VRI VREFI PGA VR AVDD VREF VR /4 PGAGS1~PGAGS0 (Gain=1/1.667/2.5/3.333) A/D 转换器结构 Rev. 1.10 122 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 A/D 转换寄存器介绍 A/D 转换器的所有工作由六个寄存器控制。一对只读寄存器来存放 12 位 ADC 数据的值。三个控制寄存器设置 A/D 转换器的操作和控制功能。另外一个寄存 器 VBGRC 用于控制 bandgap 参考电压的开启与关闭。 寄存器 名称 SADOL (ADRFS=0) SADOL (ADRFS=1) SADOH (ADRFS=0) SADOH (ADRFS=1) SADC0 SADC1 SADC2 VBGRC 位 7 6 5 4 3 2 1 0 D3 D2 D1 D0 — — — — D7 D6 D5 D4 D3 D2 D1 D0 D11 D10 D9 D8 D7 D6 D5 D4 — — — — D11 D10 D9 D8 START ADBZ ADCEN ADRFS SACS3 SACS2 SACS1 SACS0 SAINS3 SAINS2 SAINS1 SAINS0 ─ SACKS2 SACKS1 SACKS0 ADPGAEN ─ ─ PGAIS SAVRS1 SAVRS0 PGAGS1 PGAGS0 ─ ─ ─ ─ ─ ─ ─ VBGREN A/D 转换寄存器列表 A/D 转换器数据寄存器 – SADOL,SADOH 对于具有 12 位 A/D 转换器的单片机,需要两个数据寄存器存放转换结果,一 个高字节寄存器 SADOH 和一个低字节寄存器 SADOL。在 A/D 转换完毕后, 单片机可以直接读取这些寄存器以获得转换结果。由于寄存器只使用了 16 位中 的 12 位,其数据存储格式由 SADC0 寄存器的 ADRFS 位控制,如下表所示。 D0~D11 是 A/D 换转数据结果位。未使用的位读为“0”。当 A/D 转换器除能时, 数据寄存器的值将保持不变。 ADRFS 0 1 7 6 5 D11 D10 D9 0 0 0 SADOH 4 3 2 1 D8 D7 D6 D5 0 D11 D10 D9 0 D4 D8 7 D3 D7 6 D2 D6 5 D1 D5 SADOL 4 3 D0 0 D4 D3 2 0 D2 1 0 D1 0 0 D0 A/D 数据寄存器 A/D 转换控制寄存器 – SADC0,SADC1,SADC2 寄存器 SADC0、SADC1 和 SADC2 用来控制 A/D 转换器的功能和操作。这些 8 位 的寄存器定义包括选择连接至内部 A/D 转换器的模拟通道,数据转换格式,A/D 时 钟源,并控制和监视 A/D 转换器的开始和转换结束状态。由于每个单片机只包含一 个实际的模数转换电路,因此这些外部和内部模拟信号只能单个的被发送到转换 器。SADC0 寄存器中的 SACS3~SACS0 位和 SADC1 寄存器中的 SAINS3~SAINS0 位用于选择某个外部模拟输入信号还是内部模拟信号被连接到 A/D 转换器。具体是 哪些信号及如何选择,可参考后面的“A/D 转换器输入信号”章节。 引脚共用功能控制寄存器的相关位用来定义 I/O 端口中的哪些引脚为 A/D 转换 器的模拟输入,哪些引脚不作为 A/D 转换输入。当引脚作为 A/D 输入时,其原 来的通用 I/O 功能或其它引脚共用功能移除,此外,其内部上拉电阻也将自动 断开。 Rev. 1.10 123 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 ● SADC0 寄存器 Rev. 1.10 Bit 7 6 5 4 Name START R/W R/W R R/W R/W POR 0 0 0 0 3 2 1 0 SACS2 SACS1 SACS0 R/W R/W R/W R/W 0 0 0 0 ADBZ ADCEN ADRFS SACS3 Bit 7 START:启动 A/D 转换位 0→1→0:启动 A/D 转换 0→1:复位 A/D 转换器并清除 ADBZ 位 1→0:启动 A/D 转换并置位 ADBZ 位 此位用于初始化 A/D 转换过程。通常此位为低,但如果设为高再被清零,将初 始化 A/D 转换过程。 Bit 6 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 SACS3~SACS0:A/D 转换器外部模拟通道输入选择位 0000:AN0 0001:AN1 0010:AN2 0011:AN3 0100:AN4 0101:AN5 0110:AN6 0111:AN7 1000:AN8 1001:AN9 1010:AN10 1011:AN11 1100:AN12 1101:AN13 1110:AN14 1111:AN15 124 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 ● SADC1 寄存器 Bit Name R/W POR 7 6 5 4 SAINS3 SAINS2 SAINS1 SAINS0 R/W R/W R/W R/W 0 0 0 0 3 ─ ─ ─ 2 1 0 SACKS2 SACKS1 SACKS0 R/W R/W R/W 0 0 0 Bit 7~4 SAINS3~SAINS0:A/D 转换器输入信号选择位 0000,0100,1100~1111:外部信号 – 外部模拟通道输入 0001:内部 AVDD 0010:内部 AVDD /2 0011:内部 AVDD /4 0101:内部 PGA 输出,VR 0110:内部 PGA 输出,VR/2 0111:内部 PGA 输出,VR/4 若选择内部模拟信号作为 A/D 转换器待转换的信号,由 SACS3~SACS0 位选择 的外部通道将自动与 A/D 转换器断开。 Bit 3 未定义,读为“0” Bit 2~0 SACKS2~SACKS0:A/D 转换器时钟源选择位 000:fSYS 001:fSYS/2 010:fSYS/4 011:fSYS/8 100:fSYS/16 101:fSYS/32 110:fSYS/64 111:fSYS/128 这三位用于选择 A/D 转换器的时钟源。 ● SADC2 寄存器 Bit Name R/W POR Rev. 1.10 7 ADPGAEN R/W 0 6 ─ ─ ─ 5 ─ ─ ─ 4 3 2 1 0 PGAIS SAVRS1 SAVRS0 PGAGS1 PGAGS0 R/W R/W R/W R/W R/W 0 0 0 0 0 Bit 7 ADPGAEN:可编程增益放大器 (PGA) 功能控制位 0:除能 1:使能 ADPGAEN 位控制内部 PGA 功能的使能。当设置此位为高,PGA 的输出 VR 可 以被选择作为 A/D 转换器的输入信号,也可以提供参考电压给 A/D 转换器。若 此输出电压 VR 没有被这些功能使用到,则应合理配置此位以节省功耗。 Bit 6~5 未定义,读为“0” Bit 4 PGAIS:PGA 输入 (VRI) 选择位 0:外部 VREFI 引脚 1:ADVBGIN (ADVBGIN 来自外部源 , 电压值固定为 1.2V) Bit 3~2 SAVRS1~SAVRS0:A/D 转换器参考电压选择位 00:AVDD 01:来自外部 VREF 引脚 1x:来自内部 PGA 输出,VR 若选择 A/D 转换器参考电压来自内部电压 VR,其它两个参考电压信号将会自动 断开。 125 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 1~0 PGAGS1~ PGAGS0:PGA 增益选择位 00:增益 =1 01:增益 =1.667(若 VRI=1.2V,则 PGA 输出 VR=2V) 10:增益 =2.5(若 VRI=1.2V, 则 PGA 输出 VR=3V) 11:增益 =3.333(若 VRI=1.2V, 则 PGA 输出 VR=4V) A/D 转换器操作 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 转换器的时钟源为系统时钟 fSYS 或其分频,而分频系数由 SADC1 寄存器中 的 SACKS2~SACKS0 位 决 定。 虽 然 A/D 时 钟 源 是 由 系 统 时 钟 fSYS 和 SACKS2~SACKS0 位决定,但可选择的最大 A/D 时钟源则有一些限制。由于允 许的 A/D 时钟周期 tADCK 的范围为 0.5µs~10µs,所以选择系统时钟速度时就必 须小心。如果系统时钟速度为 8MHz 时,SACKS2~SACKS0 位不能设为“000”、 “001”或“111”。必须保证设置的 A/D 转换时钟周期不小于时钟周期的最小 值或大于时钟周期的最大值,否则将会产生不准确的 A/D 转换值。 fSYS 1MHz 2MHz 4MHz 8MHz 12MHz 16MHz A/D 时钟周期 (tADCK) SACKS SACKS SACKS SACKS SACKS SACKS SACKS SACKS [2:0]=000 [2:0]=001 [2:0]=010 [2:0]=011 [2:0]=100 [2:0]=101 [2:0]=110 [2:0]=111 (fSYS) (fSYS/2) (fSYS/4) (fSYS/8) (fSYS/16) (fSYS/62) (fSYS/64) (fSYS/128) 1μs 2μs 4μs 8μs 16μs* 32μs* 64μs* 128μs* 500ns 1μs 2μs 4μs 8μs 16μs* 32μs* 64μs* 250ns* 500ns 1μs 2μs 4μs 8μs 16μs* 32μs* 125ns* 250ns* 500ns 1μs 2μs 4μs 8μs 16μs* 83ns* 167ns* 333ns* 667ns 1.33μs 2.67μs 5.33μs 10.67μs* 62.5ns* 125ns* 250ns* 500ns 1μs 2μs 4μs 8μs SADC0 寄存器中的 ADCEN 位用于控制 A/D 转换电路电源的开启和关闭。该 位必须置高以开启 A/D 转换器电源。当设置 ADCEN 位为高开启 A/D 转换器内 部电路时,在 A/D 转换成功开启前需一段延时。即使通过相关引脚共用控制位 选择无引脚作为 A/D 输入,如果 ADCEN 设为“1”,那么仍然会产生功耗。 因此在功耗敏感的应用中,当未使用 A/D 转换器功能时,建议设置 ADCEN 为 低以减少功耗。 Rev. 1.10 126 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 A/D 转换器参考电压 A/D 转换器参考电压可通过 SADC2 寄存器中 SAVRS1~SAVRS0 位选择来自电 源电压 AVDD、外部参考源引脚 VREF 或内部可编程增益放大器(PGA)的输出 电压 VR。若选择外部 VREF 引脚提供参考电压,需要另外先设置相关的引脚共 用功能选择寄存器以选择引脚功能为 VREF。PGA 的输入可通过 PGAIS 位选择 来自外部 VREFI 引脚或来自内部 Bandgap 参考电压 VBGREF,且 PGA 增益也可 由 PGAGS1~PGAGS0 位可选为 1、1.667、2.5、3.333,因此 A/D 转换器参考电 压的选取也更为灵活,可以满足用户的不同需要。注意若选择 A/D 转换器参考 电压来自 VREF 引脚输入,因为此引脚功能与其它功能共用 I/O 口,因此应先 合理配置相关的引脚功能共用功能选择寄存器,选择 VREF 引脚功能。若选择 PGA 输出 VR 作为 A/D 参考电压输入或 A/D 转换内部信号输入,要确保已经设 置 ADPGAEN 位为“1”使能 PGA 输出功能。若未使用到 PGA 功能,可以将 ADPGAEN 位清零,以节省功耗。PGA 输入信号可以通过 SADC2 寄存器中的 PGAIS 位选择来自外部 VREFI 引脚输入或来自 ADVBGIN。注意,A/D 转换器 输入的模拟信号值一定不能超过所选的参考电压值。 SAVRS[1:0] 参考电压源 说明 00 AVDD 来自电源电压,AVDD 01 VREF 引脚 来自外部 VREF 引脚输入 1x VR 来自内部 PGA 输出,VR A/D 转换器参考电压选择 VBGRC 寄存器 Bit Name R/W POR 7 — — — 6 — — — 5 — — — 4 — — — 3 — — — 2 — — — 1 — — — 0 VBGREN R/W 0 Bit 7~1 未定义,读为“0” Bit 0 VBGREN:Bandgap 使能控制位 0:除能 1:使能 当设置 VBGREN 位为零,除能 bandgap 参考电压电路,则输出为高阻抗。 A/D 转换器输入信号 所有的 A/D 模拟输入引脚都与 I/O 口及其它功能共用。使用引脚共用功能选择 寄存器对应位,可以将它们设置为 A/D 转换器模拟输入脚或其它功能引脚。具 体选择设置可参考“引脚共用功能选择寄存器”章节。如果对应的引脚作为 A/D 转换器模拟输入,那么它原来的引脚功能将除能。通过这种方式,引脚的功能 可由程序来控制,灵活地切换引脚功能。如果将引脚设为 A/D 输入,则通过寄 存器设置的所有上拉电阻会自动断开。请注意,端口控制寄存器不需要为使能 A/D 输入而先设定为输入模式,当 A/D 输入功能选择位使能 A/D 输入时,端口 控制寄存器的状态将被重置。 Rev. 1.10 127 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 SADC0 寄存器中的 SACS3~SACS0 位用于选择哪个外部模拟输入通道被连接到 内部 A/D 转换器。SADC1 寄存器中的 SAINS3~SAINS0 位用于选择外部模拟输 入通道或内部模拟信号被连接到内部 A/D 转换器。若 SAINS3~SAINS0 位为 “0000,0100,1100~1111”,则选择转换外部模拟输入信号,具体通道编号由 SACS3~SACS0 位 决 定。 若 SAINS2~SAINS0 位 为“0000,0100,1100~1111” 以外的值,则选择内部信号(PGA 输出或电源电压)。若选择了内部信号作为 输入,则外部输入通道将会自动断开,以避免发生内部外部信号冲撞的情况。 SAINS [3:0] 0000,0100, 1100,1101, 1110,1111 0001 0010 0011 0101 0110 0111 SACS [3:0] 输入信号 0000~1111 AN0~AN15 xxxx xxxx xxxx xxxx xxxx xxxx AVDD AVDD/2 AVDD/4 VR VR/2 VR/4 说明 外部通道模拟输入 A/D 转换器电源电压 A/D 转换器电源电压 /2 A/D 转换器电源电压 /4 PGA 输出电压 PGA 输出电压 /2 PGA 输出电压 /4 “x”:任意值 A/D 转换器输入信号选择 A/D 转换率及时序图 一个完整的 A/D 转换包含两部分,数据采样和数据转换。数据采样时间定义为 tADS,需要 4 个 A/D 时钟周期,而数据转换需要 12 个 A/D 时钟周期。所以一个 完整的 A/D 转换时间,tADC,一共需要 16 个 A/D 时钟周期。 最大 A/D 转换率 =A/D 时钟周期 ÷16 下列时序图表示模数转换过程中不同阶段的图形与时序。由应用程序控制开始 A/D 转换过程后,单片机的内部硬件就会开始进行转换,在这个过程中,程序 可以继续其它功能。A/D 转换时间为 16tADCK,tADCK 为 A/D 时钟周期。 tON2ST ADCEN off on off A/D sampling time tADS A/D sampling time tADS Start of A/D conversion Start of A/D conversion End of A/D conversion End of A/D conversion on START ADBZ SACS[3:0] 0011B (SAINS[3:0]=0000B) A/D channel switch 0010B 0000B tADC A/D conversion time tADC A/D conversion time Start of A/D conversion 0001B tADC A/D conversion time A/D 转换时序图 Rev. 1.10 128 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 A/D 转换步骤 下面概述实现 A/D 转换过程的各个步骤。 ● 步骤 1 通过 SADC1 寄存器中的 SACKS2~SACKS0 位,选择所需的 A/D 转换时钟。 ● 步骤 2 将 SADC0 寄存器中的 ADCEN 位置高使能 A/D 转换器。 ● 步骤 3 通过 SADC2 寄存器中的 SAINS3~SAINS0 位,选择连接至内部 A/D 转换器的 信号。 若选择外部通道输入,执行步骤 4。 若选择内部模拟信号,执行步骤 5。 ● 步骤 4 若已通过 SAINS3~SAINS0 位选择 A/D 输入信号来自外部通道输入,接着应 设置引脚共用功能选择寄存器 PxS0 和 PxS1 中的相关位将该引脚规划为 A/D 输入引脚。通过设置 SACS3~SACS0 位选择哪个外部通道接至 A/D 转换器。 接着执行步骤 6。 ● 步骤 5 在选择内部模拟信号前,需先将相关的控制位清零以除能外部通道输入,之 后再设置 SAINS3~SAINS0 位选择所需的内部模拟信号。接着执行步骤 6。 ● 步骤 6 通过 SAVRS1~SAVRS0 位选择参考电压。若选择内部信号 VR 作为 A/D 转换 器参考电压,应设置 PGAIS 及 PGAGS[1:0] 位合理配置 PGA 输出,且置位 ADPGAEN 位以使能 PGA 功能。 ● 步骤 7 设置 ADRFS 位选择 A/D 转换器输出数据格式。 ● 步骤 8 如果要使用中断,则中断控制寄存器需要正确地设置,以确保 A/D 中断功能 是激活的。总中断控制位 EMI 需要置位为“1”,以及 A/D 转换器中断位 ADE 也需要置位为“1”。 ● 步骤 9 现在可以通过设置 START 位从“0”到“1”再回到“0”,开始模数转换的 过程。 ● 步骤 10 可以轮询 SADC0 寄存器中的 ADBZ 位,检查模数转换过程是否完成。当此 位为逻辑高时,表示转换正在进行中。当此位为逻辑低时,表示转换过程已 经完成。转换完成后,可读取 A/D 数据寄存器 SADOL 和 SADOH 获得转换 后的值。 注:若使用轮询 SADC0 寄存器中 ADBZ 位的状态的方法来检查转换过程是否结束时,则中 断使能的步骤可以省略。 Rev. 1.10 129 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 编程注意事项 在编程时,如果 A/D 转换器未使用,通过设置 SADC0 寄存器中的 ADCEN 为低, 关闭 A/D 内部电路以减少电源功耗。此时,不考虑输入脚的模拟电压,内部 A/D 转换器电路不产生功耗。如果 A/D 转换器输入脚用作普通 I/O 脚,必须特别注 意,输入电压为无效逻辑电平也可能增加功耗。 A/D 转换功能 单片机含有一组 12 位的 A/D 转换器,它们转换的最大值可达 FFFH。由于模拟 输入最大值等于实际输入的 A/D 转换器参考电压 VREF 的电压值,因此每一位可 表示 VREF/4096 的模拟输入值。 1 LSB=VREF ÷ 4096 通过下面的等式可估算 A/D 转换器输入电压值: A/D 输入电压 = A/D 数字输出值 × (VREF ÷ 4096) 下图显示 A/D 转换器模拟输入值和数字输出值之间理想的转换功能。除了数字 化数值 0,其后的数字化数值会在精确点之前的 0.5 LSB 处改变,而数字化数 值的最大值将在 VDD 之前的 1.5 LSB。 注意此处的 VREF 是指由 SAVRS1~SAVRS0 选择的实际输入 A/D 转换器参考电 压。 1.5 LSB FFFH FFEH FFDH A/D Conversion Result 03H 0.5 LSB 02H 01H 0 1 2 3 4093 4094 4095 4096 VREF 4096 Analog Input Voltage 理想的 A/D 转换功能 Rev. 1.10 130 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 A/D 转换应用范例 下面两个范例程序用来说明怎样使用 A/D 转换。第一个范例是轮询 SADC0 寄 存器中的 ADBZ 位来判断 A/D 转换是否完成;第二个范例则使用中断的方式判 断。 范例 1:使用查询 ADBZ 的方式来检测转换结束 clr ADE mov a,03H mov SADC1,a set ADCEN mov a,03H mov PCS0,a mov a,20H mov SADC0,a : start_conversion: clr START set START clr START : polling_EOC: sz ADBZ jmp polling_EOC : mov a,SADOL mov ADRL_buffer,a mov a,SADOH mov ADRH_buffer,a : jmp start_conversion Rev. 1.10 ; disable ADC interrupt ; select fSYS/8 as A/D clock ; setup PCS0 to configure pin AN0 ; enable and connect AN0 channel to A/D converter ; high pulse on start bit to initiate conversion ; reset A/D ; start A/D ; poll the SADC0 register ADBZ bit to detect end ; of A/D conversion ; continue polling ; ; ; ; read save read save low byte conversion result value result to user defined register high byte conversion result value result to user defined register ; start next A/D conversion 131 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 范例 2:使用中断的方式来检测转换结束 clr ADE mov a,03H mov SADC1,a set ADCEN mov a,03h mov PSC0,a mov a,20h mov SADC0,a : Start_conversion: clr START set START clr START clr ADF set EADI set EMI : : ADC_ISR: mov acc_stack,a mov a,STATUS mov status_stack,a : mov a,SADOL mov adrl_buffer,a mov a,SADOH mov adrh_buffer,a : EXIT_INT_ISR: mov a,status_stack mov STATUS,a mov a,acc_stack reti Rev. 1.10 ; disable ADC interrupt ; select fSYS/8 as A/D clock ; setup PSC0 to configure pin AN0 ; enable and connect AN0 channel to A/D converter ; ; ; ; ; ; high pulse on START bit to initiate conversion reset A/D start A/D clear ADC interrupt request flag enable ADC interrupt enable global interrupt ; ADC interrupt service routine ; save ACC to user defined memory ; save STATUS to user defined memory ; ; ; ; read save read save low byte conversion result value result to user defined register high byte conversion result value result to user defined register ; restore STATUS from user defined memory ; restore ACC from user defined memory 132 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 比较器 该单片机包含一个模拟比较器。具有暂停、极性选择、迟滞等功能,可通过寄 存器进行灵活配置。比较器的引脚与普通 I/O 引脚共用,当比较器功能未使用 时,此引脚可做普通引脚使用而不浪费 I/O 资源。 CRSP C+ S0 C- CNVT[1:0] Pin-shared selection CMPO S2 S1 COFM, COF[4:0] Comparator Interrupt One Shot + − CX Pin CPOL CMPEN Pin-shared selection 比较器 比较器操作 此单片机包含一个比较器功能,用于比较两个模拟电压,基于它们的差值上提 供一个输出。 当比较器使能时,且相关的共用引脚功能选择为比较器输入功能时,连接到该 引脚的上拉电阻将自动失效。当比较器输入接近其切换电压时,由于输入信号 上升或下降速度较慢,比较器输出端可能会产生一些伪输出信号。通过选择迟 滞功能提供少量正反馈给比较器可使此种情况的发生率较大程度地降低。理想 情况下正负输入信号在同一个电压点时比较器输出发生转换,但是不可避免的 输入失调电压会导致一些不确定因素。若迟滞功能使能,也可增加切换偏差值。 迟滞宽度可依不同的比较器响应时间的不同而作出调整。比较器响应时间的具 体值可参考比较器电气特性表格内容。 比较器寄存器 整个内部比较器的工作是通过两个控制寄存器 CMPC 和 CMPVOS 来完成的。 其中的一位用来记录比较器的输出值,此输出值也可通过专门的引脚输出。另 外这些寄存器也提供了输出极性选择,响应时间选择及使能 / 除能控制。 寄存器 名称 CMPC CMPVOS 位 7 ─ ─ 6 CMPEN COFM 5 CPOL CRSP 4 3 2 CMPO CNVT1 CNVT0 COF4 COF3 COF2 1 ─ COF1 0 ─ COF0 比较器寄存器列表 CMPC 寄存器 Bit Name R/W POR Bit 7 Rev. 1.10 7 ─ ─ ─ 6 CMPEN R/W 0 5 CPOL R/W 0 4 3 2 CMPO CNVT1 CNVT0 R R/W R/W 0 0 0 1 ─ ─ ─ 0 ─ ─ ─ 未定义,读为“0” 133 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 6 CMPEN:比较器使能控制位 0:除能 1:使能 此位为比较器开 / 关控制位。为“0”时,比较器关闭,即使其引脚上加有模拟 电压也不会产生功耗。对功耗要求严格的应用中,当比较器未使用或单片机进 入休眠或空闲模式之前,此位应清零。注意若设置此位为零除能比较器功能, 则比较器输出为低。 Bit 5 CPOL:比较器输出极性控制位 0:输出同相 1:输出反相 此位决定比较器输出极性。为“0”时,比较器输出位 CMPO 反映未反相的比 较器输出情况;为“1”时,CMPO 位反映反相后的比较器输出情况。 Bit 4 CMPO:比较器输出位 CPOL=0 0:C+ < C1:C+ > CCPOL=1 0:C+ > C1:C+ < C此位为比较器输出位。此位的值由比较器正负输入端电压和 CPOL 位的状态决 定。 Bit 3~2 CNVT1~CNVT0:比较器响应时间选择 此位段用于选择比较器响应时间。响应时间同样受加在比较器输入端的过驱动 电压值影响。具体内容可参考比较器电气特性表格。 Bit 1~0 未定义,读为“0” CMPVOS 寄存器 Bit Name R/W POR Rev. 1.10 7 ─ ─ ─ 6 COFM R/W 0 5 CRSP R/W 0 4 COF4 R/W 1 3 COF3 R/W 0 2 COF2 R/W 0 1 COF1 R/W 0 0 COF0 R/W 0 Bit 7 未定义,读为“0” Bit 6 COFM:比较器工作模式选择位 0:正常工作模式 1:输入失调校准模式 此位可用来选择比较器输入校准功能。若设置此位为零,比较器将进行正常的 比较操作。若设置此位为高,将选择比较器输入校准功能。 Bit 5 CRSP:比较器输入校准功能参考输入引脚选择位 0:来自 C- 引脚输入 1:来自 C+ 引脚输入 此位用来选择比较器输入校准时参考信号输入引脚。参考输入可通过此位选择 来自 C+ 或 C- 输入。此位的选择只有在比较器工作在输入校准模式时才有效。 Bit 4~0 COF4~COF0:比较器输入失调电压校准控制位 这 5 位用来执行比较器的输入失调校准操作,并重新储存比较器的输入失调校 准值。更多详细资料请参考“输入失调校准”章节。 134 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 输入失调校准 设置 COFM 位为“1”选择比较器输入失调校准模式,之后设置 CRSP 位选择 校准时参考信号输入端,比较器即可工作在失调校准模式。以下为比较器输入 失调校准步骤: 步骤 1、设置 COFM=1 并设置 CRSP 位,使比较器工作在输入失调校准模式。 步骤 2、设置 COF[4:0] = 00000,读 CMPO 位的值 步骤 3、将 COF[4:0] 的值加 1,再读 CMPO 位的值。 如果 CMPO 位的状态未改变,重复步骤 3 直到 CMPO 位改变。 如果 CMPO 位的状态改变,记录 COF[4:0] 的值为 VOS1,然后转到步骤 4。 步骤 4、设置 COF[4:0] = 11111,读 CMPO 位的值。 步骤 5、将 COF[4:0] 的值减 1,再读 CMPO 位的值。 如果 CMPO 位的状态未改变,重复步骤 5 直到 CMPO 位改变。 如果 CMPO 位的状态改变,记录 COF[4:0] 的值为 VOS2,然后转到步骤 6。 步骤 6、将比较器的输入失调校准值 VCOS 重新储存到 COF[4:0] 位,这样失调校 准就完成了。 其中,VOS = (VOS1+VOS2)/2 Rev. 1.10 135 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 串行接口模块 – SIM 此单片机内建一个串行接口模块,包括两种易与外部设备通信的串行接口:四 线 SPI 或两线 I2C 接口。这两种接口具有相当简单的通信协议,单片机可以通 过这些接口与外部基于 SPI 或 I2C 的传感器、闪存等硬件设备通信。因为 SIM 接口引脚是与其它 I/O 引脚共用,因此在使用 SIM 功能前,要先通过相应的引 脚共用功能选择寄存器选定 SIM 引脚功能。因为 SPI 和 I2C 这两种接口共用引 脚和寄存器,所以要先通过 SIMC0 寄存器中的 SIM2~SIM0 位选择哪一种通信 接口。若 SIM 功能使能且引脚用作 SIM 输入脚,可通过对应上拉电阻控制寄存 器选择此脚的上拉电阻。 SPI 接口 SPI 接口常用于与外部设备如传感器、闪存或 EEPROM 内存等通信。四线 SPI 接口最初是由摩托罗拉公司研制,是一个有相当简单的通信协议的串行数据接 口,这个协议可以简化与外部硬件的编程要求。 SPI 通信模式为全双工模式,且能以主 / 从模式的工作方式进行通信,单片机既 可以做为主机,也可以做为从机。虽然 SPI 接口理论上允许一个主机控制多个 从机,但此单片机 SPI 只提供了一个从机选择引脚 SCS。若需要单个主机同时 控制多个从机,可使用输入 / 输出引脚选择从机。 SPI 接口操作 SPI 接口是一个全双工串行数据传输器。SPI 接口的四线为:SDI、SDO、SCK 和 SCS。SDI 和 SDO 是数据的输入和输出线。SCK 是串行时钟线,SCS 是从 机的选择线。SPI 的接口引脚与普通 I/O 口和 I2C 的功能脚共用。通过设定相关 引脚共用选择位和 SIMC0/SIMC2 寄存器的对应位,来使能 SPI 接口。连接到 SPI 接口的单片机以从主 / 从模式进行通信,且主机完成所有的数据传输初始 化,并控制时钟信号。由于单片机只有一个 SCS 引脚,所以只能拥有一个从机 设备。可通过软件控制 SCS 引脚使能与除能,设置 CSEN 位为“1”使能 SCS 功能,设置 CSEN 位为“0”,SCS 引脚将处于浮空状态。 SPI Master SPI Slave SCK SCK SDO SDI SDI SDO SCS SCS SPI 主 / 从机连接方式 该单片机的 SPI 功能具有以下特点: ● 全双工同步数据传输 ● 主从模式 ● 最低有效位先传或最高有效位先传的数据传输模式 ● 传输完成标志位 ● 时钟源上升沿或下降沿有效 SPI 接口状态受很多因素的影响,如单片机处于主机或从机的工作模式以及 CSEN、SIMEN 位的状态。 Rev. 1.10 136 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Data Bus SIMD SDI Pin TX/RX Shift Register CKEG CKPOLB SDO Pin Clock Edge/Polarity Control WCOL TRF SIMICF Busy Status SCK Pin Clock Source Select fSYS fSUB PTM CCRP match frequency/2 SCS Pin CSEN SPI 方框图 SPI 寄存器 有三个内部寄存器用于控制 SPI 接口的所有操作,其中有一个数据寄存器 SIMD、两个控制寄存器 SIMC0 和 SIMC2。 位 7 6 5 4 3 2 1 0 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 寄存器 名称 SPI 寄存器列表 SPI 数据寄存器 – SIMD SIMD 用于存储发送和接收的数据。这个寄存器由 SPI 和 I2C 功能所共用。在单 片机将数据写入到 SPI 总线之前,要传输的数据应先存在 SIMD 中。SPI 总线 接收到数据之后,单片机就可以从 SIMD 数据寄存器中读取。所有通过 SPI 传 输或接收的数据都必须通过 SIMD 实现。 ● SIMD 寄存器 Bit Name R/W POR 7 D7 R/W x 6 D6 R/W x 5 D5 R/W x 4 D4 R/W x 3 D3 R/W x 2 D2 R/W x 1 D1 R/W x 0 D0 R/W x “x”:未知 Bit 7~0 Rev. 1.10 D7~D0:SIM 数据寄存器位 bit 7 ~ bit 0 137 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 SPI 控制寄存器 – SIMC0/SIMC2 单片机中也有两个控制 SPI 接口功能的寄存器,SIMC0 和 SIMC2。应注意的是 SIMC2 与 I2C 接口功能中的寄存器 SIMA 是同一个寄存器。SPI 功能不会用到 寄存器 SIMC1,SIMC1 寄存器仅在工作于 I2C 接口时才被使用。寄存器 SIMC0 用于控制使能 / 除能功能和设置数据传输的时钟频率。寄存器 SIMC2 用于其它 的控制功能如 LSB/MSB 选择,写冲突标志位等。 ● SIMC0 寄存器 Bit Name R/W POR Rev. 1.10 7 SIM2 R/W 1 6 SIM1 R/W 1 5 SIM0 R/W 1 4 — — — 3 2 1 0 SIMDEB1 SIMDEB0 SIMEN SIMICF R/W R/W R/W R/W 0 0 0 0 Bit 7~5 SIM2~SIM0:SIM 工作模式控制位 000:SPI 主机模式;SPI 时钟为 fSYS/4 001:SPI 主机模式;SPI 时钟为 fSYS/16 010:SPI 主机模式;SPI 时钟为 fSYS/64 011:SPI 主机模式;SPI 时钟为 fSUB 100:SPI 主机模式;SPI 时钟为 PTM CCRP 匹配频率 /2 101:SPI 从机模式 110:I2C 从机模式 111:未使用模式 这几位用于设置 SIM 功能的工作模式,除了选择 I2C 或 SPI 功能,还可选择 SPI 的主从模式和 SPI 的主机时钟频率。SPI 时钟源可来自于系统时钟和 fSUB 也可以 选择来自 PTM。若选择的是作为 SPI 从机,则其时钟源从外部主机而得。 Bit 4 未定义,读为“0” Bit 3~2 SIMDEB1~SIMDEB0:I2C 去抖时间选择位 这些位只有在 SIM 设置成 I2C 接口模式时才有效。请参考 I2C 寄存器部分。 Bit 1 SIMEN:SIM 控制位 0:除能 1:使能 此 位 为 SIM 接 口 的 开 / 关 控 制 位。 此 位 为“0” 时,SIM 接 口 除 能,SDI、 SDO、SCK 和 SCS 或 SDA 和 SCL 脚将失去 SPI 或 I2C 功能,SIM 工作电流减 小到最小值。此位为“1”时,SIM 接口使能。若 SIM 经由 SIM2~SIM0 位设置 为工作在 SPI 接口,当 SIMEN 位由低到高转变时,SPI 控制寄存器中的设置不 会发生变化,其首先应在应用程序中初始化。若 SIM 经由 SIM2~SIM0 位设置 为工作在 I2C 接口,当 SIMEN 位由低到高转变时,I2C 控制寄存器中的设置, 如 HTX 和 TXAK,将不会发生变化,其首先应在应用程序中初始化,此时相关 I2C 标志,如 HCF、HAAS、HBB、SRW 和 RXAK,将被设置为其默认状态。 Bit 0 SIMICF:SIM SPI 未完成标志位 0:未发生 1:发生 此位仅当 SIM 配置在 SPI 从机模式时有效。如果 SPI 工作在从机模式且 SIMEN 和 CSEN 位都为“1”,但在 SPI 数据传输完全结束前 SCS 线被外部主机拉高, SIMICF 和 TRF 位都会被置高。在这种情况下,如果相应的中断功能使能将产 生一个中断。然而,如果 SIMICF 位是由软件应用程序设为 1,那么 TRF 位将 不会置高。 138 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 ● SIMC2 寄存器 Bit Name R/W POR Rev. 1.10 7 D7 R/W 0 6 D6 R/W 0 5 CKPOLB R/W 0 4 CKEG R/W 0 3 MLS R/W 0 2 CSEN R/W 0 1 WCOL R/W 0 0 TRF R/W 0 Bit 7~6 未定义位 用户可通过软件程序对这两位进行读写。 Bit 5 CKPOLB:SPI 时钟线的基础状态位 0:当时钟无效时,SCK 引脚为高电平 1:当时钟无效时,SCK 引脚为低电平 此位决定了时钟线的基础状态,若此位为高,当时钟无效时 SCK 为低电平,若 此位为低,当时钟无效时 SCK 为高电平。 Bit 4 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 的状态。 Bit 3 MLS:SPI 数据移位顺序选择位 0:LSB 优先 1:MSB 优先 数据移位顺序选择位,用于选择数据传输时高位优先传输还是低位优先传输。 此位设置为高时高位优先传输,为低时低位优先传输。 Bit 2 CSEN:SPI SCS 引脚控制位 0:除能 1:使能 CSEN 位用于 SCS 引脚的使能 / 除能控制。此位为低时,SCS 除能,可用于普 通 I/O 引脚或其它共用功能。此位为高时,SCS 作为从机选择引脚。 Bit 1 WCOL:SPI 写冲突标志位 0:无冲突 1:冲突 WCOL 标志位用于监测数据冲突的发生。此位为高时,表示在传输过程中有数 据被写入 SIMD 寄存器。若数据正在被传输时,此写操作无效。此位可通过应 用程序清零。 Bit 0 TRF:SPI 发送 / 接收结束标志位 0:数据正在发送中 1:数据发送结束 TRF 位为发送 / 接收结束标志位,当 SPI 数据传输结束时,此位自动置为高, 但须通过应用程序设置为“0”。此位也可用于产生中断。 139 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 SPI 通信 将 SIMEN 设置为高,使能 SPI 功能之后,单片机处于主机模式,当数据写入到 寄存器 SIMD 的同时传输 / 接收开始进行。数据传输完成时,TRF 位将自动被 置位但清除只能通过应用程序完成。单片机处于从机模式时,收到主机发来的 信号之后,会传输 SIMD 中的数据,而且在 SDI 引脚上的数据也会被移位到 SIMD 寄存器中。主机应在输出时钟信号之前先输出一个 SCS 信号以使能从机, 从 机 的 数 据 传 输 功 能 也 应 在 与 SCS 信 号 相 关 的 适 当 时 候 准 备 就 绪, 这 由 CKPOLB 和 CKEG 位决定。所附时序图表明了在 CKPOLB 和 CKEG 位各种设 置情况下从机数据与 SCS 信号的关系。 即使单片机空闲模式时,若 SPI 接口使用的时钟源开启,SPI 功能仍将继续执行。 SIMEN=1, CSEN=0 (External Pull-high) SCS SIMEN, CSEN=1 SCK (CKPOLB=1, CKEG=0) SCK (CKPOLB=0, CKEG=0) SCK (CKPOLB=1, CKEG=1) SCK (CKPOLB=0, CKEG=1) SDO (CKEG=0) D7/D0 D6/D1 D5/D2 D4/D3 D3/D4 D2/D5 D1/D6 D0/D7 SDO (CKEG=1) D7/D0 D6/D1 D5/D2 D4/D3 D3/D4 D2/D5 D1/D6 D0/D7 SDI Data Capture Write to SIMD SPI 主机模式时序 SCS SCK (CKPOLB=1) SCK (CKPOLB=0) SDO D7/D0 D6/D1 D5/D2 D4/D3 D3/D4 D2/D5 D1/D6 D0/D7 SDI Data Capture Write to SIMD (SDO does not change until first SCK edge) SPI 从机模式时序 – CKEG=0 Rev. 1.10 140 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 SCS SCK (CKPOLB=1) SCK (CKPOLB=0) SDO D7/D0 D6/D1 D5/D2 D4/D3 D3/D4 D2/D5 D1/D6 D0/D7 SDI Data Capture Write to SIMD (SDO changes as soon as writing occurs; SDO is floating if SCS=1) Note: For SPI slave mode, if SIMEN=1 and CSEN=0, SPI is always enabled and ignores the SCS level. SPI 从机模式时序 – CKEG=1 SPI Transfer Master Master or Slave ? A Write Data into SIMD Clear WCOL Slave Y SIM[2:0]=000, 001, 010, 011 or 100 WCOL=1? SIM[2:0]=101 N N Configure CKPOLB, CKEG, CSEN and MLS Transmission completed? (TRF=1?) Y SIMEN=1 Read Data from SIMD A Clear TRF Transfer finished? N Y END SPI 传输控制流程图 Rev. 1.10 141 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 I2C 接口 I2C 接口可以用于和传感器、EEPROM 存储器等外部硬件进行通信。最初是由 飞利浦公司研制,是适用于同步串行数据传输的双线式低速串行接口。I2C 接口 具有两线通信,非常简单的通信协议和在同一总线上和多个设备进行通信的能 力的优点,使之在很多的应用场合中大受欢迎。 VDD SDA SCL Device Slave Device Master Device Slave I2C 主从总线连接图 I2C 接口操作 I2C 串行接口是一个双线的接口,有一条串行数据线 SDA 和一条串行时钟线 SCL。由于可能有多个设备在同一条总线上相互连接,所以这些设备的输出都 是开漏型输出。因此应在这些输出口上都应加上拉电阻。应注意的是,I2C 总线 上的每个设备都没有选择线,但分别与唯一的地址一一对应,用于 I2C 通信。 如果有两个设备通过双向的 I2C 总线进行通信,那么就存在一个主机和一个从 机。主机和从机都可以用于传输和接收数据,但只有主机才可以控制总线动作。 那些处于从机模式的设备,要在 I2C 总线上传输数据只有两种方式,一是从机 发送模式,二是从机接收模式。                 ‰ Ž                      „ ˆ         † ‡    ‡                   ­           …    ‰  Š ‹    ‰  Œ                                                                                „ ­             ‚        ƒ     €                        ­                      „        2 I C 方框图 Rev. 1.10 142 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 S T A R T s ig n a l fro m M a s te r S e n d s la v e a d d r e s s a n d R /W b it fr o m M a s te r A c k n o w le d g e fr o m s la v e S e n d d a ta b y te fro m M a s te r A c k n o w le d g e fr o m s la v e S T O P s ig n a l fro m M a s te r SIMDEB1 和 SIMDEB0 位决定 I2C 接口的去抖时间。这个功能可以使用内部时 钟在外部时钟上增加一个去抖间隔,减小时钟线上毛刺发生的可能性,以避免 单片机发生误动作。如果选择了这个功能,去抖时间可以选择 2 个或 4 个系统 时钟。为了达到需要的 I2C 数据传输速度,系统时钟 fSYS 和 I2C 去抖时间之间存 在一定的关系。I2C 标准模式或者快速模式下,用户需注意所选的系统时钟频率 与标准匹配去抖时间的设置,其具体关系如下表所示。 I2C 去抖时间选择 I2C 标准模式(100kHz) I2C 快速模式(400kHz) 无去抖时间 fSYS > 2 MHz fSYS > 5 MHz 2 个系统时钟去抖时间 fSYS > 4 MHz fSYS > 10 MHz 4 个系统时钟去抖时间 fSYS > 8 MHz fSYS > 20 MHz I2C 最小 fSYS 频率 I2C 寄存器 I2C 总 线 有 三 个 控 制 寄 存 器 SIMC0、SIMC1 和 SIMTOC, 一 个 地 址 寄 存 器 SIMA 以及一个数据寄存器 SIMD。 位 寄存器 名称 7 6 5 4 SIMC0 SIM2 SIM1 SIM0 — SIMC1 HCF HAAS HBB HTX TXAK SIMA A6 A5 A4 A3 SIMD D7 D6 D5 D4 SIMTOC SIMTOEN SIMTOF 3 2 1 0 SIMEN SIMICF SRW IAMWU RXAK A2 A1 A0 D0 D3 D2 D1 D0 SIMDEB1 SIMDEB0 SIMTOS5 SIMTOS4 SIMTOS3 SIMTOS2 SIMTOS1 SIMTOS0 I2C 寄存器列表 Rev. 1.10 143 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 I2C 数据寄存器 – SIMD SIMD 用于存储发送和接收的数据。这个寄存器由 SPI 和 I2C 功能所共用。在单 片机将数据写入到 I2C 总线之前,要传输的数据应先存在 SIMD 中。I2C 总线接 收到数据之后,单片机就可以从 SIMD 数据寄存器中读取。所有通过 I2C 传输 或接收的数据都必须通过 SIMD 实现。 ● SIMD 寄存器 Bit Name R/W POR 7 D7 R/W x 6 D6 R/W x 5 D5 R/W x 4 D4 R/W x 3 D3 R/W x 2 D2 R/W x 1 D1 R/W x 0 D0 R/W x “x”:未知 Bit 7~0 D7~D0:SIM 数据寄存器位 bit 7 ~ bit 0 I2C 地址寄存器 – SIMA SIMA 寄存器也在 SPI 接口功能中使用(用于 SPI 功能时其名称为 SIMC2)。 SIMA 寄存器用于存放 7 位从机地址,寄存器 SIMA 中的 bit 7 ~ bit 1 是单片机 的从机地址,bit 0 未定义。 如果接至 I2C 的主机发送出的地址和寄存器 SIMA 中存储的地址相符,那么就 选中了这个从机。应注意的是寄存器 SIMA 和 SPI 接口使用的寄存器 SIMC2 位 于同一个寄存器地址。 ● SIMA 寄存器 Bit Name R/W POR Rev. 1.10 7 A6 R/W 0 6 A5 R/W 0 5 A4 R/W 0 4 A3 R/W 0 Bit 7~1 A6~A0:I2C 从机地址位 A6~A0 是从机地址 bit 6 ~ bit 0。 Bit 0 未定义位 此位可通过软件程序进行读写。 144 3 A2 R/W 0 2 A1 R/W 0 1 A0 R/W 0 0 D0 R/W 0 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 I2C 控制寄存器 – SIMC0,SIMC1,SIMTOC 单片机中有三个控制 I2C 接口功能的寄存器,SIMC0、SIMC1 和 SIMTOC。寄 存器 SIMC0 用于控制使能 / 除能功能和设置数据传输的时钟频率。寄存器 SIMC1 包括多个用于指示 I2C 传输状态的相关标志位。SIMTOC 寄存器用于控 制 I2C 超时功能,此寄存器在 I2C 超时控制一节介绍。 ● SIMC0 寄存器 Bit Name R/W POR Rev. 1.10 7 SIM2 R/W 1 6 SIM1 R/W 1 5 SIM0 R/W 1 4 — — — 3 2 1 0 SIMDEB1 SIMDEB0 SIMEN SIMICF R/W R/W R/W R/W 0 0 0 0 Bit 7~5 SIM2~SIM0:SIM 工作模式控制位 000:SPI 主机模式;SPI 时钟为 fSYS/4 001:SPI 主机模式;SPI 时钟为 fSYS/16 010:SPI 主机模式;SPI 时钟为 fSYS/64 011:SPI 主机模式;SPI 时钟为 fSUB 100:SPI 主机模式;SPI 时钟为 PTM CCRP 匹配频率 /2 101:SPI 从机模式 110:I2C 从机模式 111:未使用模式 这几位用于设置 SIM 功能的工作模式,用于选择 SPI 的主从模式和 SPI 的主机 时钟频率及 I2C 或 SPI 功能。SPI 时钟源可来自于系统时钟和 fSUB 也可以选择来 自 PTM。若选择的是作为 SPI 从机,则其时钟源从外部主机而得。 Bit 4 未定义,读为“0” Bit 3~2 SIMDEB1~SIMDEB0:I2C 去抖时间选择位 00:无去抖时间 01:2 个系统时钟去抖时间 1x:4 个系统时钟去抖时间 当设置 SIM2~SIM0 位为“110”将 SIM 设置为 I2C 接口功能时,这两个位用于 选择 I2C 去抖时间。 Bit 1 SIMEN:SIM 控制位 0:除能 1:使能 此 位 为 SIM 接 口 的 开 / 关 控 制 位。 此 位 为“0” 时,SIM 接 口 除 能,SDI、 SDO、SCK 和 SCS 或 SDA 和 SCL 脚将失去 SPI 或 I2C 功能,SIM 工作电流减 小到最小值。此位为“1”时,SIM 接口使能。若 SIM 经由 SIM2~SIM0 位设置 为工作在 SPI 接口,当 SIMEN 位由低到高转变时,SPI 控制寄存器中的设置不 会发生变化,其首先应在应用程序中初始化。若 SIM 经由 SIM2~SIM0 位设置 为工作在 I2C 接口,当 SIMEN 位由低到高转变时,I2C 控制寄存器中的设置, 如 HTX 和 TXAK,将不会发生变化,其首先应在应用程序中初始化,此时相关 I2C 标志,如 HCF、HAAS、HBB、SRW 和 RXAK,将被设置为其默认状态。 Bit 0 SIMICF:SIM SPI 未完成标志位 此位仅当 SIM 配置在 SPI 从机模式时有效。请参考 SPI 寄存器部分。 145 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 ● SIMC1 寄存器 Bit Name R/W POR Rev. 1.10 7 HCF R 1 6 HAAS R 0 5 HBB R 0 4 HTX R/W 0 3 TXAK R/W 0 2 SRW R 0 1 0 IAMWU RXAK R/W R 0 1 Bit 7 HCF:I2C 总线数据传输结束标志位 0:数据正在传输中 1:8 位数据传输完成 数据正在传输时该位为低。当 8 位数据传输完成时,此位为高并产生一个中断。 Bit 6 HAAS:I2C 地址匹配标志位 0:地址未匹配 1:地址匹配 此标志位用于决定从机地址是否与主机发送的地址相同。若地址匹配此位为高, 否则此位为低。 Bit 5 HBB:I2C 总线忙标志位 0:I2C 总线闲 1:I2C 总线忙 当检测到 START 信号时 I2C 忙,此位变为高电平。当检测到 STOP 信号时 I2C 总线空闲,该位变为低电平。 Bit 4 HTX:从机处于发送或接收模式标志位 0:从机处于接收模式 1:从机处于发送模式 Bit 3 TXAK:I2C 总线发送应答标志位 0:从机发送应答标志 1:从机没有发送应答标志 从机接收完 8 位数据之后,该位将在第九个从机时钟时被传到总线上。如果从 机想要接收更多的数据,则应在接收数据之前将此位设置为“0”。 Bit 2 SRW:I2C 从机读 / 写位 0:从机应处于接收模式 1:从机应处于发送模式 SRW 位是从机读写位。决定主机是否希望传输数据或接收来自 I2C 总线的数据。 当传输地址和从机的地址相同时,HAAS 位会被设置为高,从机将检测 SRW 位 来决定进入发送模式还是接收模式。如果 SRW 位为高时,主机会请求从总线上 读数据,此时从机处于发送模式。当 SRW 位为“0”时,主机往总线上写数据, 从机处于接收模式以读取数据。 Bit 1 IAMWU:I2C 地址匹配唤醒控制位 0:除能 1:使能 此位设置为“1”则使能 I2C 地址匹配使系统从休眠或空闲模式中唤醒的功能。 若进入休眠或空闲模式前 IAMWU 已经置高以使能 I2C 地址匹配唤醒功能,在 系统唤醒后须软件清除此位以确保单片机正确地运行。 Bit 0 RXAK:I2C 总线接收应答标志位 0:从机接收到应答标志 1:从机未接收到应答标志 RXAK 位是接收应答标志位。如果 RXAK 位为“0”,即表示 8 位数据传输之后, 从机在第九个时钟有接受到一个应答信号。如果从机处于发送状态,从机作为 发送方会检查 RXAK 位来判断主机接收方是否愿意继续接收下一个字节。因此 发送方会一直发送数据,直到 RXAK 为“1”时才停止发送数据。这时,发送 方将释放 SDA 线,主机方可发出停止信号从而释放 I2C 总线。 146 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 I2C 总线通信 I2C 总线上的通信需要四步完成,一个起始信号,一个从机地址发送,一个数据 传输,还有一个停止信号。当起始信号被写入 I2C 总线时,总线上的所有从机 都会接收到这个起始信号并且被通知总线上即将有数据到达。数据的前 7 位是 从机地址,高位在前,低位在后。如果发出的地址和从机地址匹配,SIMC1 寄 存器的 HAAS 位会被置位,同时产生 I2C 中断。进入中断服务程序后,系统要 检测 HAAS 位和 SIMTOF 位,以判断 I2C 总线中断是来自从机地址匹配,还是 来自 8 位数据传递完毕,或是来自 I2C 超时。在数据传递中,要注意的是,在 7 位从机地址被发送后,接下来的一位,即第 8 位,是读 / 写控制位,该位的值 会反映到 SRW 位中。从机通过检测 SRW 位以确定自己是要进入发送模式还是 接收模式。在 I2C 总线开始传送数据前,需要先初始化 I2C 总线,初始化 I2C 总 线步骤如下: ● 步骤 1 设置 SIMC0 寄存器中 SIM2~SIM0 位为“110”和 SIMEN 位为“1”,以使能 I2C 总线。 ● 步骤 2 向 I2C 总线地址寄存器 SIMA 写入从机地址。 ● 步骤 3 设置 SIME 位以使能 SIM 中断。 Start Set SIM[2:0]=110 Set SIMEN Write Slave Address to SIMA No Yes I2C Bus Interrupt=? CLR SIME Poll SIMF to decide when to go to I2C Bus ISR SET SIME Wait for Interrupt Goto Main Program Goto Main Program I2C 总线初始化流程图 Rev. 1.10 147 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 I2C 总线起始信号 起始信号只能由连接 I2C 总线的主机产生,而不是由从机产生。总线上的所有 从机都可以侦测到起始信号。如果有从机侦测到起始信号,则表明 I2C 总线处 于忙碌状态,并会置位 HBB。起始信号是指在 SCL 为高电平时,SDA 线上发 生从高到低的电平变化。 从机地址 总线上的所有从机都会侦测由主机发出的起始信号。发送起始信号后,紧接着 主机会发送从机地址以选择要进行数据传输的从机。所有在 I2C 总线上的从机 接收到 7 位地址数据后,都会将其与各自内部的地址进行比较。如果从机从主 机上接收到的地址与自身内部的地址相匹配,则会产生一个 I2C 总线中断信号。 地址位接下来的一位为读 / 写状态位(即第 8 位),将被保存到 SIMC1 寄存器 的 SRW 位,从机随后发出一个低电平应答信号(即第 9 位)。当从机地址匹 配时,从机会将状态标志位 HAAS 置位。 I2C 总线中断有三个中断源,当程序运行至中断服务子程序时,通过检测 HAAS 位和 SIMTOF 位,以判断 I2C 总线中断是来自从机地址匹配,还是来自 8 位数 据传递完毕,或是来自 I2C 超时。当是从机地址匹配发生中断时,则从机或是 用于发送模式并将数据写进 SIMD 寄存器,或是用于接收模式并从 SIMD 寄存 器中读取空值以释放 SCL 线。 I2C 总线读 / 写信号 SIMC1 寄存器的 SRW 位用来表示主机是要从 I2C 总线上读取数据还是要将数 据写到 I2C 总线上。从机通过检测该位以确定自己是作为发送方还是接收方。 当 SRW 置“1”,表示主机要从 I2C 总线上读取数据,从机则作为发送方,将 数据写到 I2C 总线;当 SRW 清“0”,表示主机要写数据到 I2C 总线上,从机 则做为接收方,从 I2C 总线上读取数据。 I2C 总线从机地址应答信号 主机发送呼叫地址后,当 I2C 总线上的任何从机内部地址与其匹配时,会发送 一个应答信号。此应答信号会通知主机有从机已经接收到了呼叫地址。如果主 机没有收到应答信号,则主机必须发送停止(STOP)信号以结束通信。当 HAAS 为高时,表示从机接收到的地址与自己内部地址匹配,则从机需检查 SRW 位,以确定自己是作为发送方还是作为接收方。如果 SRW 位为高,从机 须设置成发送方,这样会置位 SIMC1 寄存器的 HTX 位。如果 SRW 位为低, 从机须设置成接收方,这样会清零 SIMC1 寄存器的 HTX 位。 Rev. 1.10 148 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 I2C 总线数据和应答信号 在从机确认接收到从地址后,会进行 8 位宽度的数据传输。这个数据传输顺序 是的高位在前,低位在后。接收方在接收到 8 位数据后必须发出一个应答信号 (“0”)以继续接收下一个数据。如果从机发送方没接收到来自主机接收方的 应答信号,发送方将释放 SDA 线,此时主机方可发出 STOP 信号以释放 I2C 总 线。所传送的数据存储在 SIMD 寄存器中。如果设置成发送方,从机必须先将 欲传输的数据写到 SIMD 寄存器中;如果设置成接收方,从机必须从 SIMD 寄 存器读取数据。 当 接 收 器 想 要 继 续 接 收 下 一 个 数 据 时, 必 须 在 第 9 个 时 钟 发 出 应 答 信 号 (TXAK)。被设为发送方的从机将检测寄存器 SIMC1 中的 RXAK 位以判断是否 传输下一个字节的数据,如果从机不传输下一个字节,那么它将释放 SDA 线并 等待接收主机的停止信号。 SCL Slave Address Start 1 SDA 1 0 1 0 1 SRW ACK 1 0 0 Data SCL 1 0 0 1 0 ACK 1 0 Stop 0 SDA S=Start (1 bit) SA=Slave Address (7 bits) SR=SRW bit (1 bit) M=Slave device send acknowledge bit (1 bit) D=Data (8 bits) A=ACK (RXAK bit for transmitter, TXAK bit for receiver, 1 bit) P=Stop (1 bit) S SA SR M D A D A …… S SA SR M D A D A …… P 注:* 当从机地址匹配时,单片机必须选择设置为发送模式还是接收模式。若设置为发送模 式,需写数据至 SIMD 寄存器;若设置为接收模式,需立即从 SIMD 寄存器中虚读数据 以释放 SCL 线。 I2C 通信时序图 Rev. 1.10 149 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Start No No No HTX=1? Yes HAAS=1? Yes SIMTOF=1? Yes Yes SET SIMTOEN CLR SIMTOF SRW=1? No RETI Read from SIMD to release SCL Line RETI Yes SET HTX CLR HTX CLR TXAK Write data to SIMD to release SCL Line Dummy read from SIMD to release SCL Line RETI RETI RXAK=1? No CLR HTX CLR TXAK Write data to SIMD to release SCL Line Dummy read from SIMD to release SCL Line RETI RETI I2C 总线 ISR 流程图 I2C 超时控制 超时功能可减少 I2C 接收错误的时钟源而引起的锁死问题。如果连接到 I2C 总 线的时钟源经过一段时间还未接收到,则在一定的超时周期后,I2C 电路和寄存 器将复位。超时计数器在 I2C 总线“START”和“地址匹配”条件下开始计数, 且在 SCL 下降沿清零。在下一个 SCL 下降沿到来之前,如果超时时间大于 SIMTOC 寄存器指定的超时周期,则超时发生。I2C“STOP”条件发生时超时 功能终止。 Rev. 1.10 150 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 SCL Start Slave Address 1 SDA 0 1 1 0 1 SRW ACK 1 0 0 I2C time-out counter start Stop SCL 1 0 0 1 0 1 0 0 SDA I2C time-out counter reset on SCL negative transition I2C 超时时序图 当 I2C 超 时 计 数 器 溢 出 时, 计 数 器 将 停 止 计 数,SIMTOEN 位 被 清 零, 且 SIMTOF 位被置高以表明超时计数器中断发生。超时计数器中断使用的也是 I2C 中断向量。当 I2C 超时发生时,I2C 内部电路会被复位,寄存器也将发生如下复 位情况。 I2C 超时发生后 保持不变 复位至 POR 状态 寄存器 SIMD,SIMA,SIMC0 SIMC1 超时发生后的 I2C 寄存器 SIMTOF 标志位由应用程序清零。共有 64 个超时周期,可通过 SIMTOC 寄存 器的 SIMTOSn 位进行选择。超时周期可通过公式计算:((1~64) × (32/fSUB))。由 此可得超时周期范围为 1ms~64ms。 ● SIMTOC 寄存器 Bit 7 6 5 4 3 2 1 0 Name SIMTOEN SIMTOF SIMTOS5 SIMTOS4 SIMTOS3 SIMTOS2 SIMTOS1 SIMTOS0 Rev. 1.10 R/W R/W R/W POR 0 0 R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 2 Bit 7 SIMTOEN:I C 超时控制位 0:除能 1:使能 Bit 6 SIMTOF:I2C 超时标志位 0:超时未发生 1:超时发生 Bit 5~0 SIMTOS5~SIMTOS0:I2C 超时时间选择位 I2C 超时时钟源是 fSUB/32 I2C 超时时间计算方法:([SIMTOS[5:0]+1) × (32/fSUB) 151 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 UART 接口 该单片机具有一个全双工的异步串行通信接口——UART,可以很方便的与其 它具有串行口的芯片通信。UART 具有许多功能特性,发送或接收串行数据时, 将数据组成一个 8 位或 9 位的数据块,连同数据特征位一并传输。具有检测数 据覆盖或帧错误等功能。UART 功能占用一个内部中断向量,当接收到数据或 数据发送结束,触发 UART 中断。 内置的 UART 功能包含以下特性: ● 全双工通用异步接收器 / 发送器 ● 8 位或 9 位传输格式 ● 奇校验、偶校验或无校验 ● 1 位或 2 位停止位 ● 8 位预分频的波特率发生器 ● 奇偶、帧、噪声和溢出检测 ● 支持地址匹配中断(最后一位 =1) ● 独立的发送和接收使能 ● 2-byte FIFO 接收缓冲器 ● 发送和接收中断 ● 中断可由下列条件初始化: ♦ 发送器为空 ♦ 发送器空闲 ♦ 接收完成 ♦ 接收器溢出 ♦ 地址匹配 ♦ RX 引脚唤醒 Transmitter Shift Register (TSR) MSB ………………………… LSB TX Pin TX Register (TXR_RXR) RX Pin Receiver Shift Register (RSR) MSB ………………………… LSB Baud Rate Generator fH Data to be transmitted RX Register (TXR_RXR) Buffer Data received MCU Data Bus UART 数据传输方框图 UART 外部引脚 内部 UART 有两个外部引脚 TX 和 RX,可与外部串行接口进行通信。TX 和 RX 分别为 UART 发送脚和接收脚,与 I/O 口或其它功能共用引脚。在使用 UART 功能前,应先通过相应的引脚共用功能选择寄存器,选择 TX 和 RX 引 脚功能。当 UARTEN、TXEN 和 RXEN 位置高时,将自动设置这些 I/O 脚或其 它共用功能脚作为 TX 输出和 RX 输入,并且除能 TX 和 RX 引脚上的上拉电阻 功能。当 UARTEN、TXEN 或 RXEN 位清零除能 TX 或 RX 引脚功能后,TX 或 RX 引脚将处于浮空状态。这时 TX 或 RX 引脚是否连接内部上拉电阻是由 相应的 I/O 上拉电阻控制位决定的。 Rev. 1.10 152 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 UART 数据传输方案 前面方框图显示了 UART 的整体结构。需要发送的数据首先写入 TXR_RXR 寄 存器,接着此数据被传输到发送移位寄存器 TSR 中,然后在波特率发生器的控 制下将 TSR 寄存器中数据一位位地移到 TX 引脚上,低位在前。TXR_RXR 寄 存器被映射到单片机的数据存储器中,而发送移位寄存器没有实际地址,所以 发送移位寄存器不可直接操作。 数据在波特率发生器的控制下,低位在前高位在后,从外部引脚 RX 进入接收 移位寄存器 RSR。当数据接收完成,数据从接收移位寄存器移入可被用户程序 操作的 TXR_RXR 寄存器中。TXR_RXR 寄存器被映射到单片机数据存储器中, 而接收移位寄存器没有实际地址,所以接收移位寄存器不可直接操作。 需要注意的是,发送和接收都是共用同一个地址的数据寄存器,即 TXR_RXR 寄存器。 UART 状态和控制寄存器 与 UART 功能相关的有五个寄存器 ——控制 UART 模块整体功能的 USR、 UCR1 和 UCR2 寄存器,控制波特率的 BRG 寄存器,管理发送和接收数据的数 据寄存器 TXR_RXR。 位 寄存器 名称 7 6 5 4 3 2 1 0 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 TXR_RXR D7 D6 D5 D4 D3 D2 D1 D0 BRG BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0 UART 寄存器列表 TXR_RXR 寄存器 TXR_RXR 是一个数据寄存器,用来存储 TX 引脚将要发送或 RX 引脚正在接收 的数据。 Bit Name R/W POR 7 D7 R/W x 6 D6 R/W x 5 D5 R/W x 4 D4 R/W x 3 D3 R/W x 2 D2 R/W x 1 D1 R/W x 0 D0 R/W x “x”:未知 Bit 7~0 Rev. 1.10 UART 发送 / 接收数据位 Bit 7~Bit 0 153 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 USR 寄存器 寄存器 USR 是 UART 的状态寄存器,可以通过程序读取。所有 USR 位是只读 的。详细解释如下: Bit Name R/W POR Rev. 1.10 7 PERR R 0 6 NF R 0 5 FERR R 0 4 OERR R 0 3 RIDLE R 1 2 RXIF R 0 1 TIDLE R 1 0 TXIF R 1 Bit 7 PERR:奇偶校验出错标志位 0:奇偶校验正确 1:奇偶校验出错 PERR 是奇偶校验出错标志位。若 PERR=0,奇偶校验正确;若 PERR=1,接收 到的数据奇偶校验出错。只有使能了奇偶校验此位才有效。可使用软件清除该 标志位,即先读取 USR 寄存器再读 TXR_RXR 寄存器来清除此位。 Bit 6 NF:噪声干扰标志位 0:没有受到噪声干扰 1:受到噪声干扰 NF 是噪声干扰标志位。若 NF=0,没有受到噪声干扰;若 NF=1,UART 接收数 据时受到噪声干扰。它与 RXIF 在同周期内置位,但不会与溢出标志位同时置 位。可使用软件清除该标志位,即先读取 USR 寄存器再读 TXR_RXR 寄存器将 清除此标志位。 Bit 5 FERR:帧错误标志位 0:无帧错误发生 1:有帧错误发生 FREE 是帧错误标志位。若 FREE=0,没有帧错误发生;若 FREE=1,当前的数 据发生了帧错误。可使用软件清除该标志位,即先读取 USR 寄存器再读 TXR_ RXR 寄存器来清除此位。 Bit 4 OERR:溢出错误标志位 0:无溢出错误发生 1:有溢出错误发生 OERR 是溢出错误标志位,表示接收缓冲器是否溢出。若 OERR=0,没有溢出 错误;若 OERR=1,发生了溢出错误,它将禁止下一组数据的接收。可通过软 件清除该标志位,即先读取 USR 寄存器再读 TXR_RXR 寄存器将清除此标志位。 Bit 3 RIDLE:接收状态标志位 0:正在接收数据 1:接收器空闲 RIDLE 是接收状态标志位。若 RIDLE=0,正在接收数据;若 RIDLE=1,接收器 空 闲。 在 接 收 到 停 止 位 和 下 一 个 数 据 的 起 始 位 之 间,RIDLE 被 置 位, 表 明 UART 空闲,RX 脚处于逻辑高状态。 Bit 2 RXIF:接收寄存器状态标志位 0:TXR_RXR 寄存器为空 1:TXR_RXR 寄存器含有有效数据 RXIF 是 接 收 寄 存 器 状 态 标 志 位。 当 RXIF=0,TXR_RXR 寄 存 器 为 空; 当 RXIF=1,TXR_RXR 寄存器接收到新数据。当数据从移位寄存器加载到 TXR_ RXR 寄存器中,如果 UCR2 寄存器中的 RIE=1,则会触发中断。当接收数据时 检测到一个或多个错误时,相应的标志位 NF、FERR 或 PERR 会在同一周期内 置位。读取 USR 寄存器再读 TXR_RXR 寄存器,如果 TXR_RXR 寄存器中没有 新的数据,那么将清除 RXIF 标志。 154 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 1 TIDLE:数据发送完成标志位 0:数据传输中 1:无数据传输 TIDLE 是数据发送完成标志位。若 TIDLE=0,数据传输中。当 TXIF=1 且数据 发送完毕或者暂停字被发送时,TIDLE 置位。TIDLE=1,TX 引脚空闲且处于逻 辑高状态。读取 USR 寄存器再写 TXR_RXR 寄存器将清除 TIDLE 位。数据字 符或暂停字就绪时,不会产生该标志位。 Bit 0 TXIF:发送数据寄存器 TXR_RXR 状态位 0:数据还没有从缓冲器加载到移位寄存器中 1:数据已从缓冲器加载到移位寄存器中 (TXR_RXR 数据寄存器为空 ) TXIF 是发送数据寄存器为空标志位。若 TXIF=0,数据还没有从缓冲器加载到 移位寄存器中;若 TXIF=1,数据已从缓冲器中加载到移位寄存器中。读取 USR 存器再写 TXR_RXR 寄存器将清除 TXIF。当 TXEN 被置位,由于发送缓冲器未 满,TXIF 也会被置位。 UCR1 寄存器 UCR1 和 UCR2 是 UART 的两个控制寄存器,用来定义各种 UART 功能,例如 UART 的使能与除能、奇偶校验控制和传输数据的长度等等。详细解释如下: Bit Name R/W POR 7 UARTEN R/W 0 6 BNO R/W 0 5 PREN R/W 0 4 PRT R/W 0 3 2 STOPS TXBRK R/W R/W 0 0 1 RX8 R x 0 TX8 W 0 “x”:未知 Rev. 1.10 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,偶校验。 155 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 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 数据传输格式中的第 9 位 ( 只读 ) 此位只有在传输数据为 9 位的格式中有效,用来存储接收数据的第 9 位。BNO 是用来控制传输位数是 8 位还是 9 位。 Bit 0 TX8:发送 9-bit 数据传输格式中的第 9 位 ( 只写 ) 此位只有在传输数据为 9 位的格式中有效,用来存储发送数据的第 9 位。BNO 是用来控制传输位数是 8 位还是 9 位。 UCR2 寄存器 UCR2 是 UART 的第二个控制寄存器,它的主要功能是控制发送器、接收器以 及各种 UART 中断源的使能或除能。它也可用来控制波特率,使能接收唤醒和 地址侦测。详细解释如下: Bit Name R/W POR Rev. 1.10 7 TXEN R/W 0 6 RXEN R/W 0 5 4 3 BRGH ADDEN WAKE R/W R/W R/W 0 0 0 2 RIE R/W 0 1 TIIE R/W 0 0 TEIE R/W 0 Bit 7 TXEN:UART 发送使能位 0:UART 发送除能 1:UART 发送使能 此位为发送使能位。TXEN=0,发送将被除能,发送器立刻停止工作。另外发送 缓冲器将被复位,此时 TX 引脚将处于浮空状态。若 TXEN=1 且 UARTEN=1, 则发送将被使能,TX 引脚将由 UART 来控制。在数据传输时清除 TXEN 将中 止数据发送且复位发送器,此时 TX 引脚将处于浮空状态。 Bit 6 RXEN:UART 接收使能位 0:UART 接收除能 1:UART 接收使能 此位为接收使能位。RXEN=0,接收将被除能,接收器立刻停止工作。另外接 收 缓 冲 器 将 被 复 位, 此 时 RX 引 脚 将 处 于 浮 空 状 态。 若 RXEN=1 且 UARTEN=1,则接收将被使能,RX 引脚将由 UART 来控制。在数据传输时清 除 RXEN 将中止数据接收且复位接收器,此时 RX 引脚将处于浮空状态。 Bit 5 BRGH:波特率发生器高低速选择位 0:低速波特率 1:高速波特率 此位为波特率发生器高低速选择位,它和 BRG 寄存器一起控制 UART 的波特率。 BRGH=1,为高速模式;BRGH=0,为低速模式。 156 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 4 ADDEN:地址检测使能位 0:地址检测除能 1:地址检测使能 此位为地址检测使能和除能位。ADDEN=1,地址检测使能,此时数据的第 8 位 (BNO=0) 或第 9 位 (BNO=1) 为高,那么接到的是地址而非数据。若相应的中断 使能且接收到的值最高位为 1,那么中断请求标志将会被置位,若地址检测功能 使能且最高位为 0,那么将不会产生中断且收到的数据也会被忽略。 Bit 3 WAKE:RX 脚下降沿唤醒 UART 功能使能位 0:RX 脚下降沿唤醒 UART 功能除能 1:RX 脚下降沿唤醒 UART 功能使能 此位用于控制 RX 引脚下降沿时是否唤醒 UART 功能。此位仅当 UART 时钟源 fH 关闭时有效。若 UART 时钟源 fH 还开启,则无 RX 引脚唤醒 UART 功能无效。 若此位置高且 UART 时钟 fH 关闭,当 RX 引脚发生下降沿时会产生 UART 唤醒 请求。若相应的中断使能,将产生 RX 引脚唤醒 UART 的中断,以告知单片机 使其通过应用程序开启 UART 时钟源 fH,从而唤醒 UART 功能。否则,若此位 为低,即使 RX 引脚发生下降沿也无法恢复 UART 功能。 Bit 2 RIE:接收中断使能位 0:接收中断除能 1:接收中断使能 此位为接收中断使能或除能位。若 RIE=1,当 OERR 或 RXIF 置位时,UART 的 中断请求标志置位;若 RIE=0,UART 中断请求标志不受 OERR 和 RXIF 影响。 Bit 1 TIIE:发送器空闲中断使能位 0:发送器空闲中断除能 1:发送器空闲中断使能 此位为发送器空闲中断的使能或除能位。若 TIIE=1,当发送器空闲触发 TIDLE 置位时,UART 的中断请求标志置位;若 TIIE=0,UART 中断请求标志不受 TIDLE 的影响。 Bit 0 TEIE:发送寄存器为空中断使能位 0:发送寄存器为空中断除能 1:发送寄存器为空中断使能 此位为发送寄存器为空中断的使能或除能位。若 TEIE=1,当发送器为空触发 TXIF 置位时,UART 的中断请求标志置位;若 TEIE=0,UART 中断请求标志不 受 TXIF 的影响。 BRG 寄存器 Bit Name R/W POR 7 BRG7 R/W x 6 BRG6 R/W x 5 BRG5 R/W x 4 BRG4 R/W x 3 BRG3 R/W x 2 BRG2 R/W x 1 BRG1 R/W x 0 BRG0 R/W x “x”:未知 Bit 7~0 Rev. 1.10 BRG7~BRG0:波特率值 软件设置 BRGH 位(设置波特率发生器的速度)和 BRG 寄存器(设置波特率 的值),一起控制 UART 的波特率。 注:若 BRGH=0,波特率 = fH/[64×(N+1)]; 若 BRGH=1,波特率 = fH/[16×(N+1)]。 157 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 波特率发生器 UART 自身具有一个波特率发生器,通过它可以设定数据传输速率。波特率是 由一个独立的内部 8 位计数器产生,它由 BRG 寄存器和 UCR2 寄存器的 BRGH 位来控制。BRGH 是决定波特率发生器处于高速模式还是低速模式,从而决定 计算公式的选用。BRG 寄存器的值 N 可根据下表中的公式计算,N 的范围是 0 到 255。 UCR2 的 BRGH 位 波特率 (BR) 0 fH / [64 (N+1)] 1 fH / [16 (N+1)] 为得到相应的波特率,首先需要设置 BRGH 来选择相应的计算公式从而算出 BRG 的值。由于 BRG 的值不连续,所以实际波特率和理论值之间有一个偏差。 下面举例怎样计算 BRG 寄存器中的值 N 和误差。 波特率和误差的计算 若选用 4MHz 时钟频率且 BRGH=0,若期望的波特率为 4800,计算它的 BRG 寄存器的值 N,实际波特率和误差。 根据上表,波特率 BR = fH / [64 (N+1)] 转换后的公式 N = [fH / (BR×64)] - 1 带入参数 N = [4000000 / (4800×64)] - 1 = 12.0208 取最接近的值,十进制 12 写入 BRG 寄存器,实际波特率如下 BR = 4000000 / [64 × (12+1)] = 4808 因此,误差 = (4808 - 4800) / 4800=0.16% UART 模块的设置与控制 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. 1.10 158 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 数据位、停止位位数以及奇偶校验的选择 数据传输格式由数据长度、是否校验、校验类型、地址位以及停止位长度组成。 它们都是由 UCR1 寄存器的各个位控制的。BNO 决定数据传输是 8 位还是 9 位; PRT 决定校验类型;PREN 决定是否选择奇偶校验;而 STOPS 决定选用 1 位还 是 2 位停止位。下表列出了各种数据传输格式。若地址检测功能使能,地址位, 即数据字节的最高位,用来确定此帧是地址还是数据。停止位的长度和数据位 的长度无关,且只有发送器需设置停止位长度。接收器只接收一个停止位。 起始位 8 位数据位 1 1 1 9 位数据位 1 1 1 数据位 地址位 校验位 停止位 8 7 7 0 0 1 0 1 0 1 1 1 9 8 8 0 0 1 0 1 0 1 1 1 发送和接收数据格式 下图是传输 8 位和 9 位数据的波形。 Parity Bit Start Bit Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Bit 6 Bit 7 8-bit data format Start Bit Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Stop Bit Next Start Bit Parity Bit Bit 8 Stop Bit Next Start Bit 9-bit data format UART 发送器 UCR1 寄存器的 BNO 位是控制数据传输的长度。BNO=1 其长度为 9 位,第 9 位 MSB 存 储 在 UCR1 寄 存 器 的 TX8 中。 发 送 器 的 核 心 是 发 送 移 位 寄 存 器 TSR,它的数据由发送寄存器 TXR_RXR 提供,应用程序只须将发送数据写入 TXR_RXR 寄存器。上组数据的停止位发出前,TSR 寄存器禁止写入。如果还 有新的数据要发送,一旦停止位发出,待发数据将会从 TXR_RXR 寄存器加载 到 TSR 寄存器。TSR 不像其它寄存器一样映射到数据存储器,所以应用程序不 能对其进行读写操作。TXEN=1,发送使能,但若 TXR_RXR 寄存器没有数据 或 者 波 特 率 没 有 设 置, 发 送 器 将 不 会 工 作。 先 写 TXR_RXR 寄 存 器 再 置 高 TXEN 也会触发发送。当发送器使能,若 TSR 寄存器为空,数据写入 TXR_ RXR 寄存器将会直接加载到 TSR 寄存器中。发送器工作时,TXEN 清零,发送 器将立刻停止工作并且复位,此时通过设置相关引脚共用控制位,TX 引脚用 作普通 I/O 口或其它引脚共用功能。 Rev. 1.10 159 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 发送数据 当 UART 发送数据时,数据从移位寄存器中移到 TX 引脚上,其低位在前高位 在后。在发送模式中,TXR_RXR 寄存器在内部总线和发送移位寄存器间形成 一个缓冲。如果选择 9 位数据传输格式,最高位 MSB 取自 UCR1 寄存器的 TX8。 发送器初始化可由如下步骤完成: ● 正确地设置 BNO、PRT、PREN 和 STOPS 位以确定数据长度、校验类型和停 止位长度。 ● 设置 BRG 寄存器,选择期望的波特率。 ● 置高 TXEN,使能 UART 发送器且使 TX 作为 UART 的发送端。 ● 读取 USR 寄存器,然后将待发数据写入 TXR_RXR 寄存器。注意,此步骤会 清除 TXIF 标志位。 如果要发送多个数据只需重复上一步骤。 当 TXIF=0 时,数据将禁止写入 TXR_RXR 寄存器。可以通过以下步骤来清除 TXIF: 1. 读取 USR 寄存器 2. 写 TXR_RXR 寄存器 只读标志位 TXIF 由 UART 硬件置位。若 TXIF=1,TXR_RXR 寄存器为空,其 它数据可以写入而不会覆盖之前的数据。若 TEIE=1,TXIF 标志位会产生中断。 在数据传输时,写 TXR_RXR 指令会将待发数据暂存在 TXR_RXR 寄存器中, 当前数据发送完毕后,待发数据被加载到发送移位寄存器中。当发送器空闲时, 写 TXR_RXR 指令会将数据直接加载到 TSR 寄存器中,数据传输立刻开始且 TXIF 置位。当发送完停止位或暂停帧后,表示一帧数据已发送完毕,此时 TIDLE 位将被置位。 可以通过以下步骤来清除 TIDLE: 1. 读取 USR 寄存器 2. 写 TXR_RXR 寄存器 清除 TXIF 和 TIDLE 软件执行次序相同。 发送暂停字 若 TXBRK=1,下一帧将会发送暂停字。它是由一个起始位、13×N(N=1, 2……)位逻辑 0 组成。置位 TXBRK 将会发送暂停字,而清除 TXBRK 将产生 停止位,传输暂停字不会产生中断。需要注意的是,暂停字至少 13 位宽。若 TXBRK 持续为高,那么发送器会一直发送暂停字;当应用程序将 TXBRK 清零 后,发送器结束最后一帧暂停字的发送后接着发送一位或两位停止位。最后一 帧暂停字的结尾自动为高电平,以确保下一帧数据起始位的检测。 UART 接收器 UART 接收器支持 8 位或者 9 位数据接收。若 BNO=1,数据长度为 9 位,而最 高位 MSB 存放在 UCR1 寄存器的 TXR_RXR 中。接收器的核心是串行移位寄 存器 RSR。RX 引脚上的数据送入数据恢复器中,它在 16 倍波特率的频率下工 作,而串行移位器工作在正常波特率下。当在 RX 引脚上检测到停止位,若 TXR_RXR 寄存器为空,数据从 RSR 寄存器中加载到 TXR_RXR 寄存器。RX 引脚上的每一位数据会被采样三次以判断其逻辑状态。RSR 不像其它寄存器一 样映射在数据存储器,所以应用程序不能对其进行读写操作。 Rev. 1.10 160 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 接收数据 当 UART 接收数据时,数据低位在前高位在后,连续地从 RX 引脚进入移位寄 存器。TXR_RXR 寄存器在内部总线和接收移位寄存器间形成一个缓冲。TXR_ RXR 寄存器是一个两层的 FIFO 缓冲器,它能保存两帧数据的同时接收第三帧 数据,应用程序必须保证在接收完第三帧前读取 TXR_RXR 寄存器,否则忽略 第三帧数据并且发生溢出错误。 接收器的初始化可由如下步骤完成: ● 正确地设置 BNO、PRT 和 PREN 位以确定数据长度和校验类型。 ● 设置 BRG 寄存器,选择期望的波特率。 ● 置高 RXEN,使能 UART 发送器且使 RX 作为 UART 的接收端。 此时接收器被使能并检测起始位。 接收数据将会发生如下事件: ● 当 TXR_RXR 寄存器中包含有效数据时,USR 寄存器中的 RXIF 位将会置位, 溢出错误发生之前至多还有一帧数据可读。 ● 若 RIE=1,数据从 RSR 寄存器加载到 TXR_RXR 寄存器中将产生中断。 ● 若接收器检测到帧错误、噪声干扰错误、奇偶出错或溢出错误,那么相应的 错误标志位置位。 可以通过如下步骤来清除 RXIF: 1. 读取 USR 寄存器 2. 读取 TXR_RXR 寄存器 接收暂停字 UART 接收任何暂停字都会当作帧错误处理。接收器只根据 BNO 位的设置外加 一个停止位来确定一帧数据的长度。若暂停字位数大于 BNO 位指定的长度外 加一个停止位,接收器认为接收已完毕,RXIF 和 FERR 置位,TXR_RXR 寄存 器清 0,若相应的中断允许且 RIDLE 为高将会产生中断。暂停字只会被认为包 含信息 0 且会置位 FERR 标志位。如果检测到较长的暂停信号,接收器会将此 信号视为包含一个起始位、数据位和无效的停止位的数据帧并且置位 FERR 标 志位。在下个开始位到来之前,接收器必须等待一个有效的停止位。接收器不 会假定线上的暂停信号是下一个开始位。暂停字将会加载到缓冲器中,在接收 到停止位前不会再接收数据,没有检测到停止位也会置位只读标志位 RIDLE。 UART 接收到暂停字会产生以下事件: ● 帧错误标志位 FERR 置位。 ● TXR_RXR 寄存器清零。 ● OERR、NF、PERR、RIDLE 或 RXIF 可能会置位。 空闲状态 当 UART 接收数据时,即在起初位和停止位之间,USR 寄存器的接收状态标志 位 RIDLE 清零。在停止位和下一帧数据的起始位之间,RIDLE 被置位,表示 接收器空闲。 接收中断 USR 寄存器的只读标志位 RXIF 由接收器的边沿触发置位。若 RIE=1,数据从 移位寄存器 RSR 加载到 TXR_RXR 寄存器时产生中断,同样地,溢出也会产生 中断。 Rev. 1.10 161 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 接收错误处理 UART 会产生几种接收错误,下面部分将描述各错误以及怎样处理。 溢出 – OERR 标志 TXR_RXR 寄存器是一个两层的 FIFO 缓冲器,它能保存两帧数据的同时接收第 三帧数据,应用程序必须保证在接收完第三帧前读取 TXR_RXR 寄存器,否则 发生溢出错误。 产生溢出错误时将会发生以下事件: ● USR 寄存器中 OERR 被置位。 ● TXR_RXR 寄存器中数据不会丢失。 ● RSR 寄存器数据将会被覆盖。 ● 若 RIE=1,将会产生中断。 先读取 USR 寄存器再读取 TXR_RXR 寄存器可将 OERR 清零。 噪声干扰 – NF 标志 数据恢复时多次采样可以有效的鉴别出噪声干扰。当检测到数据受到噪声干扰 时将会发生以下事件: ● 在 RXIF 上升沿,USR 寄存器中只读标志位 NF 置位。 ● 数据从 RSR 寄存器加载到 TXR_RXR 寄存器中。 ● 不产生中断,但此位置位发生在 RXIF 置位产生中断的同周期内。 先读取 USR 寄存器再读取 TXR_RXR 寄存器可将 NF 清零。 帧错误 – FERR 标志 若在停止位上检测到 0,USR 寄存器中只读标志 FERR 置位。若选择两位停止 位,此两位都必须为高,否则将置位 FERR。此标志位同接收的数据分别记录 在 USR 寄存器和 TXR_RXR 寄存器中,此标志位可被任何复位清零。 奇偶校验错误 – PERR 标志 若接收到数据出现奇偶校验错误,USR 寄存器中只读标志 PERR 置位。只有使 能了奇偶校验,选择了校验类型,此标志位才有效。此标志位同接收的数据分 别记录在 USR 寄存器和 TXR_RXR 寄存器中,此标志位可被任何复位清零。注 意,在读取相应的数据之前必须先访问 USR 寄存器中的 FERR 和 PERR 错误标 志位。 Rev. 1.10 162 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 UART 模块中断结构 几个独立的 UART 条件可以产生一个 UART 中断。当条件满足时,会产生一个 低脉冲信号。发送寄存器为空、发送器空闲、接收器数据有效、溢出和地址检 测和 RX 引脚唤醒都会产生中断。若 UART 中断允许且堆栈未满,程序将会跳 转到相应的中断向量执行中断服务程序,而后再返回主程序。其中四种情况, 若其 UCR2 寄存器中相应中断允许位被置位,则 USR 寄存器中对应中断标志位 将产生 UART 中断。发送器相关的两个中断情况有各自对应的中断允许位,而 接收器相关的两个中断情况共用一个中断允许位。这些允许位可用于禁止个别 的 UART 中断源。 地 址 检 测 也 是 UART 的 中 断 源, 它 没 有 相 应 的 标 志 位, 若 UCR2 寄 存 器 中 ADDEN=1, 当 检 测 到 地 址 将 会 产 生 UART 中 断。RX 引 脚 唤 醒 也 可 以 产 生 UART 中 断, 它 没 有 相 应 的 标 志 位, 当 UART 时 钟 源 fH 关 闭 且 UXR2 中 的 WAKE 和 RIE 位被置位,RX 引脚上有下降沿时会产生 UART 中断。 注意,USR 寄存器标志位为只读状态,软件不能对其进行设置,和其它一些中 断一样,在进入相应中断服务程序时也不能清除这些标志位。这些标志位仅在 UART 特定动作发生时才会自动被清除,详细解释见 UART 寄存器章节。整体 UART 中断的使能或除能可由中断控制寄存器中的相关中断使能控制位控制, 其中断请求由 UART 模块决定。 USR Register UCR2 Register Transmitter Empty Flag TXIF TEIE Transmitter Idle Flag TIDLE TIIE 1 RIE OR Receiver Data Available RXIF WAKE 0 1 Receiver Overrun Flag OERR RX Pin Wake-up 0 ADDEN 0 URE 0 1 EMI 0 1 Interrupt signal to MCU 1 0 1 0 UART Interrupt Request Flag URF 0 1 RX7 if BNO=0 RX8 if BNO=1 1 UCR2 Register UART 中断框图 Rev. 1.10 163 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 地址检测模式 置位 UCR2 寄存器中的 ADDEN 将启动地址检测模式。若此位为“1”,可产生 接收数据有效中断,其请求标志位为 RXIF。若 ADDEN 有效,只有在接收到数 据最高位为 1 才会产生中断,中断允许位 URE 和 EMI 也要使能才会产生中断。 地址的最高位为第 9 位 (BNO=1) 或第 8 位 (BNO=0),若此位为高,则接收到的 是地址而非数据。只有接收的数据的最后一位为高才会产生中断。若 ADDEN 除能,每接收到一个有效数据便会置位 RXIF,而不用考虑数据的最后一位。地 址检测和奇偶校验在功能上相互排斥,若地址检测模式使能,为了确保操作正 确,必须将奇偶校验使能位清零以除能奇偶校验。 ADDEN 0 1 Bit 9 (BNO=1) Bit 8 (BNO=0) 0 1 0 1 产生 UART 中断 √ √ × √ ADDEN 位功能 UART 模块暂停和唤醒 UART 时钟 fH 关闭后 UART 模块将停止运行。当传送数据时 UART 时钟 fH 关闭, 发送将停止直到 UART 模块时钟再次使能。同样地,当接收数据时单片机进入 空闲或休眠模式,数据接收也会停止。当单片机进入空闲或休眠模式,USR、 UCR1、UCR2、接收 / 发送寄存器以及 BRG 寄存器都不会受到影响。建议在单 片机进入空闲或休眠模式前先确保数据发送或接收已完成。 UART 功能中包括了 RX 引脚的唤醒功能,由 UCR2 寄存器中 WAKE 位控制。 当 UART 时钟 fH 关闭时,若 WAKE 位与 UART 允许位 UARTEN、接收器允许 位 RXEN 和接收器中断允许位 RIE 都被置位,则 RX 引脚的下降沿可触发产生 RX 引脚唤醒 UART 的中断。唤醒后系统需延时一段时间才能正常工作,在此 期间,RX 引脚上的任何数据将被忽略。 若要唤醒并产生 UART 中断,除了唤醒使能控制位和接收中断使能控制位需置 位外,全局中断允许位 EMI 和 UART 中断使能控制位 URE 也必须置位;若这 两控制位没有被置位,那么,单片机将可以被唤醒但不会产生中断。同样唤醒 后系统需一定的延时才能正常工作,然后才会产生 UART 中断。 Rev. 1.10 164 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 带 SCOM 功能的 LCD 该单片机具有驱动外部 LCD 面板的能力。LCD 驱动的 COM 脚 SCOM0~SCOM3 与 I/O 口共用。LCD 控制信号(COM 和 SEG)由软件编程实现。 LCD 操作 单片机通过设置输入 / 输出口作为 COM 引脚以驱动外部的液晶面板。LCD 驱 动功能是由 SCOMC 寄存器来控制,该寄存器除了可设置 LCD 的开启和关闭外 还可控制输出偏压值等功能,使得 COM 口输出 VDD/2 的电压,从而实现 1/2 bias LCD 的显示。                                                       LCD COM 偏压 SCOMC 寄存器中的 SCOMEN 位是 LCD 驱动的主控制位,LCD 的 SCOMn 引 脚可通过正确配置相关的引脚共用功能选择寄存器用于 LCD 驱动。需注意的 是,端口控制寄存器不需要先设置为输出以使能 LCD 驱动操作。 LCD 偏压控制 LCD 驱动器可以提供多种驱动电流选择以适应不同 LCD 面板的需求。通过设 置 SCOMC 寄存器中 ISEL0 位和 ISEL1 位可以配置不同的偏压电阻以生成不同 的偏置电压。 SCOMC 寄存器 Bit Name R/W POR Rev. 1.10 7 ─ ─ ─ 6 ISEL1 R/W 0 5 ISEL0 R/W 0 4 SCOMEN R/W 0 3 ─ ─ ─ 2 ─ ─ ─ 1 ─ ─ ─ 0 ─ ─ ─ Bit 7 未定义,读为“0” Bit 6~5 ISEL1~ISEL0:选择 R 型 LCD 的典型偏压电阻(VDD=5V) 00:2×100kΩ (1/2 Bias),IBIAS = 25μA@(VDD=5V) 01:2×50kΩ (1/2 Bias),IBIAS = 50μA@(VDD=5V) 10:2×25kΩ (1/2 Bias),IBIAS = 100μA@(VDD=5V) 11:2×12.5kΩ (1/2 Bias),IBIAS = 200μA@(VDD=5V) Bit 4 SCOMEN:LCD 模块控制位 0:除能 1:使能 当 SCOMEN 位为高时,所选择的电阻将被开启以产生 1/2 VDD 的偏压。 Bit 3~0 未定义,读为“0” 165 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 中断 中断是单片机一个重要功能。当外部事件或内部功能如定时器模块或 A/D 转换 器有效,并且产生中断时,系统会暂时中止当前的程序而转到执行相对应的中 断服务程序。此系列单片机提供多个外部中断和内部中断功能,外部中断由 INTn 引脚动作产生,而内部中断由各种内部功能,如定时器模块、比较器、时 基、LVD、EEPROM、SIM、UART 和 A/D 转换器等产生。 中断寄存器 中断控制基本上是在一定单片机条件发生时设置请求标志位,应用程序中中断 使能位的设置是通过位于专用数据存储器中的一系列寄存器控制的。寄存器总 的分为三类。第一类是 INTC0~INTC2 寄存器,用于设置基本的中断;第二类 是 MFI0~MFI2 寄存器,用于设置多功能中断;最后一种为 INTEG 寄存器,用 于设置外部中断边沿触发类型。 寄存器中含有中断控制位和中断请求标志位。中断控制位用于使能或除能各种 中断,中断请求标志位用于存放当前中断请求的状态。它们都按照特定的模式 命名,前面表示中断类型的缩写,紧接着的字母“E”代表使能 / 除能位,“F” 代表请求标志位。 功能 总中断 INTn 脚 比较器 多功能中断 A/D 转换器 时基 SIM UART LVD EEPROM CTM STM PTM 使能位 EMI INTnE CPE MFnE ADE TBnE SIME URE LVE DEE CTMPE CTMAE STMPE STMAE PTMPE PTMAE 请求标志 ─ INTnF CPF MFnF ADF TBnF SIMF URF LVF DEF CTMPF CTMAF STMPF STMAF PTMPF PTMAF 注释 ─ n=0 或 1 ─ n=0~2 ─ n=0 或 1 ─ ─ ─ ─ ─ ─ ─ 中断寄存器位命名模式 Rev. 1.10 166 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 寄存器 名称 INTEG INTC0 INTC1 INTC2 MFI0 MFI1 MFI2 位 7 6 5 4 3 2 1 0 ─ ─ ─ ─ INT1S1 INT1S0 INT0S1 INT0S0 ─ MF0F CPF INT0F MF0E CPE INT0E EMI TB0F ADF MF2F MF1F TB0E ADE MF2E MF1E URF SIMF INT1F TB1F URE SIME INT1E TB1E ─ ─ STMAF STMPF ─ ─ STMAE STMPE CTMAF CTMPF PTMAF PTMPF CTMAE CTMPE PTMAE PTMPE ─ ─ DEF LVF ─ ─ DEE LVE 中断寄存器列表 INTEG 寄存器 Bit Name R/W POR 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ 3 2 1 0 INT1S1 INT1S0 INT0S1 INT0S0 R/W R/W R/W R/W 0 0 0 0 Bit 7~4 未定义,读为“0” Bit 3~2 INT1S1~INT1S0:INT1 脚中断边沿控制位 00:除能 01:上升沿 10:下降沿 11:双沿 Bit 1~0 INT0S1~INT0S0:INT0 脚中断边沿控制位 00:除能 01:上升沿 10:下降沿 11:双沿 INTC0 寄存器 Bit Name R/W POR Rev. 1.10 7 ─ ─ ─ 6 MF0F R/W 0 5 CPF R/W 0 4 INT0F R/W 0 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:使能 167 3 MF0E R/W 0 2 CPE R/W 0 1 INT0E R/W 0 0 EMI R/W 0 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 2 CPE:比较器中断控制位 0:除能 1:使能 Bit 1 INT0E:INT0 中断控制位 0:除能 1:使能 Bit 0 EMI:总中断控制位 0:除能 1:使能 INTC1 寄存器 Bit Name R/W POR 7 TB0F R/W 0 6 ADF R/W 0 5 MF2F R/W 0 4 MF1F R/W 0 Bit 7 TB0F:时基 0 中断请求标志位 0:无请求 1:中断请求 Bit 6 ADF:A/D 转换器中断请求标志位 0:无请求 1:中断请求 Bit 5 MF2F:多功能中断 2 中断请求标志位 0:无请求 1:中断请求 Bit 4 MF1F:多功能中断 1 中断请求标志位 0:无请求 1:中断请求 Bit 3 TB0E:时基 0 中断控制位 0:除能 1:使能 Bit 2 ADE:A/D 转换器中断控制位 0:除能 1:使能 Bit 1 MF2E:多功能中断 2 中断控制位 0:除能 1:使能 Bit 0 MF1E:多功能中断 1 中断控制位 0:除能 1:使能 3 TB0E R/W 0 2 ADE R/W 0 1 MF2E R/W 0 0 MF1E R/W 0 3 URE R/W 0 2 SIME R/W 0 1 INT1E R/W 0 0 TB1E R/W 0 INTC2 寄存器 Bit Name R/W POR Bit 7 Rev. 1.10 7 URF R/W 0 6 SIMF R/W 0 5 INT1F R/W 0 4 TB1F R/W 0 URF:UART 中断请求标志位 0:无请求 1:中断请求 168 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Bit 6 SIMF:SIM 中断请求标志位 0:无请求 1:中断请求 Bit 5 INT1F:INT1 中断请求标志位 0:无请求 1:中断请求 Bit 4 TB1F:时基 1 中断请求标志位 0:无请求 1:中断请求 Bit 3 URE:UART 中断控制位 0:除能 1:使能 Bit 2 SIME:SIM 中断控制位 0:除能 1:使能 Bit 1 INT1E:INT1 中断控制位 0:除能 1:使能 Bit 0 TB1E:时基 1 中断控制位 0:除能 1:使能 MFI0 寄存器 Bit Name R/W POR Rev. 1.10 7 ─ ─ ─ 6 ─ ─ ─ 5 4 STMAF STMPF R/W R/W 0 0 3 ─ ─ ─ Bit 7~6 未定义,读为“0” Bit 5 STMAF:STM 比较器 A 匹配中断请求标志位 0:无请求 1:中断请求 Bit 4 STMPF:STM 比较器 P 匹配中断请求标志位 0:无请求 1:中断请求 Bit 3~2 未定义,读为“0” Bit 1 STMAE:STM 比较器 A 匹配中断控制位 0:除能 1:使能 Bit 0 STMPE:STM 比较器 P 匹配中断控制位 0:除能 1:使能 169 2 ─ ─ ─ 1 0 STMAE STMPE R/W R/W 0 0 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 MFI1 寄存器 Bit Name R/W POR Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 7 6 5 4 3 2 1 0 CTMAF CTMPF PTMAF PTMPF CTMAE CTMPE PTMAE PTMPE R/W R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 0 CTMAF:CTM 比较器 A 匹配中断请求标志位 0:无请求 1:中断请求 CTMPF:CTM 比较器 P 匹配中断请求标志位 0:无请求 1:中断请求 PTMAF:PTM 比较器 A 匹配中断请求标志位 0:无请求 1:中断请求 PTMPF:PTM 比较器 P 匹配中断请求标志位 0:无请求 1:中断请求 CTMAE:CTM 比较器 A 匹配中断控制位 0:除能 1:使能 CTMPE:CTM 比较器 P 匹配中断控制位 0:除能 1:使能 PTMAE:PTM 比较器 A 匹配中断控制位 0:除能 1:使能 PTMPE:PTM 比较器 P 匹配中断控制位 0:除能 1:使能 MFI2 寄存器 Bit Name R/W POR Rev. 1.10 7 ─ ─ ─ 6 ─ ─ ─ 5 DEF R/W 0 4 LVF R/W 0 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:使能 170 3 ─ ─ ─ 2 ─ ─ ─ 1 DEE R/W 0 0 LVE R/W 0 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 中断操作 若中断事件条件产生,如一个 TM 比较器 P、比较器 A 匹配或 A/D 转换结束等 等,相关中断请求标志将置起。中断标志产生后程序是否会跳转至相关中断向 量执行是由中断使能位的条件决定的。若使能位为“1”,程序将跳至相关中断 向量中执行;若使能位为“0”,即使中断请求标志置起中断也不会发生,程序 也不会跳转至相关中断向量执行。若总中断使能位为“0”,所有中断都将除能。 当中断发生时,下条指令的地址将被压入堆栈。相应的中断向量地址加载至 PC 中。系统将从此向量取下条指令。中断向量处通常为跳转指令,以跳转到相应 的中断服务程序。中断服务程序必须以“RETI”指令返回至主程序,以继续执 行原来的程序。 各个中断使能位以及相应的请求标志位,以优先级的次序显示在下图。一些中 断源有自己的向量,但是有些中断却共用多功能中断向量。一旦中断子程序被 响应,系统将自动清除 EMI 位,所有其它的中断将被屏蔽,这个方式可以防止 任何进一步的中断嵌套。其它中断请求可能发生在此期间,虽然中断不会立即 响应,但是中断请求标志位会被记录。 如果某个中断服务子程序正在执行时,有另一个中断要求立即响应,那么 EMI 位应在程序进入中断子程序后置位,以允许此中断嵌套。如果堆栈已满,即使 此中断使能,中断请求也不会被响应,直到 SP 减少为止。如果要求立刻动作, 则堆栈必须避免成为储满状态。请求同时发生时,执行优先级如下流程图所示。 所有被置起的中断请求标志都可把单片机从休眠或空闲模式中唤醒,若要防止 唤醒动作发生,在单片机进入休眠或空闲模式前应将相应的标志置起。 Legend xxF Request Flag, no auto reset in ISR xxF Request Flag, auto reset in ISR xxE Enable Bits EMI auto disabled in ISR Interrupt Name INT0 Pin Request Flags INT0F Enable Bits INT0E Master Enable EMI Vector Comparator CPF CPE EMI 08H M. Funct. 0 MF0F MF0E EMI 0CH M. Funct. 1 MF1F MF1E EMI 10H 04H STMP STMPF STMPE STMA STMAF STMAE PTMP PTMPF PTMPE PTMA PTMAF PTMAE CTMP CTMPF CTMPE CTMA CTMAF CTMAE M. Funct. 2 MF2F MF2E EMI 14H LVD LVF LVE A/D Converter ADF ADE EMI 18H EEPROM DEF DEE Time Base 0 TB0F TB0E EMI 1CH Time Base 1 TB1F TB1E EMI 20H INT1 Pin INT1F INT1E EMI 24H SIM SIMF SIME EMI 28H UART URF URE EMI 2CH Interrupts contained within Multi-Function Interrupts Priority High Low 中断结构 Rev. 1.10 171 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 外部中断 通过 INTn 引脚上的信号变化可控制外部中断。当触发沿选择位设置好触发类 型,INTn 引脚的状态发生变化,外部中断请求标志 INTnF 被置位时外部中断 请求产生。若要跳转到相应中断向量地址,总中断控制位 EMI 和相应中断使能 位 INTnE 需先被置位。此外,必须使用 INTEG 寄存器使能外部中断功能并选 择触发沿类型。外部中断引脚和普通 I/O 口共用,如果相应寄存器中的中断使 能位被置位,此引脚将被作为外部中断脚使用。此时该引脚必须通过设置控制 寄存器,将该引脚设置为输入口。当中断使能,堆栈未满并且外部中断脚状态 改变,将调用外部中断向量子程序。当响应外部中断服务子程序时,中断请求 标志位 INTnF 会自动复位且 EMI 位会被清零以除能其它中断。注意,即使此引 脚被用作外部中断输入,其上拉电阻选择仍保持有效。 寄存器 INTEG 被用来选择有效的边沿类型,来触发外部中断。可以选择上升沿 还是下降沿或双沿触发都产生外部中断。注意 INTEG 也可以用来除能外部中断 功能。 比较器中断 比较器中断由内部比较器控制。当比较器输出位状态改变,比较器中断请求标 志 CPF 被置位,比较器中断请求产生。若要跳转到相应中断向量地址,总中断 控制位 EMI 和比较器中断使能位 CPE 需先被置位。当中断使能,堆栈未满并 且比较器输入产生一个比较器输出变化时,将调用比较器中断向量子程序。当 响应中断服务子程序时,外部中断请求标志位会自动复位且 EMI 位会被清零以 除能其它中断。 多功能中断 此单片机中有三个多功能中断,与其它中断不同,它没有独立源,但由其它现 有的中断源构成,即 TM 中断,LVD 中断和 EEPROM 中断。 当多功能中断中任何一种中断请求标志 MFnF 被置位,多功能中断请求产生。 当中断使能,堆栈未满,包括在多功能中断中的任意一个中断发生时,将调用 多功能中断向量中的一个子程序。当响应中断服务子程序时,相关的多功能请 求标志位会自动复位且 EMI 位会自动清零以除能其它中断。 但必须注意的是,在中断响应时,虽然多功能中断标志会自动复位,但多功能 中断源的请求标志位,即 TM 中断,LVD 中断和 EEPROM 中断的请求标志位 不会自动复位,必须由应用程序清零。 A/D 转换器中断 A/D 转换器中断由 A/D 转换动作的结束来控制。当 A/D 转换器中断请求标志被 置位,即 A/D 转换过程完成时,中断请求发生。当总中断使能位 EMI 和 A/D 中断使能位 ADE 被置位,允许程序跳转到各自的中断向量地址。当中断使能, 堆栈未满且 A/D 转换动作结束时,将调用它们各自的中断向量子程序。当响应 中断服务子程序时,相应的中断请求标志位 ADF 会自动清零。EMI 位也会被 清零以除能其它中断。 Rev. 1.10 172 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 时基中断 时基中断提供一个固定周期的中断信号,由各自的定时器功能产生溢出信号控 制。当各自的中断请求标志 TB0F 或 TB1F 被置位时,中断请求发生。当总中 断使能位 EMI 和时基使能位 TB0E 或 TB1E 被置位,允许程序跳转到各自的中 断向量地址。当中断使能,堆栈未满且时基溢出时,将调用它们各自的中断向 量子程序。当响应中断服务子程序时,相应的中断请求标志位 TB0F 或 TB1F 会自动复位且 EMI 位会被清零以除能其它中断。 时基中断的目的是提供一个固定周期的中断信号,时钟源 fPSC0 或 fPSC1SK 可通过 PSC0R 或 PSC1R 寄存器选择来自内部时钟源 fSYS,fSYS/4 或 fSUB。选择的输入时 钟首先经过分频器,分频率由程序设置 TB0C 或 TB1C 寄存器相关位获取合适 的分频值以提供更长的时基中断周期。 fSYS fSYS/4 fSUB M U X fPSC0 TB0ON fPSC0/28 ~ fPSC0/215 Prescaler 0 M U X TB0[2:0] CLKSEL0[1:0] fSYS fSYS/4 fSUB M U X fPSC1 Time Base 0 Interrupt fPSC1/28 ~ fPSC1/215 Prescaler 1 M U X TB1ON CLKSEL1[1:0] Time Base 1 Interrupt TB1[2:0] 时基中断 PSC0R 寄存器 Bit Name R/W POR 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ 3 ─ ─ ─ 2 ─ ─ ─ Bit 7~2 未定义,读为“0” Bit 1~0 CLKSEL01~CLKSEL00:预分频器 0 时钟源选择 00:fSYS 01:fSYS/4 1x:fSUB 1 0 CLKSEL01 CLKSEL00 R/W R/W 0 0 PSC1R 寄存器 Bit Name R/W POR Rev. 1.10 7 ─ ─ ─ 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ 3 ─ ─ ─ 2 ─ ─ ─ Bit 7~2 未定义,读为“0” Bit 1~0 CLKSEL11~CLKSEL10:预分频器 1 时钟源选择 00:fSYS 01:fSYS/4 1x:fSUB 173 1 CLKSEL11 R/W 0 0 CLKSEL10 R/W 0 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 TB0C 寄存器 Bit Name R/W POR 7 TB0ON R/W 0 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ Bit 7 TB0ON:时基 0 控制位 0:除能 1:使能 Bit 6~3 未定义,读为“0” Bit 2~0 TB02~TB00:时基 0 溢出周期选择位 000:28/fPSC0 001:29/fPSC0 010:210/fPSC0 011:211/fPSC0 100:212/fPSC0 101:213/fPSC0 110:214/fPSC0 111:215/fPSC0 3 ─ ─ ─ 2 TB02 R/W 0 1 TB01 R/W 0 0 TB00 R/W 0 3 ─ ─ ─ 2 TB12 R/W 0 1 TB11 R/W 0 0 TB10 R/W 0 TB1C 寄存器 Bit Name R/W POR Rev. 1.10 7 TB1ON R/W 0 6 ─ ─ ─ 5 ─ ─ ─ 4 ─ ─ ─ Bit 7 TB1ON:时基 1 控制位 0:除能 1:使能 Bit 6~3 未定义,读为“0” Bit 2~0 TB12~TB10:时基 1 溢出周期选择位 000:28/fPSC1 001:29/fPSC1 010:210/fPSC1 011:211/fPSC1 100:212/fPSC1 101:213/fPSC1 110:214/fPSC1 111:215/fPSC1 174 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 EEPROM 中断 EEPROM 中断属于多功能中断。当写周期结束,EEPROM 中断请求标志 DEF 被置位,EEPROM 中断请求产生。若要程序跳转到相应中断向量地址,总中断 控制位 EMI、EEPROM 中断使能位 DEE 和相应多功能中断使能位需先被置位。 当中断使能,堆栈未满且 EEPROM 写周期结束时,可跳转至相关多功能中断向 量子程序中执行。当 EEPROM 中断响应,EMI 将被自动清零以除能其它中断, 多功能中断请求标志也可自动清除,但 DEF 标志需在应用程序中手动清除。 LVD 中断 LVD 中断属于多功能中断。当低电压检测功能检测到一个低电压时,LVD 中断 请求标志 LVF 被置位,LVD 中断请求产生。若要程序跳转到相应中断向量地址, 总中断控制位 EMI、低电压中断使能位 LVE 和相应多功能中断使能位需先被置 位。当中断使能,堆栈未满且低电压条件发生时,可跳转至相关多功能中断向 量子程序中执行。当低电压中断响应,EMI 将被自动清零以除能其它中断,多 功能中断请求标志也可自动清除,但 LVF 标志需在应用程序中手动清除。 TM 中断 简易型、标准型和周期型 TM 各有两个中断。所有的 TM 中断都属于多功能中 断。每个 TM 各有两个中断请求标志位及两个使能位。当 TM 比较器 P、A 匹 配情况发生时,任意 TM 中断请求标志被置位,TM 中断请求产生。 若要程序跳转到相应中断向量地址,总中断控制位 EMI、相应 TM 中断使能位 和相关多功能中断使能位 MFnE 需先被置位。当中断使能,堆栈未满且 TM 比 较器匹配情况发生时,可跳转至相关多功能中断向量子程序中执行。当 TM 中 断响应,EMI 将被自动清零以除能其它中断,相关 MFnF 标志也可自动清除, 但 TM 中断请求标志需在应用程序中手动清除。 SIM 中断 串行接口模块中断,即 SIM 中断。当一个字节数据已由 SIM 接口接收或发送完, 或 I2C 从机地址匹配,或 I2C 超时,中断请求标志 SIMF 被置位,SIM 中断请求 产生。若要程序跳转到相应中断向量地址,总中断控制位 EMI 和串行接口中断 使能位 SIME 需先被置位。当中断使能,堆栈未满且以上任一种情况发生时, 可跳转至相关多功能中断向量子程序中执行。当响应中断服务子程序时,串行 接口中断标志位 SIMF 会自动复位且 EMI 将被自动清零以除能其它中断。 UART 中断 UART 模块中,发送器为空、发送器空闲、接收器数据有效、接收器溢出、地 址检测和 RX 引脚唤醒都会触发产生 UART 中断。当整体 UART 中断请求标志 位被置位,即以上任何一种情况发生时,中断请求发生。当总中断使能位 EMI 和 UART 中断使能位 URE 被置位,允许程序跳转到相应的中断向量地址。当 中断使能,堆栈未满且以上任何一种情况发生时,将调用 UART 中断向量子程 序。当响应中断服务子程序时,相应的中断请求标志位 URF 会自动清零。EMI 位也会被清零以除能其它中断。而 UART 模块中的只读中断标志位仅在 UART 特定动作发生时才会自动被清除。更多关于 UART 中断的细节请参考 UART 章 节。 Rev. 1.10 175 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 中断唤醒功能 每个中断都具有将处于休眠或空闲模式的单片机唤醒的能力。当中断请求标志 由低到高转换时唤醒动作产生,其与中断是否使能无关。因此,尽管单片机处 于休眠或空闲模式且系统振荡器停止工作,如有外部中断脚上产生外部边沿跳 变,低电压或比较器输入改变都可能导致其相应的中断标志被置位,由此产生 中断,因此必须注意避免伪唤醒情况的发生。若中断唤醒功能被除能,单片机 进入休眠或空闲模式前相应中断请求标志应被置起。中断唤醒功能不受中断使 能位的影响。 编程注意事项 通过禁止相关中断使能位,可以屏蔽中断请求,然而,一旦中断请求标志位被 设定,它们会被保留在中断控制寄存器内,直到相应的中断服务子程序执行或 请求标志位被软件指令清除。 多功能中断中所含中断相应程序执行时,多功能中断请求标志 MFnF 可以自动 清零,但各自的请求标志需在应用程序中手动清除。 建议在中断服务子程序中不要使用“CALL 子程序”指令。中断通常发生在不 可预料的情况或是需要立刻执行的某些应用。假如只剩下一层堆栈且没有控制 好中断,当“CALL 子程序”在中断服务子程序中执行时,将破坏原来的控制 序列。 所有中断在休眠或空闲模式下都具有唤醒功能,当中断请求标志发生由低到高 的转变时都可产生唤醒功能。若要避免相应中断产生唤醒动作,在单片机进入 休眠或空闲模式前需先将相应请求标志置为高。 当进入中断服务程序,系统仅将程序计数器的内容压入堆栈,如果中断服务程 序会改变状态寄存器或其它的寄存器的内容而破坏控制流程,应事先将这些数 据保存起来。 若从中断子程序中返回可执行 RET 或 RETI 指令。除了能返回至主程序外, RETI 指令还能自动设置 EMI 位为高,允许进一步中断。RET 指令只能返回至 主程序,清除 EMI 位,除能进一步中断。 Rev. 1.10 176 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 低电压检测 – LVD 此单片机具有低电压检测功能,即 LVD。该功能使能用于监测电源电压 VDD, 若电源电压低于一定值可提供一个警告信号。此功能在电池类产品中非常有用, 在电池电压较低时产生警告信号。低电压检测也可产生中断信号。 LVD 寄存器 低电压检测功能由 LVDC 寄存器控制。VLVD2~VLVD0 位用于选择 8 个固定的 电压中的一个参考点。LVDO 位被置位时低电压情况发生,若 LVDO 位为低表 明 VDD 电压工作在当前所设置低电压水平值之上。LVDEN 位用于控制低电压 检测功能的开启 / 关闭,设置此位为高使能此功能,反之,关闭内部低电压检 测电路。低电压检测会有一定的功耗,在不使用时可考虑关闭此功能,此举在 功耗要求严格的电池供电应用中值得考虑。 LVDC 寄存器 Bit Name R/W POR Rev. 1.10 7 ─ ─ ─ 6 ─ ─ ─ 5 LVDO R 0 Bit 7~6 未定义,读为“0” Bit 5 LVDO:LVD 输出标志位 0:未检测到低电压 1:检测到低电压 Bit 4 LVDEN:低电压检测控制位 0:除能 1:使能 4 LVDEN R/W 0 3 D3 R/W 0 2 1 0 VLVD2 VLVD1 VLVD0 R/W R/W R/W 0 0 0 Bit 3 此位建议固定为”0”。若置为高,将会增加不必要的功耗。 Bit 2~0 VLVD2~VLVD0:选择 LVD 电压位 000:1.8V 001:2.0V 010:2.4V 011:2.7V 100:3.0V 101:3.3V 110:3.6V 111:4.0V 177 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LVD 操作 通过比较电源电压 VDD 与存储在 LVDC 寄存器中的预置电压值的结果,低电压 检测功能工作。其设置的范围为 1.8V~4.0V。当电源电压 VDD 低于预置电压值 时,LVDO 位被置为高,表明低电压产生。低电压检测功能由一个自动使能的 参考电压提供。在休眠模式下,即使 LVDEN 位为高,低电压检测器也会除能。 低电压检测器使能后,读取 LVDO 位前,电路稳定需要一定的延时 tLVDS。注意, VDD 电压可能上升或下降比较缓慢,在 VLVD 电压值附近时,LVDO 位可能有多 种变化。 VLVDIN or VDD VLVD LVDEN LVDO tLVDS LVD 操作 低电压检测器也有自己的中断功能,属于多功能中断的一种,它是除了轮询 LVDO 位之外的另一种检测低电压的方法。中断条件产生置位 LVDO 并延时 tLVD 后,中断产生。此种情况下,若 VDD 降至小于 LVD 预置电压值时,中断请 求标志位 LVF 将被置位,中断产生,单片机将从休眠或空闲模式中被唤醒。若 不要求低电压检测的唤醒功能使能,在单片机进入休眠或空闲模式前应将 LVF 标志置为高。 Rev. 1.10 178 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 配置选项 配置选项在烧写程序时写入芯片。通过 HT-IDE 的软件开发环境,使用者在开 发过程中可以选择配置选项。由于使用的是硬件工具将配置选项烧入单片机, 之后无法再通过应用程序修改。所有的选项必须按系统的需要定义,具体内容 可参考下表: 序号 选项 振荡器选项 HIRC 频率选择 ( 仅用于烧录器调整或 EV 调整代码时使用 ) 4MHz 1 8MHz 12MHz HXT 模式选择(用于低电压模式): 2 由应用程序选择 HXT > 10MHz 或 ≤ 8MHz @ 1.8V Rev. 1.10 179 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 应用电路 VDD VDD 0.1µF VSS OSC Circuit OSC1 OSC2 See Oscillator Section OSC Circuit PA0~PA7 PB0~PB7 PC0~PC7 PD0~PD6 PE0~PE4 PF0~PF7 XT1 XT2 See Oscillator Section Rev. 1.10 180 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 指令集 简介 任何单片机成功运作的核心在于它的指令集,此指令集为一组程序指令码,用 来指导单片机如何去执行指定的工作。在 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. 1.10 181 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 分支和控制转换 程序分支是采取使用 JMP 指令跳转至指定地址或使用 CALL 指令调用子程序的 形式,两者之不同在于当子程序被执行完毕后,程序必须马上返回原来的地址。 这个动作是由放置在子程序里的返回指令 RET 来实现,它可使程序跳回 CALL 指令之后的地址。在 JMP 指令中,程序则只是跳到一个指定的地址而已,并不 需如 CALL 指令般跳回。一个非常有用的分支指令是条件跳转,跳转条件是由 数据存储器或指定位来加以决定。遵循跳转条件,程序将继续执行下一条指令 或略过且跳转至接下来的指令。这些分支指令是程序走向的关键,跳转条件可 能是外部开关输入,或是内部数据位的值。 位运算 提供数据存储器中单个位的运算指令是盛群单片机的特性之一。这特性对于输 出端口位的设置尤其有用,其中个别的位或端口的引脚可以使用“SET [m].i” 或“CLR [m].i”指令来设定其为高位或低位。如果没有这特性,程序设计师必 须先读入输出口的 8 位数据,处理这些数据,然后再输出正确的新数据。这种 读入 - 修改 - 写出的过程现在则被位运算指令所取代。 查表运算 数据的储存通常由寄存器完成,然而当处理大量固定的数据时,它的存储量常 常造成对个别存储器的不便。为了改善此问题,盛群单片机允许在程序存储器 中建立一个表格作为数据可直接存储的区域,只需要一组简易的指令即可对数 据进行查表。 其它运算 除了上述功能指令外,其它指令还包括用于省电的“HALT”指令和使程序在极 端电压或电磁环境下仍能正常工作的看门狗定时器控制指令。这些指令的使用 则请查阅相关的章节。 Rev. 1.10 182 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 指令集概要 当要操作的数据存储器位于数据存储器 Sector 0 时,下表说明了与数据存储器 存取有关的指令。 惯例 x:立即数 m:数据存储器地址 A:累加器 i:第 0~7 位 addr:程序存储器地址 助记符 说明 指令 周期 影响标志位 1 Z,C,AC,OV, SC 1注 Z,C,AC,OV, SC 1 Z,C,AC,OV, SC 1 Z,C,AC,OV, SC 1注 Z,C,AC,OV, SC 算术运算 ADD A,[m] ACC 与数据存储器相加,结果放入 ACC ADDM A,[m] ACC 与数据存储器相加,结果放入数据存储器 ADD ADC A,x ACC 与立即数相加,结果放入 ACC A,[m] ACC 与数据存储器、进位标志相加,结果放入 ACC ADCM A,[m] ACC 与数据存储器、进位标志相加,结果放入数据存储器 SUB A,x ACC 与立即数相减,结果放入 ACC 1 Z,C,AC,OV, SC,CZ SUB A,[m] ACC 与数据存储器相减,结果放入 ACC 1 Z,C,AC,OV, SC,CZ 1注 Z,C,AC,OV, SC,CZ 1 Z,C,AC,OV, SC,CZ 1注 Z,C,AC,OV, SC,CZ 1 Z,C,AC,OV, SC,CZ SUBM A,[m] ACC 与数据存储器相减,结果放入数据存储器 SBC A,[m] ACC 与数据存储器、进位标志的反相减,结果放入 ACC SBCM A,[m] ACC 与数据存储器、进位标志相减,结果放入数据存储器 SBC A,x ACC 与立即数、进位标志相减,结果放入 ACC DAA [m] 将加法运算中放入 ACC 的值调整为十进制数,并将结果放入 1注 数据存储器 C 逻辑运算 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 1注 Z 1注 Z A,[m] ACC 与数据存储器做“或”运算,结果放入数据存储器 XORM A,[m] ACC 与数据存储器做“异或”运算,结果放入数据存储器 AND A,x ACC 与立即数做“与”运算,结果放入 ACC 1 Z OR A,x ACC 与立即数做“或”运算,结果放入 ACC 1 Z 1 Z 1注 Z XOR A,x ACC 与立即数做“异或”运算,结果放入 ACC CPL [m] Rev. 1.10 对数据存储器取反,结果放入数据存储器 183 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 指令 周期 影响标志位 对数据存储器取反,结果放入 ACC 1 Z 递增数据存储器,结果放入 ACC 1 Z 助记符 CPLA [m] 说明 递增和递减 INCA [m] INC [m] DECA [m] DEC 递增数据存储器,结果放入数据存储器 递减数据存储器,结果放入 ACC 1 注 1 [m] 递减数据存储器,结果放入数据存储器 RRA [m] 数据存储器右移一位,结果放入 ACC RR [m] 1 Z Z 注 Z 移位 RRCA [m] 数据存储器右移一位,结果放入数据存储器 带进位将数据存储器右移一位,结果放入 ACC RRC [m] 带进位将数据存储器右移一位,结果放入数据存储器 RLA [m] 数据存储器左移一位,结果放入 ACC RL [m] 数据存储器左移一位,结果放入数据存储器 RLCA [m] 带进位将数据存储器左移一位,结果放入 ACC RLC 带进位将数据存储器左移一位,结果放入数据存储器 [m] 1 1 无 注 1 1 无 C 注 C 1 无 1注 无 1 C 1注 C 数据传送 MOV A,[m] 将数据存储器送至 ACC 1 无 MOV [m],A 将 ACC 送至数据存储器 1注 无 MOV A,x 将立即数送至 ACC 1 无 清除数据存储器的位 1注 无 置位数据存储器的位 1 无 位运算 CLR [m].i SET [m].i 注 转移 JMP addr 无条件跳转 2 无 SZ [m] 如果数据存储器为零,则跳过下一条指令 1注 无 SZA [m] 数据存储器送至 ACC,如果内容为零,则跳过下一条指令 1注 无 SNZ [m] 如果数据存储器不为零,则跳过下一条指令 1 注 无 SZ [m].i 如果数据存储器的第 i 位为零,则跳过下一条指令 1注 无 SNZ [m].i 如果数据存储器的第 i 位不为零,则跳过下一条指令 1注 无 SIZ [m] 递增数据存储器,如果结果为零,则跳过下一条指令 1 注 无 SDZ [m] 递减数据存储器,如果结果为零,则跳过下一条指令 1注 无 SIZA [m] 递增数据存储器,将结果放入 ACC,如果结果为零,则跳过 下一条指令 1注 无 SDZA [m] 递减数据存储器,将结果放入 ACC,如果结果为零,则跳过 下一条指令 1注 无 CALL addr 子程序调用 2 无 从子程序返回 2 无 从子程序返回,并将立即数放入 ACC 2 无 从中断返回 2 无 2注 无 TABRDL [m] 读取最后页的 ROM 内容,并送至数据存储器和 TBLH 2 注 无 读表指针 TBLP 自加,读取当前页的 ROM 内容,并送至数 ITABRD [m] 据存储器和 TBLH 2 注 无 RET RET x A, RETI 查表 TABRD [m] Rev. 1.10 读取特定页的 ROM 内容,并送至数据存储器和 TBLH 184 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 助记符 说明 ITABRDL [m] 读表指针 TBLP 自加,读取最后页的 ROM 内容,并送至数 据存储器和 TBLH 指令 周期 影响标志位 2注 无 其它指令 NOP 1 无 CLR [m] 清除数据存储器 1注 无 SET [m] 置位数据存储器 1 CLR WDT 清除看门狗定时器 空指令 SWAP [m] 交换数据存储器的高低字节,结果放入数据存储器 SWAPA [m] 交换数据存储器的高低字节,结果放入 ACC HALT 进入暂停模式 注 无 1 TO,PDF 1注 无 1 无 1 TO,PDF 注:1. 对跳转指令而言,如果比较的结果牵涉到跳转即需 3 个周期,如果没有发生跳转,则只需一个周期。 2. 任何指令若要改变 PCL 的内容将需要 2 个周期来执行。 3. 对于“CLR WDT”指令而言,TO 和 PDF 标志位也许会受执行结果影响,“CLR WDT”被执行后, TO 和 PDF 标志位会被清除,否则 TO 和 PDF 标志位保持不变。 Rev. 1.10 185 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 扩展指令集 扩展指令用来提供更大范围的数据存储器寻址。当被存取的数据存储器位于 Sector 0 之外的任何数据存储器 Sector,扩展指令可直接存取数据存储器而无需 使用间接寻址,此举也提高了 CPU 韧体性能。 助记符 说明 指令 周期 影响标志位 2 Z,C,AC,OV, SC 2注 Z,C,AC,OV, SC 2 Z,C,AC,OV, SC 2注 Z,C,AC,OV, SC 2 Z,C,AC,OV, SC,CZ 2注 Z,C,AC,OV, SC,CZ 2 Z,C,AC,OV, SC,CZ 算术运算 LADD A,[m] ACC 与数据存储器相加,结果放入 ACC LADDM A,[m] ACC 与数据存储器相加,结果放入数据存储器 LADC A,[m] ACC 与数据存储器、进位标志相加,结果放入 ACC LADCM A,[m] ACC 与数据存储器、进位标志相加,结果放入数据存储器 LSUB ACC 与数据存储器相减,结果放入 ACC A,[m] LSUBM A,[m] ACC 与数据存储器相减,结果放入数据存储器 LSBC ACC 与数据存储器、进位标志的反相减,结果放入 ACC A,[m] LSBCM A,[m] ACC 与数据存储器、进位标志相减,结果放入数据存储器 2注 Z,C,AC,OV, SC,CZ LDAA 将加法运算中放入 ACC 的值调整为十进制数,并将结果 放入数据存储器 2注 C [m] 逻辑运算 LAND A,[m] ACC 与数据存储器做“与”运算,结果放入 ACC 2 Z LOR ACC 与数据存储器做“或”运算,结果放入 ACC 2 Z LXOR A,[m] ACC 与数据存储器做“异或”运算,结果放入 ACC 2 Z LANDM A,[m] LORM A,[m] A,[m] ACC 与数据存储器做“与”运算,结果放入数据存储器 2 注 Z ACC 与数据存储器做“或”运算,结果放入数据存储器 2注 Z LXORM A,[m] ACC 与数据存储器做“异或”运算,结果放入数据存储器 2 注 Z LCPL 对数据存储器取反,结果放入数据存储器 2注 Z 2 Z [m] LCPLA [m] 对数据存储器取反,结果放入 ACC 递增和递减 LINCA [m] 递增数据存储器,结果放入 ACC LINC [m] 递增数据存储器,结果放入数据存储器 LDECA [m] 递减数据存储器,结果放入 ACC LDEC [m] 递减数据存储器,结果放入数据存储器 LRRA [m] 数据存储器右移一位,结果放入 ACC LRR [m] 数据存储器右移一位,结果放入数据存储器 2 Z 2注 Z 2 Z 2注 Z 移位 LRRCA [m] 带进位将数据存储器右移一位,结果放入 ACC LRRC [m] 带进位将数据存储器右移一位,结果放入数据存储器 LRLA [m] 数据存储器左移一位,结果放入 ACC LRL [m] 数据存储器左移一位,结果放入数据存储器 LRLCA [m] Rev. 1.10 带进位将数据存储器左移一位,结果放入 ACC 186 2 无 2注 无 2 C 2注 C 2 无 2注 无 2 C 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 助记符 LRLC 说明 [m] 带进位将数据存储器左移一位,结果放入数据存储器 指令 周期 影响标志位 2注 C 2 无 数据传送 LMOV A,[m] 将数据存储器送至 ACC LMOV [m],A 将 ACC 送至数据存储器 2 注 无 位运算 LCLR [m].i 清除数据存储器的位 2注 无 LSET [m].i 置位数据存储器的位 2注 无 转移 LSZ [m] 如果数据存储器为零,则跳过下一条指令 2注 无 LSZA [m] 数据存储器送至 ACC,如果内容为零,则跳过下一条指令 1注 无 LSNZ [m] 如果数据存储器不为零,则跳过下一条指令 2注 无 LSZ [m].i 如果数据存储器的第 i 位为零,则跳过下一条指令 2 注 无 LSNZ [m].i 如果数据存储器的第 i 位不为零,则跳过下一条指令 2注 无 LSIZ [m] 递增数据存储器,如果结果为零,则跳过下一条指令 2 注 无 LSDZ [m] 递减数据存储器,如果结果为零,则跳过下一条指令 2注 无 LSIZA [m] 递增数据存储器,将结果放入 ACC,如果结果为零,则跳 过下一条指令 2注 无 LSDZA [m] 递减数据存储器,将结果放入 ACC,如果结果为零,则跳 过下一条指令 2注 无 LTABRD [m] 读取当前页的 ROM 内容,并送至数据存储器和 TBLH 3注 无 LTABRDL [m] 读取最后页的 ROM 内容,并送至数据存储器和 TBLH 3注 无 LITABRD [m] 读表指针 TBLP 自加,读取当前页的 ROM 内容,并送至 数据存储器和 TBLH 3注 无 LITABRDL [m] 读表指针 TBLP 自加,读取最后页的 ROM 内容,并送至 数据存储器和 TBLH 3注 无 清除数据存储器 2注 无 注 无 查表 其它指令 LCLR [m] LSET [m] 置位数据存储器 2 LSWAP [m] 交换数据存储器的高低字节,结果放入数据存储器 2注 无 LSWAPA [m] 交换数据存储器的高低字节,结果放入 ACC 2 无 注:1. 对扩展跳转指令而言,如果比较的结果牵涉到跳转即需 4 个周期,如果没有发生跳转,则只需两 个周期。 2. 任何扩展指令若要改变 PCL 的内容将需要 3 个周期来执行。 Rev. 1.10 187 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 指令定义 ADC A,[m] 指令说明 功能表示 影响标志位 ADCM A,[m] 指令说明 功能表示 影响标志位 ADD A,[m] 指令说明 Add ACC to Data Memory with Carry 将指定的数据存储器、累加器内容和进位标志位相加, 结果存放到指定的数据存储器。 [m] ←ACC + [m] + C OV、Z、AC、C、SC 功能表示 影响标志位 Add Data Memory to ACC 将指定的数据存储器和累加器内容相加, 结果存放到累加器。 ACC ← ACC + [m] OV、Z、AC、C、SC ADD A,x 指令说明 功能表示 影响标志位 Add immediate data to ACC 将累加器和立即数相加,结果存放到累加器。 ACC ← ACC + x OV、Z、AC、C、SC ADDM A,[m] 指令说明 Add ACC to Data Memory 将指定的数据存储器和累加器内容相加, 结果存放到指定的数据存储器。 [m] ←ACC + [m] OV、Z、AC、C、SC 功能表示 影响标志位 AND A,[m] 指令说明 功能表示 影响标志位 Rev. 1.10 Add Data Memory to ACC with Carry 将指定的数据存储器、累加器内容以及进位标志相加, 结果存放到累加器。 ACC ← ACC + [m] + C OV、Z、AC、C、SC Logical AND Data Memory to ACC 将累加器中的数据和指定数据存储器内容做逻辑与, 结果存放到累加器。 ACC ← ACC“AND”[m] Z 188 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 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. 1.10 189 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 CPL [m] 指令说明 功能表示 影响标志位 CPLA [m] 指令说明 功能表示 影响标志位 DAA [m] 指令说明 Complement Data Memory with result in ACC 将指定数据存储器中的每一位取逻辑反,相当于从 1 变 0 或 0 变 1,而结果被储存回累加器且数据存储器中的内容 不变。 ACC←[m] Z 影响标志位 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 功能表示 功能表示 影响标志位 Rev. 1.10 Complement Data Memory 将指定数据存储器中的每一位取逻辑反, 相当于从 1 变 0 或 0 变 1。 [m] ← [m] Z 190 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 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 INCA [m] 指令说明 Increment Data Memory with result in ACC 将指定数据存储器的内容加 1,结果存放回累加器并保持 指定的数据存储器内容不变。 ACC ← [m] + 1 Z 功能表示 功能表示 影响标志位 JMP addr 指令说明 Rev. 1.10 功能表示 影响标志位 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 无 191 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 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 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 指令说明 功能表示 影响标志位 RET A,x 指令说明 功能表示 影响标志位 Rev. 1.10 无 Return from subroutine 将堆栈寄存器中的程序计数器值恢复, 程序由取回的地址继续执行。 Program Counter←Stack 无 Return from subroutine and load immediate data to ACC 将堆栈寄存器中的程序计数器值恢复且累加器载入指定的 立即数,程序由取回的地址继续执行。 Program Counter ← Stack ACC←x 无 192 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 RETI 指令说明 功能表示 影响标志位 无 RL [m] 指令说明 功能表示 Rotate Data Memory left 将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位。 [m].(i+1) ← [m].i (i=0~6) [m].0 ← [m].7 无 影响标志位 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] 指令说明 功能表示 影响标志位 Rev. 1.10 Return from interrupt 将堆栈寄存器中的程序计数器值恢复且中断功能通过设置 EMI 位重新使能。EMI 是控制中断使能的主控制位。如果 在执行 RETI 指令之前还有中断未被相应,则这个中断将 在返回主程序之前被相应。 Program Counter ←Stack EMI ← 1 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 193 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 RR [m] 指令说明 功能表示 影响标志位 RRA [m] 指令说明 功能表示 影响标志位 RRC [m] 指令说明 功能表示 影响标志位 RRCA [m] 指令说明 功能表示 影响标志位 SBC A,[m] 指令说明 功能表示 影响标志位 Rev. 1.10 Rotate Data Memory right 将指定数据存储器的内容循环右移 1 位且第 0 位移到 第 7 位。 [m].i ← [m].(i+1) (i=0~6) [m].7 ← [m].0 无 Rotate Data Memory right with result in ACC 将指定数据存储器的内容循环右移 1 位,第 0 位移到 第 7 位,移位结果存放到累加器,而指定数据存储器的内 容保持不变。 ACC.i ← [m].(i+1) (i=0~6) ACC.7 ← [m].0 无 Rotate Data Memory right through Carry 将指定数据存储器的内容连同进位标志右移 1 位, 第 0 位取代进位标志且原本的进位标志移到第 7 位。 [m].i ← [m].(i+1) (i=0~6) [m].7← C C ← [m].0 C 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 Subtract Data Memory from ACC with Carry 将累加器减去指定数据存储器的内容以及进位标志的反, 结果存放到累加器。如果结果为负,C 标志位清除为 0, 反之结果为正或 0,C 标志位设置为 1。 ACC ← ACC – [m] – C OV、Z、AC、C、SC、CZ 194 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 SBC A,x 指令说明 功能表示 影响标志位 SBCM A,[m] 指令说明 功能表示 影响标志位 SDZ [m] 指令说明 功能表示 影响标志位 SDZA [m] 指令说明 Rev. 1.10 Subtract immediate data from ACC with Carry 将累加器减去立即数以及进位标志,结果存放到累加器。 如果结果为负,C 标志位清除为 0,反之结果为正或 0, C 标志位设置为 1。 ACC ← ACC – [m] – C OV、Z、AC、C、SC、CZ 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 Skip if Decrement Data Memory is 0 将指定的数据存储器的内容减 1,判断是否为 0,若为 0 则 跳过下一条指令,由于取得下一个指令时会要求插入一个 空指令周期,所以此指令为 2 个周期的指令。如果结果不 为 0,则程序继续执行下一条指令。 [m] ← [m] -1,如果 [m]=0 跳过下一条指令执行 无 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 无 195 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 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] 指令说明 功能表示 影响标志位 SNZ [m].i 指令说明 功能表示 影响标志位 SNZ [m] 指令说明 功能表示 影响标志位 Rev. 1.10 Skip if increment Data Memory is zero with result in ACC 将指定数据存储器的内容加 1,判断是否为 0,如果为 0 则 跳过下一条指令,此结果会被存放到累加器,但是指定数 据存储器的内容不变。由于取得下一个指令时会要求插入 一个空指令周期,所以此指令为 2 个周期的指令。如果结 果不为 0,则程序继续执行下一条指令。 ACC ←[m]+1,如果 ACC=0 跳过下一条指令执行 无 Skip if bit i of Data Memory is not 0 判断指定数据存储器的第 i 位,若不为 0,则程序跳过下一 条指令执行。由于取得下一个指令时会要求插入一个空指 令周期,所以此指令为 2 个周期的指令。如果结果为 0, 则程序继续执行下一条指令。 如果 [m].i≠0,跳过下一条指令执行 无 Skip if Data Memory is not 0 判断指定存储器,若不为 0,则程序跳过下一条指令执行。 由于取得下一个指令时会要求插入一个空指令周期,所以 此指令为 2 个周期的指令。如果结果为 0,则程序继续执 行下一条指令。 如果 [m]≠0,跳过下一条指令执行 无 196 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 SUB A,[m] 指令说明 功能表示 影响标志位 SUBM A,[m] 指令说明 功能表示 影响标志位 SUB A,x 指令说明 Subtract Data Memory from ACC with result in Data Memory 将累加器的内容减去指定数据存储器的数据,结果存放到 指定的数据存储器。如果结果为负,C 标志位清除为 0, 反之结果为正或 0,C 标志位设置为 1。 [m] ← ACC – [m] OV、Z、AC、C、SC、CZ 功能表示 影响标志位 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 无 功能表示 影响标志位 SZ [m] 指令说明 功能表示 影响标志位 Rev. 1.10 Subtract Data Memory from ACC 将累加器的内容减去指定的数据存储器的数据,把结果存 放到累加器。如果结果为负,C 标志位清除为 0,反之结果 为正或 0,C 标志位设置为 1。 ACC ← ACC – [m] OV、Z、AC、C、SC、CZ Skip if Data Memory is 0 判断指定数据存储器的内容是否为 0,若为 0,则程序跳过 下一条指令执行。由于取得下一个指令时会要求插入一个 空指令周期,所以此指令为 2 个周期的指令。如果结果不 为 0,则程序继续执行下一条指令。 如果 [m]=0, 跳过下一条指令执行 无 197 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 SZA [m] 指令说明 功能表示 影响标志位 SZ [m].i 指令说明 功能表示 影响标志位 TABRD [m] 指令说明 功能表示 影响标志位 TABRDL [m] 指令说明 功能表示 影响标志位 ITABRD [m] 指令说明 功能表示 影响标志位 Rev. 1.10 Skip if Data Memory is 0 with data movement to ACC 将指定数据存储器内容复制到累加器,并判断指定数据存 储器的内容是否为 0,若为 0 则跳过下一条指令。由于取 得下一个指令时会要求插入一个空指令周期,所以此指令 为 2 个周期的指令。如果结果不为 0,则程序继续执行下 一条指令。 ACC ←[m],如果 [m]=0,跳过下一条指令执行 无 Skip if bit i of Data Memory is 0 判断指定数据存储器的第 i 位是否为 0,若为 0,则跳过下 一条指令。由于取得下一个指令时会要求插入一个空指令 周期,所以此指令为 2 个周期的指令。如果结果不为 0, 则程序继续执行下一条指令。 如果 [m].i=0,跳过下一条指令执行 无 Read table (specific page) to TBLH and Data Memory 将 表 格 指 针 对 TBHP 和 TBLP 所 指 的 程 序 代 码 低 字 节 ( 指定页 ) 移至指定数据存储器且将高字节移至 TBLH。 [m] ← 程序代码 ( 低字节 ) TBLH ← 程序代码 ( 高字节 ) 无 Read table ( last page ) to TBLH and Data Memory 将表格指针 TBLP 所指的程序代码低字节 ( 最后一页 ) 移至指定数据存储器且将高字节移至 TBLH。 [m] ← 程序代码 ( 低字节 ) TBLH ← 程序代码 ( 高字节 ) 无 Increment table pointer low byte first and read table to TBLH and data memory 将自加表格指针 TBLP 所指的程序代码低字节(当前页) 移至指定的数据存储器且将高字节移至 TBLH。 [m] ← 程序代码 ( 低字节 ) TBLH ← 程序代码 ( 高字节 ) 无 198 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 ITABRDL [m] 指令说明 功能表示 影响标志位 XOR A,[m] 指令说明 功能表示 影响标志位 XORM A,[m] 指令说明 Rev. 1.10 Increment table pointer low byte first and read table(last page) to TBLH and data memory 将自加表格指针 TBLP 所指的程序代码低字节(最后一页) 移至指定的数据存储器且将高字节移至 TBLH。 [m] ← 程序代码 ( 低字节 ) TBLH ← 程序代码 ( 高字节 ) 无 Logical XOR Data Memory to ACC 将累加器的数据和指定的数据存储器内容逻辑异或, 结果存放到累加器。 ACC ← ACC“XOR”[m] Z 功能表示 影响标志位 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 199 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 扩展指令定义 扩展指令被用来直接存取存储在任何数据存储器 Sector 中的数据。 LADC A,[m] Add Data Memory to ACC with Carry 指令说明 将指定的数据存储器、累加器内容以及进位标志相加, 结果存放到累加器。 功能表示 ACC ← ACC + [m] + C 影响标志位 OV、Z、AC、C、SC LADCM A,[m] 指令说明 功能表示 影响标志位 LADD A,[m] 指令说明 功能表示 影响标志位 LADDM A,[m] 指令说明 功能表示 影响标志位 LAND A,[m] 指令说明 功能表示 影响标志位 LANDM A,[m] 指令说明 功能表示 影响标志位 Rev. 1.10 Add ACC to Data Memory with Carry 将指定的数据存储器、累加器内容和进位标志位相加, 结果存放到指定的数据存储器。 [m] ←ACC + [m] + C OV、Z、AC、C、SC Add Data Memory to ACC 将将指定的数据存储器和累加器内容相加, 结果存放到累加器。 ACC ← ACC + [m] OV、Z、AC、C、SC Add ACC to Data Memory 将指定的数据存储器和累加器内容相加, 结果存放到指定的数据存储器。 [m] ←ACC + [m] OV、Z、AC、C、SC Logical AND Data Memory to ACC 将累加器中的数据和指定数据存储器内容做逻辑与, 结果存放到累加器。 ACC ← ACC“AND”[m] Z Logical AND ACC to Data Memory 将指定数据存储器内容和累加器中的数据做逻辑与, 结果存放到数据存储器。 [m] ← ACC“AND”[m] Z 200 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LCLR [m] 指令说明 功能表示 影响标志位 Clear Data Memory 将指定数据存储器的内容清零。 [m] ← 00H 无 LCLR [m].i 指令说明 功能表示 影响标志位 Clear bit of Data Memory 指将指定数据存储器的 i 位内容清零。 [m].i ← 0 无 LCPL [m] 指令说明 Complement Data Memory 将指定数据存储器中的每一位取逻辑反, 相当于从 1 变 0 或 0 变 1。 [m] ← [m] Z 功能表示 影响标志位 LCPLA [m] 指令说明 功能表示 影响标志位 LDAA [m] 指令说明 功能表示 影响标志位 Rev. 1.10 Complement Data Memory with result in ACC 将指定数据存储器中的每一位取逻辑反,相当于从 1 变 0 或 0 变 1,结果被存放回累加器且数据寄存器的内容保持 不变。 ACC←[m] Z 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 201 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LDEC [m] 指令说明 功能表示 影响标志位 Decrement Data Memory 将指定数据存储器的内容减 1。 [m] ← [m] – 1 Z LDECA [m] 指令说明 功能表示 影响标志位 Decrement Data Memory with result in ACC 将指定数据存储器的内容减 1,把结果存放回累加器并保 持指定数据存储器的内容不变。 ACC ← [m] – 1 Z LINC [m] 指令说明 功能表示 影响标志位 Increment Data Memory 将指定数据存储器的内容加 1。 [m] ← [m] + 1 Z LINCA [m] 指令说明 功能表示 影响标志位 Increment Data Memory with result in ACC 将指定数据存储器的内容加 1,结果存放回累加器并保持 指定的数据存储器内容不变。 ACC ← [m] + 1 Z LMOV A,[m] 指令说明 功能表示 影响标志位 Move Data Memory to ACC 将指定数据存储器的内容复制到累加器中。 ACC← [m] 无 LMOV [m],A 指令说明 功能表示 影响标志位 Move ACC to Data Memory 将累加器的内容复制到指定数据存储器。 [m] ← ACC 无 LOR A,[m] 指令说明 Logical OR Data Memory to ACC 将累加器中的数据和指定的数据存储器内容逻辑或, 结果存放到累加器。 ACC ← ACC“OR”[m] Z 功能表示 影响标志位 Rev. 1.10 202 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LORM A,[m] 指令说明 功能表示 影响标志位 LRL [m] 指令说明 功能表示 影响标志位 LRLA [m] 指令说明 功能表示 Rotate Data Memory left 将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位。 [m].(i+1) ← [m].i (i=0~6) [m].0 ← [m].7 无 Rotate Data Memory left with result in ACC 将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位, 结果送到累加器,而指定数据存储器的内容保持不变。 ACC.(i+1) ← [m].i (i=0~6) ACC.0 ←[m].7 影响标志位 无 LRLC [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 功能表示 影响标志位 LRLC A [m] 指令说明 功能表示 影响标志位 Rev. 1.10 Logical OR ACC to Data Memory 将存在指定数据存储器中的数据和累加器逻辑或, 结果放到数据存储器。 [m] ← ACC“OR”[m] Z 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 203 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LRR [m] 指令说明 功能表示 影响标志位 LRRA [m] 指令说明 功能表示 影响标志位 LRRC [m] 指令说明 功能表示 影响标志位 LRRCA [m] 指令说明 功能表示 影响标志位 LSBC A,[m] 指令说明 功能表示 影响标志位 Rev. 1.10 Rotate Data Memory right 将指定数据存储器的内容循环右移 1 位且第 0 位移到 第 7 位。 [m].i ← [m].(i+1) (i=0~6) [m].7 ← [m].0 无 Rotate Data Memory right with result in ACC 将指定数据存储器的内容循环右移 1 位,第 0 位移到 第 7 位,移位结果存放到累加器,而指定数据存储器的内 容保持不变。 ACC.i ← [m].(i+1) (i=0~6) ACC.7 ← [m].0 无 Rotate Data Memory right through Carry 将指定数据存储器的内容连同进位标志右移 1 位, 第 0 位取代进位标志且原本的进位标志移到第 7 位。 [m].i ← [m].(i+1) (i=0~6) [m].7← C C ← [m].0 C 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 Subtract Data Memory from ACC with Carry 将累加器减去指定数据存储器的内容以及进位标志的反, 结果存放到累加器。如果结果为负,C 标志位清除为 0, 反之结果为正或 0,C 标志位设置为 1。 ACC ← ACC – [m] – C OV、Z、AC、C、SC、CZ 204 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LSBCM A,[m] 指令说明 功能表示 影响标志位 LSDZ [m] 指令说明 功能表示 影响标志位 LSDZA [m] 指令说明 Rev. 1.10 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 Skip if Decrement Data Memory is 0 将指定的数据存储器的内容减 1,判断是否为 0,若为 0 则 跳过下一条指令,由于取得下一个指令时会要求插入一个 空指令周期,所以此指令为 2 个周期的指令。如果结果不 为 0,则程序继续执行下一条指令。 [m] ← [m] -1,如果 [m]=0 跳过下一条指令执行 无 功能表示 影响标志位 Skip if decrement Data Memory is zero with result in ACC 将指定数据存储器内容减 1,判断是否为 0,如果为 0 则跳 过下一条指令,此结果将存放到累加器,但指定数据存储 器内容不变。由于取得下一个指令时会要求插入一个空指 令周期,所以此指令为 2 个周期的指令。如果结果不为 0, 则程序继续执行下一条指令。 ACC ← [m]-1,如果 ACC=0 跳过下一条指令执行 无 LSET [m] 指令说明 功能表示 影响标志位 Set Data Memory 将指定数据存储器的每一个位置位为 1。 [m] ← FFH 无 LSET [m].i 指令说明 功能表示 影响标志位 Set bit of Data Memory 将指定数据存储器的第 i 位置位为 1。 [m].i ← 1 无 205 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LSIZ [m] 指令说明 功能表示 影响标志位 LSIZA [m] 指令说明 功能表示 影响标志位 Skip if increment Data Memory is zero with result in ACC 将指定数据存储器的内容加 1,判断是否为 0,如果为 0 则 跳过下一条指令,此结果会被存放到累加器,但是指定数 据存储器的内容不变。由于取得下一个指令时会要求插入 一个空指令周期,所以此指令为 2 个周期的指令。如果结 果不为 0,则程序继续执行下一条指令。 ACC ←[m]+1,如果 ACC=0 跳过下一条指令执行 无 LSNZ [m].i 指令说明 功能表示 影响标志位 Skip if bit i of Data Memory is not 0 判断指定数据存储器的第 i 位,若不为 0,则程序跳过下 一条指令执行。由于取得下一个指令时会要求插入一个空 指令周期,所以此指令为 2 个周期的指令。如果结果为 0, 则程序继续执行下一条指令。 如果 [m].i≠0,跳过下一条指令执行 LSNZ [m] 指令说明 功能表示 影响标志位 Skip if Data Memory is not 0 LSUB A,[m] 指令说明 Subtract Data Memory from ACC 将累加器的内容减去指定的数据存储器的数据,把结果存 放到累加器。如果结果为负,C 标志位清除为 0,反之结果 为正或 0,C 标志位设置为 1。 ACC ← ACC – [m] OV、Z、AC、C、SC、CZ 功能表示 影响标志位 Rev. 1.10 Skip if increment Data Memory is 0 将指定的数据存储器的内容加 1,判断是否为 0,若为 0 则 跳过下一条指令。由于取得下一个指令时会要求插入一个 空指令周期,所以此指令为 2 个周期的指令。如果结果不 为 0,则程序继续执行下一条指令。 [m] ←[m]+1,如果 [m]=0 跳过下一条指令执行 无 无 判断指定数据存储器,若不为 0,则程序跳过下一条指令 执行。由于取得下一个指令时会要求插入一个空指令周期, 所以此指令为 2 个周期的指令。如果结果为 0,则程序继 续执行下一条指令。 如果 [m]≠0,跳过下一条指令执行 无 206 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LSUBM 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 LSWAP [m] 指令说明 功能表示 影响标志位 Swap nibbles of Data Memory 将指定数据存储器的低 4 位和高 4 位互相交换。 [m].3~[m].0 ↔ [m].7~[m].4 无 LSWAPA [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 无 功能表示 影响标志位 LSZ [m] 指令说明 功能表示 影响标志位 LSZA [m] 指令说明 功能表示 影响标志位 Rev. 1.10 Skip if Data Memory is 0 判断指定数据存储器的内容是否为 0,若为 0,则程序跳过 下一条指令执行。由于取得下一个指令时会要求插入一个 空指令周期,所以此指令为 2 个周期的指令。如果结果不 为 0,则程序继续执行下一条指令。 如果 [m]=0, 跳过下一条指令执行 无 Skip if Data Memory is 0 with data movement to ACC 将指定数据存储器内容复制到累加器,并判断指定数据存 储器的内容是否为 0,若为 0 则跳过下一条指令。由于取 得下一个指令时会要求插入一个空指令周期,所以此指令 为 2 个周期的指令。如果结果不为 0,则程序继续执行下 一条指令。 ACC ← [m],如果 [m]=0,跳过下一条指令执行 无 207 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LSZ [m].i 指令说明 功能表示 影响标志位 LTABRD [m] 指令说明 功能表示 影响标志位 LTABRDL [m] 指令说明 功能表示 影响标志位 LITABRD [m] 指令说明 功能表示 影响标志位 LITABRDL [m] 指令说明 功能表示 影响标志位 Rev. 1.10 Skip if bit i of Data Memory is 0 判断指定数据存储器的第 i 位是否为 0,若为 0,则跳过下 一条指令。由于取得下一个指令时会要求插入一个空指令 周期,所以此指令为 2 个周期的指令。如果结果不为 0, 则程序继续执行下一条指令。 如果 [m].i=0,跳过下一条指令执行 无 Move the ROM code to TBLH and data memory 将表格指针 TBLP 所指的程序代码低字节(当前页) 移至指定数据存储器且将高字节移至 TBLH。 [m] ← 程序代码 ( 低字节 ) TBLH ← 程序代码 ( 高字节 ) 无 Read table ( last page ) to TBLH and Data Memory 将表格指针 TBLP 所指的程序代码低字节 ( 最后一页 ) 移至指定数据存储器且将高字节移至 TBLH。 [m] ← 程序代码 ( 低字节 ) TBLH ← 程序代码 ( 高字节 ) 无 Increment table pointer low byte first and read table to TBLH and data memory 将自加表格指针 TBHP 和 TBLP 所指的程序代码低字节移 至指定的数据存储器且将高字节移至 TBLH。 [m] ← 程序代码 ( 低字节 ) TBLH ← 程序代码 ( 高字节 ) 无 Increment table pointer low byte first and read table(last page) to TBLH and data memory 将自加表格指针 TBLP 所指的程序代码低字节(最后一页) 移至指定的数据存储器且将高字节移至 TBLH。 [m] ← 程序代码 ( 低字节 ) TBLH ← 程序代码 ( 高字节 ) 无 208 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 LXOR A,[m] 指令说明 功能表示 影响标志位 LXORM A,[m] 指令说明 功能表示 影响标志位 Rev. 1.10 Logical XOR Data Memory to ACC 将累加器的数据和指定的数据存储器内容逻辑异或, 结果存放到累加器。 ACC ← ACC“XOR”[m] Z Logical XOR ACC to Data Memory 将累加器的数据和指定的数据存储器内容逻辑异或, 结果放到数据存储器。 [m] ← ACC“XOR”[m] Z 209 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 封装信息 请注意,这里提供的封装信息仅作为参考。由于这个信息经常更新,提醒用户 咨询 Holtek 网站以获取最新版本的封装信息。 封裝信息的相关内容如下所示,点击可链接至 Holtek 网站相关信息页面。 ● 封装信息(包括外形尺寸、包装带和卷轴规格) ● 封装材料信息 ● 纸箱信息 Rev. 1.10 210 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 48-pin LQFP (7mm × 7mm) 外形尺寸                         符号 A B C D E F G H I J K α 符号 A B C D E F G H I J K α Rev. 1.10   最小 — — — — — 0.007 0.053 — 0.002 0.018 0.004 0° 尺寸 ( 单位:inch) 正常 0.354 BSC 0.276 BSC 0.354 BSC 0.276 BSC 0.020 BSC 0.009 0.055 — — 0.024 — ― 最大 — — — — — 0.011 0.057 0.063 0.006 0.030 0.008 7° 最小 — — — — — 0.170 1.350 — 0.050 0.450 0.090 0° 尺寸 ( 单位:mm) 正常 9.000 BSC 7.000 BSC 9.000 BSC 7.000 BSC 0.500 BSC 0.220 1.400 — — 0.600 — ― 最大 — — — — — 0.270 1.450 1.600 0.150 0.750 0.200 7° 211 2016-12-07 HT66F3197 内置 EEPROM 和 UART 的增强 A/D 型单片机 Copyright© 2016 by HOLTEK SEMICONDUCTOR INC. 使用指南中所出现的信息在出版当时相信是正确的,然而盛群对于说明书的使用不负任何责任。文中提到 的应用目的仅仅是用来做说明,盛群不保证或表示这些没有进一步修改的应用将是适当的,也不推荐它的 产品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使用于救生、维生从机 或系统中做为关键从机。盛群拥有不事先通知而修改产品的权利,对于最新的信息,请参考我们的网址 http://www.holtek.com/zh/. Rev. 1.10 212 2016-12-07
HT66F3197 价格&库存

很抱歉,暂时无法提供与“HT66F3197”相匹配的价格&库存,您可以联系我们找货

免费人工找货
HT66F3197
  •  国内价格
  • 1+6.24950
  • 30+6.03400
  • 100+5.60300
  • 500+5.17200
  • 1000+4.95650

库存:0