HOLTEK HT47C10L User Manual

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
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
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
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
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 会载入与指令
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
程序
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 的值保存好
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 脉冲的上升沿之间发生 该中断会被服务 如果同时发生中断请求 其优先级如下表示 也可以通过设定各中断相关的控制位来改 变优先级
如果在加法运算中结果产生了进位或在减法运算中结果不产生借位, 则 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
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
HT47C10L
TMRBH 则可把数据和低字节内部缓冲器的内容同时写到 16 位的定时计数器的预置寄存器
定时计数器的预置寄存器在对 TMRBH 写操作时改变 读取 TMRAH 则可将 TMRAL 传送至低字节内部缓冲器之中 只读回低字节内部缓冲器的内容 节的数据
必须先读取 TMRAH 以便使定时/计数器的低字节数据锁存至内部低字节缓冲器之中
TMRC 为定时/计数器的控制寄存器 以定义定时/计数器的工作模式 初始值放到预置寄存器中 始值预置寄存器
也就是说 定时/计数器的低字节数据并不能直接读取 若欲读取该低字
用来定义定时/计数器的某些选项 定时/计数器的控制寄存器可
计数允许/禁止以及计数的触发沿 写入定时器 B 就可以将定时/计数器的
而读取定时器 A 就可以得到定时/计数器的内容 定时器 B 是定时/计数器的初
而写 TMRBL 将保持预置寄存器的值不变 若
以避免发生计时错误 若读取 TMRAL
名称 功能
TE 3
TON 4
0~2
未定义 定义定时/计数器 TMR 作用沿(0=上升沿作用 允许/禁止定时器计数(0=禁止 定义操作方式(TN1
TN0 TN1
10=定时器模式(内部时钟
5 6
01=外部计数模式(外部时钟 11=脉冲宽度测量模式(RCIN
读取时为
0
TN0)
1=下降沿作用)
1=允许)
f
)
SYS
RCIN 引脚的 A/D 时钟输入)
f
)
SYS
00=未定义
7
未定义
读取时为
0
TMRC 寄存器
TN0 TN1 用来定义操作模式 RCIN 引脚的信号输入
定时模式则作为普通定时器使用 其时钟来源为内部系统时钟(f
宽度测量模式能够对外部引脚 RCIN 的高电平或低电平的持续时间进行测量
在事件计数
A/D 时钟或内部定时模式下 (TMRAH TMRAL)开始计数至 FFFFH TMRBL)重新装入加载值
在脉冲宽度测量模式下
TE 位的值为
0
且会将 TON 位清零 而当 TON 位重新置位为
并同时置位中断请求标志(TF
TON TE 位的值都为 1 如果引脚 RCIN 接收到一个上升沿信号(如
则为下降沿信号)时 计数器就会开始数 直到 RCIN 引脚回到原来的电平为止
测量的结果会依然存放在定时/计数器之中 也就是说一次只能计数一个脉冲的宽度
只要 RCIN 收到跳变脉冲 测量就会再次执行下去 在脉冲测量模式中
1
事件模式是用来计数外部事件 这表示时钟来源(A/D 时钟)为外部
最后 脉冲
)
SYS
计数的时钟来源为系统时钟
一旦定时/计数器开始计数即从定时/计数器的现行内容
若发生溢出 计数器即从定时/计数器预置寄存器(TMRBH
INTC 的第 4 位)
定时/计数器并不会根据逻辑电压来计数 其根据的标准为信号的转变沿 一旦发生计数溢出 计数器会从 定时/计数器预置寄存器重新装入初值
若欲启动计数器运行 测量模式中 令清除
TON 位在测量周期完成后
只要将定时器启动位(TON
若在定时/计数器关闭的情况下 时/计数器之中 中
这时定时/计数器并不会马上被改变而会继续计数下去 直到发生溢出为止 此时再由预置寄存器装入
新的初始值
但若定时/计数器已经开启 写入定时/计数器的数据只会保存在定时/计数器的预置寄存器
一旦定时/计数器(读取 TMRAH)的数据被读取 错误
所以程序员必须考虑清楚才行
我们强烈建议在打开定时/计数器前先将要加载的数据写入到 TMRBL 中去
因为在系统初始化后
TMRBL TMRBH TMRAL TMRAH 的值是未知的
同时还会发出中断请求 这种情况和其它两种模式一样
TMRC 的第 4 位)的值设为 1
会自动被清除 但在其它两种模式中
即可 在脉冲宽度
TON 位只可以用软件指
将数据写入定时/计数器的预置寄存器同时也会将该数据重新载入定
会将时钟禁止 以避免发生错误 将可能会导致计数
TMRBH TMRAL TMRAH
下例为定时/计数器的定时模式(禁止中断)
clr tmrc clr adcr.1 ; 设置为定时/计数器模式 clr intc.4 ; 清除定时/计数器的中断请求标志位 mov a,low (65536-1000) ; 置定时器初值 mov tmrbl,a ; 计数1000然后定时器溢出
Rev. 1.40 12 2003-11-20
HT47C10L
mov a,high (65536-1000) mov tmrbh,a mov a,01010000b ; 定时器时钟来源为f mov tmrc,a
p10:
clr wdt snz intc.4 ; 判断定时/计数器的中断请求标志位 jmp p10 clr intc.4 ; 清除定时/计数器的中断请求标志位
; 程序继续
RC A/D 转换
HT47C10L 有一个 RC 型的 A/D 转换通道 钟来源可以是系统时钟(f 时(寄存器 ADRC 的第 1 位)
=32kHz)
SYS
TMRAL TMRAH TMRBL TMRBH 组成了 A/D 转换器
计数器 B 的时钟来源可以是外部 RC 振荡电路 当 ADC/TM位为
包含两个可编程 16 位向上计数的计数器 计数器 A 的时
A/D 转换定时器 B的时钟来源为 RSEN~RCIN 振荡器或外部时钟输入(RCIN) 可以通过 TN1
总共有六个与 A/D 转换器有关的寄存器
ADRC
内部定时器时钟输入到 TMRAH TMRAL
TN2 来设置
分别是 TMRAH
A/D 时钟输入到 TMRBH TMRBL OVB/
(ADCR 寄存器的第 0 位)用来设置是否采用定时器 A 或定时器 B 溢出作为定时/计数器中断信号 在 A/D 转换模式下 就是对定时器 A/定时器 B 设置初值 TMRAL/TMRBL 只能将数据写入内部缓冲器的低位字节
当定时器 A 或定时器 B 溢出时 TON 位被清除并且计数器停止计数 写入 TMRAH/TMRBH
读取 TMRAH/TMRBH 就是读取定时器 A/定时器 B 的内容 写入
但若写入的是 TMRAH/TMRBH 则可将数据和 低字节内部缓冲器的内容同时写入定时器 A/定时器 B(16 位)之中 TMRAH/TMRBH 时改变
但若写入 TMRAL/TMRBL 则可维持定时 A/定时器 B 的内容不受改变
S y s t e m C l o c k ( f
T N 1 T N 0
)
S Y S
并且允许定时器计数
SYS
定时器 A 的时钟来源
TMRAL TMRC TMRBH TMRBL
定时 A/定时器 B 的内容 只在写入
A D C / T M = 1
1
OVA
D a t a B u s
T i m e r A
T O N
T i m e r B
D a t a B u s
O V B / O V A = 0
I n t e r r u p t
O V B / O V A = 1
R e s e t T O N
A D C / T M
T N 0
T O N
( A D C R B i t - 2 ) M o d e
C R E F
2 2 0 0 p F
T E
T N 1 T N 0
T O N
A D E N
3 0 k
W
A D E N
M O D E
R R E F
R S E N
2 0 kW~ 6 0 k
R C I N / T M R
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
C o n t r o l
W
A / D C l o c k
* A D E N i s a c t i v e w h e n T O N = 1 i n A / D m o d e f o r T i m e r A & B ( A D C / T M = 1 ) o r w h e n T O N = 1 a n d c l o c k s o u r c e i s A / D c l o c k i n T M R m o d e f o r T i m e r A & B ( A D C / T M = 0 )
* A D C / T M i s b i t 1 o f A D C R r e g i s t e r
RC A/D 转换器
若读取 TMRAH/TMRBH 则可将 TMRAL/TMRBL 传送至低字节内部缓冲器之中
然而 若读取 TMRAL/TMRBL 则只读回低字节内部缓冲器的内容 换言之 定时器 A/定时器 B 的 低字节数据并不能直接读取 器 A
B 的低字节数据传送至内部低字节缓冲器之中
若欲读取该低字节的数据 必须先读取 TMRAH/TMRBH 以便将定时/计数
以避免发生计时错
Rev. 1.40 13 2003-11-20
HT47C10L
标志 功能
RC A/D 转换模式下 时器 B 溢出的定时/计数器中断
OVB/
OVA
0
(0=定时器 A 溢出
1=定时器 B 溢出)
在定时/计数器模式下 设定 16 位定时/计数器或 RC A/D 转换器模式
ADC/TM
1
(0=定时/计数器
1=A/D 转换器)
定义 A/D 转换器的工作模式
MODE 2
0=RREF~CREF 振荡(参考电阻和参考电容) 1=RSEN~CREF 振荡(传感器电阻和参考电容)
BON 3
BLF 4
低电压检测禁止/允许控制(0=禁止 低电压标志(0=电压正常
5~7
未定义
读取时为
ADCR 寄存器
0
寄存器 ADCR 2 位用来决定选取哪一组电阻
寄存器 TMRC TN0
TON (TMRC 的第 4 位)置为 器 B 发生溢出
此时 定时/计数器便置位中断请求标志(TF
停止计数并 TON 位被清为
TON (TMRC 的第 4 位)置为 写操作
只有在定时/计数器关闭并且使用
TN1 用来决定定时器 A 的时钟来源
定时器 A 和定时器 B 就开始计数 直到定时器 A 或定时
1
0
那么 TMRBL
1
MOV
指令时 才能对这四个寄存器进行读写操作
下例是 RC 型 AD 转换模式(定时器 A 溢出)
clr tmrc clr adcr.1 ; 设置定时器模式 clr intc.4 ; 清除定时/计时器中断请求标志位 mov a,low (65536-1000) ; TIMER A初值 mov tmrbl,a ; 计数1000后溢出 mov a,high (65536-1000) mov tmrbh,a mov a,00000010b ; RREF~CREF; 设置RC型ADC模式;设置TIMER A溢出作为中断 mov adcr,a mov a,00h ; 置TIMER B初值 mov tmrbl,a mov a,00h mov tmrbh,a mov a,01010000b ; TIMER A的时钟来源为f mov tmrc,a
p10:
clr wdt snz intc.4 ; 判断定时/计数器中断请求标志位 jmp p10 clr intc.4 ; 清除定时/计数器中断请求标志位
; 程序继续
下例是 RC AD 转换模式(定时器 B 溢出)
clr tmrc clr adcr.1 ; 设置定时器模式 clr intc.4 ; 清除定时/计数器中断请求标志位 mov a,00h ; 置TIMER A初值 mov tmrbl,a mov a,00h
Rev. 1.40 14 2003-11-20
该位用来定义来自定时器 A 溢出或定
该位无效
1=允许)
1=电压过低)
电容来组成 TMRBH TMRBL 的振荡输入
建议定时器 A 的时钟来源采用系统时钟
INTC 的第 4 )
同时计数器 A 和计数器 B
TMRBH TMRAL TMRAH 不要进行读
并且允许计数
SYS
mov tmrbh,a mov a,00000011b ; RREF~CREF; 设置RC型ADC模式; 设置TIMER B溢出作为中
mov adcr,a mov a,low (65536-1000) ; 置TIMER B初值 mov tmrbl,a ; 计数1000后溢出 mov a,high (65536-1000) mov tmrbh,a mov a,00110000b ; TIMER A的时钟来源为f
并且允许计数
SYS
mov tmrc,a
p10:
clr wdt snz intc.4 ; 判断定时/计数器中断请求标志位 jmp p10 clr intc.4 ; 清除定时/计数器中断请求标志位
; 程序继续
输入/输出口
HT47C10L.8 位双向输入/输出口 PA 输出
就输入而言 这些输入/输出口并不具有锁存功能 也就是说 所有输入在 MOV A 令的 T2 上升沿准备好 值为止
就输出而言 所有数据被锁存住 而且不受任何影响 直到输出锁存被写入新的
每个输入/输出口都有一个控制寄存器(PAC)
输出或带上拉电阻的斯密特触发输入在软件下动态地进行改变
同时输入/输出口会被自动加上上拉电阻 信号源的输入也取决于控制寄存器 如果控制寄存器
须写 的某位值为
1
那么输入信号是读取自这个引脚(PAD)的状态 但是如果控制寄存器的某位值为
1
么锁存器的内容将会被送到内部总线 设置为 CMOS 输出
系统复位后
这些控制寄存器是对应于 RAM 13H 地址
这些输入/输出口都是高电平状态(上拉电阻) 每一个输入/输出锁存位都可以用 SET [m].i
CLR [m].i 指令置位或清零(m=12H)
有些指令会先输入数据
然后才输出运行结果 举例来说 这些指令会先将整个口状态读入 CPU 中 加器中
PA 的每一个口都具有唤醒系统的能力 PA0/PA1 BZ/
在输入模式始终保持它的原来的功能
表所示
共用引脚 如果选择蜂鸣器功能 则 PA 0/ PA1 在输出模式时的输出信号为 BZ/BZ信
BZ
对应 RAM 中的[12H] 所有的输入/输出口都可以作为输入和
用来控制输入/输出的设置 使用控制寄存器 可对 CMOS
要设置为输入功能 相应的控制寄存器必
后者 可以在 修改 指令中发生 对于输出功能 只能
SET [m].i CLR [m].i CPL [m]CPLA[m]
接着执行所定义的运算 最后再将执行的结果写入锁存或是累
4kHz 的蜂鸣器输出信号(输出模式)由 PA 0/PA1 寄存器控制
PA1
数据寄存器
0(CLR PA.1) 0(CLR PA.0)
1(SET PA.1) 0(CLR PA.0)
X 1(SET PA.0)
OPT1 寄存器 BZ 模式允许
PA0
数据寄存器
PA0=BZ PA1=BZ
PA0=BZ PA1=0
PA0=0 PA1=0
PA2/PA3 EL1/EL2 共用引脚
信号
在输入模式始终保持它的原来的功能
如果选择 EL 功能 则 PA2/PA3 在输出模式时的输出信号为 EL1/EL2
EL 输出信号(输出模式)只能由 PA 2 寄存器控制
PA3
数据寄存器
0 1 0 1
OPT1 寄存器 EL 模式允许
PA2
数据寄存器
0(CLR PA.2) 1(SET PA.2)
PA2=EL1 PA3=EL2
PA2=0 PA3=1
PA1
PA0
引脚状态
PA3
PA2
引脚状态
HT47C10L
[m] (m=12H)
0
如表所示
Rev. 1.40 15 2003-11-20
HT47C10L
D a t a B u s
W r i t e C o n t r o l R e g i s t e r
C h i p R e s e t
R e a d C o n t r o l R e g i s t e r
W r i t e D a t a R e g i s t e r
R e a d D a t a R e g i s t e r
S y s t e m W a k e - u p
1 2 5 H z
E L 1
9
2 / f
( = 4 m s )
2 / f
5
O S C
O S C
( = 2 5 0ms )
E L 2
E L E N ( P A . 2 )
V
D D
C o n t r o l B i t
Q
D
Q B
C K
S
D a t a B i t
Q
D
Q B
C K
S
P H
P A 0 ~ P A 7
M
U X
BZ EL 功能结构在此图中没有给出
9
( = 4 m s )
2 / f
O S C
E L 1
1 / f
( = 7 . 8ms )
O S C
E L 2
E L E N ( P A . 2 )
EL 时序图
LCD 液晶显示存储器
HT47C10L 为液晶显示提供一块嵌入式的数据存储区
区域为 RAM BANK1 内的 40H~48H 示存储器之间的切换开关
BP 被置
存储器段指针(BP
任何数据写入 40H~48H 将会影响 LCD 的显示 BP 被清
1
LCD 的显示寄存区设计为 9 4 位
RAM 04H 单元)是在数据存储器和 LCD
0 任何数据写入 40H~48H 意味着访问通用数据存储器 LCD 显示存储器能被读出和写入
通过间接寻址模式 来产生相应的 LCD 驱动信号 图示表示 HT47C10L 显示存储器和 LCD 显示模块之间的对应显示关系
使用 MP1 来进行 当数据被写入显示数据区域 这些数据自动地被 LCD 驱动器读取
1
写入显示存储器的相应位 用来分别控制显示或不显示
0
4 1 H 4 2 H 4 3 H 4 4 H 4 5 H 4 6 H
C O M
4 0 H
0
1
2
4 7 H 4 8 H
B i t
0
1
2
它的存储
但是只能
3
S E G M E N T
3
0 1 2 3
显示存储器(Bank 1)
4 5 6
7 8
Rev. 1.40 16 2003-11-20
液晶显示驱动输出
HT47C10L LCD 动器为 9×4(1/4duty)
个电容
可以由 STANDBY 选项(OPT1 寄存器的第 5 位)设置 HALT 模式下的 LCD 开/关状态
D u r i n g a R e s e t P u l s e :
C O M 0 , C O M 1 , C O M 2
A l l L C D d r i v e r o u t p u t s
N o r m a l O p e r a t i o n M o d e :
C O M 0
C O M 1
C O M 2
C O M 3
L C D s e g m e n t s o n C O M 0 , 1 , 2 , 3 s i d e s b e i n g u n l i t
O n l y L C D s e g m e n t s o n C O M 0 s i d e b e i n g l i t
O n l y L C D s e g m e n t s o n C O M 2 s i d e b e i n g l i t
L C D s e g m e n t s o n C O M 1 , 3 s i d e s b e i n g l i t
L C D s e g m e n t s o n C O M 0 , 2 , 3 s i d e s b e i n g l i t
L C D s e g m e n t s o n C O M 0 , 1 , 2 s i d e s b e i n g l i t
L C D O f f M o d e :
C O M 0 , C O M 1 , C O M 2 , C O M 3
A l l L C D d r i v e r o u t p u t s
在正常工作模式下 VCC 2VDD
LCD 关闭或复位情况下 VCC* VDD-0.2V
其偏压方式为电容式偏压(1/2bias)
LCD 输出(1/4duty, 1/2bias)
HT47C10L
C1 C2 之间需要加一
V C C * V S S
V C C * V S S
V C C V D D V S S V C C V D D V S S V C C V D D V S S
V C C V D D V S S
V C C V D D V S S V C C V D D V S S V C C V D D V S S V C C V D D V S S V C C V D D V S S V C C V D D V S S
V C C * V S S
V C C * V S S
Rev. 1.40 17 2003-11-20
HT47C10L
低电压检测
LVD
HT47C10L 有低电压检测功能 低于设定的检测电压 检测电压设定为 1.3V0
BLF 标志无效
电压检测完毕后
则低电压标志(BLF
0.05V
BON 置为 0 可以防止 LV D 引脚上的电流消耗
掩膜选择
下表列出了 HT47C10L 的掩膜选择
符号
OPT1(26H)
WDTEN
BZFREQ0 BZFREQ1
功能 复位状态
0
1 2
BZMODE 3
ELMODE 4
STANDBY 5
6~7
符号
OPT2(27H)
PH
功能 复位状态
0~7
可以用来监测电池的工作电压 如果 LV D 开启 并且电池的工作电压
ADCR 的第 4 位)会被置位
可以通过调节外接电阻 R
LVD
低电压检测电路可以通过设置 BON(ADCR 的第 3 )来开启/关闭 当 BON
A D C R b i t 3
B O N
L V D
L V D
B L F
R
L V D
A D C R b i t 4
这些选择必须设定清楚 以确保系统运作正常
WDT 使能/除能选项(0
使能
1
除能)
0
蜂鸣器输出频率选择 BZFREQ1~BZFREQ0
f f f
f
SYS
SYS
SYS
SYS
/22 /23 /24 /25
01
00 01 10 11 PA0 PA 1 输出功能选择 0=正常输出 1=蜂鸣器输出
PA0 BZ 输出 PA 1
BZ
输出
0
PA2 PA 3 输出功能选择 0=正常输出 1=EL 输出 HALT 模式下 0= HALT 模式下 1= HALT 模式下
未使用
PA2 EL1 输出 PA 3 EL2 输出
振荡器/LCD 开启/关闭选择
振荡器/LCD 关闭 振荡器/LCD 开启
读出为
0
PA0~PA7 上拉电阻选择(0
有上拉电阻
没有上拉电阻)
1
0
0
00
00H
使
Rev. 1.40 18 2003-11-20
HT47C10L
应用电路
V C C
1 . 5 V
0 . 1
2 2 0 0 p F
0 . 1mF
F
m
S e n s o r
C 1
C 2
P A 0 / B Z
P A 1 / B Z
V D D
P A 4
P A 5
P A 6
P A 7
L V D
V S S
R C I N
R R E F
R S E N
S E G 0 ~ 8
C O M 0 ~ 3
P A 2 / E L 1
P A 3 / E L 2
T E S T 1
T E S T 2
R E S
V D D
V S S
H T 4 7 C 1 0 L
L C D
P a n e l
1 k
0 . 1mF
1 5 m H
W
R L S 4 1 4 8
2 N 5 5 5 1 2 N 5 5 5 1
1 0 0 k
W
1 0mF
E L
0 . 1mF
1 0 0 k
W
Rev. 1.40 19 2003-11-20
HT47C10L
指令集摘要
助记符 说明 指令周期 影响标志位
算术运算
ADD ADDM A,[m] ADD ADC ADCM A,[m] SUB SUB SUBM A,[m] SBC SBCM A,[m] DAA
A,[m]
ACC 与数据存储器相加 ACC 与数据存储器相加
A,x A,[m]
ACC 与立即数相加 ACC 与数据存储器 ACC 与数据存储器
A,x A,[m]
ACC 与立即数相减 ACC 与数据存储器相减 ACC 与数据存储器相减
A,[m]
ACC 与数据存储器 ACC 与数据存储器
[m]
将加法运算中放入 ACC 的值调整为十进制数
结果放入 ACC
结果放入数据存储器 结果放入 ACC 进位标志相加 结果放入 ACC 进位标志相加 结果放入数据存储器 结果放入 ACC
结果放入 ACC
结果放入数据存储器 进位标志相减 结果放入 ACC 进位标志相减 结果放入数据存储器
并将结果放
入数据存储器
1 Z,C,AC,OV
(1)
Z,C,AC,OV
1
1 Z,C,AC,OV 1 Z,C,AC,OV
(1)
1
Z,C,AC,OV 1 Z,C,AC,OV 1 Z,C,AC,OV
(1)
Z,C,AC,OV
1
1 Z,C,AC,OV
(1)
1
Z,C,AC,OV
(1)
C
1
逻辑运算 AND OR XOR ANDM A,[m] ORM A,[m] XORM A,[m] AND OR XOR CPL [m] CPLA [m]
A,[m] A,[m] A,[m]
ACC 与数据存储器做 ACC 与数据存储器做 ACC 与数据存储器做 ACC 与数据存储器做 ACC 与数据存储器做 ACC 与数据存储器做
A,x A,x A,x
ACC 与立即数做 ACC 与立即数做 ACC 与立即数做
对数据存储器取反 对数据存储器取反
运算 结果放入 ACC 或 运算 结果放入 ACC 异或 运算 结果放入 ACC 与 运算 结果放入数据存储器 或 运算 结果放入数据存储器
异或 运算 结果放入数据存储器 与 运算 结果放入 ACC 运算 结果放入 ACC 异或 运算 结果放入 ACC
结果放入数据存储器 结果放入 ACC
1 Z 1 Z 1 Z
(1)
Z
1
(1)
Z
1
(1)
1
Z 1 Z 1 Z 1 Z
(1)
Z
1
1 Z
递增和递减 INCA [m] INC [m] DECA [m] DEC [m]
递增数据存储器 递增数据存储器 递减数据存储器 递减数据存储器
结果放入 ACC 结果放入数据存储器 结果放入 ACC 结果放入数据存储器
1 Z
(1)
Z
1
1 Z
(1)
1
Z
移位 RRA RR [m] RRCA [m] RRC [m] RLA [m] RL [m] RLCA [m] RLC [m]
[m]
数据存储器右移一位 数据存储器右移一位 带进位将数据存储器右移一位 带进位将数据存储器右移一位 数据存储器左移一位 数据存储器左移一位 带进位将数据存储器左移一位 带进位将数据存储器左移一位
结果放入 ACC 结果放入数据存储器
结果放入 ACC
结果放入数据存储器 结果放入 ACC 结果放入数据存储器
结果放入 ACC
结果放入数据存储器
1
(1)
1
无 无
1 C
(1)
1
C
1
(1)
1
无 无
1 C
(1)
C
1
数据传送 MOV A,[m] MOV [m],A MOV A,x
将数据存储器送至 ACC ACC 送至数据存储器 将立即数送至 ACC
1
(1)
1
1
无 无 无
位运算
CLR [m].i SET [m].i
清除数据存储器的位 置位数据存储器的位
(1)
1
(1)
1
无 无
Rev. 1.40 20 2003-11-20
HT47C10L
助记符 说明 指令周期 影响标志位 转移
JMP SZ [m] SZA [m] SZ [m].i SNZ [m].i SIZ [m] SDZ [m] SIZA [m]
SDZA [m]
CALL addr RET RET RETI
查表 TABRDC [m] TABRDL [m]
其它指令 NOP CLR [m] SET [m] CLR CLR CLR SWAP [m] SWAPA [m] HALT
addr
无条件跳转 如果数据存储器为零 数据存储器送至 ACC 如果数据存储器的第 i 位为零 如果数据存储器的第 i 位不为零 递增数据存储器 递减数据存储器 递增数据存储器 过下一条指令 递减数据存储器 过下一条指令 子程序调用 从子程序返回
A,x
从子程序返回 从中断返回
读取当前页的 ROM 内容 读取最后页的 ROM 内容
空指令 清除数据存储器 置位数据存储器
WDT WDT1 WDT2
清除看门狗定时器 预清除看门狗定时器 预清除看门狗定时器 交换数据存储器的高低字节 交换数据存储器的高低字节 进入暂停模式
x
影响 TO PDF 标志位
立即数
m 数据存储器地址 A 累加器 i 0~7 addr 程序存储器地址
影响标志位 不影响标志位
(1)
如果数据是加载到 PCL 寄存器 则指令执行周期会被延长一个指令周期(四个系统时钟)
(2)
如果满足跳跃条件 则指令执行周期会被延长一个指令周期(四个系统时钟) 否则指令执行周期不会被延长
(3) (1)和(2)
(4)
如果执行 CLR WDT1 CLR WDT2 指令后 看门狗定时器被清除 则会影响 TO PDF 标志位 否则不会
则跳过下一条指令
如果内容为零 则跳过下一条指令
则跳过下一条指令
则跳过下一条指令 如果结果为零 则跳过下一条指令 如果结果为零 则跳过下一条指令 将结果放入 ACC 如果结果为零 则跳
将结果放入 ACC 如果结果为零 则跳
并将立即数放入 ACC
并送至数据存储器和 TBLH 并送至数据存储器和 TBLH
2
(2)
1
(2)
1
(2)
1
(2)
1
(3)
1
(3)
1
(2)
1
(2)
1
2 2 2 2
(1)
2
(1)
2
1
(1)
1
(1)
1
无 无 无 无 无 无 无
无 无 无 无
无 无
无 无 无
1 TO,PDF
结果放入数据存储器 结果放入 ACC
1 TO 1 TO
(1)
1
1
(4)
(4)
,PDF ,PDF
无 无
(4)
(4)
1 TO,PDF
Rev. 1.40 21 2003-11-20
HT47C10L
ADC A, [m] 累加器与数据存储器 说明 运算过程 影响标志位
ADCM A, [m] 累加器与数据存储器 说明 运算过程 影响标志位
ADD A, [m] 累加器与数据存储器相加 说明 运算过程 影响标志位
ADD A, x 累加器与立即数相加 说明 运算过程 影响标志位
ADDM A, [m] 累加器与数据存储器相加 说明 运算过程 影响标志位
AND A, [m] 累加器与数据存储器做 说明 运算过程 影响标志位
本指令把累加器
ACCÅACC+[m]+C
TO PDF OV Z AC C
本指令把累加器
[m]ÅACC+[m]+C
TO PDF OV Z AC C
本指令把累加器
ACCÅACC+[m]
TO PDF OV Z AC C
本指令把累加器值和立即数相加
ACCÅACC+x
TO PDF OV Z AC C
本指令把累加器
[m]ÅACC+[m]
TO PDF OV Z AC C
本指令把累加器值
ACCÅACC “AND” [m]
TO PDF OV Z AC C
进位标志相加 结果放入累加器
数据存储器值以及进位标志相加 结果存放到累加器
进位标志相加 结果放入数据存储器
数据存储器值以及进位标志相加 结果存放到存储器
数据存储器值相加 结果存放到累加器
结果放入累加器
数据存储器值相加 结果存放到数据存储器
数据存储器值做逻辑与 结果存放到累加器
结果放入累加器
结果存放到累加器
结果放入数据存储器
运算 结果放入累加器
Rev. 1.40 22 2003-11-20
HT47C10L
AND A, x 累加器与立即数做 说明 运算过程 影响标志位
ANDM A, [m] 累加器与数据存储器做 说明 运算过程 影响标志位
CALL addr 子程序调用 说明
运算过程
PC Å addr 影响标志位
CLR [m] 清除数据存储器 说明 运算过程 影响标志位
CLR [m] . i 将数据存储器的第 i 位清 说明 运算过程 影响标志位
CLR WDT 清除看门狗定时器 说明
运算过程
PDF&TO Å 0 影响标志位
本指令把累加器值
ACCÅACC “AND” x
TO PDF OV Z AC C
本指令把累加器值
ACCÅACC “AND” [m]
TO PDF OV Z AC C
本指令直接调用地址所在处的子程序
栈寄存器中
StackÅPC+1
本指令将数据存储器内的数值清零
[m] Å00H
本指令将数据存储器内第 i 位值清零
[m].i Å0
本指令清除 WDT 计数器(0 开始重新计数)
也被清零
WDT Å 00H
再将子程序所在处的地址存放到程序计数器中
TO PDF OV Z AC C
TO PDF OV Z AC C
TO PDF OV Z AC C
TO PDF OV Z AC C
运算 结果放入累加器 立即数做逻辑与 结果存放到累加器
数据存储器值做逻辑与 结果存放到数据存储器
0 0
运算 结果放入数据存储器
此时程序计数器加一 将此程序计数器值存到堆
0
暂停标志位(PDF)和看门狗溢出标志位(TO)
Rev. 1.40 23 2003-11-20
CLR WDT1 预清除看门狗定时器 说明
运算过程
PDF&TO Å 0* 影响标志位
CLR WDT2 预清除看门狗定时器 说明
运算过程
PDF&TO Å 0* 影响标志位
CPL [m] 对数据存储器取反 说明
运算过程 影响标志位
CPLA [m] 对数据存储器取反 说明
运算过程 影响标志位
必须搭配 CLR WDT2 一起使用
执行过该指令 位(TO)清零
WDT Å 00H*
必须搭配 CLR WDT1 一起使用
执行过该指令 位(TO)清零
WDT Å 00H*
本指令是将数据存储器内保存的数值取反
[m] Å [m]
本指令是将数据存储器内保存的值取反后
ACC Å [m]
没有执行 CLR WDT2 时 系统只会不会将暂停标志位(PDF)和计数溢出
PDF TO 保留原状态不变
TO PDF OV Z AC C
0* 0*
没有执行 CLR WDT1 时 系统只会不会将暂停标志位(PDF)和计数溢出
PDF TO 保留原状态不变
TO PDF OV Z AC C
0* 0*
TO PDF OV Z AC C
TO PDF OV Z AC C
才可清除 WDT 计时器(从 0 开始重新计数) 当程序只
才可清除 WDT 计时器(从 0 开始重新计数) 当程序只
结果放入数据存储器
结果放入累加器
结果存放在累加器中
HT47C10L
Rev. 1.40 24 2003-11-20
HT47C10L
DAA [m] 将加法运算后放入累加器的值调整为十进制数 说明 本指令将累加器高低四位分别调整为 BCD
BCD 调整就执行对原值加 值保持不变 再加 AC1 并把 C 置位 否则 BCD 调整就执行对原值加 AC1 存放到数据存储器中
操作 如果 ACC.3~ACC.0 > 9 AC=1
那么 [m].3~[m].0 Å(ACC.3~ACC.0 )+6 否则 [m].3~[m].0 Å(ACC.3~ACC.0 ) 并且 如果 ACC.7~ACC.4+AC1 > 9 C=1 那么 [m].7~[m].4 Å(ACC.7~ACC.4 )+6+ AC1 否则 [m].7~[m].4 Å(ACC.7~ACC.4 )+ AC1 影响标志位
DEC [m] 数据存储器的内容减 1 说明 运算过程 影响标志位
DECA [m] 数据存储器的内容减 1 说明 运算过程 影响标志位
HALT 进入暂停模式 说明
运算过程
PDF Å 1 TO Å 0 影响标志位
本指令将数据存储器内的数值减一再放回数据存储器
[m] Å [m]-1
本指令将存储器内的数值减一
ACC Å [m]-1
本指令终止程序执行并关掉系统时钟 RAM 和寄存器内的数值保持原状态 WDT 计数
器清
PC Å PC+1
0
如果高四位的值大于
只有进位标志位(C)受影响
TO PDF OV Z AC C
结果放入数据存储器
TO PDF OV Z AC C
结果放入累加器
TO PDF OV Z AC C
暂停标志位(PDF)被设为 1
TO PDF OV Z AC C
0 1
并且内部进位标志 AC1=
6
C=1 那么 BCD 调整就执行对原值加
9
AC1=AC
AC1=0
再放到累加器
WDT 计数溢出位(TO)被清为 0
并将结果放入数据存储器
如果低四位的值大于
AC 求反 否则原
AC
C 的值保持不变
C=1
C=C
AC=1
9
6
结果
Rev. 1.40 25 2003-11-20
HT47C10L
INC [m] 数据存储器的内容加 1 说明 运算过程 影响标志位
INCA [m] 数据存储器的内容加 1 说明 运算过程 影响标志位
JMP addr 无条件跳转 说明 运算过程 影响标志位
MOV A, [m] 将数据存储器送至累加器 说明 运算过程 影响标志位
MOV A, x 将立即数送至累加器 说明 运算过程 影响标志位
MOV [m], A 将累加器送至数据存储器 说明 运算过程 影响标志位
本指令将数据存储器内的数值加一
[m] Å [m]+1
TO PDF OV Z AC C
本指令是将存储器内的数值加一
ACC Å [m]+1
TO PDF OV Z AC C
本指令是将要跳到的目的地直接放到程序计数器内
PC Å addr
TO PDF OV Z AC C
本指令是将数据存储器内的数值送到累加器内
ACC Å [m]
TO PDF OV Z AC C
本指令是将立即数送到累加器内
ACC Å x
TO PDF OV Z AC C
本指令是将累加器值送到数据存储器内
[m] Å ACC
TO PDF OV Z AC C
结果放入数据存储器
结果放回数据存储器
结果放入数据存储器
结果放到累加器
Rev. 1.40 26 2003-11-20
NOP 空指令 说明 运算过程 影响标志位
OR A, [m] 累加器与数据存储器做 说明 运算过程 影响标志位
OR A, x 累加器与立即数做 说明 运算过程 影响标志位
ORM A, [m] 累加器与数据存储器做 说明 运算过程 影响标志位
RET 从子程序返回 说明 运算过程 影响标志位
RET A, x 从子程序返回 说明 运算过程
ACC Å x 影响标志位
本指令不作任何运算
PC Å PC+1
TO PDF OV Z AC C
本指令是把累加器
ACCÅACC “OR” [m]
TO PDF OV Z AC C
本指令是把累加器值
ACCÅACC “OR” x
TO PDF OV Z AC C
本指令是把累加器值
ACCÅACC “OR” [m]
TO PDF OV Z AC C
本指令是将堆栈寄存器中的程序计数器值送回程序计数器
PC Å Stack
TO PDF OV Z AC C
本指令是将堆栈寄存器中的程序计数器值送回程序计数器
PC Å Stack
TO PDF OV Z AC C
数据存储器值做逻辑或 结果放到累加器
运算 结果放入累加器
并将立即数放入累加器
而只将程序计数器加一
运算 结果放入累加器
立即数做逻辑或 结果放到累加器
运算 结果放入数据存储器
存储器值做逻辑或 结果放到数据存储器
并将立即数送回累加器
HT47C10L
Rev. 1.40 27 2003-11-20
RETI 从中断返回 说明
运算过程
EMI Å 1 影响标志位
RL [m] 数据存储器左移一位 说明 运算过程 影响标志位
RLA [m] 数据存储器左移一位 说明
运算过程 影响标志位
RLC [m] 带进位将数据存储器左移一位 说明
运算过程
[m].0 ÅC C Å [m].7 影响标志位
RLCA [m] 带进位将数据存储器左移一位 说明
运算过程
ACC.0 ÅC C Å [m].7 影响标志位
本指令是将堆栈寄存器中的程序计数器值送回程序计数器
中断程序结束返回时 许中断服务
PC Å Stack
本指令是将数据存储器内的数值左移一位
[m].0 Å[m].7, [m].(i+1) Å[m].i (i=0~6)
本指令是将存储器内的数值左移一位
储器内的数值不变
ACC.0 Å[m].7, ACC.(i+1) Å[m].i (i=0~6)
本指令是将存储器内的数值与进位标志左移一位
0
[m].(i+1) Å[m].i (i=0~6)
本指令是将存储器内的数值与进位标志左移一位
0
ACC.(i+1) Å[m].i (i=0~6)
TO PDF OV Z AC C
TO PDF OV Z AC C
TO PDF OV Z AC C
结果送回数据存储器
TO PDF OV Z AC C
结果送回累加器
TO PDF OV Z AC C
它还会将中断控制寄存器 INTC 0 (EMI)中断允许位置 1
结果放入数据存储器
结果放入累加器
7 位移到第 0 结果送回数据存储器
7 位移到第 0 位 结果送到累加器 而数据存
结果放入数据存储器
7 位取代进位标志 进位标志移到
结果放入累加器
第七位取代进位标志 进位标志移到
HT47C10L
RET 不同的是它使用在
Rev. 1.40 28 2003-11-20
HT47C10L
RR [m] 数据存储器右移一位 说明 运算过程 影响标志位
RRA [m] 数据存储器右移一位 说明
运算过程 影响标志位
RRC [m] 带进位将数据存储器右移一位 说明
运算过程
[m]. 7 ÅC C Å [m].0 影响标志位
RRCA [m] 带进位将数据存储器右移一位 说明
运算过程
ACC.7 ÅC C Å [m].0 影响标志位
SBC A,[m] 累加器与数据存储器 说明
运算过程 影响标志位
本指令是将存储器内的数值循环右移
[m].7 Å[m].0, [m].i Å[m].(i+1) (i=0~6)
TO PDF OV Z AC C
本指令是将数据存储器内的数值循环右移
据存储器内的数值不变
ACC.7 Å[m].0, ACC.i Å[m].(i+1) (i=0~6)
TO PDF OV Z AC C
本指令是将存储器内的数值加进位标志循环右移
7
[m].i Å[m].(i+1) (i=0~6)
本指令是将数据存储器内的数值加进位标志循环右移
移到第 7
ACC.i Å[m].(i+1) (i=0~6)
本指令是把累加器值减去数据存储器值以及进位标志的取反
ACCÅACC+[m]+ C
结果送回存储器
TO PDF OV Z AC C
结果送回累加器 数据存储器内的数值不变
TO PDF OV Z AC C
TO PDF OV Z AC C
结果放入数据存储器
结果放入累加器
进位标志相减 结果放入累加器
0 位移到第 7 结果送回数据存储器
0 位移到第 7 位 结果送回累加器 而数
结果放入数据存储器
0 位取代进位标志 进位标志移到
结果放入累加器
0 位取代进位标志 进位标志
结果放到累加器
Rev. 1.40 29 2003-11-20
HT47C10L
SBCM A,[m] 累加器与数据存储器 说明
运算过程 影响标志位
SDZ [m] 数据存储器减 1 说明
运算过程 如果[m]-1=0 影响标志位
SDZA [m] 数据存储器减 1 说明
运算过程
ACC Å([m]-1) 影响标志位
SET [m] 置位数据存储器 说明 运算过程 影响标志位
SET [m]. i 将数据存储器的第 i 位置 说明 运算过程 影响标志位
本指令是把累加器值减去数据存储器值以及进位标志取反
[m]ÅACC+[m]+C
TO PDF OV Z AC C
本指令是把数据存储器内的数值减 1
果结果为零 得正确的指令(二个指令周期)
本指令是把数据存储器内的数值减 1
后数据存储器内的数值送到累加器,而数据存储器内的值不变 前指令执行期间所取得的下一条指令 周期)
如果[m]-1=0
本指令是把存储器内的数值每个位置为 1
[m] Å FFH
本指令是把存储器内的数值的第 i 位置为 1
[m].i Å1
放弃在目前指令执行期间所取得的下一条指令 并插入一个空周期用以取
跳过下一条指令执行再下一条
TO PDF OV Z AC C
否则执行下一条指令(一个指令周期)
跳过下一条指令执行再下一条
TO PDF OV Z AC C
TO PDF OV Z AC C
TO PDF OV Z AC C
进位标志相减 结果放入数据存储器
如果结果为
将结果放入累加器 如果结果为
则跳过下一条指令
0
判断是否为 0 若为 0 则跳过下一条指令 即如
否则执行下一条指令(一个指令周期)
则跳过下一条指令
0
判断是否为 0 0 则跳过下一行指令并将减完
并插入一个空周期用以取得正确的指令(二个指令
1
结果放到数据存储器
即若结果为 0 放弃在目
Rev. 1.40 30 2003-11-20
HT47C10L
SIZ [m] 数据存储器加 1 说明
运算过程 影响标志位
SIZA 数据存储器加 1 说明
运算过程 影响标志位
SNZ [m]. i 如果数据存储器的第 i 位不为 说明
运算过程 影响标志位
SUB A, [m] 累加器与数据存储器相减 说明
运算过程 影响标志位
SUB A, x 累加器与立即数相减 说明
运算过程 影响标志位
本指令是把数据存储器内的数值加 1
在目前指令执行期间所取得的下一条指令 指令周期)
如果 ([m]+1=0)
本指令是把数据存储器内的数值加 1
在目前指令执行期间所取得的下一条指令 个指令周期) 否则执行下一条指令(一个指令周期)
如果[m]+1=0
本指令是判断数据存储器内的数值的第 i 位
行指令 确的指令(二个指令周期)
如果 [m].i≠0
本指令是把累加器值
ACCÅACC+[m]+1
本指令是把累加器值
ACCÅACC+x+1
放弃在目前指令执行期间所取得的下一条指令 并插入一个空周期用以取得正
如果结果为
否则执行下一条指令(一个指令周期)
跳过下一行指令
TO PDF OV Z AC C
将结果放入累加器 如果结果为
并将加完后存储器内的数值送到累加器 而数据存储器的值保持不变
跳过下一行指令
TO PDF OV Z AC C
否则执行下一条指令(一个指令周期)
跳过下一行指令
TO PDF OV Z AC C
数据存储器值相减 结果放到累加器
TO PDF OV Z AC C
结果放入累加器 立即数相减 结果放到累加器
TO PDF OV Z AC C
则跳过下一条指令
0
判断是否为 0 若为 0 跳过下一条指令 即放弃
并插入一个空周期用以取得正确的指令(二个
[m] Å[m]+1
判断是否为 0 若为 0 跳过下一条指令 即放弃
ACC Å([m]+1)
则跳过下一条指令
0
结果放入累加器
则跳过下一条指令
0
并插入一个空周期用以取得正确的指令(二
若不为 0 则程序计数器再加 1 跳过下一
Rev. 1.40 31 2003-11-20
HT47C10L
SUBM A, [m] 累加器与数据存储器相减 说明
运算过程 影响标志位
SWAP [m] 交换数据存储器的高低字节 说明 运算过程 影响标志位
SWAPA [m] 交换数据存储器的高低字节 说明 运算过程
影响标志位
SZ [m] 如果数据存储器为 说明
运算过程 影响标志位
SZA [m] 数据存储器送至累加器 说明
运算过程 影响标志位
本指令是把累加器值
[m]ÅACC+[m]+1
TO PDF OV Z AC C
本指令是将数据存储器的低四位和高四位互换
[m].7~[m].4↔[m].3~[m].0
TO PDF OV Z AC C
本指令是将数据存储器的低四位和高四位互换
ACC.3~ACC.0Å [m].7~[m].4
ACC.7~ACC.4Å [m].3~[m].0
TO PDF OV Z AC C
本指令是判断数据存储器内的数值是否为 0
令执行期间所取得的下一条指令 否则执行下一条指令(一个指令周期)
如果 [m] = 0, 跳过下一行指令
TO PDF OV Z AC C
本指令是判断存储器内的数值是否为 0
执行期间所取得的下一条指令 并把存储器内值送到累加器 而存储器的值保持不变 否则执行下一条指令(一个指令周 期)
如果[m] = 0
跳过下一行指令 ACCÅ [m]
TO PDF OV Z AC C
存储器值相减 结果放到存储器
则跳过下一条指令
0
如果内容为
结果放入数据存储器
结果放入数据存储器
再将结果送回数据存储器
结果放入累加器
再将结果送回累加器
0 则跳过下一行指令 即放弃在目前指
并插入一个空周期用以得正确的指令(二个指令周期)
则跳过下一条指令
0
若为 0 则跳过下一行指令 即放弃在目前指令
并插入一个空周期用以得正确的指令(二个指令周期)
Rev. 1.40 32 2003-11-20
SZ [m]. i 如果数据存储器的第 i 位为 说明
运算过程 影响标志位
TABRDC [m] 读取 ROM 当前页的内容 说明
运算过程 TBLHÅ程序存储器高四位 影响标志位
TABRDL [m] 读取 ROM 最后一页的内容 说明
运算过程 TBLHÅ程序存储器高四位 影响标志位
XOR A, [m] 累加器与立即数做 说明 运算过程 影响标志位
XORM A, [m] 累加器与数据存储器做 说明 运算过程 影响标志位
XOR A, x 累加器与数据存储器做 说明 运算过程 影响标志位
本指令是判断存储器内第 i 位值是否为 0
令执行期间所取得的下一条指令 否则执行下一条指令(一个指令周期)
如果 [m].i = 0
本指令是将表格指针指向程序寄存器当前页
寄存器内
[m] Å程序存储器低四位
本指令是将 TABL E 指针指向程序寄存器最后页
TBLH 寄存器内
[m] Å程序存储器低四位
本指令是把累加器值 数据存储器值做逻辑异或
ACCÅACC “XOR” [m]
本指令是把累加器值
[m]ÅACC “XOR” [m]
本指令是把累加器值与立即数做逻辑异或
ACCÅACC “XOR” x
跳过下一行指令
TO PDF OV Z AC C
TO PDF OV Z AC C
TO PDF OV Z AC C
异或 运算 结果放入累加器
TO PDF OV Z AC C
异或 运算 结果放入数据存储器
数据存储器值做逻辑异或 结果放到数据存储器
TO PDF OV Z AC C
异或 运算 结果放入累加器
TO PDF OV Z AC C
则跳过下一条指令
0
若为 0 则跳过下一行指令 即放弃在目前指
并插入一个空周期用以得正确的指令(二个指令周期)
并送至数据存储器和 TBLH
将低位送到存储器 高位直接送到 TBLH
并送至数据存储器和 TBLH
将低位送到存储器 高位直接送到
结果放到累加器
结果放到累加器
HT47C10L
Rev. 1.40 33 2003-11-20
HT47C10L
封装尺寸
44-pin QFP (10×10) outline dimensions
3 4
A
B
4 4
符号
A 13 B 9.90 C 13 D 9.90 E F 0.30 G 1.90 H
I
J 0.73
K 0.10
0 7
最小 一般 最大
C
D
3 3
2 3
1 11
尺寸 (单位
2 2
1 2
0.80
0.10
F
E
mm)
H
G
I
K
a
J
13.40
10.10
13.40
10.10
2.20
2.70
0.93
0.20
Rev. 1.40 34 2003-11-20
HT47C10L
盛群半导体股份有限公司 台湾新竹市科学工业园区研新二路 3 号 电话: 886-3-563-1999 传真: 886-3-563-1189 网站: www.holtek.com.tw
盛群半导体股份有限公司 台北市南港区园区街 3 2 4 楼之 2 电话: 886-2-2655-7070 传真: 886-2-2655-7373 传真: 886-2-2655-7383 (International sales hotline)
盛扬半导体 上海宜山路 889 2 号楼 7 200233 电话: 021-6485-5560 传真: 021-6485-0313 网站: www.holtek.com.cn
盛群半导体 香港九龙长沙湾道 777-779 号天安工业大厦 3 A 座 电话: 852-2-745-8288 传真: 852-2-742-8657
Holmate Semiconductor, Inc.
46712 Fremont Blvd., Fremont, CA 94538
电话: 510-252-9880 传真: 510-252-9885 网站: www.holmate.com
Copyright 2003 by HOLTEK SEMICONDUCTOR INC.
使用指南中所出现的信息在出版当时相信是正确的 然而盛群对于说明书的使用不负任何责任 文中提 到的应用目的仅仅是用来做说明 它的产品使用在会由于故障或其它原因可能会对人身造成危害的地方 生器件或系统中做为关键器件 的网址 http://www.holtek.com.tw
Rev. 1.40 35 2003-11-20
上海 有限公司
香港 有限公司
总公司
业务处
盛群不保证或表示这些没有进一步修改的应用将是适当的 也不推荐
盛群产品不授权使用于救生 维
盛群拥有不事先通知而修改产品的权利 对于最新的信息 请参考我们
Loading...