HT47C10L
特性
工作电压
1.2V~2.2V
8 个双向输入/输出口
内置 32kHz/128kHz RC 振荡器(掩膜选项
128kHz 振荡只提供给 EL 输出)
看门狗定时器
1K×16 程序存储器 ROM
32×8 数据存储器 RAM
一个时基(Time Base)
一组蜂鸣器输出
一组EL 输出
电压可调的低电压检测功能
概述
HT47C10L 是 8 位高性能精简指令集单片机
特别适用于体温计产品
合
8
位
R-F
型低电压
Mask
单片机
HALT 和唤醒功能可降低功耗
9×4 段
1/4duty 1/2bias 的液晶显示驱动电路
RC 型 A/D 转换通道
2 层硬件堆栈
位操作指令
查表指令 表格内容字长 16 位
当系统时钟为 32768Hz 时 指令周期为 122µs
指令执行时间为 1 或 2 个指令周期
63 条指令
44-pin QFP 封装
单指令周期和两级流水线结构 使其适合高速应用的场
方框图
P r o g r a m
I n s t r u c t i o n
R e g i s t e r
I n s t r u c t i o n
D e c o d e r
G e n e r a t o r
f
S Y S
1 2 8 k H z / 3 2 k H z
R C O s c i l l a t o r
* M a s k O p t i o n
C 1
C 2
R O M
T i m i n g
= 3 2 k H z
D o u b l e
V o l t a g e
V C C
P r o g r a m
C o u n t e r
C O M 0 ~ C O M 3
M P
A L U
S h i f t e r
A C C
S T A C K 1
S T A C K 0
M
U
X
M U X
L C D D r i v e r
I n t e r r u p t
C i r c u i t
D A T A
M e m o r y
S T A T U S
B P
L C D
M e m o r y
S E G 0 ~ S E G 8
I N T C
T i m e r A
T i m e r B
T i m e B a s e
W D T
L C D B Z / B Z
E L 1 / E L 2
P o r t A
P A
L V D
V D D
V S S
R E S
T E S T 1
T E S T 2
A / D C l o c k
P A 0 / B Z
P A 1 / B Z
P A 2 / E L 1
P A 3 / E L 2
P A 4
P A 5
P A 6
P A 7
L V D
R C
T y p e
A / D
C o n v e r t e r
f
T N 1
T N 0
P u l s e W i d t h
M e a s u r e m e n t
M o d e C o n t r o l
= 3 2 k H z
S Y S
T E
R C I N
R R E F
R S E N
S y s t e m C l o c k ( f
T N 1
T N 0
T O N
)
S Y S
Rev. 1.40 1 2003-11-20
HT47C10L
引脚图
Pad图
N C
L V D
P A 0 / B Z
P A 1 / B Z
P A 2 / E L 1
P A 3 / E L 2
P A 4
P A 5
P A 6
P A 7
N C
T E S T 1
T E S T 2
V D D
R E S
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2
R C I N
V S S
N C
N C
N C
N C
H T 4 7 C 1 0 L
4 4 Q F P - A
R S E N
N C
N C
R R E F
C 2
C 1
C O M 0
N C
V C C
N C
3 43 53 63 73 83 94 04 14 24 34 4
3 3
N C
3 2
S E G 0
3 1
S E G 1
3 0
S E G 2
2 9
S E G 3
2 8
S E G 4
2 7
S E G 5
S E G 6
2 6
2 5
S E G 7
S E G 8
2 4
2 3
C O M 3
C O M 2
C O M 1
T E S T 1
R E S
T R I M 5
T R I M 6
L V D
P A 0 / B Z
P A 1 / B Z
P A 2 / E L 1
P A 3 / E L 2
P A 4
P A 5
P A 6
P A 7
T E S T 2
3 8
3 9
1
2
3
4
5
6
7
8
9
1 0
1 1
1 3
1 2
T R I M 4
V D D
3 6
3 7
1 4
1 6
1 5
T R I M 1
T R I M 2
T R I M 3
3 5
3 4
3 3
( 0 , 0 )
V C C
C 2
C 1
3 0
3 2
3 1
S E G 0
2 9
S E G 1
2 8
S E G 2
2 7
S E G 3
2 6
S E G 4
2 5
S E G 5
2 4
S E G 6
2 3
S E G 7
2 2
S E G 8
2 1
C O M 3
2 0
C O M 2
1 9
C O M 1
1 8
C O M 0
1 7
V S S
R R E F
R S E N
R C I N
*IC 的衬底要连接到 PCB 板上的 VSS
Rev. 1.40 2 2003-11-20
HT47C10L
引脚说明
RES
PA0/BZ
PA1/
PA2/EL1
PA3/EL2
PA4~PA7
VSS
VCC C1 C2
SEG8~SEG0
COM3~COM0
VDD
LVD B
RCIN
RREF
RSEN
TEST1
TEST2
TRIM1~TRIM6
引脚名称 输入/输出 功能
BZ
输入 斯密特触发复位输入
2 位双向输入/输出口
输入/输出
输入/输出
输入/输出
输出 LCD 驱动的 Segment 和 Common 输出
输入 RC 型 A/D 转换 RC 振荡输入引脚
输出 RC 型 A/D 转换参考电阻连接引脚
输出 RC 型 A/D 转换传感器电阻连接引脚
输入
输入 测试输入引脚 正常使用时不必连接
BZ/
自内部蜂鸣器时钟发生器
阻的斯密特输入
2 位双向输入/输出口
EL1/EL2 输出共用引脚
内部 EL 时钟发生器
斯密特输入
4 位双向输入/输出口
为 CMOS 输出或带上拉电阻的斯密特输入
负电源
倍压电路
VCC
C1
正电源
低电压检测 需在 VSS 与 LV D 之间接一个电阻
测试输入引脚
正常使用时不必连接
低电平有效
每一位都可以作为唤醒输入
输出共用引脚 一旦 PA 0/ PA1 设置为蜂鸣器输出 其信号来
BZ
可由软件设置为 CMOS 输出或带上拉电
每一位都可以作为唤醒输入
一旦 PA 2/ PA3 设置为 EL 输出 其信号来自
可由软件设置为 CMOS 输出或带上拉电阻的
每一位都可以作为唤醒输入 可由软件设置
接地
LCD 工作电压
C2 VCC 开关引脚
VCC=2×VDD
带上拉电阻
需要在 VCC 与 VSS 之间接一个电容
需要在 C1 与 C2 之间接一个电容
PA0/PA1 与
PA2/PA3 与
极限参数
电源供应电压………….-0.3V~2.5V 储存温度………….-50
端口输入电压………….V
注 这里只强调额定功率 超过极限参数所规定的范围将对芯片造成损害 无法预期芯片在上述标示范围外的工作状态 而
且若长期在标示范围外的条件下工作 可能影响芯片的可靠性
~125
-0.3V~VDD+0.3V 工作温度………..….-40 ~85
SS
Rev. 1.40 3 2003-11-20
HT47C10L
直流电气特性
符号 参数
VDD
VCC
V
I
DD1
工作电压
LCD 电压
低电压检测电压
LVD
工作电流
测试条件
V
条件
DD
— — 1.2 1.5 2.2 V
— VCC=2×VDD 2.4 3 4.4 V
—
1.5V
*R
=30kΩ
LVD
无负载
f
=32kHz A/D 关闭
SYS
f
OSC
=128kHz
LVD 关闭
I
I
DD2
DD3
工作电流
工作电流
1.5V
1.5V
无负载
f
=32kHz A/D 打开
SYS
*R=30 kΩ
无负载
f
=32kHz A/D 关闭
SYS
f
=128kHz
OSC
LVD 关闭
*C=2200pF
f
=32kHz
OSC
LVD 关闭
I
DD4
I
LVD
I
STB1
I
STB2
工作电流
LVD 电流
静态电流(LVD 关闭
LCD 关闭)
静态电流(LCD 打开)
1.5V
1.5V
1.5V
1.5V
无负载
f
=32kHz A/D 打开
SYS
*R=30 kΩ
无负载
A/D 关闭
无负载
=32kHz A/D 关闭
f
SYS
f
=32kHz
OSC
LVD 关闭
*C=2200pF
LVD 打开
系统 HALT
LVD 关闭
f
=128kHz
OSC
LVD 关闭
I
STB3
静态电流(LCD 打开)
1.5V
无负载
=32kHz A/D 关闭
f
SYS
f
OSC
=32kHz
LVD 关闭
V
V
V
V
输入/输出口的低电平
IL1
输入电压
输入/输出口的高电平
IH1
输入电压
低电平输入电压(
IL2
高电平输入电压(
IH2
RES
RES
1.5V — 0 — 0.3VDD V
1.5V — 0.7V
1.5V — 0 — 0.4V
)
1.5V — 0.9V
)
灌电流
I
OL1
PA0(BZ )
PA2(EL1)
PA1(BZ)
PA3(EL2)
1.5V V
=0.15V 0.5 0.8 — mA
OL
PA4~PA7
源电流
I
OH1
PA0(BZ )
PA2(EL1)
PA1(BZ)
PA3(EL2)
1.5V V
=1.35V -0.3 -0.6 — mA
OH
PA4~PA7
I
Common 口灌电流
Common 口源电流
Segment 口灌电流
Segment 口源电流
输入/输出口上拉电阻
PH1
PH2
*R 表示 RC 型 A/D 转换的外接电阻 *C 表示 RC 型 A/D 转换的外接电容 *R
TEST
脚上拉电阻
注
I
I
I
R
R
OL2
OH2
OL3
OH3
1.5V VOL=0.3V(1/2bias) 50 100 — µA
1.5V VOH=2.7V(1/2bias) -50 -100 — µA
1.5V VOL=0.3V(1/2bias) 50 100 — µA
1.5V VOH=2.7V(1/2bias) -50 -100 — µA
1.5V VIL=0V 75 150 300
1.5V V
=0V 75 150 300
IL
Ta=25
最小 标准 最大 单位
1.25 1.3 1.35 V
— 9 20 µA
— 26 50 µA
— 5 10 µA
— 23 40 µA
— 50 100 µA
— — 1 µA
— 7 15 µA
— 2.5 5 µA
— 1.5 V
DD
V
DD
— VDD V
DD
kΩ
kΩ
的值不同 对应的检测电压也不同
LVD
Rev. 1.40 4 2003-11-20
HT47C10L
交流电气特性
符号 参数
f
振荡器时钟(32kHz)
32k
f
128k
t
RES
fAD
振荡器时钟(128kHz)
外部复位低电平脉宽
A/D 转换频率
V
1.5V
1.5V
1.5V
1.5V
测试条件
条件
DD
最小 标准 最大 单位
26 32 40 kHz
102 128 160 kHz
100 — — µs
— — 50 kHz
系统功能说明
指令执行时序
HT47C10L 系统频率来自 32kHz 的内部 RC 振荡
T2 T3 T4)
一个指令周期包括四个系统时钟周期
指令的读取和执行是以流水线方式进行的, 这种方式在一个指令周期进行读取指令操作
指令周期进行解码与执行该指令
的指令要改变程序计数器的值
因此 流水线方式使多数指令能在一个周期内执行完成 但如果渉及到
就需要花两个指令周期来完成这一条指令
S y s t e m C l o c k
I n s t r u c t i o n C l o c k
T 1 T 2 T 3 T 4 T 1 T 2 T 3 T 4 T 1 T 2 T 3 T 4
芯片将此频率分成四个互不重叠的时钟周期(T1
Ta=25
而在下一个
P C
P C P C + 1 P C + 2
F e t c h I N S T ( P C )
E x e c u t e I N S T ( P C - 1 )
F e t c h I N S T ( P C + 1 )
E x e c u t e I N S T ( P C )
指令执行时序
F e t c h I N S T ( P C + 2 )
E x e c u t e I N S T ( P C + 1 )
程序计数器 — PC
10 位的程序计数器(PC)用来控制程序存储器 ROM 中指令执行的顺序
取得指令码以后
程序计数器会自动加一 指向下一个指令码的地址 但如果执行跳转 条件跳跃
最大可以访问 1024 个地址
向 PCL 赋值 子程序调用 初始化复位 内部中断 外部中断 子程序返回等操作时
相关的地址而非下一条指令地址
当遇到条件跳跃指令且符合条件时
一个空指令周期
随后才能取得正确的指令 反之 就会顺序执行下一条指令
程序计数器的低字节(PCL)是一个可读写的寄存器(06H)
范围为当前页 256 个地址
当遇到控制转移指令时
模式
初始化复位
定时/计数器中断
时基中断
条件跳跃
装载 PCL
跳转 子程序调用
从子程序返回
*9 ~ *0
注
S9 ~ S0 堆栈寄存器位 @7 ~ @0
程序计数器位 #9 ~ #0 指令代码位
当前指令执行过程中读取的下一条指令会被丢弃 取而代之的是
对 PCL 赋值将产生一个短跳转动作 跳转的
系统也会插入一个空指令周期
程序计数器
*9 *8 *7 *6 *5 *4 *3 *2 *1 *0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0
PC+2
*9 *8 @7 @6 @5 @4 @3 @2 @1 @0
#9 #8 #7 #6 #5 #4 #3 #2 #1 #0
S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
程序计数器
PCL 位
PC 会载入与指令
Rev. 1.40 5 2003-11-20
HT47C10L
程序存储器
程序存储器用来存放要执行的指令代码
程序存储器空间可以用程序计数器或表格指针进行寻址
以下列出的程序存储器地址是系统专为特殊用途而保留的
地址000H
该地址为程序初始化保留
开始执行
地址004H
该地址为定时/计数器中断服务程序保留
发生溢出
地址开始执行
地址 008H
该地址为时基(Time Base)中断服务程序保留
溢出
如果中断允许且堆栈未满 则程序会跳转到 008H 地址
开始执行
表格区
ROM 空间的任何地址都可做为查表使用
TABRDC [m] (查当前页表格 1 页=256 个字)和 TABRDL
(查最后页表格)
[m]
格内容高字节传送到 TBLH 寄存器(08H)
到表格内容高字节寄存器 TBLH
写寄存器(07H)
程序(ISR)都用到查表指令
也就是说 要避免在主程序和中断服务程序中都使用查表指令 但如果必须这样做的话 我们可以在查表
指令前先将中断禁止
两个指令周期的执行时间
堆栈寄存器
堆栈寄存器是特殊的存储器空间
据存储器的一部分
栈指针(SP)来实现的
值会被压入堆栈
内容弹出
如果堆栈已满
抑制
直到堆栈指针(执行 RET 或 RETI 指令)发生递减 中断才会被响应 这个功能可以防止堆栈溢出
使得程序员易于使用这种结构 同样 如果堆栈已满 并且发生了子程序调用 那么堆栈会发生溢出 首
先进入堆栈的内容将会丢失
数据存储器
数据存储器由 54
储器单元大多数是可读/写的
特殊功能寄存器包括间接寻址寄存器 0(00H)
1(02H)
计数器低字节寄存器(PCL
时基控制寄存器(TBC
ROM
以及一些数据 表格和中断入口 程序存储器有 1024×16 位
系统复位后 程序总是从 000H
当定时/计数器
如果中断允许且堆栈未满 则程序会跳转到 004H
当时基发生
0 0 0 H
0 0 4 H
0 0 8 H
0 0 C H
0 1 0 H
n 0 0 H
n F F H
D e v i c e I n i t i a l i z a t i o n P r o g r a m
T i m e r / e v e n t C o u n t e r I n t e r r u p t S u b r o u t i n e
T i m e B a s e I n t e r r u p t S u b r o u t i n e
L o o k - u p T a b l e ( 2 5 6 w o r d s )
查表指令
会把表格内容低字节传送给[m] 而表
3 F F H
L o o k - u p T a b l e ( 2 5 6 w o r d s )
1 6 b i t s
N o t e : n r a n g e s f r o m 0 t o 3
只有表格内容的低字节被传送到目标地址中 而高字节被传送
表格内容高字节寄存器 TBLH 是只读寄存器 表格指针(TBLP)是可读/
用来指明表格地址 在查表之前 要先将表格地址写入 TBLP 中 如果主程序和中断服务
主程序中 TBLH 的值可能会因为 ISR 中执行的查表指令而发生变化 产生错误
在保存了 TBLH 的值后再开放中断以避免发生错误 所有与表格有关的指令都需要
指令
这里提到的表格区都可以做为正常的程序存储器来使用
表格区
*9 *8 *7 *6 *5 *4 *3 *2 *1 *0
TABRDC [m] P9 P8 @7 @6 @5 @4 @3 @2 @1 @0
TABRDL [m] 1 1 @7 @6 @5 @4 @3 @2 @1 @0
表格区
*9~*0
注
表格地址位 @7~@0 表格指针位 P9~P8 当前程序指针位
STACK
用来保存 PC 的值
HT47C10L 有 2 级堆栈
堆栈寄存器既不是数
也不是程序存储器的一部分 而且它既不能读出 也不能写入 堆栈的使用是通过堆
堆栈指针也不能读出或写入 当发生子程序调用或中断响应时 程序计数器(PC)的
在子程序调用结束或中断响应结束时(执行指令 RET 或 RETI) 堆栈将原先压入堆栈的
重新装入程序计数器中 在系统复位后 堆栈指针会指向堆栈顶部
并且发生了不可屏蔽的中断 那么只有中断请求标志会被记录下来 而中断响应会被
只有最后的 2 个返回地址会被保留
RAM
8 位组成
分为两个功能区间 特殊功能寄存器和通用数据存储器(32
但有些只读的
间接寻址指针寄存器 1(MP1
06H)
09H)
状态标志寄存器(STATUS
间接寻址指针寄存器 0(MP0
03H)
存储器段指针寄存器(BP
表格指针寄存器(TBLP
07H)
0AH)
间接寻址寄存器
04H)
01H)
累加器(ACC
表格内容高字节寄存器(TBLH
中断控制寄存器(INTC
0BH)
8)
05H)
数据存
08H)
输入/输
P r o g r a m
R O M
程序
Rev. 1.40 6 2003-11-20
HT47C10L
出寄存器(PA
计数器 A 高
12H)
低位字节寄存器(TMRAH
定时/计数器控制寄存器(TMRC
字节寄存器(TMRBH
制寄存器(ADCR
输入/输出控制寄存器(PAC
13H)
20H TMRAL 21H)
22H)
定时/计数器 B 高 低位
23H TMRBL 24H) RC 型 A/D 转换控
25H)
掩膜设置寄存器(OPT1
26H OPT2
定时/
27H)
其余在 60H 之前的空间保留给系统以后扩展使用
地址的返回值为
00H
来存储数据和控制信息
通用数据寄存器地址从 60H 到 7FH 用
所有的数据存储器单元都能直接执行算术
减和循环操作
SET[m].i
址指针 MP0 和 MP1 进行间接寻址
除了一些特殊位外 数据存储器的每一位都可由
置位或由
CLR[m].i
复位 而且都可以通过间接寻
逻辑 递增 递
读取这些
间接寻址寄存器
地址 00H 和 02H 是间接寻址寄存器
并无实际的物理区存在
任何对[00H]和 [02H] 的读/ 写操作 都是访问由 MP0(01H) 和
MP1(03H)所指向的 RAM 单元
值为 00H
间接写入此地址 不会产生任何操作
间接寻址寄存器之间不支持数据传送功能
MP0 和 MP1 是 8 位寄存器
MP0 只能用于数据存储器
显示存储器
间接读取 00H 和 02H 地址得到的
间接寻址指针
用来指出间接寻址中 RAM 的地址
而 MP1 能用于数据存储器和 LCD
累加器
累加器(ACC)与算术逻辑单元(ALU)有密切关系
RAM 地址 05H
须经过累加器
做为运算的立即数据 存储器之间的数据传送必
它对应于
算术逻辑单元
算术逻辑单元(ALU)是执行 8 位算术
提供有以下功能
算术运算(ADD
逻辑运算(AND
移位运算(PL
递增和递减(INC
分支判断(SZ
ALU 不仅可以储存数据运算的结果
ALU
逻辑运算的电路 它
ADC SUB SBC DAA)
OR XOR CPL)
RR RLC RRC)
DEC)
SNZ SIZ SDZ…)
还会改变状态寄存器的值
I n d i r e c t A d d r e s s i n g R e g i s t e r 0
0 0 H
0 1 H
I n d i r e c t A d d r e s s i n g R e g i s t e r 1
0 2 H
0 3 H
0 4 H
0 5 H
0 6 H
0 7 H
0 8 H
0 9 H
0 A H
0 B H
0 C H
0 D H
0 E H
0 F H
1 0 H
1 1 H
1 2 H
1 3 H
1 4 H
1 5 H
1 6 H
1 7 H
1 8 H
1 9 H
1 A H
1 B H
1 C H
1 D H
1 E H
1 F H
2 0 H
2 1 H
2 2 H
2 3 H
2 4 H
2 5 H
2 6 H
2 7 H
2 8 H
5 F H
6 0 H
7 F H
G e n e r a l - P u r p o s e
D a t a M e m o r y
M P 0
M P 1
B P
A C C
P C L
T B L P
T B L H
T B C
S T A T U S
I N T C
P A
P A C
T M R A H
T M R A L
T M R C
T M R B H
T M R B L
A D C R
O P T 1
O P T 2
( 3 2 B y t e s )
S p e c i a l P u r p o s e
D a t a M e m o r y
: U n u s e d
R e a d a s " 0 0 "
状态寄存器
8 位的状态寄存器(0AH)
STATUS
由零标志位(Z) 进位标志位(C) 辅助进位标志位(AC) 溢出标志位(OV)
暂停标志位(PDF)和看门狗定时器溢出标志位(TO)组成 该寄存器不仅记录状态信息 而且还控制操作顺
序
除了 PDF 和 TO 标志外
改变 PDF 和 TO 的值
门狗溢出
CLR WDT 指令或 HALT 指令的影响 PDF 标志只受系统上电 CLR WDT 指令或
状态寄存器的其它位都可以用指令改变 任何对状态寄存器的写操作都不会
对状态寄存器的操作可能会导致与预期不一样的结果
TO 标志只受系统上电
看
HALT 指令的影响
标志位 Z
在进入中断程序或子程序调用时
且子程序会影响状态寄存器的内容
OV AC 和 C 反映的是最近一次操作的状态
状态寄存器不会被自动压入堆栈 如果状态寄存器的内容是重要的 而
那么程序员必须事先将 STATUS 的值保存好
Rev. 1.40 7 2003-11-20
HT47C10L
符号 位 功能
C 0
AC 1
Z 2
OV 3
PDF 4
TO 5
6
7
中断
HT47C10L 提供了一个定时器/计数器中断和一个时基中断
断控制位和中断请求标志
寄存器 位 标志 功能
INTC
(0BH)
只要有中断子程序被服务
止中断嵌套
个中断需要响应
并不会被响应
这时如果有其它中断发生 只有中断请求标志会被记录下来 如果在中断服务程序中有另一
程序员可以置位 EMI 和 INTC 所对应的位 以便进行中断嵌套 如果堆栈已满 则中断
一直到堆栈指针(SP)发生递减后才会响应 如果需要中断立即得到响应 应避免堆栈饱和
当有中断被服务
程序计数器的内容被压入堆栈
序的控制流程的话
程序员应该事先将这些数据保存起来
内部定时/计数器中断是由定时/计数器溢出触发的
如果中断允许 且堆栈未满 当定时/计数器 A 或定时/计数器 B 发生中断时 会产生地址 04H 的子程序调
用
而中断请求标志 TF 和总中断控制位 EMI 会被清除 以禁止其它中断响应
时基中断是由置位时基溢出触发的
且堆栈未满 当发生时基中断时 会产生地址 08H 的子程序调用 而中断请求标志 TBF 和总中断控制位
EMI 会被清除
以禁止其它中断响应
在执行中断子程序期间
置位(当然
此时堆栈未满) 如果要从中断子程序返回 只要执行 RET 或 RETI 指令即可 其中
指令会自动置位 EMI
如果中断在两个连续的 T2 脉冲的上升沿之间发生
该中断会被服务 如果同时发生中断请求 其优先级如下表示 也可以通过设定各中断相关的控制位来改
变优先级
Rev. 1.40 8 2003-11-20
如果在加法运算中结果产生了进位或在减法运算中结果不产生借位,
则 C 被置位
反之
C 被清除
它也可被循环移位指令影响
如果在加法运算中低 4 位产生了进位或减法运算中低 4 位不产生借
位
则 AC 被置位 反之
如果算术或逻辑运算的结果为零
如果运算结果向最高位进位
置位
系统上电或执行
令
系统上电
定时溢出
未用
未用
反之
OV 被清除
PDF 被置位
执行
TO 被置位
读出为
读出为
0
0
CLR WDT
CLR WDT
中断控制位用来设置中断允许/禁止
0 EMI
1 ETI
2 ETBI
3 —
4 TF
5 TBF
6 —
7 —
总中断控制位(1=允许
定时/计数器中断控制位(1=允许
时基中断控制位(1=允许
未用
定时/计数器中断请求标志(1=有
时基中断请求标志(1=有
未用
未用
INTC 寄存器
AC 被清除
但最高位并不产生进位输出 则 OV 被
状态寄存器
读出为
读出为
读出为
则 Z 被置位 反之
指令
或
PDF 被清除
HALT
指令
中断控制寄存器(INTC
0=禁止)
0
0
0
Z 被清除
执行
HALT
TO 被清除 WDT
0=禁止)
0=禁止)
0=无)
0=无)
指
0BH) 包含了中
其余的中断全部都被自动禁止(通过清除 EMI 位) 这种做法的目的在于防
系统会将程序计数器值压入堆栈 然后再跳转至中断服务程序的入口 但这时只有
如果其它寄存器和状态寄存器的内容会被中断程序改变 从而会破坏主程
其中断请求标志(TF
INTC 的第 4 位)会被置位
其中断请求标志(TBF
INTC 的第 5 位)会被置位
如果中断允许
其它的中断请求会被屏蔽 直到执行 RETI 指令或 EMI 和相关中断控制位被
RETI
以允许中断服务 而 RET 则不会
且中断响应允许 那么在下两个 T2 脉冲之间
HT47C10L
No.
a
b
中断源 优先级 中断向量
定时/计数器中断
时基中断
1 04H
2 08H
振荡电路
HT47C10L 提供 32kHz 或 128kHz 的内部 RC 振荡(由掩膜选项决定)
HALT 模式下
可由掩膜选择 RC 振荡是否停止 用户可以选择 128kHz 振荡频率作为 EL 输出
但系统时钟只能用 32kHz 在
看门狗定时器
看门狗定时器的时钟来源有两种
看门狗振荡器或指令时钟(系统时钟 4 分频) 由掩膜选项设置 看
门狗定时器主要用来防止程序运行故障和程序跳入一死循环而导致不可预测的结果
膜选项设置为打开或关闭
在 HALT 状态时
从 HALT 模式中唤醒
在正常运行时
复位
输入到
RES
只有程序计数器 PC 和堆栈指针 SP 被复位 要清除 WDT 的值可以有三种方法 外部复位(低电平
端) 清除看门狗指令或 HALT 指令 清除看门狗指令为
WDT 溢出会使系统复位并置位 TO 标志
指令就会清除 WDT
WDT 的溢出周期为 f
如果在关闭状态 所有与 WDT 有关的指令操作都是没有作用的
如果 RC 振荡器继续工作
WDT 将继续计数
而且
WDT 的计时溢出将导致系统
但在 HALT 模式下
CLR WDT
否则
WDT 会由于溢出而使系统复位
16
/215fs/2
s
因为
CLR WDT 指令只能清除最后两级 WDT 分频器
多功能计时器
HT47C10L 有一个多功能定时器
器由一个 8 阶分频器及一个 7 位预分频器所组成
驱动电路和蜂鸣器提供时钟信号(fs/8)
f
f
S Y S
= 3 2 7 6 8 H z
S
8 - s t a g e D i v i d e r
L C D D r i v e r fS/ 8
提供看门狗定时器(WDT)和时基产生不同溢出周期 此多功能定时
使用的时钟源来自系统时钟 多功能定时器同时为 LCD
B u z z e r f
/ 4 ~ fS/ 3 2
S
fS/ 2
8
7 - b i t P r e s c a l e r
8 t o 1 M u x .
fS/ 2
1 5
T F F
R
R T 0 ~ R T 2
1 6
fS/ 2
T F F
R
T i m e - o u t R e s e t
/ 2 ~ fS/ 2
f
S
W D T C l e a r
看门狗定时器可由掩
WDT 溢出只产生
只要执行
1 5 1 6
CLR WDT
热
T i m e B a s e O u t
多功能计时器
时基
8
时基提供一个周期性溢出时间中断
RT1 和 RT0 (TB C 第 2 1 0 位)之中
RT2
的中断请求标志(TBF)会被置位
址
进入 HALT 模式后 时基仍然工作 并且可以唤醒 HALT 模式 如果在进入 HALT 模式之前将
置
的话 则时基信号的溢出就不能唤醒系统
1
如果中断允许 且此时堆栈尚有空间 则产生一个中断服务到 08H 的地
它的溢出时间范围为 fs/2
会产生不同的溢出时间 如果时基发生溢出现象 则其对应
~fs/2
15
由掩膜选项决定 将数据写入
RT2 RT1 RT0
Time Base 分频级数
0 0 0 28
0 0 1 29
0 1 0 210
0 1 1 211
1 0 0 212
1 0 1 213
1 1 0 214
1 1 1 215
暂停模式
暂停模式是由 HALT 指令来实现的
由STANDBY 位(OPT1 的第 5 位)设置 f
HALT
暂停模式时系统状态如下
OSC
和 f
停止或继续振荡 但 T1 将关闭
SYS
TBF
Rev. 1.40 9 2003-11-20
HT47C10L
RAM 及寄存器的内容保持不变
WDT 被清除并重新计数
所有的输入/输出口都保持其原先状态
PDF 标志位被置位
TO 标志位被清除
由STANDBY 位(OPT1 的第 5 位)设置 LCD 开/关
由STANDBY 位(OPT1 的第 5 位)设置时基停止或继续计数
PA 口唤醒和中断唤醒这两种方式可以视为正常运行的继续
条指令开始运行
断被允许但堆栈已满
应
当进入
但如果是从中断唤醒的话 此时可能会发生两种情况 如果相关中断都被禁止 或该中
程序会从下一条指令开始运行 但如果该中断允许且堆栈尚未满 则会产生中断响
HALT
状态以前某个中断请求位被置位 那么系统不能用这个中断来唤醒
如果唤醒是由于中断响应的话
一条指令执行
另外
那么在一个等待周期结束后指令就立即被执行
为减少电源损耗 在进入暂停模式之前 应小心处理所有的输入/输出口
如果是输入/输出口唤醒 程序即从下一
实际中断子程序的执行会延时一个以上的周期 但是如果唤醒导致下
复位
总共有三种方法会产生初始复位
正常运行时由
在暂停模式由
引脚发生复位
RES
引脚发生复位
RES
正常运行时由看门狗定时器溢出发生复位
暂停模式中的看门狗定时器溢出与其它系统复位状况不同
因为看门狗定时器溢出会执行 热复位
只有程序计数器 PC 和堆栈指针 SP 被复位 而系统其它部分都保持原有状态 在其它复位状态下 某些寄
存器不会改变
出各种不同的复位原因
在初始复位时 大部分寄存器会复位成初始的状态 通过检测 PDF 和 TO 标志 即可判断
TO PDF 复位原因
0 0
u u
0 1
1 u
1 1
上电时发生复位
正常运行时发生
暂停模式下发生
复位或者 LV R 复位
RES
或 LV R 复位
RES
正常运行时 WDT 溢出
暂停模式下 WDT 溢出
u
注
表示不变
系统复位时各功能单元的状态如下所示
程序计数器(PC)
000H
中断 禁止
预分频器 清除
看门狗定时器 时基 清除 复位后定时器开始计数
定时/计数器 停止
输入/输出口 输入模式
堆栈指针 SP 指向堆栈的顶端
H A L T
W D T
W D T
T i m e - o u t
R e s e t
R E S
f
S Y S
S S T
1 0 - b i t R i p p l e
C o u n t e r
P o w e r - o n D e t e c t i o n
R e s e t C o n f i g u r a t i o n R e s e t C i r c u i t R e s e t T i m i n g
E x t e r n a l
W a r m R e s e t
C o l d
R e s e t
V
D D
R E S
V D D
R E S
S S T T i m e - o u t
C h i p R e s e t
t
S S T
Rev. 1.40 10 2003-11-20
HT47C10L
有关寄存器的状态如下
寄存器 复位(上电)
WDT 溢出
(正常运作)
复位
RES
(正常运作)
复位
RES
(暂停模式)
WDT 溢出
(暂停模式)
TMRAH xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
TMRAL xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
TMRC -000 1--- -000 1--- -000 1--- -000 1--- -uuu u--TMRBH xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
TMRBL xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
ADCR ---x 0000 ---x 0000 ---x 0000 ---x 0000 ---u uuuu
PC 000H 000H 000H 000H 000H*
MP0 xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
MP1 xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
ACC xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
TBLP xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
TBLH xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
STATUS --00 xxxx --1u uuuu --uu uuuu --01 uuuu --11 uuuu
INTC --00 -000 --00 –000 --00 –000 --00 -000 --uu -uuu
TBC ---- -111 ---- -111 ---- -111 ---- -111 ---- -uuu
PA 1111 1111 1111 1111 1111 1111 1111 1111 uuuu uuuu
PAC 1111 1111 1111 1111 1111 1111 1111 1111 uuuu uuuu
OPT1 --00 0010 --00 0010 --00 0010 --00 0010 uuuu uuuu
OPT2 0000 0000 0000 0000 0000 0000 0000 0000 uuuu uuuu
注
1. *
表示 热复位
2. u
表示不变化
3. x
表示不确定
定时/计数器
HT47C10L 提供一个 16 位定时/计数器
可用作双通道的 RC 型 A/D 转换器
ADC/
位(ACDR 寄存
TM
器的第 1 位)用来决定定时器 A 和定时器 B 是用作 16 位的定时/计数器还是用作 RC 型 A/D 转换器
S y s t e m C l o c k ( f
T N 1
T N 0
)
S Y S
A D C / T M = 0
T E
P u l s e W i d t h
M e a s u r e m e n t
M o d e C o n t r o l
R t o F c o n v e r t e r
A D E N
M O D E
R R E F
R S E N
C o n t r o l
W
)或外部信号输入(RCIN 引脚的 A/D 时钟)
SYS
分别是 TMRAH([20H])
T N 0
当 ADC/
TM
A D C / T M
为
T O N
( A D C R B i t - 2 ) M o d e
2 2 0 0 p F
时
0
3 0 k
W
TMRAL TMRAH TMRBL TMRBH 组成了 16 位的定时/计数器 TMRBL
和 TMRBH 组成一个预置寄存器
定时计数器的时钟源可以是系统时钟(f
许用户去计算外部事件
计数外部 RC 型的 A/D 时钟 测量时间长度或脉宽 或产生一个精确的时基信号
总共有六个与定时/计数器有关的寄存器
T N 1
T N 0
T O N
A D E N
2 0 kW~ 6 0 k
R C I N
分别用来存放定时/计数器初始值的低字节和高字节
TMRBH([23H]) TMRBL([24H])和 ADCR([25H])
D a t a B u s
T i m e r / e v e n t c o u n t e r
( 1 6 b i t T i m e r A )
T i m e r / e v e n t c o u n t e r
P r e l o a d R e g i s t e r
( 1 6 b i t T i m e r B )
A / D C l o c k
O v e r f l o w
R e l o a d
定时/计数器
外部时钟输入允
TMRAL([21H]) TMRC([22H])
写入 TMRBL 只会将数据写入低字节内部缓冲器 而写
Rev. 1.40 11 2003-11-20