HOLTEK HT48E30 User Manual

HT48E30
内置
内置
EEPROM
内置内置
盛群知识产权政策
盛群知识产权政策
盛群知识产权政策盛群知识产权政策
专利权
专利权
专利权专利权 盛群半导体公司在全球各地区已核准和申请中之专利权至少有 160 件以上,享有绝对之合法权益。与盛
群公司 MCU 或其它产品有关的专利权并未被同意授权使用,任何经由不当手段侵害盛群公司专利权之 公司、组织或个人,盛群将采取一切可能的法律行动,遏止侵权者不当的侵权行为,并追讨盛群公司因 侵权行为所受之损失、或侵权者所得之不法利益。
商标权
商标权
商标权商标权 盛群之名称和标识、Holtek 标识、HT-IDEHT-ICEMarvel 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
输入
输入/输出型八位
输入输入
输出型八位
输出型八位输出型八位
MTP
单片机单片机
都是盛群
Rev.1.50 1 2006-10-31
2
技术相关信息
技术相关信息
技术相关信息技术相关信息
· 工具信息
· FAQs
· 应用范例 -HA0086S HT48E MCU 系列 1K 位 EEPROM Data Memory 的读写 - 使用汇编语言 -HA0087S HT48E MCU 系列 1K 位 EEPROM Data Memory 的读写 - 使用 C 语言 -HA0088S HT48E MCU 系列 2K 位 EEPROM Data Memory 的读写 - 使用汇编语言 -
HA0089S HT48E MCU
系列2K位
EEPROM Data Memory
的读写
使用C语言
-
特性
特性
特性特性
HT48E30
· 工作电压:
fsys = 4MHz 2.2V – 5.5V fsys = 8MHz 3.3V – 5.5V
· 低电压复位功能
· 最多可有 23 个双向输入/输出口
· 1 个与输入/输出共用引脚的外部中断输入
· 8位可编程定时/计数器,具有溢出中断和 级预分频器
· 内置晶体和 RC 振荡电路
· 看门狗定时器
· 1,000 次可擦/MTP 程序存储器
· 2048×14 程序存储器 ROMMTP
·
128×8
· 96×8 数据存储器 RAM
概述
概述
概述概述
HT48E30
拥有低功耗、I/O 口稳定性高、定时器功能、振荡选择、省电和唤醒功能、看门狗定时器、蜂鸣器 驱动、以及低价位等优势,使此款多功能芯片可以广泛地适用于各种应用,例如工业控制、消费类产 品、子系统控制器等。
8
数据存储器
是一款八位高性能精简指令集单片机,专为经济型多输入/输出控制的产品设计。
EEPROM
· 蜂鸣器驱动并支持
· HALT 和唤醒功能可降低功耗
· 4 层硬件堆栈
· 在 VDD=5V,系统时钟为 8MHz 时,指令周
期为 0.5 µs
· 位操作指令
· 查表指令,表格内容字长14位
· 63 条指令
· 106次可擦/EEPROM 数据存储器
· EEPROM 数据有效期>10
· 所有指令在 1 2 个指令周期内完成
· 在线烧写功能(ISP
·
24/28-pin SKDIP/SOP
PFD
封装
Rev.1.50 2006-10-31
3
方框图
方框图
方框图方框图
P r o g r a m
M e m o r y
P r o g r a m
C o u n t e r
S T A C K
4 L e v e l s
I N T / P G 0
I n t e r r u p t
C i r c u i t
I N T C
T M R 0
T M R 0 C
HT48E30
f
S Y S
T M R / P C 0
M U X
M
P r e s c a l e r U X
引脚图
引脚图
引脚图引脚图
O S C 2
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 1
R E S V D D V S 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 / B Z
P B 0 / B Z
V S S
P G 0 / I N T
2 4 S K D I P - A / S O P - A
M P
M U X
A L U
S h i f t e r
A C C
D a t a M e m o r y
E E P R O M
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
H T 4 8 E 3 0
P G 0
M
D A T A
U
M e m o r y
X
S T A T U S
P G 1 P G 2
E E C R
P B 6
2 4
P B 7
2 3
P A 4
2 2
P A 5
2 1
P A 6
2 0
P A 7
1 9
O S C 2
1 8
O S C 1
1 7
V D D
1 6
R E S
1 5
P C 2
1 4
P C 0 / T M R
1 3
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 G C
P G
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 / B Z
P B 0 / B Z
V S S
P G 0 / I N T
P C 0 / T M R
P C 1
E N / D I S
W D T
P A 0 ~ P A 7
B Z / B Z
P O R T B
P O R T C
P O R T G
2 8 S K D I P - A / S O P - A
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
H T 4 8 E 3 0
P B 0 ~ P B 7
P C 0 ~ P C 5
P G 0
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
M
U X
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
P C 4
P C 3
P C 2
f
/ 4
S Y S
W D T O S C
Rev.1.50 2006-10-31
4
引脚说明
引脚说明
引脚说明引脚说明
引脚名称
引脚名称 输入输出
引脚名称引脚名称
PA0~PA7
PB0/BZ PB1/BZ
PB2~PB7
VSS
PG0/
INT
PC0/TMR PC1~PC5
RES
VDD
OSC1 OSC2
输入输出 掩膜选项
输入输出输入输出
输入/输出
斯密特触发输入
输入/输出
输入/输出
输入/输出
输入
输入 输出
晶体振荡或 RC
掩膜选项 说明
掩膜选项掩膜选项
上拉电阻*
唤醒功能
上拉电阻*
PB0 BZ PB1 BZ
上拉电阻*
上拉电阻*
振荡
HT48E30
说明
说明说明 双向 8 位输入/输出口。每一位能被掩膜选项设置为唤 醒输入。软件指令确定 CMOS 输出,或带上拉电阻的 斯密特触发输入(由上拉电阻位选项确定)。 双向 8 位输入/输出口。软件指令确定 CMOS 输出,或 带上 拉 电阻 的斯 密特 触发输入( 由 上 拉电阻选项 确 定)。PB0 PB1 BZ 和BZ共用一个引脚。一旦
PB0 PB1 被选为蜂鸣器输出,输出信号来自内部 PFD 发生器(与定时/计数器共用)。
负电源,接地。 双向输入/输出口。软件指令确定 CMOS 输出,或带上 拉 电阻 的 斯 密 特 触 发 输 入 ( 由 上 拉电 阻 位 选 项 确 定)。外部中断和 PG0 共用一个引脚。外部中断输入 信号下降沿有效。 双向输入/输出口。软件指令确定 CMOS 输出,或带上 拉 电阻 的 斯 密 特 触 发 输 入 ( 由 上 拉电 阻 位 选 项 确 定)。定时器输入与 斯密特触发复位输入端,低电平有效。 正电源。
OSC1和OSC2
确定)提供系统时钟。在 RC 方式下 OSC2 是一个系统 时钟四分频的输出口。
采用RC振荡或晶体振荡(由掩膜选项
共用一个引脚。
PC0
注意: “*”所有输入/输出(PAPBPCPG)的上拉电阻由一个选择位控制。
PA 端口的 CMOS 或斯密特触发选择也是以整个端口(8 )为单位的。
极限参数
极限参数
极限参数极限参数
电源供应电压 …… VSS - 0.3V Vss + 6.0V 储存温度 ………-50℃至 125℃ 端口输入电压 …… Vss - 0.3V V 端口总灌电流 ………………………. 150mA 端口总源电流 ………. -100mA 总功耗 ……………………………. 500mW
注意: 这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状 态,而且若长期在标示范围外的条件下工作,可能影响芯片的可靠性。
+ 0.3V 工作温度 ……… -40℃至 85
DD
Rev.1.50 2006-10-31
5
D.C.特性
特性 Ta=25
特性特性
测试条件
测试条件
符号
符号 参数
符号符号
VDD
I
DD1
I
DD2
I
DD3
I
STB1
I
STB2
V
VIH1
V
VIH2
V
LVR
IOL
IOH
RPH
工作电压
工作电流
(晶体振荡)
工作电流
(RC 振荡)
工作电流
(晶体振荡,RC 振荡)
静态电流
(看门狗打开)
静态电流
(看门狗关闭)
输入/输出口的低电平
IL1
输入电压, 输入/输出口的高电平 输入电压, 低 电 平 输 入 电 压
IL2
(
RES
高 电 平 输 入 电 压
(
RES
低电压复位
输入/输出口灌电流
输入/输出口源电流
上拉电阻
)
)
参数
参数参数
测试条件测试条件
VDD 条件
条件
条件条件
最小
最小 典型
最小最小
典型 最大
典型典型
最大 单位
最大最大
fsys=4MHZ 2.2 5.5 V
fsys=8MHZ 3.3 5.5 V 3V 0.6 1.5 mA 5V 3V 0.8 1.5 mA 5V
5V
3V 5 5V 3V 1 5V
0.7VDD
0 0.4V
0.9VDD
无负载
Fsys=4MHZ
2 4 mA
无负载
fsys=4MHZ
无负载
fsys=8MHZ
2.5 4 mA
4 8 mA
无负载*
暂停模式
10
无负载*
暂停模式
2
0 0.3V
VDD V
VDD V
LVR 打开
2.7 3.0 3.3 V
DD
DD
3V VOL=0.1VDD 4 8 mA 5V VOL=0.1VDD 10 20 mA 3V VOH=0.9VDD -2 -4 mA 5V VOH=0.9VDD -5 -10 mA 3V 20 60 100 5V 10 30 50
HT48E30
单位
单位单位
A
µ
A
µ
A
µ
A
µ
V
V
K K
注意:“*”所有的测试都参照 I/O 口被设置为输出并输出低电平的情况进行。
Rev.1.50 2006-10-31
6
A.C.特性
特性 Ta=25
特性特性
测试条件
测试条件
符号
符号 参数
符号符号
f
SYS1
f
SYS2
f
TIMER
t
WDTOSC
t
WDT1
t
WDT2
t
RES
t
SST
t
INT
系统时钟(晶体振荡)
系统时钟(RC 振荡)
定时器输入频率(TMR)
看门狗振荡器周期
看门狗溢出周期(WDT
OSC)
看门狗溢出周期(系统时钟) - WDT 无预分频 - 外部复位低电平脉宽 - 系统启动延时周期 HALT 模式唤醒 - 中断脉冲宽度
参数
参数参数
DD
V
2.2V~5.5V 400 — 3.3V~5.5V 400 — 2.2V~5.5V 400 — 3.3V~5.5V 400 — 2.2V~5.5V 0 4000 kH — 3.3V~5.5V 0 8000 kHZ
3V 45 90 180 5V 32 65 130 µs 3V 11 23 46 ms 5V
测试条件测试条件
条件
条件
条件条件
WDT 无预分频
最小
最小 典型
最小最小
典型 最大
典型典型
4000 kH — 8000 kHZ 4000 kH — 8000 kHZ
8 17 33 ms
1024
1
µ
1024
1
µ
HT48E30
t
t
单单单单 位位位位
µ
SYS
SYS
Z
Z
Z
s
s
s
最大
最大最大
系统功能说明
系统功能说明
系统功能说明系统功能说明
指令系统
指令系统
指令系统指令系统
HT48E30 系统时钟由晶体振荡器或 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 )
指令执行时序
指令执行时序
指令执行时序指令执行时序
指令读取与执行是以流水线方式来进行的。这种方式允许在一个指令周期进行读取指令操作,而在 下一个指令周期里进行解码与执行该指令。这种流水线方式能在一个指令周期里有效地执行一个指令。 但是,如果指令是要改变程序计数器,就需要花两个指令周期来完成这一条指令。
Rev.1.50 2006-10-31
HT48E30
7
程序计数器
程序计数器((((Program Counter — PC))))
程序计数器程序计数器
程序计数器控制存放在程序存储器中的要被执行的指令序列。程序计数器可寻址程序存储器的所有 地址。
通过访问一个程序存储单元来取出指令代码后,PC的值便会加1。然后程序计数器便会指向下一条 指令代码所在的程序存储单元。
当执行一条跳转指令,条件跳转指令,装载 PCL 寄存器,子程序调用,初始复位,内部中断,外部 中断,或从一个子程序返回,PC 会通过装载相应的地址来执行程序转移。
通过指令实现条件跳转,一旦条件满足,那么在当前指令执行期间取出的下一条指令会被放弃,而 替代它的是一条空 令。程序计数器的低位字节(
指令周期(dummy cycle)
PCL;06H
这种跳转只能在程序存储器的当前页范围内。
当一个控制转移发生时,系统也会插入一个空指令周期。
模模模模 式式式式
初始化复位 外部中断 定时/计数器 条件跳转 装载 PCL 跳转,子程序调用 从子程序返回
程序计数器 *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 Program Counter+2 *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
来获取正确的指令,接着就执行这条指令。否则就执行下一条指 )是可读写的寄存器。将数据赋值到
程序计数器
程序计数器程序计数器
会执行一个短跳转。
PCL
程序计数器
程序计数器
程序计数器程序计数器
注意:*10 ~ *0 :程序计数器位 S10 ~ S0 :堆栈寄存器位
#10 ~ #0
在线
在线烧写
烧写((((In System Programing))))
在线在线
烧写烧写
在线烧写允许对实际应用电路板上
:指令代码位
@7 ~ @0 :PCL位
HT48EXX
单片机进行烧写和重复烧写操作,这样有利于使用者 在应用开发实验过程中节省时间和成本。ISP(在线烧写)使用 3 线接口与 HT48EXX 单片机进行连接, 对芯片内部的程序存储器和 EEPROM 数据存储器进行重复烧写操作。
引脚名称
引脚名称
引脚名称引脚名称
PA0 SDATA PA4 SCLK
RES RESET
VDD VDD 电源
VSS VSS
功能
功能 说明
功能功能
说明
说明说明 串行数据输入/输出 串行时钟输入 复位
ISP 引脚定义
引脚定义
引脚定义引脚定义
Rev.1.50 2006-10-31
HT48E30
8
程序存储器
程序存储器((((Program Memory — ROM))))
程序存储器程序存储器
程序存储器被用来存放要执行的指令代码。还包括数据、中断向量。一共为 2048×14 位,可以由程
序计数器或表格指针来寻址。
在程序存储器中某几个地址被保留作为特殊用途。
· 地址 000H 此地址保留给程序初始化之用。当系统复位时,程序会从 000H 地址开始执行。
· 地址 004H 该地址保留给外部中断服务使用。当中断是开放的,且堆栈又未满,则一旦
发,就能产生中断,程序会从 004H 地址开始执行外部中断服务程序。
· 地址
008H
该地址保留给定时/计数器中断服务使用。当中断是开放的,且堆栈又未满,则一旦定时/计数器发
生溢出时,就能产生中断,程序会从 008H 地址开始执行中断服务程序。
· 表格区 程序存储器内的任何地址都可被用来作为查表使用。查表指令为 TABRDC [m] TABRDL [m]
TABRDC [m]是查表当前页的数据 [ 1 =256 个字 ( word )]TABRDL [m]是查表最后一页的数据。[m]
为数据存放的地址。在执行
TABRDC [m]
的高位字节传送到 TBLH08H)。只有表格中的低位字节被送到目标地址中,而表格中的高位字节的其 它位被传送到 TBLH 的低位部分,未用到的位为不定值。TBLH 为只读寄存器。而表格指针(TBLP
07H)是可以读写的寄存器,用来指明表格地址。在访问表格以前,通过对 TBLP 寄存器赋值来指明表
格地址。TBLH 只能读出而不能存储。如果主程序和 ISR(中断服务程序)二者都使用查表指令,那么 在主程序中的 TBLH 的内容可能会被 ISR 中的查表指令改变而产生错误。换句话说,应该避免在主程序 和
(中断服务程序)中同时使用查表指令。但是,如果主程序和
ISR
用查表指令,那么中断应该在查表指令前被禁止,直到 TBLH 被备份好。查表指令要花两个指令周期来 完成这一条指令的操作。按照用户的需要,这些区域可以作为正常的程序存储器来使用。
0 0 0 H
0 0 4 H
0 0 8 H
端被下降沿触发触
INT
指令后,将会传送当前页的一个字的低位字节到
(中断服务程序)二者都必需使
ISR
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
I n t e r r u p t S u b r o u t i n e
,而这个字
[m]
P r o g r a m
n 0 0 H
n F F H
7 0 0 H
7 F F H
N o t e : n r a n g e s f r o m 0 t o 7
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
程序存储器
程序存储器
程序存储器程序存储器
M e m o r y
表格地址
表格地址
指令
指令
指令指令
*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 :表格指针
Rev.1.50 2006-10-31
HT48E30
9
堆栈寄存器
堆栈寄存器((((Stack Register — STACK))))
堆栈寄存器堆栈寄存器
堆栈寄存器(STACK)是一个用来保存 PC 值的特殊存储空间。堆栈有 4 级组成,堆栈寄存器既不
是数据存储器的一部分,也不是程序存储器的一部分,而且它既不能读出,也不能写入。任何一级堆栈 的使用是由堆栈指针(SP)来确定。堆栈指针也不能读出与写入。一旦发生子程序调用或中断响应时, 程序 计 数 器(PC )的值会被压入堆栈。 在 子程序调用结束或从中断返回时, 通过执行一条 返回指令 (RET 或 RETI),堆栈将原先压入堆栈的内容弹出,重新装入程序计数器中。在系统复位后,堆栈指针 会指向堆栈顶部。
如果堆栈满了,并且发生了不可屏蔽的中断,那么中断请求标志将会被记录下来,但是,该中断 的响应还是会被禁止,直到堆栈指针(由 RET RETI)发生递减时,中断才会被响应。这个功能能防 止 堆 栈 溢 出, 使得 程序 员 易于 使用这 种结 构 。同 样 地, 堆栈已 满, 接 着又 执 行一 个子 程 序调 用 (CALL),那么堆栈会产生溢出,而使首先进入堆栈 的内容将会丢失。只有最后的 4 个返回地址会被保留 着。
数据存储器
数据存储器((((Data Memory — RAM))))
数据存储器数据存储器
数据存储器由
115×8
位组成。它可分成两个功能 组:特殊功能寄存器和通用数据存储区 96×8 位。这两 个功能组的大部分单元可以读写,而某些单元只能读 出,不能写入。
20H 以前以前的未用到的单元都被保留为将来进
一步扩展使用。读取这些被保留单元的值,都将返回
。通用数据存储器地址
00H
20H-7FH
控制信息使用。
所有的 RAM 区单元都能直接执行算术,逻辑,
递增,递减和移位等运算。除了某些特殊的位以外,
RAM 中的每一位都可以由 SET[].iCLR[m].i
指令来置位和复位。它们都可通过存储器指针寄存器 (MP;
01H)
间接寻址来存取。
EEPROM
器的控制寄存器在 BANK1 [40H]单元。
间接寻址寄存器
间接寻址寄存器((((Indirect Addressing Register))))
间接寻址寄存器间接寻址寄存器
地址00H02H是作为间接寻址寄存器。它们没有
实际的物理空间。任何对[00H] [02H]的读/写操作, 都会访问由
MP0(01H)和MP1(03H)
所指向的 元。间接地读取[00H][02H],将会返回00H,而间接 地写入[00H][02H],则不会产生任何结果。间接寻 址寄存器之间不支持数据传送功能。间接寻址指针
MP0MP1的宽度都是7位,它们与间接寻址寄存器相
结合用来间接访问RAMMP0只能应用于数据存储区 的BANK0,而MP1能应用于数据存储区的BANK0
BANK1。
作为程序数据和
数据存储
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
7 F H
G e n e r a l P u r p o s e
D a t a M e m o r y
M P 0
M P 1
B P
A C C
P C L
T B L P
T B L H
W D T S
S T A T U S
I N T C
T M R
T M R C
S p e c i a l P u r p o s e D a t a M e m o r y
P A
P A C
P B
P B C
P C
P C C
: U n u s e d
P G
P G C
( 9 6 B y t e s )
B a n k 0 B a n k 1
R e a d a s " 0 0 "
4 0 H
E E C R
数据存储器
数据存储器
数据存储器数据存储器
Rev.1.50 2006-10-31
HT48E30
10
累加器
累加器((((Accumulator))))
累加器累加器
累加器(ACC)与算术逻辑单元(ALU)紧密联系。它对应于 RAM 的地址 05H,并能与立即数进
行操作,在存储器间的数据传送都必须经过累加器。
算术逻辑单元
算术逻辑单元((((
算术逻辑单元算术逻辑单元
算术逻辑单元是执行 8 位算术逻辑运算的电路。它提供如下的功能:
· 算术运算 ( ADDADCSUBSBCDAA )
· 逻辑运算 ( ANDORXORCPL )
· 移位运算 ( RL,RR,RLC,RRC )
· 递增和递减运算
· 分支跳转 ( SZ,SNZ,SIZ,SDZ
算术逻辑单元 ALU 不仅会保存运算的结果而且会改变状态寄存器。
状态寄存器
状态寄存器((((Status Register — STATUS))))
状态寄存器状态寄存器
8位的状态寄存器(0AH),由零标志位(Z),进位标志位(C),辅助进位标志位(AC),溢出标志位
,暂停标志位
(OV)
运算顺序。
除了 TO PDF 以外,状态寄存器中的位都可用指令来改变,这种情况与其它寄存器一样。任何写 到状态寄存器的数据不会改变 TO PDF 标志位。但是与状态寄存器有关的运算会导致状态寄存器的改 变。系统上电,看门狗定时器溢出或执行“CLR WDT”“HALT”指令,能改变看门狗定时器溢出标志 位(TO)。系统上电,或执行“CLR WDT”“HALT”指令,能改变暂停标志位(PDF)
Z,OV,AC和C
Arithmetic and logic unit — ALU
位位位位 符号
0 C
1 AC
2 Z
3 OV
4 PDF
5 TO
6 — 7
))))
( INC,DEC )
,看门狗定时器溢出标志位
(PDF)
标志位都反映了当前的运算状态。
符号 功功功功 能能能能
符号符号
在加法运算中结果产生了进位或在减法运算中结果不产生借位,那么 C 被置位;反之,C被清零。它也可被一个循环移位指令而影响。 在加法运算中低四位产生了进位或减法运算中在低四位不产生借位,
被置位;反之,AC被清零。
AC
算术运算或逻辑运算的结果为零则 Z 被置位;反之,Z 被清零。 如果运算结果向最高位进位,但最高位并不产生进位输出,那么 OV 被置位;反之,OV 被清零。 系统上电或执行了 CLR WDT 指令,PDF 被清零。执行 HALT 指令
PDF 被置位。
系统上电或执行了 CLR WDT 指令或 HALT 指令,TO 被清零。WDT 溢出,TO 被置位。 未定义,读出为零 未定义,读出为零
组成。该寄存器不仅记录状态信息,而且还控制
(TO)
状态寄存器
状态寄存器
状态寄存器状态寄存器
另外,在进入中断子程序或执行子程序调用时,状态寄存器的内容不会自动压入堆栈。如果状态寄 存器的内容是重要的,而且子程序会改变状态寄存器的内容,那么程序员必须事先将其保存好,以免被 破坏。
Rev.1.50 2006-10-31
Status
((((
0AH
))))
HT48E30
11
中中中中 断断断断((((Interrupt))))
单片机提供一个外部中断和内部定时器/计数器中断。中断控制寄存器(INTC0BH)包含了中断控 制位,用来设置中断允许/禁止及中断请求标志。
一旦有中断子程序被服务,所有其它的中断将被禁止(通过清零 套。这时如有其它中断请求发生,这个中断请求的标志会被记录下来。如果在一个中断服务程序中有另 一个中断需要服务的话,程序员可以设置 EMI 位及 INTC 所对应的位来允许中断嵌套服务。如果堆栈已 满,该中断请求将不会被响应。即使相关的中断被允许,也要到堆栈指针发生递减时才会响应。如果需 要立即得到中断服务,则必须避免让堆栈饱和。
所有 的 中 断都具有唤醒功 能。当一个中断被服务时, 会产生一个控制传送 :通过将 程序计数器 (PC)压入堆栈,然后转移到中断服务程序的入口。只有程序计数器(PC)的内容能压入堆栈。如果寄 存器和状态寄存器的内容会被中断服务程序改变,从而破坏主程序的预定控制,那么程序员必须事先将 这些数据保存起来。
外部中断是由 INT 脚上的电平由高到低的变化触发的,相关的中断请求位(EIFINTC 的第 4 位) 被置位。当中断允许,堆栈也没有满,一个外部中断触发时,将会产生地址 04H 的子程序调用。中断请 求标志(EIF)位和 EMI 位将也会被清零来禁止中断的嵌套。
内部定时/计数器中断发生时,会设置定时/计数器中断请求标志位(TFINTC 的第五位),中断的 请求是由定时器溢出产生的。当中断允许,堆栈又未满,并且 TF 已被置位,就会产生地址 08H 的子程 序调用。该中断请求标志位(TF)被复位并且 EMI 位将被清零,以便禁止中断的嵌套。
单片机在执行中断子程序期间,其他的中断响应会被暂停,直到 关的中断控制位都被置为 1(堆栈未满时)。若要从中断子程序返回时,只要执行 RET RETI 指令即 可。RETI 指令将会自动置位 EMI 位来允许中断服务,而 RET 则不能自动置位 EMI
如果中断在二个连续的 T2 脉冲的上升沿间发生,如果中断响应被允许的话,那么在二个 T2 脉冲 后,该中断会被服务。如果同时发生中断服务请求,那么下列表中列出了中断服务优先等级。这种优先 级也可以通过 EMI 位的复位来屏蔽。
一旦中断请求标志位(EEIETI)被置位,它们将在 INTC 中被保留下来,直到相关的中断被服务 或由软件指令来清零。建议不要在中断子程序中使用 的控制序列,而中断经常随机发生或某一个确定的应用程序可能要求立即服务。基于上述情况,如果只 剩下一个堆栈,若此时中断不能很好地被控制,而且在这个中断服务程序中又执行了 CALL 子程序调 用,则会造成堆栈溢出而破坏原先的控制序列。
位)。这种机制能防止中断嵌
EMI
位位位位 符号
0 EMI 1 EEI 2 ETI 3 — 4 EIF 5 TF 定时 6 未使用位,读出为零 7
NO
a 外部中断 1 04H b
符号 功功功功 能能能能
符号符号
主中断控制位(1=允许,0=禁止) 外部中断控制位(1=允许,0=禁止) 定时/计数器中断控制位(1=允许,0=禁止) 未使用位,读出为零 外部中断请求标志位(1=有, 0=无)
计数器中断请求位(1=有,
/
未使用位,读出为零
中断控制寄存器
中断控制寄存器 INTC((((0BH))))
中断控制寄存器中断控制寄存器
中中中中
断断断断
源源源源
定时/计数器溢出
优优优优 先先先先 级级级级
“CALL”
2 08H
指令来调用子程序,因为它可能会破坏原来
0=无)
指令被执行或是
RETI
中断
中断
中断中断
位和相
EMI
Rev.1.50 2006-10-31
HT48E30
12
系统振荡器
系统振荡器
V
振荡器
振荡器((((Oscillator Configuration))))
振荡器振荡器
HT48E30 2 种振荡电路。这 2 种振荡器都是针对系统时钟
而设计的,它们是外部 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
N M O S O p e n D r a i n
如果使用 RC 型振荡器,在 OSC1 VDD 之间需要一个外部 电阻,其阻值范围为 24k1M。在 OSC2 端可获得系统时钟四 分频信号,它可用于同步外部逻辑电路。RC 型振荡方式是一种低成本的方式,可是,振荡频率会随着
、温度和制造漂移而不同。因此,在用于需要非常精确振荡频率的计时操作场合,我们并不建议使
VDD
RC 型振荡器。
如果选用的是晶体振荡器,那么在 OSC1 OSC2 之间需要连接一个晶体,用来提供晶体振荡器所 需要的反馈和相移。另外,在 OSC1 OSC2 之间还可以用谐振器代替晶体振荡器,来产生系统时钟, 但是在 OSC1 OSC2 需要多连接两个电容器至地。
WDT 振荡器是 IC 内部自由振荡的 RC 型振荡器,不需要任何外部元件。即使在系统进入暂停模
式,系统时钟被停止,但这个RC振荡器仍会运作。(其振荡周期大约为
65µs/5V
)。如欲节省电源,可
在掩膜选项中关闭 WDT 振荡器。
D D
O S C 1
/ 4
S Y S
O S C 2
Rev.1.50 2006-10-31
HT48E30
13
1:8
1:16
1:32
看门狗定时器
看门狗定时器((((Watchdog Timer — WDT))))
看门狗定时器看门狗定时器
WDT 的时钟源是由一个专用的 RC 振荡器(WDT 振荡器)或是由指令周期(系统时钟 4 分频)来
实现的,由掩膜选项来决定的。WDT 是用来防止程序不正常运行或是跳到未知或不希望去的地址,而导 致不可预见的结果。 是空操作。
如果设置了内部 WDT 振荡器(以 65 级)来产生大约 18.6ms/5V 的溢出时间,这个溢出时间会因为温度,VDD,以及芯片参数的变化而变 化。如果启动 WDT 的预分频器,则可实现更长的溢出时间。写数据到 WS2,WS1,WS0 (WDTS 21
0 )会产生不同的溢出时间,举例来说,如果 WS2WS1WS0 的值都为 1,其分频级数最大,为 1
,溢出时间最长约
128 WDT 振荡器一样。但当在 HALT 状态时,来源于指令时钟的 WDT 会在暂停模式时停止计数并失去保护
功能。在这种情况下,只能由外部逻辑来重新启动系统。WDTS 的高四位及其第 3 位保留给用户定义标 志来使用,程序员可以利用这些标志来指示某些特殊的状态。
可以被掩膜选项禁止。如果
WDT
2.4s/5V
S y s t e m C l o c k / 4
。如果
W D T O S C
WDT
定时器被禁止,所有与
WDT
s/5V 为周期的 RC 振荡器)的话,WDT 的值会先除以 2568
µ
被禁止,那么
的时钟来源可来自指令时钟,其运作与
WDT
WDT
有关的操作都
W D T P r e s c a l e r
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
如果单片机工作在干扰很大的环境中,那么强烈建议使用片内 RC 振荡器(WDT OSC),因为
HALT 模式会使系统时钟终止运作。
在正常运作下,WDT 溢出会使系统复位并设置 TO 状态位。但在 HALT 模式下,溢出只产生一个
热复位,只能使 PC 程序计数器和堆栈指针 SP 复位到零。要清除 WDT 的值(包括 WDT 预分频器)
可以有三种方法:外部复位(低电平输入到 RES 端),用软件指令和 HALT 指令三种。软件指令由
CLR WDT
和另一组指令
CLR WDT1及CLR WDT2
组成。这两组指令中,只能选取其中一种。选择的 方式由掩膜选项的 CLR WDT 次数选项决定。如果“CLR WDT”被选择(即 CLR WDT 次数为 1),那么 只要执行 CLR WDT 指令就会清除 WDT。在 CLR WDT1 CLR WDT2 被选择的情况下(即 CLR WDT 次数为 2),那么要执行二条指令才会清除 WDT。否则,WDT 会由于溢出而使系统复位。
WS2
0 0 0 0 0 1
0 1 0
WS1 WSO 分频率
分频率
分频率分频率
1:1 12 14
0 1 1 1 0 0 1 0 1 1 1 0
1:64
1 1 1 1128
看门狗定时器预置寄存器
看门狗定时器预置寄存器 WDTS((((09H))))
看门狗定时器预置寄存器看门狗定时器预置寄存器
Rev.1.50 2006-10-31
HT48E30
14
暂停模式
暂停模式((((Power Down Operation — HALT))))
暂停模式暂停模式
暂停模式是由 HALT 指令来实现的,产生如下结果:
· 关闭系统振荡器,但 WDT 振荡器继续工作(如果 WDT 时钟来源是 WDT 振荡器)。
·
· WDT 被被清除并再次重新计数(如果 WDT 时钟来源是 WDT 振荡器)。
· 所有的输入/输出口都保持其原先状态。
· PDF 标志位被置位,TO 标志位被清零。
由于外部复位、中断、外部输入一个下降沿的信号到 PA 口或 WDT 溢出,可使系统脱离暂停状
态。外部复位能使系统初始化而 WDT 溢出使系统热复位。测试 TO PDF 状态后,系统复位的原因 就可以被确定。 了 HALT 指令。如果 WDT 产生溢出,会使 TO 标志位置位,还能产生唤醒使得程序计数的 PC 和堆栈指 针 SP 复位。其他都保持原状态。
PA 口的唤醒和中断方式被看作为正常运行。PA 口的每一位都可以通过掩膜选项来单独设定为对系
统的唤醒。如果唤醒是来自于输入/输出口的信号变化,程序会重新继续执行下一条命令。如果唤醒是来 自于中断,那么有两种情况可能发生:如果相关的中断被禁止或中断是允许的,但堆栈已满,那么程序 将继续执行下条指令,如果中断允许并且堆栈未满,那么这个中断响应就发生了。如果在进入 式以前,中断请求标志位被置“1”,那么相关的中断唤醒功能被禁止。一旦唤醒事件发生,要花 1024tsys (系统时钟周期),系统重新正常运行。换句话说,在唤醒后被插入了一个等待时间。如果唤醒是来自 于中断响应,那么实际的中断程序执行就被延迟了一个或一个以上的周期。但是如果唤醒导致下一条指 令执行,那么在一个等待周期结束后指令就立即被执行。
为了省电,在进入 HALT 模式之前必须要小心处理输入/输出口状态。
及寄存器的内容保持不变。
RAM
标志位是由系统上电复位和执行
PDF
CLR WDT
指令被清除,而它的置位是由于执行
HALT
Rev.1.50 2006-10-31
HT48E30
15
复位
复位((((Reset))))
复位复位
V
有三种方法可以产生复位:
· 在正常运行时期由
· 在 HALT 期间
· 正常运行时,
RES
WDT
脚产生复位。
RES
脚产生复位。
溢出复位。
HALT 期间 WDT 溢出是不同于其它的复位操作条件,因为它可执行
热复位,结果只能使程序计数器 PC 和堆栈指针 SP 复位,而别的寄存器均保
持原来的状态。在其他复位条件下,某些寄存器保持不变。当复位条件被满足 时,极大多数的寄存器被复位到初始状态,通过测试 PDF 标志位和 TO 标志 位,程序能分辨不同的系统复位。
TO PDF
0 0 电源上电复位
u u
0 1
1 u 1 1
注释:“u”表示未变化。
正常运作时由
RES
正常运作时发生看门狗定时器超时 由看门狗定时器唤醒暂停模式
复复复复 位位位位 条条条条 件件件件
复位
RES
时唤醒暂停模式
为保证系统振荡器起振并稳定运行,那么 SST(系统启动定时器)当系统复位(上电,WDT 定时
溢出或
)或从 HALT 状态被唤醒时,提供额外延迟 1024 个系统时钟脉冲。
RES
H A L T
W D T
D D
0 . 0 1mF *
1 0 0 k
W
1 0 k
W
0 . 1mF *
复位电路
复位电路
复位电路复位电路
注意:“*”为了避免 噪声干扰,连接 脚的线应尽量短
W a r m R e s e t
R E S
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
复位时序
复位时序
复位时序复位时序
复位电路结构
复位电路结构
复位电路结构复位电路结构
当系统复位时,SST 延迟被加到复位周期中。任何来自 HALT 的唤醒都将允许 SST 延迟。 系统复位时各功能单元的状态如下所示:
程序计数器(PC) 中断
000H
禁止 预分频器 清除 看门狗定时器 清除,复位后看门狗定时器开始计数 定时/计数器 0/1 关闭 输入/输出口 输入模式 堆栈指针 SP 指向堆栈顶端
Rev.1.50 2006-10-31
Loading...
+ 34 hidden pages