SONiX SN8P2501B User Manual

Page 1
SN8P2501B
SN8P2501B
8-Bit Micro-Controller
用户参考手册
V1.0
S
O
Nii
S
O
SONiX 公司保留对以下所有产品在可靠性,功能和设计方面的改进作进一步说明的权利。SONiX 不承担由本手册所 涉及的产品或电路的运用和使用所引起的任何责任,SONiX 的产品不是专门设计来应用于外科植入、生命维持和任何 SONiX 产品的故障会对个体造成伤害甚至死亡的领域。如果将 SONiX 的产品应用于上述领域,即使这些是由 SONiX 产品设计和制造上的疏忽引起的,用户应赔偿所有费用、损失、合理的人身伤害或死亡所直接或间接产生的律师费用,并 且用户保证 SONiX 及其雇员、子公司、分支机构和销售商与上述事宜无关。
N
X 88--
X
Biitt
B
M
M
C
C
U
U
SONiX TECHNOLOGY CO., LTD Page 1 V1.0
Page 2
SN8P2501B
修正记录
版本 日期 内容
VER 1.0
2006 12 1. 初版。
8-Bit Micro-Controller
SONiX TECHNOLOGY CO., LTD Page 2 V1.0
Page 3
SN8P2501B
8-Bit Micro-Controller
目 录
修正记录................................................................................................................................................................................................ 2
目 录 ...................................................................................................................................................................................................3
1
1
产品概述 ...................................................................................................................................................................................... 5
1
1.1 特性.................................................................................................................................................................................... 5
1.2 系统结构框图...................................................................................................................................................................... 6
1.3 引脚配置............................................................................................................................................................................. 7
1.4 引脚功能说明...................................................................................................................................................................... 8
1.5 引脚电路框图...................................................................................................................................................................... 9
2
2
中央处理器 (CPU)..................................................................................................................................................................... 10
2
2.1 存储器 .............................................................................................................................................................................. 10
2.1.1 程序存储器 (ROM)...................................................................................................................................................... 10
2.1.1.1 复位向量(0000H........................................................................................................................................... 11
2.1.1.2 中断向量(0008H) ............................................................................................................................................... 12
2.1.1.3 查表.................................................................................................................................................................... 13
2.1.1.4 跳转表 ................................................................................................................................................................ 15
2.1.1.5 CHECKSUM 计算 .............................................................................................................................................. 17
2.1.2 编译选项列表............................................................................................................................................................... 18
2.1.3 数据存储器(RAM) ........................................................................................................................................................ 19
2.1.4 系统寄存器 .................................................................................................................................................................. 20
2.1.4.1 系统寄存器表 ..................................................................................................................................................... 20
2.1.4.2 系统寄存器说明.................................................................................................................................................. 20
2.1.4.3 系统寄存器位定义 .............................................................................................................................................. 21
2.1.4.4 累加器 ................................................................................................................................................................ 22
2.1.4.5
2.1.4.6 程序计数器......................................................................................................................................................... 24
2.1.4.7 Y, Z 寄存器......................................................................................................................................................... 26
2.1.4.8 R 寄存器 ............................................................................................................................................................ 26
2.2 寻址模式........................................................................................................................................................................... 27
2.2.1 立即寻址...................................................................................................................................................................... 27
2.2.2 直接寻址...................................................................................................................................................................... 27
2.2.3 间接寻址...................................................................................................................................................................... 27
2.3 堆栈.................................................................................................................................................................................. 28
2.3.1 概述 ............................................................................................................................................................................. 28
2.3.2 堆栈寄存器 .................................................................................................................................................................. 29
2.3.3 堆栈操作举例............................................................................................................................................................... 30
3
3
复位 ........................................................................................................................................................................................... 31
3
3.1 概述.................................................................................................................................................................................. 31
3.2 上电复位........................................................................................................................................................................... 32
3.3 看门狗复位 ....................................................................................................................................................................... 32
3.4 掉电复位........................................................................................................................................................................... 33
3.4.1 概述 ............................................................................................................................................................................. 33
3.4.2 系统工作电压............................................................................................................................................................... 33
3.4.3 掉电复位性能改进........................................................................................................................................................ 34
3.5 外部复位........................................................................................................................................................................... 36
3.6 外部复位电路.................................................................................................................................................................... 37
3.6.1 RC 复位电路 ................................................................................................................................................................ 37
3.6.2 二极管&RC 复位电路................................................................................................................................................... 37
3.6.3
3.6.4 电压偏置复位电路........................................................................................................................................................ 38
3.6.5 外部 IC 复位................................................................................................................................................................. 39
4
4
系统时钟 .................................................................................................................................................................................... 40
4
4.1 概述.................................................................................................................................................................................. 40
4.2 时钟框图........................................................................................................................................................................... 40
4.3 OSCM 寄存器................................................................................................................................................................... 41
4.4 系统高速时钟.................................................................................................................................................................... 42
4.4.1 内部高速 RC 振荡器 .................................................................................................................................................... 42
4.4.2 外部高速时钟............................................................................................................................................................... 43
4.4.2.1 石英/陶瓷振荡器................................................................................................................................................. 43
4.4.2.2 RC 振荡器 .......................................................................................................................................................... 44
4.4.2.3 外部时钟源......................................................................................................................................................... 44
程序状态寄存器 PFLAG ..................................................................................................................................... 23
齐纳二极管复位电路 .................................................................................................................................................... 38
SONiX TECHNOLOGY CO., LTD Page 3 V1.0
Page 4
SN8P2501B
8-Bit Micro-Controller
4.5 系统低速时钟.................................................................................................................................................................... 45
4.5.1 系统时钟测试............................................................................................................................................................... 45
5
5
系统工作模式 ............................................................................................................................................................................. 46
5
5.1 概述.................................................................................................................................................................................. 46
5.2 模式切换举例.................................................................................................................................................................... 47
5.3 唤醒时间........................................................................................................................................................................... 48
5.3.1 概述 ............................................................................................................................................................................. 48
5.3.2 唤醒时间...................................................................................................................................................................... 48
5.3.3 P1W 唤醒控制寄存器................................................................................................................................................... 48
6
6
中断 ........................................................................................................................................................................................... 49
6
6.1 概述.................................................................................................................................................................................. 49
6.2 中断请求使能寄存器 INTEN .............................................................................................................................................49
6.3 中断请求寄存器 INTRQ .................................................................................................................................................... 50
6.4 GIE 全局中断.................................................................................................................................................................... 50
6.5 PUSH,
6.6 INT0(P0.0)中断 ................................................................................................................................................................ 52
6.7 T0 中断............................................................................................................................................................................. 53
6.8 TC0 中断 .......................................................................................................................................................................... 54
6.9 多中断操作举例 ................................................................................................................................................................ 55
7
7
定时器........................................................................................................................................................................................ 56
7
7.1 看门狗定时器.................................................................................................................................................................... 56
7.2 定时器 T0 .........................................................................................................................................................................57
7.2.1 概述 ............................................................................................................................................................................. 57
7.2.2 模式寄存器 T0M .......................................................................................................................................................... 58
7.2.3 计数寄存器 T0C........................................................................................................................................................... 59
7.2.4 T0 操作时序................................................................................................................................................................. 60
7.3 定时/计数器 TC0 .............................................................................................................................................................. 61
7.3.1 概述 ............................................................................................................................................................................. 61
7.3.2 模式寄存器 TC0M ........................................................................................................................................................ 62
7.3.3 计数寄存器 TC0C ........................................................................................................................................................63
7.3.4 自动重载寄存器 TC0R ................................................................................................................................................. 64
7.3.5 TC0 时钟频率输出(蜂鸣器输出)................................................................................................................................... 65
7.3.6 TC0 操作举例 .............................................................................................................................................................. 66
7.4 PWM0 .............................................................................................................................................................................. 67
7.4.1 概述 ............................................................................................................................................................................. 67
7.4.2 TC0IRQ 和 PWM 输出占空比 ...................................................................................................................................... 68
7.4.3 PWM 输出占空比与 TC0R 的变化 ...............................................................................................................................
7.4.4 PWM 编程举例 ............................................................................................................................................................ 70
8
8
I/O 端口...................................................................................................................................................................................... 71
8
8.1 I/O 端口模式 ..................................................................................................................................................................... 71
8.2 I/O 口上拉电阻 ................................................................................................................................................................. 72
8.3 I/O 漏极开路寄存器 .......................................................................................................................................................... 73
8.4 I/O 口数据寄存器 .............................................................................................................................................................. 74
9
9
指令表........................................................................................................................................................................................ 75
9
0
1
0
1
电气特性 .................................................................................................................................................................................... 75
0
1
1
1
1
1
OTP 烧录引脚 ............................................................................................................................................................................ 77
1
1
11.1 转接板插座对应的引脚分布图...................................................................................................................................... 77
11.2 烧录引脚分布图 ........................................................................................................................................................... 78
2
1
2
1
SN8P2501A 升级为 SN8P2501B 注意事项................................................................................................................................ 79
2
1
3
1
3
1
封装信息 .................................................................................................................................................................................... 81
3
1
13.1 P-DIP
13.2 SOP
13.3 SSOP
POP 处理.............................................................................................................................................................. 51
14 PIN ............................................................................................................................................................... 81
14 PIN ................................................................................................................................................................. 82
16 PIN............................................................................................................................................................... 83
69
SONiX TECHNOLOGY CO., LTD Page 4 V1.0
Page 5
1
1
1

产品概述

1.1 特性

SN8P2501B
8-Bit Micro-Controller
存储器
OTP ROM1K * 16 bits 两个内部中断源:T0, TC0 RAM:48 * 8 bits 一个外部中断源:INT0 四层堆栈缓存器
I/O 端口 T0:0.5sec RTC 基本定时器
输入输出端口:P0, P1, P2, P5 TC0:自动重新加载定时器/计数器/蜂鸣器输出 输入端:P1.1 可编程漏极开路:P1.0 唤醒功能:P0, P1 电平变缓触发 低速 RC (16KHz @3V, 32KHz @5V). 带上拉电阻:P0, P1, P2, P5 外部中断信号触发沿:寄存器 PEDGE 控制的 P0.0♦双时钟系统
3-Level LVD
复位及电源监控系统 内部低速时钟:16KHz(3V), 32KHz(5V) RC
强大的指令系统
单时钟指令周期 (1T) 普通模式:高、低速时钟同时工作 大部分指令仅需一个周期 低速模式:低速时钟有效
JMP 指令可以在整个 ROM 区执行 睡眠模式:高、低速时钟都停止工作 CALL 指令可寻址全部 ROM 区 绿色模式:由 T0 周期性的唤醒 查表功能 (MOVC)可用于全部 ROM
PDIP 14 pins SOP 14 pins SSOP 16 pins
) 特性选择列表
定时器
芯片
SN8P2501A 1K 48 4 V V 1 V 12 V V V 5 DIP14/SOP14/SSOP16 SN8P2501B 1K 48 4 V V 3 V 12 V V V 5 DIP14/SOP14/SSOP16
ROM
(word)
RAM
(Byte)
堆 栈
T0 TC0
LVD 层数
IHRC I/O
三个中断源
两个 8-bit 定时/计数器
内置看门狗定时器和内部时钟源
外部高速时钟:RC 模式高达 10MHz 外部高速时钟:晶振模式高达 16MHz 内部高速时钟:16MHz RC
工作模式
封装
绿色 模式
低速 模式
PWM
蜂鸣器
唤醒功能的
引脚个数
封装
SONiX TECHNOLOGY CO., LTD Page 5 V1.0
Page 6

1.2 系统结构框图

PC
SN8P2501B
8-Bit Micro-Controller
内部高速RC
振荡器
IR
FLAGS
ALU
ACC
中断控制
P0 P5P1
OTP
ROM
外部高速振
荡器
定时器&计数器
内部低速RC
时序产生器
RAM
系统寄存器
振荡器
P2
LVD
(低电压检测)
看门狗定时器
PWM 0
BUZZER 0
PWM0
BUZZER0
SONiX TECHNOLOGY CO., LTD Page 6 V1.0
Page 7

1.3 引脚配置

SN8P2501BP (P-DIP 14 pins) SN8P2501BS (SOP 14 pins) SN8P2501BX (SSOP 16 pins)
SN8P2501B
P2.2 1 U 14 P2.3 P2.1 2 13 P2.4 P2.0 3 12 P2.5 VDD 4 11 VSS
P1.3/XIN 5 10 P0.0/INT0
P1.2/XOUT 6 9 P1.0
P1.1/RST/VPP 7 8 P5.4/BZ0/PWM0
SN8P2501BP SN8P2501BS
P2.2 1 U 16 P2.3 P2.1 2 15 P2.4 P2.0 3 14 P2.5 VDD 4 13 VSS VDD 5 12 VSS
P1.3/XIN 6 11 P0.0/INT0
P1.2/XOUT 7 10 P1.0
P1.1/RST/VPP 8 9 P5.4/BZ0/PWM0
SN8P2501BX
8-Bit Micro-Controller
SONiX TECHNOLOGY CO., LTD Page 7 V1.0
Page 8

1.4 引脚功能说明

引脚 类型 说明
VDD, VSS P
P1.1/RST/VPP I, P
P1.3/XIN I/O
P1.2/XOUT I/O
P0.0/INT0 I/O
P1.0 I/O
P2 [5:0] I/O
P5.4/BZ0.PWM0 I/O
SN8P2501B
8-Bit Micro-Controller
数字电路电源输入端 P1.1:禁止外部复位的情况下仅作输入引脚 (施密特触发器)
P1.1 无内置上拉电阻; 具有唤醒功能;
RST:系统复位输入引脚,施密特触发器结构,低电平触发,一般处于高电平状态 VPPOTP 烧录引脚 P1.3 输入/输出引脚,输入时为施密特触发器结构;
内置上拉电阻; 具有唤醒功能;
XIN:外部振荡器(晶振或 RC)有效时作为振荡器输入引脚 P1.2 输入/输出引脚,输入引脚为施密特触发器结构
内置上拉电阻; 唤醒功能;
XOUT:外部晶振模式时作为振荡器输出引脚 P0.0 输入/输出引脚,输入引脚为施密特触发器结构;
内置上拉电阻; 具有唤醒功能;
INT0 触发引脚(施密特触发器); TC0 事件计数器时钟输入引脚; PP1.0 输入/输出引脚,漏极开路输入引脚为施密特触发器结构;
内置上拉电阻; 输入/输出引脚,输入引脚为施密特触发器结构; 内置上拉电阻; P5.4 输入/输出引脚,输入引脚为施密特触发器结构; 内置上拉电阻; TC0 2 分频输出引脚,PWM 和蜂鸣器引脚;
SONiX TECHNOLOGY CO., LTD Page 8 V1.0
Page 9

1.5 引脚电路框图

Port 0, 2, 5
SN8P2501B
8-Bit Micro-Controller
Pull-Up
Port 1.0
Port 1.2, 1.3
Pin
Pin
PnM
PnM
P1OC
Pull-Up
Pull-Up
PnM, PnUR
PnM, PnUR
Open-Drain
Output
Latch
Output
Latch
Input Bus
Output Bus
Input Bus
Output Bus
Port 1.1
Pin
Oscillator
Code Option
Pin
PnM
PnM, PnUR
Ext. Reset
Code Option
Output
Latch
Int. Bus
Int. Rst
Input Bus
Output Bus
Int. Osc.
SONiX TECHNOLOGY CO., LTD Page 9 V1.0
Page 10
2
2
2

中央处理器 (CPU)

2.1 存储器

