低成本 1K/2K A/D 型 Flash 单片机
HT66F0021/HT66F0031/HT66F0041
版本 : V1.40
日期 : 2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
目录
特性 ...................................................................................................................................... 6
CPU 特性 ..................................................................................................................................... 6
周边特性 ...................................................................................................................................... 6
概述 ...................................................................................................................................... 7
选型表 .................................................................................................................................. 7
方框图 .................................................................................................................................. 8
引脚图 .................................................................................................................................. 9
引脚说明 ............................................................................................................................ 10
极限参数 ............................................................................................................................ 14
直流电气特性 .................................................................................................................... 15
工作电压特性 ............................................................................................................................ 15
待机电流特性 ............................................................................................................................ 15
工作电流特性 ............................................................................................................................ 16
交流电气特性 .................................................................................................................... 16
内部高速振荡器 – HIRC – 频率精确度................................................................................... 16
内部低速振荡器电气特性 – LIRC ........................................................................................... 17
工作频率特性曲线 .................................................................................................................... 17
系统上电时间电气特性 ............................................................................................................ 17
输入 / 输出口电气特性 ..................................................................................................... 18
存储器电气特性 ................................................................................................................ 19
LVR 电气特性 ................................................................................................................... 20
内部参考电压电气特性 .................................................................................................... 20
A/D 转换器电气特性......................................................................................................... 20
上电复位特性 .................................................................................................................... 21
系统结构 ............................................................................................................................ 21
时序和流水线结构 .................................................................................................................... 21
程序计数器 ................................................................................................................................ 22
堆栈 ............................................................................................................................................ 23
算术逻辑单元 – ALU ................................................................................................................ 23
Flash 程序存储器 .............................................................................................................. 24
结构 ............................................................................................................................................ 24
特殊向量 .................................................................................................................................... 24
查表 ............................................................................................................................................ 24
查表范例 .................................................................................................................................... 25
在线烧录 – ICP .......................................................................................................................... 26
片上调试 – OCDS...................................................................................................................... 26
Rev.1.40
2
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
数据存储器 ........................................................................................................................ 27
结构 ............................................................................................................................................ 27
通用数据存储器 ........................................................................................................................ 27
特殊功能数据存储器 ................................................................................................................ 27
特殊功能寄存器 ................................................................................................................ 29
间接寻址寄存器 – IAR0 ........................................................................................................... 29
存储器指针 – MP0 .................................................................................................................... 29
累加器 – ACC ............................................................................................................................ 29
程序计数器低字节寄存器 – PCL ............................................................................................. 30
表格寄存器 – TBLP, TBHP, TBLH ........................................................................................... 30
状态寄存器 – STATUS .............................................................................................................. 30
模拟 EEPROM 数据存储器 ............................................................................................. 32
模拟 EEPROM 数据存储器结构 .............................................................................................. 32
模拟 EEPROM 寄存器 .............................................................................................................. 33
擦除模拟 EEPROM 中的数据 .................................................................................................. 36
写数据到模拟 EEPROM ........................................................................................................... 36
从模拟 EEPROM 中读取数据 .................................................................................................. 37
编程注意事项 ............................................................................................................................ 37
振荡器 ................................................................................................................................ 38
振荡器概述 ................................................................................................................................ 38
系统时钟配置 ............................................................................................................................ 38
内部 RC 振荡器 – HIRC ........................................................................................................... 39
内部 32kHz 振荡器 – LIRC ...................................................................................................... 39
工作模式和系统时钟 ........................................................................................................ 39
系统时钟 .................................................................................................................................... 39
系统工作模式 ............................................................................................................................ 40
控制寄存器 ................................................................................................................................ 41
工作模式切换 ............................................................................................................................ 42
待机电流的注意事项 ................................................................................................................ 45
唤醒 ............................................................................................................................................ 46
看门狗定时器 .................................................................................................................... 46
看门狗定时器时钟源 ................................................................................................................ 46
看门狗定时器控制寄存器 ........................................................................................................ 46
看门狗定时器操作 .................................................................................................................... 47
复位和初始化 .................................................................................................................... 48
复位功能 .................................................................................................................................... 48
复位初始状态 ............................................................................................................................ 50
输入 / 输出端口 ................................................................................................................. 53
上拉电阻 .................................................................................................................................... 54
PA 口唤醒 .................................................................................................................................. 54
输入 / 输出端口控制寄存器 ..................................................................................................... 55
输入 / 输出端口源电流选择 – HT66F0041.............................................................................. 55
引脚共用功能 ............................................................................................................................ 56
Rev.1.40
3
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
输入 / 输出引脚结构 ................................................................................................................. 60
编程注意事项 ............................................................................................................................ 60
定时 / 事件计数器 ............................................................................................................. 61
定时 / 事件计数器输入时钟源 ................................................................................................. 61
定时 / 事件计数器寄存器 ......................................................................................................... 61
定时 / 事件计数器工作模式 ..................................................................................................... 63
编程注意事项 ............................................................................................................................ 65
脉冲宽度调制 – HT66F0021/HT66F0031 ....................................................................... 65
PWM 寄存器说明...................................................................................................................... 66
PWM 操作.................................................................................................................................. 66
脉冲宽度调制 – HT66F0041 ............................................................................................ 68
PWM 寄存器说明...................................................................................................................... 68
PWM 操作.................................................................................................................................. 70
A/D 转换器......................................................................................................................... 70
A/D 简介 .................................................................................................................................... 70
A/D 转换寄存器介绍 ................................................................................................................ 71
A/D 转换器参考电压 ................................................................................................................ 74
A/D 转换器输入信号 ................................................................................................................ 74
A/D 转换器操作 ........................................................................................................................ 74
A/D 转换率及时序图 ................................................................................................................ 75
A/D 转换步骤 ............................................................................................................................ 76
编程注意事项 ............................................................................................................................ 76
A/D 转换功能 ............................................................................................................................ 77
A/D 转换应用范例 .................................................................................................................... 77
中断 .................................................................................................................................... 79
中断寄存器 ................................................................................................................................ 79
中断操作 .................................................................................................................................... 81
外部中断 .................................................................................................................................... 82
定时 / 事件计数器中断 ............................................................................................................. 82
时基中断 .................................................................................................................................... 82
A/D 转换器中断 ........................................................................................................................ 84
中断唤醒功能 ............................................................................................................................ 84
编程注意事项 ............................................................................................................................ 84
应用电路 ............................................................................................................................ 84
指令集 ................................................................................................................................ 85
简介 ............................................................................................................................................ 85
指令周期 .................................................................................................................................... 85
数据的传送 ................................................................................................................................ 85
算术运算 .................................................................................................................................... 85
逻辑和移位运算 ........................................................................................................................ 85
分支和控制转换 ........................................................................................................................ 86
位运算 ........................................................................................................................................ 86
查表运算 .................................................................................................................................... 86
其它运算 .................................................................................................................................... 86
Rev.1.40
4
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
指令集概要 ........................................................................................................................ 87
惯例 ............................................................................................................................................ 87
指令定义 ............................................................................................................................ 89
封装信息 .......................................................................................................................... 101
8-pin SOP (150mil) 外形尺寸.................................................................................................. 102
16-pin NSOP (150mil) 外形尺寸 ............................................................................................. 103
20-pin NSOP (150mil) 外形尺寸 ............................................................................................. 104
20-pin SSOP (150mil) 外形尺寸 ............................................................................................. 105
Rev.1.40
5
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
特性
CPU 特性
● 工作电压
♦ fSYS=8MHz:1.8V~5.5V
● VDD=5V,系统时钟为 8MHz 时,指令周期为 0.5μs
● 暂停和唤醒功能,以降低功耗
● 振荡器类型
♦ 内部高速 RC 振荡器 – HIRC
♦ 内部低速 32kHz RC 振荡器 – LIRC
● 多种工作模式:快速模式、低速模式、空闲模式和休眠模式
● 完全集成内部振荡器,无需外接元器件
● 所有指令都可在 1 或 2 个指令周期内完成
● 查表指令
● 61 条功能强大的指令系统
● 多达 4 层堆栈
● 位操作指令
周边特性
● Flash 程序存储器:1K×14~2K×14
● 数据存储器:64×8
● 模拟 EEPROM 存储器:32×14
● 看门狗定时器功能
● 多达 18 个双向 I/O 口
● 可编程 I/O 口源电流用于 LED 驱动 ( 仅用于 HT66F0041 )
● 2 个引脚与外部中断口共用
● 1 个 8-bit 可编程定时 / 事件计数器,带溢出中断和分频器功能
● 单通道 8-bit PWM 输出,与 I/O 口复用 (HT66F0021/HT66F0031)
● 8-bit PWM 互补式输出,与 I/O 口复用 (HT66F0041)
● 1 个时基功能,用于产生固定时间的中断信号
● 带内部参考电压 VVR 的 4 个外部通道 10-bit 分辨精度的 A/D 转换器
● 低电压复位功能
● 封装类型:8-pin SOP,16/20-pin NSOP 和 20-pin SSOP
Rev.1.40
6
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
概述
该系列单片机是一款具有 8 位高性能精简指令集的 A/D 型 Flash 单片机。该系
列单片机具有一系列功能和特性,其 Flash 存储器可多次编程的特性给用户提
供了较大的方便。存储器方面,还包含了一个 RAM 数据存储器和一个可用于
存储序号、校准数据等非易失性数据的模拟 EEPROM 存储器。
在模拟特性方面,该系列单片机包含一个多通道 10-bit A/D 转换器。其具有使
用灵活的定时 / 事件计数器,可提供定时功能、事件计数功能及脉冲宽度捕捉
功能。该系列单片机还包含一脉宽调制功能可提供 8-bit PWM 输出。内部看门
狗定时器等保护特性,外加优秀的抗干扰和 ESD 保护性能,确保单片机在恶劣
的电磁干扰环境下可靠地运行。
该系列单片机提供了内部高速和低速振荡器功能选项,这两个内建的系统振荡
器无需外围元器件。其在不同工作模式之间动态切换的能力,为用户提供了一
个优化单片机操作和减少功耗的手段。
外加 I/O 使用灵活和时基功能等其它特性,使这系列单片机可以广泛应用于电
子测量、环境监控、手持式仪表、家用电器、电子控制工具、马达驱动等方面。
选型表
对此系列单片机而言,大多数的特性参数都是一样的。主要差异在于 Flash 存
储器容量、I/O 数量、外部中断数量、PWM 功能、堆栈容量和封装类型。下表
列出了各单片机的主要特性。
型号
HT66F0021
HT66F0031
HT66F0041
VDD
1.8V~5.5V
1.8V~5.5V
1.8V~5.5V
ROM
1K×14
1K×14
2K×14
型号
A/D 转换器 定时器
HT66F0021 10-bit×4 8-bit×1
HT66F0031 10-bit×4 8-bit×1
HT66F0041
Rev.1.40
10-bit×4
RAM
64×8
64×8
64×8
PWM
一个通道
一个通道
8-bit×1 互补式输出
7
模拟 EEPROM
32×14
32×14
32×14
I/O
6
14
18
外部中断
1
1
2
时基 低电压复位 堆栈
√
1
2
√
1
2
封装
8SOP
16NSOP
16/20NSOP
20SSOP
1
√
4
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
方框图
HT66F0021/HT66F0031
INT0
Reset
Circuit
ROM
1K×14
RAM
64×8
PWM
Interrupt
Controller
Emulated
EEPROM
32×14
Stack
2-level
Timer
Watchdog
Timer
LVR
Pin-Shared
With Port A
I/O
Bus
HT8 MCU Core
SYSCLK
Pin-Shared
Function
Port A Driver
PA0~PA2,
PA5~PA7
Port A Driver
PA0~PA7
Port B Driver
PB0~PB5
Digital Peripherals
AVDD
HIRC
8MHz
VDD/AVDD
VSS/AVSS
VSS/AVSS
VVR
MUX
VDD/AVDD
LIRC
32kHz
10-bit
ADC
Clock System
MUX
Time Base
VREF
AN0~AN3
AVDD/4
Analog to Digital Converter
Pin-Shared
With Port A
Analog Peripheral
: Pin-Shared Node
: For the HT66F0021
: For the HT66F0031
HT66F0041
ROM
2K × 14
RAM
64 × 8
PWM
Interrupt
Controller
Emulated
EEPROM
32 × 14
Stack
4-level
Timer
Watchdog
Timer
LVR
Pin-Shared
With Port A & C
HT8 MCU Core
SYSCLK
Pin-Shared
Function
I/O
Bus
INT0~
INT1
Reset
Circuit
Port A Driver
PA0~PA7
Port B Driver
PB0~PB6
Port C Driver
PC0~PC2
Digital Peripherals
AVDD
VDD/AVDD
VSS/AVSS
VSS/AVSS
HIRC
8MHz
VVR
MUX
VDD/AVDD
LIRC
32kHz
10-bit
ADC
Clock System
MUX
Time Base
Analog to Digital Converter
VREF
AN0~AN3
AVDD/4
Pin-Shared
With Port A
Analog Peripheral
: Pin-Shared Node
Rev.1.40
8
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
引脚图
VDD/AVDD
1
8
VSS/AVSS
PA6/TC/PWMO
2
7
PA0/INT0/AN0/ICPDA
PA5/INT0/AN3
3
6
PA1/TC/VREF
PA2/AN1/ICPCK
4
5
PA7/PWMO/AN2
HT66F0021
8 SOP-A
VDD/AVDD
1
16
VSS/AVSS
PA6/TC/PWMO
2
15
PA0/INT0/AN0/ICPDA
PA5/INT0/AN3
PA2/AN1/ICPCK
3
14
PA1/TC/VREF
4
13
PA7/PWMO/AN2
NC
5
12
NC
NC
6
11
NC
NC
7
10
NC
OCDSCK
8
9
OCDSDA
HT66V0021
16 NSOP-A
PB2
1
16
PB3
PB1
2
15
PB4
PA5/AN1
PA3/INT0/AN3
3
14
PB5
4
13
PA4/INT0
PA2/AN2/ICPCK/OCDSCK
5
12
PB0
PA1/VREF
6
11
PA6/TC/PWMO
PA0/TC/AN0/ICPDA/OCDSDA
7
10
PA7/PWMO
VSS/AVSS
8
9
VDD/AVDD
HT66F0031/HT66V0031
16 NSOP-A
VSS/AVSS
1
16
VDD/AVDD
PC0/INT0
2
15
PB0
PC1/INT1
PC2
3
14
PB1
4
13
PB2
PA0/PWM/ICPDA/OCDSDA
5
12
PA4/INT0/AN0
PA1/TC
6
11
PA5/VREF
PA2/AN1/ICPCK/OCDSCK
7
10
PA6/INT1/AN2
PA3/TC/PWMB
8
9
PA7/AN3
HT66F0041/HT66V0041
16 NSOP-A
VSS/AVSS
1
20
VDD/AVDD
PC0/INT0
2
19
PB0
PC1/INT1
3
18
PB1
PC2
4
17
PB2
PA0/PWM/ICPDA/OCDSDA
5
16
PA4/INT0/AN0
PA1/TC
6
15
PA5/VREF
PA2/AN1/ICPCK/OCDSCK
7
14
PA6/INT1/AN2
PA3/TC/PWMB
8
13
PA7/AN3
PB6
9
12
PB3
PB5
10
11
PB4
HT66F0041/HT66V0041
20 NSOP-A/SSOP-A
注:1. 所需引脚共用功能由相应的共用引脚控制位决定。
2. OCDSDA 和 OCDSCK 是 OCDS 专用引脚,仅存在于 HT66V00x1 中。HT66V00x1 是
HT66F00x1 的 OCDS EV 芯片。
3. 在较小封装中可能含有未引出的引脚,需合理设置其状态以避免输入浮空造成额外耗
电,详见“待机电流注意事项”和“输入 / 输出端口”章节。
Rev.1.40
9
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
引脚说明
每个引脚的功能如下表所述,而引脚配置的详细内容见规格书其它章节。注意,
对于存在不止一种封装的单片机,该表格反映的是较大封装类型的情况。
HT66F0021/HT66V0021
引脚名称
功能
PA0
PA0/INT0/
AN0/ICPDA
INT0
AN0
ICPDA
PA1
PA1/TC/VREF
TC
VREF
PA2/AN1/
ICPCK
PA2
AN1
ICPCK
PA5
PA5/INT0/AN3
INT0
AN3
PA6
PA6/TC/
PWMO
TC
PWMO
PA7/PWMO/
AN2
Rev.1.40
PA7
PWMO
AN2
OPT
PAPU
PAWU
PASR
PASR
IFS
INTEG
INTC0
PASR
—
PAPU
PAWU
PASR
PASR
IFS
PASR
PAPU
PAWU
PASR
PASR
—
PAPU
PAWU
PASR
PASR
IFS
INTEG
INTC0
PASR
PAPU
PAWU
PASR
PASR
IFS
PASR
PAPU
PAWU
PASR
PASR
PASR
I/T
O/T
说明
ST
CMOS
通用 I/O 口,可通过寄存器设置上拉电阻和
唤醒功能
ST
—
外部中断
AN
ST
— A/D 转换器外部模拟信号输入
CMOS ICP 数据 / 地址引脚
ST
CMOS
ST
—
定时 / 事件计数器时钟输入
AN
—
A/D 转换器外部参考输入
ST
CMOS
AN
ST
—
—
ST
CMOS
ST
—
外部中断
AN
—
A/D 转换器外部模拟信号输入
ST
CMOS
ST
—
通用 I/O 口,可通过寄存器设置上拉电阻和
唤醒功能
通用 I/O 口,可通过寄存器设置上拉电阻和
唤醒功能
A/D 转换器外部模拟信号输入
ICP 时钟引脚
通用 I/O 口,可通过寄存器设置上拉电阻和
唤醒功能
通用 I/O 口,可通过寄存器设置上拉电阻和
唤醒功能
定时 / 事件计数器时钟输入
—
CMOS PWM 信号输出
ST
CMOS
—
AN
CMOS PWM 信号输出
— A/D 转换器外部模拟信号输入
10
通用 I/O 口,可通过寄存器设置上拉电阻和
唤醒功能
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
引脚名称
OCDSDA
OCDSCK
VDD/AVDD
VSS/AVSS
NC
功能
OCDSDA
OCDSCK
VDD
AVDD
VSS
AVSS
NC
OPT
—
—
—
—
—
—
—
I/T
O/T
说明
ST CMOS OCDS 数据 / 地址引脚,仅用于 EV 芯片
ST
— OCDS 时钟引脚,仅用于 EV 芯片
PWR
— 数字正电源电压
PWR
— 模拟正电源电压
PWR
— 数字负电源电压,接地
PWR
— 模拟负电源电压,接地
–
— 未连接
O/T:输出类型;
PWR:电源;
CMOS:CMOS 输出
注:I/T:输入类型;
OPT:通过寄存器选项来配置;
ST:施密特触发输入;
AN:模拟信号
HT66F0031/HT66V0031
OPT
PAPU
PA0
PAWU
PASR
PASR
PA0/TC/AN0/
TC
IFS
ICPDA/OCDSDA
AN0
PASR
ICPDA
—
OCDSDA
—
PAPU
PA1
PAWU
PA1/VREF
PASR
VREF
PASR
PAPU
PA2
PAWU
PASR
PA2/AN2/ICPCK/
AN2
PASR
OCDSCK
ICPCK
—
OCDSCK
—
PAPU
PA3
PAWU
PASR
PASR
PA3/INT0/AN3
IFS
INT0
INTEG
INTC0
AN3
PASR
引脚名称
Rev.1.40
功能
I/T
O/T
说明
ST
CMOS
通用 I/O 口,可通过寄存器设置上拉电阻
和唤醒功能
ST
—
定时 / 事件计数器时钟输入
AN
— A/D 转换器外部模拟信号输入
ST CMOS ICP 数据 / 地址引脚
ST CMOS OCDS 数据 / 地址引脚,仅用于 EV 芯片
通用 I/O 口,可通过寄存器设置上拉电阻
和唤醒功能
ST
CMOS
AN
—
ST
CMOS
AN
ST
ST
—
—
—
ST
CMOS
ST
—
外部中断
AN
—
A/D 转换器外部模拟信号输入
11
A/D 转换器外部参考输入
通用 I/O 口,可通过寄存器设置上拉电阻
和唤醒功能
A/D 转换器外部模拟信号输入
ICP 时钟引脚
OCDS 时钟引脚,仅用于 EV 芯片
通用 I/O 口,可通过寄存器设置上拉电阻
和唤醒功能
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
引脚名称
PA4/INT0
PA5/AN1
PA6/TC/PWMO
PA7/PWMO
PB0~PB5
VDD/AVDD
VSS/AVSS
OPT
PAPU
PA4
PAWU
IFS
INT0
INTEG
INTC0
PAPU
PA5
PAWU
PASR
AN1
PASR
PAPU
PA6
PAWU
PASR
PASR
TC
IFS
PWMO PASR
PAPU
PA7
PAWU
PASR
PWMO PASR
PB0~PB5 PBPU
VDD
—
AVDD
—
VSS
—
AVSS
—
功能
I/T
ST
O/T
说明
通用 I/O 口,可通过寄存器设置上拉电阻
CMOS
和唤醒功能
ST
—
ST
CMOS
AN
—
ST
CMOS
ST
—
通用 I/O 口,可通过寄存器设置上拉电阻
和唤醒功能
A/D 转换器外部模拟信号输入
通用 I/O 口,可通过寄存器设置上拉电阻
和唤醒功能
定时 / 事件计数器时钟输入
—
CMOS PWM 信号输出
ST
CMOS
通用 I/O 口,可通过寄存器设置上拉电阻
和唤醒功能
— CMOS PWM 信号输出
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
PWR
— 数字正电源供电压
PWR
— 模拟正电源供电压
PWR
— 数字负电源供电压,接地
PWR
— 模拟负电源供电压,接地
O/T:输出类型;
PWR:电源;
CMOS:CMOS 输出;
注:I/T:输入类型;
OPT:通过寄存器选项来配置;
ST:施密特触发输入;
AN:模拟信号
Rev.1.40
外部中断
12
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
HT66F0041/HT66V0041
引脚名称
PA0/PWM/
ICPDA/
OCDSDA
PA1/TC
PA2/AN1/
ICPCK/
OCDSCK
PA3/TC/
PWMB
PA4/INT0/
AN0
PA5/VREF
PA6/INT1/
AN2
Rev.1.40
OPT
PAPU
PA0
PAWU
PASR
PWM
PASR
ICPDA
—
OCDSDA —
PAPU
PA1
PAWU
TC
IFS
PAPU
PA2
PAWU
PASR
AN1
PASR
ICPCK
—
OCDSCK
—
PAPU
PA3
PAWU
PASR
PASR
TC
IFS
PWMB PASR
PAPU
PA4
PAWU
PASR
PASR
IFS
INT0
INTEG
INTC0
AN0
PASR
PAPU
PA5
PAWU
PASR
VREF
PASR
PAPU
PA6
PAWU
PASR
PASR
IFS
INT1
INTEG
INTC1
AN2
PASR
功能
I/T
O/T
说明
ST
CMOS
通用 I/O 口,可通过寄存器设置上拉电阻和唤醒
功能
—
ST
ST
ST
CMOS PWM 信号输出
CMOS ICP 数据 / 地址引脚
CMOS OCDS 数据 / 地址引脚,仅用于 EV 芯片
通用 I/O 口,可通过寄存器设置上拉电阻和唤醒
CMOS
功能
— 定时 / 事件计数器时钟输入
ST
CMOS
AN
ST
ST
—
—
—
ST
CMOS
ST
—
ST
通用 I/O 口,可通过寄存器设置上拉电阻和唤醒
功能
A/D 转换器外部模拟信号输入
ICP 时钟引脚
OCDS 时钟引脚,仅用于 EV 芯片
通用 I/O 口,可通过寄存器设置上拉电阻和唤醒
功能
定时 / 事件计数器时钟输入
—
CMOS PWM 信号反相输出
ST
CMOS
ST
—
外部中断
AN
—
A/D 转换器外部模拟信号输入
ST
CMOS
AN
—
ST
CMOS
ST
—
外部中断
AN
—
A/D 转换器外部模拟信号输入
通用 I/O 口,可通过寄存器设置上拉电阻和唤醒
功能
通用 I/O 口,可通过寄存器设置上拉电阻和唤醒
功能
A/D 转换器外部参考输入
通用 I/O 口,可通过寄存器设置上拉电阻和唤醒
功能
13
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
OPT
PAPU
PA7
PAWU
PA7/AN3
PASR
AN3
PASR
PB0~PB6
PB0~PB6 PBPU
PC0
PCPU
IFS
PC0/INT0
INT0 INTEG
INTC0
PC1
PCPU
IFS
PC1/INT1
INT1 INTEG
INTC1
PC2
PC2
PCPU
VDD
—
VDD/AVDD
AVDD
—
VSS
—
VSS/AVSS
AVSS
—
引脚名称
功能
I/T
O/T
说明
ST
CMOS
通用 I/O 口,可通过寄存器设置上拉电阻和唤醒
功能
AN
— A/D 转换器外部模拟信号输入
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
ST
ST
ST
—
外部中断
CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
—
外部中断
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
PWR
— 数字正电源供电压
PWR
— 模拟正电源供电压
PWR
— 数字负电源供电压,接地
PWR
— 模拟负电源供电压,接地
O/T:输出类型;
PWR:电源;
CMOS:CMOS 输出;
注:I/T:输入类型;
OPT:通过寄存器选项来配置;
ST:施密特触发输入;
AN:模拟信号
极限参数
电源供应电压 ....................................................................................... VSS-0.3V~6.0V
端口输入电压 ...............................................................................VSS-0.3V~VDD+0.3V
储存温度 .................................................................................................. -50°C~125°C
工作温度 .................................................................................................... -40°C~85°C
IOH 总电流 ........................................................................................................... -80mA
IOL 总电流............................................................................................................. 80mA
总功耗 ............................................................................................................... 500mW
注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无
法预期芯片在上述标示范围外的工作状态,而且若长期在标示范围外的条
件下工作,可能影响芯片的可靠性。
Rev.1.40
14
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
直流电气特性
以下表格中参数测量结果可能受多个因素影响,如振荡器类型、工作电压、工
作频率、引脚负载状况、温度和程序指令等等。
工作电压特性
Ta=-40°C~85°C
符号
参数
工作电压 – HIRC
工作电压 – LIRC
VDD
测试条件
fSYS=fHIRC=8MHz
fSYS=fLIRC=32kHz
最小
1.8
1.8
典型
—
—
最大
5.5
5.5
单位
V
V
待机电流特性
Ta=25°C,除非另有说明
符号
待机模式
休眠模式
ISTB
空闲模式 0 – LIRC
空闲模式 1 – HIRC
VDD
1.8V
3V
5V
1.8V
3V
5V
1.8V
3V
5V
1.8V
3V
5V
测试条件
条件
WDT off
WDT on
fSUB on
fSUB on,fSYS=8MHz
最小 典型 最大
—
—
—
—
—
—
—
—
—
—
—
—
0.08
0.08
0.15
1.2
1.5
3
1.0
2.5
8
0.6
0.8
1.0
0.11
0.12
0.29
2.4
3.0
5
1.5
4.0
10
1.2
1.6
2.0
最大
单位
@85°C
1.30
1.40
2.20
2.9
3.6
6
2.0
6.0
12
1.6
2.0
2.5
μA
μA
μA
mA
注:当使用该表格电气特性数据时,以下几点需注意:
1. 任何数字输入都设置为非浮空的状态。
2. 所有测量都在无负载且所有外围功能关闭的条件下进行。
3. 无直流电流路径。
4. 所有待机电流数值都是在 HALT 指令执行后测得,因此 HALT 后停止执行所有指令。
Rev.1.40
15
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
工作电流特性
Ta=25°C,除非另有说明
符号
工作模式
低速模式 – LIRC
IDD
快速模式 – HIRC
测试条件
条件
VDD
1.8V
3V fSYS=32kHz
5V
1.8V
3V fSYS=8MHz
5V
最小
典型
最大
—
—
—
—
—
—
8
10
30
0.6
0.8
1.6
16
20
50
1.0
1.2
2.4
Max.
单位
@85°C
16
20
50
1.0
1.2
2.4
μA
mA
注:当使用该表格电气特性数据时,以下几点需注意:
1. 任何数字输入都设置为非浮空的状态。
2. 所有测量都在无负载且所有外围功能关闭的条件下进行。
3. 无直流电流路径。
4. 所有工作电流数值通过一个连续的 NOP 指令循环程序测得。
交流电气特性
以下表格中参数测量结果可能受多个因素影响,如振荡器类型、工作电压、工
作频率和温度等等。
内部高速振荡器 – HIRC – 频率精确度
程序烧录时,烧录器会调整 HIRC 振荡器使其工作在用户选择的 HIRC 频率和
工作电压 (3V 或 5V) 条件下。
符号
fHIRC
参数
通过烧录器调整后的
8MHz HIRC 频率
测试条件
温度
25°C
3V/5V
-40°C~85°C
25°C
2.2V~5.5V
-40°C~85°C
25°C
1.8V~5.5V
-40°C~85°C
VDD
最小
典型
-1%
-2%
-2.5%
-3%
-5%
-10%
8
8
8
8
8
8
最大
单位
+1%
+2%
+2.5%
MHz
+3%
+3%
+5%
注:1. 烧录器可在 3V/5V 这两个可选的固定电压下对 HIRC 频率进行调整,在此提供 VDD=3V/5V 时的参
数值。
2. 3V/5V 表格列下面提供的是全压条件下的参数值。当应用电压范围是 1.8V~3.6V 时,建议烧录器
电压固定在 3V;当应用电压范围是 3.3V~5.5V 时,建议烧录器电压固定在 5V。
Rev.1.40
16
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
内部低速振荡器电气特性 – LIRC
符号
测试条件
VDD
温度
3V/5V
25°C
1.8V~3.6V -10°C~50°C
(trim@3V) -40°C~85°C
3.3V~5.5V -10°C~50°C
(trim@3V) -40°C~85°C
2.2V~5.5V
-40°C~85°C
(trim@3V)
1.8V~5.5V
-40°C~85°C
(trim@3V)
—
-40°C~85°C
参数
LIRC 频率 ( 烧录器调整 )
fLIRC
tSTART
LIRC 频率
LIRC 启动时间
最小
典型
最大
单位
-1%
-4.0%
-6.0%
-4.0%
-6.0%
32
32
32
32
32
+1%
+4.0%
+6.0%
+4.0%
+6.0% kHz
-6.0%
32
+6.0%
-7%
32
+7%
—
—
100
μs
工作频率特性曲线
System Operating Frequency
8MHz
~
~
~
~
~
~
1.8V
5.5V
Operating Voltage
系统上电时间电气特性
Ta=-40°C~85°C
符号
参数
系统启动时间
( 从 fSYS off 的状态下唤醒 )
tSST
tRSTD
Rev.1.40
系统启动时间
( 从 fSYS on 的状态下唤醒 )
系统速度切换时间
( 快速模式 → 低速模式或
低速模式 → 快速模式 )
系统复位延迟时间
( 上电复位或 LVR 硬件复位 )
系统复位延迟时间
( WDTC/LVRC 软件复位 )
系统复位延迟时间
( WDT 溢出复位 )
VDD
—
—
—
—
测试条件
条件
fSYS=fH~fH/64, fH=fHIRC
fSYS=fSUB=fLIRC
fSYS=fH~fH/64, fH=fHIRC
fSYS=fSUB=fLIRC
—
fHIRC off → on
—
RRPOR=5V/ms
—
—
—
—
17
最小 典型 最大 单位
—
—
—
—
16
2
2
2
—
—
3
3
tHIRC
tLIRC
tH
tSUB
14
16
18
tHIRC
42
48
54
ms
14
16
18
ms
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
符号
参数
tSRESET 软件复位最小脉宽
测试条件
条件
—
VDD
—
最小 典型 最大 单位
45
90
120
μs
注:1. 系统启动时间里提到的 fSYS on/off 状态取决于工作模式类型以及所选的系统时钟振荡器。更多相关
细节请参考系统工作模式章节。
2. tHIRC 等符号所表示的时间单位,是对应频率值的倒数,相关频率值在前面表格有说明。例如,
tHIRC=1/fHIRC,tLIRC=1/fLIRC 等等。
3. 若 LIRC 被选择作为系统时钟源且在休眠模式下 LIRC 关闭,则上面表格中对应 tSST 数值还需加上
LIRC 频率表格里提供的 LIRC 启动时间 tSTART。
4. 系统速度切换时间实际上是指新使能的振荡器的启动时间。
输入 / 输出口电气特性
符号
VIL
VIH
IOL
IOH
RPH
Rev.1.40
Ta=-40°C~85°C
测试条件
最小 典型 最大 单位
VDD
条件
5V
—
0.0
—
1.5
I/O 口低电平输入电压
V
—
—
0.0
— 0.2VDD
5V
—
3.5
—
5.0
I/O 口高电平输入电压
V
—
—
0.8VDD —
VDD
3V
5
10
—
I/O 口灌电流
VOL=0.1VDD
mA
(HT66F0021/HT66F0031) 5V
10
20
—
3V
16
32
—
I/O 口灌电流
VOL=0.1VDD
mA
(HT66F0041)
5V
32
65
—
3V
-2.5
-5.0
—
I/O 口源电流
VOH=0.9VDD
mA
(HT66F0021/HT66F0031) 5V
-5
-10
—
3V VOH=0.9VDD,
-0.7
-1.5
—
SLEDCn[m+1, m]=00B
5V (n=0 或 1, m=0, 2, 4 或 6) -1.5
-2.9
—
3V VOH=0.9VDD,
-1.3
-2.5
—
SLEDCn[m+1, m]=01B
5V (n=0 或 1, m=0, 2, 4 或 6) -2.5
-5.1
—
I/O 口源电流
mA
(HT66F0041)
3V VOH=0.9VDD,
-1.8
-3.6
—
SLEDCn[m+1, m]=10B
5V (n=0 或 1, m=0, 2, 4 或 6) -3.6
-7.3
—
3V VOH=0.9VDD,
-4
-8
—
SLEDCn[m+1, m]=11B
5V (n=0 或 1, m=0, 2, 4 或 6)
-8
-16
—
(1)
3V
—
20
60
100
I/O 口上拉电阻
kΩ
(HT66F0021/HT66F0031) 5V
—
10
30
50
3V LVPU=0,
20
60
100
PxPU=FFH (Px:PA,
5V PB, PC)
10
30
50
I/O 口上拉电阻 (1)
kΩ
(HT66F0041)
3V LVPU=1,
6.67 15.00 23.00
PxPU=FFH (Px:PA,
5V PB, PC)
3.5
7.5
12.0
参数
18
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
符号
参数
RPL
I/O 口下拉电阻 (2)
( 仅用于 HT66F0041 )
ILEAK
I/O 口输入漏电流
tTC
tINT
TC 时钟输入最小脉宽
中断引脚最小输入脉宽
VDD
3V
5V
测试条件
条件
PB0~PB1
VIN=VDD ( 用于不带 RPL
5V 电阻的 I/O 引脚 ) 或
VIN=VSS
—
—
—
—
最小
典型
最大
单位
5
10
15
5
10
15
—
—
±1
μA
25
0.3
—
—
—
—
ns
μs
kΩ
注:1. RPH 内部上拉电阻值的计算方法是:将引脚接地并设置为输入且使能上拉电阻功能,然后在特定电
源电压下测量该引脚上电流,最后电压除以测量的电流值从而得到此上拉电阻值。
2. RPL 内部下拉电阻值的计算方法是:将引脚接 VDD 并设置为输入且使能下拉电阻功能,然后在特定
电源电压下测量该引脚上电流,最后电压除以测量的电流值从而得到此下拉电阻值。
存储器电气特性
Ta=-40°C~85°C,除非另有说明
符号
参数
测试条件
条件
最小 典型 最大 单位
VDD
Flash 程序存储器 / 模拟 EEPROM 存储器
读工作电压 – 模拟 EEPROM
—
—
1.8
—
5.5
存储器
VDD
V
擦 / 写工作电压 – 模拟
— Ta=25°C
1.8
—
5.5
EEPROM 存储器
擦 / 写时间 – Flash 程序存储器 5.0V Ta=25°C
—
2
3
ms
EWRTS[1:0]=00B,
—
—
2
3
Ta=25°C
EWRTS[1:0]=01B,
—
—
4
6
tDEW 擦 / 写时间 – 模拟 EEPROM
Ta=25°C
ms
存储器
EWRTS[1:0]=10B,
—
—
8
12
Ta=25°C
EWRTS[1:0]=11B,
—
—
16
24
Ta=25°C
EP
电容耐久性
—
—
10K
—
—
E/W
tRETD ROM 数据保存时间
— Ta=25°C
—
40
—
Year
RAM 数据存储器
VDD 读 / 写工作电压
—
—
VDDmin — VDDmax V
VDR RAM 数据保存电压
— 单片机处于休眠模式 1.0
—
—
V
注:1. 模拟 EEPROM 擦 / 写操作只有在 fSYS 时钟频率大于等于 2MHz 时才可执行。
2.“E/W”表示擦 / 写次数。
Rev.1.40
19
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
LVR 电气特性
符号
Ta=-40°C~85°C
参数
VLVR
低电压复位电压
ILVRBG
工作电流
ILVR
LVR 使能的额外电流
产生 LVR 复位的低电压最
短保持时间
tLVR
测试条件
VDD
条件
— LVR 使能,电压选择 1.7V
3V
LVR 使能,VLVR=1.7V
5V
5V
—
—
—
最小 典型 最大 单位
-5%
—
—
—
1.7
—
15
—
+5%
15
25
25
V
μA
120
240
480
μs
μA
内部参考电压电气特性
Ta=25°C
符号
IBG
tBGS
参数
使能 Bandgap 参考电压的额外
电流
VBG 启动稳定时间
测试条件
条件
VDD
最小 典型 最大 单位
—
VBGEN=1,LVR 除能
—
—
2
μA
—
无负载
—
—
50
μs
注: VBG 电压可以用作 A/D 转换器内部信号 OPA 输入。
A/D 转换器电气特性
符号
参数
VDD
VADI
VREF
NR
DNL
INL
A/D 转换器工作电压
A/D 转换器输入电压
A/D 转换器参考电压
分辨率
A/D 非线性微分误差
A/D 非线性积分误差
IADC
A/D 转换器使能的额外电流
tADCK
tON2ST
tADS
A/D 转换器时钟周期
A/D 转换器 On-to-Start 时间
采样时间
A/D 转换时间
( 包括采样和保持时间 )
tADC
IPGA
Rev.1.40
使能 OPA 的额外电流
Ta=-40°C~85°C
测试条件
最小 典型 最大
VDD
条件
—
—
1.8
—
5.5
—
—
0
— VREF
—
—
1.6
— VDD
—
—
—
—
10
— VREF=VDD,tADCK=0.5μs -1.5 — +1.5
— VREF=VDD,tADCK=0.5μs -2
—
+2
1.8V
—
300 420
3V 无负载,tADCK=0.5μs
—
340 500
5V
—
500 700
—
—
0.5
— 10.0
—
—
4
—
—
—
—
—
4
—
—
3V
5V
—
无负载
20
单位
V
V
V
Bit
LSB
LSB
μA
μs
μs
tADCK
—
14
—
tADCK
—
—
390
500
550
650
μA
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
符号
VOR
VVR
参数
测试条件
条件
VDD
OPA 的最大输出电压范围
VSS+
0.1
VSS+
0.1
3V
—
5V
1.8V~
5.5V
OPA 的固定电压输出
最小 典型 最大 单位
-5%
—
—
—
1.6
VDD 0.1
VDD 0.1
V
+5%
V
上电复位特性
Ta=-40°C~85°C
符号
VPOR
RRPOR
tPOR
参数
上电复位电压
上电复位电压速率
VDD 保持为 VPOR 的最小时间
VDD
—
—
—
测试条件
条件
—
—
—
最小 典型 最大 单位
—
0.035
1
—
—
—
100
—
—
mV
V/ms
ms
VDD
tPOR
RRPOR
VPOR
Time
系统结构
内部系统结构是 Holtek 单片机具有良好性能的主要因素。由于采用 RISC 结构,
此系列单片机具有高运算速度和高性能的特点。通过流水线的方式,指令的获
取和执行同时进行,此举使得除了跳转和调用指令需多一个指令周期外,其它
大部分指令都能分别在一个指令周期内完成。8 位 ALU 参与指令集中所有的运
算,它可完成算术运算、逻辑运算、移位、递增、递减和分支等功能,而内部
的数据路径则是以通过累加器和 ALU 的方式加以简化。有些寄存器在数据存储
器中被实现,且可以直接或间接寻址。简单的寄存器寻址方式和结构特性,确
保了在提供具有较大可靠度和灵活性的 I/O 和 A/D 控制系统时,仅需要少数的
外部器件。使得该系列单片机适用于低成本和大量生产的控制应用。
时序和流水线结构
主系统时钟由 HIRC 或 LIRC 振荡器提供,它被细分为 T1~T4 四个内部产生的
非重叠时序。在 T1 时间,程序计数器自动加一并抓取一条新的指令。剩下的
时间 T2~T4 完成译码和执行功能,因此,一个 T1~T4 时钟周期构成一个指令周
期。虽然指令的抓取和执行发生在连续的指令周期,但单片机流水线结构会保
证指令在一个指令周期内被有效执行。除非程序计数器的内容被改变,如子程
序的调用或跳转,在这种情况下指令将需要多一个指令周期的时间去执行。
如果指令牵涉到分支,例如跳转或调用等指令,则需要两个指令周期才能完成
指令执行。需要一个额外周期的原因是程序先用一个周期取出实际要跳转或调
Rev.1.40
21
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
用的地址,再用另一个周期去实际执行分支动作,因此用户需要特别考虑额外
周期的问题,尤其是在执行时间要求较严格的时候。
fSYS
(System Clock)
Phase Clock T1
Phase Clock T2
Phase Clock T3
Phase Clock T4
Program Counter
Pipelining
PC
PC+1
PC+2
Fetch Inst. (PC)
Execute Inst. (PC-1)
Fetch Inst. (PC+1)
Execute Inst. (PC)
Fetch Inst. (PC+2)
Execute Inst. (PC+1)
系统时序和流水线
1
MOV A,[12H]
2
CALL DELAY
3
CPL [12H]
4
:
5
:
6 DELAY: NOP
Fetch Inst. 1
Execute Inst. 1
Fetch Inst. 2
Execute Inst. 2
Fetch Inst. 3
Flush Pipeline
Fetch Inst. 6
Execute Inst. 6
Fetch Inst. 7
指令捕捉
程序计数器
在程序执行期间,程序计数器用来指向下一个要执行的指令地址。除了“JMP”
和“CALL”指令需要跳转到一个非连续的程序存储器地址之外,它会在每条
指令执行完成以后自动加一。只有较低的 8 位,即所谓的程序计数器低字节寄
存器 PCL,可以被用户直接读写。
当执行的指令要求跳转到不连续的地址时,如跳转指令、子程序调用、中断或
复位等,单片机通过加载所需要的地址到程序寄存器来控制程序,对于条件跳
转指令,一旦条件符合,在当前指令执行时取得的下一条指令将会被舍弃,而
由一个空指令周期来取代。
型号
HT66F0021/HT66F0031
HT66F0041
程序计数器
高字节
低字节 (PCL)
PC9~PC8
PCL7~PCL0
PC10~PC8
PCL7~PCL0
程序计数器的低字节,即程序计数器的低字节寄存器 PCL,可以通过程序控制,
且它是可以读取和写入的寄存器。通过直接写入数据到这个寄存器,一个程序
短跳转可直接执行,然而只有低字节的操作是有效的,跳转被限制在存储器的
当前页中,即 256 个存储器地址范围内,当这样一个程序跳转要执行时,会插
入一个空指令周期。程序计数器的低字节可由程序直接进行读取,PCL 的使用
可能引起程序跳转,因此需要额外的指令周期。
Rev.1.40
22
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
堆栈
堆栈是一个特殊的存储空间,用来存储程序计数器中的内容。该系列单片机有
多层堆栈,堆栈既不是数据部分也不是程序空间部分,而且它既不是可读取也
不是可写入的。当前层由堆栈指针 (SP) 加以指示,同样也是不可读写的。在子
程序调用或中断响应服务时,程序计数器的内容被压入到堆栈中。当子程序或
中断响应结束时,返回指令 (RET 或 RETI) 使程序计数器从堆栈中重新得到它
以前的值。当一个芯片复位后,堆栈指针将指向堆栈顶部。
如果堆栈已满,且有非屏蔽的中断发生,中断请求标志会被置位,但中断响应
将被禁止。当堆栈指针减少 ( 执行 RET 或 RETI ),中断将被响应。这个特性提
供程序设计者简单的方法来预防堆栈溢出。然而即使堆栈已满,CALL 指令仍
然可以被执行,而造成堆栈溢出。使用时应避免堆栈溢出的情况发生,因为这
可能导致不可预期的程序分支指令执行错误。
若堆栈溢出,则首个存入堆栈的程序计数器数据将会丢失。
型号
HT66F0021/HT66F0031
HT66F0041
堆栈层数
2
4
Program Counter
Top of Stack
Stack
Pointer
Stack Level 1
Stack Level 2
:
:
:
Bottom of Stack
Program Memory
Stack Level N
算术逻辑单元 – ALU
算术逻辑单元是单片机中很重要的部分,执行指令集中的算术和逻辑运算。
ALU 连接到单片机的数据总线,在接收相关的指令码后执行需要的算术与逻辑
操作,并将结果存储在指定的寄存器,当 ALU 计算或操作时,可能导致进位、
借位或其它状态的改变,而相关的状态寄存器会因此更新内容以显示这些改变,
ALU 所提供的功能如下:
● 算术运算:ADD,ADDM,ADC,ADCM,SUB,SUBM,SBC,SBCM,DAA
● 逻辑运算:AND,OR,XOR,ANDM,ORM,XORM,CPL,CPLA
● 移位运算:RRA,RR,RRCA,RRC,RLA,RL,RLCA,RLC
● 递增和递减:INCA,INC,DECA,DEC
● 分支判断:JMP,SZ,SZA,SNZ,SIZ,SDZ,SIZA,SDZA,CALL,RET,
RETI
Rev.1.40
23
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
Flash 程序存储器
程序存储器用来存放用户代码即储存程序。程序存储器为 Flash 类型意味着可
以多次重复编程,方便用户使用同一芯片进行程序的修改。使用适当的单片机
编程工具,此系列单片机提供用户灵活便利的调试方法和项目开发规划及更新。
结构
程序存储器的容量为 1K×14 位或 2K×14 位,程序存储器用程序计数器来寻址,
其中也包含数据、表格和中断入口。数据表格可以设定在程序存储器的任何地
址,由表格指针来寻址。
型号
HT66F0021/HT66F0031
HT66F0041
000H
程序存储器容量
1K×14
2K×14
HT66F0021/0031
HT66F0041
Initialisation Vector
Initialisation Vector
Interrupt Vectors
Interrupt Vectors
Look-up Table
Look-up Table
004H
010H
014H
n00H
nFFH
3FFH
14 bits
7FFH
14 bits
程序存储器结构
特殊向量
程序存储器内部某些地址保留用做诸如复位和中断入口等特殊用途。地址 000H
是芯片复位后的程序起始地址。在芯片复位之后,程序将跳到这个地址并开始
执行。
查表
程序存储器中的任何地址都可以定义成一个表格,以便储存固定的数据。使用
表格时,表格指针必须先行设定,其方式是将表格的地址放在表格指针寄存器
TBLP 和 TBHP 中。这两个寄存器定义表格总的地址。
在设定完表格指针后,表格数据可以使用如“TABRD [m]”或“TABRDL [m]”
等指令分别从程序存储器查表读取。当这些指令执行时,程序存储器中表格数
据低字节,将被传送到使用者所指定的数据存储器 [m],程序存储器中表格数
据的高字节,则被传送到 TBLH 特殊寄存器,而高字节中未使用的位将被读取
为“0”。
Rev.1.40
24
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
下图是查表中寻址 / 数据流程:
Program Memory
Address
Last Page or
TBHP Register
TBLP Register
Data
14 bits
Register TBLH
User Selected
Register
High Byte
Low Byte
查表范例
以下范例说明表格指针和表格数据如何被定义和执行。这个例子使用的表格
数据用 ORG 伪指令储存在存储器中。ORG 指令的值“300H”指向的地址是
HT66F0021/0031 的 1K 程序存储器中最后一页的起始地址。表格指针低字节
寄存器的初始值设为 06H,这可保证从数据表格读取的第一笔数据位于程序存
储器地址 306H,即最后一页起始地址后的第六个地址。值得注意的是,假如
“TABRD [m]”指令被使用,则表格指针指向 TBLP 和 TBHP 寄存器所指定的
地址。在这个例子中,表格数据的高字节等于零,而当“TABRD [m]”指令被
执行时,此值将会自动的被传送到 TBLH 寄存器。
TBLH 寄存器为只读寄存器,不能重新储存,若主程序和中断服务程序都使用
表格读取指令,应该注意它的保护。使用表格读取指令,中断服务程序可能会
改变 TBLH 的值,若随后在主程序中再次使用这个值,则会发生错误,因此建
议避免同时使用表格读取指令。然而在某些情况下,如果同时使用表格读取指
令是不可避免的,则在执行任何主程序的表格读取指令前,中断应该先除能,
另外要注意的是所有与表格相关的指令,都需要两个指令周期去完成操作。
表格读取程序范例
tempreg1 db ?
tempreg2 db ?
:
:
mov a,06h
mov tblp,a
mov a,03h
mov tbhp,a
:
:
tabrd tempreg1
dec tblp
tabrd tempreg2
:
:
org 300h
dc 00Ah, 00Bh, 00Ch, 00Dh,
Rev.1.40
; temporary register #1
; temporary register #2
;
;
;
;
initialise low table pointer - note that this
address is referenced
to the last page or the page that tbhp pointed
initialise high table pointer
;
;
;
;
;
;
;
;
;
;
;
transfers value in table referenced by table
pointer, data at program memory address “306H”
transferred to tempreg1 and TBLH
reduce value of table pointer by one
transfers value in table referenced by table
pointer, data at program memory address “305H”
transferred to tempreg2 and TBLH
in this example the data “1AH” is transferred
to tempreg1 and data “0FH” to register tempreg2
the value “00H” will be transferred to the high
byte register TBLH
; sets initial address of program memory
00Eh, 00Fh, 01Ah, 01Bh
25
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
在线烧录 – ICP
提供 Flash 型程序存储器,用户可便利地对同一芯片进行程序的更新和修改。
另外,Holtek 单片机提供 4 线接口的在线烧录方式。用户可将进行过烧录或未
经过烧录的单片机芯片连同电路板一起制成,最后阶段进行程序的更新和程序
的烧录,在无需拔出再重新插入芯片的情况下方便地保持程序为最新版。
Holtek 烧录器引脚名称
ICPDA
ICPCK
VDD
VSS
MCU 在线烧录引脚名称
PA0
PA2
VDD
VSS
功能
串行数据 / 地址烧录
时钟烧录
电源
地
程序存储器可以通过 4 线的接口在线进行烧录。其中一条线用于数据串行下载
或上传、一条线用于串行时钟、剩下两条用于提供电源。芯片在线烧写的详细
使用说明超出此文档的描述范围,将由专门的参考文献提供。
烧录过程中,用户必须确保 ICPDA 和 ICPCK 这两个引脚没有连接至其它输出脚。
Writer Connector
Signals
MCU Programming
Pins
Writer_VDD
VDD
ICPDA
PA0
ICPCK
PA2
Writer_VSS
VSS
*
*
To other Circuit
注:* 可能为电阻或电容。若为电阻则其值必须大于 1kΩ,若为电容则其必须小于 1nF。
片上调试 – OCDS
EV 芯片 HT66V00x1 用于 HT66F00x1 单片机仿真。EV 芯片提供片上调试功能
(OCDS) 用于开发过程中的单片机调试。除了片上调试功能外,单片机和 EV 芯
片在功能上几乎是兼容的。用户可将 OCDSDA 和 OCDSCK 引脚连接至 Holtek
HT-IDE 开发工具,从而实现 EV 芯片对单片机的仿真。OCDSDA 引脚为 OCDS
数据 / 地址输入 / 输出脚,OCDSCK 引脚为 OCDS 时钟输入脚。当用户用 EV
芯片进行调试时,OCDSDA 和 OCDSCK 引脚上的其它共用功能在 EV 芯片无
效。由于这两个 OCDS 引脚与 ICP 引脚共用,因此在线烧录时仍用作 Flash 存
储器烧录引脚。关于 OCDS 功能的详细描述,请参考“Holtek e-Link for 8-bit
MCU OCDS 用户手册”文件。
Holtek e-Link 引脚名称 EV 芯片引脚名称
OCDSDA
OCDSDA
OCDSCK
OCDSCK
VDD
VDD
VSS
VSS
Rev.1.40
26
功能
片上调试串行数据 / 地址输入 / 输出
片上调试时钟输入
电源
地
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
数据存储器
数据存储器是内容可更改的 8 位 RAM 内部存储器,用来储存临时数据。
结构
数据存储器分为两种类型,第一种是特殊功能数据存储器。这些寄存器有固定
的地址且与单片机的正确操作密切相关。大多特殊功能寄存器都可在程序控制
下直接读取和写入,但有些被加以保护。第二种数据存储器是做一般用途使用,
都可在程序控制下进行读取和写入。
此系列单片机数据存储器的起始地址是“00H”。特殊功能数据存储器地址范
围为 00H~3FH,而通用数据存储器地址范围为 40H~7FH。
00H
Special Purpose
Data Memory
3FH
40H
General Purpose
Data Memory
7FH
Bank0
数据存储器结构
通用数据存储器
所有的单片机程序需要一个读 / 写的存储区,让临时数据可以被储存和再使用,
该 RAM 区域就是通用数据存储器。这个数据存储区可让使用者进行读取和写
入的操作。使用位操作指令可对个别的位做置位或复位的操作,较大地方便了
用户在数据存储器内进行位操作。
特殊功能数据存储器
这个区域的数据存储器是存放特殊寄存器的,这些寄存器与单片机的正确操作
密切相关,大多数的寄存器可进行读取和写入,只有一些是被写保护而只能读
取的,相关细节的介绍请参看有关特殊功能寄存器的部分。要注意的是,任何
读取指令对存储器中未定义的地址进行读取将返回“00H”。
Rev.1.40
27
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
10H
11H
12H
13H
14H
15H
16H
17H
18H
19H
1AH
1BH
1CH
1DH
1EH
1FH
20H
21H
22H
23H
24H
25H
26H
27H
28H
29H
2AH
32H
33H
34H
34H
Bank 0
IAR0
MP0
ACC
PCL
TBLP
TBLH
TBHP
STATUS
INTEG
WDTC
TBC
RSTFC
PASR
SCC
HIRCC
IFS
PA
PAC
PAPU
PAWU
ECR
EAR
EDL
EDH
TMRC
TMR
PWMC
PWMDATA
INTC0
INTC1
SADOL
SADOH
SADC0
SADC1
PSCR
LVRC
VBGC
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
10H
11H
12H
13H
14H
15H
16H
17H
18H
19H
1AH
1BH
1CH
1DH
1EH
1FH
20H
21H
22H
23H
24H
25H
26H
27H
28H
29H
2AH
32H
33H
34H
34H
Bank 0
IAR0
MP0
ACC
PCL
TBLP
TBLH
TBHP
STATUS
INTEG
WDTC
TBC
RSTFC
PASR
SCC
HIRCC
IFS
PA
PAC
PAPU
PAWU
PB
PBC
PBPU
ECR
EAR
EDL
EDH
TMRC
TMR
PWMC
PWMDATA
INTC0
INTC1
SADOL
SADOH
SADC0
SADC1
PSCR
LVRC
VBGC
3FH
3FH
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
10H
11H
12H
13H
14H
15H
16H
17H
18H
19H
1AH
1BH
1CH
1DH
1EH
1FH
20H
21H
22H
23H
24H
25H
26H
27H
28H
29H
2AH
2BH
2CH
2DH
2EH
2FH
30H
31H
32H
33H
34H
35H
36H
37H
38H
39H
3AH
3BH
Bank 0
IAR0
MP0
ACC
PCL
TBLP
TBLH
TBHP
STATUS
INTEG
WDTC
TBC
RSTFC
PASR
SCC
HIRCC
IFS
PA
PAC
PAPU
PAWU
PB
PBC
PBPU
ECR
EAR
ED0L
ED0H
TMRC
TMR
INTC0
INTC1
SADOL
SADOH
SADC0
SADC1
PSCR
PC
PCC
PCPU
ED1L
ED1H
ED2L
ED2H
ED3L
ED3H
LVRC
VBGC
PWMC
PWMP
PWMD
SLEDC0
SLEDC1
LVPUC
3FH
: Unused, read as 00H
: Unused, read as 00H
: Unused, read as 00H
HT66F0021
HT66F0031
HT66F0041
特殊功能数据存储器结构
Rev.1.40
28
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
特殊功能寄存器
大部分特殊功能寄存器的细节将在相关功能章节描述,但有几个寄存器需在此
章节单独描述。
间接寻址寄存器 – IAR0
间接寻址寄存器 IAR0 虽位于数据存储器寄存器区域,但不同于正常寄存器,
它没有实际的物理地址。与定义实际存储器地址的直接存储器寻址不同,间接
寻址是使用间接寻址寄存器和存储器指针来执行存储器数据操作。在间接寻址
寄存器 IAR0 上的任何动作,将对存储器指针 MP0 所指定的存储器地址产生对
应的读 / 写操作。它们总是成对出现,IAR0 和 MP0 可以访问 Bank 0。因为这
些间接寻址寄存器不是实际存在的,直接读取将返回“00H”的结果,而直接
写入这些寄存器则不做任何操作。
存储器指针 – MP0
该系列单片机提供一个存储器指针,即 MP0。由于这个指针在数据存储器中能
像普通的寄存器一般被操作,因此提供了一个寻址和数据追踪的有效方法。当
对间接寻址寄存器进行任何操作时,单片机指向的实际地址是由存储器指针所
指定的地址。MP0、IAR0 用于访问 Bank 0。
以下例子说明如何清空一个具有 4 个 RAM 地址的区块,它们已事先定义成地
址 adres1 到 adres4。
间接寻址程序举例
data .section ‘data’
adres1 db ?
adres2 db ?
adres3 db ?
adres4 db ?
block db ?
code .section at 0 code
org 00h
start:
mov a,04h
mov block,a
mov a,offset adres1
mov mp0,a
loop:
clr IAR0
inc mp0
sdz block
jmp loop
continue:
:
; set size of block
; Accumulator loaded with first RAM address
; setup memory pointer with first RAM address
; clear the data at address defined by MP0
; increase memory pointer
; check if last memory location has been cleared
在上面的例子中有一点值得注意,即并没有确定 RAM 地址。
累加器 – ACC
对任何单片机来说,累加器是相当重要的,且与 ALU 所完成的运算有密切关
系,所有 ALU 得到的运算结果都会暂时存在 ACC 累加器里。若没有累加器,
ALU 必须在每次进行如加法、减法和移位的运算时,将结果写入到数据存储器,
这样会造成程序编写和时间的负担。另外数据传送也常常牵涉到累加器的临时
储存功能,例如在使用者定义的一个寄存器和另一个寄存器之间传送数据时,
由于两寄存器之间不能直接传送数据,因此必须通过累加器来传送数据。
Rev.1.40
29
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
程序计数器低字节寄存器 – PCL
为了提供额外的程序控制功能,将程序计数器低字节规划在数据存储器的特殊
功能区域内,通过对此寄存器进行操作,便可直接跳转到其它程序地址。直接
给 PCL 寄存器赋值将导致程序直接跳转到程序存储器的某一地址,然而由于寄
存器只有 8 位长度,因此只允许在本页的程序存储器范围内进行跳转。注意,
当执行此操作时,会插入一个空指令周期。
表格寄存器 – TBLP, TBHP, TBLH
这三个特殊功能寄存器用于对存储在程序存储器中的表格进行操作。TBLP 和
TBHP 为表格指针,指向表格数据存储的地址。它们的值必须在任何表格读取
指令执行前预先设定,由于它们的值可以被如“INC”或“DEC”的指令所改变,
这就提供了一种简便的方法对表格数据进行读取。表格读取数据指令执行之后,
表格数据高字节存储在 TBLH 中。其中要注意的是,表格数据低字节会被传送
到使用者指定的地址。
状态寄存器 – STATUS
这 8 位的状态寄存器由零标志位 (Z)、进位标志位 (C)、辅助进位标志位 (AC)、
溢出标志位 (OV)、暂停标志位 (PDF) 和看门狗定时器溢出标志位 (TO) 组成。
这些算术 / 逻辑操作和系统运行标志位是用来记录单片机的运行状态。
除了 PDF 和 TO 标志外,状态寄存器中的位像其它大部分寄存器一样可以被改
变。任何数据写入到状态寄存器将不会改变 TO 或 PDF 标志位。另外,执行不
同的指令后,与状态寄存器有关的运算可能会得到不同的结果。TO 标志位只会
受系统上电、看门狗溢出或执行“CLR WDT”或“HALT”指令影响。PDF 标
志位只会受执行“HALT”或“CLR WDT”指令或系统上电影响。
Z、OV、AC 和 C 标志位通常反映最近运算的状态。
● C:当加法运算的结果产生进位,或减法运算的结果没有产生借位时,则 C
被置位,否则 C 被清零,同时 C 也会被带进位的移位指令所影响。
● AC:当低半字节加法运算的结果产生进位,或低半字节减法运算的结果没有
产生借位时,AC 被置位,否则 AC 被清零。
● Z:当算术或逻辑运算结果是零时,Z 被置位,否则 Z 被清零。
● OV:当运算结果高两位的进位状态异或结果为 1 时,OV 被置位,否则 OV
被清零。
● PDF:系统上电或执行“CLR WDT”指令会清零 PDF,而执行“HALT”指
令则会置位 PDF。
● TO:系统上电或执行“CLR WDT”或“HALT”指令会清零 TO,而当 WDT
溢出则会置位 TO。
另外,当进入一个中断程序或执行子程序调用时,状态寄存器不会自动压入到
堆栈保存。假如状态寄存器的内容是重要的且子程序可能改变状态寄存器的话,
则需谨慎的去做正确的储存。
Rev.1.40
30
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
● STATUS 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
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.40
Bit 7~6
未定义,读为“0”
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 也受循环移位指令的影响。
31
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
模拟 EEPROM 数据存储器
该系列单片机内建模拟 EEPROM 数据存储器。由于其非易失的存储结构,即使
在电源掉电的情况下存储器内的数据仍然保存完好。这种存储区扩展了存储器
空间,对设计者来说增加了许多新的应用机会。模拟 EEPROM 可以用来存储产
品编号、校准值、用户特定数据、系统配置参数或其它产品信息等。
模拟 EEPROM 数据存储器结构
该系列单片机的模拟 EEPROM 数据存储器容量为 32×14 位。该模拟 EEPROM
以页为单位进行擦操作,以字为单位进行读 / 写操作。页的大小为 16 字。注意,
在执行写操作之前必须先执行擦操作。
操作
擦除
写入
读取
注:页大小 = 16 字
格式
16 字 / 页
1字/次
1字/次
模拟 EEPROM 擦除 / 写 / 读格式 – HT66F0021/HT66F0031
操作
擦除
写入
读取
注:页大小 = 16 字
格式
16 字 / 页
4字/次
1字/次
模拟 EEPROM 擦除 / 写 / 读格式 – HT66F0041
EAR4
0
1
擦除页
0
1
EAR [3:0]
xxxx
xxxx
“x”:无关
擦除页序号及选择
EAR[4:2]
000
001
010
011
100
101
110
111
写单元
0
1
2
3
4
5
6
7
EAR [1:0]
xx
xx
xx
xx
xx
xx
xx
xx
“x”:无关
写单元序号及选择 – HT66F0041
Rev.1.40
32
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
模拟 EEPROM 寄存器
一 些 寄 存 器 控 制 内 部 模 拟 EEPROM 数 据 存 储 器 总 的 操 作, 有 地 址 寄 存 器
EAR、数据寄存器 EDL/EDH 或 ED0L/ED0H~ED3L/ED3H 及一个控制寄存器
ECR。
寄存器
名称
EAR
EDL
EDH
ECR
位
7
6
5
—
—
—
D7
D6
D5
—
—
D13
EWRTS1 EWRTS0 EEREN
4
3
2
1
0
EAR4 EAR3 EAR2 EAR1 EAR0
D4
D3
D2
D1
D0
D12
D11
D10
D9
D8
EER EWREN EWR ERDEN ERD
模拟 EEPROM 寄存器列表 – HT66F0021/HT66F0031
位
寄存器
名称
7
6
5
EAR
—
—
—
ED0L
D7
D6
D5
ED0H
—
—
D13
ED1L
D7
D6
D5
ED1H
—
—
D13
ED2L
D7
D6
D5
ED2H
—
—
D13
ED3L
D7
D6
D5
ED3H
—
—
D13
ECR EWRTS1 EWRTS0 EEREN
4
3
2
1
0
EAR4 EAR3 EAR2 EAR1 EAR0
D4
D3
D2
D1
D0
D12
D11
D10
D9
D8
D4
D3
D2
D1
D0
D12
D11
D10
D9
D8
D4
D3
D2
D1
D0
D12
D11
D10
D9
D8
D4
D3
D2
D1
D0
D12
D11
D10
D9
D8
EER EWREN EWR ERDEN ERD
模拟 EEPROM 寄存器列表 – HT66F0041
● EAR 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
EAR4
R/W
0
3
EAR3
R/W
0
2
EAR2
R/W
0
Bit 7~5
未定义,读为“0”
Bit 4~0
EAR4~EAR0:模拟 EEPROM 存储器地址 bit 4 ~ bit 0
1
EAR1
R/W
0
0
EAR0
R/W
0
1
D1
R/W
0
0
D0
R/W
0
● EDL 寄存器 – HT66F0021/HT66F0031
Bit
Name
R/W
POR
Bit 7~0
Rev.1.40
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
D7~D0:模拟 EEPROM 存储器数据 bit 7 ~ bit 0
33
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
● EDH 寄存器 – HT66F0021/HT66F0031
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
D13
R/W
0
4
D12
R/W
0
3
D11
R/W
0
Bit 7~6
未定义,读为“0”
Bit 5~0
D13~D8:模拟 EEPROM 存储器数据 bit 13 ~ bit 8
2
D10
R/W
0
1
D9
R/W
0
0
D8
R/W
0
2
D2
R/W
0
1
D1
R/W
0
0
D0
R/W
0
1
D9
R/W
0
0
D8
R/W
0
1
D1
R/W
0
0
D0
R/W
0
1
D9
R/W
0
0
D8
R/W
0
1
D1
R/W
0
0
D0
R/W
0
● ED0L 寄存器 – HT66F0041
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
D7~D0:第一个模拟 EEPROM 存储器数据 bit 7 ~ bit 0
● ED0H 寄存器 – HT66F0041
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
D13
R/W
0
4
D12
R/W
0
3
D11
R/W
0
2
D10
R/W
0
Bit 7~6
未定义,读为“0”
Bit 5~0
D13~D8:第一个模拟 EEPROM 存储器数据 bit 13 ~ bit 8
● ED1L 寄存器 – HT66F0041
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
D7~D0:第二个模拟 EEPROM 存储器数据 bit 7 ~ bit 0
● ED1H 寄存器 – HT66F0041
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
D13
R/W
0
4
D12
R/W
0
3
D11
R/W
0
2
D10
R/W
0
Bit 7~6
未定义,读为“0”
Bit 5~0
D13~D8:第二个模拟 EEPROM 存储器数据 bit 13 ~ bit 8
● ED2L 寄存器 – HT66F0041
Bit
Name
R/W
POR
Bit 7~0
Rev.1.40
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
D7~D0:第三个模拟 EEPROM 存储器数据 bit 7 ~ bit 0
34
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
● ED2H 寄存器 – HT66F0041
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
D13
R/W
0
4
D12
R/W
0
3
D11
R/W
0
2
D10
R/W
0
Bit 7~6
未定义,读为“0”
Bit 5~0
D13~D8:第三个模拟 EEPROM 存储器数据 bit 13 ~ bit 8
1
D9
R/W
0
0
D8
R/W
0
1
D1
R/W
0
0
D0
R/W
0
1
D9
R/W
0
0
D8
R/W
0
● ED3L 寄存器 – HT66F0041
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
D7~D0:第四个模拟 EEPROM 存储器数据 bit 7 ~ bit 0
● ED3H 寄存器 – HT66F0041
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
D13
R/W
0
4
D12
R/W
0
3
D11
R/W
0
2
D10
R/W
0
Bit 7~6
未定义,读为“0”
Bit 5~0
D13~D8:第四个模拟 EEPROM 存储器数据 bit 13 ~ bit 8
● ECR 寄存器
Bit
Name
R/W
POR
Rev.1.40
7
6
5
EWRTS1 EWRTS0 EEREN
R/W
R/W
R/W
0
0
0
4
EER
R/W
0
3
EWREN
R/W
0
2
EWR
R/W
0
1
ERDEN
R/W
0
0
ERD
R/W
0
Bit 7~6
EWRTS1~EWRTS0:模拟 EEPROM 擦 / 写时间选择
00:2ms
01:4ms
10:8ms
11:16ms
Bit 5
EEREN:模拟 EEPROM 擦使能位
0:除能
1:使能
此位为模拟 EEPROM 擦使能位,向模拟 EEPROM 执行擦操作之前需将此位
置高。擦周期结束后,硬件自动将此位清零。将此位清零时,则禁止向模拟
EEPROM 执行擦操作。
Bit 4
EER:模拟 EEPROM 擦控制位
0:擦周期结束
1:开启擦周期
此位为模拟 EEPROM 擦控制位,由应用程序将此位置高将激活擦周期。擦周期
结束后,硬件自动将此位清零。当 EEREN 未先置高时,此位置高无效。
35
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
Bit 3
EWREN:模拟 EEPROM 写使能位
0:除能
1:使能
此位为模拟 EEPROM 写使能位,向模拟 EEPROM 执行写操作之前需将此位
置高。写周期结束后,硬件自动将此位清零。将此位清零时,则禁止向模拟
EEPROM 执行写操作。
Bit 2
EWR:模拟 EEPROM 写控制位
0:写周期结束
1:开启写周期
此位为模拟 EEPROM 写控制位,由应用程序将此位置高将激活写周期。写周期
结束后,硬件自动将此位清零。当 EWREN 未先置高时,此位置高无效。
Bit 1
ERDEN:模拟 EEPROM 读使能位
0:除能
1:使能
此位为模拟 EEPROM 读使能位,向模拟 EEPROM 执行读操作之前需将此位置
高。将此位清零时,则禁止向模拟 EEPROM 执行读操作。
Bit 0
ERD:模拟 EEPROM 读控制位
0:读周期结束
1:开启读周期
此位为模拟 EEPROM 读控制位,由应用程序将此位置高将激活读周期。读周期
结束后,硬件自动将此位清零。当 ERDEN 未首先置高时,此位置高无效。
注:1. 在同一条指令中 EEREN、EER、EWREN、EWR、ERDEN 和 ERD 不能同时置为“1”。
2. 应注意,当读 / 写 / 擦操作成功启动后,CPU 将停止运行。
3. 在执行擦或写操作之前,先确保 fSYS 时钟频率大于等于 2MHz 且 fSUB 时钟已稳定。
4. 需确保读 / 写 / 擦操作已执行完毕后才可执行其它操作。
擦除模拟 EEPROM 中的数据
擦除模拟 EEPROM 中的数据,被擦除页的地址要先放入 EAR 寄存器中,被擦
除页的大小为 16 字 / 页。因此,可用页的擦除地址仅由 EAR 寄存器的 EAR4
位决定,而 EAR 寄存器的 EAR3~EAR0 位的内容未用于决定被擦除页的地址。
擦除模拟 EEPROM 中的数据,ECR 寄存器中的擦使能位 EEREN 先置为高以使
能擦功能,然后 ECR 寄存器中的 EER 位需立即置高以开始擦操作。这两条指
令必须在两个指令周期内连续执行才可成功启动一个擦除操作。进行擦除操作
之前应先将总中断使能位 EMI 清零,在一个有效的擦启动步骤完成之后再将其
使能。注意当擦除操作成功启动后,CPU 将停止运行。当擦周期结束,CPU 将
恢复执行应用程序。而 EER 位将自动被硬件清零,以告知用户数据已被擦除。
执行完一个擦操作后,模拟 EEPROM 被擦除页的内容将全为“0”。
写数据到模拟 EEPROM
写数据至模拟 EEPROM,模拟 EEPROM 中写入数据的地址要先放入 EAR 寄存
器中,要写入的数据需存入 EDH/EDL 寄存器或 ED0L/ED0H~ED3L/ED3H 寄存
器对中。对于 HT66F0021 和 HT66F0031 单片机,写操作的大小为 1 字 / 次,因
此写操作的地址由 EAR 寄存器所有的位决定。然而,HT66F0041 单片机写操作
的大小为 4 字 / 次,因此,有用的写单元地址仅由 EAR 寄存器的 EAR4~EAR2
位决定,而 EAR1~EAR0 位未用于决定写单元地址。
写数据至模拟 EEPROM,ECR 寄存器中的写使能位 EWREN 先置为高以使能写
功能,然后 ECR 寄存器中的 EWR 位需立即置高以开始写操作。这两条指令必须
在两个指令周期内连续执行才可成功启动一个写操作。进行写操作之前应先将总
中断使能位 EMI 清零,在一个有效的写启动步骤完成之后再将其使能。注意当
写操作成功启动后,CPU 将停止运行。当写周期结束,CPU 将恢复执行应用程序。
而 EWR 位将自动被硬件清零,以告知用户数据已被写入模拟 EEPROM。
Rev.1.40
36
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
从模拟 EEPROM 中读取数据
从模拟 EEPROM 中读取数据,要读取的数据的地址需先放入 EAR 寄存器中。
ECR 寄存器中的读使能位 ERDEN 先置为高以使能读功能。若 ECR 寄存器中的
ERD 位被置高,一个读周期将开始。注意当读操作成功启动后,CPU 将停止运
行。当读周期结束,CPU 将恢复执行应用程序。而 ERD 位将自动被硬件清零,
以告知用户已从模拟 EEPROM 中读取到数据。该数据可通过应用程序从 EDH/
EDL 寄存器或 ED0H/ED0L 寄存器对中读到,读到的数据在其它读、写或擦操
作执行前将一直保留在该寄存器或对中。
编程注意事项
必须注意的是数据不会无意写入模拟 EEPROM。在没有写动作时写使能位被正
常清零可以增强保护功能。尽管没有必要,写一个简单的读回程序以检查新写
入的数据是否正确还是应该考虑的。EWREN 或 EEREN 位置位后,ECR 寄存
器中的 EWR 或 EER 位需立即置位,以确保写或擦周期正确地执行。写或擦周
期开始前总中断位 EMI 应先清零,在一个有效的写或擦启动步骤完成之后再将
此位重新使能。注意,单片机不应在模拟 EEPROM 执行读、写或擦操作完全完
成之前进入空闲或休眠模式,否则模拟 EEPROM 读、写或擦操作将失败。
程序举例
擦除模拟 EEPROM 的一个数据页 – 轮询法
MOV A, EEPROM_ADRES
;
MOV EAR, A
MOV A, 00H
;
;
MOV ECR, A
CLR EMI
SET EEREN
;
SET EER
;
;
SET EMI
BACK:
SZ EER
;
JMP BACK
:
user-defined page
Erase time=2ms (40H for 4ms, 80H for 8ms, C0H
for 16ms)
set EEREN bit, enable erase operation
start Erase Cycle - set EER bit – executed
immediately after setting EEREN bit
check for erase cycle end
写数据到模拟 EEPROM – 轮询法
MOV A, EEPROM_ADRES
;
MOV EAR, A
MOV A, EEPROM_DATA_L
;
;
;
MOV EDL, A
MOV A, EEPROM_DATA_H
MOV EDH, A
MOV A, 00H
;
;
MOV ECR, A
CLR EMI
SET EWREN
;
SET EWR
;
;
SET EMI
Rev.1.40
user-defined address
user-defined data, for the HT66F0041 device, the
4 words of user-defined data are written to
ED0L/ED0H ~ ED3L/ED3H
Write time=2ms (40H for 4ms, 80H for 8ms, C0H
for 16ms)
set EWREN bit, enable write operation
start Write Cycle – set EWR bit – executed
immediately after setting EWREN bit
37
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
BACK:
SZ EWR
JMP BACK
:
; check for write cycle end
从模拟 EEPROM 中读取数据 – 轮询法
MOV A, EEPROM_ADRES
MOV EAR, A
SET ERDEN
SET ERD
BACK:
SZ ERD
JMP BACK
CLR ECR
MOV A, EDL
MOV READ_DATA_L, A
MOV A, EDH
MOV READ_DATA_H, A
; user defined address
; set ERDEN bit, enable read operation
; start Read Cycle - set ERD bit
; check for read cycle end
;
;
;
;
;
disable Emulated EEPROM read if no more read
operations are required
move read data to user-defined register, for
the HT66F0041 device, the read data is located
in the ED0L/ED0H
注:对于每一个读操作,即使地址是连续的,都必须重新设置地址寄存器,接着再将 ERD
位置高开启一个读周期。
振荡器
不同的振荡器选择可以让使用者在不同的应用需求中实现更大范围的功能。振
荡器的灵活性使得在速度和功耗方面可以达到较佳的优化。振荡器操作是通过
相关的控制寄存器完成的。
振荡器概述
振荡器除了作为系统时钟源,还作为看门狗定时器和时基中断的时钟源。集成
的内部振荡器不需要任何外围器件。它们提供的高速和低速系统振荡器具有较
宽的频率范围。较高频率的振荡器提供更高的性能,但要求有更高的功率,反
之亦然。动态切换快慢系统时钟的能力使单片机具有灵活而优化的性能 / 功耗
比,此特性对功耗敏感的应用领域尤为重要。
类型
内部高速 RC
内部低速 RC
名称
HIRC
LIRC
频率
8MHz
32kHz
振荡器类型
系统时钟配置
该系列单片机有两个系统振荡器,包括一个高速振荡器和一个低速振荡器。高
速振荡器为内部 8MHz 高速振荡器 HIRC,低速振荡器为内部 32kHz 低速振荡
器 LIRC。使用高速或低速振荡器作为系统时钟的选择是通过设置 SCC 寄存器
中的 CKS2~CKS0 位决定的,系统时钟可动态选择。
Rev.1.40
38
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
fH
High Speed
Oscillator
HIRC
fH/2
fH/4
fH/8
Prescaler
IDLE0
SLEEP
HIRCEN
fH/32
Low Speed
Oscillator
fSUB
LIRC
fSYS
fH/16
fH/64
CKS2~CKS0
fSUB
IDLE2
SLEEP
fLIRC
系统时钟配置选项
内部 RC 振荡器 – HIRC
内部 RC 振荡器是一个集成的系统振荡器,无需其它外部器件。内部 RC 振荡
器频率固定为 8MHz。芯片在制造时进行调整且内置频率补偿电路,使得振荡
频率因 VDD、温度以及芯片制成工艺不同的影响较大程度地降低。该内部时钟
无需额外的引脚。
内部 32kHz 振荡器 – LIRC
内部 32kHz 系统振荡器是一个完全集成的低频 RC 振荡器,它的典型频率值为
32kHz 且无需外部元件。芯片在制造时进行调整且内置频率补偿电路,使得振
荡器因电源电压、温度及芯片制成工艺不同的影响较大程度地降低。
工作模式和系统时钟
现今的应用要求单片机具有较高的性能及尽可能低的功耗,这种矛盾的要求在
便携式电池供电的应用领域尤为明显。高性能所需要的高速时钟将增加功耗,
反之亦然。此系列单片机提供高、低速两种时钟源,它们之间可以动态切换,
用户可通过优化单片机操作来获得较佳性能 / 功耗比。
系统时钟
此系列单片机为 CPU 和外围功能操作提供了多种不同的时钟源。用户使用寄存
器编程可获取多种时钟,进而使系统时钟获取较大的应用性能。
主系统时钟可来自高频时钟源 fH 或低频时钟源 fSUB,通过 SCC 寄存器中的
CKS2~CKS0 位进行选择。高频时钟来自 HIRC 振荡器。低频系统时钟源来自
LIRC 振荡器。其它系统时钟还有高速系统振荡器的分频 fH/2~fH/64。
Rev.1.40
39
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
fH
fH/2
High Speed
Oscillator
fH/4
fH/8
HIRC
IDLE0
SLEEP
Prescaler
fSYS
fH/16
fH/32
HIRCEN
fH/64
fSUB
Low Speed
Oscillator
CKS2~CKS0
LIRC
fSUB
IDLE2
SLEEP
fLIRC
TBON
fSUB
WDT
fSYS/4
fPSC
fSYS
Prescaler
CLKSEL[1:0]
Time
Base
TB[2:0]
单片机时钟选项
注:当系统时钟源 fSYS 由 fH 到 fSUB 转换时,可以通过设置相应的高速振荡器使能控制位,选
择停止以节省耗电,或者继续振荡,为外围电路提供 fH~fH/64 频率的时钟源。
系统工作模式
单片机有 6 种不同的工作模式,每种有它自身的特性,根据应用中不同的性能
和功耗要求可选择不同的工作模式。单片机正常工作有两种模式:快速模式和
低速模式。剩余的 4 种工作模式:休眠模式、空闲模式 0、空闲模式 1 和空闲
模式 2 用于单片机 CPU 关闭时以节省耗电。
工作模式
CPU
快速模式
低速模式
On
On
空闲模式 0
Off
空闲模式 1
Off
空闲模式 2
Off
休眠模式
Off
寄存器设置
fSYS
fH
FHIDEN FSIDEN CKS2~CKS0
x
x
000~110
fH~fH/64
On
(1)
x
x
111
fSUB On/Off
000~110
Off
0
1
Off
111
On
1
1
xxx
On
On
000~110
On
1
0
On
111
Off
0
0
xxx
Off
Off
fSUB
fLIRC
On
On
On
On
On
On
On
On
Off
On
Off On/Off
(2)
“x”:无关
注:1. 在低速模式中,fH 开启或关闭由相应的振荡器使能位控制。
2. 在休眠模式中,fLIRC 开启或关闭由 WDT 功能使能或除能控制。
Rev.1.40
40
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
快速模式
这是主要的工作模式之一,单片机的所有功能均可在此模式中实现且系统时
钟由一个高速振荡器提供。该模式下单片机正常工作的时钟源来自 HIRC 振荡
器。高速振荡器频率可被分为 1~64 的不等比率,实际的比率由 SCC 寄存器中
的 CKS2~CKS0 位选择。单片机使用高速振荡器分频作为系统时钟可减少工作
电流。
低速模式
此模式的系统时钟虽为较低速时钟源,但单片机仍能正常工作。该低速时钟源
可来自 fSUB,而 fSUB 来自 LIRC 振荡器。
休眠模式
执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 和 FSIDEN 位都为低时,系统
进入休眠模式。在休眠模式中,CPU 停止运行,fSUB 停止为外围功能提供时钟。
若看门狗定时器功能使能,fLIRC 继续运行。
空闲模式 0
执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 位为低、FSIDEN 位为高时,系
统进入空闲模式 0。在空闲模式 0 中,CPU 停止,但低速振荡器会开启以驱动
一些外围功能。
空闲模式 1
执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 和 FSIDEN 位都为高时,系统
进入空闲模式 1。在空闲模式 1 中,CPU 停止,但高速和低速振荡器都会开启
以确保一些外围功能继续工作。
空闲模式 2
执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 位为高、FSIDEN 位为低时,系
统进入空闲模式 2。在空闲模式 2 中,CPU 停止,但高速振荡器会开启以确保
一些外围功能继续工作。
控制寄存器
寄存器 SCC 和 HIRCC 用于控制系统时钟和相应的振荡器配置。
寄存器
名称
SCC
HIRCC
位
7
CKS2
—
6
CKS1
—
5
CKS0
—
4
—
—
3
—
—
2
—
—
1
0
FHIDEN FSIDEN
HIRCF HIRCEN
系统工作模式控制寄存器列表
Rev.1.40
41
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
● SCC 寄存器
Bit
Name
R/W
POR
7
CKS2
R/W
0
6
CKS1
R/W
0
5
CKS0
R/W
0
4
—
—
—
3
—
—
—
2
—
—
—
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~2
未定义,读为“0”
Bit 1
FHIDEN:CPU 关闭时高频振荡器控制位
0:除能
1:使能
此位用来控制在执行 HALT 指令关闭 CPU 后高速振荡器是开启还是停止。
Bit 0
FSIDEN:CPU 关闭时低频振荡器控制位
0:除能
1:使能
此位用来控制在执行 HALT 指令关闭 CPU 后低速振荡器是开启还是停止。
● HIRCC 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
—
—
—
1
0
HIRCF HIRCEN
R
R/W
0
1
Bit 7~2
未定义,读为“0”
Bit 1
HIRCF:HIRC 振荡器稳定标志位
0:HIRC 未稳定
1:HIRC 稳定
此 位 用 于 表 明 HIRC 振 荡 器 是 否 稳 定。HIRCEN 位 置 高 使 能 HIRC 振 荡 器,
HIRCF 位会先被清零,在 HIRC 稳定后会被置高。
Bit 0
HIRCEN:HIRC 振荡器使能控制位
0:除能
1:使能
工作模式切换
此系列单片机可在各个工作模式间自由切换,使得用户可根据所需选择较佳的
性能 / 功耗比。用此方式,对单片机工作的性能要求不高的情况下,可使用较
低频时钟以减少工作电流,在便携式应用上延长电池的使用寿命。
简单来说,快速模式和低速模式间的切换仅需设置 SCC 寄存器中的 CKS2~CKS0
位即可实现,而快速模式 / 低速模式与休眠模式 / 空闲模式间的切换经由 HALT
指令实现。当 HALT 指令执行后,单片机是否进入空闲模式或休眠模式由 SCC
寄存器中的 FHIDEN 和 FSIDEN 位决定的。
Rev.1.40
42
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
FAST
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
IDLE1
HALT instruction executed
CPU stop
FHIDEN=1
FSIDEN=1
fH on
fSUB on
快速模式切换到低速模式
系统运行在快速模式时使用高速系统振荡器,因此较为耗电。可通过设置 SCC
寄存器中的 CKS2~CKS0 位为“111”使系统时钟切换至运行在低速模式下。此
时将使用低速系统振荡器以节省耗电。用户可在对性能要求不高的操作中使用
此方法以减少耗电。
低速模式的系统时钟源自 LIRC 振荡器,因此要求此振荡器在所有模式切换动
作发生前稳定下来。
FAST 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.40
43
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
低速模式切换到快速模式
在低速模式时系统时钟来自 fSUB。切换回快速模式时,需设置 CKS2~CKS0 位
为“000”~“110”使系统时钟从 fSUB 切换到 fH~fH/64。
然而,如果在低速模式下 fH 因未使用而关闭,那么从低速模式切换到快速模
式时,它需要一定的时间来重新起振和稳定,可通过检测 HIRCC 寄存器中的
HIRCF 位进行判断,所需的高速系统振荡器稳定时间在系统上电时间电气特性
中有说明。
SLOW Mode
CKS2~CKS0 = 000~110
FAST 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
进入休眠模式
进入休眠模式的方法仅有一种,即应用程序中执行“HALT”指令前需设置
SCC 寄存器中的 FHIDEN 和 FSIDEN 位都为“0”。在这种模式下,除了 WDT
以外的所有时钟和功能都将关闭。在上述条件下执行该指令后,将发生的情况
如下:
● 系统时钟停止运行,应用程序停止在“HALT”指令处。
● 数据存储器中的内容和寄存器将保持当前值。
● 输入 / 输出口将保持当前值。
● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清零。
● 如果 WDT 功能使能,WDT 将被清零并重新开始计数。如果 WDT 功能除能,
WDT 将被清零并停止计数。
进入空闲模式 0
进入空闲模式 0 的方法仅有一种,即应用程序中执行“HALT”指令前需设置
SCC 寄存器中的 FHIDEN 位为“0”且 FSIDEN 位为“1”。在上述条件下执行
该指令后,将发生的情况如下:
● fH 时钟停止运行,应用程序停止在“HALT”指令处,但 fSUB 时钟将继续运行。
● 数据存储器中的内容和寄存器将保持当前值。
Rev.1.40
44
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
● 输入 / 输出口将保持当前值。
● 状态寄存器中暂停标志 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 将被清零并停止计数。
待机电流的注意事项
由于单片机进入休眠或空闲模式的主要原因是将单片机的电流降低到尽可能
低,可能到只有几个微安的级别 ( 空闲模式 1 和空闲模式 2 除外 ),所以如果要
将电路的电流进一步降低,电路设计者还应有其它的考虑。应该特别注意的是
单片机的输入 / 输出引脚。所有高阻抗输入脚都必须连接到固定的高或低电平,
因为引脚浮空会造成内部振荡并导致耗电增加。这也应用于有不同封装的单片
机,因为它们可能含有未引出的引脚,这些引脚也必须设为输出或带有上拉电
阻的输入。
另外还需注意单片机设为输出的 I/O 引脚上的负载。应将它们设置在有最小拉
电流的状态或将它们和其它的 CMOS 输入一样接到没有拉电流的外部电路上。
还应注意的是,如果选择 LIRC 振荡器,会导致耗电增加。
在空闲模式 1 和空闲模式 2 中,高速振荡器开启。若外围功能时钟源来自高速
振荡器,额外的待机电流也可能会有几百微安。
Rev.1.40
45
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
唤醒
单片机进入休眠模式或空闲模式后,系统时钟将停止以降低功耗。然而单片机
再次唤醒,原来的系统时钟重新起振、稳定且恢复正常工作需要一定的时间。
系统进入休眠或空闲模式之后,可以通过以下几种方式唤醒:
● PA 口下降沿
● 系统中断
● WDT 溢出
执行 HALT 指令后单片机将进入空闲或休眠模式,PDF 将被置位。系统上电或
执行清除看门狗的指令,PDF 将被清零。若系统由看门狗计数器溢出唤醒,将
会启动看门狗复位并置位 TO 标志,这种复位只会重置程序计数器和堆栈指针,
其它标志保持原有状态。
PA 口中的每个引脚都可以通过 PAWU 寄存器使能下降沿唤醒功能。PA 端口唤
醒后,程序将在“HALT”指令后继续执行。如果系统是通过中断唤醒,则有两
种可能发生。第一种情况是:相关中断除能或是中断使能且堆栈已满,则程序
会在“HALT”指令之后继续执行。这种情况下,唤醒系统的中断会等到相关中
断使能或有堆栈层可以使用之后才执行。第二种情况是:相关中断使能且堆栈
未满,则中断可以马上执行。如果在进入休眠或空闲模式之前中断标志位已经
被设置为“1”,则相关中断的唤醒功能将无效。
看门狗定时器
看门狗定时器的功能在于防止如电磁的干扰等外部不可控制事件,所造成的程
序不正常动作或跳转到未知的地址。
看门狗定时器时钟源
WDT 定时器时钟源 fLIRC 由内部低速振荡器 LIRC 提供。内部振荡器 LIRC 的频
率大约为 32kHz,这个特殊的内部时钟周期会随 VDD、温度和制成的不同而变
化。看门狗定时器的时钟源可分频为 28~215 以提供更大的溢出周期,分频系数
由 WDTC 寄存器中的 WS2~WS0 位来决定。
看门狗定时器控制寄存器
WDTC 寄存器用于控制 WDT 功能的使能 / 除能和选择溢出周期。
● WDTC 寄存器
Bit
Name
R/W
POR
Bit 7~3
Rev.1.40
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
1
1
WS1
R/W
1
0
WS0
R/W
1
WE4~WE0:WDT 功能软件控制
10101:除能
01010:使能
其它值:单片机复位
如果由于不利的环境因素使这些位变为其它值,单片机将复位。复位动作发生
在 tSRESET 延迟时间后,且 RSTFC 寄存器的 WRF 位将置为“1”。
46
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
Bit 2~0
WS2~WS0:WDT 溢出周期选择位
000:[(28-20)~28]/fLIRC
001:[(29-21)~29]/fLIRC
010:[(210-22)~210]/fLIRC
011:[(211-23)~211]/fLIRC
100:[(212-24)~212]/fLIRC
101:[(213-25)~213]/fLIRC
110:[(214-26)~214]/fLIRC
111:[(215-27)~215]/fLIRC
这三位控制 WDT 时钟源的分频系数,从而实现对 WDT 溢出周期的控制。
● RSTFC 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
LVRF
R/W
x
1
LRF
R
0
0
WRF
R/W
0
“x”:未知
Bit 7~3
未定义,读为“0”
Bit 2
LVRF:LVR 功能复位标志位
具体描述见低电压复位章节。
Bit 1
LRF:LVR 控制寄存器软件复位标志位
具体描述见低电压复位章节。
Bit 0
WRF:WDT 控制寄存器软件复位标志位
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 的内容。第一种是 WDTC
寄存器软件复位,即将 WE4~WE0 位设置成除了 01010B 和 10101B 外的任意值;
第二种是通过软件清除指令,而第三种是通过“HALT”指令。该系列单片机
Rev.1.40
47
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
只使用一条清看门狗指令“CLR WDT”。因此只要执行“CLR WDT”便清除
WDT。
当设置分频系数为 215 时,溢出周期最大。时钟源为 32kHz LIRC 振荡器,分频
系数为 215 时最大溢出周期约 1s,分频系数为 28 时最小溢出周期约 8ms。
WS2~WS0
(fLIRC/20 ~ fLIRC/27)
fLIRC
7-stage Divider
8-to-1 MUX
8-stage Divider
WDT Time-out
(28/fLIRC ~ 215/fLIRC)
Clear 7-stage
divider
WE4~WE0 Bits
WDTC Register
Clear 8-stage divider
“HALT” Instruction
“CLR WDT” Instruction
Reset MCU
看门狗定时器
复位和初始化
复位功能是任何单片机中基本的部分,使得单片机可以设定一些与外部参数无
关的先置条件。最重要的复位条件是在单片机首次上电以后,经过短暂的延迟,
内部硬件电路使得单片机处于预期的稳定状态并开始执行第一条程序指令。上
电复位以后,在程序执行之前,部分重要的内部寄存器将会被设定为预先设定
的状态。程序计数器就是其中之一,它会被清为零,使得单片机从最低的程序
存储器地址开始执行程序。
另一种复位为低电压复位即 LVR 复位,在电源供应电压低于 LVR 设定值时,
系统会产生 LVR 复位。
还有一种复位为看门狗溢出单片机复位,不同方式的复位操作会对寄存器产生
不同的影响。
复位功能
单片机的几种内部复位方式将在此处做具体介绍。
上电复位
这是最基本且不可避免的复位,发生在单片机上电后。除了保证程序存储器从
开始地址执行,上电复位也使得其它寄存器被设定在预设条件。所有的输入 /
输出端口控制寄存器在上电复位时会保持高电平,以确保上电后所有引脚被设
定为输入状态。
VDD
Power-on Reset
tRSTD
SST Time-out
上电复位时序图
Rev.1.40
48
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
低电压复位 – LVR
单片机具有低电压复位电路,用来监测它的电源电压。当电源电压低于某一预
定值时,它将复位单片机。例如在更换电池的情况下,单片机供应的电压可
能会在 0.9V~VLVR 之间,这时 LVR 将会自动复位单片机且 RSTFC 寄存器中的
LVRF 标志位置位。LVR 包含以下的规格:有效的 LVR 信号,即在 0.9V~VLVR
的低电压状态的时间,必须超过 LVR 电气特性中 tLVR 参数的值。如果低电
压存在不超过 tLVR 参数的值,则 LVR 将会忽略它且不会执行复位功能。若
LVS7~LVS0 位设为 01011010B,LVR 功能使能,其固定复位电压为 1.7V。若
LVS7~LVS0 位设为 10100101B,LVR 功能除能。若由于受到干扰 LVS7~LVS0
变为其它值时,将在 tSRESET 时间后复位单片机。此时 RSTFC 寄存器的 LRF 位
被置位。上电后寄存器的值为 01011010B。LVR 会于休眠或空闲模式时自动除
能关闭。
LVR
tRSTD + tSST
Internal Reset
低电压复位时序图
● LVRC 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
LVS7
R/W
0
6
LVS6
R/W
1
5
LVS5
R/W
0
4
LVS4
R/W
1
3
LVS3
R/W
1
2
LVS2
R/W
0
1
LVS1
R/W
1
0
LVS0
R/W
0
LVS7~LVS0:LVR 电压选择控制位
01011010:1.7V
10100101:除能
其它值:单片机复位 – 寄存器复位为 POR 值
若低电压情况发生且满足以上定义的低电压复位值,则单片机复位。当低电压
状态保持时间大于 tLVR 后响应复位。此时复位后的寄存器内容保持不变。
除了 01011010B 和 10100101B 外,其它值也能导致单片机复位。复位操作会在
tSRESET 时间后执行。注意的是此处单片机复位后,寄存器的值将恢复到上电复位
值。
● RSTFC 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
LVRF
R/W
x
1
LRF
R/W
0
0
WRF
R/W
0
“x”:未知
Rev.1.40
Bit 7~3
未定义,读为“0”
Bit 2
LVRF:LVR 功能复位标志位
0:未发生
1:发生
当特定的低电压复位条件发生时,此位被置为“1”,且只能通过应用程序清零。
Bit 1
LRF:LVR 控制寄存器软件复位标志位
0:未发生
1:发生
如果 LVRC 寄存器包含任何非定义的 LVR 电压值,此位被置为“1”,这类似
于软件复位功能,且只能通过应用程序清零。
49
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
Bit 0
WRF:WDT 控制寄存器软件复位标志位
具体描述见看门狗定时器控制寄存器章节。
正常运行时看门狗溢出复位
在快速模式或低速模式发生看门狗溢出复位时,看门狗溢出标志位 TO 将被设
为“1”。
WDT Time-out
tRSTD + tSST
Internal Reset
正常运行时看门狗溢出复位时序图
休眠或空闲时看门狗溢出复位
休眠或空闲模式时看门狗溢出复位和其它种类的复位有些不同,除了程序计数
器与堆栈指针将被清零及 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 口设为输入模式
堆栈指针指向堆栈顶端
不同的复位形式对单片机内部寄存器的影响是不同的。为保证复位后程序能正
常执行,了解寄存器在特定条件复位后的设置是非常重要的。下表即为不同方
式复位后内部寄存器的状况。注意对于存在多种封装的单片机,下表反映的是
较大封装类型的情况。
Rev.1.40
50
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
STATUS
INTEG
WDTC
TBC
RSTFC
PASR
SCC
HIRCC
IFS
PA
PAC
PAPU
PAWU
HT66F0041
TBHP
HT66F0031
IAR0
MP0
ACC
PCL
TBLP
TBLH
HT66F0021
寄存器
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
PBC
●
●
PBPU
Rev.1.40
●
●
●
●
●
●
●
●
PB
ECR
EAR
EDL
EDH
ED0L
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
51
上电复位
WDT 溢出
( 正常运行 )
WDT 溢出
( 空闲 / 休眠 )
xxxx xxxx
xxxx xxxx
xxxx xxxx
0000 0000
xxxx xxxx
--xx xxxx
---- --xx
---- -xxx
--00 xxxx
---- --00
---- 0000
0101 0111
0--- -000
---- -x00
-000 0000
000- --00
---- --01
---- --00
---- -000
111 - - 111
1111 1111
111 - - 111
1111 1111
000- -000
0000 0000
000- -000
0000 0000
- - 11 1111
- 111 1111
- - 11 1111
- 111 1111
--00 0000
-000 0000
0000 0000
---0 0000
0000 0000
--00 0000
0000 0000
uuuu uuuu
xxxx xxxx
uuuu uuuu
0000 0000
uuuu uuuu
--uu uuuu
---- --uu
---- --uuu
--1u uuuu
---- --00
---- 0000
0101 0111
0--- -000
---- -uuu
-000 0000
000- --00
---- --01
---- --00
---- -000
111 - - 111
1111 1111
111 - - 111
1111 1111
000- -000
0000 0000
000- -000
0000 0000
- - 11 1111
- 111 1111
- - 11 1111
- 111 1111
--00 0000
-000 0000
0000 0000
---0 0000
0000 0000
--00 0000
0000 0000
uuuu uuuu
uuuu uuuu
uuuu uuuu
0000 0000
uuuu uuuu
--uu uuuu
---- --uu
---- -uuu
- - 11 u u u u
---- --uu
---- uuuu
uuuu uuuu
u--- -uuu
---- -uuu
-uuu uuuu
uuu- --uu
---- --uu
---- --uu
---- -uuu
uuu- -uuu
uuuu uuuu
uuu- -uuu
uuuu uuuu
uuu- -uuu
uuuu uuuu
uuu- -uuu
uuuu uuuu
--uu uuuu
-uuu uuuu
--uu uuuu
-uuu uuuu
--uu uuuu
-uuu uuuu
uuuu uuuu
---u uuuu
uuuu uuuu
--uu uuuu
uuuu uuuu
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
●
●
●
●
●
●
HT66F0041
INTC1
●
●
●
●
●
●
HT66F0031
ED0H
TMRC
TMR
PWMC
PWMDATA
INTC0
HT66F0021
寄存器
上电复位
WDT 溢出
( 正常运行 )
WDT 溢出
( 空闲 / 休眠 )
●
--00 0000
0000 1000
0000 0000
000- ---0
0000 0000
-000 0000
---0 ---0
--00 --00
--00 0000
0000 1000
0000 0000
000- ---0
0000 0000
-000 0000
---0 ---0
--00 --00
--uu uuuu
uuuu uuuu
uuuu uuuu
uuu- ---u
uuuu uuuu
-uuu uuuu
---u ---u
--uu --uu
xx-- ---(ADRFS=0)
xxxx xxxx
(ADRFS=1)
xxxx xxxx
(ADRFS=0)
xx-- ---(ADRFS=1)
uuuu uuuu
uuuu uuuu
---- -uuu
---- -uuu
---- -uuu
---- -uuu
uuuu uuuu
--uu uuuu
uuuu uuuu
--uu uuuu
uuuu uuuu
--uu uuuu
uuuu uuuu
---- u--uuuu uu-uuuu uuuu
uuuu uuuu
uuuu uuuu
---- --uu
---- ---u
●
●
●
●
SADOL
●
●
●
xx-- ----
xx-- ----
SADOH
●
●
●
xxxx xxxx
xxxx xxxx
SADC0
SADC1
PSCR
PC
PCC
PCPU
ED1L
ED1H
ED2L
ED2H
ED3L
ED3H
LVRC
VBGC
PWMC
PWMP
PWMD
SLEDC0
SLEDC1
LVPUC
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
0000 0000
0000 0000
---- -000
---- -111
---- -111
---- -000
0000 0000
--00 0000
0000 0000
--00 0000
0000 0000
--00 0000
0101 1010
---- 0--0000 00-0000 0000
0000 0000
0000 0000
---- --00
---- ---0
0000 0000
0000 0000
---- -000
---- -111
---- -111
---- -000
0000 0000
--00 0000
0000 0000
--00 0000
0000 0000
--00 0000
0101 1010
---- 0--0000 00-0000 0000
0000 0000
0000 0000
---- --00
---- ---0
注:“u”表示不改变;
“x”表示未知;
“-”表示未定义
Rev.1.40
52
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
输入 / 输出端口
Holtek 单片机的输入 / 输出口控制具有很大的灵活性。大部分引脚可在用户程
序控制下被设定为输入或输出。所有引脚的上拉电阻设置以及指定引脚的唤醒
设置也都由软件控制,这些特性也使得此类单片机在广泛应用上都能符合开发
的需求。
该系列单片机提供 PA~PC 双向输入 / 输出口。这些寄存器在数据存储器有特定
的地址。所有 I/O 口用于输入输出操作。作为输入操作,输入引脚无锁存功能,
也就是说输入数据必须在执行“MOV A, [m]”,T2 的上升沿准备好,m 为端口
地址。对于输出操作,所有数据都是被锁存的,且保持不变直到输出锁存被重
写。
寄存器
名称
PA
PAC
PAPU
PAWU
位
7
6
5
PA7
PA6
PA5
PAC7
PAC6
PAC5
PAPU7 PAPU6 PAPU5
PAWU7 PAWU6 PAWU5
4
—
—
—
—
3
—
—
—
—
2
1
0
PA2
PA1
PA0
PAC2
PAC1
PAC0
PAPU2 PAPU1 PAPU0
PAWU2 PAWU1 PAWU0
“—”:未定义,读为“0”
I/O 逻辑功能寄存器列表 – HT66F0021
寄存器
名称
PA
PAC
PAPU
PAWU
PB
PBC
PBPU
位
7
6
5
4
3
2
1
0
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
PAC7
PAC6
PAC5
PAC4
PAC3
PAC2
PAC1
PAC0
PAPU7 PAPU6 PAPU5 PAPU4 PAPU3 PAPU2 PAPU1 PAPU0
PAWU7 PAWU6 PAWU5 PAWU4 PAWU3 PAWU2 PAWU1 PAWU0
—
—
PB5
PB4
PB3
PB2
PB1
PB0
—
—
PBC5
PBC4
PBC3
PBC2
PBC1
PBC0
—
—
PBPU5 PBPU4 PBPU3 PBPU2 PBPU1 PBPU0
“—”:未定义,读为“0”
I/O 逻辑功能寄存器列表 – HT66F0031
寄存器
名称
PA
PAC
PAPU
PAWU
PB
PBC
PBPU
PC
PCC
Rev.1.40
位
7
6
5
4
3
2
1
0
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
PAC7
PAC6
PAC5
PAC4
PAC3
PAC2
PAC1
PAC0
PAPU7 PAPU6 PAPU5 PAPU4 PAPU3 PAPU2 PAPU1 PAPU0
PAWU7 PAWU6 PAWU5 PAWU4 PAWU3 PAWU2 PAWU1 PAWU0
—
PB6
PB5
PB4
PB3
PB2
PB1
PB0
—
PBC6
PBC5
PBC4
PBC3
PBC2
PBC1
PBC0
—
PBPU6 PBPU5 PBPU4 PBPU3 PBPU2 PBPU1 PBPU0
—
—
—
—
—
PC2
PC1
PC0
—
—
—
—
—
PCC2
PCC1
PCC0
53
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
寄存器
名称
PCPU
LVPUC
位
7
—
—
6
—
—
5
—
—
4
—
—
3
—
—
2
PCPU2
—
1
PCPU1
—
0
PCPU0
LVPU
“—”:未定义,读为“0”
I/O 逻辑功能寄存器列表 – HT66F0041
上拉电阻
许多产品应用在端口处于输入状态时需要外加一个上拉电阻来实现上拉的功
能。为了免去外部上拉电阻,当引脚规划为数字输入时,可由内部连接到一个
上拉电阻。这些上拉电阻可通过相关上拉电阻控制寄存器来设置,它用一个
PMOS 晶体管来实现上拉电阻功能。
应注意只有在引脚共用功能用脚配置为数字输入或 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 口引脚上拉功能控制位
0:除能
1:使能
PxPUn 位用于控制上拉电阻功能。这里的 x 可以是端口 A,B 或 C,依所选型号而
定。但是,每个 I/O 端口实际有效位可能不同。应注意 HT66F0041 单片机的 PB0
和 PB1 引脚包含一个内部下拉电阻,若上拉功能使能,则需要额外的功耗。
● LVPUC 寄存器 – HT66F0041
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
—
—
—
1
—
—
—
0
LVPU
R/W
0
Bit 7~1
未定义,读为“0”
Bit 0
LVPU:低电压上拉电阻选择位
0:所有引脚上拉电阻为 60kΩ @ 3V
1:所有引脚上拉电阻为 15kΩ @ 3V
LVPUC 寄存器用于选择低电压应用的上拉电阻值。应注意仅当相应引脚的上拉
功能使能时,LVPUC 寄存器的 LVPU 位才有效。若上拉功能除能,LVPU 位对
低电压上拉电阻值的选择没有影响。
PA 口唤醒
当使用暂停指令“HALT”迫使单片机进入休眠或空闲模式,单片机的系统时
钟将会停止以降低功耗,此功能对于电池及低功耗应用很重要。唤醒单片机有
很多种方法,其中之一就是使 PA 口的其中一个引脚从高电平转为低电平。这
个功能特别适合于通过外部开关来唤醒的应用。PA 口的每个引脚可以通过设置
PAWU 寄存器来单独选择是否具有唤醒功能。
Rev.1.40
54
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
应注意只有在引脚共用功能选择为通用 I/O 功能输入类型且单片机进入空闲或
休眠模式时,此功能可由唤醒控制寄存器控制。
● PAWU 寄存器
Bit
Name
R/W
POR
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
PAWUn:PA 口引脚唤醒功能控制位
0:除能
1:使能
PAWUn 位用于控制 PA 口唤醒功能。但是,实际有效位可能不同,依所选型号而定。
输入 / 输出端口控制寄存器
每一个输入 / 输出口都具有各自的控制寄存器,即 PAC~PCC,用来控制输入 /
输出状态。从而每个 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 口引脚类型选择位
0:输出
1:输入
PxCn 位用于控制引脚类型。这里的 x 可以是端口 A,B 或 C,依所选型号而定。但是,
每个 I/O 端口实际有效位可能不同。应注意 HT66F0041 单片机的 PB0 和 PB1 引脚包
含一个内部下拉电阻,若该引脚被配置为输出高电平,则需要额外的功耗。
输入 / 输出端口源电流选择 – HT66F0041
该单片机的每个引脚的源电流可由不同的源电流配置,通过相应的源电流选择
位选择。仅当对应的引脚被设为 CMOS 输出时,其源电流选择位才有效。否则,
这些选择位无效。用户可参考输入 / 输出电气特性章节为不同应用选择所需的
源电流。
位
7
6
5
4
3
2
1
0
SLEDC0 SLEDC07 SLEDC06 SLEDC05 SLEDC04 SLEDC03 SLEDC02 SLEDC01 SLEDC00
SLEDC1
—
—
—
—
—
—
SLEDC11 SLEDC10
寄存器
名称
I/O 口源电流选择寄存器列表
Rev.1.40
55
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
● 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
SLEDC07~SLEDC06:PB6~PB4 源电流选择
00:Level 0 ( 最小 )
01:Level 1
10:Level 2
11:Level 3 ( 最大 )
Bit 5~4
SLEDC05~SLEDC04:PB3~PB0 源电流选择
00:Level 0 ( 最小 )
01:Level 1
10:Level 2
11:Level 3 ( 最大 )
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
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
Bit 7~2
未定义,读为“0”
Bit 1~0
SLEDC11~SLEDC10:PC2~PC0 源电流选择
00:Level 0 ( 最小 )
01:Level 1
10:Level 2
11:Level 3 ( 最大 )
2
—
—
—
1
0
SLEDC11 SLEDC10
R/W
R/W
0
0
引脚共用功能
引脚的多功能可以增加单片机应用的灵活性。有限的引脚个数将会限制应用设
计,而引脚的多功能将会解决很多此类问题。此外,这些多功能引脚功能可以
通过一系列寄存器进行设定。
引脚共用功能选择寄存器
封装中有限的引脚个数会对某些单片机功能造成影响。然而,引脚功能共用和
引脚功能选择,使得小封装单片机具有更多不同的功能。单片机包含端口 A 输
出功能选择寄存器,记为 PASR,以及输入功能选择寄存器,记为 IFS,可以用
来选择共用引脚的特定功能。
Rev.1.40
56
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
要注意的最重要一点是,确保所需的引脚共用功能被正确地选择和取消。对于
大部分共用功能,要选择所需的引脚共用功能,首先应通过相应的引脚共用控
制寄存器正确地选择该功能,然后再配置相应的外围功能设置以使能外围功能。
但是,在设置相关引脚控制位时,一些数字输入引脚如 TC 和 INTn 等,与对应
的通用 I/O 口共用同一个引脚共用设置选项。要选择这个引脚功能,除了上述
的必要的引脚共用控制和外围功能设置外,还必须将其对应的端口控制寄存器
位设置为输入。要正确地取消引脚共用功能,首先应除能外围功能,然后再修
改相应的引脚共用控制寄存器以选择其它的共用功能。
寄存器
名称
PASR
IFS
(HT66F0021/0031)
IFS
(HT66F0041)
位
7
—
6
PAS6
5
PAS5
4
PAS4
3
PAS3
2
PAS2
1
PAS1
0
PAS0
—
—
—
—
—
—
TCPS
INT0PS
—
—
—
—
—
TCPS INT1PS INT0PS
引脚共用功能选择寄存器列表
● PASR 寄存器 – HT66F0021
Bit
Name
R/W
POR
Rev.1.40
7
—
—
—
6
PAS6
R/W
0
5
PAS5
R/W
0
4
PAS4
R/W
0
Bit 7
未定义,读为“0”
Bit 6~5
PAS6~PAS5:PA7 引脚共用功能选择
00:PA7
01:PWMO
10:PA7
11:AN2
Bit 4
PAS4:PA6 引脚共用功能选择
0:PA6/TC
1:PWMO
Bit 3
PAS3:PA5 引脚共用功能选择
0:PA5/INT0
1:AN3
Bit 2
PAS2:PA2 引脚共用功能选择
0:PA2
1:AN1
Bit 1
PAS1:PA1 引脚共用功能选择
0:PA1/TC
1:VREF
Bit 0
PAS0:PA0 引脚共用功能选择
0:PA0/INT0
1:AN0
57
3
PAS3
R/W
0
2
PAS2
R/W
0
1
PAS1
R/W
0
0
PAS0
R/W
0
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
● PASR 寄存器 – HT66F0031
Bit
Name
R/W
POR
7
—
—
—
6
PAS6
R/W
0
5
PAS5
R/W
0
4
PAS4
R/W
0
Bit 7
未定义,读为“0”
Bit 6
PAS6:PA7 引脚共用功能选择
0:PA7
1:PWMO
Bit 5
PAS5:PA6 引脚共用功能选择
0:PA6/TC
1:PWMO
Bit 4
PAS4:PA5 引脚共用功能选择
0:PA5
1:AN1
Bit 3
PAS3:PA3 引脚共用功能选择
0:PA3/INT0
1:AN3
Bit 2
PAS2:PA2 引脚共用功能选择
0:PA2
1:AN2
Bit 1
PAS1:PA1 引脚共用功能选择
0:PA1
1:VREF
Bit 0
PAS0:PA0 引脚共用功能选择
0:PA0/TC
1:AN0
3
PAS3
R/W
0
2
PAS2
R/W
0
1
PAS1
R/W
0
0
PAS0
R/W
0
3
PAS3
R/W
0
2
PAS2
R/W
0
1
PAS1
R/W
0
0
PAS0
R/W
0
● PASR 寄存器 – HT66F0041
Bit
Name
R/W
POR
Rev.1.40
7
—
—
—
6
PAS6
R/W
0
5
PAS5
R/W
0
Bit 7
未定义,读为“0”
Bit 6
PAS6:PA7 引脚共用功能选择
0:PA7
1:AN3
Bit 5
PAS5:PA6 引脚共用功能选择
0:PA6/INT1
1:AN2
Bit 4
PAS4:PA5 引脚共用功能选择
0:PA5
1:VREF
Bit 3
PAS3:PA4 引脚共用功能选择
0:PA4/INT0
1:AN0
Bit 2
PAS2:PA3 引脚共用功能选择
0:PA3/TC
1:PWMB
58
4
PAS4
R/W
0
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
Bit 1
PAS1:PA2 引脚共用功能选择
0:PA2
1:AN1
Bit 0
PAS0:PA0 引脚共用功能选择
0:PA0
1:PWM
● IFS 寄存器 – HT66F0021
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
Bit 7~2
未定义,读为“0”
Bit 1
TCPS:TC 输入源引脚选择
0:PA1
1:PA6
Bit 0
INT0PS:INT0 输入源引脚选择
0:PA5
1:PA0
4
—
—
—
3
—
—
—
2
—
—
—
1
TCPS
R/W
0
0
INT0PS
R/W
0
4
—
—
—
3
—
—
—
2
—
—
—
1
TCPS
R/W
0
0
INT0PS
R/W
0
4
—
—
—
3
—
—
—
2
TCPS
R/W
0
● IFS 寄存器 – HT66F0031
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
Bit 7~2
未定义,读为“0”
Bit 1
TCPS:TC 输入源引脚选择
0:PA6
1:PA0
Bit 0
INT0PS:INT0 输入源引脚选择
0:PA3
1:PA4
● IFS 寄存器 – HT66F0041
Bit
Name
R/W
POR
Rev.1.40
7
—
—
—
6
—
—
—
5
—
—
—
Bit 7~3
未定义,读为“0”
Bit 2
TCPS:TC 输入源引脚选择
0:PA1
1:PA3
Bit 1
INT1PS:INT1 输入源引脚选择
0:PA6
1:PC1
Bit 0
INT0PS:INT0 输入源引脚选择
0:PA4
1:PC0
59
1
0
INT1PS INT0PS
R/W
R/W
0
0
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
输入 / 输出引脚结构
下图为输入 / 输出引脚逻辑功能的内部结构图。输入 / 输出引脚的准确逻辑结构
图可能与此图不同,这里只是为了方便对 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
RPL
Q
CK Q
S
M
U
X
Read Data Register
System Wake-up
wake-up Select
PA only
逻辑功能输入 / 输出端口结构
注:RPL 仅适用于 HT66F0041 单片机的 PB1~PB0 引脚。
编程注意事项
在编程中,最先要考虑的是端口的初始化。复位之后,所有的输入 / 输出数据
及端口控制寄存器都将被设为逻辑高。所有输入 / 输出引脚默认为输入状态,
而其电平则取决于其它相连接电路以及是否选择了上拉电阻。如果端口控制寄
存器将某些引脚设定为输出状态,这些输出引脚会有初始高电平输出,除非端
口数据寄存器在程序中被预先设定。设置哪些引脚是输入及哪些引脚是输出,
可通过设置正确的值到对应的端口控制寄存器,或使用指令“SET [m].i”及
“CLR [m].i”来设定端口控制寄存器中个别的位。注意,当使用这些位控制指
令时,系统即将产生一个读 - 修改 - 写的操作。单片机需要先读入整个端口上
的数据,修改个别的位,然后重新把这些数据写入到输出端口。
PA 口的每个引脚都带唤醒功能。单片机处于休眠或空闲模式时,有很多方法可
以唤醒单片机,其中之一就是通过 PA 任一引脚电平从高到低转换的方式,可
以设置 PA 口一个或多个引脚具有唤醒功能。
Rev.1.40
60
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
定时 / 事件计数器
定时 / 事件计数器在任何单片机中都是一个很重要的部分,便于程序设计者实
现和时间有关的功能。该系列单片机包含一个 8 位可编程向上计数的定时 / 事
件计数器,其时钟源可由外部输入或内部提供。该计数器包括 3 种工作模式,
可以当作一个普通定时器、外部事件计数器或脉冲宽度捕捉使用。
fSYS
0
fSUB
1
fTP
TS
8-stage
Counter
8-to-1
MUX
TPSC2~TPSC0
Data bus
TM1
8-bit Timer/Event Counter
Preload Register
TM0
TC
TEG
Pulse Width
Measurement
Mode Control
TM1
TM0
TON
8-bit Timer/Event
Counter
Reload
Overflow to
interrupt
8-bit 定时 / 事件计数器
定时 / 事件计数器输入时钟源
定时 / 事件计数器的时钟源可有多种选择,可以是内部时钟,也可以是外部
引脚。当定时 / 事件计数器工作在定时器模式或脉冲宽度捕捉模式时,使用
内部时钟作为时钟源。定时 / 事件计数器的内部时钟源可由定时控制寄存器
TMRC 的 TS 位选择来自 fSYS 还是 fSUB,而时钟的分频系数由同一寄存器的
TPSC2~TPSC0 位设置。
当定时 / 事件计数器在事件计数器模式时,使用外部时钟源,时钟源由外部 TC
引脚提供。每次外部引脚由高电平到低电平或由低电平到高电平 ( 由 TEG 位决
定 ) 进行转换时,计数器增加一。
定时 / 事件计数器寄存器
定时 / 事件计数器相关的寄存器有两种。第一种是 TMR 寄存器,其包含了定时
/ 事件计数器的实际值且可以预加载初始值。读取 TMR 寄存器将读取定时 / 事
件计数器的内容。第二种是 TMRC 控制寄存器,用来定义定时 / 事件计数器的
工作模式、选择内部时钟源、控制使能或除能、选择有效边沿。
寄存器
名称
TMRC
TMR
位
7
TM1
D7
6
TM0
D6
5
TS
D5
4
TON
D4
3
TEG
D3
2
TPSC2
D2
1
TPSC1
D1
0
TPSC0
D0
定时 / 事件计数器寄存器列表
定时器寄存器 – TMR
定时器寄存器 TMR 用于存放实际定时器值。在用作内部定时且收到一个内部
计数时钟脉冲或用作外部计数且外部定时 / 事件计数器引脚发生状态跳变时,
此寄存器的值将会加一。定时器将从预载寄存器所载入的值开始计数,8-bit 的
定时 / 事件计数器计数到 FFH 时,定时器溢出且会产生一个内部中断信号。定
时器随后重新载入预载寄存器的值并继续计数。
注意,为使定时器计数范围达到最大 FFH,预载寄存器需要先清为零。定时 /
事件计数器在关闭条件下,写数据到预载寄存器,会立即写入实际的计数器中。
若定时 / 事件计数器使能且正在计数,此时写入预载寄存器的任何新数据将保
留在预载寄存器中,直到溢出发生时才被写入实际计数器。
Rev.1.40
61
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
● TMR 寄存器
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
D7~D0:定时器预载寄存器字节
定时器控制寄存器 – TMRC
Holtek 微控制器的定时器 / 事件计数器可工作于三种模式,由控制寄存器相关
位决定。
定时器控制寄存器 TMRC 配合相应的定时器寄存器可控制定时 / 事件计数器的
全部操作。在使用定时器之前,需要先正确地设定定时器控制寄存器,以便保
证定时器能正确操作,而这个过程通常在程序初始化期间完成。
要选择定时器工作于三种模式中的哪一种,即定时器模式、事件计数器模式或
脉冲宽度捕捉模式,定时器控制寄存器中的 TM1~TM0 位必须设置为所需的逻
辑值。定时器控制寄存器的 TON 位用于定时器开关控制,该位设定为逻辑高
时,计数器开始计数,而清零时则停止计数。当使用内部时钟源时,可通过设
置 TS 位选择源自 fSYS 或 fSUB,TPSC2~TPSC0 位用来选择时钟源分频系数。如
果使用外部时钟源,则内部时钟设定位的选择无效。如果定时 / 事件计数器工
作在事件计数器模式或脉冲宽度捕捉模式,TMRC 寄存器的 TEG 位可用来选择
有效触发边沿。
● TMRC 寄存器
Bit
Name
R/W
POR
Rev.1.40
7
TM1
R/W
0
6
TM0
R/W
0
5
TS
R/W
0
4
TON
R/W
0
3
TEG
R/W
1
Bit 7~6
TM1~TM0:定时 / 事件计数器工作模式选择
00:未使用
01:事件计数器模式
10:定时器模式
11:脉冲宽度捕捉模式
Bit 5
TS:定时器 fTP 时钟源选择
0: fSYS
1: fSUB
Bit 4
TON:定时 / 事件计数器计数使能控制
0:除能
1:使能
Bit 3
TEG:定时 / 事件计数器有效边沿选择
事件计数器模式
0:在上升沿计数
1:在下降沿计数
脉冲宽度捕捉模式
0:在下降沿启动计数,在上升沿停止计数
1:在上升沿启动计数,在下降沿停止计数
62
2
TPSC2
R/W
0
1
TPSC1
R/W
0
0
TPSC0
R/W
0
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
Bit 2~0
TPSC2~TPSC0:定时器内部时钟选择
000:fTP
001:fTP/2
010:fTP/4
011:fTP/8
100:fTP/16
101:fTP/32
110:fTP/64
111:fTP/128
定时 / 事件计数器工作模式
定时 / 事件计数器可在三种工作模式下运行,即定时器模式、事件计数器模式
或脉冲宽度捕捉模式。使用 TMRC 寄存器中的 TM1 和 TM0 位选择工作模式。
定时器模式
为使定时 / 事件计数器工作在定时器模式,TMRC 寄存器中的 TM1 和 TM0 位
需要设置成“10”。在这个模式下,定时 / 事件计数器可以用来测量固定时间
间隔,当定时 / 事件计数器发生溢出时,就会产生一个内部中断信号。
在 定 时 器 模 式 下, 内 部 时 钟 fTP 作 为 定 时 器 时 钟 源, 可 通 过 设 置 TMRC 寄
存 器 的 TS 位 选 择 源 自 fSYS 或 fSUB。fTP 时 钟 源 的 分 频 系 数 由 同 一 寄 存 器 的
TPSC2~TPSC0 位选择。TMRC 寄存器中的 TON 位需要置高以使能定时器。每
次内部时钟发生由高到低的电平转换时,定时器值加一;当计数器的值达到 8
位最大值 FFH 时将溢出,会产生中断信号且定时器会重新载入预载寄存器的
值,然后继续计数。在此模式下,即使单片机处于空闲 / 休眠模式,若所选内
部时钟还有效且发生定时器溢出,将产生一个定时器中断请求,可作为一种唤
醒源。
Internal clock
source output
Increase
Timer Counter
Timer + 1
Timer + 2
Timer + N
Timer + N + 1
定时器模式时序图
事件计数模式
为使定时 / 事件计数器工作在事件计数器模式,TMRC 寄存器中的 TM1 和 TM0
位需要设置成“01”。在这个模式下可以通过定时 / 事件计数器来记录发生在
TC 引脚上的外部逻辑变化事件的次数。
在事件计数器模式下,外部定时器 TC 引脚作为定时 / 事件计数器的时钟源。在
设置完定时器控制寄存器其它位后,TMRC 寄存器中的 TON 位需要置高以使
能定时 / 事件计数器。若有效边沿选择位 TEG 为低,则每次外部 TC 引脚接收
到由低到高的电平转换时,计数器值加一。若 TEG 位为高,则每次 TC 引脚接
收到由高到低的电平转换时,计数器值加一。当计数器计满时将溢出,并产生
中断请求且定时 / 事件计数器会重新载入预载寄存器的值,然后继续计数。
由于外部定时器引脚 TC 与其它功能共用引脚,需预先设置相关引脚共用功能
选择寄存器以选择 TC 引脚功能。此外,该引脚还需通过 I/O 端口控制寄存器
设置为输入。注意,在事件计数器模式下,即使单片机处于空闲 / 休眠模式,
定时 / 事件计数器将继续对外部 TC 引脚上发生的的逻辑事件变化进行计数。因
此,当计数器溢出时,将产生一个定时器中断请求,可作为一种唤醒源。
Rev.1.40
63
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
External Event
Increase
Timer Counter
Timer + 1
Timer + 2
Timer + 3
事件计数器模式时序图 (TEG=1)
脉冲宽度捕捉模式
为使定时 / 事件计数器工作在脉冲宽度捕捉模式,TMRC 寄存器中的 TM1 和
TM0 需要设置为“11”。在这个模式下,定时 / 事件计数器可用于测量外部定
时器引脚上的外部脉冲宽度。
在脉冲宽度捕捉模式下,内部时钟 fTP 作为定时器时钟源,可通过设置 TMRC
寄存器的 TS 位选择源自 fSYS 或 fSUB。fTP 时钟源的分频系数由同一寄存器的
TPSC2~TPSC0 位选择。在设置完定时器控制寄存器 TMRC 中的其它位后,
TON 位需要置高以使能定时 / 事件计数器。然而,只有在 TC 引脚上接收到有
效的逻辑转换边沿时,定时 / 事件计数器才真正开始计数。
当有效边沿选择位 TEG 设置为低时,每次 TC 引脚接收到由高到低的电平转换
时定时 / 事件计数器将在内部选定的时钟源下开始计数,直到 TC 引脚回到它原
来的高电平。此时使能位将自动清零以停止计数。而当 TEG 位为高时,每次外
部定时器引脚接收到由低到高的电平转换时定时 / 事件计数器将开始计数,直
到 TC 引脚回到它原来的低电平。同样使能位将自动清零以停止计数。注意,
在脉冲宽度捕捉模式中,当 TC 引脚上的外部控制信号回到它原来的电平时,
使能位将自动清零。而在其它两种模式,使能位只能在程序控制下清零。
可以通过程序读取定时 / 事件计数器当前值,从而获得 TC 引脚上接收信号的脉
冲宽度。由于使能位已被复位为零,任何出现在外部定时器引脚上的电平变化
将被忽略。直到使能位被程序重新置高,定时器才可开始重新测量外部脉冲。
通过这种方式可以很容易地实现单次脉冲宽度测量。注意,在这种模式下,定
时 / 事件计数器是通过外部定时器引脚上的逻辑转换来控制,而非通过逻辑电
平。当定时 / 事件计数器计满时将溢出,并产生中断请求信号且定时 / 事件计数
器会重新载入预载寄存器的值,然后继续计数。
由于外部定时器引脚 TC 与其它功能共用引脚,需预先设置相关引脚共用功能
选择寄存器以选择 TC 引脚功能。此外,该引脚还需通过 I/O 端口控制寄存器
设置为输入引脚。注意,在脉冲宽度捕捉模式下,即使单片机处于空闲 / 休眠
模式,若内部时钟源仍然有效且外部信号继续改变状态,定时 / 事件计数器将
继续对外部 TC 引脚上发生的的逻辑事件变化进行计数。因此,当计数器溢出
时,将产生一个定时器中断请求,可作为一种唤醒源。
External
TC Pin Input
TON–with TEG = 0
Internal Clock Output
Increase
Timer Counter
Timer
+1
+2
+3
+4
Internal Clock Output is sampled at every falling edge of T1.
脉冲宽度捕捉模式时序图 (TEG=0)
Rev.1.40
64
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
编程注意事项
当定时 / 事件计数器工作在定时器模式时,内部定时器时钟可作为定时器的时
钟源,因此其与单片机所有操作都能同步。在这个模式下,当定时器寄存器计
满溢出时,单片机将产生一个内部中断信号,使程序进入相应的内部中断向量。
当工作在脉冲宽度捕捉模式时,定时器时钟源同样使用内部系统时钟,但仅在
外部定时器输入引脚上出现正确的逻辑条件时定时器才会运行。由于这个外部
事件没有与内部定时器时钟同步,单片机在下一个定时器时钟到来时才能看到
这个外部事件。因此在测量值上可能有小的差异,需要程序设计者在程序应用
时加以注意。同样的情况发生在定时器设置为事件计数器模式时,该模式下的
时钟来源是外部事件,与定时器内部系统时钟不同步。
当读取定时 / 事件计数器值或写数据到预载寄存器时,计数时钟会被禁止以避
免发生错误,但这样做可能会导致计数错误,所以程序设计者应加以注意。在
第一次使用定时 / 事件计数器之前,要仔细确认是否正确地设定初始值。中断
控制寄存器中的定时器中断使能位需正确地设置,否则定时器相关内部中断不
被响应。定时器控制寄存器中的有效边沿选择位、定时器工作模式选择位和时
钟源控制位需要正确地设置以确保定时器能正确配置为所需的应用。在开启定
时 / 事件计数器之前,需要确保先载入定时 / 事件计数器寄存器的初始值。定时
/ 事件计数器配置初始化后,可以使用定时器控制寄存器中的使能位来开启或关
闭定时器。
当定时 / 事件计数器产生溢出,其中断请求标志位被置位,中断请求产生。若
定时 / 事件计数器中断使能,跳转至相关中断向量。不管中断是否使能,在空
闲 / 休眠模式下,定时 / 事件计数器的溢出也会产生唤醒信号。若内部时钟源仍
然处于有效状态或外部信号继续改变状态,上述情况就有可能发生。在这些情
况下,定时 / 事件计数器继续计数,若溢出则将唤醒系统。为了防止这种唤醒,
可以在执行“HALT”指令进入空闲 / 休眠模式之前将相应中断请求标志位置位。
脉冲宽度调制 – HT66F0021/HT66F0031
该系列单片机包含一个 8 位的脉冲宽度调制功能。通过给 PWMDATA 寄存器设
定特定的数值,PWM 功能可提供占空比可调但频率固定的 PWM 信号输出,这
在蜂鸣器控制应用方面十分有用。
PWMEN
fSYS
fDIV
Divider
(/1, /2, /3, /4)
8-bit Counter
PWMDIV[1:0]
PWMSEL
8-bit PWM Comparator
(7+1)/(6+2)
PWMO
PWMD
PWMDATA
PWM 方框图
Rev.1.40
65
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
PWM 寄存器说明
脉 宽 调 制 通 道 的 所 有 操 作 是 通 过 两 个 寄 存 器 来 控 制 的, 一 个 数 据 寄 存 器
PWMDATA 和一个控制寄存器 PWMC。
位
寄存器
名称
7
6
5
PWMC PWMEN PWMDIV1 PWMDIV0
PWMDATA
D7
D6
D5
4
—
D4
3
—
D3
2
—
D2
1
—
D1
0
PWMSEL
D0
PWM 寄存器列表
● PWMC 寄存器
Bit
7
6
5
Name PWMEN PWMDIV1 PWMDIV0
R/W
R/W
R/W
R/W
POR
0
0
0
Bit 7
Bit 6~5
Bit 4~1
Bit 0
4
—
—
—
3
—
—
—
2
—
—
—
1
—
—
—
0
PWMSEL
R/W
0
PWMEN:PWM 使能控制
0:除能
1:使能
注:1. 当 PWMEN 位清零除能 PWM 功能时,内部 PWMO 信号将被强制拉低。
当多功能引脚选择作为 PWMO 输出功能且 PWMEN 位清零时,外部
PWMO 引脚为浮空状态。
2. 当 PWMEN 位设置为高时,第一个 PWM 调制周期的周期和占空比可能
与预期不符合。在第一个 PWM 周期后,PWM 输出正常。
PWMDIV1~PWMDIV0:fDIV 频率选择
00:fDIV=fSYS
01:fDIV=fSYS/2
10:fDIV=fSYS/3
11:fDIV=fSYS/4
未定义,读为“0”
PWMSEL:PWM 模式选择
0:(6+2) 位模式
1:(7+1) 位模式
● PWMDATA 寄存器
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
D7~D0:PWM 输出占空比周期 PWMD bit 7 ~ bit 0
注意,一旦修改 PWMD 占空比周期值会立即反映在 PWMO 输出信号上。因此,
在当前的 PWM 调制周期中,PWM 新旧数据的相接会导致占空比与设定值不一
致的现象。此现象只会维持一个 PWM 周期,从下一个新的 PWM 周期开始将
恢复与 PWMD 设定值相同的 PWM 占空比。
PWM 操作
脉冲宽度调制通道配有一个 PWMC 和一个 PWMDATA 寄存器。该 PWM 通
道 有 一 个 数 据 寄 存 器, 即 PWMDATA, 其 内 容 是 一 个 8 位 的 数 据, 简 称 为
PWMD。PWMD 表示输出波形中每个调制周期的总的占空比。为了提高 PWM
调制频率,每个调制周期被调制成 2 个或 4 个独立的调制子区段,分别对应 (7+1)
Rev.1.40
66
2020-09-24
HT66F0021/HT66F0031/HT66F0041
低成本 1K/2K A/D 型 Flash 单片机
位模式和 (6+2) 位模式。PWM 计数器的时钟频率为 fDIV,来自系统时钟 fSYS 或
其分频。可以通过设置 PWMC 寄存器来选择 PWM 通道所需的模式、时钟源以
及使能 / 除能控制。注意,当使用 PWM 时,只要将所需的值写入 PWMDATA
寄存器并通过 PWMC 寄存器设置所需模式、时钟源和使能 / 除能控制,单片机
内部电路即自动完成 PWM 各子调制周期的划分并输出 PWM 信号。
将原始调制周期分成 2 个或 4 个子周期的方法,使产生更高的 PWM 频率成为
可能,这样可以提供更广泛的应用。使用者需要理解 PWM 频率与 PWM 调制
频率的不同之处。PWM 时钟为 fDIV,当 PWM 值为 8-bit 时,整个 PWM 周期的
频率为 fDIV/256。(7+1) 位模式下的 PWM 调制频率为 fDIV/128,而 (6+2) 位模式
下的 PWM 调制频率为 fDIV/64。
(6+2) 位 PWM 模式调制
在 (6+2) 位模式中,一个 PWM 周期又被分成 4 个调制周期,称为调制周期 0 ~ 调
制周期 3。每个子周期包含 64 个 PWM 输入时钟周期。在这个模式下,PWMD
被分成两个部分。第一部分包括 PWMD 的 bit 7 ~ bit 2 位,表示 DC 值,第二部分
为 PWMD 的 bit 1 ~ bit 0 位,表示 AC 值。下表总结了在 (6+2) 位模式下 PWM 输
出信号的调制频率、调制周期占空比、PWM 周期频率和 PWM 周期占空比的概况。
调制频率
调制周期 i
fDIV/64
i=0~3
调制周期占空比
i