HT46RU232
A/D+UART
盛群知识产权政策
盛群知识产权政策
盛群知识产权政策 盛群知识产权政策
专利权
专利权
专利权 专利权
盛群半导体公司在全球各地区已核准和申请中之专利权至少有 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 2008 by HOLTEK SEMICONDUCTOR INC.
型八位单片机
型八位单片机
型八位单片机 型八位单片机
规格书中所出现的信息在出版当时相信是正确的,然而盛群对于规格内容的使用不负责任。文中提到的应
用其目的仅仅是用来做说明,盛群不保证或不表示这些应用没有更深入的修改就能适用,也不推荐它的产
品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使用于救生、维生器件或
系统中做为关键器件。盛群拥有不事先通知而修改产品的权利,对于最新的信息,请参考我们的网址
http://www.holtek.com.tw; http://www.holtek.com.cn
Rev. 1.00 1 2008-04-23
技术相关信息
技术相关信息
技术相关信息 技术相关信息
· 工具信息
· FAQs
· 应用范例
-HA0005S HT48 & HT46 MCU 用软件执行 I 2C 总线的控制功能的方法
-HA0013S HT48 & HT46 MCU LCM 接口设计
-HA0017S HT49 MCU 系列微控制器读写 HT24 系列应用范例
-HA0075S MCU 重置电路及振荡电路应用
特性
特性
特性 特性
HT46RU232
• 工作电压:
f
=4MHz: 2.2V~5.5V
SYS
f
=8MHz: 3.3V~5.5V
SYS
• 最多可有 40 个双向输入/输出口
• 1 个与输入 /输出口共用引脚的外部中断输入
• 1 个 8 位和 2 个 16 位可编程定时 /计数器,具有
溢出中断
• 内置晶体和 RC 振荡电路
• 看门狗定时器
• 4096× 16 程序存储器 ROM
• 192× 8 数据存储器 RAM
• 具有 PFD 功能,可用于发声
• HALT 和唤醒功能可降低功耗
• 在 V
=5V,系统频率为 8MHz 时,指令周期
DD
• 8 层硬件堆栈
• 8 通道 12 位分辨率的 A/D 转换器
• 4 通道 8 位的 PWM 输出,与输入 /输出口共用
引脚
• 位操作指令
• 查表指令,表格内容字长 16 位
• 63 条指令
• 指令执行时间为 1 或 2 个指令周期
• 低电压复位功能
2
• I
C 总线 (slave 模式 )
• 通用异步接收/发送器 (UART)
28-pin SKDIP/SOP、 48-pin SSOP 封装
为 0.5µ s
概述
概述
概述 概述
HT46RU232 是 8 位高性能精简指令集单片机,专门为需要 A/D 转换产品而设计,例如传感器信号输
入。
低功耗、I/O 使用灵活、可编程分频器、计数器、振荡类型选择、多通道 A/D 转换、脉宽调制功能、
I2C 接口、UART 总线,暂停和唤醒功能,使这款单片机可以广泛应用于传感器的 A/D 转换、马达控制、
工业控制、消费类产品,子系统控制器等。
I2C 为 Philips Semiconductors 的商标
Rev. 1.00 2 2008-04-23
方框图
方框图
方框图 方框图
P r o g r a m
E P R O M
I n s t r u c t i o n
R e g i s t e r
P r o g r a m
C o u n t e r
HT46RU232
f
S Y SP r e s c a l e r
f
S Y SP r e s c a l e r
P o r t F
M
U
X
M
U
X
M
U
X
M
U
X
T M R 2
T M R 1
f
S Y S
T M R 0
f
S Y S
W D T O S C
P F 0 ~ P F 7
/ 4
/ 4
T M R 2 C
T M R 2
T M R 1 C
I n t e r r u p t
C i r c u i t
S T A C K
M
M P
U
X
B P
D a t a
M e m o r y
I N T C
T M R 1
P F D 1
T M R 0 C
T M R 0
P F D 0
W D T
P F C
P F
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 S S
A L U
S h i f t e r
A C C
M U X
S T A T U S
H A L T
L V R
E N / D I S
P A 5
P W M
P D C
P D
U A R T
P C C
P C
8 - C h a n n e l
A / D C o n v e r t e r
P B C
P B
P A C
P A
I2C B u s
S l a v e M o d e
P o r t D
P o r t C
P o r t B
P o r t A
P D 0 / P W M 0 ~ P D 3 / P W M 3
P D 4 ~ P D 7
P C 0 / T X
P C 1 / R X
P C 2 ~ P C 7
P B 0 / A N 0 ~
P B 7 / A N 7
P A 0 ~ P A 2
P A 3 / P F D
P A 4
P A 5 / I N T
P A 6 / S D A
P A 7 / S C L
Rev. 1.00 3 2008-04-23
引脚图
引脚图
引脚图 引脚图
HT46RU232
P B 5 / A N 5
P B 4 / A N 4
P A 3 / P F D
P A 2
P A 1
P A 0
P B 3 / A N 3
P B 2 / A N 2
P B 1 / A N 1
P B 0 / A N 0
V S S
P C 0 / T X
P C 1 / R X
P C 2
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 6 R U 2 3 2
P B 6 / A N 6
2 8
P B 7 / A N 7
2 7
P A 4
2 6
P A 5 / I N T
2 5
P A 6 / S D A
2 4
P A 7 / S C L
2 3
O S C 2
2 2
O S C 1
2 1
V D D
2 0
R E S
1 9
P D 1 / P W M 1 / T M R 1
1 8
P D 0 / P W M 0
1 7
P C 4
1 6
P C 3
1 5
P B 5 / A N 5
P B 4 / A N 4
P A 3 / P F D
P A 2
P A 1
P A 0
P B 3 / A N 3
P B 2 / A N 2
P B 1 / A N 1
P B 0 / A N 0
T M R 2
P F 3
P F 2
P F 1
P D 7
P D 6
P D 5
P D 4
V S S
P F 0
T M R 0
P C 0 / T X
P C 1 / R X
P C 2
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 0
2 1
2 2
2 3
2 4
H T 4 6 R U 2 3 2
4 8 S S O P - A
4 8
4 7
4 6
4 5
4 4
4 3
4 2
4 1
4 0
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
3 1
3 0
2 9
2 8
2 7
2 6
2 5
P B 6 / A N 6
P B 7 / A N 7
P A 4
P A 5 / I N T
P A 6 / S D A
P A 7 / S C L
P F 4
P F 5
P F 6
P F 7
O S C 2
O S C 1
V D D
R E S
T M R 1
P D 3 / P W M 3
P D 2 / P W M 2
P D 1 / P W M 1
P D 0 / P W M 0
P C 7
P C 6
P C 5
P C 4
P C 3
Rev. 1.00 4 2008-04-23
引脚说明
引脚说明
引脚说明 引脚说明
引脚名称
引脚名称 输入
引脚名称 引脚名称
PA0~PA2
PA3/PFD
PA4
PA5/
PA6/SDA
PA7/SCL
PB0/AN0
PB1/AN1
PB2/AN2
PB3/AN3
PB4/AN4
PB5/AN5
PB6/AN6
PB7/AN7
PC0/TX
PC1/RX
PC2~PC7
PD0/PWM0
PD1/PWM1
PD2/PWM2
PD3/PWM3
PD4~PD7
PF0~PF7
TMR0
TMR1
TMR2
RES
VSS
VDD
OSC1
OSC2
INT
输入/ 输出
输出 掩膜选项
输入 输入
输出 输出
输入/ 输出
输入/ 输出 上拉电阻
输入/ 输出 上拉电阻
输入/ 输出
输入/ 输出 上拉电阻
输入 — 定时/计数器 0 斯密特触发输入(不带上拉电阻)。
输入 — 定时/计数器 1 斯密特触发输入(不带上拉电阻)。
输入 — 定时/计数器 2 斯密特触发输入(不带上拉电阻)。
输入 — 斯密特触发复位输入,低电平有效。
— — 负电源,接地。
— — 正电源。
输入
输出
掩膜选项 功能说明
掩膜选项 掩膜选项
上拉电阻
唤醒功能
PA3 或 PFD
I/O 或 I2C
上拉电阻
PWM
晶体或 RC
8 位双向输入 /输出口。每一位可由掩膜选项设置为唤醒输
入。可由软件设置为 CMOS 输出、带或不带上拉电阻(由上
拉电阻选项决定:位选择)的斯密特触发输入。
PFD、
功能,则与 PA6、PA7 相关的寄存器将被禁用。
8 位双向输入/输出口。可由软件设置为 CMOS 输出、带或
不带上拉电阻(由上拉电阻选项决定:位选择)的斯密特触发
输入、或 A/D 输入。
一旦 PB 有一个口做为 A/D 输入(由软件设置),则其输入/
输出功能和上拉电阻会自动失效。
8 位双向输入/输出口。可由软件设置为 CMOS 输出、带或
不带上拉电阻(由上拉电阻选项决定:端口选择)的斯密特触
发输入。
TX、RX 分别与 PC0、PC1 共用引脚,一旦选择 UART 功
能,则与 PC0、PC1 相关的寄存器将被禁用。软件指令决
定是否使用 UART 功能。
8 位双向输入/输出口。可由软件设置为 CMOS 输出、带或
不带上拉电阻(由上拉电阻选项决定:端口选择)的斯密特触
发输入。
PWM0/PWM1/PWM2/PWM3 输出分别与
PD0/PD1/PD2/PD3 共用引脚 (由 PWM 选项决定 )。
8 位双向输入 /输出口。可由软件设置为 CMOS 输出、带或
不带上拉电阻(由上拉电阻选项决定:端口选择)的斯密特触
发输入。
OSC1 和 OSC2 连接 RC 或晶体(由掩膜选项确定)以产生内
部系统时钟。在 RC 振荡方式下,OSC2 是系统时钟四分频
的输出口。
分别与 PA3 、PA5 共用引脚。一旦使用 I 2C 总线
INT
功能说明
功能说明 功能说明
HT46RU232
极限参数
极限参数
极限参数 极限参数
电源供应电压………….VSS-0.3V~VSS+6.0V 储存温度………….-50℃~125℃
端口输入电压………….VSS-0.3V~VDD+0.3V 工作温度………….-40℃~85℃
IOL总电流…………. ………. ……….150mA IOH总电流…………. …. -100mA
总消耗电流………. ………. ……….500mW
注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状态,而
且若长期在标示范围外的条件下工作,可能影响芯片的可靠性。
Rev. 1.00 5 2008-04-23
HT46RU232
直流电气特性
直流电气特性 Ta=25℃
直流电气特性 直流电气特性
测试
测试条件
条件
测试 测试
符号
符号 参数
符号 符号
VDD
I
DD1
I
DD2
工作电压
工作电流(晶体振荡)
工作电流(RC 振荡)
工作电流
I
DD3
(晶体振荡,RC 振
荡)
工作电流
I
DD4
(晶体振荡,RC 振
荡)
工作电流
I
DD5
(晶体振荡,RC 振
荡)
I
STB2
静态电流
(看门狗关闭)
参数
参数 参数
V
3V
5V
3V
5V
3V
5V
5V
5V
3V
5V
DD
—
—
条件 条件
条件
条件
条件 条件
f
=4MHz 2.2
SYS
f
=8MHz 3.3
SYS
无负载, f
SYS
=4MHz
AD 关闭 ,UART 关闭
无负载, f
SYS
=4MHz
AD 关闭 ,UART 关闭
无负载, f
SYS
=4MHz
AD 关闭 ,UART 打开
无负载, f
SYS
=8MHz
AD 关闭 ,UART 关闭
无负载, f
SYS
=8MHz
AD 关闭 ,UART 打开
无负载,系统 HALT
最小
最小 典型
最小 最小
典型 最大
典型 典型
—
—
—
—
—
—
—
—
—
—
0.6 1.5 mA
2 4 mA
0.8 1.5 mA
2.5 4 mA
1 2 mA
3 6 mA
4 8 mA
5 10 mA
— —
— —
最大 单位
最大 最大
5.5 V
5.5 V
1 µ A
2 µ A
输入 /输出口、 TMR0、
V
IL1
TMR1、
INT
的低电平
— —
0
—
0.3 V
输入电压
输入/ 输出口、TMR0、
V
IH1
TMR1、
INT
的高电平
— —
0.7V
DD
—
VDD V
输入电压
V
IL2
V
IH2
V
LVR1
V
LVR2
V
LVR3
V
LVR
IOL
IOH
RPH
I
ADC
DNL
INL
RESOLU
低 电 平 输 入 电 压
(
高 电 平 输 入 电 压
(
低电压复位 1
低电压复位 2
低电压复位 3
)
)
— —
— —
掩膜选项:2.1V
掩膜选项:3.15V
掩膜选项:4.2V
0.9 V
低电压复位 — —
3V
输入/ 输出口灌电流
输入/ 输出口源电流
上拉电阻
打开 ADC 增加的功
耗
ADC 微分非线性
ADC 积分非线性
VOL=0.1VDD
5V
3V
VOH=0.9VDD
5V
3V
5V
3V
TAD=1us
5V
5 TAD=1us
5 TAD=1us
—
分辨率 — — — —
0
DD
—
—
0.4 V
VDD V
1.98 2.1 2.22 V
2.98 3.15 3.32 V
3.98 4.2 4.42 V
2.7 3 3.3 V
4 8
10 20
-2 -4
-5 -10
—
—
—
—
20 60 100
10 30 50
—
—
0.5 1 mA
1.5 3 mA
— — ±2
— ±2.5 ±4
12 Bits
DD
DD
℃
℃℃
单位
单位 单位
V
V
mA
mA
mA
mA
kΩ
kΩ
LSB
LSB
Rev. 1.00 6 2008-04-23
HT46RU232
交流电气特性
交流电气特性 Ta=25℃
交流电气特性 交流电气特性
测试条件
测试条件
符号
符号 参数
符号 符号
f
SYS
f
TIMER
t
WDTOSC
t
RES
t
SST
t
INT
tAD
t
ADC
t
ADCS
t
IIC
注:*t
系统时钟
定 时 器 输 入 频 率
(TMR0/TMR1/TMR2)
看门狗振荡器周期
外部复位低电平脉宽 — —
系统启动延迟时间 — 从 HALT 状态唤醒
中断脉冲宽度 — —
A/D 时钟周期 — —
A/D 转换时间 — — —
A/D 采样时间 — — —
I2C 总线时钟周期 — 外接 2kΩ上拉电阻
=1/f
SYS
SYS
参数
参数 参数
VDD
—
—
—
—
3V
5V
测试条件 测试条件
条件
条件
条件 条件
最小
最小 典型
最小 最小
2.2V~5.5V 400
3.3V~5.5V 400
2.2V~5.5V 0
3.3V~5.5V 0
—
—
45 90 180 µ s
32 65 130 µ s
1
—
1
1
64
典型 最大
典型 典型
—
—
—
—
最大 单位
最大 最大
4000 kHz
8000 kHz
4000 kHz
8000 kHz
— —
1024
—
— —
— —
80
32
—
—
— —
℃
℃℃
单位
单位 单位
µ s
*t
SYS
µs
µs
tAD
tAD
*t
SYS
Rev. 1.00 7 2008-04-23
HT46RU232
系统功能说明
系统功能说明
系统功能说明 系统功能说明
指令执行时序
指令执行时序
指令执行时序 指令执行时序
单片机的系统时钟由晶体或 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) 的宽度为 12 位,用来控制程序存储器 ROM 中指令执行的顺序,它可寻址 4K 个地址
的范围。取得指令码以后,程序计数器会自动加一,指向下一个指令码的地址。但如果执行跳转、条件跳
跃、向 PCL 赋值、子程序调用、初始化复位、内部中断、外部中断、子程序返回等操作时,PC 会载入与
指令相关的地址。
当遇到条件跳跃指令且符合条件时,当前指令执行过程中读取的下一条指令会被丢弃,取而代之的是
一个空指令周期,随后才能取得正确的指令。反之,就会顺序执行下一条指令。
程序计数器的低字节(PCL) 是一个可读写的寄存器(06H) 。对 PCL 赋值将产生一个短跳转动作,跳转的
范围为当前页 256 个地址。
当遇到控制转移指令时,系统也会插入一个空指令周期。
程序计数器
程序计数器
模式
模式
模式 模式
初始化复位
外部中断/AD 中断
定时/计数器 0 溢出
定时/计数器 1 溢出
UART 中断
I2C 总线中断
定时 /计数器 2 溢出
*11 *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 0 0 1 0 0
0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 1 0 1 0 0
0 0 0 0 0 0 0 1 1 0 0 0
条件跳转
装载 PCL
跳转,子程序调用
子程序返回
注: *11 ~ *0 :程序计数器位 S11 ~ S0 :堆栈寄存器位
#11~ #0 :指令代码位 @7 ~ @0 : PCL 位
*11 *10 *9 *8 @7 @6 @5 @4 @3 @2 @1 @0
#11 #10 #9 #8 #7 #6 #5 #4 #3 #2 #1 #0
S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
程序计数器
程序计数器
程序计数器 程序计数器
程序计数器 程序计数器
PC+2
Rev. 1.00 8 2008-04-23
HT46RU232
程序存储器
程序存储器 ———— EPROM
程序存储器 程序存储器
程序存储器(EPROM) 用来存放要执行的指令代码,以及一些数据、表格和中断入口。程序存储器有
4096×16 位,程序存储器空间可以用程序计数器或表格指针进行寻址。
下列程序存储器地址是系统专为特殊用途而保留:
· 地址 000H
该地址为程序初始化保留。系统复位后,程序总是从 000H 开始执行。
· 地址 004H
该地址为外部中断或 A/D 转换中断(由掩膜选项设置)服务程序保留。当
号有效,如果中断允许且堆栈未满,则程序会跳转到 004H 地址开始执行。
· 地址 008H
该地址为定时/ 计数器 0 中断服务程序保留。当定时/ 计数器 0 溢出,如果中断允许且堆栈未满,则程
序会跳转到 008H 地址开始执行。
· 地址 00CH
该地址为定时/ 计数器 1 中断服务程序保留。当定时/ 计数器 1 溢出,如果中断允许且堆栈未满,则程
序会跳转到 00CH 地址开始执行。
· 地址 010H
该地址为 UART 中断服务程序保留。当产生 UART 发送/接收中断,如果中断允许且堆栈未满,则程
序会跳转到 010H 地址开始执行。
· 地址 014H
该地址为 I 2C 总线中断服务程序保留。当 I 2C 总线从器件地址匹配或收到一个完整的数据,如果中断允
许且堆栈未满,则程序会跳转到 014H 地址开始执行。
· 地址 018H
该地址为定时/ 计数器 2 中断服务程序保留。当定时/ 计数器 2 溢出,如果中断允许且堆栈未满,则程
序会跳转到 018H 地址开始执行。
· 表格区
ROM 空间的任何地址都可作为查表使用。查表指令“TABRDC [m]”(当前页,1 页 =256 字 )和“TABRDL
[m]” (查最后页 ),会把表格内容低字节传送给[m],而表格内容高字节传送到 TBLH 寄存器(08H)。只
有表格内容的低字节被传送到目标地址中,而高字节被传送到表格内容高字节寄存器 TBLH 。表格内
容高字节寄存器 TBLH 是只读寄存器。表格指针 TBLP (07H )是可读/ 写寄存器,用来指明表格地址。
在查表之前,要先将表格地址写入 TBLP 中。所有与表格有关的指令都需要两个指令周期的执行时间。
这里提到的表格区都可以做为正常的程序存储器来使用。
指令
指令 表格区
指令 指令
*11 *10 *9 *8 *7 *6 *5 *4 *3 *2 *1 *0
表格区
表格区 表格区
TABRDC[m] P11 P10 P9 P8 @7 @6 @5 @4 @3 @2 @1 @0
TABRDL[m] 1 1 1 1 @7 @6 @5 @4 @3 @2 @1 @0
表格区
表格区
表格区 表格区
引脚输入或 A/D 转换信
INT
注: *11 ~ *0:表格地址位
P11~P8 :当前程序计数位
@7 ~ @0:表格指针位
Rev. 1.00 9 2008-04-23
0 0 0 H
0 0 4 H
0 0 8 H
0 0 C H
0 1 0 H
0 1 4 H
0 1 8 H
n 0 0 H
n 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 S u b r o u t i n e ,
A / D C o n v e r s i o n I n t e r r u p t
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
U A R T B u s I n t e r r u p t
I2C B u s I n t e r r u p t
T i m e r / E v e n t C o u n t e r 2 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 )
P r o g r a m
M e m o r y
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
2 9 H
2 A H
2 B H
2 C H
2 D H
2 E H
2 F H
3 0 H
3 1 H
3 2 H
3 3 H
3 4 H
3 5 H
S T A T U S
T X R / R X R
M P 0
M P 1
A C C
P C L
T B L P
T B L H
I N T C 0
T M R 0 H
T M R 0 L
T M R 0 C
T M R 1 H
T M R 1 L
T M R 1 C
P A
P A C
P B
P B C
P C
P C C
P D
P D C
P W M 0
P W M 1
P W M 2
P W M 3
I N T C 1
H A D R
H C R
H S R
H D R
A D R L
A D R H
A D C R
A C S R
P F
P F C
T M R 2
T M R 2 C
U S R
U C R 1
U C R 2
B R G
HT46RU232
S p e c i a l P u r p o s e
D a t a M e m o r y
F 0 0 H
F F F H
N o t e : n r a n g e s f r o m 0 t o F
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
3 F H
F F H
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
( 1 9 2 B y t e s )
: U n u s e d
R e a d a s " 0 0 "
程序存储
程序存储器器器器
程序存储 程序存储
数据存储器
数据存储器
数据存储器 数据存储器
Rev. 1.00 10 2008-04-23
HT46RU232
堆栈寄存器
堆栈寄存器 ———— STACK
堆栈寄存器 堆栈寄存器
堆栈寄存器是特殊的存储器空间,用来保存 PC 的值。HT46RU232 有 8 层堆栈,堆栈寄存器既不是数
据存储器的一部分,也不是程序存储器的一部分,而且它既不能读出,也不能写入。当前堆栈指针由 SP
指示,也不能读出或写入。当发生子程序调用或中断响应时,程序计数器(PC) 的值会被压入堆栈;在子程
序调用结束或中断响应结束时(执行指令 RET 或 RETI),堆栈将原先压入堆栈的内容弹出,重新装入程序
计数器中。在系统复位后,堆栈指针会指向堆栈顶部。
如果堆栈已满,并且发生了非屏蔽的中断,那么只有中断请求标志会被记录下来,而中断响应会被禁
止,直到堆栈指针(执行 RET 或 RETI 指令)发生递减,中断才会被响应。这个功能可以防止堆栈溢出,使
得程序员易于使用这种结构。同样,如果堆栈已满,并且发生了子程序调用,那么堆栈会发生溢出,首先
进入堆栈的内容将会丢失,只有最后的 8 个返回地址会被保留。
数据存储器
数据存储器 ———— RAM
数据存储器 数据存储器
数据存储器(RAM)由 238×8 位组成,分为两个功能区间:特殊功能寄存器(46×8 位)和通用数据存储
器(192×8 位),数据存储器单元大多数是可读/写的,但有些是只读。
在 40H 之前的空间保留给系统以后扩展使用,读取这些地址的返回值为“00H ”。40H 之前的空间在
每个 Bank 中是重复的。通用数据寄存器地址从 40H 到 FFH ,用来存储数据和控制信息。
所有的数据存储器单元都能直接执行算术、逻辑、递增、递减和循环操作。除了一些特殊位外,数据
存储器的每一位都可由“SET[m].i ”置位或由“CLR[m].i ”复位。而且都可以通过间接寻址指针(MP0 ;
01H/MP1 ;03H) 进行间接寻址。在所有 Bank 中, 40H 之前的地址空间是相互重叠的。
间接寻址寄存器
间接寻址寄存器
间接寻址寄存器 间接寻址寄存器
地址 00H 和 02H 是间接寻址寄存器,并无实际的物理空间存在。任何对[00H] 或[02H]的读/写操作,
都是访问由 MP0(01H) 或 MP1(03H) 所指向的 RAM 单元。间接读取地址 00H 或 02H 得到的值为 00H ,间接
写入此地址,不会产生任何操作。不支持两个间接寻址寄存其的数据传送。间接寻址指针 MP0(01H) 和
MP1(03H) 是 8 位寄存器,用来间接寻址对应数据寄存器的数据。
累加器
累加器
累加器 累加器
累加器(ACC) 与算术逻辑单元(ALU)有密切关系。它对应于 RAM 地址 05H ,可作为算术运算的立即数
据。存储器之间的数据传送必须经过累加器。
算术逻辑单元
算术逻辑单元 ———— ALU
算术逻辑单元 算术逻辑单元
算术逻辑单元(ALU) 是执行 8 位算术和逻辑运算的电路,它提供以下功能:
· 算术运算(ADD ,ADC ,SUB ,SBC,DAA)
· 逻辑运算(AND ,OR ,XOR ,CPL)
· 移位运算(RL ,RR ,RLC ,RRC)
· 递增和递减(INC ,DEC)
· 分支判断(SZ ,SNZ ,SIZ ,SDZ…)
ALU 不仅可以储存数据运算的结果,还会改变状态寄存器的值。
Rev. 1.00 11 2008-04-23
HT46RU232
状态寄存器
状态寄存器 ———— STATUS
状态寄存器 状态寄存器
8 位状态寄存器(0AH) ,由进位标志位(C) 、辅助进位标志位 (AC) 、零标志位 (Z) 、溢出标志位 (OV) 、暂
停标志位(PDF) 和看门狗定时器溢出标志位(TO)组成。该寄存器不仅记录状态信息,而且还控制操作顺序。
除了 PDF 和 TO 标志外,状态寄存器的其它位都可以用指令改变。任何对状态寄存器的写操作都不会
改变 PDF 和 TO 的值。对状态寄存器的操作可能会导致与预期不一样的结果。TO 和 PDF 标志只受看门狗
溢出、系统上电、“CLR WDT ” 指令或“HALT” 指令的影响。
标志位 Z 、OV、AC 和 C 反映的是最近一次操作的状态。在进入中断程序或子程序调用时,状态寄存
器不会被自动压入堆栈。如果状态寄存器的内容是重要的,且子程序会影响状态寄存器的内容,那么程序
员必须事先将 STATUS 的值保存好。
位位位位 符号
0 C
1 AC
2 Z
3 OV
4 PDF
5 TO
6, 7 — 未用,读出为“ 0”
符号 功能
符号 符号
功能
功能 功能
如果在加法运算中结果产生了进位或在减法运算中结果不产生借位
则 C 被置位;反之,C 被清除。它也可被循环移位指令影响。
如果在加法运算中低 4 位产生了进位或减法运算中低 4 位不产生借
位,则 AC 被置位;反之,AC 被清除。
如果算术或逻辑运算的结果为零,则 Z 被置位;反之,Z 被清除。
如果运算结果向最高位进位,但最高位并不产生进位输出,则 OV 被
置位,反之亦然;否则 OV 被清除。
系统上电或执行“CLR WDT”指令,PDF 被清除;执行“HALT”指
令,PDF 被置位。
系统上电、执行“CLR WDT”或“HALT”指令,TO 被清除;WDT
定时溢出,TO 被置位。
STATUS(0AH)
STATUS(0AH) 寄存器
STATUS(0AH) STATUS(0AH)
寄存器
寄存器 寄存器
Rev. 1.00 12 2008-04-23
HT46RU232
中断
中断
中断 中断
HT46RU232 提供一个外部中断或 A/D 转换中断(由掩膜选项设置)、三个内部定时/ 计数器中断、一
个 UART 中断和一个 I 2C 总线中断。中断控制寄存器 0(INTC0 ;0BH) 和中断控制寄存器 1(INTC1 ;1EH)
包含了中断控制位和中断请求标志,中断控制位用来设置中断允许/ 禁止。
位位位位 符号
0 EMI
1
2 ET0I
3 ET1I
4
5 T0F
6 T1F
7
一旦进入中断服务程序,其余的中断全部都被自动禁止(通过清除 EMI 位),这种做法的目的在于防止
中断嵌套。这时如果有其它中断发生,只有中断请求标志会被记录下来。如果在中断服务程序中有另一个
中断需要响应,程序员可以置位 EMI 、INTC0 和 INTC1 对应的位,以便进行中断嵌套。如果堆栈已满,
即使对应的中断允许,也要等到堆栈指针(SP) 发生递减后才会响应。如果需要中断立即得到响应,应避免
堆栈饱和。
所有的中断都具有唤醒能力。当有中断被服务,系统会将程序计数器值压入堆栈,然后再跳转至中断
服务程序的入口。但这时只有程序计数器的内容被压入堆栈,如果其它寄存器和状态寄存器的内容会被中
断程序改变,从而会破坏主程序的控制流程的话,程序员应该事先将这些数据保存起来。
中断向量 04H 由外部中断或 A/D 转换中断触发,可通过掩膜选项进行设置。若中断源为 A/D 转换(而
不是
引脚触发),
INT
部中断。
外部中断由
INT
允许,且堆栈未满,当发生外部中断时,会产生地址 04H 的子程序调用;而中断请求标志 EIF 和总中断控
制位 EMI 会被清除,以禁止其它中断响应。
A/D 转换中断由 A/D 转换结束触发,其中断请求标志位(ADF;INTC0 的第 4 位)会被置位。如果中断
允许,且堆栈未满,当 ADF 被置位时,会产生地址 04H 的子程序调用;而中断请求标志 ADF 和总中断控
制位 EMI 会被清除,以禁止其它中断响应。
内部定时/ 计数器 0 中断是由定时/ 计数器 0 溢出触发,其中断请求标志(T0F;INTC0 的第 5 位)会被置
位。如果中断允许,且堆栈未满,当发生定时/ 计数器 0 中断时,会产生地址 08H 的子程序调用;而中断
请求标志 T0F 和总中断控制位 EMI 会被清除,以禁止其它中断响应。
符号 功功功功 能能能能
符号 符号
总中断控制位(1= 允许;0= 禁止)
EEI 或
EADI
外部中断控制位(1=允许;0=禁止)或 A/D 转换中断
控制位(1=允许;0=禁止)
定时/计数器 0 中断控制位(1=允许;0=禁止)
定时/计数器 1 中断控制位(1=允许;0=禁止)
EIF 或
ADF
外部中断或 A/D 转换中断请求标志(1= 有;0= 无)
定时/计数器 0 中断请求标志(1=有;0=无)
定时/计数器 1 中断请求标志(1=有;0=无)
—
只作内部测试用
使用时必须写入‘0 ’;否则会发生不可预知的错误
INTC0(0BH)
INTC0(0BH) 寄存器
INTC0(0BH) INTC0(0BH)
寄存器
寄存器 寄存器
位位位位 符号
符号
符号 符号
0 EURI
1 EHI
2 ET2I
3
— 未用,读出为“ 0”
4 URF
5 HIF
6 T2F
7
— 未用,读出为“ 0”
UART 中断控制位 (1=允许;0=禁止)
I2C 总线中断控制位 (1=允许;0=禁止)
定时 /计数器 2 中断控制位 (1=允许; 0=禁止 )
UART 中断请求标志 (1=有;0=无 )
I2C 总线中断请求标志 (1=有;0=无)
定时/ 计数器 2 中断请求标志(1= 有;0= 无)
功功功功 能能能能
INTC1(1EH)
INTC1(1EH) 寄存器
INTC1(1EH) INTC1(1EH)
寄存器
寄存器 寄存器
边沿触发掩膜选项将不起作用,当 EADI 和 EMI 使能时, A/D 转换结束将触发外
INT
引脚下降沿信号触发,其中断请求标志位 (EIF; INTC0 的第 4 位 )会被置位。如果中断
Rev. 1.00 13 2008-04-23
HT46RU232
定时 /计数器 1 和定时 /计数器 2 的中断响应过程与定时 /计数器 0 相同,定时 /计数器 1 中断请求标志为
T1F(INTC0 的第 6 位 ),中断入口地址为 0CH。定时 /计数器 2 中断请求标志为 T2F(INTC1 的第 6 位 ),中
断入口地址为 018H 。中断请求标志 T1F 和 T2F 会被清除,以禁止其它中断响应。
异步串行中断是由发送数据寄存器为空(TXIF 标志位)、接收数据有效(RXIF 标志位)、发送空闲
(TIDLE 标志位),数据超速(OERR 标志位)或侦测地址匹配触发,其中断请求标志(URF ;INTC1 的
第 4 位)会被置位。如果中断允许,且堆栈未满,当 TXIF 、RXIF 、TIDLE 或 OERR 被置位,会产生地址
010H 的子程序调用;而中断请求标志 URIF 和总中断控制位 EMI 会被清除,以禁止其它中断响应。
I2C 总线中断是由从器件地址匹配(HAAS=“1”)或 1 个字节数据传送完整触发,其中断请求标志位(HIF;
INTC1 的第 5 位 )会被置位。如果中断允许,且堆栈未满,当发生 I 2C 总线中断时,会产生地址 014H 的子
程序调用;而中断请求标志位 HIF 和总中断控制位 EMI 会被清除,以禁止其它中断响应。
在执行中断子程序期间,其它的中断请求会被屏蔽,直到执行 RETI 指令或 EMI 和相关中断控制位被
置位(当然,此时堆栈未满)。如果要从中断子程序返回,只要执行 RET 或 RETI 指令即可。其中,RETI
指令会自动置位 EMI,以允许中断服务,而 RET 则不会。
中断发生在两个连续的 T2 脉冲上升沿之间,如果中断响应允许,那么在后一个 T2 脉冲之间,该中
断会被服务。如果同时发生中断请求,其优先级如下表示;也可以通过设定各中断相关的控制位来改变优
先级。
中断源
中断源 优先级
中断源 中断源
外部中断或 A/D 转换中断
定时/计数器 0 中断
定时/计数器 1 中断
UART 中断
I2C 总线中断
定时/ 计数器 2 中断
定时/ 计数器 0/1 中断请求标志(T0F ,T1F ),外部中断请求标志(EIF ),A/D 转换请求标志(ADF ),
I2C 总线中断请求标志( HIF),定时/计数器中断使能位(ET0I, ET1I, ET2I),外部中断使能位(EEI),
A/D 转换中断使能位( EADI),I 2C 总线中断使能位( EHI),UART 中断使能位(EURI)和总中断控制位
( EMI)组成中断控制寄存器 INTC0( 0BH)和中断控制寄存器 INTC1( 1EH)。 EMI, EEI, ET0I , ET1I ,
ET2I, EADI, EHI, EURI 用来控制中断的使能/禁止,禁止请求的中断响应服务程序。一旦中断请求标志
(T0F, T1F, EIF, ADF,HIF, URF)被置位,会一直保留在 INTC0 和 INTC1 寄存器中,直到中断被响应
或用软件指令清除为止。
建议不要在中断服务程序中使用“CALL ”指令来调用子程序。因为中断随时都可能发生,而且需要
立刻给予响应。如果只剩下一层堆栈,而中断不能被很好地控制,原先的控制序列很可能因为在中断子程
序中执行“CALL ”指令而使堆栈溢出,从而发生混乱。
优先级 中断向量
优先级 优先级
中断向量
中断向量 中断向量
1 04H
2 08H
3 0CH
4 10H
5 14H
6 18H
Rev. 1.00 14 2008-04-23
HT46RU232
振荡电路
振荡电路
振荡电路 振荡电路
HT46RU232 有两种振荡方式,外部 RC 振荡和外部晶体振荡,可以通过掩膜选项设定,不管选用哪一
种振荡方式,其信号都可以作为系统时钟。HALT 模式会停止系统振荡,并忽略任何外部信号以降低功耗。
O S C 1
V
D D
4 7 0 p F
O S C 1
f
/ 4
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
系统振荡器
系统振荡器
系统振荡器 系统振荡器
S Y S
O S C 2
如果选用外部 RC 振荡方式,在 OSC1 与 VSS 之间需要接一个外部电阻,其阻值为 30kΩ ~750kΩ ;
而 OSC2 上会输出带上拉的系统频率的 4 分频信号,可用于同步外部逻辑。RC 振荡方式是一种低成本的
方案,但是,RC 振荡频率会随着 VDD、温度和芯片自身参数的漂移而产生误差。因此,在需要精确振荡
频率作为计时操作的场合,并不适合使用 RC 振荡方式。
如果选用晶体振荡方式,在 OSC1 和 OSC2 之间需要连接一个晶体,用来提供晶体振荡器所需的反馈
和相移,除此之外,不再需要其它外部元件。另外,在 OSC1 和 OSC2 之间也可使用谐振器来取代晶体振
荡器,但是在 OSC1 和 OSC2 需要多连接两个电容(如果振荡频率小于 1MHz)。
WDT 振荡器是一个内部 RC 振荡器,并不需要连接任何外部元件。当系统进入暂停模式时,系统时钟
会停止,但 WDT 振荡器会继续工作,其振荡周期大约为 65µs/5V 。如果要降低功耗,可在掩膜选项中关
闭 WDT 振荡器。
Rev. 1.00 15 2008-04-23
HT46RU232
看门狗定时器
看门狗定时器
看门狗定时器 看门狗定时器
看门狗定时器的时钟来源来自内部 RC 振荡器(看门狗振荡器)或指令时钟(系统时钟 4 分频),由掩
膜选项设置。看门狗定时器主要用来防止程序运行故障或程序跳入一死循环而导致不可预测的结果。看门
狗定时器可由掩膜选项设置为关闭,如果在关闭状态,所有与 WDT 有关的指令操作都是没有作用的。
S y s t e m C l o c k / 4
8
M a s k
f
s
D i v i d e r
W D T
O S C
o p t i o n
s e l e c t
如果 WDT 时钟源为内部 WDT 振荡(RC 振荡周期一般为 65µ s/5V),该频率经过 212~215的分频(掩膜
选项设置 WDT 溢出周期),最小的 WDT 溢出周期大约是 300mS~600mS。溢出周期会因为温度、VDD 以
及芯片参数的变化而变化。如果 WDT 的溢出周期设置为 215,则最大的溢出时间可达到 2.1s~4.3s(分频系
数为 215~216)。
如果 WDT 振荡器禁止,还可以使用指令时钟作为 WDT 时钟,只是在 HALT 时,WDT 会停止计数
而失去保护功能;此时只能靠外部逻辑复位来重新启动系统。如果系统运用在强干扰的环境中,建议选用
内部 WDT 振荡器,因为 HALT 模式会使系统时钟停止,看门狗也就失去了保护的功能。
在正常运行时,WDT 溢出会使系统复位并置位 TO 标志;但在 HALT 模式下,WDT 溢出只产生“热
复位”,只有程序计数器 PC 和堆栈指针 SP 被复位。有三种方法清除 WDT 的值,外部复位(低电平输入到
引脚)、清除看门狗指令或 HALT 指令。清除看门狗指令有“CLR WDT”和“CLR WDT1”、“CLR WDT2”
两组指令。这两组指令中,只能选择其中一组,由掩膜选项决定。如果选择“CLR WDT”,那么只要执行
“CLR WDT” 指令就会清除 WDT。如果选择“CLR WDT1”和“CLR WDT2”,那么两条指令要交替使
用才会清除 WDT,否则,WDT 会由于溢出而使系统复位。
由于“CLR WDT ”和“CLR WDT1 ”、“CLR WDT2 ”指令只能清除最后两级 WDT 分频器,当 WDT
的溢出周期选择 f S/212(由掩膜选项决定),则 WDT 的溢出周期为 fS/212~f S/213。
fs/ 2
W D T P r e s c a l e r
M a s k O p t i o n
看门狗定时器
看门狗定时器
看门狗定时器 看门狗定时器
W D T C l e a r
C KRT C KRT
T i m e - o u t R e s e t
1 5
1 6
~ 2 / f
2 / f
S
S
1 4
1 5
2 / fS ~ 2 / fS
1 3
1 4
~ 2 / fS
2 / f
S
1 2
1 3
2 / f
~ 2 / fS
S
暂停模式
暂停模式 ———— HALT
暂停模式 暂停模式
暂停模式是由 HALT 指令实现,执行暂停模式时系统状态如下:
· 系统振荡器停振,但 WDT 振荡器会继续振荡(如果选择 WDT 振荡器)。
· RAM 和寄存器内容保持不变。
· WDT 被清除并重新开始计数(如果 WDT 时钟来源为 WDT 振荡器)。
· 所有输入/ 输出口都保持其原有状态。
· 置位 PDF 标志,清除 TO 标志。
外部复位、中断、PA 口下降沿信号或看门狗定时器溢出可以使系统离开暂停模式。其中,外部复位
会使系统初始化,WDT 溢出则会发生“热复位”。通过检测 TO 和 PDF 标志,即可了解系统复位的原因。
PDF 标志可由系统上电或执行“CLR WDT ”指令清除,由 HALT 指令置位。 TO 标志由 WDT 溢出置位,
同时产生唤醒,但只有程序计数器 PC 和堆栈指针 SP 被复位,其它都保持其原有的状态。
PA 口唤醒和中断唤醒可作为正常运行的继续。PA 口的每一位都可以由掩膜选项设置为唤醒功能。如
果是由输入/ 输出口唤醒,程序会从下一条指令开始运行。如果是由中断唤醒,可能会发生两种情况,如果
中断禁止或中断允许但堆栈已满,程序将会从下一条指令开始运行;如果中断允许且堆栈未满,则会产生
一般的中断响应。如果在进入 HALT 模式之前,中断请求标志位已被置“1 ”,则中断唤醒功能被禁止。
当发生唤醒,系统需要额外花费 1024t
(系统时钟周期 )的时间,才能重新正常运行,也就是说,唤
SYS
醒之后会插入一个等待周期。如果唤醒是由中断产生的话,则实际中断子程序的执行会延迟一个以上的周
期。如果唤醒导致下一条指令执行,那么在等待周期执行完成之后,会立即执行该指令。
为减小功耗,在进入暂停模式之前,应小心处理所有的输入/ 输出口状态。
Rev. 1.00 16 2008-04-23
HT46RU232
复位
复位
复位 复位
有三种方法会产生复位:
· 正常运行时由
· 在暂停模式由
· 正常运行时由看门狗定时器溢出发生复位。
暂停模式中的看门狗定时器溢出与其它系统复位状况不同,因为看门狗定时器溢出会执行“热复位”,
只有程序计数器 PC 和堆栈指针 SP 被复位,而系统其它部分都保持原有状态。在其它复位状态下,某些寄
存器不会改变。在初始复位时,大部分寄存器会复位成初始的状态。通过检测 PDF 和 TO 标志,即可判断
出各种不同的复位原因。
为了保证系统振荡器起振并稳定运行,系统复位或由暂停状态唤醒时,系统启动定时器(SST) 提供了
一个额外的延迟时间,共 1024 个系统时钟周期。
系统由暂停模式唤醒或上电复位时,SST 会被加在复位延时中。上电复位时会加入额外的 SST 延迟,
而由暂停模式唤醒仅有 SST 延迟。系统复位时各功能单元的状态如下所示:
引脚发生复位。
引脚发生复位。
RES
TO PDF
0 0
u u
0 1
1 u
1 1
注:“u ”表示不变
上电时
正常运行时
暂停模式下
正常运行时 WDT 溢出
暂停模式下 WDT 溢出
复位原因
复位原因
复位原因 复位原因
发生复位
发生复位
发生复位
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
PC 000H
中断 禁止
预分频器、分频器 清除
WDT
清除,在主系统复位后,WDT 开始计数
定时/计数器 停止
输入/输出口 输入模式
堆栈指针 SP 指向堆栈顶部
H A L T
W D T
W D T
T i m e - o u t
R e s e t
R E S
t
+ t
S S T
O P D
O S C 1
复位时序
复位时序 复位电路结构
复位时序 复位时序
1 0 0 k
0 . 1mF
V
D D
1 0 0 k
W
R E S
B a s i c
R e s e t
C i r c u i t
W
1 0 k
W
0 . 1mF
复位电路
复位电路
复位电路 复位电路
S S T
1 0 - b i t R i p p l e
C o u n t e r
P o w e r - o n D e t e c t i o n
V
D D
0 . 0 1mF
H i - n o i s e
C i r c u i t
E x t e r n a l
复位电路结构
复位电路结构 复位电路结构
R E S
R e s e t
W a r m R e s e t
C o l d
R e s e t
注:多数应用场合可使用基本复位电路,然而在高杂讯场合建议使用高噪声复位电路。
Rev. 1.00 17 2008-04-23
有关寄存器的状态如下
有关寄存器的状态如下::::
有关寄存器的状态如下 有关寄存器的状态如下
复位
复位
寄存器
寄存器
寄存器 寄存器
MP0 xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
MP1 xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
ACC xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
PC 000H 000H 000H 000H 000H
TBLP xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
TBLH xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
STATUS --00 xxxx --lu uuuu --uu uuuu --01 uuuu --11 uuuu
INTC0 -000 0000 -000 0000 -000 0000 -000 0000 -uuu uuuu
TMR0H xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
TMR0L xxxx xxxx xxxx xxxx xxxx xxxx
TMR0C 00-0 1000 00-0 1000 00-0 1000 00-0 1000 uu-u uuuu
TMR1H xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu 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
PBC 1111 1111 1111 1111 1111 1111 1111 1111 uuuu uuuu
PC 1111 1111 1111 1111 1111 1111 1111 1111 uuuu uuuu
PCC 1111 1111 1111 1111 1111 1111 1111 1111 uuuu uuuu
PD 1111 1111 1111 1111 1111 1111 1111 1111 uuuu uuuu
PDC 1111 1111 1111 1111 1111 1111 1111 1111 uuuu uuuu
PWM0 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
PWM1 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
PWM2 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
PWM3 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
INTC1 --00 -000 --00 -000 --00 -000 --00 -000 --uu -uuu
HADR xxxx xxx- xxxx xxx- xxxx xxx- xxxx xxx- uuuu uuu-
HCR 0--0 0--- 0--0 0--- 0--0 0--- 0--0 0--- u--u u---
HSR 100- -0-1 100- -0-1 100- -0-1 100- -0-1 uuuu uuuu
HDR xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
ADRL xxxx ---- xxxx ---- xxxx ---- xxxx ---- uuuu ----
ADRH xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
ADCR 0100 0000 0100 0000 0100 0000 0100 0000 uuuu uuuu
ACSR 1--- --00 1--- --00 1--- --00 1--- --00 u--- --uu
PF 11111111 11111111 11111111 11111111 uuuu uuuu
PFC 11111111 11111111 11111111 11111111 uuuu uuuu
TMR2 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
TMR2C 00-0 1000 00-0 1000 00-0 1000 00-0 1000 uu-u uuuu
USR 0000 1011 0000 1011 0000 1011 0000 1011 uuuu uuuu
UCR1 0000 00x0 0000 00x0 0000 00x0 0000 00x0 uuuu uuuu
复位 复位
(上电复位
上电复位)
上电复位 上电复位
WDT 溢出
溢出
溢出 溢出
(正常运行
正常运行)
正常运行 正常运行
复位
复位
复位 复位
RES
(正常运行
正常运行)
正常运行 正常运行
复位
复位
复位 复位
RES
(暂停模式
暂停模式)
暂停模式 暂停模式
xxxx xxxx uuuu uuuu
WDT 溢出
(暂停模式
暂停模式)*
暂停模式 暂停模式
uuuu uuuu
HT46RU232
溢出
溢出 溢出
Rev. 1.00 18 2008-04-23
HT46RU232
UCR2 0000 0000 0000 0000 0000 0000 0000 0000 uuuu uuuu
TXR/RXR xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
BRG xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
注: “*”表示“热复位
“u”表示不变化
“x”表示不确定
定时
定时/ 计数器
计数器
定时 定时
计数器 计数器
HT46RU232 有两个定时/ 计数器(TMR0 ,TMR1) 。定时/ 计数器 0 是一个 16 位向上计数器,其时钟来
源可以是外部信号输入或内部时钟,内部时钟为 f
源可以是外部信号输入或内部时钟,内部时钟为 f
间隔、测量脉冲宽度或产生一个精确的时基信号。
有六个与定时/ 计数器 0/1 有关的寄存器,TMR0H(0CH)、TMR0L(0DH)、TMR0C(0EH)、TMR1H(0FH)、
TMR1L(10H)、 TMR1C(11H)。 写 入 TMR0L(TMR1L)只 能 将 数据 写 到低 字 节 缓 冲器 (8 位 ) , 而写 入
TMR0H(TMR1H)会把指定数据和低字节缓冲器的数据分别写到 TMR0H(TMR1H)和 TMR0L(TMR1L)预置
寄存器中 , 定 时 /计 数 器 0/1 预置寄存器 的 内 容只有在 写 入 TMR0H(TMR1H)时才会 被 改 变 。读取
TMR0H(TMR1H)会把 TMR0H(TMR1)的内容送至目标单元,而 TMR0L(TMR1L)的值被送至低字节缓冲器
中。读 TMR0L(TMR1L) 将读取低字节缓冲器的值。TMR0C(TMR1C)是定时/计数器 0/1 控制寄存器,用来
定义定时/ 计数器一些选项。
P W M
f
S Y S
( 6 + 2 ) o r ( 7 + 1 )
C o m p a r e
8 - s t a g e P r e s c a l e r
8 - 1 M U X
T 0 P S C 2 ~ T 0 P S C 0
T o P D 0 / P D 1 / P D 2 / P D 3 C i r c u i t
f
I N T
T 0 M 1
T M R 0
T 0 M 0
T 0 E
。定时 /计数器 1 是一个 16 位向上计数器,其时钟来
SYS
/4。外部信号输入可以用来计数外部事件、测量时间
SYS
D a t a B u s
L o w B y t e
B u f f e r
1 6 - B i t
P r e l o a d R e g i s t e r
R e l o a d
f
S Y S
T M R 1
/ 4
T 1 M 1
T 1 M 0
T 1 O N
T 0 M 1
T 0 M 0
T 0 O N
f
I N T
T 1 M 1
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
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
H i g h B y t e
1 6 - B i t T i m e r / E v e n t C o u n t e r
定时
定时////计数器
计数器 0000
定时 定时
计数器 计数器
L o w B y t e
B u f f e r
1 6 - B i t
P r e l o a d R e g i s t e r
H i g h B y t e
1 6 - B i t T i m e r / E v e n t C o u n t e r
定时
定时////计数器
定时 定时
L o w B y t e
计数器 1111
计数器 计数器
L o w B y t e
D a t a B u s
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
P F D 1
O v e r f l o w t o I n t e r r u p t
P F D 0
Rev. 1.00 19 2008-04-23
f
S Y S
8 - s t a g e P r e s c a l e r
8 - 1 M U X
T 2 P S C 2 ~ T 2 P S C 0
( 1 / 1 ~ 1 / 1 2 8 )
T M R 2
HT46RU232
f
I N T
T 2 M 1
T 2 M 0
T 2 E
8 - B i t 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
D a t a B u s
R e l o a d
T 2 M 1
T 2 M 0
T 2 O N
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
P F D 0
P F D 1
定时
定时////计数器
计数器 2222
定时 定时
计数器 计数器
M
1 / 2
U
X
P A 3 D a t a C T R L
P F D S o u r c e O p t i o n
PFD
PFD 来源选择
来源选择
PFD PFD
来源选择 来源选择
8 - B i t T i m e r / E v e n t
C o u n t e r ( T M R 2 )
P F D
O v e r f l o w
t o I n t e r r u p t
T0M0/T0M1(TMR0C) 、T1M0/T1M1(TMR1C) 和 T2M0/T2M1(TMR2C) 用来定义定时/ 计数器的工作模
式。外部事件计数模式是用来记录外部事件,其时钟来源为外部引脚(TMR0 、TMR1 、TMR2) 输入。定时
器模式是一个常用模式,其时钟来源为内部时钟。脉宽测量模式可以测量引脚(TMR0、TMR1、TMR2)高/
低电平的脉冲宽度,其时钟来源为内部时钟。
在定时模式或外部事件计数模式中,一旦开始计数,定时/ 计数器会从寄存器当前值向上计到 FFFFH 。
一旦发生溢出,定时/ 计数器会从预置寄存器中重新加载初值,同时置位中断请求标志。
在脉宽测量模式中,当 T0ON/T1ON/T2ON 与 T0E/T1E/T2E 是 1 时,只要 TMR0/TMR1/TMR2 引脚有
一个 上 升沿 信 号( 如 果 T0E/T1E/T2E 是 0 ,则为 下降 沿 信 号) , 定时 / 计数 器 就会 开 始计数 ,直到
TMR0/TMR1/TMR2 脚电平恢复,同时 T0ON/T1ON/T2ON 被清零。测量的结果会保存在寄存器中,直到
有新的测量开始。换句话说,一次只能测量一个脉冲宽度。重新置位 T0ON/T1ON/T2ON 后,可以继续测
量。注意,在该模式下,定时/计数器是跳变触发而不是电平触发。当计数器溢出时,定时/计数器会从预
置寄存器中重新加载初值,并置位中断请求标志,这与其它两种模式一样。
要启动计数器,只要置位 T0ON/T1ON/T2ON 。在脉宽测量模式下,T0ON/T1ON/T2ON 在测量结束后
会被自动清除;但在另外两种模式中,T0ON/T1ON/T2ON 只能由指令来清除。定时/ 计数器 0/1/2 的溢出可
以作为唤醒信号,并可以提供给 PFD ( 可编程分频输出)使用。如果 PA3 选择为 PFD 输出,有两种模式选
择,一种是选择 PFD0 作为 PFD 输出,另一种是选择 PFD1 作为 PFD 输出,PFD0 、PFD1 分别是定时/ 计
数器 0 、定时/ 计数器 1 的溢出信号。不管什么模式,写 0 到 ET0I 或 ET1I 可禁止定时/ 计数器中断服务。
当使用 PFD 功能时,执行“SET [PA].3”可以打开 PFD 输出,执行“CLR [PA].3”则关闭 PFD 输出。
位位位位 符号
符号 功能
符号 符号
功能
功能 功能
定义预分频器级数,T0PSC2,T0PSC1,T0PSC0=
000: f
INT=fSYS
001: f
INT=fSYS
0
1
2
T0PSC0
T0PSC1
T0PSC2
010: f
011: f
100: f
101: f
110: f
111: f
INT=fSYS
INT=fSYS
INT=fSYS
INT=fSYS
INT=fSYS
INT=fSYS
/2
/4
/8
/16
/32
/64
/128
定义定时/计数器 TMR0 的触发方式
在事件计数模式(T0M1,T0M0)=(0,1):
1:在下降沿计数
3 T0E
0:在上升沿计数
在脉冲宽度测量模式( T0M1, T0M0) = (1, 1):
1:在上升沿开始计数,下降沿停止计数
0:在下降沿开始计数,上升沿停止计数
4 T0ON
打开 /关闭定时 /计数器 (0=关闭, 1=打开 )
Rev. 1.00 20 2008-04-23
HT46RU232
5
6
7
位位位位 符号
0~2
— 未用,读出为“ 0”
T0M0
T0M1
符号 功能
符号 符号
— 未用,读出为“0”
3 T1E
4 T1ON
5
6
7
— 未用,读出为“ 0”
T1M0
T1M1
定义工作模式, T0M1, T0M0:
01=事件计数模式 (外部时钟 )
10=定时模式 (内部时钟 )
11=脉冲宽度测量模式
00 =未用
TMR0C(0EH)
TMR0C(0EH) 寄存器
TMR0C(0EH) TMR0C(0EH)
寄存器
寄存器 寄存器
功能
功能 功能
定义定时/计数器 TMR1 的触发方式
在事件计数模式(T1M1,T1M0)=(0,1):
1:在下降沿计数
0:在上升沿计数
在脉冲宽度测量模式( T1M1, T1M0) = (1, 1):
1:在上升沿开始计数,下降沿停止计数
0:在下降沿开始计数,上升沿停止计数
打开/ 关闭定时/ 计数器( 1= 打开,0=关闭)
定义工作模式:T1M1 ,T1M0
01=事件计数模式 (外部时钟 )
10=定时模式 (内部时钟 )
11=脉冲宽度测量模式
00 =未用
TMR1C(11H)
TMR1C(11H) 寄存器
TMR1C(11H) TMR1C(11H)
寄存器
寄存器 寄存器
位位位位 符号
符号 功能
符号 符号
功能
功能 功能
定义预分频器级数,T2PSC2,T2PSC1,T2PSC0=
000: f
INT=fSYS
001: f
INT=fSYS
0
1
2
T2PSC0
T2PSC1
T2PSC2
010: f
011: f
100: f
101: f
110: f
111:f
INT=fSYS
INT=fSYS
INT=fSYS
INT=fSYS
INT=fSYS
INT=fSYS
/2
/4
/8
/16
/32
/64
/128
定义定时/计数器 TMR2 的触发方式
在事件计数模式(T2M1,T2M0)=(0,1):
1:在下降沿计数
3 T2E
0:在上升沿计数
在脉冲宽度测量模式( T2M1, T2M0) =(1,1):
1:在上升沿开始计数,下降沿停止计数
0:在下降沿开始计数,上升沿停止计数
4 T2ON
5
— 未用,读出为“0”
打开/ 关闭定时/ 计数器(0= 关闭,1=打开)
定义工作模式:T2M1 ,T2M0
6
7
T2M0
T2M1
01=事件计数模式 (外部时钟 )
10=定时模式 (内部时钟 )
11=脉冲宽度测量模式
00 =未用
TMR2C(2EH)
TMR2C(2EH) 寄存器
TMR2C(2EH) TMR2C(2EH)
寄存器
寄存器 寄存器
Rev. 1.00 21 2008-04-23