2.1.1 程序存储器 (ROM)

) 1 words ROM
03FCH 03FDH
SN8P2501B
8-Bit Micro-Controller
0000H
0001H
. .
0007H 0008H 0009H
.
. 000FH 0010H 0011H
.
.
.
.
.
03FEH 03FFH
ROM
复位向量
通用区域
中断向量 用户中断向量
通用区域
系统保留
用户复位向量 跳至用户程序初始端
用户程序
用户程序结束
SONiX TECHNOLOGY CO., LTD Page 10 V1.0
Page 11
SN8P2501B
8-Bit Micro-Controller
2.1.1.1 复位向量(0000H
一个字长的系统复位向量。
) 上电复位(NT0=1, NPD=0) ) 看门狗复位(NT0=0, NPD=0) ) 外部复位(NT0=1, NPD=1)
系统执行完上电复位、外部复位或看门狗定时器溢出复位后,程序将从 0000H 处开始重新执行,系统寄存器也都将 重置为默认值。根据 PFLAG 寄存器中的 NT0 NPD 标志位的内容可以判断系统复位状况。下面一段程序演示了如何定 义 ROM 中的复位向量。
¾ 例:定义复位向量。
ORG 0 ; 0000H JMP START
ORG 10 START:
ENDP
; 跳至用户程序
; 0010H, 用户程序首地址 ; 用户程序
; 程序结束
SONiX TECHNOLOGY CO., LTD Page 11 V1.0
Page 12
SN8P2501B
8-Bit Micro-Controller
2.1.1.2 中断向量(0008H)
长度为 1-word,用于执行中断请求。当系统响应某个中断请求时,程序计数器(PC)的当前值存入堆栈缓冲器后转 至中断向量 0008H。用户可以自己定义中断向量,下面的程序说明了如何在程序中定义中断向量。
注:“PUSH”, “POP” 指令用于存储和恢复 ACC/PFLAGNT0NTD 不受影响。PUSH/POP 缓存器是唯一的,且仅有一层。
¾ 例:定义中断向量,中断服务程序就在 ORG 8 之后。
.CODE
START:
; JMP START
ENDP
¾ 例:定义中断向量,中断程序位于用户程序之后。 .CODE ORG 0 ; 0000H JMP START …
JMP MY_IRQ
START:
JMP START …
MY_IRQ:
ENDP
注:从上面的程序中容易得出 SONiX 的编程规则,有以下几点:
1. 地址 0000H “JMP”指令使程序从头开始执行;
2. 地址 0008H 是中断向量;
3. 用户的程序应该是一个循环。
ORG 0 ; 0000H JMP START
ORG 8 PUSH
POP RETI
; 跳至用户程序
; 中断向量 ; 保存 ACC PFLAG
; 恢复 ACC PFLAG ; 中断结束
; 用户程序开始
; 用户程序结束
; 程序结束
; 跳至用户程序
ORG 8
; 中断向量 ; 0008H,跳至中断程序
ORG 10H
; 0010H, 用户程序开始
; 用户程序结束.
; 中断程序开始
PUSH
POP RETI
; 保存 ACC
PFLAG
; 恢复 ACC PFLAG ; 中断程序结束
; 程序结束
SONiX TECHNOLOGY CO., LTD Page 12 V1.0
Page 13
SN8P2501B
8-Bit Micro-Controller
2.1.1.3 查表
ROM 数据进行查找,寄存器 Y 指向查找数据地址的高字节(bit8~bit15),寄存器 Z 指向地址的低字节(bit0~bit7)。 执行完 MOVC 指令后,数据低字节内容被存入 ACC 中,而数据高字节内容被存入 R 寄存器。
¾ 例:查找 ROM 地址为“TABLE1”的值。 B0MOV Y, #TABLE1$M B0MOV Z, #TABLE1$L MOVC
INCMS Z JMP @F
INCMS Y
NOP ; @@:
; MOVC
; TABLE1: DW 0035H
DW 5105H DW 2012H
注:当寄存器 Z 溢出(从 0xFF 变为 0x00)时,寄存器 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
@@:
; MOVC
; TABLE1: DW 0035H
DW 5105H DW 2012H
; 设置 TABLE1 地址高字节 ; 设置 TABLE1 地址低字节 ; 查表,R = 00H, ACC = 35H
; 查找下一地址
; Z 没有溢出 ; Z 溢出(FFH Æ 00), Æ Y=Y+1
; 查表,R = 51H, ACC = 05H.
; 定义数据表 (16 bits) 数据
; 没有溢出
; 没有溢出
; 设置 TABLE1 地址中间字节 ; 设置 TABLE1 地址低字节 ; 查表,R = 00HACC = 35H
; 查找下一地址数据
; 查表, R = 51H, ACC = 05H.
; 定义数据表 (16 bits) 数据
SONiX TECHNOLOGY CO., LTD Page 13 V1.0
Page 14
SN8P2501B
下面的程序通过累加器对 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 ; Z = Z + BUF. B0ADD Z, A
B0BTS1 FC JMP GETDATA ; FC = 0
INCMS Y ; FC = 1 NOP
; 设置 TABLE1 地址中间字节 ; 设置 TABLE1 地址低字节
; 检查进位标志
; 存储数据,如果 BUF = 0,数据为 0x0035 ; 如果 BUF = 1,数据=0x5105 ; 如果 BUF = 2,数据=0x2012
; 定义数据表 (16 bits) 数据
8-Bit Micro-Controller
SONiX TECHNOLOGY CO., LTD Page 14 V1.0
Page 15
SN8P2501B
8-Bit Micro-Controller
2.1.1.4 跳转表
跳转表能够实现多地址跳转功能。PCL 和 ACC 的值相加即可得到新的 PCL。如果 PCL+ACC 后发生溢出,PCH 则 自动加 1。由此得到的新的 PC 值指向一系列跳至指令列表。如此可通过修改 ACC 的值轻松实现多地址的跳转。
注:PCH 只支持 PC 增量运算,而不支持 PC 减量运算。PCL+ACC 后如有进位,PCH 的值会自动加 1PCL-ACC 后若有借
位,PCH 的值将保持不变,用户在设计应用时要加以注意。
¾ 例:跳转表 ORG 0X0100
B0ADD PCL, A JMP A0POINT JMP A1POINT JMP A2POINT JMP A3POINT
SONiX 提供一个宏程序以保证可靠执行跳转表功能,它将检测 ROM 边界并自动将跳转表移至适当的位置。但采用该 宏程序会占用部分 ROM 空间。
¾ 例:如果跳转表在 ROM 中跨段,则程序可能出错。 @JMP_A MACRO VAL
IF (($+1) !& 0XFF00) !!= (($+(VAL)) !& 0XFF00)
JMP ($ | 0XFF)
ORG ($ | 0XFF)
ENDIF
ADD PCL, A
ENDM
注:“VAL”为跳转表列表中列表个数。
¾ 例:宏 MACRO3.H”中,“@JMP_A”的应用。
B0MOV A, BUF0
@JMP_A 5
JMP A0POINT
JMP A1POINT
JMP A2POINT
JMP A3POINT
JMP A4POINT
; 跳转表从 ROM 前端开始
; PCL = PCL + ACC,PCL 溢出时 PCH 加 1 ; ACC = 0,跳至 A0POINT ; ACC = 1,跳至 A1POINT ; ACC = 2,跳至 A2POINT ; ACC = 3,跳至 A3POINT
; “BUF0”从 0 至 4. ; 列表个数为 5 ; ACC = 0,跳至 A0POINT ; ACC = 1,跳至 A1POINT ; ACC = 2,跳至 A2POINT ; ACC = 3,跳至 A3POINT ; ACC = 4,跳至 A4POINT
SONiX TECHNOLOGY CO., LTD Page 15 V1.0
Page 16
SN8P2501B
8-Bit Micro-Controller
如果跳转表恰好位于 ROM BANK 边界处(0x00FF~0x0100),宏“@JMP_A”将调整跳转表到适当的位置(0x0100)
¾ 例:“@JMP_A 运用举例 ; 编译前 ROM 地址 B0MOV A, BUF0 @JMP_A 5 0X00FD JMP A0POINT 0X00FE JMP A1POINT 0X00FF JMP A2POINT 0X0100 JMP A3POINT 0X0101 JMP A4POINT
; 编译后 ROM 地址 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 V1.0
Page 17
SN8P2501B
2.1.1.5 CHECKSUM 计算
ROM 的末端位置的几个 word 限制使用,进行 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 ; Z=Z+1 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:
; low end address 地址存入 end_addr1
; middle end address 存入 end_addr2 ; Y 清零 ; Z 清零
; 标志位 C 清零
; 检验 YZ 地址= 代码结束地址?
; 如果 Z != 00H,进行下一个计算 ; 如果 Z = 00H Y1
; 检验 Z 地址= 代码结束地址? ; 否,则进行 checksum 计算
; 是,则检测是否 Y = middle end address ; 不等则跳至 checksum 计算 ; 相等,则 checksum
; 转至 checksum 计算
计算已结束
8-Bit Micro-Controller
SONiX TECHNOLOGY CO., LTD Page 17 V1.0
Page 18
SN8P2501B
8-Bit Micro-Controller

2.1.2 编译选项列表

编译选项 内容 功能说明
Noise_Filter
Fcpu
High_Clk
Watch_Dog
Reset_Pin
Low Power
LVD
Security
注:
1. 在干扰严重的情况下,建议开启杂讯滤波功能,此时 Fcpu = Fosc/4 ~ Fosc/128,并 将 Watch_Dog 设置为 “Always_On”
2. 如果用户定义看门狗为“Always_On”,编译器将自动开启看门狗定时器;
3. 编译选项 Fcpu 仅针对外部振荡信号,在进入内部低速模式时,Fcpu = FILRC/4
Enable
Disable Fhosc/1 Fhosc/2 Fhosc/4 Fhosc/8
Fhosc/16 IHRC_16M IHRC_RTC
RC
32K X’tal
12M X’tal
4M X’tal
Always_On
Enable
Disable
Reset
P11
Enable
Disable
LVD_L
LVD_M
LVD_H
Enable
Disable
开启杂讯滤波功能,Fcpu = Fosc/4~Fosc/16。 关闭杂讯滤波功能,Fcpu = Fosc/1~Fosc/16。 指令周期 = 时钟周期,必须关闭杂讯滤波功能。 指令周期 = 2 个时钟周期,必须关闭杂讯滤波功能。 指令周期 = 4 个时钟周期 指令周期 = 8 个时钟周期 指令周期 = 16 个时钟周期 内部高速 16MHz RC,XIN/XOUT 作为 P1.3/P1.2 输入输出引脚 内部高速 16MHz RC,0.5sec RTC,XIN/XOUT 为 P1.3/P1.2 输入输出引脚 廉价 RC 振荡电路提供内部高速时钟, XOUT 为 P1.2 输入输出引脚 低频,省电石英振荡器(如 32.768KHz) 作为外部高速时钟源 高速石英/陶瓷振荡器(10MHz~12MHz)作为外部高速时钟源。 标准石英/陶瓷振荡器(1MHz~10Mhz)作为外部高速时钟源。 看门狗定时器通常处于有效状态,即使在睡眠或绿色模式中。 看门狗定时器有效,在睡眠和绿色模式时关闭。 关闭看门狗。 外部复位引脚有效。 使能 P1.1 输入引脚,无上拉电阻。 开启省电功能以减小工作电流。 一般情况
VDD 低于 2.0V 时,LVD 复位系统 VDD 低于 2.0V 时,LVD 复位系统 LVD 24-bit PFLAG 寄存器作为 2.4V 低电压监测器 VDD 低于 2.4V 时,LVD 复位系统 LVD 36-bit PFLAG 寄存器作为 3.6V 低电压监测器
允许 ROM 代码加密。 禁止 ROM 代码加密。
SONiX TECHNOLOGY CO., LTD Page 18 V1.0
Page 19

