HT48R05A-1/HT48R06A-1
Cost-Effective I/O 型单片机
使用手册
本使用手册版权为盛群半导体股份有限公司所有,非经盛群半导体股份有限公司书面授权同意,不得通过任
何形式复制、储存或传输。
目录
目录
第一部份 单片机概论 .................................................................. 1
第一章 硬件结构........................................................................................ 3
简介..............................................................................................................3
特性..............................................................................................................4
技术特性.............................................................................................. 4
内核特性.............................................................................................. 4
周边特性.............................................................................................. 5
选择表..........................................................................................................5
系统框线图..................................................................................................6
引脚分配......................................................................................................6
引脚说明......................................................................................................7
极限参数......................................................................................................7
直流电气特性..............................................................................................8
交流电气特性..............................................................................................9
系统结构......................................................................................................9
时序和流水线结构(Pipelining) .........................................................10
程序计数器........................................................................................ 11
堆栈.................................................................................................... 12
算术及逻辑单元 – ALU ...................................................................12
程序存储器................................................................................................13
结构.................................................................................................... 13
特殊向量............................................................................................ 13
查表.................................................................................................... 14
查表程序范例.................................................................................... 14
数据存储器................................................................................................17
结构.................................................................................................... 17
通用数据存储器................................................................................ 17
专用数据存储器................................................................................ 18
i
Cost-Effective I/O 型单片机使用手册
特殊功能寄存器........................................................................................19
间接寻址寄存器 – IAR ....................................................................19
间接寻址指针 – MP .........................................................................19
累加器 – ACC ...................................................................................20
程序计数器低字节寄存器 – PCL ....................................................20
表格寄存器 – TBLP, TBLH..............................................................21
看门狗定时寄存器 – WDTS ............................................................21
状态寄存器 – STATUS.....................................................................21
中断控制寄存器 – INTC..................................................................22
定时/ 计数器寄存器 ...........................................................................23
输入/ 输出端口和控制寄存器 ........................................................... 23
输入/ 输出端口...........................................................................................24
上拉电阻............................................................................................ 24
PA 口的唤醒 ......................................................................................24
输入/ 输出端口控制寄存器 ...............................................................24
引脚共用功能.................................................................................... 25
编程注意事项.................................................................................... 27
定时/ 计数器 ..............................................................................................28
配置定时/ 计数器输入时钟源 ...........................................................28
定时/ 计数寄存器 – TMR..................................................................29
定时/ 计数控制寄存器 – TMRC.......................................................29
定时器模式........................................................................................ 30
事件计数器模式................................................................................ 30
脉冲宽度测量模式............................................................................ 31
可编程分频器(PFD) 和蜂鸣器的应用 ..............................................32
预分频器(Prescaler)........................................................................... 32
输入/ 输出接口 ...................................................................................33
编程注意事项.................................................................................... 33
中断............................................................................................................34
外部中断............................................................................................ 35
定时/ 计数器中断 ...............................................................................35
中断优先权........................................................................................ 35
编程注意事项.................................................................................... 35
复位和初始化............................................................................................36
复位.................................................................................................... 36
振荡器........................................................................................................39
系统晶体/ 陶瓷振荡器 .......................................................................39
系统电阻电容振荡器........................................................................ 39
看门狗定时振荡器............................................................................ 40
暂停模式下的暂停和唤醒........................................................................40
看门狗定时器............................................................................................41
掩膜选项....................................................................................................43
应用电路....................................................................................................44
ii
目录
第二部份 程序语言 .................................................................... 45
第二章 指令集介绍.................................................................................. 47
指令集........................................................................................................47
指令周期............................................................................................ 47
数据的传送........................................................................................ 48
算术运算............................................................................................ 48
逻辑和移位运算................................................................................ 48
分支和控制的转换............................................................................ 48
位运算................................................................................................ 49
查表运算............................................................................................ 49
其它运算............................................................................................ 49
指令设定一览表........................................................................................49
惯例.................................................................................................... 49
第三章 指令定义...................................................................................... 53
第四章 汇编语言和编译器...................................................................... 67
常用符号....................................................................................................67
语句语法....................................................................................................68
名称.................................................................................................... 68
操作项................................................................................................ 68
操作数项............................................................................................ 68
注解.................................................................................................... 68
编译伪指令................................................................................................69
条件编译伪指令................................................................................ 69
文件控制伪指令................................................................................ 70
程序伪指令........................................................................................ 72
数据定义伪指令................................................................................ 77
宏指令................................................................................................ 79
汇编语言指令............................................................................................82
名称.................................................................................................... 82
助记符................................................................................................ 82
操作数、运算子和表达式................................................................ 82
其它............................................................................................................85
前置引用............................................................................................ 85
局部标号............................................................................................ 85
汇编语言保留字................................................................................ 86
编译器选项................................................................................................87
编译列表文件格式....................................................................................87
源程序列表........................................................................................ 87
编译总结............................................................................................ 88
其它.................................................................................................... 88
iii
Cost-Effective I/O 型单片机使用手册
第三部份 开发工具 .................................................................... 91
第五章 单片机开发工具.......................................................................... 93
HT-IDE 集成开发环境..............................................................................93
盛群单片机仿真器(HT-ICE) ....................................................................95
HT-ICE 接口卡 ..................................................................................95
OTP 烧录器 ........................................................................................95
OTP 适配卡 ........................................................................................95
系统配置 ....................................................................................................96
HT-ICE 接口卡设置 .........................................................................97
安装............................................................................................................98
系统需求............................................................................................ 98
硬件安装............................................................................................ 98
软件安装............................................................................................ 99
第六章 快速开始.................................................................................... 103
步骤一:建立一个新项目.............................................................. 103
步骤二:将源程序文件加到项目中 ..............................................103
步骤三:建立项目.......................................................................... 103
步骤四:烧录 OTP 单片机.............................................................104
步骤五:传送程序与掩膜选项码至 Holtek ..................................104
附录 ..............................................................................................105
附录 A 特性曲线图 .................................................................................. 107
附录 B 封装信息 .......................................................................................115
iv
前言
前言
自从盛群半导体公司成立以来,既致力于单片机产品的设计与开发。虽然盛群
半导体提供给客户各式各样的半导体芯片,但其中单片机仍是盛群的主要关键
产品,未来盛群半导体仍将继续扩展单片机产品系列的完整性与功能性。通过
长期累积的单片机研发经验与技术,盛群半导体能为各式各样的应用范围开发
出高性能且低价位的单片机芯片。盛群的 Cost-Effective I/O 型单片机提供客户
绝佳的产品方案,大大地为顾客提升他们产品的功能,当设计者使用盛群所开
发出的各式开发工具时,更可减少产品开发周期并大大的增加他们的产品附加
价值。
为了使用者阅读方便,本手册分成三部份。关于一般的单片机的规格信息可在
第一部份中找到。与单片机程序相关的信息,如指令集、指令定义和汇编语言
编译伪指令,可在第二部份找到。第三部份则是关于盛群半导体的开发工具有
关如何安装和使用的相关信息。
希望使用 Cost-Effective I/O 型单片机的盛群半导体客户,通过这本手册,能以
一种简单、有效、且完整的方法,实现他们在单片机上的各种应用。由于盛群
半导体将单片机规格、程序规划和开发工具等信息结合在一本使用手册上,预
期客户将可充分利用盛群半导体各种单片机的特色,获取最大的产品优势。盛
群半导体也欢迎客户提供宝贵的意见和建议,以作为我们未来的改进参考。
v
Cost-Effective I/O 型单片机使用手册
vi
第一部份
单片机概论
第一部份 单片机概论
1
Cost-Effective I/O 型单片机使用手册
2
第一章 硬件结构
第一章
硬件结构
本章主要为 Cost-Effective I/O 型单片机的规格信息,并且包含了所有参数和相
关的硬件信息,这些信息提供设计者此类单片机的主要硬件特性细节,结合程
序部份的信息将能够让使用者快速且成功地实现各种单片机的应用。参考本章
中的相关部份,也可保证使用者可以充分利用 Cost-Effective I/O 型单片机。
1
简介
HT48R05A-1/HT48C05 和 HT48R06A-1/HT48C06 是8 位高性能、高效益的 RISC
结构单片机,适用于多输入/输出控制产品。其内部特性,如暂停、唤醒功能、
振荡器选择和蜂鸣器驱动等,提升了单片机的灵活度,而这些特性也同时保证
实际应用时只需要最少的外部器件,进而降低了整个产品成本。有了低功耗、
高性能、灵活控制的输入/ 输出口和低成本等优势,该系列单片机适合被广泛
应用在如工业控制、消费性产品和子系统控制器等场合。该系列所有的单片机
都拥有相同的功能和特性,主要的不同在于数据存储器和程序存储器的容量的
大小。
HT48R05A-1 和 HT48R06A-1 两者都是属于一次可编程 (One-Time
Programmable, OTP)单片机,当配合使用盛群半导体的程序开发工具时,可简
单有效的更新程序。这提供了设计者快速有效的开发途径。而对于那些已经设
计成熟的应用,掩膜版的 HT48C05 和 HT48C06 则可满足大量生产和低成本的
需求。由于和 OTP 版的功能完全兼容,HT48C05 和 HT48C06 对于已经设计完
成而想要降低成本的产品,提供了一个理想的解决方案。
3
特性
Cost-Effective I/O 型单片机使用手册
技术特性
• 高性能 RISC 结构
• 低功率完全静态 CMOS 设计
• 工作电压:
在 4MHz 下,由 2.2V 到 5.5V
在 8MHz 下,由 3.3V 到 5.5V
• 功率损耗:
在 5V/4MHz 下,典型值为 2mA
不使用看门狗定时器时,静态(standby) 电流小于 1µ A
• 温度范围:
工作温度−40 °C 到 85° C( 工业级规格)
储存温度−50 °C 到 125° C
内核特性
• 程序存储器
0.5K×14 OTP/Mask ROM (HT48R05A-1/HT48C05)
1K×14 OTP/Mask ROM (HT48R06A-1/HT48C06)
• 数据存储器
32×8 SRAM (HT48R05A-1/HT48C05)
64×8 SRAM (HT48R06A-1/HT48C06)
• 14 位数据查表
• 两级硬件堆栈结构
• 直接和间接数据寻址模式
• 位操作指令
• 63 条功能强大的指令
• 大多数指令执行时间只需要一个指令周期
4
第一章 硬件结构
周边特性
• 提供最多 13 个具有上拉功能的双向输入输出口
• PA 口具有唤醒功能
• 外部中断输入
• 事件计数输入
• 具 8 级预分频器(Prescaler) 及中断功能的 8 位定时器
• 看门狗定时器(WDT)
• 暂停与唤醒特性可以节省功耗
• PFD/蜂鸣器驱动输出
• 芯片内置晶体及电阻电容振荡电路
• 具有低电压复位特性
• 具有烧录电路接口及程序码保护功能
• HT48C05 和 HT48C06 适用于低价位大量生产
• 16-pin SSOP(237×193mil), 18-pin DIP/SOP 的封装
• 高效完备的软硬件支持工具
选择表
Cost-Effective I/O 型单片机拥有多样的功能特性,其中有些是普通的,有些则
是独有的。大部份特性对该系列所有的单片机来说是共有的,主要的区别在于
程序存储器和数据存储器的容量大小。为了帮助使用者在应用时能选择适当的
单片机,以下的表格提供了各个单片机主要的特性概述。
型号 电源 程序存储器 数据存储器
HT48R05A-1
HT48C05
HT48R06A-1
HT48C06
注意: 1. 型号部份包含“ C”的为掩膜版本,而“ R”则是 OTP 版本。
2. 电压在 2.7V~3.3V 时有低电压复位功能,当不使用此功能时,则工作电压更可降至 2.2V。
2.2V~5.5V 0.5K×14 32×8 13 2
2.2V~5.5V 1K×14 64×8 13 2
输入/ 输出口
中断
5
系统框线图
以下系统框线图为 Cost-Effective I/O 型单片机系列的主要功能模块。
Cost-Effective I/O 型单片机使用手册
注意: 本系统框线图为 OTP 单片机,至于掩膜型单片机则没有 Device Programming Circuitry。
引脚分配
S y s t e m R C /
X ' t a l O s c i l l a t o r
W D T
O s c i l l a t o r
R e s e t &
L V R
P B 0 / B Z
P C 0 / I N T
P C 1 / T M R
P A 3
P A 2
P A 1
P A 0
V S S
G e n e r a t o r
D a t a
M e m o r y
C o n f i g .
R e g i s t e r
1
2
3
4
5
6
7
8
T i m i n g
A d d r e s s D e c o d e r
W a t c h d o g
T i m e r
1 6
1 5
1 4
1 3
1 2
1 1
1 0
9
I n s t r u c t i o n
D e c o d e r
M
U
X
M e m o r y
P o i n t e r
C o n f i g .
R e g i s t e r
P A 4
P A 5
P A 6
P A 7
O S C 2
O S C 1
V D D
R E S
T i m e r /
C o u n t e r
I n s t r u c t i o n
R e g i s t e r
M U X
S h i f t e r
A L U
A C C
B u z z e r
D r i v e r
P r o g r a m
M e m o r y
L o o k - u p
R e g i s t e r
C o n f i g .
R e g i s t e r
T a b l e
A d d r e s s D e c o d e r
I n t e r r u p t
C i r c u i t
P B 1 / B Z
P B 0 / B Z
P C 0 / I N T
L o o k - u p
T a b l e
P o i n t e r
P A 3
P A 2
P A 1
P A 0
P B 2
V S S
C o n f i g .
R e g i s t e r
P r o g r a m
C o u n t e r
S t a c k
S t a c k P o i n t e r
I / O
P o r t s
1
2
3
4
5
6
7
8
9
T o P r o g r a m
M e m o r y
1 8
1 7
1 6
1 5
1 4
1 3
1 2
1 1
1 0
C o n f i g u r a t i o n
O p t i o n
D e v i c e
P r o g r a m m i n g
C i r c u i t r y
P A 4
P A 5
P A 6
P A 7
O S C 2
O S C 1
V D D
R E S
P C 1 / T M R
H T 4 8 R 0 5 A - 1 / H T 4 8 C 0 5
H T 4 8 R 0 6 A - 1 / H T 4 8 C 0 6
1 6 S S O P - A
6
H T 4 8 R 0 5 A - 1 / H T 4 8 C 0 5
H T 4 8 R 0 6 A - 1 / H T 4 8 C 0 6
1 8 D I P - A / 1 8 S O P - A
引脚说明
第一章 硬件结构
注意: 1. PA 上的每个引脚可通过掩膜选项被设定成拥有唤醒功能。
都将被连接到上拉电阻。
极限参数
引脚名称
PA0 ~PA 7 I/ O
PB0/BZ
PB1/
B
PB2
PC0/
INT
PC1/TMR
OSC1
OSC2
RES
VDD
VSS
I/O
I/O
I/O Pull-high
O
掩膜选项 说明
I/O or BZ/
I
Crystal or RC
I
Pull-high
Wake-up
Pull-high
8 位双向输入 /输出口,每位可由掩膜选项设置成唤醒输入。软
件指令决定引脚是 CMOS 输出或 Schmitt Trigger 输入。掩膜选
项决定所有引脚是否有上拉电阻。
3 位双向输入 /输出口。软件指令决定引脚是 CMOS 输出或
Schmitt Trigger 输入。掩膜选项决定所有引脚是否有上拉电阻。
B
PB0 和 PB1 分别与 BZ 和
2 位双向输入 /输出口。软件指令决定引脚是 CMOS 输出或
Schmitt Trigger 输入。掩膜选项决定所有引脚是否有上拉电阻。
外部中断和定时器输入分别与 PC0 和 PC1 引脚共用。外部中
断在高电平转低电平时被激发。
OSC1、OSC2 连接 RC 电路或晶体振荡器(由掩膜选项决定)来
作为系统时钟。在 RC 模式下,OSC2 的输出端信号是四分之
一的系统时钟。
触发复位输入,低电平有效。
正电源。
负电源,接地。
引脚共用。
B
2. 单独的引脚或口不可以被选择为拥有上拉电阻,如果选择了上拉配置,则所有 输入引脚
供应电压.................................................................................V SS−0.3V to V SS+6.0V
输入电压................................................................................ V
–0.3V to VDD+0.3V
SS
储存温度...............................................................................................− 50° C~125° C
工作温度.................................................................................................− 40° C~85° C
这里只强调额定功率,超过极限参数功率的范围将对芯片造成损害,芯片在所
标示范围外的表现并不能预期,而长期工作在标示范围外条件下也可能影响芯
片的可靠性。
7
Cost-Effective I/O 型单片机使用手册
直流电气特性 Ta= 25 °C
符号 参数
V
I
I
I
I
I
V
V
V
V
V
Operating Voltage
DD
Operating Current
DD1
(Crystal OSC)
Operating Current
DD2
(RC OSC)
Operating Current
DD3
(Crystal OSC)
Standby Current
STB1
(WDT Enabled)
Standby Current
STB2
(WDT Disabled)
Input Low Voltage for I/O ports,
IL1
TMR and
Input High Voltage for I/O ports,
IH1
TMR and
Input Low Voltage (
IL2
Input High Voltage (
IH2
Low Voltage Reset
LVR
INT
INT
RES
RES
IOL I/O Port Sink Current
IOH I/O Port Source Current
RPH Pull-high Resistance
测试条件
V
DD
3V
5V
3V
5V
5V
3V
5V
3V
5V
条件
f
=4MHz 2.2
SYS
=8MHz 3.3
f
SYS
No load,
=4MHz
f
SYS
No load,
=4MHz
f
SYS
No load,
=8MHz
f
SYS
No load,
system HALT
No load,
system HALT
)
)
LVR enabled 2.7 3.0 3.3 V
3V VOL=0.1V
5V V
=0.1VDD 10 20
OL
3V VOH=0.9VDD
5V V
3V
5V
=0.9VDD
OH
DD
最小 典型 最大 单位
5.5 V
5.5 V
0.6 1.5 mA
0.7V
0.9V
−2 −4
−5 −10
2 4 mA
0.8 1.5 mA
2.5 4 mA
3 5 mA
0
DD
0
DD
0.3V
0.4V
4 8
5
10
1
2
V
DD
VDD V
DD
V
V
DD
mA
mA
mA
mA
40 60 80
10 30 50
µA
µA
µA
µA
V
kΩ
kΩ
8
第一章 硬件结构
交流电气特性 Ta= 25 °C
系统结构
符号 参数
f
System Clock (Crystal OSC)
SYS1
f
System Clock (RC OSC)
SYS2
f
Timer I/P Frequency (TMR)
TIMER
t
t
t
t
t
t
t
* t
Watchdog Oscillator Period
WDTOSC
Watchdog Time-out Period (RC)
WDT1
Watchdog Time-out Period
WDT2
(System Clock)
External Reset Low Pulse Width
RES
System Start-up Timer Period
SST
Low Voltage Width to Reset
LVR
Interrupt Pulse Width
INT
SYS
=1/f
SYS1
或 1/f
SYS2
测试条件
V
DD
3V
5V
3V 11 23 46 ms
5V
条件
2.2V ~ 5.5V 400
3.3V ~ 5.5V 400
2.2V ~ 5.5V 400
3.3V ~ 5.5V 400
2.2V ~ 5.5V 0
3.3V ~ 5.5V 0
Without WDT
Prescaler
Without WDT
Prescaler
Wake-up from
HALT
最小 典型 最大 单位
4000 kHz
8000 kHz
4000 kHz
8000 kHz
4000 kHz
8000 kHz
45 90 180
32 65 130
8 17 33 ms
1
1
1
1024
1024
t
SYS
t
SYS
µs
µs
*
µ s
*
ms
µ s
内部系统结构是盛群半导体公司Cost-Effective I/O 型单片机具有良好运行性能
的主要因素。由于采用 RISC 结构,此系列单片机具有高运算速度和高性能的
特性。采用流水线的方式,即指令的取得和执行同时进行,使得除了分支、调
用和查表指令外,其他指令都能在一个指令周期内完成。8 位的 ALU 参与指
令集中所有的运算。它可完成算术运算、逻辑运算、移位、加、减和分支等功
能。内部的数据路径则以通过累加器或 ALU 的方式加以简化。有些寄存器在
数据存储器中被实现,且可以直接或间接寻址。简单的寄存器寻址方式和结构
特性,确保了提供最大可靠度和灵活性的输入/ 输出控制系统时,仅需要少数
的外部器件。这使该系列单片机适合用在需要 0.5k 至 1k 字的程序存储器和 32
至 64 字节数据储存器的控制应用上。
9
Cost-Effective I/O 型单片机使用手册
时序和流水线结构(Pipelining)
系统时钟由晶体/ 陶瓷振荡器,或是由 RC 振荡器提供,细分为 T1~T4 四个内
部产生的非重叠时钟。程序计数器在 T1 时自动加一并抓取一条新的指令。剩
下的 T2~T4 时钟完成解码和执行。因此一个 T1~T4 时钟组成一个指令周期。
虽然指令的取得和执行发生在连续的指令周期,但单片机流水线的结构会保证
指令在一个指令周期内被有效的执行。特殊的情况发生在程序计数器的内容被
改变的情形,如子程序的调用或跳转,在这情况下指令将需要多一个指令周期
的时间去执行。
注意: 当使用 RC 振荡器时,OSC2 可以如同一个 T1 相时钟同步引脚一样地被使用,这个 T1 相时
钟有 f
/4 的频率,占空比为 1:3。
SYS
O s c i l l a t o r C l o c k
( S y s t e m C l o c k )
P h a s e C l o c k T 1
P h a s e C l o c k T 2
P h a s e C l o c k T 3
P h a s e C l o c k T 4
P r o g r a m C o u n t e r
P i p e l i n i n g
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 )
系统时序和流水线
如果指令牵涉到分支,例如跳转或调用等指令,则需要两个指令周期才能完成
指令执行。需要一个额外周期的原因是程序先用一个周期取出当前指令地址的
下一条指令,再用另一个周期去实际执行分支动作,因此编程者必须特别考虑
额外周期的问题,尤其是在执行时间要求比较严格的时候。
1
2
3
4
5
6
D E L A Y :
M O V A , [ 1 2 H ]
C A L L D E L A Y
C P L [ 1 2 H ]
:
:
N O P
F e t c h I n s t . 1 E x e c u t e I n s t . 1
F e t c h I n s t . 2
E x e c u t e I n s t . 2
F e t c h I n s t . 3
F l u s h P i p e l i n e
F e t c h I n s t . 6 E x e c u t e I n s t . 6
F e t c h I n s t . 7
10
第一章 硬件结构
程序计数器
程序执行期间,程序计数器是用来指向下一条要执行的指令地址。除了 JMP
或 CALL 这些要求跳转到一个非连续的程序存储器地址外,它会在每条指令执
行完后自动增加一。对于低成本、高效益的输入/ 输出系列,HT48R05A-1 和
HT48R06A-1 程序计数器分别有 9 和 10 个位。然而需要注意只有较低的 8 位,
即所谓的程序计数器低字节寄存器,是可以直接读写的。
当执行的指令要求跳转到非连续的地址时,如跳转指令、子程序调用、中断或
复位等,单片机通过载入所需的地址到程序计数器来控制程序。对于条件跳转
指令,一旦条件符合,下一条在现在指令执行时所取得的指令即会被摒弃,而
由一个空指令周期来加以取代。
程序计数器较低字节,即程序计数器低字节寄存器或 PCL ,可以通过程序控制
取得,且它是可以读取和写入的寄存器。通过直接传送数据到这寄存器,一个
程序短跳转可以直接被执行,然而因为只有低字节的运用是有效的,因此跳转
被限制在同页存储器,即 256 个存储器地址的范围内。当这样一个程序跳转要
执行时,需注意会插入一个空指令周期。
注意: 程序计数器较低字节在程序控制下是可以访问的。PCL 的使用可能导致程序分支,所以额
外的周期需要预先取得。有关 PCL 寄存器更多的信息可在特殊功能寄存器部份中找到。
模式
复位
外部中断
定时/计数器中断
条件跳转
写入 PCL 寄存器
跳转或调用子程序
由子程序返回
注意:1. PC9~PC8 :目前程序计数器位
2. @7~@0:PCL 位
3. #9~#0:指令码位
4. S9~S0:堆栈寄存器位
5. 对于 HT48R06A-1,程序计数器有 10 个位,即从 b9~b0,对于 HT48R05A-1,它的程序计
数器有 9 个位,表中的 b9 是无效的。
b9 b8 b7 B6 b5 b4 b3 b2 b1 b0
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 1 0 0 0
PC9 PC8 @7 @6 @5 @4 @3 @2 @1 @0
#9 #8 #7 #6 #5 #4 #3 #2 #1 #0
S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
程序计数器
Program Counter + 2
11
Cost-Effective I/O 型单片机使用手册
堆栈
堆栈是存储器的一个特殊部分,只用来储存程序计数器中的内容。堆栈由两层
组成,既不是数据部分也不是程序空间部份,且既不是可读取也不是可写入的。
当前层由堆栈指针(Stack Pointer, SP) 加以指示,同样也是不可读写的。在发生
子程序调用或中断响应服务时,程序计数器的内容被压入堆栈。当子程序或中
断服务程序结束时,返回指令(RET 或 RETI) 使程序计数器从堆栈中重新得到
它以前的值。当一个芯片复位之后,SP 将指向堆栈的顶部。
如果堆栈已满,且有非屏蔽的中断发生,中断请求标志位会被置位,但是中断
响应会被禁止。当堆栈指针减少(执行 RET 或 RETI) ,中断将被响应。这个特
性提供程序设计者简单的方法来预防堆栈溢出。然而即使堆栈已满,CALL 指
令仍然被执行,而造成堆栈溢出。使用时应注意避免堆栈溢出情况的发生,因
为这可能会造成不可预期的程序分支指令执行的错误。最先被存入的地址会丢
失,只有最后两个返回地址被保存在堆栈里。
P r o g r a m C o u n t e r
T o p o f S T A C K
S t a c k
P o i n t e r
S t a c k L e v e l 1
S t a c k L e v e l 2
B o t t o m o f S T A C K
P r o g r a m
M e m o r y
算术及逻辑单元 – ALU
算术逻辑单元是单片机中很重要的部份,执行指令集中的算术和逻辑运算。
ALU 连接到单片机的数据总线,在接收相关的指令码后执行需要的算术与逻
辑操作,并将结果储存在指定的寄存器。当 ALU 计算或操作时,可能导致进
位、借位或其他状态的改变,而相关的状态寄存器会因此更新内容以显示这些
变化,ALU 所提供的功能如下:
• 算术操作:ADD 、ADDM 、ADC 、ADCM 、SUB 、SUBM 、SBC 、SBCM 、DAA
• 逻辑运算:AND 、OR 、XOR 、ANDM 、ORM 、XORM 、CPL 、CPLA
• 移位:RRA 、RR 、RRCA 、RRC 、RLA 、RL 、RLCA、 RLC
• 增加和减少:INCA 、INC 、DECA 、DEC
• 分支判断:JMP 、SZ 、SZA 、SNZ 、SIZ 、SDZ 、SIZA 、SDZA 、CALL、 RET、 RETI
12
程序存储器
程序存储器用来存放用户代码即存储程序。对于 Cost-Effective I/O 型的单片机
而言,有两种程序存储器可供使用。第一种是一次可编程存储器(OTP),使用
者可编写他们的应用码到芯片中.具有 OTP 存储器的单片机在芯片名称上有
“R”做标示。使用适当的编程工具,OTP 单片机可以提供使用者以灵活的方
式来自由开发他们的应用,这对于除错或需要经常升级与改变程序的产品是很
有帮助的。对于中小型量产,OTP 亦为极佳的选择。另一种存储器为掩膜存储
器,单片机名称上有“C”做标示。这些芯片对于大量生产提供最佳的成本效
益。
结构
14 位的程序存储器的容量是 0.5K 或 1K ,是使用者用来储存程序的地方。程序
存储器用程序计数器来寻址,其中包含数据、表格和中断入口。数据表格可以
设定在程序存储器的任何地址,由表格指针来寻址。
第一章 硬件结构
以下是 Cost-Effective I/O 型单片机程序存储器结构图。
H T 4 8 R 0 6 A - 1
H T 4 8 C 0 6
I n i t i a l i z a t i o n
V e c t o r
E x t e r n a l
I n t e r r u p t V e c t o r
T i m e r / C o u n t e r
I n t e r r u p t V e c t o r
1 4 b i t s
0 0 0 H
0 0 4 H
0 0 8 H
1 F F H
2 0 0 H
3 F F H
H T 4 8 R 0 5 A - 1
H T 4 8 C 0 5
I n i t i a l i z a t i o n
V e c t o r
E x t e r n a l
I n t e r r u p t V e c t o r
T i m e r / C o u n t e r
I n t e r r u p t V e c t o r
1 4 b i t s
N o t I m p l e m e n t e d
特殊向量
程序存储器内部某些地址保留用做诸如复位和中断入口等特殊用途。
• 地址 000H
这个向量是芯片复位后的程序起始地址。在芯片复位之后,程序将跳到这
个地址并开始执行。
• 地址 004H
这个向量用做外部中断入口。假如单片机外部中断引脚电平转成低电平,
而外部中断使能且堆栈没有满的情况下,程序将跳到这个地址开始执行。
13
Cost-Effective I/O 型单片机使用手册
地址 008H
•
此内部中断向量被定时/ 计数器所使用。当定时器发生溢出,而内部中断使
能且堆栈没有满的情况下,程序将跳到这个地址开始执行。
查表
程序存储器中的任何地址都可以定义成一个表格,以便让编程者可以储存固定
的数据。使用表格时,表格指针必须先行设定,其方式是将表格的低字节地址
放在表格指针寄存器 TBLP 中。这个寄存器存放表格较低的 8 位地址。在设定
完表格指针后,表格数据可以使用“TABRDC [m]”指令从当前程序所在的存
储器页中来查表读取。在单片机 HT48R06A-1/HT48C06 中,另一条“TA BRD L
[m]”指令可用来读取程序存储器最后页中的表格数据,但这指令对于单片机
HT48R05A-1/HT48C05 并不适用。当这些指令执行时,程序存储器中表格数据
的低字节,将被传送到使用者指定的数据存储器。程序存储器中表格数据的高
字节,则被传送到 TBLH 特殊寄存器。而高字节中未使用的位将读取为 0 。
下图是查表中寻址/ 数据流程图:
P r o g r a m C o u n t e r
h i g h b y t e
T B L P
P r o g r a m
M e m o r y
H i g h b y t e o f t a b l e c o n t e n t s
查表程序范例
以下范例说明 HT48R06A-1 输入/ 输出型单片机中,表格指针和表格数据如何
被定义,如何读取表格数据。这个例子使用的表格数据用 ORG 伪指令储存在
存储器最后一页。 在此 ORG 伪指令中的值为 300H ,即 1K 程序存储器
HT48R06A-1 单片机中存储器最后一页的开始地址。这里设定表格指针 TBLP
的初始值为 06H 。这说明从数据表格读取的第一笔数据位于程序存储器地址
306H 即最后一页开始地址后的第六个地址。值得注意的是假如执行“TAB RD C
[m]”指令,则表格指针指向当前页。在这个例子中,表格数据的高字节等于
零,当“ TABRDL [m]”指令被执行时,此值将会自动的传送到 TBLH 寄存器。
14
T B L H S p e c i f i e d b y [ m ]
L o w b y t e o f t a b l e c o n t e n t s
第一章 硬件结构
tempreg1 db ? ; temporary register #1
tempreg2 db ? ; temporary register #2
:
:
mov a,06h ; initialize table pointer – note that this
; address is referenced
mov tblp,a ; to the last page or present page
:
:
tabrdl tempreg1 ; transfers value in table referenced by table
; pointer to tempreg1
; data at prog.memory address 306H transferred to
; tempreg1 and TBLH
dec tblp ; reduce value of table pointer by one
tabrdl tempreg2 ; transfers value in table referenced by table
; pointer to tempreg2
; data at prog.memory address 305H transferred to
; tempreg2 and TBLH
; in this example the data ˝ 1A˝ is transferred
; to tempreg1 and data ˝0F˝ to register tempreg2
; the value ˝0˝ will be transferred to the high
; byte register TBLH
:
:
org 300h ; sets initial address of last page
; (for HT48R06A-1)
dc 00Ah, 00Bh, 00Ch, 00Dh, 00Eh, 00Fh, 01Ah, 01Bh
:
:
15
Cost-Effective I/O 型单片机使用手册
因为 TBLH 寄存器是只读寄存器不能写入,若主程序和中断服务程序都使用表
格读取指令,应该注意对它的保护。使用表格读取指令,中断服务程序可能会
改变 TBLH 的值,若随后在主程序中再次使用这个值,则会发生错误。因此建
议避免同时使用表格读取指令。然而在某些情况下,如果同时使用表格读取指
令是不可避免的,则在执行任何主程序的表格读取指令前,中断应该先除能。
另外要注意的是所有与表格相关的指令,都需要两个指令周期去完成操作。
指令
TABRDC[m] PC9 PC8 @7 @6 @5 @4 @3 @2 @1 @0
TABRDL[m] 1 1 @7 @6 @5 @4 @3 @2 @1 @0
注意: 1. PC9 ~ PC8:当前程序计数器位
2. @7 ~ @0:表格指针 TBLP 位
3. 对 HT48R05A-1/HT48C05 来说,表格地址是 9 位,从 b8~b0。
4. 对 HT48R06A-1/HT48C06 来说,表格地址是 10 位,从 b9~b0。
b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
表格地址
16
数据存储器
数据存储器是内容可更改的 8 位 RAM 内部存储器,用来储存临时数据。它分
为两部份,第一部份是特殊功能寄存器。这些寄存器有固定的地址且与单片机
的正确操作密切相关。大多特殊功能寄存器都可在程序控制下直接读取和写
入,但有些被加以保护而不对用户开放。第二部份数据存储器是做一般用途使
用,都可在程序控制下进行读取和写入。
结构
数据存储器的两个部份,即专用和通用数据存储器,位于连续的地址。全部
RAM 为 8 位宽度,但存储器容量大小因所选择的单片机而不同。所有芯片的
数据存储器开始地址都是 00H 。单片机常见的寄存器,如 ACC 和 PCL 等,全
都位于相同的数据存储地址。
第一章 硬件结构
0 0 H
S p e c i a l P u r p o s e
D a t a M e m o r y
1 F H
2 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
7 F H
注意: 除了少数专用的位,大部份数据存储器的位都可以直接使用“SET [m].i”和“CLR [m].i”
加以操作。数据存储器也可通过间接寻址指针寄存器(MP) 进行存取。
通用数据存储器
所有的单片机程序需要一个读/ 写的存储区,让临时数据可以被储存和再使用。
该 RAM 区域就是通用数据存储器。这个数据存储区可让使用者进行读取和写
入的操作。使用“SET [m].i ”和“CLR [m].i ”指令可对个别的位做置位或复位
的操作,方便用户在数据存储器内进行位操作。
17
Cost-Effective I/O 型单片机使用手册
2 0 H
6 0 H
7 F H
H T 4 8 R 0 5 A - 1
H T 4 8 C 0 5
2 0 H
4 0 H
7 F H
H T 4 8 R 0 6 A - 1
H T 4 8 C 0 6
G e n e r a l P u r p o s e
D a t a M e m o r y
: U n u s e d
R e a d a s " 0 0 "
专用数据存储器
这个区域的数据存储器是存放特殊寄存器的,这些寄存器对单片机的正确操作
密切相关。大多数的寄存器可被读取和写入,只有一些是被保护而只能读取的。
相关细节的介绍请参看有关特殊功能寄存器的部份。要注意的是,任何读取指
令对存储器中未使用的地址进行读取将得到 00H 的值。
以下是 Cost-Effective I/O 型单片机中,专用数据存储器的详细结构图。
0 0 H
0 1 H
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
I A R
M P
A C C
P C L
T B L P
T B L H
W D T S
S T A T U S
I N T C
T M R
T M R C
P A
P A C
P B
P B C
P C
P C C
S p e c i a l P u r p o s e
D a t a M e m o r y
: U n u s e d
R e a d a s " 0 0 "
18
第一章 硬件结构
特殊功能寄存器
为了确保单片机能成功的操作,数据存储器中设置了一些内部寄存器。这些寄
存器确保内部功能,如定时器、中断和看门狗等,和外部功能,如输入/ 输出
数据控制的正确操作。在数据存储器中,这些寄存器以 00H 作为开始地址。在
特殊功能寄存器存储空间和通用数据存储器的起始地址之间,有一些未定义的
数据存储器,将被保留用来做未来的扩充,若从这些地址读取数据将返回 00H
值。
间接寻址寄存器 – IAR
IAR 寄存器位于数据存储器 00H 地址,没有实际的物理空间。这个特殊寄存器
提供间接寻址,准许使用间接寻址指针做数据操作,以取代定义实际存储器地
址的直接存储器寻址方式。对 IAR 上的任何动作,将对间接寻址指针(MP) 所
指定的存储器地址产生对应的读/写操作。直接读取 IAR 寄存器将返回 00H 的
结果,而直接写入此寄存器则不做任何操作。
间接寻址指针 – MP
间接寻址指针(MP) 位于数据存储器的物理空间内。它像普通的寄存器一样被写
入和操作,这提供了寻址和数据追踪的有效方法。对 IAR 操作时,单片机将对
MP 指向的地址操作。
注意: 间接寻址指针的第七位没有用处。然而要注意的是,当系统去读间接寻址指针的内容时,
此位为“1 ”。
19
Cost-Effective I/O 型单片机使用手册
以下的例子说明如何清零一个具有 4 个 RAM 地址的区块,它们已事先被定义
成地址 adres1 到 adres4 。
data .section ´data´
adres1 db ?
adres2 db ?
adres3 db ?
adres4 db ?
block db ?
code .section at 0 ´code´
org 00h
start:
mov a,04h ; setup size of block
mov block,a
mov a,offset adres1 ; Accumulator loaded with first RAM address
mov mp,a ; setup memory pointer with first RAM address
loop:
clr [00h] ; clear the data at address defined by mp
inc mp ; increment memory pointer
sdz block ; check if last memory location has been
; cleared
jmp loop
continue:
在上面的例子中有一点值得注意,即并没有确定 RAM 地址。
累加器 – ACC
对任何单片机来说,累加器是相当重要的且与 ALU 所完成的运算有密切关系。
所有 ALU 得到的运算结果都会暂时储存在 ACC 累加器里。若没有累加器,
ALU 必须在每次进行如加法、减法和移位的运算时,将结果写入到数据存储
器,这样将造成程序编写和时间的负担。另外数据传送也常常牵涉到累加器的
临时储存功能,例如在一个使用者定义的寄存器和另一个寄存器之间传送数据
时,由于两寄存器之间不能直接传送数据,因此必须通过累加器来传送数据。
程序计数器低字节寄存器 – PCL
为了提供额外的程序控制功能,程序计数器低字节设置在数据存储器的特殊功
能区域内,程序员可对此寄存器进行操作,很容易的直接跳转到其它程序地址。
直接给 PCL 寄存器赋值将导致程序直接跳转到程序存储器的某一地址,然而
由于寄存器只有 8 位的长度,因此只允许在本页的程序存储器范围内进行跳
转。而当使用这种运算时,要注意会插入一个空指令周期。
20
第一章 硬件结构
表格寄存器 – TBLP, TBLH
这两个特殊功能寄存器用来对储存在程序存储器中的表格进行操作。TBLP 为
表格指针,指向表格的地址。它的值必须在表格读取指令执行前加以设定。由
于它的值可以被如 INC 或 DEC 的指令所改变,这就提供了一种简单的方法对
表格数据进行读取。表格读取数据指令执行之后,表格数据高字节存储在TBLH
中。其中要注意的是,表格数据低字节会被传送到使用者指定寄存器。
看门狗定时寄存器 – WDTS
单片机中的看门狗特性提供自动复位功能,给予单片机一个保护工具去预防不
正确的程序跳转。当看门狗定时器溢出时会产生复位。为了提供可变的看门狗
定时器复位时间,看门狗定时器的时钟源可被预分频,分频值由 WDTS 寄存
器来设定。对 WDTS 寄存器赋值,可以设定适当的预分频值的看门狗定时器
时钟源。要注意的是,在 WDTS 中低 3 位被使用来设定从 1 到 128 之间的分
频比例,8 位中剩下的 5 位可以被程序设计者用来做其它用途。
状态寄存器 – STATUS
这 8 位寄存器(0AH) 包含零标志位(Z) 、进位标志位(C) 、辅助进位标志位(AC) 、
溢出标志位(OV) 、暂停标志位(PDF) 和看门狗溢出标志位(TO) 。它同时记录状
态数据和控制运算顺序。
除了 TO 和 PDF 标志位外,状态寄存器中的位像其它大部份寄存器一样可以被
改变。但任何数据写入到状态寄存器都不会改变 TO 或 PDF 标志位。另外,执
行不同的指令后,与状态寄存器有关的运算可能会得到不同的结果。TO 标志
位只会受系统上电、看门狗溢出、或执行“CLR WDT ”或“ HALT”指令影响。
PDF 标志位只会受执行“ HALT”或“ CLR WDT”指令或系统上电影响。
21
Cost-Effective I/O 型单片机使用手册
Z、 OV、 AC 和 C 标志位通常反映最近运算的状态:
• 当加法运算的结果产生进位,或减法运算的结果没有产生借位时,置位 C;
反之 C 被 清零。同时 C 也会被带进位 /借位的移位指令所影响。
• 当低半字节加法运算的结果产生进位,或高半字节减法运算的结果没有产
生借位时,置位 AC ;反之 AC 被清零。
• 当算术或逻辑运算结果是零时,置位 Z ;反之 Z 被清零。
• 当运算结果高两位的进位状态异或的结果为 1 时,置位 OV ;反之 OV 被清
零。
• 系统上电或执行“CLR WDT”指令会清零 PDF ,而执行“ HALT”指令则
会置位 PDF 。
• 系统上电或执行“CLR WDT”或“HALT”指令会清零 TO ,而当 WDT 溢
出则会置位 TO 。
另外当进入一个中断程序或执行子程序调用时,状态寄存器不会自动压入到堆
栈保存。假如状态寄存器的内容是重要的且子程序可能改变状态寄存器的话,
则需谨慎的去做正确的储存。
b 7 b 0
T O P D F O V Z A C C
S T A T U S R e g i s t e r
A r i t h m e t i c / l o g i c o p e r a t i o n f l a g s
C a r r y F l a g
A u x i l i a r y C a r r y F l a g
Z e r o F l a g
O v e r f o l w F l a g
S y s t e m m a n a g e m e n t f l a g s
P o w e r d o w n f l a g
W a t c h d o g t i m e - o u t f l a g
N o t i m p l e m e n t e d , r e a d a s " 0 "
中断控制寄存器 – INTC
8 位的 INTC 寄存器控制外部和内部中断的动作。通过使用标准的位操作指令
来设定这寄存器的位的值,外部中断和内部中断的使能和除能功能可分别被控
制。寄存器中的主中断位(EMI) 控制所有中断的使能/ 除能,用来设定所有中断
使能位的开或关 。当一中断程序被响应时,就会自动屏蔽其他中断,EMI 位将
被清零,而执行“RETI ”指令则会置位 EMI 位。
注意: 如果在当前中断服务程序中要再响应其它的中断程序,可以在进入该中断服务程序后,在
程序中用手动的方式将 EMI 置“1 ”。
22