![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg1.png)
SN8P2722
8-Bit Micro-Controller
SN8P2722
用户参考手册
Version 1.0
S
O
Nii
S
O
SONiX 公司保留对以下所有产品在可靠性,功能和设计方面的改进作进一步说明的权利。SONiX 不承担由本手册所
涉及的产品或电路的运用和使用所引起的任何责任,SONiX 的产品不是专门设计来应用于外科植入、生命维持和任何
SONiX 产品的故障会对个体造成伤害甚至死亡的领域。如果将 SONiX 的产品应用于上述领域,即使这些是由 SONiX 在
产品设计和制造上的疏忽引起的,用户应赔偿所有费用、损失、合理的人身伤害或死亡所直接或间接产生的律师费用,并
且用户保证 SONiX 及其雇员、子公司、分支机构和销售商与上述事宜无关。
.
N
X88
X
位
位
单
单
片
片
机
机
SONiX TECHNOLOGY CO., LTD Page 1 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg2.png)
SN8P2722
8-Bit Micro-Controller
修正记录
版本 日期 内容
VER 1.0
2008 年 3 月 初版。
2008 年 5 月 修改烧录信息章节内容。
SONiX TECHNOLOGY CO., LTD Page 2 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg3.png)
SN8P2722
8-Bit Micro-Controller
目 录
1
1
产品概述 ......................................................................................................................................................................................
1
1.1 功能特性............................................................................................................................................................................. 5
1.2 系统结构框图...................................................................................................................................................................... 6
1.3 引脚配置............................................................................................................................................................................. 7
1.4 引脚描述............................................................................................................................................................................. 7
1.5 引脚电路结构图 .................................................................................................................................................................. 8
2
2
中央处理器(CPU).........................................................................................................................................................................
2
2.1 存储器 ................................................................................................................................................................................ 9
2.1.1 程序存储器 .................................................................................................................................................................... 9
2.1.2 CHECKSUM 计算....................................................................................................................................................... 14
2.1.3 编译选项...................................................................................................................................................................... 15
2.1.4 数据存储器 (RAM) ...................................................................................................................................................... 15
2.1.5 系统寄存器 .................................................................................................................................................................. 16
2.2 寻址模式........................................................................................................................................................................... 23
2.2.1 立即寻址...................................................................................................................................................................... 23
2.2.2 直接寻址...................................................................................................................................................................... 23
2.2.3 间接寻址...................................................................................................................................................................... 23
2.3 堆栈..................................................................................................................................................................................24
2.3.1 概述 ............................................................................................................................................................................. 24
2.3.2 堆栈寄存器 .................................................................................................................................................................. 25
2.3.3 堆栈操作举例............................................................................................................................................................... 26
3
3
复位 ...........................................................................................................................................................................................
3
3.1 概述..................................................................................................................................................................................27
3.2 上电复位........................................................................................................................................................................... 28
3.3 看门狗复位 ....................................................................................................................................................................... 28
3.4 掉电复位........................................................................................................................................................................... 29
3.4.1 概述 ............................................................................................................................................................................. 29
3.4.2 系统工作电压............................................................................................................................................................... 29
3.4.3 掉电复位性能改进........................................................................................................................................................ 30
3.5 外部复位........................................................................................................................................................................... 32
3.6 外部复位电路.................................................................................................................................................................... 33
3.6.1 RC复位电路................................................................................................................................................................. 33
3.6.2 二极管及RC复位电路 .................................................................................................................................................. 33
3.6.3 稳压二极管复位电路 .................................................................................................................................................... 34
3.6.4 电压偏置复位电路........................................................................................................................................................ 34
3.6.5 外部IC复位 .................................................................................................................................................................. 35
4
4
系统时钟 ....................................................................................................................................................................................
4
4.1 概述..................................................................................................................................................................................36
4.2 时钟框图........................................................................................................................................................................... 36
4.3 OSCM寄存器.................................................................................................................................................................... 37
4.4 系统高速时钟.................................................................................................................................................................... 38
4.4.1 内部高速RC振荡器 ...................................................................................................................................................... 38
4.4.2 外部高速时钟............................................................................................................................................................... 39
4.5 系统低速时钟.................................................................................................................................................................... 41
4.5.1 系统时钟测试............................................................................................................................................................... 41
5
5
系统工作模式 .............................................................................................................................................................................
5
5.1 概述..................................................................................................................................................................................42
5.2 系统模式切换举例 ............................................................................................................................................................ 43
5.3 唤醒时间........................................................................................................................................................................... 44
5.3.1 概述 ............................................................................................................................................................................. 44
5.3.2 唤醒时间...................................................................................................................................................................... 44
6
6
中断 ...........................................................................................................................................................................................
6
6.1 概述..................................................................................................................................................................................45
6.2 中断使能寄存器INTEN ..................................................................................................................................................... 45
6.3 中断请求寄存器INTRQ.....................................................................................................................................................46
6.4 GIE 全局中断 ................................................................................................................................................................... 46
6.5 PUSH, POP处理............................................................................................................................................................... 47
6.6 INT0(P0.0)中断............................................................................................................................................................ 48
6.7 T0 中断............................................................................................................................................................................. 49
6.8 TC0 中断 .......................................................................................................................................................................... 50
5
9
27
36
42
45
SONiX TECHNOLOGY CO., LTD Page 3 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg4.png)
SN8P2722
8-Bit Micro-Controller
6.9 ADC中断 .......................................................................................................................................................................... 51
6.10 多中断操作举例................................................................................................................................................................52
7
7
I/O口 ..........................................................................................................................................................................................
7
7.1 I/O口模式 ......................................................................................................................................................................... 53
7.2 I/O口上拉电阻 .................................................................................................................................................................. 54
7.3 I/O口数据寄存器............................................................................................................................................................... 55
7.4 P4 与ADC共用引脚 .......................................................................................................................................................... 56
8
8
定时器........................................................................................................................................................................................
8
8.1 看门狗定时器.................................................................................................................................................................... 57
8.2 定时器T0 .......................................................................................................................................................................... 58
8.2.1 概述 ............................................................................................................................................................................. 58
8.2.2 T0M模式寄存器 ........................................................................................................................................................... 58
8.2.3 T0C计数寄存器............................................................................................................................................................ 59
8.2.4 T0 操作流程................................................................................................................................................................. 59
8.3 定时/计数器TC0 ...............................................................................................................................................................60
8.3.1 概述 ............................................................................................................................................................................. 60
8.3.2 TC0M模式寄存器......................................................................................................................................................... 61
8.3.3 TC0C计数寄存器......................................................................................................................................................... 62
8.3.4 TC0R自动装载寄存器.................................................................................................................................................. 63
8.3.5 TC0 时钟频率输出(蜂鸣器输出).............................................................................................................................. 64
8.3.6 TC0 操作举例 .............................................................................................................................................................. 65
8.4 PWM0 .............................................................................................................................................................................. 66
8.4.1 概述 ............................................................................................................................................................................. 66
8.4.2 TC0IRQ和PWM输出占空比......................................................................................................................................... 67
8.4.3 PWM输出占空比与TC0R的变化.................................................................................................................................. 68
8.4.4 PWM编程举例 ............................................................................................................................................................. 69
9
9
5 通道ADC.................................................................................................................................................................................
9
9.1 概述..................................................................................................................................................................................70
9.2 ADM寄存器 ...................................................................................................................................................................... 70
9.3 ADR 寄存器 ..................................................................................................................................................................... 71
9.4 ADB寄存器....................................................................................................................................................................... 71
9.5 P4CON寄存器 .................................................................................................................................................................. 72
9.6 ADC转换时间 ................................................................................................................................................................... 72
9.7 ADC操作实例 ................................................................................................................................................................... 73
9.8 ADC电路 .......................................................................................................................................................................... 73
0
1
0
1
2K/4K蜂鸣器(BUZZER)输出 .................................................................................................................................................
0
1
10.1 概述.................................................................................................................................................................................. 74
10.2 BZM模式寄存器................................................................................................................................................................74
1
1
1
1
指令表 ...................................................................................................................................................................................
1
1
2
1
2
1
电气特性 ...............................................................................................................................................................................
2
1
12.1 极限参数........................................................................................................................................................................... 76
12.2 电气特性........................................................................................................................................................................... 76
3
1
3
1
SN8P2722 开发工具..................................................................................................................................................................
3
1
13.1 SN8P2722 EV-KIT............................................................................................................................................................. 78
13.2 在线仿真器(ICE)和EV-KIT应用注意事项 ..................................................................................................................... 79
4
1
4
1
OTP烧录信息.............................................................................................................................................................................
4
1
14.1 烧录转接板信息................................................................................................................................................................ 80
14.2 烧录引脚信息....................................................................................................................................................................82
5
1
5
1
芯片正印命名规则 .................................................................................................................................................................
5
1
15.1 概述.................................................................................................................................................................................. 83
15.2 芯片型号说明....................................................................................................................................................................83
15.3 命名举例........................................................................................................................................................................... 84
15.4 日期码规则....................................................................................................................................................................... 84
6
1
6
1
封装信息 ...............................................................................................................................................................................
6
1
16.1 P-DIP 20 PIN.................................................................................................................................................................... 85
16.2 SOP 20 PIN...................................................................................................................................................................... 86
16.3 SSOP 20 PIN....................................................................................................................................................................87
53
57
70
74
75
76
78
80
83
85
SONiX TECHNOLOGY CO., LTD Page 4 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg5.png)
SN8P2722
8-Bit Micro-Controller
1
1
1
产品概述
1.1 功能特性
存储器
♦
ROM:2K * 16 位。
RAM:128 字节。
8 层堆栈缓存器。
♦
4 个中断源
♦
3 个内部中断源:T0、TC0、ADC。
1 个外部中断源:INT0。
I/O 端口配置
♦
双向输入输出口:P0、P4、P5。
具有唤醒功能端口:P0 电平触发。
内置上拉电阻端口:P0、P4、P5。
外部中断引脚:P0.0。
ADC 输入引脚:AIN0~AIN4。
Fcpu(指令周期)
♦
Fcpu = Fosc/4、Fosc/8、Fosc/16。
功能强大的指令系统
♦
指令长度为 1 个字。
大部分指令执行只需 1 个周期。
跳转指令 JMP 可在整个 ROM 区执行。
查表指令 MOVC 可寻址整个 ROM 区。
) 特性选择列表
单片机型号
SN8P2711 1K*16 64 4 - V V 12 5+1 ch - 2 5 PDIP14/SOP14/SSOP16
SN8P2722 2K*16 128 8 V V - 18 5-ch V 1 8 PDIP20/SOP20/SSOP20
ROM RAM
堆栈
T0 TC0 TC1
定时器
I/O
2 个 8 位定时器
♦
T0:基本定时器。
TC0:自动装载定时/计数器/PWM/蜂鸣器输出。
单通道 8 位 PWM 输出
♦
单通道 2KHz/4KHz 蜂鸣器输出
♦
内置看门狗定时器,其时钟源由内部低速 RC 振荡器提供
♦
(16KHz @3V,32KHz @5V)
5 通道 12 位 ADC.
♦
4 种时钟系统
♦
外部高速时钟:RC 模式,高达 10 MHz。
外部高速时钟:晶振模式,高达 16 MHz。
内部高速时钟:RC 模式,高达 16 MHz。
内部低速时钟:RC 振荡器 16KHz(3V),32KHz(5V)。
4 种工作模式
♦
普通模式:高、低速时钟同时工作。
低速模式:只有低速时钟工作。
睡眠模式:高、低速时钟均不工作。
绿色模式:由定时器周期性唤醒。
封装形式
♦
P-DIP 20 pin。
SOP 20 pin。
SSOP 20 pin。
ADC
2K/4K
Buzzer
PWM
TCnOUT
唤醒功能
引脚数目
封装形式
SONiX TECHNOLOGY CO., LTD Page 5 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg6.png)
SN8P2722
8-Bit Micro-Controller
1.2 系统结构框图
内部高速RC
PC
振荡器
OTP
IR
ROM
FLAGS
ALU
ACC
中断控制
P0 P5 P4
外部高速时钟
时序产生器
系统寄存器
定时器 & 计数器
内部低速RC
振荡器
RAM
低电压检测
(LVD)
看门狗定时器
PWM 0
BUZZER 0
12位 ADC
内部参考源
电池检测内部
ADC通道
PWM0
BUZZER0
AIN0~AIN4
SONiX TECHNOLOGY CO., LTD Page 6 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg7.png)
SN8P2722
8-Bit Micro-Controller
1.3 引脚配置
SN8P2722P(PDIP 20 pins)
SN8P2722S(SOP 20 pins)
SN8P2722X(SSOP 20 pins)
VSS 1 U 20 VDD
XIN/P0.1 2 19 P0.0/INT0
XOUT/P0.2 3 18 P4.4/AIN4
RST/VPP/P0.3 4 17 P4.3/AIN3
P0.4/BZ 5 16 P4.2/AIN2
P0.5 6 15 P4.1/AIN1
P0.6 7 14 P4.0/AIN0
P0.7 8 13 P5.4/TC0OUT/PWM
P5.0 9 12 P5.3
P5.1 10 11 P5.2
SN8P2722P
SN8P2722S
SN8P2722X
1.4 引脚描述
引脚名称 类型 说明
VDD, VSS P
P0.3/RST/VPP I, P
XIN/P0.1 I/O
XOUT/P0.2 I/O
P0.0/INT0 I/O
P0.4/BZ I/O
P0[7:5] I/O
P4[4:0]/AIN[4:0] I/O
P5[3:0] I/O
P5.4/PWM/TC0OUT I/O
电源输入端。
P0.3:禁止外部复位时为单向输入引脚,施密特触发,无内置上拉电阻。
RST:系统复位输入引脚,施密特触发,低电平有效,通常保持高电平。
VPP:烧录时为 12.3V 电源输入引脚。
XIN:使能外部振荡器(晶振或 RC)时为振荡信号输入引脚。
P0.1:双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。
XOUT:使能外部晶振模式时为振荡信号输出引脚。
P0.2:双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。
P0.0:双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。
INT0:外部中断触发引脚(施密特触发)。
TC0 事件计数器的信号输入引脚。
P0.4:双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。
BZ:2KHz/4KHz buzzer 输出引脚。
双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻。
双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻。
AIN[4:0]:ADC 的输入通道。
双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻。
双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻。
PWM:PWM 输出引脚。
TC0OUT:TC0 / 2 信号输出引脚。
SONiX TECHNOLOGY CO., LTD Page 7 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg8.png)
SN8P2722
8-Bit Micro-Controller
1.5 引脚电路结构图
P0.1、P0.2
P0.3
结构:
P0
、P5结构:
结构:
Pull-Up
Oscillator
Code Option
Pin
PnM
PnM, PnUR
Output
Latch
Input Bus
Output Bus
Int. Osc.
Ext. Reset
Code Option
Pin
Int. Bus
Int. Rst
Pull-Up
PnM
Pin
PnM, PnUR
Input Bus
P4
结构:
Output
Latch
Output Bus
Pull-Up
P4CON
Pin
PnM
GCHS
PnM, PnUR
Output
Latch
Input Bus
Output Bus
Int. ADC
SONiX TECHNOLOGY CO., LTD Page 8 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg9.png)
SN8P2722
8-Bit Micro-Controller
2
2
2
中央处理器(CPU)
2.1 存储器
2.1.1 程序存储器
) ROM
2.1.1.1 复位向量(0000H)
) 上电复位(NT0=1,NPD=0);
) 看门狗复位(NT0=0,NPD=0);
) 外部复位(NT0=1,NPD=1)。
的 NT0 和 NPD 标志位的内容可以判断系统复位方式。下面一段程序演示了如何定义 ROM 中的复位向量。
¾ 例:定义复位向量。
ORG 0 ;
JMP START
…
ORG 10H
START:
…
…
ENDP
:
2K
0000H
0001H
.
.
0007H
0008H
0009H
.
.
000FH
0010H
0011H
.
.
.
.
.
07FCH
07FDH
07FEH
07FFH
具有一个字长的系统复位向量(0000H)。
发生上述任一种复位后,程序将从 0000H 处重新开始执行,系统寄存器也都将恢复为默认值。根据 PFLAG 寄存器中
ROM
复位向量
通用存储区域
中断向量 用户中断向量
通用存储区域
保留
; 跳至用户程序。
; 用户程序起始地址。
; 用户程序。
; 程序结束。
用户复位向量
用户程序开始
用户程序结束
用户程序
SONiX TECHNOLOGY CO., LTD Page 9 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bga.png)
SN8P2722
8-Bit Micro-Controller
2.1.1.2 中断向量(0008H)
中断向量地址为 0008H。一旦有中断响应,程序计数器 PC 的当前值就会存入堆栈缓存器并跳转到 0008H 开始执行
中断服务程序。0008H 处的第一条指令必须是“JMP”或“NOP”。下面的示例程序说明了如何编写中断服务程序。
注:“PUSH”,“POP”指令用于存储和恢复 ACC/PFLAG,NT0、NTD 不受影响。PUSH/POP 缓存器是唯一的,且仅有一层。
¾ 例:定义中断向量,中断服务程序紧随 ORG 8H 之后。
.CODE
…
…
…
START:
… ;
JMP START
…
ENDP
¾ 例:定义中断向量,中断程序在用户程序之后。
.CODE
ORG 0
JMP START
…
JMP MY_IRQ
START:
…
JMP START
…
MY_IRQ:
…
…
ENDP
注:从上面的程序中容易得出 SONiX 的编程规则,有以下几点:
1. 地址 0000H 的“JMP”指令使程序从头开始执行;
2. 地址 0008H 是中断向量;
3. 用户的程序应该是一个循环。
ORG 0
JMP START
ORG 8H
PUSH
POP
RETI
ORG 8H
ORG 10H
PUSH
POP
RETI
; 跳至用户程序。
; 中断向量。
; 保存 ACC 和 PFLAG。
; 恢复 ACC 和 PFLAG。
; 中断结束。
; 用户程序开始。
; 用户程序结束。
; 程序结束。
; 跳至用户程序。
; 中断向量。
; 跳至中断程序。
; 用户程序开始。
; 用户程序结束。
; 中断程序开始。
; 保存 ACC 和 PFLAG。
; 恢复 ACC 和 PFLAG。
; 中断程序结束。
; 程序结束。
SONiX TECHNOLOGY CO., LTD Page 10 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bgb.png)
SN8P2722
8-Bit Micro-Controller
2.1.1.3 查表
在 SONiX 单片机中,对 ROM 区中的数据进行查找,寄存器 Y 指向所找数据地址的中间字节(bit8~bit15),寄存
器 Z 指向所找数据地址的低字节(bit0~bit7)。执行完 MOVC 指令后,所查找数据低字节内容被存入 ACC 中,而数据高
字节内容被存入 R 寄存器。
¾ 例:查找 ROM 地址为“TABLE1”的值。
B0MOV Y, #TABLE1$M
B0MOV Z, #TABLE1$L
MOVC
NOP ;
@@:
… ;
TABLE1: DW 0035H
DW 5105H
DW 2012H
…
INCMS Z
JMP @F
INCMS Y
;
MOVC
注:当寄存器 Z 溢出(从 0FFH 变为 00H)时 ,寄 存 器 Y并不会自动加 1。因此, Z溢出时,Y必须由程序加 1,下面的宏 INC_YZ
能够对 Y 和 Z 寄存器自动处理。
¾ 例:宏 INC_YZ。
INC_YZ MACRO
INCMS Z
JMP @F
INCMS Y
NOP
@@:
ENDM
¾ 例:通过“INC_YZ”对上例进行优化。
B0MOV Y, #TABLE1$M
B0MOV Z, #TABLE1$L
MOVC
INC_YZ
@@:
… ;
TABLE1: DW 0035H
DW 5105H
DW 2012H
…
;
MOVC
; 设置 TABLE1 地址高字节。
; 设置 TABLE1 地址低字节。
; 查表,R = 00H,ACC = 35H。
; 查找下一地址。
; Z 没有溢出。
; Z 溢出(FFH Æ 00),Æ Y=Y+1
; 查表,R = 51H,ACC = 05H。
; 定义数据表(16 位)数据。
; 没有溢出。
; 没有溢出。
; 设置 TABLE1 地址中间字节。
; 设置 TABLE1 地址低字节。
; 查表,R = 00H,ACC = 35H。
; 查找下一地址数据。
; 查表,R = 51H,ACC = 05H。
; 定义数据表(16 位)数据。
SONiX TECHNOLOGY CO., LTD Page 11 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bgc.png)
SN8P2722
下面的程序通过累加器对 Y,Z 寄存器进行处理来实现查表功能,但需要特别注意进位时的处理。
¾ 例:由指令 B0ADD/ADD 对 Y 和 Z 寄存器加 1。
B0MOV Y, #TABLE1$M
B0MOV Z, #TABLE1$L
GETDATA: ;
MOVC
…
TABLE1: DW 0035H
DW 5105H
DW 2012H
…
B0MOV A, BUF
B0ADD Z, A
B0BTS1 FC
JMP GETDATA
INCMS Y
NOP
; 设置 TABLE1 地址中间字节。
; 设置 TABLE1 地址低字节。
; Z = Z + BUF。
; 检查进位标志。
; FC = 0。
; FC = 1。
; 存储数据,如果 BUF = 0,数据为 0035H。
; 如果 BUF = 1,数据=5105H。
; 如果 BUF = 2,数据=2012H。
; 定义数据表(16 位)数据。
8-Bit Micro-Controller
SONiX TECHNOLOGY CO., LTD Page 12 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bgd.png)
SN8P2722
8-Bit Micro-Controller
2.1.1.4 跳转表
跳转表能够实现多地址跳转功能。由于 PCL 和 ACC 的值相加即可得到新的 PCL,因此,可以通过对 PCL 加上不同
的 ACC 值来实现多地址跳转。ACC 值若为 n,PCL+ACC 即表示当前地址加 n,执行完当前指令后 PCL 值还会自加 1,
可参考以下范例。如果 PCL+ACC 后发生溢出,PCH 则自动加 1。由此得到的新的 PC 值再指向跳转指令列表中新的地
址。这样,用户就可以通过修改 ACC 的值轻松实现多地址的跳转。
注:PCH 只支持 PC 增量运算,而不支持 PC 减量运算。当 PCL+ACC 后如有进位,PCH 的值会自动加 1。PCL-ACC 后若有借
位,PCH 的值将保持不变,用户在设计应用时要加以注意。
¾ 例:跳转表。
ORG 0100H ; 跳转表从 ROM 前端开始。
B0ADD PCL, A ; PCL = PCL + ACC,PCL 溢出时 PCH 加 1。
JMP A0POINT ; ACC = 0,跳至 A0POINT。
JMP A1POINT ; ACC = 1,跳至 A1POINT。
JMP A2POINT ; ACC = 2,跳至 A2POINT。
JMP A3POINT ; ACC = 3,跳至 A3POINT。
SONiX 单片机提供一个宏以保证可靠执行跳转表功能,它会自动检测 ROM 边界并将跳转表移至适当的位置。但采用
该宏程序会占用部分 ROM 空间。
¾ 例:宏“MACRO3.H”中,“@JMP_A”的应用。
B0MOV A, BUF0 ; “BUF0”从 0 至 4。
@JMP_A 5 ; 列表个数为 5。
JMP A0POINT ; ACC = 0,跳至 A0POINT。
JMP A1POINT ; ACC = 1,跳至 A1POINT。
JMP A2POINT ; ACC = 2,跳至 A2POINT。
JMP A3POINT ; ACC = 3,跳至 A3POINT。
JMP A4POINT ; ACC = 4,跳至 A4POINT。
如果跳转表恰好位于 ROM BANK 边界处(00FFH~0100H),宏指令“@JMP_A”将调整跳转表到适当的位置(0100H)。
¾ 例:如果跳转表跨越 ROM 边界,将引起程序错误。
@JMP_A MACRO VAL
IF (($+1) !& 0XFF00) !!= (($+(VAL)) !& 0XFF00)
JMP ($ | 0XFF)
ORG ($ | 0XFF)
ENDIF
ADD PCL, A
ENDM
注:“VAL”为跳转表列表中列表个数。
¾ 例:“@JMP_A”运用举例
; 编译前
ROM 地址
B0MOV A, BUF0 ; “BUF0”从 0 到 4。
@JMP_A 5 ; 列表个数为 5。
00FDH JMP A0POINT ; ACC = 0,跳至 A0POINT。
00FEH JMP A1POINT ; ACC = 1,跳至 A1POINT。
00FFH JMP A2POINT ; ACC = 2,跳至 A2POINT。
0100H JMP A3POINT ; ACC = 3,跳至 A3POINT。
0101H JMP A4POINT ; ACC = 4,跳至 A4POINT。
; 编译后
ROM 地址
B0MOV A, BUF0 ; “BUF0”从 0 到 4。
@JMP_A 5 ; 列表个数为 5。
0100H JMP A0POINT ; ACC = 0,跳至 A0POINT。
0101H JMP A1POINT ; ACC = 1,跳至 A1POINT。
0102H JMP A2POINT ; ACC = 2,跳至 A2POINT。
0103H JMP A3POINT ; ACC = 3,跳至 A3POINT。
0104H JMP A4POINT ; ACC = 4,跳至 A4POINT。
SONiX TECHNOLOGY CO., LTD Page 13 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bge.png)
SN8P2722
8-Bit Micro-Controller
2.1.2 CHECKSUM 计算
ROM 末端位置的几个字限制使用,进行 Checksum 计算时,用户应避免对该单元的访问。.
¾ 例:示例程序演示了如何对 00H 到用户程序结束进行 Checksum 计算。
MOV A,#END_USER_CODE$L
B0MOV END_ADDR1, A
MOV A,#END_USER_CODE$M
B0MOV END_ADDR2, A
CLR Y
CLR Z
@@:
MOVC
B0BSET FC
ADD DATA1, A ;
MOV A, R
ADC DATA2, A ;
JMP END_CHECK
AAA:
INCMS Z
JMP @B
JMP Y_ADD_1
END_CHECK:
MOV A, END_ADDR1
CMPRS A, Z
JMP AAA
MOV A, END_ADDR2
CMPRS A, Y
JMP AAA
JMP CHECKSUM_END
Y_ADD_1:
INCMS Y ;
NOP
JMP @B
CHECKSUM_END:
…
…
END_USER_CODE:
; 用户程序结束地址低位地址存入end_addr1。
; 用户程序结束地址中间地址存入end_addr2。
; 清 Y。
; 清 Z。
; 清标志位 C。
; 检查 YZ 地址是否为代码的结束地址。
; 若 Z != 00H,进行下一个计算。
; 若 Z = 00H,Y+1。
; 检查 Z 地址是否为用户程序结束地址低位地址。
; 否,则进行 Checksum 计算。
; 是则检查 Y 的地址是否为用户程序结束地址中间地址。
; 否,则进行 Checksum 计算。
; 是则 Checksum 计算结束。
; 跳转到 Checksum 计算。
; 程序结束。
SONiX TECHNOLOGY CO., LTD Page 14 Version 1.2
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bgf.png)
SN8P2722
8-Bit Micro-Controller
2.1.3 编译选项
编译选项 内容 功能说明
High_Clk
Watch_Dog
Fcpu
Reset_Pin
Security
Noise_Filter
LVD
注:
1. 在干扰严重环境下,强烈建议开启杂迅滤波器,并将“Watch_Dog”选项设置为“Always_On”;
2. 编译选项 Fcpu 仅针对高速时钟,在低速模式下 Fcpu = FILRC/4。
IHRC_16M
RC
32K X’tal
12M X’tal
4M X’tal
Always_On
Enable
Disable
Fhosc/4
Fhosc/8
Fhosc/16
Reset
P03
Enable
Disable
Enable
Disable
LVD_L
LVD_M
LVD_H
内部高速振荡器采用 16MHz RC 振荡电路,XIN/XOUT(P0.2/P0.3)为普通的 I/O 引脚。
外部高速时钟振荡器采用廉价的 RC 振荡电路,XOUT(P0.2)为普通的 I/O 引脚。
外部高速时钟振荡器采用低频晶体/陶瓷振荡器(如 32.768Hz)。
外部高速时钟振荡器采用高频晶体/陶瓷振荡器(如 12MHz)。
外部高速时钟振荡器采用标准晶体/陶瓷振荡器(如 4Mhz)。
始终开启看门狗定时器,即使在睡眠模式和绿色模式下也处于开启状态。
开启看门狗定时器,但在睡眠和绿色模式时关闭。
关闭看门狗定时器。
指令周期=4 个时钟周期。
指令周期=8 个时钟周期。
指令周期=16 个时钟周期
使能外部复位引脚.
P0.3 为单向输入引脚,无上拉电阻。
ROM 代码加密。
ROM 代码不加密。
开启杂讯滤波功能。
禁止杂讯滤波功能。
VDD 低于 2.0V 时,LVD 复位系统。
VDD 低于 2.0V 时,LVD 复位系统;
PFLAG 寄存器的 LVD24 位作为 2.4V 低电压监测器。
VDD 低于 2.4V 时,LVD 复位系统;
PFLAG 寄存器的 LVD36 位作为 3.6V 低电压监测器。
2.1.4 数据存储器 (RAM)
) RAM
:
128
BANK 0
字节
地址
000H
“
“
“
“
“
07FH
080H
“
“
“
“
“
0FFH
RAM
通用区
系统寄存器
bank 0 结束区
Bank0 的 080H~0FFH 是系统寄存器
区(128 字节)。
SONiX TECHNOLOGY CO., LTD Page 15 Version 1.2
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg10.png)
SN8P2722
8-Bit Micro-Controller
2.1.5 系统寄存器
2.1.5.1 系统寄存器表
0 1 2 3 4 5 6 7 8 9 A B C D E F
- - R Z Y - PFLAG - - - - - - - - -
8
- - - - - - - - - - - - - - - -
9
- - - - - - - - - - - - - - - P4CON
A
- ADM ADB ADR - - - - P0M - - - - -
B
- - - - P4M P5M - - INTRQ INTEN OSCM - WDTR TC0R PCL PCH
C
P0 - - - P4 P5 - - T0M T0C TC0M TC0C BZM - - STKP
D
P0UR - - - P4UR P5UR - @YZ - - - - - - - -
E
STK7L STK7H STK6L STK6H STK5L STK5H STK4L STK4H STK3L STK3H STK2L STK2H STK1L STK1H STK0L STK0H
F
2.1.5.2 系统寄存器说明
R
PFLAG
ADB
PnM
INTRQ
OSCM
WDTR
Pn
T0M
TC0M
TC0R =
STK0~STK7
= 工作寄存器及 ROM 查表数据缓存器
= ROM 页及特殊标志寄存器
= ADC 数据缓存器
= Pn 模式控制寄存器
= 中断请求寄存器
= 振荡器模式寄存器
= 看门狗定时器清零寄存器
= Pn 数据缓存器
= T0 模式寄存器
= TC0 模式寄存器
TC0 自动装载数据缓存器
= 堆栈缓存器
STKP
Y, Z
P4CON
ADM
ADR
PEDGE
INTEN
PCH, PCL
PnUR
T0C
TC0C
BZM
@YZ
= 专用寄存器,@YZ 间接寻址寄存器,ROM 寻址寄存器
=P4配置控制寄存器
=ADC模式寄存器
=ADC分辨率选择寄存器
=P0.0边沿触发寄存器
= 中断使能寄存器
= 程序计数器
=Pn上拉电阻控制寄存器
=T0计数寄存器
=TC0计数寄存器
= 蜂鸣器控制寄存器
= 间接寻址寄存器
= 堆栈指针
- PEDGE
SONiX TECHNOLOGY CO., LTD Page 16 Version 1.2
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg11.png)
SN8P2722
8-Bit Micro-Controller
2.1.5.3 系统寄存器位定义
地址
082H RBIT7 RBIT6 RBIT5 RBIT4 RBIT3 RBIT2 RBIT1 RBIT0 R/W R
083H ZBIT7 ZBIT6 ZBIT5 ZBIT4 ZBIT3 ZBIT2 ZBIT1 ZBIT0 R/W Z
084H YBIT7 YBIT6 YBIT5 YBIT4 YBIT3 YBIT2 YBIT1 YBIT0 R/W Y
086H NT0 NPD LVD36 LVD24 C DC Z R/W PFLAG
0AFH P4CON4 P4CON3 P4CON2 P4CON1 P4CON0 R/W P4CON
0B1H ADENB ADS EOC GCHS CHS2 CHS1 CHS0 R/W ADM
0B2H ADB11 ADB10 ADB9 ADB8 ADB7 ADB6 ADB5 ADB4 R ADB
0B3H ADCKS1 ADCKS0 ADB3 ADB2 ADB1 ADB0 R/W ADR
0B8H P07M P06M P05M P04M P02M P01M P00M R/W P0M
0BFH P00G1 P00G0 R/W PEDGE
0C4H P44M P43M P42M P41M P40M R/W P4M
0C5H P54M P53M P52M P51M P50M R/W P5M
0C8H ADCIRQ TC0IRQ T0IRQ P00IRQ R/W INTRQ
0C9H ADCIEN TC0IEN T0IEN P00IEN R/W INTEN
0CAH CPUM1 CPUM0 CLKMD STPHX R/W OSCM
0CCH WDTR7 WDTR6 WDTR5 WDTR4 WDTR3 WDTR2 WDTR1 WDTR0 W WDTR
0CDH TC0R7 TC0R6 TC0R5 TC0R4 TC0R3 TC0R2 TC0R1 TC0R0 W TC0R
0CEH PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 R/W PCL
0CFH PC10 PC9 PC8 R/W PCH
0D0H P07 P06 P05 P04 P03 P02 P01 P00 R/W P0
0D4H P44 P43 P42 P41 P40 R/W P4
0D5H P54 P53 P52 P51 P50 R/W P5
0D8H T0ENB T0rate2 T0rate1 T0rate0 R/W T0M
0DAH TC0ENB TC0rate2 TC0rate1 TC0rate0 TC0CKS ALOAD0 TC0OUT PWM0OUT R/W TC0M
0DBH TC0C7 TC0C6 TC0C5 TC0C4 TC0C3 TC0C2 TC0C1 TC0C0 R/W TC0C
0DCH BZEN BZrate1 BZrate0 R/W BZM
0DFH GIE STKPB2 STKPB1 STKPB0 R/W STKP
0E0H P07R P06R P05R P04R P02R P01R P00R W P0UR
0E4H P44R P43R P42R P41R P40R W P4UR
0E5H P54R P53R P52R P51R P50R W P5UR
0E7H @YZ7 @YZ6 @YZ5 @YZ4 @YZ3 @YZ2 @YZ1 @YZ0 R/W @YZ
0F0H S7PC7 S7PC6 S7PC5 S7PC4 S7PC3 S7PC2 S7PC1 S7PC0 R/W STK7L
0F1H S7PC10 S7PC9 S7PC8 R/W STK7H
0F2H S6PC7 S6PC6 S6PC5 S6PC4 S6PC3 S6PC2 S6PC1 S6PC0 R/W STK6L
0F3H S6PC10 S6PC9 S6PC8 R/W STK6H
0F4H S5PC7 S5PC6 S5PC5 S5PC4 S5PC3 S5PC2 S5PC1 S5PC0 R/W STK5L
0F5H S5PC10 S5PC9 S5PC8 R/W STK5H
0F6H S4PC7 S4PC6 S4PC5 S4PC4 S4PC3 S4PC2 S4PC1 S4PC0 R/W STK4L
0F7H S4PC10 S4PC9 S4PC8 R/W STK4H
0F8H S3PC7 S3PC6 S3PC5 S3PC4 S3PC3 S3PC2 S3PC1 S3PC0 R/W STK3L
0F9H S3PC10 S3PC9 S3PC8 R/W STK3H
0FAH S2PC7 S2PC6 S2PC5 S2PC4 S2PC3 S2PC2 S2PC1 S2PC0 R/W STK2L
0FBH S2PC10 S2PC9 S2PC8 R/W STK2H
0FCH S1PC7 S1PC6 S1PC5 S1PC4 S1PC3 S1PC2 S1PC1 S1PC0 R/W STK1L
0FDH S1PC10 S1PC9 S1PC8 R/W STK1H
0FEH S0PC7 S0PC6 S0PC5 S0PC4 S0PC3 S0PC2 S0PC1 S0PC0 R/W STK0L
0FFH S0PC10 S0PC9 S0PC8 R/W STK0H
注:
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 R/W
1. 所有寄存器名都已在 SN8ASM 编译器中做了宣告;
2. 在 SN8ASM 编译器中,对寄存器的位进行操作,必须以“F”开头(如:B0BCLR FT0IEN);
3. 指令“b0bset”、“b0bclr”、“bset”、“bclr”只能用于可读写的(R/W)寄存器。
备注
SONiX TECHNOLOGY CO., LTD Page 17 Version 1.2
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg12.png)
SN8P2722
8-Bit Micro-Controller
2.1.5.4 累加器
8 位数据寄存器 ACC 用来执行 ALU 与数据存储器之间数据的传送操作。如果操作结果为零(Z)或有进位产生(C
或 DC),程序状态寄存器 PFLAG 中相应位会发生变化。
ACC 并不在 RAM 中,因此在立即寻址模式中不能用“B0MOV”指令对其进行读写。
¾ 例:读/写 ACC。
; 数据写入 ACC。
MOV A, #0FH
; 读取 ACC 中的数据并存入 BUF。
MOV BUF, A
B0MOV BUF, A
; BUF 中的数据写入 ACC。
MOV A, BUF
B0MOV A, BUF
系统执行中断操作时,ACC 和 PFLAG 中的数据不会自动存储,用户需通过程序将中断入口处的 ACC 和 PFLAG 中
的数据送入存储器进行保存。可通过“PUSH”和“POP”指令对 ACC 和 PFLAG 等系统寄存器进行存储及恢复。
¾ 例:ACC 和工作寄存器中断保护操作。
INT_SERVICE:
PUSH
… .
…
POP
RETI
; 保存 PFLAG 和 ACC。
; 恢复 ACC 和 PFLAG。
; 退出中断。
SONiX TECHNOLOGY CO., LTD Page 18 Version 1.2
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg13.png)
SN8P2722
8-Bit Micro-Controller
2.1.5.5 程序状态寄存器 PFLAG
寄存器 PFLAG 中包含 ALU 运算状态信息、系统复位状态信息和 LVD 检测信息,其中,位 NT0 和 NPD 显示系统复
位状态信息,包括上电复位、LVD 复位、外部复位和看门狗复位;位 C、DC 和 Z 显示 ALU 的运算信息。位 LVD24 和
LVD36 显示了单片机供电电压状况。
086H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
PFLAG
读/写 R/W R/W R R - R/W R/W R/W
复位后 X X 0 0 - 0 0 0
Bit [7:6] NT0, NPD:复位状态标志。
Bit 5 LVD36:3.6V LVD 工作电压标志, LVD 编译选项为 LVD_H 时有效。
Bit 4 LVD24:2.4V LVD 工作电压标志,LVD 编译选项为 LVD_M 时有效。
Bit 2 C:进位标志。
1 = 加法运算后有进位、减法运算没有借位发生或移位后移出逻辑“1”或比较运算的结果 ≥ 0;
0 = 加法运算后没有进位、减法运算有借位发生或移位后移出逻辑“0”或比较运算的结果 < 0。
Bit 1 DC:辅助进位标志。
Bit 0 Z:零标志。
注:关于标志位 C、DC 和 Z 的更多信息请参阅指令集相关内容。
NT0 NPD LVD36 LVD24 - C DC Z
NT0 NPD
0 0
0 1
1 0
1 1
复位状态
看门狗复位
保留
LVD 复位
外部复位
0 =系统工作电压 VDD 超过 3.6V,低电压检测器没有工作;
1 =系统工作电压 VDD 低于 3.6V,说明此时低电压检测器已处于监控状态。
0 =系统工作电压 VDD 超过 2.4V,低电压检测器没有工作;
1 =系统工作电压 VDD 低于 2.4V,说明此时低电压检测器已处于监控状态。
1 = 加法运算时低四位有进位,或减法运算后没有向高四位借位;
0 = 加法运算时低四位没有进位,或减法运算后有向高四位借位。
1 = 算术/逻辑/分支运算的结果为零;
0 = 算术/逻辑
/分支运算的结果非零。
SONiX TECHNOLOGY CO., LTD Page 19 Version 1.2
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg14.png)
SN8P2722
8-Bit Micro-Controller
2.1.5.6 程序计数器 PC
程序计数器 PC 是一个 11 位二进制程序地址寄存器,分高 3 位和低 8 位。专门用来存放下一条需要执行指令的内存
地址。通常,程序计数器会随程序中指令的执行自动增加。
若程序执行 CALL 和 JMP 指令时,PC 指向特定的地址。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
PC
复位后 - - - - - 0 0 0 0 0 0 0 0 0 0 0
PCH PCL
) 单地址跳转
在 SONiX 单片机里面,有 9 条指令(CMPRS、INCS、INCMS、DECS、DECMS、BTS0、BTS1、B0BTS0 和 B0BTS1)
可完成单地址跳转功能。如果这些指令执行结果为真,那么 PC 值加 2 以跳过下一条指令。
如果位检测为真,则跳过下一条指令。
JMP C0STEP
…
C0STEP: NOP
B0MOV A, BUF0 ;
JMP C1STEP
…
C1STEP: NOP
如果 ACC 等于指定的立即数则 PC 值加 2,跳过下一条指令。
JMP C0STEP
…
C0STEP: NOP
执行加 1 指令后,结果为零时,PC 的值加 2,跳过下一条指令。
INCS:
JMP C0STEP ;
…
C0STEP: NOP
INCMS:
JMP C0STEP ;
…
C0STEP: NOP
执行减 1 指令后,结果为零时,PC 的值加 2,跳过下一条指令。
DECS:
JMP C0STEP ;
…
C0STEP: NOP
DECMS:
JMP C0STEP ;
…
C0STEP: NOP
- - - - - PC10 PC9 PC8 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
B0BTS1
B0BTS0
CMPRS
INCS
INCMS
DECS
DECMS
FC
FZ
A, #12H
BUF0
BUF0
BUF0
BUF0
; 若 Carry_flag = 1,跳过下一条指令。
; 否则跳到 C0STEP。
; 若 Zero flag = 0,跳过下一条指令。
; 否则跳到 C1STEP。
; 若 ACC = 12H,跳过下一条指令。
; 否则跳到 C0STEP。
SONiX TECHNOLOGY CO., LTD Page 20 Version 1.2
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg15.png)
SN8P2722
8-Bit Micro-Controller
) 多地址跳转
执行 JMP 或 ADD M,A(M=PCL)指令可实现多地址跳转。执行 ADD M, A、ADC M, A 或 B0ADD M, A 后,若 PCL
溢出,PCH 会自动进位。对于跳转表及其它应用,用户可以通过上述 3 条指令计算 PC 的值而不需要担心 PCL 溢出的问
题。
注:PCH 仅支持 PC 的递增运算而不支持递减运算。当 PCL+ACC 执行完 PCL 有进位时,PCH 会自动加 1;但执行 PCL-ACC
有借位发生,PCH 的值会保持不变。
¾ 例:PC = 0323H(PCH = 03H,PCL = 23H)。
; PC = 0323H
MOV A, #28H
B0MOV PCL, A
…
; PC = 0328H
MOV A, #00H
B0MOV PCL, A
…
¾ 例:PC = 0323H(PCH = 03H,PCL = 23H)。
; PC = 0323H
B0ADD PCL, A
JMP A0POINT
JMP A1POINT
JMP A2POINT
JMP A3POINT
…
…
; 跳到地址 0328H。
; 跳到地址 0300H。
; PCL = PCL + ACC,PCH 的值不变。
; ACC = 0,跳到 A0POINT。
; ACC = 1,跳到 A1POINT。
; ACC = 2,跳到 A2POINT。
; ACC = 3,跳到 A3POINT。
SONiX TECHNOLOGY CO., LTD Page 21 Version 1.2
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg16.png)
SN8P2722
8-Bit Micro-Controller
2.1.5.7 Y,Z 寄存器
寄存器 Y 和 Z 都是 8 位缓存器,主要用途如下:
z 普通工作寄存器;
z RAM 数据寻址指针@YZ;
z 配合指令 MOVC 对 ROM 数据进行查表。
084H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Y
读/写 R/W R/W R/W R/W R/W R/W R/W R/W
复位后 X X X X X X X X
083H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Z
读/写 R/W R/W R/W R/W R/W R/W R/W R/W
复位后 X X X X X X X X
¾ 例:用 Y、Z 作为数据指针,访问 bank0 中 025H 处的内容。
B0MOV Y, #00H
B0MOV Z, #25H
B0MOV A, @YZ
¾ 例:利用数据指针@YZ 对 RAM 数据清零。
B0MOV Y, #0
B0MOV Z, #7FH
CLR_YZ_BUF:
CLR @YZ
DECMS Z ;
JMP CLR_YZ_BUF
CLR @YZ
END_CLR: ;
…
2.1.5.8 R 寄存器
8 位缓存器 R 主要有以下两个功能:
z 作为工作寄存器使用;
z 存储执行查表指令后的高字节数据。
(执行 MOVC 指令,指定 ROM 单元的高字节数据会被存入 R 寄存器而低字节数据则存入 ACC。)
082H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
R
读/写 R/W R/W R/W R/W R/W R/W R/W R/W
复位后 X X X X X X X X
YBIT7 YBIT6 YBIT5 YBIT4 YBIT3 YBIT2 YBIT1 YBIT0
ZBIT7 ZBIT6 ZBIT5 ZBIT4 ZBIT3 ZBIT2 ZBIT1 ZBIT0
; Y 指向 RAM bank 0。
; Z 指向 25H。
; 数据送入 ACC。
; Y = 0,指向 bank 0。
; Z = 7FH,RAM 区的最后单元。
; @YZ 清零。
; 不为零。
RBIT7 RBIT6 RBIT5 RBIT4 RBIT3 RBIT2 RBIT1 RBIT0
SONiX TECHNOLOGY CO., LTD Page 22 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg17.png)
SN8P2722
8-Bit Micro-Controller
2.2 寻址模式
2.2.1 立即寻址
将立即数送入 ACC 或指定的 RAM 单元。
¾ 例:立即数 12H 送入 ACC。
MOV A, #12H
¾ 例:立即数 12H 送入寄存器 R。
B0MOV R, #12H
注:立即数寻址中,指定的 RAM 单元必须是 80H~87H 的工作寄存器。
2.2.2 直接寻址
通过 ACC 对 RAM 单元数据进行操作。
¾ 例:地址 12H 处的内容送入 ACC。
B0MOV A, 12H
¾ 例:ACC 中数据写入 RAM 的 12H 单元。
B0MOV 12H, A
2.2.3 间接寻址
通过指针寄存器(Y/Z)访问 RAM 数据。
¾ 例:用 @YZ 实现间接寻址。
B0MOV Y, #0
B0MOV Z, #12H
B0MOV A, @YZ
; Y 清零以寻址 RAM bank 0。
; 设定寄存器地址。
SONiX TECHNOLOGY CO., LTD Page 23 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg18.png)
SN8P2722
8-Bit Micro-Controller
2.3 堆栈
2.3.1 概述
SN8P2722 的堆栈缓存器共有 8 层,程序进入中断或执行 CALL 指令时,用来存储程序计数器 PC 的值。寄存器 STKP
为堆栈指针,指向堆栈缓存器顶层,STKnH 和 STKnL 分别是各堆栈缓存器高、低字节。
RET /
RETI
CALL /
中断
PCH
PCL
堆栈层数
STKP - 1STKP + 1
STKP = 7
STKP = 6
STKP = 5
STKP
STKP = 4
STKP = 3
STKP = 2
STKP = 1
STKP = 0
堆栈缓存器高
字节
STK7H
STK6H
STK5H
STKP
STK4H
STK3H
STK2H
STK1H
STK0H
堆栈缓存器低
字节
STK7L
STK6L
STK5L
STK4L
STK3L
STK2L
STK1L
STK0L
SONiX TECHNOLOGY CO., LTD Page 24 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg19.png)
SN8P2722
8-Bit Micro-Controller
2.3.2 堆栈寄存器
堆栈指针 STKP 是一个 3 位寄存器,存放被访问的堆栈单元地址,11 位数据存储器 STKnH 和 STKnL 用于暂存堆栈
数据。以上寄存器都位于 bank 0。
使用入栈指令 PUSH 和出栈指令 POP 可对堆栈缓存器进行操作。堆栈操作遵循后进先出(LIFO)的原则,入栈时堆
栈指针 STKP 的值减 1,出栈时 STKP 的值加 1,这样,STKP 总是指向堆栈缓存器顶层单元。
系统进入中断或执行 CALL 指令之前,程序计数器 PC 的值被存入堆栈缓存器中进行入栈保护。
0DFH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
STKP
读/写 R/W - - - - R/W R/W R/W
复位后 0 - - - - 1 1 1
Bit[2:0] STKPBn:堆栈指针(n = 0 ~ 2)。
Bit 7 GIE:全局中断控制位。
¾ 例:系统复位时,堆栈指针寄存器内容为默认值,但强烈建议在程序初始部分重新设定,如下面所示:
0F0H~0FFH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
STKnH
读/写 - - - - - R/W R/W R/W
复位后 - - - - - 0 0 0
0F0H~0FFH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
STKnL
读/写 R/W R/W R/W R/W R/W R/W R/W R/W
复位后 0 0 0 0 0 0 0 0
STKn = STKnH,STKnL(n = 7 ~ 0)。
GIE - - - - STKPB2 STKPB1 STKPB0
0 = 禁止;
1 = 使能。
MOV A, #00000111B
B0MOV STKP, A
- - - - - SnPC10 SnPC9 SnPC8
SnPC7 SnPC6 SnPC5 SnPC4 SnPC3 SnPC2 SnPC1 SnPC0
SONiX TECHNOLOGY CO., LTD Page 25 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg1a.png)
SN8P2722
8-Bit Micro-Controller
2.3.3 堆栈操作举例
执行程序调用指令 CALL 和响应中断服务时,堆栈指针 STKP 的值减 1,指针指向下一个堆栈缓存器。同时,对程序
计数器 PC 的内容进行入栈保存。
堆栈层数
0 1 1 1 Free Free 1 1 1 0 STK0H STK0L 2 1 0 1 STK1H STK1L 3 1 0 0 STK2H STK2L 4 0 1 1 STK3H STK3L 5 0 1 0 STK4H STK4L 6 0 0 1 STK5H STK5L 7 0 0 0 STK6H STK6L 8 1 1 1 STK7H STK7L -
> 8 1 1 0 - - 堆栈溢出
STKPB2 STKPB1 STKPB0 高字节 低字节
STKP
对应每个入栈操作,都有一个出栈操作来恢复程序计数器PC的值。RETI指令用于中断服务程序中,RET用于子程序
调用。出栈时,STKP加1并指向下一个空闲堆栈缓存器。堆栈恢复操作如下表所示:
堆栈层数
8 1 1 1 STK7H STK7L 7 0 0 0 STK6H STK6L 6 0 0 1 STK5H STK5L 5 0 1 0 STK4H STK4L 4 0 1 1 STK3H STK3L 3 1 0 0 STK2H STK2L 2 1 0 1 STK1H STK1L 1 1 1 0 STK0H STK0L 0 1 1 1 Free Free -
STKPB2 STKPB1 STKPB0 高字节 低字节
STKP
堆栈缓存器
堆栈缓存器
说明
说明
SONiX TECHNOLOGY CO., LTD Page 26 Version 1.0
![](/html/63/6339/63399e9aed018b7401fef89ed45abc684ad581c89412740b3706e46bc83bb920/bg1b.png)
SN8P2722
8-Bit Micro-Controller
3
3
3
复位
3.1 概述
SN8P2722 有以下几种复位方式:
z 上电复位;
z 看门狗复位;
z 掉电复位;
z 外部复位(仅在外部复位引脚处于使能状态)。
上述任一种复位发生时,所有的系统寄存器恢复默认状态,程序停止运行,同时程序计数器 PC 清零。复位结束后,
系统从向量 0000H 处重新开始运行。PFLAG 寄存器的 NT0 和 NPD 两个标志位能够给出系统复位状态的信息。用户可以
编程控制 NT0 和 NPD,从而控制系统的运行路径。
086H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
PFLAG
读/写 R/W R/W R R - R/W R/W R/W
复位后 X X 0 0 - 0 0 0
Bit [7:6] NT0, NPD:复位状态标志。
NT0 NPD
任何一种复位情况都需要一定的响应时间,系统提供完善的复位流程以保证复位动作的顺利进行。对于不同类型的振
荡器,完成复位所需要的时间也不同。因此,VDD 的上升速度和不同晶振的起振时间都不固定。RC 振荡器的起振时间最
短,晶体振荡器的起振时间则较长。在用户终端使用的过程中,应注意考虑主机对上电复位时间的要求。
NT0 NPD LVD36 LVD24 - C DC Z
复位情况 说明
0 0
0 1
1 0
1 1
看门狗复位 看门狗溢出
保留
上电及 LVD 复位 电源电压低于 LVD 检测值
外部复位 外部复位引脚检测到低电平
-
上电
外部复位
看门狗复位
系统状态
VDD
VSS
VDD
VSS
看门狗定时器正常工作
看门狗定时器停止计时
系统正常运行
系统停止工作
低电压检测
上电延时
外部复位低电压检测
外部复位高电压检测
看门狗溢出
看门狗复位延迟时间外部复位延迟时间
SONiX TECHNOLOGY CO., LTD Page 27 Version 1.0