2.1.3 数据存储器(RAM)

) 48 X 8-bit RAM
Address RAM
000h
“ “ “ “ “
BANK 0
02Fh 080h
“ “ “ “ “
0FFh
通用区域
系统寄存器
bank 0 结束
SN8P2501B
8-Bit Micro-Controller
80h~FFh of Bank 0 存储寄存器 (128 bytes).
SONiX TECHNOLOGY CO., LTD Page 19 V1.0
Page 20
SN8P2501B
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
- - - - - - - - - - - - - - - -
A
- - - - - - - - P0M - - - - -
B
P1W P1M P2M - - P5M - - INTRQ INTEN OSCM - WDTR TC0R PCL PCH
C
P0 P1 P2 - - P5 - - T0M T0C TC0M TC0C - - - STKP
D
P0UR P1UR - - - P5UR - @YZ - P1OC - - - - - -
E
- - - - - - - - STK3L STK3H STK2L STK2H STK1L STK1H STK0L STK0H
F
2.1.4.2 系统寄存器说明
PEDGE =
PFLAG =
P1W =
PnM =
P1OC =
INTRQ =
OSCM =
T0M =
TC0M =
TC0R =
STKP =
ROM 页及特殊标志寄存器 P1 唤醒寄存器 P0.0 触发方向寄存器 Pn 输入/输出模式寄存器 P1 漏极开路控制寄存器
中断请求寄存器 振荡器模式寄存器
T0 模式寄存器 TC0 模式寄存器 TC0 自动重装数据缓存器 堆栈指针缓存器
PCH, PCL =
STK0~STK3 =
R =
Y, Z =
@YZ =
Pn =
PnUR =
INTEN =
T0C =
TC0C =
WDTR =
工作寄存器,ROM 查表数据缓存器 工作寄存器,@YZ 和 ROM 寻址寄存器
RAM YZ 间接寻址指针 Pn 数据缓存器 Pn 上拉电阻控制寄存器
中断使能寄存器 程序计数器
T0 计数寄存器 TC0 计数寄存器
看门狗定时器清零寄存器 堆栈缓存器
- PEDGE
SONiX TECHNOLOGY CO., LTD Page 20 V1.0
Page 21
SN8P2501B
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
0B8H - - - - - - - P00M R/W P0M 0BFH - - - P00G1 P00G0 - - - R/W PEDGE
0C0H - - - - P13W P12W P11W P10W W 0C1H - - - P14M P13M P12M - P10M R/W P1M I/O 0C2H - - P25M P24M P23M P22M P21M P20M R/W P2M I/O 0C5H - - - P54M - - - - R/W P5M I/O 0C8H - - TC0IRQ T0IRQ - - - P00IRQ R/W INTRQ
0C9H - - TC0IEN T0IEN - - - P00IEN R/W INTEN 0CAH - - - CPUM1 CPUM0 CLKMD STPHX - R/W OSCM 0CCH WDTR7 WDTR6 WDTR5 WDTR4 WDTR3 WDTR2 WDTR1 WDTR0 W WDTR 0CDH TC0R7 TC0R6 TC0R5 TC0R4 TC0R3 TC0R2 TC0R1 TC0R0 W TC0R 0CEH PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 R/W PCL 0CFH - - - - - - PC9 PC8 R/W PCH
0D0H - - - - - - - P00 R/W 0D1H - - - - P13 P12 P11 P10 R/W 0D2H - - P25 P24 P23 P22 P21 P20 R/W 0D5H - - - P54 - - - - R/W 0D8H T0ENB T0rate2 T0rate1 T0rate0 - - - T0TB R/W T0M
0D9H T0C7 T0C6 T0C5 T0C4 T0C3 T0C2 T0C1 T0C0 R/W T0C 0DAH TC0ENB TC0rate2 TC0rate1 TC0rate0 TC0CKS ALOAD0 TC0OUT PWM0OUT R/W TC0M 0DBH TC0C7 TC0C6 TC0C5 TC0C4 TC0C3 TC0C2 TC0C1 TC0C0 R/W TC0C 0DFH GIE - - - - - STKPB1 STKPB0 R/W
0E0H - - - - - - - P00R W 0E1H - - - - P13R P12R - P10R W 0E2H - - P25R P24R P23R P22R P21R P20R W 0E5H - - - P54R - - - - W 0E7H @YZ7 @YZ6 @YZ5 @YZ4 @YZ3 @YZ2 @YZ1 @YZ0 R/W @YZ 0E9H - - - - - - - P10OC W
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
P1W 唤醒寄存器
P0 数据缓存器 P1 数据缓存器 P2 数据缓存器 P5 数据缓存器
STKP 堆栈指针 P0 上拉电阻 P1 上拉电阻 P2 上拉电阻 P5 上拉电阻
P1OC 漏极开路
1. 为了避免系统出错,寄存器各位的值应与上表所示一致;
2. 所有寄存器名都已在 SN8ASM 编译器中做了宣告;
3. SN8ASM 编译器中对寄存器位的引用必须以“F”开头;
4. 指令 “b0bset”, “b0bclr”, ”bset”, ”bclr”只能用于 “R/W”(可读写)的寄存器;
5. 详细的内容请参阅系统寄存器参照列表
备注
SONiX TECHNOLOGY CO., LTD Page 21 V1.0
Page 22
SN8P2501B
8-Bit Micro-Controller
2.1.4.4 累加器
8-bit 数据寄存器 ACC ALU 和数据存储器之间进行数据的传送和操作。如果操作结果为零(Z)或有进位产生(C
DC),标志寄存器 PFLAG 中相应位会发生变化。
ACC 并不在 RAM 中,因此在立即寻址模式中不能用“B0MOV”指令对其进行读写。
¾ 例:读/ ACC
; 读取 ACC 中的数据并存入 BUF
MOV BUF, A
; 数据写入 ACC
MOV A, #0FH
; BUF 中的数据写入 ACC
MOV A, BUF
B0MOV A, BUF
系统执行中断操作时,ACC PFLAG 中的数据不会自动存储,必须将中断入口处的 ACC PFLAG 中的数据送入
存储器进行保存。由程序通过“PUSH”“POP”指令,对系统寄存器进行存储及恢复。
¾ 例:ACC 和工作寄存器中断保护操作。
INT_SERVICE:
PUSH
.
POP
RETI
; PFLAG ACC 数据送入缓冲器.
; 恢复 ACC PFLAG
; 退出中断
SONiX TECHNOLOGY CO., LTD Page 22 V1.0
Page 23
SN8P2501B
8-Bit Micro-Controller
2.1.4.5 程序状态寄存器 PFLAG
寄存器 PFLAG 中包含 ALU 运算状态信息、系统复位状态信息和 LVD 检测信息,其中,位 NT0 NPD 显示系统复
位状态信息,包括上电复位、LVD 复位、外部复位和看门狗复位;位 CDC Z 显示 ALU 的运算信息。位 LVD24
LVD36 显示了芯片供电电源状况。
086H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
PFLAG NT0 NPD LVD36 LVD24 - C DC Z
/
复位后
Bit [7:6] NT0, NPD:复位状态标志
Bit 5 LVD36LVD 3.6V 工作标志, LVD 编译选项为 LVD_H 时有效。
Bit 4 LVD24LVD 2.4V 工作标志,仅支持 LVD 编译选项为 LVD_M。
Bit 2 C:进位标志。
1 = 加法运算后有进位、减法运算没有借位发生或移位后移出逻辑“1”或比较运算的结果≥0 0 = 加法运算后没有进位、减法运算有借位发生或移位后移出逻辑“0”或比较运算的结果<0。
Bit 1 DC:辅助进位标志。
Bit 0 Z:零标志。
注:关于标志位 CDC Z 的更多信息请参阅指令集相关内容。
R/W R/W R R - R/W R/W R/W
- - 0 0 - 0 0 0
NT0 NPD
0 0 0 1 1 0 1 1
复位状态 看门狗复位 保留 LVD 复位 外部复位
0 = 无效(VDD > 3.6V) 1 = 有效(VDD3.6V)。
0 =无效(VDD > 2.4V) 1 =有效(VDD2.4V)。
1 = 加法运算时低四位有进位,或减法运算后没有向高四位借位; 0 = 加法运算时低四位没有进位,或减法运算后有向高四位借位。
1 = 算术/逻辑/分支运算的结果为零; 0 = 算术/逻辑/分支运算的结果非零。
SONiX TECHNOLOGY CO., LTD Page 23 V1.0
Page 24
SN8P2501B
8-Bit Micro-Controller
2.1.4.6 程序计数器
10-bit 程序计数器 PC 分为 2-bit 高字节和 8-bit 低字节,用于定位程序执行的指令。程序运行过程中,每执行一条指
令,程序计数器 PC 将自动加 1
但是,如果程序执行 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 跳过待执行的下一条指令。
JMP C0STEP …
C0STEP: NOP
B0MOV A, BUF0
JMP C1STEP …
C1STEP: NOP
JMP C0STEP …
C0STEP: NOP
INCS 指令:
JMP C0STEP ; … C0STEP: NOP
INCMS 指令:
JMP C0STEP C0STEP: NOP
DECS 指令:
JMP C0STEP C0STEP: NOP
DECMS 指令:
JMP C0STEP C0STEP: NOP
- - - - - - PC9 PC8 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
- - - - - - 0 0 0 0 0 0 0 0 0 0
共有 9 条单地址跳转指令:CMPRS, INCS, INCMS, DECS, DECMS, BTS0, BTS1, B0BTS0, B0BTS1,如果这些指
B0BTS1
B0BTS0
如果 ACC 的值与立即数或存储器的值相等,则 PC 值将加 2 以跳过下一条指令。
CMPRS
如果 PC 值加 1 时从 0xFF 溢出到 0x00, PC 值将加 2 以跳过下一条指令。
INCS
INCMS
如果 PC 值减 1 时从 0x00 溢出到 0xFF PC 值将加 2 以跳过下一条指令。
DECS
DECMS
FC
FZ
A, #12H
BUF0
BUF0
BUF0
BUF0
; 如果 Carry_flag = 1 则跳过下一条指令 ; 否则跳至 C0STEP.
; BUF0 的值送入 ACC. ; 如果 Zero flag = 0,跳过下一条指令 ; 否则转至 C1STEP.
; 如果 ACC = 12H,跳过下一条指令 ; 否则转至 C0STEP.
SONiX TECHNOLOGY CO., LTD Page 24 V1.0
Page 25
SN8P2501B
8-Bit Micro-Controller
) 多地址跳转
执行 JMP ADD M,AM=PCL)指令可实现多地址跳转。PCL 溢出并向 PCH 产生进位时,可采用指令“ADD M,A”, ”ADC M,A” “B0ADD M,A”。对于跳转表及其它应用,可采用以上三条指令计算 PC 值而不需要担心 PCL 溢出的 问题。
注:PCH 仅支持 PC 的递增运算而不支持递减运算。当 PCLACC 执行完后有进位时,PCH 会自动加 1。 若 PCL-ACC 执行
完后有借位发生,此时 PCH 的值保持不变。
¾ 例:如果 PC = 0323HPCH = 03HPCL = 23H)。
; PC = 0323H
MOV A, #28H
B0MOV PCL, A
; 跳转至 0328H
; PC = 0328H
MOV A, #00H
B0MOV PCL, A
; 转至 0300H
¾ 例:如果 PC = 0323HPCH = 03HPCL = 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 25 V1.0
Page 26
SN8P2501B
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 YBIT7 YBIT6 YBIT5 YBIT4 YBIT3 YBIT2 YBIT1 YBIT0
/
复位后
R/W R/W R/W R/W R/W R/W R/W R/W
- - - - - - - -
083H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Z ZBIT7 ZBIT6 ZBIT5 ZBIT4 ZBIT3 ZBIT2 ZBIT1 ZBIT0
/
复位后
R/W R/W R/W R/W R/W R/W R/W R/W
- - - - - - - -
¾ 例:用 Y, Z 作为数据指针寻址 RAM bank0 025H
B0MOV Y, #00H
B0MOV Z, #25H
B0MOV A, @YZ
; Y 指向 RAM bank 0 ; Z 指向 25H ; 数据送入 ACC
¾ 例:利用数据指针@YZ RAM 数据清零。
B0MOV Y, #0 ; Y = 0, bank 0
B0MOV Z, #07FH
; Z = 7FH, RAM 区的最后单元;
CLR_YZ_BUF:
CLR @YZ
; @YZ 清零
DECMS Z ;
JMP CLR_YZ_BUF
; 不为零
CLR @YZ END_CLR: ;
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 RBIT7 RBIT6 RBIT5 RBIT4 RBIT3 RBIT2 RBIT1 RBIT0
/
复位后
R/W R/W R/W R/W R/W R/W R/W R/W
- - - - - - - -
SONiX TECHNOLOGY CO., LTD Page 26 V1.0
Page 27

2.2 寻址模式

2.2.1 立即寻址

立即寻址就是把一个立即数送入 ACC 或指定的 RAM 单元。
¾ 例:立即数 12H 送入 ACC
MOV A, #12H
¾ 例:立即数 12H 送入寄存器 R
B0MOV R, #12H
注:立即数寻址范围必须介于 RAM 0x80~0x87 单元
SN8P2501B
8-Bit Micro-Controller

2.2.2 直接寻址

直接寻址即是实现 RAM 单元与 ACC 之间的数据传输。
¾ 例:RAM 0x12 中数据送入 ACC
B0MOV A, 12H
¾ 例:将 ACC 中数据送入 RAM 0x12 单元。
B0MOV 12H, A

2.2.3 间接寻址

间接寻址即是通过指针寄存器(Y/Z)访问 RAM 数据。
¾ 例:用 @YZ 实现间接寻址。
B0MOV Y, #0
B0MOV Z, #12H
B0MOV A, @YZ
; Y 清零以寻址 RAM bank 0. ; 立即数 12H 送入 Z
SONiX TECHNOLOGY CO., LTD Page 27 V1.0
Page 28
SN8P2501B
8-Bit Micro-Controller

2.3 堆栈

2.3.1 概述

堆栈缓存器共 4 层,当程序进入中断或执行 CALL 指令时,用于存放 PC 值。寄存器 STKP 指向堆栈的当前层,STKnHSTKnL 具体存放 PC 值。
RET /
RETI
CALL /
INTERRUPT
PCH
PCL
STACK Level
STKP - 1STKP + 1
STKP = 3
STKP = 2
STKP = 1
STKP
STKP = 0
STACK Buffer
High Byte
STK3H
STK2H
STK1H
STKP
STK0H
STACK Buffer
Low Byte
STK3L
STK2L
STK1L
STK0L
SONiX TECHNOLOGY CO., LTD Page 28 V1.0
Page 29
SN8P2501B
8-Bit Micro-Controller

2.3.2 堆栈寄存器

2-bit 堆栈指针 STKP 用于存放当前访问的堆栈缓存器的地址,9-bit 数据存储器 STKnH STKnL 用于临时存放堆栈 操作地址。
入栈操作时 STKP 的值减 1,相反,执行出栈操作时,STKP 的值则加 1。因此,STKP 总是指向堆栈最顶层的缓存 器。程序进入中断或执行 CALL 指令之前,程序计数器 PC 的值被存入堆栈缓存器中。堆栈操作遵循 LIFO(后进先出) 的规则,堆栈指针 STKP 和堆栈缓存器(STKnH STKnL) 位于系统寄存器的 Bank 0
0DFH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 STKP GIE - - - - - STKPB1 STKPB0
/
复位后
Bit[2:0] STKPBn: 堆栈指针 (n = 0 ~ 2)
Bit 7 GIE: 全局中断控制位。
0 = 禁止 1 = 允许(详见中断章节)。
¾ 例:系统复位时,堆栈指针寄存器内容为默认值,但强烈建议在程序初始部分另行程序设定,如下面所示: MOV A, #00000011B B0MOV STKP, A
0F0H~0F8H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
STKnH
/
复位后
0F0H~0F8H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
STKnL
/
复位后
STKn = STKnH , STKnL (n = 3 ~ 0)
R/W - - - - - R/W R/W
0 - - - - - 1 1
- - - - - - SnPC9 SnPC8
- - - - - - R/W R/W
- - - - - - 0 0
SnPC7 SnPC6 SnPC5 SnPC4 SnPC3 SnPC2 SnPC1 SnPC0
R/W R/W R/W R/W R/W R/W R/W R/W
0 0 0 0 0 0 0 0
SONiX TECHNOLOGY CO., LTD Page 29 V1.0
Page 30
SN8P2501B
8-Bit Micro-Controller

2.3.3 堆栈操作举例

执行程序调用指令 CALL 和响应中断复位时,堆栈指针 STKP 的值减 1,指针指向下一个堆栈缓存器。同时,对程序 计数器 PC 的内容进行入栈保存。
堆栈层数
0 1 2 3 4
> 4
STKPB1 STKPB0
STKP
1 1 Free Free 1 0 STK0H STK0L 0 1 STK1H STK1L 0 0 STK2H STK2L 1 1 STK3H STK3L 1 0 - -
对应每个入栈操作,都有一个出栈操作来恢复程序计数器PC 的值。RETI 指令用于中断服务程序中,RET用于子程 序调用。出栈时,STKP 1 并指向下一个空闲堆栈缓冲器。堆栈恢复操作如下表所示:
堆栈层数
4 3 2 1 0
STKPB1 STKPB0
STKP
1 1 STK3H STK3L 0 0 STK2H STK2L 0 1 STK1H STK1L 1 0 STK0H STK0L 1 1
堆栈缓存器
高字节 低字节
堆栈缓存器
高字节 低字节
备注
-
-
-
-
-
溢出出错
备注
-
-
-
-
-
-
SONiX TECHNOLOGY CO., LTD Page 30 V1.0
Page 31
SN8P2501B
8-Bit Micro-Controller
3
3
3

复位

3.1 概述

在如下 4 种情况下系统会复位:
z 上电复位 z 看门狗复位 z 掉电复位 z 外部复位 (仅在外部复位引脚处于使能状态)
当上述任何一种复位发生时,所有的系统寄存器被初始化,程序停止运行同时计数器 PC 清零。复位结束后,系统重 启,程序从 ORG 0 处开始执行。标志位 NT0 NPD 用于指示系统的复位状态,可对这两个寄存器编程控制系统复位方 式。
086H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
PFLAG NT0 NPD - - - C DC Z
/
复位后
Bit [7:6] NT0, NPD:复位状态标志
NT0 NPD
任何一种复位情况都需要一定的响应时间,系统提供完善的复位流程以保证复位动作的顺利进行。对于不同类型的振 荡器,复位完成所需要的时间也不同。因此,VDD 的上升速度和不同晶振的起振时间都不固定。RC 振荡器的起振时间最 短,晶体振荡器的起振时间则较长。在用户终端使用的过程中,应注意考虑主机对上电复位时间的要求。
R/W R/W - - - R/W R/W R/W
- - - - - 0 0 0
复位情况 说明
0 0 0 1 1 0 1 1
看门狗复位 看门狗溢出 保留 上电及 LVD 复位 电源电压低于 LVD 检测值 外部复位 外部复位引脚检测到低电平
-
VDD
Power
External Reset
Watchdog Reset
System Status
SONiX TECHNOLOGY CO., LTD Page 31 V1.0
VSS
VDD
VSS
Watchdog Normal Run
Watchdog Stop
System Normal Run
System Stop
LVD Detect Level
Power On Delay Time
External Reset Low Detect
External Reset High Detect
External Reset Delay Time
Watchdog Overflow
Watchdog Reset Delay Time
Page 32
SN8P2501B
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 32 V1.0
Page 33
SN8P2501B
8-Bit Micro-Controller

3.4 掉电复位

3.4.1 概述

掉电复位针对外部因素引起的系统电压跌落情形(例如,干扰或外部负载的变化),掉电复位可能会引起系统工作状 态不正常或程序执行错误。
VDD
System Work
Well Area
V1
System Work
Error Area
VSS
V2
掉电复位示意图
V3
电压跌落可能会进入系统死区。系统死区意味着电源不能满足系统的最小工作电压要求。上图是一个典型的掉电复位 示意图。图中,VDD 受到严重的干扰,电压值降的非常低。虚线以上区域系统正常工作,在虚线以下的区域内,系统进 入未知的工作状态,这个区域称作死区。当 VDD 跌至 V1 时,系统仍处于正常状态;当 VDD 跌至 V2 V3 时,系统进 入死区,则容易导致出错。以下情况系统可能进入死区:
DC 应用中:
DC 应用中一般都采用电池供电,当电池电压过低或 MCU 驱动负载时,系统电压可能跌落并进入死区。这时,电源 不会进一步下降到系统复位电压,因此系统维持在死区。
AC 应用中:
系统采用 AC 供电时,DC 电压值受 AC 电源中的噪声影响。当外部负载过高,如驱动马达时,负载动作产生的干扰 也影响到 DC 电源。VDD 若由于受到干扰而跌落至最低工作电压以下时,则系统工作电压会失去稳定状态。
AC 应用中,系统上、下电时间都较长。其中,上电时序保护使得系统正常上电,但下电过程却和 DC 应用中情形 类似,AC 电源关断后,VDD 电压在缓慢下降的过程中易进入死区。

3.4.2 系统工作电压

为了改善系统掉电复位的性能,首先必须明确系统具有的最低工作电压值。系统最低工作电压与系统执行速度有关, 不同的执行速度下最低工作电压值亦不同。电气特性一章给出了系统工作电压与执行速度之间的关系。
System Mini.
Vdd (V)
Normal Operating
Area
Reset Area
System Rate (Fcpu)
系统工作电压与执行速度关系图
Operating Voltage.
Dead-Band Area
System Reset
Voltage.
如上图所示,系统正常工作电压区域一般略高于系统复位电压,同时复位电压由 LVD 检测电平决定。当系统执行速 度高于复位电压时,系统最低工作电压值将会升高。复位电压与最低工作电压之间的区域即是系统工作的死区。
SONiX TECHNOLOGY CO., LTD Page 33 V1.0
Page 34
SN8P2501B
8-Bit Micro-Controller

3.4.3 掉电复位性能改进

