HOLTEK HT49CV3

HT49CV3
VFD 型八位 Mask 单片机
盛群知识产权政策
专利权
盛群半导体公司在全球各地区已核准和申请中之专利权至少有 160 件以上,享有绝对之合法权益。与盛群
公司 MCU 或其它产品有关的专利权并未被同意授权使用,任何经由不当手段侵害盛群公司专利权之公司、
组织或个人,盛群将采取一切可能的法律行动,遏止侵权者不当的侵权行为,并追讨盛群公司因侵权行为
所受之损失、或侵权者所得之不法利益。
商标权
盛群之名称和标识、Holtek 标识、HT-IDE、HT-ICE、Marvel Speech、 Music Micro、 Adlib Micro、 Magic
Voice、 Green Dialer、 PagerPro、 Q-Voice、 Turbo Voice、 EasyVoice 和 HandyWriter 都是盛群半导体公
司在台湾地区和其它国家的注册商标。
著作权
Copyright  2005 by HOLTEK SEMICONDUCTOR INC.
规格书中所出现的信息在出版当时相信是正确的,然而盛群对于规格内容的使用不负责任。文中提到的应
用其目的仅仅是用来做说明,盛群不保证或不表示这些应用没有更深入的修改就能适用,也不推荐它的产
品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使用于救生、维生器件或
系统中做为关键器件。盛群拥有不事先通知而修改产品的权利,对于最新的信息,请参考我们的网址
http://www.holtek.com.tw; http://www.holtek.com.cn
Rev. 1.10
1
2005-07-12
HT49CV3
技术相关信息
•
•
•
工具信息
问答集
应用范例
− HA0077S HT49CVX Remote Control Receiver SWIP Design Note
− HA0078S HT49CVX Display SWIP Design Note
特性
•
•
•
•
•
•
•
•
•
•
工作电压:
fSYS=4MHz:2.2V~5.5V
fSYS=8MHz:3.3V~5.5V
17 个双向输入/输出口(PA、PB、PC、PD)
2 个外部中断输入
2 个 16 位定时/计数器,具有 PFD(可编程分频
器)功能
1 个 8 位遥控定时/计数器(RMT),引脚与 PC7
共用
1 通道串行接口
11×11 段的 VFD 驱动(16 段和 4 栅格到 11 段和
11 栅格)
2K×16 程序存储器
96×8 数据存储器
具有 PFD 功能,可用于发声
•
•
•
•
•
•
•
•
•
•
•
•
•
•
实时时钟(RTC)
8 位的实时时钟预分频器
看门狗定时器
蜂鸣器输出
内置晶体、RC 和 32768Hz 晶体振荡电路
HALT 和唤醒功能可降低功耗
6 层硬件堆栈
低电压复位功能
位操作指令
查表指令,表格内容字长 16 位
系统频率为 8MHz 时,指令周期为 0.5µs
63 条功能强大的指令
指令执行时间为 1 或 2 个指令周期
52-pin QFP 封装
概述
HT49CV3 是 8 位高性能精简指令集单片机,其单周期指令和 2 级流水线架构使其可用于高速应用。
内置 VFD 驱动使这款单片机可以应用于 DVD、VCD、Mini component Stereo、Cassette Deck、Tuner 和 CD
Player、家用电器。
Rev. 1.10
2
2005-07-12
HT49CV3
方框图
In te rru p t
C ir c u it
M
T M R 1 C
T M R 1
P F D 1
IN T C
M
M P
U
fS
X
A L U
U
X
M
fS
U
S T A T U S
X
P D
P D
P D
P D
P O R T D
P D
P B C
B P
S
D
A C C
P O R T B
P A C
E N /D IS
H A L T
S E G 1 1 /G r id 1 0 ~
S E G 1 5 /G r id 6
4 /IN
5 /IN
6 /T
7 /T
P A
P A
P A
P A
P A
P O R T A
P A
V F D D R IV E R
G r id 0 ~
G r id 5
/4
O S C
O S C 3
O S C 4
T 0
T 1
M R 0
M R 1
P B 0 ~ P B 3
P B
V F D
M e m o ry
S
V E E
Y S
R T C
S h ifte r
C 1
C 3
/4
W D T O S C
P D C
T im in g
G e n e r a tio n
Y S
3 2 7 6 8 H z
M U X
In s tr u c tio n
D e c o d e r
Y S
P D 7 /T M R 1
U
D A T A
M e m o ry
X
fS
P D 6 /T M R 0
M
W D T
O S
O S
V D
V S
R E
X
R T C
In s tr u c tio n
R e g is te r
O S C 2
O S C 4
U
P F D 0
S T A C K
P ro g ra m
C o u n te r
P ro g ra m
R O M
P r e s c a le r
M
T M R 0 C
T M R 0
0 /
1 /
2
3 /
4 ~
B Z
B Z
P F D
P A 7
L V R
S E G 0 ~
S E G 1 0
P C C
P O R T C
P C 7 /R M T
P C
S D I
S D O
S C K
S e r ia l In te r fa c e
S C S
M U X
fS
fR
8 - b it R e m o te
C o n tr o l T im e r
Rev. 1.10
3
Y S /4
T C O S C
R M T
2005-07-12
HT49CV3
引脚图
G
G
G
G
G
G
R ID 5
R ID 4
R ID 3
R ID 2
R ID 1
R ID 0
S C S
S C K
S D O
S D I
O S C 4
O S C 3
V D D
O S
O S
R
P A 0
P A 1
P A 3 /P
P
P
P
P
P
P
P
C 2
C 1
E S
/B Z
/B Z
A 2
F D
A 4
A 5
A 6
A 7
B 0
B 1
5 2 5 1 5 0 4 9 4 8 4 7 4 6 4 5 4 4 4 3 4 2 4 1 4 0
1
3 9
2
3 8
3
3 7
4
3 6
5
3 5
6
H T 4 9 C V 3
5 2 Q F P -A
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 2 3 2 4 2 5 2 6
3 4
3 3
3 2
3 1
3 0
2 9
2 8
2 7
V D
V E
S E
S E
S E
S E
S E
S E
S E
S E
S E
S E
S E
E
D
G 1 5
G 1 4
G 1 3
G 1 2
G 1 1
G 1 0
G 9
G 8
G 7
G 6
G 5
/G
/G
/G
/G
/G
R ID
R ID
R ID
R ID
R ID
6
7
9
8
1 0
S E G
S E G
S E G
S E G
S E G
P C 7
V S S
P D 7
P D 6
P D 5
P D 4
P B 3
P B 2
M R 1
M R 0
T 1
T 0
4
3
2
1
0
/R M T
/T
/T
/IN
/IN
注: 每个 VDD(VSS)引脚都必须连接到系统的 power(ground)
极限参数
电源供应电压………….VSS-0.3V~VSS+6.0V
端口输入电压………….VSS-0.3V~VDD+0.3V
储存温度………….-50℃~125℃
工作温度………..….-40℃~85℃
注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状态,而
且若长期在标示范围外的条件下工作,可能影响芯片的可靠性。
Rev. 1.10
4
2005-07-12
HT49CV3
引脚说明
引脚名称
PA0/BZ
PA1/ BZ
PA2
PA3/PFD
PA4~PA7
输入/输出
掩膜选项
说明
输入/输出
唤醒功能
上拉电阻
蜂鸣器
PFD
8 位双向输入/输出口。每一位可由掩膜选项设置为唤醒输
入。可由软件设置为 CMOS 输出、带或不带上拉电阻(由
上拉电阻选项决定:位选择)的斯密特触发输入。BZ、BZ
和 PFD 分别与 PA0、PA1 和 PA3 共用引脚。
PB0~PB3
输入/输出
上拉电阻
PC7/RMT
输入/输出
上拉电阻
PD4/ INT0
PD5/ INT1
PD6/TMR0
PD7/TMR1
输入/输出
上拉电阻
—
—
输出
—
—
—
VSS
VEE
SEG0~SEG10
SEG11/Grid10~
SEG15/Grid6
Grid0~Grid5
SDI
SDO
SCK
输出
—
输出
输入
输出
输入/输出
—
—
—
—
SCS
输入/输出
—
OSC3
OSC4
输入
输出
RTC 或系
统时钟
VDD
—
—
OSC1
OSC2
输入
输出
晶体或
RC
RES
输入
—
Rev. 1.10
4 位双向输入/输出口。可由软件设置为 CMOS 输出,或
是带或不带上拉电阻(由上拉电阻选项决定:位选择)的斯
密特触发输入。
1 位双向输入/输出口。可由软件设置为 CMOS 输出、带
或不带上拉电阻(由上拉电阻选项决定:位选择)的斯密特
触发输入。带(上升沿和下降沿)唤醒功能的 RMT 和带或
不带上拉电阻(由上拉电阻选项决定)的斯密特触发输入
注意:RMT 和 PC7 共用引脚。
当 PC7/RMT 引脚用作 RMT
功能的输入模式时,建议用户将 PC7 设置成输入模式以
保安全。
这样 PC7 的 I/O 功能将不会影响 RMT 输入功能。
4 位双向输入/输出口。可由软件设置为 CMOS 输出、带
或不带上拉电阻(由上拉电阻选项决定:位选择)的斯密特
触发输入。INT0 / INT1 /TMR0/TMR1 与 PD4/PD5/PD6/PD7
共用引脚(由软件决定)。
负电源,接地。
VFD 负电源。
VFD 驱动的高电压 segment 输出。
VFD 驱动的高电压输出。这些引脚可选择为 segment 或
grid 输出。
VFD 驱动的高电压 grid 输出
串行接口的串行数据输入
串行接口的串行数据输出
串行接口的串行时钟输入/输出(初始为“输入”)。
串行接口的片选引脚,主机模式时作输出,从机模式时作
输入。
实时时钟振荡器。OSC3、OSC4 连接 32768Hz 的晶体振
荡器,用于提供定时或系统时钟(由掩膜选项确定)。没有
内建电容。
正电源。
OSC1、OSC2 连接 RC 或晶体(由掩膜选项确定)以产生内
部系统时钟。在 RC 振荡方式下,OSC2 是系统时钟四分
频的输出口。系统时钟也可以选择为 RTC 振荡;如果选
择 RTC 振荡作为系统时钟,则这两个引脚可以空接。
斯密特触发复位输入,低电平有效。
5
2005-07-12
HT49CV3
直流电气特性
符号
Ta=25℃
参数
VDD
工作电压
VEE
VFD 电源电压
IDD1
工作电流(晶体振荡)
IDD2
工作电流(RC 振荡)
IDD3
IDD4
工作电流
(fSYS=32768Hz)
工作电流
(晶体振荡)
ISTB1
静态电流
(*fS=T1)
ISTB2
静态电流
(*fS=32768Hz 振荡)
VIL1
VIH1
输入/输出口、TMR、
INT 的低电平输入电压
输入/输出口、TMR、
INT 的高电平输入电压
VDD
—
—
—
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
测试条件
条件
fSYS=4MHz
fSYS=8MHz
—
无负载,VFD 关闭,
fSYS=4MHz
无负载,VFD 关闭,
fSYS=4MHz
无负载,VFD 关闭
无负载,VFD 打开,
fSYS=4MHz
无负载,系统 HALT,
HALT 时 VFD 关闭
最小
典型
最大
单位
2.2
3.3
0
—
—
—
—
—
—
—
—
—
—
—
—
—
2.0
5.0
1.8
4.6
1.2
4
3.5
7.5
—
—
5.5
5.5
VDD-30
3.0
8.0
2.7
7.5
2
7
4.5
12
1
2
V
V
V
mA
mA
mA
mA
mA
mA
mA
mA
µA
µA
无负载,系统 HALT,
HALT 时 VFD 关闭
—
4
10
µA
—
14
20
µA
—
0
—
0.2 VDD
V
—
0.8VDD
—
VDD
V
—
0
—
0.4 VDD
V
—
0.9 VDD
—
VDD
V
6
10
-2
-5
12
25
-4
-8
—
—
—
—
mA
mA
mA
mA
VIL2
低电平输入电压( RES)
VIH2
高电平输入电压( RES)
IOL
输入/输出口灌电流
IOH1
输入/输出口源电流
IOH2
Grid 源电流
5V
VOH=VDD –2V
-15
—
—
mA
IOH3
Segment 源电流
5V
VOH=VDD –2V
-3
—
—
mA
输入/输出口、 INT0 和
INT1 上拉电阻
VFD 驱动输出下拉电
阻
低电压复位
3V
5V
—
—
20
10
60
30
100
50
kΩ
kΩ
5V
—
50
100
150
kΩ
—
LVR 使能
2.7
3.0
3.3
V
RPH
RPL
VLVR
VOL=0.1VDD
VOH=0.9VDD
注:有关“fS”的具体说明请参阅 WDT 的时钟选择。
Rev. 1.10
6
2005-07-12
HT49CV3
交流电气特性
符号
Ta=25℃
参数
VDD
—
—
fSYS1
系统时钟
fSYS2
系统时钟
(32768Hz 晶体振荡)
—
fRTCOSC
RTC 频率
—
fTIMER
定时器输入频率
(TMR0/TMR1)
tWDTOSC
看门狗振荡器周期
tRES
tSST
tINT
外部复位低电平脉宽
系统启动延迟时间
中断脉冲宽度
—
—
3V
5V
—
—
—
测试条件
条件
2.2V~5.5V
3.3V~5.5V
最小
典型
最大
单位
400
400
—
—
4000
8000
kHz
—
32768
—
Hz
—
—
32768
—
Hz
—
—
—
上电或从 HALT 状态唤醒
—
0
0
45
32
1
—
1
—
—
90
65
—
1024
—
4000
8000
180
130
—
—
—
2.2V~5.5V
2.2V~5.5V
3.3V~5.5V
kHz
µs
µs
*tSYS
µs
注:*tSYS =1/fSYS
Rev. 1.10
7
2005-07-12
HT49CV3
系统功能说明
指令执行时序
单片机的系统时钟由晶体振荡器或 RC 振荡器和 32768Hz 的晶体振荡器产生。该时钟在芯片内部被分
成四个互不重叠的时钟周期。一个指令周期包括四个系统时钟周期。
指令的读取和执行是以流水线方式进行的, 这种方式在一个指令周期进行读取指令操作,而在下一个
指令周期进行解码与执行该指令。因此,流水线方式使多数指令能在一个周期内执行完成。但如果渉及到
的指令要改变程序计数器的值,就需要花两个指令周期来完成这一条指令。
S y s te m
T 1
C lo c k
T 2
T 3
T 4
T 1
T 2
T 3
T 4
T 1
T 2
T 3
T 4
O S C 2 ( R C o n ly )
P C
P C
P C + 1
F e tc h IN S T (P C )
E x e c u te IN S T (P C -1 )
P C + 2
F e tc h IN S T (P C + 1 )
E x e c u te IN S T (P C )
F e tc h IN S T (P C + 2 )
E x e c u te IN S T (P C + 1 )
指令执行时序
程序计数器 — PC
11 位的程序计数器(PC)控制程序存储器 ROM 中指令执行的顺序,它可寻址整个 ROM 范围的 2048 个
地址。
取得指令码以后,程序计数器会自动加一,指向下一个指令码的地址。但如果执行跳转、条件跳跃、
向 PCL(程序计数器低字节寄存器)赋值、子程序调用、初始化复位、中断或子程序返回等操作时,PC 会载
入与指令相关的地址而非下一条指令地址。
模式
初始化复位
外部中断 0
外部中断 1
定时/计数器 0 溢出
定时/计数器 1 溢出
串行接口中断
多功能中断
条件跳跃
装载 PCL
跳转,子程序调用
子程序返回
*10
0
0
0
0
0
0
0
*9
0
0
0
0
0
0
0
*8
0
0
0
0
0
0
0
*7
0
0
0
0
0
0
0
*10
#10
S10
*9
#9
S9
*8
#8
S8
@7
#7
S7
程序计数器
*6
*5
*4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
1
Program Counter+2
@6
@5
@4
#6
#5
#4
S6
S5
S4
*3
0
0
1
1
0
0
1
*2
0
1
0
1
0
1
0
*1
0
0
0
0
0
0
0
*0
0
0
0
0
0
0
0
@3
#3
S3
@2
#2
S2
@1
#1
S1
@0
#0
S0
程序计数器
注: *10 ~ *0 :程序计数器位
#10 ~ #0 :指令代码位
S10~ S0 :堆栈寄存器位
@7 ~ @0 :PCL 位
当遇到条件跳跃指令且符合条件时,当前指令执行过程中读取的下一条指令会被丢弃,取而代之的是
一个空指令周期,随后才能取得正确的指令。反之,就会顺序执行下一条指令。
程序计数器的低字节(PCL)是一个可读写的寄存器(06H)。对 PCL 赋值将产生一个短跳转动作,跳转的
范围为当前页 256 个地址。当遇到控制转移指令时,系统也会插入一个空指令周期。
Rev. 1.10
8
2005-07-12
HT49CV3
程序存储器 — PROM
程序存储器(Mask Rom)用来存放要执行的指令代码, 0 0 0 H
D e v ic e In itia liz a tio n P r o g r a m
以及一些数据、表格和中断入口。程序存储器有 2048×16 0 0 4 H
E x te r n a l In te r r u p t 0 S u b r o u tin e
位。因为程序计数器为 11 位,所以程序存储器空间可以 0 0 8 H
E x te r n a l In te r r u p t 1 S u b r o u tin e
用程序计数器进行直接寻址而不需要切换程序区(bank)。
0
0
C
H
以下列出的程序存储器地址是系统专为特殊用途而
T im e r /E v e n t C o u n te r 0 In te r r u p t S u b r o u tin e
保留的:
0 1 0 H
T im e r /E v e n t C o u n te r 1 In te r r u p t S u b r o u tin e
· 地址 000H
P ro g ra m
0 1 4 H
R O M
S e r ia l In te r fa c e In te r r u p t
该地址为程序初始化保留。系统复位后,程序总是从
0 1 8 H
000H 开始执行。
M u lti- fu n c tio n In te r r u p t
n 0 0 H
· 地址 004H
L o o k - u p T a b le ( 2 5 6 W o r d s )
该地址为外部中断 0 服务程序保留。当 INT0 引脚有触 n F F H
发信号输入,如果中断允许且堆栈未满,则程序会跳转到
004H 地址开始执行。
L o o k - u p T a b le ( 2 5 6 W o r d s )
7 F F H
· 地址 008H
1 6 b its
该地址为外部中断 1 服务程序保留。当 INT1引脚有触
N o te : n ra n g e s fro m 0 to 7
发信号输入,如果中断允许且堆栈未满,则程序会跳转到
008H 地址开始执行。
程序存储器
· 地址 00CH
该地址为定时/计数器 0 中断服务程序保留。当定时/计数器 0 溢出,如果中断允许且堆栈未满,则程
序会跳转到 00CH 地址开始执行。
· 地址 010H
该地址为定时/计数器 1 中断服务程序保留。当定时/计数器 1 溢出,如果中断允许且堆栈未满,则程
序会跳转到 010H 地址开始执行。
· 地址 014H
该地址为串行接口中断服务程序保留。当从串行接口成功接收或发送 8 位数据时,如果中断允许且堆
栈未满,则程序会跳转到 014H 地址开始执行。
· 地址 018H
该地址为多功能中断服务程序保留。如果实时时钟中断发生,或者 RMT 输入引脚有上升沿或下降沿,
或 RMT 溢出,如果相关中断允许且堆栈未满,则程序会跳转到 018H 地址开始执行。
· 表格区
ROM 空间的任何地址都可做为查表使用。查表指令“TABRDC [m]”(查当前页表格,1 页=256 个字)
和“TABRDL [m]”(查最后页表格),会把表格内容低字节传送给[m],而表格内容高字节传送到 TBLH 寄
存器(08H)。只有表格内容的低字节被传送到目标地址中,而高字节被传送到表格内容高字节寄存器
TBLH(08H),
并且 TBLH 的最高位始终为“0”。
表格内容高字节寄存器 TBLH 是只读寄存器。表格指针(TBLP)
是可读/写寄存器(07H),用来指明表格地址。在查表之前,要先将表格地址写入 TBLP 中。所有与表格有
关的指令都需要两个指令周期的执行时间。这里提到的表格区都可以根据需要做为正常的程序存储器来使
用。
指令
TABRDC[m]
TABRDL[m]
*10
P10
1
*9
P9
1
注:*10 ~ *0 :表格地址字节
Rev. 1.10
*8
P8
1
*7
@7
@7
*6
@6
@6
表格区
表格区
*5
@5
@5
*4
@4
@4
P10 ~ P8 :当前程序指针字节
9
*3
@3
@3
*2
@2
@2
*1
@1
@1
*0
@0
@0
@7 ~ @0 :表格指针字节
2005-07-12
HT49CV3
堆栈寄存器 — STACK
堆栈寄存器是特殊的存储器空间,用来保存 Program
Counter 的值。此芯片有 6 层堆栈,堆栈寄存器既不是数据存
储器的一部分,也不是程序存储器的一部分,而且它既不能
读出,也不能写入。堆栈的使用是通过堆栈指针(SP)来实现的,
堆栈指针也不能读出或写入。当发生子程序调用或中断响应
时,程序计数器(Program Counter)的值会被压入堆栈;在子程
序调用结束或中断响应结束时(执行指令 RET 或 RETI),堆栈
将原先压入堆栈的内容弹出,重新装入程序计数器中。在系
统复位后,堆栈指针会指向堆栈顶部。
如果堆栈已满,并且发生了不可屏蔽的中断,那么只有
中断请求标志会被记录下来,而中断响应会被抑制,直到堆
栈指针(执行 RET 或 RETI 指令)发生递减,中断才会被响应。
这个功能可以防止堆栈溢出,使得程序员易于使用这种结构。
同样,如果堆栈已满,并且发生了子程序调用,那么堆栈会
发生溢出,首先进入堆栈的内容将会丢失,只有最后的 6 个
返回地址会被保留。
数据存储器 — RAM
0 0 H
In d ir e c t A d d r e s s in g R e g is te r 0
0 1 H
M P 0
0 2 H
In d ir e c t A d d r e s s in g R e g is te r 1
0 3 H
M P 1
0 4 H
B P
0 5 H
A C C
0 6 H
P C L
0 7 H
T B L P
0 8 H
T B L H
0 9 H
R T C C
0 A H
S T A T U S
0 B H
IN T C 0
0 C H
T M R 0 H
0 D H
T M R 0 L
0 E H
T M R 0 C
0 F H
T M R 1 H
1 0 H
T M R 1 L
1 1 H
T M R 1 C
1 2 H
P A
1 3 H
P A C
1 4 H
P B
1 5 H
P B C
1 6 H
P C
1 7 H
S p e c ia l P u r p o s e
D A T A M E M O R Y
P C C
数据存储器由 130×8 位组成,分为两个功能区间:特殊 1 8 H
P D
功能寄存器(34×8)和通用数据存储器(96×8),数据存储器单 1 9 H
P D C
P W M 0
元大多数是可读/写的,但有些是只读的。特殊功能寄存器在 1 A H
1 B H
P W M 1
每个存储区段都是重叠的。
1 C H
P W M 2
特殊功能寄存器包括间接寻址寄存器 0(00H),间接寻址 1 D H
P W M 3
指针寄存器 0(MP0:01H),间接寻址寄存器 1(02H),间接寻 1 E H
IN T C 1
S B C R
址指针寄存器 1(MP1:03H),存储器段指针(BP:04H),累加 1 F H
2 0 H
S B D R
器(ACC:05H),程序计数器低字节寄存器(PCL:06H),表格
2 1 H
R M T C
指针寄存器(TBLP:07H),表格内容高字节寄存器(TBLH: 2 2 H
R M T 0
08H),RTC 控制寄存器(RTCC:09H),状态寄存器(STATUS: 2 3 H
R M T 1
0AH) , 中 断 控 制 寄 存 器 0(INTC0 : 0BH) , 定 时 / 计 数 器 2 4 H
A D R
0(TMR0H:0CH;TMR0L:0DH),定时/计数器 0 控制寄存 2 5 H
2 6 H
A D C R
器(TMR0C:0EH),定时/计数器 1(TMR1H:0FH,TMR1L: 2 7 H
A C S R
10H), 定时/计数器 1 控制寄存器(TMR1C:11H),中断控制 2 8 H
V F D C
M F IS
寄存器 1(INTC1:1EH),串行总线控制寄存器(SBCR:1FH), 2 9 H
串行总线数据寄存器(SBDR:20H),遥控定时器控制寄存器 3 0 H
(RMTC:21H),远程控制寄存器 0(RMT0:22H),远程控 3 F H
制寄存器 1(RMT1:23H),多功能中断状态寄存器(MFIS: 4 0 H
G e n e ra l P u rp o s e
: U n u s e d
D A T A M E M O R Y
29H),VFD 控制寄存器(VFDC:28H),输入/输出寄存器(PA:
R e a d a s "0 0 "
(9 6 B y te s )
12H,PB:14H,PC:16H,PD:18H),输入/输出控制寄存 9 F H
器(PAC:13H,PBC:15H,PCC:17H,PDC:19H)。其余
在 40H 之前的空间保留给系统以后扩展使用,读取这些地址
HT49CV3 的数据存储器
的返回值为“00H”。在每一个存储区段(BANK)的 40H 都
是重叠的。而在通用存储寄存器的地址从 40H 到 9FH,用来
存储数据和控制信息。
所有的数据存储器单元都能直接执行算术、逻辑、递增、递减和循环操作。除了一些特殊位外,数据
存储器的每一位都可由“SET[m].i”置位或由“CLR[m].i”复位。而且都可以通过间接寻址指针(MP0:
01H/MP1:03H)进行间接寻址。
Rev. 1.10
10
2005-07-12
HT49CV3
间接寻址寄存器
地址 00H 和 02H 是间接寻址寄存器,并无实际的物理区存在。任何对[00H]或[02H]的读/写操作,都
是访问由 MP0(01H)MP1(03H)或所指向的 RAM 单元。间接读取地址 00H 或 02H 得到的值为 00H,间接写
入此地址,不会产生任何操作。
间接寻址寄存器之间不支持数据传送功能。间接寻址指针 MP0 和 MP1 是 8 位寄存器。MP0 只能用于
寻址数据存储器,而 MP1 能用于寻址数据存储器和 VFD 显示存储器。
累加器
累加器(ACC)与算术逻辑单元(ALU)有密切关系。它对应于 RAM 地址 05H,做为运算的立即数据。存
储器之间的数据传送必须经过累加器。
算术逻辑单元 — ALU
·
·
·
·
·
算术逻辑单元(ALU)是执行 8 位算术、逻辑运算的电路,它提供有以下功能:
算术运算(ADD,ADC,SUB,SBC,DAA)
逻辑运算(AND,OR,XOR,CPL)
移位运算(RL,RR,RLC,RRC)
递增和递减(INC,DEC)
分支判断(SZ,SNZ,SIZ,SDZ…)
ALU 不仅可以储存数据运算的结果,还会改变状态寄存器的值。
状态寄存器 — STATUS
8 位的状态寄存器(0AH),由零标志位(Z)、进位标志位(C)、辅助进位标志位(AC)、溢出标志位(OV)、
暂停标志位(PDF)和看门狗定时器溢出标志位(TO)组成。该寄存器不仅记录状态信息,而且还控制操作顺
序。
位
符号
0
C
1
AC
2
Z
3
OV
4
PDF
5
TO
6、7
—
功能
如果在加法运算中结果产生了进位或在减法运算中结果不产生借位,
则 C 被置位;反之,C 被清除。它也可被循环移位指令影响。
如果在加法运算中低 4 位产生了进位或减法运算中低 4 位不产生借
位,则 AC 被置位;反之,AC 被清除。
如果算术或逻辑运算的结果为零,则 Z 被置位;反之,Z 被清除。
如果运算结果向最高位进位,但最高位并不产生进位输出,则 OV 被
置位;反之,OV 被清除
系统上电或执行“CLR WDT”指令,PDF 被清除;执行“HALT”指
令,PDF 被置位。
系统上电、执行“CLR WDT”或“HALT”指令,TO 被清除;WDT
定时溢出,TO 被置位。
未用,读出为“0”
STATUS(0AH)寄存器
除了 PDF 和 TO 标志外,状态寄存器的其它位都可以用指令改变。任何对状态寄存器的写操作都不会
改变 PDF 和 TO 的值。对状态寄存器的操作可能会导致与预期不一样的结果。TO 标志只受系统上电、看
门狗溢出、
“CLR WDT”指令或“HALT”指令的影响。PDF 标志只受系统上电、“CLR WDT”指令或“HALT”
指令的影响。标志位 Z、OV、AC 和 C 反映的是最近一次操作的状态。
在进入中断程序或子程序调用时,状态寄存器不会被自动压入堆栈。如果状态寄存器的内容是重要的,
而且子程序会影响状态寄存器的内容,那么程序员必须事先将 STATUS 的值保存好。
Rev. 1.10
11
2005-07-12
HT49CV3
中断
HT49CV3 提供两个外部中断、两个内部定时/计数器中断、三个遥控定时器中断、一个内部实时时钟
中断和串行接口中断。中断控制寄存器 0(INTC0:0BH)和中断控制寄存器 1(INTC1:1EH)包含了中断控制
位和中断请求标志,中断控制位用来设置中断允许/禁止。
位
0
1
2
3
4
5
6
7
符号
EMI
EEI0
EEI1
ET0I
EIF0
EIF1
T0F
—
功
能
总中断控制位(1=允许;0=禁止)
外部中断 0 控制位(1=允许;0=禁止)
外部中断 1 控制位(1=允许;0=禁止)
定时/计数器 0 中断控制位(1=允许;0=禁止)
外部中断 0 请求标志(1=有;0=无)
外部中断 1 请求标志(1=有;0=无)
定时/计数器 0 中断请求标志(1=有;0=无)
未用,读出为“0”
INTC0(0BH)寄存器
位
0
1
2
3,7
4
符号
ET1I
ESBI
EMFI
—
T1F
5
TRF
6
MFF
功
能
定时/计数器 1 中断控制位(1=允许;0=禁止)
串行接口中断控制位(1=允许;0=禁止)
实时多功能中断控制位(1=允许;0=禁止)
未用,读出为“0”
定时/计数器 0 中断请求标志(1=有;0=无)
串行总线数据发送或接收中断请求标志
(1=有;0=无)
多功能中断请求标志(1=有;0=无)
INTC1(1EH)寄存器
只要有中断子程序被服务,其余的中断全部都被自动禁止(通过清除 EMI 位),这种做法的目的在于防
止中断嵌套。这时如果有其它中断发生,只有中断请求标志会被记录下来。如果在中断服务程序中有另一
个中断需要响应,程序员可以置位 EMI、INTC0 和 INTC1 所对应的位,以便进行中断嵌套。如果堆栈已
满,则中断并不会被响应,一直到堆栈指针(SP)发生递减后才会响应。如果需要中断立即得到响应,应避
免堆栈饱和。
所有的中断都具有唤醒能力。当有中断被服务,系统会将程序计数器的内容压入堆栈,然后再跳转至
中断服务程序的入口。但这时只有程序计数器的内容被压入堆栈,如果其它寄存器和状态寄存器(STATUS)
的内容会被中断程序改变,从而会破坏主程序的控制流程的话,程序员应该事先将这些数据保存起来。
外部中断是由 INT0 或 INT1引脚电平变化触发的(可由掩膜设置为上升沿触发、下降沿触发或两者皆可
触发),其中断请求标志位(EIF0/EIF1;INTC0 的第 4、5 位)会被置位。如果中断允许,且堆栈未满,当发
生外部中断时,会产生地址 04H/08H 的子程序调用;而中断请求标志 EIF0/EIF1 和总中断控制位 EMI 会被
清除,以禁止其它中断响应。
内部定时/计数器 0 中断是由定时/计数器 0 溢出触发的,其中断请求标志(T0F;INTC0 的第 6 位)会被
置位。如果中断允许,且堆栈未满,当发生定时/计数器 0 中断时,会产生地址 00CH 的子程序调用;而中
断请求标志 T0F 和总中断控制位 EMI 会被清除,以禁止其它中断响应。内部定时/计数器 1 的运作方式与
之相同,相关的中断请求标志位是 T1F(INTC1 的第 4 位),而它的子程序调用的地址是 10H 单元。
串行接口中断是由从串行接口完整的收到或传送 8 位数据触发的,其中断请求标志(TDRF;INTC1 的
第 5 位)会被置位。如果中断允许,且堆栈未满,当发生时基中断时,会产生地址 14H 的子程序调用;而
中断请求标志 TDRF 和总中断控制位 EMI 会被清除,以禁止其它中断响应。
Rev. 1.10
12
2005-07-12
HT49CV3
多功能中断是由实时时钟溢出、RMT 的上升沿、RMT 下降沿或 RMT 溢出触发的,其中断请求标志
(MFF;INTC1 的第 6 位)会被置位。如果中断允许,且堆栈未满,当发生 RTC 中断时,会产生地址 18H 的
子程序调用;而中断请求标志位 MFF 和总中断控制位 EMI 会被清除,以禁止其它中断响应。
位
0
1
2
3
符号
—
ERMT0
ERMT1
ERMTV
4
RME
5
RMCS
6
7
RMS0
RMS1
位
0
1
2
3
4
5~7
符号
RMTVF
RTF
RMT0F
RMT1F
ERTI
—
功
能
未用,读出为“0”
遥控定时器上升沿中断控制位(1=允许;0=禁止)
遥控定时器下降沿中断控制位(1=允许;0=禁止)
遥控定时器溢出中断控制位(1=允许;0=禁止)
遥控定时器控制位(1=允许;0=禁止)
1=使能并开始计数;0=禁止并清零计数器
遥控定时器时钟源 fx 选择位(1=fSYS;0= fSYS/4)
遥控定时器时钟选择位
00=fx/25
01=fx/26
10=fx/27
11=fx/28
RMTC(21H)寄存器
功
能
遥控定时器溢出中断请求标志(1=有;0=无)
实时时钟中断请求标志(1=有;0=无)
遥控定时器上升沿中断请求标志(1=有;0=无)
遥控定时器下降沿中断请求标志(1=有;0=无)
实时时钟控制位(1=允许;0=禁止)
未用,读出为“0”
MFIS(29H)寄存器
在执行中断子程序期间,其它的中断请求会被屏蔽,直到执行 RETI 指令或 EMI 和相关中断控制位被
置位(当然,此时堆栈未满)。如果要从中断子程序返回,只要执行 RET 或 RETI 指令即可。其中,RETI
指令会自动置位 EMI,以允许中断服务,而 RET 则不会。
如果中断在两个连续的 T2 脉冲的上升沿之间发生,且中断响应允许,那么在下两个 T2 脉冲之间,
该中断会被服务。如果同时发生中断请求,其优先级如下表示;这些中断都可以通过清除 EMI 位来进行屏
蔽。
中断源
外部中断 0
外部中断 1
定时/计数器 0 中断
定时/计数器 1 中断
串行接口中断
多功能中断
优先级
1
2
3
4
5
6
中断向量
04H
08H
0CH
10H
14H
18H
RMT 溢出中断请求标志(RMTVF:MFIS 第 0 位)、实时时钟中断请求标志(RTF:MFIS 第 1 位)、RMT
上升沿中断请求标志(RMT0F:MFIS 第 2 位)和 RMT 下降沿中断请求标志(RMT1F:MFIS 第 3 位)指示相
关中断已发生。读取这些标志位不会使其自动清零,而需要用户清零。
串行接口中断由中断标志(TDRF:INTC1 第 5 位)来指示,它会因为 HT49CV3 和一个外围器件之间收
到或发送一个整 8 位的数据而产生。如果中断使能(ESBI 被置位:INTC1 第 1 位),且堆栈未满,当发生串
行接口中断时,会产生地址 14H 的子程序调用。TDRF 由 SIO 置位但需要用户清零。
Rev. 1.10
13
2005-07-12
HT49CV3
中断控制寄存器 0(INTC0)由定时/计数器 0 中断请求标志(T0F)、外部中断 1 请求标志(EIF1)、外部中
断 0 请求标志(EIF0)、定时/计数器 0 中断允许(ET0I)、外部中断 1 允许(EEI1)、外部中断 0 允许(EEI0)和总
中断允许(EMI)组成,其对应于数据存储器地址 0BH。
中断控制寄存器 1(INTC1)由多功能中断申请标志(MFF)、串行接口中断申请标志(TDRF)、定时/计数
器 1 中断请求标志(T1F)、多功能中断使能(EMFI)、串行接口中断使能位(ESBI)和定时/计数器 1 中断允许
(ET1I)组成,其对应于数据存储器地址 1EH。
遥 控 定 时 器 控 制 寄 存 器 由 遥 控 定 时 器 上 升 沿 中 断 允 许 (ERMT0) 、 遥 控 定 时 器 下 降 沿 中 断 允 许
(ERMT1)、遥控定时器溢出中断允许(ERMTV)、遥控定时器启动计数允许(RME)、遥控定时器时钟源选择
(RMCS)和遥控定时器时钟选择(RMS0、RMS1) 组成,其对应于数据存储器地址 21H。
EMI、EEI0、EEI1、ET0I、ET1I、SBEN、ERTI、EMFI、ERMT0 和 ERMT1 用来控制中断的允许/禁
止状态的。这些控制位可以用来屏蔽正在进行中断服务程序时发生的其它中断请求。一旦中断请求标志
(MFF、TDRF、T0F、T1F、EIF0、EIF1)被置位,会一直保留在 INTC0 和 INTC1 寄存器中,直到中断被响
应或用软件指令清除为止。
建议不要在中断服务程序中使用“CALL”指令来调用子程序。因为中断随时都可能发生,而且需要
立刻给予响应。如果只剩下一层堆栈,而中断不能被很好地控制,原先的控制序列很可能因为在中断子程
序中执行“CALL”指令而使堆栈溢出,从而发生混乱。
振荡电路
HT49CV3 有三种振荡方式可以做为系统时钟:外部 RC 振荡、外部晶体振荡和外部 32768Hz 晶体振
荡,可以通过掩膜选项设定。HALT 模式会停止系统振荡器(当选择外部 RC 振荡或外部晶体振荡时),并忽
视任何外部信号以降低功耗。但是 32768Hz 的晶体振荡在 HALT 模式下仍会继续作用。如果选择 32768Hz
振荡做为系统振荡,在 HALT 模式下系统振荡不会停止,但是指令会停止运行。32768Hz 的晶体振荡还可
以做为内部计数器的时钟源,即使进入 HALT 模式,这些计数器(RTC、WDT)还会继续作用。
系统振荡器
注: *32768 晶振选用条件:作 WDT 时钟源或系统时钟源。
连接到 32768Hz 晶振的外部电阻电容元件并非产生振荡的必需条件,在需要精确的 RTC 频率的应用中,这些元
件可能需要根据不同的晶振误差来提供频率补偿。
如果选用外部 RC 振荡方式,在 OSC1 与 VSS 之间需要接一个外部电阻,其阻值为 56kΩ到 1.5MΩ;
而 OSC2 上若接上拉电阻会输出系统频率的 4 分频信号,可用于同步外部逻辑。RC 振荡方式是一种低成
本的方案,但是,RC 振荡频率会随着 VDD、温度和芯片自身参数的漂移而产生误差。因此,在需要精确
振荡频率做为计时操作的场合,并不适合使用 RC 振荡方式。
如果选用晶体振荡方式,在 OSC1 和 OSC2 之间需要连接一个晶体,用来提供晶体振荡器所需的反馈
和相移,除此之外,不再需要其它外部元件。另外,在 OSC1 和 OSC2 之间也可使用谐振器来取代晶体振
荡器,但是在 OSC1 和 OSC2 需要多连接两个电容。
另外还有一个专为实时时钟设计的振荡电路。如果使用 RTC 振荡,那么只要在 OSC3 与 OSC4 之间接
一个 32768Hz 的晶体,不需要其它外部器件。
RTC 振荡器可以通过“QOSC”(RTCC 的第 4 位)设置快速起振。建议在系统上电时开启快速振荡,并
在 2 秒钟后关闭。
WDT 振荡是一个独立的内置振荡电路,不需要外接器件。当系统进入省电模式,系统振荡会停止,
但 WDT 振荡会继续作用,其振荡周期一般为 65µs@5V。WDT 振荡器可以由掩膜选项设置为打开或关闭。
Rev. 1.10
14
2005-07-12
HT49CV3
看门狗定时器 — WDT
WDT 的时钟来源可由掩膜选项设置为内部 RC 振荡(WDT 振荡器)、指令时钟(系统时钟 4 分频)或实
时时钟振荡(RTC 振荡)。WDT 主要用来防止程序运行故障和程序跳入一死循环而导致不可预测的结果。
WDT 可由掩膜选项设置为打开或关闭,如果在关闭状态,所有与 WDT 有关的指令操作都是没有作用的。
S y s te m
C lo c k /4
R T C
O S C 3 2 7 6 8 H z
R O M
C o d e
O p tio n
fS
R O M
C o d e
O p tio n
fW
fW
D T
D T
/2
D iv id e r
W D T
1 2 k H z
O S C
8
W D T
P r e s c a le r
M a s k O p tio n
C K
T
R
C K
T
R
W D T C le a r
T im e - o u t
fW D T /2 15~
fW D T /2 14~
fW D T /2 13~
fW D T /2 12~
R e s e t
fW D T /2 1
fW D T /2 1
fW D T /2 1
fW D T /2 1
6
5
4
3
看门狗定时器
如果 WDT 时钟源为内部 WDT 振荡(RC 振荡周期一般为 65µs@5V),该频率可再经过 212~215(由掩膜
选项设置)的分频。最小的 WDT 溢出周期大约是 300mS~600mS。但溢出时间会因为温度、VDD 以及芯片
参数的变化而变化。如果再用 WDT 预分频器,则可以得到更长的溢出周期。如果 WDT 的溢出时间选为
215 分频,最大的溢出时间可达到 2.3s~4.7s(分频系数为 215~216)。
如果 WDT 的时钟源为指令时钟,则在 HALT 状态时,WDT 会停止计数而失去保护功能;此时只能
靠外部逻辑复位来重新启动系统。如果系统运用在强干扰的环境中,建议选用内部 WDT 振荡器,因为 HALT
模式会使系统时钟停止,看门狗也就失去了保护的功能。
在正常运行时,WDT 溢出会使系统复位并置位 TO 标志;但在 HALT 模式下,WDT 溢出只产生“热
复位”,只有程序计数器和堆栈指针 SP 被复位。要清除 WDT 的值可以有三种方法:外部复位(低电平输入
、“CLR WDT2”
到 RES端)、清除看门狗指令或 HALT 指令。清除看门狗指令有“CLR WDT”和“CLR WDT1”
二组指令。这两组指令中,只能选择其中一组,由掩膜选项决定。如果选择“CLR WDT”
,那么只要执行
“CLR WDT” 指令就会清除 WDT。如果选择“CLR WDT1”和“CLR WDT2”,那么二条指令要交替使
用才会清除 WDT,否则,WDT 会由于溢出而使系统复位。
多功能定时器
系统为时基和 RTC 提供了具有不同溢出周期的多功能定时器。多功能定时器由
一个 8 级分频器和一个 7 位预分频器组成。其时钟源可以是 RTC OSC 或指令时钟(系
统时钟四分频)。多功能定时器还为 VFD 驱动电路提供可选择的频率信号(范围从
fs/20~fs/27),并为蜂鸣器输出电路提供可选择的频率信号(范围从 fs/21~fs/28),频
率由掩膜选项决定。为了正确地显示,建议选择 32kHZ 左右的信号作为 VFD 驱动信
号。
fS
D iv id e r
R O M
C o d e O p tio n
V F D D r iv e r ( fS /2 0 ~ fS /2 7 )
B u z z e r (fS /2 1~ fS /2 8)
实时时钟 — RTC
实时时钟(RTC)的工作情况和时基一样。它是用来提供一个有规律的内部中断。它的溢出周期范围为
fs/28~fs/215,可通过软件编程实现。写数据到 RT2、RT1、RT0(RTCC 的第 2、1、0 位;09H)将产生各
种溢出周期。当 RTC 发生溢出并且中断允许时,其中断请求标志(RTF;MFIS 第 1 位)会被置位,并且多
功能中断请求标志(MFF:INTC1 第 6 位)也被置位;如果中断(EMFI)允许且堆栈未满,那么就会产生一个
地址 18H 的子程序调用。
实时时钟
Rev. 1.10
15
2005-07-12
HT49CV3
RT2
RT1
RT0
RTC 实时时钟分频级数
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
注:
“*”不建议使用
RTCC 寄存器的定义如下表:
位
标号
可读/可写
复位
0~2
RT0~RT2
R/W
1
3,5-7
4
—
QOSC
—
R/W
—
0
功能
通过控制 8 选 1 多路器输入来选择实时钟预置寄
存器的分频输出比例
未定义,读出为 0
32768Hz 晶振快速起振 0/1:快速/慢速
RTCC(09H)寄存器
暂停模式 — HALT
暂停模式是由 HALT 指令来实现的,暂停模式时系统状态如下:
系统振荡器停振,但 WDT 振荡器会继续振荡(如果选择 WDT 振荡或 RTC 振荡)。
RAM 和寄存器内容保持不变。
WDT 被清除并重新开始计数(如果 WDT 时钟来源选择 WDT 振荡或 RTC 振荡)。
所有输入/输出口都保持其原有状态。
置位 PDF 标志,清除 TO 标志。
VFD 驱动器仍然运行(如果选择 RTC OSC)。
以下操作可以使系统离开暂停模式:外部复位、中断、PA 口下降沿信号、RMT 引脚上外加上升/下降
沿或看门狗定时器溢出。其中,外部复位会使系统初始化,WDT 溢出则会发生“热复位”
。通过检测 TO
和 PDF 标志,即可了解系统复位的原因。PDF 标志可由系统上电或执行“CLR WDT”指令清除,由 HALT
指令置位。TO 标志由 WDT 溢出置位,同时产生唤醒,但只有程序计数器和堆栈指针 SP 被复位,其它都
保持其原有的状态。
PA 口唤醒和中断唤醒可做为正常运行的继续。PA 口的每一位都可以由掩膜选项设置为唤醒功能。如
果是由输入/输出口唤醒,程序会从下一条指令开始运行。如果是由中断唤醒,可能会发生两种情况:如果
中断禁止或中断允许但堆栈已满,程序将会从下一条指令开始运行;如果中断允许且堆栈未满,则会产生
一般的中断响应。如果在进入 HALT 模式之前,中断请求标志位已被置“1”,则中断唤醒功能被禁止。
当发生唤醒,系统需要额外花费 1024tSYS(系统时钟周期)的时间,才能重新正常运行,也就是说,唤
醒之后会插入一个等待周期。如果唤醒是由中断产生的话,则实际中断子程序的执行会延迟一个以上的周
期。如果唤醒导致下一条指令执行,那么在等待周期执行完成之后,会立即执行该指令。
为减小功耗,在进入暂停模式之前,应小心处理所有的输入/输出口状态。
·
·
·
·
·
·
Rev. 1.10
16
2005-07-12
HT49CV3
复位
V
总共有三种方法会产生初始复位:
· 正常运行时由 RES引脚发生复位。
· 在暂停模式由 RES引脚发生复位。
· 正常运行时由看门狗定时器溢出发生复位。
暂停模式中的看门狗定时器溢出与其它系统复位状况不同,因为看门狗
定时器溢出会执行“热复位”,只有程序计数器和堆栈指针 SP 被复位,而系
统其它部分都保持原有状态。在其它复位状态下,某些寄存器不会改变。在
初始复位时,大部分寄存器会复位成初始的状态。通过检测 PDF 和 TO 标志,
即可判断出各种不同的复位原因。
TO
0
u
0
1
1
PDF
0
u
1
u
1
D D
0 .0 1 m F *
1 0 0 k W
R E S
1 0 k W
0 .1 m F *
复位电路
注:“*”连线应该尽量靠近 RES
引脚,以减小干扰影响
复位原因
上电时 RES发生复位
正常运行时 RES发生复位
暂停模式下 RES发生复位
正常运行时 WDT 溢出
暂停模式下 WDT 溢出
注:
“u”表示不变
为了保证系统振荡器起振并稳定运行,系统复位(包括上电复位、WDT 溢出或由 RES端复位)或由暂停
状态唤醒时,系统启动定时器(SST)提供了一个额外的延迟时间,共 1024 个系统时钟周期。
系统复位时,SST 会被加在复位延时中;由暂停模式唤醒也会加入 SST 延迟。
系统复位时各功能单元的状态如下所示:
程序计数器
中断
预分频器、分频器
WDT
定时/计数器
输入/输出口
堆栈指针 SP
000H
禁止
清除
清除,在主系统复位后,WDT 开始计数
停止
输入模式
指向堆栈顶部
H A L T
W D T
R e s e t
T im e - o u t
R e s e t
E x te rn a l
R E S
O S C 1
W a rm
W D T
C o ld
R e s e t
S S T
1 0 - b it R ip p le
C o u n te r
P o w e r - o n D e te c tio n
复位时序图
Rev. 1.10
复位配置
17
2005-07-12
HT49CV3
有关寄存器的状态如下:
寄存器
TMR0H
TMR0L
TMR0C
TMR1H
TMR1L
TMR1C
Program
Counter
MP0
MP1
BP
ACC
TBLP
TBLH
STATUS
INTC0
INTC1
RMTC
MFIS
RTCC
PA
PAC
PB
PBC
PC
PCC
PD
PDC
SBCR
SBDR
RMT0
RMT1
VFDC
xxxx xxxx
xxxx xxxx
00-0 1000
xxxx xxxx
xxxx xxxx
0000 1--0000H
正常运行期间
WDT 溢出
RES 端复位
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
00-0 1000
00-0 1000
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
0000 1--0000 1--0000H
0000H
xxxx xxxx
xxxx xxxx
--0- -000
xxxx xxxx
xxxx xxxx
xxxx xxxx
--00 xxxx
-000 0000
-000 -000
0000 000---0 0000
---0 -111
1111 1111
1111 1111
---- 1111
---- 1111
1--- ---1--- ---1111 ---1111 ---0110 0000
xxxx xxxx
0000 0000
0000 0000
0000 -111
uuuu uuuu
uuuu uuuu
--0- -000
uuuu uuuu
uuuu uuuu
uuuu uuuu
--lu uuuu
-000 0000
-000 -000
0000 000---0 0000
---0 -111
1111 1111
1111 1111
---- 1111
---- 1111
1--- ---1--- ---1111 ---1111 ---0110 0000
xxxx xxxx
0000 0000
0000 0000
0000 -111
上电复位
注: 1.“*”表示“热复位”;
Rev. 1.10
uuuu uuuu
uuuu uuuu
--0- -000
uuuu uuuu
uuuu uuuu
uuuu uuuu
--uu uuuu
-000 0000
-000 -000
0000 000---0 0000
---0 -111
1111 1111
1111 1111
---- 1111
---- 1111
1--- ---1--- ---1111 ---1111 ---0110 0000
xxxx xxxx
0000 0000
0000 0000
0000 -111
2.“u”表示不变化;
18
暂停模式
WDT 溢出*
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
00-0 1000
uu-u uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
0000 1--uuuu u--0000H
0000H
RES 端复位
uuuu uuuu
uuuu uuuu
--0- -000
uuuu uuuu
uuuu uuuu
uuuu uuuu
--01 uuuu
-000 0000
-000 -000
0000 000---0 0000
---0 -111
1111 1111
1111 1111
---- 1111
---- 1111
1--- ---1--- ---1111 ---1111 ---0110 0000
xxxx xxxx
0000 0000
0000 0000
0000 -111
uuuu uuuu
uuuu uuuu
--u- -uuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
--11 uuuu
-uuu uuuu
-uuu -uuu
uuuu uuu---u uuuu
---u –uuu
uuuu uuuu
uuuu uuuu
---- uuuu
---- uuuu
u--- ---u--- ---uuuu ---uuuu ---uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
0000 -111
3.“x”表示不确定。
2005-07-12
HT49CV3
定时/计数器
HT49CV3 提供两个定时/计数器(TMR0、TMR1)。TMR0 是一个 16 位可编程的向上计数的计数器,其
时钟来源可以是外部信号输入或内部时钟(fSYS)。TMR1 是一个 16 位可编程的向上计数的计数器,其时钟
来源可以是外部信号输入或内部时钟(fSYS/4 或 32768Hz 振荡,由掩膜选项设置)。外部信号输入可以用来
计数外部事件、测量时间间隔、测量脉冲宽度或产生一个精确的时基信号。
fS
8 - s ta g e P r e s c a le r
Y S
f IN
8 -1 M U X
T 0 P S C 2 ~ T 0 P S C 0
D a ta B u s
T
T 0 M 1
T 0 M 0
T M R 0
1 6 - b it T im e r /E v e n t C o u n te r
P r e lo a d R e g is te r
R e lo a d
T 0 E
P u ls e W id th
M e a s u re m e n t
M o d e C o n tro l
T 0 M 1
T 0 M 0
T 0 O N
O v e r flo w
to In te rru p t
1 6 - b it T im e r /E v e n t C o u n te r
(T M R 0 H /T M R 0 L )
T
Q
P F D 0
P A 3 D a ta C T R L
定时/计数器 0
fS
Y S
/4
3 2 7 6 8 H z
T 1 S
M
U
f IN
D a ta B u s
T
X
T 1 M 1
T 1 M 0
T M R 1
1 6 - b it T im e r /E v e n t C o u n te r R e lo a d
P r e lo a d R e g is te r
T 1 E
T 1 M 1
T 1 M 0
T 1 O N
P u ls e W id th
M e a s u re m e n t
M o d e C o n tro l
O v e r flo w
to In te rru p t
1 6 - b it T im e r /E v e n t C o u n te r
(T M R 1 H /T M R 1 L )
T
Q
P F D 1
P A 3 D a ta C T R L
定时/计数器 1
有六个与定时/计数器 0 和定时/计数器 1 有关的寄存器,TMR0H(0CH)、TMR0L(0DH)、TMR0C(0EH)、
TMR1H(0FH)、TMR1L(10H)和 TMR1C(11H)。写入 TMR0L(TMR1L)只能将数据写到低字节缓冲器, 而
写入 TMR0H(TMR1H)会把指定数据和低字节缓冲器的数据写到 TMR0H(TMR1H)和 TMR0L(TMR1L)中。
定时/计数器 1/0 预置寄存器的内容只有在写入 TMR0H(TMR1H)时才会被改变而写 TMR0L(TMR1L)不会改
变预置寄存器的值。读取 TMR0H(TMR1H)会把 TMR0H(TMR1H)的内容送至目标单元,而 TMR0L(TMR1L)
的值被送至低字节缓冲器中。读 TMR0L(TMR1L)将读取低字节缓冲器的值。换言之,定时/计时器的低字
节内容是无法直接读取的。必须先读取 TMR0H(TMR1H),将定时/计数器的低字节内容送至低字节缓冲器。
TMR0C(TMR1C)是定时/计数器 0(1)控制寄存器,用来定义定时/计数器的工作模式、计数允许/禁止和有效
边沿。TM0 和 TM1 用来定义定时/计数器的工作模式。外部事件计数模式是用来记录外部事件的,其时钟
来源为外部 TMR0/TMR1 引脚输入。定时器模式是一个常用模式,其时钟来源为内部时钟。脉宽测量模式
可以测量 TMR0/TMR1 引脚高/低电平的脉冲宽度,其时钟来源为内部时钟。
无论是定时模式还是外部事件计数模式,一旦开始计数,定时/计数器 0/1 会从寄存器当前值向上计到
FFFFH。一旦发生溢出,定时/计数器 0/1 会从预置寄存器中重新加载初值,并开始计数;同时置位中断请
求标志(T0F,INTC0 的第 6 位;T1F,INTC1 的第 4 位)。
在脉宽测量模式,当 TON 与 TE 是 1 时,只要 TMR0/TMR1 引脚有一个上升沿信号(如果 TE 是 0,
则为下降沿信号),定时/计数器就会开始计数,直到 TMR0/TMR1 脚电平恢复,同时 TON 被清零。测量的
结果会保存在寄存器中,直到有新的测量开始。换句话说,一次只能测量一个脉冲宽度。重新置位 TON
后,可以继续测量。注意,在该模式下,定时/计数器是跳变触发而不是电平触发。当计数器溢出时,定时
/计数器会从预置寄存器中重新加载初值,并置位中断请求标志,这与其它两种模式一样。
Rev. 1.10
19
2005-07-12
HT49CV3
位
符号
0
1
2
T0PSC0
T0PSC1
T0PSC2
3
T0E
4
5
T0ON
—
6
7
T0M0
T0M1
功能
定义预分频器级数,T0PSC2,T0PSC1,T0PSC0=
000:fINT=fSYS
001:fINT=fSYS/2
010:fINT=fSYS/4
011:fINT=fSYS/8
100:fINT=fSYS/16
101:fINT=fSYS/32
110:fINT=fSYS/64
111:fINT=fSYS/128
定义定时/计数器 TMR0 的触发方式:
外部事件计数模式下(T0M1,T0M0)=(0,1):
1:从下降沿开始计数
0:从上升沿开始计数
脉冲宽度测量模式下(T0M1,T0M0)=(1,1):
1:计数开始于上升沿,止于下降沿;
0:计数开始于下降沿,止于上升沿
打开/关闭定时/计数器(0=关闭,1=打开)
未用,读出为“0”
定义工作模式(T0M1,T0M0):
01=事件计数模式(外部时钟)
10=定时模式(内部时钟)
11=脉冲宽度测量模式
00 =未用
TMR0C(0EH)寄存器
位
0~2
符号
—
3
T1E
4
T1ON
5
T1S
6
7
T1M0
T1M1
功能
未用,读出为“0”
定义定时/计数器 TMR1 的触发方式:
外部事件计数模式下(T1M1,T1M0)=(0,1):
1:从下降沿开始计数
0:从上升沿开始计数
脉冲宽度测量模式下(T1M1,T1M0)=(1,1):
1:计数开始于上升沿,止于下降沿;
0:计数开始于下降沿,止于上升沿
打开/关闭定时/计数器(1=打开,0=关闭)
内部时钟来源选项
(0=fSYS/4,1=32768Hz)
定义工作模式(T1M1,T1M0):
01=外部事件计数模式(外部时钟)
10=定时模式(内部时钟)
11=脉冲宽度测量模式
00 =未用
TMR1C(11H)寄存器
要启动计数器,只要置位 TON(TMR0C/TMR1C 的第 4 位)。在脉宽测量模式下,TON 在测量结束后
会被自动清除;但在另外两种模式中,TON 只能由指令来清除。定时/计数器 0/1 的溢出可以做为唤醒信号,
并可以提供给 PFD (可编程分频输出)使用。如果 PA3 选择为 PFD 输出,有两种模式选择:一种是选择 PFD0
做为 PFD 输出,另一种是选择 PFD1 做为 PFD 输出,PFD0、PFD1 分别是定时/计数器 0、定时/计数器 1
的溢出信号。不管是什么模式,只要写 0 到 ET0I 或 ET1I 即可禁止定时/计数器中断服务。当使用 PFD 功
能时,执行“SET [PA].3”可以打开 PFD 输出,执行“CLR [PA].3”则关闭 PFD 输出。
Rev. 1.10
20
2005-07-12
HT49CV3
在定时/计数器停止计数时,写数据到定时/计数器的预置寄存器中,同时会将该数据写入到定时/计数
器。但如果在定时/计数器运行时这么做,数据只能写入到预置寄存器中,直到发生溢出时才会将数据从预
置寄存器加载到定时/计数器寄存器。读取定时/计数器时,计数会被停止,以避免发生错误;计数停止会
导致计数错误,程序员必须注意到这一点。因为 TMR0/TMR1 初始值未知,所以,为了能正常工作,强烈
建议在打开相关定时/计数器之前,先将预期数据写入寄存器 TMR0/TMR1。考虑到定时/计数器的机制,
程序员应当特别注意首次将定时器打开后再关闭的指令,无论何时需要使用到定时/计数器,都要避免不可
预知的结果。在此操作后,定时/计数器功能就能够正常运作。
TMR0C 的第 0~2 位用来定义内部时钟预分频级数,定义如上表所示。定时/计数器的溢出信号可做为
PFD 输出。
遥控定时器 — RMT
HT49CV3 供一个 8 位遥控定时器,此定时器带有脉冲宽度测量功能。当此定时器在运行时,如果侦
测到 RMT 引脚上有有效触发沿,脉冲宽度将以不同的计数值记录下来。
In te rru p t (R M T 0 F )
N o is e R e je c tio n
R is in g E d g e
D e te c tio n
R M T
fS
fS
Y S
Y S
/4
M
U
fX
X
R M C S
L a tc h
R e m o te C o n tr o l T im e r
C a p tu r e R e g is te r
R M T 0 (2 2 H )
fX /2 5~ fX /2 8
P r e - s c a le r
O v e r flo w
4 -1 M U X
R M S 1 R M S 0
N o is e R e je c tio n
F a llin g E d g e
D e te c tio n
(R M T V F )
8 - b it T im e r C o u n te r
C le a r
R M E
L a tc h
R e m o te C o n tr o l T im e r
C a p tu r e R e g is te r
R M T 1 (2 3 H )
In te rru p t (R M T 1 F )
遥控定时器
位
0
1
2
3
符号
—
ERMT0
ERMT1
ERMTV
4
RME
5
RMCS
6
7
RMS0
RMS1
功
能
未用,读出为“0”
遥控定时器上升沿中断控制位(1=允许;0=禁止)
遥控定时器下降沿中断控制位(1=允许;0=禁止)
遥控定时器溢出中断控制位(1=允许;0=禁止)
遥控定时器控制位(1=使能并开始计数;0=禁止并清
零计数器)
遥控定时器时钟源 fx 选择位(1=fSYS;0= fSYS/4)
遥控定时器时钟选择位
00=fx/25
01=fx/26
10=fx/27
11=fx/28
RMTC(21H)寄存器
RMT 引脚带有上升/下降沿唤醒功能,芯片复位时此 8 位计数器会被清零。并且 RMT 时钟在上升/下
降沿后开始计数。
Rev. 1.10
21
2005-07-12
HT49CV3
位
0
1
2
3
4
5~7
符号
RMTVF
RTF
RMT0F
RMT1F
ERTI
—
功
能
遥控定时器溢出中断请求标志(1=有;0=无)
实时时钟中断请求标志(1=有;0=无)
遥控定时器上升沿中断请求标志(1=有;0=无)
遥控定时器下降沿中断请求标志(1=有;0=无)
实时时钟控制位(1=允许;0=禁止)
未用,读出为“0”
MFIS(29H)寄存器
串行接口
串行接口功能包含四个基本信号:SDI(串行数据输入)、SDO(串行数据输出)、SCK(串行时钟)、SCS (从
选择引脚)
两个寄存器(SBCR & SBDR) 为串行接口专有,提供控制、状态和数据存储功能。
SIO 时序图
位
0
符号
—
1
WCOL
2
3
4
CSEN
MLS
SBEN
5,6
MO,M1
7
CKS
功
能
未用,读出为“0”
此位表示缓冲 SBDR 的状态
1:写入 SBDR 使能(由 SIO 设置)
2:读 SBDR 使能(用户自己清零)
串行总线选择信号
MSB 和 LSB 转换第一控制位(1:MSB;0:LSB)
串行总线选择位(1:使能;0:禁止)
主/从模式选择位:M1,M0=
00:主模式,波特率=fSIO
01:主模式,波特率=fSIO/4
10:主模式,波特率=fSIO/16
11:从模式
时钟源选择位(0= fSYS/4;1=fRTC)
SBCR(1FH)寄存器
Rev. 1.10
22
2005-07-12
HT49CV3
• SBCR:串行总线控制寄存器
第 7 位(CKS):时钟源选择: fSIO= fSYS/4 或 fLF (0 或 1);fLF= fRTCOSC
第 6 位(M1)、第 5 位(M0):主/从模式和波特率选择。
- M1,M0:
00:主模式,波特率= fSIO
01:主模式,波特率= fSIO/4
10:主模式,波特率= fSIO/16
11:从模式
♦
第 4 位(SBEN):串行总线允许/禁止(1/0)
- 允许:( SCS取决于 CSEN 位)
禁止Æ 允许:SCK、SDI、SDO、 SCS=0 ( SCK =0)并且等待写数据至 SBDR(TXRX 缓存器)
主模式:写数据至 SBDR(TXRX 缓存器) Æ 自动开始传送/接收
主模式:数据已传送 Æ 置起 TDRF
从模式:当收到一个 SCK ( SCS取决于 CSEN 位), TXRX 缓存器中的数据移位输出同时 SDI
上的数据移位输入
- 禁止:SCK ( SCK )、SDI、SDO、 SCS悬浮
第 3 位(MLS):最高位或最低位(1/0)先移出控制位
♦
第 2 位(CSEN):串行总线选择信号允许/禁止( SCS),当 CSEN=0, SCS悬浮
♦
♦
第 1 位(WCOL):数据传送时,如果数据被写入 SBDR(TXRX 缓存器),此位会被置一Æ数据传
送时,如果数据被写入 SBDR(TXRX 缓存器),写入将被忽略
♦
第 0 位(TDRF):数据已传送或已接收Æ用来产生中断
注意:当芯片进入暂停模式,数据接收仍会继续进行
• SBDR:串行总线数据寄存器
数据写入 SBDRÆ 只写数据至 TXRX 缓存器
♦
♦
数据从 SBDR 中读出Æ 只从 TXRX 缓存器中读出数据
工作模式描述
♦
- 主传输:送时钟和数据输入/输出由写 SBDR 开始
- 主时钟送出由写 SBDR 开始
- 从传输:数据输入/输出由收到的时钟启动
- 从接收:数据输入/输出由收到的时钟启动
♦
♦
时钟极性=上升( CLK )或上升(CLK):1 或 0(通过掩膜选项设置)
• 串行接口的操作
♦
Rev. 1.10
主模式操作
1. 选择 CKS 和 M1、M0=00、01、10
2. 选择 CSEN、MLS(和从模式相同)
3. 置位 SBEN
4. 写数据至 SBDR
a) 数据存放至 TXRX 缓存器中
b) 输出 CLK 和 SCS
c) 转向步骤 5
注:SIO 内部操作
﹡数据存放在 TXRX 缓存器,SDI 数据移位进入 TXRX 缓存器
﹡数据传送完毕,TXRX 缓存器中数据锁存入 SBDR
5. 检查 WCOL
—WCOL=1,清零 WCOL,转向步骤 4
—WCOL=0,转向步骤 6
6. 检查 TDRF 或等待 SBI(串行总线中断)
7. 从 SBDR 读出数据
8. 清零 TDRF
9. 转向步骤 4
23
2005-07-12
HT49CV3
♦
从模式操作
1. CKS 随意和 M1、M0=11
2. 选择 CSEN,MLS(和主模式相同)
3. 置位 SBEN
4. 写数据至 SBDR
— 数据存入 TXRX 缓存器
— 等待主时钟信号(和 SCS):CLK
— 转向步骤 5
注:SIO 内部操作
﹡CLK( SCS)收到
﹡输出数据至 TXRX 缓存器,SDI 数据移位进入 TXRX 缓存器
﹡数据传送完毕,TXRX 缓存器中数据锁存入 SBDR)
5. 检查 WCOL;
— WCOL=1,清零 WCOL,转向步骤 4
— WCOL=0,转向步骤 6
6. 检查 TDRF 或等待 SBI(串行总线中断)
7. 从 SBDR 读出数据
8. 清零 TDRF
9. 转向步骤 4
D a ta B u s
S B D R
( R e c e iv e d D a ta R e g is te r )
M
D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0
U
S D O
X
M L S
M
In te r n a l B a u d R a te C lo c k
A N D , S ta rt
M
E N
C L K
A N D , S ta rt
C lo c k P o la r ity
S B E N
U
X
C 0
C 1
S D O
S B E N
U
X
S D I
C 2
T D R F
A N D
M a s te r
o r
S la v e
W C O L F la g
In te r n a l B u s y F la g
W r ite S B D R
S B E N
A N D , S ta rt
E N
C S E N
B u ffe r
S B E N
W r ite S B D R E n a b le /D is a b le
W r ite S B D R
S C S
M a s te r o r S la v e
SIO 结构图
Rev. 1.10
24
2005-07-12
HT49CV3
输入/输出口
HT49CV3 有 17 位双向输入/输出口,记为 PA、PB、PC 和 PD,其分别对应 RAM 地址[12H],[14H],
[16H]和[18H] ,所有端口都可以进行输入/输出操作。输入时,端口没有锁存功能,输入信号必须在 MOV
A,[m](m=12H、14H、16H 或 18H)指令的 T2 上升沿到来前准备好;输出时,端口有锁存功能,端口上的
数据会保持不变直到执行下一个写入操作。
V
C o n tr o l B it
D a ta B u s
W r ite C o n tr o l R e g is te r
C K
W r ite D a ta R e g is te r
P A 0
P A 1
P A 2
P A 3
P A 4
P B 0
P C 7
P D 4
P D 5
P D 6
P D 7
Q
S
C h ip R e s e t
R e a d C o n tr o l R e g is te r
P U
Q
D
D a ta B it
Q
D
Q
C K
D D
/B Z
/B Z
/P F D
~ P A 7
~ P B 3
/R M T
/IN T 0
/IN T 1
/T M R 0
/T M R 1
S
M
P A 0 /P A 1 /P A 3
B Z /B Z /P F D
M
R e a d D a ta R e g is te r
U
T 0
T 1
R 0
R 1
fo
fo
fo
fo
r P
r P
r P
r P
D 4
D 5
D 6
D 7
o n
o n
o n
o n
X
P F D E N
(P A 3 )
X
S y s te m W a k e -u p
( P A o n ly )
IN
IN
T M
T M
U
O P 0 ~ O P 7
ly
ly
ly
ly
输入/输出口
每个输入/输出口都有一个控制寄存器(PAC、PBC、PCC、PDC),用来控制输入/输出状态。利用控制
寄存器,可对 CMOS 输出、带或不带上拉电阻的斯密特触发输入通过软件动态地进行改变。做为输入时,
对应的控制寄存器应设置为“1”
。输入信号来源也取决于控制寄存器,如果控制寄存器的值为“1”,那么
读取的是引脚状态;如控制寄存器的值为“0”
,则读取的是内部锁存器的值。后者可能会在‘读-修改-写’
指令中发生。做为输出时,只能采用 CMOS 输出。控制寄存器对应 RAM 地址 13H、15H、17H、19H。
系统复位之后,这些输入/输出口会是高电平或浮空状态(由上拉电阻选项决定)。每一个输入/输出锁存
位都能用“SET [m].i”或“CLR [m].i”指令置位或清除(m=12H、14H、16H 或 18H)。
有些指令会先输入数据,然后进行输出操作。例如:“SET [m].i”,“CLR [m].i”,“CPL [m]”,
“CPLA[m]”这些指令会先将整个端口状态读入 CPU 中,接着执行所定义的运算(位操作),然后再将结果
写入锁存器或累加器中。
PA 的每一个口都具有唤醒系统的能力。
所有的输入/输出口都有上拉电阻选项。一旦选择了上拉电阻选项,输入/输出口就加了上拉电阻。如
果不选择上拉电阻,必须注意在输入模式下,若输入/输出口会产生浮空状态。
PA3 与 PFD 共用引脚,如果选择 PFD 功能,则 PA3 在输出模式时的输出信号将是由定时/计数器的溢
出信号产生的 PFD 信号,而在输入模式始终保持其原来的功能。一旦选择 PFD 功能,PFD 的输出信号只
受 PA3 数据寄存器控制。向 PA3 数据寄存器写入“1”,则输出 PFD 信号;向 PA3 数据寄存器写入“0”,
则 PA3 输出为“0”。 PA3 的输入/输出功能如下所示:
I/O
模式
I/P
(正常)
O/P
(正常)
I/P
(PFD)
PA3
逻辑输入
逻辑输出
逻辑输入
O/P
(PFD)
PFD
(定时/计数器开启)
注:PFD 的输出频率是定时/计数器溢出频率的 1/2
Rev. 1.10
25
2005-07-12
HT49CV3
PFD 的控制信号和输出频率如下所示:
定时器
关闭
关闭
开启
开启
PA3 数据寄
存器
0
1
0
1
定时器
预载值
X
X
N
N
PA3 引脚状
态
0
U
0
PFD
PFD 频率
X
X
X
fTMR/[2×(M-N)]
注: “X”表示未用
“U”表示未知
“M”表示 PFD0 或 PFD1 的“65536”
“N”表示定时/计数器的预加载值
“fTMR”是定时/计数器的输入时钟频率
PA0、PA1 与 BZ、 BZ 共用引脚,如果选择 BZ/ BZ 功能,则 PA0/PA1 在输出模式时的输出信号将是由
内部多功能定时器产生的蜂鸣器信号,而在输入模式始终保持其原来的功能。一旦选择 BZ/ BZ 功能,蜂鸣
器的输出信号只受 PA0、PA1 数据寄存器控制。PA0/PA1 的输入/输出功能如下所示:
PA0 I/O
PA1 I/O
PA0 模式
PA1 模式
PA0 数据
PA1 数据
PA0 引脚状态
PA1 引脚状态
I
I
X
X
X
X
I
I
I
O
X
C
X
D
I
D
O
I
C
X
D
X
D
I
O
I
B
X
0
X
0
I
O
I
B
X
1
X
B
I
O
O
C
C
D0
D1
D0
D1
O
O
B
C
0
D
0
D
O
O
B
C
1
D
B
D
O
O
B
B
0
X
0
0
O
O
B
B
1
X
B
B
注: “I”输入;
“O”输出
“D、D0、D1”数据
“B”蜂鸣器选项,BZ 或 BZ
“X”任意值
“C”CMOS 输出
建议用软件将未使用和没有外接的输入/输出口设置为输出模式,以防止这些端口在输入浮空时增加系
统的功耗。
Rev. 1.10
26
2005-07-12
HT49CV3
VFD 显示存储器
HT49CV3 为 VFD 显示提供一个嵌入式数据存储器区域。这个区域位于第一段数据存储器(RAM Bank
1)的 40H 到 55H 单元。存储器段指针 Bank Pointer(BP;RAM 的 04H 单元)是通用存储器 VFD 显示存储器
之间切换的开关。当 BP 被置“1”,任何数据写入 40H~55H(用 MP1 和 R1 间接寻址访问)将会影响 VFD 的
显示。当 BP 被清“0”, 任何数据写入 40H~55H 意味着访问一般意义上的数据存储器。VFD 显示存储器
能被读出和写入,但是只能通过间接寻址模式,并使用 MP1 来进行。当数据被写入显示数据区域,这些
数据自动地被 VFD 驱动器读取来产生相应的 VFD 驱动信号。把“1”或“0”写入显示存储器的相应位,
可以控制显示或不显示。下图为显示存储器和 VFD 显示模块之间的映射关系。
Grid0
Grid1
Grid2
Grid3
Grid4
Grid5
Grid6
Grid7
Grid8
Grid9
Grid10
SEG15~SEG12
41HU
43HU
45HU
47HU
49HU
4BHU
4DHU
4FHU
51HU
53HU
55HU
SEG11~SEG8
41HL
43HL
45HL
47HL
49HL
4BHL
4DHL
4FHL
51HL
53HL
55HL
b7
b4
SEG7~SEG4
40HU
42HU
44HU
46HU
48HU
4AHU
4CHU
4EHU
50HU
52HU
54HU
b3
HU
高4位
SEG3~SEG0
40HL
42HL
44HL
46HL
48HL
4AHL
4CHL
4EHL
50HL
52HL
54HL
b0
HL
低4位
显示存储器
Rev. 1.10
27
2005-07-12
HT49CV3
VFD 驱动控制寄存器 — VFDC
位
符号
2~0
VGS2~VGS0
3
—
4
VFDE
7~5
VDM2~VDM0
功能
选择 VFD 显示模式
000=4grids、16segments
001=5grids、16segments
010=6grids、16segments
011=7grids、15segments
100=8grids、14segments
101=9grids、13segments
110=10grids、12segments
111=11grids、11segments
未用,读出为“0”
控制 VFD 显示
(1=允许;0=禁止)
设置 VFD 亮度
000=脉宽设为 1/16
001=脉宽设为 2/16
010=脉宽设为 4/16
011=脉宽设为 10/16
100=脉宽设为 11/16
101=脉宽设为 12/16
110=脉宽设为 13/16
111=脉宽设为 14/16
VFDC(28H)寄存器
初始上电时,设置为 11-grid、11-segment 和 1/16 脉宽并且 VFD 显示被禁止。
VFD 时钟源可以是 RTC 或系统时钟/4(fSYS/4)。
VFD 驱动输出
Rev. 1.10
28
2005-07-12
HT49CV3
低电压复位功能
系统具有低电压复位(LVR)功能,可由掩膜选项设置为打开或关闭。
如果器件的工作电压在 0.9V~VLVR 之间,例如电池电压的变化,那么 LVR 会自动使器件产生内部复
位。
LVR 功能说明如下:
· 低电压(0.9V~VLVR)的状态必须持续 1ms 以上。如果低电压的状态没有持续 1ms 以上,那么 LVR 会
忽视它而不去执行复位功能。
· LVR 通过与外部 RES信号的“或”的功能来执行系统复位。
VDD 与 VLVR 之间的关系如下所示:
V D D
5 .5 V
V
O P R
5 .5 V
V
L V R
3 .0 V
2 .2 V
0 .9 V
注:VOPR 是在系统时钟为 4MHz
时,使得芯片正常运行的电压值
V
D D
5 .5 V
V
L V R D e te c t V o lta g e
L V R
0 .9 V
0 V
R e s e t S ig n a l
N o r m a l O p e r a tio n
R e s e t
*1
R e s e t
*2
低电压复位
注: *1:要保证系统振荡器起振并稳定运行,在系统进入正常运行以前,SST 提供额外的 1024 个系统时钟周期的延迟。
*2:因为低电压状态必须保持 1ms 以上,因此进入复位模式就要有 1ms 的延迟。
Rev. 1.10
29
2005-07-12
HT49CV3
掩膜选项
下表列出了所有掩膜选项。所有选项必须正确定义,以保证统正常运行。
掩膜选项
OSC 类型的选项。
这个选项确定是否选择一个 RC 或晶体或 32768Hz 晶体来作为系统时钟。
fWDT:WDT 时钟源选项。
有三种选择的方式:系统时钟四分频或 RTC OSC 或 WDT OSC。
fS:VFD、RTC 和蜂鸣器时钟源选项。
有两种选择的方式:系统时钟四分频或 RTC OSC。
WDT 打开/关闭选项。
由掩膜选项,WDT 打开或关闭。
WDT 溢出周期选项。
有四种选择的方式:WDT 时钟源的 fWDT /212 ~ fWDT /213、fWDT /213 ~ fWDT /214、fWDT /214 ~ fWDT /215
或 fWDT /215 ~ fWDT /216 分频。
CLR WDT 次数选项。这个选项定义用指令清除 WDT 的方法。“One time”指用“CLR WDT”指
令功能清除 WDT。“Two times”指的是必须要用 CLR WDT1 和 CLR WDT2 二条指令来清除 WDT。
蜂鸣器输出频率选项。有八种输出频率供选择:fS /2 ~ fS /28。
“fS”是由掩膜选项确定的时钟源频率。
Wake-up 选项。
这个选项用来设置唤醒功能。外部的输入/输出引脚(仅 PA 具有)的下降沿,具有将系统从 HALT
模式唤醒的能力。(按位设置)。
上拉电阻选项。
这个选项用来设置输入/输出口在输入模式时,是否带有内部上拉电阻。PA、PB0~PB3、PC7 和
PD4~PD7 可以独立设置(按位设置)。
RMT 上拉电阻选项。这个选项决定在作输入引脚时是否有内部上拉电阻
输入/输出与其它功能共用引脚选项。
PA0/BZ、PA1/ BZ :PA0 和 PA1 可以设置为一般输入/输出口或蜂鸣器输出。
PA3/PFD:PA3 可以设置为一般输入/输出口或 PFD 输出。
VFD 驱动器时钟源选项。
有七种频率信号可选择:fs/20 ~ fs/27。
“fs”是由掩膜选项确定的时钟源频率。
VFD 在 HALT 模式开关选项。只有在 VFD 时钟源选择 RTC OSC 时,VFD 在 HALT 模式开选项
才有效。
LVR 选项。LVR 打开或关闭。
PFD 选项。
如果 PA3 被选作为 PFD 输出,有二种选择;一种是 PFD0 作为 PFD 输出,另一种是 PFD1 作为
PFD 输出。PFD0,PFD1 分别是定时/计数器 0 和定时/计数器 1 的定时器溢出信号。
INT0 或 INT1 触发边沿(上升沿触发,下降沿触发,或两者皆可触发)
SIOCLK:串行接口时钟。下降沿、上升沿或者触发沿
CSEN:串行总线选项:允许或禁止
WCOL:SBDR 写冲突
Rev. 1.10
30
2005-07-12
HT49CV3
应用电路
注:
Rev. 1.10
复位电路的电阻和电容值选取的原则是使 VDD 保持稳定并在 RES 置为高以前把工作电压保持在允许的范围内。
31
2005-07-12
HT49CV3
指令集摘要
助记符
算术运算
ADD
A,[m]
ADDM A,[m]
ADD
A,x
ADC
A,[m]
ADCM A,[m]
SUB
A,x
SUB
A,[m]
SUBM A,[m]
SBC
A,[m]
SBCM A,[m]
DAA
[m]
逻辑运算
AND
A,[m]
OR
A,[m]
XOR
A,[m]
ANDM A,[m]
ORM
A,[m]
XORM A,[m]
AND
A,x
OR
A,x
XOR
A,x
CPL
[m]
CPLA
[m]
递增和递减
INCA
[m]
INC
[m]
DECA
[m]
DEC
[m]
移位
RRA
[m]
RR
[m]
RRCA
[m]
RRC
[m]
RLA
[m]
RL
[m]
RLCA
[m]
RLC
[m]
数据传送
MOV
A,[m]
MOV
[m],A
MOV
A,x
位运算
CLR
[m].i
SET
[m].i
Rev. 1.10
说明
指令周期
影响标志位
ACC 与数据存储器相加,结果放入 ACC
ACC 与数据存储器相加,结果放入数据存储器
ACC 与立即数相加,结果放入 ACC
ACC 与数据存储器、进位标志相加,结果放入 ACC
ACC 与数据存储器、进位标志相加,结果放入数据存储器
ACC 与立即数相减,结果放入 ACC
ACC 与数据存储器相减,结果放入 ACC
ACC 与数据存储器相减,结果放入数据存储器
ACC 与数据存储器、进位标志相减,结果放入 ACC
ACC 与数据存储器、进位标志相减,结果放入数据存储器
将加法运算中放入 ACC 的值调整为十进制数,并将结果放
入数据存储器
1
1(1)
1
1
1(1)
1
1
1(1)
1
1(1)
Z,C,AC,OV
Z,C,AC,OV
Z,C,AC,OV
Z,C,AC,OV
Z,C,AC,OV
Z,C,AC,OV
Z,C,AC,OV
Z,C,AC,OV
Z,C,AC,OV
Z,C,AC,OV
1(1)
C
ACC 与数据存储器做“与”运算,结果放入 ACC
ACC 与数据存储器做“或”运算,结果放入 ACC
ACC 与数据存储器做“异或”运算,结果放入 ACC
ACC 与数据存储器做“与”运算,结果放入数据存储器
ACC 与数据存储器做“或”运算,结果放入数据存储器
ACC 与数据存储器做“异或”运算,结果放入数据存储器
ACC 与立即数做“与”运算,结果放入 ACC
ACC 与立即数做“或”运算,结果放入 ACC
ACC 与立即数做“异或”运算,结果放入 ACC
对数据存储器取反,结果放入数据存储器
对数据存储器取反,结果放入 ACC
1
1
1
1(1)
1(1)
1(1)
1
1
1
1(1)
1
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
递增数据存储器,结果放入 ACC
递增数据存储器,结果放入数据存储器
递减数据存储器,结果放入 ACC
递减数据存储器,结果放入数据存储器
1
1(1)
1
1(1)
Z
Z
Z
Z
数据存储器右移一位,结果放入 ACC
数据存储器右移一位,结果放入数据存储器
带进位将数据存储器右移一位,结果放入 ACC
带进位将数据存储器右移一位,结果放入数据存储器
数据存储器左移一位,结果放入 ACC
数据存储器左移一位,结果放入数据存储器
带进位将数据存储器左移一位,结果放入 ACC
带进位将数据存储器左移一位,结果放入数据存储器
1
1(1)
1
1(1)
1
1(1)
1
1(1)
无
无
C
C
无
无
C
C
将数据存储器送至 ACC
将 ACC 送至数据存储器
将立即数送至 ACC
1
1(1)
1
无
无
无
清除数据存储器的位
置位数据存储器的位
1(1)
1(1)
无
无
32
2005-07-12
HT49CV3
助记符
转移
JMP
SZ
SZA
SZ
SNZ
SIZ
SDZ
SIZA
说明
addr
[m]
[m]
[m].i
[m].i
[m]
[m]
[m]
SDZA
[m]
CALL addr
RET
RET
A,x
RETI
查表
TABRDC [m]
TABRDL [m]
其它指令
NOP
CLR
[m]
SET
[m]
CLR
WDT
CLR
WDT1
CLR
WDT2
SWAP
[m]
SWAPA [m]
HALT
指令周期
影响标志位
无条件跳转
如果数据存储器为零,则跳过下一条指令
数据存储器送至 ACC,如果内容为零,则跳过下一条指令
如果数据存储器的第 i 位为零,则跳过下一条指令
如果数据存储器的第 i 位不为零,则跳过下一条指令
递增数据存储器,如果结果为零,则跳过下一条指令
递减数据存储器,如果结果为零,则跳过下一条指令
递增数据存储器,将结果放入 ACC,如果结果为零,则跳
过下一条指令
递减数据存储器,将结果放入 ACC,如果结果为零,则跳
过下一条指令
子程序调用
从子程序返回
从子程序返回,并将立即数放入 ACC
从中断返回
2
1(2)
1(2)
1(2)
1(2)
1(3)
1(3)
无
无
无
无
无
无
无
1(2)
无
1(2)
无
2
2
2
2
无
无
无
无
读取当前页的 ROM 内容,并送至数据存储器和 TBLH
读取最后页的 ROM 内容,并送至数据存储器和 TBLH
2(1)
2(1)
无
无
空指令
清除数据存储器
置位数据存储器
清除看门狗定时器
预清除看门狗定时器
预清除看门狗定时器
交换数据存储器的高低字节,结果放入数据存储器
交换数据存储器的高低字节,结果放入 ACC
进入暂停模式
1
1(1)
1(1)
1
1
1
1(1)
1
1
无
无
无
TO,PDF
TO(4),PDF(4)
TO(4),PDF(4)
无
无
TO,PDF
注: x:立即数
m:数据存储器地址
A:累加器
i:第 0~7 位
addr:程序存储器地址
√:影响标志位
—:不影响标志位
(1)
:如果数据是加载到 PCL 寄存器,则指令执行周期会被延长一个指令周期(四个系统时钟)。
(2)
:如果满足跳跃条件,则指令执行周期会被延长一个指令周期(四个系统时钟);否则指令执行周期不会被延长。
(3)
: 和
(4)
:如果执行 CLR WDT1 或 CLR WDT2 指令后,看门狗定时器被清除,则会影响 TO 和 PDF 标志位;否则不会
(1)
(2)
影响 TO 和 PDF 标志位。
Rev. 1.10
33
2005-07-12
HT49CV3
ADC
A, [m]
说明:
运算过程:
影响标志位
累加器与数据存储器、进位标志相加,结果放入累加器
本指令把累加器、数据存储器值以及进位标志相加,结果存放到累加器。
ACCÅACC+[m]+C
TO
—
ADCM A, [m]
说明:
运算过程:
影响标志位
PDF
—
OV
√
Z
√
AC
√
C
√
PDF
—
OV
√
Z
√
AC
√
C
√
PDF
—
OV
√
Z
√
AC
√
C
√
PDF
—
OV
√
Z
√
AC
√
C
√
累加器与数据存储器做“与”运算,结果放入累加器
本指令把累加器值、数据存储器值做逻辑与,结果存放到累加器。
ACCÅACC “AND” [m]
TO
—
Rev. 1.10
C
√
累加器与数据存储器相加,结果放入数据存储器
本指令把累加器、数据存储器值相加,结果存放到数据存储器。
[m]ÅACC+[m]
TO
—
AND
A, [m]
说明:
运算过程:
影响标志位
AC
√
累加器与立即数相加,结果放入累加器
本指令把累加器值和立即数相加,结果存放到累加器。
ACCÅACC+x
TO
—
ADDM A, [m]
说明:
运算过程:
影响标志位
Z
√
累加器与数据存储器相加,结果放入累加器
本指令把累加器、数据存储器值相加,结果存放到累加器。
ACCÅACC+[m]
TO
—
ADD
A, x
说明:
运算过程:
影响标志位
OV
√
累加器与数据存储器、进位标志相加,结果放入数据存储器
本指令把累加器、数据存储器值以及进位标志相加,结果存放到存储器。
[m]ÅACC+[m]+C
TO
—
ADD
A, [m]
说明:
运算过程:
影响标志位
PDF
—
PDF
—
OV
—
Z
√
34
AC
—
C
—
2005-07-12
HT49CV3
AND
A, x
说明:
运算过程:
影响标志位
累加器与立即数做“与”运算,结果放入累加器
本指令把累加器值、立即数做逻辑与,结果存放到累加器。
ACCÅACC “AND” x
TO
—
ANDM A, [m]
说明:
运算过程:
影响标志位
addr
运算过程:
OV
—
Z
√
AC
—
C
—
累加器与数据存储器做“与”运算,结果放入数据存储器
本指令把累加器值、数据存储器值做逻辑与,结果存放到数据存储器。
[m]ÅACC “AND” [m]
TO
—
CALL
说明:
PDF
—
PDF
—
OV
—
Z
√
AC
—
C
—
子程序调用
本指令直接调用地址所在处的子程序,此时程序计数器加一,将此程序计数器值存到堆
栈寄存器中,再将子程序所在处的地址存放到程序计数器中。
StackÅProgram Counter+1
Program Counter Å addr
影响标志位
TO
—
CLR
[m]
说明:
运算过程:
影响标志位
WDT
运算过程:
Z
—
AC
—
C
—
PDF
—
OV
—
Z
—
AC
—
C
—
AC
—
C
—
将数据存储器的第 i 位清“0”
本指令将数据存储器内第 i 位值清零。
[m].i Å0
TO
—
CLR
说明:
OV
—
清除数据存储器
本指令将数据存储器内的数值清零。
[m] Å00H
TO
—
CLR
[m] . i
说明:
运算过程:
影响标志位
PDF
—
PDF
—
OV
—
Z
—
清除看门狗定时器
本指令清除 WDT 计数器(从 0 开始重新计数),暂停标志位(PDF)和看门狗溢出标志位(TO)
也被清零。
WDT Å 00H
PDF&TO Å 0
影响标志位
TO
0
Rev. 1.10
PDF
0
OV
—
Z
—
35
AC
—
C
—
2005-07-12
HT49CV3
CLR
说明:
WDT1
运算过程:
预清除看门狗定时器
必须搭配 CLR WDT2 一起使用,才可清除 WDT 计时器(从 0 开始重新计数)。当程序只
执行过该指令,没有执行 CLR WDT2 时,系统只会不会将暂停标志位(PDF)和计数溢出
位(TO)清零,PDF 与 TO 保留原状态不变。
WDT Å 00H*
PDF&TO Å 0*
影响标志位
TO
0*
CLR
说明:
WDT2
运算过程:
PDF
0*
OV
—
Z
—
AC
—
C
—
预清除看门狗定时器
必须搭配 CLR WDT1 一起使用,才可清除 WDT 计时器(从 0 开始重新计数)。当程序只
执行过该指令,没有执行 CLR WDT1 时,系统只会不会将暂停标志位(PDF)和计数溢出
位(TO)清零,PDF 与 TO 保留原状态不变。
WDT Å 00H*
PDF&TO Å 0*
影响标志位
TO
0*
CPL
说明:
[m]
运算过程:
影响标志位
[m]
运算过程:
影响标志位
Z
—
AC
—
C
—
AC
—
C
—
[m] Å [ m ]
PDF
—
OV
—
Z
√
对数据存储器取反,结果放入累加器
本指令是将数据存储器内保存的值取反后,结果存放在累加器中。
ACC Å [ m ]
TO
—
Rev. 1.10
OV
—
对数据存储器取反,结果放入数据存储器
本指令是将数据存储器内保存的数值取反。
TO
—
CPLA
说明:
PDF
0*
PDF
—
OV
—
Z
√
36
AC
—
C
—
2005-07-12
HT49CV3
DAA
说明
[m]
操作
将加法运算后放入累加器的值调整为十进制数,并将结果放入数据存储器
本指令将累加器高低四位分别调整为 BCD 码。如果低四位的值大于“9”或 AC=1,那
么 BCD 调整就执行对原值加“6”,并且内部进位标志 AC1= AC ,即 AC 求反;否则原
值保持不变。如果高四位的值大于“9”或 C=1,那么 BCD 调整就执行对原值加“6”
再加 AC1,并把 C 置位;否则 BCD 调整就执行对原值加 AC1,C 的值保持不变。结果
存放到数据存储器中,只有进位标志位(C)受影响。
如果 ACC.3~ACC.0 > 9 或 AC=1
那么 [m].3~[m].0 Å(ACC.3~ACC.0 )+6,AC1= AC
否则 [m].3~[m].0 Å(ACC.3~ACC.0 ),AC1=0
并且
如果 ACC.7~ACC.4+AC1 > 9 或 C=1
那么 [m].7~[m].4 Å(ACC.7~ACC.4 )+6+ AC1,C=1
否则 [m].7~[m].4 Å(ACC.7~ACC.4 )+ AC1,C=C
影响标志位
TO
—
DEC
[m]
说明:
运算过程:
影响标志位
运算过程:
Z
—
AC
—
C
√
PDF
—
OV
—
Z
√
AC
—
C
—
数据存储器的内容减 1,结果放入累加器
本指令将存储器内的数值减一,再放到累加器。
ACC Å [m]-1
TO
—
HALT
说明:
OV
—
数据存储器的内容减 1,结果放入数据存储器
本指令将数据存储器内的数值减一再放回数据存储器。
[m] Å [m]-1
TO
—
DECA
[m]
说明:
运算过程:
影响标志位
PDF
—
PDF
—
OV
—
Z
√
AC
—
C
—
进入暂停模式
本指令终止程序执行并关掉系统时钟,RAM 和寄存器内的数值保持原状态,WDT 计数
器清“0”,暂停标志位(PDF)被设为 1, WDT 计数溢出位(TO)被清为 0。
Program Counter Å Program Counter+1
PDF Å 1
TO Å 0
影响标志位
TO
0
Rev. 1.10
PDF
1
OV
—
Z
—
37
AC
—
C
—
2005-07-12
HT49CV3
INC
[m]
说明:
运算过程:
影响标志位
数据存储器的内容加 1,结果放入数据存储器
本指令将数据存储器内的数值加一,结果放回数据存储器。
[m] Å [m]+1
TO
—
INCA
[m]
说明:
运算过程:
影响标志位
C
—
PDF
—
OV
—
Z
√
AC
—
C
—
PDF
—
OV
—
Z
—
AC
—
C
—
PDF
—
OV
—
Z
—
AC
—
C
—
Z
—
AC
—
C
—
AC
—
C
—
将立即数送至累加器
本指令是将立即数送到累加器内。
ACC Å x
TO
—
PDF
—
OV
—
MOV
[m], A 将累加器送至数据存储器
说明:
本指令是将累加器值送到数据存储器内。
运算过程:
[m] Å ACC
影响标志位
TO
PDF
OV
Z
—
—
—
—
Rev. 1.10
AC
—
将数据存储器送至累加器
本指令是将数据存储器内的数值送到累加器内。
ACC Å [m]
TO
—
MOV
A, x
说明:
运算过程:
影响标志位
Z
√
无条件跳转
本指令是将要跳到的目的地直接放到程序计数器内。
Program Counter Å addr
TO
—
MOV
A, [m]
说明:
运算过程:
影响标志位
OV
—
数据存储器的内容加 1,结果放入数据存储器
本指令是将存储器内的数值加一,结果放到累加器。
ACC Å [m]+1
TO
—
JMP
addr
说明:
运算过程:
影响标志位
PDF
—
38
2005-07-12
HT49CV3
NOP
说明:
运算过程:
影响标志位
空指令
本指令不作任何运算,而只将程序计数器加一。
Program Counter Å Program Counter+1
TO
—
OR
A, [m]
说明:
运算过程:
影响标志位
C
—
PDF
—
OV
—
Z
√
AC
—
C
—
PDF
—
OV
—
Z
√
AC
—
C
—
PDF
—
OV
—
Z
√
AC
—
C
—
从子程序返回
本指令是将堆栈寄存器中的程序计数器值送回程序计数器。
Program Counter Å Stack
TO
—
RET
A, x
说明:
运算过程:
AC
—
累加器与数据存储器做“或”运算,结果放入数据存储器
本指令是把累加器值、存储器值做逻辑或,结果放到数据存储器。
[m]ÅACC “OR” [m]
TO
—
RET
说明:
运算过程:
影响标志位
Z
—
累加器与立即数做“或”运算,结果放入累加器
本指令是把累加器值、立即数做逻辑或,结果放到累加器。
ACCÅACC “OR” x
TO
—
ORM
A, [m]
说明:
运算过程:
影响标志位
OV
—
累加器与数据存储器做“或”运算,结果放入累加器
本指令是把累加器、数据存储器值做逻辑或,结果放到累加器。
ACCÅACC “OR” [m]
TO
—
OR
A, x
说明:
运算过程:
影响标志位
PDF
—
PDF
—
OV
—
Z
—
AC
—
C
—
从子程序返回,并将立即数放入累加器
本指令是将堆栈寄存器中的程序计数器值送回程序计数器,并将立即数送回累加器。
Program Counter Å Stack
ACC Å x
影响标志位
TO
—
Rev. 1.10
PDF
—
OV
—
Z
—
39
AC
—
C
—
2005-07-12
HT49CV3
RETI
说明:
运算过程:
从中断返回
本指令是将堆栈寄存器中的程序计数器值送回程序计数器,与 RET 不同的是它使用在
中断程序结束返回时,它还会将中断控制寄存器 INTC 的 0 位(EMI)中断允许位置 1,允
许中断服务。
Program Counter Å Stack
EMI Å 1
影响标志位
TO
—
RL
[m]
说明:
运算过程:
影响标志位
[m]
运算过程:
影响标志位
[m]
运算过程:
Z
—
AC
—
C
—
PDF
—
OV
—
Z
—
AC
—
C
—
数据存储器左移一位,结果放入累加器
本指令是将存储器内的数值左移一位,第 7 位移到第 0 位,结果送到累加器,而数据存
储器内的数值不变。
ACC.0 Å[m].7, ACC.(i+1) Å[m].i; (i=0~6)
TO
—
RLC
说明:
OV
—
数据存储器左移一位,结果放入数据存储器
本指令是将数据存储器内的数值左移一位,第 7 位移到第 0 位,结果送回数据存储器。
[m].0 Å[m].7, [m].(i+1) Å[m].i; (i=0~6)
TO
—
RLA
说明:
PDF
—
PDF
—
OV
—
Z
—
AC
—
C
—
带进位将数据存储器左移一位,结果放入数据存储器
本指令是将存储器内的数值与进位标志左移一位,第 7 位取代进位标志,进位标志移到
第 0 位,结果送回数据存储器。
[m].(i+1) Å[m].i; (i=0~6)
[m].0 ÅC
C Å [m].7
影响标志位
TO
—
RLCA
说明:
[m]
运算过程:
PDF
—
OV
—
Z
—
AC
—
C
√
带进位将数据存储器左移一位,结果放入累加器
本指令是将存储器内的数值与进位标志左移一位,第七位取代进位标志,进位标志移到
第 0 位,结果送回累加器。
ACC.(i+1) Å[m].i;
(i=0~6)
ACC.0 ÅC
C Å [m].7
影响标志位
TO
—
Rev. 1.10
PDF
—
OV
—
Z
—
40
AC
—
C
√
2005-07-12
HT49CV3
RR
[m]
说明:
运算过程:
影响标志位
数据存储器右移一位,结果放入数据存储器
本指令是将存储器内的数值循环右移,第 0 位移到第 7 位,结果送回数据存储器。
[m].7 Å[m].0, [m].i Å[m].(i+1); (i=0~6)
TO
—
RRA
说明:
[m]
运算过程:
影响标志位
[m]
运算过程:
OV
—
Z
—
AC
—
C
—
数据存储器右移一位,结果放入累加器
本指令是将数据存储器内的数值循环右移,第 0 位移到第 7 位,结果送回累加器,而数
据存储器内的数值不变。
ACC.7 Å[m].0, ACC.i Å[m].(i+1); (i=0~6)
TO
—
RRC
说明:
PDF
—
PDF
—
OV
—
Z
—
AC
—
C
—
带进位将数据存储器右移一位,结果放入数据存储器
本指令是将存储器内的数值加进位标志循环右移,第 0 位取代进位标志,进位标志移到
第 7 位,结果送回存储器。
[m].i Å[m].(i+1);
(i=0~6)
[m]. 7 ÅC
C Å [m].0
影响标志位
TO
—
RRCA
说明:
[m]
运算过程:
PDF
—
OV
—
Z
—
AC
—
C
√
带进位将数据存储器右移一位,结果放入累加器
本指令是将数据存储器内的数值加进位标志循环右移,第 0 位取代进位标志,进位标志
移到第 7 位,结果送回累加器,数据存储器内的数值不变。
ACC.i Å[m].(i+1);
(i=0~6)
ACC.7 ÅC
C Å [m].0
影响标志位
TO
—
SBC
说明:
A,[m]
运算过程:
影响标志位
OV
—
Z
—
AC
—
C
√
累加器与数据存储器、进位标志相减,结果放入累加器
本指令是把累加器值减去数据存储器值以及进位标志的取反,结果放到累加器。
ACCÅACC+[ m ]+ C
TO
—
Rev. 1.10
PDF
—
PDF
—
OV
√
Z
√
41
AC
√
C
√
2005-07-12
HT49CV3
SBCM
说明:
A,[m]
运算过程:
影响标志位
累加器与数据存储器、进位标志相减,结果放入数据存储器
本指令是把累加器值减去数据存储器值以及进位标志取反,结果放到数据存储器。
[m]ÅACC+[ m ]+C
TO
—
SDZ
说明:
[m]
运算过程:
影响标志位
[m]
运算过程:
OV
√
Z
√
AC
√
C
√
数据存储器减 1,如果结果为“0”
,则跳过下一条指令
本指令是把数据存储器内的数值减 1,判断是否为 0,若为 0 则跳过下一条指令,即如
果结果为零,放弃在目前指令执行期间所取得的下一条指令,并插入一个空周期用以取
得正确的指令(二个指令周期)。否则执行下一条指令(一个指令周期)。
如果[m]-1=0,跳过下一条指令执行再下一条。
TO
—
SDZA
说明:
PDF
—
PDF
—
OV
—
Z
—
AC
—
C
—
数据存储器减 1,将结果放入累加器,如果结果为“0”,则跳过下一条指令
本指令是把数据存储器内的数值减 1,判断是否为 0,为 0 则跳过下一行指令并将减完
后数据存储器内的数值送到累加器,而数据存储器内的值不变,即若结果为 0,放弃在目
前指令执行期间所取得的下一条指令,并插入一个空周期用以取得正确的指令(二个指令
周期)。否则执行下一条指令(一个指令周期)。
如果[m]-1=0,跳过下一条指令执行再下一条。
ACC Å([m]-1)
影响标志位
TO
—
SET
[m]
说明:
运算过程:
影响标志位
Z
—
AC
—
C
—
PDF
—
OV
—
Z
—
AC
—
C
—
将数据存储器的第 i 位置“1”
本指令是把存储器内的数值的第 i 位置为 1。
[m].i Å1
TO
—
Rev. 1.10
OV
—
置位数据存储器
本指令是把存储器内的数值每个位置为 1。
[m] Å FFH
TO
—
SET
[m]. i
说明:
运算过程:
影响标志位
PDF
—
PDF
—
OV
—
Z
—
42
AC
—
C
—
2005-07-12
HT49CV3
SIZ
说明:
[m]
运算过程:
影响标志位
数据存储器加 1,如果结果为“0”
,则跳过下一条指令
本指令是把数据存储器内的数值加 1,判断是否为 0。若为 0,跳过下一条指令,即放弃
在目前指令执行期间所取得的下一条指令,并插入一个空周期用以取得正确的指令(二个
指令周期)。否则执行下一条指令(一个指令周期)。
如果 ([m]+1=0),跳过下一行指令;[m] Å[m]+1
TO
—
SIZA
说明:
运算过程:
影响标志位
[m]. i
运算过程:
影响标志位
A, [m]
运算过程:
影响标志位
A, x
运算过程:
影响标志位
C
—
PDF
—
OV
—
Z
—
AC
—
C
—
PDF
—
OV
—
Z
—
AC
—
C
—
ACCÅACC+[ m ]+1
PDF
—
OV
√
Z
√
AC
√
C
√
累加器与立即数相减,结果放入累加器
本指令是把累加器值、立即数相减,结果放到累加器。
ACCÅACC+ x +1
TO
—
Rev. 1.10
AC
—
累加器与数据存储器相减,结果放入累加器
本指令是把累加器值、数据存储器值相减,结果放到累加器。
TO
—
SUB
说明:
Z
—
如果数据存储器的第 i 位不为“0”,则跳过下一条指令
本指令是判断数据存储器内的数值的第 i 位,若不为 0,则程序计数器再加 1,跳过下一
行指令,放弃在目前指令执行期间所取得的下一条指令,并插入一个空周期用以取得正
确的指令(二个指令周期)。否则执行下一条指令(一个指令周期)。
如果 [m].i≠0,跳过下一行指令。
TO
—
SUB
说明:
OV
—
数据存储器加 1,将结果放入累加器,如果结果为“0”,则跳过下一条指令
本指令是把数据存储器内的数值加 1,判断是否为 0,若为 0 跳过下一条指令,即放弃
在目前指令执行期间所取得的下一条指令,并插入一个空周期用以取得正确的指令(二
个指令周期),并将加完后存储器内的数值送到累加器,而数据存储器的值保持不变。
否则执行下一条指令(一个指令周期)。
如果[m]+1=0,跳过下一行指令;ACC Å([m]+1)
TO
—
SNZ
说明:
PDF
—
PDF
—
OV
√
Z
√
43
AC
√
C
√
2005-07-12
HT49CV3
SUBM
说明:
A, [m]
运算过程:
影响标志位
累加器与数据存储器相减,结果放入数据存储器
本指令是把累加器值、存储器值相减,结果放到存储器。
[m]ÅACC+[ m ]+1
TO
—
SWAP
[m]
说明:
运算过程:
影响标志位
OV
√
Z
√
AC
√
C
√
交换数据存储器的高低字节,结果放入数据存储器
本指令是将数据存储器的低四位和高四位互换,再将结果送回数据存储器。
[m].7~[m].4 ↔[m].3~[m].0
TO
—
SWAPA [m]
说明:
运算过程:
PDF
—
PDF
—
OV
—
Z
—
AC
—
C
—
交换数据存储器的高低字节,结果放入累加器
本指令是将数据存储器的低四位和高四位互换,再将结果送回累加器。
ACC.3~ACC.0Å [m].7~[m].4
ACC.7~ACC.4Å [m].3~[m].0
影响标志位
TO
—
SZ
说明:
[m]
运算过程:
影响标志位
[m]
运算过程:
影响标志位
Z
—
AC
—
C
—
PDF
—
OV
—
Z
—
AC
—
C
—
数据存储器送至累加器,如果内容为“0”,则跳过下一条指令
本指令是判断存储器内的数值是否为 0,若为 0 则跳过下一行指令,即放弃在目前指令
执行期间所取得的下一条指令,并插入一个空周期用以得正确的指令(二个指令周期)。
并把存储器内值送到累加器,而存储器的值保持不变。否则执行下一条指令(一个指令周
期)。
如果[m] = 0,跳过下一行指令,并 ACCÅ [m]。
TO
—
Rev. 1.10
OV
—
如果数据存储器为“0”,则跳过下一条指令
本指令是判断数据存储器内的数值是否为 0,为 0 则跳过下一行指令,即放弃在目前指
令执行期间所取得的下一条指令,并插入一个空周期用以得正确的指令(二个指令周期)。
否则执行下一条指令(一个指令周期)。
如果 [m] = 0, 跳过下一行指令。
TO
—
SZA
说明:
PDF
—
PDF
—
OV
—
Z
—
44
AC
—
C
—
2005-07-12
HT49CV3
SZ
说明:
[m]. i
运算过程:
影响标志位
如果数据存储器的第 i 位为“0”,则跳过下一条指令
本指令是判断存储器内第 i 位值是否为 0,若为 0 则跳过下一行指令,即放弃在目前指
令执行期间所取得的下一条指令,并插入一个空周期用以得正确的指令(二个指令周期)。
否则执行下一条指令(一个指令周期)。
如果 [m].i = 0,跳过下一行指令。
TO
—
TABRDC [m]
说明:
运算过程:
PDF
—
OV
—
Z
—
AC
—
C
—
读取 ROM 当前页的内容,并送至数据存储器和 TBLH
本指令是将表格指针指向程序寄存器当前页,将低字节送到存储器,高字节直接送到
TBLH 寄存器内。
[m] Å程序存储器低字节
TBLHÅ程序存储器高字节
影响标志位
TO
—
TABRDL [m]
说明:
运算过程:
PDF
—
OV
—
Z
—
AC
—
C
—
读取 ROM 最后一页的内容,并送至数据存储器和 TBLH
本指令是将 TABLE 指针指向程序寄存器最后页,将低字节送到存储器,高字节直接送
到 TBLH 寄存器内。
[m] Å程序存储器低字节
TBLHÅ程序存储器高字节
影响标志位
TO
—
XOR
A, [m]
说明:
运算过程:
影响标志位
AC
—
C
—
PDF
—
OV
—
Z
√
AC
—
C
—
PDF
—
OV
—
Z
√
AC
—
C
—
累加器与数据存储器做“异或”运算,结果放入累加器
本指令是把累加器值与立即数做逻辑异或,结果放到累加器。
ACCÅACC “XOR” x
TO
—
Rev. 1.10
Z
—
累加器与数据存储器做“异或”运算,结果放入数据存储器
本指令是把累加器值、数据存储器值做逻辑异或,结果放到数据存储器。
[m]ÅACC “XOR” [m]
TO
—
XOR
A, x
说明:
运算过程:
影响标志位
OV
—
累加器与立即数做“异或”运算,结果放入累加器
本指令是把累加器值、 数据存储器值做逻辑异或,结果放到累加器。
ACCÅACC “XOR” [m]
TO
—
XORM A, [m]
说明:
运算过程:
影响标志位
PDF
—
PDF
—
OV
—
Z
√
45
AC
—
C
—
2005-07-12
HT49CV3
封装信息
52-pin QFP (14×14) 外形尺寸
C
H
D
3 9
G
2 7
I
2 6
4 0
F
A
B
E
1 4
5 2
K
J
1
符号
A
B
C
D
E
F
G
H
I
J
K
α
Rev. 1.10
1 3
尺寸(单位:mm)
正常
—
—
—
—
1
0.4
—
—
0.1
—
—
—
最小
17.3
13.9
17.3
13.9
—
—
2.5
—
—
0.73
0.1
0°
46
最大
17.5
14.1
17.5
14.1
—
—
3.1
3.4
—
1.03
0.2
7°
2005-07-12
HT49CV3
盛群半导体股份有限公司(总公司)
新竹市科学工业园区研新二路 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
盛扬半导体有限公司(深圳业务处)
深圳市深南中路赛格广场 43 楼 518031
电话: 0755-8346-5589
传真: 0755-8346-5590
ISDN: 0755-834-65591
盛扬半导体有限公司(北京业务处)
北京市西城区宣武门西大街甲 129 号金隅大厦 1721 室 100031
电话: 010-6641-0030, 6641-7751, 6641-7752
传真: 010-6641-0125
Holmate Semiconductor, Inc.(北美业务处)
46712 Fremont Blvd., Fremont, CA 94538
电话: 510-252-9880
传真: 510-252-9885
网站: www.holmate.com
Copyright  2005 by HOLTEK SEMICONDUCTOR INC.
使用指南中所出现的信息在出版当时相信是正确的,然而盛群对于说明书的使用不负任何责任。文中提
到的应用目的仅仅是用来做说明,盛群不保证或表示这些没有进一步修改的应用将是适当的,也不推荐
它的产品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使用于救生、维
生器件或系统中做为关键器件。盛群拥有不事先通知而修改产品的权利,对于最新的信息,请参考我们
的网址 http://www.holtek.com.tw
Rev. 1.10
47
2005-07-12