![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg1.png)
SN8P2711A
8-Bit Micro-Controller
SN8P2711A
用户参考手册
Version 1.0
S
O
S
O
SONiX 公司保留对以下所有产品在可靠性,功能和设计方面的改进作进一步说明的权利。SONiX 不承担由本手册所
涉及的产品或电路的运用和使用所引起的任何责任,SONiX 的产品不是专门设计来应用于外科植入、生命维持和任何
SONiX 产品的故障会对个体造成伤害甚至死亡的领域。如果将 SONiX 的产品应用于上述领域,即使这些是由 SONiX 在
产品设计和制造上的疏忽引起的,用户应赔偿所有费用、损失、合理的人身伤害或死亡所直接或间接产生的律师费用,并
且用户保证 SONiX 及其雇员、子公司、分支机构和销售商与上述事宜无关。
Nii
N
X 88
X
位
位
单
单
片
片
机
机
SONiX TECHNOLOGY CO., LTD Page 1 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg2.png)
SN8P2711A
8-Bit Micro-Controller
修正记录
版本号 日期 内容
VER 1.0
2008 年 3 月 初版。
2008 年 5 月 1. 修改烧录信息内容。
SONiX TECHNOLOGY CO., LTD Page 2 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg3.png)
SN8P2711A
8-Bit Micro-Controller
目 录
修正记录................................................................................................................................................................................................ 2
目 录................................................................................................................................................................................................ 3
1
1
产品简介 ......................................................................................................................................................................................
1
1.1 功能特性............................................................................................................................................................................. 6
1.2 系统结构框图...................................................................................................................................................................... 7
1.3 引脚配置............................................................................................................................................................................. 8
1.4 引脚说明............................................................................................................................................................................. 8
1.5 引脚电路结构图 ..................................................................................................................................................................9
2
2
中央处理器(CPU) ..................................................................................................................................................................
2
2.1 存储器 .............................................................................................................................................................................. 10
2.1.1 程序存储器(ROM)...................................................................................................................................................10
2.1.1.1 复位向量(0000H)........................................................................................................................................... 10
2.1.1.2 中断向量(0008H)........................................................................................................................................... 11
2.1.1.3 查表.................................................................................................................................................................... 12
2.1.1.4 跳转表 ................................................................................................................................................................ 14
2.1.1.5 CHECKSUM计算 ............................................................................................................................................... 15
2.1.2 编译选项表(CODE OPTION) .................................................................................................................................. 16
2.1.3 数据存储器(RAM) ...................................................................................................................................................16
2.1.4 系统寄存器 .................................................................................................................................................................. 17
2.1.4.1 系统寄存器列表.................................................................................................................................................. 17
2.1.4.2 系统寄存器说明.................................................................................................................................................. 17
2.1.4.3 系统寄存器的位定义........................................................................................................................................... 18
2.1.4.4 累加器 ................................................................................................................................................................ 19
2.1.4.5 程序状态寄存器PFLAG ...................................................................................................................................... 20
2.1.4.6 程序计数器.........................................................................................................................................................21
2.1.4.7 Y,Z寄存器........................................................................................................................................................23
2.1.4.8 R寄存器 ............................................................................................................................................................. 23
2.2 寻址模式........................................................................................................................................................................... 24
2.2.1 立即寻址......................................................................................................................................................................24
2.2.2 直接寻址......................................................................................................................................................................24
2.2.3 间接寻址......................................................................................................................................................................24
2.3 堆栈..................................................................................................................................................................................25
2.3.1 概述 ............................................................................................................................................................................. 25
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寄存器.................................................................................................................................................................... 36
4.4 系统高速时钟.................................................................................................................................................................... 37
4.4.1 内部高速RC振荡器 ...................................................................................................................................................... 37
4.4.2 外部高速时钟............................................................................................................................................................... 38
4.4.2.1 石英/陶瓷振荡器................................................................................................................................................. 38
4.4.2.2 RC振荡器...........................................................................................................................................................39
4.4.2.3 外部时钟源.........................................................................................................................................................39
10
27
36
6
SONiX TECHNOLOGY CO., LTD Page 3 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg4.png)
SN8P2711A
8-Bit Micro-Controller
4.5 系统低速时钟.................................................................................................................................................................... 40
4.5.1 系统时钟测试............................................................................................................................................................... 40
5
5
系统工作模式 .............................................................................................................................................................................
5
5.1 概述..................................................................................................................................................................................41
5.2 系统模式切换.................................................................................................................................................................... 42
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 INT1(P0.1)中断............................................................................................................................................................ 48
6.8 TC0 中断 .......................................................................................................................................................................... 49
6.9 TC1 中断 .......................................................................................................................................................................... 50
6.10 ADC中断 ..........................................................................................................................................................................51
6.11 多中断操作举例................................................................................................................................................................ 52
7
7
I/O口 ..........................................................................................................................................................................................
7
7.1 I/O口模式 ......................................................................................................................................................................... 53
7.2 I/O上拉电阻寄存器 ........................................................................................................................................................... 54
7.3 I/O口数据寄存器............................................................................................................................................................... 54
7.4 P4 口ADC共用引脚 .......................................................................................................................................................... 55
8
8
定时器........................................................................................................................................................................................
8
8.1 看门狗定时器.................................................................................................................................................................... 57
8.2 定时/计数器TC0 ...............................................................................................................................................................58
8.2.1 概述 ............................................................................................................................................................................. 58
8.2.2 TC0M模式寄存器......................................................................................................................................................... 59
8.2.3 TC1X8, TC0X8, TC0GN标志....................................................................................................................................... 59
8.2.4 TC0C计数寄存器 ......................................................................................................................................................... 60
8.2.5 TC0R自动装载寄存器..................................................................................................................................................61
8.2.6 TC0 时钟频率输出(蜂鸣器输出) .............................................................................................................................. 62
8.2.7 TC0 操作流程 .............................................................................................................................................................. 63
8.3 定时/计数器TC1 ...............................................................................................................................................................64
8.3.1 概述 ............................................................................................................................................................................. 64
8.3.2 TC1M模式寄存器......................................................................................................................................................... 65
8.3.3 TC1X8 标志 ................................................................................................................................................................. 65
8.3.4 TC1C计数寄存器 ......................................................................................................................................................... 66
8.3.5 TC1R自动装载寄存器..................................................................................................................................................67
8.3.6 TC1 时钟频率输出(蜂鸣器输出) .............................................................................................................................. 68
8.3.7 TC1 操作流程 .............................................................................................................................................................. 69
8.4 PWM功能说明 .................................................................................................................................................................. 70
8.4.1 概述 ............................................................................................................................................................................. 70
8.4.2 TCnIRQ和PWM输出占空比 ......................................................................................................................................... 71
8.4.3 PWM输出占空比和TCnR的变化..................................................................................................................................72
8.4.4 PWM编程举例 ............................................................................................................................................................. 73
9
9
5+1 通道ADC.............................................................................................................................................................................
9
9.1 概述..................................................................................................................................................................................74
9.2 ADM寄存器 ...................................................................................................................................................................... 74
9.3 ADR寄存器....................................................................................................................................................................... 75
9.4 ADB寄存器.......................................................................................................................................................................75
9.5 P4CON寄存器 .................................................................................................................................................................. 76
9.6 VREFH寄存器 .................................................................................................................................................................. 76
9.7 AD转换时间...................................................................................................................................................................... 77
9.8 ADC操作实例 ................................................................................................................................................................... 78
9.9 ADC电路 ..........................................................................................................................................................................80
0
1
0
1
指令集 ...................................................................................................................................................................................
0
1
1
1
1
1
电气特性 ...............................................................................................................................................................................
1
1
11.1 极限参数........................................................................................................................................................................... 82
11.2 电气特性........................................................................................................................................................................... 82
2
1
2
1
开发工具 ...............................................................................................................................................................................
2
1
12.1 在线仿真器(ICE)..........................................................................................................................................................84
41
44
53
57
74
81
82
84
SONiX TECHNOLOGY CO., LTD Page 4 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg5.png)
SN8P2711A
8-Bit Micro-Controller
12.2 OTP烧录器 ....................................................................................................................................................................... 84
12.3 SN8IDE ............................................................................................................................................................................ 84
12.4 SN8P2711 EV KIT............................................................................................................................................................85
12.4.1 PCB说明 ................................................................................................................................................................. 85
12.4.2 SN8P2711 EV KIT与SN8ICE 2K的连接 ................................................................................................................. 87
12.5 OTP烧录信息 ................................................................................................................................................................... 88
12.5.1 烧录转接板信息 ...................................................................................................................................................... 88
12.5.2 烧录引脚信息.......................................................................................................................................................... 90
3
1
3
1
封装信息 ...............................................................................................................................................................................
3
1
13.1 P-DIP 14 PIN .................................................................................................................................................................... 91
13.2 SOP 14 PIN ......................................................................................................................................................................92
13.3 SSOP 16 PIN.................................................................................................................................................................... 93
4
1
4
1
芯片正印命名规则 .................................................................................................................................................................
4
1
14.1 概述.................................................................................................................................................................................. 94
14.2 芯片型号说明....................................................................................................................................................................94
14.3 命名举例........................................................................................................................................................................... 95
14.4 日期码规则.......................................................................................................................................................................95
91
94
SONiX TECHNOLOGY CO., LTD Page 5 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg6.png)
SN8P2711A
8-Bit Micro-Controller
1
1
1
SN8P2711A 是 SN8P2711 的升级版本,IHRC 提高到 16MHz±2%。产品优秀的高抗干扰性能为家电产品提供
最佳的解决方案。
z SN8P2711A 兼容 SN8P2711;
z IHRC 性能由 16MHz±5%提高到 16MHz±2%;
z 掉电复位性能更加准确;
z SN8P2711 的代码可直接用于 SN8P2711A。可以将 SN8P2711 的原始 SN8 档直接编程为 SN8P2711A,无 需
在 SN8P2711A 源代码中宣告和重新编译。
产品简介
1.1 功能特性
存储器配置 ♦ 5+1 通道 12 位 ADC.
♦
OTP ROM 空间:1K * 16 位。 5个外部 ADC 输入。
RAM 空间:64 字节。 一个内部电池检测。
4 层堆栈缓存器
♦
I/O 引脚配置
♦
输入输出双向端口:P0、P4、P5。 TC1:自动装载定时器/计数器/PWM1/ Buzzer 输出。
单向输入引脚:P0.4,与复位引脚共用。
具有唤醒功能的端口:P0 电平触发。
内置上拉电阻端口:P0、P4、P5。
外部中断引脚:
P0.0:由寄存器 PEDGE 控制;
P0.1:下降沿触发。
3 级低电压检测系统(LVD) 内部高速时钟:RC 模式,高达 16MHz。
♦
系统复位,监控系统电源。
5 个中断源
♦
3 个内部中断:TC0、TC1、ADC。 普通模式:高、低速时钟同时工作。
2 个外部中断:INT0、INT1。 低速模式:只有低速时钟工作。
强大的指令系统
♦
单时钟系统(1T)。
大部分指令只需要一个时钟周期。
跳转指令 JMP 可在整个 ROM 区执行。 P-DIP 14 pins。
调用指令 CALL 可在整个 ROM 区执行。
查表指令 MOVC 可寻址整个 ROM 区。
) 特性列表
单片机型号 ROM RAM 堆栈
SN8P2711 1K*16 64 4 V V 12 5+1 ch V 2 5 P-DIP 14/SOP 14/SSOP 16
SN8P2711A 1K*16 64 4 V V 12 5+1 ch V 2 5 P-DIP 14/SOP 14/SSOP 16
) SN8P2711 升级为 SN8P2711A 注意事项
项目
PCL
32KHz 振荡器模式 不支持 支持
韧件差别
PCL 不能保存在地址 0xxFEH 和 0xxFFH 处 没有限制
SN8P2711 的 SN8 档可直接通过
烧录 SN8P2711A
定时器
TC0 TC1
SN8P2711 SN8P2711A
I/O ADC 绿色模式
内部 AD 参考电压(VDD、4V、3V、2V)。
两个 8 位定时/计数器
♦
TC0:自动装载定时器/计数器/PWM0/ Buzzer 输出。
内置看门狗定时器,其时钟源由内部低速 RC 振荡器提供
♦
(16KHz @3V,32KHz @5V)
双时钟系统
♦
外部高速时钟:RC 模式,高达 10 MHz。
外部高速时钟:晶体模式,高达 16 MHz。
内部低速时钟:RC 模式,16KHz(3V),32KHz(5V)。
工作模式
♦
睡眠模式:高、低速时钟都停止工作。
绿色模式:由 TC0 周期性的唤醒。
封装形式
♦
SOP 14 pins。
SSOP 16 pins。
MPIII Writer
PWM
Buzzer
SN8P2711A 的 SN8 档(如重新编译的 SN8P2711 的
源代码而没有宣告秤 SN8P2711A,SN8P2711 的新
代码……) 不能直接通过 MPIII Writer 烧录
SN8P2711 的芯片。
唤醒功能
引脚数目
封装形式
SONiX TECHNOLOGY CO., LTD Page 6 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg7.png)
SN8P2711A
8-Bit Micro-Controller
1.2 系统结构框图
内部高速RC
PC
振荡时钟
OTP
IR
ROM
FLAGS
ALU
ACC
中断控制
P0 P5 P4
外部高速振
荡时钟
定时器&计数器
内部低速RC
振荡时钟
时序产生器
RAM
系统寄存器
低电压检测
(LVD)
看门狗定时器
PWM 0
BUZZER 0
PWM 1
BUZZER 1
12-BIT ADC
内部参考源
检测电池的内
部ADC
PWM0
BUZZER0
PWM1
BUZZER1
AIN0~AIN4
SONiX TECHNOLOGY CO., LTD Page 7 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg8.png)
SN8P2711A
8-Bit Micro-Controller
1.3 引脚配置
SN8P2711AP(P-DIP 14 pins)
SN8P2711AS(SOP 14 pins)
VDD 1 U 14 VSS
P0.3/XIN 2 13 P4.4/AIN4
P0.2/XOUT 3 12 P4.3/AIN3
P0.4/RST/VPP 4 11 P4.2/AIN2
P5.3/BZ1/PWM1 5 10 P4.1/AIN1
P5.4/BZ0/PWM0 6 9 P4.0/AIN0/VREFH
P0.1/INT1 7 8 P0.0/INT0
SN8P2711AX(SSOP 16 pins)
VDD 1 U 16 VSS
P0.3/XIN 2 15 P4.4/AIN4
P0.2/XOUT 3 14 P4.3/AIN3
P0.4/RST/VPP 4 13 P4.2/AIN2
P5.3/BZ1/PWM1 5 12 P4.1/AIN1
P5.4/BZ0/PWM0 6 11 P4.0/AIN0/VREFH
P0.1/INT1 7 10 P0.0/INT0
NC 8 9 NC
SN8P2711AP
SN8P2711AS
SN8P2711AX
1.4 引脚说明
引脚名称 类型 功能说明
VDD, VSS P
P0.4/RST/VPP I, P
P0.3/XIN I/O
P0.2/XOUT I/O
P0[1:0]/INT[1:0] I/O
P4.0/AIN0/VREFH I/O
P4.[4:1]/AIN[4:1] I/O
P5[4:3]/BZ[1:0]/
PWM[1:0]
电源输入端。
P0.4:禁止外部复位时为单向输入引脚,施密特触发,无内置上拉电阻,
作普通输入引脚使用时,用户需在单片机的 P0.4 外面串接一个 100 欧姆
的电阻(如右图所示,电阻要尽可能的靠近单片机),具有唤醒功能。
RST:系统复位输入引脚,施密特结构,低电平触发,通常保持高电平。
VPP:OTP 烧录引脚。
P0.3:双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。
XIN:使能外部振荡电路(晶体/RC 振荡电路)时为振荡信号输入引脚。
P0.2:双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。
XOUT:使能外部晶体振荡器时为振荡器输出引脚。
双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。
外部中断触发引脚(施密特触发)。
TC1/TC0 事件计数器的信号输入引脚。
P4.0:双向输入/输出引脚,非施密特触发,内置上拉电阻。
AIN0:ADC 输入通道。
VERFH:ADC 参考电压的高电平输入引脚。
P4 [4:1]:双向输入/输出引脚,非施密特触发,内置上拉电阻。
AIN[4:1]:ADC 输入通道。
双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻。
I/O
Buzzer 输出引脚/PWM 输出引脚。
100R
P0.4
MCU
SONiX TECHNOLOGY CO., LTD Page 8 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg9.png)
SN8P2711A
8-Bit Micro-Controller
1.5 引脚电路结构图
P0.2、P0.3:
Pull-Up
P0.4
、5:
P0
:
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.0
:
P4
:
Output
Latch
Output Bus
Pull-Up
PnM
PnM
GCHS
Pull-Up
PnM, PnUR
PnM, PnUR
Output
Latch
Input Bus
Output Bus
Int. ADC
Int. VERFH
Input Bus
P4CON
EVHENB
Pin
P4CON
Pin
GCHS
Output
Latch
Output Bus
Int. ADC
SONiX TECHNOLOGY CO., LTD Page 9 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bga.png)
SN8P2711A
8-Bit Micro-Controller
2
2
2
中央处理器(CPU)
2.1 存储器
2.1.1 程序存储器(ROM)
) 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
:
1K
0000H
0001H
.
.
0007H
0008H
0009H
.
.
000FH
0010H
0011H
.
.
.
.
.
03FCH
03FDH
03FEH
03FFH
具有一个字长的系统复位向量(0000H)。
发生上述任一种复位后,程序将从 0000H 处重新开始执行,系统寄存器也都将恢复为默认值。根据 PFLAG 寄存器中
ROM
复位向量
通用存储区
中断向量 用户中断向量
通用存储区
系统保留
; 跳至用户程序。
; 用户程序起始地址。
; 用户程序。
; 程序结束。
用户复位向量
用户程序开始
用户程序结束
用户程序
SONiX TECHNOLOGY CO., LTD Page 10 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bgb.png)
SN8P2711A
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 11 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bgc.png)
SN8P2711A
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 12 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bgd.png)
SN8P2711A
下面的程序通过累加器对 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 13 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bge.png)
SN8P2711A
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 14 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bgf.png)
SN8P2711A
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 计算。
; 程序结束。
8-Bit Micro-Controller
SONiX TECHNOLOGY CO., LTD Page 15 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg10.png)
SN8P2711A
8-Bit Micro-Controller
2.1.2 编译选项表(CODE OPTION)
编译选项 内容 功能说明
IHRC_16M
High_Clk
Watch_Dog
Fcpu
Reset_Pin
Security
Noise_Filter
LVD
注:
1. 在干扰较大的情况下,建议开启杂讯滤波功能,此时 Fcpu = Fosc/4 ~ Fosc/128,并将 Watch_Dog 设置为“Always_On”;
2. 如果用户定义看门狗为“Always_On”,编译器会自动开启看门狗定时器;
3. 编译选项 Fcpu 仅针对外部高速时钟,在低速模式下 Fcpu =Fosc/4。
RC
12M X’tal
4M X’tal
Always_On
Enable
Disable
Fhosc/1
Fhosc/2
Fhosc/4
Fhosc/8
Fhosc/16
Reset
P04
Enable
Disable
Enable
Disable
LVD_L
LVD_M
LVD_H
高速时钟采用内部 16MHz RC 振荡电路,XIN/XOUT(P0.3/P0.2)为普通
的 I/O 引脚。
外部高速时钟振荡器采用廉价的 RC 振荡电路,XOUT(P0.2)为普通的 I/O
引脚。
外部高速时钟振荡器采用高频晶体/陶瓷振荡器(如 12MHz)。
外部高速时钟振荡器采用标准晶体/陶瓷振荡器(如 4MHz)。
始终开启看门狗定时器,即使在睡眠模式和绿色模式下也处于开启状态。
开启看门狗定时器,但在睡眠模式和绿色模式下关闭。
关闭看门狗定时器。
指令周期 = 1 个时钟周期,必须关闭杂讯滤波功能。
指令周期 = 2 个时钟周期,必须关闭杂讯滤波功能。
指令周期 = 4 个时钟周期。
指令周期 = 8 个时钟周期。
指令周期 = 16 个时钟周期。
使能外部复位引脚。
P0.4 为单向输入引脚,无上拉电阻。
ROM 程序加密。
ROM 程序不加密。
使能杂讯滤除功能,Fcpu = Fosc/4~Fosc/16。
禁止杂讯滤除功能,Fcpu = Fosc/1~Fosc/16。
VDD 低于 2.0V 时,系统复位。
VDD 低于 2.0V 时,系统复位;
PFLAG 寄存器的 LVD24 位作为 2.4V 低电压监测器。
VDD 低于 2.4V 时,系统复位;
PFLAG 寄存器的 LVD36 位作为 3.6V 低电压监测器。
2.1.3 数据存储器(RAM)
) RAM
:64字节
BANK 0
地址
000H
“
“
“
“
“
03FH
080H
“
“
“
“
“
0FFH
RAM
通用存储区
系统寄存器
Bank 0 的结束区
Bank0 的 080H~0FFH 是系统寄存器
区(128 字节)。
SONiX TECHNOLOGY CO., LTD Page 16 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg11.png)
SN8P2711A
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
- - R Z Y - PFLAG - - - - - - - - -
8
- - - - - - - - - - - - - - - -
9
- - - - - - - - - - - - - - P4CON VREFH
A
- ADM ADB ADR - - - - P0M - - - - -
B
- - - - P4M P5M - - INTRQ INTEN OSCM - WDTR TC0R PCL PCH
C
P0 - - - P4 P5 - - T0M - TC0M TC0C TC1M TC1C TC1R STKP
D
P0UR - - - P4UR P5UR - @YZ - - - - - - - -
E
- - - - - - - - STK3L STK3H STK2L STK2H STK1L STK1H STK0L STK0H
F
2.1.4.2 系统寄存器说明
R
PFLAG
VERFH
ADB
PnM
INTRQ
OSCM
TC0R =
Pn
TC0M
TC1M
TC1R =
PnUR
STK0~STK3
= 工作寄存器和 ROM 查表数据缓存器
= ROM 页和特殊标志寄存器
= ADC 参考电压寄存器
= ADC 数据缓存器
= Pn 模式控制寄存器
= 中断请求寄存器
= 振荡模式寄存器
TC0 自动装载数据缓存器
= Pn 数据缓存器
= TC0 模式寄存器
= TC1 模式寄存器
TC1 自动装载实际缓存器
= Pn 上拉电阻控制寄存器
= 堆栈寄存器
Y, Z
P4CON
ADM
ADR
PEDGE
INTEN
WDTR
PCH, PCL
T0M
TC0C
TC1C
STKP
@YZ
= 专用寄存器,@YZ 间接寻址寄存器,ROM 寻址寄存器
=P4配置控制寄存器
=ADC模式寄存器
=ADC精度选择寄存器
=P0.0模式控制寄存器
= 中断使能寄存器
= 看门狗清零寄存器
= 程序计数器
= TC0/TC1 加速和 TC0 唤醒功能寄存器
=TC0计数寄存器
=TC1计数寄存器
=
堆栈指针
= 间接寻址寄存器
- PEDGE
SONiX TECHNOLOGY CO., LTD Page 17 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg12.png)
SN8P2711A
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 NT0 NPD LVD36 LVD24 C DC Z R/W PFLAG
0AEH P4CON4 P4CON3 P4CON2 P4CON1 P4CON0 R/W P4CON
0AFH EVHENB VHS1 VHS2 R/W VREFH
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 P03M P02M P01M P00M R/W P0M
0BFH P00G1 P00G0 R/W PEDGE
0C4H P44M P43M P42M P41M P40M R/W P4M
0C5H P54M P53M R/W P5M
0C8H ADCIRQ TC1IRQ TC0IRQ P01IRQ P00IRQ R/W INTRQ
0C9H ADCIEN TC1IEN TC0IEN P01IEN 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 PC9 PC8 R/W PCH
0D0H P04 P03 P02 P01 P00 R/W P0
0D4H P44 P43 P42 P41 P40 R/W P4
0D5H P54 P53 R/W P5
0D8H TC1X8 TC0X8 TC0GN 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 TC1ENB TC1rate2 TC1rate1 TC1rate0 TC1CKS ALOAD1 TC1OUT PWM1OUT R/W TC1M
0DDH TC1C7 TC1C6 TC1C5 TC1C4 TC1C3 TC1C2 TC1C1 TC1C0 R/W TC1C
0DEH TC1R7 TC1R6 TC1R5 TC1R4 TC1R3 TC1R2 TC1R1 TC1R0 W TC1R
0DFH GIE STKPB2 STKPB1 STKPB0 R/W STKP
0E0H P03R P02R P01R P00R W P0UR
0E4H P44R P43R P42R P41R P40R W P4UR
0E5H P54R P53R W P5UR
0E7H @YZ7 @YZ6 @YZ5 @YZ4 @YZ3 @YZ2 @YZ1 @YZ0 R/W @YZ
0F8H S3PC7 S3PC6 S3PC5 S3PC4 S3PC3 S3PC2 S3PC1 S3PC0 R/W STK3L
0F9H S3PC9 S3PC8 R/W STK3H
0FAH S2PC7 S2PC6 S2PC5 S2PC4 S2PC3 S2PC2 S2PC1 S2PC0 R/W STK2L
0FBH S2PC9 S2PC8 R/W STK2H
0FCH S1PC7 S1PC6 S1PC5 S1PC4 S1PC3 S1PC2 S1PC1 S1PC0 R/W STK1L
0FDH S1PC9 S1PC8 R/W STK1H
0FEH S0PC7 S0PC6 S0PC5 S0PC4 S0PC3 S0PC2 S0PC1 S0PC0 R/W STK0L
0FFH 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 18 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg13.png)
SN8P2711A
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 中
的数据送入存储器进行保存。可通过“PUSH”和“POP”指令对 ACC 和 PFLAG 等系统寄存器进行存储及恢复。
¾ 例:ACC 和工作寄存器中断保护操作。
INT_SERVICE:
PUSH
… .
…
POP
RETI
; 保存 PFLAG 和 ACC。
; 恢复 ACC 和 PFLAG。
; 退出中断。
SONiX TECHNOLOGY CO., LTD Page 19 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg14.png)
SN8P2711A
8-Bit Micro-Controller
2.1.4.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 20 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg15.png)
SN8P2711A
8-Bit Micro-Controller
2.1.4.6 程序计数器
程序计数器 PC 是一个 10 位二进制程序地址寄存器,分高 2 位和低 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
) 单地址跳转
可完成单地址跳转功能。如果这些指令执行结果为真,那么 PC 值加 2 以跳过下一条指令。
如果位测试为真,PC 加 2。
B0BTS1 FC
JMP C0STEP
…
C0STEP: NOP
B0MOV A, BUF0
JMP C1STEP
…
…
C1STEP: NOP
如果 ACC 等于指定的立即数则 PC 值加 2,跳过下一条指令。
JMP C0STEP
…
…
C0STEP: NOP
执行加 1 指令后,结果为零时,PC 的值加 2,跳过下一条指令。
INCS:
INCS BUF0
JMP C0STEP
…
C0STEP: NOP
INCMS:
INCMS BUF0
JMP C0STEP
…
C0STEP: NOP
执行减 1 指令后,结果为零时,PC 的值加 2,跳过下一条指令。
DECS:
DECS BUF0
JMP C0STEP
…
C0STEP: NOP
DECMS:
DECMS BUF0
JMP C0STEP
…
C0STEP: NOP
- - - - - - PC9 PC8 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
- - - - - - 0 0 0 0 0 0 0 0 0 0
在 SONiX 单片机里面,有 9 条指令(CMPRS、INCS、INCMS、DECS、DECMS、BTS0、BTS1、B0BTS0 和 B0BTS1)
; 若 Carry_flag = 1 则跳过下一条指令。
; 否则执行 C0STEP。
; BUF0 送入 ACC。
B0BTS0
CMPRS
FZ
A, #12H
; Zero flag = 0 则跳过下一条指令。
; 否则执行 C1STEP。
; 如果 ACC = 12H,则跳过下一条指令。
; 否则跳至 C0STEP。
SONiX TECHNOLOGY CO., LTD Page 21 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg16.png)
SN8P2711A
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
…
; 跳到地址 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 22 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg17.png)
SN8P2711A
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
复位后 X X X X X X X X
RBIT7 RBIT6 RBIT5 RBIT4 RBIT3 RBIT2 RBIT1 RBIT0
SONiX TECHNOLOGY CO., LTD Page 23 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg18.png)
2.2 寻址模式
2.2.1 立即寻址
将立即数送入 ACC 或指定的 RAM 单元。
¾ 例:立即数 12H 送入 ACC。
MOV A, #12H
¾ 例:立即数 12H 送入寄存器 R。
B0MOV R, #12H
注:立即数寻址中,指定的 RAM 单元必须是 80H~87H 的工作寄存器。
SN8P2711A
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 24 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg19.png)
SN8P2711A
8-Bit Micro-Controller
2.3 堆栈
2.3.1 概述
SN8P2711A 的堆栈缓存器共 4 层,程序进入中断或执行 CALL 指令时,用来存储程序计数器 PC 的值。寄存器 STKP
为堆栈指针,STKnH 和 STKnL 分别是各堆栈缓存器的高、低字节。
RET /
RETI
CALL /
中断
PCH
PCL
堆栈层数
STKP - 1STKP + 1
STKP = 3
STKP = 2
STKP = 1
STKP
STKP = 0
堆栈缓存器高
字节
STK3H
STK2H
STK1H
STKP
STK0H
堆栈缓存器低
字节
STK3L
STK2L
STK1L
STK0L
2.3.2 堆栈寄存器
堆栈指针 STKP 是一个 3 位寄存器,存放被访问的堆栈单元地址,10 位数据存储器 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:全局中断控制位。
0 = 禁止;
1 = 使能。
¾ 例:系统复位时,堆栈指针寄存器内容为默认值,但强烈建议在程序初始部分重新设定,如下面所示:
MOV A, #00000111B
B0MOV STKP, A
0F0H~0FFH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
STKnH
读/写 - - - - - - R/W R/W
复位后 - - - - - - 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 = 3 ~ 0
GIE - - - - STKPB2 STKPB1 STKPB0
- - - - - - SnPC9 SnPC8
SnPC7 SnPC6 SnPC5 SnPC4 SnPC3 SnPC2 SnPC1 SnPC0
)。
SONiX TECHNOLOGY CO., LTD Page 25 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg1a.png)
SN8P2711A
8-Bit Micro-Controller
2.3.3 堆栈操作举例
执行程序调用指令 CALL 和响应中断服务时,堆栈指针 STKP 的值减 1,指针指向下一个堆栈缓存器。同时,对程序
计数器 PC 的内容进行入栈保护。入栈操作如下表所示:
堆栈层数
0
1
2
3
4
> 4
STKPB2 STKPB1 STKPB0
1 1 1 保留 保留 -
1 1 0 STK0H STK0L 1 0 1 STK1H STK1L 1 0 0 STK2H STK2L 0 1 1 STK3H STK3L 0 1 0 - - 缓存器已满,错误
STKP
对应每个入栈操作,都有一个出栈操作来恢复程序计数器 PC 的值。RETI 指令用于中断服务程序中,RET 用于子程
序调用。出栈时,STKP 加 1 并指向下一个空闲堆栈缓存器。堆栈恢复操作如下表所示:
堆栈层数
4
3
2
1
0
STKPB2 STKPB1 STKPB0
0 1 1 STK3H STK3L 1 0 0 STK2H STK2L 1 0 1 STK1H STK1L 1 1 0 STK0H STK0L 1 1 1 保留 保留 -
STKP
缓存器
高字节 低字节
缓存器
高字节 低字节
备注
备注
SONiX TECHNOLOGY CO., LTD Page 26 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg1b.png)
SN8P2711A
8-Bit Micro-Controller
3
3
3
复位
3.1 概述
SN8P2711A 有以下几种复位方式:
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
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg1c.png)
SN8P2711A
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 28 Version 1.0
![](/html/6f/6f99/6f99f85f1fa89447be1ef7241f1d06217261f7bbbc2749e32d028844d17036d4/bg1d.png)
SN8P2711A
8-Bit Micro-Controller
3.4 掉电复位
3.4.1 概述
掉电复位针对外部因素引起的系统电压跌落情形(例如,干扰或外部负载的变化),掉电复位可能会引起系统工作状
态不正常或程序执行错误。
VDD
系统正常工作区域
V1
LVD检测电压
V2
V3
系统工作出错区域
掉电复位示意图
电压跌落可能会进入系统死区。系统死区意味着电源不能满足系统的最小工作电压要求。上图是一个典型的掉电复位
示意图。图中,
入未知的工作状态,这个区域称作死区。当
入死区,则容易导致出错。以下情况系统可能进入死区:
VDD 受到严重的干扰,电压值降的非常低。虚线以上区域系统正常工作,在虚线以下的区域内,系统进
VDD 跌至 V1 时,系统仍处于正常状态;当 VDD 跌至 V2 和 V3 时,系统进
DC
运用中:
DC
运用中一般都采用电池供电,当电池电压过低或单片机驱动负载时,系统电压可能跌落并进入死区。这时,电源
不会进一步下降到
LVD 检测电压,因此系统维持在死区。
AC
运用中:
系统采用 AC 供电时,DC 电压值受 AC 电源中的噪声影响。当外部负载过高,如驱动马达时,负载动作产生的干扰
也影响到
DC 电源。VDD 若由于受到干扰而跌落至最低工作电压以下时,则系统将有可能进入不稳定工作状态。
在 AC 运用中,系统上、下电时间都较长。其中,上电时序保护使得系统正常上电,但下电过程却和 DC 运用中情形
类似,
AC 电源关断后,VDD 电压在缓慢下降的过程中易进入死区。
3.4.2 系统工作电压
为了改善系统掉电复位的性能,首先必须明确系统具有的最低工作电压值。系统最低工作电压与系统执行速度有关,
不同的执行速度下最低工作电压值也不同。
工作电压
(Vdd) (V)
系统最低
工作电压值
系统正常工作
电压区域
死区
系统复位电压
复位区域
系统执行速度 (Fcpu)
系统工作电压与执行速度关系图
如上图所示,系统正常工作电压区域一般高于系统复位电压,同时复位电压由低电压检测(LVD)电平决定。当系统
执行速度提高时,系统最低工作电压也相应提高,但由于系统复位电压是固定的,因此在系统最低工作电压与系统复位电
压之间就会出现一个电压区域,系统不能正常工作,也不会复位,这个区域即为死区。
SONiX TECHNOLOGY CO., LTD Page 29 Version 1.0