如何改善系统掉电复位性能,有以下几点建议:
z LVD 复位; z 看门狗复位; z 降低系统工作速度; z 采用外部复位电路 (齐纳二极管复位电路,电压偏移复位电路,外部 IC 复位)。
注:
a. “齐纳二极管复位电路电压偏移复位电路外部 IC 复位”能够完全避免掉电复位出错; b. 对于 AC 供电的系统,可提高 EFT 性能,系统时钟采用 4MHz 和外部复位(齐钠二极管复位电路,电压偏移复位电路,外部 IC
复位)。电路结构的优化可降低噪声的影响并获得更好的 EFT 特性。
LVD
复位:
Power
System Status
VDD
VSS
System Normal Run
System Stop
LVD Detect Voltage
Power is below LVD Detect Voltage and System Reset.
Power On Delay Time
LVD(低电压检测)是 SONiX 8-bit MCU 的内置掉电复位保护装置,当 VDD 跌落并低于 LVD 检测电压值时,LVD 被触 发,系统复位。不同的 MCU 有不同的 LVD 检测电平,LVD 检测电平值仅为一个点电压,并不能覆盖所有死区范围。因 此采用 LVD 依赖于系统要求和环境状况。电源变化较大时,LVD 能够起到保护作用,如果电源变化触发 LVD 却使得系统 工作出错,那么 LVD 就不能起到保护作用,就需要采用其它复位方法。电气特性一章中给出了更多关于 LVD 的详细内容。
LVD 设计为三层结构(2.0V/2.4V/3.6V),由 LVD 编译选项控制决定。对于上电复位和掉电复位,2.0V LVD 始终处 于使能状态;2.4V LVD 具有 LVD 复位功能,并能显示 VDD 状态;3.6V LVD 具有标记功能,可显示 VDD 的工作状态。 LVD 标志功能只是一个低电压检测装置,标志位 LVD24 LVD36 给出 VDD 的电压情况。对于低电压检测应用,只需查LVD24 LVD36 的状态即可检测电池状况。
086H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
PFLAG
/
复位后
NT0 NPD LVD36 LVD24 - C DC Z R/W R/W R R - R/W R/W R/W
- - 0 0 - 0 0 0
Bit 5
LVD36:LVD 3.6V 工作标志,仅当 LVD 编译选项为 LVD_H 时有效;
0 = LVD36 标志位无效 (VDD > 3.6V) 1 = LVD36 标志位有效 (VDD≤3.6V)
Bit 4
LVD24:LVD 2.4V 工作标志,仅当 LVD 编译选项为 LVD_M 时有效;
0 = LVD24 标志位无效 (VDD > 2.4V) 1 = LVD24 标志位有效 (VDD≤2.4V)
SONiX TECHNOLOGY CO., LTD Page 34 V1.0
Page 35
SN8P2501B
8-Bit Micro-Controller
LVD
LVD_L LVD_M LVD_H
LVD 编译选项
2.0V 复位 有效 有效 有效
2.4V 标志
2.4V 复位
3.6V 标志
-
有效
- -
- -
-
有效 有效
LVD_L
如果 VDD < 2.0V,系统复位; LVD24 LVD36 标志位无意义。
LVD_M
如果 VDD < 2.0V,系统复位; LVD24,如果 VDD > 2.4VLVD24 “0”;如果 VDD <= 2.4VLVD24 “1” LVD36 标志位无意义。
LVD2_H
如果 VDD < 2.4V, 系统复位; LVD24,如果 VDD > 2.4VLVD24“0”;如果 VDD <= 2.4V LVD24“1” LVD36,如果 VDD > 3.6VLVD36“0”;如果 VDD <= 3.6V LVD36 “1”
注: a. LVD 复位结束后,LVD24 LVD36 都将被清零; b. LVD 2.4V LVD3.6V 检测电平值仅作为设计参考,不能用作芯片工作电压值的精确检测。
看门狗复位:
看门狗定时器用于保证系统正常工作。通常,会在主程序中将看门狗定时器清零,但不要在多个分支程序中清看门狗。 若程序正常运行,看门狗不会复位。当系统进入死区或程序运行出错的时候,看门狗定时器继续计数直至溢出,系统复位 并回到正常模式。如果看门狗复位后电源仍处于死区,则系统复位失败,一直处于复位状态直到电源回到正常水平。
如果看门狗复位后电源仍处于死区,则系统复位失败,保持复位状态,直到电源恢复到正常值。
降低系统工作速度:
如果系统工作速度过快容易导致芯片最低工作电压值增高,从而加大工作死区的范围,那么降低系统工作速度不失为 降低系统进入死区几率的有效措施。因为系统工作速度较低则最小工作电压值相应较低。所以,调节电源电压选择恰当的 电压值,在该电压下不会带来死区问题,从而找到合适的系统工作速度。这个方法需要调整整个程序使其满足系统要求。
附加外部复位电路:
外部复位发也能够完全改善掉电复位性能。共有三种外部复位方式:齐纳二极管复位电路,电压偏移复位电路和外部 IC 复位。它们都采用外部复位信号控制 MCU 可靠复位。
SONiX TECHNOLOGY CO., LTD Page 35 V1.0
Page 36
SN8P2501B
8-Bit Micro-Controller

3.5 外部复位

外部复位功能由“Reset_Pin”编译选项控制。将该编译选项置为“Reset”,从而使能外部复位功能。外部复位引脚为施 密特触发器结构,低电平有效。复位引脚处于高电平时,系统正常运行。当复位引脚输入低电平信号时,系统复位。外部 复位操作在上电和正常工作模式时有效。需要注意的是,在系统上电的过程中,外部复位引脚必须输入高电平,否则系统 将一直保持在复位状态。外部复位的时序如下:
z 外部复位(当且仅当外部复位引脚为使能状态):系统检测外部复位引脚的状态,如果外部复位引脚不为高电平,
则系统保持在复位状态直到外部复位引脚被释放;
z 系统初始化:初始化所有的系统寄存器; z 振荡器开始工作:振荡器开始提供系统时钟; z 执行程序:上电结束,程序开始运行。
外部复位可以在上电过程中使系统复位。良好的外部复位电路可以保护系统以免进入未知的工作状态,如 AC 应用中 的掉电复位等。
SONiX TECHNOLOGY CO., LTD Page 36 V1.0
Page 37
SN8P2501B
8-Bit Micro-Controller

3.6 外部复位电路

3.6.1 RC 复位电路

VDD
R1
47K ohm
R2
100 ohm
C1
0.1uF
上图为一个由电阻 R1 和电容 C1 组成的基本 RC 复位电路,它在系统上电的过程中能够为复位引脚提供一个缓慢上 升的复位信号。这个复位信号的上升速度低于 VDD 的上电速度,为系统提供合理的复位时间,当复位引脚达到高电平时, 系统复位结束,进入正常工作状态。
注:RC 复位电路不能解决非正常上电和掉电复位问题。
R
VSS
T
S
MCU
VCC
GND

3.6.2 二极管&RC 复位电路

VDD
0.1uF
R1 47K ohm
R2
R
T
S
100 ohm
C1
MCU
VSS
VCC
GND
DIODE
上图中,R1 C1 同样是为复位引脚提供输入信号。对于电源异常情况,二极管正向导通使 C1 快速放电并与 VDD 保持一致,避免复位引脚持续高电平、系统无法正常复位。
注:基本 RC 复位电路二极管&RC 复位电路中的电阻 R2 都是必不可少的限流电阻,以避免复位引脚 ESDElectrostatic
Discharge)或 EOSElectrical Over-stress)击穿
SONiX TECHNOLOGY CO., LTD Page 37 V1.0
Page 38
SN8P2501B
8-Bit Micro-Controller

3.6.3 齐纳二极管复位电路

VDD
R1
33K ohm
10K ohm
Vz
齐纳二极管复位电路是一种简单的 LVD 电路,基本上可以完全解决掉电 复位问题。如上图电路中,利用齐纳管的击 穿电压作为电路复位检测值,当 VDD 高于“Vz + 0.7V”时,三极管集电极输出高电平,MCU 正常工作;当 VDD 低于“Vz +
0.7V”时,三极管集电极输出低电平,MCU 复位。齐纳管规格不同则电路复位检测值不同,根据电路的要求选择合适的二 极管。
R2
40K ohm
E
B
Q1
S
R
T
C
R3
MCU
VSS
VCC
GND

3.6.4 电压偏置复位电路

R1
47K ohm
R2
10K ohm
2K ohm
电压偏置复位电路是一种简单的 LVD 电路,基本上可以完全解决掉电复位问题。与齐纳二极管复位电路相比,这种 复位电路的检测电压值的精确度有所降低。电路中,R1 和 R2 构成分压电路,当 VDD 高于和等于分压值“0.7V x (R1 + R2) / R1”时,三极管集电极 C 输出高电平,MCU 正常工作;VDD 低于“0.7V x (R1 + R2) / R1”时,集电极 C 输出低电平,MCU 复位。
对于不同应用需求,选择适当的分压电阻。MCU 复位引脚上电压的变化与 VDD 电压变化之间的差值为 0.7V。如果 VDD 跌落并低于复位引脚复位检测值,那么系统将被复位。如果希望提升电路复位电平,可将分压电阻设置为 R2>R1 并选择 VDD 与集电极之间的结电压高于 0.7V。分压电阻 R1 R2 的电流稳定,在功耗电路如直流电源系统中,此处的 功耗必须计入整个系统的功耗中。
注:在电源不稳定或掉电复位的情况下,“齐纳二极管复位电路偏压复位电路能够保护电路在电压跌落时避免系统出错。当
电压跌落至低于复位检测值时,系统将被复位。从而保证系统正常工作。
VDD
E
B
Q1
S
R
T
C
R3
MCU
VSS
VCC
GND
SONiX TECHNOLOGY CO., LTD Page 38 V1.0
Page 39

3.6.5 外部 IC 复位

VDD
Reset
VSS
Capacitor
IC
Bypass
0.1uF
RST
VDD
R
S
VSS
T
SN8P2501B
8-Bit Micro-Controller
MCU
VCC
GND
外部复位也可以选用 IC 进行外部复位,但是这样一来系统成本将会增加。针对不用的应用要求选择适当的复位 IC, 如上图所示外部 IC 复位电路,能够有效的降低电源变化对系统的影响。
也可以选用 IC 进行外部复位,但是这样一来系统成本将会增加。针对不用的应用要求选择适当的复位 IC,如上图所 示外部 IC 复位电路,能够有效的降低电源变化对系统的影响。
SONiX TECHNOLOGY CO., LTD Page 39 V1.0
Page 40
SN8P2501B
8-Bit Micro-Controller
4
4
4

系统时钟

4.1 概述

双时钟系统包括高速时钟和低速时钟,高速时钟由外部晶振和内置的16MHz RC 振荡电路(IHRC 16KHz)提供。低 速时钟由内置的低速RC振荡电路(ILRC 16KHz)产生。两种时钟都可作为系统时钟源Fosc,系统工作在低速模式时, Fosc 4分频后作为一个指令周期。
) 普通模式 ) 低速模式
在干扰较严重的运用条件下,SONiX 提供的杂讯滤波器能够对外部干扰进行隔离以保护系统的正常工作。但在杂讯 滤波器有效时,高速时钟的 Fcpu 被限制为 FcpuFhosc/4
(高速时钟):Fcpu = Fhosc / N,N = 1 ~ 16,Fcpu 的编译选项决定 N 的值。 (低速时钟):Fcpu = Flosc/4。

4.2 时钟框图

STPHX HOSC
XIN
XOUT
z HOSC:High_Clk 编译选项 z Fhosc:外部高速时钟频率 z Flosc:内部低速 RC 时钟频率(16KHz@3V,32KHz@5V). z Fosc:系统时钟频率 z Fcpu:指令执行频率
Fhosc.
CPUM[1:0]
Flosc. Fcpu = Flosc/4
Fcpu = Fhosc/1 ~ Fhosc/16, Noise Filter Disable.
Fcpu = Fhosc/4 ~ Fhosc/16, Noise Filter Enable.
Fcpu Code Option
CLKMD
Fosc
Fcpu
Fosc
SONiX TECHNOLOGY CO., LTD Page 40 V1.0
Page 41
SN8P2501B
8-Bit Micro-Controller

4.3 OSCM 寄存器

寄存器 OSCM 控制振荡器的状态和系统的工作模式。
0CAH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
OSCM
/
复位后
Bit 1
Bit 2
Bit[4:3]
¾ 例:停止高速振荡器。 B0BSET FSTPHX
¾ 例:系统进入睡眠模式时,高速振荡器和内部低速振荡器都被停止。 B0BSET FCPUM0
STPHX:外部高速振荡器控制位。
0 = 运行; 1 = 停止。内部低速 RC 振荡器仍然运行。
CLKMD:系统时钟模式控制位。
0 = 普通(双时钟)模式,高速时钟作为系统时钟; 1 = 低速模式,低速时钟作为系统时钟。
CPUM[1:0]:CPU 工作模式控制位。
00 = 普通模式; 01 = 睡眠模式; 10 = 绿色模式; 11 = 系统保留。
0 0 0 CPUM1 CPUM0 CLKMD STPHX 0
- - - R/W R/W R/W R/W -
- - - 0 0 0 0 -
; 停止外部高速振荡器
SONiX TECHNOLOGY CO., LTD Page 41 V1.0
Page 42
SN8P2501B
8-Bit Micro-Controller

4.4 系统高速时钟

内部 16MHZ RC 振荡器和外部振荡器都可作为系统高速时钟源,由编译选项“High_Clk”控制。
High_Clk
IHRC_16M
IHRC_RTC
RC
32K
12M
4M
内部 16MHz RC 振荡器作为系统时钟源,XIN 和 XOUT 引脚为通用 I/O 口。 内部 16MHz RC 振荡器作为系统高速时钟, XIN 和 XOUT 引脚与 32768HZ 石英晶体 相连。 外部 RC 振荡器为系统高速时钟, XOUT 引脚为通用 I/O 口。 外部 32768Hz 低速振荡器作为系统高速时钟。 外部高速振荡器作为系统高速时钟,典型频率为 12MHz。 外部振荡器作为系统高速时钟,典型频率为 4MHz。

4.4.1 内部高速 RC 振荡器

编译选项“IHRC_16M”和“IHRC_RTC”控制芯片的内置 RC 高速时钟(16MHz)。若选择“IHRC_16M”,则内 置 16MHz RC 振荡器作为系统时钟源,XIN XOUT 引脚作为通用 I/O 口。若选择“IHRC_RTC”,则系统时钟来自内 置 16MHz RC 振荡器,同时 XIN XOUT 引脚与实时时钟源(RTC32768MHZ 石英晶体相连。
z
IHRC:系统高速时钟来自内置 16MHz RC 振荡器,XIN/XOUT 引脚作为普通的 I/O 引脚。
z
IHRC_RTC:内置 16MHZ RC 振荡器作为系统高速时钟,同时 XIN XOUT 引脚与实时时钟源(RTC32768MHz
石英晶体相连
RTC 的周期为 0.5 sRTC 的定时器为 T0
说明
SONiX TECHNOLOGY CO., LTD Page 42 V1.0
Page 43
SN8P2501B
8-Bit Micro-Controller

4.4.2 外部高速时钟

外部高速时钟共三种模式:石英/陶瓷振荡器,RC 及外部时钟源,由编译选项 High_Clk 控制具体模式的选择。石英/ 陶瓷振荡器和 RC 振荡器的上升时间各不相同。RC 振荡器的上升时间相对较短。振荡器上升时间与复位时间的长短密切 相关。
4MHz Crystal
RC
32768Hz Crystal
4MHz Ceramic
4.4.2.1 石英/陶瓷振荡器
石英/陶瓷振荡器由 XIN/XOUT 口驱动,对于高速、普通和低速三种不同工作模式,振荡器的驱动电流也不同。不同 的工作模式下,编译选项 High_Clk 支持不同的频率条件:高速模式下的 12MHz 工作频率、普通模式的 4MHz 工作频率 以及低速模式下 32KHz 工作频率。
XIN
CRYSTAL
C
20pF
X
C
20pF
U
T
O
MCU
VDD
VSS
VCC
GND
注:上图中, XIN/XOUT/VSS 引脚与石英/陶瓷振荡器以及电容 C 之间的距离越近越好。
SONiX TECHNOLOGY CO., LTD Page 43 V1.0
Page 44
SN8P2501B
8-Bit Micro-Controller
4.4.2.2 RC 振荡器
通过编译选项 High_Clk 的设置可控制 RC 振荡器的选择,RC 振荡器输出频率最高可达 10MHZ。改 变 R 可改变输出 频率的大小,电容 C 的最佳容量为 50P~100P,引脚 XOUT 为通用 I/O 口,如下图所示:
U
T
X
O
XIN
MCU
C
R
V
VSS
D
D
VCC
GND
注:电容 C 和电阻 R 应尽可能的接近芯片的 VDD
4.4.2.3 外部时钟源
芯片可选择外部时钟信号作为系统时钟,由编译选项 High_Clk 控制,从 XIN 脚送入。
External Clock Input
XIN
XOUT
MCU
VSS
VDD
VCC
GND
注:外部振荡电路中的 GND 必须尽可能的接近芯片的 VSS 端口。
SONiX TECHNOLOGY CO., LTD Page 44 V1.0
Page 45
SN8P2501B
8-Bit Micro-Controller

4.5 系统低速时钟

系统低速时钟源即内置的低速振荡器,采用 RC 振荡电路。低速时钟的输出频率受系统电压和环境温度的影响,通常 为 5V 时输出 32KHZ3V 时输出 16KHZ。输出频率与工作电压之间的关系如下图所示。
Internal Low RC Frequency
45.00
40.00
35.00
30.00
25.00
20.00
15.00
Freq. (KHz)
10.00
5.00
0.00
2.12.533.13.33.544.555.566.57
7.52
10.64
14.72
16.00
17.24
18.88
22.24
25.96
29.20
32.52
35.40
38.08
40.80
ILRC
VDD (V)
低速时钟可作为看门狗定时器的时钟源。由 CLKMD 控制系统低速工作模式。
)
Flosc = 内部低速 RC 振荡器 (16KHz @3V, 32KHz @5V).
) 低速模式 Fcpu = Flosc / 4
系统工作在睡眠模式和绿色模式下看门狗处于无效时,可以停止低速 RC 振荡器。如果系统工作频率为 32K 且看门狗 无效,那么这种情况下只有 32K 振荡器处于工作状态,系统功耗相应较低。
¾ 例:停止内部低速振荡器。 B0BSET FCPUM0
注:不可以单独停止内部低速时钟;由寄存器 OSCM 的位 CPUM0 CPUM1(32K,禁止看门狗)的设置决定内部低速时钟的状
态。

