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
HT46RU232
在定时/ 计数器停止计数时,写数据到定时/ 计数器的预置寄存器中,同时会将该数据写入到定时/ 计数
器。但如果在定时/ 计数器运行时这么做,数据只能写入到预置寄存器中,直到发生溢出时才会将数据从预
置寄存器加载到定时/ 计数器寄存器。
读取定时/计数器时,计数会被停止,以避免发生错误;计数停止导致的计数错误,程序员必须注意
到这一点。由于系统上电时 TMR0/TMR1/TMR2 寄存器处于未知状态,在打开定时/计数器进行相关操作时,
建议将数据先写入 TMR0/TMR1/TMR2 寄存器中。由于定时/计数器的这种结构,程序中无论何时使用定时
/计数器功能,程序员都必须首先禁止,然后使能的方式避免定时/计数器发生不可预测的结果,从而保证
定时/计数器工作正常。
TMR0C/TMR2C 的第 0~2 位用来定义内部时钟预分频级数,定义如上表所示。定时/计数器的溢出信
号可作为 PFD 输出。定时/计数器的预分频器还可以用于 PWM 计数。
输入
输入/ 输出口
输出口
输入 输入
输出口 输出口
HT46RU232 有 40 个双向输入 /输出口,记为 PA、 PB、 PC、PD 和 PF,其分别对应 RAM 地址[12H]、
[14H]、 [16H]、 [18H]和 [28H],所有端口都可以进行输入 /输出操作。输入时,端口没有锁存功能,输入信
号必须在 MOV A ,[m](m=12H、14H、16H、18H 或 28H)指令的 T2 上升沿到来前准备好;输出时,端口
有锁存功能,端口上的数据会保持不变直到执行下一个写入操作。
每个输入/ 输出口都有一个控制寄存器(PAC ,PBC ,PCC,PDC、PFC),用来控制输入/输出状态。利
用控制寄存器,可对 CMOS 输出、带或不带上拉电阻的斯密特触发输入通过软件动态地进行改变。作为输
入时,对应的控制寄存器应设置为“1 ”。输入信号来源也取决于控制寄存器,如果控制寄存器的值为“1 ”,
那么读取的是引脚状态;如控制寄存器的值为“0 ”,则读取的是内部锁存器的值。后者可能会在“读-修改
-写”指令中发生。
作为输出时,只能采用 CMOS 输出。控制寄存器对应 RAM 地址 13H 、15H 、17H 、19H 和 29H 。
系统复位之后,这些输入/ 输出口会是高电平或浮空状态(由上拉电阻选项决定)。每一个输入/ 输出锁存
位都能用“SET [m].i ”或“CLR [m].i ”指令置位或清除(m=12H 、14H 、16H、18H 或 28H) 。
有些指令会 先 输 入 数 据, 然后进行输出操作。例如,“SET [m].i ”,“CLR [m].i ”,“CPL [m]”,
“CPLA[m]”这些指令会先将整个端口状态读入 CPU 中,接着执行所定义的运算(位操作),然后再将结果
写入锁存器或累加器中。
V
D D
P C 0 / T X
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
F r o m U A R T T X
C o n t r o l B i t
Q
D
C K
Q
S
D a t a B i t
Q
D
Q
C K
S
P u l l - h i g h
O p t i o n
M
U
X
M
R e a d D a t a R e g i s t e r
U
X
PC0/TX
PC0/TX 输入
PC0/TX PC0/TX
输入////输出口
输入 输入
输出口
输出口 输出口
U A R T E N & T X E N
Rev. 1.00 22 2008-04-23
W r i t e C o n t r o l R e g i s t e r
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
R e a d D a t a R e g i s t e r
[ P A 3 , P F D ]
o r [ P D 0 , P W M 0 ]
o r [ P D 1 , P W M 1 ]
o r [ P D 2 , P W M 2 ]
o r [ P D 3 , P W M 3 ]
D a t a B u s
C h i p R e s e t
T o U A R T R X
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
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 A 5 O n l y
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
PC1/RX
PC1/RX 输入
PC1/RX PC1/RX
PC2~PC7
PC2~PC7 输入
PC2~PC7 PC2~PC7
输入////输出口
输入 输入
C o n t r o l B i t
D
C K
S
D a t a B i t
D
C K
S
输入////输出引脚
输入 输入
P u l l - h i g h
O p t i o n
M
U
X
输出口
输出口 输出口
Q
Q
Q
Q
M
U
X
输出引脚
输出引脚 输出引脚
P U
O P 0 ~ O P 7
M
U
X
E N ( P F D o r
P W M 0 ~ P W M 3 )
V
D D
P C 1 / R X
V
D D
HT46RU232
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
P B 0 / A N 0 ~ P B 7 / A N 7
P C 2 ~ P C 7
P D 0 / P W M 0
P D 1 / P W M 1
P D 2 / P W M 2
P D 3 / P W M 3
P D 4 ~ P D 7
P F 0 ~ P F 7
PA 的每一个口都具有唤醒系统的能力。所有的输入/ 输出口都有上拉电阻选项。一旦选择了上拉电阻
选项,输入/ 输出口就加了上拉电阻。如果不选择上拉电阻,必须注意在输入模式下,若输入/ 输出口会产
生浮空状态。
PA3 、PA5 分别与 PFD 、
共用引脚,如果选择 PFD 功能,则 PA3 在输出模式时的输出信号为定时
INT
/计数器的溢出信号,而在输入模式始终保持其原来的功能。一旦选择 PFD 功能,PFD 的输出信号只受 PA3
数据寄存器控制。向 PA3 数据寄存器写入“1 ”,则输出 PFD 信号;向 PA3 数据寄存器写入“0”,则 PA3
输出为“0 ”。 PA3 的输入/输出功能如下所示:
I/O
模式
模式
模式 模式
PA3
注: PFD 的输出频率是定时 /计数器溢出频率的 1/2
I/P
(正常
正常)
正常 正常
O/P
(正常
正常)
正常 正常
I/P
(PFD)
逻辑输入 逻辑输出 逻辑输入
O/P
(PFD)
PFD
(定时 /计数器开启 )
PB 口可以用作 A/D 转换输入, A/D 转换功能将在后面说明。 PD0/PD1/PD2/PD3 与 PWM 输出共用引
脚。如果选择 PWM 功能,则 PD0/PD1/PD2/PD3 口会有 PWM0/PWM1/PWM2/PWM3 信号输出 (如果
PD0/PD1/PD2/PD3 为输出模式)。
Rev. 1.00 23 2008-04-23
PD0/PD1/PD2/PD3 的输入 /输出如下所示:
HT46RU232
I/O 模式
模式 I/P(正常
模式 模式
PD0~PD3
正常) O/P(正常
正常 正常
正常)
正常 正常
逻辑输入 逻辑输出 逻辑输入
I/P(PWM) O/P(PWM)
PWM0~PWM3
建议用软件将未使用和没有外接的输入/ 输出口设置为输出模式,以防止这些端口在输入浮空时增加系
统的功耗。
PWM
HT46RU232 有 4 个通道 (6+2)/(7+1)位的 PWM 输出 (由掩膜选项决定 ),与 PD0/PD1/PD2/PD3 共用引脚。
PWM 通道由数据寄存器 PWM0(1AH)、 PWM1(1BH)、 PWM2(1CH)和 PWM3(1DH)来控制输出。 PWM 的
时钟源为系统时钟 (f
)。 PWM 有 4 个 8 位寄存器。 PWM 的输出波形如图所示。一旦 PD0/PD1/PD2/PD3
SYS
选择为 PWM 输 出,并且 PD0/PD1/PD2/PD3 为 输 出 模式 (PDC.0/PDC.1/PDC.2/PDC.3=“ 0 ” ),则 向
PD0/PD1/PD2/PD3 寄存器写“1”能够产生 PWM 输出,向 PD0/PD1/PD2/PD3 寄存器写“ 0”会使 PD0 输
出保持为“ 0”。
f
/ 2
S Y S
[ P W M ] = 1 0 0
P W M
[ P W M ] = 1 0 1
P W M
[ P W M ] = 1 0 2
P W M
[ P W M ] = 1 0 3
P W M
2 5 / 6 4
2 6 / 6 4
2 6 / 6 4
2 6 / 6 4
P W M m o d u l a t i o n p e r i o d : 6 4 / f
M o d u l a t i o n c y c l e 0
2 5 / 6 4 2 5 / 6 4 2 5 / 6 4
2 5 / 6 4
2 6 / 6 4
2 6 / 6 4
S Y S
M o d u l a t i o n c y c l e 1 M o d u l a t i o n c y c l e 2 M o d u l a t i o n c y c l e 3 M o d u l a t i o n c y c l e 0
P W M c y c l e : 2 5 6 / f
2 5 / 6 4
2 5 / 6 4
2 6 / 6 4 2 5 / 6 4
S Y S
(6+2) 位模式
位模式 PWM
位模式 位模式
2 5 / 6 4
2 5 / 6 4
2 5 / 6 4
2 6 / 6 4
2 6 / 6 4
2 6 / 6 4
在(6+2)PWM 模式中,一个 PWM 周期被分为四个调制周期(调制周期 0~调制周期 3),每个调制周期
有 64 个 PWM 输入时钟周期。在(6+2)PWM 模式中,PWM 寄存器被分为 2 个部分。第一部分是直流分量,
由 PWM.7~PWM.2 控制;第二部分是交流分量,由 PWM.1~PWM.0 控制。
在(6+2)PWM 模式中,每个调制周期的占空比见下表:
参数
参数
参数 参数
调制周期 i
(i=0~3)
AC(0~3)
i<AC
i≥ AC
占空比
占空比
占空比 占空比
1 DC
DC
Rev. 1.00 24 2008-04-23
HT46RU232
f
/ 2
S Y S
[ P W M ] = 1 0 0
P W M
[ P W M ] = 1 0 1
P W M
[ P W M ] = 1 0 2
P W M
[ P W M ] = 1 0 3
P W M
在(7+1)PWM 模式中,一个 PWM 周期被分为两个调制周期(调制周期 0~调制周期 1),每个调制周期
有 128 个 PWM 输入时钟周期。在(7+1)PWM 模式中,PWM 寄存器被分为 2 个部分。第一部分是直流分
量,由 PWM.7~PWM.1 控制;第二部分是交流分量,由 PWM.0 控制。
在(7+1)PWM 模式中,每个调制周期的占空比见下表:
5 0 / 1 2 8
5 1 / 1 2 8
5 1 / 1 2 8
5 2 / 1 2 8
P W M m o d u l a t i o n p e r i o d : 1 2 8 / f
M o d u l a t i o n c y c l e 0
S Y S
P W M c y c l e : 2 5 6 / f
S Y S
(7+1)
(7+1)位模式
位模式 PWM
(7+1) (7+1)
位模式 位模式
5 0 / 1 2 8
5 0 / 1 2 8
5 1 / 1 2 8
5 1 / 1 2 8
M o d u l a t i o n c y c l e 1 M o d u l a t i o n c y c l e 0
PWM
PWM PWM
5 0 / 1 2 8
5 1 / 1 2 8
5 1 / 1 2 8
5 2 / 1 2 8
参数
参数
参数 参数
调制周期 i
(i=0~1)
AC(0~1)
i<AC
i≥ AC
PWM 的调制频率、周期频率和占空比的关系总结如下:
PWM 调制频率
调制频率 PWM 周期频率
调制频率 调制频率
f
/64(6+2 模式 )
SYS
f
/128(7+1 模式 )
SYS
周期频率 PWM 占空比
周期频率 周期频率
f
/256 [PWM]/256
SYS
占空比
占空比
占空比 占空比
1 DC
DC
占空比
占空比 占空比
Rev. 1.00 25 2008-04-23
HT46RU232
A/D 转换
转换
转换 转换
HT46RU232 有 8 个通道、12 位分辨率的 A/D 转换器,其参考电压为 VDD。与 A/D 转换有关的寄存
器有 4 个,ADRL(24H)、ADRH(25H)、ADCR(26H)和 ACSR(27H)。ADRH 和 ADRL 是 A/D 转换结果的高
字节和低字节寄存器,为只读寄存器。当完成 A/D 转换后,可从 ADRH 和 ADRL 读取 A/D 转换结果。ADCR
是 A/D 转换控制寄存器,用来定义 A/D 通道数量、模拟输入通道选择、A/D 转换开始控制和完成标志。
如果要进行 A/D 转换,要先定义好 PB 口的设置,选择转换的模拟通道,然后给 START 控制位一个上升
沿信号和一个下降沿信号(0→1→0)。完成 A/D 转换后,
A/D 转换中断允许)。ACSR 是 A/D 时钟控制寄存器,用来选择 A/D 的时钟来源。
位会被清除,并且产生 A/D 转换中断(如果
EOC
位位位位 符号
符号(ACSR) 功能
符号 符号
功能
功能 功能
选择 A/D 转换时钟源:
0
1
ADCS0
ADCS1
00=系统时钟 /2
01=系统时钟 /8
10=系统时钟 /32
11=未定义
2~6
7 TEST
— 未用,读出为“0”
只作为内部测试用
ACSR(27H)
ACSR(27H) 寄存器
ACSR(27H) ACSR(27H)
寄存器
寄存器 寄存器
A/D 转换控制寄存器用来控制 A/D 转换。ADCR 的第 2~0 位用来选择模拟输入通道,总共有 8 个通道
可以选择。ADCR 的第 5~3 位用来设置 PB 的工作模式,PB 可以由这 3 位来决定,作为模拟输入通道或是
数字输入/输出口。如果 PB 选择为模拟输入,则其输入/输出功能和上拉电阻将失效,而 A/D 转换电路会
被使能。EOCB 位(ADCR 的第 6 位)是 A/D 转换结束标志位。通过检测这个标志位可以知道 A/D 转换是否
结束。ADCR 的 START 位用来开启 A/D 转换,给 START 位一个上升沿信号和一个下降沿信号可以开始
A/D 转换。为了确保 A/D 转换顺利完成,START 位应保持为“0”,直到 EOCB 位变为“0”(A/D 转换完
成信号)。
位位位位 符号
0
1
2
3
4
5
符号 功能
符号 符号
功能
功能 功能
ACS0
ACS1
选择模拟输入通道
ACS2
PCR0
PCR1
PCR2
定义 PB 口的设置
如果 PCR0、PCR1 和 PCR2 都为 0,则 A/D 转换电
路被关闭以减小功耗
A/D 转换结束标志 (0=A/D 转换结束)
6 EOCB
每次 BIT3-5 状态的改变都必须通过 START 信号来
初始化 A/D 转换器,否则 EOCB 可能会处于不确定
状态,具体可参照“A/D 转换初始化注意事项”
A/D 转换启始控制位
7 START
0→ 1→ 0=开始;
0→ 1=A/D 转换复位并且置 EOCB 为“ 1”
ADCR
ADCR(26H)
(26H) 寄存器
(26H) (26H)
寄存器
寄存器 寄存器
ADCR ADCR
ACS2 ACS1 ACS0
模拟通道
模拟通道
模拟通道 模拟通道
0 0 0 AN0
0 0 1 AN1
0 1 0 AN2
0 1 1 AN3
1 0 0 AN4
1 0 1 AN5
1 1 0 AN6
1 1 1 AN7
模拟输入通道选择
模拟输入通道选择
模拟输入通道选择 模拟输入通道选择
Rev. 1.00 26 2008-04-23
HT46RU232
PCR2 PCR1 PCR0 7 6 5 4 3 2 1 0
0 0 0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
0 0 1 PB7 PB6 PB5 PB4 PB3 PB2 PB1 AN0
0 1 0 PB7 PB6 PB5 PB4 PB3 PB2 AN1 AN0
0 1 1 PB7 PB6 PB5 PB4 PB3 AN2 AN1 AN0
1 0 0 PB7 PB6 PB5 PB4 AN3 AN2 AN1 AN0
1 0 1 PB7 PB6 PB5 AN4 AN3 AN2 AN1 AN0
1 1 0 PB7 PB6 AN5 AN4 AN3 AN2 AN1 AN0
1 1 1 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0
PB
PB 口的设置
口的设置
PBPB
口的设置 口的设置
ACSR 第 7 位是内部测试用的,用户不能使用。ACSR 第 1 位和第 0 位用来选择 A/D 转换的时钟源。
当 A/D 转换完成时,A/D 中断请求标志被置位。当 START 标志由“0 ”置“1 ”时,EOCB 也置为“1 ”。
A/D 转换初始化注意事项:
每次改变模拟通道选择位后都要注意初始化 A/D 转换器,否则 EOCB 可能处于不确定状态。在模拟
通道选择位改变的 10 个指令周期内将 START 置 1 后清 0 来初始化 A/D 转换器。模拟通道选择位都清 0 ,
可以不初始化 A/D 。
寄存器
寄存器
寄存器 寄存器
ADRL
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
D3 D2 D1 D0
— — — —
ADRH D11 D10 D9 D8 D7 D6 D5 D4
注: D0~D11 是 A/D 转换结果的低位 ~高位
ADRL
ADRL((((24H
24H),
),ADRH
ADRH((((25H
25H))))寄存器
25H 25H
寄存器
寄存器 寄存器
R e s e t A / D
c o n v e r t e r
A / D s a m p l i n g t i m e
t
A D C S
1 0 1 B
0 0 1 B
S t a r t o f A / D
c o n v e r s i o n
t
A D C
A / D c o n v e r s i o n t i m e
E n d o f A / D
c o n v e r s i o n
0 0 0 B
1 . P B p o r t s e t u p a s I / O s
2 . A / D c o n v e r t e r i s p o w e r e d o f f
t o r e d u c e p o w e r c o n s u m p t i o n
d o n ' t c a r e
S T A R T
E O C B
P C R 2 ~
P C R 0
A C S 2 ~
A C S 0
P o w e r - o n
R e s e t
1 : D e f i n e P B c o n f i g u r a t i o n
2 : S e l e c t a n a l o g c h a n n e l
N o t e :
ADRL ADRL
24H 24H
), ),
ADRH ADRH
M i n i m u m o n e i n s t r u c t i o n c y c l e n e e d e d , M a x i m u m t e n i n s t r u c t i o n c y c l e s a l l o w e d
0 0 0 B
0 0 0 B
R e s e t A / D
c o n v e r t e r
A / D c l o c k m u s t b e f
t
= 3 2 t
A D C S
A D
t
= 8 0 t
A D C
A D
A / D s a m p l i n g t i m e
t
A D C S
1 0 0 B
0 1 0 B
S t a r t o f A / D
c o n v e r s i o n
A / D c o n v e r s i o n t i m e
/ 2 , f
/ 8 o r f
S Y S
S Y S
t
A D C
E n d o f A / D
c o n v e r s i o n
/ 3 2
S Y S
R e s e t A / D
c o n v e r t e r
A / D s a m p l i n g t i m e
t
A D C S
1 0 0 B
0 0 0 B
S t a r t o f A / D
c o n v e r s i o n
t
A D C
A / D c o n v e r s i o n t i m e
A/D
A/D 转换时序
转换时序
A/D A/D
转换时序 转换时序
E n d o f A / D
c o n v e r s i o n
Rev. 1.00 27 2008-04-23
HT46RU232
下面两个范例程序说明如何设置和实现 A/D 转换。第一个范例通过不断扫描 ADCR 寄存器的 EOCB
位的方法来判断 A/D 转换是否完成,而第二个范例使用 A/D 中断方式判断转换完成。
例:通过扫描 EOCB 位判断 A/D 转换是否完成。
clr EADI ;禁止 A/D中断
mov a,00000001B
mov ACSR,a ; 设置 ACSR寄存器,选择 f
mov a,00100000B ; 在 ADCR寄存器中设置 Port PB0~PB3作为 A/D输入
mov ADCR,a ; 设置 AN0进行 A/D转换
:
:
: ; 当模拟通道选择位改变后, START信号(0-1-0)必须在10个
: ; 指令周期内发出
Start_conversion:
clr START
set START ; A/D转换复位
clr START ; 开始 A/D转换
Polling_EOC:
sz EOCB ; 扫描 ADCR寄存器的 EOCB位判断 A/D转换是否完成
jmp polling_EOC ; 继续扫描
mov a,ADRH ; 从 ADRH寄存器读取A/D转换结果的高位字节
mov adrh_buffer,a ; 将结果放入用户定义的寄存器中
mov a,ADRL ; 从 ADRL寄存器读取 A/D转换结果的低位字节
mov adrl_buffer,a ; 将结果放入用户定义的寄存器中
:
:
jmp start_conversion ; 开始下一次 A/D转换
/8做为 A/D转换时钟
SYS
Rev. 1.00 28 2008-04-23
HT46RU232
例:用中断方法判断 A/D 转换是否完成。
clr EADI ; 禁止 A/D 中断
mov a,00000001B
mov ACSR,a ; 设置 ACSR 寄存器,选择 f
mov a,00100000B ; 在 ADCR 寄存器中设置 Port PB0~PB3 作为 A/D 输入
mov ADCR,a ; 设置 AN0 进行 A/D 转换
:
:
: ; 当模拟通道选择位改变后, START 信号( 0-1-0)必须在 10 个
: ; 指令周期内发出
start_conversion:
clr START
set START ; A/D 转换复位
clr START ; 开始 A/D 转换
clr ADF ; 清除 AD 中断请求标志
set EADI ; 打开 A/D 中断
set EMI ; 打开总中断
:
:
; 中断服务子程序
ADC_ISR:
mov acc_stack,a ; 将 ACC 保存到用户定义的寄存器中
mov a,STATUS
mov status_stack,a ; 将 STATUS 保存到用户定义的寄存器中
:
:
mov a,ADRH ; 从 ADRH 读取转换结果的高位
mov adrh_buffer,a ; 保存到用户自己定义的寄存器中
mov a,ADRL ; 从 ADRL 读取转换结果的低位
mov adrl_buffer,a ; 保存到用户自己定义的寄存器中
clr START
set START ; A/D 转换复位
clr START ; 开始 A/D 转换
:
:
EXIT_INT_ISR:
mov a,status_stack
mov STATUS,a ; 将 STATUS 从暂存器中读出
mov a,acc_stack ; 将 ACC 从暂存器中读出
reti
/8 作为 A/D 转换时钟
SYS
Rev. 1.00 29 2008-04-23
低电压复位
低电压复位————LVR
低电压复位 低电压复位
HT46RU232
为了监控器件的工作电压,HT46RU232 提供低电压复位功能。如果器件的工作电压在 0.9V ~V
间,例如电池电压的变化,那么 LVR 会自动使器件产生内部复位。
LVR 功能说明如下:
· 低电压(0.9V ~V
)的状态必须持续 1ms 以上。如果低电压的状态没有持续 1ms 以上,那么 LVR 会
LVR
忽视它而不去执行复位功能。
· LVR 通过与外部
信号的“或”的功能来执行系统复位。
RES
V
D DVO P R
5 . 5 V
5 . 5 V
3 . 0 V
2 . 2 V
V
0 . 9 V
L V R
注:V
是在系统时钟为 4MHz 时,使得芯片正常运行的电压值
OPR
VDD与 V
之间的关系如下所示:
LVR
V
D D
5 . 5 V
LVR
之
V
L V R
0 . 9 V
0 V
R e s e t S i g n a l
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 的延迟。
Rev. 1.00 30 2008-04-23
HT46RU232
I2C 总线接口
总线接口
总线接口 总线接口
HT46RU232 提供 I2C 总线接口,I 2C 总线是双向两线结构,数据线和时钟线分别为 SDA 和 SCL 。 SDA
和 SCL 是 NMOS 开漏输出,使用时必须外接上拉电阻。
I2C 总线有两种数据传输方式,一种为从器件发送模式(slave transmit mode),另一种为从器件接收模式
(slave receive mode)。有四个与 I 2C 总线相关寄存器,HADR([20H])、HCR([21H])、HSR([22H])、HDR([23H])。
HADR 寄存器用来存放从器件地址,如果主控制器发送的调用地址与该从器件地址匹配,则表明该器件被
选中。HCR 是 I 2C 总线控制寄存器,用来控制 I 2C 总线功能的开/关状态和 I2C 总线是工作于发送模式还是
接收模式。HSR 是 I 2C 总线状态寄存器,该寄存器反映了 I 2C 总线的工作状态。HDR 是数据输入/输出寄
存器,发送和接收的数据都必须经过 HDR 寄存器。
Bit7~ ~~~Bit1
Bit0
从地址 —
注:“—”为未定义
HADR(20H)
HADR(20H) 寄存器
HADR(20H) HADR(20H)
寄存器
寄存器 寄存器
I2C 总线控制寄存器包括 3 位,HEN 、HTX 和 TXAK 。HEN 控制 I2C 总线打开/ 关闭,如果数据想通
过 I 2C 总线传送,该位就必须置“1 ”。HTX 定义 I 2C 总线是用于发送模式还是接收模式,如果要用于发送
模式,该位就必须置“1 ”。TXAK 定义应答信号,当器件接收到 8 位数据后,在第 9 个时钟时,器件将该
位送到 I 2C 总线上,如果要继续接收下一个数据,在接收数据前该位必须清“0 ”。
位位位位 标号
0~2
3 TXAK
4 HTX
5~6
7 HEN
标号 功能
标号 标号
功能
功能 功能
— 未用,读出为“0”
打开/关闭应答信号(0=应答;1=不应答)
定义发送/接收模式(0=接收模式;1=发送模式)
— 未用,读出为“0”
打开/ 关闭I 2C总线(0=关闭;1=打开)
HCR(21H)
HCR(21H) 寄存器
HCR(21H) HCR(21H)
寄存器
寄存器 寄存器
位位位位 标号
0 RXAK
1
标号 功能
标号 标号
功能
功能 功能
当主控制器收到8 位数据,并发出应答信号时,RXAK 被
清“0 ”;如果没有应答信号,则RXAK 被置“1 ”。
— 未用,读出为“0”
当SRW被置“1”,表示主控制器要从I 2C总线读数据,从
2 SRW
器件须将数据发送到主控制器;当SRW 被清“0 ”,表示
主控制器要写数据到I 2C总线,从器件必须从主控制器接
收数据。
3~4
5 HBB
6 HAAS
7 HCF
— 未用,读出为“ 0”
HBB在 I2C总线忙时被置位;而当I 2C总线空闲时,该位将
被清“ 0”。
HAAS在调用地址匹配时被置“1”,同时发生I 2C 总线中
断且 HCF被置位。
HCF在数据开始传送时清“0”;HCF被置“1”表示8位数
据已传送完毕。
HSR(22H)
HSR(22H) 寄存器
HSR(22H) HSR(22H)
寄存器
寄存器 寄存器
Rev. 1.00 31 2008-04-23
HT46RU232
I2C 总线状态寄存器包括 5 位,HCF、HAAS、HBB、SRW 和 RXAK。HCF 在开始传送数据时被清“0” ,
在数据传送结束后被置“1” ;HAAS 当从器件地址匹配时被置“1” ,同时 I2C 总线中断请求标志被置
“1” ,如果中断允许且堆栈未满,则程序会跳到地址 14H 开始执行;写数据到 I2C 总线控制寄存器可以
清除 HAAS;如果地址不匹配,HAAS 被清“0” 。HBB 置“1”表示 I2C 总线忙,即系统检测到“START”
信号;HBB 清“0” 表示 I2C 总线空闲,即系统检测到“STOP”信号,此时 I2C 总线空闲。SRW 表示调
用地址匹配时,器件的读/写状态。当 HAAS 被置“1” ,可以通过检测 SRW 来确定器件是工作在发送模
式还是接收模式。当 SRW 被置“1” ,表示主控制器要从 I2C 总线读数据,从器件必须将数据写到 I2C 总
线,即从器件为发送模式;当 SRW 被清“0” ,表示主控制器要写数据到 I2C 总线,从器件要从总线读
取数据,即从器件为接收模式。RXAK 清“0” ,表示接收到一个应答信号。在发送模式,发送器件通过
检测 RXAK 以确定接收器件是否要接收下一个数据,发送器件会一直写数据到 I2C 总线直到 RXAK 置“1”,
同时发送器件释放 SDA 线,这样主控制器可以发送 STOP 信号来释放总线。
HADR 寄存器的第 7~1 位定义从器件地址,开始数据传送时,主控制器通过发送从器件地址来选择器
件;第 0 位没有用,不需要定义。一旦 I 2C 总线接上出现起始信号,所有的从器件都会接收连续的 8 位数
据,该数据的前 7 位是从器件地址,高位在前,低位在后。如果从器件地址匹配,系统会置位 HAAS ,同
时产生 I 2C 总线中断。进入中断服务程序后,系统要检测 HAAS 位,以确定 I 2C 总线中断是来自从器件地
址匹配,还是来自 8 位数据传送完毕。8 位数据的最后一位是读/写控制位,该位会反映到 SRW 。从器件通
过检测 SRW 以确定主控制器是要发送数据还是接收数据,并确定自己是作发送器还是接收器。
HDR 寄存器是 I2C 总线的数据输入/ 输出寄存器。在发送数据前,要先将发送的数据写到 HDR 寄存器;
在接收数据前,要先从 HDR 虚拟读取数据。从 I 2C 总线发送或接收数据都必须经过 HDR 寄存器。
在 I 2C 总线开始传送数据前,需要先初始化 I 2C 总线,在初始化 I2C 总线时必须注意以下几点:
1.向 I2C 总线地址寄存器 (HADR)写入从器件地址。
2.置位 I2C 总线控制寄存器 (HCR)的 HEN 位,以打开 I2C 总线。
3.置位 I2C 总线中断控制寄存器 1(INTC1)的 EHI 位,以允许 I2C 总线中断。
S t a r t
W r i t e S l a v e
A d d r e s s t o H A D R
S E T H E N
C L R E H I
P o l l H I F t o d e c i d e
w h e n t o g o t o I
G o t o M a i n P r o g r a m
2
C B u s I S R
I2C B u s
I n t e r r u p t = ?
E n a b l e D i s a b l e
S E T E H I
W a i t f o r I n t e r r u p t
G o t o M a i n P r o g r a m
Rev. 1.00 32 2008-04-23
S t a r t
HT46RU232
起始信号
起始信号
起始信号 起始信号
N o
R e a d f r o m H D R
R E T I
C L R T X A K
D u m m y R e a d
C L R H T X
f r o m H D R
R E T I
H T X = 1
?
N o
Y e s
Y e s
R X A K = 1
?
N o
W r i t e t o H D R
R E T I
H A A S = 1
?
Y e s
Y e s
S R W = 1
?
S E T H T X
W r i t e t o H D R
R E T I R E T I
N o
C L R H T X
C L R T X A K
D u m m y R e a d
F r o m H D R
起始信号只能由主控制器产生。总线上的其它器件必须侦测起始信号以设定 I2C 总线的忙标志位
(HBB)。起始信号是指在 SCL 为高时, SDA 发生电平从高到低的变化。
S C L
S D A
起始位
起始位
起始位 起始位
从器件地址
从器件地址
从器件地址 从器件地址
发送起始信号后,主控制器必须发送从器件地址以选择要进行数据传输的从器件。所有在 I2C 总线上
的从器件都会接收到这个从器件地址(7 位),并与各自内部的从器件地址进行比较。如果从器件地址匹配,
该从器件会产生一个中断,并将接下来的一位数据(即第 8 位)保存到 SRW 位,并发出一个应答信号。当从
器件地址匹配时,还会置位状态标志(HAAS)。
在中断服务子程序中,通过检测 HAAS 位可以确定 I 2C 总线中断是来自从器件地址匹配,还是来自 8
位数据传送完毕。当是从器件地址匹配发生中断时,则器件必定是用于发送模式或接收模式,所以必须写
数据到 HDR 或从 HDR 虚拟读取数据以释放 SCL 口线。
SRW 位位位位
SRW 表示主控制器是要从 I2C 总线上读取数据还是要将数据写到 I 2C 总线上。从器件则通过检测该
位以确定自己是作为发送器还是接收器。SRW 置“1”,表示主控制器要从 I 2C 总线读数据,从器件必须将
数据写到 I 2C 总线,即从器件做为发送器;SRW 清“0 ”,表示主控制器要写数据到 I 2C 总线,从器件要从
总线读取数据,即从器件做为接收器。
Rev. 1.00 33 2008-04-23
HT46RU232
应答位
应答位
应答位 应答位
当从器件地址匹配时,会发送一个应答信号。主控制器通过检测应答信号以判断从器件是否接受了调
用。如果没有应答信号,主控制器必须发送停止(STOP) 信号以结束通讯。当 I 2C 总线状态寄存器的第 6 位
(HAAS) 是高时,表示地址匹配,则从器件需检查 SRW ,以确定自己是作为发送器( HTX 置 1 )还是作为
接收器(HTX 清零)。
S C L
S D A
停止位
停止位
停止位 停止位
数据字节
数据字节
数据字节 数据字节
在从器件发出应答信号后,就会进行数据传输,一个数据长度为 8 位,高位在前,低位在后。接收器
在接收到数据后会发出一个应答信号(“0 ”)以继续接收下一个数据。如果发送器没检测到应答信号,发送
器将释放 SDA 线,同时,主控制器将发出 STOP 信号以释放 I 2C 总线。所传送的数据存储在 HDR 寄存器
中,发送器在发送数据之前必须将数据写到 HDR ;接收器在接收数据之后必须从 HDR 读取数据。
S C L
S D A
S t o p b i t
接收应答位
接收应答位
接收应答位 接收应答位
S t a r t b i t
D a t a
D a t a
s t a b l e
a l l o w
c h a n g e
数据时序图
数据时序图
数据时序图 数据时序图
当接收器想要继续接收下一个数据时,必须在第 9 个时钟发出应答信号(TXAK) 。发送器检测应答信
号(RXAK) 以决定是继续写数据到 I 2C 总线,还是改变为接收模式并虚读 HDR 寄存器以释放 SDA 线,同
时主控制器发出停止信号。
S t a r t
S C L
S D A
S C L
S D A
S = S t a r t ( 1 b i t )
S A = S l a v e A d d r e s s ( 7 b i t s )
S R = S R W b i t ( 1 b i t )
M = S l a v e d e v i c e s e n d a c k n o w l e d g e b i t ( 1 b i t )
D = D a t a ( 8 b i t s )
A = A C K ( R X A K b i t f o r t r a n s m i t t e r , T X A K b i t f o r r e c e i v e r 1 b i t )
P = S t o p ( 1 b i t )
1
1 0 1 0 0 1 0 0
0
S l a v e A d d r e s s
1
1
D a t a
0 1 0 1 0
S R W
A C K
A C K S t o p
S S A S R
M D A D A
S S A S R
2222
IIII
CCCC 通讯时序图
通讯时序图
通讯时序图 通讯时序图
M D A D A P
Rev. 1.00 34 2008-04-23
HT46RU232
异步串行口
异步串行口 ———— UART
异步串行口 异步串行口
HT46RU232 具有一个全双工的异步串行通信口,可以很方便的与其它具有串行口的芯片通讯。UART
具有许多功能特性,发送或接收一个 8 位或 9 位数据帧的串行数据,当数据超速或数据帧不正确时,UART
可以检测出错误。UART 功能占用一个内部中断向量,当接收到数据或数据发送结束,触发 UART 中断。
· UART
UART 特性
UART UART
UART 具有以下功能:
·全双工异步传输
·8 位或 9 位传输格式
·奇校验、偶校验或无校验
·1 位或 2 位停止位
·8 位预分频的波特率发生器
·奇偶、帧、噪声和过速检测
·支持地址匹配中断(最后一位=1)
·独立的发送和接收允许
·两层 FIFO 接收缓冲器
·发送和接收中断
·下列条件可触发中断:
— 发送器为空
— 发送器空闲
— 接收器完成
— 接收器过速
— 地址匹配
特性
特性 特性
UART
UART UART
· UART
UART 外部引脚
外部引脚
UART UART
外部引脚 外部引脚
UART 是通过两个外部引脚 TX 和 RX 与外部芯片通讯。TX 引脚是 UART 的发送引脚,当 UCR2 寄
存器的 TXEN 位清零,UART 发送功能被禁止,则 TX 引脚可作为普通 IO 口使用。RX 引脚是 UART 的接
收引脚。同样的,当 UCR2 寄存器的 RXEN 位清零,UART 接收功能被禁止,则 RX 引脚可作为普通 IO
口使用。若 UARTEN 、TXEN 和 RXEN 置位,这些 IO 口将自动转换成相应 TX 输出和 RX 输入,并且 RX
脚的上拉电阻将无效。
· 数据
数据传送框图
传送框图
数据 数据
传送框图 传送框图
下图显示了 UART 的整体结构。需要发送的数据首先写入 TXR 寄存器,然后在波特率发生器的控制下
将寄存器中数据以低位在前的方式一位位地移到 TX 引脚上。TXR 寄存器被映射到单片机的数据存储器中,
而发送移位寄存器没有实际地址,所以发送移位寄存器不可直接操作。
数据在波特率发生器的控制下,数据以低位在前的方式从外部引脚 RX 进入接收移位寄存器。当移位
寄存器已满,数据从接收移位寄存器移入可被用户程序操作的 RXR 寄存器。RXR 寄存器被映射到单片机数
据存储器中,而接收移位寄存器没有实际地址,所以接收移位寄存器不可直接操作。
注意,上述发送寄存器 TXR 和接收寄存器 RXR,其实是共享一个地址的数据寄存器 TXR/RXR 寄存器。
T r a n s m i t t e r S h i f t R e g i s t e r
M S B L S B
T X R R e g i s t e r R X R R e g i s t e r
T X P i n
C L K C L K
B a u d R a t e
G e n e r a t o r
R X P i n
R e c e i v e r S h i f t R e g i s t e r
M S B L S B
B u f f e r
M C U D a t a B u s
UART
Rev. 1.00 35 2008-04-23
UART 数据发送接收图
数据发送接收图
UART UART
数据发送接收图 数据发送接收图
HT46RU232
· UART
UART 状态控制寄存器
状态控制寄存器
UART UART
状态控制寄存器 状态控制寄存器
有 5 个寄存器与 UART 功能相关,寄存器 USR、UCR1 和 UCR2 全面控制 UART,而寄存器 BRG 控制波特
率,发送和接收数据则通过寄存器 TXR/RXR。
· USR
USR 寄存器
寄存器
USR USR
寄存器 寄存器
寄存器 USR 是 UART 的状态寄存器,可以通过程序读取 UART 当前状态。USR 中所有标志位为只读。
USR 中所有标志位详细解释如下:
b 7
F E R R
R I D L E O E R R N F P E R R
R X I F T I D L E T X I F
· TXIF
TXIF 是发送数据寄存器为空标志。若 TXIF=0,数据还没有从缓冲器加载到移位寄存器中;若
TXIF=1,数据已从 TXR 寄存器中加载到移位寄存器。读取 USR 寄存器再写 TXR 寄存器将清除 TXIF。当
TXEN 被置位,即使发送缓冲器未满,TXIF 也会被置位。
· TIDLE
TIDLE 是数据发送完成标志位。若 TIDLE=0,表明数据传输中。当 TXIF=1 且数据发送完毕或暂停
字被发送时,TIDLE 置位。TIDLE=1,TX 引脚空闲。读取 USR 寄存器再写 TXR 寄存器将清除 TIDLE 位。
当数据字节或暂停字符排列好并准备发送时,TIDLE 不发生变化。
· RXIF
RXIF 是接收寄存器状态标志。当 RXIF=0,表明 RXR 寄存器为空;当 RXIF=1,表明 RXR 寄存器接
收到新数据。当数据从移位寄存器加载到 RXR 寄存器,如果 UCR2 寄存器中的 RIE=1,则会触发中断。
当接收数据时检测到一个或多个错误时,相应的标志位 NF、FERR 或 PERR 会在同一周期内置位。读取
USR 寄存器再读 RXR 寄存器,如果 RXR 寄存器中没有新的数据,那么将清除 RXIF 标志。
· RIDLE
RIDLE 是接收状态标志。若 RIDLE=0,表明正在接收数据;若 RIDLE=1,表明接收器空闲。在接收
到停止位和下一个数据的起始位之间,RIDLE 被置位,表明 UART 空闲。
· OERR
OERR 是过速错误标志,表示接收缓冲器溢出。若 OERR=0,表明没有数据溢出;若 OERR=1,表明
发生了过速错误,它将禁止下一组数据的接收。先读取 USR 寄存器再读 RXR 寄存器将清除此标志位。
b 0
U S R R e g i s t e r
T r a n s m i t d a t a r e g i s t e r e m p t y
1 : c h a r a c t e r t r a n s f e r r e d t o t r a n s m i t s h i f t r e g i s t e r
0 : c h a r a c t e r n o t t r a n s f e r r e d t o t r a n s m i t s h i f t r e g i s t e r
T r a n s m i s s i o n i d l e
1 : n o t r a n s m i s s i o n i n p r o g r e s s
0 : t r a n s m i s s i o n i n p r o g r e s s
R e c e i v e R X R r e g i s t e r s t a t u s
1 : R X R r e g i s t e r h a s a v a i l a b l e d a t a
0 : R X R r e g i s t e r i s e m p t y
R e c e i v e r s t a t u s
1 : r e c e i v e r i s i d l e
0 : d a t a b e i n g r e c e i v e d
O v e r r u n e r r o r
1 : o v e r r u n e r r o r d e t e c t e d
0 : n o o v e r r u n e r r o r d e t e c t e d
F r a m i n g e r r o r f l a g
1 : f r a m i n g e r r o r d e t e c t e d
0 : n o f r a m i n g e r r o r
N o i s e f l a g
1 : n o i s e d e t e c t e d
0 : n o n o i s e d e t e c t e d
P a r i t y e r r o r f l a g
1 : p a r i t y e r r o r d e t e c t e d
0 : n o p a r i t y e r r o r d e t e c t e d
Rev. 1.00 36 2008-04-23
HT46RU232
· FERR
FERR 是帧错误标志位。若 FERR=0,表明没有帧错误发生;若 FERR=1,表明当前的数据发生了帧
错误。先读取 USR 寄存器再读 RXR 寄存器将清除此位。
· NF
NF 是噪声干扰标志。若 NF=0,表明没有受到噪声干扰;若 NF=1,表明 UART 接收数据时受到噪声
干扰。它与 RXIF 在同一个周期内置位,但不会与过速标志位同时置位。先读取 USR 寄存器再读 RXR
寄存器将清除此标志位。
· PERR
PERR 是奇偶校验出错标志。若 PERR=0,表明奇偶校验正确;若 PERR=1,表明接收到的数据奇偶
校验出错。只有使能了奇偶校验此位才有效。先读取 USR 寄存器再读 RXR 寄存器将清除此位。
· UC
UCRRRR1111 寄存器
寄存器
UCUC
寄存器 寄存器
UCR1 和 UCR2 是 UART 的两个控制寄存器,用来定义各种 UART 功能,例如 UART 的使能与除能、奇偶
校验控制和传输数据的长度等等。
UCR1 中标志位详细解释如下:
· TX8
输位数是 8 位还是 9 位。
· RX8
输位数是 8 位还是 9 位。
· TXBRK
表明将会发送暂停字,发送器将发送逻辑 0。若 TXBRK 为高,缓冲器中数据发送完毕后,发送器将至
少保持 13 位宽的低电平直至 TXBRK 复位。
· STOPS
位。
· PRT
b 7
P R E N
S T O P S P R T B N O U A R T E N
T X B R K
R X 8 T X 8
b 0
U C R 1 R e g i s t e r
T r a n s m i t d a t a b i t 8 ( w r i t e o n l y )
R e c e i v e d a t a b i t 8 ( r e a d o n l y )
T r a n s m i t b r e a k c h a r a c t e r
1 : t r a n s m i t b r e a k c h a r a c t e r s
0 : n o b r e a k c h a r a c t e r s
D e f i n e s t h e n u m b e r o f s t o p b i t s
1 : t w o s t o p b i t s
0 : o n e s t o p b i t
P a r i t y t y p e b i t
1 : o d d p a r i t y f o r p a r i t y g e n e r a t o r
0 : e v e n p a r i t y f o r p a r i t y g e n e r a t o r
P a r i t y e n a b l e b i t
1 : p a r i t y f u n c t i o n e n a b l e d
0 : p a r i t y f u n c t i o n d i s a b l e d
N u m b e r o f d a t a t r a n s f e r b i t s
1 : 9 - b i t d a t a t r a n s f e r
0 : 8 - b i t d a t a t r a n s f e r
U A R T e n a b l e b i t
1 : e n a b l e U A R T , T X & R X p i n s a s U A R T p i n s
0 : d i s a b l e U A R T , T X & R X p i n s a s I / O p o r t p i n s
此位只有在传输数据为 9 位的格式中有效,TX8 用来存储发送数据的第 9 位。BNO 是用来控制传
此位只有在传输数据为 9 位的格式中有效,RX8 用来存储接收数据的第 9 位。BNO 是用来控制传
TXBRK 是暂停字发送控制位。若 TXBRK=0,表明没有暂停字要发送,TX 引脚正常操作;若 TXBRK=1,
此位用来设置停止位的长度。若 STOPS=1,表明有两位停止位;若 STOPS=0,表明只有一位停止
奇偶校验选择位。若 PRT=1,表明选择奇校验;若 PRT=0,表明选择偶校验。
Rev. 1.00 37 2008-04-23
HT46RU232
· PREN
此位为奇偶校验使能位。若 PREN=1,表明使能奇偶校验;若 PREN=0,表明除能奇偶校验。
· BNO
选择数据长度为 8 位或 9 位格式。若 BNO=1,表明传输数据为 9 位;若 BNO=0,表明传输数据为 8
位。若选择了 9 位数据传输格式,RX8 和 TX8 将分别存储接收和发送数据的第 9 位。
· UARTEN
此位为 UART 的使能位。若 UARTEN=0,表明 UART 除能,RX 和 TX 可用作普通输入/输出口;若
UARTEN=1,表明 UART 使能,TX 和 RX 将分别由 TXEN 和 RXEN 控制。当 UART 除能,系统将清除缓冲器,
所有缓冲器中的数据将被忽略,另外波特率计数器、错误和状态标志位被复位,TXEN、RXEN、TXBRK、
RXIF、OERR、FERR,PERR 和 NF 清零;而 TIDLE、TXIF 和 RIDLE 置位,UCR1、UCR2 和 BRG 寄存器中的
其它位保持不变。若 UART 工作时 UARTEN 清零,所有发送和接收将停止,模块也将复位成上述状态。
当 UART 再次使能时,它将在上次配置下重新工作。
· UCR
UCR2222 寄存器
寄存器
UCR UCR
寄存器 寄存器
UCR2 是 UART 的另一个控制寄存器,它的主要功能是使能或除能发送和接收允许以及 UART 的各种中
断源。它也可用来控制波特率,使能接收唤醒和地址侦测。
UCR2 中标志位详细解释如下:
b 7
B R G H
W A K E A D D E N R X E N T X E N
R I E T I I E T E I E
· TEIE
此位为发送寄存器为空时中断的使能或除能位。若 TEIE=1,当发送器为空时 TXIF 将置位,UART
的中断请求标志置位;若 TEIE=0,UART 中断请求标志不受 TXIF 的影响。
· TIIE
此位为发送器空闲时中断的使能或除能位。若 TIIE=1,当发送器空闲时 TIDLE 置位,UART 的中
断请求标志置位;若 TIIE=0,UART 中断请求标志不受 TIDLE 的影响。
· RIE
此位为接收器中断使能或除能位。若 RIE=1,当接收器过速或接收数据有效时 OERR 或 RXIF 置位,
UART 的中断请求标志置位;若 RIE=0,UART 中断请求标志不受 OERR 或 RXIF 影响。
· WAKE
此位为接收器唤醒功能的使能和除能位。若 WAKE=1 且在暂停模式下,RX 引脚的下降沿将唤醒单
片机。若 WAKE=0 且在暂停模式下,RX 引脚的任何边沿都不能唤醒单片机。
b 0
U C R 2 R e g i s t e r
T r a n s m i t t e r e m p t y i n t e r r u p t e n a b l e
1 : T X I F i n t e r r u p t r e q u e s t e n a b l e
0 : T X I F i n t e r r u p t r e q u e s t d i s a b l e
T r a n s m i t t e r i d l e i n t e r r u p t e n a b l e
1 : T I D L E i n t e r r u p t r e q u e s t e n a b l e
0 : T I D L E i n t e r r u p t r e q u e s t d i s a b l e
R e c e i v e r i n t e r r u p t e n a b l e
1 : R X I F i n t e r r u p t r e q u e s t e n a b l e
0 : R X I F i n t e r r u p t r e q u e s t d i s a b l e
D e f i n e s t h e R X w a k e u p e n a b l e
1 : R X w a k e u p e n a b l e ( f a l l i n g e d g e )
0 : R X w a k e u p d i s a b l e
A d d r e s s d e t e c t m o d e
1 : e n a b l e
0 : d i s a b l e
H i g h b a u d r a t e s e l e c t b i t
1 : h i g h s p e e d
0 : l o w s p e e d
R e c e i v e r e n a b l e b i t
1 : r e c e i v e r e n a b l e
0 : r e c e i v e r d i s a b l e
T r a n s m i t t e r e n a b l e b i t
1 : t r a n s m i t t e r e n a b l e
0 : t r a n s m i t t e r d i s a b l e
Rev. 1.00 38 2008-04-23
HT46RU232
· ADDEN
此位为地址检测使能和除能位。若 ADDEN=1,表明地址检测使能,此时数据的第 8 位(BON=0)或
第 9 位(BON=1)为高,接到的是地址而非数据。若相应的中断使能且接收到的值最高位为 1,那么中
断请求标志将会被置位,若最高位为 0,那么将不会产生中断且收到的数据也会被忽略。
· BRGH
此位为波特率发生器高低速选择位,它和 BRG 寄存器一起控制 UART 的波特率。若 BRGH=1,为高
速模式;若 BRGH=0,为低速模式。
· RXEN
此位为接收使能位。若 RXEN=0,接收器将被除能,接收器停止工作。另外缓冲器将被复位,此时
RX 引脚可作普通输入/输出端口使用。若 RXEN=1 且 UARTEN=1,则接收将被使能,RX 引脚将由 UART 来
控制。在数据传输时清除 RXEN 将中止数据接收且复位接收器,此时 RX 引脚可作为普通输入输出端口
使用。
· TXEN
此位为发送使能位。若 TXEN=0,发送器将被除能,发送器停止工作。另外缓冲器将被复位,此
时 TX 引脚可作为普通输入/输出端口使用。若 TXEN=1 且 UARTEN=1,则发送将被使能,TX 引脚将由 UART
来控制。在数据传输时清除 TXEN 将中止数据发送且复位发送器,此时 TX 引脚可作为普通的输入输出
口使用。
· 波特率发生器
波特率发生器
波特率发生器 波特率发生器
UART 内建一个波特率发生器,可以设定数据传输速率。波特率是由一个独立的内部 8 位计数器产生,
由 BRG 寄存器和 UCR2 寄存器的第 2 位 BRGH 来控制。BRGH 是决定波特率发生器处于高速模式还是低速模式,
从而决定计算公式的选用。BRG 寄存器的值 N 可根据下表中的公式计算,范围是 0 到 255。
UCR2 的 BRGH 位
波特率
为了得到相应的波特率,首先需要设置 BRGH 来选择相应的计算公式从而算出 BRG 的值。由于 BRG
的值不连续,所以实际波特率和理论值之间有一个偏差。下面举例怎样计算 BRG 寄存器中的值 N 和误差。
· 波特率和误差的计算
系统选用 8M 晶振且 BRGH=0,若期望的波特率为 9600,计算它的 BRG 寄存器的值 N,实际波特率
和误差。
根据上表,波特率 BR =
0 1
f
SYS
)1 (64 + N
f
SYS
f
SYS
)1 ( 16 +N
)1 ( 64 +N
f
转换后的公式 N = 1
SYS
−
×
代入参数 N = 1
8000000
−
=12.0208
×
取最接近的值,十进制 12 写入 BRG 寄存器,实际波特率如下
BR = 9615
误差 % 16 .0
Rev. 1.00 39 2008-04-23
8000000
+
9600 9615
=
=
)1 12 ( 64
下表给出 BRGH 取不同值时的实际波特率和误差。
BRGH=0
波特率
K/BPS
f
=8MHz f
SYS
=7.159MHz f
SYS
=4MHz f
SYS
=3.579545MHz
SYS
BRG Kbaud Error BRG Kbaud Error BRG Kbaud Error BRG Kbaud Error
0.3 -
- - -
- - 207 0.300 0.00 185 0.300 0.00
1.2 103 1.202 0.16 92 1.203 0.23 51 1.202 0.16 46 1.19 -0.83
2.4 51 2.404 0.16 46 2.38 -0.83 25 2.404 0.16 22 2.432 1.32
4.8 25 4.807 0.16 22 4.863 1.32 12 4.808 0.16 11 4.661 -2.9
9.6 12 9.615 0.16 11 9.322 -2.9 6 8.929 -6.99 5 9.321 -2.9
19.2 6 17.857 -6.99 5 18.64 -2.9 2 20.83 8.51 2 18.643 -2.9
38.4 2 41.667 8.51 2 37.29 -2.9 1 - - 1
- -
57.6 1 62.5 8.51 1 55.93 -2.9 0 62.5 8.51 0 55.93 -2.9
115.2 0 125 8.51 0 111.86 -2.9 - - - -
BRGH=0
BRGH=0 时的波特率和误差
时的波特率和误差
BRGH=0 BRGH=0
时的波特率和误差 时的波特率和误差
- -
HT46RU232
波特率
K/BPS
f
=8MHz f
SYS
=7.159MHz f
SYS
=4MHz f
SYS
=3.579545MHz
SYS
BRG Kbaud Error BRG Kbaud Error BRG Kbaud Error BRG Kbaud Error
BRGH=1
0.3 -
1.2 -
- - - - - -
- - - - -
- - - - - 207 1.202 0.16 185 1.203 0.23
2.4 207 2.404 0.16 185 2.405 0.23 103 2.404 0.16 92 2.406 0.23
4.8 103 4.808 0.16 92 4.811 0.23 51 4.808 0.16 46 4.76 -0.83
9.6 51 9.615 0.16 46 9.520 -0.832 25 9.615 0.16 22 9.727 1.32
19.2 25 19.231 0.16 22 19.454 1.32 12 19.231 0.16 11 18.643 -2.9
38.4
38.462 0.16 11 37.287 -2.9 6 35.714 -6.99 5 37.286 -2.9
57.6 8 55.556 -3.55 7 55.93 -2.9 3 62.5 8.51 3 55.930 -2.9
115.2 3 125 8.51 3 111.86 -2.9 1 125 8.51 1 111.86 -2.9
250 1 250 0 - - - 0 250 0 - - -
BRGH=1
BRGH=1 时的波特率和误差
时的波特率和误差
BRGH=1 BRGH=1
时的波特率和误差 时的波特率和误差
· UART
UART 设置与控制
设置与控制
UART UART
设置与控制 设置与控制
· 绪论
UART 采用标准的不归零码传输数据,这种方法通常被称为 NRZ 法。它由 1 位起始位,8 位或 9
位数据位和 1 位或者 2 位停止位组成。奇偶校验是由硬件自动完成的,可设置成奇校验、偶校验和
无校验三种格式。最常用的数据传输格式由 8 位数据位,无校验和 1 位停止位组成,用 8,N,1 表
示,它是系统上电的默认格式。数据位数、停止位数和奇偶校验由 UCR1 寄存器的 BNO、PRT、PREN
和 STOPS 设定。用于数据发送和接收的波特率由一个内部的 8 位定时器产生,数据发送和接收时低
位在前。尽管 UART 发送器和接收器在功能上相互独立,但它们使用相同的数据传输格式和波特率,
在任何情况下,停止位是必须的。
·
UART 的使能和除能
UART 功能是由 UCR1 寄存器的 UARTEN 位来使能和除能的。它的发送引脚 TX 和接收引脚 RX 分别
与输入输出引脚复用,UARTEN 的一个基本功能就是控制这两个引脚。若 UARTEN、TXEN 和 RXEN 都为
高,则 TX 和 RX 分别为 UART 的发送端口和接收端口,而不能作为普通的输入输出端口使用。若没
有数据发送,TX 引脚默认状态为高电平。
Rev. 1.00 40 2008-04-23
HT46RU232
UARTEN 清零将除能 TX 和 RX,使其作为普通的输入输出端口使用。当 UART 被除能,缓冲器将
复位为空状态,所有缓冲器中的数据将被忽略,另外错误和状态标志位被复位,TXEN、RXEN、TXBRK、
RXIF、OERR、FERR,PERR 和 NF 清零,而 TIDLE、TXIF 和 RIDLE 置位,UCR1、UCR2 和 BRG 寄存器中
的其它位保持不变。若 UART 工作时 UARTEN 清零,所有发送和接收都将停止,模块也将复位成上述
状态。当 UART 再次使能时,它将在上次配置下重新工作。
····
数据位、停止位数以及奇偶校验的选择
数据传输格式由数据长度、是否校验、校验类型,地址位以及停止位数组成,它们都由 UCR1
寄存器的各个位控制。BNO 决定数传输数据是 8 位还是 9 位;PRT 决定校验类型为奇校验或偶校验;
PRTEN 决定是否选择奇偶校验;而 STOPS 决定选用 1 位或 2 位停止位。下表列出了各种数据传输格
式。地址位用来确定此帧是否为地址。停止位为 1 位或两位与数据长度无关。
起始位
起始位 数据位
起始位 起始位
8888 位数据格式
位数据格式
位数据格式 位数据格式
1 8 0 0 1
1 7 0 1 1
1 7
9999 位数据格式
位数据格式
位数据格式 位数据格式
1 9 0 0 1
1 8 0 1 1
1 8
下图是传输 8 位和 9 位数据格式时的波形。
S t a r t B i t
S t a r t B i t
数据位 地址位
数据位 数据位
B i t 0 B i t 1 B i t 2 B i t 3 B i t 4 B i t 5 B i t 6 B i t 7
B i t 0 B i t 1 B i t 2 B i t 3 B i t 4 B i t 5 B i t 6 B i t 7
地址位 校验位
地址位 地址位
11
11
发送和接收数据格式
发送和接收数据格式
发送和接收数据格式 发送和接收数据格式
8 - B i t D a t a F o r m a t
9 - B i t D a t a F o r m a t
校验位 停止位
校验位 校验位
0 1
0 1
P a r i t y B i t
S t o p B i t
P a r i t y B i t
B i t 8
停止位
停止位 停止位
N e x t
S t a r t
B i t
S t o p B i t
N e x t
S t a r t
B i t
Rev. 1.00 41 2008-04-23
HT46RU232
· UART
UART 发送器
发送器
UART UART
发送器 发送器
UCR1 寄存器的 BNO 位是控制传输数据的长度(8 位或 9 位)。当 BNO=1 时,其长度为 9 位,第 9 位
为最高位,存储在 UCR1 寄存器的 TX8 中。发送器的核心是发送移位寄存器 TSR,它的数据由发送寄存
器 TXR 提供,应用程序只须将发送数据写入 TXR 寄存器。上一组数据的停止位发出前,TSR 寄存器禁止
写入。一旦停止位发出,TSR 寄存器仍可从 TXR 寄存器加载新的发送数据。注意的是,TSR 寄存器不像
其它寄存器一样映射在数据存储器中,所以应用程序不能对其进行直接的读写操作。当 TXEN=1 时,发送
使能,但若 TXR 寄存器没有数据或者波特率没有设置,发送器将不会工作。写 TXR 寄存器后再设置 TXEN
为高也会启动发送。当发送器开始工作,若 TSR 寄存器为空,数据写入 TXR 寄存器将会直接加载到 TSR
寄存器中。若数据发送过程中,TXEN 清零,发送器将立刻停止工作并且复位,此时 TX 引脚可作为普通
的输入输出口使用。
· 发送数据
当 UART 发送数据时,数据从移位寄存器中以低位在前的方式移到 TX 引脚。在发送模式中,TXR
寄存器在内部总线和发送移位寄存器间形成一个缓冲。注意的是,选择 9 位数据传输格式,最高位 MSB
数据存储在 UCR1 寄存器的 TX8 中。
发送器初始化可由如下步骤完成:
--正确设置 BNO、PRT、PREN 和 STOPS 位以确定数据长度、校验类型和停止位长度。
--设置 BRG 寄存器,选择期望的波特率。
--设置 TXEN 为高,使 TX 引脚作为 UART 的发送端而非普通的输入输出端口。
--读取 USR 寄存器,然后将待发数据写入 TXR 寄存器,注意此步骤会清除 TXIF 标志位。
--如果要发送多个数据只需重复上一步骤。
注意的是,当 TXIF=0 时,数据将禁止写入 TXR 寄存器。软件中可以通过以下步骤来清除 TXIF:
1. 读取 USR 寄存器
2. 写 TXR 寄存器
只读标志位 TXIF 由 UART 硬件置位。若 TXIF=1,表明 TXR 寄存器为空,其它数据可以写入而不会
覆盖以前的数据。若 TEIE=1,TXIF 标志位会产生中断。
在数据传输时,写 TXR 寄存器会将待发数据暂存在 TXR 寄存器中,当前数据发送完毕后,待发数
据被加载到发送移位寄存器中。当发送器空闲时,写 TXR 寄存器会将数据直接加载到 TSR 寄存器中,
数据传输立刻开始且 TXIF 置位。当一帧数据发送完毕(停止位或暂停字发出后),TIDLE 将被置位。
可以通过以下步骤来清除 TIDLE:
1. 读取 USR 寄存器
2. 写 TXR 寄存器
清除 TXIF 和 TIDLE 软件执行次序相同。
· 发送暂停字
若 TXBRK=1,下一帧将会发送暂停字。暂停字包含一个起始位、13*N(N=1,2 等)位逻辑 0 以及
停止位组成。如果要发送暂停字,首先在应用程序中将 TXBRK 置为高,而将 TXBRK 清 0 将产生停止位,
传输暂停字时不会产生中断。需要注意的是,暂停字至少 13 位宽。若 TXBRK 持续为高,那么发送器
会一直发送暂停字;当应用程序中将 TXBRK 清 0,发送器将传输最后一帧暂停字再加上一位或者两位
停止位。暂停字后的自动高电平保证了下一帧数据起始位的检测。
Rev. 1.00 42 2008-04-23
HT46RU232
· UART
UART 接收器
接收器
UART UART
接收器 接收器
· 绪论
UART 接收器支持 8 位或 9 位数据的接收。若 BNO=1,数据长度为 9 位,而最高位 MSB 数据存放在
UCR1 寄存器的 RX8 中。接收器的核心是串行移位寄存器 RSR。RX 引脚上的数据送入数据恢复模块,它
在 16 倍波特率的频率下工作,而串行移位器在正常波特率下工作。当在 RX 引脚上检测到停止位,如
果接收寄存器为空,数据将从 RSR 寄存器加载到 RXR 寄存器。RX 引脚上的每一位数据会被采样三次以
判断其逻辑状态。注意的是,RSR 不像其它寄存器一样映射在数据存储器,所以应用程序中不能直接
对其进行读写操作。
· 接收数据
当 UART 接收数据时,数据以低位在前方式连续地从 RX 引脚输入。RXR 寄存器在内部总线和接收
移位寄存器间形成一个缓冲。RXR 寄存器是一个两字节深度的 FIFO 缓冲器,它能保存两帧数据的同时
接收第三帧数据,注意的是,应用程序必须保证在接收完第三帧前读取 RXR 寄存器,否则将忽略第三
帧数据并且发生过速错误。
接收器的初始化可由如下步骤完成:
--正确设置 BNO、PRT、PREN 和 STOPS 位以确定数据长度、校验类型和停止位长度。
--设置 BRG 寄存器,选择期望的波特率。
--设置 RXEN 为高,使 RX 引脚作为 UART 的接收端而非普通的输入输出端口。
此时接收器被使能并等待起始位。
数据接收时将会发生如下事件:
--当 RXR 寄存器中有一帧以上的数据时,USR 寄存器中的 RXIF 位将会置位。
--若 RIE=1,数据从 RSR 寄存器加载到 RXR 寄存器中将产生中断。
--若接收过程中检测到帧错误、噪声干扰错误、奇偶出错或过速错误,相应的错误标志位置高。
可以通过如下步骤来清除 RXIF:
1. 读取 USR 寄存器
2. 读取 RXR 寄存器
····
接收暂停字
UART 接收到任何暂停字都会当作帧出错处理。接收器只根据 BNO 和 STOPS 位确定一帧数据的长度。
若暂停字位数比 13 大得多,当接收到 BNO 和 STOPS 位指定的长度时,接收器认为接收已完毕,RXIF
和 FERR 置位,RXR 寄存器清 0,若相应的中断允许且 RIDLE 为高将会产生中断。若暂停字较长,接收
器收到起始位、数据位和有效停止位时,将会置位 FERR 标志,且在下一起始位前接收器将等待有效
的停止位。接收器不会将暂停字认为是下一帧数据的起始位,暂停字仅包含 0 同时 FERR 标志被置高。
暂停字被加载到缓冲器中,在接收到停止位前不会再接收数据。注意的是,没有检测到停止位也会置
位只读标志位 RIDLE。
UART 接收到暂停字会产生以下事件:
--帧错误标志位 FERR 置位。
--RXR 寄存器清零。
--OERR 、NF 、PERR 、RIDLE 或 RXIF 可能会置位。
· 空闲状态
当 UART 接收数据时,即在起始位和停止位之间,USR 寄存器中接收标志位 RIDLE 清零。在停
止位和下一帧数据的起始位之间,RIDLE 被置位,表示接收器空闲。
Rev. 1.00 43 2008-04-23
· 接收中断
USR 寄存器的只读标志位 RXIF 由接收器的边沿触发置位。若 RIE=1,数据从移位寄存器 RSR
加载到 RXR 寄存器时产生中断,同样地,过速也会产生中断。
· 接收错误处理
接收错误处理
接收错误处理 接收错误处理
UART 会产生几种接收错误,下面部分将描述各种错误以及他们的处理。
····
过速出错——OERR 标志位
RXR 寄存器是一个两字节深度的 FIFO 缓冲器,它能保存两帧数据的同时接收第三帧数据,应用程
序必须保证在接收完第三帧前读取 RXR 寄存器,否则发生过速错误。
产生过速错误时将会发生以下事件:
--USR 寄存器中 OERR 被置位。
--RXR 寄存器中数据不会丢失。
--RSR 寄存器数据会被覆盖。
--若 RIE=1,将会产生中断。
读取 USR 寄存器后再读 RXR 寄存器将 OERR 标志位清 0。
····
噪声干扰——NF 标志位
数据恢复时多次采样可以有效鉴别噪声干扰。当检测数据受到噪声干扰时将会发生以下事件:
--在 RXIF 上升沿,USR 寄存器中 NF 置位。
--数据从 RSR 寄存器加载到 RXR 寄存器。
--不产生中断,此位置位的同时由 RXIF 请求中断。
注意的是,读取 USR 寄存器后再读取 RXR 寄存器将复位 NF 标志位。
HT46RU232
· 帧错误——FERR 标志位
若在停止位上检测到 0,USR 寄存器中 FERR 置位。若选择 2 位停止位,2 位停止都必须为高,否
则将置位 FERR。它同数据一起存储在缓冲器中,可被任何复位清除。
· 奇偶校验错误——PERR 标志位
若接收到的数据出现奇偶校验错误,USR 寄存器中 PERR 置位。只有使能了奇偶校验,PREN=1,
同时选择校验类型,此标志位才有效。它同数据一起存储在缓冲器中,可被任何复位清除。注意的是,
FERR 和 PERR 与相应的数据一起存储在缓冲器中,在读取数据之前必须先访问错误标志位。
· 接收中断图解
接收中断图解
接收中断图解 接收中断图解
UART 拥有单独的内部中断和独立的中断向量。发送寄存器为空、发送器空闲、接收器数据有效、接
收过速,地址匹配和 RX 引脚唤醒都会产生中断。若 UART 中断允许且堆栈未满,程序将会跳转到相应的中
断向量执行中断服务程序,而后再返回主程序。上述四种中断条件中,若 UCR2 寄存器中相应中断允许位
被置位,USR 寄存器中标志位将会产生中断。发送器有两个相应的中断允许位而接收器两个中断共用一个
中断允许位。这些允许位可用于禁止个别的 UART 中断源。
地址匹配也是 UART 的一种中断源,它没有相应的标志位,若 UCR2 寄存器中 ADDEN=1,当检测到匹配
地址时将会产生 UART 中断。RX 引脚唤醒也可以产生 UART 中断,它没有相应的标志位,当 UXR2 中的 WAKE
和 RIE 位被置位,RX 引脚上触发下降沿可以唤醒单片机。注意的是,RX 唤醒中断发生时,系统必须延时
1024 个系统时钟才能正常工作。
值得注意的是,USR 寄存器中标志位为只读,应用程序中无法清 0 或置 1,和其他中断一样,即使响
应对应中断服务程序时也无法清 0。当 UART 响应某种动作时,标志位会自动清 0,详细请参考 UART 寄存
器部分。INTC1 寄存器中 EURI 位用来打开/关闭 UART 中断,以禁止 UART 中断发生。
Rev. 1.00 44 2008-04-23
HT46RU232
R X P i n
W a k e - u p
· 地址检测模式
地址检测模式
地址检测模式 地址检测模式
U S R R e g i s t e r
T r a n s m i t t e r E m p t y
F l a g T X I F
T r a n s m i t t e r I d l e
F l a g T I D L E
R e c e i v e r O v e r r u n
F l a g O E R R
R e c e i v e r D a t a
A v a i l a b l e R X I F
W A K E
U C R 2 R e g i s t e r
A D D E N
0
1
U C R 2 R e g i s t e r
O R
0
1
UART
UART 中断框图
UART UART
T E I E
T I I E
R I E
中断框图
中断框图 中断框图
0
1
0
1
0
1
R X 7 i f B N O = 0
R X 8 i f B N O = 1
U A R T I n t e r r u p t
R e q u e s t F l a g
U R F
0
1
I N T C 1
R e g i s t e r
E U R I
I N T C 0
R e g i s t e r
E M I
置位 UCR2 寄存器中的 ADDEN 将启动地址检测模式。若 ADDEN 有效,只有在接收到有效数据时,产生
中断请求标志 RXIF。当 ADDEN 使能,仅在接收到有效数据最高位为 1 时,产生中断。中断允许位 EURI 和
EMI 也必须使能才会产生中断。地址的最高位为第 9 位(BNO=1)或第 8 位(BNO=0),若此位为高,则接收
到的是地址而非数据。只有接收的数据的最高位为 1 才会产生中断。若 ADDEN 除能,每接收到一个有效数
据便会置位 RXIF,而不用考虑数据的最高位。地址检测和奇偶校验在功能上相互排斥,因此如果使能地址
检测模式,必须保证操作的正确,同时必须将奇偶检验使能位清零,以除能奇偶校验。
位位位位 9999((((BNO=1
BNO=1))))
ADD
ADDEN
EN
ADD ADD
ENEN
0
1
BNO=1 BNO=1
位位位位 8888((((BNO=0
BNO=0))))
BNO=0 BNO=0
0
1
0 ×
1
ADDEN
ADDEN 位功能
位功能
ADDEN ADDEN
位功能 位功能
产生
产生 UART
UART 中断
产生 产生
UART UART
√
√
√
中断
中断 中断
· 暂停模式下的
暂停模式下的 UART 功能
暂停模式下的 暂停模式下的
功能
功能 功能
当 MCU 进入暂停模式,UART 将停止工作。当芯片进入暂停模式,模块的所有时钟关闭。当 UART 传送
数据时,MCU 进入暂停模式,发送将停止并且 TX 引脚保持高电平。同样地,当 MCU 接收数据时进入暂停模
式,数据接收也会停止。当单片机进入暂停模式,USR、UCR1 和 UCR2、发送/接收寄存器、BRG 寄存器都不
会受到影响。
UART 功能中包括了 RX 引脚的唤醒功能,由 UCR2 寄存器中 WAKE 位控制。进入暂停模式前,若该标志
位与 UART 允许位 UARTEN、接收器允许位 RXEN 和接收器中断位 RIE 都被置位,则 RX 引脚的下降沿可唤醒
单片机。注意的是,唤醒后系统需延时 1024 个系统时钟才能正常工作,在此期间,RX 引脚上的任何数据
将被忽略。
若要唤醒并产生 UART 中断,全局中断允许位 EMI 和 UART 中断允许 EURI 也必须置位;若这两标
志位没有被置位,那么,单片机将可以被唤醒但不会产生中断。同样唤醒后系统需延时 1024 个系统时钟
才能正常工作,然后才会产生 UART 中断。
Rev. 1.00 45 2008-04-23
掩膜选
掩膜选项项项项
掩膜选 掩膜选
下表列出了所有掩膜选项。所有选项必须正确定义,以保证统正常运行。
掩膜
掩膜选项
选项
掩膜 掩膜
选项 选项
振荡类型选择。
该选项用来定义系统时钟来源为 RC 振荡或晶体振荡。
WDT 时钟源选择。
有三种选择:内部 WDT 振荡、指令时钟或禁止 WDT、。
清除 WDT 指令选择。
该选项用来定义清除 WDT 的指令条数。“1 条指令”表示“CLR WDT”就
能清除 WDT;“2 条指令”表示要同时使用“CLR WDT1”和“CLR WDT2”
才能清除 WDT。
唤醒选择。
该选项用来定义唤醒功能,外部输入/输出口(只有 PA)都具有通过下降沿将
系统从 HALT 模式中唤醒的能力。(按位定义)
上拉选择。
该选项用来定义输入/输出口作为输入时,是否带有内部上拉电阻;PA,PB,
PC, PD 和 PF 可以按位定义。
PFD 选择。
如果将 PA3 设置为 PFD 输出,有两种类型可供选择,一种是 PFD0 作为 PFD
输出,另外一种是 PFD1 作为 PFD 输出。PFD0 和 PFD1 分别是定时/ 计数器
0 和定时 /计数器 1 的溢出信号。
PWM 选择: (7+1)或 (6+2)模式。
PD0:电平输出或 PWM0 输出。
PD1:电平输出或 PWM1 输出。
PD2:电平输出或 PWM2 输出。
PD3:电平输出或 PWM3 输出。
WDT 预分频选择。
212/ fS~213/ fS、、213/ fS~214/ fS 、 214/ fS~215/ fS或 215/ fS~216/ fS
I2C 总线功能:打开 /关闭。
低电压复位功能:打开 /关闭。
HT46RU232
Rev. 1.00 46 2008-04-23
应用电路
应用电路
应用电路 应用电路
0 . 1mF
V
D D
O S C
C i r c u i t
1 0 0 k
0 . 1
HT46RU232
P A 0 ~ P A 2
V D D
R e s e t
W
C i r c u i t
R E S
F
m
V S S
O S C 1
O S C 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
P B 0 / A N 0
~
P B 7 / A N 7
P C 0 / T X
P C 1 / R X
P C 2 ~ P C 7
P D 0 / P W M 0
P D 3 / P W M 3
P D 4 ~ P D 7
P F 0 ~ P F 7
T M R 0
T M R 1
V
D D
4 7 0 p F
R
O S C
~
C 1
C 2
O S C 1
f
/ 4
S Y S
O S C 2
O S C 1
O S C 2
R 1
R C S y s t e m O s c i l l a t o r
3 0 k
< R
< 7 5 0 k
W
O S C
W
C r y s t a l / R e s o n a t o r
S y s t e m O s c i l l a t o r
F o r R 1 , C 1 , C 2 s e e n o t e
H T 4 6 R U 2 3 2
O S C C i r c u i t
注: 1、晶体/谐振器
对于晶体振荡器来说,为了保证振荡频率,仅有少许晶体振荡器需要应用 C1 和 C2。 而对于谐振器来说,通常
情况下必须应用 C1 和 C2 以产生振荡。许多应用场合 R1 并非必须添加。当 LVR 禁止,如果系统需要在 VDD 低于单
片机的最低工作电压的时候确保关闭振荡,建议添加 R1。C1 和 C2 的数值必须参考晶体/谐振器厂商规格书进行选择。
2 、复位电路
复位电路电阻和电容值选取的原则是使 VDD 保持稳定并在
了避免噪声干扰,连接
3 、当应用电路中复位电路受到噪声干扰及需要振荡电路外部元件的详细资料时,可参考应用范例 HA0075S 。
引脚的线请尽可能地短。
RES
置为高以前把工作电压保持在允许的范围内。为
RES
Rev. 1.00 47 2008-04-23
HT46RU232
指令集
指令集
指令集 指令集
简介
简介
简介 简介
任何单片机成功运作的核心在于它的指令集,此指令集为一组程序指令码,用来指导单片机如何去执
行指定的工作。在盛群单片机中,提供了丰富且灵活的指令,共超过六十条,程序设计者可以事半功倍地
实现他们的应用。
为了更加容易理解各种各样的指令码,接下来按功能分组介绍它们。
指令周期
指令周期
指令周期 指令周期
大部分的操作均只需要一个指令周期来执行。分支、调用或查表则需要两个指令周期。一个指令周期
相当于四个系统时钟周期,因此如果在 8MHz 的系统时钟振荡器下,大部分的操作将在 0.5µ s 中执行完成,
而分支或调用操作则将在 1µ s 中执行完成。虽然需要两个指令周期的指令通常指的是 JMP、CALL、RET、
RETI 和查表指令,但如果牵涉到程序计数器低字节寄存器 PCL 也将多花费一个周期去加以执行。即指令
改变 PCL 的内容进而导致直接跳转至新地址时,需要多一个周期去执行,例如“CLR PCL”或“MOV PCL,
A”指令。对于跳转指令必须注意的是,如果比较的结果牵涉到跳转动作将多花费一个周期,如果没有则
需一个周期即可。
数据的传送
数据的传送
数据的传送 数据的传送
单片机程序中数据传送是使用最为频繁的操作之一,使用三种 MOV 的指令,数据不但可以从寄存器
转移至累加器(反之亦然),而且能够直接移动立即数到累加器。数据传送最重要的应用之一是从输入端口
接收数据或者传送数据到输出端口。
算术运算
算术运算
算术运算 算术运算
算术运算和数据处理是大部分单片机应用所必需具备的能力,在盛群单片机内部的指令集中,可直接
实现加与减的运算。当加法的结果超出 255 或减法的结果少于 0 时,要注意正确的处理进位和借位的问题。
INC、INCA、DEC 和 DECA 指令提供了对一个指定地址的值加一或减一的功能。
逻辑和移位运算
逻辑和移位运算
逻辑和移位运算 逻辑和移位运算
标准逻辑运算例如 AND、OR、XOR 和 CPL 全都包含在盛群单片机内部的指令集中。大多数牵涉到
数据运算的指令,数据的传送必须通过累加器。在所有逻辑数据运算中,如果运算结果为零,则零标志位
将被置位,另外逻辑数据运用形式还有移位指令,例如 RR、RL、RRC 和 RLC 提供了向左或向右移动一
位的方法。不同的移位指令可满足不同的应用需要。移位指令常用于串行端口的程序应用,数据可从内部
寄存器转移至进位标志位,而此位则可被检验,移位运算还可应用在乘法与除法的运算组成中。
分支和控制的转换
分支和控制的转换
分支和控制的转换 分支和控制的转换
程序分支是采取使用 JMP 指令跳转至指定地址或使用 CALL 指令调用子程序的形式,两者之不同在
于当子程序被执行完毕后,程序必须马上返回原来的地址。这个动作是由放置在子程序里的返回指令 RET
来实现,它可使程序跳回 CALL 指令之后的地址。在 JMP 指令中,程序则只是跳到一个指定的地址而已,
并不需如 CALL 指令般跳回。一个非常有用的分支指令是条件跳转,跳转条件是由数据存储器或指定位来
加以决定。遵循跳转条件,程序将继续执行下一条指令或略过且跳转至接下来的指令。这些分支指令是程
序走向的关键,跳转条件可能是外部开关输入,或者是内部数据位的值。
Rev. 1.00 48 2008-04-23
HT46RU232
位运算
位运算
位运算 位运算
提供数据存储器中单个位的运算指令是盛群单片机的特性之一。这特性对于输出端口位的设置尤其有
用,其中个别的位或端口的引脚可以使用“SET [m].i”或“CLR [m].i”指令来设定其为高位或低位。如果
没有这特性,程序设计师必须先读入输出口的 8 位数据,处理这些数据,然后再输出正确的新数据。这种
读入-修改-写出的过程现在则被位运算指令所取代。
查表运算
查表运算
查表运算 查表运算
数据的储存通常由寄存器完成,然而当处理大量固定的数据时,它的存储量常常造成对个别存储器的
不便。为了改善此问题,盛群单片机允许在程序存储器中建立一个表格作为数据可直接存储的区域,只需
要一组简易的指令即可对数据进行查表。
其它运算
其它运算
其它运算 其它运算
除了上述功能指令外,其它指令还包括用于省电的“HALT”指令和使程序在极端电压或电磁环境下
仍能正常工作的看门狗定时器控制指令。这些指令的使用则请查阅相关的章节。
Rev. 1.00 49 2008-04-23
指令集概要
指令集概要
指令集概要 指令集概要
下列表格根据功能描述了指令集的分类,利用下表列出的惯例可以作为基本的指令参考。
表格惯例:
x:立即数
m:数据存储器地址
A:累加器
i:第 0~7 位
addr:程序存储器地址
助记符
助记符 说明
助记符 助记符
算术运算
算术运算
算术运算 算术运算
ADD A,[m]
ADDM A,[m]
ADD A,x
ADC A,[m]
ADCM A,[m]
SUB A,x
SUB A,[m]
SUBM A,[m]
SBC A,[m]
SBCM A,[m]
DAA [m]
逻辑运算
逻辑运算
逻辑运算 逻辑运算
AND A,[m]
OR A,[m]
XOR A,[m]
ANDM A,[m]
ORM A,[m]
XORM A,[m]
AND A,x
OR A,x
XOR A,x
CPL [m]
CPLA [m]
递增和递减
递增和递减
递增和递减 递增和递减
INCA [m]
INC [m]
DECA [m]
DEC [m]
ACC 与数据存储器相加,结果放入 ACC
ACC 与数据存储器相加,结果放入数据存储器 1 注
ACC 与立即数相加,结果放入 ACC
ACC 与数据存储器、进位标志相加,结果放入 ACC
ACC 与数据存储器、进位标志相加,结果放入数据存储器
ACC 与立即数相减,结果放入 ACC
ACC 与数据存储器相减,结果放入 ACC
ACC 与数据存储器相减,结果放入数据存储器 1 注
ACC 与数据存储器、进位标志的反相减,结果放入 ACC
ACC 与数据存储器、进位标志相减,结果放入数据存储器
将加法运算中放入 ACC 的值调整为十进制数,并将结果放
入数据存储器
ACC 与数据存储器做“与”运算,结果放入 ACC
ACC 与数据存储器做“或”运算,结果放入 ACC
ACC 与数据存储器做“异或”运算,结果放入 ACC
ACC 与数据存储器做“与”运算,结果放入数据存储器 1 注
ACC 与数据存储器做“或”运算,结果放入数据存储器 1 注
ACC 与数据存储器做“异或”运算,结果放入数据存储器
ACC 与立即数做“与”运算,结果放入 ACC
ACC 与立即数做“或”运算,结果放入 ACC
ACC 与立即数做“异或”运算,结果放入 ACC
对数据存储器取反,结果放入数据存储器 1注
对数据存储器取反,结果放入 ACC
递增数据存储器,结果放入 ACC
递增数据存储器,结果放入数据存储器 1注
递减数据存储器,结果放入 ACC
递减数据存储器,结果放入数据存储器 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注
1 Z
1 Z
1 Z
1注
1 Z
1 Z
1 Z
1 Z
1 Z
1 Z
HT46RU232
影响标志位
影响标志位 影响标志位
Z,C,AC,OV
Z,C,AC,OV
Z,C,AC,OV
Z,C,AC,OV
C
Z
Z
Z
Z
Z
Z
Rev. 1.00 50 2008-04-23
HT46RU232
助记符
助记符 说明
助记符 助记符
移位
移位
移位 移位
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
转移
转移
转移 转移
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 WDT
CLR WDT1
CLR WDT2
SWAP [m]
SWAPA [m]
HALT
注: 1、对跳转指令而言,如果比较的结果牵涉到跳转即需 2 个周期,如果没有发生跳转,则只需一个周期。
2、任何指令若要改变 PCL 的内容将需要 2 个周期来执行。
3、对于“ CLR WDT1”或“ CLR WDT2”指令而言, TO 和 PDF 标志位也许会受执行结果影响,“CLR WDT1”和
“CLR WDT2 ”被连续地执行后,TO 和 PDF 标志位会被清除,除此之外 TO 和 PDF 标志位保持不变。
说明 指令周期
说明 说明
数据存储器右移一位,结果放入 ACC
指令周期 影响标志位
指令周期 指令周期
1
影响标志位
影响标志位 影响标志位
无
数据存储器右移一位,结果放入数据存储器 1注 无
带进位将数据存储器右移一位,结果放入 ACC
带进位将数据存储器右移一位,结果放入数据存储器 1注
数据存储器左移一位,结果放入 ACC
1 C
C
1
无
数据存储器左移一位,结果放入数据存储器 1注 无
带进位将数据存储器左移一位,结果放入 ACC
带进位将数据存储器左移一位,结果放入数据存储器 1注
将数据存储器送至 ACC
1 C
C
1
无
将 ACC 送至数据存储器 1注 无
将立即数送至 ACC
1
无
清除数据存储器的位 1注 无
置位数据存储器的位 1注 无
无条件跳转
2
无
如果数据存储器为零,则跳过下一条指令 1注 无
数据存储器送至 ACC ,如果内容为零,则跳过下一条指令
1注 无
如果数据存储器的第 i 位为零,则跳过下一条指令 1注 无
如果数据存储器的第 i 位不为零,则跳过下一条指令 1注 无
递增数据存储器,如果结果为零,则跳过下一条指令 1注 无
递减数据存储器,如果结果为零,则跳过下一条指令 1注 无
递增数据存储器,将结果放入 ACC,如果结果为零,则跳
过下一条指令
递减数据存储器,将结果放入 ACC,如果结果为零,则跳
过下一条指令
子程序调用
从子程序返回
从子程序返回,并将立即数放入 ACC
从中断返回
1注 无
1注 无
2
2
2
2
无
无
无
无
读取当前页的 ROM 内容,并送至数据存储器和 TBLH 2 注 无
读取最后页的 ROM 内容,并送至数据存储器和 TBLH 2 注 无
空指令
1
无
清除数据存储器 1注 无
置位数据存储器 1注 无
清除看门狗定时器
预清除看门狗定时器
预清除看门狗定时器
1 TO,PDF
1 TO,PDF
1 TO,PDF
交换数据存储器的高低字节,结果放入数据存储器 1注 无
交换数据存储器的高低字节,结果放入 ACC
进入暂停模式
1
无
1 TO,PDF
Rev. 1.00 51 2008-04-23
HT46RU232
指令定义
指令定义
指令定义 指令定义
ADC A, [m] Add data memory and carry to the accumulator
说明: 将指定的数据存储器、累加器内容以及进位标志相加,结果存放到累加器。
运算过程: ACC ACC+[m]+C
影响标志位: OV、Z、AC、C
ADCM A, [m] Add the accumulator and carry to the accumulator
说明: 将指定的数据存储器、累加器内容和进位标志位相加,结果存放到指定的数据存储器。
运算过程: [m] ACC+[m]+C
影响标志位: OV、Z、AC、C
ADD A, [m] Add data memory to the accumulator
说明: 将指定的数据存储器和累加器内容相加,结果存放到累加器。
运算过程: ACC ACC+[m]
影响标志位: OV、Z、AC、C
ADD A, x Add immediate data to the accumulator
说明: 将累加器和立即数相加,结果存放到累加器。
运算过程: ACC ACC+x
影响标志位: OV、Z、AC、C
ADDM A, [m] Add the accumulator to the data memory
说明: 将指定的数据存储器和累加器内容相加,结果存放到指定的数据存储器。
运算过程: [m] ACC+[m]
影响标志位: OV、Z、AC、C
AND A, [m] Logical AND accumulator with data memory
说明: 将累加器中的数据和指定数据存储器内容做逻辑与,结果存放到累加器。
运算过程: ACC ACC “AND” [m]
影响标志位: Z
AND A, x Logical AND immediate data to the accumulator
说明: 将累加器中的数据和立即数做逻辑与,结果存放到累加器。
运算过程: ACC ACC “AND” x
影响标志位: Z
ANDM A, [m] Logical AND data memory with the accumulator
说明: 将指定数据存储器内容和累加器中的数据做逻辑与,结果存放到数据存储器。
运算过程: [m] ACC “AND” [m]
影响标志位: Z
Rev. 1.00 52 2008-04-23
HT46RU232
CALL addr Subroutine call
说明: 无条件的调用指定地址的子程序,此时程序计数器先加 1 获得下一个要执行的指令地址
并压入堆栈,接着载入指定地址并从新地址执行程序。由于指令需要额外的运算,所以
此指令为 2 个周期。
运算过程: Stack Program Counter+1
Program Counter addr
影响标志位: 无
CLR [m] Clear data memory
说明: 将指定数据存储器的内容清零。
运算过程: [m] 00H
影响标志位: 无
CLR [m] . i Clear bit of data memory
说明: 将指定数据存储器的 i 位内容清零。
运算过程: [m].i 0
影响标志位: 无
CLR WDT Clear Watchdog Timer
说明: WDT 计数器、暂停标志位 PDF 和看门狗溢出标志位 TO 清零。
运算过程: WDT 00H
PDF & TO 0
影响标志位: TO 、 PDF
CLR WDT1 Preclear Watchdog Timer
说明: PDF 和 TO 标志位都被清 0 。必须配合 CLR WDT2 一起使用清除 WDT 计时器。当程序
仅执行 CLR WDT1 ,而没有执行 CLR WDT2 时,PDF 与 TO 保留原状态不变。
运算过程: WDT 00H
PDF & TO 0
影响标志位: TO 、 PDF
CLR WDT2 Preclear Watchdog Timer
说明: PDF 和 TO 标志位都被清 0。必须配合 CLR WDT1 一起使用清除 WDT 计时器。当程序
仅执行 CLR WDT2 ,而没有执行 CLR WDT1 时,PDF 与 TO 保留原状态不变。
运算过程: WDT 00H
PDF & TO 0
影响标志位: TO 、 PDF
CPL [m] Complement data memory
说明: 将指定数据存储器中的每一位取逻辑反,相当于从 1 变 0 或从 0 变 1。
运算过程: [m] [m]
影响标志位: Z
Rev. 1.00 53 2008-04-23
HT46RU232
CPLA [m] Complement data memory
说明: 将指定数据存储器中的每一位取逻辑反,相当于从 1 变 0 或从 0 变 1 ,结果被存放回累
加器且数据寄存器的内容保持不变。
运算过程: ACC [m]
影响标志位: Z
DAA [m] Decimal-Adjust accumulator for addition
说明: 将累加器中的内容转换为 BCD(二进制转成十进制)码。如果低四位的值大于“ 9”或
AC=1,那么 BCD 调整就执行对原值加“6”,否则原值保持不变;如果高四位的值大于
“9 ”或 C=1 ,那么 BCD 调整就执行对原值加“6 ”。BCD 转换实质上是根据累加器和
标志位执行 00H ,06H ,60H 或 66H 的加法运算,结果存放到数据存储器。只有进位标
志位 C 受影响,用来指示原始 BCD 的和是否大于 100 ,并可以进行双精度十进制数的
加法运算。
操作: [m] ACC+00H 或 [m] ACC+06H
[m] ACC+60H 或 [m] ACC+66H
影响标志位: C
DEC [m] Decrement data memory
说明: 将指定数据存储器的内容减 1。
运算过程: [m] [m]-1
影响标志位: Z
DECA [m] Decrement data memory and place result in the accumulator
说明: 将指定数据存储器的内容减 1,把结果存放回累加器并保持指定数据存储器的内容不变。
运算过程: ACC [m]-1
影响标志位: Z
HALT Enter power down mode
说明: 此指令终止程序执行并关掉系统时钟,RAM 和寄存器的内容保持原状态,WDT 计数器
和分频器被清“0”,暂停标志位 PDF 被置位 1,WDT 溢出标志位 TO 被清 0。
运算过程: PDF 1
TO 0
影响标志位: TO 、 PDF
INC [m] Increment data memory
说明: 将指定数据存储器的内容加 1。
运算过程: [m] [m]+1
影响标志位: Z
INCA [m] Increment data memory and place result in the accumulator
说明: 将指定数据存储器的内容加 1,结果存放回累加器并保持指定的数据存储器内容不变。
运算过程: ACC [m]+1
影响标志位: Z
Rev. 1.00 54 2008-04-23
HT46RU232
JMP addr Directly jump
说明: 程序计数器的内容无条件地由被指定的地址取代,程序由新的地址继续执行。当新的地
址被加载时,必须插入一个空指令周期,所以此指令为 2 个周期的指令。
运算过程: PC addr
影响标志位: 无
MOV A, [m] Move data memory to the accumulator
说明: 将指定数据存储器的内容复制到累加器。
运算过程: ACC [m]
影响标志位: 无
MOV A, x Move immediate data to the accumulator
说明: 将 8 位立即数载入累加器。
运算过程: ACC x
影响标志位: 无
MOV [m], A Move the accumulator data to memory
说明: 将累加器的内容复制到指定的数据存储器。
运算过程: [m] ACC
影响标志位: 无
NOP No operation
说明: 空操作,顺序执行下一条指令。
运算过程: PC PC+1
影响标志位: 无
OR A, [m] Logical OR accumulator with data memory
说明: 将累加器中的数据和指定的数据存储器内容逻辑或,结果存放到累加器。
运算过程: ACC ACC “OR” [m]
影响标志位: Z
OR A, x Logical OR immediate data to the accumulator
说明: 将累加器中的数据和立即数逻辑或,结果存放到累加器。
运算过程: ACC ACC “OR” x
影响标志位: Z
ORM A, [m] Logical OR data memory with accumulator
说明: 将存在指定数据存储器中的数据和累加器逻辑或,结果放到数据存储器。
运算过程: [m] ACC “OR” [m]
影响标志位: Z
RET Return from subroutine
说明: 将堆栈寄存器中的程序计数器值恢复,程序由取回的地址继续执行。
运算过程: PC Stack
影响标志位: 无
Rev. 1.00 55 2008-04-23
HT46RU232
RET A, x Return and place immediate data in the accumulator
说明: 将堆栈寄存器中的程序计数器值恢复且累加器载入指定的立即数,程序由取回的地址继
续执行。
运算过程: PC Stack
ACC x
影响标志位: 无
RETI Return from interrupt
说明: 将堆栈寄存器中的程序计数器值恢复且中断功能通过设置 EMI 位重新使能。EMI 是控制
中断使能的主控制位。如果在执行 RETI 指令之前还有中断未被相应,则这个中断将在
返回主程序之前被相应。
运算过程: PC Stack
EMI 1
影响标志位: 无
RL [m] Rotate data memory left
说明: 将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位。
运算过程: [m].(i+1) [m].i (i=0~6)
[m].0 [m].7
影响标志位: 无
RLA [m] Rotate data memory left and place result in the accumulator
说明: 将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位,结果送到累加器,而指定数
据存储器的内容保持不变。
运算过程: ACC.(i+1) [m].i (i=0~6)
ACC.0 [m].7
影响标志位: 无
RLC [m] Rotate data memory left through carry
说明: 将指定数据存储器的内容连同进位标志左移 1 位,第 7 位取代进位标志且原本的进位标
志移到第 0 位。
运算过程: [m].(i+1) [m].i (i=0~6)
[m].0 C
C [m].7
影响标志位: C
RLCA [m] Rotate left through carry and place result in the accumulator
说明: 将指定数据存储器的内容连同进位标志左移 1 位,第 7 位取代进位标志且原本的进位标
志移到第 0 位,移位结果送回累加器,但是指定数据寄存器的内容保持不变。
运算过程: ACC.(i+1) [m].i (i=0~6)
ACC.0 C
C [m].7
影响标志位: C
Rev. 1.00 56 2008-04-23
HT46RU232
RR [m] Rotate data memory right
说明: 将指定数据存储器的内容循环右移 1 位且第 0 位移到第 7 位。
运算过程: [m].i [m].(i+1) (i=0~6)
[m].7 [m].0,
影响标志位: 无
RRA [m] Rotate right and place result in the accumulator
说明: 将指定数据存储器的内容循环右移 1 位,第 0 位移到第 7 位,移位结果存放到累加器,
而指定数据存储器的内容保持不变。
运算过程: ACC.i [m].(i+1) (i=0~6)
ACC.7 [m].0
影响标志位: 无
RRC [m] Rotate data memory right through carry
说明: 将指定数据存储器的内容连同进位标志右移 1 位,第 0 位取代进位标志且原本的进位标
志移到第 7 位。
运算过程: [m].i [m].(i+1) (i=0~6)
[m]. 7 C
C [m].0
影响标志位: C
RRCA [m] Rotate right through carry and place result in the accumulator
说明: 将指定数据存储器的内容连同进位标志右移 1 位,第 0 位取代进位标志且原本的进位标
志移到第 7 位,移位结果送回累加器,但是指定数据寄存器的内容保持不变。
运算过程: ACC.i [m].(i+1) (i=0~6)
ACC.7 C
C [m].0
影响标志位: C
SBC A,[m] Subtract data memory and carry from the accumulator
说明: 将累加器减去指定数据存储器的内容以及进位标志的反,结果存放到累加器。如果结果
为负, C 标志位清除为 0,反之结果为正或 0, C 标志位设置为 1。
运算过程: ACC ACC-[m]- C
影响标志位: OV、Z、AC、C
SBCM A,[m] Subtract data memory and carry from the accumulator
说明: 将累加器减去指定数据存储器的内容以及进位标志的反,结果存放到数据存储器。如果
结果为负, C 标志位清除为 0,反之结果为正或 0,C 标志位设置为 1。
运算过程: ACC ACC-[m]- C
影响标志位: OV、Z、AC、C
Rev. 1.00 57 2008-04-23
HT46RU232
SDZ [m] Skip if decrement data memory is 0
说明: 将指定的数据存储器的内容减 1 ,判断是否为 0 ,若为 0 则跳过下一条指令,由于取得
下一个指令时会要求插入一个空指令周期,所以此指令为 2 个周期的指令。如果结果不
为 0,则程序继续执行下一条指令。
运算过程: [m] [m] -1,如果[m]=0 跳过下一条指令执行
影响标志位: 无
SDZA [m] Decrement data memory and place result in ACC,skip if 0
说明: 将指定数据存储器内容减 1 ,判断是否为 0 ,如果为 0 则跳过下一条指令,此结果将存放
到累加器,但指定数据存储器内容不变。由于取得下一个指令时会要求插入一个空指令
周期,所以此指令为 2 个周期的指令。如果结果不为 0,则程序继续执行下一条指令。
运算过程: ACC [m]-1,如果 ACC=0 跳过下一条指令执行
影响标志位: 无
SET [m] Set data memory
说明: 将指定数据存储器的每一位设置为 1。
运算过程: [m] FFH
影响标志位: 无
SET [m]. i Set bit of data memory
说明: 将指定数据存储器的第 i 位设置为 1。
运算过程: [m].i 1
影响标志位: 无
SIZ [m] Skip if increment data memory is 0
说明: 将指定的数据存储器的内容加 1 ,判断是否为 0 ,若为 0 则跳过下一条指令。由于取得下
一个指令时会要求插入一个空指令周期,所以此指令为 2 个周期的指令。如果结果不为
0,则程序继续执行下一条指令。
运算过程: [m] [m]+1,如果[m]=0 跳过下一条指令执行
影响标志位: 无
SIZA [m] Increment data memory and place result in ACC,skip if 0
说明: 将指定数据存储器的内容加 1 ,判断是否为 0 ,如果为 0 则跳过下一条指令,此结果会被
存放到累加器,但是指定数据存储器的内容不变。由于取得下一个指令时会要求插入一
个空指令周期,所以此指令为 2 个周期的指令。如果结果不为 0 ,则程序继续执行下一
条指令。
运算过程: ACC [m]+1,如果 ACC=0 跳过下一条指令执行
影响标志位: 无
SNZ [m]. i Skip if bit I of the data memory is not 0
说明: 判断指定数据存储器的第 i 位,若不为 0 ,则程序跳过下一条指令执行。由于取得下一个
指令时会要求插入一个空指令周期,所以此指令为 2 个周期的指令。如果结果为 0 ,则
程序继续执行下一条指令。
运算过程: 如果[m].i≠ 0,跳过下一条指令执行
影响标志位: 无
Rev. 1.00 58 2008-04-23
HT46RU232
SUB A, [m] Subtract data memory from the accumulator
说明: 将累加器的内容减去指定的数据存储器的数据,把结果存放到累加器。如果结果为负,
C 标志位清除为 0,反之结果为正或 0, C 标志位设置为 1。
运算过程: ACC ACC-[m]
影响标志位: OV、Z、AC、C
SUBM A, [m] Subtract data memory from the accumulator
说明: 将累加器的内容减去指定数据存储器的数据,结果存放到指定的数据存储器。如果结果
为负, C 标志位清除为 0,反之结果为正或 0, C 标志位设置为 1。
运算过程: [m] ACC-[m]
影响标志位: OV、Z、AC、C
SUB A, x Subtract immediate data from the accumulator
说明: 将累加器的内容减去立即数,结果存放到累加器。如果结果为负, C 标志位清除为 0,
反之结果为正或 0, C 标志位设置为 1。
运算过程: ACC ACC-x
影响标志位: OV、Z、AC、C
SWAP [m] Swap nibbles within the data memory
说明: 将指定数据存储器的低 4 位和高 4 位互相交换。
运算过程: [m].3~[m].0↔[m].7~[m].4
影响标志位: 无
SWAPA [m] Swap data memory and place result in the accumulator
说明: 将指定数据存储器的低 4 位和高 4 位互相交换,再将结果存放到累加器且指定数据寄存
器的数据保持不变。
运算过程: ACC.3~ACC.0 [m].7~[m].4
ACC.7~ACC.4 [m].3~[m].0
影响标志位: 无
SZ [m] Skip if data memory is 0
说明: 判断指定数据存储器的内容是否为 0 ,若为 0 ,则程序跳过下一条指令执行。由于取得下
一个指令时会要求插入一个空指令周期,所以此指令为 2 个周期的指令。如果结果不为
0,则程序继续执行下一条指令。
运算过程: 如果[m] = 0, 跳过下一条指令执行
影响标志位: 无
SZA [m] Move data memory to ACC,skip if 0
说明: 将指定数据存储器内容复制到累加器,并判断指定数据存储器的内容是否为 0,若为 0
则跳过下一条指令。由于取得下一个指令时会要求插入一个空指令周期,所以此指令为 2
个周期的指令。如果结果不为 0,则程序继续执行下一条指令。
运算过程: ACC [m],如果[m] = 0,跳过下一条指令执行
影响标志位: 无
Rev. 1.00 59 2008-04-23
HT46RU232
SZ [m]. i Skip if bit I of the data memory is 0
说明: 判断指定数据存储器的第 i 位是否为 0,若为 0,则跳过下一条指令。由于取得下一个指
令时会要求插入一个空指令周期,所以此指令为 2 个周期的指令。如果结果不为 0 ,则
程序继续执行下一条指令。
运算过程: 如果[m].i = 0,跳过下一条指令执行
影响标志位: 无
TABRDC [m] Move the ROM code(current page) to TBLH and data memory
说明: 将表格指针 TBLP 所指的程序代码低字节(当前页)移至指定的数据存储器且将高字节
移至 TBLH。
运算过程: [m] 程序代码(低字节)
TBLH程序代码(高字节)
影响标志位: 无
TABRDL [m] Move the ROM code(last page) to TBLH and data memory
说明: 将表格指针 TBLP 所指的程序代码低字节(最后一页)移至指定的数据存储器且将高字
节移至 TBLH。
运算过程: [m] 程序代码(低字节)
TBLH程序代码(高字节)
影响标志位: 无
XOR A, [m] Logical XOR accumulator with data memory
说明: 将累加器的数据和指定的数据存储器内容逻辑异或,结果存放到累加器。
运算过程: ACC ACC “XOR” [m]
影响标志位: Z
XORM A, [m] Logical XOR data memory with accumulator
说明: 将累加器的数据和指定的数据存储器内容逻辑异或,结果放到数据存储器。
运算过程: [m] ACC “XOR” [m]
影响标志位: Z
XOR A, x Logical XOR immediate data to the accumulator
说明: 将累加器的数据与立即数逻辑异或,结果存放到累加器。
运算过程: ACC ACC “XOR” x
影响标志位: Z
Rev. 1.00 60 2008-04-23
封装尺寸
封装尺寸
封装尺寸 封装尺寸
28pin-SKDIP (300mil) 外形尺寸
外形尺寸
外形尺寸 外形尺寸
HT46RU232
A
1
C
D
E
F
2 8
B
1 5
1 4
H
I
G
a
尺寸
尺寸((((单位
单位::::mil ))))
尺寸 尺寸
标号
标号
标号 标号
最小
最小 典型
最小 最小
单位 单位
典型 最大
典型 典型
最大
最大 最大
A 1375 -- 1395
B 278 -- 298
C 125 -- 135
D 125 -- 145
E 16 -- 20
F 50 -- 70
G -- 100 -H 295 -- 315
I 330 -- 375
ɑ 0 °
--
15°
Rev. 1.00 61 2008-04-23
28pin-SOP (300mil) 外形尺寸
外形尺寸
外形尺寸 外形尺寸
HT46RU232
2 8
A
1
C
C '
D
E
1 5
B
1 4
G
H
F
a
尺寸
尺寸((((单位
单位::::mil ))))
尺寸 尺寸
标号
标号
标号 标号
最小
最小 典型
最小 最小
单位 单位
典型 最大
典型 典型
最大
最大 最大
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 °
--
10°
Rev. 1.00 62 2008-04-23
48-pin SSOP (300mil) 外形尺寸
外形尺寸
外形尺寸 外形尺寸
HT46RU232
4 8
A
1
C
C '
D
E
2 5
B
2 4
G
F
a
H
尺寸
尺寸((((单位
单位::::mil ))))
尺寸 尺寸
标号
标号
标号 标号
最小
最小 典型
最小 最小
单位 单位
典型 最大
典型 典型
最大
最大 最大
A 395 -- 420
B 291 -- 299
C 8 -- 12
C’ 613 -- 637
D 85 -- 99
E -- 25 --
F 4 -- 10
G 25 -- 35
H 4 -- 12
ɑ 0 °
--
8°
Rev. 1.00 63 2008-04-23
包装带和卷轴规格
包装带和卷轴规格
包装带和卷轴规格 包装带和卷轴规格
卷轴尺寸
卷轴尺寸
卷轴尺寸 卷轴尺寸
HT46RU232
T 2
D
A
B
SOP 28W((((300mil))))
符号
符号 说明
符号 符号
A
B
C
D
T1
T2
卷轴外圈直径 330±1.0
卷轴内圈直径 62±1.5
轴心直径
缝宽 2.0±0.5
轮缘宽
卷轴宽 30.2±0.2
SSOP 48W
符号
符号 说明
符号 符号
A
B
C
D
T1
T2
卷轴外圈直径 330±1.0
卷轴内圈直径 100±0.1
轴心直径
缝宽 2.0±0.5
轮缘宽
卷轴宽 38.2±0.2
C
T 1
说明 尺寸
说明 说明
尺寸 (mm)
尺寸 尺寸
13.0+0.5
-0.2
24.8+0.3
-0.2
说明 尺寸
说明 说明
尺寸 (mm)
尺寸 尺寸
13.0+0.5
-0.2
32.2+0.3
-0.2
Rev. 1.00 64 2008-04-23
运输带尺寸
运输带尺寸
运输带尺寸 运输带尺寸
HT46RU232
D
E
P 1 P 0
t
F
P D 1
A 0
W
B 0
C
K 0
SOP 28W((((300mil))))
符号
符号 说明
符号 符号
W
P
E
F
D
D1
P0
P1
A0
B0
K0
t
C
Rev. 1.00 65 2008-04-23
运输带宽 24.0±0.3
空穴间距 12.0±0.1
穿孔位置 1.75±0.1
空穴至穿孔距离(宽度) 11.5±0.1
穿孔直径
空穴中之小孔直径
穿孔间距 4.0±0.1
空穴至穿孔距离(长度) 2.0±0.1
空穴长 10.85±0.1
空穴宽 18.34±0.1
空穴深 2.97±0.1
传输带厚度 0.35±0.01
覆盖带宽度
说明 尺寸
说明 说明
尺寸 (mm)
尺寸 尺寸
1.5+0.1
1.5+0.25
21.3
HT46RU232
E
F
SSOP 48W
符号
符号 说明
符号 符号
W
P
E
F
D
D1
P0
P1
A0
B0
K1
K2
t
C
D
P D 1
P 1 P 0
W
A 0
t
B 0
C
K 1
K 2
说明 尺寸
说明 说明
尺寸 (mm)
尺寸 尺寸
运输带宽 32.0±0.3
空穴间距 16.0±0.1
穿孔位置 1.75±0.1
空穴至穿孔距离(宽度) 14.2±0.1
穿孔直径
空穴中之小孔直径
2.0Min
1.5+0.25
穿孔间距 4.0±0.1
空穴至穿孔距离(长度) 2.0±0.1
空穴长 12.0±0.1
空穴宽 16.20±0.1
空穴深 2.4±0.1
空穴深 3.2±0.1
传输带厚度 0.35±0.05
覆盖带宽度
25.5
Rev. 1.00 66 2008-04-23
盛群半导体股份有限公司
盛群半导体股份有限公司((((总公司
盛群半导体股份有限公司 盛群半导体股份有限公司
新竹市科学工业园区研新二路 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)
盛扬半导体有限公司
盛扬半导体有限公司((((上海
盛扬半导体有限公司 盛扬半导体有限公司
上海宜山路 2016 号 1 号楼 3 楼 G 室 201103
电话: 021-5422-4590
传真: 021-5422-4596
网站: www.holtek.com.cn
盛扬半导体有限公司
盛扬半导体有限公司((((深圳
盛扬半导体有限公司 盛扬半导体有限公司
深圳市南山区科技园科技中三路与高新中二道交汇处生产力大楼 A 单元五楼 518057
电话: 0755-8616-9908,8616-9308
传真: 0755-8616-9722
盛扬半导体有限公司
盛扬半导体有限公司((((北京
盛扬半导体有限公司 盛扬半导体有限公司
北京市西城区宣武门西大街甲 129 号金隅大厦 1721 室 100031
电话: 010-6641-0030, 6641-7751, 6641-7752
传真: 010-6641-0125
盛扬半导体有限公司
盛扬半导体有限公司((((成都
盛扬半导体有限公司 盛扬半导体有限公司
成都市东大街 97 号香槟广场 C 座 709 室 610016
电话: 028-6653-6590
传真: 028-6653-6591
Holtek Semiconductor(USA), Inc. ((((北美业务处
46712 Fremont Blvd., Fremont, CA 94538
电话: 510-252-9880
传真: 510-252-9885
网站: www.holtek.com
Copyright 2008 by HOLTEK SEMICONDUCTOR INC.
使用指南中所出现的信息在出版当时相信是正确的,然而盛群对于说明书的使用不负任何责任。文中提
到的应用目的仅仅是用来做说明,盛群不保证或表示这些没有进一步修改的应用将是适当的,也不推荐
它的产品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使用于救生、维
生器件或系统中做为关键器件。盛群拥有不事先通知而修改产品的权利,对于最新的信息,请参考我们
的网址 http://www.holtek.com.tw
总公司))))
总公司 总公司
台北业务处))))
台北业务处 台北业务处
上海业务处
业务处))))
上海 上海
业务处 业务处
深圳业务处
业务处))))
深圳 深圳
业务处 业务处
北京业务处
业务处))))
北京 北京
业务处 业务处
成都业务处
业务处))))
成都 成都
业务处 业务处
北美业务处))))
北美业务处 北美业务处
HT46RU232
Rev. 1.00 67 2008-04-23