HT45R36
C/R-F
盛群知识产权政策
盛群知识产权政策
盛群知识产权政策 盛群知识产权政策
专利权
专利权
专利权 专利权
盛群半导体公司在全球各地区已核准和申请中之专利权至少有 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 2007 by HOLTEK SEMICONDUCTOR INC.
型八位
型八位
型八位 型八位
OTP
都是盛群半导体公
单片机
单片机
单片机 单片机
规格书中所出现的信息在出版当时相信是正确的,然而盛群对于规格内容的使用不负责任。文中提到的应
用其目的仅仅是用来做说明,盛群不保证或不表示这些应用没有更深入的修改就能适用,也不推荐它的产
品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使用于救生、维生器件或
系统中做为关键器件。盛群拥有不事先通知而修改产品的权利,对于最新的信息,请参考我们的网址
http://www.holtek.com.tw; http://www.holtek.com.cn
Rev. 1.00 1 2006-09-28
技术相关信息
技术相关信息
技术相关信息 技术相关信息
· 工具信息
·
FAQs
· 应用范例
特性
特性
特性 特性
HT45R36
• 工作电压:
f
=4MHz: 2.2V~5.5V
SYS
f
=8MHz: 3.3V~5.5V
SYS
• 25 个双向输入/ 输出口
个与输入/输出口共用引脚的外部中断输入
• 2
• 8 位可编程定时 /计数器 ,具有溢出中断和 7 级
预分频器
• 外部 RC 振荡转换电路
• 内置晶体和 RC 振荡电路
• 看门狗定时器
• 16
• 2048×14 程序存储器 ROM
通道电容/电阻型传感器输入
• 120×8 数据存储器 RAM
• HALT 和唤醒功能可降低功耗
• 在 V
=5V,系统频率为 8MHz 时,指令周期
DD
为 0.5µ s
指令执行时间为1或2个指令周期
•
• 查表指令,表格内容字长 14 位
• 4 层硬件堆栈
• 位操作指令
• 63 条指令
• 低电压复位功能
• 44/52-pin QFP
封装
概述
概述
概述 概述
HT45R36 是 8 位高性能精简指令集单片机,专门为经济型多输入输出控制的产品而设计。
低功耗、灵活的 I/O 功能、计数器、振荡类型选择、暂停和唤醒功能、以及看门狗定时器功能,使此
款多功能芯片可以广泛地应用于工业控制、消费类产品、子系统控制器等。
Rev. 1.00 2 2006-09-28
方框图
方框图
方框图 方框图
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 0
S T A C K 1
P A 0 / I N T 0
P A 1 / I N T 1
I n t e r r u p t
C i r c u i t
I N T C
T M R C
T M R
HT45R36
M
P r e s c a l e r
U
X
S y s t e m C l o c k
P A 2 / T M R
I n s t r u c t i o n
R e g i s t e r
I n s t r u c t i o n
D e c o d e r
T i m i n g
G e n e r a t o r
O S C 2 O S C 1
R E S
V D D
V D D B
V S S
V S S C
M P
A L U
S h i f t e r
A C C
M U X
W D T S
M
D a t a
U
M e m o r y
X
S t a t u 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 O R T B
P B
P O R T C
P C C
P C
P D C
P O R T D
P D
T i m e r A
T i m e r B
A n a l o g
S w i t c h
R C
O s c i l l a t i o n
W D T
M
U
X
R C O s c i l l a t i o n O u t p u t
R C 1 ~ R C 1 6
R C O U T
I N
R R E F
C R E F
M
U
X
P A 0 / I N T 0
P A 1 / I N T 1
P A 2 / T M R
P A 3 ~ P A 7
P B 0 ~ P B 7
P C 0 ~ P C 7
P D 0
S y s t e m C l o c k
S y s t e m C l o c k / 4
S y s t e m C l o c k / 4
R C O S C
引脚图
引脚图
引脚图 引脚图
V D D B
P A 2 / T M R
P A 1 / I N T 1
P A 4
P A 3
P A 5
1
P A 6
2
P A 7
3
P B 0
4
P B 1
5
P B 2
6
P B 3
7
8
9
P B 4
1 0
P B 5
1 1
P B 6
1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2
P C 2
P C 1
P C 0
P B 7
P A 0 / I N T 0
R E S
H T 4 5 R 3 6
4 4 Q F P - B
V S S C
P C 3
P A 2 / T M R
P A 1 / I N T 1
O S C 1
O S C 2
R C 1 2
V D D
V S S
3 8 3 9 4 0 4 1 4 2 4 3 4 4
P C 4
3 4 3 5 3 6 3 7
R C 1 1
3 3
R C 1 0
3 2
R C 9
3 1
R C 8
3 0
R C 7
2 9
R C 6
2 8
R C 5
2 7
R C 4
2 6
R C 3
2 5
R C 2
2 4
R C 1
2 3
R C O U T
I N
R R E F
C R E F
V D D B
P A 4
1
P A 5
2
P A 6
3
P A 7
4
P B 0
5
P B 1
6
P B 2
7
P B 3
8
9
P B 4
1 0
P B 5
1 1
P B 6
1 2
P B 7
1 3
P C 0
1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2
P C 1
P A 0 / I N T 0
O S C 1
O S C 2
R C 1 6
R C 1 5
V S S
2 3 2 4 2 5 2 6
I N
R R E F
C R E F
R C 1 4
4 0 4 1 4 2 4 3 4 44 5 4 6 4 7
3 9
R C 1 3
3 8
R C 1 2
3 7
R C 1 1
3 6
R C 1 0
3 5
R C 9
3 4
R C 8
3 3
R C 7
3 2
R C 6
3 1
R C 5
R C 4
3 0
2 9
R C 3
R C 2
2 8
2 7
R C 1
R C O U T
V D D
P C 3
4 8 4 9 5 0 5 1 5 2
P C 4
V S S C
R E S
H T 4 5 R 3 6
5 2 Q F P - A
P C 7
P C 6
P C 5
P D 0
P A 3
P C 2
Rev. 1.00 3 2006-09-28
引脚说明
引脚说明
引脚说明 引脚说明
引脚名称
引脚名称 输入
引脚名称 引脚名称
PA0/INT0
PA1/INT1
PA2/TMR
PA3~PA7
PB0~PB7
PC0~PC7
PD0
RC1~RC16
RCOUT
IN
RREF
CREF
RES
VSS
VSSC
VDD
ADDB
OSC1
OSC2
注意:所有上拉电阻均由掩膜选项控制。
输入/ 输出
输出 掩膜选项
输入 输入
输出 输出
输入/ 输出
输入/ 输出 上拉电阻
输入/ 输出 上拉电阻
输入/ 输出 上拉电阻
输入 — 电容或电阻连接引脚。
输入
输入
输出 — 参考电阻连接引脚。
输出 — 参考电容连接引脚。
输入 — 斯密特触发复位输入,低电平有效。
— — 负电源,接地。
—
— — 正电源。
— — PB 端口正电源。
输入
输出
掩膜选项 说明
掩膜选项 掩膜选项
上拉电阻
唤醒功能
—
—
—
PC
晶体或 RC
说明
说明 说明
8 位双向输入/ 输出口。每一位可由掩模选项设置为唤醒输
入。可由软件设置为
上拉电阻选项决定:位选择)的斯密特触发输入。
INT0 和 INT1 分别与 PA0 和 PA1 引脚共用。掩膜选项决
定中断是否使能,中断是上升沿还是下降沿触发。TMR
与 PA2 引脚共用。
8 位双向输入/ 输出口。可由软件设置为 CMOS 输出、带
或不带上拉电阻(由上拉电阻选项决定:端口选择)的斯
密特触发输入。
8 位双向输入/ 输出口。可由软件设置为 CMOS 输出、带
或不带上拉电阻(由上拉电阻选项决定:端口选择)的斯
密特触发输入。
1 位双向输入/ 输出口。可由软件设置为 CMOS 输出、带
或不带上拉电阻的斯密特触发输入。
电容或电阻连接引脚到
振荡器输入引脚。
端口负电源,接地。
OSC1、OSC2 连接 RC 或晶体(由掩膜选项确定)以产生内
部系统时钟。在 RC 振荡方式下,OSC2 是系统时钟四分
频的输出口。
CMOS
输出、带或不带上拉电阻(由
RC OSC。
HT45R36
极限参数
极限参数
极限参数 极限参数
电源供应电压
端口输入电压………….V SS-0.3V~VDD+0.3V 工作温度………..….-40℃~85℃
IOL总电流…………. ………. ……….300mA IOH总电流…………. …. -200mA
总消耗电流………. ………. ……….500mW
注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状态,而
且若长期在标示范围外的条件下工作,可能影响芯片的可靠性。
………….VSS-0.3V~VSS+6.0V
储存温度
………….-50℃~125℃
Rev. 1.00 4 2006-09-28
HT45R36
直流电气特性
直流电气特性
直流电气特性 直流电气特性
测试条件
测试条件
符号
符号 参数
符号 符号
VDD
I
DD1
I
DD2
I
STB1
I
STB2
工作电压
工作电流
(晶体振荡、RC 振荡)
工作电流
(晶体振荡、RC 振荡)
静态电流
(看门狗打开)
静态电流
(看门狗关闭)
参数
参数 参数
V
DD
—
—
3V
5V
5V
3V
5V
3V
5V
测试条件 测试条件
条件
条件
条件 条件
f
=4MHz 2.2
SYS
f
=8MHz 3.3
SYS
无负载,f
无负载,
无负载,系统
f
SYS
SYS
=4MHz
=8MHz
HALT
无负载,系统 HALT
最小
最小 典型
最小 最小
典型 最大
典型 典型
—
—
—
—
—
1 2 mA
3 5 mA
2.5 4 mA
— —
— —
—
—
— —
输入/ 输出口、TMR 、
V
IL1
INT0和INT1
的低电平
— —
0
—
输入电压
输入/ 输出口、TMR 、
V
IH1
INT0和INT1
的高电平
— —
0.7V
DD
—
输入电压
V
IL2
V
IH2
V
LVR
I
OL1
I
OH1
I
OL2
I
OH2
RPH
低电平输入电压(
高电平输入电压(
低电压复位 — LVR 使能
PA 、PB 、PD0 、RREF
和 CREF 灌电流
PA 、PB 、PD0 、RREF
和 CREF 源电流
灌电流
PC
PB 源电流
上拉电阻
— —
)
— —
)
3V
5V
3V
5V
3V
5V
3V
5V
3V
5V
VOL=0.1VDD
VOH=0.9VDD
VOL=0.1VDD
VOH=0.9VDD
—
—
0
0.9 V
DD
—
—
2.7 3.0 3.3 V
4 8
10 20
-2 -4
-5 -10
8 16
20 40
-4 -8
-10 -20
20 60 100
10 30 50
Ta=25 ℃℃℃℃
最大 单位
最大 最大
单位
单位 单位
5.5 V
5.5 V
5 µ A
10 µ A
1 µ A
2 µ A
0.3 V
DD
VDD V
0.4 V
DD
VDD V
—
—
—
—
—
—
—
—
V
V
mA
mA
mA
mA
mA
mA
mA
mA
kΩ
kΩ
Rev. 1.00 5 2006-09-28
HT45R36
交流电气特性
交流电气特性
交流电气特性 交流电气特性
测试条件
测试条件
符号
符号 参数
符号 符号
f
SYS
f
TIMER
t
WDTOSC
t
WDT1
t
WDT2
t
RES
t
SST
t
INT
t
LVR
系统时钟
(晶体振荡、 RC 振荡 )
定时器输入频率
看门狗振荡器
看门狗溢出周期
(WDT RC 振荡器)
看门狗溢出周期
(系统时钟四分频)
外部复位低电平脉宽
系统启动延迟时间 — 从 HALT 状态唤醒 —
中断脉冲宽度 — —
低电压复时间 — —
参数
参数 参数
V
DD
—
—
—
—
3V
5V
3V
5V
— WDT 分频前 —
—
测试条件 测试条件
条件
条件
条件 条件
2.2V~5.5V 400
3.3V~5.5V 400
2.2V~5.5V 0
3.3V~5.5V 0
—
—
分频前
WDT
—
最小
最小 典型
最小 最小
典型 最大
典型 典型
—
—
—
—
45 90 180 µ s
32 65 130 µ s
11 23 46 ms
8 17 33 ms
1024
1
—
1024
1
— —
0.25 1 2 ms
Ta=25℃
最大 单位
最大 最大
单位
单位 单位
4000 kHz
8000 kHz
4000 kHz
8000 kHz
—
—
—
t
SYS
µ s
t
SYS
µ s
Rev. 1.00 6 2006-09-28
HT45R36
系统功能说明
系统功能说明
系统功能说明 系统功能说明
指令执行时序
指令执行时序
指令执行时序 指令执行时序
单片机的系统时钟由晶体振荡器或 RC 振荡器产生。该时钟在芯片内部被分成四个互不重叠的时钟周
期。一个指令周期包括四个系统时钟周期。
指令的读取和执行是以流水线方式进行的, 这种方式在一个指令周期进行读取指令操作,而在下一个
指令周期进行解码与执行该指令。因此,流水线方式使多数指令能在一个周期内执行完成。但如果渉及到
的指令要改变程序计数器的值,就需要花两个指令周期来完成这一条指令。
S y s t e m C l o c k
O S C 2 ( R C o n l y )
T 1 T 2 T 3 T 4 T 1 T 2 T 3 T 4 T 1 T 2 T 3 T 4
P C
P C P C + 1 P C + 2
F e t c h I N S T ( P C )
E x e c u t e I N S T ( P C - 1 )
F e t c h I N S T ( P C + 1 )
E x e c u t e I N S T ( P C )
F e t c h I N S T ( P C + 2 )
E x e c u t e I N S T ( P C + 1 )
指令执行时序
指令执行时序
指令执行时序 指令执行时序
程序计数器
程序计数器 ———— PC
程序计数器 程序计数器
程序计数器(PC) 控制程序存储器 ROM 中指令执行的顺序,它可寻址整个 ROM 的范围。
取得指令码以后,程序计数器会自动加一,指向下一个指令码的地址。但如果执行跳转、条件跳跃、
向 PCL 赋值、子程序调用、初始化复位、内部中断、外部中断、子程序返回等操作时,PC 会载入与指令
相关的地址而非下一条指令地址。
当遇到条件跳跃指令且符合条件时,当前指令执行过程中读取的下一条指令会被丢弃,取而代之的是
一个空指令周期,随后才能取得正确的指令。反之,就会顺序执行下一条指令。
程序计数器的低字节(PCL )是一个可读写的寄存器(06H )。对 PCL 赋值将产生一个短跳转动作,跳
转的范围为当前页 256 个地址。
当遇到控制转移指令时,系统也会插入一个空指令周期。
程序计数器
程序计数器
模式
模式
模式 模式
初始化复位
外部中断 0
外部中断 1
定时/计数器溢出
外部 RC 振荡中断
条件跳跃
装载 PCL
跳转,子程序调用
从子程序返回
注:
*10 ~ *0
#10 ~ #0
*10 *9 *8 *7 *6 *5 *4 *3 *2 *1 *0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 1 0 0 0 0
*10 *9 *8 @7 @6 @5 @4 @3 @2 @1 @0
#10 #9 #8 #7 #6 #5 #4 #3 #2 #1 #0
S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
程序计数器
程序计数器
程序计数器 程序计数器
:程序计数器位
:指令代码位
S10 ~ S0
@7 ~ @0 :PCL位
程序计数器 程序计数器
PC+2
:堆栈寄存器位
Rev. 1.00 7 2006-09-28
程序存储器
程序存储器 ———— ROM
程序存储器 程序存储器
HT45R36
程序存储器用来存放要执行的指令代码,以及一些数据、表
格和中断入口。程序存储器有
2048×14
用程序计数器或表格指针进行寻址。
位,程序存储器空间可以
以下列出的程序存储器地址是系统专为特殊用途而保留的:
· 地址 000H
该地址为程序初始化保留。系统复位后,程序总是从 000H
开始执行。
· 地址
004H
该地址为外部中断 0 服务程序保留。当 INT0 引脚有触发信
号输入,如果中断允许且堆栈未满,则程序会跳转到 004H 地址
开始执行。
· 地址 008H
该地址为外部中断 1 服务程序保留。当 INT1 引脚有触发信
号输入,如果中断允许且堆栈未满,则程序会跳转到
地址开始执行。
008H
0 0 0 H
0 0 4 H
0 0 8 H
0 0 C H
0 1 0 H
n 0 0 H
n F F H
7 0 0 H
7 F F H
D e v i c e I n i t i a l i z a t i o n P r o g r a m
E x t e r n a l I n t e r r u p t 0
E x t e r n a l I n t e r r u p t 1
T i m e r / E v e n t C o u n t e r O v e r f l o w
E x t e r n a l R C O s c i l l a t i o n C o n v e r t e r I n t e r r u p t
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 4 - B i t s
N o t e : n r a n g e s f r o m 0 t o 7
P r o g r a m
M e m o r y
· 地址 00CH
该地址为定时/ 计数器中断服务程序保留。当定时/ 计数器溢出,如果中断允许且堆栈未满,则程序会
跳转到 00CH 地址开始执行。
· 地址 010H
该地址为 RC 振荡中断服务程序保留。当外部 RC 振荡产生中断,如果中断允许且堆栈未满,则程序
会跳转到
010H
地址开始执行。
· 表格区
ROM 空间的任何地址都可做为查表使用。查表指令“TABRDC [m]”(查当前页表格,1 页=256 个字)
和“TABRDL [m]”(查最后页表格),会把表格内容低字节传送给[m],而表格内容高字节传送到 TBLH 寄
存器(08H)。只有表格内容的低字节被传送到目标地址中,而高字节被传送到表格内容高字节寄存器 TBLH,
并且 TBLH 的高 2 位始终为“0”。表格内容高字节寄存器 TBLH 是只读寄存器。表格指针(TBLP)是可读/
写寄存器(07H),用来指明表格地址。在查表之前,要先将表格地址写入 TBLP 中。如果主程序和中断服务
程序(ISR)都用到查表指令,主程序中 TBLH 的值可能会因为 ISR 中执行的查表指令而发生变化,产生错误。
也就是说,要避免在主程序和中断服务程序中都使用查表指令。但如果必须这样做的话,我们可以在查表
指令前先将中断禁止,在保存了 TBLH 的值后再开放中断以避免发生错误。所有与表格有关的指令都需要
两个指令周期的执行时间。这里提到的表格区都可以做为正常的程序存储器来使用。
表格区
表格区
指令
指令
指令 指令
*10 *9 *8 *7 *6 *5 *4 *3 *2 *1 *0
表格区 表格区
TABRDC[m] P10 P9 P8 @7 @6 @5 @4 @3 @2 @1 @0
TABRDL[m] 1 1 1 @7 @6 @5 @4 @3 @2 @1 @0
表格区
表格区
表格区 表格区
注:
:表格地址字节
*10~*0
P10~P8
:当前程序指针字节
@7~@0
:表格指针字节
堆栈寄存器
堆栈寄存器 ———— STACK
堆栈寄存器 堆栈寄存器
堆栈寄存器是特殊的存储器空间,用来保存 PC 的值。HT45x36 有 4 层堆栈,堆栈寄存器既不是数据
存储器的一部分,也不是程序存储器的一部分,而且它既不能读出,也不能写入。堆栈的使用是通过堆栈
指针(SP )来实现的,堆栈指针也不能读出或写入。当发生子程序调用或中断响应时,程序计数器(PC )
的值会被压入堆栈;在子程序调用结束或中断响应结束时(执行指令
RET或RETI
),堆栈将原先压入堆栈
的内容弹出,重新装入程序计数器中。在系统复位后,堆栈指针会指向堆栈顶部。
如果堆栈已满,并且发生了不可屏蔽的中断,那么只有中断请求标志会被记录下来,而中断响应会被
抑制,直到堆栈指针(执行 RET 或 RETI 指令)发生递减,中断才会被响应。这个功能可以防止堆栈溢出,
使得程序员易于使用这种结构。同样,如果堆栈已满,并且发生了子程序调用,那么堆栈会发生溢出,首
先进入堆栈的内容将会丢失,只有最后的 4 个返回地址会被保留。
Rev. 1.00 8 2006-09-28
数据存储器
数据存储器 ———— RAM
数据存储器 数据存储器
HT45R36
数据存储器由 150 ×8 位组成,分为两个功能区间:特殊功能
寄存器和通用数据存储器(
),数据存储器单元大多数是可
120×8
读/ 写的,但有些只读的。通用数据寄存器地址从 28H 到 7FH(Bank0)
和 40H 到 5FH(Bank1) ,用来存储数据和控制信息。
所有的数据存储器单元都能直接执行算术、逻辑、递增、递
减和循环操作。除了一些特殊位外,数据存储器的每一位都可由
“SET[m].i ”置位或由“CLR[m].i ”复位。Bank0 内数据可以通过
间接寻址指针
MP0(01H)或MP1(02H)
进行间接访问。
Bank1 内数据必须通过间接寻址指针 MP1 和间接寻址寄存器
IAR1 间接访问。任何直接寻址或通过 MP0 和 IAR0 间接寻址将直
接访问 Bank0 内数据。
间接寻址寄存器
间接寻址寄存器
间接寻址寄存器 间接寻址寄存器
间接寻址的方式允许使用间接指针操作数据,以取代通常的
直接存储器寻址方式。在间接寻址寄存器上的任何操作,将对间
接寻址指针所指定的存储器地址产生读/ 写操作。此型号单片机提
供了两个间接寻址寄存器(IAR0 和 IAR1) 和两个间接 寻址指针
(MP0 和 MP1) 。要注意的是,这些间接寻址寄存器并不是实际存
在的,间接读取
寄存器将返回“
IAR
”的结果,而间接写入
00H
此寄存器则不做任何操作。
此型号单片机提供两个间接寻址指针,即 MP0 和 MP1 。由于
这些指针寄存器能像普通的寄存器一样进行读写操作,因此提供
了一个寻址有效方法。当对间接寻址寄存器进行任何操作时,实
际地址是由间接寻址指针所指向的地址。
间接寻址指针的最高位未定义,必须注意读取该位得到的结
果是“1 ”。
Bank 指针
指针——
——BP
指针 指针
—— ——
通用数据存储器被分为两个 Bank ,即 Bank0 和 Bank1 。如果
要访问
Bank0或Bank1
的通用数据存储器,必须设置存储区指针
BP 值为“00H ”或“01H ”,来选择正确的数据存储区。但必须注
意 Bank1 内数据必须通过间接寻址指针 MP1 和间接寻址寄存器
IAR1 来访问。
任何直接寻址或通过 MP0 和 IAR0 间接寻址将访问 Bank0 内
数据。复位后,存储区指针 BP 指向 Bank0 ,但在 HALT 模式下的
溢出复位,不会改变存储区指针BP的值。
WDT
需要注意的是,特殊功能寄存器不受存储区指针 BP 的影响,
也就是说,不论是在 Bank0 还是 Bank1 内,都能对特殊功能寄存
器进行读写操作。
I n d i r e c t A d d r e s s i n g R e g i s t e r 0
0 0 H
0 1 H
I n d i r e c t A d d r e s s i n g R e g i s t e r 1
0 2 H
0 3 H
0 4 H
0 5 H
0 6 H
0 7 H
0 8 H
0 9 H
0 A H
0 B H
0 C H
0 D H
0 E H
0 F H
1 0 H
1 1 H
1 2 H
1 3 H
1 4 H
1 5 H
1 6 H
1 7 H
1 8 H
1 9 H
1 A H
1 B H
1 C H
1 D H
1 E H
1 F H
2 0 H
2 1 H
2 2 H
2 3 H
2 4 H
2 5 H
2 6 H
2 7 H
2 8 H
G e n e r a l P u r p o s e D a t a M e m o r y
7 F H
R A M M a p p i n g B a n k 0
4 0 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
5 F H
R A M M a p p i n g B a n k 1
T B L P
T B L H
W D T S
S T A T U S
I N T C 0
T M R C
A S C R
I N T C 1
T M R A H
T M R A L
R C O C C R
T M R B H
T M R B L
R C O C R
( 8 8 B y t e s )
( 3 2 B y t e s )
数据存储器
数据存储器
数据存储器 数据存储器
M P 0
M P 1
A C C
P C L
T M R
P A C
P B C
P C C
P D C
B P
P A
P B
P C
P D
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.00 9 2006-09-28
HT45R36
累加器
累加器
累加器 累加器
累加器(ACC )与算术逻辑单元(ALU )有密切关系。它对应于 RAM 地址 05H ,做为运算的立即数
据。存储器之间的数据传送必须经过累加器。
算术逻辑单元
算术逻辑单元 ———— ALU
算术逻辑单元 算术逻辑单元
算术逻辑单元(ALU )是执行 8 位算术、逻辑运算的电路,它提供有以下功能:
· 算术运算(ADD ,ADC ,SUB ,SBC ,DAA )
· 逻辑运算(
· 移位运算(RL,RR,
· 递增和递减(INC ,DEC )
· 分支判断(SZ ,SNZ ,SIZ ,SDZ… )
ALU 不仅可以储存数据运算的结果,还会改变状态寄存器的值。
状态寄存器
状态寄存器 ————
状态寄存器 状态寄存器
8 位的状态寄存器(0AH ),由零标志位(Z )、进位标志位( C )、辅助进位标志位( AC )、溢出标志
位(OV )、暂停标志位(PDF )和看门狗定时器溢出标志位(TO)组成。该寄存器不仅记录状态信息,而
且还控制操作顺序。
除了 PDF 和 TO 标志外,状态寄存器的其它位都可以用指令改变。任何对状态寄存器的写操作都不会
改变 PDF 和 TO 的值。对状态寄存器的操作可能会导致与预期不一样的结果。TO 标志只受系统上电、看
门狗溢出、“
“HALT” 指令的影响。
AND,OR,XOR,CPL)
RLC,RRC)
STATUS
CLR WDT”
符号
符号 位位位位 功能
符号 符号
C 0
AC 1
Z 2
OV 3
PDF 4
TO 5
—
—
指令或“
如果在加法运算中结果产生了进位或在减法运算中结果不产生借位
则 C 被置位;反之,C 被清除。它也可被循环移位指令影响。
如果在加法运算中低 4 位产生了进位或减法运算中低 4 位不产生借
位,则 AC 被置位;反之,AC 被清除。
如果算术或逻辑运算的结果为零,则 Z 被置位;反之,Z 被清除。
如果运算结果向最高位进位,但最高位并不产生进位输出,则 OV 被
置位;反之,OV 被清除
系统上电或执行“CLR WDT”指令,PDF 被清除;执行“HALT”指
令,PDF 被置位。
系统上电、执行“CLR WDT”或“HALT”指令,TO 被清除;WDT
定时溢出,TO被置位。
6
未用,读出为“0”
7
未用,读出为“ 0”
HALT”
指令的影响。
STATUS(0AH) 寄存器
PDF
功能
功能 功能
寄存器
寄存器 寄存器
标志只受系统上电、“
CLR WDT”
指令或
标志位 Z 、OV 、AC 和 C 反映的是最近一次操作的状态。
在进入中断程序或子程序调用时,状态寄存器不会被自动压入堆栈。如果状态寄存器的内容是重要的,
而且子程序会影响状态寄存器的内容,那么程序员必须事先将
Rev. 1.00 10 2006-09-28
STATUS
的值保存好。
HT45R36
中断
中断
中断 中断
此型号单片机提供两个外部中断、一个内部 8 位定时/ 计数器中断、一个外部 RC 振荡中断。中断控制
寄存器0(
INTC0;0BH
控制位用来设置中断允许/ 禁止。
)和中断控制寄存器1(
位位位位 符号
0 EMI
1 EEI0
2 EEI1
3 ETI
4 EIF0
5 EIF1
6 TF
7
符号 功能
符号 符号
总中断控制位(1=允许;0=禁止)
外部中断 0 控制位(1=允许;0=禁止)
外部中断1控制位(1=允许;0=禁止)
定时/计数器中断控制位(1=允许;0=禁止)
外部中断 0 请求标志(1=有;0=无)
外部中断 1 请求标志(1=有;0=无)
定时/计数器中断请求标志(1=有;0=无)
—
未用,读出为“0”
INTC1;1EH
)包含了中断控制位和中断请求标志,中断
功能
功能 功能
INTC0(0BH) 寄存器
寄存器
寄存器 寄存器
位位位位 符号
1~3
5~7
符号 功功功功 能能能能
符号 符号
0 ERCOCI
—
4 RCOCF
外部 RC 振荡中断控制位(1= 允许;0= 禁止)
未用,读出为“0”
外部RC振荡中断请求标志(1=有;0=无)
INTC1(1EH) 寄存器
寄存器
寄存器 寄存器
只要有中断子程序被服务,其余的中断全部都被自动禁止(通过清除 EMI 位),这种做法的目的在于
防止中断嵌套。这时如果有其它中断发生,只有中断请求标志会被记录下来。如果在中断服务程序中有另
一个中断需要响应,程序员可以置位
EMI、INTC0和INTC1
所对应的位,以便进行中断嵌套。如果堆栈
已满,则中断并不会被响应,一直到堆栈指针(SP )发生递减后才会响应。如果需要中断立即得到响应,
应避免堆栈饱和。
所有的中断都具有唤醒能力。当有中断被服务,系统会将程序计数器值压入堆栈,然后再跳转至中断
服务程序的入口。但这时只有程序计数器的内容被压入堆栈,如果其它寄存器和状态寄存器的内容会被中
断程序改变,从而会破坏主程序的控制流程的话,程序员应该事先将这些数据保存起来。
外部中断是由
断请求标志位(
EIF0;INTC0
INT0
和
引脚边沿信号触发的,掩膜选项决定其上升沿触发还是下降沿触发,其中
的第4位,
EIF1;INTC0
的第5位)会被置位。如果中断允许,且堆栈未满,
当发生外部中断时,会产生地址 04H 或 08H 的子程序调用;而中断请求标志 EIF0 或 EIF1 和总中断控制
位 EMI 会被清除,以禁止其它中断响应。
内部定时/ 计数器中断是由定时/ 计数器溢出触发的,其中断请求标志(TF ;INTC0 的第 6 位)会被置
位。如果中断允许,且堆栈未满,当发生定时/ 计数器中断时,会产生地址 0CH 的子程序调用;而中断请
求标志 TF 和总中断控制位 EMI 会被清除,以禁止其它中断响应。
外部RC振荡中断是由定时器A或定时器B溢出触发的,其中断请求标志(
RCOCF;INTC1
的第
位)会被置位。如果中断允许,且堆栈未满,当定时器中断时,会产生地址 10H 的子程序调用;而中断请
求标志 RCOCF 和总中断控制位 EMI 会被清除,以禁止其它中断响应。
在执行中断子程序期间,其它的中断请求会被屏蔽,直到执行 RETI 指令或 EMI 和相关中断控制位被
置位(当然,此时堆栈未满)。如果要从中断子程序返回,只要执行 RET 或 RETI 指令即可。其中,RETI
指令会自动置位 EMI ,以允许中断服务,而 RET 则不会。
如果中断在两个连续的
脉冲的上升沿之间发生,且中断响应允许,那么在下两个T2脉冲之间,
T2
该中断会被服务。如果同时发生中断请求,其优先级如下表示;也可以通过设定各中断相关的控制位来改
变优先级。
4
Rev. 1.00 11 2006-09-28
HT45R36
No.
a
b
c
d
中断控制寄存器 0 (INTC0 ),由定时/ 计数器中断请求标志(TF )、外部中断 1 请求标志(EIF1 )、外
部中断0请求标志(
)、定时/计数器中断允许(
EIF0
和总中断允许(EMI )组成,其对应于数据存储器地址 0BH 。中断控制寄存器 1 (INTC1 ),由外部 RC 中
断请求标志(RCOCF)和外部 RC 中断允许(ERCOCI)组成,其对应于数据存储器地址 1EH 。EMI、EEI0、
EEI1 、ETI 和 ERCOCI 用来控制中断的允许/ 禁止状态的。这些控制位可以用来屏蔽正在进行中断服务程序
时发生的其它中断请求。一旦中断请求标志(TF 、RCOCF、EIF1、EIF0)被置位,会一直保留在 INTC0
和
INTC1
寄存器中,直到中断被响应或用软件指令清除为止。
建议不要在中断服务程序中使用“CALL ”指令来调用子程序。因为中断随时都可能发生,而且需要
立刻给予响应。如果只剩下一层堆栈,而中断不能被很好地控制,原先的控制序列很可能因为在中断子程
序中执行“CALL ”指令而使堆栈溢出,从而发生混乱。
振荡电路
振荡电路
振荡电路 振荡电路
中断源
中断源 优先级
中断源 中断源
外部中断 0
外部中断 1
定时/ 计数器中断
外部 RC 振荡中断
中断优先级
中断优先级
中断优先级 中断优先级
ETI
优先级 中断向量
优先级 优先级
中断向量
中断向量 中断向量
1 04H
2 08H
3 0CH
4 10H
)、外部中断1允许(
)、外部中断0允许(
EEI1
EEI0
)
HT45x36
可以通过掩膜选项设定,不管选用哪一种振荡方式,其信号都
有两种振荡方式,外部RC振荡和外部晶体振荡,
V
D D
可以做为系统时钟。HALT 模式会停止系统振荡器,并忽视任
何外部信号以降低功耗。
如果选用外部 RC 振荡方式,在 OSC1 与 VDD 之间需要
接一个外部电阻,其阻值为 24k Ω到 1M Ω;而 OSC2 上会输出
带上拉的系统频率的4分频信号,可用于同步外部逻辑。
RC
O S C 1
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
4 7 0 p F
f
/ 4
S Y S
N M O S O p e n D r a i n
O S C 1
O S C 2
振荡方式是一种低成本的方案,但是, RC 振荡频率会随着
VDD、温度和芯片自身参数的漂移而产生误差。因此,在需要精确振荡频率做为计时操作的场合,并不适
合使用 RC 振荡方式。
如果选用晶体振荡方式,在 OSC1 和 OSC2 之间需要连接一个晶体,用来提供晶体振荡器所需的反馈
和相移,除此之外,不再需要其它外部元件。另外,在
OSC1和OSC2
之间也可使用谐振器来取代晶体振
荡器,但是在 OSC1 和 OSC2 需要多连接两个电容(如果振荡频率小于 1MHz )。
WDT 振荡器是一个内部 RC 振荡器,并不需要连接任何外部元件。当系统进入暂停模式时,系统时钟
会停止,但 WDT 振荡器会继续工作,其振荡周期大约为 65µ s/5V 。如果要降低功耗,可在掩膜选项中关
闭 WDT 振荡器。
Rev. 1.00 12 2006-09-28
HT45R36
看门狗定时器
看门狗定时器 ———— WDT
看门狗定时器 看门狗定时器
看门狗定时器的时钟来源有两种:看门狗振荡器或指令时钟(系统时钟 4 分频),由掩膜选项设置。
看门狗定时器主要用来防止程序运行故障和程序跳入一死循环而导致不可预测的结果。看门狗定时器可由
掩膜选项设置为打开或关闭,如果在关闭状态,所有与 WDT 有关的指令操作都是没有作用的。
S y s t e m C l o c k / 4
W D T P r e s c a l e r
W D T
O S C
O p t i o n
S e l e c t
8 - b i t C o u n t 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 T i m e - o u t
看门狗时钟源先经过 256 分频。若设置内部 RC 振荡器作为看门狗时钟来源,其溢出周期为 17ms@5V 。
溢出周期会因为温度、VDD 以及芯片参数的漂移而变化。通过 WDT 的预分频器,可以得到更长的溢出周
期。改变寄存器
为1,此时
WDT
WDTS的WS2、WS1和WS0
的分频级数为1:
,其最大的溢出周期为
128
位,可以得到不同的溢出周期。若
2.1s@5V
。若内部
WS2、WS1和WS0
振荡器被禁止,其
WDT
位都
时钟仍可由指令时钟提供,其运作方式与使用 WDT 振荡器相同。若 WDT 时钟来自指令时钟,在 HALT
模式下,WDT 会停止计数而失去保护功能;此时只能靠外部逻辑复位来重新启动系统。寄存器 WDTS 的
高 5 位保留给用户定义标志位使用。
若系统工作在强干扰环境中,建议选用内部 WDT 振荡器,因为 HALT 模式会使系统时钟停止,使看
门狗失去保护功能。
WS2 WS1 WS0
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 (((( 09H ))))寄存器
分频系数
分频系数
分频系数 分频系数
1: 16
1:32
1:64
1: 128
寄存器
寄存器 寄存器
1: 1
1: 2
1: 4
1: 8
在正常运行时,WDT 溢出会使系统复位并置位 TO 标志;但在 HALT 模式下,WDT 溢出只产生“热
复位”,只有程序计数器 PC 和堆栈指针 SP 被复位。要清除 WDT 的值可以有三种方法:外部复位(低电平
输入到
端)、清除看门狗指令或 HALT 指令。清除看门狗指令有“CLR WDT”和“CLR WDT1 ”、“CLR
WDT2 ”二组指令。这两组指令中,只能选择其中一组,由掩膜选项决定。如果选择“CLR WDT”,那么
只要执行“CLR WDT” 指令就会清除 WDT。如果选择“CLR WDT1”和“CLR WDT2 ”,那么二条指令
要交替使用才会清除
Rev. 1.00 13 2006-09-28
WDT
,否则,
会由于溢出而使系统复位。
WDT