4.5.1 系统时钟测试

在设计过程中,用户可通过软件指令周期 Fcpu 对系统时钟速度进行测试。
¾ 例:外部振荡器的
B0BSET P0M.0 @@:
B0BSET P0.0 B0BCLR P0.0 JMP @B
注:不能直接从 XIN 引脚测试 RC 振荡频率,因为探针的连接会影响测试的准确性。
SONiX TECHNOLOGY CO., LTD Page 45 V1.0
Fcpu 指令周期测试。
; P0.0 置为输出模式以输出 Fcpu 的触发信号
Page 46
5
5
5

系统工作模式

5.1 概述

芯片可在如下四种工作模式之间进行切换:
z 高速模式 z 低速模式 z 睡眠模式 z 绿色模式
P0P1唤醒功能有效
外部复位电路有效
普通模式
睡眠模式
CPUM1, CPUM0 = 01.
CLKMD = 1
CLKMD = 0
SN8P2501B
8-Bit Micro-Controller
低速模式
P0P1唤醒功能有效
T0定时器超时
外部复位电路有效
工作模式说明
模式 普通 低速 绿色 睡眠 注释
EHOSC
IHRC
ILRC
EHOSC,带有 RTC 功能 运行
IHRC,带有 RTC 功能 运行
ILRC,带有 RTC 功能 运行 运行 停止 停止
CPU 指令 执行 执行 停止 停止
T0 定时器 *有效 *有效 *有效 无效 * T0ENB=1 有效
TC0 定时器 *有效 *有效 无效 无效 * TC0ENB=1 有效
看门狗定时器
内部中断 都有效 都有效 外部中断 都有效 都有效 都有效 都有效
唤醒源
z
EHOSC:外部高速时钟
z
IHRC:内部高速时钟(16M RC 振荡器)
z
ILRC:内部低速时钟(3V 16K, 5V 32K)
运行 运行 运行 运行 运行 停止
Watch_Dog
编译选项控制
CPUM1, CPUM0 = 10.
绿色模式
系统工作模式切换框图
STPHX STPHX STPHX STPHX
By STPHX By STPHX
Watch_Dog
编译选项控制
- -
Watch_Dog
编译选项控制
P0, P1, T0 复位 P0, P1, 复位
停止 停止
运行 停止 停止 停止
Watch_Dog
编译选项控制
T0
都有效
P0P1唤醒功能有效 T0定时器超时
外部复位电路有效
参考编译选项说明
SONiX TECHNOLOGY CO., LTD Page 46 V1.0
Page 47
SN8P2501B
;
;
;
A
;
A @@
;
@
;
;
;
;
A
A
;
A
A
;
;
;
;
;
;
;
;
;
8-Bit Micro-Controller

5.2 模式切换举例

¾ 例:普通/低速模式切换到睡眠模式。 B0BSET FCPUM0 ;
注:睡眠模式下,只有具有唤醒功能的引脚及复位操作才能将系统唤醒进入普通模式。
¾ 例:普通模式切换到低速模式
B0BSET FCLKMD B0BSET FSTPHX
¾ 例:从低速模式切换到普通模式(外部高速振荡器仍然处于工作状态)。 B0BCLR FCLKMD ;
¾ 例:从低速模式切换到普通模式(外部高速振荡器停止工作)。 B0BCLR FSTPHX
MOV B0MOV Z,
: DECMS Z JMP ; B0BCLR FCLKMD
如果外部高速时钟停止且程序需要返回至普通模式就必须延迟至少 10ms 以等待外部时钟稳定。
¾ 例:普通/低速模式切换到绿色模式。 B0BSET FCPUM1 ;
注:如果在绿色模式下禁止 T0 的唤醒功能,只有具有唤醒功能的引脚和复位引脚可以将系统唤醒返回到上一个工作模式。
¾ 例:从普通
T0 定时器置唤醒功能
B0BCLR FT0IEN B0BCLR FT0ENB MOV B0MOV T0M, MOV B0MOV T0C, B0BCLR FT0IEN B0BCLR FT0IRQ
进入绿色模式
B0BCLR FCPUM0 ; CPUMx = 10 B0BSET FCPUM1
注:在绿色模式下,T0 具有唤醒功能,系统唤醒后返回到上一个工作模式。T0 的唤醒时间由过程控制。
¾ 例:从普通
进入绿色模式:
B0BCLR FCPUM0 ; CPUMx = 10 B0BSET FCPUM1
/低速模式切换到绿色模式,并使能 T0 唤醒功能。
B0BSET FT0ENB
/低速模式切换到绿色模式,由 RTC 使能 T0 唤醒功能。
CLR T0C B0BSET FT0ENB B0BSET FT0TB
.
, #27
B
,#20H ;
,#74H
CLKMD = 1, 系统进入低速模式
停止外部高速振荡器
外部高速振荡器开始工作
VDD = 5V,内部 RC=32KHz (标准值) 延迟
延迟 0.125ms X 81 = 10.125ms 以稳定振荡器
系统重新返回到普通模式
禁止 T0 中断 禁止 T0 定时器
T0 时钟 = Fcpu / 64
T0C 初始值置为 74H (T0 间隔为 10 ms) T0 不响应中断 清除 T0 中断请求
使能 T0 定时器
T0 计数器清零 使能 T0 定时器 使能 RTC
SONiX TECHNOLOGY CO., LTD Page 47 V1.0
Page 48
SN8P2501B
8-Bit Micro-Controller

5.3 唤醒时间

5.3.1 概述

在绿色模式和睡眠模式下,系统并不执行程序指令,唤醒触发信号能够将处于睡眠状态的系统唤醒到普通模式或低速 模式。这里的唤醒触发信号包括外部触发信号(P0P1 引脚的电平变化)和内部触发信号(T0 溢出信号),具体为:
z 由睡眠模式唤醒到普通模式只能是外部触发; z 由绿色模式唤醒回到系统前一工作模式(普通模式或低速模式)可以用外部触发或者内部触发。

5.3.2 唤醒时间

系统进入睡眠模式后,高速时钟停止运行。把系统从睡眠模式下唤醒时,MCU 需要等待 2048 个外部高速振荡器时 钟周期以使振荡电路进入稳定工作状态,等待的这一段时间就称为唤醒时间。唤醒时间结束后,系统才进入到普通模式。
注:将系统从绿色模式中唤醒是不需要唤醒时间的,因为在绿色模式下高速时钟仍然正常工作。
唤醒时间的计算如下:
唤醒时间
注:高速时钟的启动时间与 VDD 和振荡器类型有关。
¾ 例:将系统从睡眠模式中唤醒,并设置系统进入普通模式。唤醒时间计算如下。
唤醒时间= 1/Fosc * 2048 = 0.512 ms (Fosc = 4MHz)
总的唤醒时间 = 0.512 ms + 振荡器启动时间
= 1/Fosc * 2048 (sec) + 高速时钟启动时间

5.3.3 P1W 唤醒控制寄存器

在绿色模式和睡眠模式下,有唤醒功能的 I/O 口能够将系统从唤醒到普通模式。P0 和 P1 都有唤醒功能,二者区别在 于,P0 的唤醒功能始终有效,而 P1 由寄存器 P1W 控制。
0C0H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P1W
/
复位后
Bit[3:0]
P10W~P13W: Port 1 唤醒功能控制位
0 = 禁止 P1n 唤醒功能 1 = 开放 P1n 唤醒功能 .
SONiX TECHNOLOGY CO., LTD Page 48 V1.0
- - - - P13W P12W P11W P10W
- - - - W W W W
- - - - 0 0 0 0
Page 49
SN8P2501B
8-Bit Micro-Controller
6
6
6

中断

6.1 概述

芯片提供三种中断源:两个内部中断(T0/TC0)和一个外部中断(INT0)。系统从睡眠模式进入高速普通模式时, 外部中断能够将芯片唤醒。一旦程序进入中断,寄存器 STKP 的位 GIE 将被清零以避免再次响应其它中断。系统退出中 断后,GIE “1”,以响应下一个中断。中断请求存放在寄存器 INTRQ 中。
INTEN Interrupt Enable Register
INT0 Trigger
T0 Time Out
TC0 Time Out
注:程序响应中断时,位 GIE 必须处于有效状态。
INTRQ
3-Bit
Latchs
P00IRQ
T0IRQ
TC0IRQ
Interrupt
Interrupt Vector Address (0008H)
Enable
Global Interrupt Request Signal
Gating

6.2 中断请求使能寄存器 INTEN

中断请求控制寄存器 INTEN 包括 2 个内部中断和 1 个外部中断,当有效位被置为 1 后,系统进入该中断服务程序, 程序计数器入栈,程序转至 ORG 8 即中断程序。程序运行到指令 RETI 时,中断结束,系统退出中断服务。
0C9H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
INTEN - - TC0IEN T0IEN - - - P00IEN
/
复位后
Bit 0
Bit 4
Bit 5
P00IEN:P0.0 外部中断(INT0) 控制位
0 = 禁止 1 = 允许
T0IEN:T0 中断控制位
0 = 禁止 1 = 允许
TC0IEN:TC0 中断控制位
0 = 禁止 1 = 允许
- - R/W R/W - - - R/W
- - 0 0 - - - 0
SONiX TECHNOLOGY CO., LTD Page 49 V1.0
Page 50
SN8P2501B
8-Bit Micro-Controller

6.3 中断请求寄存器 INTRQ

中断请求寄存器 INTRQ 中存放各中断请求标志。一旦有中断请求发生,则 INTRQ 中对应位将被置“1”,该请求被响 应后,程序应将该标志位清零。根据 INTRQ 的状态,程序判断是否有中断发生,并执行相应的中断服务。
0C8H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
INTRQ
/
复位后
Bit 0
Bit 4
Bit 5
P00IRQ:P0.0 中断 (INT0) 请求标志
0 = INT0 无中断请求 1 = INT0 有中断请求
T0IRQ:T0 中断请求标志
0 = T0 无中断请求 1 = T0 有中断请求
TC0IRQ:TC0 中断请求标志
0 = TC0 无中断请求 1 = TC0 有中断请求
- - TC0IRQ T0IRQ - - - P00IRQ
- - R/W R/W - - - R/W
- - 0 0 - - - 0

6.4 GIE 全局中断

只有当全局中断控制寄存器 GIE 1 的时候程序才能响应中断请求。
0DFH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
STKP
/
复位后
Bit 7
0 = 全局中断无效 1 = 使能全局中断
¾
例:设置全局中断控制位 (GIE)
B0BSET FGIE
注:在所有中断中,GIE 都必须处于使能状态。
GIE - - - - - STKPB1 STKPB0
R/W - - - - - R/W R/W
0 - - - - - 1 1
GIE:全局中断控制位
; 使能 GIE
SONiX TECHNOLOGY CO., LTD Page 50 V1.0
Page 51
SN8P2501B
8-Bit Micro-Controller

6.5 PUSH, POP 处理

有中断请求发生并被响应后,程序转至 ORG 8 执行中断子程序。响应中断之前,必须保存 ACCPFLAG 的内容。 芯片提供 PUSH POP 指令进行入栈保存和出栈恢复,从而避免中断结束后可能的程序运行错误。
注:“PUSH”, “POP”指令仅对 ACC PFLAG 作中断保护,而不包括 NT0 NPDPUSH/POP 缓存器是唯一的且仅有一层。
¾ 例:对
ORG 0 JMP START
ORG 8 JMP INT_SERVICE
ORG 10H START:
INT_SERVICE:
PUSH
POP
RETI
ENDP
ACC PAFLG 进行入栈保护。
保存 ACC PFLAG
;
恢复 ACC PFLAG
;
; 退出中断
SONiX TECHNOLOGY CO., LTD Page 51 V1.0
Page 52
SN8P2501B
8-Bit Micro-Controller

6.6 INT0(P0.0)中断

INT0 被触发,则无论 P00IEN 处于何种状态,P00IRQ 都会被置“1”。如果 P00IRQ1 P00IEN1,系统响应该 中断;如果 P00IRQ1 P00IEN0,系统并不会执行中断服务。在处理多中断时尤其需要注意。
注:P0.0 的中断触发方式由 PEDGE 控制。
0BFH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
PEDGE
/
复位后
Bit[4:3] P00G[1:0]P0.0 中断触发控制位
00 = 保留 01 = 上升沿触发 10 = 下降沿触发 11 = 上升/下降沿触发(电平触发)
¾
例:INT0 中断请求设置,电平触发。
MOV A, #18H
B0MOV PEDGE, A
B0BSET FP00IEN
B0BCLR FP00IRQ
B0BSET FGIE
¾
例:INT0 中断服务程序。
ORG 8 ; JMP INT_SERVICE INT_SERVICE:
B0BTS1 FP00IRQ JMP EXIT_INT
B0BCLR FP00IRQ …
EXIT_INT:
RETI
- - - P00G1 P00G0 - - -
- - - R/W R/W - - -
- - - 1 0 - - -
; INT0 置为电平触发
; INT0 中断开放 ; INT0 中断请求标志清零 ; 允许 GIE
; ACC 和 PFLAG 入栈保护
; 检测 P00IRQ ; P00IRQ = 0, 退出中断
; P00IRQ 清零 ;
; ACC 和 PFLAG 出栈恢复
; 退出中断
SONiX TECHNOLOGY CO., LTD Page 52 V1.0
Page 53
SN8P2501B
8-Bit Micro-Controller

6.7 T0 中断

T0C 计数器溢出时,不管 T0IEN 是否开启,T0IRQ 会被置“1”,此时若 T0IEN1,则系统响应 T0 中断;若此时 T0IEN=0 则系统并不会响应 T0 中断。
¾ 例: B0BCLR FT0IEN B0BCLR FT0ENB ; MOV A, #20H ; B0MOV T0M, A MOV A, #74H B0MOV T0C, A
B0BSET FT0IEN B0BCLR FT0IRQ B0BSET FT0ENB ;
B0BSET FGIE
¾ 例: ORG 8 ; JMP INT_SERVICE INT_SERVICE:
EXIT_INT:
RETI
T0 中断请求设置
T0 设置为无 RTC
B0BTS1 FT0IRQ JMP EXIT_INT ;
B0BCLR FT0IRQ MOV A, #74H
B0MOV T0C, A ; …
; 禁止 T0 中断
; T0 时钟= Fcpu / 64 ; T0C 初始值置为 74H ; T0 间隔为 10 ms
; 允许响应 T0 中断 ; T0 中断请求标志清零
; 使能 GIE
; ACC 和 PFLAG 入栈保存
检查是否有 T0 中断请求标志
;
T0IRQ
;
中断程序
; T0
; ACC 和 PFLAG 出栈恢复
; 退出中断
注:1. 在 RTC 模式下,必须延迟 1/2 RTC 时钟源(32768Hz)之后再对 T0IRQ 作清零动作,否则 RTC 间隔时间可能出错。即从
程序响应 T0 中断开始到 T0IRQ 再次被清零大约需要 16us
2. RTC 模式下,中断服务程序中不能对 T0C 进行清零。
¾ 例:RTC 下执行 T0 中断。 ORG 8 ; JMP INT_SERVICE INT_SERVICE:
> 16us
EXIT_INT:
RETI
B0BTS1 FT0IRQ JMP EXIT_INT
… … ;
B0BCLR FT0IRQ
; ACC PFLAG 中断保护
检测 T0IRQ
; ; T0IRQ = 0,
中断程序
; T0
; T0IRQ
;恢复 ACC PFLAG
; 退出中断
退出中断
清零
SONiX TECHNOLOGY CO., LTD Page 53 V1.0
Page 54
SN8P2501B
8-Bit Micro-Controller

