![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg1.png)
SN8P1917
SN8P1917
Remote Controller 8-Bit Micro-Controller
用户参考手册
V1.2
ONNiiXX 88
SSO
SONiX 公司保留对以下所有产品在可靠性,功能和设计方面的改进作进一步说明的权利。SONiX 不承担由本手册所
涉及的产品或电路的运用和使用所引起的任何责任,SONiX 的产品不是专门设计来应用于外科植入、生命维持和任何
SONiX 产品的故障会对个体造成伤害甚至死亡的领域。如果将 SONiX 的产品应用于上述领域,即使这些是由 SONiX 在
产品设计和制造上的疏忽引起的,用户应赔偿所有费用、损失、合理的人身伤害或死亡所直接或间接产生的律师费用,并
且用户保证 SONiX 及其雇员、子公司、分支机构和销售商与上述事宜无关。
位
位
单
单
片
片
机
机
SONiX TECHNOLOGY CO., LTD Page 1 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg2.png)
版本 日期 说明
VER 1.0
VER1.1
VER1.2
2006 年 12 月 初版
2007 年 9 月 删除 P-DIP48PIN 的封装。
2008 年 3 月
2008 年 5 月 4. 修改烧录信息章节。
SN8P1917
Remote Controller 8-Bit Micro-Controller
修改记录
1. 增加单片机正印命名规则。
2. 修改电气特性。
3. 增加 LCD 电路。
SONiX TECHNOLOGY CO., LTD Page 2 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg3.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
目 录
修改记录................................................................................................................................................................................................ 2
目 录................................................................................................................................................................................................ 3
1
1
产品简介 ......................................................................................................................................................................................
1
1.1 产品性能表 .........................................................................................................................................................................6
1.2 产品资源配置改良表........................................................................................................................................................... 6
1.3 功能特性............................................................................................................................................................................. 7
1.4 系统时钟框图...................................................................................................................................................................... 8
1.5 引脚配置............................................................................................................................................................................. 9
1.6 引脚说明............................................................................................................................................................................. 9
1.7 引脚电路结构图 ................................................................................................................................................................ 10
2
2
中央处理器(CPU) ..................................................................................................................................................................
2
2.1 存储器 .............................................................................................................................................................................. 11
2.1.1 程序存储器(ROM)................................................................................................................................................... 11
2.1.2 编译选项表(CODE OPTION) .................................................................................................................................. 18
2.1.3 数据存储器(RAM) ................................................................................................................................................... 18
2.1.4 系统寄存器 .................................................................................................................................................................. 19
2.2 寻址模式........................................................................................................................................................................... 25
2.2.1 立即寻址...................................................................................................................................................................... 25
2.2.2 直接寻址...................................................................................................................................................................... 25
2.2.3 间接寻址...................................................................................................................................................................... 25
2.3 堆栈.................................................................................................................................................................................. 26
2.3.1 概述 ............................................................................................................................................................................. 26
2.3.2 堆栈寄存器 .................................................................................................................................................................. 27
2.3.3 堆栈操作举例............................................................................................................................................................... 28
3
3
复位 ...........................................................................................................................................................................................
3
3.1 概述.................................................................................................................................................................................. 29
3.2 上电复位........................................................................................................................................................................... 30
3.3 看门狗复位 .......................................................................................................................................................................30
3.4 掉电复位........................................................................................................................................................................... 31
3.4.1 掉电 ............................................................................................................................................................................. 31
3.4.2 系统工作电压............................................................................................................................................................... 31
3.4.3 掉电复位性能改进........................................................................................................................................................ 32
3.5 外部复位........................................................................................................................................................................... 33
3.6 外部复位电路.................................................................................................................................................................... 34
3.6.1 基本RC复位电路.......................................................................................................................................................... 34
3.6.2 二极管及RC复位电路 .................................................................................................................................................. 34
3.6.3 稳压二极管复位电路 .................................................................................................................................................... 35
3.6.4 电压偏移复位电路........................................................................................................................................................ 35
3.6.5 外部IC复位 .................................................................................................................................................................. 36
4
4
系统时钟 ....................................................................................................................................................................................
4
4.1 概述.................................................................................................................................................................................. 37
4.2 时钟框图........................................................................................................................................................................... 37
4.3 OSCM振荡器.................................................................................................................................................................... 38
4.4 系统高速时钟.................................................................................................................................................................... 39
4.4.1 内部高速RC................................................................................................................................................................. 39
4.4.2 外部高速时钟............................................................................................................................................................... 40
4.5 系统低速时钟.................................................................................................................................................................... 41
4.5.1 系统时钟测试............................................................................................................................................................... 41
5
5
系统工作模式 .............................................................................................................................................................................
5
5.1 概述.................................................................................................................................................................................. 42
5.2 系统模式切换.................................................................................................................................................................... 43
5.3 唤醒时间........................................................................................................................................................................... 43
5.3.1 概述 ............................................................................................................................................................................. 43
5.3.2 唤醒时间...................................................................................................................................................................... 43
6
6
中断 ...........................................................................................................................................................................................
6
6.1 概述.................................................................................................................................................................................. 44
6.2 中断请求使能寄存器INTEN .............................................................................................................................................. 44
6.3 中断请求寄存器INTRQ..................................................................................................................................................... 45
6.4 GIE全局中断..................................................................................................................................................................... 45
6.5 PUSH, POP处理............................................................................................................................................................... 46
6.6 INT0 (P0.0) 中断 ..............................................................................................................................................................47
6.7 T0 中断............................................................................................................................................................................. 48
11
29
37
42
44
6
SONiX TECHNOLOGY CO., LTD Page 3 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg4.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
6.8 多中断操作举例 ................................................................................................................................................................ 49
7
7
I/O口 ..........................................................................................................................................................................................
7
7.1 I/O口模式 ......................................................................................................................................................................... 50
7.2 I/O口上拉电阻寄存器........................................................................................................................................................ 50
7.3 I/O口数据寄存器............................................................................................................................................................... 51
8
8
定时器........................................................................................................................................................................................
8
8.1 看门狗定时器(WDT) .................................................................................................................................................... 52
8.2 定时/计数器T0.................................................................................................................................................................. 53
8.2.1 概述 ............................................................................................................................................................................. 53
8.2.2 T0M模式寄存器 ........................................................................................................................................................... 53
8.2.3 T0C计数寄存器............................................................................................................................................................ 54
8.2.4 T0 操作流程................................................................................................................................................................. 54
9
9
LCD驱动 ....................................................................................................................................................................................
9
9.1 LCDM1 寄存器 ................................................................................................................................................................. 55
9.2 LCD时序........................................................................................................................................................................... 56
9.3 LCD RAM地址 .................................................................................................................................................................. 58
9.4 LCD电路........................................................................................................................................................................... 59
0
1
0
1
CHARGE-PUMP,PGIA和ADC ................................................................................................................................................
0
1
10.1 概述.................................................................................................................................................................................. 60
10.2 模拟信号输入....................................................................................................................................................................60
10.3 CHARGE PUMP / REGULATOR (CPR) .................................................................................................................................... 61
10.3.1 CPM-CHARGE PUMP模式寄存器.......................................................................................................................... 61
10.3.2 CPCKS-Charge Pump时钟寄存器 .......................................................................................................................... 63
10.4 PGIA –可编程增益放大器 ................................................................................................................................................. 65
10.4.1 AMPM- 放大器工作模式寄存器 .............................................................................................................................. 65
10.4.2 AMPCKS- PGIA时钟选择寄存器............................................................................................................................. 66
10.4.3 AMPCHS-PGIA通道选择 ........................................................................................................................................ 67
10.4.4 温度传感器(TS).................................................................................................................................................. 68
10.5 16 位ADC ......................................................................................................................................................................... 70
10.5.1 ADCM- ADC工作模式寄存器 .................................................................................................................................. 70
10.5.2 ADCKS- ADC时钟寄存器........................................................................................................................................ 72
10.5.3 ADCDL- ADC低字节数据寄存器 ............................................................................................................................. 73
10.5.4 ADCDH- ADC高字节数据寄存器 ............................................................................................................................ 73
10.5.5 DFM-ADC数字滤波模式寄存器............................................................................................................................... 74
10.5.6 LBTM-电池低电压检测寄存器 ................................................................................................................................. 76
10.5.7 模拟部分电路设置和应用 ........................................................................................................................................ 77
1
1
1
1
应用电路 ...............................................................................................................................................................................
1
1
11.1 电子秤(LOAD CELL)应用电路......................................................................................................................................... 78
11.2 温度计应用电路................................................................................................................................................................ 79
2
1
2
1
指令集 ...................................................................................................................................................................................
2
1
3
1
3
1
开发工具 ...............................................................................................................................................................................
3
1
13.1 开发工具版本....................................................................................................................................................................81
13.1.1 ICE(在线仿真器) ................................................................................................................................................ 81
13.1.2 OTP烧录器 ............................................................................................................................................................. 81
13.1.3 集成开发环境(IDE)............................................................................................................................................. 81
4
1
4
1
OTP烧录信息.............................................................................................................................................................................
4
1
14.1 烧录转接板信息................................................................................................................................................................ 82
14.2 SN8P1917 烧录引脚信息 ................................................................................................................................................. 84
5
1
5
1
电气特性 ...............................................................................................................................................................................
5
1
15.1 极限参数........................................................................................................................................................................... 85
15.2 电气特性........................................................................................................................................................................... 85
6
1
6
1
SN8P1907 升级为SN8P1917 注意事项 .....................................................................................................................................
6
1
16.1 性能改进描述....................................................................................................................................................................87
16.1.1 脚位图..................................................................................................................................................................... 87
16.1.2 改良规格对照表 ...................................................................................................................................................... 89
16.2 升级注意实现....................................................................................................................................................................90
16.2.1 硬件 ........................................................................................................................................................................90
16.2.2 开发工具要求.......................................................................................................................................................... 91
16.2.3 文件需求 ................................................................................................................................................................. 91
16.2.4 烧录方式不同.......................................................................................................................................................... 91
16.2.5 Code option的差异 ................................................................................................................................................. 91
16.2.6 软件初始化设定差异 ...............................................................................................................................................92
16.3 其它.................................................................................................................................................................................. 94
16.3.1 其它应该注意的事项 ...............................................................................................................................................94
50
52
55
60
78
80
81
82
85
87
SONiX TECHNOLOGY CO., LTD Page 4 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg5.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
16.3.2 滑动平均算法原理................................................................................................................................................... 94
16.3.3 数据稳定的判断方法 ...............................................................................................................................................94
16.3.4 消除电磁干扰的一般方法 ........................................................................................................................................ 94
7
1
7
1
封装.......................................................................................................................................................................................
7
1
17.1 SSOP 48 PIN.................................................................................................................................................................... 95
8
1
8
1
单片机正印命名规则..............................................................................................................................................................
8
1
18.1 概述.................................................................................................................................................................................. 96
18.2 单片机型号说明................................................................................................................................................................ 96
18.3 命名举例........................................................................................................................................................................... 97
18.4 日期码规则....................................................................................................................................................................... 97
95
96
SONiX TECHNOLOGY CO., LTD Page 5 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg6.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
1
1
1
产品简介
1.1 产品性能表
单片机型号
SN8P1907 2K*16 128*8 8 4*12 V - - 11
SN8P1917 2K*16 128*8 8 4*12 V - - 13
ROM RAM
堆栈
LCD
定时器
T0 TC0 TC1
表 1‑ 1 SN8P1917 性能列表
I/O ADC
16 位
16 位
PWM
Buzzer
- - 5 SSOP48
- - 5 SSOP48
SIO
唤醒功能
引脚数目
1.2 产品资源配置改良表
从 SN8P1907 升级到 SN8P1917
项目
PGIA 增益设置 1x,12.5x,50x,100x,200x 1x,16x,32x,64x,128x
PGIA 温度漂移 良好 一般
AVE+电压 3.0V 或 1.5V
内置参考电压 V(R+, R-) 0.8V 或 0.4V
电池检测方法 通过比较器或者 ADC
温度传感器 内置 外置
ACM (1.2V)电压 当有外灌电流时,电压不会变化 当有外灌电流时,电压发生变化
Charge pump 时钟频率(CPCKS) 4 位 2位
Chopper 时钟频率 (AMPCKS) 3 位 2位
Charge pump Regulator 能否在低速模式下工作 能 不能
高速模式中的功耗 少 多
低速模式中的功耗 少 多
LCD 偏压 1/3 或 1/2
内部 16M RC 振荡器 有 无
P2 [1:0] I/O
OTP 烧录方式 串行 并行
表1‑ 2 SN8P1917 资源配置改良表
SN8P1917 SN8P1907
当 Fosc=IHRC 时有效 无
封装形式
3.0V
0.8V
ADC
1/2
SONiX TECHNOLOGY CO., LTD Page 6 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg7.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
1.3 功能特性
◆ 存储器配置 ◆ 2 个中断源
OTP ROM 空间:2K * 16 位。
RAM 空间:128 字节(bank 0)。
8 层堆栈缓存器。
LCD RAM:4*12 位。 ◆ 单电源输入:2.4V ~5.5V
◆ I/O 引脚配置 ◆ 内置看门狗定时器
单向输入端口:P0、P4。 ◆ 内置具有 3.8V 电压输出和 10mA 驱动电流的 charge-pump
双向输入输出端口:P1、P2。
单向输出端口:P5。
具有唤醒功能的端口:P0、P1。 ◆ 内置 3.0V/1.5V 电压输出的 regulator
内置上拉电阻的端口:P0、P1、P2、P4。 ◆ 内置参考电压 1.2V 的 Band gap,用来监控电池电压
外部中断引脚:P0。 ◆ 内置电压比较器
◆ 强大的指令系统 ◆ 内置 ADC 参考电压 V(R+,R-)=0.8V/0.4V
一条指令需要 4 个时钟周期。
所有的指令均为一个字长。 ◆ 内置温度传感器
绝大部分指令只需要一个周期。 ◆ LCD 驱动
指令的最长周期为 2 个指令周期。
JMP 指令可在整个 ROM 区执行。
查表指令(MOVC)可寻址整个 ROM 区。
◆ 可编程增益放大器
增益可选选项:1x/12.5x/50x/100x/200x
◆ 16位 Delta-Sigma ADC,具有 14 位精度
2 个 ADC 信道配置:
1 个全差分通道。
2 个单端输入通道。 ◆ 封装
1 个内部中断:T0。
1 个外部中断:INT0。
regulator
1/3 或 1/2 偏压。
4 common * 12 segment。
◆ 双时钟系统提供 3 种工作模式
外部高速时钟:RC 模式,高达 10MHz
外部高速时钟:晶体模式,高达 8 MHz。
普通模式:高、低速时钟同时运行。
低速模式:仅低速时钟运行。
睡眠模式:高、低速时钟均停止运行。
SSOP48。
。
SONiX TECHNOLOGY CO., LTD Page 7 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg8.png)
1.4 系统时钟框图
PC
SN8P1917
Remote Controller 8-Bit Micro-Controller
内部高速RC
振荡时钟
IR
FLAGS
ACC
中断控制
ALU
OTP
ROM
外部高速振
荡时钟
定时器&计数器
内部低速RC
时序产生器
RAM
系统寄存器
振荡时钟
LVD
(低电压检测)
看门狗定时器
Charge Pump
Regulator
PGIA
比较器
16位ADC
内部参考源
电池检测的内
部ADC通道
AVDDCP
AVDDR
AVE+
AI+/AI-
LBTIN2/1
R+/R-
P0 P5 P4
P1 P2
SONiX TECHNOLOGY CO., LTD Page 8 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg9.png)
1.5 引脚配置
SN8P1917
Remote Controller 8-Bit Micro-Controller
SEG4 1 48 SEG5
SEG3 2 47 SEG6
SEG2 3 46 SEG7
SEG1 4 45 SEG8
SEG0 5 44 SEG9
COM3 6 43 SEG10
COM2 7 42 SEG11
COM1 8 41 VPP/RST
COM0 9 40 VSS
VLCD 10 39 P5.2
R+ 11 38 P5.1
R- 12 37 P5.0
X+ 13 36 P4.2/LBTIN2
X- 14 35 P4.1/LBTIN1
AI+ 15 34 P4.0
AI- 16 33 P1.3
AVSS 17 32 P1.2
ACM 18 31 P1.1
ADDR 19 30 P1.0
AVE+ 20 29 P0.0/INT0
AVDDCP 21 28 VDD
C+ 22 27 XOUT/P2.1
VDD 23 26 XIN/P2.0
C- 24 25 VSS
1.6 引脚说明
引脚名称 类型 说明
VDD, VSS, AVSS P
VLCD P
AVDDR P
AVE+ P
ACM P
AVDDCP P
R+ AI
R- AI
X+ AI
X- AI
AI+ AI
AI- AI
C+ A
C- A
VPP/ RST P, I
XIN, XOUT I, O
P0.0 / INT0 I
P1 [3:0] I/O
P2 [1:0] I/O
P4 [2:0] I
P5 [2:0] O
LBTIN1/2 I I
COM [3:0] O
SEG0 ~ SEG11 O
电源输入端。
LCD 电源输入端。
Regulator 电源输出引脚,V=3.8V。
传感器的 Regulator 输出 = 3.0V/1.5V,最大输出电流为 10 mA。
Band Gap 电源输出为 1.2V。
Charge Pump 电压输出(和 VDD 之间连接一个 2.2uF 或者更大的电容)。
参考源的正极输入端。
参考源的负极输入端。
ADC 差分的正极输入端,和 X-引脚之间连接一个 0.01uF 的电容。
ADC 差分的负极输入端。
模拟输入通道的正极输入端。
模拟输入通道的负极输入端。
charge pump regulator 电极电容的正极。
charge pump regulator 电极电容的负极。
OTP ROM 的烧录引脚。
系统复位输入端,施密特触发,低电平有效,通常保持高电平。
振荡信号的输入输出引脚。
P 0.0 和 INT0 共用引脚,施密特触发,内置上拉电阻。
双向输入输出引脚,具有唤醒功能,内置上拉电阻。
双向输入输出引脚,内置上拉电阻,和 XIN/XOUT 引脚共用。
单向输入引脚,内置上拉电阻。
单向输出引脚。
电池低电压检测输入引脚,和 P4.1、P4.2 引脚共用。
COM0~COM3 LCD 驱动 COM 端。
LCD 驱动 segment 引脚。
SONiX TECHNOLOGY CO., LTD Page 9 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bga.png)
1.7 引脚电路结构图
P0
、P4:
Pull-Up
SN8P1917
Remote Controller 8-Bit Micro-Controller
P5
P1
Pin
:
:
Input Bus
Pin
Output
Latch
Output Bus
Pull-Up
PnM
PnM, PnUR
Input Bus
Pin
P2
:
Pin
Oscillator
Code Option
PnM
Pull-Up
PnM, PnUR
Output
Latch
Output
Latch
Output Bus
Input Bus
Output Bus
Int. Osc.
SONiX TECHNOLOGY CO., LTD Page 10 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bgb.png)
2
2
2
中央处理器(CPU)
2.1 存储器
2.1.1 程序存储器(ROM)
) ROM
2.1.1.1 复位向量(0000H)
:
2K
0000H
0001H
0002H
0003H
0004H
0005H
0006H
0007H
0008H
0009H
.
.
000FH
0010H
0011H
.
.
7FEH
7FFH
具有一个字长的系统复位向量(0000H)。
ROM
复位向量 用户复位向量
通用存储区
系统保留
中断向量 用户中断向量
通用存储区
系统保留
用户程序开始
用户程序
用户程序结束
SN8P1917
Remote Controller 8-Bit Micro-Controller
) 上电复位;
) 看门狗复位;
) 外部复位。
发生上述任一种复位后,程序将从 0000H 处重新开始执行,系统寄存器也都将恢复为默认值。下面一段程序演示了
如何定义 ROM 中的复位向量。
¾ 例:定义复位向量。
ORG 0 ;
JMP START
…
ORG 10H
START:
…
…
ENDP
SONiX TECHNOLOGY CO., LTD Page 11 Version1.2
; 跳至用户程序。
; 0010H,用户程序起始地址。
; 用户程序。
; 程序结束。
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bgc.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
2.1.1.2 中断向量(0008H)
中断向量地址为 0008H。一旦有中断响应,程序计数器 PC 的当前值就会存入堆栈缓存器并跳转到 0008H 开始执行
中断服务程序。0008H 处的第一条指令必须是“JMP”或“NOP”。下面的示例程序说明了如何编写中断服务程序。
注:在中断发生时,用户必须用程序保存 ACC 和 PFLAG。
¾ 例:定义中断向量,中断服务程序紧随 ORG 8 之后。
.DATA ACCBUF DS 1 ;
PFLAGBUF DS 1 ;
.CODE
ORG 0
JMP START
…
…
…
START:
…
JMP START
…
ENDP ;
ORG 8H ;
B0XCH A, ACCBUF
B0MOV A, PFLAG
B0MOV PFLAGBUF,
B0MOV A, PFLAGBUF
B0MOV PFLAG,
B0XCH A, ACCBUF
RETI
¾ 例:定义中断向量,中断服务程序位于用户程序的后面。
.DATA ACCBUF DS 1
PFLAGBUF DS 1
.CODE
ORG 0
JMP START
…
ORG 8H ;
JMP MY_IRQ
ORG 10H
START:
…
JMP START
…
MY_IRQ:
B0XCH A, ACCBUF
B0MOV A, PFLAG
B0MOV PFLAGBUF,
B0MOV A, PFLAGBUF
B0MOV PFLAG,
B0XCH A, ACCBUF
RETI
…
ENDP ;
…
; 0000H。
; 跳到用户程序。
; 保存 ACC。
; 保存 PFLAG。
; 恢复 PFLAG。
; 恢复 ACC。
; 中断返回。
; 用户程序开始。
; 用户程序。
; 用户程序结束。
; 0000H。
; 跳到用户程序。
; 跳到中断服务程序。
; 用户程序开始。
; 用户程序。
; 用户程序结束。
; 中断服务程序开始。
; 保存 ACC。
; 保存 PFLAG。
; 恢复 PFLAG。
; 恢复 ACC。
; 中断返回。
注:从上面的程序中容易得出 SONiX 的编程规则,有以下几点:
1. 地址 0000H 的“JMP”指令使程序从头开始执行;
2. 地址 0008H 是中断向量;
3. 用户的程序应该是一个循环。
SONiX TECHNOLOGY CO., LTD Page 12 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bgd.png)
SN8P1917
Remote Controller 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 13 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bge.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
下面的程序通过累加器对 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 位)数据。
SONiX TECHNOLOGY CO., LTD Page 14 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bgf.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
2.1.1.4 跳转表
跳转表能够实现多地址跳转功能。PCL 和 ACC 的值相加即可得到新的 PCL。由此得到的新的 PC 值指向一系列跳至
指令列表。
执行“ADD PCL, A”后,如果有进位发生,结果并不会影响 PCH 寄存器。用户必须检查跳转表是否跨越了 ROM 的
页边界。如果跳转表跨越了 ROM 页边界(例如从 xxFFH 到 xx00H),将跳转表移动到下一页程序存储区的顶部(xx00H)。
注:一页包含 256words。
注:在执行加法运算后,若 PCL 溢出,程序计数器 PC 并不会从 PCL 进位到 PCH。
¾ 例:跳转表。
ORG 0100H
B0ADD PCL, A
JMP A0POINT
JMP A1POINT
JMP A2POINT
JMP A3POINT
在下面的例子中,跳转表从 00FDH 开始,执行 B0ADD PCL, A 后,如果 ACC = 0 或者 1,跳转表指向正确的地址,
但如果 ACC 大于 1,因为 PCH 不能自动加一,程序就会出错。可以看到当 ACC = 2 时,PCL = 0,而 PCH 仍然保持为
0,则新的程序计数器 PC 将指向错误的地址 0000H,程序出错。因此,检查跳转表是否跨越边界(xxFFH 到 xx00H)非
常重要。良好的编程风格是将跳转表放在 ROM 的开始边界(如 0100H)。
; 跳转表从 ROM 前端开始。
; PCL = PCL + ACC,PCH 的值不会被改变。
; ACC = 0,跳至 A0POINT。
; ACC = 1,跳至 A1POINT。
; ACC = 2,跳至 A2POINT。
; ACC = 3,跳至 A3POINT。
¾ 例:如果跳转表跨越 ROM 边界,将引起程序错误。
ROM Address
…
…
…
00FDH
00FEH
00FFH
0100H
0101H
…
…
B0ADD PCL, A
JMP A0POINT
JMP A1POINT
JMP A2POINT
JMP A3POINT
; PCL = PCL + ACC,PCH 的值不会被改变。
; ACC = 0。
; ACC = 1。
; ACC = 2。 Å 跳转表跨越边界
; ACC = 3。
SONiX 提供一个宏程序以保证可靠执行跳转表功能,它将检测 ROM 边界并自动将跳转表移至适当的位置。但采用该
宏程序会占用部分 ROM 空间。
¾ 例:如果跳转表跨越 ROM 边界,将引起程序错误。
@JMP_A MACRO VAL
IF (($+1) !& 0XFF00) !!= (($+(VAL)) !& 0XFF00)
JMP ($ | 0XFF)
ORG ($ | 0XFF)
ENDIF
ADD PCL, A
ENDM
注:“VAL”为跳转表列表中列表个数。
SONiX TECHNOLOGY CO., LTD Page 15 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg10.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
¾ 例:宏“MACRO3.H”中,“@JMP_A”的应用。
B0MOV A, BUF0
@JMP_A 5
JMP A0POINT
JMP A1POINT
JMP A2POINT
JMP A3POINT
JMP A4POINT
; “BUF0”从 0 至 4。
; 列表个数为 5。
; ACC = 0,跳至 A0POINT。
; ACC = 1,跳至 A1POINT。
; ACC = 2,跳至 A2POINT。
; ACC = 3,跳至 A3POINT。
; ACC = 4,跳至 A4POINT。
如果跳转表跨越了 ROM 的边界(0FFH~100H),宏指令“@JMP_A”会调整跳转表的位置使其从 ROM 的前端开
始。
¾ 例:宏指令@JMP_A 操作。
; 编译前
ROM address
B0MOV A, BUF0
@JMP_A 5
0X00FD JMP A0POINT
0X00FE JMP A1POINT
0X00FF JMP A2POINT
0X0100 JMP A3POINT
0X0101 JMP A4POINT
; 编译后
ROM address
B0MOV A, BUF0
@JMP_A 5
0X0100 JMP A0POINT
0X0101 JMP A1POINT
0X0102 JMP A2POINT
0X0103 JMP A3POINT
0X0104 JMP A4POINT
; “BUF0”从 0 至 4。
; 列表个数为 5。
; ACC = 0,跳至 A0POINT。
; ACC = 1,跳至 A1POINT。
; ACC = 2,跳至 A2POINT。
; ACC = 3,跳至 A3POINT。
; ACC = 4,跳至 A4POINT。
; “BUF0”从 0 至 4。
; 列表个数为 5。
; ACC = 0, 跳至 A0POINT。
; ACC = 1, 跳至 A1POINT。
; ACC = 2, 跳至 A2POINT。
; ACC = 3, 跳至 A3POINT。
; ACC = 4, 跳至 A4POINT
。
SONiX TECHNOLOGY CO., LTD Page 16 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg11.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
2.1.1.5 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
B0BCLR 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 17 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg12.png)
2.1.2 编译选项表(CODE OPTION)
编译选项 内容 功能说明
高速时钟采用内部 16MHz RC 振荡器,XIN/XOUT(P2.0/P2.1)作为普通
I/O 引脚。
外部高速振荡器采用标准振荡器(如 4MHz)。
开启看门狗定时器。
关闭看门狗定时器。
ROM 代码加密。
ROM 代码不加密。
强行设置内部 16K RC 作为看门狗定时器的时钟源。
看门狗定时器在省电模式下仍然处于运行状态。
由 CPUM 寄存器控制内部 16K(@3V)RC 时钟是否工作。
使能低功耗功能。
禁止低功耗功能。
High_Clk
Watch_Dog
Security
INT_16K_RC
Low Power
注:
1. 在高干扰环境下,强烈建议设置 Watch_Dog 为“Enable”,INT_16K_RC 设置为“Always_On”;
2. Fcpu 编译选项仅对高速时钟有效,低速模式下 Fcpu = Flosc/4;
3. 在高干扰环境下,强烈建议禁止“Low Power”功能;
4. 如果使能“Low Power”功能,会增加最低工作电压;
5. 使能“Low Power”功能会减小工作电流,低速模式下除外。
IHRC
4M X’tal
Enable
Disable
Enable
Disable
Always_ON
By_CPUM
Enable
Disable
SN8P1917
Remote Controller 8-Bit Micro-Controller
2.1.3 数据存储器(RAM)
) RAM
:
128
字节
BANK 0
BANK 15
000H
07FH
080H
0FFH
0F00H
0F0BH
通用存储区 ; Bank0 的 000H~07FH(128 字节)是通用存储区
系统寄存器 ; Bank0 的 080H~0FFH(128 字节)是系统寄存器区域
Bank0 的结束区
LCD RAM
LCD Ram 的结束区
RAM
.
.
.
.
; Bank 15 存储 LCD 显示数据区域(12 字节)
;
;
SONiX TECHNOLOGY CO., LTD Page 18 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg13.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
2.1.4 系统寄存器
2.1.4.1 系统寄存器列表
0 1 2 3 4 5 6 7 8 9 A B C D E F
8 - - R Z Y - PFLAG RBANK - LCDM1 - - - - - 9 AMPM AMPCHS AMPCKS ADCM ADCKS CPM CPCKS DFM ADCDL ADCDH LBTM - - - - A - - - - - - - - - - - - - - P4CON VERFH
B - - - - - - - - - - - - - - - PEDGE
C - P1M P2M - - - - - INTRQ INTEN OSCM - - - PCL PCH
D P0 P1 P2 - P4 P5 - - T0M T0C - - - - - STKP
E - P1UR P2UR - - - - @YZ - - - - - - - F STK7L STK7H STK6L STK6H STK5L STK5H STK4L STK4H STK3L STK3H STK2L STK2H STK1L STK1H STK0L STK0H
2.1.4.2 系统寄存器说明
Y, Z =
PFLAG =
AMPM =
AMPCKS =
ADCKS =
CPCKS =
ADCDL =
PNM =
PN =
INTEN =
LCDM1 =
T0M =
T0C =
LBTM =
专用寄存器,@YZ 间接寻址寄存器,ROM 寻址寄存器
ROM 页和特殊标志寄存器
PGIA 模式寄存器
PGIA 时钟寄存器
ADC 时钟选项
Charge pump 时钟选项
ADC 低字节缓存器
PN 输入/输出模式寄存器
PN 数据缓存器
中断使能寄存器
LCD 模式寄存器
T0 模式寄存器
T0 计数寄存器
电池低电压检测器
R =
AMPCHS =
ADCM =
CPM =
DFM =
ADCDH =
PNUR =
INTRQ =
OSCM =
PCH, PCL =
STK0~STK7 =
@YZ =
STKP =
工作寄存器和 ROM 查表数据缓存器
PGIA 通道选择寄存器
ADC 模式寄存器
Charge pump 模式寄存器
数字滤波模式寄存器
ADC 高字节数据缓存器
PN 上拉电阻寄存器
中断请求寄存器
振荡器模式寄存器
程序计数器
堆栈缓存器
间接寻址寄存器
堆栈指针
SONiX TECHNOLOGY CO., LTD Page 19 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg14.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
2.1.4.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 - - - - - C DC Z R/W PFLAG
087H - - - - RBNKS3 RBNKS2 RBNKS1 RBNKS0 R/W RBANK
089H - - LCDBNK - LCDENB LCDBIAS LCDRATE LCDCLK R/W LCDM1
090H - BGRENB FDS1 FDS0 GS2 GS1 GS0 AMPENB R/W AMPM
091H - - - - - CHS2 CHS1 CHS0 R/W AMPCHS
092H - - - - - AMPCKS2 AMPCKS1 AMPCKS0 W AMPCKS
093H - - - IREFENB IRVS RVS1 RVS0 ADCENB R/W ADCM
094H ADCKS7 ADCKS6 ADCKS5 ADCKS4 ADCKS3 ADCKS2 ADCKS1 ADCKS0 W ADCKS
095H ACMENB AVDDRENB AVESEL AVENB CPSTS CPAUTO CPON CPRENB R/W CPM
096H - - - - CPCK3 CPCKS2 CPCKS1 CPCKS0 W CPCKS
097H - - - WRS0 DRDY R/W DFM
098H ADCB7 ADCB6 ADCB5 ADCB4 ADCB3 ADCB2 ADCB1 ADCB0 R ADCDL
099H ADCB15 ADCB14 ADCB13 ADCB12 ADCB11 ADCB10 ADCB9 ADCB8 R ADCDH
09AH - - - - - LBTO P41IO LBTENB R/W LBTM
0BFH PEDGEN - - P00G1 P00G0 - - - R/W PEDGE
0C1H - - - - P13M P12M P11M P10M R/W P1M
0C2H - - - - - - P21M P20M R/W P2M
0C8H - - - T0IRQ - - - P00IRQ R/W INTRQ
0C9H - - - T0IEN - - - P00IEN R/W INTEN
0CAH WTCKS WDRST WDARTE - CPUM0 CLKMD STPHX - R/W OSCM
0CEH PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 R/W PCL
0CFH - - - - - PC10 PC9 PC8 R/W PCH
0D0H - - - - - - - P00 R P0
0D1H - - - - P13 P12 P11 P10 R/W P1
0D2H - - - - - - P21 P20 R/W P2
0D4H - - - - - P42 P41 P40 R P4
0D5H - - - - - P52 P51 P50 W P5
0D8H T0ENB T0RATE2 T0RATE1 T0RATE0 - - - - R/W T0M
0D9H T0C7 T0C6 T0C5 T0C4 T0C3 T0C2 T0C1 T0C0 R/W T0C
0DFH GIE - - - STKPB3 STKPB2 STKPB1 STKPB0 R/W STKP
0E1H - - - - P13R P12R P11R P10R W P1UR
0E2H - - - - - - P21R P20R W P2UR
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”;
3. 指令“b0bset”,“b0bclr”,“bset”,“bclr”只能用于可读写的寄存器(“R/W”)。
SONiX TECHNOLOGY CO., LTD Page 20 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg15.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
2.1.4.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 中
的数据送入存储器进行保存。
¾ 例:ACC 和工作寄存器中断保护。
.DATA ACCBUF DS 1
PFLAGBUF DS 1
.CODE
INT_SERVICE:
B0XCH A, ACCBUF ;
B0MOV A, PFLAG
…
B0MOV A, PFLAGBUF
RETI
B0MOV PFLAGBUF, A
B0MOV PFLAG, A
B0XCH A, ACCBUF
; 定义 ACCBUF 为 ACC 数据存储单元。
; 定义 PFLAGBUF 为 PFLAG 数据存储单元。
; 存储 ACC 和 PFLAG。
; 恢复 PFLAG。
; 恢复 ACC。
; 退出中断。
注:必须使用“B0XCH”指令进行 ACC 数据的中断恢复,否则 PFLAG 会被更改而导致出错。
2.1.4.5 程序状态寄存器 PFLAG
寄存器 PFLAG 包含 ALU 运算状态信息,位 C、DC 和 Z 显示 ALU 的运算结果状态。
086H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
PFLAG
读/写 - - - - - R/W R/W R/W
复位后 - - - - - 0 0 0
Bit 2 C:进位标志
Bit 1 DC:辅助进位标志
Bit 0 Z:零标志
注:关于标志位 C、DC 和 Z 的更多信息请参阅指令集相关内容。
- - - - - C DC Z
1 =加法运算后有进位、减法运算没有借位发生或移位后移出逻辑“1”或比较运算的结果≥0。
0 =加法运算后没有进位、减法运算有借位发生或移位后移出逻辑“0”或比较运算的结果<0。
1 =加法运算时低四位有进位,或减法运算后没有向高四位借位。
0 =加法运算时低四位没有进位,或减法运算后有向高四位借位。
1 =算术/逻辑/分支运算的结果为零。
0 =算术/逻辑/分支运算的结果非零。
SONiX TECHNOLOGY CO., LTD Page 21 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg16.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
2.1.4.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
复位后
PCH PCL
) 单地址跳转
在 SONiX 单片机里面,有 9 条指令(CMPRS、INCS、INCMS、DECS、DECMS、BTS0、BTS1、B0BTS0 和 B0BTS1)
可完成单地址跳转功能。如果这些指令执行结果为真,那么 PC 值加 2 以跳过下一条指令。
如果位测试为真,PC 加 2。
B0BTS1 FC
JMP C0STEP
…
C0STEP: NOP
B0MOV A, BUF0 ;
B0BTS0 FZ
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
- - - - - 0 0 0 0 0 0 0 0 0 0 0
; 若 Carry_flag = 1,跳过下一条指令
; 否则跳到 C0STEP.
; 若 Zero flag = 0,跳过下一条指令
; 否则跳到 C1STEP.
CMPRS
INCS
INCMS
DECS
DECMS
A, #12H
BUF0
BUF0
BUF0
BUF0
; 若 ACC = 12H,跳过下一条指令
; 否则跳到 C0STEP.
; 如果 ACC 不为“0”,则跳至 C0STEP。
; 如果 BUF0 不为“0”,则跳至 C0STEP。
; 如果 ACC 不为“0”,则跳至 C0STEP。
; 如果 BUF0 不为“0”,则跳至 C0STEP。
SONiX TECHNOLOGY CO., LTD Page 22 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg17.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
) 多地址跳转
执行 JMP 或 ADD M,A(M=PCL)指令可实现多地址跳转。若 PCL 溢出,PCH 不会自动进位。用户必须用程序来调
整 PCH 的值。对于跳转表及其它应用,用户需计算 PC 的值以避免 PCL 溢出而导致程序出错。
注:PCL 溢出时,PCH 不能自动进位。用户必须用程序调整 PCH 的值以避免程序出错。
¾ 例:PC = 0323H(PCH = 03H,PCL = 23H)。
; PC = 0323H
MOV A, #28H
B0MOV PCL, A
…
; PC = 0328H
MOV A, #00H
B0MOV PCL, A
…
; 跳到地址 0328H。
; 跳到地址 0300H。
¾ 例:PC = 0323H(PCH = 03H,PCL = 23H)。
; PC = 0323H
B0ADD PCL, A
JMP A0POINT
JMP A1POINT
JMP A2POINT
JMP A3POINT
…
…
; PCL = PCL + ACC,PCH 的值不变。
; ACC = 0,跳到 A0POINT。
; ACC = 1,跳到 A1POINT。
; ACC = 2,跳到 A2POINT。
; ACC = 3,跳到 A3POINT。
SONiX TECHNOLOGY CO., LTD Page 23 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg18.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
2.1.4.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
YBIT7 YBIT6 YBIT5 YBIT4 YBIT3 YBIT2 YBIT1 YBIT0
ZBIT7 ZBIT6 ZBIT5 ZBIT4 ZBIT3 ZBIT2 ZBIT1 ZBIT0
¾ 例:用 Y、Z 作为数据指针,访问 bank0 中 025H 处的内容。
B0MOV Y, #00H
B0MOV Z, #25H
B0MOV A, @YZ
; Y 指向 RAM bank 0。
; Z 指向 25H。
; 数据送入 ACC。
¾ 例:利用数据指针@YZ 对 RAM 数据清零。
B0MOV Y, #0
B0MOV Z, #7FH
CLR_YZ_BUF:
CLR @YZ
DECMS Z ;
JMP CLR_YZ_BUF
CLR @YZ
END_CLR: ;
…
; Y = 0,指向 bank 0。
; Z = 7FH,RAM 区的最后单元。
; @YZ 清零。
; 不为零。
2.1.4.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
复位后
RBIT7 RBIT6 RBIT5 RBIT4 RBIT3 RBIT2 RBIT1 RBIT0
X X X X X X X X
SONiX TECHNOLOGY CO., LTD Page 24 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg19.png)
2.2 寻址模式
2.2.1 立即寻址
将立即数送入 ACC 或指定的 RAM 单元。
¾ 例:立即数 12H 送入 ACC。
MOV A, #12H
¾ 例:立即数 12H 送入寄存器 R。
B0MOV R, #12H
注:立即数寻址中,指定的 RAM 单元必须是 80H~87H 的工作寄存器。
SN8P1917
Remote Controller 8-Bit Micro-Controller
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 25 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg1a.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
2.3 堆栈
2.3.1 概述
SN8P1917 的堆栈缓存器共有 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 26 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg1b.png)
SN8P1917
Remote Controller 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
读/写
复位后
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
R/W - - - - R/W R/W R/W
0 - - - - 1 1 1
0 = 禁止;
1 = 使能。
MOV A, #00000111B
B0MOV STKP, A
- - - - - SnPC10 SnPC9 SnPC8
SnPC7 SnPC6 SnPC5 SnPC4 SnPC3 SnPC2 SnPC1 SnPC0
SONiX TECHNOLOGY CO., LTD Page 27 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg1c.png)
SN8P1917
Remote Controller 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 28 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg1d.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
3
3
3
复位
3.1 概述
SN8P1917 有以下几种复位方式:
) 上电复位;
) 看门狗复位;
) 掉电复位;
) 外部复位。
上述任一种复位发生时,所有的系统寄存器恢复默认状态,程序停止运行,同时程序计数器 PC 清零。复位结束后,
系统从向量 0000H 处重新开始运行。
系统复位需要一定的时间,并提供完整的上电复位规程。对于不同类型的振荡器,完成复位所需要的时间也不同。因
此,VDD 的上升速度和不同晶振的起振时间都不固定。晶体振荡器类型不同则复位时间亦存在差别,这使得 VDD 上升时
间和启动时间不是确定值。下面给出了复位时序图。
外部复位
看门狗复位
系统状态
上电
VDD
VSS
VDD
VSS
看门狗定时器正常工作
看门狗定时器停止计时
系统正常运行
系统停止工作
低电压检测
上电延时
外部复位低电压检测
外部复位高电压检测
看门狗溢出
看门狗复位延迟时间外部复位延迟时间
SONiX TECHNOLOGY CO., LTD Page 29 Version1.2
![](/html/d6/d62b/d62b895248378285f5314a6aa567916d74635edc9197efbdaa227e3fb1aa65f8/bg1e.png)
SN8P1917
Remote Controller 8-Bit Micro-Controller
3.2 上电复位
上电复位与 LVD 操作密切相关。系统上电过程呈逐渐上升的曲线形式,需要一定时间才能达到正常电平值。上电复
位的时序如下:
z
上电:系统检测到电源电压上升并等待其稳定;
z
外部复位:系统检测外部复位引脚状态。如果不为高电平,系统保持复位状态直到外部复位引脚释放。
z
系统初始化:所有的系统寄存器被置为默认状态;
z
振荡器开始工作:振荡器开始提供系统时钟;
z
执行程序:上电结束,程序开始运行。
3.3 看门狗复位
看门狗复位是系统的一种保护设置。在正常状态下,由程序将看门狗定时器清零。若出错,系统处于未知状态,看门
狗定时器溢出,此时系统复位。看门狗复位后,系统重启进入正常状态。看门狗复位的时序如下:
z
看门狗定时器状态:系统检测看门狗定时器是否溢出,若溢出,则系统复位;
z
系统初始化:所有的系统寄存器被置为默认状态;
z
振荡器开始工作:振荡器开始提供系统时钟;
z
执行程序:上电结束,程序开始运行。
看门狗定时器运用注意事项:
z 看门狗定时器清零之前,请检查 I/O 口的状态和 RAM 的内容可增强程序的可靠性;
z 不能在中断中对看门狗清零,否则无法侦测到主程序跑飞的状况;
z 程序中应该只在主程序中有一次清看门狗的动作,这种架构能够最大限度的发挥看门狗的保护功能。
注:关于看门狗定时器的详细内容,请参阅“看门狗定时器有关章节。
SONiX TECHNOLOGY CO., LTD Page 30 Version1.2