HOLTEK HT46RB50 User Manual

HT46RB50
A/D
型八位
型八位
型八位型八位
盛群知识产权政策
盛群知识产权政策
专利权
专利权
专利权专利权
盛群半导体公司在全球各地区已核准和申请中之专利权至少有 160 件以上,享有绝对之合法权益。与盛群 公司 MCU 或其它产品有关的专利权并未被同意授权使用,任何经由不当手段侵害盛群公司专利权之公司、 组织或个人,盛群将采取一切可能的法律行动,遏止侵权者不当的侵权行为,并追讨盛群公司因侵权行为 所受之损失、或侵权者所得之不法利益。
商标
商标权权权权
商标商标
盛群之名称和标识、Holtek 标识、HT-IDE、HT-ICE、Marvel Speech、 Music Micro、 Adlib Micro、 Magic
Voice、 Green Dialer、 PagerPro、 Q-Voice、 Turbo Voice、 EasyVoice和 HandyWriter 司在台湾地区和其它国家的注册商标。
USB
都是盛群半导体公
单片机
单片机
单片机单片机
著作权
著作权
著作权著作权
Copyright 2006 by HOLTEK SEMICONDUCTOR INC.
规格书中所出现的信息在出版当时相信是正确的,然而盛群对于规格内容的使用不负责任。文中提到的应 用其目的仅仅是用来做说明,盛群不保证或不表示这些应用没有更深入的修改就能适用,也不推荐它的产 品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使用于救生、维生器件或 系统中做为关键器件。盛群拥有不事先通知而修改产品的权利,对于最新的信息,请参考我们的网址
http://www.holtek.com.tw; http://www.holtek.com.cn
Rev. 1.20 1 2006-11-01
技术相关信息
技术相关信息
技术相关信息技术相关信息
· 工具信息
·
FAQs
· 应用范例
特性
特性
特性特性
HT46RB50
工作电压:
f
=6MHz2.2V~5.5V
SYS
f
=12MHz2.7V~5.5V
SYS
最多可有 38 个双向输入/输出口
1 个与输入/输出口共用引脚的外部中断输入
16 位可编程定时/计数器,具有溢出中断
8 位可编程定时/计数器,具有溢出中断和 7 级预
分频系数
晶体振荡(6MHz 12MHz
看门狗定时器
4096×15 程序存储器 ROM
192×8 数据存储器 RAM
HALT 和唤醒功能可降低功耗
VDD=5V
,系统频率为
12MHz
时,指令周期
0.33µs
6 层硬件堆栈
概述
概述
概述概述
8 通道 10 位解析度的 A/D 转换器
2 通道 8 位的 PWM 输出,与输入/输出口共用
引脚
SIO(同步串行口)功能
支持中断,控制和批量传输
兼容 USB1.1 全速模式
支持 4 个端点(包括端点 0
88 个字节 FIFOEP0 EP3 分别为 888
和64)
位操作指令
查表指令,表格内容字长 15
63 条指令
指令执行时间为 1 2 个指令周期
低电压复位功能
28-pin SOP/SKDIP48-pin SSOP 封装
HT46RB50 8 位高性能精简指令集单片机,专门为 USB 产品而设计。尤其适用于 USB SPI
口触控面板、
USB或SPI
接口触控按键、
PS2
摇杆、
XBOX
摇杆、
鼠标键盘和摇杆。暂停模式可用
USB
于降低功耗。
Rev. 1.20 2 2006-11-01
方框图
方框图
方框图方框图
HT46RB50
O S C 2
P r o g r a m
R O M
I n s t r u c t i o n
R e g i s t e r
I n s t r u c t i o n
D e c o d e r
T i m i n g
G e n e r a t o r
O S C 1
A V D D A V S S
R E S V D D V S S
P r o g r a m
C o u n t e r
U S B D + U S B D -
S T A C K
M P
M U X
A L U
S h i f t e r
A C C
F u l l S p e e d
M U X
U S B 1 . 1
M e m o r y
S T A T U S
I n t e r r u p t
C i r c u i t
D A T A
V 3 3 O
I N T C
T M R 0 C
T M R 0
T M R 1 C
T M R 1
W D T S
W D T P r e s c a l e r
P A C
P o r t A
P A
P B C
P o r t B
P B
A / D C o n v e r t e r
P C C
P o r t C
P C
P D C
P o r t D
P D
P W M
M
P r e s c a l e r U X
M
U X
P C 1 / T M R 0
f
S Y S
P C 2 / T M R 1
E N / D I S
W D T
P A 0 ~ P A 7
P B 0 / A N 0 ~ P B 7 / A N 7
P C 0 / I N T P C 3 ~ P C 7
P D 0 / P W M 0 ~ P D 1 / P W M 1 , P D 2 ~ P D 7
f
S Y S
/ 4
M
f
/ 4
S Y S
U
W D T O S C
X
P E C
P E
S e r i a l
I n t e r f a c e
P o r t E
P E 4 ~ P E 5 P E 0 / S C S P E 1 / C L K P E 2 / S D I P E 3 / S D O
Rev. 1.20 3 2006-11-01
引脚图
SDI与PE2
SDI
引脚图
引脚图引脚图
P A 3
P A 2
P A 1
P A 0
P D 1 / P W M 1
P D 0 / P W M 0
P B 5 / A N 5
P B 4 / A N 4
P B 3 / A N 3
P B 2 / A N 2
P B 1 / A N 1
P B 0 / A N 0
P E 3 / S D O
P E 2 / S D I
2 8
1
2 7
2
2 6
3
2 5
4
2 4
5
2 3
6
2 2
7
2 1
8
2 0
9
1 9
1 0
1 8
1 1
1 7
1 2
1 6
1 3
1 5
1 4
H T 4 6 R B 5 0
2 8 S O P - A / S K D I P - A
P A 4
P A 5
P A 6
P A 7
R E S
V D D / A V D D
V S S / A V S S
O S C 1
O S C 2
V 3 3 O
U D P
U D N
P C 0 / I N T
P E 1 / C L K
P A 3
P A 2
P A 1
P A 0
P D 3
P D 2
P D 1 / P W M 1
P D 0 / P W M 0
P B 7 / A N 7
P B 6 / A N 6
P B 5 / A N 5
P B 4 / A N 4
P C 7
P C 6
P C 5
P C 4
P B 3 / A N 3
P B 2 / A N 2
P B 1 / A N 1
P B 0 / A N 0
P E 3 / S D O
P E 2 / S D I
P E 1 / C L K
P E 0 / S C S
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 B 5 0
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 A 4
P A 5
P A 6
P A 7
P D 4
P D 5
P D 6
P D 7
R E S
A V D D
V D D
A V S S
V S S
O S C 1
O S C 2
P E 4
P E 5
V 3 3 O
U D P
U D N
P C 0 / I N T
P C 1 / T M R 0
P C 2 / T M R 1
P C 3
HT46RB50
引脚说明
引脚说明
引脚说明引脚说明
引脚名称
引脚名称 输入
引脚名称引脚名称
PA0~PA7
PB0/AN0~ PB7/AN7
PC0/
INT
PC1/TMR0 PC2/TMR1 PC3~PC7
PD0/PWM0 PD1/PWM1 PD2~PD7
输入/输出
输出 掩膜选项
输入输入
输出输出
输入/输出
输入/输出
输入/输出
输入/输出
掩膜选项 功能说明
掩膜选项掩膜选项 上拉电阻
(位选择)
唤醒
(位选择)
上拉电阻
(位选择)
8 位双向输入/输出口。每一位可由掩膜选项设置为唤醒输
入。输入/输出模式由控制寄存器 PAC(PA 控制寄存器: 位选择)决定。上拉电阻选项:PA0~PA7,位选择;唤醒 选项:PA0~PA7。 8 位双向输入/输出口。可由软件设置为 CMOS 输出、带 或不带上拉电阻(由上拉电阻选项决定:位选择)的斯密 特触发输入。PB口可作为AD转换输入。
功能说明
功能说明功能说明
双向输入/输出口。可由软件设置为 CMOS 输出、带或不
上拉电阻
半字节选择
(
上拉电阻
(半字节选择)
带上拉电阻(由上拉电阻选项决定:半字节选择)的斯密
)
特触输入。
共用引脚。
PC2
TMR0 TMR1 分别与 PC0PC1
INT
双向输入/输出口。可由软件设置为 CMOS 输出、带或不 带上拉电阻(由上拉电阻选项决定:半字节选择)的斯密 特触输入。PWM0 和 PWM1 分别与 PD0 和 PD1 共用引脚。 双向输入/输出口。可由软件设置为 CMOS 输出、带或不
PE0/
SCS
输入/输出
上拉电阻
(半字节选择)
带上拉电阻(由上拉电阻选项决定:半字节选择)的斯密 特触输入。 择引脚,主模式为输出,从模式为输入。
SCS
共用引脚。
PE0
为串行接口芯片选
SCS
双向输入/输出口。可由软件设置为 CMOS 输出、带或不
PE1/CLK
输入/输出
上拉电阻
(半字节选择)
带上拉电阻(由上拉电阻选项决定:半字节选择)的斯密 特触输入。CLK PE1 共用引脚。CLK 为串行接口时钟 输入/输出引脚(初始化为输入)。
PE2/SDI
输入/输出
上拉电阻
半字节选择
(
Rev. 1.20 4 2006-11-01
双向输入/输出口。可由软件设置为 CMOS 输出、带或不 带上拉电阻(由上拉电阻选项决定:半字节选择)的斯密
)
特触输入。
共用引脚。
为串行接口输入引
HT46RB50
脚。 双向输入/输出口。可由软件设置为 CMOS 输出、带或不
PE3/SDO
PE4~PE5
RES
VSS AVSS VDD AVDD
OSC1 OSC2
V33O
UDP
UDN
输入/输出
输入/输出
输入 斯密特触发复位输入,低电平有效。
负电源,接地。 — ADC 负电源,接地。 —
ADC 正源,必外接 VDD。 输入 输出 输出 3.3V 参考源输出。
输入/输出
输入/输出
上拉电阻
(半字节选择)
上拉电阻
(半字节选择)
晶体或 RC
带上拉电阻(由上拉电阻选项决定:半字节选择)的斯密 特触输入。SDO 与 PE3 共用引脚。SDO 为串行接口输出 引脚。 双向输入/输出口。可由软件设置为 CMOS 输出、带或不 带上拉电阻(由上拉电阻选项决定:半字节选择)的斯密 特触输入。
正电源。
OSC1OSC2 连接 6M 12M 的晶体振荡器/谐振器以产 生内部系统时钟。
UDP USBD+引脚 USB 功能可通过软件控制。 UDN USBD-引脚 USB 功能可通过软件控制。
极限参数
极限参数
极限参数极限参数
电源供应电压………….VSS-0.3V~VSS+6.0V 储存温度………….-50℃~125℃ 端口输入电压………….VSS-0.3V~VDD+0.3V 工作温度………….-40℃~125℃
IOL总电流…………. ………. ……….150mA IOH总电流…………. …. -100mA
总消耗电流………. ………. ……….500mW
注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状态, 而且若长期在标示范围外的条件下工作,可能影响芯片的可靠性。
Rev. 1.20 5 2006-11-01
HT46RB50
RES
直流电气特性
直流电气特性
直流电气特性直流电气特性
测试条件
测试条件
符号
符号 参数
符号符号
VDD
I
DD1
I
DD2
I
STB1
I
STB2
工作电压
工作电流(6M 晶振)
工作电流(12M 晶振)
静态电流(看门狗打开)
静态电流(看门狗关闭)
参数
参数参数
V
— —
5V
3V
5V 3V 5V 3V 5V
DD
测试条件测试条件
条件
条件
条件条件
f
=6MHz 2.2
SYS
f
=12MHz 2.7
SYS
无负载,f
无负载,f
SYS
=12MHz
SYS
=6MHz
无负载,系统 HALT USB 挂起
无负载,系统 HALT
挂起
USB
最小
最小 典型
最小最小
典型 最大
典型典型
— —
— —
6.5 12
3.6 10 mA
7.5 16 mA
— —
— — — —
无负载,系统 HALT
I
STB3
静态电流(看门狗关闭)
5V
USB 发送
150 200 µA
3.3V 参考电压打开
V
V
V
V
IOL
IOH
RPH
V
V
V33O
EAD
输入/输出口的低电平
IL1
输入电压 输入/输出口的高电平
IH1
输入电压 低电平输入电压(
IL2
高电平输入电压(
IH2
输入/输出口灌电流
RES
输入/输出口源电流
上拉电阻
低电压复位 掩膜选项为 3.0V
LVR
参考电压输出
3.3V
3V VOL=0.1VDD 4 8 5V VOL=0.1VDD 10 20 3V VOH=0.9VDD -2 -4 5V VOH=0.9VDD -5 -10 3V 5V
5V I
V33O
— —
=-5mA 3 3.3 3.6 V
A/D 转换误差
0
0.7V
0
0.9 V
DD
DD
0.3 V
0.4 V
20 60 100 10 30 50
2.7 3 3.3 V
±0.5 ±1 LSB
Ta=25
最大 单位
最大最大
单位
单位单位
5.5 V
5.5 V
mA mA
5 µA
10 µA
1 µA 2 µA
V
DD
VDD V
V
DD
VDD V
— — — —
mA mA mA mA
kΩ k
交流电气特性
交流电气特性
交流电气特性交流电气特性
符号
符号 参数
符号符号
f
SYS
f
TIMER
t
WDTOSC
t
RES
t
SST
t
INT
tAD t
ADC
t
ADCS
注:*t
SYS
Rev. 1.20 6 2006-11-01
测试条件
测试条件
参数
参数参数
系统时钟
定 时 器 输 入 频 率 (TMR
看门狗振荡器
VDD
— — — —
3V 5V
外部复位低电平脉宽 — 系统启动延迟时间 从 HALT 状态唤醒 中断脉冲宽度
A/D 时钟周期 A/D
转换时间
A/D 采样时间
=1/f
SYS
测试条件测试条件
条件
条件
条件条件
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
典型 最大
典型典型
— — — —
1024
— —
76 32
Ta=25
最大 单位
最大最大
单位
单位单位
6000 kHz
12000 kHz
6000 kHz
12000 kHz
µs
*t
SYS
µs µs
— —
tAD tAD
HT46RB50
系统功能说明
系统功能说明
系统功能说明系统功能说明
指令执行时序
指令执行时序
指令执行时序指令执行时序
单片机的系统时钟由晶体振荡器产生。该时钟在芯片内部被分成四个互不重叠的时钟周期。一个指
令周期包括四个系统时钟周期。
指令的读取和执行是以流水线方式进行的, 这种方式在一个指令周期进行读取指令操作,而在下一 个指令周期进行解码与执行该指令。因此,流水线方式使多数指令能在一个周期内执行完成。但如果渉 及到的指令要改变程序计数器的值,就需要花两个指令周期来完成这一条指令。
S y s t e m C l o c k
T 1 T 2 T 3 T 4 T 1 T 2 T 3 T 4 T 1 T 2 T 3 T 4
P C
P C P C + 1 P C + 2
F e t c h I N S T ( P C )
E x e c u t e I N S T ( P C - 1 )
F e t c h I N S T ( P C + 1 )
E x e c u t e I N S T ( P C )
F e t c h I N S T ( P C + 2 )
E x e c u t e I N S T ( P C + 1 )
指令执行时序
指令执行时序
指令执行时序指令执行时序
程序计数器
程序计数器 ———— PC
程序计数器程序计数器
程序计数器(PC)控制程序存储器 ROM 中指令执行的顺序,它可寻址整个 ROM 的范围。
取得指令码以后,程序计数器会自动加一,指向下一个指令码的地址。但如果执行跳转、条件跳跃、 向 PCL 赋值、子程序调用、初始化复位、内部中断、外部中断、子程序返回等操作时,PC 会载入与指 令相关的地址而非下一条指令地址。
当遇到条件跳跃指令且符合条件时,当前指令执行过程中读取的下一条指令会被丢弃,取而代之的 是一个空指令周期,随后才能取得正确的指令。反之,就会顺序执行下一条指令。
程序计数器的低字节(PCL)是一个可读写的寄存器(06H)。对 PCL 赋值将产生一个短跳转动作, 跳转的范围为当前页
256
个地址。
当遇到控制转移指令时,系统也会插入一个空指令周期。
程序计数器
程序计数器
模式
模式
模式模式
初始化复位 外部中断 定时/计数器0溢出 定时/计数器1溢出
USB 中断 A/D 转换中断
串口接口中断 条件跳跃 装载 PCL 跳转、子程序调用 从子程序返回
注: *11 ~ *0 :程序计数器位 S11 ~ S0 :堆栈寄存器位
#11 ~ #0 :指令代码位 @7 ~ @0 :PCL 位
*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
*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.20 7 2006-11-01
HT46RB50
程序存储器
程序存储器 ———— ROM
程序存储器程序存储器
表格区
表格区
表格区表格区
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
F 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
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 S B 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 t e r I n t e r r u p t S u b r o u t i n e
S e r i a l I n t e r f a c e I n t e r r u p t S u b r o u t i n e
L o o k - u p T a b l e ( 2 5 6 w o r d s )
L o o k - u p T a b l e ( 2 5 6 w o r d s )
1 5 B i t s
N o t e : n r a n g e s f r o m 0 t o F
程序存储器
程序存储器
程序存储器程序存储器
TBLH
是只读寄存
程序存储器用来存放要执行的指令代码,以及一些数据、 表格和中断入口。程序存储器有
4096×15
间可以用程序计数器或表格指针进行寻址。
位,程序存储器空
以下列出的程序存储器地址是系统专为特殊用途而保留的:
· 地址 000H
该地址为程序初始化保留。系统复位后,程序总是从 000H 开始执行。
· 地址
004H
该地址为外部中断服务程序保留。当
引脚有触发信号
INT
输入,如果中断允许且堆栈未满,则程序会跳转到 004H 地址开始执行。
· 地址 008H
该地址为定时/计数器 0 中断服务程序保留。当定时/计数
0 溢出,如果中断允许且堆栈未满,则程序会跳转到 008H 地址开始执行。
· 地址
00CH
该地址为定时/计数器 1 中断服务程序保留。当定时/计数
1 溢出,如果中断允许且堆栈未满,则程序会跳转到 00CH 地址开始执行。
· 地址 010H
该地址为 USB 中断服务程序保留。当发生 USB 中断,如果中断允许且堆栈未满,则程序会跳转到
地址开始执行。
010H
· 地址 014H
该地址为 A/D 转换中断服务程序保留。当 A/D 转换完成,如果中断允许且堆栈未满,则程序会跳转 到 014H 地址开始执行。
· 地址 018H
该地址为串行接口中断服务程序保留。当8位数据接收或发送完成,如果中断允许且堆栈未满,则 程序会跳转到
地址开始执。
018H
· 表格区
ROM 空间的任何地址都可做为查表使用。查表指令“TABRDC [m]”(查当前页表格,1 页=256 个
字)和“TABRDL [m]”(查最后页表格),会把表格内容低字节传送给[m],而表格内容高字节传送TBLH 寄存器(08H)。只有表格内容的低字节被传送到目标地址中,而高字节被传送到表格内容 高字节寄存器
TBLH
,并且
的最高位始终为“0”。表格内容高字节寄存器
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
表格区
表格区
表格区表格区
注:*11~*0:表格地址位 P11~P8:当前程序指针位 @7~@0:表格指针位
P r o g r a m M e m o r y
Rev. 1.20 8 2006-11-01
堆栈寄存器
堆栈寄存器 ———— STACK
堆栈寄存器堆栈寄存器
堆栈寄存器是特殊的存储器空间,用来保存 PC 的值。HT46RB50 有6层堆栈,堆栈寄存器既不是数据存储器的一部分,也不是程序 存储器的一部分,而且它既不能读出,也不能写入。堆栈的使用是 通过堆栈指针(SP)来实现的,堆栈指针也不能读出或写入。当发 生子程序调用或中断响应时,程序计数器(PC)的值会被压入堆栈; 在子程序调用结束或中断响应结束时(执行指令 RET RETI),堆 栈将原先压入堆栈的内容弹出,重新装入程序计数器中。在系统复 位后,堆栈指针会指向堆栈顶部。
如果堆栈已满,并且发生了不可屏蔽的中断,那么只有中断请 求标志会被记录下来,而中断响应会被抑制,直到堆栈指针(执行 RET RETI 指令)发生递减,中断才会被响应。这个功能可以防止 堆栈溢出,使得程序员易于使用这种结构。同样,如果堆栈已满, 并且发生了子程序调用,那么堆栈会发生溢出,首先进入堆栈的内 容将会丢失,只有最后的 6 个返回地址会被保留。
数据存储器
数据存储器 ———— RAM
数据存储器数据存储器
数据存储器由 238×8 位组成,分为两个功能区间:特殊功能寄 存器(46×8)和通用数据存储器(192×8),数据存储器单元大多 数是可读/写的,但有些只读的。
40H 之前的空间保留给系统以后扩展使用,读取这些地址的 返回值为“00H”。通用数据寄存器地址从 40H FFH,用来存储数 据和控制信息。
所有的数据存储器单元都能直接执行算术、逻辑、递增、递减 和循环操 作 。除 了一些特殊 位外 ,数 据存储器的 每 一位 都可由 “
SET[m].i
”置位或由“
CLR[m].i
”复位。而且都可以通过间接寻址
指针(MP001H/MP103H)进行间接寻址。
间接寻址寄存器
间接寻址寄存器
间接寻址寄存器间接寻址寄存器
地址 00H 02H 是间接寻址寄存器,并无实际的物理区存在。 任何对
[00H]或[02H]的读/
写操作,都是访问由
MP0(01H)MP1(03H
) 或所指向的 RAM 单元。间接读取地址 00H 02H 得到的值为 00H, 间接写入此地址,不会产生任何操作。间接寻址指针 MP0(01H)和 MP103H)是 8 位寄存器。
累加器
累加器
累加器累加器
累加器(
)与算术逻辑单元(
ACC
)有密切关系。它对应
ALU
RAM 地址 05H,做为运算的立即数据。存储器之间的数据传送必 须经过累加器。
算术逻辑单元
算术逻辑单元 ———— ALU
算术逻辑单元算术逻辑单元
算术逻辑单元(ALU)是执行 8 位算术、逻辑运算的电路,它
提供有以下功能:
· 算术运算(ADDADCSUBSBCDAA
· 逻辑运算(ANDORXORCPL
· 移位运算(RLRRRLCRRC
· 递增和递减(INCDEC
· 分支判断(SZ,
SNZ,SIZ,SDZ…)
ALU 不仅可以储存数据运算的结果,还会改变状态寄存器的值。
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
3 6 H
3 7 H
3 8 H
3 9 H
3 A H
3 F H 4 0 H
F F H
G e n e r a l P u r p o s e
D a t a M e m o r y
( 1 9 2 B y t e s )
数据存储器
数据存储器
数据存储器数据存储器
M P 0
M P 1
A C C
P C L
T B L P
T B L H
S T A T U S
I N T C 0
T M R 0
T M R 0 C
T M R 1 H
T M R 1 L
T M R 1 C
P A
P A C
P B
P B C
P C
P C C
P D
P D C
P E
P E C
I N T C 1
U S C
U S R
U C C
A W R
S T A L L
S I E S
M I S C
S E T I O
F I F O 0
F I F O 1
F I F O 2
F I F O 3
A D R L
A D R H
A D C R
A C S R
P W M 0
P W M 1
S B C R
S B D R
HT46RB50
S p e c i a l P u r p o s e D a t a M e m o r y
R e a d a s " 0 0 "
: U n u s e d
Rev. 1.20 9 2006-11-01
HT46RB50
,
状态寄存器
状态寄存器 ———— STATUS
状态寄存器状态寄存器
8 位的状态寄存器(0AH),由零标志位(Z)、进位标志位(C)、辅助进位标志位(AC)、溢出标志 位(OV)、暂停标志位( 而且还控制操作顺序。
除了 PDF TO 标志外,状态寄存器的其它位都可以用指令改变。任何对状态寄存器的写操作都不 会改变 PDF TO 的值。对状态寄存器的操作可能会导致与预期不一样的结果。TO 标志只受系统上电、 看门狗溢出、“CLR WDT” 指令或“HALT” 指令的影响。PDF 标志只受系统上电、“CLR WDT 令或“HALT” 指令的影响。
标志位Z、OV、AC和C反映的是最近一次操作的状态。 在进入中断程序或子程序调用时,状态寄存器不会被自动压入堆栈。如果状态寄存器的内容是重要的, 而且子程序会影响状态寄存器的内容,那么程序员必须事先将 STATUS 的值保存好。
符号
符号 位位位位 功能
符号符号
C 0
AC 1
Z 2
OV 3
PDF 4
TO 5
— —
6 7
)和看门狗定时器溢出标志位(TO)组成。该寄存器不仅记录状态信息,
PDF
功能
功能功能 如果在加法运算中结果产生了进位或在减法运算中结果不产生借位 则 C 被置位;反之,C 被清除。它也可被循环移位指令影响。 如果在加法运算中低 4 位产生了进位或减法运算中低 4 位不产生借 位,则AC被置位;反之,AC被清除。 如果算术或逻辑运算的结果为零,则Z被置位;反之,Z被清除。 如果运算结果向最高位进位,但最高位并不产生进位输出,则 OV 被 置位;反之,OV被清除 系统上电或执行“ 令,PDF 被置位。 系统上电、执行“ 定时溢出,TO 被置位。 未用,读出为“0” 未用,读出为“0”
STATUS(0AH) 寄存器
CLR WDT
CLR WDT
”指令,
”或“
寄存器
寄存器寄存器
被清除;执行“
PDF
”指令,TO被清除;
HALT
HALT
”指
WDT
中断
中断
中断中断
HT46RB50 提供一个外部中断、两个内部定时/计数器中断、一个 A/D 转换中断、一个串行接口中断 和一个 USB 中断。中断控制寄存器 0INTC00BH)和中断控制寄存器 1INTC11EH)包含了中断 控制位和中断请求标志,中断控制位用来设置中断允许/禁止。
只要有中断子程序被服务,其余的中断全部都被自动禁止(通过清除 EMI 位),这种做法的目的在 于防止中断嵌套。这时如果有其它中断发生,只有中断请求标志会被记录下来。如果在中断服务程序中 有另一个中断需要响应,程序员可以置位 堆栈已满,则中断并不会被响应,一直到堆栈指针(SP)发生递减后才会响应。如果需要中断立即得到 响应,应避免堆栈饱和。
所有的中断都具有唤醒能力。当有中断被服务,系统会将程序计数器值压入堆栈,然后再跳转至中 断服务程序的入口。但这时只有程序计数器的内容被压入堆栈,如果其它寄存器和状态寄存器的内容会 被中断程序改变,从而会破坏主程序的控制流程的话,程序员应该事先将这些数据保存起来。
外部中断是由 如果中断允许,且堆栈未满,当发生外部中断时,会产生地址 04H 的子程序调用;而中断请求标志 EIF 和总中断控制位
内部定时/计数器 0 中断是由定时/计数器 0 溢出触发的,其中断请求标志(T0FINTC0 的第 5 位) 会被置位。如果中断允许,且堆栈未满,当发生定时/计数器中断时,会产生地址 08H 的子程序调用;而 中断请求标志 T0F 和总中断控制位 EMI 会被清除,以禁止其它中断响应。
内部定时/计数器 1 中断是由定时/计数器 1 溢出触发的,其中断请求标志(T1FINTC0 的第 6 位) 会被置位。如果中断允许,且堆栈未满,当发生定时/计数器中断时,会产生地址 而中断请求标志
引脚下降沿信号触发的,其中断请求标志位(EIFINTC0 的第 4 位)会被置位。
INT
会被清除,以禁止其它中断响应。
EMI
和总中断控制位
T1F
EMI、INTC0和INTC1
会被清除,以禁止其它中断响应。
EMI
所对应的位,以便进行中断嵌套。如果
的子程序调用;
0CH
Rev. 1.20 10 2006-11-01
HT46RB50
位位位位 符号
符号 功功功功 能能能能
符号符号
0 EMI 1 EEI 2 ETI 3 EADI 4 EIF 5 TF 6 ADF 7
总中断控制位(1=允许;0=禁止) 外部中断控制位(1=允许;0=禁止) 定时/计数器中断控制位(1=允许;0=禁止) A/D 转换中断控制位(1=允许;0=禁止) 外部中断请求标志(1=有;0=无) 定时/计数器中断请求标志(1=有;0=无) A/D 转换中断请求标志(1=有;0=无) 未用,读出为“0”
INTC0(0BH) 寄存器
寄存器
寄存器寄存器
中断是由以下
USB
位位位位
0 EUI 1 EADI 2 ESII 3 4 USBF 5 ADF 6 SIF 7
符号
符号
符号符号
USB 中断允许位(1=允许;0=禁止) AD 转换中断允许位(1=允许;0=禁止)
串行接口中断允许位(1=允许;0=禁止)
未用,读出为“0”
中断请求标志(1=有;0=无)
USB AD 转换中断请求标志(1=有;0=无)
串行接口中断请求标志(1=有;0=无)
未用,读出为“0”
INTC1(1EH)
事件触发的,其中断请求标志(
USB
功功功功
寄存器
寄存器
寄存器寄存器
能能能能
USBF;INTC1
的第4位)会被置位。
PC 访问相应的 USB FIFO
PC 发出挂起信号
PC 发出恢复信号
USB 复位
如果中断允许,且堆栈未满,当发生
事件中断时,会产生地址
USB
的子程序调用;而中断请
10H
求标志 USBF 和总中断控制位 EMI 会被清除,以禁止其它中断响应。当 PC 访问 HT46RB50 FIFO 时, 寄存器 USR 中相应的请求标志会被置位,并触发 USB 中断。程序员可以很方便判断 PC 访问了哪个 FIFO, 当相应的程序被服务过,相应的标志位必须由软件清除。当 HT46RB50 接收到 PC 发出挂起信号,挂起 标志(SUSPUSC 的第 0 位)被置位并触发中断。同样,HT46RB50 接收到 PC 发出恢复信号,恢复标 志(RESUMEUSC 的第 3 位)被置位并触发中断。任何时候检测到 USB 复位信号都会触发 USB 中断。
转换中断是由
A/D
转换完成触发的,其中断请求标志(
A/D
ADF;INTC1
的第5位)会被置位。如 果中断允许,且堆栈未满,当发生 A/D 转换中断时,会产生地址 0CH 的子程序调用;而中断请求标志 位 ADF 和总中断控制位 EMI 会被清除,以禁止其它中断响应。
串行接口中断是由接收到或发送完完整的 8 位数据触发的,其中断请求标志位(SIFINTC1 的第 6 位)会被置位。如果中断允许,且堆栈未满,当发生串行接口中断时,会产生地址 18H 的子程序调用; 而中断请求标志位 SIF 和总中断控制位 EMI 会被清除,以禁止其它中断响应。
中断源
中断源 优先级
中断源中断源 外部中断 定时/计数器 0 中断 定时/计数器1中断
中断
USB AD 转换中断
串行接口中断
优先级 中断向量
优先级优先级
中断向量
中断向量中断向量
1 04H 2 08H 3 0CH 4 10H 5 14H 6 18H
Rev. 1.20 11 2006-11-01
HT46RB50
在执行中断子程序期间,其它的中断请求会被屏蔽,直到执行 RETI 指令或 EMI 和相关中断控制位 被置位(当然,此时堆栈未满)。如果要从中断子程序返回,只要执行 RET RETI 指令即可。其中, RETI 指令会自动置位 EMI,以允许中断服务,而 RET 则不会。
如果中断在两个连续的 该中断会被服务。如果同时发生中断请求,其优先级如下表示;也可以通过设定各中断相关的控制位来 改变优先级。
建议不要在中断服务程序中使用“CALL”指令来调用子程序。因为中断随时都可能发生,而且需 要立刻给予响应。如果只剩下一层堆栈,而中断不能被很好地控制,原先的控制序列很可能因为在中断 子程序中执行“CALL”指令而使堆栈溢出,从而发生混乱。
振荡电路
振荡电路
振荡电路振荡电路
脉冲的上升沿之间发生,且中断响应允许,那么在下两个T2脉冲之间,
T2
HT46RB50 只有外部晶体振荡,其信号做为系统时钟。HALT 模式会停止系统振荡
O S C 1
器,并忽视任何外部信号以降低功耗。
晶体振荡方式需要在 OSC1 OSC2 之间连接一个晶体振荡器,用来提供晶体振荡 器所需的反馈和相移,除此之外,不再需要其它外部元件。另外,在 OSC1 OSC2 之 间也可使用谐振器来取代晶体振荡器,但是在
OSC1和OSC2
需要多连接两个电容。
O S C 2
C r y s t a l O s c i l l a t o r
WDT 振荡器是一个内部 RC 振荡器,并不需要连接任何外部元件。当系统进入暂停模式时,系统时 钟会停止,但 WDT 振荡器会继续工作。如果要降低功耗,可在掩膜选项中关闭 WDT 振荡器。
看门狗定时器
看门狗定时器
看门狗定时器看门狗定时器
看门狗定时器的时钟来源有两种:看门狗振荡器或指令时钟(系统时钟4分频),由掩膜选项设置。 看门狗定时器主要用来防止程序运行故障和程序跳入一死循环而导致不可预测的结果。看门狗定时器可 由掩膜选项设置为打开或关闭,如果在关闭状态,所有与 WDT 有关的指令操作都是没有作用的。
S y s t e m C l o c k / 4
8
f
/ 2
W D T
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
,该频率可再加
65µs)
C KRT C KRT
T i m e - o u t R e s e t
1 5
f
/ 2 ~ fs/ 2
s
1 4
/ 2 ~ fs/ 2
f
s
1 3
f
/ 2 ~ fs/ 2
s
1 2
/ 2 ~ fs/ 2
f
s
212~215(
1 6
1 5
1 4
1 3
通过掩膜选
如果
( 1 2 k H z )
时钟源为内部
WDT
W D T O S C
R O M C o d e
o p t i o n
WDT
f
W D T
振荡
D i v i d e r
(RC
项:WDT time out)的分频系数。最小的 WDT 溢出周期大约是 300mS~600mS。溢出时间会因为温度、 VDD 以及芯片参数的变化而变化。如果再用 WDT 预分频器,则可以得到更长的溢出周期。如果 WDT 的溢出时间(time out)选为 215,最大的溢出时间可达到 2.3s4.7s(分频系数为 215~216)
WDT 时钟源除了使用内部 WDT 振荡器输出外,还可以使用指令时钟(系统时钟 4 分频),只是在 HALT
时,
会停止计数而失去保护功能;此时只能靠外部逻辑复位来重新启动系统。如果系统运用
WDT
在强干扰的环境中,建议选用内部 WDT 振荡器,因为 HALT 模式会使系统时钟停止,看门狗也就失去 了保护的功能。
在正常运行时,WDT 溢出会使系统复位并置位 TO 标志;但在 HALT 模式下,WDT 溢出只产生“热 复位”,只有程序计数器 PC 和堆栈指针 SP 被复位。要清除 WDT 的值可以有三种方法:外部复位(低电 平输入到
端)、清除看门狗指令或 HALT 指令。清除看门狗指令有“CLR WDT”和“CLR WDT1”、
RES
CLR WDT2”两组指令。这两组指令中,只能选择其中一组,由掩膜选项决定。如果选择“CLR WDT”, 那么只要执行“CLR WDT” 指令就会清除 WDT。如果选择“CLR WDT1”和“CLR WDT2”,那么两 条指令要交替使用才会清除
WDT
,否则,
会由于溢出而使系统复位。
WDT
如果 WDT 的分频系数选择 fS/212(由掩膜选项决定),则 WDT 的溢出周期为 fS/212~fS/213,因为“CLR
WDT”和“CLR WDT1”、“CLR WDT2”指令只能清除最后两级 WDT 分频器。
Rev. 1.20 12 2006-11-01
HT46RB50
V
暂停模式
暂停模式 ———— 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
唤醒之后会插入一个等待周期。如果唤醒是由中断产生的话,则实际中断子程序的执行会延迟一个以上 的周期。如果唤醒导致下一条指令执行,那么在等待周期执行完成之后,会立即执行该指令。
为减小功耗,在进入暂停模式之前,应小心处理所有的输入/输出口状态。
D D
0 . 0 1mF *
1 0 0 k
W
R E S
1 0 k
W
0 . 1mF *
复位电路
复位电路
复位电路复位电路
注:“*”连线应该尽量靠近
引脚,以减小干扰影响
RES
Rev. 1.20 13 2006-11-01
HT46RB50
RES
RES
RES
RES
RES
RES
复位
复位
复位复位
总共有三种方法会产生初始复位:
· 正常运行时由
· 在暂停模式由
· 正常运行时由看门狗定时器溢出发生复位。
暂停模式中的看门狗定时器溢出与其它系统复位状况不同,因为看门狗定时器溢出会执行“热复位”, 只有程序计数器 PC 和堆栈指针 SP 被复位,而系统其它部分都保持原有状态。在其它复位状态下,某些 寄存器不会改变。在初始复位时,大部分寄存器会复位成初始的状态。通过检测 PDF TO 标志,即可 判断出各种不同的复位原因。
为了保证系统振荡器起振并稳定运行,系统复位(包括上电复位、WDT 溢出或由 停状态唤醒时,系统启动定时器
系统复位时,SST 会被加在复位延时中;由暂停模式唤醒也会加入 SST 延迟。
系统复位(包括上电复位、正常运行时 (Option)的时间。
系统复位时各功能单元的状态如下所示:
引脚发生复位。 引脚发生复位。
TO PDF
0 0
u u
0 1
1 u 1 1
注:“u”表示不变
提供了一个额外的延迟时间,共
(SST)
复位原因
复位原因
复位原因复位原因 上电时 正常运行时 暂停模式下
发生复位
发生复位
发生复位 正常运行时 WDT 溢出 暂停模式下
溢出或由
WDT
WDT
RES
溢出
端复位)需要额外增加一个加载掩膜选项
端复位)或由暂
个系统时钟周期。
1024
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
R E S
t
S S T
O S C 1
复位时序
复位时序 复位电路结构
复位时序复位时序
1 0 - b i t R i p p l e
S y s t e m R e s e t
复位电路结构
复位电路结构复位电路结构
S S T
C o u n t e r
W a r m R e s e t
C o l d R e s e t
Rev. 1.20 14 2006-11-01
HT46RB50
PC 000H
000H
000H
000H
000H
000H
000H
INTC1
-000 -000 -
000 –000 -
000 –000 -
000 –000 -
uuu -uuu -
000 -000 -
000 -000
PD
1111 1
111 1111 1
111 1111 1
111 1111 1
111 uuuu uuuu
1111 1
111 1111 1
111
PDC 1111 1
111 1111 1
111 1111 1
111 1111 1
111 uuuu uuuu
1111 1
111 1111 1
111
PE 1111 1
111 1111 1
111 1111 1
111 1111 1
111 uuuu uuuu
1111 1
111 1111 1
111
PEC 1111 1
111 1111 1
111 1111 1
111 1111 1
111 uuuu uuu
u 1111 1
111 1111 1
111
AWR
0000 0000
uuuu uuuu
0000 0000
0000 0000
uuuu uuuu
0000 0000
0000 0000
STALL
----
1110
----
uuuu
----
1110
----
1110
----
uuuu
----
1110
----
1110
MISC
0xx- -000 uxx- -uuu 0xx- -000 0xx- -000 uxx- -uuu 000- -000 000- -000
SETIO
----
1110
----
uuuu
----
1110
----
1110
----
uuuu
----
1110
----
1110
FIFO0
xxxx xxxx
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
0000 0000
0000 0000
FIFO1
xxxx xxxx
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
0000 0000
0000 0000
FIFO2
xxxx xxxx
uuuu uuuu
uuuu
uuuu
uuuu uuuu
uuuu uuuu
0000 0000
0000 0000
FIFO3
xxxx xxxx
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
0000 0000
0000 0000
USC 1-00 0000
u-
uu uuuu
1-
00 0000
1-
00 0000
u-
uu uuuu
u-
00 0100
u-
00 0100
USR --
00 0000
--uu uuuu
--00 0000
--00 0000
--uu uuuu
--0
0 0000
--00 0000
UCC
-000 0000
-uuu uuuu
-000 0000
-000 0000
-uuu uuuu
-uu0 u000
-uu0 u000
SIES
0100 0000
uuuu uuuu
0100 0000
0100 0000
uuuu uuuu
0100 0000
0100 0000
ADRL
xx-- ---- xx-- ---- xx-- ---- xx-- ---- uu--
---- xx-- ---- xx-- ----
ADRH
xxxx xxxx
xxxx xxxx
xxxx xxxx
xxxx xxxx
uuuu uuuu
xxxx xxxx
xxxx xxxx
ADCR
0100 0000
0100 0000
0100 0000
0100 0000
uuuu uuuu
0100 0000
0100 0000
ACSR
1--- --00 1--- --00 1--- --00 1--- --00 u--- --uu 1--- --00 1--- --00
有关寄存器的状态如下
有关寄存器的状态如下::::
有关寄存器的状态如下有关寄存器的状态如下
复位
复位
USB
复位
复位
寄存器
寄存器
寄存器寄存器
TMR0 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu xxxx xxxx xxxx xxxx TMR0C 00-0 1000 00-0 1000 00-0 1000 00-0 1000 uu-u uuuu 00-0 1000 00-0 1000 TMR1H xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu xxxx xxxx xxxx xxxx TMR1L xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu xxxx xxxx xxxx xxxx TMR1C 00-0 1--- 00-0 1--- 00-0 1--- 00-0 1--- uu-u u--- 00-0 1--- 00-0 1---
MP0 xxxx xxxx uuuu uuuu uuuu uuuu 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
TBLP xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu
TBLH -xxx xxxx -uuu uuuu -uuu uuuu -uuu uuuu -uuu uuuu STATUS --00 xxxx --lu uuuu --uu uuuu --01 uuuu --11 uuuu INTC0 -000 0000 -000 0000 -000 0000 -000 0000 -uuu uuuu
复位复位
上电复位
上电复位
(
上电复位上电复位
WDT 溢出
正常运行
正常运行
)
(
正常运行正常运行
溢出
溢出溢出
)
(正常运行
正常运行)
正常运行正常运行
RES
复位
复位
复位复位
复位
复位
复位复位
RES
(暂停模式
暂停模式)
暂停模式暂停模式
WDT 溢溢溢出出出出
暂停模式
暂停模式
(
暂停模式暂停模式
)*
复位复位
(正常运行
正常运行)
正常运行正常运行
uuuu uuuu uuuu uuuu
-uuu uuuu
--uu uuuu
-000 0000
USB 复位
复位
复位复位
暂停模式
暂停模式
(
暂停模式暂停模式
uuuu uuuu uuuu uuuu
-uuu uuuu
--01 uuuu
-000 0000
)
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
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
PWM0
PWM1
SBCR 0110 0000 0110 0000 0110 0000 0110 0000 uuuu uuuu
SBDR xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
Rev. 1.20 15 2006-11-01
xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
注: 1.“*”表示“热复位; 2.“u”表示不变化; 3.“x”表示不确定。
uuuu uuuu
uuuu uuuu uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
HT46RB50
定时
定时/计数器
计数器
定时定时
计数器计数器
HT46RB50 提供两个定时/计数器(TMR0TMR1)。定时/计数器 0 8 位可编程向上计数的,其时 钟来源可以是外部信号或内部时钟,内部时钟为 来源可以是外部信号或内部时钟,内部时钟为 f 隔、测量脉冲宽度或产生一个精确的时基信号。
P W M
( 6 + 2 ) o r ( 7 + 1 )
C o m p a r e
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 0 D 2 ~ T 0 D 0
T o P D 0 / P D 1 C i r c u i t
f
I N T
T M R 0
T E
。定时/计数器1是16位可编程向上计数的,其时钟
f
SYS
/4。外部信号输入可以用来计数外部事件、测量时间间
SYS
T M 1 T M 0
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 O N
T M 1 T M 0
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
定时
定时/计数器
定时定时
计数器 0
计数器计数器
8 - B i t T i m e r / E v e n t C o u n t e r
( T M R 0 )
O v e r f l o w t o I n t e r r u p t
f
T M 1 T M 0
T O N
/ 4
I N T
T 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
T M 1 T M 0
f
S Y S
T M R 1
有五个与定时/计数器有关的寄存器,
1 6 - 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
1 6 - B i t T i m e r / E v e n t C o u n t e r
( T M R 1 H / T M R 1 L )
定时
定时/计数
计数器器器器
计数计数
1
定时定时
TMR0(0DH),TMR0C(0EH),TMR1H(0FH),TMR1L(10H)
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
TMR1C(11H)。对于 16 位定时/计数器 1,写入 TMR1L 只能将数据写到低字节缓冲器(8 ) 而写入 TMR1H 会把指定数据和低字节缓冲器的数据分别写到 TMR1H 和 TMR1L 预置寄存器中,定时/计数器 1
预置寄存器的内容只有在写入 TMR1H 时才会被改变。读取 TMR1H 会把 TMR1H 的内容送至目标单元, 而 TMR1L 的值被送至低字节缓冲器中。读 TMR1L 将读取低字节缓冲器的值。TMR0C(TMR1C)是定/计数器 0(1)控制寄存器,用来定义定时/计数器一些选项。
T0M0T0M1 和 T1M0T1M1 用来定义定时/计数器的工作模式。外部事件计数模式是用来记录外 部事件的,其时钟来源为外部引脚输入(TMR0TMR1)。定时器模式是一个常用模式,其时钟来源为内 部时钟 f
f
INT
。脉宽测量模式可以测量 TMR0 TMR1 引脚高/低电平的脉冲宽度,其时钟来源为内部时钟
INT
无论是定时模式还是外部事件计数模式,一旦开始计数,定时/计数器会从寄存器当前值向上计到
0FFFFH(16
位计到
0FFFFH,8
位计到
。一旦发生溢出,定时/计数器会从预置寄存器中重新加载
0FFH)
初值,并开始计数;同时置位中断请求标志(T0F;INTC0 的第 5 位,T1F;INTC0 的第 6 位)。
在脉宽测量模式,当 T0ON/T1ON T0E/T1E 都是 1 时,只要 TMR0(TMR1)引脚有一个上升沿信号
(如果 TE 0,则为下降沿信号),定时/计数器就会开始计数,直到 TMR0(TMR1)脚电平恢复,同时 T0ON/T1ON 被清零。测量的结果会保存在寄存器中,直到有新的测量开始。换句话说,一次只能测量
一个脉冲宽度。重新置位 T0ON/T1ON 后,可以继续测量。注意,在该模式下,定时/计数器是跳变触发 而不是电平触发。当计数器溢出时,定时/计数器会从预置寄存器中重新加载初值,并置位中断请求标志, 这与其它两种模式一样。
Rev. 1.20 16 2006-11-01
HT46RB50
位位位位 符号
符号(TMR0C) 功能
符号符号
功能
功能功能
定义预分频器级数,T0PSC2T0PSC1T0PSC0=
0~2 T0PSC0~T0PSC2
000f 001:f 010f 011f 100f 101f 110f 111:f
INT=fSYS
INT=fSYS
INT=fSYS
INT=fSYS
INT=fSYS
INT=fSYS
INT=fSYS
INT=fSYS
/2 /4
/8
/16
/32 /64 /128
定义定时/计数器 TMR 的触发方式
3 T0E
0:上升沿计数 1:下降沿计数
4 T0ON 5
6 7
未用,读出为“0
T0M0 T0M1
打开/关闭定时/计数器( 1=打开,0=关闭)
定义工作模式:
01=事件计数模式(外部时钟) 10=定时模式(内部时钟) 11=脉冲宽度测量模式 00 =未用
TMR0C(0EH) 寄存器
寄存器
寄存器寄存器
位位位位 符号
0~2,5
3 T1E
符号(TMR1C) 功能
符号符号
功能
功能功能
未用,读出为“0”
定义定时/计数器
:上升沿计数
0
TMR
的触发方式
1:下降沿计数
4 T1ON
打开/关闭定时/计数器( 1=打开,0=关闭) 定义工作模式,T1M1,T1M0:
6 7
T1M0 T1M1
01=事件计数模式(外部时钟) 10=定时模式(内部时钟) 11=脉冲宽度测量模式 00 =未用
TMR1C(11H) 寄存器
寄存器
寄存器寄存器
要启动计数器,只要置位定时/计数器开关 (T0ONTMR0C 的第 4 位;T1ON:TMR1C 的第 4 位)。 在脉宽测量模式下,T0ON/T1ON 在测量结束后会被自动清除;但在另外两种模式中,T0ON/T1ON 只能 由指令来清除。定时/计数器溢出可以做为唤醒信号。不管是什么模式,只要写 0 ET0I ET1I 即可禁 止定时/计数器中断服务。
在定时/计数器停止计数时,写数据到定时/计数器的预置寄存器中,同时会将该数据写入到定时/计 数器。但如果在定时/计数器运行时这么做,数据只能写入到预置寄存器中,直到发生溢出时才会将数据 从预置寄存器加载到定时/计数器寄存器。读取定时/计数器时,计数会被停止,以避免发生错误;计数停 止会导致 计 数错 误 ,程序员 必 须注 意到这一点 。 建 议在打开定时 / 计数器前, 先 将 相应的值写 入
TMR0/TMR1 寄存器内,否则定时/计数器将从不确定值开始计数。 TMRC
的第
位用来定义内部时钟预分频级数,定义如上表所示。
0~2
Rev. 1.20 17 2006-11-01
Loading...
+ 39 hidden pages