标准 A/D + LCD 型 Flash 单片机
HT67F488/HT67F489
版本 : V1.50
日期 : 2014-08-12
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
目录
特性 .................................................................................................................................6
CPU 特性 ............................................................................................................................... 6
周边特性 ............................................................................................................................... 6
概述 ................................................................................................................................7
选型表 .............................................................................................................................7
方框图 .............................................................................................................................8
引脚图 .............................................................................................................................8
引脚说明 .........................................................................................................................9
极限参数 .......................................................................................................................12
直流电气特性 ...............................................................................................................12
交流电气特性 ...............................................................................................................15
ADC 电气特性 .............................................................................................................15
LVD&LVR 电气特性 ...................................................................................................16
上电复位特性 ...............................................................................................................16
系统结构 .......................................................................................................................17
时序和流水线结构 .............................................................................................................. 17
程序计数器 .......................................................................................................................... 18
堆栈 ...................................................................................................................................... 18
算术逻辑单元 – ALU .......................................................................................................... 19
Flash 程序存储器 .........................................................................................................19
结构 ...................................................................................................................................... 19
特殊向量 .............................................................................................................................. 19
查表 ...................................................................................................................................... 20
查表范例 .............................................................................................................................. 21
在线烧录 .............................................................................................................................. 22
片上调试 .............................................................................................................................. 22
数据存储器 ...................................................................................................................23
结构 ...................................................................................................................................... 23
通用数据存储器 .................................................................................................................. 23
特殊功能数据存储器 .......................................................................................................... 23
特殊功能寄存器 ...........................................................................................................25
间接寻址寄存器 – IAR0,IAR1,IAR2............................................................................ 25
间接寻址指针 – MP0,MP1L,MP1H,MP2L,MP2H................................................. 25
累加器 – ACC ...................................................................................................................... 26
程序计数器低字节寄存器 – PCL ....................................................................................... 26
表格寄存器 – TBLP,TBHP,TBLH ................................................................................ 26
状态寄存器 – STATUS ........................................................................................................ 26
Rev. 1.50
2
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
EEPROM 数据寄存器 .................................................................................................28
EEPROM 数据寄存器结构 ................................................................................................. 28
EEPROM 寄存器 ................................................................................................................. 28
从 EEPROM 中读取数据 .................................................................................................... 29
写数据到 EEPROM ............................................................................................................. 29
写保护 .................................................................................................................................. 30
EEPROM 中断 ..................................................................................................................... 30
编程注意事项 ...................................................................................................................... 30
振荡器 ...........................................................................................................................32
振荡器概述 .......................................................................................................................... 32
系统时钟配置 ...................................................................................................................... 32
外部晶体 / 陶瓷振荡器 – HXT ........................................................................................... 33
内部 RC 振荡器 – HIRC ..................................................................................................... 33
外部 32.768kHz 晶体振荡器 – LXT ................................................................................... 34
LXT 振荡器低功耗功能 ..................................................................................................... 35
内部 32kHz 振荡器 – LIRC ................................................................................................ 35
工作模式和系统时钟 ...................................................................................................36
系统时钟 .............................................................................................................................. 36
系统工作模式 ...................................................................................................................... 37
控制寄存器 .......................................................................................................................... 38
工作模式切换 ...................................................................................................................... 40
静态电流的注意事项 .......................................................................................................... 43
唤醒 ...................................................................................................................................... 43
看门狗定时器 ...............................................................................................................44
看门狗定时器时钟源 .......................................................................................................... 44
看门狗定时器控制寄存器 .................................................................................................. 44
看门狗定时器操作 .............................................................................................................. 45
复位和初始化 ...............................................................................................................46
复位功能 .............................................................................................................................. 46
复位初始状态 ...................................................................................................................... 49
输入 / 输出端口 ............................................................................................................52
上拉电阻 .............................................................................................................................. 53
PA 口唤醒 ............................................................................................................................ 53
引脚共用功能 ...................................................................................................................... 53
输入 / 输出端口控制寄存器 ............................................................................................... 53
输入 / 输出引脚结构 ........................................................................................................... 53
编程注意事项 ...................................................................................................................... 55
定时器模块 – TM .........................................................................................................55
简介 ...................................................................................................................................... 55
TM 操作 ............................................................................................................................... 56
TM 时钟源 ........................................................................................................................... 56
TM 中断 ............................................................................................................................... 56
Rev. 1.50
3
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
TM 外部引脚 ....................................................................................................................... 56
TM 输入 / 输出引脚控制寄存器 ........................................................................................ 56
编程注意事项 ...................................................................................................................... 59
周期型 TM – PTM .......................................................................................................60
周期型 TM 操作 .................................................................................................................. 60
周期型 TM 寄存器介绍 ...................................................................................................... 61
周期型 TM 工作模式 .......................................................................................................... 65
简易型 TM ....................................................................................................................74
简易型 TM 操作 ................................................................................................................. 74
简易型 TM 寄存器介绍 ..................................................................................................... 74
简易型 TM 工作模式 ......................................................................................................... 78
A/D 转换器....................................................................................................................84
A/D 简介 .............................................................................................................................. 84
A/D 转换寄存器介绍 .......................................................................................................... 84
A/D 转换器数据寄存器 – ADRL,ADRH ........................................................................ 85
A/D 转换控制寄存器 – ADCR0,ADCR1,ACERL,ACERH...................................... 85
A/D 操作 .............................................................................................................................. 89
A/D 输入引脚 ...................................................................................................................... 90
A/D 转换步骤 ...................................................................................................................... 90
编程注意事项 ...................................................................................................................... 91
A/D 转换功能 ...................................................................................................................... 91
A/D 转换应用范例 .............................................................................................................. 92
LCD 显示存储器 ..........................................................................................................94
LCD 驱动输出 ..................................................................................................................... 94
LCD 控制寄存器 ................................................................................................................. 95
LCD 波形时序图 ................................................................................................................. 99
LED 驱动器 ....................................................................................................................... 102
LED 驱动操作 ................................................................................................................... 102
LED 驱动寄存器 ............................................................................................................... 102
UART 模块串行接口 .................................................................................................103
UART 模块特性................................................................................................................. 103
UART 模块概述................................................................................................................. 103
UART 外部引脚接口......................................................................................................... 103
UART 数据传输方案......................................................................................................... 104
UART 状态和控制寄存器................................................................................................. 104
UCR2 寄存器 ..................................................................................................................... 107
波特率发生器 .................................................................................................................... 108
UART 模块的设置与控制................................................................................................. 110
接收错误处理 .................................................................................................................... 114
UART 模块中断结构......................................................................................................... 115
地址检测模式 .................................................................................................................... 116
UART 模块暂停和唤醒..................................................................................................... 116
Rev. 1.50
4
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
中断 ............................................................................................................................. 118
中断寄存器 ........................................................................................................................ 118
中断操作 ............................................................................................................................ 126
外部中断 ............................................................................................................................ 128
多功能中断 ........................................................................................................................ 128
A/D 转换器中断 ................................................................................................................ 128
UART 中断......................................................................................................................... 128
时基中断 ............................................................................................................................ 129
EEPROM 中断 ................................................................................................................... 130
LVD 中断 ........................................................................................................................... 130
TM 中断 ............................................................................................................................. 130
中断唤醒功能 .................................................................................................................... 130
编程注意事项 .................................................................................................................... 131
低电压检测 – LVD .....................................................................................................132
LVD 寄存器 ....................................................................................................................... 132
LVD 操作 ........................................................................................................................... 132
配置选项 .....................................................................................................................133
应用电路 .....................................................................................................................133
指令集 .........................................................................................................................134
简介 .................................................................................................................................... 134
指令周期 ............................................................................................................................ 134
数据的传送 ........................................................................................................................ 134
算术运算 ............................................................................................................................ 134
逻辑和移位运算 ................................................................................................................ 134
分支和控制转换 ................................................................................................................ 135
位运算 ................................................................................................................................ 135
查表运算 ............................................................................................................................ 135
其它运算 ............................................................................................................................ 135
指令集概要 .................................................................................................................136
惯例 .................................................................................................................................... 136
指令定义 .....................................................................................................................139
封装信息 .....................................................................................................................151
44-pin LQFP (10mm×10mm) (FP2.0mm) 外形尺寸 ........................................................ 152
Rev. 1.50
5
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
特性
CPU 特性
● 工作电压
fSYS=8MHz:2.2V~5.5V
fSYS=12MHz:2.7V~5.5V
fSYS=16MHz:4.5V~5.5V
● 提供暂停和唤醒功能,以降低功耗
● 振荡器类型
高速振荡器:HIRC
低速振荡器:LXT/LIRC
外部晶振:HXT
● 内建 8MHz 振荡器,无需外部元件
● 多种工作模式:正常、低速、空闲和休眠
● 所有指令都可在 1 或 2 个指令周期内完成
● 位操作指令:16 位查表功能
● 63 条功能强大的指令系统
● 8 层堆栈
周边特性
● Flash 程序存储器:4K×16~8K×16
● RAM 数据存储:256×8
● EEPROM 存储器:64×8 ( 仅 HT67F489)
● 看门狗定时器
● 42 个双向输入 / 输出口
包括 LCD/LED 驱动输出
● 4 个与 I/O 口复用的外部中断输入
● 多个定时器模块用于时间测量、捕捉输入、比较匹配输出、PWM 输出及单脉
冲输出
● 双时基功能用以产生固定的中断信号
● 10 通道 12-bit A/D 转换器
● LCD 显示
20SEG×8COM & 20SEG×4COM
1/3 或 1/4 bias
● LED 显示:8SEG×8COM
● 低电压复位功能
● 低电压检测功能
● 封装类型:44-LQFP
Rev. 1.50
6
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
概述
HT67F488/HT67F489 是一款 A/D 型具有 8 位高性能精简指令集的 Flash 单片机,
专门为需要 A/D 转换的产品而设计,如传感器等。该系列单片机具有一系列功
能和特性,其 Flash 存储器可多次编程的特性给用户提供了极大的方便。存储
器方面,还包含了一个 RAM 数据存储器和一个可用于存储序号、校准数据等
非易失性数据的 EEPROM 存储器 ( 仅 HT67F489 含 EEPROM)。
在模拟特性方面,该系列单片机包含一个多通道 12 位 A/D 转换器。还带有多
个使用灵活的定时器模块,可提供定时功能、脉冲产生功能及 PWM 产生功能。
内部看门狗定时器、低电压复位和低电压检测等内部保护特性,外加优秀的抗
干扰和 ESD 保护性能,确保单片机在恶劣的电磁干扰环境下可靠地运行。
该系列单片机提供了丰富的 HXT、HIRC、LXT 和 LIRC 振荡器功能选项,且
内建完整的系统振荡器,无需外围元器件。其在不同工作模式之间动态切换的
能力,为用户提供了一个优化单片机操作和减少功耗的手段。
该系列单片机内含 UART 模块,它可以支持诸如单片机之间的数据通信网络,
低成本 PC 和外部设备间的数据连接,便携式和电池供电设备间的通信等。
LCD 和 LED 驱动器功能为一些需要显示类型设备接口的应用提供了一种简单
有效的解决方法。
外加时基功能、I/O 使用灵活等其它特性,使该系列单片机可以广泛适用于各
种需要 A/D 转换的应用,例如传感器信号处理、电机驱动、工业控制、消费类
产品和子系统控制等。
选型表
对此系列的单片机而言,大多数的特性参数都是一样的。主要差异是在于程序
存储器的容量和是否有 EEPROM。下标列出各单片机的主要特性。
型号
ROM RAM EEPROM I/O
外部
中断
A/D
TM 模块
时基 UART 堆栈
封裝
HT67F488 4K×16 256×8
—
42
4
12-bit×10
10-bit CTM×3
10-bit PTM×1
2
√
8
44LQFP
HT67F489 8K×16 256×8
64 × 8
42
4
12-bit×10
10-bit CTM×3
10-bit PTM×1
2
√
8
44LQFP
Rev. 1.50
7
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
方框图
引脚图
P
P
P
P C
P C
P C
P C
P C
P C
P F 4 /S
P F 5 /S
P
P
P
P C
P C
P C
P C
P C
P C
P F 4 /S
P F 5 /S
D 7 /S
C 0 /S
C 1 /S
2 /S E
3 /S E
4 /S E
5 /S E
6 /S E
7 /S E
E G 1
E G 1
D 7 /S
C 0 /S
C 1 /S
2 /S E
3 /S E
4 /S E
5 /S E
6 /S E
7 /S E
E G 1
E G 1
E G
E G
E G
G 1
G 1
G 1
G 1
G 1
G 1
6 /R
7 /T
E G
E G
E G
G 1
G 1
G 1
G 1
G 1
G 1
6 /R
7 /T
X
X
X
X
0
1
2
3
4
5
0
1
2
3
4
5
A
1
2
3 2
3
3 1
4
3 0
5
S
6
2
1
1
2 9
6
2
3 3
7
2 8
2 7
8
2 6
9
1 0
1 1
2 5
2 4
1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2
2 3
P D 6
P D 5
P D 4
P D 3
P D 2
P D 1
P D 0
P E 0
P E 1
P E 2
P E 3
/S E
/S E
/S E
/S E
/S E
/S E
/S E
/C O
/C O
/C O
/C O
G 6
G 5
G 4
G 3
G 2
P
P F 7 /S E G
P A 0 /IN T 2 /T C K 0 /O
P A 2 /IN T 3 /T P 0 _ 0 /O
G 1
G 0
M 0
M 1
M 2
M 3
F 6 /S E G 1 8 /IN T
1 9 /IN T 1 /T P 0 _
C D S D A /IC P D
C D S C K /IC P C
V D D & A V D
V S S & A V S
P A 1 /O S C
P A 3 /O S C
P A
P A 4 /X T
P A 5 /X T
4 4 4 3 4 2 4 1 4 0 3 9 3 8 3 7 3 6 3 5 3 4
0
A
D
1
1
2
3 1
K
4
3 0
5
S
6
2
1
1
2 9
6
2
3 3
3 2
3
7
2 8
2 7
8
2 6
9
1 0
1 1
2 5
2 4
1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2
2 3
P D
P D
P D
P D
P D
P D
P D
P E
P E
P E
P E
6 /S
5 /S
4 /S
3 /S
2 /S
1 /S
0 /S
0 /C
1 /C
2 /C
3 /C
E G 6
E G 5
E G 4
E G 3
E G 2
E G 1
E G 0
O M 0
O M 1
O M 2
O M 3
P B
P B
P B
P B
P E
P E
P E
P B
P E
P B
P A
/A
/A
/A
/A
/A
/A
/A
/A
/A
/A
0 /A
1 /A
2 /A
3 /A
4 /A
5 /A
6 /A
4 /A
7 /A
5 /A
7
P B 0
P B 1
P B 2
P B 3
P E 4
P E 5
P E 6
P B 4
P E 7
P B 5
P A 7
N 0
N 1
N 2
N 3
N 4
N 5
N 6
N 7
N 8
N 9
N 0
N 1
N 2
N 3
N 4
N 5
N 6
N 7
N 8
N 9
/T
/T
/T
/T
/C
/C
/C
/V
/C
/T
/T
/T
/T
/C
/C
/C
/V
/C
C K
P 3
P 2
P 1
O M
O M
O M
R E
O M
C K
P 3
P 2
P 1
O M
O M
O M
R E
O M
3
3
F
F
7
7
4 /T C K 1
5 /T C K 2
6
4 /T C K 1
5 /T C K 2
6
Rev. 1.50
7
K
4 4 4 3 4 2 4 1 4 0 3 9 3 8 3 7 3 6 3 5 3 4
0
8
D
1
9
6 /S E G 1 8 /IN T
1 9 /IN T 1 /T P 0 _
2 /T C K 0 /IC P D
/T P 0 _ 0 /IC P C
V D D & A V D
V S S & A V S
P A 1 /O S C
P A 3 /O S C
P A
P A 4 /X T
P A 5 /X T
7
8
9
P F
P F 7 /S E G
P A 0 /IN T
P A 2 /IN T 3
8
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
引脚说明
引脚名称
PA0/INT2/
TCK0/
OCDSDA/
ICPDA
PA1/OSC2
PA3/OSC1
PA6, PA7
PA2/INT3/
TP0_0/
OCDSCK/
ICPCK
PA4/XT1
PA5/XT2
PB0/AN0/
TCK3
PB1/AN1/
TP3
PB2/AN2/
TP2
PB3/AN3/
TP1
PB4/AN7/
VREF
Rev. 1.50
功能
OP
I/T
O/T
说明
PAPU
通用 I/O 口,可通过寄存器设置上拉电阻和
ST CMOS
PA0
PAWU
唤醒功能
INT2
—
ST
— 外部中断 2 输入
TCK0
—
ST
— TM0 时钟输入
OCDSDA
—
ST CMOS OCDS 数据 / 地址,仅用于 EV 芯片
ICPDA
—
ST CMOS ICP 数据 / 地址
PAPU
通用 I/O 口,可通过寄存器设置上拉电阻和
PA1
ST CMOS
PAWU
唤醒功能
OSC2
OSC
—
HXT 高频率晶振引脚
PAPU
通用 I/O 口,可通过寄存器设置上拉电阻和
PA3
ST CMOS
PAWU
唤醒功能
OSC1
OSC
HXT
— 高频率晶振引脚
PAPU
通用 I/O 口,可通过寄存器设置上拉电阻和
PA6, PA7
ST CMOS
PAWU
唤醒功能
PAPU
通用 I/O 口,可通过寄存器设置上拉电阻和
ST CMOS
PA2
PAWU
唤醒功能
INT3
—
ST
— 外部中断 3 输入
TP0_0
TMPC
ST CMOS TM0 输入 / 输出
OCDSCK
—
ST
— OCDS 时钟引脚,仅用于 EV 芯片
ICPCK
—
ST
— ICP 时钟引脚
PAPU
通用 I/O 口,可通过寄存器设置上拉电阻和
PA4
ST CMOS
PAWU
唤醒功能
XT1
CO
LXT
— LXT 引脚
PAPU
通用 I/O 口,可通过寄存器设置上拉电阻和
PA5
ST CMOS
PAWU
唤醒功能
XT2
CO
—
LXT LXT 引脚
PB0
PBPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
AN0
ACERL AN
— A/D 通道 0
TCK3
—
ST
— TM3 时钟输入
PB1
PBPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
AN1
ACERL AN
— A/D 通道 1
TP3
TMPC
ST CMOS TM3 输入 / 输出
PB2
PBPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
AN2
ACERL AN
— A/D 通道 2
TP2
TMPC
ST CMOS TM2 输入 / 输出
PB3
PBPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
AN3
ACERL AN
— A/D 通道 3
TP1
TMPC
ST CMOS TM1 输入 / 输出
PB4
PBPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
AN7
ACERL AN
— A/D 通道 7
VREF ADCR1 AN
— ADC 参考输入
9
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
引脚名称
PB5/AN9
PC0/SEG8
PC1/SEG9
PC2/SEG10
PC3/SEG11
PC4/SEG12
PC5/SEG13
PC6/SEG14
PC7/SEG15
PD0/SEG0
PD1/SEG1
PD2/SEG2
PD3/SEG3
PD4/SEG4
PD5/SEG5
PD6/SEG6
PD7/SEG7
PE0/COM0
PE1/COM1
PE2/COM2
Rev. 1.50
功能
PB5
AN9
PC0
SEG8
PC1
SEG9
PC2
SEG10
PC3
SEG11
PC4
SEG12
PC5
SEG13
PC6
SEG14
PC7
SEG15
PD0
SEG0
PD1
SEG1
PD2
SEG2
PD3
SEG3
PD4
SEG4
PD5
SEG5
PD6
SEG6
PD7
SEG7
PE0
COM0
PE1
COM1
PE2
COM2
OP
I/T
O/T
说明
PBPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
ACERH AN
— A/D 通道 9
PCPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR1 — CMOS LCD SEG 输出
PCPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR1 — CMOS LCD SEG 输出
PCPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR1 — CMOS LCD SEG 输出
PCPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR1 — CMOS LCD SEG 输出
PCPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR1 — CMOS LCD SEG 输出
PCPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR1 — CMOS LCD SEG 输出
PCPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR1 — CMOS LCD SEG 输出
PCPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR1 — CMOS LCD SEG 输出
PDPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR0 — CMOS LCD SEG 输出
PDPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR0 — CMOS LCD SEG 输出
PDPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR0 — CMOS LCD SEG 输出
PDPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR0 — CMOS LCD SEG 输出
PDPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR0 — CMOS LCD SEG 输出
PDPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR0 — CMOS LCD SEG 输出
PDPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR0 — CMOS LCD SEG 输出
PDPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
SEGCR0 — CMOS LCD SEG 输出
PEPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
LCDC0 — CMOS LCD COM 输出
PEPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
LCDC0 — CMOS LCD COM 输出
PEPU
ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
LCDC0 — CMOS LCD COM 输出
10
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
引脚名称
PE3/COM3
PE4/AN4/
COM4/
TCK1
PE5/AN5/
COM5/TCK2
PE6/AN6/
COM6
PE7/AN8/
COM7
PF4/SEG16/
RX
PF5/SEG17/
TX
PF6/SEG18/
INT0
PF7/SEG19/
INT1/TP0_1
AVDD
VDD
AVSS
VSS
功能
PE3
COM3
PE4
AN4
COM4
TCK1
PE5
AN5
COM5
TCK2
PE6
AN6
COM6
PE7
AN8
COM7
PF4
SEG16
RX
PF5
SEG17
TX
PF6
SEG18
INT0
PF7
SEG19
INT1
TP0_1
AVDD
VDD
AVSS
VSS
OP
PEPU
LCDC0
PEPU
ACERL
LCDC0
—
PEPU
ACERL
LCDC0
—
PEPU
ACERL
LCDC0
PEPU
ACERH
LCDC0
PFPU
SEGCR2
—
PFPU
SEGCR2
—
PFPU
SEGCR2
—
PFPU
SEGCR2
—
TMPC
—
—
—
—
注:I/T:输入类型;
OP:通过寄存器选项来配置
PWR:电源;
CMOS:CMOS 输出;
LXT:低频晶体振荡器;
Rev. 1.50
I/T
ST
—
ST
AN
—
ST
ST
AN
—
ST
ST
AN
—
ST
AN
—
ST
—
ST
ST
—
—
ST
—
ST
ST
—
ST
ST
PWR
PWR
PWR
PWR
O/T
CMOS
CMOS
CMOS
—
CMOS
—
CMOS
—
CMOS
—
CMOS
—
CMOS
CMOS
—
CMOS
CMOS
CMOS
—
CMOS
CMOS
CMOS
CMOS
CMOS
—
CMOS
CMOS
—
CMOS
—
—
—
—
说明
通用 I/O 口,可通过寄存器设置上拉电阻
LCD COM 输出
通用 I/O 口,可通过寄存器设置上拉电阻
A/D 通道 4
LCD COM 输出
TM1 时钟输入
通用 I/O 口,可通过寄存器设置上拉电阻
A/D 通道 5
LCD COM 输出
TM2 时钟输入
通用 I/O 口,可通过寄存器设置上拉电阻
A/D 通道 6
LCD COM 输出
通用 I/O 口,可通过寄存器设置上拉电阻
A/D 通道 8
LCD COM 输出
通用 I/O 口,可通过寄存器设置上拉电阻
LCD SEG 输出
UART 接收数据输入
通用 I/O 口,可通过寄存器设置上拉电阻
LCD SEG 输出
UART 发送数据输出
通用 I/O 口,可通过寄存器设置上拉电阻
LCD SEG 输出
外部中断 0 输入
通用 I/O 口,可通过寄存器设置上拉电阻
LCD SEG 输出
外部中断 1 输入
TM0 输入 / 输出
ADC 正电源
正电源
ADC 负电源
负电源、接地
O/T:输出类型
ST:施密特触发输入
AN:模拟输入脚
HXT:高频晶体振荡器
11
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
极限参数
电源供应电压 ................................................................................VSS-0.3V~VSS+6.0V
输入电压 ........................................................................................VSS-0.3V~VDD+0.3V
储存温度 ...................................................................................................-50˚C~125˚C
工作温度 .....................................................................................................-40˚C~85˚C
IOH 总电流 ........................................................................................................... -80mA
IOL 总电流..............................................................................................................80mA
总功耗 ................................................................................................................500mW
注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无
法预期芯片在上述标示范围外的工作状态,而且若长期在标示范围外的条
件下工作,可能影响芯片的可靠性。
直流电气特性
Ta=25°C
符号
参数
VDD
VDD
工作电压 (HXT)
—
工作电流 , 正常模式
fSYS=fH, fSUB=fLXT or
fLIRC
3V
IDD1
IDD2
工作电流 , 正常模式 ,
fH=8MHz
Rev. 1.50
5V
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
测试条件
条件
fSYS=4MHz
fSYS=8MHz
fSYS=12MHz
fSYS=16MHz
最小 典型 最大 单位
2.2
2.2
2.7
4.5
—
—
—
—
5.5
5.5
5.5
5.5
V
V
V
V
无负载 , fSYS=8MHz,
ADC off, WDT 使能
—
1.6
2.4
mA
—
3.3
5.0
mA
无负载 , fSYS=fH/2,
ADC off, WDT 使能
—
—
—
—
—
—
—
—
—
—
—
—
0.9
2.5
0.7
2.0
0.6
1.6
0.5
1.5
0.49
1.45
0.47
1.4
1.5
3.75
1.0
3.0
0.9
2.4
0.75
2.25
0.74
2.18
0.71
2.1
mA
mA
mA
mA
mA
mA
mA
mA
mA
mA
mA
mA
无负载 , fSYS=fH/4,
ADC off, WDT 使能
无负载 , fSYS=fH/8,
ADC off, WDT 使能
无负载 , fSYS=fH/16,
ADC off, WDT 使能
无负载 , fSYS=fH/32,
ADC off, WDT 使能
无负载 , fSYS=fH/64,
ADC off, WDT 使能
12
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
符号
参数
VDD
3V
5V
IDD3
工作电流 , 低速模式
fSYS=fL (LXT, LIRC)
3V
5V
3V
5V
IIDLE01
IDLE0 模式静态电流
(LXTon)
IIDLE02
IDLE0 模式静态电流
(LIRC on)
IIDLE03
IDLE0 模式静态电流
(LXTon)
IIDLE04
IIDLE05
IDLE0 模式静态电流
(LXTon)
IDLE0 模式静态电流
(LXTon)
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
测试条件
条件
无负载 , fSYS=LXT, ADC off,
WDT 使能 , LXTLP=0,
LVR 使能
无负载 , fSYS=LXT, ADC off,
WDT 使能 , LXTLP=1,
LVR 使能
无负载 , fSYS=LIRC,
ADC off, WDT 使能 ,
LVR 使能
无负载 , ADC off,
WDT 使能 , LXTLP=0
无负载 , ADC off,
WDT 使能 , LXTLP=1
无负载 , ADC off,
WDT 使能
无负载 , ADC off,
WDT 使能 , LXTLP=1,
LCD 使能 (RT=1170K,
无快速充电 , VLCD=VDD)
无负载 , ADC off,
WDT 使能 , LXTLP=1,
LCD 使能 (RT=225K,
无快速充电 , VLCD=VDD)
无负载 , ADC off, WDT 使能 ,
LXTLP=1, LCD 使能
(RT=1170K, 快速充电 ,
QCT[2:0]=0, VLCD=VDD)
无负载 , ADC off, WDT 使能 ,
LXTLP=1, LCD 使能
(RT=1170K, 快速充电 ,
QCT[2:0]=7, VLCD=VDD)
最小 典型 最大 单位
—
45
75
μA
—
90
140
μA
—
40
70
μA
—
85
135
μA
—
40
65
μA
—
80
130
μA
—
—
—
—
—
—
2
4
1.5
3.0
1.5
3.0
4
8
3.0
6.0
3.0
6.0
μA
μA
μA
μA
μA
μA
—
3
6
μA
—
6
12
μA
—
14
28
μA
—
24
48
μA
—
5
10
μA
—
9
18
μA
—
11
22
μA
—
18
36
μA
—
—
—
—
—
—
0.5
1.0
0.2
0.4
1.5
2.5
3.0
6.0
1
2
3.0
5.0
mA
mA
μA
μA
μA
μA
IDLE0 模式静态电流
(LXTon)
3V
IIDLE1
IDLE1 模式静态电流
(LIRC on)
无负载 , ADC off, WDT 使能 ,
fSYS=8MHz on
ISLEEP0
SLEEP0 模式静态电流
(LXT 和 LIRC off)
ISLEEP1
SLEEP1 模式静态电流
(LXT 或 LIRC on)
3V
5V
3V
5V
3V
5V
—
—
0
—
0.3VDD
V
—
—
0.7VDD
—
VDD
V
IIDLE06
VIL
VIH
输入 / 输出口或其它引
脚的低电平输入电压
输入 / 输出口或其它引
脚的高电平输入电压
Rev. 1.50
5V
无负载 , ADC off, WDT 除能
无负载 , ADC off, WDT 使能
13
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
符号
参数
测试条件
条件
VDD
GPIO ( 除了 PD0~PD7 & PE0~PE7)
3V
VOL=0.1VDD
IOL
I/O 口灌电流
5V
VOL=0.1VDD
3V
VOH=0.9VDD
IOH
I/O 口源电流
5V
VOH=0.9VDD
大灌电流 I/O 口用于 LED 驱动器 (PE0~PE7)
3V
VOL=0.1VDD
IOL
I/O 口灌电流
5V
VOL=0.1VDD
3V
VOH=0.9VDD
IOH
I/O 口源电流
5V
VOH=0.9VDD
源电流可调节 I/O 口用于 LED 驱动器 (PD0~PD7)
3V
VOL=0.1VDD
IOL
I/O 口灌电流
5V
VOL=0.1VDD
VOH=0.9VDD
(IOHSn[1:0]=00B, n=0~7)
VOH=0.9VDD
(IOHSn[1:0]=01B, n=0~7)
3V
VOH=0.9VDD
(IOHSn[1:0]=10B, n=0~7)
VOH=0.9VDD
(IOHSn[1:0]=11B, n=0~7)
I/O 口源电流
IOH
VOH=0.9VDD
(IOHSn[1:0]=00B, n=0~7)
VOH=0.9VDD
(IOHSn[1:0]=01B, n=0~7)
5V
VOH=0.9VDD
(IOHSn[1:0]=10B, n=0~7)
VOH=0.9VDD
(IOHSn[1:0]=11B, n=0~7)
3V
—
RPH 输入 / 输出口上拉电阻
5V
—
3V/5V
—
RT
LCD 总偏置电阻
5V
—
ITOL 所有 I/O 口灌电流总和
5V
—
ITOH 所有 I/O 口源电流总和
Rev. 1.50
14
最小 典型 最大 单位
4
10
-2
-5
8
20
-4
-10
—
—
—
—
mA
mA
mA
mA
8
20
-2
-5
16
40
-4
-10
—
—
—
—
mA
mA
mA
mA
4
10
8
20
—
—
mA
mA
-2
-4
—
mA
-0.67 -1.33
—
mA
-0.5
—
mA
—
mA
—
mA
-1.67 -3.33
—
mA
-1.25
-2.5
—
mA
-0.83 -1.67
—
mA
100
50
+30
—
—
kΩ
kΩ
%
mA
mA
-1
-0.33 -0.66
-5
20
10
-30
80
-80
-10
60
30
RT
—
—
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
交流电气特性
Ta=25°C
符号
参数
fCPU
工作时钟
fSYS
fHIRC
fLIRC
tTIMER
tINT
tEERD
tEEWR
系统时钟 (HIRC)
系统时钟 (HIRC)
系统时钟 (LIRC)
TCKn 输入脉宽
中断脉宽
EEPROM 读周期
EEPROM 写周期
系统复位延迟时间
( 上电复位 , LVR, WDTC/LVRC 软
件复位 )
系统复位延迟时间 (WDT 溢出复位 )
tRSTD
tSST
系统启动时间 ( 从 HALT 中唤醒 )
测试条件
条件
VDD
2.2V~5.5V
—
2.2V~5.5V
—
2.7V~5.5V
—
4.5V~5.5V
—
2.2V~5.5V
—
4.5V~5.5V Ta=0°C~70°C
5V
Ta=25°C
—
—
—
—
5V
—
5V
—
DC
DC
DC
DC
—
-2%
-10%
0.3
10
—
—
—
—
—
—
8
8
32
—
—
2
2
4
8
12
16
—
+2%
+10%
—
—
4
4
MHz
MHz
MHz
MHz
MHz
MHz
kHz
μs
μs
tSYS
ms
25
50
100
ms
—
8.3 16.7 33.3
fSYS=LXT/HXT — 1024 —
fSYS=HIRC
—
16
—
fSYS=LIRC
—
2
—
ms
—
—
—
—
最小 典型 最大 单位
tSYS
注:tSYS=1/fSYS
ADC 电气特性
Ta=25°C
符号
参数
A/D 工作电压
A/D 输入电压
A/D 参考电压
参考缓冲电压
VDD
—
—
—
—
DNL A/D 非线性微分误差
5V
INL
A/D 非线性积分误差
5V
IADC
使用 A/D 的额外功耗
3V
5V
—
—
AVDD
VADI
VREF
VBG
IBG
使用 VBG 的额外功耗
tADCK A/D 转换器时钟周期
A/D 转换时间
tADC
( 包括采样和保持时间 )
tADS A/D 转换器采样时间
tON2ST A/D 转换器 On-to-Start 时间
tBGS VBG 开启到稳定的时间
Rev. 1.50
测试条件
条件
—
—
—
—
VREF=AVDD=VDD
tADCK=0.5μs
VREF=AVDD=VDD
tADCK=0.5μs
无负载 (tADCK=0.5μs)
无负载 (tADCK=0.5μs)
—
—
最小
典型
最大
单位
2.7
0
2
-3%
—
5.5
— AVDD/VREF
—
AVDD
1.09
+3%
V
V
V
V
-4
—
+4
LSB
-7
—
+7
LSB
—
—
—
0.5
0.9
1.2
200
—
1.35
1.8
300
10
mA
mA
μA
μs
— 12 bit ADC
—
16
—
tADCK
—
—
—
—
2
—
4
—
—
—
—
200
tADCK
μs
μs
—
—
—
15
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
LVD&LVR 电气特性
T=25°C
符号
参数
VDD
VLVR1
VLVR2
低电压复位电压
VLVR3
VLVR4
VLVD1
VLVD2
VLVD3
VLVD4
低电压检测电压
VLVD5
VLVD6
VLVD7
VLVD8
ILVD
使用 LVD 的额外功耗
tLVR
tLVD
tLVDS
tSRESET
低电压复位时间
低电压中断时间
LVDO 稳定时间
软件复位时间
—
—
测试条件
条件
LVR 使能 , 选择 2.1V
LVR 使能 , 选择 2.55V
LVR 使能 , 选择 3.15V
LVR 使能 , 选择 3.8V
LVDEN=1, VLVD=2.0V
LVDEN=1, VLVD=2.2V
LVDEN=1, VLVD=2.4V
LVDEN=1, VLVD=2.7V
LVDEN=1, VLVD=3.0V
LVDEN=1, VLVD=3.3V
LVDEN=1, VLVD=3.6V
LVDEN=1, VLVD=4.0V
最小
典型
2.1
2.55
3.15
3.8
2.0
2.2
2.4
2.7
3.0
3.3
3.6
4.0
30
60
240
45
—
90
-5%
-5%
3V LVD 除能→ LVD 使能
—
(LVR
使能
)
5V
—
—
—
120
—
—
20
— LVR 使能 , LVD off → on —
—
—
45
最大
+5%
+5%
45
90
480
90
15
120
单位
V
V
V
V
V
V
V
V
V
V
V
V
μA
μA
μs
μs
μs
μs
上电复位特性
Ta=25°C
符号
参数
上电复位电压
VPOR
RRVDD 上电复位电压速率
VDD 保持为 VPOR 的最小时间
tPOR
VDD
—
—
—
测试条件
条件
—
—
—
典型
最大
单位
—
0.035
1
—
—
—
100
—
—
mV
V/ms
ms
Rev. 1.50
最小
16
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
系统结构
内部系统结构是盛群单片机具有良好性能的主要因素。由于采用 RISC 结构,
该系列单片机具有高运算速度和高性能的特点。通过流水线的方式,指令的取
得和执行同时进行,此举使得除了跳转和调用指令外,其它指令都能在一个指
令周期内完成。8 位 ALU 参与指令集中所有的运算,它可完成算术运算、逻辑
运算、移位、递增、递减和分支等功能,而内部的数据路径则是以通过累加器
和 ALU 的方式加以简化。有些寄存器在数据存储器中被实现,且可以直接或间
接寻址。简单的寄存器寻址方式和结构特性,确保了在提供具有最大可靠度和
灵活性的 I/O 和 A/D 控制系统时,仅需要少数的外部器件。使得这些单片机适
用于低成本和大量生产的控制应用。
时序和流水线结构
主系统时钟由 HXT、HIRC、LXT 或 LIRC 振荡器提供,它被细分为 T1~T4 四
个内部产生的非重叠时序。在 T1 时间,程序计数器自动加一并抓取一条新的
指令。剩下的时间 T2~T4 完成译码和执行功能,因此,一个 T1~T4 时钟周期构
成一个指令周期。虽然指令的抓取和执行发生在连续的指令周期,但单片机流
水线结构会保证指令在一个指令周期内被有效执行。除非程序计数器的内容被
改变,如子程序的调用或跳转,在这种情况下指令将需要多一个指令周期的时
间去执行。
系统时序和流水线
如果指令牵涉到分支,例如跳转或调用等指令,则需要两个指令周期才能完成
指令执行。需要一个额外周期的原因是程序先用一个周期取出实际要跳转或调
用的地址,再用另一个周期去实际执行分支动作,因此用户需要特别考虑额外
周期的问题,尤其是在执行时间要求较严格的时候。
指令捕捉
Rev. 1.50
17
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
程序计数器
在程序执行期间,程序计数器用来指向下一个要执行的指令地址。除了“JMP”
和“CALL”指令需要跳转到一个非连续的程序存储器地址之外,它会在每条
指令执行完成以后自动加一。选择不同型号的单片机,程序寄存器的宽度会因
程序存储器的容量的不同而不同。只有较低的 8 位,即所谓的程序计数器低字
节寄存器 PCL,可以被用户直接读写。
当执行的指令要求跳转到不连续的地址时,如跳转指令、子程序调用、中断或
复位等,单片机通过加载所需要的地址到程序寄存器来控制程序,对于条件跳
转指令,一旦条件符合,在当前指令执行时取得的下一条指令将会被舍弃,而
由一个空指令周期来取代。
程序计数器
程序计数器高字节
PCL 寄存器
PCL7~PCL0
PC11~PC8
PC12~PC8
PCL7~PCL0
单片机型号
HT67F488
HT67F489
程序计数器的低字节,即程序计数器的低字节寄存器 PCL,可以通过程序控制,
且它是可以读取和写入的寄存器。通过直接写入数据到这个寄存器,一个程序
短跳转可直接执行,然而只有低字节的操作是有效的,跳转被限制在存储器的
当前页中,即 256 个存储器地址范围内,当这样一个程序跳转要执行时,会插
入一个空指令周期。程序计数器的低字节可由程序直接进行读取,PCL 的使用
可能引起程序跳转,因此需要额外的指令周期。
堆栈
堆栈是一个特殊的存储空间,用来存储程序计数器中的内容。该系列单片机有
8 层堆栈,堆栈既不是数据部分也不是程序空间部分,而且它既不是可读取也
不是可写入的。当前层由堆栈指针 (SP) 加以指示,同样也是不可读写的。在子
程序调用或中断响应服务时,程序计数器的内容被压入到堆栈中。当子程序或
中断响应结束时,返回指令 (RET 或 RETI) 使程序计数器从堆栈中重新得到它
以前的值。当一个芯片复位后,堆栈指针将指向堆栈顶部。
如果堆栈已满,且有非屏蔽的中断发生,中断请求标志会被置位,但中断响应
将被禁止。当堆栈指针减少 ( 执行 RET 或 RETI),中断将被响应。这个特性提
供程序设计者简单的方法来预防堆栈溢出。然而即使堆栈已满,CALL 指令仍
然可以被执行,而造成堆栈溢出。使用时应避免堆栈溢出的情况发生,因为这
可能导致不可预期的程序分支指令执行错误。
若堆栈溢出,则首个存入堆栈的程序计数器数据将会丢失。
P ro g ra m
T o p o f S ta c k
Rev. 1.50
S ta c k L e v e l 1
S ta c k L e v e l 2
S ta c k
P o in te r
B o tto m
C o u n te r
S ta c k L e v e l 3
o f S ta c k
P ro g ra m
M e m o ry
S ta c k L e v e l 8
18
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
算术逻辑单元 – ALU
算术逻辑单元是单片机中很重要的部分,执行指令集中的算术和逻辑运算。
ALU 连接到单片机的数据总线,在接收相关的指令码后执行需要的算术与逻辑
操作,并将结果存储在指定的寄存器,当 ALU 计算或操作时,可能导致进位、
借位或其它状态的改变,而相关的状态寄存器会因此更新内容以显示这些改变,
ALU 所提供的功能如下:
● 算术运算:ADD,ADDM,ADC,ADCM,SUB,SUBM,SBC,SBCM,DAA
● 逻辑运算:AND,OR,XOR,ANDM,ORM,XORM,CPL,CPLA
● 移位运算:RRA,RR,RRCA,RRC,RLA,RL,RLCA,RLC
● 递增和递减:INCA,INC,DECA,DEC
● 分支判断:JMP,SZ,SZA,SNZ,SIZ,SDZ,SIZA,SDZA,CALL,RET,
RETI
Flash 程序存储器
程序存储器用来存放用户代码即储存程序。程序存储器为 Flash 类型意味着可
以多次重复编程,方便用户使用同一芯片进行程序的修改。使用适当的单片机
编程工具,此所有单片机提供用户灵活便利的调试方法和项目开发规划及更新。
结构
程序存储器的容量为 4K×16 或 8K×16 位,程序存储器用程序计数器来寻址,其
中也包含数据、表格和中断入口。数据表格可以设定在程序存储器的任何地址,
由表格指针来寻址。
单片机型号
HT67F488
HT67F489
容量
4K×16
8K×16
特殊向量
程序存储器内部某些地址保留用做诸如复位和中断入口等特殊用途。地址
0000H 是芯片复位后的程序起始地址。在芯片复位之后,程序将跳到这个地址
并开始执行。
Rev. 1.50
19
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
程序存储器结构
查表
程序存储器中的任何地址都可以定义成一个表格,以便储存固定的数据。使用
表格时,表格指针必须先行设定,其方式是将表格的地址放在表格指针寄存器
TBLP 和 TBLH 中。这些寄存器定义表格总的地址。
在设定完表格指针后,表格数据可以使用“TABRD [m]”或“TABRDL [m]”
指令分别从程序存储器查表读取。当这些指令执行时,程序存储器中表格数据
低字节,将被传送到使用者所指定的数据存储器 [m],程序存储器中表格数据
的高字节,则被传送到 TBLH 特殊寄存器。
下图是查表中寻址 / 数据流程:
A d d re s s
L a s t p a g e o r
T B H P R e g is te r
T B L P R e g is te r
Rev. 1.50
D a ta
1 6 b its
R e g is te r T B L H
U s e r S e le c te d
R e g is te r
H ig h B y te
L o w B y te
20
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
查表范例
以下范例说明表格指针和表格数据如何被定义和执行。这个例子使用的表格
数据用 ORG 伪指令储存在存储器中。HT67F488 中 ORG 指令的值“F00H”
指向的地址是 4K 程序存储器中最后一页的起始地址。表格指针的初始值设为
06H,这可保证从数据表格读取的第一笔数据位于程序存储器地址 F06H,即最
后一页起始地址后的第六个地址。值得注意的是,假如“TABRD [m]”指令被
使用,则表格指针指向当前页。在这个例子中,表格数据的高字节等于零,而
当“TABRD [m]”指令被执行时,此值将会自动的被传送到 TBLH 寄存器。
TBLH 寄存器为只读寄存器,不能重新储存,若主程序和中断服务程序都使用
表格读取指令,应该注意它的保护。使用表格读取指令,中断服务程序可能会
改变 TBLH 的值,若随后在主程序中再次使用这个值,则会发生错误,因此建
议避免同时使用表格读取指令。然而在某些情况下,如果同时使用表格读取指
令是不可避免的,则在执行任何主程序的表格读取指令前,中断应该先除能,
另外要注意的是所有与表格相关的指令,都需要两个指令周期去完成操作。
表格读取程序范例
tempreg1 db ?
tempreg2 db ?
:
:
mov a,06h
mov tblp,a
:
:
tabrdl tempreg1
dec tblp
tabrdl tempreg2
:
:
org F00h
dc 00Ah, 00Bh, 00Ch, 00Dh,
:
:
Rev. 1.50
; temporary register #1 in current page
; temporary register #2 in current page
; initialise low table pointer - note that this
; address is referenced
; to the last page or present page
;
;
;
;
;
;
;
;
;
;
;
;
;
transfers value in table referenced by table
pointer to tempreg1
Data at program memory address “F06H”
transferred to tempreg1 and TBLH
reduce value of table pointer by one
transfers value in table referenced by table
pointer to tempreg2
Data at program memory address “F05H”
transferred to tempreg2 and TBLH
in this example the data “1AH” is transferred
to tempreg1 and data “0FH” to register tempreg2
while the value “00H” will be transferred to
the high byte register TBLH
; sets initial address of program memory
00Eh, 00Fh, 01Ah, 01Bh
21
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
在线烧录
Flash 型程序存储器提供用户便利地对同一芯片进行程序的更新和修改。另外,
HOLTEK 单片机提供 4 线接口的在线烧录方式。用户可将进行过烧录或未经过
烧录的单片机芯片连同电路板一起制成,最后阶段进行程序的更新和程序的烧
录,在无需去除或重新插入芯片的情况下方便地保持程序为最新版。
Holtek 烧录器引脚名称
ICPDA
ICPCK
VDD
VSS
MCU 在线烧录引脚名称
PA0
PA2
VDD
VSS
功能
串行数据 / 地址烧录
时钟烧录
电源
地
烧录过程中,用户必须确保 PA0 和 PA2 这两个引脚没有连接至其它输出脚。
程序存储器和 EEPROM 存储器可以通过 4 线的接口在线进行烧录。其中 PA0
用于数据串行下载或上传、PA2 用于串行时钟、两条用于提供电源。芯片在线
烧写的详细使用说明超出此文档的描述范围,将由专门的参考文献提供。
W r ite r C o n n e c to r
S ig n a ls
M C U
W r ite r _ V D D
V D D
IC P D A
P A 0
IC P C K
P A 2
W r ite r _ V S S
V S S
*
P r o g r a m m in g
P in s
*
T o o th e r C ir c u it
注:* 可能为电阻或电容。若为电阻则其值必须大于 1kΩ,若为电容则其必须小于 1nF。
片上调试
EV 芯片 HT67V489 用于 HT67F489/488 单片机仿真。此 EV 芯片 HT67V489
提供片上调试功能 (OCDS) 用于开发过程中的 HT67F489/488 单片机调试。除
了片上调试功能,HT67F489/488 和 HT67V489 在功能上几乎是兼容的。用户
可将 OCDSDA 和 OCDSCK 引脚连接至 Holtek HT-IDE 开发工具,从而实现
HT67V489 对 HT67F489/488 的仿真。OCDSDA 引脚为 OCDS 数据 / 地址输入 /
输出脚,OCDSCK 引脚为 OCDS 时钟输入脚。当用户用 EV 芯片 HT67V489 进
行调试时,HT67F489/488 单片机 OCDSDA 和 OCDSCK 引脚上的其它共用功能
对 EV 芯片 HT67V489 无效。由于这两个 OCDS 引脚与 ICP 引脚共用,因此在
线烧录时仍用作 Flash 存储器烧录引脚。关于 OCDS 功能的详细描述,请参考
“Holtek e-Link for 8-bit MCU OCDS User's Guide”文件。
Holtek e-Link 引脚名称 EV IC 引脚名称
OCDSDA
OCDSDA
OCDSCK
OCDSCK
VDD
VDD
VSS
VSS
Rev. 1.50
22
功能
片上调试串行数据 / 地址输入 / 输出
片上调试时钟输入
电源
地
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
数据存储器
数据存储器是内容可更改的 8 位 RAM 内部存储器,用来储存临时数据。
数据存储器分为两个区,第一部分是特殊功能数据存储器。这些寄存器有固定
的地址且与单片机的正确操作密切相关。大多特殊功能寄存器都可在程序控制
下直接读取和写入,但有些被加以保护而不对用户开放。第二部分数据存储器
是做一般用途使用,都可在程序控制下进行读取和写入。
结构
数据存储器被分为 5 个 Section,都位于 8 位存储器中。每个数据存储器 Section
分为两类,特殊功能数据存储器和通用数据存储器。
特 殊 功 能 数 据 存 储 器 起 始 地 址 为“00H”, 而 通 用 数 据 存 储 器 起 始 地 址 为
“80H”。大部分特殊功能数据寄存器均可在所有 Section 被访问,处于“40H”
地址的 EEC 寄存器却只能在 Section 1 中被访问到。
单片机型号
HT67F488
容量
Sections
0:80H~FFH
通用数据存储器:256×8 1:80H~93H ( 用于 LCD)
2:80H~FFH
数据存储器结构
通用数据存储器
通用数据存储器共 256 字节位于 Section0、Section2 的 80H~FFH。LCD 存储器
共 20 字节映射于 Section1 的 80H~93H。所有的单片机程序需要一个读 / 写的存
储区,让临时数据可以被储存和再使用,该 RAM 区域就是通用数据存储器。
这个数据存储区可让使用者进行读取和写入的操作。使用位操作指令可对个别
的位做置位或复位的操作,极大地方便了用户在数据存储器内进行位操作。
特殊功能数据存储器
这个区域的数据存储器是存放特殊寄存器的,这些寄存器与单片机的正确操作
密切相关,大多数的寄存器可进行读取和写入,只有一些是被写保护而只能读
取的,相关细节的介绍请参看有关特殊功能寄存器的部分。要注意的是,任何
读取指令对存储器中未定义的地址进行读取将返回“00H”。
Rev. 1.50
23
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
特殊功能数据存储器结构
Rev. 1.50
24
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
特殊功能寄存器
大部分特殊功能寄存器的细节将在相关功能章节描述,但有几个寄存器需在此
章节单独描述。
间接寻址寄存器 – IAR0,IAR1,IAR2
间接寻址寄存器 IAR0、IAR1 和 IAR2 的地址虽位于数据存储区,但其并没有
实际的物理地址。间接寻址的方法准许使用间接寻址指针做数据操作,以取代
定义实际存储器地址的直接存储器寻址方法。在间接寻址寄存器 IAR0、IAR1
和 IAR2 上的任何动作,将对间接寻址指针 MP0、MP1L/MP1H 或 MP2L/MP2H
所指定的存储器地址产生对应的读 / 写操作。它们总是成对出现,IAR0 和 MP0
可 以 访 问 Section 0, 而 IAR1 和 MP1L/MP1H、IAR2 和 MP2L/MP2H 可 以 访
问任何 Section。因为这些间接寻址寄存器不是实际存在的,直接读取将返回
“00H”的结果,而直接写入此寄存器则不做任何操作。
间接寻址指针 – MP0,MP1L,MP1H,MP2L,MP2H
该 系 列 单 片 机 提 供 五 个 间 接 寻 址 指 针, 即 MP0、MP1L、MP1H、MP2L 和
MP2H。由于这些指针在数据存储器中能像普通的寄存器一般被操作,因此提
供了一个寻址和数据追踪的有效方法。当对间接寻址寄存器进行任何操作时,
单片机指向的实际地址是由间接寻址指针所指定的地址。MP0、IAR0 用于访
问 Section 0,而 MP1L/MP1H 和 IAR1、MP2L/MP2H 和 IAR2 可根据 MP1H 或
MP2H 寄存器访问所有的 Section。直接寻址通过相关的数据存储器寻址指令来
访问所有的数据 Section。
以下例子说明如何清除一个具有 4 RAM 地址的区块,它们已事先定义成地址
adres1 到 adres4。
间接寻址程序举例
data .section ´data´
adres1
db ?
adres2
db ?
adres3
db ?
adres4
db ?
block
db ?
code .section at 0 ´code´
org00h
start:
mov a,04h
mov block,a
mov a,offset adres1
mov mp0,a
loop:
clr IAR0
inc mp0
sdz block
jmp loop
continue:
; setup size of block
; Accumulator loaded with first RAM address
; setup memory pointer with first RAM address
; clear the data at address defined by mp0
; increment memory pointer
; check if last memory location has been cleared
在上面的例子中有一点值得注意,即并没有确定 RAM 地址。
Rev. 1.50
25
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
累加器 – 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 标志位通常反映最近运算的状态。
● SC:当 OV 与当前指令操作结果 MSB 执行“XOR”所得结果。
● CZ:不同指令不同标志位的操作结果。详细资料请参考寄存器定义部分。
● C:当加法运算的结果产生进位,或减法运算的结果没有产生借位时,则 C
被置位,否则 C 被清零,同时 C 也会被带进位的移位指令所影响。
● AC:当低半字节加法运算的结果产生进位,或高半字节减法运算的结果没有
产生借位时,AC 被置位,否则 AC 被清零。
● Z: 当算术或逻辑运算结果是零时,Z 被置位,否则 Z 被清零。
● OV:当运算结果高两位的进位状态异或结果为 1 时,OV 被置位,否则 OV
被清零。
● PDF:系统上电或执行“CLR WDT”指令会清零 PDF,而执行“HALT”指
令则会置位 PDF。
Rev. 1.50
26
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
● TO:系统上电或执行“CLR WDT”或“HALT”指令会清零 TO,而当 WDT
溢出则会置位 TO。
另外,当进入一个中断程序或执行子程序调用时,状态寄存器不会自动压入到
堆栈保存。假如状态寄存器的内容是重要的且子程序可能改变状态寄存器的话,
则需谨慎的去做正确的储存。
STATUS 寄存器
Bit
Name
R/W
POR
7
SC
R/W
×
6
CZ
R/W
×
5
TO
R
0
4
PDF
R
0
3
OV
R/W
×
2
Z
R/W
×
1
AC
R/W
×
0
C
R/W
×
“×”为未知
Rev. 1.50
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 也受循环移位指令的影响。
27
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
EEPROM 数据寄存器
HT67F489 内建 EEPROM 数据存储器。“Electrically Erasable Programmable Read
Only Memory”为电可擦可编程只读存储器,由于其非易失的存储结构,即使
在电源掉电的情况下存储器内的数据仍然保存完好。这种存储区扩展了 ROM
空间,对设计者来说增加了许多新的应用机会。EEPROM 可以用来存储产品编
号、校准值、用户特定数据、系统配置参数或其它产品信息等。EEPROM 的数
据读取和写入过程也会变的更简单。
EEPROM 数据寄存器结构
EEPROM 数据寄存器容量为 64×8。由于映射方式与程序存储器和数据存储器不
同,因此不能像其它类型的存储器一样寻址。使用 Section 0 中的一个地址寄存
器和一个数据寄存器以及 Section 1 中的一个控制寄存器,可以实现对 EEPROM
的单字节读写操作。
EEPROM 寄存器
有三个寄存器控制内部 EEPROM 数据存储器总的操作。地址寄存器 EEA、数
据寄存器 EED 及控制寄存器 EEC。EEA 和 EED 位于 Section 0 中,它们能像其
它特殊功能寄存器一样直接被访问。EEC 位于 Section 1 中,不能被直接访问,
仅能通过 MP1L/MP1H 和 IAR1 进行间接读取或写入。由于 EEC 控制寄存器位
于 Section 1 中的“40H”,在 EEC 寄存器上的任何操作被执行前,MP1L 必须
先设为“40H”,MP1H 被设为“01H”。
EEPROM 寄存器列表
Name
EEA
EED
EEC
Bit
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
7
—
—
—
6
—
—
—
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
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
EEA 寄存器
Bit
Name
R/W
POR
Bit 7~6
未定义,读为“0”
Bit 5~0
数据 EEPROM 地址
数据 EEPROM 地址 Bit 5~Bit 0
EED 寄存器
Bit
Name
R/W
POR
Bit 7~0
Rev. 1.50
7
D7
R/W
0
6
D6
R/W
0
5
D5
R/W
0
EEPROM 数据
EEPROM 数据 bit 7~bit 0
28
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
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 中读取数据,EEPROM 中读取数据的地址要先放入 EEA 寄存器
中。EEC 寄存器中的读使能位 RDEN 先置为高以使能读功能。若 EEC 寄存器
中的 RD 位被置高,一个读周期将开始。若 RD 位已置为高而 RDEN 位还未被
设置则不能开始读操作。若读周期结束,RD 位将自动清除为“0”,数据可以
从 EED 寄存器中读取。数据在其它读或写操作执行前将一直保留在 EED 寄存
器中。应用程序将轮询 RD 位以确定数据可以有效地被读取。
写数据到 EEPROM
写数据至 EEPROM, EEPROM 中写入数据的地址要先放入 EEA 寄存器中,写
入的数据需存入 EED 寄存器中。EEC 寄存器中的写使能位 WREN 先置为高以
使能写功能,若 EEC 寄存器中 WR 位被置为高,一个内部写周期将开始。这两
个指令必须连续进行。在进行写操作前,要先将总的中断控制位 EMI 清零,当
写周期开始后再将其置为 1。需注意的是若 WR 位已置为高而 WREN 位还未被
设置则不能开始写操作。由于控制 EEPROM 写周期是一个内部时钟,与单片
机的系统时钟异步,所以数据写入 EEPROM 的时间将有所延迟。可通过轮询
EEC 寄存器中的 WR 位或判断 EEPROM 中断以侦测写周期是否完成。若写周
期完成,WR 位将自动清除为“0”,通知用户数据已写入 EEPROM。因此,
应用程序将轮询 WR 位以确定写周期是否结束。
Rev. 1.50
29
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
写保护
防止误写入的写保护有以下几种。单片机上电后控制寄存器中的写使能位将被
清除以杜绝任何写入操作。上电后存储器指针对,MP1L/MP1H 和 MP2L/MP2H
将重置为“0”,这意味着数据存储区 Section 0 被选中。由于 EEPROM 控制寄
存器位于 Section 1 中,这增加了对写操作的保护措施。在正常程序操作中确保
控制寄存器中的写使能位被清除将能防止不正确的写操作。
EEPROM 中断
EEPROM 写周期结束后将产生 EEPROM 写中断,需先通过设置相关中断寄存
器的 DEE 位使能 EEPROM 中断。由于 EEPROM 中断包含在多功能中断中,相
应的多功能中断使能位需被设置。当 EEPROM 写周期结束,DEF 请求标志位
及其相关多功能中断请求标志位将被置位。若总中断、EEPROM 中断和多功能
中断使能且堆栈未满的情况下将跳转到相应的多功能中断向量中执行。当中断
被响应,只有多功能中断标志位将自动复位,而 EEPROM 中断标志将通过应用
程序手动复位。更多细节将在中断章节讲述。
编程注意事项
必须注意的是数据不会无意写入 EEPROM。在没有写动作时写使能位被正常清
零可以增强保护功能。MP1H/MP2H 也可以正常清零以阻止进入 EEPROM 控制
寄存器存在的 Section 1。 尽管不是必须的,写一个简单的读回程序以检查新写
入的数据是否正确还是应该考虑的。
写数据时,WREN 位置为“1”后,WR 须立即设置为高,以确保正确地执行写
周期。写周期执行前总中断位 EMI 应先清零,写周期开始执行后再将此位重新
使能。
Rev. 1.50
30
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
程序举例
从 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
; user defined address
; setup memory pointer MP1L
; MP1 points to EEC register
; setup Section Pointer 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
写数据到 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.50
; user defined address
; user defined data
; setup memory pointer MP1L
; MP1 points to EEC register
; setup Section Pointer 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
31
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
振荡器
不同的振荡器选择可以让使用者在不同的应用需求中实现更大范围的功能。振
荡器的灵活性使得在速度和功耗方面可以达到最优化。振荡器选择是通过寄存
器共同完成的。
振荡器概述
振荡器除了作为系统时钟源,还作为看门狗定时器和时基功能的时钟源。外部振
荡器需要一些外围器件,而集成的两个内部振荡器不需要任何外围器件。它们
提供高速和低速系统振荡器具有较宽的频率范围。较高频率的振荡器提供更高
的性能,但要求有更高的功率,反之亦然。动态切换快慢系统时钟的能力使单
片机具有灵活而优化的性能 / 功耗比,此特性对功耗敏感的应用领域尤为重要。
类型
内部高速 RC
内部低速 RC
外部高速晶振
外部低速晶振
名称
HIRC
LIRC
HXT
LXT
频率
8MHz
32kHz
400kHz~16MHz
32.768kHz
引脚
—
—
OSC1/OSC2
XT1/XT2
振荡器类型
系统时钟配置
该系列单片机有三个个系统振荡器,包括一个高速振荡器和两个低速振荡器。
高速振荡器为内部 8MHz RC 振荡器。两个低速振荡器包括外部 32.768kHz 振荡
器和内部 32kHz 振荡器。使用高速或低速振荡器作为系统时钟的选择是通过设
置 SMOD 寄存器中的 HLCLK 位及 CKS2~CKS0 位决定的,系统时钟可动态选
择。低速或高速系统时钟频率由 SMOD 寄存器的 HLCLK 位及 CKS2~CKS0 位
决定的。请注意,两个振荡器必须做出选择,即一个高速和一个低速振荡器。
系统时钟配置选项
Rev. 1.50
32
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
外部晶体 / 陶瓷振荡器 – HXT
外部高频晶体 / 陶瓷振荡器可通过配置选项选择。对于晶体振荡器,只要简单
地将晶体连接至 OSC1 和 OSC2,则会产生振荡所需的相移及反馈,而不需其
它外部器件。为保证某些低频率的晶体振荡和陶瓷谐振器的振荡频率更精准,
建议连接两个小容量电容 C1 和 C2 到 VSS,具体数值与客户选择的晶体 / 陶瓷
晶振有关。根据外部晶振频率的高 ( ≥ 1MHz) 或低 ( 0
Counter cleared by CCRP value
CCRP > 0
Counter
Restart
Resume
CCRP
Pause
Stop
CCRA
Time
TnON
TnPAU
TnPOL
CCRP Int.
Flag TnPF
CCRA Int.
Flag TnAF
TM O/P Pin
Output pin set to
initial Level Low
if TnOC=0
Output not affected by TnAF
flag. Remains High until reset
by TnON bit
Output Toggle with
TnAF flag
Here TnIO [1:0] = 11
Toggle Output select
Note TnIO [1:0] = 10
Active High Output select
Output Inverts
when TnPOL is high
Output Pin
Reset to Initial value
Output controlled by
other pin-shared function
比较匹配输出模式 -- TnCCLR=0
注:1. TnCCLR=0,比较器 P 匹配将清除计数器
2. TM 输出脚仅由 TnAF 标志位控制
3. 在 TnON 上升沿 TM 输出脚复位至初始值
4. n=0
Rev. 1.50
66
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Counter Value
TnCCLR = 1; TnM [1:0] = 00
CCRA = 0
Counter overflow
CCRA > 0 Counter cleared by CCRA value
0x3FF
CCRA=0
Resume
CCRA
Pause
Stop
Counter Restart
CCRP
Time
TnON
TnPAU
TnPOL
No TnAF flag
generated on
CCRA overflow
CCRA Int.
Flag TnAF
CCRP Int.
Flag TnPF
TnPF not
generated
Output does
not change
TM O/P Pin
Output pin set to
initial Level Low
if TnOC=0
Output not affected by
TnAF flag. Remains High
until reset by TnON bit
Output Toggle with
TnAF flag
Here TnIO [1:0] = 11
Toggle Output select
Note TnIO [1:0] = 10
Active High Output select
Output Inverts
when TnPOL is high
Output Pin
Reset to Initial value
Output controlled by
other pin-shared function
比较匹配输出模式 -- TnCCLR=1
注:1. TnCCLR=1,比较器 A 匹配将清除计数器
2. TM 输出脚仅由 TnAF 标志位控制
3. 在 TnON 上升沿 TM 输出脚复位至初始值
4. 当 TnCCLR=1 时,不会产生 TnPF 标志
5. n=0
Rev. 1.50
67
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
定时 / 计数器模式
为使 TM 工作在此模式,TM0C1 寄存器中的 T0M1 和 T0M0 位需要设置为“11”。
定时 / 计数器模式与比较输出模式操作方式相同,并产生同样的中断请求标志。
不同的是,在定时 / 计数器模式下 TM 输出脚未使用。因此,比较匹配输出模
式中的描述和时序图可以适用于此功能。该模式中未使用的 TM 输出脚用作普
通 I/O 脚或其它功能。
PWM 输出模式
为 使 TM 工 作 在 此 模 式,TM0C1 寄 存 器 中 的 T0M1 和 T0M0 位 需 要 设 置 为
“10”,且 T0IO1 和 T0IO0 位也需要设置为“10”。TM 的 PWM 功能在马达
控制、加热控制、照明控制等方面十分有用。给 TM 输出脚提供一个频率固定
但占空比可调的信号,将产生一个有效值等于 DC 均方根的 AC 方波。
由于 PWM 波形的周期和占空比可调,其波形的选择就极其灵活。在 PWM 模
式中,T0CCLR 位不影响 PWM 周期。CCRA 和 CCRP 寄存器决定 PWM 波形,
一个用来清除内部计数器并控制 PWM 波形的频率,另一个用来控制占空比。
所以 PWM 波形由 CCRA 和 CCRP 寄存器共同决定。
当比较器 A 或比较器 P 比较匹配发生时,将产生 CCRA 或 CCRP 中断标志。
TM0C1 寄存器中的 T0OC 位决定 PWM 波形的极性,T0IO1 和 T0IO0 位使能
PWM 输出或将 TM 输出脚置为逻辑高或逻辑低。T0POL 位对 PWM 输出波形
的极性取反。
● 10-bit PTM, PWM 模式 , 边沿对齐模式
CCRP
Period
Duty
1~1023
1~1023 clocks
0
1024 clocks
CCRA
若 fSYS=8MHz,TM 时钟源选择 fSYS/4,CCRP=512,CCRA=128,
PTM PWM 输出频率 =(fSYS/4)/512=fSYS/2048=3.90625kHz,duty=128/512=25%
若由 CCRA 寄存器定义的 Duty 值等于或大于 Period 值,PWM 输出占空比为
100%。
Rev. 1.50
68
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Counter Value
TnM [1:0] = 10
Counter cleared
by CCRP
Counter Reset when
TnON returns high
CCRP
Pause Resume
CCRA
Counter Stop if
TnON bit low
Time
TnON
TnPAU
TnPOL
CCRA Int.
Flag TnAF
CCRP Int.
Flag TnPF
TM O/P Pin
(TnOC=1)
TM O/P Pin
(TnOC=0)
PWM Duty Cycle
set by CCRA
PWM Period
set by CCRP
PWM resumes
operation
Output controlled by
Output Inverts
other pin-shared function
when TnPOL = 1
PWM 模式
注:1. CCRP 清除计数器
2. 计数器清零并设置 PWM 周期
3. 当 TnIO1,TnIO0=00 或 01,PWM 功能不变
4. TnCCLR 位不影响 PWM 操作
5. n=0
Rev. 1.50
69
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
单脉冲模式
为 使 TM 工 作 在 此 模 式,TM0C1 寄 存 器 中 的 T0M1 和 T0M0 位 需 要 设 置 为
“10”,同时 T0IO1 和 T0IO0 位需要设置为“11”。正如模式名所言,单脉冲
输出模式,在 TM 输出脚将产生一个脉冲输出。
脉冲输出可以通过应用程序控制 T0ON 位由低到高的转变来触发。而处于单脉
冲模式时,T0ON 位在 TCK0 脚自动由低转变为高,进而初始化单脉冲输出状
态。当 T0ON 位转变为高电平时,计数器将开始运行,并产生脉冲前沿。当脉
冲有效时 T0ON 位保持高电平。通过应用程序使 T0ON 位清零或比较器 A 比较
匹配发生时,产生脉冲下降沿。
然而,比较器 A 比较匹配发生时,会自动清除 T0ON 位并产生单脉冲输出下降
沿。CCRA 的值通过这种方式控制脉冲宽度。比较器 A 比较匹配发生时,也会
产生 TM 中断。T0ON 位在计数器重启时会发生由低到高的转变,此时计数器
才复位至零。在单脉冲模式中,CCRP 寄存器和 T0CCLR 位未使用。
Leading Edge
Trailing Edge
TnON bit
0
1
TnON bit
1
0
S/W Command
SET“TnON”
or
TCKn Pin
Transition
S/W Command
CLR“TnON”
or
CCRA Compare
Match
TMn Output Pin
Pulse Width = CCRA Value
单脉冲产生示意图 (n=0)
Rev. 1.50
70
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Counter Value
TnM [1:0] = 10 ; TnIO [1:0] = 11
Counter stopped
by CCRA
Counter Reset when
TnON returns high
CCRA
Pause
Counter Stops
by software
Resume
CCRP
Time
TnON
Software
Trigger
Auto. set by
TCKn pin
Cleared by
CCRA match
Software
Trigger
TCKn pin
Software
Trigger
Software
Software Trigger
Clear
TCKn pin
Trigger
TnPAU
TnPOL
No CCRP Interrupts
generated
CCRP Int.
Flag TnPF
CCRA Int.
Flag TnAF
TM O/P Pin
(TnOC=1)
TM O/P Pin
(TnOC=0)
Output Inverts
when TnPOL = 1
Pulse Width
set by CCRA
单脉冲模式
注:1. 通过 CCRA 匹配停止计数器
2. CCRP 未使用
3. 通过 TCKn 脚或设置 TnON 位为高来触发脉冲
4. TCKn 脚有效沿会自动置位 TnON
5. 单脉冲模式中,TnIO[1:0] 需置位“11”,且不能更改
6. n=0
Rev. 1.50
71
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
捕捉输入模式
为 使 TM 工 作 在 此 模 式,TM0C1 寄 存 器 中 的 T0M1 和 T0M0 位 需 要 设 置 为
“01”。此模式使能外部信号捕捉并保存内部计数器当前值,因此被用于诸
如脉冲宽度测量的应用中。TP0_0、TP0_1 或 TCK0 脚上的外部信号,通过设
置 TM0C0 寄存器的 T0CAPTS 位选择。可通过设置 TM0C1 寄存器的 T0IO1 和
T0IO0 位选择有效边沿类型,即上升沿,下降沿或双沿有效。计数器在 T0ON
位由低到高转变时启动并通过应用程序初始化。
当 TP0_0、TP0_1 或 TCK0 引脚出现有效边沿转换时,计数器当前值被锁存到
CCRA 寄存器,并产生 TM 中断。不考虑 TP0_0、TP0_1 或 TCK0 引脚事件,
计数器继续工作直到 T0ON 位发生下降沿跳变。当 CCRP 比较匹配发生时计数
器复位至零;CCRP 的值通过这种方式控制计数器的最大值。当比较器 P CCRP
比较匹配发生时,也会产生 TM 中断。记录 CCRP 溢出中断信号的值可以测量
脉 宽。 通 过 设 置 T0IO1 和 T0IO0 位 选 择 TP0_0、TP0_1 或 TCK0 引 脚 为 上 升
沿、下降沿或双沿有效。不考虑 TP0_0、TP0_1 或 TCK0 引脚引脚事件,如果
T0IO1 和 T0IO0 位设置为高,不会产生捕捉操作,但计数器继续运行。
当 TP0_0、TP0_1 或 TCK0 引脚与其它功能共用,TM 工作在输入捕捉模式时
需多加注意。这是因为如果引脚被设为输出,那么该引脚上的任何电平转变都
可能执行输入捕捉操作。T0CCLR、T0OC 和 T0POL 位在此模式中未使用。
Rev. 1.50
72
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Counter Value
TnM [1:0] = 01
Counter cleared
by CCRP
Counter Counter
Stop
Reset
CCRP
YY
Pause
Resume
XX
Time
TnON
TnPAU
TM capture
pin TPn_x
or TCKn
Active
edge
Active
edge
Active edge
CCRA Int.
Flag TnAF
CCRP Int.
Flag TnPF
CCRA
Value
TnIO [1:0]
Value
XX
00 – Rising edge
YY
01 – Falling edge
XX
10 – Both edges
YY
11 – Disable Capture
捕捉输入模式
注:1. TnM1,TnM0=01 并通过 TnIO1 和 TnIO0 位设置有效边沿
2. TM 捕捉输入脚的有效边沿将计数器的值转移到 CCRA 中
3. TnCCLR 位未使用
4. 无输出功能 -- TnOC 和 TnPOL 位未使用
5. 计数器值由 CCRP 决定,在 CCRP 为“0”时,计数器计数值可达最大
6. n=0
Rev. 1.50
73
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
简易型 TM
虽然简易型 TM 是三种 TM 类型中最简单的形式,但仍然包括三种工作模式,
即比较匹配输出,定时 / 事件计数器和 PWM 输出模式。简易型 TM 也由一个
外部输入脚控制并驱动一个外部输出脚 TPn (n=1~3)。
简易型 TM 方框图 (n=1~3)
简易型 TM 操作
简易型 TM 核心是一个由用户选择的内部或外部时钟源驱动的 10 位向上计数
器,它还包括两个内部比较器即比较器 A 和比较器 P。这两个比较器将计数器
的值与 CCRP 和 CCRA 寄存器中的值进行比较。CCRP 是 3 位的,与计数器的
高 3 位比较;而 CCRA 是 10 位的,与计数器的所有位比较。
通过应用程序改变 10 位计数器值的唯一方法是使 TnON 位发生上升沿跳变清除
计数器。此外,计数器溢出或比较匹配也会自动清除计数器。上述条件发生时,
通常情况会产生 TM 中断信号。简易型 TM 可工作在不同的模式,可由包括来
自输入脚的不同时钟源驱动,也可以控制输出脚。所有工作模式的设定都是通
过设置相关寄存器来实现的。
简易型 TM 寄存器介绍
每个简易型 TM 的所有操作由对应的六个寄存器控制。一对只读寄存器用来存
放 10 位计数器的值,一对读 / 写寄存器存放 10 位 CCRA 的值,剩下两个控制
寄存器设置不同的操作和控制模式以及 CCRP 的 3 个位。
Name
Bit 7
TMnC0 TnPAU
TMnC1 TnM1
TMnDL
D7
TMnDH
—
TMnAL
D7
TMnAH
—
Bit 6
TnCK2
TnM0
D6
—
D6
—
Bit 5
TnCK1
TnIO1
D5
—
D5
—
Bit 4
TnCK0
TnIO0
D4
—
D4
—
Bit 3
TnON
TnOC
D3
—
D3
—
Bit 2
Bit 1
Bit 0
TnRP2 TnRP1 TnRP0
TnPOL TnDPX TnCCLR
D2
D1
D0
—
D9
D8
D2
D1
D0
—
D9
D8
简易型 TM 寄存器列表 (n=1~3)
Rev. 1.50
74
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
TMnC0 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
6
TnPAU TnCK2
R/W
R/W
0
0
5
TnCK1
R/W
0
4
TnCK0
R/W
0
3
TnON
R/W
0
2
TnRP2
R/W
0
1
TnRP1
R/W
0
0
TnRP0
R/W
0
Bit 7
TnPAU:TMn 计数器暂停控制位
0:运行
1:暂停
通过设置此位为高可使计数器暂停,清零此位恢复正常计数器操作。当处于暂
停条件时,TM 保持上电状态并继续耗电。当此位由低到高转换时,计数器将保
留其剩余值,直到此位再次改变为低电平,从此值开始继续计数。
Bit 6~4
TnCK2~TnCK0:选择 TMn 计数时钟位
000:fSYS/4
001:fH
010:fH/16
011:fH/64
100:fTBC
101:fTBC
110:TCKn 上升沿时钟
111:TCKn 下降沿时钟
此三位用于选择 TM 的时钟源。外部引脚时钟源能被选择在上升沿或下降沿有
效。fSYS 是系统时钟,fH 和 fTBC 是其它的内部时钟源,细节方面请参考振荡器章
节。
Bit 3
TnON:TMn 计数器 On/Off 控制位
0:Off
1:On
此位控制 TM 的总开关功能。设置此位为高则使能计数器使其运行,清零此位
则除能 TM。清零此位将停止计数器并关闭 TM 减少耗电。当此位由低到高转换
时,内部计数器值将复位为零;当此位由高到低转换时,内部计数器将保持其
剩余值。
若 TM 处于比较匹配输出模式时 ( 通过 TnOC 位指定 ),当 TnON 位经由低到高
的转换时,TM 输出脚将重置其初始值。
Bit 2~0
TnRP2~TnRP0:TMn CCRP 3-bit 寄存器,对应于 TMn 计数器 bit 9~bit 7 比较
器 P 匹配周期
000:1024 个 TMn 时钟周期
001:128 个 TMn 时钟周期
010:256 个 TMn 时钟周期
011:384 个 TMn 时钟周期
100:512 个 TMn 时钟周期
101:640 个 TMn 时钟周期
110:768 个 TMn 时钟周期
111:896 个 TMn 时钟周期
此三位设定内部 CCRP 3-bit 寄存器的值,然后与内部计数器的高三位进行比较。
如果 TnCCLR 位设定为 0 时,该比较结果用于清除内部计数器。TnCCLR 位设
为低,内部计数器在比较器 P 比较匹配发生时被重置;由于 CCRP 只与计数器
高三位比较,比较结果是 128 时钟周期的倍数。CCRP 被清零时,实际上会使
得计数器在最大值溢出。
75
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
TMnC1 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
TnM1
R/W
0
6
TnM0
R/W
0
5
TnIO1
R/W
0
4
TnIO0
R/W
0
3
TnOC
R/W
0
2
1
0
TnPOL TnDPX TnCCLR
R/W
R/W
R/W
0
0
0
Bit 7~6
TnM1~TnM0:选择 TMn 工作模式位
00:比较匹配输出模式
01:未定义
10:PWM 模式
11:定时 / 计数器模式
这两位设置 TM 需要的工作模式。为了确保操作可靠,TM 应在 TnM1 和 TnM0
位有任何改变前先关掉。在定时 / 计数器模式,TM 输出脚控制必须除能。
Bit 5~4
TnIO1~TnIO0:选择 TPn 输出功能位
比较匹配输出模式
00:无变化
01:输出低
10:输出高
11:输出翻转
PWM 模式
00:强制无效状态
01:强制有效状态
10:PWM 输出
11:未定义
定时 / 计数器模式
未使用
此两位用于决定在一定条件达到时 TM 输出脚如何改变状态。这两位值的选择
决定 TM 运行在哪种模式下。
在比较匹配输出模式下,TnIO1 和 TnIO0 位决定当比较器 A 比较匹配输出发生
时 TM 输出脚如何改变状态。当比较器 A 比较匹配输出发生时 TM 输出脚能设
为切换高、切换低或翻转当前状态。若此两位同时为 0 时,这个输出将不会改
变。TM 输出脚的初始值通过 TMnC1 寄存器的 TnOC 位设置取得。注意,由
TnIO1 和 TnIO0 位得到的输出电平必须与通过 TnOC 位设置的初始值不同,否
则当比较匹配发生时,TM 输出脚将不会发生变化。在 TM 输出脚改变状态后,
通过 TnON 位由低到高电平的转换复位至初始值。
在 PWM 模式,TnIO1 和 TnIO0 用于决定比较匹配条件发生时怎样改变 TM 输
出脚的状态。PWM 输出功能通过这两位的变化进行更新。仅在 TMn 关闭时改
变 TnIO1 和 TnIO0 位的值是很有必要的。若在 TM 运行时改变 TnIO1 和 TnIO0
的值,PWM 输出的值是无法预料的。
Bit 3
TnOC:TPn 输出控制位
比较匹配输出模式
0:初始低
1:初始高
PWM 模式
0:低有效
1:高有效
这是 TM 输出脚输出控制位。它取决于 TM 此时正运行于比较匹配输出模式还
是 PWM 模式。若 TM 处于定时 / 计数器模式,则其不受影响。在比较匹配输出
模式时,比较匹配发生前其决定 TM 输出脚的逻辑电平值。在 PWM 模式时,
其决定 PWM 信号是高有效还是低有效。
76
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Bit 2
TnPOL:TPn 输出极性控制位
0:同相
1:反相
此位控制 TPn 输出脚的极性。此位为高时 TM 输出脚反相,为低时 TM 输出脚
同相。若 TM 处于定时 / 计数器模式时其不受影响。
Bit 1
TnDPX:TMn PWM 周期 / 占空比控制位
0:CCRP - 周期;CCRA - 占空比
1:CCRP - 占空比;CCRA - 周期
此位决定 CCRA 与 CCRP 寄存器哪个被用于 PWM 波形的周期和占空比控制。
Bit 0
TnCCLR:选择 TMn 计数器清零条件位
0:TMn 比较器 P 匹配
1:TMn 比较器 A 匹配
此位用于选择清除计数器的方法。简易型 TM 包括两个比较器 - 比较器 A 和比
较器 P。这两个比较器每个都可以用作清除内部计数器。TnCCLR 位设为高,
计数器在比较器 A 比较匹配发生时被清除;此位设为低,计数器在比较器 P 比
较匹配发生或计数器溢出时被清除。计数器溢出清除的方法仅在 CCRP 被清除
为 0 时才能生效。TnCCLR 位在 PWM 模式时未使用。
TMnDL 寄存器
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
2
—
—
—
1
D9
R
0
0
D8
R
0
2
D2
R/W
0
1
D1
R/W
0
0
D0
R/W
0
TMnDL:TMn 计数器低字节寄存器 bit 7~bit 0
TMn 10-bit 计数器 bit 7~bit 0
TMnDH 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
Bit 7~2
未定义,读为“0”
Bit 1~0
TMnDH:TMn 计数器高字节寄存器 bit 1~bit 0
TMn 10-bit 计数器 bit 9~bit 8
TMnAL 寄存器
Bit
Name
R/W
POR
Bit 7~0
Rev. 1.50
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
TMnAL:TMn CCRA 低字节寄存器 bit 7~bit 0
TMn 10-bit CCRA bit 7~bit 0
77
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
TMnAH 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
Bit 7~2
未定义,读为“0”
Bit 1~0
TMnAH:TMn CCRA 高字节寄存器 bit 1~bit 0
TMn 10-bit CCRA bit 9~bit 8
2
—
—
—
1
D9
R/W
0
0
D8
R/W
0
简易型 TM 工作模式
简易型 TM 有三种工作模式,即比较匹配输出模式,PWM 模式或定时 / 计数器
模式。通过设置 TMnC1 寄存器的 TnM1 和 TnM0 位选择任意工作模式。
比较匹配输出模式
为 使 TM 工 作 在 此 模 式,TMnC1 寄 存 器 中 的 TnM1 和 TnM0 位 需 要 设 置 为
“00”。当工作在该模式,一旦计数器使能并开始计数,有三种方法来清零,
分别是:计数器溢出,比较器 A 比较匹配发生和比较器 P 比较匹配发生。当
TnCCLR 位为低,有两种方法清除计数器。一种是比较器 P 比较匹配发生,另
一种是 CCRP 所有位设置为零并使得计数器溢出。此时,比较器 A 和比较器 P
的请求标志位 TnAF 和 TnPF 将分别置起。
如果 TMnC1 寄存器的 TnCCLR 位设置为高,当比较器 A 比较匹配发生时计数
器被清零。此时,即使 CCRP 寄存器的值小于 CCRA 寄存器的值,仅 TnAF 中
断请求标志产生。所以当 TnCCLR 为高时,不产生 TnPF 中断请求标志。如果
CCRA 被清零,当计数达到最大值 3FFH 时,计数器溢出,而此时不产生 TnAF
请求标志。
正如该模式名所言,当比较匹配发生后,TM 输出脚状态改变。当比较器 A 比
较匹配发生后 TnAF 标志产生时,TM 输出脚状态改变。比较器 P 比较匹配发
生时产生的 TnPF 标志不影响 TM 输出脚。TM 输出脚状态改变方式由 TMnC1
寄 存 器 中 TnIO1 和 TnIO0 位 决 定。 当 比 较 器 A 比 较 匹 配 发 生 时,TnIO1 和
TnIO0 位决定 TM 输出脚输出高,低或翻转当前状态。TM 输出脚初始值,既
可以通过 TnON 位由低到高电平的变化设置,也可以由 TnOC 位设置。注意,
若 TnIO1 和 TnIO0 位同时为 0 时,引脚输出不变。
Rev. 1.50
78
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Counter Value
Counter overflow
CCRP=0
0x3FF
TnCCLR = 0; TnM [1:0] = 00
CCRP > 0
Counter cleared by CCRP value
CCRP > 0
Counter
Restart
Resume
CCRP
Pause
Stop
CCRA
Time
TnON
TnPAU
TnPOL
CCRP Int.
Flag TnPF
CCRA Int.
Flag TnAF
TM O/P Pin
Output pin set to
initial Level Low
if TnOC=0
Output not affected by TnAF
flag. Remains High until reset
by TnON bit
Output Toggle with
TnAF flag
Here TnIO [1:0] = 11
Toggle Output select
Note TnIO [1:0] = 10
Active High Output select
Output Inverts
when TnPOL is high
Output Pin
Reset to Initial value
Output controlled by
other pin-shared function
比较匹配输出模式 -- TnCCLR=0
注:1. TnCCLR=0,比较器 P 匹配将清除计数器
2. TM 输出脚仅由 TnAF 标志位控制
3. 在 TnON 上升沿 TM 输出脚复位至初始值
4. n=1~3
Rev. 1.50
79
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Counter Value
TnCCLR = 1; TnM [1:0] = 00
CCRA = 0
Counter overflow
CCRA > 0 Counter cleared by CCRA value
0x3FF
CCRA=0
Resume
CCRA
Pause
Stop
Counter Restart
CCRP
Time
TnON
TnPAU
TnPOL
No TnAF flag
generated on
CCRA overflow
CCRA Int.
Flag TnAF
CCRP Int.
Flag TnPF
TnPF not
generated
Output does
not change
TM O/P Pin
Output pin set to
initial Level Low
if TnOC=0
Output not affected by
TnAF flag. Remains High
until reset by TnON bit
Output Toggle with
TnAF flag
Here TnIO [1:0] = 11
Toggle Output select
Note TnIO [1:0] = 10
Active High Output select
Output Inverts
when TnPOL is high
Output Pin
Reset to Initial value
Output controlled by
other pin-shared function
比较匹配输出模式 -- TnCCLR=1
注:1. TnCCLR=1,比较器 A 匹配将清除计数器
2. TM 输出脚仅由 TnAF 标志位控制
3. 在 TnON 上升沿 TM 输出脚复位至初始值
4. 当 TnCCLR=1 时,TnPF 标志位不会产生
5. n=1~3
Rev. 1.50
80
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
定时 / 计数器模式
为使 TM 工作在此模式,TMnC1 寄存器中的 TnM1 和 TnM0 位需要设置为“11”。
定时 / 计数器模式与比较输出模式操作方式相同,并产生同样的中断请求标志。
不同的是,在定时 / 计数器模式下 TM 输出脚未使用。因此,比较匹配输出模
式中的描述和时序图可以适用于此功能。该模式中未使用的 TM 输出脚用作普
通 I/O 脚或其它功能。
PWM 输出模式
为 使 TM 工 作 在 此 模 式,TMnC1 寄 存 器 中 的 TnM1 和 TnM0 位 需 要 设 置 为
“10”。TM 的 PWM 功能在马达控制,加热控制,照明控制等方面十分有用。
给 TM 输出脚提供一个频率固定但占空比可调的信号,将产生一个有效值等于
DC 均方根的 AC 方波。
由于 PWM 波形的周期和占空比可调,其波形的选择就极其灵活。在 PWM 模
式中,TnCCLR 位不影响 PWM 操作。CCRA 和 CCRP 寄存器决定 PWM 波形,
一个用来清除内部计数器并控制 PWM 波形的频率,另一个用来控制占空比。
哪个寄存器控制频率或占空比取决于 TMnC1 寄存器的 TnDPX 位。所以 PWM
波形频率和占空比由 CCRA 和 CCRP 寄存器共同决定。
当比较器 A 或比较器 P 比较匹配发生时,将产生 CCRA 或 CCRP 中断标志。
TMnC1 寄存器中的 TnOC 位决定 PWM 波形的极性,TnIO1 和 TnIO0 位使能
PWM 输出或将 TM 输出脚置为逻辑高或逻辑低。TnPOL 位对 PWM 输出波形
的极性取反。
Rev. 1.50
81
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Counter Value
TnDPX = 0; TnM [1:0] = 10
Counter cleared
by CCRP
Counter Reset when
TnON returns high
CCRP
Pause Resume
Counter Stop if
TnON bit low
CCRA
Time
TnON
TnPAU
TnPOL
CCRA Int.
Flag TnAF
CCRP Int.
Flag TnPF
TM O/P Pin
(TnOC=1)
TM O/P Pin
(TnOC=0)
PWM Duty Cycle
set by CCRA
PWM Period
set by CCRP
PWM resumes
operation
Output controlled by
Output Inverts
other pin-shared function
when TnPOL = 1
PWM 模式 -- TnDPX=0
注:1. TnDPX=0,CCRP 清除计数器
2. 计数器清零并设置 PWM 周期
3. 当 TnIO1,TnIO0=00 或 01,PWM 功能不变
4. TnCCLR 位不影响 PWM 操作
5. n=1~3
Rev. 1.50
82
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Counter Value
TnDPX = 1; TnM [1:0] = 10
Counter cleared
by CCRA
Counter Reset when
TnON returns high
CCRA
Pause Resume
Counter Stop if
TnON bit low
CCRP
Time
TnON
TnPAU
TnPOL
CCRP Int.
Flag TnPF
CCRA Int.
Flag TnAF
TM O/P Pin
(TnOC=1)
TM O/P Pin
(TnOC=0)
PWM Duty Cycle
set by CCRP
PWM Period
set by CCRA
PWM resumes
operation
Output controlled by
Output Inverts
other pin-shared function
when TnPOL = 1
PWM 模式 -- TnDPX=1
注:1. TnDPX=1,CCRA 清除计数器
2. 计数器清零并设置 PWM 周期
3. 当 TnIO1,TnIO0=00 或 01,PWM 功能不变
4. TnCCLR 位不影响 PWM 操作
5. n=1~3
Rev. 1.50
83
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
A/D 转换器
对于大多数电子系统而言,处理现实世界的模拟信号是共同的需求。为了完全
由单片机来处理这些信号,首先需要通过 A/D 转换器将模拟信号转换成数字信
号。将 A/D 转换器电路集成入单片机,可有效的减少外部器件,随之而来,具
有降低成本和减少器件空间需求的优势。
A/D 简介
该系列单片机都包含一个多通道的 A/D 转换器,它们可以直接接入外部模拟信
号(来自传感器或其它控制信号)并直接将这些信号转换成 12 位的数字量。
输入通道数
10
A/D 通道选择位
ACS4, ACS3~ACS0
输入引脚
AN0~AN9
下图显示了 A/D 转换器内部结构和相关的寄存器。
A/D 转换器结构
A/D 转换寄存器介绍
A/D 转换器的所有工作由五个寄存器控制。一对只读寄存器来存放 12 位 ADC
数据的值。剩下三个控制寄存器设置 A/D 转换器的操作和控制功能。
寄存器名称
ADRL(ADRFS=0)
ADRL(ADRFS=1)
ADRH(ADRFS=0)
ADRH(ADRFS=1)
ADCR0
ADCR1
ACERL
ACERH
位
7
6
5
4
3
D3
D2
D1
D0
—
D7
D6
D5
D4
D3
D11
D10
D9
D8
D7
—
—
—
—
D11
START EOCB ADOFF ADRFS ACS3
ACS4 VBGEN
—
VREFS
—
ACE7
ACE6
ACE5
ACE4
ACE3
—
—
—
—
—
2
1
0
—
—
—
D2
D1
D0
D6
D5
D4
D10
D9
D8
ACS2
ACS1
ACS0
ADCK2 ADCK1 ADCK0
ACE2
ACE1
ACE0
—
ACE9
ACE8
A/D 转换寄存器列表
Rev. 1.50
84
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
A/D 转换器数据寄存器 – ADRL,ADRH
对于具有 12 位 A/D 转换器的单片机,需要两个数据寄存器存放转换结果,一
个高字节寄存器 ADRH 和一个低字节寄存器 ADRL。在 A/D 转换完毕后,单
片机可以直接读取这些寄存器以获得转换结果。由于寄存器只使用了 16 位中
的 12 位,其数据存储格式由 ADCR0 寄存器的 ADRFS 位控制,如下表所示。
D0~D11 是 A/D 换转数据结果位。未使用的位读为“0”。
ADRFS
0
1
ADRH
ADRL
7
6
5 4
3
2
1 0 7 6 5 4 3 2 1 0
D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0
0
0
0 0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
A/D 数据寄存器
A/D 转换控制寄存器 – ADCR0,ADCR1,ACERL,ACERH
寄存器 ADCR0、ADCR1、ACERL 和 ACERH 用来控制 A/D 转换器的功能和操
作。这些 8 位的寄存器定义包括选择连接至内部 A/D 转换器的模拟通道,数字
化数据格式,A/D 时钟源,并控制和监视 A/D 转换器的开始和转换结束状态。
寄存器 ADCR0 的 ACS3~ACS0 位和 ADCR1 的 ACS4 位定义 A/D 转换器输入
通道编号。由于每个单片机只包含一个实际的模数转换电路,因此这 10 个模拟
输入中的每一个都需要分别被发送到转换器。ACS4~ACS0 位的功能决定选择
哪个模拟输入通道或內部 VBG 被连接到内部 A/D 转换器。
ACERL 控 制 寄 存 器 中 的 ACE7~ACE0 位 以 及 ACERH 控 制 寄 存 器 中 的
ACE9~ACE8 位用来定义 PB 和 PE 口中的哪些引脚为 A/D 转换器的模拟输入,
哪些引脚不作为 A/D 转换输入。相应位设为高将选择 A/D 输入功能,清零将选
择 I/O 或其它引脚共用功能。当引脚作为 A/D 输入时,其原来的 I/O 或其它引
脚共用功能消失,此外,其内部上拉电阻也将自动断开。
Rev. 1.50
85
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
ADCR0 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
START
R/W
0
6
EOCB
R
1
5
4
ADOFF ADRFS
R/W
R/W
1
0
3
ACS3
R/W
0
2
ACS2
R/W
0
1
ACS1
R/W
0
0
ACS0
R/W
0
Bit 7
START:启动 A/D 转换位
0 → 1 → 0:启动
0 → 1:重置 A/D 转换,并且设置 EOCB 为“1”
此位用于初始化 A/D 转换过程。通常此位为低,但如果设为高再被清零,将初
始化 A/D 转换过程。当此位为高,将重置 A/D 转换器。
Bit 6
EOCB:A/D 转换结束标志
0:A/D 转换结束
1:A/D 转换中
此位用于表明 A/D 转换过程的完成。当转换正在进行时,此位为高。
Bit 5
ADOFF :ADC 模块电源开 / 关控制位
0:ADC 模块电源开
1:ADC 模块电源关
此位控制 A/D 内部功能的电源。该位被清零将使能 A/D 转换器。如果该位设为
高将关闭 A/D 转换器以降低功耗。由于 A/D 转换器在不执行转换动作时都会产
生一定的功耗,所以这在电源敏感的电池应用中需要多加注意。
注:1. 建议在进入空闲 / 休眠模式前,设置 ADOFF=1 以减少功耗。
2. ADOFF=1 将关闭 ADC 模块的电源。
Bit 4
ADRFS:ADC 数据格式控制位
0:ADC 数据高字节是 ADRH 的 bit 7~bit 0,低字节是 ADRL 的 bit 7~bit 4
1:ADC 数据高字节是 ADRH 的 bit 3~bit 0,低字节是 ADRL 的 bit 7~bit 0
此位控制存放在两个 A/D 数据寄存器中的 12 位 A/D 转换结果的格式。细节方
面请参考 A/D 数据寄存器章节。
Bit 3~0
ACS3~ACS0:选择 A/D 通道 (ACS4 为“0”) 位
0000:AN0
0001:AN1
0010:AN2
0011:AN3
0100:AN4
0101:AN5
0110:AN6
0111:AN7
1000:AN8
1001~1111:AN9
这四位是 A/D 通道选择控制位。由于只包含一个内部 A/D 转换电路,因此通过
这些位将 10 个 A/D 输入连接到转换器。如果 ADCR1 寄存器中的 ACS4 设为高,
内部 VBG 电路将被连接到内部 A/D 转换器。
86
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
ADCR1 寄存器
Bit
Name
R/W
POR
7
ACS4
R/W
0
6
VBGEN
R/W
0
5
—
—
—
4
VREFS
R/W
0
3
—
—
—
2
1
0
ADCK2 ADCK1 ADCK0
R/W
R/W
R/W
0
0
0
Bit 7
ACS4:选择内部 VBG 作为 ADC 输入控制位
0:除能
1:使能
此位使能 VBG 连接到 A/D 转换器。VBGEN 位必须先被置位使能 VBG 电压能隙
电路被用于 A/D 转换器。当 ACS4 设为高,VBG 带隙电压将连接到 A/D 转换器,
其它 A/D 输入通道断开。
Bit 6
VBGEN:内部 VBG 控制位
0:除能
1:使能
此位控制连接到 A/D 转换器的内部充电泵电路开 / 关功能。当此位设为高,带
隙电压 VBG 连接至 A/D 转换器。如果 VBG 未连接至 A/D 转换器且 LVR/LVD 除能,
带隙参考电压电路自动关闭以减少功耗。当 VBG 打开连接至 A/D 转换器,在 A/D
转换动作执行前,带隙电路稳定需一段时间 tBG。
Bit 5
未定义,读为“0”
Bit 4
VREFS:选择 ADC 参考电压
0:内部 ADC 电源
1:VREF 引脚
此位用于选择 A/D 转换器的参考电压。如果该位设为高,A/D 转换器参考电压
来源于外部 VREF 引脚。如果该位设为低,内部参考电压来源于电源电压 VDD
引脚。
Bit 3
未定义,读为“0”
Bit 2~0
ADCK2~ADCK0:选择 ADC 时钟源
000:fSYS
001:fSYS/2
010:fSYS/4
011:fSYS/8
100:fSYS/16
101:fSYS/32
110:fSYS/64
111:未定义
这三位用于选择 A/D 转换器的时钟源。
间隙参考电压 on/off 真值表
ACS4
×
×
×
VBGEN
0
0
1
LVR/LVD
使能
除能
×
VBG
Off ( 接地 )
Off ( 接地 )
On
间隙参考电压
On
Off
On
×:无关
Rev. 1.50
87
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
ACERL 寄存器
Bit
Name
R/W
POR
7
ACE7
R/W
1
6
ACE6
R/W
1
5
ACE5
R/W
1
4
ACE4
R/W
1
Bit 7
ACE7:定义 PB4 是否为 A/D 输入
0:不是 A/D 输入
1:A/D 输入,AN7
Bit 6
ACE6:定义 PE6 是否为 A/D 输入
0:不是 A/D 输入
1:A/D 输入,AN6
Bit 5
ACE5:定义 PE5 是否为 A/D 输入
0:不是 A/D 输入
1:A/D 输入,AN5
Bit 4
ACE4:定义 PE4 是否为 A/D 输入
0:不是 A/D 输入
1:A/D 输入,AN4
Bit 3
ACE3:定义 PB3 是否为 A/D 输入
0:不是 A/D 输入
1:A/D 输入,AN3
Bit 2
ACE2:定义 PB2 是否为 A/D 输入
0:不是 A/D 输入
1:A/D 输入,AN2
Bit 1
ACE1:定义 PB1 是否为 A/D 输入
0:不是 A/D 输入
1:A/D 输入,AN1
Bit 0
ACE0:定义 PB0 是否为 A/D 输入
0:不是 A/D 输入
1:A/D 输入,AN0
3
ACE3
R/W
1
2
ACE2
R/W
1
1
ACE1
R/W
1
0
ACE0
R/W
1
3
—
—
—
2
—
—
—
1
ACE9
R/W
1
0
ACE8
R/W
1
ACERH 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
Bit 7~2
未定义,读为“0”
Bit 1
ACE9:定义 PB5 是否为 A/D 输入
0:不是 A/D 输入
1:A/D 输入,AN9
Bit 0
ACE8:定义 PE7 是否为 A/D 输入
0:不是 A/D 输入
1:A/D 输入,AN8
88
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
A/D 操作
ADCR0 寄 存 器 中 的 START 位, 用 于 打 开 和 复 位 A/D 转 换 器。 当 单 片 机 设
定此位从逻辑低到逻辑高,然后再到逻辑低,就会开始一个模数转换周期。
当 START 位从逻辑低到逻辑高,但不再回到逻辑低时,ADCR0 寄存器中的
EOCB 位置“1”,复位模数转换器。START 位用于控制内部模数转换器的开
启动作。
ADCR0 寄存器中的 EOCB 位用于表明模数转换过程的完成。在转换周期结束
后,EOCB 位会被单片机自动地置为“0”。此外,也会置位中断控制寄存器内
相应的 A/D 中断请求标志位,如果中断使能,就会产生对应的内部中断信号。
A/D 内部中断信号将引导程序到相应的 A/D 内部中断入口。如果 A/D 内部中断
被禁止,可以让单片机轮询 ADCR0 寄存器中的 EOCB 位,检查此位是否被清
除,以作为另一种侦测 A/D 转换周期结束的方法。
A/D 转换器的时钟源为系统时钟 fSYS 或其分频,而分频系数由 ADCR1 寄存器
中的 ADCK2~ADCK0 位决定。
虽然 A/D 时钟源是由系统时钟 f SYS 和 ADCK2~ADCK0 位决定,但可选择的
最 大 A/D 时 钟 源 则 有 一 些 限 制。 由 于 允 许 的 A/D 时 钟 周 期 tADCK 的 范 围 为
0.5µs~10µs,所以选择系统时钟速度时就必须小心。如果系统时钟速度为 4MHz
时,ADCK2~ADCK0 位不能设为“000”或“110”。必须保证设定的 A/D 转
换时钟周期不小于时钟周期的最小值或大于时钟周期的最大值,否则将会产生
不准确的 A/D 转换值。使用者可以参考下面的表格,被标上星号 * 的数值是不
允许的,因为它们的 A/D 转换时钟周期不在规定的范围内。
fSYS
1MHz
2MHz
4MHz
8MHz
ADCK2,
ADCK1,
ADCK0
=000
(fSYS)
1μs
500ns
250ns*
125ns*
ADCK2,
ADCK1,
ADCK0
=001
(fSYS/2)
2μs
1μs
500ns
250ns*
ADCK2,
ADCK1,
ADCK0
=010
(fSYS/4)
4μs
2μs
1μs
500ns
A/D 时钟周期 (tADCK)
ADCK2, ADCK2, ADCK2,
ADCK1, ADCK1, ADCK1,
ADCK0 ADCK0
ADCK0
=011
=100
=101
(fSYS/8) (fSYS/16) (fSYS/32)
32μs*
8μs
16μs*
4μs
8μs
16μs*
2μs
4μs
8μs
1μs
2μs
4μs
ADCK2,
ADCK1,
ADCK0
=110
(fSYS/64)
64μs*
32μs*
16μs*
8μs
ADCK2,
ADCK1,
ADCK0
=111
未定义
未定义
未定义
未定义
A/D 时钟周期范例
ADCR0 寄存器的 ADOFF 位用于控制 A/D 转换电路电源的开 / 关。该位必须
清零以开启 A/D 转换器电源。即使通过清除 ACERL 寄存器的 ACE7~ACE0 位
以及 ACERH 寄存器中的 ACE9~ACE8 位,选择无引脚作为 A/D 输入,如果
ADOFF 设为“0”,那么仍然会产生功耗。因此当未使用 A/D 转换器功能时,
在功耗敏感的应用中建议设置 ADOFF 为高以减少功耗。
A/D 转换器参考电压来自正电源电压引脚 VDD 或外部参考源引脚 VREF,可通
过 VREFS 位来选择。由于 VREF 引脚与其它功能共用,当 VREFS 设为高,选
择 VREF 引脚功能且其它引脚功能将自动除能。
Rev. 1.50
89
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
A/D 输入引脚
所有的 A/D 模拟输入引脚都与 PB 和 PE 端口的 I/O 引脚及其它功能共用。使用
ACERL 寄存器中的 ACE7~ACE0 位以及 ACERH 寄存器中的 ACE9~ACE8 位,
可以将它们设置为 A/D 转换器模拟输入脚或具有其它功能。如果引脚的对应
位 ACE9~ACE0 设为高,那么该引脚作为 A/D 转换输入且原引脚功能除能。通
过这种方式,引脚的功能可由程序来控制,灵活地切换引脚功能。如果将引脚
设为 A/D 输入,则通过寄存器编程设置的所有上拉电阻会自动断开。请注意,
PBC 和 PEC 端口控制寄存器不需要为使能 A/D 输入而先设定为输入模式,当
ACE9~ACE0 位使能 A/D 输入时,端口控制寄存器的状态将被重置。
A/D 转 换 器 有 自 己 的 参 考 电 压 引 脚 VREF, 而 通 过 设 置 ADCR1 寄 存 器 的
VREFS 位,参考电压也可以选择来自电源电压引脚。模拟输入值一定不能超过
VREF 值。
A/D 输入结构
A/D 转换步骤
下面概述实现 A/D 转换过程的各个步骤。
● 步骤 1
通过 ADCR1 寄存器中的 ADCK2~ADCK0 位,选择所需的 A/D 转换时钟。
● 步骤 2
清零 ADCR0 寄存器中的 ADOFF 位使能 A/D。
● 步骤 3
通过 ADCR1 和 ADCR0 寄存器中的 ACS4~ACS0 位,选择连接至内部 A/D 转
换器的通道。
● 步骤 4
通 过 ACERL 寄 存 器 中 的 ACE7~ACE0 位 以 及 ACERH 寄 存 器 中 的
ACE9~ACE8 位,选择哪些引脚规划为 A/D 输入引脚。
● 步骤 5
如果要使用中断,则中断控制寄存器需要正确地设置,以确保 A/D 转换功
能是激活的。总中断控制位 EMI 需要置位为“1”, 以及 A/D 转换器中断位
ADE 也需要置位为“1”。
● 步骤 6
现在可以通过设定 ADCR0 寄存器中的 START 位从“0”到“1”再回到“0”,
开始模数转换的过程。注意,该位需初始化为“0”。
Rev. 1.50
90
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
● 步骤 7
可以轮询 ADCR0 寄存器中的 EOCB 位,检查模数转换过程是否完成。当此
位成为逻辑低时,表示转换过程已经完成。转换完成后,可读取 A/D 数据寄
存器 ADRL 和 ADRH 获得转换后的值。另一种方法是,若中断使能且堆栈未
满,则程序等待 A/D 中断发生。
注:若使用轮询 ADCR0 寄存器中 EOCB 位的状态的方法来检查转换过程是
否结束时,则中断使能的步骤可以省略。
下列时序图表示模数转换过程中不同阶段的图形与时序。由应用程序控制开始
A/D 转换过程后,单片机的内部硬件就会开始进行转换,在这个过程中,程序
可以继续其它功能。A/D 转换时间为 16tADCK,tADCK 为 A/D 时钟周期。
ADOFF
tON2ST
ADC module ON
off
on
off
A/D sampling time
A/D sampling time
tADCS
START
on
tADCS
EOCB
ACS4~ACS0
00011B
Power-on
Reset
00010B
00000B
Reset A/D
conversion
Reset A/D
conversion
1. Define port configuration
2. Select analog channel
Start of A/D
conversion
End of A/D
conversion
tADC
A/D conversion time
00001B
Start of A/D conversion
Reset A/D
conversion
Start of A/D
conversion
End of A/D
conversion
tADC
A/D conversion time
A/D 转换时序图
编程注意事项
在编程时,如果 A/D 转换器未使用,通过设置 ADCR0 寄存器中的 ADOFF 为高,
关闭 A/D 内部电路以减少电源功耗。此时,不考虑输入脚的模拟电压,内部 A/D
转换器电路不产生功耗。如果 A/D 转换器输入脚用作普通 I/O 脚,必须特别注
意,输入电压为无效逻辑电平也可能增加功耗。
A/D 转换功能
单片机含有一组 12 位的 A/D 转换器,它们转换的最大值可达 FFFH。由于模拟
输入最大值等于 VDD 或 VREF 的电压值,因此每一位可表示 VDD 或 VREF/4096 的
模拟输入值。
1 LSB=(VDD 或 VREF) ÷ 4096
通过下面的等式可估算 A/D 转换器输入电压值:
A/D 输入电压 = A/D 数字输出值 × (VDD 或 VREF) ÷ 4096
下图显示 A/D 转换器模拟输入值和数字输出值之间理想的转换功能。除了数字
化数值 0,其后的数字化数值会在精确点之前的 0.5 LSB 处改变,而数字化数
值的最大值将在 VDD 或 VREF 之前的 1.5 LSB 处改变。
Rev. 1.50
91
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
理想的 A/D 转换功能
A/D 转换应用范例
下面两个范例程序用来说明怎样使用 A/D 转换。第一个范例是轮询 ADCR0 寄
存器中的 EOCB 位来判断 A/D 转换是否完成;第二个范例则使用中断的方式判
断。
范例:使用查询 EOCB 的方式来检测转换结束
clr ADE
mov a,03H
mov ADCR1,a
clr ADOFF
mov a,0Fh
mov ACERL,a
mov a,00h
mov ACERH,a
mov a,01h
mov ADCR0,a
:
start_conversion:
clr START
set START
clr START
polling_EOC:
sz EOCB
jmp polling_EOC
mov a,ADRL
mov ADRL_buffer,a
mov a,ADRH
mov ADRH_buffer,a
:
:
jmp start_conversion
Rev. 1.50
; disable ADC interrupt
; select fSYS/8 as A/D clock and switch off VBG
; setup ACERL to configure pins AN0~AN3
; 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 ADCR0 register EOCB bit to detect end
of A/D conversion
continue polling
read low byte conversion result value
save result to user defined register
read high byte conversion result value
save result to user defined register
; start next a/d conversion
92
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
范例:使用中断的方式来检测转换结束
clr ADE
mov a,03H
mov ADCR1,a
clr ADOFF
mov a,0Fh
mov ACERL,a
mov a,00h
mov ACERH,a
mov a,01h
mov ADCR0,a
Start_conversion:
clr START
set START
clr START
clr ADF
set ADE
set EMI
:
:
ADC_ISR:
mov acc_stack,a
mov a,STATUS
mov status_stack,a
:
:
mov a,ADRL
mov adrl_buffer,a
mov a,ADRH
mov adrh_buffer,a
:
:
EXIT_INT_ISR:
mov a,status_stack
mov STATUS,a
mov a,acc_stack
reti
Rev. 1.50
; disable ADC interrupt
; select fSYS/8 as A/D clock and switch off VBG
; setup ACERL to configure pins AN0~AN3
; 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
93
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
LCD 显示存储器
该 系 列 单 片 机 为 LCD 显 示 提 供 一 个 嵌 入 式 数 据 存 储 区 域。 这 个 区 域 位 于
Section 1 的 80H~93H。区域指针 MP1H 是通用存储器和 LCD 显示存储器之间
切换的开关。当 MP1H 写入“01H”时,任何数据写入 80H~93H 将会影响 LCD
的显示。当 MP1H 设为“01H”外的其它值,任何数据写入 80H~93H 意味着访
问一般意义上的数据存储器。
LCD 显示存储器能被读出和写入,但是只能通过间接寻址模式,并使用 MP1L
和 MP1H 来进行。当数据被写入显示数据区域,这些数据自动地被 LCD 驱动
器读取来产生相应的 LCD 驱动信号。把“1”或“0”写入显示存储器的相应位,
可以控制显示或不显示。下图为显示存储器和 LCD 显示模块之间的映射关系。
b7
b6
b5
b4
b3
b2
b1
b0
180H
SEG1
181H
SEG2
192H
SEG18
193H
SEG19
COM7
COM6
COM5
COM4
COM3
COM2
COM1
COM0
LCD 驱动输出
LCD 驱动器的输出数目为 20×8 或 20×4。LCD 驱动器偏压产生方式为 R 型。
LCD 的时钟频率为 fSUB,来自 LXT 或 LIRC 振荡器。
Rev. 1.50
94
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
LCD 控制寄存器
LCDC0 寄存器
Bit
Name
R/W
POR
7
LCDEN
R/W
0
6
TYPE
R/W
0
5
DTYC
R/W
0
4
BIAS
R/W
0
3
—
—
—
2
RSEL2
R/W
0
1
RSEL1
R/W
0
0
RSEL0
R/W
0
Bit 7
LCDEN:LCD 使能 / 除能控制位
0:除能
1:使能
关于引脚共用的 LCD 引脚和 ADC 引脚,若二者同时使能,LCD 引脚享有更高
优先级。
Bit 6
TYPE:LCD 类型选择位
0:A 型
1:B 型
Bit 5
DTYC:LCD 占空比选择位
0:1/4 占空比 (LCD COM:COM0~COM3)
1:1/8 占空比 (LCD COM:COM0~COM7)
若 DTYC=1,则 COM4~COM7 引脚设为 LCD COM;若 DTYC=0,则 COM4~COM7
为普通 I/O。
Bit 4
BIAS:LCD 偏置选择位
0:1/3 bias
1:1/4 bias
Bit 3
未定义,读为“0”
Bit 2~0
RSEL2~RSEL0:总偏置电阻 (RT) 选择位
000:1170K
001:225K
010:60K
011:快速充电模式,切换至 60K~1170K 之间
1xx:快速充电模式,切换至 60K~225K 之间
注:1/3 偏置电压为 RT/3,1/4 偏置电压为 RT/4。
该系列单片机为 LCD 显示提供低功耗快速充电模式。在快速充电模式下,当
LCD 显示更新即 LCD COM 改变状态时,LCD 偏置电流通过选择 RT=60K 产生,
RT 为总偏置电阻。快速充电后,总偏置电阻切换至 225K/1170K。
Rev. 1.50
95
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
LCDC1 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
QCT2
R/W
0
6
QCT1
R/W
0
5
QCT0
R/W
0
4
—
—
—
Bit 7~5
QCT[2:0]:快速充电时间选择位
000:1 tSUB
001:2 tSUB
010:3 tSUB
011:4 tSUB
100:5 tSUB
101:6 tSUB
110:7 tSUB
111:8 tSUB
tSUB=1/fSUB
Bit 4
未定义,读为“0”
Bit 3~0
VLCD[3:0]:VLCD 选择位
0000:(8/16)×VDD
0001:(9/16)×VDD
0010:(10/16)×VDD
0011:(11/16)×VDD
0100:(12/16)×VDD
0101:(13/16)×VDD
0110:(14/16)×VDD
0111:(15/16)×VDD
1000~1111:(16/16)×VDD
96
3
2
1
0
VLCD3 VLCD2 VLCD1 VLCD0
R/W
R/W
R/W
R/W
0
0
0
0
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
SEGCR0 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
6
5
4
3
2
1
0
SEG7C SEG6C SEG5C SEG4C SEG3C SEG2C SEG1C SEG0C
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
Bit 7
SEG7C:选择 SEG7 或 PD7
0:SEG7
1:PD7
Bit 6
SEG6C:选择 SEG6 或 PD6
0:SEG6
1:PD6
Bit 5
SEG5C:选择 SEG5 或 PD5
0:SEG5
1:PD5
Bit 4
SEG4C:选择 SEG4 或 PD4
0:SEG4
1:PD4
Bit 3
SEG3C:选择 SEG3 或 PD3
0:SEG3
1:PD3
Bit 2
SEG2C:选择 SEG2 或 PD2
0:SEG2
1:PD2
Bit 1
SEG1C:选择 SEG1 或 PD1
0:SEG1
1:PD1
Bit 0
SEG0C:选择 SEG0 或 PD0
0:SEG0
1:PD0
97
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
SEGCR1 寄存器
Bit
Name
R/W
POR
7
6
5
4
3
2
1
0
SEG15C SEG14C SEG13C SEG12C SEG11C SEG10C SEG9C SEG8C
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
Bit 7
SEG15C:选择 SEG15 或 PC7
0:SEG15
1:PC7
Bit 6
SEG14C:选择 SEG14 或 PC6
0:SEG14
1:PC6
Bit 5
SEG13C:选择 SEG13 或 PC5
0:SEG13
1:PC5
Bit 4
SEG12C:选择 SEG12 或 PC4
0:SEG12
1:PC4
Bit 3
SEG11C:选择 SEG11 或 PC3
0:SEG11
1:PC3
Bit 2
SEG10C:选择 SEG10 或 PC2
0:SEG10
1:PC2
Bit 1
SEG9C:选择 SEG9 或 PC1
0:SEG9
1:PC1
Bit 0
SEG8C:选择 SEG8 或 PC0
0:SEG8
1:PC0
SEGCR2 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
Bit 7~4
未定义,读为“0”
Bit 3
SEG19C:选择 SEG19 或 PF7
0:SEG19
1:PF7
Bit 2
SEG18C:选择 SEG18 或 PF6
0:SEG18
1:PF6
Bit 1
SEG17C:选择 SEG17 或 PF5
0:SEG17
1:PF5
Bit 0
SEG16C:选择 SEG16 或 PF4
0:SEG16
1:PF4
98
3
2
1
0
SEG19C SEG18C SEG17C SEG16C
R/W
R/W
R/W
R/W
0
0
0
0
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
LCD 波形时序图
LCD Display Off Mode
COM0 ~ COM3
VA
VB
VC
VSS
All sengment outputs
VA
VB
VC
VSS
Normal Operation Mode
1 Frame
COM0
VA
VB
VC
VSS
COM1
VA
VB
VC
VSS
COM2
VA
VB
VC
VSS
COM3
VA
VB
VC
VSS
All segments are OFF
VA
VB
VC
VSS
COM0 side segments are ON
VA
VB
VC
VSS
COM1 side segments are ON
VA
VB
VC
VSS
COM2 side segments are ON
VA
VB
VC
VSS
COM3 side segments are ON
VA
VB
VC
VSS
COM0,1 side segments are ON
VA
VB
VC
VSS
COM0,2 side segments are ON
VA
VB
VC
VSS
COM0,3 side segments are ON
VA
VB
VC
VSS
(other combinations are omitted)
VA
VB
VC
VSS
All sengments are ON
VA=VLCD,VB=VLCD×2/3,VC=VLCD×1/3,VLCD=VDD
LCD 驱动输出 (1/4 duty, 1/3 bias, A 型 )
Rev. 1.50
99
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
LCD Display Off Mode
COM0 ~ COM3
VA
VB
VC
VSS
All sengment outputs
VA
VB
VC
VSS
Normal Operation Mode
1 Frame
COM0
VA
VB
VC
VSS
COM1
VA
VB
VC
VSS
COM2
VA
VB
VC
VSS
COM3
VA
VB
VC
VSS
All segments are OFF
VA
VB
VC
VSS
COM0 side segments are ON
VA
VB
VC
VSS
COM1 side segments are ON
VA
VB
VC
VSS
COM2 side segments are ON
VA
VB
VC
VSS
COM3 side segments are ON
VA
VB
VC
VSS
COM0,1 side segments are ON
VA
VB
VC
VSS
COM0,2 side segments are ON
VA
VB
VC
VSS
COM0,3 side segments are ON
VA
VB
VC
VSS
(other combinations are omitted)
VA
VB
VC
VSS
All sengments are ON
VA=VLCD,VB=VLCD×2/3,VC=VLCD×1/3,VLCD=VDD
LCD 驱动输出 (1/4 duty, 1/3 bias, B 型 )
Rev. 1.50
100
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
tLCD
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
COM0 VLCD x 2/4
COM0 VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
COM1 VLCD x 2/4
COM1 VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
COM2 VLCD x 2/4
COM2 VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
COM3 VLCD x 2/4
COM3 VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
COM4 VLCD x 2/4
COM4 VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
COM5 VLCD x 2/4
COM5 VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
COM6 VLCD x 2/4
COM6 VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
COM7 VLCD x 2/4
COM7 VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
SEG n VLCD x 2/4
SEG n VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
SEG n+1 VLCD x 2/4
SEG n+1 VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
SEG n+2 VLCD x 2/4
SEG n+2 VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
VLCD
VLCD
VLCD x 3/4
VLCD x 3/4
SEG n+3 VLCD x 2/4
SEG n+3 VLCD x 2/4
VLCD x 1/4
VLCD x 1/4
VSS
VSS
LCD Segment
LCD Segment
State1
State1
(on)
(on)
State2
State2
(off)
(off)
VLCD=VDD
LCD 驱动输出 (1/8 duty, 1/4 bias, A 型 )
Rev. 1.50
101
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
LED 驱动器
该系列单片机具有 LED 驱动功能,通过输出大电流驱动外部 LED 设备。
LED 驱动操作
单片机 LED 大电流输出驱动引脚如下表所示。
单片机型号
HT67F488
LED 驱动引脚
PD0~PD7 ( 大源电流 )
PE0~PE7 ( 大灌电流 )
LED 驱动寄存器
IOHR0 寄存器
Bit
Name
R/W
POR
7
6
5
4
3
2
1
0
IOHS31 IOHS30 IOHS21 IOHS20 IOHS11 IOHS10 IOHS01 IOHS00
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
IOHR1 寄存器
Bit
Name
R/W
POR
7
6
5
4
3
2
1
0
IOHS71 IOHS70 IOHS61 IOHS60 IOHS51 IOHS50 IOHS41 IOHS40
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
IOHSn[1:0]:PDn (n=0~7) 引脚输出 IOH 选择位
00:全源电流驱动
01:1/3 源电流驱动
10:1/4 源电流驱动
11:1/6 源电流驱动
Rev. 1.50
102
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
UART 模块串行接口
UART 模块特性
● 全双工通用异步接收器 / 发送器
● 8 位或 9 位传输格式
● 奇校验、偶校验或无校验
● 1 位或 2 位停止位
● 8 位预分频的波特率发生器
● 奇偶、帧、噪声和溢出检测
● 支持地址匹配中断(最后一位 =1)
● 独立的发送和接收使能
● 2-byte FIFO 接收缓冲器
● 发送和接收中断源:
♦ 发送器为空
♦ 发送器空闲
♦ 接收完成
♦ 接收器溢出
♦ 地址匹配
● UART 传输模块除能时,TX 脚处于高阻抗状态
● UART 接收模块除能时,RX 脚处于高阻抗状态
UART 模块概述
该系列单片机具有一个全双工的异步串行通信接口——UART,可以很方便的
与其它具有串行口的芯片通信。UART 具有许多功能特性,发送或接收串行数
据时,将数据组成一个 8 位或 9 位的数据块,连同数据特征位一并传输。具有
检测数据覆盖或帧错误等功能。UART 功能占用一个内部中断向量,当接收到
数据或数据发送结束,触发 UART 中断。
UART 外部引脚接口
内 部 UART 有 两 个 外 部 引 脚 TX 和 RX, 可 与 外 部 串 行 接 口 进 行 通 信。 若
UARTEN 位和 TXEN/RXEN 位均为“1”时,TX 脚为发送串行数据输出脚,
RX 为接收串行数据输入脚。若 UARTEN 位或 TXEN/RXEN 位为“0”时,TX
和 RX 均为高组态,用作普通 I/O 口或其它引脚共用功能。
Rev. 1.50
103
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
UART 数据传输方案
下图显示了 UART 的整体结构。需要发送的数据首先写入 TXR 寄存器,接着
此数据被传输到发送移位寄存器 TSR 中,然后在波特率发生器的控制下将 TSR
寄存器中数据一位位地移到 TX 引脚上,低位在前。TXR 寄存器被映射到单片
机的数据存储器中,而发送移位寄存器没有实际地址,所以发送移位寄存器不
可直接操作。
数据在波特率发生器的控制下,低位在前高位在后,从外部引脚 RX 进入接收
移位寄存器 RSR。当数据接收完成,数据从接收移位寄存器移入可被用户程序
操作的 RXR 寄存器中。RXR 寄存器被映射到单片机数据存储器中,而接收移
位寄存器没有实际地址,所以接收移位寄存器不可直接操作。需要注意的是,
上述发送寄存器 TXR 和接收寄存器 RXR,其实是共享一个地址的数据寄存器
TXR/RXR 寄存器。
Transmitter Shift Register (TSR)
MSB ………………………… LSB
TX Register (TXR)
TX Pin
RX Pin
Receiver Shift Register (RSR)
MSB ………………………… LSB
Baud Rate
Generator
Data to be transmitted
Buffer 3
Buffer 2
Buffer 1
RX Register (RXR)
Data received
UART 数据传输方案
UART 状态和控制寄存器
与 UART 功 能 相 关 的 有 五 个 寄 存 器 —— 控 制 UART 模 块 整 体 功 能 的
USR、UCR1 和 UCR2 寄存器,控制波特率的 BRG 寄存器,管理发送和接收数
据的数据寄存器 TXR/RXT。
寄存器
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
名称
USR
PERR
NF
FERR OERR RIDLE RXIF TIDLE
PRT
STOPS TXBRK RX8
UCR1 UARTEN BNO PREN
RIE
TIIE
UCR2
TXEN RXEN BRGH ADDEN WAKE
BRG
BRG7
BRG6 BRG5 BRG4 BRG3 BRG2 BRG1
Rev. 1.50
104
Bit0
TXIF
TX8
TEIE
BRG0
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
USR 寄存器
Bit
Name
R/W
POR
Rev. 1.50
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 寄存器再读 RXR 寄存器来清除此位。
Bit 6
NF:噪声干扰标志位
0:没有受到噪声干扰
1:受到噪声干扰
NF 是噪声干扰标志位。若 NF=0,没有受到噪声干扰;若 NF=1,UART 接收数
据时受到噪声干扰。它与 RXIF 在同周期内置位,但不会与溢出标志位同时置
位。可使用软件清除该标志位,即先读取 USR 寄存器再读 RXR 寄存器将清除
此标志位。
Bit 5
FERR:帧错误标志位
0:无帧错误发生
1:有帧错误发生
FREE 是帧错误标志位。若 FREE=0,没有帧错误发生;若 FREE=1,当前的数
据发生了帧错误。可使用软件清除该标志位,即先读取 USR 寄存器再读 RXR
寄存器来清除此位。
Bit 4
OERR:溢出错误标志位
0:无溢出错误发生
1:有溢出错误发生
OERR 是溢出错误标志位,表示接收缓冲器是否溢出。若 OERR=0,没有溢出
错误;若 OERR=1,发生了溢出错误,它将影响下一组数据的接收。可通过软
件清除该标志位,即先读取 USR 寄存器再读 RXR 寄存器将清除此标志位。
Bit 3
RIDLE:接收状态标志位
0:正在接收数据
1:接收器空闲
RIDLE 是接收状态标志位。若 RIDLE=0,正在接收数据;若 RIDLE=1,接收
器空闲。在接收到停止位和下一个数据的起始位之间,RIDLE 被置位,表明
UART 空闲,RX 脚处于逻辑高状态。
Bit 2
RXIF:接收寄存器状态标志位
0:RXR 寄存器为空
1:RXR 寄存器含有有效数据
RXIF 是接收寄存器状态标志位。当 RXIF=0,RXR 寄存器为空;当 RXIF=1,
RXR 寄存器接收到新数据。当数据从移位寄存器加载到 RXR 寄存器中,如果
UCR2 寄存器中的 RIE=1,则会触发中断。当接收数据时检测到一个或多个错误
时,相应的标志位 NF、FERR 或 PERR 会在同一周期内置位。读取 USR 寄存器
再读 RXR 寄存器,如果 RXR 寄存器中没有新的数据,那么将清除 RXIF 标志。
Bit 1
TIDLE:数据发送完成标志位
0:数据传输中
1:无数据传输
TIDLE 是数据发送完成标志位。若 TIDLE=0,数据传输中。当 TXIF=1 且数据
发送完毕或者暂停字被发送时,TIDLE 置位。TIDLE=1,TX 引脚空闲且处于逻
辑高状态。读取 USR 寄存器再写 TXR 寄存器将清除 TIDLE 位。数据字符或暂
停字就绪时,不会产生该标志位。
105
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Bit 0
TXIF:发送数据寄存器 TXR 状态位
0:数据还没有从缓冲器加载到移位寄存器中
1:数据已从缓冲器加载到移位寄存器中 (TXR 数据寄存器为空 )
TXIF 是发送数据寄存器为空标志位。若 TXIF=0,数据还没有从缓冲器加载到
移位寄存器中;若 TXIF=1,数据已从缓冲器中加载到移位寄存器中。读取 USR
存器再写 TXR 寄存器将清除 TXIF。当 TXEN 被置位,由于发送缓冲器未满,
TXIF 也会被置位。
UCR1 寄存器
UCR1 和 UCR2 是 UART 的两个控制寄存器,用来定义各种 UART 功能,例如
UART 的使能与除能、奇偶校验控制和传输数据的长度等等。
详细解释如下:
Bit
7
Name UARTEN
R/W
R/W
POR
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
×
0
TX8
W
0
“×”未知
Rev. 1.50
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,偶校验。
Bit 3
STOPS:停止位的长度选择位
0:有一位停止位
1:有两位停止位
此位用来设置停止位的长度。STOP=1,有两位停止位;STOP=0,只有一位停
止位。
106
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Bit 2
TXBRK:暂停字发送控制位
0:没有暂停字要发送
1:发送暂停字
TXBRK 是暂停字发送控制位。TXBRK=0,没有暂停字要发送,TX 引脚正常操
作;TXBRK=1,将会发送暂停字,发送器将发送逻辑“0”。若 TXBRK 为高,
缓冲器中数据发送完毕后,发送器将至少保持 13 位宽的低电平直至 TXBRK 复
位。
Bit 1
RX8:接收 9-bit 数据传输格式中的第 8 位 ( 只读 )
此位只有在传输数据为 9 位的格式中有效,用来存储接收数据的第 9 位。BNO
是用来控制传输位数是 8 位还是 9 位。
Bit 0
TX8:发送 9-bit 数据传输格式中的第 8 位 ( 只写 )
此位只有在传输数据为 9 位的格式中有效,用来存储发送数据的第 9 位。BNO
是用来控制传输位数是 8 位还是 9 位。
UCR2 寄存器
UCR2 是 UART 的第二个控制寄存器,它的主要功能是控制发送器、接收器以
及各种 UART 中断源的使能或除能。它也可用来控制波特率,使能接收唤醒和
地址侦测。
详细解释如下:
Bit
Name
R/W
POR
Rev. 1.50
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,为低速模式。
Bit 4
ADDEN:地址检测使能位
0:地址检测除能
1:地址检测使能
此位为地址检测使能和除能位。ADDEN=1,地址检测使能,此时数据的第 8 位
(BON=0) 或第 9 位 (BON=1) 为高,那么接到的是地址而非数据。若相应的中断
使能且接收到的值最高位为 1,那么中断请求标志将会被置位,若最高位为 0,
那么将不会产生中断且收到的数据也会被忽略。
107
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Bit 3
WAKE:RX 脚下降沿唤醒功能使能位
0:RX 脚下降沿唤醒功能除能
1:RX 脚下降沿唤醒功能使能
此位为接收唤醒功能的使能和除能位。若 WAKE=1 且在 SLEEP 模式下,RX 引
脚的下降沿将唤醒单片机 ( 请参考不同暂停模式下 RX 引脚的唤醒功能 )。若
WAKE=0 且在 SLEEP 模式下,RX 引脚的任何边沿都不能唤醒单片机。
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 的影
响。
TXR/RXR 寄存器
Bit
Name
R/W
POR
7
6
5
4
3
2
1
0
TXRX7 TXRX6 TXRX5 TXRX4 TXRX3 TXRX2 TXRX1 TXRX0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
×
×
×
×
×
×
×
×
“×”为未知
TXRX7~TXRX0: UART 发送 / 接收数据位 Bit7~Bit0
Bit 7~0
波特率发生器
UART 自身具有一个波特率发生器,通过它可以设定数据传输速率。波特率是
由一个独立的内部 8 位计数器产生,它由 BRG 寄存器和 UCR2 寄存器的 BRGH
位来控制。BRGH 是决定波特率发生器处于高速模式还是低速模式,从而决定
计算公式的选用。BRG 寄存器的值 N 可根据下表中的公式计算,N 的范围是 0
到 255。
UCR2 的 BRGH 位
0
fSYS
[64(N+1)]
波特率 (BR)
1
fSYS
[16(N+1)]
为得到相应的波特率,首先需要设置 BRGH 来选择相应的计算公式从而算出
BRG 的值。由于 BRG 的值不连续,所以实际波特率和理论值之间有一个偏差。
下面举例怎样计算 BRG 寄存器中的值 N 和误差。
Rev. 1.50
108
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
波特率和误差的计算
系统选用 4M 时钟频率且 BRGH=0,若期望的波特率为 4800,计算它的 BRG
寄存器的值 N,实际波特率和误差。
fSYS
根据上表,波特率 BR=
[64(N+1)]
fSYS
−1
转换后的公式 N=
(BR×64)
带入参数 N= 4000000 − 1 =12.0208
(4800×64)
取最接近的值,十进制 12 写入 BRG 寄存器,实际波特率如下:
4000000
BR=
=4808
[64(12+1)]
4808 − 4800
因此,误差 =
=0.16%
4800
下面两表给出 BRGH 取不同值时的实际波特率和误差。
波特率
K/BPS
0.3
1.2
2.4
4.8
9.6
19.2
38.4
57.6
115.2
fSYS=4MHZ
BRGn
Kbaud
207
51
25
12
6
2
—
0
—
0.300
1.202
2.404
4.808
8.929
20.833
—
62.500
—
误差
(%)
0.16
0.16
0.16
0.16
-6.99
8.51
—
8.51
—
BRGHn=0
fSYS=3.579545MHZ
误差
BRGn Kbaud
(%)
185
0.300
0.00
46
1.190
-0.83
22
2.432
1.32
11
4.661
-2.90
5
9.321
-2.90
2
18.643
-2.90
—
—
—
0
55.930
-2.90
—
—
—
fSYS=7.159MHZ
误差
BRGn Kbaud
(%)
—
—
—
92
1.203
0.23
46
2.380
-0.83
22
4.863
1.32
11
9.332
-2.90
5
18.643
-2.90
2
32.286
-2.90
1
55.930
-2.90
0
111.859
-2.90
BRGH=0 时的波特率和误差
波特率
K/BPS
0.3
1.2
2.4
4.8
9.6
19.2
38.4
57.6
115.2
250
BRGHn=1
fSYS=4MHZ
fSYS=3.579545MHZ
fSYS=7.159MHZ
BRGn Kbaud 误差 (%) BRGn Kbaud 误差 (%) BRGn Kbaud 误差 (%)
—
—
—
—
—
—
—
—
—
207
1.202
0.16
185
1.203
0.23
—
—
—
103
2.404
0.16
92
2.406
0.23
185
2.406
0.23
51
4.808
0.16
46
4.76
-0.83
92
4.811
0.23
25
9.615
0.16
22
9.727
1.32
46
9.520
-0.83
12
19.231
0.16
11
18.643
-2.90
22
19.454
1.32
6
35.714
-6.99
5
37.286
-2.90
11
37.286
-2.90
3
62.5
8.51
3
55.930
-2.90
7
55.930
-2.90
1
125
8.51
1
111.86
-2.90
3
111.86
-2.90
0
250
0
—
—
—
—
—
—
BRGH=1 时的波特率和误差
Rev. 1.50
109
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
BRG 寄存器
Bit
Name
R/W
POR
7
BRG7
R/W
×
6
BRG6
R/W
×
5
BRG5
R/W
×
4
BRG4
R/W
×
3
BRG3
R/W
×
2
BRG2
R/W
×
1
BRG1
R/W
×
0
BRG0
R/W
×
“×”为未知
Bit 7~0
BRG7~BRG0:波特率值
软件设置 BRGH 位(设置波特率发生器的速度)和 BRG 寄存器(设置波特率
的值),一起控制 UART 的波特率。
注:若 BRGH=0,波特率 =fSYS/[64×(N+1)];
若 BRGH=1,波特率 =fSYS/[16×(N+1)]。
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,使其处于高阻抗状态。当 UART 被除能时
将清空缓冲器,所有缓冲器中的数据将被忽略,另外错误和状态标志位被复
位,TXEN、RXEN、TXBRK、RXIF、OERR、FERR、PERR 和 NF 清 零 而
TIDLE、TXIF 和 RIDLE 置位,UCR1、UCR2 和 BRG 寄存器中的其它位保持
不变。若 UART 工作时 UARTEN 清零,所有发送和接收将停止,模块也将复
位成上述状态。当 UART 再次使能时,它将在上次配置下重新工作。
数据位、停止位位数以及奇偶校验的选择
数据传输格式由数据长度、是否校验、校验类型、地址位以及停止位长度组成。
它们都是由 UCR1 寄存器的各个位控制的。BNO 决定数据传输是 8 位还是 9
位;PRT 决定校验类型;PRTEN 决定是否选择奇偶校验;而 STOPS 决定选用
1 位还是 2 位停止位。下表列出了各种数据传输格式。地址位用来确定此帧是
否为地址。停止位的长度和数据位的长度无关。
Rev. 1.50
110
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
起始位
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 位数据的波形。
UART 发送器
UCR1 寄存器的 BNO 位是控制数据传输的长度。BNO=1 其长度为 9 位,第
9 位 MSB 存储在 UCR1 寄存器的 TX8 中。发送器的核心是发送移位寄存器
TSR,它的数据由发送寄存器 TXR 提供,应用程序只须将发送数据写入 TXR
寄存器。上组数据的停止位发出前,TSR 寄存器禁止写入。如果还有新的数据
要发送,一旦停止位发出,待发数据将会从 TXR 寄存器加载到 TSR 寄存器。
TSR 不像其它寄存器一样映射到数据存储器,所以应用程序不能对其进行读写
操作。TXEN=1,发送使能,但若 TXR 寄存器没有数据或者波特率没有设置,
发送器将不会工作。先写 TXR 寄存器再置高 TXEN 也会触发发送。当发送器
使能,若 TSR 寄存器为空,数据写入 TXR 寄存器将会直接加载到 TSR 寄存器
中。发送器工作时,TXEN 清零,发送器将立刻停止工作并且复位,此时 TX
引脚处于高阻抗状态。
Rev. 1.50
111
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
发送数据
当 UART 发送数据时,数据从移位寄存器中移到 TX 引脚上,其低位在前高位
在后。在发送模式中,TXR 寄存器在内部总线和发送移位寄存器间形成一个缓
冲。如果选择 9 位数据传输格式,最高位 MSB 存储在 UCR1 寄存器的 TX8 中。
发送器初始化可由如下步骤完成:
● 正确地设置 BNO、PRT、PREN 和 STOPS 位以确定数据长度、校验类型和停
止位长度。
● 设置 BRG 寄存器,选择期望的波特率。
● 置高 TXEN,使能 UART 发送器且使 TX 作为 UART 的发送端。
● 读取 USR 寄存器,然后将待发数据写入 TXR 寄存器。注意,此步骤会清除
TXIF 标志位。
如果要发送多个数据只需重复上一步骤。
当 TXIF=0 时, 数 据 将 禁 止 写 入 TXR 寄 存 器。 可 以 通 过 以 下 步 骤 来 清 除
TXIF:
1. 读取 USR 寄存器
2. 写 TXR 寄存器
只读标志位 TXIF 由 UART 硬件置位。若 TXIF=1,TXR 寄存器为空,其它数
据可以写入而不会覆盖以前的数据。若 TEIE=1,TXIF 标志位会影响中断。在
数据传输时,写 TXR 指令会将待发数据暂存在 TXR 寄存器中,当前数据发送
完毕后,待发数据被加载到发送移位寄存器中。当发送器空闲时,写 TXR 指令
会将数据直接加载到 TSR 寄存器中,数据传输立刻开始且 TXIF 置位。当一帧
数据发送完毕,TIDLE 将被置位。
可以通过以下步骤来清除 TIDLE:
1. 读取 USR 寄存器
2. 写 TXR 寄存器
清除 TXIF 和 TIDLE 软件执行次序相同。
发送暂停字
若 TXBRK=1,下一帧将会发送暂停字。它是由一个起始位、13×N(N=1,
2……)位逻辑 0 组成。置位 TXBRK 将会发送暂停字,而清除 TXBRK 将产
生停止位,传输暂停字不会产生中断。需要注意思的是,暂停字至少 13 位
宽。若 TXBRK 持续为高,那么发送器会一直发送暂停字;当应用程序清除了
TXBRK,发送器将传输最后一帧暂停字再加上一位或者两位停止位。暂停字后
的高电平保证下一帧数据起始位的检测。
UART 接收器
UART 接收器支持 8 位或者 9 位数据接收。若 BNO=1,数据长度为 9 位,而
最高位 MSB 存放在 UCR1 寄存器的 RX8 中。接收器的核心是串行移位寄存器
RSR。RX 引脚上的数据送入数据恢复器中,它在 16 倍波特率的频率下工作,
而串行移位器工作在正常波特率下。当在 RX 引脚上检测到停止位,数据从
RSR 寄存器中加载到 RXR 寄存器。RX 引脚上的每一位数据会被采样三次以判
断其逻辑状态。RSR 不像其它寄存器一样映射在数据存储器,所以应用程序不
能对其进行读写操作。
Rev. 1.50
112
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
接收数据
当 UART 接收数据时,数据低位在前高位在后,连续地从 RX 引脚进入。RXR
寄存器在内部总线和接收移位寄存器间形成一个缓冲。RXR 寄存器是一个两层
的 FIFO 缓冲器,它能保存两帧数据的同时接收第三帧数据,应用程序必须保
证在接收完第三帧前读取 RXR 寄存器,否则忽略第三帧数据并且发生溢出错
误。
接收器的初始化可由如下步骤完成:
● 正确地设置 BNO、PRT、PREN 和 STOPS 位以确定数据长度、校验类型和停
止位长度。
● 设置 BRG 寄存器,选择期望的波特率。
● 置高 RXEN,使能 UART 发送器且使 RX 作为 UART 的接收端。
此时接收器被使能并检测起始位。
接收数据将会发生如下事件:
● 当 RXR 寄存器中有一帧以上的数据时,USR 寄存器中的 RXIF 位将会置位。
● 若 RIE=1,数据从 RSR 寄存器加载到 RXR 寄存器中将产生中断。
● 若接收器检测到帧错误、噪声干扰错误、奇偶出错或溢出错误,那么相应的
错误标志位置位。
可以通过如下步骤来清除 RXIF:
1. 读取 USR 寄存器
2. 读取 RXR 寄存器
接收暂停字
UART 接收任何暂停字都会当作帧错误处理。接收器只根据 BNO 和 STOPS 位
确定一帧数据的长度。若暂停字位数大于 BNO 和 STOPS 位指定的长度,接收
器认为接收已完毕,RXIF 和 FERR 置位,RXR 寄存器清 0,若相应的中断允
许且 RIDLE 为高将会产生中断。若暂停字较长,接收器收到起始位、数据位将
会置位 FERR 标志,且在下一起始位前必须检测到有效的停止位。暂停字只会
被认为包含信息 0 且会置位 FERR 标志。暂停字将会加载到缓冲器中,在接收
到停止位前不会再接收数据,没有检测到停止位也会置位只读标志位 RIDLE。
UART 接收到暂停字会产生以下事件:
● 帧错误标志位 FERR 置位。
● RXR 寄存器清零。
● OERR、NF、PERR、RIDLE 或 RXIF 可能会置位。
空闲状态
当 UART 接收数据时,即在起初位和停止位之间,USR 寄存器的接收标志位
RIDLE 清零。在停止位和下一帧数据的起始位之间,RIDLE 被置位,表示接收
器空闲。
接收中断
USR 寄存器的只读标志位 RXIF 由接收器的边缘触发置位。若 RIE=1,数据从
移位寄存器 RSR 加载到 RXR 寄存器时产生中断,同样地,溢出也会产生中断。
Rev. 1.50
113
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
接收错误处理
UART 会产生几种接收错误,下面部分将描述各错误以及怎样处理。
溢出——OERR 标志
RXR 寄存器是一个两层的 FIFO 缓冲器,它能保存两帧数据的同时接收第三帧
数据,应用程序必须保证在接收完第三帧前读取 RXR 寄存器,否则发生溢出错
误。
产生溢出错误时将会发生以下事件:
● USR 寄存器中 OERR 被置位。
● RXR 寄存器中数据不会丢失。
● RSR 寄存器数据将会被覆盖。
● 若 RIE=1,将会产生中断。
先读取 USR 寄存器再读取 RXR 寄存器可将 OERR 清零。
噪声干扰——NF 标志
数据恢复时多次采样可以有效的鉴别出噪声干扰。当检测到数据受到噪声干扰
时将会发生以下事件:
● 在 RXIF 上升沿,USR 寄存器中只读标志位 NF 置位。
● 数据从 RSR 寄存器加载到 RXR 寄存器中。
● 不产生中断,此位置位的同时由 RXIF 请求中断。
先读取 USR 寄存器再读取 RXR 寄存器可将 NF 清零。
帧错误——FERR 标志
若在停止位上检测到 0,USR 寄存器中只读标志 FERR 置位。若选择两位停止
位,此两位都必须为高,否则将置位 FERR。它同数据一起存储在缓冲器中,
可被任何复位清零。
奇偶校验错误——PERR 标志
若接收到数据出现奇偶校验错误,USR 寄存器中只读标志 PERR 置位。只有使
能了奇偶校验,选择了校验类型,此标志位才有效。它同数据一起存储在缓冲
器中,可被任何复位清除。注意,FERR 和 PERR 与相应的数据一起存储有缓
冲器中,在读取数据之前必须先访问错误标志位。
Rev. 1.50
114
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
UART 模块中断结构
UART 拥有一个单独的中断。发送寄存器为空、发送器空闲、接收器数据有
效、接收器溢出、地址检测和 RX 引脚唤醒都会产生中断。当其中任何一种情
况发生时,若其对应的中断控制位使能、 整体 UART 中断允许且堆栈未满,
程序将会跳转到相应的中断向量执行中断服务程序,而后再返回主程序。这其
中的四种情况在 USR 寄存器中有相关的标志位,若 UCR2 寄存器中相应中断
允许位被置位,USR 寄存器中标志位将会产生中断。发送器有两个相应的中断
允许位而接收器共用一个中断允许位。这些允许位可用于禁止个别的 UART 中
断源。地址检测也是 UART 的中断源,它没有相应的标志位,若 UCR2 寄存器
中 ADDEN=1,当检测到地址将会产生 UART 中断。RX 引脚唤醒也可以产生
UART 中断,它没有相应的标志位,当 UXR2 中的 WAKE 和 RIE 位被置位,
RX 引脚上有下降沿可以唤醒单片机。应注意,RX 唤醒中断发生时,系统必须
延时 tSST 才能正常工作。
注意,USR 寄存器标志位为只读状态,软件不能对其进行设置,在进入相应
中断服务程序时也不能清除这些标志位,其它中断亦是如此。这些标志位仅在
UART 特定动作发生时才会自动被清除,详细解释见 UART 寄存器章节。整体
UART 中断的使能或除能可由中断控制寄存器中的相关中断使能控制位控制,
其中断请求由 UART 模块决定。
USR Register
UCR2 Register
Transmitter Empty
Flag TXIF
TEIE
Transmitter Idle
Flag TIDLE
TIIE
0
1
RIE
0
1
Receiver Overrun
Flag OERR
OR
Receiver Data
Available RXIF
RX Pin
Wake-up
WAKE
ADDEN
0
1
UCR2 Register
0
1
INTC2
Register
UART Interrupt
Request Flag
UARF
UARE
INTC0
Register
EMI
0
1
0
1
RX7 if BNO=0
RX8 if BNO=1
UART 中断框图
Rev. 1.50
115
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
地址检测模式
置位 UCR2 寄存器中的 ADDEN 将启动地址检测模式。若此位为“1”,可产
生接收数据有效中断,其请求标志位为 RXIF。若 ADDEN 有效,只有在接收
到数据最高位为 1 才会产生中断,中断允许位 UARE 和 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 模块暂停和唤醒
MCU 进入暂停模式后 UART 模块将暂停运行。当 UART 进入暂停模式后,
UART 模块的时钟源将除能。当传送数据时 UART 进入暂停模式,发送将停止
直到 UART 模块时钟再次使能。同样地,当接收数据时 UART 进入暂停模式,
数据接收也会停止。当 UART 电路进入暂停模式,USR、UCR1、UCR2 、接收
/ 发送寄存器以及 BRG 寄存器都不会受到影响。建议在 MCU 进入暂停模式前
先确保数据发送或接收已完成。
UART 功能中包括了 RX 引脚的唤醒功能,由 UCR2 寄存器中 WAKE 位控制。
进入暂停模式前,若该标志位与 UART 允许位 UARTEN、接收器允许位 RXEN
和接收器中断位 RIE 都被置位,则 RX 引脚的下降沿可唤醒单片机。唤醒后系
统需延时 tSST 才能正常工作,在此期间,RX 引脚上的任何数据将被忽略。若
要唤醒并产生 UART 中断,除了唤醒使能控制位和接收中断使能控制位需置位
外,全局中断允许位 EMI 和 UART 中断使能控制位 UARE 也必须置位;若这
两控制位没有被置位,那么,单片机将可以被唤醒但不会产生中断。同样唤醒
后系统需一定的延时才能正常工作,然后才会产生 UART 中断。
下面表格说明了在各暂停模式下 UART 模块 RX 引脚的唤醒功能。
Rev. 1.50
116
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
工作模式
说明
CPU
fSYS
fH
RX 引脚唤醒功能
fSUB
当 CPU 进入空闲模式 0,
即使 UCR2.2(RIE)=1, UCR2.3(WAKE)=1, RX 引
脚的下降沿不會开启 fSYS,也不會唤醒 CPU。
当 UCR2.2(RIE)=1、UCR2.3(WAKE)=1 且 CPU
进入空闲模式 1:
(1) 若 UART 没有在传输数据,RX 引脚的下降
沿将开启 fSYS 而 CPU 仍关闭。
空闲模式 1
Off
On
On On
(2) 若 UART 正在传输数据,CPU 将在数据传
输完成后唤醒。
注:若 RIE=0、WAKE=1 且 UART 正在传输数
据,CPU 在数据传输完成后也不唤醒。
当 UCR2.2(RIE)=1、UCR2.3(WAKE)=1 且 CPU
进入空闲模式 1:
(1) 若 UART 没有在传输数据,RX 引脚的下降
沿将开启 fSYS 而 CPU 仍关闭。
On
On Off
空闲模式 1
Off
(2) 若 UART 正在传输数据,CPU 将在数据传
(fSYS=fH~fH/64)
输完成后唤醒。
注:若 RIE=0、WAKE=1 且 UART 正在传输数
据,CPU 在数据传输完成后也不唤醒。
当 UCR2.2(RIE)=1、UCR2.3(WAKE)=1 且 CPU
Off
Off On/Off 进入休眠模式, RX 引脚的下降沿将开启 fSYS
休眠模式 0/1 Off
并唤醒 CPU。
空闲模式 0
Rev. 1.50
Off
Off
Off
On
117
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
中断
中断是单片机一个重要功能。当外部事件或内部功能如定时器模块或 A/D 转
换器有效,并且产生中断时,系统会暂时中止当前的程序而转到执行相对应的
中断服务程序。该系列单片机提供多个外部中断和内部中断功能,外部中断由
INT0~INT3 引脚动作产生,而内部中断由各种内部功能,如定时器模块、时基、
LVD、EEPROM、UART 和 A/D 转换器等产生。
中断寄存器
中断控制基本上是在一定单片机条件发生时设置请求标志位,应用程序中中断
使能位的设置是通过位于专用数据存储器中的一系列寄存器控制的。寄存器总
的分为三类。第一类是 INTC0~INTC2 寄存器,用于设置基本的中断;第二类
是 MFI0~MFI4 寄存器,用于设置多功能中断;最后一种有 INTEG 寄存器,用
于设置外部中断边沿触发类型。
寄存器中含有中断控制位和中断请求标志位。中断控制位用于使能或除能各种
中断,中断请求标志位用于存放当前中断请求的状态。它们都按照特定的模式
命名,前面表示中断类型的缩写,紧接着的字母“E”代表使能 / 除能位,“F”
代表请求标志位。
功能
总中断
INTn 脚
A/D 转换器
多功能
时基
LVD
EEPROM
UART
TM
使能位
EMI
INTnE
ADE
MFnE
TBnE
LVE
DEE
UARE
TnPE
TnAE
请求标志位
—
INTnF
ADF
MFnF
TBnF
LVF
DEF
UARF
TnPF
TnAF
注释
—
n=0~3
—
n=0~4
n=0~1
—
—
—
n=0~3
中断寄存器位命名模式
中断寄存器内容
寄存器
名称
INTEG
INTC0
INTC1
INTC2
MFI0
MFI1
MFI2
MFI3
MFI4
Rev. 1.50
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
INT3S1 INT3S0 INT2S1 INT2S0 INT1S1 INT1S0 INT0S1 INT0S0
—
MF0F INT1F INT0F MF0E INT1E INT0E
EMI
ADF
MF3F MF2F MF1F
ADE
MF3E MF2E MF1E
MF4F INT3F INT2F UARF MF4E INT3E INT2E UARE
—
—
T0AF
T0PF
—
—
T0AE
T0PE
—
—
T1AF
T1PF
—
—
T1AE
T1PE
—
—
T2AF
T2PF
—
—
T2AE
T2PE
—
—
T3AF
T3PF
—
—
T3AE
T3PE
TB1E
TB0E
DEE
LVE
TB1F
TB0F
DEF
LVF
118
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
INTEG 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
6
5
4
3
2
1
0
INT3S1 INT3S0 INT2S1 INT2S0 INT1S1 INT1S0 INT0S1 INT0S0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
Bit 7~6
INT3S1, INT3S0:INT3 脚中断边沿控制位
00:除能
01:上升沿
10:下降沿
11:双沿
Bit 5~4
INT2S1, INT2S0:INT2 脚中断边沿控制位
00:除能
01:上升沿
10:下降沿
11:双沿
Bit 3~2
INT1S1, INT1S0:INT1 脚中断边沿控制位
00:除能
01:上升沿
10:下降沿
11:双沿
Bit 1~0
INT0S1, INT0S0:INT0 脚中断边沿控制位
00:除能
01:上升沿
10:下降沿
11:双沿
119
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
INTC0 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
—
—
—
6
MF0F
R/W
0
5
INT1F
R/W
0
4
INT0F
R/W
0
Bit 7
未定义,读为“0”
Bit 6
MF0F:多功能中断 0 中断请求标志位
0:无请求
1:中断请求
Bit 5
INT1F:INT1 中断请求标志位
0:无请求
1:中断请求
Bit 4
INT0F:INT0 中断请求标志位
0:无请求
1:中断请求
Bit 3
MF0E:多功能中断 0 中断控制位
0:除能
1:使能
Bit 2
INT1E:INT1 中断控制位
0:除能
1:使能
Bit 1
INT0E:INT0 中断控制位
0:除能
1:使能
Bit 0
EMI:总中断控制位
0:除能
1:使能
120
3
MF0E
R/W
0
2
INT1E
R/W
0
1
INT0E
R/W
0
0
EMI
R/W
0
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
INTC1 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
ADF
R/W
0
6
MF3F
R/W
0
5
MF2F
R/W
0
4
MF1F
R/W
0
Bit 7
ADF :A/D 转换器中断请求标志位
0:无请求
1:中断请求
Bit 6
MF3F:多功能中断 3 中断请求标志位
0:无请求
1:中断请求
Bit 5
MF2F:多功能中断 2 中断请求标志位
0:无请求
1:中断请求
Bit 4
MF1F:多功能中断 1 中断请求标志位
0:无请求
1:中断请求
Bit 3
ADE :A/D 转换器中断控制位
0:除能
1:使能
Bit 2
MF3E:多功能中断 3 中断控制位
0:除能
1:使能
Bit 1
MF2E:多功能中断 2 中断控制位
0:除能
1:使能
Bit 0
MF1E:多功能中断 1 中断控制位
0:除能
1:使能
121
3
ADE
R/W
0
2
MF3E
R/W
0
1
MF2E
R/W
0
0
MF1E
R/W
0
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
INTC2 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
MF4F
R/W
0
6
INT3F
R/W
0
5
INT2F
R/W
0
4
UARF
R/W
0
Bit 7
MF4F:多功能中断 4 中断请求标志位
0:无请求
1:中断请求
Bit 6
INT3F:INT3 中断请求标志位
0:无请求
1:中断请求
Bit 5
INT2F:INT2 中断请求标志位
0:无请求
1:中断请求
Bit 4
UARF:UART 中断请求标志位
0:无请求
1:中断请求
Bit 3
MF4E:多功能中断 4 中断控制位
0:除能
1:使能
Bit 2
INT3E:INT3 中断控制位
0:除能
1:使能
Bit 1
INT2E:INT2 中断控制位
0:除能
1:使能
Bit 0
UARE:UART 中断控制位
0:除能
1:使能
122
3
MF4E
R/W
0
2
INT3E
R/W
0
1
INT2E
R/W
0
0
UARE
R/W
0
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
MFI0 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
T0AF
R/W
0
4
T0PF
R/W
0
3
—
—
—
Bit 7~6
未定义,读为“0”
Bit 5
T0AF:TM0 比较器 A 匹配中断请求标志位
0:无请求
1:中断请求
Bit 4
T0PF:TM0 比较器 P 匹配中断请求标志位
0:无请求
1:中断请求
Bit 3~2
未定义,读为“0”
Bit 1
T0AE:TM0 比较器 A 匹配中断控制位
0:除能
1:使能
Bit 0
T0PE:TM0 比较器 P 匹配中断控制位
0:除能
1:使能
2
—
—
—
1
T0AE
R/W
0
0
T0PE
R/W
0
2
—
—
—
1
T1AE
R/W
0
0
T1PE
R/W
0
MFI1 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
—
—
—
6
—
—
—
5
T1AF
R/W
0
4
T1PF
R/W
0
3
—
—
—
Bit 7~6
未定义,读为“0”
Bit 5
T1AF:TM1 比较器 A 匹配中断请求标志位
0:无请求
1:中断请求
Bit 4
T1PF:TM1 比较器 P 匹配中断请求标志位
0:无请求
1:中断请求
Bit 3~2
未定义,读为“0”
Bit 1
T1AE:TM1 比较器 A 匹配中断控制位
0:除能
1:使能
Bit 0
T1PE:TM1 比较器 P 匹配中断控制位
0:除能
1:使能
123
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
MFI2 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
T2AF
R/W
0
4
T2PF
R/W
0
3
—
—
—
Bit 7~6
未定义,读为“0”
Bit 5
T2AF:TM2 比较器 A 匹配中断请求标志位
0:无请求
1:中断请求
Bit 4
T2PF:TM2 比较器 P 匹配中断请求标志位
0:无请求
1:中断请求
Bit 3~2
未定义,读为“0”
Bit 1
T2AE:TM2 比较器 A 匹配中断控制位
0:除能
1:使能
Bit 0
T2PE:TM2 比较器 P 匹配中断控制位
0:除能
1:使能
2
—
—
—
1
T2AE
R/W
0
0
T2PE
R/W
0
2
—
—
—
1
T3AE
R/W
0
0
T3PE
R/W
0
MFI3 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
—
—
—
6
—
—
—
5
T3AF
R/W
0
4
T3PF
R/W
0
3
—
—
—
Bit 7~6
未定义,读为“0”
Bit 5
T3AF:TM3 比较器 A 匹配中断请求标志位
0:无请求
1:中断请求
Bit 4
T3PF:TM3 比较器 P 匹配中断请求标志位
0:无请求
1:中断请求
Bit 3~2
未定义,读为“0”
Bit 1
T3AE:TM3 比较器 A 匹配中断控制位
0:除能
1:使能
Bit 0
T3PE:TM3 比较器 P 匹配中断控制位
0:除能
1:使能
124
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
MFI4 寄存器
Bit
Name
R/W
POR
Rev. 1.50
7
TB1F
R/W
0
6
TB0F
R/W
0
5
DEF
R/W
0
4
LVF
R/W
0
Bit 7
TB1F:时基 1 中断请求标志位
0:无请求
1:中断请求
Bit 6
TB0F:时基 0 中断请求标志位
0:无请求
1:中断请求
Bit 5
DEF:数据 EEPROM 中断请求标志位
0:无请求
1:中断请求
Bit 4
LVF:LVD 中断请求标志位
0:无请求
1:中断请求
Bit 3
TB1E:时基 1 中断控制位
0:除能
1:使能
Bit 2
TB0E:时基 0 中断控制位
0:除能
1:使能
Bit 1
DEE:数据 EEPROM 中断控制位
0:除能
1:使能
Bit 0
LVE:LVD 中断控制位
0:除能
1:使能
125
3
TB1E
R/W
0
2
TB0E
R/W
0
1
DEE
R/W
0
0
LVE
R/W
0
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
中断操作
若中断事件条件产生,如一个 TM 比较器 P、比较器 A 匹配或 A/D 转换结束等
等,相关中断请求标志将置起。中断标志产生后程序是否会跳转至相关中断向
量执行是由中断使能位的条件决定的。若使能位为“1”,程序将跳至相关中断
向量中执行;若使能位为“0”,即使中断请求标志置起中断也不会发生,程序
也不会跳转至相关中断向量执行。若总中断使能位为“0”,所有中断都将除能。
当中断发生时,下条指令的地址将被压入堆栈。相应的中断向量地址加载至 PC
中。系统将从此向量取下条指令。中断向量处通常为跳转指令,以跳转到相应
的中断服务程序。中断服务程序必须以“RETI”指令返回至主程序,以继续执
行原来的程序。
各个中断使能位以及相应的请求标志位,以优先级的次序显示在下图。一些中
断源有自己的向量,但是有些中断却共用多功能中断向量。一旦中断子程序被
响应,系统将自动清除 EMI 位,所有其它的中断将被屏蔽,这个方式可以防止
任何进一步的中断嵌套。其它中断请求可能发生在此期间,虽然中断不会立即
响应,但是中断请求标志位会被记录。
如果某个中断服务子程序正在执行时,有另一个中断要求立即响应,那么 EMI
位应在程序进入中断子程序后置位,以允许此中断嵌套。如果堆栈已满,即使
此中断使能,中断请求也不会被响应,直到 SP 减少为止。如果要求立刻动作,
则堆栈必须避免成为储满状态。请求同时发生时,执行优先级如下流程图所示。
所有被置起的中断请求标志都可把单片机从休眠或空闲模式中唤醒,若要防止
唤醒动作发生,在单片机进入休眠或空闲模式前应将相应的标志置起。
Rev. 1.50
126
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Legend
xxF
Request Flag – no auto reset in ISR
EMI auto disabled in ISR
xxF Request Flag – auto reset in ISR
xxE Enable Bit
Interrupt
Name
Interrupt
Name
Request
Flags
Enable
Bits
Master
Enable
Vector
INT0 Pin
INT0F
INT0E
EMI
04H
Request
Flags
Enable
Bits
INT1 Pin
INT1F
TM0 P
T0PF
T0PE
M. Funct. 0
MF0F
MF0E
EMI
0CH
TM0 A
T0AF
T0AE
TM1 P
T1PF
T1PE
M. Funct. 1
MF1F
MF1E
EMI
10H
TM1 A
T1AF
T1AE
TM2 P
T2PF
T2PE
M. Funct. 2
MF2F
MF2E
EMI
14H
TM2 A
T2AF
T2AE
TM3 P
T3PF
T3PE
M. Funct. 3
MF3F
MF3E
EMI
18H
TM3 A
T3AF
T3AE
A/D
ADF
ADE
EMI
1CH
UART
UARF
UARE
EMI
20H
INT2 Pin
INT2F
INT2E
EMI
24H
INT3 Pin
INT3F
INT3E
EMI
28H
M. Funct. 4
MF4F
MF4E
EMI
2CH
LVD
LVF
LVE
EEPROM
DEF
DEE
Time Base 1
TB1F
TB1E
Time Base 0
TB0F
TB0E
INT1E
EMI
Priority
High
08H
Low
Interrupts contained within
Multi-Function Interrupts
HT67F489 only
中断结构
Rev. 1.50
127
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
外部中断
通过 INT0~INT3 引脚上的信号变化可控制外部中断。当触发沿选择位设置好触
发类型,INT0~INT3 引脚的状态发生变化,外部中断请求标志 INT0F~INT3F 被
置位时外部中断请求产生。若要跳转到相应中断向量地址,总中断控制位 EMI
和相应中断使能位 INT0E~INT3E 需先被置位。此外,必须使用 INTEG 寄存器
使能外部中断功能并选择触发沿类型。外部中断引脚和普通 I/O 口共用,如果
相应寄存器中的中断使能位被置位,此引脚将被作为外部中断脚使用。此时该
引脚必须通过设置控制寄存器,将该引脚设置为输入口。当中断使能,堆栈未
满并且外部中断脚状态改变,将调用外部中断向量子程序。当响应外部中断服
务子程序时,中断请求标志位 INT0F~INT3F 会自动复位且 EMI 位会被清零以
除能其它中断。注意,即使此引脚被用作外部中断输入,其配置选项中的上拉
电阻仍保持有效。寄存器 INTEG 被用来选择有效的边沿类型,来触发外部中断。
可以选择上升沿还是下降沿或双沿触发都产生外部中断。注意 INTEG 也可以用
来除能外部中断功能。
多功能中断
该系列单片机中有多达四个多功能中断,与其它中断不同,它没有独立源,但
由其它现有的中断源构成,即 TM 中断、LVD 中断、EEPROM 中断和时基中断。
当多功能中断中任何一种中断请求标志 MF0F~MF4F 被置位,多功能中断请求
产生。当中断使能,堆栈未满,包括在多功能中断中的任意一个中断发生时,
将调用多功能中断向量中的一个子程序。当响应中断服务子程序时,相关的多
功能请求标志位会自动复位且 EMI 位会自动清零以除能其它中断。
但必须注意的是,在中断响应时,虽然多功能中断标志会自动复位,但多功能
中断源的请求标志位,即 TM 中断、LVD 中断、EEPROM 中断和时基中断的请
求标志位不会自动复位,必须由应用程序清零。
A/D 转换器中断
A/D 转换器中断由 A/D 转换动作的结束来控制。当 A/D 转换器中断请求标志被
置位,即 A/D 转换过程完成时,中断请求发生。当总中断使能位 EMI 和 A/D
中断使能位 ADE 被置位,允许程序跳转到相应的中断向量地址。当中断使能,
堆栈未满且 A/D 转换动作结束时,将调用 A/D 中断向量子程序。当响应中断服
务子程序时,相应的中断请求标志位 ADF 会自动清零。EMI 位也会被清零以
除能其它中断。
UART 中断
UART 模块中,发送器为空、发送器空闲、接收器数据有效、接收器溢出、地
址检测和 RX 引脚唤醒都会触发产生 UART 中断。当整体 UART 中断请求标志
位被置位,即以上任何一种情况发生时,中断请求发生。当总中断使能位 EMI
和 UART 中断使能位 UARE 被置位,允许程序跳转到相应的中断向量地址。
当中断使能,堆栈未满且以上任何一种情况发生时,将调用 UART 中断向量
子程序。当响应中断服务子程序时,相应的中断请求标志位 UARF 会自动清
零。EMI 位也会被清零以除能其它中断。而 UART 模块中的只读中断标志位仅
在 UART 特定动作发生时才会自动被清除。更多关于 UART 中断的细节请参考
UART 章节。
Rev. 1.50
128
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
时基中断
时基中断提供一个固定周期的中断信号,由各自的定时器功能产生溢出信号控
制。当各自的中断请求标志 TB0F 或 TB1F 被置位时,中断请求发生。当总中
断使能位 EMI、时基使能位 TB0E 或 TB1E 和相应的多功能中断使能位被置位,
允许程序跳转到各自的中断向量地址。当中断使能,堆栈未满且时基溢出时,
将调用它们各自的中断向量子程序。当响应中断服务子程序时,EMI 位会被清
零以除能其它中断,多功能中断请求标志也可自动清除,但相应的中断请求标
志位 TB0F 或 TB1F 需在应用程序中清零。
时基中断的目的是提供一个固定周期的中断信号,时钟源来自内部时钟源 fTB。
fTB 输入时钟首先经过分频器,分频率由程序设置 TBC 寄存器相关位获取合适
的分频值以提供更长的时基中断周期。控制时基中断频率 fTB 的时钟源有几种,
如在系统工作模式章节所示。
TBC 寄存器
Bit
Name
R/W
POR
7
TBON
R/W
0
6
TBCK
R/W
0
5
TB11
R/W
1
4
TB10
R/W
1
Bit 7
TBON:TB0 和 TB1 控制位
0:除能
1:使能
Bit 6
TBCK:选择 fTB 时钟位
0:fTBC
1:fSYS/4
Bit 5~4
TB11~TB10:选择时基 1 溢出周期位
00:4096/fTB
01:8192/fTB
10:16384/fTB
11:32768/fTB
Bit 3
未定义,读为“0”
Bit 2~0
TB02~TB00:选择时基 0 溢出周期位
000:256/fTB
001:512/fTB
010:1024/fTB
011:2048/fTB
100:4096/fTB
101:8192/fTB
110:16384/fTB
111:32768/fTB
3
—
—
—
2
TB02
R/W
1
1
TB01
R/W
1
0
TB00
R/W
1
时基中断
Rev. 1.50
129
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
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 都有两个中断请求标志位 TnPF、TnAF 及两个使能位 TnPE、
TnAE。当 TM 比较器 P 或 A 匹配情况发生时,任意 TM 中断请求标志被置位,
TM 中断请求发生。
若要程序跳转到相应中断向量地址,总中断控制位 EMI、相应 TM 中断使能位
和相关多功能中断使能位 MFnE 需先被置位。当中断使能,堆栈未满且 TM 比
较器匹配情况发生时,可跳转至相关多功能中断向量子程序中执行。当 TM 中
断响应,EMI 将被自动清零以除能其它中断,相关 MFnF 标志也可自动清除,
但 TM 中断请求标志需在应用程序中手动清除。
中断唤醒功能
每个中断都具有将处于休眠或空闲模式的单片机唤醒的能力。当中断请求标志
由低到高转换时唤醒动作产生,其与中断是否使能无关。因此,尽管单片机处
于休眠或空闲模式且系统振荡器停止工作,如有外部中断脚上产生外部边沿跳
变或低电压都可能导致其相应的中断标志被置位,由此产生中断,因此必须注
意避免伪唤醒情况的发生。若中断唤醒功能被除能,单片机进入休眠或空闲模
式前相应中断请求标志应被置起。中断唤醒功能不受中断使能位的影响。
Rev. 1.50
130
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
编程注意事项
通过禁止相关中断使能位,可以屏蔽中断请求,然而,一旦中断请求标志位被
设定,它们会被保留在中断控制寄存器内,直到相应的中断服务子程序执行或
请求标志位被软件指令清除。
多功能中断中所含中断相应程序执行时,多功能中断请求标志 MF0F~MF4F 可
以自动清零,但各自的请求标志需在应用程序中手动清除。
建议在中断服务子程序中不要使用“CALL 子程序”指令。中断通常发生在不
可预料的情况或是需要立刻执行的某些应用。假如只剩下一层堆栈且没有控制
好中断,当“CALL 子程序”在中断服务子程序中执行时,将破坏原来的控制
序列。
所有中断在休眠或空闲模式下都具有唤醒功能,当中断请求标志发生由低到高
的转变时都可产生唤醒功能。若要避免相应中断产生唤醒动作,在单片机进入
休眠或空闲模式前需先将相应请求标志置为高。
当进入中断服务程序,系统仅将程序计数器的内容压入堆栈,如果中断服务程
序会改变状态寄存器或其它的寄存器的内容而破坏控制流程,应事先将这些数
据保存起来。
若从中断子程序中返回可执行 RET 或 RETI 指令。除了能返回至主程序外,
RETI 指令还能自动设置 EMI 位为高,允许进一步中断。RET 指令只能返回至
主程序,清除 EMI 位,除能进一步中断。
Rev. 1.50
131
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
低电压检测 – LVD
该系列单片机都具有低电压检测功能,即 LVD。该功能使能用于监测电源电压
VDD,若电源电压低于一定值可提供一个警告信号。此功能在电池类产品中非
常有用,在电池电压较低时产生警告信号。低电压检测也可产生中断信号。
LVD 寄存器
低电压检测功能由 LVDC 寄存器控制。VLVD2~VLVD0 位用于选择 8 个固定的
电压参考点。LVDO 位被置位时低电压情况发生,若 LVDO 位为低表明 VDD 电
压工作在当前所设置低电压水平值之上。LVDEN 位用于控制低电压检测功能的
开启 / 关闭,设置此位为高使能此功能,反之,关闭内部低电压检测电路。低
电压检测会有一定的功耗,在不使用时可考虑关闭此功能,此举在功耗要求严
格的电池供电应用中值得考虑。
LVDC 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
LVDO
R
0
4
LVDEN
R/W
0
Bit 7~6
未定义,读为“0”
Bit 5
LVDO:LVD 输出标志位
0:未检测到低电压
1:检测到低电压
Bit 4
LVDEN:低电压检测控制位
0:除能
1:使能
Bit 3
未定义,读为“0”
Bit 2~0
VLVD2~VLVD0:选择 LVD 电压位
000:2.0V
001:2.2V
010:2.4V
011:2.7V
100:3.0V
101:3.3V
110:3.6V
111:4.0V
3
—
—
—
2
1
0
VLVD2 VLVD1 VLVD0
R/W
R/W
R/W
0
0
0
LVD 操作
通过比较电源电压 VDD 与存储在 LVDC 寄存器中的预置电压值的结果,低电压
检测功能工作。其设置的范围为 2.0V~4.0V。当电源电压 VDD 低于预置电压值
时,LVDO 位被置为高,表明低电压产生。低电压检测功能由一个自动使能的
参考电压提供。若 LVDEN 位为高,当单片机掉电时低电压检测器保持有效状
态。低电压检测器使能后,读取 LVDO 位前,电路稳定需要一定的延时 tLVDS。
注意,VDD 电压可能上升或下降比较缓慢,在 VLVD 电压值附近时,LVDO 位可
能有多种变化。
Rev. 1.50
132
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
LVD 操作
低电压检测器也有自己的中断功能,也是属于多功能中断的一种,它是除了轮
询 LVDO 位之外的另一种检测低电压的方法。中断条件产生置位 LVDO 并延时
tLVD 后,中断产生。若 LVDEN 位为高,当单片机掉电时低电压检测器保持有效
状态。此种情况下,若 VDD 降至小于 LVD 预置电压值时,中断请求标志位 LVF
将被置位,中断产生,单片机将从休眠或空闲模式中被唤醒。若不要求低电压
检测的唤醒功能使能,在单片机进入休眠或空闲模式前应将 LVF 标志置为高。
配置选项
配置选项在烧写程序时写入芯片。通过 HT-IDE 的软件开发环境,使用者在开
发过程中可以选择配置选项。当配置选项烧入单片机后,无法再通过应用程序
修改。所有位必须按系统的需要定义,具体内容可参考下表:
序号
选项
高速振荡器类型选择:
fH – HXT 或 HIRC
1
应用电路
V
D D
0 .0 1 F * *
V D D
A N 0 ~ A N 9
P A 0 ~ P A 7
P B 0 ~ P B 5
0 .1 F
P C 0 ~ P C 7
P D 0 ~ P D 7
P E 0 ~ P E 7
V S S
P F 4 ~ P F 7
S E G 0 ~ S E G 1 9
X T 1
O S C
C ir c u it
X T 2
C O M 0 ~ C O M 7
T X
R X
Rev. 1.50
133
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
指令集
简介
任何单片机成功运作的核心在于它的指令集,此指令集为一组程序指令码,用
来指导单片机如何去执行指定的工作。在 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.50
134
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
分支和控制转换
程序分支是采取使用 JMP 指令跳转至指定地址或使用 CALL 指令调用子程序的
形式,两者之不同在于当子程序被执行完毕后,程序必须马上返回原来的地址。
这个动作是由放置在子程序里的返回指令 RET 来实现,它可使程序跳回 CALL
指令之后的地址。在 JMP 指令中,程序则只是跳到一个指定的地址而已,并不
需如 CALL 指令般跳回。一个非常有用的分支指令是条件跳转,跳转条件是由
数据存储器或指定位来加以决定。遵循跳转条件,程序将继续执行下一条指令
或略过且跳转至接下来的指令。这些分支指令是程序走向的关键,跳转条件可
能是外部开关输入,或是内部数据位的值。
位运算
提供数据存储器中单个位的运算指令是盛群单片机的特性之一。这特性对于输
出端口位的设置尤其有用,其中个别的位或端口的引脚可以使用“SET [m].i”
或“CLR [m].i”指令来设定其为高位或低位。如果没有这特性,程序设计师必
须先读入输出口的 8 位数据,处理这些数据,然后再输出正确的新数据。这种
读入 - 修改 - 写出的过程现在则被位运算指令所取代。
查表运算
数据的储存通常由寄存器完成,然而当处理大量固定的数据时,它的存储量常
常造成对个别存储器的不便。为了改善此问题,盛群单片机允许在程序存储器
中建立一个表格作为数据可直接存储的区域,只需要一组简易的指令即可对数
据进行查表。
其它运算
除了上述功能指令外,其它指令还包括用于省电的“HALT”指令和使程序在极
端电压或电磁环境下仍能正常工作的看门狗定时器控制指令。这些指令的使用
则请查阅相关的章节
Rev. 1.50
135
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
指令集概要
下表中说明了按功能分类的指令集,用户可以将该表作为基本的指令参考。
惯例
x:立即数
m:数据存储器地址
A:累加器
i:第 0~7 位
addr:程序存储器地址
助记符
说明
指令
周期
影响标志位
1
Z, C, AC, OV
算术运算
ADD
A,[m] ACC 与数据存储器相加,结果放入 ACC
ADDM A,[m] ACC 与数据存储器相加,结果放入数据存储器
A, x
ADD
ADC
ACC 与立即数相加,结果放入 ACC
A,[m] ACC 与数据存储器、进位标志相加,结果放入 ACC
ADCM A,[m] ACC 与数据存储器、进位标志相加,结果放入数据存储器
ACC 与立即数相减,结果放入 ACC
SUB
A, x
SUB
A,[m] ACC 与数据存储器相减,结果放入 ACC
SUBM A,[m] ACC 与数据存储器相减,结果放入数据存储器
SBC
A,[m] ACC 与数据存储器、进位标志的反相减,结果放入 ACC
SBCM A,[m] ACC 与数据存储器、进位标志相减,结果放入数据存储器
DAA
[m]
1
注
Z, C, AC, OV
1
Z, C, AC, OV
1
Z, C, AC, OV
1
注
Z, C, AC, OV
1
Z, C, AC, OV
1
Z, C, AC, OV
1
注
Z, C, AC, OV
1
Z, C, AC, OV
1注
Z, C, AC, OV
将加法运算中放入 ACC 的值调整为十进制数,并将结果放入
1注
数据存储器
C
逻辑运算
A,[m] ACC 与数据存储器做“与”运算,结果放入 ACC
1
Z
OR
A,[m] ACC 与数据存储器做“或”运算,结果放入 ACC
1
Z
XOR
A,[m] ACC 与数据存储器做“异或”运算,结果放入 ACC
1
Z
AND
ANDM A,[m] ACC 与数据存储器做“与”运算,结果放入数据存储器
ORM
A,[m] ACC 与数据存储器做“或”运算,结果放入数据存储器
XORM A,[m] ACC 与数据存储器做“异或”运算,结果放入数据存储器
注
Z
1注
Z
1注
Z
1
AND
A, x
ACC 与立即数做“与”运算,结果放入 ACC
1
Z
OR
A, x
ACC 与立即数做“或”运算,结果放入 ACC
1
Z
XOR
A, x
ACC 与立即数做“异或”运算,结果放入 ACC
1
Z
CPL
[m]
对数据存储器取反,结果放入数据存储器
CPLA [m]
对数据存储器取反,结果放入 ACC
1注
Z
1
Z
递增和递减
INCA
[m]
递增数据存储器,结果放入 ACC
INC
[m]
递增数据存储器,结果放入数据存储器
DECA [m]
递减数据存储器,结果放入 ACC
DEC
递减数据存储器,结果放入数据存储器
[m]
Rev. 1.50
136
1
Z
1注
Z
1
Z
1注
Z
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
助记符
说明
指令
周期
影响标志位
移位
RRA
[m]
数据存储器右移一位,结果放入 ACC
RR
[m]
数据存储器右移一位,结果放入数据存储器
RRCA [m]
带进位将数据存储器右移一位,结果放入 ACC
RRC
[m]
带进位将数据存储器右移一位,结果放入数据存储器
RLA
[m]
数据存储器左移一位,结果放入 ACC
RL
[m]
数据存储器左移一位,结果放入数据存储器
RLCA [m]
RLC
[m]
带进位将数据存储器左移一位,结果放入 ACC
带进位将数据存储器左移一位,结果放入数据存储器
1
无
1注
无
1
C
1注
C
1
无
1注
无
1
C
1
注
C
数据传送
MOV
A,[m] 将数据存储器送至 ACC
1
MOV
[m],A 将 ACC 送至数据存储器
1注
无
无
MOV
A, x
将立即数送至 ACC
1
无
CLR
[m].i
清除数据存储器的位
1注
无
SET
[m].i
置位数据存储器的位
1注
无
2
无
位运算
转移
addr 无条件跳转
JMP
注
无
SZ
[m]
如果数据存储器为零,则跳过下一条指令
1
SZA
[m]
数据存储器送至 ACC,如果内容为零,则跳过下一条指令
1注
无
SZ
[m].i 如果数据存储器的第 i 位为零,则跳过下一条指令
1注
无
注
无
递增数据存储器,如果结果为零,则跳过下一条指令
1注
无
[m]
递减数据存储器,如果结果为零,则跳过下一条指令
1
注
无
SIZA
[m]
递增数据存储器,将结果放入 ACC,如果结果为零,则跳过
下一条指令
1注
无
SDZA
[m]
递减数据存储器,将结果放入 ACC,如果结果为零,则跳过
下一条指令
1注
无
CALL
addr 子程序调用
2
无
2
无
2
无
2
无
读取特定页的 ROM 内容,并送至数据存储器和 TBLH
2注
无
TABRDC [m] 读取当前页的 ROM 内容,并送至数据存储器和 TBLH
2注
无
TABRDL [m] 读取最后页的 ROM 内容,并送至数据存储器和 TBLH
注
无
SNZ
[m].i 如果数据存储器的第 i 位不为零,则跳过下一条指令
SIZ
[m]
SDZ
从子程序返回
RET
RET
A, x 从子程序返回,并将立即数放入 ACC
从中断返回
RETI
1
查表
TABRD [m]
2
其它指令
NOP
CLR
Rev. 1.50
空指令
[m] 清除数据存储器
137
1
无
1注
无
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
助记符
指令
周期
说明
影响标志位
SET
[m] 置位数据存储器
1注
无
CLR
WDT 清除看门狗定时器
1
TO, PDF
CLR
WDT1 预清除看门狗定时器
1
TO, PDF
CLR
WDT2 预清除看门狗定时器
1
TO, PDF
1注
无
SWAP
[m] 交换数据存储器的高低字节,结果放入数据存储器
SWAPA
[m] 交换数据存储器的高低字节,结果放入 ACC
HALT
进入暂停模式
1
无
1
TO, PDF
注:1. 对跳转指令而言,如果比较的结果牵涉到跳转即需 2 个周期,如果没有发生跳转,则只需一个周期。
2. 任何指令若要改变 PCL 的内容将需要 2 个周期来执行。
3. 对于“CLR WDT1”或“CLR WDT2”指令而言,TO 和 PDF 标志位也许会受执行结果影响,“CLR
WDT1”和“CLR WDT2”被连续地执行后,TO 和 PDF 标志位会被清除,否则 TO 和 PDF 标志位
保持不变
Rev. 1.50
138
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
指令定义
ADC A, [m]
指令说明
功能表示
影响标志位
ADCM A, [m]
指令说明
功能表示
影响标志位
ADD A, [m]
指令说明
Add ACC to Data Memory with Carry
将指定的数据存储器、累加器内容和进位标志位相加,
结果存放到指定的数据存储器。
[m] ← ACC + [m] + C
OV、Z、AC、C
功能表示
影响标志位
Add Data Memory to ACC
将指定的数据存储器和累加器内容相加,
结果存放到累加器。
ACC ← ACC + [m]
OV、Z、AC、C
ADD A, x
指令说明
功能表示
影响标志位
Add immediate data to ACC
将累加器和立即数相加,结果存放到累加器。
ACC ← ACC + x
OV、Z、AC、C
ADDM A, [m]
指令说明
Add ACC to Data Memory
将指定的数据存储器和累加器内容相加,
结果存放到指定的数据存储器。
[m] ← ACC + [m]
OV、Z、AC、C
功能表示
影响标志位
AND A, [m]
指令说明
功能表示
影响标志位
Rev. 1.50
Add Data Memory to ACC with Carry
将指定的数据存储器、累加器内容以及进位标志相加,
结果存放到累加器。
ACC ← ACC + [m] + C
OV、Z、AC、C
Logical AND Data Memory to ACC
将累加器中的数据和指定数据存储器内容做逻辑与,
结果存放到累加器。
ACC ← ACC“AND”[m]
Z
139
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
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.50
140
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
CLR WDT1
指令说明
功能表示
影响标志位
CLR WDT2
指令说明
功能表示
影响标志位
CPL [m]
指令说明
功能表示
影响标志位
CPLA [m]
指令说明
功能表示
影响标志位
Rev. 1.50
Preclear Watchdog Timer
PDF 和 TO 标志位都被清 0。必须配合 CLR WDT2 一起使
用清除 WDT 计时器。当程序仅执行 CLR WDT1,而没有
执行 CLR WDT2 时,PDF 与 TO 保留原状态不变。
WDT ← 00H
TO & PDF ← 0
TO、PDF
Preclear Watchdog Timer
PDF 和 TO 标志位都被清 0。必须配合 CLR WDT1 一起使
用清除 WDT 计时器。当程序仅执行 CLR WDT2,而没有
执行 CLR WDT1 时,PDF 与 TO 保留原状态不变。
WDT ← 00H
TO & PDF ← 0
TO、PDF
Complement Data Memory
将指定数据存储器中的每一位取逻辑反,
相当于从 1 变 0 或 0 变 1。
[m] ← [m]
Z
Complement Data Memory with result in ACC
将指定数据存储器中的每一位取逻辑反,相当于从 1 变 0
或 0 变 1,而结果被储存回累加器且数据存储器中的内容
不变。
ACC ← [m]
Z
141
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
DAA [m]
指令说明
影响标志位
Decimal-Adjust ACC for addition with result in Data Memory
将累加器中的内容转换为 BCD(二进制转成十进制)码。
如果低四位的值大于“9”或 AC=1,那么 BCD 调整就执
行对原值加“6”,否则原值保持不变;如果高四位的值大
于“9”或 C=1,那么 BCD 调整就执行对原值加“6”。
BCD 转换实质上是根据累加器和标志位执行 00H,06H,
60H 或 66H 的加法运算,结果存放到数据存储器。只有进
位标志位 C 受影响,用来指示原始 BCD 的和是否大于
100,并可以进行双精度十进制数的加法运算。
[m] ← ACC + 00H 或
[m] ← ACC + 06H 或
[m] ← ACC + 60H 或
[m] ← ACC + 66H
C
DEC [m]
指令说明
功能表示
影响标志位
Decrement Data Memory
将指定数据存储器内容减 1。
[m] ← [m] – 1
Z
DECA [m]
指令说明
Decrement Data Memory with result in ACC
将指定数据存储器的内容减 1,把结果存放回累加器
并保持指定数据存储器的内容不变。
ACC ← [m] – 1
Z
功能表示
功能表示
影响标志位
HALT
指令说明
影响标志位
Enter power down mode
此指令终止程序执行并关掉系统时钟,RAM 和寄存器的内
容保持原状态,WDT 计数器和分频器被清“0”,暂停标
志位 PDF 被置位 1,WDT 溢出标志位 TO 被清 0。
TO ← 0
PDF ← 1
TO、PDF
INC [m]
指令说明
功能表示
影响标志位
Increment Data Memory
将指定数据存储器的内容加 1。
[m] ← [m] + 1
Z
功能表示
Rev. 1.50
142
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
INCA [m]
指令说明
功能表示
影响标志位
JMP addr
指令说明
功能表示
影响标志位
Jump unconditionally
程序计数器的内容无条件地由被指定的地址取代,
程序由新的地址继续执行。当新的地址被加载时,
必须插入一个空指令周期,所以此指令为 2 个周期的指令。
Program Counter ← addr
无
MOV A, [m]
指令说明
功能表示
影响标志位
Move Data Memory to ACC
将指定数据存储器的内容复制到累加器。
ACC ← [m]
无
MOV A, x
指令说明
功能表示
影响标志位
Move immediate data to ACC
将 8 位立即数载入累加器。
ACC ← x
无
MOV [m], A
指令说明
功能表示
影响标志位
Move ACC to Data Memory
将累加器的内容复制到指定的数据存储器。
[m] ← ACC
无
NOP
指令说明
功能表示
影响标志位
No operation
空操作,接下来顺序执行下一条指令。
PC ← PC+1
OR A, [m]
指令说明
Logical OR Data Memory to ACC
将累加器中的数据和指定的数据存储器内容逻辑或,
结果存放到累加器。
ACC ← ACC“OR”[m]
Z
功能表示
影响标志位
Rev. 1.50
Increment Data Memory with result in ACC
将指定数据存储器的内容加 1,结果存放回累加器并保持
指定的数据存储器内容不变。
ACC ← [m] + 1
Z
无
143
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
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
指令说明
功能表示
影响标志位
RETI
指令说明
功能表示
影响标志位
RL [m]
指令说明
功能表示
影响标志位
Rev. 1.50
Return from subroutine
将堆栈寄存器中的程序计数器值恢复,
程序由取回的地址继续执行。
Program Counter ← Stack
无
Return from subroutine and load immediate data to ACC
将堆栈寄存器中的程序计数器值恢复且累加器载入指定的
立即数,程序由取回的地址继续执行。
Program Counter ← Stack
ACC ← x
无
Return from interrupt
将堆栈寄存器中的程序计数器值恢复且中断功能通过设置
EMI 位重新使能。EMI 是控制中断使能的主控制位。如果
在执行 RETI 指令之前还有中断未被相应,则这个中断将
在返回主程序之前被相应。
Program Counter ← Stack
EMI ← 1
无
Rotate Data Memory left
将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位。
[m].(i+1) ← [m].i (i=0~6)
[m].0 ← [m].7
无
144
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
RLA [m]
指令说明
功能表示
影响标志位
RLC [m]
指令说明
功能表示
影响标志位
RLC A [m]
指令说明
功能表示
影响标志位
RR [m]
指令说明
功能表示
影响标志位
RRA [m]
指令说明
功能表示
影响标志位
Rev. 1.50
Rotate Data Memory left with result in ACC
将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位,
结果送到累加器,而指定数据存储器的内容保持不变。
ACC.(i+1) ← [m].i (i=0~6)
ACC.0 ← [m].7
无
Rotate Data Memory Left through Carry
将指定数据存储器的内容连同进位标志左移 1 位,
第 7 位取代进位标志且原本的进位标志移到第 0 位。
[m].(i+1) ← [m].i (i=0~6)
[m].0 ← C
C ← [m].7
C
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
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
无
145
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
RRC [m]
指令说明
功能表示
影响标志位
RRCA [m]
指令说明
功能表示
影响标志位
SBC A, [m]
指令说明
功能表示
影响标志位
SBCM A, [m]
指令说明
功能表示
影响标志位
SDZ [m]
指令说明
功能表示
影响标志位
Rev. 1.50
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
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 跳过下一条指令执行
无
146
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
SDZA [m]
指令说明
功能表示
影响标志位
将指定数据存储器内容减 1,判断是否为 0,如果为 0 则跳
过下一条指令,此结果将存放到累加器,但指定数据存储
器内容不变。由于取得下一个指令时会要求插入一个空指
令周期,所以此指令为 2 个周期的指令。如果结果不为 0,
则程序继续执行下一条指令。
ACC ← [m]-1,如果 ACC=0 跳过下一条指令执行
无
SET [m]
指令说明
功能表示
影响标志位
Set Data Memory
将指定数据存储器的每一位设置为 1。
[m] ← FFH
无
SET [m].i
指令说明
功能表示
影响标志位
Set bit of Data Memory
将指定数据存储器的第 i 位置位为 1。
[m].i ← 1
无
SIZ [m]
指令说明
Skip if increment Data Memory is 0
将指定的数据存储器的内容加 1,判断是否为 0,若为 0 则
跳过下一条指令。由于取得下一个指令时会要求插入一个
空指令周期,所以此指令为 2 个周期的指令。如果结果不
为 0,则程序继续执行下一条指令。
[m] ← [m]+1,如果 [m]=0 跳过下一条指令执行
无
功能表示
影响标志位
SIZA [m]
指令说明
功能表示
影响标志位
Rev. 1.50
Decrement data memory and place result in ACC,skip if 0
Skip if increment Data Memory is zero with result in ACC
将指定数据存储器的内容加 1,判断是否为 0,如果为 0 则
跳过下一条指令,此结果会被存放到累加器,但是指定数
据存储器的内容不变。由于取得下一个指令时会要求插入
一个空指令周期,所以此指令为 2 个周期的指令。如果结
果不为 0,则程序继续执行下一条指令。
ACC ← [m]+1,如果 ACC=0 跳过下一条指令执行
无
147
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
SNZ [m].i
指令说明
功能表示
影响标志位
SUB A, [m]
指令说明
功能表示
影响标志位
SUBM A, [m]
指令说明
功能表示
影响标志位
SUB A, x
指令说明
Subtract Data Memory from ACC
将累加器的内容减去指定的数据存储器的数据,把结果存
放到累加器。如果结果为负,C 标志位清除为 0,反之结果
为正或 0,C 标志位设置为 1。
ACC ← ACC – [m]
OV、Z、AC、C、SC、CZ
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
无
功能表示
影响标志位
Rev. 1.50
Skip if bit i of Data Memory is not 0
判断指定数据存储器的第 i 位,若不为 0,则程序跳过下一
条指令执行。由于取得下一个指令时会要求插入一个空指
令周期,所以此指令为 2 个周期的指令。如果结果为 0,
则程序继续执行下一条指令。
如果 [m].i≠0,跳过下一条指令执行
无
148
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
SZ [m]
指令说明
功能表示
影响标志位
SZA [m]
指令说明
功能表示
影响标志位
SZ [m].i
指令说明
功能表示
影响标志位
TABRD [m]
指令说明
功能表示
影响标志位
TABRDC [m]
指令说明
功能表示
影响标志位
Rev. 1.50
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,跳过下一条指令执行
无
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 (current page) to TBLH and Data Memory
将表格指针 TBLP 所指的程序代码低字节(当前页)移至
指定的数据存储器且将高字节移至 TBLH。
[m] ← 程序代码 ( 低字节 )
TBLH ← 程序代码 ( 高字节 )
无
149
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
TABRDL [m]
指令说明
功能表示
影响标志位
XOR A, [m]
指令说明
功能表示
影响标志位
XORM A, [m]
指令说明
Rev. 1.50
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
150
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
封装信息
请注意,这里提供的封装信息仅作为参考。由于这个信息经常更新,提醒用户
咨询 Holtek 网站以获取最新版本的封装信息。
封裝信息的相关内容如下所示,点击可链接至 Holtek 网站相关信息页面。
● 封装信息(包括外形尺寸、包装带和卷轴规格)
● 封装材料信息
● 纸箱信息
Rev. 1.50
151
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
44-pin LQFP (10mm×10mm) (FP2.0mm) 外形尺寸
符号
A
B
C
D
E
F
G
H
I
J
K
α
符号
A
B
C
D
E
F
G
H
I
J
K
α
Rev. 1.50
最小
—
—
—
—
—
0.012
0.053
—
0.002
0.018
0.004
0°
尺寸 ( 单位:inch)
正常
0.472 BSC
0.394 BSC
0.472 BSC
0.394 BSC
0.032 BSC
0.015
0.055
—
—
0.024
—
—
最大
—
—
—
—
—
0.018
0.057
0.063
0.006
0.030
0.008
7°
最小
—
—
—
—
—
0.30
1.35
—
0.05
0.45
0.09
0°
尺寸 ( 单位:mm)
正常
12.00 BSC
10.00 BSC
12.00 BSC
10.00 BSC
0.80 BSC
0.37
1.40
—
—
0.60
—
—
最大
—
—
—
—
—
0.45
1.45
1.60
0.15
0.75
0.20
7°
152
2014-08-13
HT67F488/HT67F489
标准 A/D + LCD 型 Flash 单片机
Copyright© 2014 by HOLTEK SEMICONDUCTOR INC.
使用指南中所出现的信息在出版当时相信是正确的,然而盛群对于说明书的使用不负任何责任。文
中提到的应用目的仅仅是用来做说明,盛群不保证或表示这些没有进一步修改的应用将是适当的,
也不推荐它的产品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使
用于救生、维生从机或系统中做为关键从机。盛群拥有不事先通知而修改产品的权利,对于最新的
信息,请参考我们的网址 http://www.holtek.com.tw.
Rev. 1.50
153
2014-08-13