6.8 TC0 中断

TC0C 溢出时,不管 TC0IEN 是否开启,TC0IRQ 都会被置“1”。如果 TC0IRQ=1 TC0IEN=1,则系统将响应 TC0 的中断请求;如果 TC0IRQ=1 TC0IEN=0,则系统并不会响应 TC0 的中断请求。对于多中断情形,尤其需要注意上述 条件。
¾ 例:
¾ 例:
ORG 8 ; JMP INT_SERVICE INT_SERVICE:
B0BTS1 FTC0IRQ JMP EXIT_INT
B0BCLR FTC0IRQ MOV A, #74H
B0MOV TC0C, A … …
EXIT_INT:
RETI
TC0 中断请求设置。
B0BCLR FTC0IEN
B0BCLR FTC0ENB ;
MOV A, #20H ;
B0MOV TC0M, A
MOV A, #74H
B0MOV TC0C, A
B0BSET FTC0IEN
B0BCLR FTC0IRQ
B0BSET FTC0ENB ;
B0BSET FGIE
TC0 中断服务程序。
; 禁止 TC0 中断
; TC0 时钟= Fcpu / 64 ; TC0C 初始值=74H ; TC0 间隔= 10 ms
; 允许 TC0 中断 ; TC0 中断请求标志
; 允许 GIE
; ACC 和 PFLAG 入栈保护
; 检查是否有 TC0 中断请求标志 ; TC0IRQ = 0, 退出中断
; TC0IRQ
; TC0C ; TC0 中断程序
; ACC 和 PFLAG 出栈恢复
; 退出中断
SONiX TECHNOLOGY CO., LTD Page 54 V1.0
Page 55
SN8P2501B
8-Bit Micro-Controller

6.9 多中断操作举例

在同一时刻,系统中可能出现多个中断请求。处理这种多中断情况时,必须预先对各中断请求设置不同的优先级别。 中断请求标志 IRQ 由中断事件触发,当 IRQ 处于有效值“1”时,系统并不一定会响应该中断。各中断触发事件列表如下:
中断
有效触发
P00IRQ
T0IRQ
TC0IRQ
多个中断同时发生时,需要注意的是:首先,必须预先设定好各中断的优先级。其次,利用 IEN IRQ 控制系统是 否响应该中断。在程序中,必须对中断控制位和中断请求标志进行检测。
¾ 例:多中断条件下检测中断请求。 ORG 8 ; JMP INT_SERVICE INT_SERVICE:
INTP00CHK: B0BTS1 FP00IEN
JMP INTT0CHK B0BTS0 FP00IRQ JMP INTP00
INTT0CHK: B0BTS1 FT0IEN
JMP INTTC0CHK B0BTS0 FT0IRQ JMP INTT0
INTTC0CHK: B0BTS1 FTC0IEN
JMP INT_EXIT ; B0BTS0 FTC0IRQ
JMP INTTC0 INT_EXIT:
RETI
PEDGE 控制 T0C 溢出 TC0C 溢出
; ACC 和 PFLAG 入栈保护
检查是否有 INT0 中断请求
;
检查是否允许 P00 中断
;
; 进入下一个中断 ; 检查是否有 P00 中断请求 ; 进入 INT0 中断程序
检查是否有 T0 中断请求
; ;
检查是否允许 T0 中断
; 进入下一个中断 ; 检查是否有 T0 中断请求 ; 进入 T0 中断程序
检查是否有 TC0 中断请求
;
检查是否允许 TC0 中断
;
; 检查是否有 TC0 中断请求 ; 进入 TC0 中断程序
; ACC 和 PFLAG 出栈恢复
; 退出中断
SONiX TECHNOLOGY CO., LTD Page 55 V1.0
Page 56
SN8P2501B
8-Bit Micro-Controller
7
7
7

定时器

7.1 看门狗定时器

看门狗定时器 WDT 用于控制程序的正常执行。如果由于干扰程序进入了未知状态,WDT 溢出,MCU 复位。看门狗 的工作模式由编译选项控制,其时钟源来自内部低速振荡器(16KHz @3V, 32KHz @5V)
看门狗溢出时间 = 8192 /内部低速振荡器周期 (sec).
VDD
3V 16KHz 512ms 5V 32KHz 256ms
注:如果看门狗被置为“Always_On” 模式,那么看门狗在睡眠模式和绿色模式下仍然运行。
寄存器 WDTR 控制对看门狗的清零:WDTR 置为 5AH 即可将看门狗清零。
0CCH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
WDTR
/
复位后
¾ 例:如下是对看门狗定时器的操作,在主程序开头对看门狗清零。
CALL SUB1 CALL SUB2 … JMP MAIN
看门狗应用注意事项如下:
z 对看门狗清零之前,检查 I/O 口的状态和 RAM 的内容可增强程序的可靠性; z 不能在中断中对看门狗清零,否则无法侦测到主程序跑飞的状况; z 程序中应该只在主程序中有一次清看门狗的动作,这种架构能够最大限度的发挥看门狗的保护作用。
¾ 例:如下是对看门狗定时器的操作,在主程序开头对看门狗清零。
main:
Err: JMP $
;
@RST_WDT ;
CALL SUB1
CALL SUB2
JMP MAIN
WDTR7 WDTR6 WDTR5 WDTR4 WDTR3 WDTR2 WDTR1 WDTR0
W W W W W W W W
0 0 0 0 0 0 0 0
MOV A,#5AH B0MOV WDTR,A
内部低速 RC Freq. 看门狗溢出时间
看门狗定时器清零
;
; 检测 I/O 口状态 ; 检测 RAM 内存 ; I/O RAM 出错,不对看门狗清零,并等待看门狗计时溢出
; I/O RAM 正常,看门狗清零
SONiX TECHNOLOGY CO., LTD Page 56 V1.0
Page 57
SN8P2501B
8-Bit Micro-Controller

7.2 定时器 T0

7.2.1 概述

二进制定时器 T0 溢出(从 FFH 00H)时,T0 继续计数并给出一个超时信号触发 T0 中断请求。定时器 T0 的主要 用途如下:
)
8-bit 可编程定时器:根据选定的时钟频率定时产生中断请求;
)
RTC 定时器:根据选定的时钟信号产生中断请求,RTC 功能仅限于编译选项为 High_Clk = IHRC_RTC;
) 绿色模式唤醒功能:T0ENB = 1 时,T0 溢出将系统从绿色模式中唤醒。
T0 Rate
(Fcpu/2~Fcpu/256)
T0ENB
Internal Data Bus
Fcpu
RTC
Load
T0C 8-Bit Binary Up Counting Counter
CPUM0,1
T0ENB
T0TB
注:
1. RTC 模式下,进入中断之后必须经过 1/2 RTC32768HZ),即 16us 的延时后才能对 T0IRQ 清零;
2. RTC 模式下,T0 间隔时间固定为 0.5sT0C 计数范围也固定为 256
T0 Time Out
SONiX TECHNOLOGY CO., LTD Page 57 V1.0
Page 58
SN8P2501B
8-Bit Micro-Controller

7.2.2 模式寄存器 T0M

0D8H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T0M
/
复位后
Bit 0
Bit [6:4]
Bit 7
注:在 RTC 模式下,T0RATE 的设置是无效的。
T0ENB T0rate2 T0rate1 T0rate0 - - - T0TB
R/W R/W R/W R/W - - - R/W
0 0 0 0 - - - 0
T0TB:RTC 时钟控制位。
0 = 禁止 RTC; 1 = RTC 模式。
T0RATE[2:0]:T0 内部时钟选择控制位。
000 = fcpu/256 001 = fcpu/128 … 110 = fcpu/4 111 = fcpu/2
T0ENB:T0 计数控制位。
0 = 禁止 T0; 1 = 开启 T0。
SONiX TECHNOLOGY CO., LTD Page 58 V1.0
Page 59
SN8P2501B
8-Bit Micro-Controller

7.2.3 计数寄存器 T0C

8-bit 计数寄存器 T0C 用于控制 T0 的间隔时间。
0D9H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
T0C
/
复位后
T0C 初始值的计算公式如下:
¾ 例:
注:在 RTC 模式下,T0C 的计数范围为 256,请不要随意改动。
T0 间隔时间为 10ms。其中,高速时钟 = 4MHzFcpu = Fosc/4T0R A T E = 010 (Fcpu/64)
T0RATE
000 Fcpu/256 65.536 ms 256 us 8000 ms 31250 us 001 Fcpu/128 32.768 ms 128 us 4000 ms 15625 us 010 Fcpu/64 16.384 ms 64 us 2000 ms 7812.5 us 011 Fcpu/32 8.192 ms 32 us 1000 ms 3906.25 us 100 Fcpu/16 4.096 ms 16 us 500 ms 1953.125 us 101 Fcpu/8 2.048 ms 8 us 250 ms 976.563 us 110 Fcpu/4 1.024 ms 4 us 125 ms 488.281 us 111 Fcpu/2 0.512 ms 2 us 62.5 ms 244.141 us
T0C7 T0C6 T0C5 T0C4 T0C3 T0C2 T0C1 T0C0
R/W R/W R/W R/W R/W R/W R/W R/W
0 0 0 0 0 0 0 0
T0 时钟
T0C
T0C 初始值 = 256 - (T0 间隔时间 * 输入时钟信号)
高速模式 (Fcpu = 4MHz / 4) 低速模式 (Fcpu = 32768Hz / 4)
最大溢出间隔 max 单步计数时间 =max/256 最大溢出间隔 max 单步计数时间 =max/256
初始值
= 256 - (10ms * 4MHz / 4 / 64) = 256 - (10 = 100 = 64H
= 256 - (T0
-2
* 4 * 106 / 4 / 64)
T0 间隔时间列表
间隔时间
*
输入时钟
)
SONiX TECHNOLOGY CO., LTD Page 59 V1.0
Page 60

7.2.4 T0 操作时序

T0 操作时序如下:
)
T0 停止计数,关闭 T0 中断功能,并将 T0 中断请求标志清零。
B0BCLR FT0ENB ; B0BCLR FT0IEN B0BCLR FT0IRQ
) 设置 T0 速率 MOV A, #0xxx0000b ; B0MOV T0M,A ;
) T0 时钟选择 Fcpu RTC.
or
) 设置 T0 中断间隔时间
) 开放 T0 定时中断功能
) 开放 T0 定时功能
B0BCLR FT0TB
B0BSET FT0TB
MOV A,#7FH B0MOV T0C,A
B0BSET FT0IEN
B0BSET FT0ENB
; Fcpu 作为时钟源
; 选择 RTC 模式
SN8P2501B
8-Bit Micro-Controller
SONiX TECHNOLOGY CO., LTD Page 60 V1.0
Page 61
SN8P2501B
8-Bit Micro-Controller

7.3 定时/计数器 TC0

7.3.1 概述

8-bit 二进制增量计数器 TC0 可根据实际需要,分别采用内部时钟和外部时钟两种时钟源作为计数时基。其中,内部 时钟来自 Fcpu,外部时钟 INT0 P0.0 引脚(下降沿触发)输入。寄存器 TC0M 控制具体时钟源的选择。通常,TC0 计 数到 0xFF 变为 0X00 时,系统给出溢出信号触发 TC0 中断,同时开始重新计数。在 PWM 模式下,TC0 的溢出由 ALOAD0TC0OUT 控制的 PWM 周期决定。
TC0 的主要作用如下:
)
8-bit 可编程定时器:根据选定的时钟频率在特定时间产生中断信号;
) 外部事件计数:通过对 INT0 口输入信号下降沿的检测,统计系统事件数;
) 蜂鸣器输出
) PWM 输出
TC0OUT
Internal P5.4 I/O Circuit
ALOAD0
Auto. Reload
Buzzer
TC0 / 2
TC0 Time Out
Up Counting
Reload Value
P5.4
INT0
(Schmitter Trigger)
TC0 Rate
(Fcpu/2~Fcpu/256)
Fcpu
TC0CKS TC0ENB
CPUM0,1
TC0R Reload
Data Buffer
Load
TC0C
8-Bit Binary Up
Counting Counter
Compare
ALOAD0, TC0OUT
R
PWM
S
PWM0OUT
TC0 Time Out
SONiX TECHNOLOGY CO., LTD Page 61 V1.0
Page 62
SN8P2501B
8-Bit Micro-Controller

7.3.2 模式寄存器 TC0M

0DAH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
TC0M
/
复位后
Bit 0
Bit 1 0 = 禁止,P5.4 作为输入/输出口; 1 = 允许,P5.4 输出 TC0OUT 信号。
Bit 2
Bit 3
Bit [6:4]
Bit 7
注:若 TC0CKS=1, TC0 用作外部事件计数器,此时不需要考虑 TC0RATE 的设置,P0.0 口无中断信号(P0.0IRQ0)。
TC0ENB TC0rate2 TC0rate1 TC0rate0 TC0CKS ALOAD0 TC0OUT PWM0OUT
R/W R/W R/W R/W R/W R/W R/W R/W
0 0 0 0 0 0 0 0
PWM0OUT:PWM 输出控制
0 = 禁止 PWM 输出; 1 = 开放 PWM 输出,PWM 输出占空比由 TC0OUT 和 ALOAD0 控制。
TC0OUTTC0 超时输出信号控制。仅当 PWM0OUT = 0 时有效。
ALOAD0:自动重载控制。仅当 PWM0OUT = 0 时有效。
0 = 禁止 TC0 自动重载; 1 = 允许 TC0 自动重载。
TC0CKS:TC0 时钟源控制位
0 = 内部时钟(Fcpu or Fosc) 1 = 外部时钟,由 P0.0/INT0 输入。
TC0RATE[2:0]:TC0 内部时钟选择控制
000 = fcpu/256 001 = fcpu/128 … 110 = fcpu/4 111 = fcpu/2
TC0ENB:TC0 计数控制位。
0 = 禁止 TC0 定时器; 1 = 开放 TC0 定时器。
SONiX TECHNOLOGY CO., LTD Page 62 V1.0
Page 63
SN8P2501B
8-Bit Micro-Controller

7.3.3 计数寄存器 TC0C

TC0C 控制 TC0 的时间间隔。
0DBH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
TC0C
/
复位后
TC0C 初始值的计算公式如下:
N TC0 二进制计数范围,TC0 共有六种工作模式:TC0 定时器、TC0 事件计数器、TC0 Fcpu 时钟源、TC0 Fosc 时钟源、PWM 模式和无 PWM 模式。各模式下参数的设定如下表所示:
TC0CKS PWM0 ALOAD0 TC0OUT
¾ 例:TC0 中断时间设为 10ms,时钟源选择 Fcpu(TC0KS = 0) ,无 PWM 输出(PWM0=0),高速时钟 = 4MHz. Fcpu
= Fosc/4
TC0RATE TC0CLOCK
000 Fcpu/256 65.536 ms 256 us 8000 ms 31250 us 001 Fcpu/128 32.768 ms 128 us 4000 ms 15625 us 010 Fcpu/64 16.384 ms 64 us 2000 ms 7812.5 us 011 Fcpu/32 8.192 ms 32 us 1000 ms 3906.25 us 100 Fcpu/16 4.096 ms 16 us 500 ms 1953.125 us 101 Fcpu/8 2.048 ms 8 us 250 ms 976.563 us 110 Fcpu/4 1.024 ms 4 us 125 ms 488.281 us 111 Fcpu/2 0.512 ms 2 us 62.5 ms 244.141 us
TC0C7 TC0C6 TC0C5 TC0C4 TC0C3 TC0C2 TC0C1 TC0C0
R/W R/W R/W R/W R/W R/W R/W R/W
0 0 0 0 0 0 0 0
TC0C初始值 = N - (TC0 中断间隔时间 * 输入时钟)
N
0 x x 256 0x00~0xFF 00000000b~11111111b 每计数 256 次溢出 1 0 0 256 0x00~0xFF 00000000b~11111111b 每计数 256 次溢出
0
1 - - - 256 0x00~0xFF 00000000b~11111111b 每计数 256 次溢出
1 0 1 64 0x00~0x3F xx000000b~xx111111b 每计数 64 次溢出 1 1 0 32 0x00~0x1F xxx00000b~xxx11111b 每计数 32 次溢出 1 1 1 16 0x00~0x0F xxxx0000b~xxxx1111b 每计数 16 次溢出
TC0C 范围 TC0C 二进制计数范围 注释
TC0RATE = 010 (Fcpu/64)
TC0C 初始值 = N - (TC0 中断时间 * 输入时钟)
= 256 - (10ms * 4MHz / 4 / 64) = 256 - (10
-2 * 4 * 106 / 4 / 64)
= 100 = 64H
TC0 中断时间对应表
高速模式 (Fcpu = 4MHz / 4) 低速模式 (Fcpu = 32768Hz / 4)
最大溢出间隔时间 单步间隔时间 = max/256 最大溢出间隔时间 单步间隔时间 = max/256
SONiX TECHNOLOGY CO., LTD Page 63 V1.0
Page 64
SN8P2501B
8-Bit Micro-Controller

