HOLTEK HT48RA1, HT48CA1 Service Manual

HT48RA1/HT48CA1
遥控型八位单片机
遥控型八位单片机
遥控型八位单片机遥控型八位单片机
盛群知识产权政策
盛群知识产权政策
盛群知识产权政策盛群知识产权政策
专利权
专利权专利权
盛群半导体公司在全球各地区已核准和申请中之专利权至少有 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  2006 by HOLTEK SEMICONDUCTOR INC.
规格书中所出现的信息在出版当时相信是正确的,然而盛群对于规格内容的使用不负责任。文中提到的应 用其目的仅仅是用来做说明,盛群不保证或不表示这些应用没有更深入的修改就能适用,也不推荐它的产 品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使用于救生、维生器件或 系统中做为关键器件。盛群拥有不事先通知而修改产品的权利,对于最新的信息,请参考我们的网址
http://www.holtek.com.tw; http://www.holtek.com.cn
Rev. 1.20 1 2005-06-09
技术相关信息
技术相关信息
技术相关信息技术相关信息
· 工具信息
·
FAQs
· 应用范例
-HA0016S HT48 MCU读写HT24系列EEPROM的应用范例
-HA0018S HT48 MCU 对HT1621 LCD控制器的应用
-HA0041S HT48CA0发射HT6221码的应用范例
-HA0075S MCU重置电路及振荡电路应用
-HA0076S HT48RAx/HT48CAx 软件应用要点
-HA0082S HT48xA0-1、HT48xA0-2 Power-on Reset 时序
特性
特性
特性特性
HT48RA1/HT48CA1
· 工作电压: 2.0V5.5V
· 最多可有 23 个双向输入/输出口
· 1 个与输入/输出共用引脚的外部中断输入
· 8 位可编程定时/计数器,带溢出中断及 8 阶预 分频器
(TMR0)
· 16 位可编程定时/计数器,带溢出中断(TMR1)
· 内置晶体和 RC 振荡电路
· 看门狗定时器
· 8K×16 位的程序存储器 ROM
·
224×8
· 支持 PFD
概述
概述
概述概述
HT48RA1/HT48CA1
数据可以存储遥控码。掩膜版芯片 HT48CA1 在引脚和功能方面,都与 OTP 版芯片 HT48RA1 完全相同。
拥有低功耗、I/O 口稳定性高、定时器功能、振荡选择、省电和唤醒功能、看门狗定时器、蜂鸣器驱
动、以及低价位等优势,使此款多功能芯片可以广泛地适用于各种应用,例如工业控制、消费类产品、子 系统控制器等,特别适用于多功能遥控器(URC)
位的数据存储器
RAM
是一款八位高性能精简指令集单片机,专为多输入/输出控制的产品设计。
· HALT 和唤醒功能来降低功耗
· 8 层硬件堆栈
· 在 VDD=3V,系统频率为 4MHz 时,指令周期 为 1µs
· 位操作指令
· 查表指令,表格内容字长 16
· 63 条功能强大的指令
· 所有指令执行时间皆为 1 2 个指令周期
· 低电压复位功能
·
28-pin SOP/SSOP(209mil)
封装
ROM
Rev. 1.20 2 2005-06-09
方框图
方框图
方框图方框图
P r o g r a m
R O M
P r o g r a m
C o u n t e r
S T A C K
P F 0 / I N T
I n t e r r u p t
C i r c u i t
I N T C
T M R 1 C
T M R 1
T M R 0
T M R 0 C
HT48RA1/HT48CA1
/ 4
f
M U X
S Y S
P C 5 / T M R 1
P r e s c a l e r
P C 0 / T M R 0
f
S Y S
M U X
引脚图
引脚图
引脚图引脚图
I n s t r u c t i o n
I n s t r u c t i o n
G e n e r a t o r
O S C 2
R e g i s t e r
D e c o d e r
T i m i n g
O S C 1
R E S V D D V S S
M P
A L U
S h i f t e r
A C C
M U X
P C 0 / T M R 0
M U
M e m o r y
X
S T A T U S
P B 5
P B 4
P A 3
P A 2
P A 1
P A 0
P B 3
P B 2
P B 1
P B 0 / P F D
V S S
P F 0 / I N T
P C 1
H T 4 8 R A 1 / H T 4 8 C A 1
2 8 S O P - A / S S O P - A
D A T A
P F D
P O R T B
P O R T C
P O R T F
E N / D I S
W D T
M U X
P A 0 ~ P A 7
P B 0 / P F D P B 1 ~ P B 7
P C 0 / T M R 0 P C 1 ~ P C 4 P C 5 / T M R 1
P F 0 / I N T
f
S Y S
W D T O S C
/ 4
W D T S
W D T P r e s c a l e r
P A C
P O R T A
P A
P B C
P B
P C C
P C
P F C
P F
2 8
2 7
2 6
2 5
2 4
2 3
2 2
2 1
2 0
1 9
1 8
1 7
1 6
1 5
P B 6
P B 7
P A 4
P A 5
P A 6
P A 7
O S C 2
O S C 1
V D D
R E S
P C 5 / T M R 1
P C 4
P C 3
P C 2
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
Rev. 1.20 3 2005-06-09
引脚说明
引脚说明
引脚说明引脚说明
引脚名称
引脚名称
引脚名称引脚名称
HT48RA1/HT48CA1
输入
输入/
输入输入
输出
输出
输出输出
掩膜选项
掩膜选项 说说说说 明明明明
掩膜选项掩膜选项
PA0~PA7
PB0/PFD PB1~PB7
PC0/TMR0
PC1~PC4
PC5/TMR1
PF0/——INT
OSC1 OSC2
——
RES VSS
VDD
注意
注意:::: * 选项以位为单位
注意注意
** 选项以位为半字节单位 *** 选项以字节为单位
输入/
输出
输入/
输出
输入/
输出
输入/
输出
输入 输出
输入 斯密特触发复位输入端,低电平有效
负电源,接地 — 正电源
唤醒*
上拉电阻***
上拉电阻**
PB0 PDF
上拉电阻*
上拉电阻*
晶体振荡
RC 振荡
8 位双向输入/输出端口,每一位能由掩膜选项设置为唤醒输
入。可由软件指令设置为 CMOS 输出或斯密特触发输入,作 为输入时可由掩膜选项设置是否带上拉电阻
位双向输入/输出口。可由软件指令设置为
8
密特触发输入,作为输入时可由掩膜选项设置是否带上拉电阻 PB0 输出模式可以用作内部 PFD 信号输出,用作可变载波频 率信号输出。
6 位双向输入/输出口。可由软件指令设置为 CMOS 输出或斯 密特触发输入,作为输入时可由掩膜选项设置是否带或上拉电 阻(由上拉电阻选项决定)。PC0 PC5 与定时/计数器 0/1 外 部输入共用。
双向输入/输出口。可由软件设置为 CMOS 输出或斯密特触发 输入,作为输入时可由掩膜选项设置是否带或上拉电阻(由上 拉电阻选项决定)。外部中断输入与 PF0 共用。
OSC1 OSC2 连接至 RC 或晶体振荡(由掩膜选项确定)来 产生内部系统时钟;在RC振荡方式下, 分频的输出端。
CMOS
OSC2
输出或斯
是系统时钟四
极限参数
极限参数
极限参数极限参数
电源供应电压 …… VSS-0.3 V~ VSS+6.0V 储存温度 …… -50℃~ 125℃ 端口输入电压
注意:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状态, 而且若长期在标示范围外的条件下工作,可能影响芯片的可靠性。
Rev. 1.20 4 2005-06-09
……
V
SS
0.3 V~ V
0.3V
DD
工作温度 …… -40℃
~ 85℃
D.C.
特性
特性
特性特性
符号
符号
符号符号
V
DD
I
DD1
I
DD2
I
STB1
I
STB2
V
IL1
V
IH1
HT48RA1/HT48CA1
测试条件
测试条件
参数
参数
参数参数
工作电压
工作电流
工作电流(晶体振荡,RC 振 荡
)
静态电流
看门狗打开,看
(
门狗 RC 振荡器打开)
静态电流 (看门狗关闭)
输入/输出口的低电平输入电 压 输入/输出口的高电平输入电 压
测试条件测试条件
V
3V 5V
5V
3V 5V 3V 5V
DD
条件
条件
条件条件
无负载
f
=4MHz
sys
无负载
f
=8MHz
sys
无负载
暂停模式
无负载
暂停模式
最小
最小 典型
最小最小
2.0
— —
— — — —
0
0.7V
DD
典型
典型典型
0.6 1.5 2 4
4 8 mA
1.1 5 4 10
0.1 1
0.2 2
0.3VDD V
Ta=25
最大
最大
最大最大
单位
单位
单位单位
5.5 V
mA
μA
μA
VDD V
V
V
V
IOL
I
R
低电平输入电压(——RES)
IL2
高电平输入电压(——RES)
IH2
LVR
低电压复位
输入/输出口灌电流
OH
PH
输入/输出口源电流
上拉电阻
3V 4 8 5V 3V 5V 3V
5V
LVR=2.0V 1.8 1.9 2.0 LVR=3.0V 2.7 3.0 3.3
VOL=0.1VDD
VOH=0.9VDD
- -
0
0.9V
DD
10 20
-2
4
-5 10
20 60 100
10 30 50
0.4VDD V
VDD V
V
- - - -
mA
mA
K
Ω
Rev. 1.20 5 2005-06-09
A.C.
符号
符号符号
f
t
WDTOSC
t
t
特性
特性
特性特性
符号
f
SYS1
f
SYS2
TIMER
WDT1
WDT2
t
RES
t
SST
t
LVR
t
INT
t
ACC
附注:t
HT48RA1/HT48CA1
测试条件
测试条件
参数
系统时钟(晶体振荡)
系统时钟(RC 振荡)
定时器的输入频率
(TMR0/TMR1)
参数
参数参数
看门狗振荡周期
看门狗定时溢出周期
看门狗定时溢出周期(Fsys/4) WDT 无预分频 -
(WDT
振荡
)
外部复位低电平脉冲宽度
系统启动延时周期
低电压复位延时时间 - 中断脉冲宽度
ROM 数据访问时间
= 1/f
SYS
SYS
测试条件测试条件
VDD
- - - -
3V 0 5V 3V 45 90 180
5V 3V 11 23 46 5V
条件
条件
条件条件
2.0V~5.5V 400
3.3V~5.5V 400
2.0V~5.5V 400
3.3V~5.5V 400
占空比
50%
无预分频
WDT
最小
最小 典型
最小最小
0
32 65 130
8 17 33
1
上电复位或从 暂停状态唤醒
1 1 1
Ta=25
典型 最大
典型典型
- - - - - -
1024
最大 单位
最大最大
4000 8000 4000
8000
4000 8000
单位
单位单位
μs
1024
- - μs - μs
kHz
kHz
kHz
μs
m s
t
SYS
t
SYS
ms
Rev. 1.20 6 2005-06-09
HT48RA1/HT48CA1
系统功能说明
系统功能说明
系统功能说明系统功能说明
指令系统
指令系统
指令系统指令系统
态,分别为T1、T2、T3、T4),一个指令周期包含了四个T状态,即一个指令周期为四个系统时钟周期。
下一个指令周期里进行解码与执行该指令。这种流水线方式能在一个指令周期里有效地执行一个指令。但 是,如果渉及到的指令要改变程序计数器(如 JMP,CALL 等),就需要花两个指令周期来完成这一条指 令。
系统时钟由晶体振荡器或 RC 振荡器产生,系统内部将此频率分为四个不重叠的时钟(一般称为 T
指令的读取与执行是以流水线方式来进行的。这种方式允许在一个指令周期进行读取指令操作,而在
T 1 T 2 T 3 T 4 T 1 T 2 T 3 T 4 T 1 T 2 T 3 T 4
S y s t e m C l o c k
O S C 2 ( R C o n l y )
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 )
指令时序
指令时序
指令时序指令时序
程序计数器
程序计数器((((Program Counter))))
程序计数器程序计数器
程序计数器是作为程序存储器寻址之用,控制了程序的流程单片机通过 PC 指向的程序存储器的地址 取得一条指令码后, PC 会自动地指向下一条指令的地址(PC 值自动加 1)。 但是若执行的是如下指令:跳转、条件跳跃、读取 PCL 的值、子程序调用、初始复位、内部或外部中 断响应、子程序返回等,则 PC 要根据每一条指令获得其相应的地址来控制程序的转向。
比如执行条件跳转指令,一旦条件符合,则在当前执行指令时所获取的指令码不会被执行,并且同时 会插入一个空指令周期(dummy cycle),换句话说,相当与执行了一个 NOP 指令(空操作),这样 PC 才 会指向正确的指令码的地址;反之,条件不符合时,PC 将指向下一条指令的地址。 PC 的低位(PCL)是可读写的暂存器(06H)。若向 PCL 写入一个值将会产生一个短程的跳跃动作, 这个短程跳跃的地址范围是 256 个地址,即在 ROM 的当前页。 当发生控制转移时,就会加入一个空指令周期。
程序计数器
程序计数器
模式
模式
模式模式
初始化复位 外部中断 定时/计数器 0 溢出中断 定时/计数器 1 溢出中断 条件跳跃 装入 PCL 跳转、子程序调用 从子程序返回
(RET,RETI)
*12~*8 *7 *6 *5 *4 *3 *2 *1 *0
00000 00000 00000 00000
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0
*12~*8 @7 @6 @5 @4 @3 @2 @1 @0 #12~#8 #7 #6 #5 #4 #3 #2 #1 #0
S12~S8 S7 S6 S5 S4 S3 S2 S1 S0
程序计数器程序计数器
PC+2
程序计数器
程序计数器
程序计数器程序计数器
附注: *12~*0:程序指针
#12~#0
Rev. 1.20 7 2005-06-09
:指令指针
S12~S0:堆栈指针 @7~@0:PCL字节
HT48RA1/HT48CA1
程序存储器
程序存储器((((Program Memory ---- ROM))))
程序存储器程序存储器
程序存储器用来存储要执行的程序指令,也包含数据、 表格、中断入口地址,由 8192×16 个位组成,由 PC 和表格指 针来确定其地址。 ROM 里面的某些地址是为一些特殊使用而保留的,使用 时应加以注意,避免误用,导致程序运行的不正常,以下是 说明:
· 地址
000H
此地址保留给程序初始化之用。当系统复位时,程序会
000H 地址开始执行。
· 地址 004H
该地址为外部中断服务程序保留。当
引脚有触发信号
INT
输入,如果中断允许且堆栈未满,则程序会跳转到 004H
地址开始执行。服务程序。
· 地址 008H
此地址保留给定时/计数器0中断服务使用。如果中断允 许且堆栈未满,则一旦定时/计数器 0 发生溢出时,就能 产生中断,程序会从 008H 地址开始执行中断服务程序。
· 地址 00CH
此地址保留给定时/计数器 1 中断服务使用。如果中断允许且堆栈未满,则一旦定时/计数器 1 发生溢 出时,就能产生中断,程序会从 表格区(
Table Location)
地址开始执行中断服务程序。
00CH
ROM 内的任何地址都可被用来作为查表地址使用。查表指令为 TABRDC [m] TABRDL [m] TABRDC [m]是查表当前页的数据 [ 1 =256 个字 ( word )]TABRDL [m]是查表最后一页的数据。 [m] 为数据被存入的地址。在执行 TABRDC [m]指令(或 TABRDL [m] 指令)后,将会传送当前页(或
最后一页)上的一个字的低位字节到[m],而这个字的高位字节传送到 TBLH08H)。只有表格中的 低位字节被定义到目标地址中,而高位字节传送到表格的高位字节寄存器( 存器。而表格指针(TBLP;07H)是可以读写的寄存器,用来指明表格地址。在访问表格以前,通过 TBLP 寄存器赋值来指明表格低位地址。高位字节寄存器 TBLH 只能读出,不能写入。如果主程 序和中断服务程序(ISR)同时使用查表指令,那么主程序读取的高位字节(即存放于高位字节寄存 器 TBLH 之中)可能会被中断服务程序的查表指令改写而产生错误。因此,应该避免主程序和中断服 务程序(ISR)同时使用查表指令。但是,如果主程序和中断服务程序必须同时使用查表指令的话, 那么,主程序在使用查表指令之前,必须先关闭所有使用查表指令的相关中断,直到高位字节寄存器 TBLH 的内容被备份好再开放这些中断。查表指令要花两个指令周期来完成这一条指令的操作。按照 用户的需要,表格地址这些位置可以作为正常的程序存储器来使用。
指令
指令
指令指令
TABRDC [m] TABRDL [m]
*12~*8 *7 *6 *5 *4 *3 *2 *1 *0
TBHP @7 @6 @5 @4 @3 @2 @1 @0
11111 @7 @6 @5 @4 @3 @2 @1 @0
表格地址
表格地址
表格地址表格地址
0 0 0 H
0 0 4 H
0 0 8 H
0 0 C H
n 0 0 H
n F F H
1 F F F H
N o t e : n r a n g e s f r o m 0 t o 1 F
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
E x t e r n a l I n t e r r u p t S u b r o u t i n e
T i m e r / E v e n t C o u n t e r 0
I n t e r r u p t S u b r o u t i n e
T i m e r / E v e n t C o u n t e r 1
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 )
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
程序存储器
程序存储器
程序存储器程序存储器
TBLH)。TBLH
P r o g r a m M e m o r y
为只读寄
表格区
表格区
表格区表格区
附注: *12~*0:表格地址位 @7~@0:表格指针位
Rev. 1.20 8 2005-06-09
HT48RA1/HT48CA1
堆栈寄存器
堆栈寄存器((((STACK))))
堆栈寄存器堆栈寄存器
堆栈寄存器是特殊的存储器空间,用来保存PC的值。
HT48RA1/HT48CA1有8
既不是数据存储器的一部分,又不是程序存储器的一部分,而且也不可读不可写。堆栈的使用是通过堆栈 指针 SP 来实现的,而堆栈指针 SP 也是不可读不可写的。一旦发生了子程序的调用或是中断响应,则程序 计数器 PC 的内容会被压入堆栈中。在子程序调用或中断响应结束时(执行指令 RET RETI),程序计数 器 PC 的值会从堆栈中还原。在系统复位后,堆栈指针 SP 会指向堆栈的顶端。
当堆栈已满,而此时又发生的中断请求,则这个中断的请求标志会被记录下来,该中断服务仍被禁止。
一旦堆栈指针SP发生了递减(由于
RET或RETI
)则会响应此未被服务的中断。这个功能就可防止堆栈 溢出,使得编程者更易于使用该结构。同样,如果堆栈已满,而随后又执行了 CALL 指令,此时会发生堆 栈溢出,并且第一个返回地址将会丢失(只有最近的 8 个返回地址会被保存)。
数据存储器
数据存储器----RAM
数据存储器数据存储器
数据存储器(RAM)由 249×8 个位组成,包含特别功能 寄存器、通用数据寄存器(224×8)两个不同功能的区间。这些 空间大多是可读可写的,只有少部分是只读的。
特殊功能寄存器包括:间接寻址寄存器(R0; 02H),定时/计数器 0TMR00DH),定时/计数器 0 控制寄 存器(TMR0C0EH),定时/计数器 1 高字节(TMR1H0FH), 定时/计数器 1 低字节(TMR1L10H),定时/计数器 1 控制寄 存器(TMR1C11H),程序计数器低字节寄存器(PCL06H), 间接寻址寄存器(MP001H,MP103H),累加器(ACC
),表格指针(
05H
寄存器(TBLH;08H),状态寄存器(STATUS;0AH),中断 控制寄存器(INTC0BH),看门狗选项设置寄存器(WDTS
09H),输入/输出寄存器(PA;12H,PB;14H,PC;16H, PF1CH),输入/输出控制寄存器(PAC13HPBC15H PCC;17H,PFC;1DH
来进一步扩展使用。读取这些被保留单元的值,都将返回 00H 的值。通用数据存储器的地址从 20H~FFH,作为数据和控制 信息使用。
所有的 RAM 都可以直接执行算术、逻辑、递增、递减和 移位等运算。除了一些少数指定的位之外,RAM 的每个位都 可以由
SET[m].i和CLR[m].i
地址可以通过间接寻址寄存器 MP001H)或 MP103H)来 存取。
TBLP;07H,TBHP:1FH
)。在
以前的剩余单元都保留为将
20H
指令来置位和复位。这些
00H,R1
),表格高字节
RAM
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
M P 0
M P 1
A C C
P C L
T B L P
T B L H
W D T S
S T A T U S
I N T C
T M R 0
T M R 0 C
T M R 1 H
T M R 1 L
T M R 1 C
P A C
P B C
P C C
P F C
T B H P
F 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
( 2 2 4 B y t e s )
数据存储器
数据存储器数据存储器
层堆栈,堆栈寄存器
P A
P B
P C
P F
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 "
Rev. 1.20 9 2005-06-09
HT48RA1/HT48CA1
间接寻址寄存器
间接寻址寄存器((((Indirect Addressing Register))))
间接寻址寄存器间接寻址寄存器
地址 00H 02H 作为间接寻址寄存器。它们都没有实际的物理结构。任何对[00H][02H]的读/写操 作,都会访问由 MP0[01H]MP1[03H]所指向的 RAM 单元。间接地读取 00H 02H 单元,将会返回 00H, 而间接地写入 00H 02H 单元,则不会产生任何操作。
间接寻址寄存器 MP0 MP1 都是 8 位寄存器。
累加器((((
累加器累加器
累加器(ACC)与算术逻辑单元(ALU)有关,同样也是对应至 RAM 的地址 05H,作为运算的立即 数据,存储器之间的数据传送必须经过 ACC
算术逻辑单元
算术逻辑单元((((ALU))))
算术逻辑单元算术逻辑单元
算术逻辑单元(
算术运算(ADD,ADC,SUB,SBC,DAA) 逻辑运算(AND,OR,XOR,CPL) 移位(RL,RR,RLC,RRC) 递增及递减(INC,DEC) 分支判断(SZ,SNZ,SIZ,SDZ 等)
ALU
状态寄存器
状态寄存器—STATUS
状态寄存器状态寄存器
状态寄存器( 暂停标志位(PDF),看门狗定时器溢出标志位(TO)组成。该寄存器不仅记录状态信息,而且还控制运 算顺序。
除了 TO PDF 以外,状态寄存器中的位都可用指令来改变,这种情况与其它寄存器一样。任何写到 状态寄存器的数据不会改变 TO PDF 标志位。但是与状态寄存器有关的操作会导致状态寄存器的改变。 系统上电,看门狗定时器溢出,执行
ZOVAC C 标志位反映了最近一次的运算状态。
进入中断程序或执行子程序调用时,状态寄存器内容不会自动压入堆栈。如果状态寄存器的内容是重 要的,而且子程序会改变状态寄存器的内容,那么程序员必须事先将其保存好,以免被破坏。
))))
ACC
符号
符号 位位位位 功功功功 能能能能
符号符号
PDF
)为执行八位算术及逻辑运算的电路,提供有下列的功能:
ALU
不仅可以储存数据运算的结果,还可以改变状态寄存器。
)由零标志位(Z),进位标志位(C),辅助进位标志位(AC),溢出标志位(OV),
0AH
指令,或清除看门狗定时器都能改变TO和
HALT
C 0
AC 1
Z 2
OV 3
TO 5
如果在加法运算中结果产生了进位,或在减法运算中结果不发生借位,那 么C被置位;反之,C被清除。它也可被一个带进位循环移位指令影响。 在加法运算中低四位产生了向高四位进位,或减法运算中低四位不发生 从高四位借位,AC被置位;反之,AC被清除。 算术运算或逻辑运算的结果为零则Z被置位;反之,Z被清除。 如果运算结果向最高位进位,但最高位并不产生进位输出,或那么 被置位;反之,OV被清除。 系统上电或执行了
4
被置位。 系统上电或执行了 CLR WDT 指令,或执行 HALT 指令,TO 被清除。
WDT 定时溢出,TO 被置位。
CLR WDT
指令,
PDF
被清除。执行
PDF。
OV
指令
HALT
PDF
Rev. 1.20 10 2005-06-09
6,7
未定义,读出为零
状态寄存器
状态寄存器
状态寄存器状态寄存器
中中中中 断断断断—INT
HT48RA1/HT48CA1
本单片机提供一个外部中断和内部定时/计数器中断。中断控制寄存器( 制位,用来设置中断允许/禁止及中断请求标志。
一旦有中断子程序被服务,所有其它的中断将被禁止(通过清除 EMI 位)。这种机制能防止中断嵌套。 这时如有其它中断请求发生,这个中断请求的标志会被记录下来。如果在一个中断服务程序中有另一个中 断需要服务的话,程序员可以设置 EMI 位及 INTC 所对应的位来允许中断嵌套服务。如果堆栈已满,该中 断请求将不会被响应。即使相关的中断被允许,也要到堆栈指针发生递减时才会响应。如果需要立即得到 中断服务,则必须避免让堆栈饱和。
所有的中断都具有唤醒功能。当一个中断被服务时,会产生一个控制传送:通过将程序计数器(PC) 压入堆栈,然后转移到中断服务程序的入口。只有程序计数器的内容能压入堆栈。如果寄存器和状态寄存 器的内容会被中断服务程序改变,从而破坏主程序的预定控制,那么程序员必须事先将这些数据保存起来。
外部中断是由 INT 脚上的下降沿触发的,相关的中断请求位(EIFINTC 的第 4 位)被置位。当中 断允许,堆栈也没有满,一个外部中断触发时,那么将会产生地址 04H 的子程序调用。中断请求标志(EIF) 和
的,中断的请求是由定时器溢出产生的。当中断允许,堆栈又未满,并且 T0F 已被置位,就会产生地址 08H 的子程序调用。该中断请求标志位(T0F)被复位并且 EMI 位也将被清除,以便禁止其他中断。
中断的请求是由定时器溢出产生的。当中断允许,堆栈又未满,并且 的子程序调用。该中断请求标志位(T1F)被复位并且 EMI 位也将被清除,以便禁止其他中断。
中断控制位都被置为 1(当堆栈是未满时)。若要从中断子程序返回时,只要执行 RET RETI 指令即可。 RETI 指令将会自动置位 EMI 来再次允许中断服务,而 RET 则不能自动置位 EMI
冲,该中断会被服务。如果同时发生中断服务请求,那么下列表中列出了中断服务优先等级。这种优先级 也可以通过 EMI 位的复位来屏蔽。
外部中断请求标志位(EIF),定时/计数器 0 允许位(ET0I),定时/计数器 1 允许位(ET1I),外部中断允 许位(EEI),和主中断控制允许位(EMI)组成。EMI、EEI、ET0I 和 ET1I 都是用来控制中断的允许/禁 止状态的。这些位防止正在进行的中断服务中的中断请求。一旦中断请求标志位被置位(T0F,T1F,EIF), 它们将在 INTC 寄存器中被保留下来,直到相关的中断被服务或由软件指令来清除。
予响应。基于上述情况,如果只剩下一个堆栈,若此时中断不能很好地被控制,而且在这个中断服务程中 又执行了 CALL 子程序调用,则会造成堆栈溢出,而破坏原先的控制序列。
位将也会被清除来禁止另外的中断发生。
EMI
内部定时/计数器 0 中断是通过置位定时/计数器 0 中断请求标志位(T0FINTC 的第 5 位)来初始化
内部定时/计数器 1 中断是通过置位定时/计数器中断请求标志位(T1FINTC 的第 6 位)来初始化的,
单片机在执行中断子程序期间,其他的中断响应会被暂停,直到执行 RETI 指令或是 EMI 位和相关的
如果中断在内部二个连续的 T2 脉冲上升沿间发生,而且中断响应被允许的话,那么在第二个 T2
定时/计数器 0 中断 定时/计数器 1 中断
中断控制寄存器(INTC)由定时/计数器0 中断请求标志位(T0F),定时/计数器 1 中断请求标志位(T1F),
建议不要在中断子程序中使用
位位位位 符号
0 EMI 1 EEI
INTC
(0BH)
2 ET0I 3 ET1I
4 EIF
5 T0F 6 T1F 7
中断源 优先级
中断源中断源
外部中断
“CALL”
符号
符号符号
— 未使用位,读出为零
指令来调用子程序,因为中断随时都可能发生,而且需要立刻给
总中断控制位(1=允许, 0=禁止) 外部中断控制位 定时/计数器0中断控制位 定时/计数器1中断控制位 外部中断请求标志位(1=有,0=无) 定时/计数器 0 中断请求位(1=有,0=无) 定时/计数器 1 中断请求位(1=有,0=无)
优先级 中断
优先级优先级
(1=
T1F
1 04H 2 08H 3 0CH
功功功功 能能能能
允许,
0=禁止)
允许,
(1=
允许,
(1=
INTC;0BH
已被置位,就会产生地址
中断
中断中断
禁止
0=
禁止
0=
)包含了中断控
0CH
) )
中断控制寄存器
中断控制寄存器————INTC ((((0BH))))
中断控制寄存器中断控制寄存器
Rev. 1.20 11 2005-06-09
HT48RA1/HT48CA1
振荡器
振荡器振荡器
HT48RA1/HT48CA1有2
种振荡电路。这2种振荡器都是针对
O S C 1
系统时钟而设计的,分别是外部 RC 振荡、外部晶体振荡。不管所 选的是哪一种振荡器,其信号都可以支持系统的时钟,可由掩膜选 项设置。进入 HALT 模式会停止系统振荡器,并忽视任何外部信号
O S C 2
C r y s t a l O s c i l l a t o r R C O s c i l l a t o r
f
/ 4
S Y S
N M O S O p e n D r a i n
以降低功耗。
如果使用外部 RC 型振荡器,在 OSC1 VSS 之间需要一个外 系统振荡器
部电阻,其阻值范围为
100kΩ~820k
Ω。在
端可获得系统频
OSC2
系统振荡器
系统振荡器系统振荡器
率四分频信号,用于同步外部逻辑电路。RC 振荡方式是一种低成本的方案,可是,振荡频率会随着 VDD、 温度和制造漂移而不同。因此,在用于需要非常精确振荡频率的计时操作场合,我们并不建议使用 RC 型 振荡器。
如果选用的是晶体振荡器,那么在 OSC1 OSC2 之间需要连接一个晶体,用来提供晶体振荡器所需 要的反馈和相移。另外,在 OSC1 OSC2 之间还可以用谐振器代替晶体振荡器,来产生系统时钟,但是 在
OSC1和OSC2
需要多连接两个电容器至地。
WDT 振荡器是 IC 内部 RC 型振荡器,不需要任何外部元件。即使在系统进入暂停模式,系统时钟被 停止,但这个 RC 振荡器仍会运作,其振荡周期大约为 90μs。在掩膜时,如欲节省电源,可在掩膜选项 中关闭 WDT 振荡器。
看门狗计时器
看门狗计时器(Watchdog Timer)
看门狗计时器看门狗计时器
WDT 的时钟源来自看门狗振荡器(WDT 振荡器)或是指令时钟(系统时钟 4 分频),由掩膜选项设 置。看门狗主要用来避免程序运行故障和程序跳入一死循环而导致不可预测的结果。看门狗可用掩膜选项 设置为打开或关闭,如果在关闭状态,所有的
指令都是没有作用的。
WDT
如果选择了内部 WDT 振荡器(RC 振荡周期一般为 90µs/3V)的话,这个频率会先除以 2568 级) 产生 23ms/3V 的溢出时间。这个溢出时间会因为温度,VDD,以及芯片参数的漂移而变化。如果使用 WDT 的预分频器,则可实现延长 WDT 溢出时间。设置 WS2WS1WS0 (WDTS 的第 2、1、0 位)会产生不同 的溢出时间。举例来说,如果 WS2WS1,WS0 的位都为 1,其分频级数最大为 1128,得到最长的 WDT 溢出周期
2.9s/3V
。如果
振荡器被禁止,那么
WDT
的时钟来源可为指令时钟,其运作与
WDT
器一样。但当在 HALT 状态时,WDT 会停止计数而失去保护功能。在这种情况下,只能由外部逻辑复位 来重新启动系统。WDTS 的高四位及其第 3 位保留给用户定义标志来使用,程序员可以利用这些标志来指 示某些特殊的状态。
S y s t e m C l o c k / 4
W D T P r e s c a l e r
7 - b i t C o u n t e r
8 - t o - 1 M U X
W S 0 ~ W S 2
W D T O S C
R O M
C o d e
O p t i o n
S e l e c t
8 - b i t C o u n t e r
O S C 1
O S C 2
WDT
振荡
看门狗定时器
看门狗定时器
看门狗定时器看门狗定时器
W D T T i m e - o u t
如果单片机工作在干扰很大的环境中,那么建议使用片内的 RC 振荡器(WDT OSC),因为 HALT 模 式会使系统时钟停止,看门狗也就失去了保护的功能。
在正常运作下,WDT 溢出会使系统复位并设置 TO 状态位。但在 HALT 模式下,溢出只产生一个热 复位,并只能使程序计数器 PC 和堆栈指针 SP 复位。要清除 WDT 的值(包括 WDT 预分频器)可以有三 种方法:外部复位(低电平输入到 RES 端),用清除看门狗指令和 HALT 指令三种。清除看门狗指令有“CLR WDT”和“CLR WDT1”及“CLR WDT2”二组指令。这两组指令中,只能选取其中一种。由掩膜选项决 定。如果选择“CLR WDT”(即 CLR WDT 次数为 1),那么只要执行 CLR WDT 指令就会清除 WDT。若选
CLR WDT1和CLR WDT2
的情况下(即
CLR WDT
次数为2),那么要两条指令交替使用才会清除
WDT
否则,WDT 会由于溢出而使系统复位。
Rev. 1.20 12 2005-06-09
WS2 WS1 WS0
HT48RA1/HT48CA1
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
WDTS 寄存器
暂停模式
暂停模式((((HALT))))
暂停模式暂停模式
暂停模式是由 HALT 指令来实现的,系统状态如下:
· 关闭系统振荡器,但 WDT 振荡器依然工作(如果 WDT 振荡器被选择)。
· RAM 及寄存器的内容保持不变。
·
· 所有的输入/输出口都保持其原先状态。
· 置位 PDF 标志位,清除 TO 标志位。
化,而 WDT 溢出能执行“热复位”。通过检测 TO PDF 标志,即可了解系统复位的原因。PDF 标志位 是由系统上电复位和执行 CLR WDT 指令被清除,而它的置位是由于执行了 HALT 指令。如 WDT 产生溢 出,使TO标志位置位,同时产生唤醒,使得程序计数的PC和堆栈指针复位。其他都保持原状态。
如果唤醒是来自于输入/输出口的信号变化,程序会继续执行下一条命令。如果唤醒是来自中断的话,则会 产生二种情况:如果相关的中断被禁止或中断是允许的,但堆栈已满,那么程序将继续执行下条指令,如 果中断允许并且堆栈未满,那么这个中断响应就发生了。当唤醒事件发生时,要花 1024tsys(系统时钟周 期)后,系统重新正常运行。这就是说,在唤醒后被插入了一个等待时间。如果唤醒是来自于中断响应, 那么实际的中断程序执行就被延迟了一个以上的周期。但是如果唤醒导致下一条指令执行,那么在一个等 待周期结束后指令就立即被执行。进入 HALT 模式前,如果中断请求标志位被置“1”,那么相关的中断唤 醒功能被禁止。
被清除,并重新计数(如果
WDT
外部复位、中断或 PA 口下降沿信号或 WDT 溢出均可使系统脱离暂停状态。外部复位能使系统初始
PA 口的唤醒和中断的方式看作为正常运行,PA 口的每一位都可以通过掩膜选项来设定为唤醒功能。
为了减小功耗,在进入 HALT 模式之前必须要小心处理输入/输出口的状态。
的时钟是来自
WDT
寄存器
寄存器寄存器
WDT
11 12
1:4
1:8
116
1:32 164
1128
振荡器)。
Rev. 1.20 13 2005-06-09
复位
RES
复位 ((((RESET))))
复位复位
有三种方法可以产生复位
· 在正常运行时由
·
HALT
期间由
——
RES
——
脚产生复位。
RES
脚产生复位。
· 正常运行时,WDT 溢出复位。
暂停模式中的看门狗定时器溢出与其它系统复位状况不同,因为看门狗定 时器溢出会执行热复位,热复位只复位程序计数器 PC 和堆栈指针 SP,而系统 其它部分都保持原有状态。在其它复位状态下,某些寄存器不会改变。在初始 复位时,大部分寄存器会复位成初始的状态。通过检测
PDF和TO
标志,即可
判断出各种不同的复位原因。
H A L T
W D T
HT48RA1/HT48CA1
V
D D
0 . 0 1mF *
1 0 0 k
W
R E S
1 0 k
W
0 . 1mF *
复位电路路路路
复位电复位电
注意:“*”为了避免噪 声干扰,连接 的线应尽量短
W a r m R e s e t
RES
引脚
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
R E S
S S T
t
S S T
O S C 1
1 0 - b i t R i p p l e
C o u n t e r
S y s t e m R e s e t
C o l d R e s e t
复位时序
复位时序 复位电路结构
复位时序复位时序
复位电路结构
复位电路结构复位电路结构
TO PDF
0 0
u u
0 1
1 u 1 1
注意:u 表示不变
电源上电复位 正常运作时由 由
RES
正常运作时发生看门狗定时器超时 由看门狗定时器唤醒暂停模式
复位条件
复位条件
复位条件复位条件
发生复位
唤醒暂停模式
为了保证系统振荡器起振并稳定运行,SST(系统启动定时器)当系统复位时(上电、WDT 定时器
溢出或是——RES引脚复位)或是 HALT 模式唤醒时,它会提供额外的 1024 个系统时钟周期的延迟。
系统复位时,SST 被加到复位延时中。任何来自 HALT 的唤醒都将产生 SST 延迟。
系统复位时各功能单元的状态如下所示:
程序计数器 中断
(PC)
000H
禁止 预分频器 清除 看门狗定时器 清除,复位后看门狗定时器开始计数 定时/计数器 关闭 输入/输出口 输入模式 堆栈指针 指向堆栈的顶端
Rev. 1.20 14 2005-06-09
WDTS
0000 0111
0000 0111
0000 0111
0000 0111
uuuu uuuu
TMR0C
00-0 1000
00-
0 1000
00-
0 1000
00-
0 1000
uu-u
uuuu
TMR1L
xxxx xxxx
xxxx xxxx
xxxx xxxx
xxxx xxxx
uuuu uuuu
TMR1C
00-0 1
--- 00-0 1
--- 00-0 1
--- 00-0 1
--- uu-u u
---
PA
1111
1111 1111
1111 1111
1111 1111
1111 uuuu uuuu
PAC
1111
1111 1111
1111 1111
1111 1111
1111 uuuu uuuu
PB
1111
1111 1111
1111 1111
1111 1111
1111 uuuu uuuu
PC
--11 1111 --11 1111 --11 1111 --11 1111 --
uu uuuu
特殊功能寄存状态概述表
寄存器 上电复位
寄存器寄存器
MP0 MP1 ACC PC TBLP TBHP TBLH
上电复位
上电复位上电复位
xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
0000H 0000H 0000H 0000H 0000H
xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
正常运行期间
正常运行期间 暂停模式
正常运行期间正常运行期间
WDT 溢出
溢出
溢出溢出
((((正常工作
正常工作))))
正常工作正常工作
——
端复位
端复位
RES
端复位端复位
((((正常工作
正常工作))))
正常工作正常工作
——
RES端复位
((((暂停模式
暂停模式))))
暂停模式暂停模式
HT48RA1/HT48CA1
暂停模式
暂停模式暂停模式
WDT 溢出
溢出
端复位
端复位端复位
((((暂停模式
溢出溢出
暂停模式))))*
暂停模式暂停模式
STATUS INTC TMR0
TMR1H
PBC
PCC PF PFC
注意: 1.*”表示“热复位。
2.“U
3.“X
--00 xxxx --lu uuuu --uu uuuu --01 uuuu --11 uuuu
-000 0000 -000 0000 -000 0000 -000 0000 -uuu uuuu
xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
1111 1111 1111 1111 1111 1111 1111 1111 uuuu uuuu
--11 1111 --11 1111 --11 1111 --11 1111 --uu uuuu
---- ---1 ---- ---1 ---- ---1 ---- ---1 ---- ---u
---- ---1 ---- ---1 ---- ---1 ---- ---1 ---- ---u
”表示不变化。 ”表示不确定。
Rev. 1.20 15 2005-06-09
HT48RA1/HT48CA1
111:f
INT=
fsys/256
或者f/256
( 1=
)
0
定时
定时/计数器
计数器
定时定时
计数器计数器
HT48RA1/HT48CA1
并且其时钟来源可以是外部信号输入、系统时钟。定时/计数器 1 则包含一个 16 位的可编程的向上计数的 计数器,且其时钟来源可来至外部信号输入、指令时钟/4
外部时钟输入,允许用户去计数外部事件,测量时间长度或脉冲宽度或产生一个精确的时基信号。 定时/计数器 0 可以产生 PFD 信号,时钟源来自外部或者内部时钟,PFD 频率= f 有两个寄存器与定时/计数器 0 相关联,即 TMR0[0DH])和 TMR0C([0EH])。当处于定时/计数器
计数模式时(
0
T0ON
都会改变预置寄存器。读 TMR0 则会获得定时/计数器 0 的内容。TMR0C 是定时/计数器控制寄存器,可以 定义工作模式、计数与否、边沿触发。
T0M0 T0M1 位定义工作模式。外部事件计数模式用来记录外部事件,它的时钟来自外部 TMR0 脚。定时器模式是一个常用功能,时钟源来自 f 上的高电平或低电平的宽度。计数是基于 f
在外部事件计数或定时器模式中,一旦定时/计数器开始计数,它将会从当前定时/计数器中的数值开 始向上计数到 0FFH。一旦产生溢出,计数器会从定时/计数器 0 预置寄存器重新装载,并置位中断请求状 态位(T0F INTC 的第 5 位)。
在脉冲宽度测量中,将 T0ON 和 T0E 置为“1”,如果 TMR0 接收到上升沿(或下降沿,如果 T0E 位被 清零),就开始计数,直到 TMR0S 返回到原来的电平,并复位 T0ON 位。测量的结果被保留在定时/计数 器0中,即使电平跳变再一次发生也不会改变。换句话说,一次只能测量一个脉宽。直到 位,这样再次收到跳变信号,测量会再次执行。要注意在这个操作模式中,定时/计数器 0 的启动计数不是 根据逻辑电平,而是依据信号的边沿跳变触发。一旦发生计数器溢出,计数器会从定时/计数器 0 的预置寄 存器重新装入,并引发出中断请求,这种情况与其另外两个模式一样。
要使得计数运行,只要将定时器启动位(T0ONTMR0C 的第 4 位)置 1。在脉宽测量模式中,T0ON 在测量周期结束后自动被清零。但在另外两个模式中,T0ON 只能由指令来复位。定时/计数器 0 的溢出是 唤醒的信号之一。不管任何模式,若写0到
在定时/计数器 0 为关闭的状态下,写数据到定时/计数器 0 的预置寄存器之中,同时也会将数据装入 定时/计数器 0 中。但若是定时/计数器 0 已经开始运行,写到定时/计数器 0 的数据只会被保留在定时/计数 器 0 的预置寄存器中,直到定时/计数器 0 发生计数溢出为止,再由预置寄存器加载新的值。
读取定时/计数器 0TMR0)时,计数会被停止,以避免发生错误;计数停止会导致计数错误,程序 员必须注意到这一点。
TMR0C的0~2
符号
符号 位位位位 功能
符号符号
T0PSC0 T0PSC1 T0PSC2
提供两个定时/计数器。定时/计数器0包含一个8位可编程的向上计数的计数器,
/[2×(256-N)]
INT
),写
会将初始值装入到定时/计数器0的预置寄存器中。每次写
TMR0
时钟。脉冲宽度测量模式能用来测量外部引脚(TMR0
INT
时钟。
INT
TMR0
T0ON
位即可禁止相应的中断响应。
ET0I
位被用于定义定时/计数器的内部时钟源的预分频级数。定义如表所示。
功能
功能功能
定义预分频器级数,
000fINT= fsys/2 或者 f 001f
0 1 2
010f 011f 100:fINT= fsys/32
fsys/4 或者 f
INT=
fsys/8 或者 f
INT=
fsys/16 或者 f
INT=
101:fINT= fsys/64 110fINT= fsys/128 或者 f
T0PSC2,T0PSC1,T0PSC0=
/2
RTC
/4
RTC
/8
RTC
/16
RTC
或者
f
/32
RTC
或者
f
/64
RTC
/128
RTC
动作,
再次被置
T0E 3
T0ON 4
5
定义定时/计数器 TMR 的触发方式 (0=上升沿作用,1=下降沿作用)
打开/关闭定时/计数器
打开,0=关闭 未用,读出为 定义工作模式(T0M0T0M1
T0M0 T0M1
6 7
01=外部事件计数模式(外部时钟) 10=定时模式(内部时钟)
脉冲宽度测量模式
11= 00 =未用
TMR0C(((0EH))))寄存器
Rev. 1.20 16 2005-06-09
寄存器
寄存器寄存器
HT48RA1/HT48CA1
( 1=
)
有三个寄存器与定时/计数器 1 相关联,即 TMR1H[0FH])和 TMR1L[10H]);TMR1C[11H])。 若写入 TMR1L 只能将数据写入低字节内部缓冲器(8 bit)中,但若写入的是 TMR1H 则可将数据和低字节 内部缓冲器的内容写入 TMR1H TMR1L 的加载寄存器之中。每一次对 TMR1H 的写操作都会改变定时/ 计数器 1 加载寄存器的内容。若读取 TMR1H 则将锁存 TMR1H 的内容并将 TMR1L 传送至低字节内部缓 冲器之中,以避免发生计时错误。然而,若读取 TMR1L,则只读回低字节内部缓冲器的内容。换言之, 定时/计数器1的低字节数据并不能直接读取。若欲读取该低字节的数据,必须先读取 时/计数器的低字节数据传送至内部低字节缓冲器之中。TMR1C 是定时/计数器 1 控制寄存器,它可定义: 工作模式、计数功能打开或关闭、计数的触发沿。
T1M0 T1M1 位定义工作模式。外部事件计数模式用来记录外部事件,它的时钟来自外部 TMR1 脚。定时器模式是一个常用功能,时钟源来自指令时钟。脉冲宽度测量模式能用来测量外部引脚(TMR1) 上的高电平或低电平的宽度。计数是基于指令时钟。
在外部事件计数或定时器模式中,一旦定时/计数器1开始计数,它将会从当前定时/计数器1中的数 值开始向上计数到 0FFFFH。一旦产生溢出,计数器会从定时/计数器 1 预置寄存器重新装载,并置位中断 请求状态位(T1F INTC 的第 6 位)。
在脉冲宽度测量中,将 T1ON T1E 置为“1”,如果 TMR1 接收到上升沿(或下降沿,如果 T1E 位被
清零),就开始计数,直到 TMR1 返回到原来的电平,并复位 T1ON 位。测量的结果被保留在定时/计数器
中,即使电平跳变再一次发生也不会改变。换句话说,一次只能测量一个脉宽。直到
1
这样再次收到跳变信号,测量会再次执行。要注意在这个操作模式中,定时/计数器1的启动计数不是根据 逻辑电平,而是依据信号的边沿跳变触发。一旦发生计数器溢出,计数器会从定时/计数器 1 的预置寄存器 重新装入,并引发出中断请求,这种情况与其另外两个模式一样。
要使得计数运行,只要将定时器启动位(T1ONTMR1C 的第 4 位)置 1。在脉宽测量模式中,T1ON 在测量周期结束后自动被清零。但在另外两个模式中,T1ON 只能由指令来复位。定时/计数器 1 的溢出是 唤醒的信号之一。不管任何模式,若写0到
在定时/计数器 1 为关闭的状态下,写数据到定时/计数器 1 的预置寄存器之中,同时也会将数据装入 定时/计数器 1 中。但若是定时/计数器 1 已经开始运行,写到定时/计数器 1 的数据只会被保留在定时/计数 器 1 的预置寄存器中,直到定时/计数器 1 发生计数溢出为止,再由预置寄存器加载新的值。读取定时/计 数器 1TMR1)时,计数会被停止,以避免发生错误;计数停止会导致计数错误,程序员必须注意到这 一点。
符号
符号
符号符号
位位位位
0~2 未定义,读出为“0”
位即可禁止相应的中断响应。
ET1I
功能
功能
功能功能
TMR1H
T1ON
,以便将定
再次被置位,
T1E 3
T1ON 4
T1M0 T1M1
Rev. 1.20 17 2005-06-09
5
6 7
定义定时/计数器 TMR 的触发方式 (0=上升沿作用,1=下降沿作用)
打开/关闭定时/计数器 未用,读出为 定义操作模式(T1M1,T1M0)
01=事件计数模式(外部时钟) 10=定时模式(内部时钟) 11=脉冲宽度测量模式 00 =未用
TMR1C(((11H))))寄存器
0
打开,0=关闭
寄存器
寄存器寄存器
f
S Y S
8 - s t a g e P r e s c a l e r
T 0 P S C 2 ~ T 0 P S C 0
( 1 / 2 ~ 1 / 2 5 6 )
8 - 1 M U X
T M R 0
HT48RA1/HT48CA1
f
I N T
T 0 M 1 T 0 M 0
T 0 E
T i m e r / E v e n t C o u n t e r 0
D a t a B u s
P r e l o a d R e g i s t e r
R e l o a d
T M R 1
T 1 M 1 T 1 M 0
T 1 O N
T 0 M 1 T 0 M 0
T 0 O N
T 1 M 1
f
S Y S
T 1 M 0
T 1 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
M e a s u r e m e n t M o d e C o n t r o l
/ 4
P u l s e W i d t h
定时
定时/计数器
计数器0
定时定时
计数器计数器
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
T i m e r / E v e n t C o u n t e r
( T M R 1 H / T M R 1 L )
定时
定时/计数器
计数器 1
定时定时
计数器计数器
1 6 - b i t
1 6 - b i t
8 - b i t
T i m e r / E v e n t C o u n t e r
( T M R 0 )
D a t a B u s
L o w B y t e
R e l o a d
O v e r f l o w t o I n t e r r u p t
2
¸
P F D
B u f f e r
O v e r f l o w t o I n t e r r u p t
Rev. 1.20 18 2005-06-09
输入
输入/输出口
输出口
输入输入
输出口输出口
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
( P B 0 o n l y )
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 ( P A o n l y )
I N T f o r P F 0 O n l y
P F D f o r P B 0 O n l y , C o n t r o l = P B 0 D a t a R e g i s t e r
E X T
P B 0
C o n t r o l B i t
Q
D
Q
C K
S
D a t a B i t
Q
D
Q
C K
S
M U X
输入
输入/输出口
输出口
输入输入
输出口输出口
P U
M U X
P F D E N
( P B 0 o n l y )
P A W a k e - u p O p t i o n
HT48RA1/HT48CA1
V
D D
P A 0 ~ P A 7 P B 0 / P F D P B 1 ~ P B 7 P C 0 ~ P C 5 P F 0
单片机具有 23 个双向输入输出口,标号从 PA PC 以及 PF,其分别对应的 RAM [12H][14H]
[16H][1CH]。所有的输入/输出口都能被作为输入或输出使用。就输入而言这些口不具有锁存功能,即,
输入数据必须在“MOV A,[m]”(m=12H,14H,16H 1CH) 指令的 T2 上升沿被准备好。对输出而言, 所有的数据被锁存并保持不变,直到输出锁存器重新被改写。
每个 I/0 口都有其自己的控制寄存器(PAC,PBC,PCC,PFC),用来控制输入/输出的设置。使用控 制寄存器,可对 CMOS 输出或带或不带上拉电阻的斯密特触发输入在软件下动态地进行改变。要设置为输 入功能,相应的控制寄存器必须写“1”。信号源的输入也取决于控制寄存器。如果控制寄存器的某位值为 “1”那么输入信号是读取自这个引脚(PAD)的状态,但是如果控制寄存器的某位值为“0”,那么锁存 器的内容将会被送到内部总线。后者,会在“读改写”指令中发生。
对于输出功能,只能设置为 CMOS 输出。这些控制寄存器是对应于内存的 13H15H17H 和 1DH 地址。
芯片复位后,这些输入/输出口都会是高电平(掩膜选择上拉电阻)或浮空状态(掩膜选择无上拉电阻)。 每一个输入/输出锁存位都能被 SET [m].i CLR [m].i 指令置位或清零,(m=12H14H16H 1CH。)
某些指令会首先输入数据然后进行输出操作。例如,SET [m].i ,CLR [m].i,CPL [m]和 CPLA [m]指 令,读取输入口的状态到 CPU,执行这个操作(位操作),然后将数据写回锁存器或累加器。
PA 的每一个口都具有唤醒系统的能力。PC 口的高 2 位和 PF 口的高 7 位在物理上是不存在的;读这 些位将返回“0”,而写这些位结果为无操作。请看应用注释。
PB0 PFD 管脚复用。如果选择为 PFD 输出,PB0 在输出模式时的输出信号将是 PFD 信号。在输入
模式始终保持它的原来的功能。PF0 和 PC0 分别与——INT 和 TMR0 管脚共用引脚。——INT 信号直接从 PF0 输入。
PFD 信号(输出模式)仅仅由 PB0 数据寄存器控制。
PB0/PFD 的真值表格如下:
PBC(15H) Bit0 I O O O PB0/PFD 选项 × PB0(14H) Bit0
PB0 管脚状态
注释: I:输入;O:输出;D :数据;
PB0 PFD PFD
D 0 1
×
I D 0 PFD
Rev. 1.20 19 2005-06-09
低电压复位
低电压复位 ((((LVR))))
低电压复位低电压复位
为了监控器件的工作电压,单片机提供低电压复位电路。如果器件的工作电压在
0.9VV
之间,例如电池电压的变化,那么 LVR 会自动使器件产生内部复位
LVR
LVR 具有下列功能说明:
· 低电压0.9 伏~V
伏)的状态必须持续 1ms 以上。如果低电压的状态没持
LVR
1ms 以上,那么 LVR 会忽视它而不去执行复位功能。
HT48RA1/HT48CA1
V
D D
5 . 5 V
V
1 . 8 V
L V R
· LVR 通过与——RES信号的“或”的功能来执行系统复位。
VDD与 V
V
D D
5 . 5 V
V
L V R
0 . 9 V
0 V
R e s e t S i g n a l
之间的关系如下所示:
LVR
R e s e t
N o r m a l O p e r a t i o n R e s e t
* 1 * 2
低电压复位
低电压复位
低电压复位低电压复位
L V R D e t e c t V o l t a g e
注意:
*1 要保证系统振荡器起振并稳定运行,在系统进入正常运行以前,SST 提供额 外的 1024 个系统时钟周期的延迟。
*2 因为低电压状态必须保持 1ms 以上,因此进入复位模式就要有 1ms 的延迟。
0 . 9 V
Rev. 1.20 20 2005-06-09
HT48RA1/HT48CA1
掩膜选项
掩膜选项
掩膜选项掩膜选项
下表示出了这种单片机的各种类型的掩膜选项。所有的掩膜选项必须正确定义。
选选选选 项项项项
PA0~PA7 PC PA PF 端口上拉电阻:有/没有 PBPB0~PB3)(PB4~PB7)上拉电阻:有/没有,按半字节单位选择 PB0 或者 PFD CLR WDT 指令 系统振荡器:外部 RC 振荡/外部晶体振荡 WDT :打开或关闭 WDT 时钟来源:WDTOSC 或者 Fsys/4 LVR:打开/关闭 LVR 电压:2.0V/3.0V
唤醒选项:有/没有 端口上拉电阻:有/没有 端口上拉电阻:有/没有,按字节单位选择
Rev. 1.20 21 2005-06-09
应用电路
应用电路
应用电路应用电路
RC
1 0 0 k
0 . 1mF
0 . 1mF *
振荡用于多输入
振荡用于多输入/输出口应用
振荡用于多输入振荡用于多输入
V
D D
0 . 0 1mF *
W
1 0 k
W
R
O S C
N M O S
o p e n d r a i n
V
1 0 0 k
W
1
W
1 0 k
W
0 . 1mF *
O S C 1
V S S
= 3 V
D D
V D D
R E S
O S C 2
4 7mF
R e c e i v e r
E E P R O M
输出口应用
输出口应用输出口应用
P A 0 ~ P A 7
P B 0 / P F D
P B 1 ~ P B 7
P C 0 / T M R 0
P C 1 ~ P C 4
P C 5 / T M R 1
P F 0 / I N T
0 . 0 1
m
F *
+
C
C r y s t a l
( s e e N o t e )
C
1 2 0
W
晶振或者谐振器用于多输入
晶振或者谐振器用于多输入/输出口应用
晶振或者谐振器用于多输入晶振或者谐振器用于多输入
1 0 0 k
W
0 . 1mF
0 . 1mF *
V D D
R E S
O S C 1
O S C 2
V S S
P B 0 / P F D
P F 0 / I N T ( L e a r n i n g I n p u t )
P C 2
P C 3
P C 4
P C 5 / T M R 1
H T 4 8 R A 1 / H T 4 8 C A 1
V
D D
1 0 k
P C 0 / T M R 0
W
P A 0
P A 1
P A 2
P A 3
P A 4
P A 5
P A 6
P A 7
P B 2
P B 3
P B 4
P B 5
P B 6
P B 7
P C 1
0 . 0 1mF *
C
C r y s t a l
( S e e N o t e )
C
HT48RA1/HT48CA1
V D D
R E S
O S C 1
O S C 2
V S S
H T 4 8 R A 1 / H T 4 8 C A 1H T 4 8 R A 1 / H T 4 8 C A 1
输出口应用
输出口应用输出口应用
P A 0 ~ P A 7
P B 0 / P F D
P B 1 ~ P B 7
P C 0 / T M R 0
P C 1 ~ P C 4
P C 5 / T M R 1
P F 0 / I N T
注意:电阻和电容值选取的原则是使 VDD 保持稳定并在
“*”为了避免噪声干扰,连接
引脚的线请尽可能地短
RES
下表所示为根据不同的晶振值选择 C (仅供参考)
晶体振荡或
晶体振荡或谐振器
晶体振荡或晶体振荡或
谐振器
谐振器谐振器
4MHz 晶振 4MHz 谐振器
3.58MHz 晶振
3.58MHz 谐振器 2MHz 晶振和谐振器
晶振
1MHz 480KHz 455KHz
谐振器 谐振器
429KHz 谐振器
置为高以前把工作电压保持在允许的范围内。
RES
C
0pF
10pF
0pF 25pF 25pF 35pF
300pF 300pF 300pF
Rev. 1.20 22 2005-06-09
HT48RA1/HT48CA1
指令集摘要
指令集摘要
指令集摘要指令集摘要
助记符 说明
助记符助记符
算术运算
算术运算
算术运算算术运算
ADD A,[m] ADDM A,[m] ADD A,x ADC A,[m] ADCM A,[m] SUB SUB
A,x A,[m]
SUBM A,[m] SBC A,[m] SBCM A,[m] DAA [m]
ACC 与数据存储器相加,结果放入 ACC ACC 与数据存储器相加,结果放入数据存储器 ACC 与立即数相加,结果放入 ACC ACC 与数据存储器、进位标志相加,结果放入 ACC
与数据存储器、进位标志相加,结果放入数据存储器
ACC ACC 与立即数相减,结果放入 ACC ACC 与数据存储器相减,结果放入 ACC ACC 与数据存储器相减,结果放入数据存储器 ACC 与数据存储器、进位标志相减,结果放入 ACC ACC 与数据存储器、进位标志相减,结果放入数据存储器
将加法运算中放入
ACC
入数据存储器
逻辑运算
逻辑运算
逻辑运算逻辑运算
AND A,[m] OR XOR A,[m] ANDM A,[m] ORM A,[m] XORM A,[m] AND A,x OR 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
A,[m]
A,x
ACC 与数据存储器做“与”运算,结果放入 ACC
与数据存储器做“或”运算,结果放入
ACC ACC 与数据存储器做“异或”运算,结果放入 ACC ACC 与数据存储器做“与”运算,结果放入数据存储器 ACC 与数据存储器做“或”运算,结果放入数据存储器 ACC 与数据存储器做“异或”运算,结果放入数据存储器 ACC 与立即数做“与”运算,结果放入 ACC
与立即数做“或”运算,结果放入
ACC ACC 与立即数做“异或”运算,结果放入 ACC
对数据存储器取反,结果放入数据存储器 对数据存储器取反,结果放入 ACC
递增数据存储器,结果放入 ACC 递增数据存储器,结果放入数据存储器 递减数据存储器,结果放入 ACC 递减数据存储器,结果放入数据存储器
数据存储器右移一位,结果放入 ACC 数据存储器右移一位,结果放入数据存储器 带进位将数据存储器右移一位,结果放入 ACC 带进位将数据存储器右移一位,结果放入数据存储器 数据存储器左移一位,结果放入 数据存储器左移一位,结果放入数据存储器 带进位将数据存储器左移一位,结果放入 ACC 带进位将数据存储器左移一位,结果放入数据存储器
将数据存储器送至
ACC
ACC 送至数据存储器 将立即数送至 ACC
清除数据存储器的位 置位数据存储器的位
Rev. 1.20 23 2005-06-09
说明 指令周期
说明说明
的值调整为十进制数,并将结果放
ACC
ACC
ACC
指令周期 影响标志位
指令周期指令周期
影响标志位
影响标志位影响标志位
1 Z,C,AC,OV
(1)
1
Z,C,AC,OV 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)
1
Z,C,AC,OV 1 Z,C,AC,OV
(1)
1
Z,C,AC,OV
(1)
1
C
1 Z 1 Z 1 Z
(1)
1
Z
(1)
1
Z
(1)
1
Z 1 Z 1 Z 1 Z
(1)
1
Z 1 Z
1 Z
(1)
1
Z 1 Z
(1)
1
Z
1
(1)
1
无 无
1 C
(1)
1
C 1
(1)
1
无 无
1 C
(1)
1
C
1
(1)
1
1
(1)
1
(1)
1
无 无 无
无 无
HT48RA1/HT48CA1
助记符 说明
助记符助记符 转移
转移
转移转移
JMP
addr SZ [m] SZA [m] SZ [m].i SNZ [m].i SIZ [m] SDZ [m] SIZA [m]
SDZA [m]
CALL addr RET RET
A,x RETI
查表
查表
查表查表
TABRDC [m] TABRDL [m]
其它指令
其它指令
其它指令其它指令
NOP CLR [m] SET [m] CLR CLR
WDT
WDT1 CLR WDT2 SWAP [m] SWAPA [m] HALT
说明 指令周期
说明说明
无条件跳转 如果数据存储器为零,则跳过下一条指令 数据存储器送至 ACC,如果内容为零,则跳过下一条指令 如果数据存储器的第 i 位为零,则跳过下一条指令 如果数据存储器的第 i 位不为零,则跳过下一条指令 递增数据存储器,如果结果为零,则跳过下一条指令 递减数据存储器,如果结果为零,则跳过下一条指令 递增数据存储器,将结果放入
,如果结果为零,则跳
ACC
过下一条指令 递减数据存储器,将结果放入 ACC,如果结果为零,则跳 过下一条指令 子程序调用 从子程序返回 从子程序返回,并将立即数放入 ACC 从中断返回
读取当前页的 ROM 内容,并送至数据存储器和 TBLH 读取最后页的
内容,并送至数据存储器和
ROM
TBLH
空指令 清除数据存储器 置位数据存储器 清除看门狗定时器 预清除看门狗定时器 预清除看门狗定时器 交换数据存储器的高低字节,结果放入数据存储器 交换数据存储器的高低字节,结果放入 ACC 进入暂停省电模式
指令周期 影响标志位
指令周期指令周期
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 1 TO 1 TO
(1)
1
1 1 TO,PDF
影响标志位
影响标志位影响标志位
(4)
(4)
无 无 无 无 无 无 无
无 无 无 无
无 无
无 无 无
,PDF ,PDF
无 无
(4)
(4)
注: x:立即数
m:数据存储器地址 A:累加器 i:第 0~7 addr:程序存储器地址
√:影响标志位 —:不影响标志位
(1)
:如果数据是加载到
(2)
:如果满足跳跃条件,则指令执行周期会被延长一个指令周期(四个系统时钟);否则指令执行周期不会被延长。
(3):(1)和(2)
(4)
:如果执行 CLW WDT1 或 CLR WDT2 指令后,看门狗定时器被清除,则会影响 TO PDF 标志位;否则不会
影响 TO PDF 标志位。
Rev. 1.20 24 2005-06-09
寄存器,则指令执行周期会被延长一个指令周期(四个系统时钟)。
PCL
HT48RA1/HT48CA1
ADC A, [m] 累加器与数据存储器、进位标志相加,结果放入累加器 说明: 本指令把累加器、数据存储器值以及进位标志相加,结果存放到累加器。 运算过程: 影响标志位
ADCM A, [m]
说明: 本指令把累加器、数据存储器值以及进位标志相加,结果存放到存储器。 运算过程: [m]ACC+[m]+C 影响标志位
ADD A, [m] 累加器与数据存储器相加,结果放入累加器 说明: 本指令把累加器、数据存储器值相加,结果存放到累加器。 运算过程: ACCACC+[m] 影响标志位
ADD A, x 累加器与立即数相加,结果放入累加器 说明: 运算过程: ACCACC+x 影响标志位
ADDM A, [m] 累加器与数据存储器相加,结果放入数据存储器 说明: 本指令把累加器、数据存储器值相加,结果存放到数据存储器。 运算过程: [m]ACC+[m] 影响标志位
AND A, [m] 累加器与数据存储器做“与”运算,结果放入累加器 说明: 本指令把累加器值、数据存储器值做逻辑与,结果存放到累加器。 运算过程: 影响标志位
ACCACC+[m]+C
累加器与数据存储器、进位标志相加,结果放入数据存储器
ACCACC “AND” [m]
本指令把累加器值和立即数相加,结果存放到累加器。
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
Rev. 1.20 25 2005-06-09
HT48RA1/HT48CA1
AND A, x 累加器与立即数做“与”运算,结果放入累加器 说明: 本指令把累加器值、立即数做逻辑与,结果存放到累加器。 运算过程: 影响标志位
ANDM A, [m]
说明: 本指令把累加器值、数据存储器值做逻辑与,结果存放到数据存储器。 运算过程: [m]ACC “AND” [m] 影响标志位
CALL addr 子程序调用 说明: 本指令直接调用地址所在处的子程序,此时程序计数器加一,将此程序计数器值存到堆
运算过程:
PC addr 影响标志位
CLR [m] 清除数据存储器 说明: 本指令将数据存储器内的数值清零。 运算过程: [m] 00H 影响标志位
CLR [m] . i 将数据存储器的第 i 位清“0 说明: 本指令将数据存储器内第 i 位值清零。 运算过程: 影响标志位
CLR WDT
说明: 本指令清除 WDT 计数器(从0 开始重新计数),暂停标志位(PDF)和看门狗溢出标志位(TO)
运算过程: WDT 00H
PDF&TO 0
影响标志位
ACCACC “AND” x
TO PDF OV Z AC C
累加器与数据存储器做“与”运算,结果放入数据存储器
TO PDF OV Z AC C
栈寄存器中,再将子程序所在处的地址存放到程序计数器中。
StackPC+1
TO PDF OV Z AC C
TO PDF OV Z AC C
[m].i 0
TO PDF OV Z AC C
清除看门狗定时器
也被清零。
TO PDF OV Z AC C
0 0
Rev. 1.20 26 2005-06-09
HT48RA1/HT48CA1
CLR WDT1 预清除看门狗定时器 说明: 必须搭配 CLR WDT2 一起使用,才可清除 WDT 计时器(从 0 开始重新计数)。当程序只
执行过该指令,没有执行 位(TO)清零,PDF TO 保留原状态不变。
运算过程: WDT 00H*
PDF&TO 0* 影响标志位
TO PDF OV Z AC C
0* 0*
CLR WDT2 预清除看门狗定时器 说明: 必须搭配 CLR WDT1 一起使用,才可清除 WDT 计时器(从 0 开始重新计数)。当程序只
执行过该指令,没有执行 位(TO)清零,PDF TO 保留原状态不变。
运算过程: WDT 00H*
PDF&TO 0* 影响标志位
TO PDF OV Z AC C
0* 0*
CPL [m] 对数据存储器取反,结果放入数据存储器 说明: 本指令是将数据存储器内保存的数值取反。 运算过程: [m] [m] 影响标志位
TO PDF OV Z AC C
CPLA [m]
说明: 本指令是将数据存储器内保存的值取反后,结果存放在累加器中。 运算过程: 影响标志位
ACC [m]
对数据存储器取反,结果放入累加器
TO PDF OV Z AC C
CLR WDT2
CLR WDT1
时,系统只会不会将暂停标志位
时,系统只会不会将暂停标志位
(PDF)
(PDF)
和计数溢出
和计数溢出
Rev. 1.20 27 2005-06-09
HT48RA1/HT48CA1
DAA [m] 将加法运算后放入累加器的值调整为十进制数,并将结果放入数据存储器 说明 本指令将累加器高低四位分别调整为 BCD 码。如果低四位的值大于“9”或 AC=1,那
BCD 调整就执行对原值加“6”,并且内部进位标志 AC1= AC ,即 AC 求反;否则原 值保持不变。如果高四位的值大于“9”或 C=1,那么 BCD 调整就执行对原值加“6” 再加 AC1,并把 C 置位;否则 BCD 调整就执行对原值加 AC1C 的值保持不变。结果 存放到数据存储器中,只有进位标志位(C)受影响。
操作 如果 ACC.3~ACC.0 > 9 AC=1
那么 [m].3~[m].0 (ACC.3~ACC.0 )+6AC1= 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+ AC1C=1
影响标志位
DEC [m]
说明: 本指令将数据存储器内的数值减一再放回数据存储器。 运算过程: [m] [m]-1 影响标志位
DECA [m] 数据存储器的内容减 1,结果放入累加器 说明: 本指令将存储器内的数值减一,再放到累加器。 运算过程: ACC [m]-1 影响标志位
HALT 进入暂停模式 说明:
运算过程: PC PC+1
PDF 1
TO 0
影响标志位
否则
[m].7~[m].4 (ACC.7~ACC.4 )+ AC1,C=C
TO PDF OV Z AC C
数据存储器的内容减1,结果放入数据存储器
TO PDF OV Z AC C
TO PDF OV Z AC C
本指令终止程序执行并关掉系统时钟,
器清“0”,暂停标志位(PDF)被设为 1 WDT 计数溢出位(TO)被清为 0
TO PDF OV Z AC C
0 1
和寄存器内的数值保持原状态,
RAM
WDT
计数
Rev. 1.20 28 2005-06-09
INC [m] 数据存储器的内容加 1,结果放入数据存储器 说明: 本指令将数据存储器内的数值加一,结果放回数据存储器。 运算过程: 影响标志位
INCA [m]
说明: 本指令是将存储器内的数值加一,结果放到累加器。 运算过程: ACC [m]+1 影响标志位
JMP addr 无条件跳转 说明: 本指令是将要跳到的目的地直接放到程序计数器内。 运算过程: PC addr 影响标志位
MOV A, [m] 将数据存储器送至累加器 说明: 运算过程: ACC [m] 影响标志位
MOV A, x 将立即数送至累加器 说明: 本指令是将立即数送到累加器内。 运算过程: ACC x 影响标志位
MOV [m], A 将累加器送至数据存储器 说明: 本指令是将累加器值送到数据存储器内。 运算过程: 影响标志位
[m] [m]+1
数据存储器的内容加1,结果放入数据存储器
[m] ACC
本指令是将数据存储器内的数值送到累加器内。
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
HT48RA1/HT48CA1
Rev. 1.20 29 2005-06-09
HT48RA1/HT48CA1
NOP 空指令 说明: 本指令不作任何运算,而只将程序计数器加一。 运算过程: 影响标志位
OR A, [m]
说明: 本指令是把累加器、数据存储器值做逻辑或,结果放到累加器。 运算过程: ACCACC “OR” [m] 影响标志位
OR A, x 累加器与立即数做“或”运算,结果放入累加器 说明: 本指令是把累加器值、立即数做逻辑或,结果放到累加器。 运算过程: ACCACC “OR” x 影响标志位
ORM A, [m] 累加器与数据存储器做“或”运算,结果放入数据存储器 说明: 运算过程: [m]ACC “OR” [m] 影响标志位
RET 从子程序返回 说明: 本指令是将堆栈寄存器中的程序计数器值送回程序计数器。 运算过程: PC Stack 影响标志位
RET A, x 从子程序返回,并将立即数放入累加器 说明: 本指令是将堆栈寄存器中的程序计数器值送回程序计数器,并将立即数送回累加器。 运算过程:
ACC x 影响标志位
PC PC+1
累加器与数据存储器做“或”运算,结果放入累加器
PC Stack
本指令是把累加器值、存储器值做逻辑或,结果放到数据存储器。
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
Rev. 1.20 30 2005-06-09
HT48RA1/HT48CA1
RETI 从中断返回 说明: 本指令是将堆栈寄存器中的程序计数器值送回程序计数器,与 RET 不同的是它使用在
中断程序结束返回时,它还会将中断控制寄存器 许中断服务。
运算过程: PC Stack
EMI 1 影响标志位
TO PDF OV Z AC C
RL [m] 数据存储器左移一位,结果放入数据存储器 说明: 本指令是将数据存储器内的数值左移一位,第 7 位移到第 0 位,结果送回数据存储器。 运算过程: 影响标志位
RLA [m]
说明: 本指令是将存储器内的数值左移一位,第 7 位移到第 0 位,结果送到累加器,而数据存
运算过程: ACC.0 [m].7, ACC.(i+1) [m].i; (i=0~6) 影响标志位
RLC [m] 带进位将数据存储器左移一位,结果放入数据存储器 说明: 本指令是将存储器内的数值与进位标志左移一位,第 7 位取代进位标志,进位标志移到
运算过程: [m].(i+1) [m].i; (i=0~6)
[m].0 C
C [m].7 影响标志位
RLCA [m] 带进位将数据存储器左移一位,结果放入累加器 说明: 本指令是将存储器内的数值与进位标志左移一位,第七位取代进位标志,进位标志移到
运算过程: ACC.(i+1) [m].i; (i=0~6)
ACC.0 C
C [m].7 影响标志位
[m].0 [m].7, [m].(i+1) [m].i; (i=0~6)
TO PDF OV Z AC C
数据存储器左移一位,结果放入累加器
储器内的数值不变。
TO PDF OV Z AC C
第0位,结果送回数据存储器。
TO PDF OV Z AC C
第0位,结果送回累加器。
TO PDF OV Z AC C
INTC的0位(EMI)
中断允许位置1,允
Rev. 1.20 31 2005-06-09
HT48RA1/HT48CA1
RR [m] 数据存储器右移一位,结果放入数据存储器 说明: 本指令是将存储器内的数值循环右移,第 0 位移到第 7 位,结果送回数据存储器。 运算过程: 影响标志位
RRA [m]
说明: 本指令是将数据存储器内的数值循环右移,第 0 位移到第 7 位,结果送回累加器,而数
运算过程: ACC.7 [m].0, ACC.i [m].(i+1); (i=0~6) 影响标志位
RRC [m] 带进位将数据存储器右移一位,结果放入数据存储器 说明: 本指令是将存储器内的数值加进位标志循环右移,第 0 位取代进位标志,进位标志移到
运算过程: [m].i [m].(i+1); (i=0~6)
[m]. 7 C
C [m].0 影响标志位
RRCA [m] 带进位将数据存储器右移一位,结果放入累加器 说明: 本指令是将数据存储器内的数值加进位标志循环右移,第 0 位取代进位标志,进位标志
运算过程: ACC.i [m].(i+1); (i=0~6)
ACC.7 C
C [m].0 影响标志位
SBC A,[m] 累加器与数据存储器、进位标志相减,结果放入累加器 说明: 本指令是把累加器值减去数据存储器值以及进位标志的取反,结果放到累加器。 运算过程: ACCACC+[m]+ C 影响标志位
[m].7 [m].0, [m].i [m].(i+1); (i=0~6)
TO PDF OV Z AC C
数据存储器右移一位,结果放入累加器
据存储器内的数值不变。
TO PDF OV Z AC C
第7位,结果送回存储器。
TO PDF OV Z AC C
移到第7位,结果送回累加器,数据存储器内的数值不变。
TO PDF OV Z AC C
TO PDF OV Z AC C
Rev. 1.20 32 2005-06-09
HT48RA1/HT48CA1
SBCM A,[m] 累加器与数据存储器、进位标志相减,结果放入数据存储器 说明: 本指令是把累加器值减去数据存储器值以及进位标志取反,结果放到数据存储器。 运算过程: [m]ACC+[m]+C 影响标志位
TO PDF OV Z AC C
SDZ [m]
说明: 本指令是把数据存储器内的数值减 1,判断是否为 0,若为 0 则跳过下一条指令,即如
运算过程: 如果[m]-1=0,跳过下一条指令执行再下一条。 影响标志位
SDZA [m] 数据存储器减 1,将结果放入累加器,如果结果为“0”,则跳过下一条指令 说明:
运算过程: 如果[m]-1=0,跳过下一条指令执行再下一条。
ACC ([m]-1) 影响标志位
SET [m]
说明: 本指令是把存储器内的数值每个位置为 1。 运算过程: [m] FFH 影响标志位
SET [m]. i 将数据存储器的第 i 位置“1 说明: 本指令是把存储器内的数值的第 i 位置为 1。 运算过程: [m].i 1 影响标志位
数据存储器减1,如果结果为“0”,则跳过下一条指令
果结果为零,放弃在目前指令执行期间所取得的下一条指令,并插入一个空周期用以取 得正确的指令(二个指令周期)。否则执行下一条指令(一个指令周期)。
TO PDF OV Z AC C
本指令是把数据存储器内的数值减1,判断是否为0,为0则跳过下一行指令并将减完 后数据存储器内的数值送到累加器,而数据存储器内的值不变,即若结果为 0,放弃在目 前指令执行期间所取得的下一条指令,并插入一个空周期用以取得正确的指令(二个指令 周期)。否则执行下一条指令(一个指令周期)。
TO PDF OV Z AC C
置位数据存储器
TO PDF OV Z AC C
TO PDF OV Z AC C
Rev. 1.20 33 2005-06-09
HT48RA1/HT48CA1
SIZ [m] 数据存储器加 1,如果结果为“0”,则跳过下一条指令 说明: 本指令是把数据存储器内的数值加 1,判断是否为 0。若为 0,跳过下一条指令,即放弃
在目前指令执行期间所取得的下一条指令,并插入一个空周期用以取得正确的指令(二个 指令周期)。否则执行下一条指令(一个指令周期)。
运算过程: 如果 ([m]+1=0),跳过下一行指令;[m] [m]+1 影响标志位
TO PDF OV Z AC C
SIZA 数据存储器加 1,将结果放入累加器,如果结果为“0”,则跳过下一条指令 说明: 本指令是把数据存储器内的数值加 1,判断是否为 0,若为 0 跳过下一条指令,即放弃
在目前指令执行期间所取得的下一条指令,并插入一个空周期用以取得正确的指令(二
个指令周期),并将加完后存储器内的数值送到累加器,而数据存储器的值保持不变。
否则执行下一条指令(一个指令周期)。
运算过程: 如果[m]+1=0,跳过下一行指令;ACC ([m]+1) 影响标志位
TO PDF OV Z AC C
SNZ [m]. i 如果数据存储器的第 i 位不为“0”,则跳过下一条指令 说明: 本指令是判断数据存储器内的数值的第 i 位,若不为 0,则程序计数器再加 1,跳过下一
行指令,放弃在目前指令执行期间所取得的下一条指令,并插入一个空周期用以取得正 确的指令(二个指令周期)。否则执行下一条指令(一个指令周期)。
运算过程: 如果 [m].i0,跳过下一行指令。 影响标志位
TO PDF OV Z AC C
SUB A, [m] 累加器与数据存储器相减,结果放入累加器 说明: 本指令是把累加器值、数据存储器值相减,结果放到累加器。 运算过程: ACCACC+[m]+1 影响标志位
TO PDF OV Z AC C
SUB A, x 累加器与立即数相减,结果放入累加器 说明: 本指令是把累加器值、立即数相减,结果放到累加器。 运算过程: ACCACC+x+1 影响标志位
TO PDF OV Z AC C
Rev. 1.20 34 2005-06-09
HT48RA1/HT48CA1
SUBM A, [m] 累加器与数据存储器相减,结果放入数据存储器 说明: 本指令是把累加器值、存储器值相减,结果放到存储器。 运算过程: [m]ACC+[m]+1 影响标志位
TO PDF OV Z AC C
SWAP [m]
说明: 本指令是将数据存储器的低四位和高四位互换,再将结果送回数据存储器。 运算过程: [m].7~[m].4↔[m].3~[m].0 影响标志位
SWAPA [m] 交换数据存储器的高低字节,结果放入累加器 说明: 本指令是将数据存储器的低四位和高四位互换,再将结果送回累加器。 运算过程: ACC.3~ACC.0 [m].7~[m].4
影响标志位
SZ [m]
说明: 本指令是判断数据存储器内的数值是否为 0,为 0 则跳过下一行指令,即放弃在目前指
运算过程: 如果 [m] = 0, 跳过下一行指令。 影响标志位
SZA [m] 数据存储器送至累加器,如果内容为“0”,则跳过下一条指令 说明:
运算过程: 如果[m] = 0,跳过下一行指令,并 ACC [m]。 影响标志位
交换数据存储器的高低字节,结果放入数据存储器
TO PDF OV Z AC C
ACC.7~ACC.4 [m].3~[m].0
TO PDF OV Z AC C
如果数据存储器为“0”,则跳过下一条指令
令执行期间所取得的下一条指令,并插入一个空周期用以得正确的指令(二个指令周期)。 否则执行下一条指令(一个指令周期)。
TO PDF OV Z AC C
本指令是判断存储器内的数值是否为0,若为0则跳过下一行指令,即放弃在目前指令 执行期间所取得的下一条指令,并插入一个空周期用以得正确的指令(二个指令周期)。 并把存储器内值送到累加器,而存储器的值保持不变。否则执行下一条指令(一个指令周 期)。
TO PDF OV Z AC C
Rev. 1.20 35 2005-06-09
HT48RA1/HT48CA1
SZ [m]. i 如果数据存储器的第 i 位为“0”,则跳过下一条指令 说明: 本指令是判断存储器内第 i 位值是否为 0,若为 0 则跳过下一行指令,即放弃在目前指
令执行期间所取得的下一条指令,并插入一个空周期用以得正确的指令(二个指令周期)。 否则执行下一条指令(一个指令周期)。
运算过程: 如果 [m].i = 0,跳过下一行指令。 影响标志位
TO PDF OV Z AC C
TABRDC [m] 读取 ROM 当前页的内容,并送至数据存储器和 TBLH 说明:
运算过程: [m] 程序存储器低四位 TBLH程序存储器高四位 影响标志位
TABRDL [m]
说明: 本指令是将 TABLE 指针指向程序寄存器最后页,将低位送到存储器,高位直接送到
运算过程: [m] 程序存储器低四位 TBLH程序存储器高四位 影响标志位
XOR A, [m] 累加器与立即数做“异或”运算,结果放入累加器 说明: 本指令是把累加器值、 数据存储器值做逻辑异或,结果放到累加器。 运算过程: ACCACC “XOR” [m] 影响标志位
XORM A, [m]
说明: 本指令是把累加器值、数据存储器值做逻辑异或,结果放到数据存储器。 运算过程: [m]ACC “XOR” [m] 影响标志位
XOR A, x
说明: 本指令是把累加器值与立即数做逻辑异或,结果放到累加器。 运算过程: ACCACC “XOR” x 影响标志位
本指令是将表格指针指向程序寄存器当前页,将低位送到存储器,高位直接送到 寄存器内。
TO PDF OV Z AC C
读取
TBLH 寄存器内。
累加器与数据存储器做“异或”运算,结果放入数据存储器
累加器与数据存储器做“异或”运算,结果放入累加器
最后一页的内容,并送至数据存储器和
ROM
TO PDF OV Z AC C
TO PDF OV Z AC C
TO PDF OV Z AC C
TO PDF OV Z AC C
TBLH
TBLH
Rev. 1.20 36 2005-06-09
封装信息
封装信息
封装信息封装信息
HT48RA1/HT48CA1
28-pin SOP (300mil)外形尺寸
标号
标号
标号标号
外形尺寸
外形尺寸外形尺寸
2 8
A
1
D
A 394 -- 419 B 290 -- 300 C 14 -- 20
C’ 697 -- 713
D 92 -- 104
E -- 50 --
F 4 -- -­G 32 -- 38 H 4 -- 12
ɑ 0°
1 5
B
1 4
C
C '
E
F
G
H
a
尺寸
尺寸((((mil))))
尺寸尺寸
Min Nom Max
--
10°
Rev. 1.20 37 2005-06-09
HT48RA1/HT48CA1
28pin SSOP (209mil)外形尺寸
标号
标号标号
外形尺寸
外形尺寸外形尺寸
2 8
A
1
D
A 291 -- 323 B 196 -- 220 C 9 -- 15
C’ 396 -- 407
D 65 -- 73
E -- 25.59 --
F 4 -- 10 G 26 -- 34 H 4 -- 8
ɑ 0°
1 5
B
1 4
C
C '
E
F
G
H
a
尺寸
尺寸((((mil)))) 标号
尺寸尺寸
Min Nom Max
--
8°
Rev. 1.20 38 2005-06-09
包装带和卷轴规格
包装带和卷轴规格::::
包装带和卷轴规格包装带和卷轴规格
HT48RA1/HT48CA1
卷轴尺寸:
SOP 28W(300mil)
T 2
A
B
T 1
标号
标号 描述
标号标号
A B
C
D
T1
T2
描述 尺寸
描述描述 卷轴外圈直径 330±1.0 卷轴内圈直径
轴心直径
缝宽 2.0±0.5
轮缘宽
卷轴宽 30.2±0.2
D
尺寸(mm)
尺寸尺寸
62±1.5
-0.2
-0.2
C
13.0+0.5
24.8+0.3
Rev. 1.20 39 2005-06-09
运输带尺寸
运输带尺寸::::
运输带尺寸运输带尺寸
HT48RA1/HT48CA1
D
E
P 1P 0
t
S0P 28W(300mil)
标号
标号 描述
标号标号
W
P E F
D
D1
P0
P1 A0 B0 K0
t
C
F
PD 1
A 0
W
B 0
C
K 0
描述 尺寸
描述描述
尺寸(mm)
尺寸尺寸 运输带宽 24.0±0.3 空穴间距 12.0±0.1 穿孔位置 1.75±0.1
空穴至穿孔距离(宽度) 11.5±0.1
穿孔直径
空穴中之小孔直径
穿孔间距
4.0±0.1
空穴至穿孔距离(长度)
2.0±0.1
1.5+0.1
1.5+0.25
空穴长 10.85±0.1 空穴宽 18.34±0.1
空穴深 2.97±0.1 传输带厚度 0.35±0.01 覆盖带宽度
21.3
Rev. 1.20 40 2005-06-09
盛群半导体股份有限公司
盛群半导体股份有限公司((((总公司
盛群半导体股份有限公司盛群半导体股份有限公司 新竹市科学工业园区研新二路 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
盛扬半导体有限公司
盛扬半导体有限公司((((深圳
盛扬半导体有限公司盛扬半导体有限公司 深圳市南山区科技园科技中三路与高新中二道交汇处生产力大楼 A 单元五楼 518057 电话
: 0755-8616-9908,8616-9308
传真
: 0755-8616-9533
ISDN: 0755-8615-6181
盛扬半导体有限公司
盛扬半导体有限公司((((北京
盛扬半导体有限公司盛扬半导体有限公司 北京市西城区宣武门西大街甲 电话
: 010-6641-0030, 6641-7751, 6641-7752
传真
: 010-6641-0125
盛扬半导体有限公司
盛扬半导体有限公司((((成都
盛扬半导体有限公司盛扬半导体有限公司 成都市东大街 97 号香槟广场 C 709 610016 电话: 028-6653-6590 传真: 028-6653-6591
Holmate Semiconductor, Inc.(((北美业务处
46712 Fremont Blvd., Fremont, CA 94538
电话: 510-252-9880 传真: 510-252-9885 网站: www.holmate.com
Copyright 2006 by HOLTEK SEMICONDUCTOR INC.
使用指南中所出现的信息在出版当时相信是正确的,然而盛群对于说明书的使用不负任何责任。文中提 到的应用目的仅仅是用来做说明,盛群不保证或表示这些没有进一步修改的应用将是适当的,也不推荐 它的产品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使用于救生、维 生器件或系统中做为关键器件。盛群拥有不事先通知而修改产品的权利,对于最新的信息,请参考我们 的网址 http://www.holtek.com.tw
总公司))))
总公司总公司
台北业务处))))
台北业务处台北业务处
上海业务处
业务处))))
上海上海
业务处业务处
深圳业务处
业务处))))
深圳深圳
业务处业务处
北京业务处
业务处))))
北京北京
业务处业务处
129
成都业务处
业务处))))
成都成都
业务处业务处
号金隅大厦
北美业务处))))
北美业务处北美业务处
1721室 100031
HT48RA1/HT48CA1
Rev. 1.20 41 2005-06-09
Loading...