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.0V ~5.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] ,而这个字的高位字节传送到 TBLH (08H )。只有表格中的
低位字节被定义到目标地址中,而高位字节传送到表格的高位字节寄存器(
存器。而表格指针(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 ),定时/ 计数器 0 ( TMR0 ; 0DH ),定时 / 计数器 0 控制寄
存器(TMR0C ;0EH),定时/ 计数器 1 高字节(TMR1H ;0FH),
定时/ 计数器 1 低字节(TMR1L ;10H),定时/ 计数器 1 控制寄
存器(TMR1C ;11H),程序计数器低字节寄存器(PCL ;06H),
间接寻址寄存器(MP0 ;01H,MP1 ;03H ),累加器(ACC ;
),表格指针(
05H
寄存器(TBLH;08H),状态寄存器(STATUS;0AH),中断
控制寄存器(INTC ;0BH),看门狗选项设置寄存器(WDTS ;
09H),输入/输出寄存器(PA;12H,PB;14H,PC;16H,
PF; 1CH),输入/输出控制寄存器(PAC; 13H, PBC; 15H,
PCC;17H,PFC;1DH
来进一步扩展使用。读取这些被保留单元的值,都将返回 00H
的值。通用数据存储器的地址从 20H~FFH ,作为数据和控制
信息使用。
所有的 RAM 都可以直接执行算术、逻辑、递增、递减和
移位等运算。除了一些少数指定的位之外,RAM 的每个位都
可以由
SET[m].i和CLR[m].i
地址可以通过间接寻址寄存器 MP0 (01H )或 MP1 (03H )来
存取。
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 标志位。但是与状态寄存器有关的操作会导致状态寄存器的改变。
系统上电,看门狗定时器溢出,执行
Z ,OV ,AC 和 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 脚上的下降沿触发的,相关的中断请求位(EIF ,INTC 的第 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 中断请求标志位(T0F ,INTC 的第 5 位)来初始化
内部定时/ 计数器 1 中断是通过置位定时/ 计数器中断请求标志位(T1F ,INTC 的第 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 振荡方式是一种低成本的方案,可是,振荡频率会随着 V DD、
温度和制造漂移而不同。因此,在用于需要非常精确振荡频率的计时操作场合,我们并不建议使用 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 )的话,这个频率会先除以 256 (8 级)
产生 23ms/3V 的溢出时间。这个溢出时间会因为温度,V DD,以及芯片参数的漂移而变化。如果使用 WDT
的预分频器,则可实现延长 WDT 溢出时间。设置 WS2 ,WS1 ,WS0 (WDTS 的第 2、1、0 位)会产生不同
的溢出时间。举例来说,如果 WS2 ,WS1,WS0 的位都为 1,其分频级数最大为 1 :128,得到最长的 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
,
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
1: 1
1: 2
1:4
1:8
1: 16
1:32
1: 64
1: 128
振荡器)。
Rev. 1.20 13 2005-06-09