7.3.4 自动重载寄存器 TC0R

TC0 的自动重载功能由 TC0M ALOAD0 位控制。当 TC0C 溢出时,TC0R 的值自动装入 TC0C 中。这样,用户在 使用的过程中就不需要在中断中重新赋值。
TC0 为双重缓存器结构。若程序对 TC0R 进行了修改,那么修改后的 TC0R 值首先被暂存在 TC0R 的第一个缓存器 中,直到 TC0 溢出后,才被真正存入 TC0R 缓存器中,从而避免 TC0 中断时间出错以及 PWM 和蜂鸣器误动作。
注:在 PWM 模式下,系统自动开启自动重装功能。位寄存器 ALOAD0 用于控制溢出范围。
0CDH Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
TC0R
/
复位后
TC0R 初始值计算公式如下:
上式中,N TC0 的最大计数范围。TC0 的溢出时间有如下六种可能情况:
TC0R7 TC0R6 TC0R5 TC0R4 TC0R3 TC0R2 TC0R1 TC0R0
W W W W W W W W
0 0 0 0 0 0 0 0
TC0R初始值 = N - (TC0 中断间隔时间 * 输入时钟)
¾ 例:
TC0CKS PWM0 ALOAD0 TC0OUT
0 x x 256 0x00~0xFF 00000000b~11111111b 1 0 0 256 0x00~0xFF 00000000b~11111111b
0
1 - - - 256 0x00~0xFF 00000000b~11111111b
1 0 1 64 0x00~0x3F xx000000b~xx111111b 1 1 0 32 0x00~0x1F xxx00000b~xxx11111b 1 1 1 16 0x00~0x0F xxxx0000b~xxxx1111b
N
TC0R 计数范围 TC0R 二进制计数范围
TC0 中断间隔时间设置为 10ms,时钟源选 Fcpu (TC0KS = 0) ,无 PWM 输出,(PWM0 = 0),高速时钟为外
4MHzFcpu = Fosc/4TC0RATE = 010 (Fcpu/64)
TC0R 初始值 = N - (TC0 中断间隔时间 * 输入时钟源)
= 256 - (10ms * 4MHz / 4 / 64) = 256 - (10
-2
* 4 * 106 / 4 / 64) = 100 = 64H
SONiX TECHNOLOGY CO., LTD Page 64 V1.0
Page 65
SN8P2501B
8-Bit Micro-Controller

7.3.5 TC0 时钟频率输出(蜂鸣器输出)

蜂鸣器输出即 TC0 计数/定时器的频率输出功能。对 TC0 时钟频率进行适当设置,TC0 经过 2 分频后作为 TC0OUT
并输出到 P5.4 引脚,同时,P5.4 的普通 I/O 功能自动被屏蔽。TC0OUT 输出波形如下:
1 2 3 4
TC0 Overflow Clock
1 2 3 4
TC0OUT (Buzzer) Output Clock
¾ 例:设置 TC0OUT (P5.4)。其中,外部高速时钟 = 4MHz,TC0OUT 频率 = 0.5KHzTC0 频率 = 1KHzTC0
钟源采用内部时钟
Fcpu/4TC0RATE2~TC0RATE1 = 110, TC0C = TC0R = 131。
MOV A,#01100000B B0MOV TC0M,A
; TC0
速率 Fcpu/4
MOV A,#131
自动加载参考值设置
; B0MOV TC0C,A B0MOV TC0R,A
B0BSET FTC0OUT B0BSET FALOAD1 B0BSET FTC0ENB
的输出信号由 P5.4 输出,禁止 P5.4 的普通 I/O 功能
; TC0
; 允许 TC0 自动重载功能
; 开启 TC0 定时器
注:蜂鸣器的输出有效时,“PWM0OUT”必须被置为 0
SONiX TECHNOLOGY CO., LTD Page 65 V1.0
Page 66
SN8P2501B

7.3.6 TC0 操作举例

TC0
定时器可用于定时器中断、事件计数、TC0OUT PWM。下面分别举例说明。
¾ 例:停止 TC0 计数器,禁止 TC0 中断并将 TC0 中断请求标志清零。
B0BCLR FTC0ENB B0BCLR FTC0IEN B0BCLR FTC0IRQ
¾ 例:设置 TC0 的速率 (不包含事件计数模式)。
¾ 例:设置 TC0 的时钟源。
or
¾ 例:TC0 自动重载模式设置。
or
¾ 例:TC0 中断间隔时间设置。
MOV A,#7FH B0MOV TC0C,A B0MOV TC0R,A
B0BCLR FTC0OUT or
B0BSET FTC0OUT or
B0BCLR FTC0OUT or
B0BSET FTC0OUT
¾ 例:设置 TC0 模式。
or
or
¾ 例:开启 TC0。
MOV A, #0xxx0000b
B0MOV TC0M,A
B0BCLR FTC0CKS
B0BSET FTC0CKS
B0BCLR FALOAD0
B0BSET FALOAD0
B0BCLR FALOAD0
B0BCLR FALOAD0
B0BSET FALOAD0
B0BSET FALOAD0
B0BSET FTC0IEN
B0BSET FTC0OUT
B0BSET FPWM0OUT
B0BSET FTC0ENB
; TC0M
x000xxxxb~x111xxxxb
;
;
;
;
;
; TC0
; 设置 TC0C
;
; ALOAD0, TC0OUT = 00, PWM
; ALOAD0, TC0OUT = 01, PWM
; ALOAD0, TC0OUT = 10, PWM
; ALOAD0, TC0OUT = 11, PWM
;
;
;
;
bit4~bit6 控制 TC0 速率,设置范围为
禁止 TC0 中断
选择内部时钟
选择外部时钟
开放自动重载功能
禁止 TC0 自动重载
模式决定 TC0C TC0R 的值
设置 TC0R
开放 TC0 中断功能
开放 TC0OUT (蜂鸣器) 功能
开放 PWM 功能
开放 TC0
8-Bit Micro-Controller
周期 = 0~255
周期 = 0~63
周期 = 0~31
周期 = 0~15
SONiX TECHNOLOGY CO., LTD Page 66 V1.0
Page 67
SN8P2501B
8-Bit Micro-Controller

7.4 PWM0

7.4.1 概述

PWM
信号输出到 PWM0OUTP5.4 引脚),TC0OUT 和 ALOAD0 控制 PWM 输出的量程(256、64、32 和 16)。
8-bit 计数器 TC0C 计数过程中不断与 TC0R 相比较,当 TC0C 计数到两者相等时,PWM 输出低电平,当 TC0C 再次从
零开始计数时,
参考寄存器保持输入 00H 可使 PWM 的输出长时间维持在低电平,通过修改 TC0R 可改变 PWM 输出占空比。
注:TC0 为双重缓存器结构,调整 TC0R 的值可以改变 PWM 的输出占空比。用户可随时改变 TC0R 的值,但是只有在 TC0 溢出
后,这一修改值才真正被写入 TC0R 中。
ALOAD0 TC0OUT PWM 占空比范围 TC0C 有效值 TC0R 有效值
0 0 0/256~255/256 0x00~0xFF 0x00~0xFF 7.8125K 每计数 256 次溢出 0 1 0/64~63/64 0x00~0x3F 0x00~0x3F 31.25K 每计数 64 次溢出 1 0 0/32~31/32 0x00~0x1F 0x00~0x1F 62.5K 每计数 32 次溢出 1 1 0/16~15/16 0x00~0x0F 0x00~0x0F 125K 每计数 16 次溢出
PWM 输出占空比随 TC0R 的变化而变化:0/256~255/256
PWM 被强制输出高电平。PWM0 输出占空比 = TC0R/计数量程(计数量程 = 2566432 16)。
0 1 128 254 255
…… ……
MAX. PWM 输出频率
(Fcpu = 4MHz)
0 1 128 254 255
…… ……
注释
TC0 Clock
High
Low
Low
Low
Low
TC0R=00H
High
TC0R=01H
High
TC0R=80H
TC0R=FFH
SONiX TECHNOLOGY CO., LTD Page 67 V1.0
Page 68

7.4.2 TC0IRQ PWM 输出占空比

PWM 模式下,TC0IRQ 的频率与 PWM 的占空比有关,具体情况如下图所示:
0xFF
TC0C Value
0x00
PWM0 Output
(Duty Range 0~255)
0xFF
SN8P2501B
8-Bit Micro-Controller
TC0 Overflow,
TC0IRQ = 1
TC0 Overflow,
TC0IRQ = 1
TC0C Value
0x00
PWM0 Output
(Duty Range 0~63)
0xFF
TC0C Value
0x00
PWM0 Output
(Duty Range 0~31)
0xFF
TC0C Value
TC0 Overflow,
TC0IRQ = 1
TC0 Overflow,
TC0IRQ = 1
0x00
PWM0 Output
(Duty Range 0~15)
SONiX TECHNOLOGY CO., LTD Page 68 V1.0
Page 69
SN8P2501B
8-Bit Micro-Controller

7.4.3 PWM 输出占空比与 TC0R 的变化

PWM 模式下,系统随时比较 TC0C TC0R 的异同。若 TC0C<TC0RPWM 输出高电平,反之则输出低电平。
TC0C 发生改变的时候,PWM 将在下一周期改变输出占空比。如果 TC0R 保持恒定,那么 PWM 输出波形也保持稳定。
TC0C = TC0R
TC0C overflow and TC0IRQ set
0xFF
TC0C Value
0x00
PWM0 Output
Period
1 2 3 4 5 6 7
上图所示是 TC0R 恒定时的波形。每当 TC0C 溢出时,PWM 都输出高电平,TC0C TC0R 时,PWM 即输出低电平。
下面所示是
TC0R 发生变化时对应的波形图:
TC0C < TC0R PWM Low > High
TC0C > = TC0R PWM High > Low
TC0C overflow and TC0IRQ set
TC0C Value
0xFF
0x00
Update New TC0R! Old TC0R < TC0C < New TC0R
Old TC0R Old TC0RNew TC0R New TC0R
Update New TC0R! New TC0R < TC0C < Old TC0R
PWM0 Output
Period
1
1st PWM
2
Update PWM Duty
3
2nd PWM
4
Update PWM Duty
5
3th PWM
period 2 period 4 中,显示新的占空比(TC0R),但 PWM period 2 period 4 的占空比要在下一个 period
才会改变。这样,可以避免 PWM 不随设定改变或在同一个周期内改变两次,从而避免系统发生不可预知的误动作。
SONiX TECHNOLOGY CO., LTD Page 69 V1.0
Page 70
SN8P2501B
8-Bit Micro-Controller

7.4.4 PWM 编程举例

¾ 例:PWM 输出设置。外部高速振荡器输出频率 = 4MHZFcpu = Fosc/4PWM 输出占空比 = 30/256,输出频率
1KHZPWM 时钟源来自外部时钟,TC0 速率 = Fcpu/4TC0RATE2~TC0RATE1 = 110TC0C = TC0R = 30
MOV A,#01100000B B0MOV TC0M,A
MOV A,#30 B0MOV TC0C,A
B0MOV TC0R,A
B0BCLR FTC0OUT B0BCLR FALOAD0
B0BSET FPWM0OUT B0BSET FTC0ENB
注:TC0R 为只写寄存器,不能用 INCMS DECMS 指令对其进行操作。
¾ 例:改变 TC0R 的内容。
MOV A, #30H B0MOV TC0R, A
INCMS BUF0 NOP B0MOV A, BUF0 B0MOV TC0R, A
速率=Fcpu/4
; TC0
; PWM
;
; PWM0
输出占空比=30/256
占空比变化范围: 0/256~255/256.
输出至 P5.4,禁止 P5.4 I/O 功能
SONiX TECHNOLOGY CO., LTD Page 70 V1.0
Page 71
SN8P2501B
8-Bit Micro-Controller
8
8
8

I/O 端口

8.1 I/O 端口模式

寄存器 PnM 可选择编程控制端口的数据传送方向。
0B8H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P0M
/
复位后
0C1H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P1M
/
复位后
0C2H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P2M
/
复位后
0C5H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P5M
/
复位后
Bit[7:0] 0 = 输入模式
注:
例:I/O 模式选择。
¾
CLR P0M CLR P1M
CLR P5M
MOV A, #0FFH B0MOV P0M, A
B0MOV P1M, A B0MOV P5M, A
B0BCLR P1M.2
B0BSET P1M.2
PnM[7:0]Pn 模式控制位(n = 0~5).
1 = 输出模式
1. 用户可通过位操作指令(B0BSET, B0BCLR)I/O 口进行编程控制;
2. P1.1 只能作为输入引脚,寄存器 P1M.1 的值保持为“1”
- - - - - - - P00M
- - - - - - - R/W
- - - - - - - 0
- - - - P13M P12M - P10M
- - - - R/W R/W - R/W
- - - - 0 0 - 0
- - P25M P24M P23M P22M P21M P20M
- - R/W R/W R/W R/W R/W R/W
- - 0 0 0 0 0 0
- - - P54M - - - -
- - - R/W - - - -
- - - 0 - - - -
所有端口设为输入模式
;
;
所有端口设为输出模式
; P1.2
; P1.2
设为输入模式
设为输出模式
SONiX TECHNOLOGY CO., LTD Page 71 V1.0
Page 72
SN8P2501B
8-Bit Micro-Controller

8.2 I/O 口上拉电阻

0E0H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P0UR
/
复位后
0E1H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P1UR
/
复位后
0E2H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P2UR
/
复位后
0E5H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P5UR
/
复位后
注:P1.1 只可用作输入引脚,无上拉电阻,寄存器 P1UR.1 保持值 1
¾ 例:I/O 上拉寄存器。
MOV A, #0FFH B0MOV P0UR, A ;
B0MOV P1UR, A B0MOV P5UR, A
- - - - - - - P00R
- - - - - - - W
- - - - - - - 0
- - - - P13R P12R - P10R
- - - - W W - W
- - - - 0 0 - 0
- - P25R P24R P23R P22R P21R P20R
- - W W W W W W
- - 0 0 0 0 0 0
- - - P54R - - - -
- - - W - - - -
- - - 0 - - - -
使能 P0, 1, 5 的上拉电阻
;
SONiX TECHNOLOGY CO., LTD Page 72 V1.0
Page 73
SN8P2501B
8-Bit Micro-Controller

8.3 I/O 漏极开路寄存器

P1.0 有内置漏极开路功能,当使能该漏极开路功能时,P1.0 必须被置为输出模式。漏极开路的外部电路如下,图中
的上拉电阻必不可少,漏极开路的输出高电平由上拉电阻驱动,输出低电平时为灌电流。
MCU1
MCU2
U
VCC
Pull-up Resistor
Open-drain pin Open-drain pin
U
0E9H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P1OC
/
复位后
- - - - - - - P10OC
- - - - - - - W
- - - - - - - 0
Bit 0
P10OCP1.0 漏极开路控制位
0 = 无漏极开路 1 =
漏极开路
¾ 例:P1.0 漏极开路,输出高电平。
B0BSET P1.0
; P1.0
置位
B0BSET P10M MOV A, #01H
; P1.0
; P1.0
为输出模式
漏极开路
B0MOV P1OC, A
注:P1OC 为只写寄存器,P10C 只能通过指令“MOV”进行动作。
¾ 例:禁止 P1.0 漏极开路,输出低电平。
MOV A, #0 B0MOV P1OC, A
注:禁止 P1.0 漏极开路后,P1.0 恢复到之前的 I/O 模式。
SONiX TECHNOLOGY CO., LTD Page 73 V1.0
Page 74
SN8P2501B
8-Bit Micro-Controller

8.4 I/O 口数据寄存器

0D0H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P0
/
复位后
0D1H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P1
/
复位后
0D2H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P2
/
复位后
0D5H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
P5
/
复位后
注:当外部复位有效时, P11 的值保持为 1
¾ 例:从输入口读取数据。
B0MOV A, P0 B0MOV A, P1 B0MOV A, P5
¾ 例:写数据到输出端。
MOV A, #0FFH B0MOV P0, A
B0MOV P1, A B0MOV P5, A
¾ 例:写 1-bit 的数据到输出口。
B0BSET P1.3 B0BSET P5.4
B0BCLR P1.3 B0BCLR P5.4
- - - - - - - P00
- - - - - - - R/W
- - - - - - - 0
- - - - P13 P12 P11 P10
- - - - R/W R/W R/W R/W
- - - - 0 0 0 0
- - P25 P24 P23 P22 P21 P20
- - R R/W R/W R/W R/W R/W
- - 0 0 0 0 0 0
- - - P54 - - - -
- - - R/W - - - -
- - - 0 - - - -
P0 读数据
;
; P1 读数据
P5 读数据
;
立即数 FFH 写入所有输出口
;
; P1.3
; P1.3
P5.4 “1”.
P5.4 “0”.
SONiX TECHNOLOGY CO., LTD Page 74 V1.0
Page 75
9
9
9
SN8P2501B
8-Bit Micro-Controller

指令表

Field
MOV A,M M MOV M,A O B0MOV A,M V B0MOV M,A E MOV A,I
B0MOV M,I
XCH A,M
B0XCH A,M
MOVC
ADC A,M A ADC M,A R ADD A,M
I ADD M,A T B0ADD M,A H ADD A,I M SBC A,M E SBC M,A T SUB A,M
I SUB M,A C SUB A,I
AND A,M L AND M,A O AND A,I G OR A,M
I OR M,A
C OR A,I
XOR A,M
XOR M,A
XOR A,I
SWAP M P SWAPM M R RRC M O RRCM M C RLC M E RLCM M S CLR M S BCLR M.b
BSET M.b
B0BCLR M.b
B0BSET M.b
CMPRS A,I B CMPRS A,M R INCS M A INCMS M N DECS M C DECMS M H BTS0 M.b
BTS1 M.b
B0BTS0 M.b
B0BTS1 M.b
JMP d
CALL d
M RET
I RETI
S NOP
注: 1. “M”是系统寄存器或 RAM,M 为系统寄存器时 N = 0,否则 N = 1。
指令格式 描述
A
M
M
A
A
M (bank 0)
M (bank 0) A
I
M
I。(M 仅适用地址是 0x80~0x87 的系统寄存器,如 RYZ…I 不能是 E6hE7h。)
A
←→M
A
←→M (bank 0)。(M 不使用地址是 0x80~0x87 的系统寄存器)
R, A A
← A + M + C,如果产生进位则 C = 1,否则 C = 0。
M
← A + M + C,如果产生进位则 C = 1,否则 C = 0。
A
← A + M,如果产生进位则 C = 1,否则 C = 0。
M
← A + M,如果产生进位则 C = 1,否则 C = 0。
M (bank 0) A
← A + I,如果产生进位则 C = 1,否则 C = 0。
A
A - M - /C,如果产生借位则 C=0, 否则 C=1
M
A - M - /C,如果产生借位则 C=0, 否则 C=1
A
A – M,如果产生借位则 C=0, 否则 C=1
M
A – M,如果产生借位则 C=0, 否则 C=1
A
A – I,如果产生借位则 C=0, 否则 C=1
A
A M
M
A M
A
A I
A
A M
M
A M
A
A I
A
A 异或 M
M
A 异或 M
A
A 异或 I
A (b3~b0, b7~b4) M(b3~b0, b7~b4) A
← M 带进位右移
M
← M 带进位右移
A
← M 带进位左移
M
← M 带进位左移
M
0
M.b M.b M(bank 0).b M(bank 0).b
比较,如果相等则跳过下一条指令,C 与 ZF 标志位可能受影响 比较,如果相等则跳过下一条指令,C 与 ZF 标志位可能受影响
A
M + 1,如果 A = 0,则跳过下一条指令
M
M + 1,如果 M = 0,则跳过下一条指令
A
M - 1,如果 A = 0,则跳过下一条指令
M
M - 1,如果 M = 0,则跳过下一条指令
如果 M.b = 0,则跳过下一条指令 如果 M.b = 1,则跳过下一条指令 如果 M(bank 0).b = 0,则跳过下一条指令 如果 M(bank 0).b = 1,则跳过下一条指令 跳转指令,PC15/14 Å RomPages1/0,PC13~PC0 Å d 子程序调用指令,Stack Å PC15~PC0,PC15/14 Å RomPages1/0,PC13~PC0 Å d
子程序跳出指令,PC Å Stack 中断处理程序跳出指令,PC Å Stack,并使能全局中断控制位 空指令,无特别意义
2. 条件跳转指令的条件为真,则 S = 1,否则 S = 0
3. 指令“B0MOV M, I”中的“I”不能是“E6h”或“E7h”。
4. 指令“B0XCH”中的 M 不能是系统寄存器的 0x80~0xFF 单元。
A
ROM [Y,Z]
← M (bank 0) + A,如果产生进位则 C = 1,否则 C = 0。
M(b7~b4, b3~b0)
M(b7~b4, b3~b0)
0 1
0 1
C DC Z
- -
- - - 1
- -
- - - 1
- - - 1
- - - 1
- - - 1+N
- - - 1+N
- - - 2
- -
- -
- -
- -
- -
- -
- -
- -
- -
- - - 1
- - - 1+N
-- 1
-- 1+N
-- 1
-- 1+N
- - - 1
- - - 1+N
- - - 1+N
- - - 1+N
- - - 1+N
-
-
- - - 1+ S
- - - 1+N+S
- - - 1+ S
- - - 1+N+S
- - - 1 + S
- - - 1 + S
- - - 1 + S
- - - 1 + S
- - - 2
- - - 2
- - - 2
- - - 2
- - - 1
周期
1
1
1
1+N
1 1+N 1+N
1
1 1+N
1 1+N
1
1
1+N
1
1
1+N
1
1
1+N
1
1 + S
1 + S
SONiX TECHNOLOGY CO., LTD Page 75 V1.0
Page 76
1
1
1
0
0
0

电气特性

SN8P2501B
SN8P2501B
8-Bit Micro-Controller
的电气特性请参考英文版的 Datasheet
SONiX TECHNOLOGY CO., LTD Page 76 V1.0
Page 77
1
1
1
1

11.1 转接板插座对应的引脚分布图

1
1

OTP 烧录引脚

Easy Writer JP1/JP2 Easy Writer JP3 (Mapping to 48-pin text tool)
VSS 2 1 VDD DIP1 1 48 DIP48
CE 4 3 CLK/PGCLK DIP2 2 47 DIP47
OE/ShiftDat 6 5 PGM/OTPCLK DIP3 3 46 DIP46
D0 8 7 D1 DIP4 4 45 DIP45 D2 10 9 D3 DIP5 5 44 DIP44 D4 12 11 D5 DIP6 6 43 DIP43
D6 14 13 D7 DIP7 7 42 DIP42 VPP 16 15 VDD DIP8 8 41 DIP41 RST 18 17 HLS DIP9 9 40 DIP40
ALSB/PDB 20 19 - DIP10 10 39 DIP39
DIP11 11 38 DIP38
JP1 连接 MP 转接板
DIP13 13 36 DIP36
DIP14 14 35 DIP35 DIP15 15 34 DIP34 DIP16 16 33 DIP33 DIP17 17 32 DIP32 DIP18 18 31 DIP31 DIP19 19 30 DIP30 DIP20 20 29 DIP29 DIP21 21 28 DIP28 DIP22 22 27 DIP27 DIP23 23 26 DIP26 DIP24 24 25 DIP25
JP3连接 MP 转接板
SN8P2501B
8-Bit Micro-Controller
DIP12 12 37 DIP38
SONiX TECHNOLOGY CO., LTD Page 77 V1.0
Page 78

11.2 烧录引脚分布图

芯片名
Number Name Number Pin Number Pin
1 VDD 4 VDD 4,5 VDD 2 GND 11 VSS 12,13 VSS 3 CLK 10 P0.0 11 P0.0 4 CE - - - - 5 PGM 9 P1.0 10 P1.0 6 OE 8 P5.4 9 P5.4 7 D1 - - - - 8 D0 - - - - 9 D3 - - - - 10 D2 - - - - 11 D5 - - - - 12 D4 - - - - 13 D7 - - - - 14 D6 - - - - 15 VDD - - - - 16 VPP 7 RST 8 RST 17 HLS - - - - 18 RST - - - - 19 - - - - - 20 ALSB/PDB 6 P1.2 7 P1.2
EZ Writer
Connector
SN8P2501B
8-Bit Micro-Controller
SN8P2501B 烧录信息
SN8P2501BP/S SN8P2501BX
OTP IC / JP3
引脚分布
SONiX TECHNOLOGY CO., LTD Page 78 V1.0
Page 79
1
2
1
2
1
2
SN8P2501B
以使用。
SN8P2501B
8-Bit Micro-Controller

SN8P2501A 升级为 SN8P2501B 注意事 项

是最新推出的 SN8P2501A 的升级芯片,改善的特性列表如下。建议用户在新的项目或产品评估时,加
改善特性
LVD 1.8V 2.0/2.4/3.6V
IHRC ±15% ±2%
Fcpu Fosc/1 ~ Fosc/128 Fosc/1 ~ Fosc/16
T0C 寄存器 可读/写 可读/写
TC0C 寄存器 可写 可读/写
PCL 寄存器
中断入口处指令 须为 NOP JMP 指令
B0MOV M,I
输入“0”电压(Typical) 输入“1”电压(Typical)
SN8P2501A SN8P2501B
不可写入
0xnnFE0xnnFF
I0xE6/E7
0.3VDD 0.4VDD
0.7VDD 0.6VDD
-
-
-
SN8P2501B
围以内。由于考虑到芯片代工制程的飘移, 荡频率的校正。下面给出的 发参考。
值(
IHRC Freq.
(MHz)
16.10
16.00
15.90
15.80
15.70
1 IHRC振荡频率与工作电压曲线图 图 2 IHRC振荡频率与工作温度曲线图
SN8P2501B 改善后的 Multi LVD 电路,允许用户通过 Code Option 选择电压侦测值(2.4V、3.6V)或者低电压复位
2.0V2.4V)。下面列出了针对 LVD 选择的 Code Option 选项。
IHRC 振荡频率 16MHz 精确度有了大幅度的提高,在 5V/25 /Fcpu=1Mhz 条件下可控制在 ±2%
SONiX 推出的 MP Writer Version18B 或更高版本的编程器会进行芯片内部振
IHRC 振荡频率与芯片工作电压、IHRC 振荡频率与芯片工作温度的关系曲线图可用作产品开
I HRC Freq.
(MHz)
17.00
16.50
16.00
Fcpu=Fhosc/16 Fcpu=Fhosc/4 Fcpu=Fhosc/1
22.533.544.555.5
(温度 25℃) (VDD = 5V)
VDD (V)
15.50
15.00
14.50
-50-200 1025507085
Temperature
(ºC)
Code Option 选项说明
LVD
SONiX TECHNOLOGY CO., LTD Page 79 V1.0
LVD_L 芯片工作电压低于 2V reset LVD_M LVD_H
芯片工作电压低于 2V reset,开启 2.4V 电压侦测功能 芯片工作电压低于 2.4V reset,开启 3.6V 电压侦测功能
Page 80
SN8P2501B
8-Bit Micro-Controller
SN8P2501A
开发的旧有项目如果改用 SN8P2501,可以从以下几个步骤来进行。
、 程序中 Chip 宣告改为 SN8P2501B。
1 2 Code Option 中针对 LVD 进行合适的选择。 3
、 利用 M2ASM107 或更高版本的软件针对程序重新编译。
4 SN8P2501A 的看门狗清除指令“@RST_WDT”中有两个 NOP 指令,而 SN8P2501B 没有,这会影响到主程
polling 计数时间差异,如将 SN8P2501A 原程序修改为 SN8P2501B,可在@RST_WDT 后加两个 NOP,让
主程序由
SN8P2501A 转换为 SN8P2501B 时维持原来的时序。
Example
SN8P2501A SN8P2501B main: main: @RST_WDT @RST_WDT ... ...
NOP NOP
... ...
5
、 利用 EZ WriterVersion18B 或更高版本的 MP Writer 进行芯片编程。SN8P2501B 采用 IHRC 时如果利用 EZ
Writer 编程,仿真器端须使用 16MHz 晶振。
注:
由于 Code Option “LVD”选项的添加,程序重新编译后,Checksum 值会改变,请做好记录再烧录芯片。如果没有源程序,
请联络代理商将程序代码转交 SONiX 代为处理。
SONiX TECHNOLOGY CO., LTD Page 80 V1.0
Page 81
1
3
1
1

13.1 P-DIP 14 PIN

3
3

封装信息

SN8P2501B
8-Bit Micro-Controller
SYMBOLS
A - - 0.210 - - 5.334 A1 0.015 - - 0.381 - ­A2 0.125 0.130 0.135 3.175 3.302 3.429
D 0.735 0.075 0.775 18.669 1.905 19.685
E 0.300 7.62
E1 0.245 0.250 0.255 6.223 6.35 6.477
L 0.115 0.130 0.150 2.921 3.302 3.810
B
θ° 0° 7° 15° 0° 7° 15°
MIN NOR MAX MIN NOR MAX
(inch) (mm)
0.335 0.355 0.375 8.509 9.017 9.525
SONiX TECHNOLOGY CO., LTD Page 81 V1.0
Page 82

13.2 SOP 14 PIN

SN8P2501B
8-Bit Micro-Controller
SYMBOLS
A 0.058 0.064 0.068 1.4732 1.6256 1.7272 A1 0.004 - 0.010 0.1016 - 0.254
B 0.013 0.016 0.020 0.3302 0.4064 0.508
C 0.0075 0.008 0.0098 0.1905 0.2032 0.2490
D 0.336 0.341 0.344 8.5344 8.6614 8.7376
E 0.150 0.154 0.157 3.81 3.9116 3.9878 e - 0.050 - - 1.27 -
H 0.228 0.236 0.244 5.7912 5.9944 6.1976
L 0.015 0.025 0.050 0.381 0.635 1.27
θ° 0° - 8° 0° - 8°
MIN NOR MAX MIN NOR MAX
(inch) (mm)
SONiX TECHNOLOGY CO., LTD Page 82 V1.0
Page 83

13.3 SSOP 16 PIN

SN8P2501B
8-Bit Micro-Controller
1.7526
0.254
1.4986
0.3048
0.2794
0.254
0.2286
5.0038
3.9878
6.1976
1.27
SYMBOLS
A 0.053 - 0.069 A1 0.004 - 0.010 A2 - - 0.059
b 0.008 - 0.012
b1 0.008 - 0.011
c 0.007 - 0.010
c1 0.007 - 0.009
D 0.189 - 0.197 E1 0.150 - 0.157
E 0.228 - 0.244 L 0.016 - 0.050 e 0.025 BASIC 0.635 BASIC
θ° 0° - 8° 0° - 8°
MIN NOR MAX MIN NOR MAX
(inch) (mm)
1.3462
0.1016
-
0.2032
0.2032
0.1778
0.1778
4.8006
3.81
5.7912
0.4064
-
-
-
-
-
-
-
-
-
-
-
SONiX TECHNOLOGY CO., LTD Page 83 V1.0
Page 84
SN8P2501B
8-Bit Micro-Controller
SONiX
册所涉及的产品或电路的运用和使用所引起的任何责任, 和任何 由
SONiX 在产品设计和制造上的疏忽引起的,用户应赔偿所有费用、损失、合理的人身伤害或死亡所直接或间接产
生的律师费用,并且用户保证
公司保留对以下所有产品在可靠性,功能和设计方面的改进作进一步说明的权利。SONiX 不承担由本手
SONiX 的产品不是专门设计来应用于外科植入、生命维持
SONiX 产品的故障会对个体造成伤害甚至死亡的领域。如果将 SONiX 的产品应用于上述领域,即使这些是
SONiX 及其雇员、子公司、分支机构和销售商与上述事宜无关。
总公司: 地址台湾新竹县竹北市县政 5 32 8 9 楼 电话886-3-551 0520 传真886-3-551 0523
台北办事处: 地址台北市松德路 171 15 楼之 2 电话886-2-2759 1980 传真886-2-2759 8180
香港办事处: 地址香港新界沙田沙田乡宁会路 138#新城市中央广场第一座 7
电话852-2723 8086 传真852-2723 9179 松翰科技(深圳)有限公司 地址深圳市南山区高新技术产业园南区 T2-B 2 层 电话86-755-2671 9666 传真86-755-2671 9786 技术支持:
705
Sn8fae@SONiX.com.tw
SONiX TECHNOLOGY CO., LTD Page 84 V1.0
Loading...