SONIX SN78P2612

SN8P2610 Series
8-Bit Micro-Controller
SN8P2610 系列
用户参考手册
V 1.0
SN8P2613
SN8P2612
SN8P2611
SONiX 8-Bit MCU
SONiX 公司保留对以下所有产品在可靠性,功能和设计方面的改进作进一步说明的权利。SONiX 不承担由本手册所
涉及的产品或电路的运用和使用所引起的任何责任,SONiX 的产品不是专门设计来应用于外科植入、生命维持和任何
SONiX 产品的故障会对个体造成伤害甚至死亡的领域。如果将 SONiX 的产品应用于上述领域,即使这些是由 SONiX 在
产品设计和制造上的疏忽引起的,用户应赔偿所有费用、损失、合理的人身伤害或死亡所直接或间接产生的律师费用,并
且用户保证 SONiX 及其雇员、子公司、分支机构和销售商与上述事宜无关。
SONiX TECHNOLOGY CO., LTD
Page 1
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
修改记录
版本
VER 1.0
日期
2006 年 12 月 1.
说明
初版。
SONiX TECHNOLOGY CO., LTD
Page 2
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
目
录
111
产品简介 ...................................................................................................................................................................................... 5
1.1
特性 ............................................................................................................................................................................... 5
1.2
系统结构框图................................................................................................................................................................. 6
1.3
引脚配置 ........................................................................................................................................................................ 7
1.4
引脚说明 ........................................................................................................................................................................ 8
1.5
引脚电路框图................................................................................................................................................................. 9
222
中央处理器(CPU)....................................................................................................................................................................... 10
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
编译选项表(Code Option) ....................................................................................................................................... 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
程序状态寄存器 PFLAG ..................................................................................................................................... 23
2.1.4.6
程序计数器 PC ................................................................................................................................................... 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
333
复位 ........................................................................................................................................................................................... 31
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
齐纳二极管复位电路 .................................................................................................................................................... 38
3.6.4
电压偏置复位电路........................................................................................................................................................ 38
3.6.5
外部 IC 复位................................................................................................................................................................. 39
444
系统工作时钟 ............................................................................................................................................................................. 40
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
4.5
系统低速时钟............................................................................................................................................................... 45
SONiX TECHNOLOGY CO., LTD
Page 3
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
4.5.1
系统时钟测试............................................................................................................................................................... 45
系统工作模式 ............................................................................................................................................................................. 46
5.1
概述 ............................................................................................................................................................................. 46
5.2
系统模式切换............................................................................................................................................................... 47
5.3
唤醒时间 ...................................................................................................................................................................... 48
5.3.1
概述 ............................................................................................................................................................................. 48
5.3.2
唤醒时间 ...................................................................................................................................................................... 48
5.3.3
P1W 唤醒功能控制寄存器 ........................................................................................................................................... 48
666
中断 ........................................................................................................................................................................................... 49
6.1
概述 ............................................................................................................................................................................. 49
6.2
中断请求使能寄存器 INTEN ........................................................................................................................................ 49
6.3
中断请求寄存器 INTRQ ............................................................................................................................................... 50
6.4
GIE 全局中断 ............................................................................................................................................................... 50
6.5
PUSH, POP 处理 ......................................................................................................................................................... 51
6.6
INT0(P0.0)中断............................................................................................................................................................ 52
6.7
INT1(P0.1)中断............................................................................................................................................................ 53
6.8
T0 中断 ........................................................................................................................................................................ 54
6.9
TC0 中断 ..................................................................................................................................................................... 55
6.10
多中断操作举例 ........................................................................................................................................................... 56
777
I/O 口 ......................................................................................................................................................................................... 57
7.1
I/O 口模式.................................................................................................................................................................... 57
7.2
I/O 上拉电阻寄存器...................................................................................................................................................... 58
7.3
I/O 漏极开路寄存器...................................................................................................................................................... 59
7.4
I/O 口数据寄存器 ......................................................................................................................................................... 60
888
定时器........................................................................................................................................................................................ 61
8.1
看门狗定时器............................................................................................................................................................... 61
8.2
定时器 T0 .................................................................................................................................................................... 62
8.2.1
概述 ............................................................................................................................................................................. 62
8.2.2
模式寄存器 T0M .......................................................................................................................................................... 62
8.2.3
计数寄存器 T0C........................................................................................................................................................... 63
8.2.4
T0 操作举例................................................................................................................................................................. 64
8.3
定时/计数器 TC0.......................................................................................................................................................... 65
8.3.1
概述 ............................................................................................................................................................................. 65
8.3.2
模式寄存器 TC0M........................................................................................................................................................ 66
8.3.3
计数寄存器 TC0C ........................................................................................................................................................ 67
8.3.4
自动重载寄存器 TC0R ................................................................................................................................................. 68
8.3.5
TC0 时钟频率输出(蜂鸣器输出) ................................................................................................................................... 69
8.3.6
TC0 操作举例 .............................................................................................................................................................. 70
8.4
PWM0 ......................................................................................................................................................................... 71
8.4.1
概述 ............................................................................................................................................................................. 71
8.4.2
TC0IRQ 和 PWM 输出占空比 ...................................................................................................................................... 72
8.4.3
PWM 输出占空比与 TC0R 的变化 ............................................................................................................................... 73
8.4.4
PWM 编程举例 ............................................................................................................................................................ 74
999
指令集........................................................................................................................................................................................ 75
111000
电气特性 ............................................................................................................................................................................... 76
111111
OTP 烧录引脚 ............................................................................................................................................................................ 77
11.1
EASY WRITER 转接板烧录脚位 ...................................................................................................................................... 77
11.2
WRITER V3.0 转接板烧录脚位 ...................................................................................................................................... 77
11.3
烧录引脚 ...................................................................................................................................................................... 78
111222
封装....................................................................................................................................................................................... 79
12.1
P-DIP 20 PIN ............................................................................................................................................................... 79
12.2
P-DIP 18 PIN ............................................................................................................................................................... 80
12.3
P-DIP 14 PIN ............................................................................................................................................................... 81
12.4
SOP 20 PIN ................................................................................................................................................................. 82
12.5
SOP 18 PIN ................................................................................................................................................................. 83
12.6
SOP 14 PIN ................................................................................................................................................................. 84
12.7
SSOP 20 PIN............................................................................................................................................................... 85
555
SONiX TECHNOLOGY CO., LTD
Page 4
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
1
产品简介
1.1 特性
♦
存储器配置
OTP ROM:2K * 16 bits.
RAM:64 * 8 bits.
4 层堆栈缓存器
♦
I/O 引脚配置
双向输入输出端口:P0, P1, P5.
单向输入引脚:P1.5.
可编程漏极开路端:P1.0.
唤醒功能端口:P0, P1 电平变化触发
内置上拉电阻:P0, P1, P5.
外部中断触发:
P0.0 由寄存器 PEDGE 控制
P0.1 仅由下降沿触发
♦
3-Level LVD.
复位及电源监控系统
♦
4 个中断源
2 个内部中断:T0, TC0.
2 个外部中断:INT0, INT1.
♦
强大的指令系统
单时钟指令周期(1T)
大多数指令只需要一个时钟周期
JMP 指令可以在整个 ROM 区执行
CALL 指令可寻址整个 ROM 区
MOVC 可对整个 ROM 区查表
)
特性列表
芯片
ROM RAM 堆栈
SN8P1602B 1K*16
SN8P2602A 1K*16
SN8P2611 2K*16
SN8P2612 2K*16
SN8P2613 2K*16
48
48
64
64
64
4
4
4
4
4
♦
2 个 8-bit 定时/计数器
T0:基本定时器
TC0:自动装载定时器/计数器/PWM0/Buzzer 输出
♦
内置 WDT,内部低速 RC 时钟(16KHz @3V, 32KHz @5V)
♦
双时钟系统
外部高速时钟:RC
外部高速时钟:晶振
内部高速时钟:RC
内部低速时钟:RC
10MHz
16MHz
16MHz
16KHz(3V), 32KHz(5V)
♦
工作模式
普通模式:高低速时钟同时正常工作
低速模式:只有低速时钟工作
睡眠模式:高低速时钟都停止工作
绿色模式:由 T0 周期性的唤醒
♦
封装
PDIP 20 pins
PDIP 18 pins
PDIP 14 pins
SOP 20 pins
SOP 18 pins
SOP 14 pins
SSOP 20 pins
PWM 唤醒功能
定时器 内部
I/O 绿色模式
封装
16M
RC
T0 TC0
Buzzer 引脚数目.
- V
14
V
6
DIP18/SOP18/SSOP20
V V
15
V
V
7
DIP18/SOP18/SSOP20
V V
V
12
V
V
6
DIP14/SOP14
V V
V
16
V
V
8
DIP18/SOP18/SSOP20
V V
V
18
V
V
10
DIP20/SOP20/SSOP20
SONiX TECHNOLOGY CO., LTD
Page 5
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
1.2 系统结构框图
内部高速RC
振荡时钟
PC
OTP
IR
ROM
外部高速振
荡时钟
内部低速振
荡时钟
FLAGS
LVD
(低电压检测)
看门狗定时器
时序产生器
ALU
PWM 0
PWM0
RAM
BUZZER 0
ACC
中断控制
P0
SONiX TECHNOLOGY CO., LTD
BUZZER0
系统寄存器
定时器&计数器
P5
P1
Page 6
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
1.3 引脚配置
SN8P2613P (P-DIP 20 pins)
SN8P2613S (SOP 20 pins)
SN8P2613X (SSOP 20 pins)
P0.1/INT1
P1.2
P1.3
P0.0/INT0
P1.5/RST/VPP
VSS
P5.0
P5.1
P5.2
P5.3
1
U
20
2
19
3
18
4
17
5
16
6
15
7
14
8
13
9
12
10
11
SN8P2613P
SN8P2613S
SN8P2613X
P1.7
P1.1
P1.0
XIN/P1.6
XOUT/P1.4
VDD
P5.7
P5.6
P5.5
P5.4/BZ0/PWM0
P1.2
P1.3
P0.0/INT0
P1.5/RST/VPP
VSS
P5.0
P5.1
P5.2
P5.3
1
U
18
2
17
3
16
4
15
5
14
6
13
7
12
8
11
9
10
SN8P2612P
SN8P2612S
P1.1
P1.0
XIN/P1.6
XOUT/P1.4
VDD
P5.7
P5.6
P5.5
P5.4/BZ0/PWM0
P1.2
P1.3
P0.0/INT0
P1.5/RST/VPP
VSS
VSS
P5.0
P5.1
P5.2
P5.3
1
U
20
2
19
3
18
4
17
5
16
6
15
7
14
8
13
9
12
10
11
SN8P2612X
P1.1
P1.0
XIN/P1.6
XOUT/P1.4
VDD
VDD
P5.7
P5.6
P5.5
P5.4/BZ0/PWM0
P5.4/BZ0/PWM0
P5.5
P5.6
VDD
XOUT/P1.4
XIN/P1.6
P1.0
1
U
14
2
13
3
12
4
11
5
10
6
9
7
8
SN8P2611P
SN8P2611S
P5.2
P5.1
P5.0
VSS
P0.0/INT0
P1.5/RST/VPP
P1.1
SN8P2612P (P-DIP 18 pins)
SN8P2612S (SOP 18 pins)
SN8P2612X (SSOP 20 pins)
SN8P2611P (P-DIP 14 pins)
SN8P2611S (SOP 14 pins)
SONiX TECHNOLOGY CO., LTD
Page 7
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
1.4 引脚说明
引脚名称
类型
说明
VDD, VSS
P
P1.5/RST/VPP
I, P
P1.6/XIN
I/O
P1.4/XOUT
I/O
P0.0/INT0
I/O
P0.1/INT1
I/O
P1.0
I/O
P1 [3:1], P1.7
I/O
P5 [7:0]
I/O
P5.4/BZ0/PWM0
I/O
数字电路电源输入
P1.5:禁止外部复位功能时为单向输入引脚(施密特触发结构),无内置上拉电阻
具有唤醒功能
RST:系统复位引脚,施密特触发结构,低电平有效,通常保持高电平
VPP:OTP 烧录引脚
P1.6:双向输入输出引脚,输入模式时为施密特触发结构,内置上拉电阻
具有唤醒功能
允许外部振荡器(石英或 RC)时为振荡器输入引脚
P1.4:双向输入输出引脚,输入模式时为施密特触发结构,内置上拉电阻
具有唤醒功能
XOUT:允许外部晶振时为振荡器输出引脚
P0.0:双向输入输出引脚,输入模式时为施密特触发结构,内置上拉电阻
具有唤醒功能
INT0 触发引脚(施密特结构)
TC0 事件计数时钟输入引脚
P0.1:双向输入输出引脚,输入模式时为施密特触发结构,内置上拉电阻
具有唤醒功能
INT1 触发引脚(施密特结构)
P1.0:双向输入输出引脚,漏极开路,输入模式时为施密特触发结构,内置上拉电阻
具有唤醒功能
双向输入输出引脚,输入模式时为施密特触发结构,内置上拉电阻
具有唤醒功能
双向输入输出引脚,输入模式为施密特触发结构
内置上拉电阻
P5.4:双向输入输出引脚,输入模式时为施密特触发结构
内置上拉电阻
Buzzer 和 PWM0 的 TC0/2 信号输出引脚
SONiX TECHNOLOGY CO., LTD
Page 8
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
1.5 引脚电路框图
Port 0, 1, 5 structure:
Pull-Up
PnM
PnM, PnUR
Input Bus
Pin
Output
Latch
Output Bus
Port 1.0 structure:
Pull-Up
PnM
PnM, PnUR
Input Bus
Pin
Output
Latch
Output Bus
Open-Drain
P1OC
Port 1.4, 1.6 structure:
Pull-Up
Oscillator
Code Option
PnM
PnM, PnUR
Input Bus
Pin
Output
Latch
Output Bus
Int. Osc.
Port 1.5 structure:
Ext. Reset
Code Option
Int. Bus
Pin
SONiX TECHNOLOGY CO., LTD
Int. Rst
Page 9
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2
中央处理器(CPU)
2.1 存储器
2.1.1 程序存储器(ROM)
)
2K words ROM
ROM
0000H
0001H
.
.
0007H
0008H
0009H
.
.
000FH
0010H
0011H
.
.
.
.
.
07FCH
07FDH
07FEH
07FFH
SONiX TECHNOLOGY CO., LTD
复位向量
复位向量
跳到用户程序
通用存储区
中断向量
中断向量
用户程序
通用存储区
用户程序结束
系统保留
Page 10
Version 1.0
SN8P2610 Series
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
JMP
…
0
START
ORG
10
START:
…
…
ENDP
SONiX TECHNOLOGY CO., LTD
; 0000H
; 跳至用户程序
; 0010H, 用户程序首地址
; 用户程序
; 程序结束
Page 11
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2.1.1.2 中断向量(0008H)
长度为 1-word,用于执行中断请求。当系统响应某个中断请求时,程序计数器(PC)的当前值存入堆栈缓冲器后转
至中断向量 0008H。用户可以自己定义中断向量,下面的程序说明了如何在程序中定义中断向量。
’
注:“PUSH”, “POP” 指令用于存储和恢复 ACC/PFLAG,NT0、NTD 不受影响。PUSH/POP 缓存器是唯一的,且仅有一层。
¾ 例:定义中断向量,中断服务程序就在 ORG 8 之后。
.CODE
ORG
0
JMP
START
…
ORG
8
PUSH
…
POP
RETI
…
START:
…
JMP
START
…
ENDP
¾ 例:定义中断向量,中断程序位于用户程序之后。
.CODE
ORG
0
JMP
START
…
ORG
8
JMP
MY_IRQ
ORG
; 中断向量
; 保存 ACC 和 PFLAG
; 恢复 ACC 和 PFLAG
; 中断结束
; 用户程序开始
;
; 用户程序结束
; 程序结束
; 0000H
; 跳至用户程序
; 中断向量
; 0008H,跳至中断程序
10H
START:
; 0010H, 用户程序开始
…
JMP
…
START
MY_IRQ:
PUSH
…
POP
RETI
…
ENDP
’
; 0000H
; 跳至用户程序
; 用户程序结束.
; 中断程序开始
; 保存 ACC 和 PFLAG
; 恢复 ACC 和 PFLAG
; 中断程序结束
; 程序结束
注:从上面的程序中容易得出 SONiX 的编程规则,有以下几点:
1.
地址 0000H 的“JMP”指令使程序从头开始执行;
2.
地址 0008H 是中断向量;
3.
用户的程序应该是一个循环。
SONiX TECHNOLOGY CO., LTD
Page 12
Version 1.0
SN8P2610 Series
8-Bit Micro-Controlle
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
; 设置 TABLE1 地址高字节
; 设置 TABLE1 地址低字节
; 查表,R = 00H, ACC = 35H
; 查找下一地址
INCMS
JMP
INCMS
NOP
@@:
TABLE1:
’
MOVC
…
DW
DW
DW
…
Z
@F
Y
0035H
5105H
2012H
; Z 没有溢出
; Z 溢出(FFH Æ 00), Æ Y=Y+1
;
;
; 查表,R = 51H, ACC = 05H.
;
; 定义数据表 (16 bits) 数据
注:当寄存器 Z 溢出(从 0xFF 变为 0x00)时,寄存器 Y 并不会自动加 1。因此, Z 溢出时,Y 必须由程序加 1,下面的宏指令
INC_YZ 能够对 Y 和 Z 寄存器自动处理。
¾ 例:宏 INC_YZ
INC_YZ
MACRO
INCMS
JMP
INCMS
NOP
Z
@F
; 没有溢出
Y
; 没有溢出
@@:
ENDM
¾
例:通过“INC_YZ”对上例进行优化
B0MOV
Y, #TABLE1$M
B0MOV
Z, #TABLE1$L
MOVC
INC_YZ
@@:
TABLE1:
MOVC
…
DW
DW
DW
…
0035H
5105H
2012H
SONiX TECHNOLOGY CO., LTD
; 设置 TABLE1 地址中间字节
; 设置 TABLE1 地址低字节
; 查表,R = 00H,ACC = 35H
; 查找下一地址数据
;
; 查表, R = 51H, ACC = 05H.
;
; 定义数据表 (16 bits) 数据
Page 13
Version 1.0
SN8P2610 Series
8-Bit Micro-Controlle
下面的程序通过累加器对 Y,Z 寄存器进行处理来实现查表功能,但需要特别注意进位时的处理。
¾
例:由指令 B0ADD/ADD 对 Y 和 Z 寄存器加 1。
B0MOV
B0MOV
Y, #TABLE1$M
Z, #TABLE1$L
; 设置 TABLE1 地址中间字节
; 设置 TABLE1 地址低字节
B0MOV
B0ADD
A, BUF
Z, A
; Z = Z + BUF.
B0BTS1
JMP
INCMS
NOP
FC
GETDATA
Y
; 检查进位标志
; FC = 0
; FC = 1
GETDATA:
;
; 存储数据,如果 BUF = 0,数据为 0x0035
; 如果 BUF = 1,数据=0x5105
; 如果 BUF = 2,数据=0x2012
MOVC
…
TABLE1:
DW
DW
DW
…
0035H
5105H
2012H
SONiX TECHNOLOGY CO., LTD
; 定义数据表 (16 bits) 数据
Page 14
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2.1.1.4 跳转表
跳转表能够实现多地址跳转功能。PCL 和 ACC 的值相加即可得到新的 PCL。如果 PCL+ACC 后发生溢出,PCH 则
自动加 1。由此得到的新的 PC 值指向一系列跳至指令列表。如此可通过修改 ACC 的值轻松实现多地址的跳转。
’
注:PCH 只支持 PC 增量运算,而不支持 PC 减量运算。当 PCL+ACC 后如有进位,PCH 的值会自动加 1。PCL-ACC 后若有借
位,PCH 的值将保持不变,用户在设计应用时要加以注意。
¾
例:跳转表
ORG
0X0100
; 跳转表从 ROM 前端开始
B0ADD
JMP
JMP
JMP
JMP
PCL, A
A0POINT
A1POINT
A2POINT
A3POINT
; PCL = PCL + ACC,PCL 溢出时 PCH 加 1
; ACC = 0,跳至 A0POINT
; ACC = 1,跳至 A1POINT
; ACC = 2,跳至 A2POINT
; ACC = 3,跳至 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
@JMP_A
JMP
JMP
JMP
JMP
JMP
A, BUF0
5
A0POINT
A1POINT
A2POINT
A3POINT
A4POINT
SONiX TECHNOLOGY CO., LTD
; “BUF0”从 0 至 4.
; 列表个数为 5
; ACC = 0,跳至 A0POINT
; ACC = 1,跳至 A1POINT
; ACC = 2,跳至 A2POINT
; ACC = 3,跳至 A3POINT
; ACC = 4,跳至 A4POINT
Page 15
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
如果跳转表恰好位于 ROM BANK 边界处(0x00FF~0x0100),宏“@JMP_A”将调整跳转表到适当的位置(0x0100)。
¾ 例:“@JMP_A” 运用举例
; 编译前
ROM 地址
B0MOV
@JMP_A
0X00FD
JMP
0X00FE
JMP
0X00FF
JMP
0X0100
JMP
0X0101
JMP
A, BUF0
5
A0POINT
A1POINT
A2POINT
A3POINT
A4POINT
; “BUF0” 从 0 到 4.
; 列表个数为 5
; ACC = 0,跳至 A0POINT
; ACC = 1,跳至 A1POINT
; ACC = 2,跳至 A2POINT
; ACC = 3,跳至 A3POINT
; ACC = 4,跳至 A4POINT
A, BUF0
5
A0POINT
A1POINT
A2POINT
A3POINT
A4POINT
; “BUF0” 从 0 到 4.
; 列表个数为 5
; ACC = 0,跳至 A0POINT
; ACC = 1,跳至 A1POINT
; ACC = 2,跳至 A2POINT
; ACC = 3,跳至 A3POINT
; ACC = 4,跳至 A4POINT
; 编译后
ROM 地址
0X0100
0X0101
0X0102
0X0103
0X0104
B0MOV
@JMP_A
JMP
JMP
JMP
JMP
JMP
SONiX TECHNOLOGY CO., LTD
Page 16
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2.1.1.5
CHECKSUM 计算
ROM 的末端位置的几个 word 限制使用,进行 Checksum 计算时,用户应避免对该单元的访问。
¾
例:示例程序演示了如何对 00H 到用户程序结束进行 Checksum 计算。
MOV
A,#END_USER_CODE$L
B0MOV
END_ADDR1, A
; low end 地址存入 end_addr1
MOV
A,#END_USER_CODE$M
B0MOV
END_ADDR2, A
; middle end 地址存入 end_addr2
CLR
Y
; Y 清零
CLR
Z
; Z 清零
@@:
MOVC
B0BCLR
FC
; 清标志位 C
ADD
DATA1, A
;
MOV
A, R
ADC
DATA2, A
;
JMP
END_CHECK
;
AAA:
INCMS
Z
; Z=Z+1
JMP
@B
; Z != 00H 进行下一个计算
JMP
Y_ADD_1
; Z = 00H,Y=Y+1
END_CHECK:
MOV
A, END_ADDR1
CMPRS
A, Z
; 检查 Z 是否等于 low end 地址
JMP
AAA
; 不等于则进行下一个计算
MOV
A, END_ADDR2
CMPRS
A, Y
; 等于,则检查 Y 是否等于 middle end 地址
JMP
AAA
; 不等于则进行下一个计算
JMP
CHECKSUM_END
; 相等则 Checksum 计算结束
Y_ADD_1:
INCMS
NOP
JMP
Y
;
@B
;
CHECKSUM_END:
…
…
END_USER_CODE:
SONiX TECHNOLOGY CO., LTD
; 程序结束
Page 17
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2.1.2 编译选项表(Code Option)
编译选项
内容
IHRC_16M
RC
High_Clk
12M X’tal
4M X’tal
Always_On
Watch_Dog Enable
Disable
功能说明
高速内部 16MHz RC,XIN/XOUT 作为 P1.6/P1.4 双向 I/O 口。
外部高速时钟源采用廉价的 RC 振荡器,XOUT 作为 P1.4 双向 I/O 口。
外部高速时钟源采用高速石英/陶瓷振荡器(如 12MHz)。
外部高速时钟源采用标准石英/陶瓷振荡器(如 4MHz)。
始终开启看门狗定时器,即使在睡眠模式和绿色模式下。
开启看门狗定时器,但在睡眠模式和绿色模式下关闭。
关闭看门狗定时器
指令周期等于 1 个振荡器周期;
Fhosc/1
注意:在 Fosc/1 时,必须关闭杂讯滤波器。
指令周期等于 2 个振荡器周期;
Fhosc/2
注意:在 Fosc/2 时,必须关闭杂讯滤波器。
Fcpu
Fhosc/4 指令周期等于 4 个振荡器周期。
Fhosc/8 指令周期等于 8 个振荡器周期。
Fhosc/16 指令周期等于 16 个振荡器周期。
Reset
开启外部复位引脚的复位功能。
Reset_Pin
P15
P15 的单向输入功能有效,无上拉电阻。
Enable 允许 ROM 代码加密。
Security
Disable 禁止 ROM 代码加密。
Enable 开启杂讯滤波器,Fcpu = Fosc/4~Fosc/16。
Noise_Filter
Disable 关闭杂讯滤波器,Fcpu = Fosc/1~Fosc/16。
LVD_L VDD 低于 2.0V 时,LVD 复位。
VDD 低于 2.0V 时,LVD 复位;
LVD_M
LVD
PFLAG 寄存器的 LVD24 位作为 2.4V 低电压监测器。
VDD 低于 2.4V 时,LVD 复位;
LVD_H
PFLAG 寄存器的 LVD36 位作为 3.6V 低电压监测器。
’
注:
1. 在干扰严重的情况下,建议开启杂讯滤波功能,此时 Fcpu = Fosc/4 ~ Fosc/128,并将 Watch_Dog 设置为 “Always_On”;
2. 如果用户定义看门狗为“Always_On”,编译器将自动开启看门狗定时器;
3. 编译选项 Fcpu 仅针对外部振荡信号,在进入内部低速模式时,Fcpu = FILRC/4。
SONiX TECHNOLOGY CO., LTD
Page 18
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2.1.3 数据存储器(RAM)
)
64 X 8-bit RAM
BANK 0
地址
000h
“
“
“
“
“
03Fh
080h
“
“
“
“
“
0FFh
SONiX TECHNOLOGY CO., LTD
RAM
通用存储区
Bank 0 80h~FFh,存放系统寄存器
(128 bytes)
系统寄存器
Bank0 结束
Page 19
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2.1.4 系统寄存器
系统寄存器列表
2.1.4.1
8
9
A
B
C
D
E
F
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
-
-
R
Z
Y
-
PFLAG
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
P0M
-
-
-
-
-
-
PEDGE
P1W
P1M
-
-
-
P5M
-
-
INTRQ
INTEN
OSCM
-
WDTR
TC0R
PCL
PCH
P0
P1
-
-
-
P5
-
-
T0M
T0C
TC0M
TC0C
-
-
-
STKP
P0UR
P1UR
-
-
-
P5UR
-
@YZ
-
P1OC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
STK3L
2.1.4.2
PFLAG =
P1W =
PEDGE =
PnM =
P1OC =
INTRQ =
OSCM =
T0M =
TC0M =
TC0R =
STKP =
STK3H STK2L STK2H STK1L STK1H STK0L STK0H
系统寄存器说明
ROM 页和特殊寄存器
P1 唤醒功能寄存器
P0.0 触发方向寄存器
Pn 输入/输出模式寄存器
P1 漏极开路控制寄存器
中断请求寄存器
振荡器模式寄存器
T0 模式寄存器
TC0 模式寄存器
TC0 自动装载寄存器
堆栈指针寄存器
SONiX TECHNOLOGY CO., LTD
R=
Y, Z =
@YZ =
Pn =
PnUR =
INTEN =
PCH, PCL =
T0C =
TC0C =
WDTR =
STK0~STK3 =
Page 20
工作寄存器和 ROM 查表数据缓存器
工作寄存器,@YZ 和 ROM 寻址寄存器
RAM YZ 间接寻址寄存器
Pn 数据缓存器
Pn 上拉电阻控制寄存器
中断使能寄存器
程序计数器
TC0 计数寄存器
TC0 计数寄存器
看门狗清零寄存器
堆栈缓存器
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2.1.4.3
’
系统寄存器的位说明
地址
082H
083H
084H
086H
0B8H
0BFH
Bit7
RBIT7
ZBIT7
YBIT7
NT0
-
Bit6
RBIT6
ZBIT6
YBIT6
NPD
-
Bit5
RBIT5
ZBIT5
YBIT5
LVD36
-
Bit4
RBIT4
ZBIT4
YBIT4
LVD24
P00G1
Bit3
RBIT3
ZBIT3
YBIT3
P00G0
Bit2
RBIT2
ZBIT2
YBIT2
C
-
Bit1
RBIT1
ZBIT1
YBIT1
DC
P01M
-
Bit0
RBIT0
ZBIT0
YBIT0
Z
P00M
-
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R
Z
Y
PFLAG
P0M
PEDGE
0C0H
0C1H
0C5H
0C8H
0C9H
0CAH
0CCH
0CDH
0CEH
0CFH
P17W
P17M
P57M
0
WDTR7
TC0R7
PC7
-
P16W
P16M
P56M
0
WDTR6
TC0R6
PC6
-
P15W
P55M
TC0IRQ
TC0IEN
0
WDTR5
TC0R5
PC5
-
P14W
P14M
P54M
T0IRQ
T0IEN
CPUM1
WDTR4
TC0R4
PC4
-
P13W
P13M
P53M
CPUM0
WDTR3
TC0R3
PC3
-
P12W
P12M
P52M
CLKMD
WDTR2
TC0R2
PC2
PC10
P11W
P11M
P51M
STPHX
WDTR1
TC0R1
PC1
PC9
P10W
P10M
P50M
P00IRQ
P00IEN
0
WDTR0
TC0R0
PC0
PC8
W
R/W
R/W
R/W
R/W
R/W
W
W
R/W
R/W
P1W 唤醒寄存器
P1M I/O 方向控制寄存器
P5M I/O 方向控制寄存器
INTRQ
INTEN
OSCM
WDTR
TC0R
PCL
PCH
0D0H
0D1H
0D5H
0D8H
0D9H
0DAH
0DBH
0DFH
0E0H
0E1H
0E5H
0E7H
0E9H
P17
P57
T0ENB
T0C7
TC0ENB
TC0C7
GIE
P17UR
P57R
@YZ7
-
P16
P56
T0rate2
T0C6
TC0rate2
TC0C6
P16UR
P56R
@YZ6
-
P15
P55
T0rate1
T0C5
TC0rate1
TC0C5
P55R
@YZ5
-
P14
P54
T0rate0
T0C4
TC0rate0
TC0C4
P14R
P54R
@YZ4
-
P13
P53
T0C3
TC0CKS
TC0C3
P13R
P53R
@YZ3
-
P12
P52
T0C2
ALOAD0
TC0C2
STKPB2
P12R
P52R
@YZ2
-
P01
P11
P51
T0C1
TC0OUT
TC0C1
STKPB1
P01UR
P11R
P51R
@YZ1
-
P00
P10
P50
0
T0C0
PWM0OUT
TC0C0
STKPB0
P00R
P10R
P50R
@YZ0
P10OC
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
W
W
W
R/W
W
P0 数据缓存器
P1 数据缓存器
P5 数据缓存器
T0M
T0C
TC0M
TC0C
STKP 堆栈指针
P0 上拉电阻
P1 上拉电阻
P5 上拉电阻
@YZ
P1OC 漏极开路寄存器
0F8H
0F9H
0FAH
0FBH
0FCH
0FDH
0FEH
0FFH
S3PC7
S2PC7
S1PC7
S0PC7
-
S3PC6
S2PC6
S1PC6
S0PC6
-
S3PC5
S2PC5
S1PC5
S0PC5
-
S3PC4
S2PC4
S1PC4
S0PC4
-
S3PC3
S2PC3
S1PC3
S0PC3
-
S3PC2
S3PC10
S2PC2
S2PC10
S1PC2
S1PC10
S0PC2
S0PC10
S3PC1
S3PC9
S2PC1
S2PC9
S1PC1
S1PC9
S0PC1
S0PC9
S3PC0
S3PC8
S2PC0
S2PC8
S1PC0
S1PC8
S0PC0
S0PC8
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
STK3L
STK3H
STK2L
STK2H
STK1L
STK1H
STK0L
STK0H
备注
注:
1. 为了避免系统出错,寄存器各位的值应与上表所示一致;
2. 所有寄存器名都已在 SN8ASM 编译器中做了宣告;
3. SN8ASM 编译器中对寄存器位的引用必须以“F”开头;
4. 指令 “b0bset”, “b0bclr”, ”bset”, ”bclr”只能用于 “R/W”(可读写)的寄存器;
5. 详细信息请查阅“系统寄存器快速参照表”。
SONiX TECHNOLOGY CO., LTD
Page 21
Version 1.0
SN8P2610 Series
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
MOV
A, #0FH
; 数据写入 ACC
; BUF 中的数据写入 ACC
MOV
A, BUF
B0MOV
A, BUF
系统执行中断操作时,ACC 和 PFLAG 中的数据不会自动存储,必须将中断入口处的 ACC 和 PFLAG 中的数据送入
存储器进行保存。由程序通过“PUSH”和“POP”指令,对系统寄存器进行存储及恢复。
¾
例:ACC 和工作寄存器中断保护操作。
INT_SERVICE:
PUSH
…
…
POP
; PFLAG 和 ACC 数据送入缓冲器.
.
RETI
SONiX TECHNOLOGY CO., LTD
; 恢复 ACC 和 PFLAG
; 退出中断
Page 22
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2.1.4.5 程序状态寄存器 PFLAG
寄存器 PFLAG 中包含 ALU 运算状态信息、系统复位状态信息和 LVD 检测信息,其中,位 NT0 和 NPD 显示系统复
位状态信息,包括上电复位、LVD 复位、外部复位和看门狗复位;位 C、DC 和 Z 显示 ALU 的运算信息。位 LVD24 和
LVD36 显示了芯片供电电源状况。
086H
PFLAG
读/写
复位后
Bit 7
NT0
R/W
-
Bit 6
NPD
R/W
-
Bit 5
LVD36
R
0
Bit 4
LVD24
R
0
Bit 3
-
Bit 2
C
R/W
0
Bit 1
DC
R/W
0
Bit 0
Z
R/W
0
Bit [7:6] NT0, NPD:复位状态标志
NT0
NPD 复位状态
0
0
看门狗复位
0
1
保留
1
0
LVD 复位
1
1
外部复位
Bit 5
LVD36:LVD 3.6V 工作标志, LVD 编译选项为 LVD_H 时有效。
0 = 无效(VDD > 3.6V);
1 = 有效(VDD≤3.6V)。
Bit 4
LVD24:LVD 2.4V 工作标志,仅支持 LVD 编译选项为 LVD_M。
0 =无效(VDD > 2.4V);
1 =有效(VDD≤2.4V)。
Bit 2
C:进位标志。
1 = 加法运算后有进位、减法运算没有借位发生或移位后移出逻辑“1”或比较运算的结果≥0;
0 = 加法运算后没有进位、减法运算有借位发生或移位后移出逻辑“0”或比较运算的结果<0。
Bit 1
DC:辅助进位标志。
1 = 加法运算时低四位有进位,或减法运算后没有向高四位借位;
0 = 加法运算时低四位没有进位,或减法运算后有向高四位借位。
Bit 0
Z:零标志。
1 = 算术/逻辑/分支运算的结果为零;
0 = 算术/逻辑/分支运算的结果非零。
’
注:关于标志位 C、DC 和 Z 的更多信息请参阅指令集相关内容。
SONiX TECHNOLOGY CO., LTD
Page 23
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
程序计数器 PC
2.1.4.6
11-bit 程序计数器 PC 分为 3-bit 高字节和 8-bit 低字节,用于定位程序执行的指令。程序运行过程中,每执行一条指
令,程序计数器 PC 将自动加 1。
但是,如果程序执行 CALL 或 JMP 指令时,PC 则指向特定地址。
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
PC10 PC9 PC8 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
0
0
0
0
0
0
0
0
0
0
0
PCH
PCL
)
单地址跳转
共有 9 条单地址跳转指令:CMPRS, INCS, INCMS, DECS, DECMS, BTS0, BTS1, B0BTS0, B0BTS1,如果这些指
令执行的结果为真,PC 值加 2 跳过待执行的下一条指令。
如果位检测的指令满足条件,则跳过下一条指令:
FC
B0BTS1
JMP
C0STEP
…
C0STEP:
NOP
C1STEP:
B0MOV
B0BTS0
JMP
…
NOP
A, BUF0
FZ
C1STEP
若相比较的两者相等,则跳过下一条指令:
A, #12H
CMPRS
JMP
C0STEP
…
C0STEP:
NOP
; 若 Carry_flag = 1,跳过下一条指令
; 否则跳到 C0STEP.
;
; 若 Zero flag = 0,跳过下一条指令
; 否则跳到 C1STEP.
; 若 ACC = 12H,跳过下一条指令
; 否则跳到 C0STEP.
若执行自加 1 指令时,PC 的值从 0xFF 溢出到 0x00,则跳过下一条指令:
INCS:
BUF0
INCS
JMP
C0STEP
;
…
C0STEP:
NOP
INCMS:
C0STEP:
INCMS
JMP
…
NOP
BUF0
C0STEP
;
若执行自减 1 指令时,PC 的值从 0x00 到 0xFF,则跳过下一条指令:
DECS:
BUF0
DECS
JMP
C0STEP
;
…
C0STEP:
NOP
DECMS:
C0STEP:
DECMS
JMP
…
NOP
BUF0
C0STEP
SONiX TECHNOLOGY CO., LTD
;
Page 24
Version 1.0
SN8P2610 Series
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 自动进位;执行 PCL-ACC 后,PCH
的值保持不变。
¾
例:PC = 0323H(PCH = 03H, PCL = 23H)。
; PC = 0323H
MOV
A, #28H
B0MOV
PCL, A
; 跳转到地址 0328H
…
; PC = 0328H
MOV
B0MOV
…
¾
A, #00H
PCL, A
; 跳转到地址 0300H
例:PC = 0323H(PCH = 03H, PCL = 23H)。
; PC = 0323H
B0ADD
JMP
JMP
JMP
JMP
…
…
PCL, A
A0POINT
A1POINT
A2POINT
A3POINT
SONiX TECHNOLOGY CO., LTD
; PCL = PCL + ACC,PCH 不变
; ACC = 0,跳转到 A0POINT
; ACC = 1,跳转到 A1POINT
; ACC = 2,跳转到 A2POINT
; ACC = 3,跳转到 A3POINT
Page 25
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2.1.4.7 Y, Z 寄存器
寄存器 Y 和 Z 都是 8 位缓存器,主要用途如下:
z
z
z
¾
普通工作寄存器;
RAM 数据寻址指针@YZ;
配合指令 MOVC 对 ROM 数据进行查表。
084H
Y
读/写
复位后
Bit 7
YBIT7
R/W
-
Bit 6
YBIT6
R/W
-
Bit 5
YBIT5
R/W
-
Bit 4
YBIT4
R/W
-
Bit 3
YBIT3
R/W
-
Bit 2
YBIT2
R/W
-
Bit 1
YBIT1
R/W
-
Bit 0
YBIT0
R/W
-
083H
Z
读/写
复位后
Bit 7
ZBIT7
R/W
-
Bit 6
ZBIT6
R/W
-
Bit 5
ZBIT5
R/W
-
Bit 4
ZBIT4
R/W
-
Bit 3
ZBIT3
R/W
-
Bit 2
ZBIT2
R/W
-
Bit 1
ZBIT1
R/W
-
Bit 0
ZBIT0
R/W
-
Bit 1
RBIT1
R/W
-
Bit 0
RBIT0
R/W
-
例:用 Y, Z 作为数据指针寻址 RAM 中 bank0 的 025H。
B0MOV
B0MOV
B0MOV
¾
Y, #00H
Z, #25H
A, @YZ
; Y 指向 RAM bank 0
; Z 指向 25H
; 数据送入 ACC
例:利用数据指针@YZ 对 RAM 数据清零。
B0MOV
B0MOV
Y, #0
Z, #07FH
; Y = 0, bank 0
; Z = 7FH, RAM 区的最后单元;
CLR
@YZ
; @YZ 清零
DECMS
JMP
Z
CLR_YZ_BUF
;
; 不为零
CLR
@YZ
CLR_YZ_BUF:
END_CLR:
;
…
2.1.4.8 R 寄存器
8 位缓冲器 R 主要有以下两个功能:
z 作为工作寄存器使用;
z 存储查表函数的高字节数据。
(执行 MOVC 指令,指定 ROM 单元的高字节数据会被存入 R 寄存器而低字节数据则存入 ACC)
082H
R
读/写
复位后
Bit 7
RBIT7
R/W
-
Bit 6
RBIT6
R/W
-
SONiX TECHNOLOGY CO., LTD
Bit 5
RBIT5
R/W
-
Bit 4
RBIT4
R/W
-
Page 26
Bit 3
RBIT3
R/W
-
Bit 2
RBIT2
R/W
-
Version1.0
SN8P2610 Series
8-Bit Micro-Controller
2.2 寻址模式
2.2.1 立即寻址
立即寻址就是把一个立即数送入 ACC 或指定的 RAM 单元。
¾
例:立即数 12H 送入 ACC。
MOV
¾
例:立即数 12H 送入寄存器 R。
B0MOV
’
A, #12H
R, #12H
注:立即数寻址范围必须介于 RAM 的 0x80~0x87 单元 。
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
B0MOV
B0MOV
Y, #0
Z, #12H
A, @YZ
SONiX TECHNOLOGY CO., LTD
; Y 清零以寻址 RAM bank 0.
; 立即数 12H 送入 Z
Page 27
Version1.0
SN8P2610 Series
8-Bit Micro-Controller
2.3 堆栈
2.3.1 概述
堆栈缓存器共 4 层,当系统响应中断程序或执行“CALL”指令时,程序计数器 PC 的值就暂存入堆栈中。寄存器 STKP
始终指向堆栈的当前层,STKnH 和 STKnL 指向 PC 存放的存储单元。
RET /
RETI
STKP + 1
CALL /
INTERRUPT
STKP - 1
PCH
PCL
STACK Level
STACK Buffer
High Byte
STACK Buffer
Low Byte
STKP = 3
STK3H
STK3L
STKP = 2
STK2H
STK2L
STKP = 1
STK1H
STKP
STKP = 0
SONiX TECHNOLOGY CO., LTD
STK0H
Page 28
STK1L
STKP
STK0L
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2.3.2 堆栈寄存器
3-bit 寄存器 STKP(堆栈指针寄存器)用来存放被访问的堆栈单元地址,10-bit 数据存储器 STKnH 和 STKnL 用来暂
存堆栈数据。以上寄存器都位于 bank0。
对堆栈进行的 2 种操作为入栈(PUSH)和出栈(POP),遵循先进后出(LIFO)的原则。入栈时 STKP 减值运算,
而出栈时 STKP 则进行增值运算。这样,STKP 总是指向堆栈缓存器的顶层单元。
系统进入中断或执行 CALL 指令之前,程序计数器 PC 的值被存入堆栈缓存器中进入入栈保护。
0DFH
STKP
读/写
复位后
Bit 7
GIE
R/W
0
Bit 6
-
Bit[2:0]
STKPBn:堆栈指针(n = 0 ~ 2)
Bit 7
GIE:全局中断控制位
0 = 禁止;
1 = 允许,详见中断章节。
¾
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
STKPB2
R/W
1
Bit 1
STKPB1
R/W
1
Bit 0
STKPB0
R/W
1
例:系统复位时,堆栈指针寄存器内容为默认值,但强烈建议在程序初始部分另行程序设定,如下面所示:
MOV
A, #00000111B
B0MOV
STKP, A
0F0H~0FFH
STKnH
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
SnPC10
R/W
0
Bit 1
SnPC9
R/W
0
Bit 0
SnPC8
R/W
0
0F0H~0FFH
STKnL
读/写
复位后
Bit 7
SnPC7
R/W
0
Bit 6
SnPC6
R/W
0
Bit 5
SnPC5
R/W
0
Bit 4
SnPC4
R/W
0
Bit 3
SnPC3
R/W
0
Bit 2
SnPC2
R/W
0
Bit 1
SnPC1
R/W
0
Bit 0
SnPC0
R/W
0
STKn = STKnH , STKnL (n = 3 ~ 0)
SONiX TECHNOLOGY CO., LTD
Page 29
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
2.3.3 堆栈操作举例
执行程序调用指令 CALL 和响应中断复位时,堆栈指针 STKP 的值减 1,指针指向下一个堆栈缓存器。同时,对程序
计数器 PC 的内容进行入栈保存。
堆栈层数
0
1
2
3
4
>4
STKPB2
STKP
STKPB1
STKPB0
1
1
1
1
0
0
1
1
0
0
1
1
1
0
1
0
1
0
堆栈缓存器
高字节
低字节
Free
STK0H
STK1H
STK2H
STK3H
-
Free
STK0L
STK1L
STK2L
STK3L
-
说明
堆栈溢出
对应每个入栈操作,都有一个出栈操作来恢复程序计数器PC 的值。RETI指令用于中断服务程序中,RET用于子程序
调用。出栈时,STKP 加1 并指向下一个空闲堆栈缓冲器。堆栈恢复操作如下表所示:
堆栈层数
4
3
2
1
0
STKPB2
STKP
STKPB1
STKPB0
0
1
1
1
1
1
0
0
1
1
1
0
1
0
1
SONiX TECHNOLOGY CO., LTD
堆栈缓存器
高字节
低字节
STK3H
STK2H
STK1H
STK0H
Free
Page 30
STK3L
STK2L
STK1L
STK0L
Free
说明
-
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
3 复位
3.1 概述
在如下 4 种情况下系统会复位:
z
z
z
z
上电复位
看门狗复位
掉电复位
外部复位 (仅在外部复位引脚处于使能状态)
当上述任何一种复位发生时,所有的系统寄存器被初始化,程序停止运行同时计数器 PC 清零。复位结束后,系统重
启,程序从 ORG 0 处开始执行。标志位 NT0 和 NPD 用于指示系统的复位状态,可对这两个寄存器编程控制系统复位方
式。
086H
PFLAG
读/写
复位后
Bit 7
NT0
R/W
-
Bit 6
NPD
R/W
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
C
R/W
0
Bit 1
DC
R/W
0
Bit 0
Z
R/W
0
Bit [7:6] NT0, NPD:复位状态标志
NT0
0
0
1
1
NPD
0
1
0
1
复位情况
看门狗复位
保留
上电及 LVD 复位
外部复位
说明
看门狗溢出
电源电压低于 LVD 检测值
外部复位引脚检测到低电平
任何一种复位情况都需要一定的响应时间,系统提供完善的复位流程以保证复位动作的顺利进行。对于不同类型的振
荡器,复位完成所需要的时间也不同。因此,VDD 的上升速度和不同晶振的起振时间都不固定。RC 振荡器的起振时间最
短,晶体振荡器的起振时间则较长。在用户终端使用的过程中,应注意考虑主机对上电复位时间的要求。
VDD
Power
LVD Detect Level
VSS
VDD
External Reset
VSS
External Reset
Low Detect
External Reset
High Detect
Watchdog
Overflow
Watchdog Normal Run
Watchdog Reset
Watchdog Stop
System Normal Run
System Status
System Stop
Power On
Delay Time
SONiX TECHNOLOGY CO., LTD
Page 31
External
Reset Delay
Time
Watchdog
Reset Delay
Time
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
3.2 上电复位
上电复位与 LVD 操作密切相关。系统上电的过程呈逐渐上升的曲线形式,需要一定时间才能达到正常电平值。下面
给出上电复位的正常时序:
z
z
z
z
z
上电:系统检测电压值,等待其稳定;
外部复位 (仅限于外部复位引脚使能状态):系统检测外部复位引脚状态。如果不为高电平,系统保持复位状态直到
外部复位引脚释放。
系统初始化:所有的系统寄存器被置为初始值;
振荡器开始工作:振荡器开始提供系统时钟;
执行程序:上电结束,程序开始运行。
3.3 看门狗复位
看门狗复位是系统的一种保护设置。在正常状态下,由程序将看门狗定时器清零。若出错,系统处于未知状态,看门
狗定时器溢出,此时系统复位。看门狗复位后,系统重启进入正常状态。看门狗复位的时序如下:
z
z
z
z
看门狗定时器状态:系统检测看门狗定时器是否溢出,若溢出,则系统复位;
系统初始化:初始化所有的系统寄存器;
振荡器开始工作:振荡器开始提供系统时钟;
执行程序:上电结束,程序开始运行。
z
z
z
看门狗定时器应用注意事项:
看门狗定时器清零之前,请检查 I/O 端口状态及 RAM 数据;
不能在中断向量和中断程序中将看门狗定时器清零,否则无法起到侦测程序跑飞的目的;
程序中应该只在主程序中有一个清看门狗的动作,这种架构能够最大限度的发挥看门狗的保护功能。
’
注:关于看门狗定时器的详细内容,请参阅“看门狗定时器“有关章节。
SONiX TECHNOLOGY CO., LTD
Page 32
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
3.4 掉电复位
3.4.1 概述
掉电复位针对外部因素引起的系统电压跌落情形(例如,干扰或外部负载的变化),掉电复位可能会引起系统工作状
态不正常或程序执行错误。
VDD
System Work
Well Area
V1
V2
System Work
Error Area
V3
VSS
掉电复位示意图
电压跌落可能会进入系统死区。系统死区意味着电源不能满足系统的最小工作电压要求。上图是一个典型的掉电复位
示意图。图中,VDD 受到严重的干扰,电压值降的非常低。虚线以上区域系统正常工作,在虚线以下的区域内,系统进
入未知的工作状态,这个区域称作死区。当 VDD 跌至 V1 时,系统仍处于正常状态;当 VDD 跌至 V2 和 V3 时,系统进
入死区,则容易导致出错。以下情况系统可能进入死区:
DC 应用中:
DC 应用中一般都采用电池供电,当电池电压过低或 MCU 驱动负载时,系统电压可能跌落并进入死区。这时,电源
不会进一步下降到系统复位电压,因此系统维持在死区。
AC 应用中:
系统采用 AC 供电时,DC 电压值受 AC 电源中的噪声影响。当外部负载过高,如驱动马达时,负载动作产生的干扰
也影响到 DC 电源。VDD 若由于受到干扰而跌落至最低工作电压以下时,则系统工作电压会失去稳定状态。
在 AC 应用中,系统上、下电时间都较长。其中,上电时序保护使得系统正常上电,但下电过程却和 DC 应用中情形
类似,AC 电源关断后,VDD 电压在缓慢下降的过程中易进入死区。
3.4.2 系统工作电压
为了改善系统掉电复位的性能,首先必须明确系统具有的最低工作电压值。系统最低工作电压与系统执行速度有关,
不同的执行速度下最低工作电压值亦不同。电气特性一章给出了系统工作电压与执行速度之间的关系。
System Mini.
Operating Voltage.
Vdd (V)
Normal Operating
Area
Dead-Band Area
Reset Area
System Reset
Voltage.
System Rate (Fcpu)
系统工作电压与执行速度关系图
如上图所示,系统正常工作电压区域一般略高于系统复位电压,同时复位电压由 LVD 检测电平决定。当系统执行速
度高于复位电压时,系统最低工作电压值将会升高。复位电压与最低工作电压之间的区域即是系统工作的死区。
SONiX TECHNOLOGY CO., LTD
Page 33
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
3.4.3 掉电复位性能改进
如何改善系统掉电复位性能,有以下几点建议:
z
z
z
z
LVD 复位;
看门狗复位;
降低系统工作速度;
采用外部复位电路 (齐纳二极管复位电路,电压偏移复位电路,外部 IC 复位)。
’
注:
a). “齐纳二极管复位电路”、“电压偏移复位电路” 和 “外部 IC 复位”能够完全避免掉电复位出错;
b). 对于 AC 供电的系统,可提高 EFT 性能,系统时钟采用 4MHz 和外部复位(齐钠二极管复位电路,电压偏移复位电路,外部 IC
复位)。电路结构的优化可降低噪声的影响并获得更好的 EFT 特性。
LVD 复位:
VDD
Power
LVD Detect Voltage
VSS
Power is below LVD Detect
Voltage and System Reset.
System Normal Run
System Status
System Stop
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
PFLAG
读/写
复位后
Bit 7
NT0
R/W
-
Bit 6
NPD
R/W
-
Bit 5
LVD36
R
0
Bit 4
LVD24
R
0
Bit 3
-
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
Bit 2
C
R/W
0
Bit 1
DC
R/W
0
Bit 0
Z
R/W
0
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
LVD
2.0V 复位
2.4V 标志
2.4V 复位
3.6V 标志
LVD_L
有效
-
LVD 编译选项
LVD_M
有效
有效
-
LVD_H
有效
有效
有效
LVD_L
如果 VDD < 2.0V,系统复位;
LVD24 和 LVD36 标志位无意义。
LVD_M
如果 VDD < 2.0V,系统复位;
LVD24,如果 VDD > 2.4V,LVD24 =“0”;如果 VDD <= 2.4V,LVD24= “1”
LVD36 标志位无意义。
LVD2_H
如果 VDD < 2.4V, 系统复位;
LVD24,如果 VDD > 2.4V,LVD24=“0”;如果 VDD <= 2.4V, LVD24=“1”
LVD36,如果 VDD > 3.6V,LVD36=“0”;如果 VDD <= 3.6V, LVD36= “1”
’
注:
a). LVD 复位结束后,LVD24 和 LVD36 都将被清零;
b). LVD 2.4V 和 LVD3.6V 检测电平值仅作为设计参考,不能用作芯片工作电压值的精确检测。
看门狗复位:
看门狗定时器用于保证系统正常工作。通常,会在主程序中将看门狗定时器清零,但不要在多个分支程序中清看门狗。
若程序正常运行,看门狗不会复位。当系统进入死区或程序运行出错的时候,看门狗定时器继续计数直至溢出,系统复位
并回到正常模式。如果看门狗复位后电源仍处于死区,则系统复位失败,一直处于复位状态直到电源回到正常水平。
如果看门狗复位后电源仍处于死区,则系统复位失败,保持复位状态,直到电源恢复到正常值。
降低系统工作速度:
如果系统工作速度过快容易导致芯片最低工作电压值增高,从而加大工作死区的范围,那么降低系统工作速度不失为
降低系统进入死区几率的有效措施。因为系统工作速度较低则最小工作电压值相应较低。所以,调节电源电压选择恰当的
电压值,在该电压下不会带来死区问题,从而找到合适的系统工作速度。这个方法需要调整整个程序使其满足系统要求。
附加外部复位电路:
外部复位发也能够完全改善掉电复位性能。共有三种外部复位方式:齐纳二极管复位电路,电压偏移复位电路和外部
IC 复位。它们都采用外部复位信号控制 MCU 可靠复位。
SONiX TECHNOLOGY CO., LTD
Page 35
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
3.5 外部复位
外部复位功能由“Reset_Pin”编译选项控制。将该编译选项置为“Reset”,从而使能外部复位功能。外部复位引脚为施
密特触发器结构,低电平有效。复位引脚处于高电平时,系统正常运行。当复位引脚输入低电平信号时,系统复位。外部
复位操作在上电和正常工作模式时有效。需要注意的是,在系统上电的过程中,外部复位引脚必须输入高电平,否则系统
将一直保持在复位状态。外部复位的时序如下:
z
z
z
z
外部复位(当且仅当外部复位引脚为使能状态):系统检测外部复位引脚的状态,如果外部复位引脚不为高电平,
则系统保持在复位状态直到外部复位引脚被释放;
系统初始化:初始化所有的系统寄存器;
振荡器开始工作:振荡器开始提供系统时钟;
执行程序:上电结束,程序开始运行。
外部复位可以在上电过程中使系统复位。良好的外部复位电路可以保护系统以免进入未知的工作状态,如 AC 应用中
的掉电复位等。
SONiX TECHNOLOGY CO., LTD
Page 36
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
3.6 外部复位电路
3.6.1 RC 复位电路
VDD
R1
47K ohm
R2
RST
100 ohm
MCU
C1
0.1uF
VSS
VCC
GND
上图为一个由电阻 R1 和电容 C1 组成的基本 RC 复位电路,它在系统上电的过程中能够为复位引脚提供一个缓慢上
升的复位信号。这个复位信号的上升速度低于 VDD 的上电速度,为系统提供合理的复位时间,当复位引脚达到高电平时,
系统复位结束,进入正常工作状态。
’
注:RC 复位电路不能解决非正常上电和掉电复位问题。
3.6.2 二极管&RC 复位电路
VDD
DIODE
R1
47K ohm
R2
RST
MCU
100 ohm
C1
0.1uF
VSS
VCC
GND
上图中,R1 和 C1 同样是为复位引脚提供输入信号。对于电源异常情况,二极管正向导通使 C1 快速放电并与 VDD
保持一致,避免复位引脚持续高电平、系统无法正常复位。
’
注:“基本 RC 复位电路”和“二极管&RC 复位电路”中的电阻 R2 都是必不可少的限流电阻,以避免复位引脚 ESD(Electrostatic
Discharge)或 EOS(Electrical Over-stress))击穿 。
SONiX TECHNOLOGY CO., LTD
Page 37
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
3.6.3 齐纳二极管复位电路
VDD
R1
33K o h m
E
R2
B
10K o h m
Vz
Q1
RST
C
MCU
R3
40K o h m
VSS
VCC
GND
齐纳二极管复位电路是一种简单的 LVD 电路,基本上可以完全解决掉电 复位问题。如上图电路中,利用齐纳管的击
穿电压作为电路复位检测值,当 VDD 高于“Vz + 0.7V”时,三极管集电极输出高电平,MCU 正常工作;当 VDD 低于“Vz +
0.7V”时,三极管集电极输出低电平,MCU 复位。齐纳管规格不同则电路复位检测值不同,根据电路的要求选择合适的二
极管。
3.6.4 电压偏置复位电路
VDD
R1
47K ohm
E
B
Q1
C
R2
10K ohm
RST
MCU
R3
2K ohm
VSS
VCC
GND
电压偏置复位电路是一种简单的 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 的电流稳定,在功耗电路如直流电源系统中,此处的
功耗必须计入整个系统的功耗中。
’
注:在电源不稳定或掉电复位的情况下,“齐纳二极管复位电路”和“偏压复位电路”能够保护电路在电压跌落时避免系统出错。当
电压跌落至低于复位检测值时,系统将被复位。从而保证系统正常工作。
SONiX TECHNOLOGY CO., LTD
Page 38
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
3.6.5 外部 IC 复位
VDD
VDD
B ypass
C a p a c it o r
0 .1 u F
R eset
IC
RST
RST
MCU
VSS
VSS
VCC
GND
外部复位也可以选用 IC 进行外部复位,但是这样一来系统成本将会增加。针对不用的应用要求选择适当的复位 IC,
如上图所示外部 IC 复位电路,能够有效的降低电源变化对系统的影响。
SONiX TECHNOLOGY CO., LTD
Page 39
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
4
系统工作时钟
4.1 概述
MCU 是一个双时钟系统:高速时钟和低速时钟。高速时钟由外部振荡电路或内置 16MHz 高速 RC 振荡电路(IHRC
16MHz)产生。低速时钟则由内置低速 RC 振荡电路(ILRC 16KHz@3V,32KHz@5V)产生
高低速时钟都可以作为系统时钟,当系统工作在低速模式下时,时钟信号 4 分频之后作为系统指令周期 Fcpu。
)
)
普通模式(高速时钟):Fcpu = Fhosc / N, N = 1 ~ 16,N 的值有 Fcpu Code Option 决定。
低速模式(低速时钟):Fcpu = Flosc/4.
在干扰较大的条件下,杂讯滤波器能够对外部干扰进行隔离以保护系统的正常工作。但在开启杂讯滤波功能后,高速
时钟的 Fcpu 被限制为 Fcpu = Fhosc/4。
4.2 时钟框图
STPHX
XIN
XOUT
HOSC
Fhosc.
Fcpu Code Option
Fcpu = Fhosc/1 ~ Fhosc/16, Noise Filter Disable.
Fcpu = Fhosc/4 ~ Fhosc/16, Noise Filter Enable.
CLKMD
Fosc
Fcpu
Fosc
CPUM[1:0]
Flosc.
z
z
z
z
z
Fcpu = Flosc/4
HOSC:High_Clk 编译选项(code option)。
Fhosc:外部高速时钟/内部高速 RC 时钟频率。
Flosc:内部低速 RC 时钟频率(16KHz@3V,32KHz@5V)。
Fosc:系统时钟频率。
Fcpu:指令执行频率。
SONiX TECHNOLOGY CO., LTD
Page 40
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
4.3 OSCM 寄存器
寄存器 OSCM 控制振荡器的状态和系统模式。
0CAH
OSCM
读/写
复位后
Bit 7
0
-
Bit 6
0
-
Bit 5
0
-
Bit 4
CPUM1
R/W
0
Bit 1
STPHX:外部高速振荡器控制位
0 = 运行
1 = 停止。内部低速 RC 振荡器仍然运行
Bit 2
CLKMD:高/低速时钟模式控制位
0 = 普通(双时钟)模式,系统时钟来自高速时钟
1 = 低速模式,系统时钟来自低速时钟
Bit[4:3]
CPUM[1:0] :CPU 工作模式控制位
00 = 普通模式
01 = 睡眠模式
10 = 绿色模式
11 = 系统保留
¾
¾
例:停止高速振荡器。
B0BSET
FSTPHX
Bit 3
CPUM0
R/W
0
Bit 2
CLKMD
R/W
0
Bit 1
STPHX
R/W
0
Bit 0
0
-
; 停止外部高速振荡器
例:系统进入睡眠模式时,高速振荡器和内部低速振荡器都被停止。
B0BSET
FCPUM0
SONiX TECHNOLOGY CO., LTD
Page 41
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
4.4 系统高速时钟
内部 16MHZ RC 振荡器和外部振荡器都可作为系统高速时钟源,由代码选项“High_Clk”控制。
High_Clk
IHRC_16M
RC
12M
4M
说明
内部 16MHz RC 振荡器作为系统时钟源,XIN/XOUT 作为普通的 I/O 口
外部 RC 振荡器作为系统时钟源,XOUT 作为普通的 I/O 口
外部高速振荡器作为系统高速时钟,典型频率为 12MHz。
外部振荡器作为系统高速时钟,典型频率为 4MHz。
4.4.1 内部高速 RC
代码选项“IHRC_16M”和控制芯片的内置 RC 高速时钟(16MHz)。若选择“IHRC_16M”,则内置 16MHz RC 振荡器
作为系统时钟源,XIN 和 XOUT 引脚作为通用 I/O 口。
z
IHRC:系统高速时钟来自内置 16MHz RC 振荡器,XIN/XOUT 引脚作为普通的 I/O 引脚。
SONiX TECHNOLOGY CO., LTD
Page 42
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
4.4.2 外部高速时钟
外部高速时钟共三种模式:石英/陶瓷振荡器,RC 及外部时钟源,由代码选项 High_Clk 控制具体模式的选择。石英/
陶瓷振荡器和 RC 振荡器的上升时间各不相同。RC 振荡器的上升时间相对较短。振荡器上升时间与复位时间的长短密切
相关。
4.4.2.1
石英/陶瓷振荡器
石英/陶瓷振荡器由 XIN/XOUT 口驱动,对于高速、普通和低速三种不同工作模式,振荡器的驱动电流也不同。不同
的工作模式下,代码选项“High_Clk”支持不同的频率条件:高速模式下的 12MHz 工作频率和普通模式的 4MHz 工作频率。
XIN
CRYSTAL
C
20pF
XOUT
MCU
C
VDD
20pF
VSS
VCC
GND
’
注:上图中, XIN/XOUT/VSS 引脚与石英/陶瓷振荡器以及电容 C 之间的距离越近越好。
SONiX TECHNOLOGY CO., LTD
Page 43
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
4.4.2.2
RC 振荡器
通过代码选项 High_Clk 的设置可控制 RC 振荡器的选择,RC 振荡器输出频率最高可达 10MHZ。改变 R 可改变输出
频率的大小,电容 C 的最佳容量为 50P~100P,引脚 XOUT 为通用 I/O 口,如下图所示:
XOUT
XIN
C
MCU
R
VDD
VSS
VCC
GND
’
注:电容 C 和电阻 R 应尽可能的靠近芯片的 VDD。
4.4.2.3
外部时钟源
芯片可选择外部时钟信号作为系统时钟,由代码选项 High_Clk 控制,从 XIN 脚送入。XOUT 作为普通 I/O 口。
External Clock Input
XIN
XOUT
MCU
VSS
VDD
VCC
GND
’
注:外部振荡电路中的 GND 必须尽可能的接近芯片的 VSS 端口。
SONiX TECHNOLOGY CO., LTD
Page 44
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
4.5 系统低速时钟
系统低速时钟源即内置的低速振荡器,采用 RC 振荡电路。低速时钟的输出频率受系统电压和环境温度的影响,通常
为 5V 时输出 32KHz,3V 时输出 16KHz。输出频率与工作电压之间的关系如下图所示。
Internal Low RC Frequency
45.00
40.80
Freq. (KHz)
40.00
38.08
35.00
35.40
32.52
30.00
29.20
25.96
25.00
ILRC
22.24
20.00
15.00
14.72
16.00 17.24
18.88
10.64
10.00
7.52
5.00
0.00
2.1 2.5
3
3.1 3.3 3.5
4
4.5
5
5.5
6
6.5
7
VDD (V)
低速时钟可作为看门狗定时器的时钟源。由 CLKMD 控制系统低速工作模式。
)
)
Flosc = 内部低速 RC 振荡器 (16KHz @3V, 32KHz @5V).
低速模式 Fcpu = Flosc / 4
系统在睡眠模式和绿色模式下时禁止看门狗定时器,可以停止低速 RC 振荡器。
¾
例:停止内部低速振荡器。
B0BSET
’
FCPUM0
注:不能单独停止内部低速时钟;由寄存器 OSCM 的位 CPUM0 和 CPUM1(禁止看门狗)的设置决定内部低速时钟的状态。
4.5.1 系统时钟测试
在设计过程中,用户可通过软件指令周期 Fcpu 对系统时钟速度进行测试。这种测试方法仅在 RC 模式下有效。
¾
例:外部振荡器 Fcpu 指令周期测试。
B0BSET
P0M.0
; 置 P0.0 为输出模式以输出 Fcpu 的触发信号
@@:
B0BSET
B0BCLR
JMP
’
P0.0
P0.0
@B
注:不能直接从 XIN 引脚测试 RC 振荡频率,因为探针的连接会影响测试的准确性。
SONiX TECHNOLOGY CO., LTD
Page 45
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
5
系统工作模式
5.1 概述
芯片可在如下四种工作模式之间进行切换:
z
z
z
z
高速模式
低速模式
睡眠模式
绿色模式
睡眠模式
P0, P1唤醒功能有效.
外部复位电路有效
CPUM1, CPUM0 = 01.
CLKMD = 1
普通模式
P0, P1唤醒功能有效.
T0定时器超时
外部复位电路有效
CLKMD = 0
CPUM1, CPUM0 = 10.
低速模式
P0, P1唤醒功能有效
T0定时器超时
绿色模式
外部复位电路有效
系统模式切换示意图
工作模式
工作模式
EHOSC
IHRC
ILRC
CPU 指令
T0 定时器
TC0 定时器
看门狗定时器
内部中断
外部中断
唤醒功能
z
z
z
普通模式
运行
运行
运行
执行
*有效
*有效
由 Watch_Dog
编译选项控制
全部有效
全部有效
-
低速模式
由 STPHX 控制
由 STPHX 控制
运行
执行
*有效
*有效
由 Watch_Dog
编译选项控制
全部有效
全部有效
-
绿色模式
睡眠模式
备注
由 STPHX 控制
停止
由 STPHX 控制
停止
运行
停止
停止
停止
*有效
无效
*T0ENB = 1 时有效
无效
无效
*TC0ENB = 1 时有效
由 Watch_Dog 由 Watch_Dog
参考编译选项章节
编译选项控制
编译选项控制
T0
全部无效
全部有效
全部无效
P0, P1, T0,复位 P0, P1, 复位
EHOSC:外部高速时钟
IHRC:内部高速时钟(16M RC 振荡器)
ILRC:内部低速时钟(3V 时 16K RC;5V 时 32K)
SONiX TECHNOLOGY CO., LTD
Page 46
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
5.2 系统模式切换
¾
例:系统由普通/低速模式切换进入睡眠模式。
B0BSET
FCPUM0
;
’
注:在睡眠模式下,只有具有唤醒功能的引脚和复位引脚可以把系统唤醒进入普通模式。
¾
例:系统由普通模式切换进入低速模式。
B0BSET
FCLKMD
B0BSET
FSTPHX
¾
¾
例:系统由低速模式切换进入普通模式(外部高速振荡器仍然正常工作)。
B0BCLR
FCLKMD
;
例:系统由低速模式切换进入普通模式(外部高速振荡器停止工作)。
在外部高速时钟停止运行的情况下,系统返回到普通模式需要 10ms 的延迟时间等待外部时钟稳定。
B0BCLR
FSTPHX
; 启动外部高速振荡器
@@:
¾
’
; 设置 CLKMD = 1,系统进入低速模式
; 停止外部高速振荡器
MOV
B0MOV
DECMS
JMP
A, #27
Z, A
Z
@B
B0BCLR
FCLKMD
例:系统由普通/低速模式切换进入绿色模式。
B0BSET
FCPUM1
; 若 VDD = 5V,内部 RC=32KHz(典型值)
; 需延迟 0.125ms X 81 = 10.125ms 等待外部时钟稳定
;
; 系统返回到普通模式
;
注:绿色模式下如果禁止 T0 的唤醒功能,则只有具有唤醒功能的引脚和复位引脚可以将系统唤醒返回到上一个工作模式。
¾
例:系统由普通/低速模式切换进入绿色模式,开启 T0 的唤醒功能。
; 设置 T0 的唤醒功能
B0BCLR
FT0IEN
; 禁止 T0 中断
B0BCLR
FT0ENB
; 禁止 T0 定时器
MOV
A,#20H
;
B0MOV
T0M,A
; 设置 T0 时钟 = Fcpu / 64
MOV
A,#74H
B0MOV
T0C,A
; 设置 T0C 初始值= 74H (T0 中断间隔= 10 ms)
B0BCLR
FT0IEN
; 禁止 T0 中断
B0BCLR
FT0IRQ
; 清 T0 中断请求标志
B0BSET
FT0ENB
; 允许 T0 定时器
; 进入绿色模式
B0BCLR
FCPUM0
; CPUMx = 10
B0BSET
FCPUM1
’
注:绿色模式下如果允许 T0 的唤醒功能,则具有唤醒功能的引脚、复位引脚和 T0 都可以将系统唤醒返回到上一个工作模式。
T0 的唤醒周期由过程控制。
SONiX TECHNOLOGY CO., LTD
Page 47
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
5.3 唤醒时间
5.3.1 概述
在绿色模式和睡眠模式下,系统并不执行程序指令,唤醒触发信号能够将处于睡眠状态的系统唤醒到普通模式或低速
模式。这里的唤醒触发信号包括外部触发信号(P0、P1 引脚的电平变化)和内部触发信号(T0 溢出信号),具体为:
z
由睡眠模式唤醒到普通模式只能是外部触发;
z
由绿色模式唤醒回到系统前一工作模式(普通模式或低速模式)可以用外部触发或者内部触发。
5.3.2 唤醒时间
系统进入睡眠模式后,高速时钟停止运行。把系统从睡眠模式下唤醒时,MCU 需要等待 2048 个外部高速振荡器时
钟周期以使振荡电路进入稳定工作状态,等待的这一段时间就称为唤醒时间。唤醒时间结束后,系统才进入到普通模式。
’
注:将系统从绿色模式中唤醒是不需要唤醒时间的,因为在绿色模式下高速时钟仍然正常工作。
唤醒时间的计算如下:
唤醒时间 = 1/Fosc * 2048 (sec) + 高速时钟启动时间
’
注:高速时钟的启动时间与 VDD 和振荡器类型有关。
¾
例:将系统从睡眠模式中唤醒,并设置系统进入普通模式。唤醒时间计算如下。
唤醒时间= 1/Fosc * 2048 = 0.512 ms (Fosc = 4MHz)
总的唤醒时间 = 0.512 ms + 振荡器启动时间
5.3.3
P1W 唤醒功能控制寄存器
在绿色模式和睡眠模式下,有唤醒功能的 I/O 口能够将系统从唤醒到普通模式。P0 和 P1 都有唤醒功能,二者区别在
于,P0 的唤醒功能始终有效,而 P1 的唤醒功能则由寄存器 P1W 控制。
0C0H
P1W
读/写
复位后
Bit[7:0]
Bit 7
P17W
W
0
Bit 6
P16W
W
0
Bit 5
P15W
W
0
Bit 4
P14W
W
0
Bit 3
P13W
W
0
Bit 2
P12W
W
0
Bit 1
P11W
W
0
Bit 0
P10W
W
0
P10W~P17W:P1 唤醒功能控制位
0 = 禁止 P1n 唤醒功能
1 = 开放 P1n 唤醒功能
SONiX TECHNOLOGY CO., LTD
Page 48
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
6
中断
6.1 概述
这种 MCU 提供 4 种中断源:2 个内部中断(T0/TC0)和 2 个外部中断(INT0/INT1)。外部中断可以将系统从睡眠
模式中唤醒进入高速模式。一旦程序进入中断,寄存器 STKP 的位 GIE 将被清零以避免再次响应其它中断。系统退出中
断后,GIE 置“1”,以响应下一个中断。中断请求存放在寄存器 INTRQ 中。
INTEN Interrupt Enable Register
P00IRQ
INT0 Trigger
INTRQ
INT1 Trigger
T0 Time Out
TC0 Time Out
’
Interrupt
P01IRQ
4-Bit
T0IRQ
Enable
Latchs
TC0IRQ
Gating
Interrupt Vector Address (0008H)
Global Interrupt Request Signal
注:程序响应中断时,必须开启全局中断控制位 GIE。
6.2 中断请求使能寄存器 INTEN
中断请求控制寄存器 INTEN 包括所有中断的使能控制位。INTEN 的有效位被置为“1”则系统进入该中断服务程序,程
序计数器入栈,程序转至 ORG 8 即中断程序。程序运行到指令 RETI 时,中断结束,系统退出中断服务。
0C9H
INTEN
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
TC0IEN
R/W
0
Bit 0
P00IEN:P0.0 外部中断(INT0) 控制位
0 = 无效
1 = 有效
Bit 1
P01IEN:P0.1 外部中断(INT1) 控制位
0 = 无效
1 = 有效
Bit 4
T0IEN:T0 中断控制位
0 = 无效
1 = 有效
Bit 5
TC0IEN:TC0 中断控制位
0 = 无效
1 = 有效
SONiX TECHNOLOGY CO., LTD
Bit 4
T0IEN
R/W
0
Page 49
Bit 3
-
Bit 2
-
Bit 1
P01IEN
R/W
0
Bit 0
P00IEN
R/W
0
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
6.3 中断请求寄存器 INTRQ
中断请求寄存器 INTRQ 中存放各中断请求标志。一旦有中断请求发生,则 INTRQ 中对应位将被置“1”,该请求被响
应后,程序应将该标志位清零。根据 INTRQ 的状态,程序判断是否有中断发生,并执行相应的中断服务。
0C8H
INTRQ
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
TC0IRQ
R/W
0
Bit 0
P00IRQ:P0.0 中断 (INT0) 请求标志
0 = INT0 无中断请求
1 = INT0 有中断请求
Bit 1
P01IRQ:P0.1 中断 (INT1) 请求标志
0 = INT0 无中断请求
1 = INT0 有中断请求
Bit 4
T0IRQ:T0 中断请求标志
0 = T0 无中断请求
1 = T0 有中断请求
Bit 5
TC0IRQ:TC0 中断请求标志
0 = TC0 无中断请求
1 = TC0 有中断请求
Bit 4
T0IRQ
R/W
0
Bit 3
-
Bit 2
-
Bit 1
P01IRQ
R/W
0
Bit 0
P00IRQ
R/W
0
6.4 GIE 全局中断
只有当全局中断控制寄存器 GIE 置“1”的时候程序才能响应中断请求。 一旦有中断发生,程序计数器(PC)指向中
断向量地址(ORG8),堆栈层数加 1。
0DFH
STKP
读/写
复位后
Bit 7
¾
Bit 7
GIE
R/W
0
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
STKPB2
R/W
1
Bit 1
STKPB1
R/W
1
Bit 0
STKPB0
R/W
1
GIE:全局中断控制位
0 = 禁止全局中断
1 = 使能全局中断.
例:设置全局中断控制位(GIE)。
B0BSET
’
Bit 6
-
FGIE
; 使能 GIE
注:在所有中断中,GIE 都必须处于使能状态。
SONiX TECHNOLOGY CO., LTD
Page 50
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
6.5 PUSH, POP 处理
有中断请求发生并被响应后,程序转至 ORG 8 执行中断子程序。响应中断之前,必须保存 ACC、PFLAG 的内容。
芯片提供 PUSH 和 POP 指令进行入栈保存和出栈恢复,从而避免中断结束后可能的程序运行错误。
’
注:“PUSH”, “POP”指令仅对 ACC 和 PFLAG 作中断保护,而不包括 NT0 和 NPD。PUSH/POP 缓存器是唯一的且仅有一层。
¾
例:对 ACC 和 PAFLG 进行入栈保护。
ORG
0
JMP
START
ORG
JMP
8
INT_SERVICE
ORG
10H
START:
…
INT_SERVICE:
PUSH
…
…
POP
; 保存 ACC 和 PFLAG
RETI
…
ENDP
; 退出中断
SONiX TECHNOLOGY CO., LTD
; 恢复 ACC 和 PFLAG
Page 51
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
6.6 INT0(P0.0)中断
INT0 被触发,则无论 P00IEN 处于何种状态,P00IRQ 都会被置“1”。如果 P00IRQ=1 且 P00IEN=1,系统响应该
中断;如果 P00IRQ=1 而 P00IEN=0,系统并不会执行中断服务。在处理多中断时尤其需要注意。
如果中断的触发方向和唤醒功能的出发方向是一样的,则在系统由 P0.0 从睡眠模式和绿色模式换新时,INT0 的中断
请求(INT0IRQ)就会被锁定。系统会在唤醒后马上进入中断向量地址执行中断服务程序。I
’
注:INT0 的中断请求被 P0.0 的唤醒触发功能锁定。
’
注:P0.0 的中断触发边沿由 PPEDGE 控制。
0BFH
PEDGE
读/写
复位后
Bit[4:3]
¾
¾
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
P00G1
R/W
1
Bit 3
P00G0
R/W
0
Bit 2
-
Bit 1
-
Bit 0
-
P00G[1:0]:P0.0 中断出发控制位
00 = 保留
01 = 上升沿触发
10 = 下降沿触发
11 = 上升/下降沿触发(电平触发)
例:INT0 中断请求设置,电平触发。
MOV
B0MOV
A, #18H
PEDGE, A
; 设置 INT0 为电平触发
B0BSET
B0BCLR
B0BSET
FP00IEN
FP00IRQ
FGIE
; 允许 INT0 中断
; 清 INT0 中断请求标志
; 使能 GIE
8
INT_SERVICE
;
例:INT0 中断
ORG
JMP
INT_SERVICE:
…
; ACC 和 PFLAG 入栈保护
B0BTS1
JMP
FP00IRQ
EXIT_INT
; 检查是否有 P00 中断请求标志
; P00IRQ = 0,退出中断
B0BCLR
…
…
FP00IRQ
; 清 P00IRQ
; INT0 中断服务程序
EXIT_INT:
…
; ACC 和 PFLAG 出栈恢复
RETI
; 退出中断
SONiX TECHNOLOGY CO., LTD
Page 52
Version1.0
SN8P2610 Series
8-Bit Micro-Controller
6.7 INT1(P0.1)中断
INT1 被触发,则无论 P01IEN 处于何种状态,P01IRQ 都会被置“1”。如果 P01IRQ = 1 且 P01IEN = 1,系统响应该
中断;如果 P01IRQ = 1 而 P01IEN = 0,系统并不会执行中断服务。在处理多中断时尤其需要注意。
如果中断的触发方向和唤醒功能的出发方向是一样的,则在系统由 P0.1 从睡眠模式和绿色模式换新时,INT1 的中断
请求(INT1IRQ)就会被锁定。系统会在唤醒后马上进入中断向量地址执行中断服务程序
’
注:INT1 的中断请求被 P0.1 的唤醒触发功能锁定。
’
注:P0.1 中断由下降沿触发
¾
例:INT1 中断请求设置。
B0BSET
B0BCLR
B0BSET
¾
FP01IEN
FP01IRQ
FGIE
; 允许 INT1 中断
; 清 INT1 中断请求标志
; 使能 GIE
8
INT_SERVICE
;
例:INT1 中断。
ORG
JMP
INT_SERVICE:
…
; ACC 和 PFLAG 入栈保护
B0BTS1
JMP
FP01IRQ
EXIT_INT
; 检查是否有 P01 中断请求标志
; P01IRQ = 0,退出中断
B0BCLR
…
…
FP01IRQ
; 清 P01IRQ
; INT1 中断服务程序
EXIT_INT:
…
; ACC 和 PFLAG 出栈恢复
RETI
; 退出中断
SONiX TECHNOLOGY CO., LTD
Page 53
Version1.0
SN8P2610 Series
8-Bit Micro-Controller
6.8 T0 中断
计数器 T0C 溢出时,不管 T0IEN 处于何种状态,T0 中断请求寄存器 T0IRQ 都置“1”。此时,如果 T0IEN=1,那么
系统将响应 T0 中断进入相应的中断服务子程序。如果这时 T0IEN=0,那么系统并不响应该 T0 中断请求。对于多中断情
形,尤其需要注意上述条件。
¾
例:设置 T0 中断。
B0BCLR
B0BCLR
MOV
B0MOV
MOV
B0MOV
FT0IEN
FT0ENB
A, #20H
T0M, A
A, #74H
T0C, A
;
;
;
;
;
;
B0BSET
B0BCLR
B0BSET
FT0IEN
FT0IRQ
FT0ENB
; 开启 T0 中断
; T0IRQ 清零
; 开启定时器 T0
B0BSET
FGIE
; 开放 GIE
禁止 T0 中断
关闭 T0
设置 T0 时钟= Fcpu / 64
初始化 T0C = 74H
设置 T0 间隔时间= 10 ms
¾
例:T0 中断服务程序。
ORG
JMP
INT_SERVICE:
8
INT_SERVICE
…
; ACC 和 PFLAG 入栈保护
B0BTS1
JMP
FT0IRQ
EXIT_INT
; 检查是否有 T0 中断请求标志
; T0IRQ = 0, 退出中断
B0BCLR
MOV
B0MOV
…
…
FT0IRQ
A, #74H
T0C, A
; 清 T0IRQ
;
EXIT_INT:
…
; ACC 和 PFLAG 出栈恢复
RETI
; 退出中断
SONiX TECHNOLOGY CO., LTD
Page 54
Version1.0
SN8P2610 Series
8-Bit Micro-Controller
6.9
TC0 中断
TC0C 溢出时,不管 TC0IEN 是否开启,TC0IRQ 都会被置“1”。如果 TC0IRQ=1 且 TC0IEN=1,则系统将响应 TC0
的中断请求;如果 TC0IRQ=1 而 TC0IEN=0,则系统并不会响应 TC0 的中断请求。对于多中断情形,尤其需要注意上述
条件。
¾
例:TC0 中断请求设置。
B0BCLR
B0BCLR
MOV
B0MOV
MOV
B0MOV
FTC0IEN
FTC0ENB
A, #20H
TC0M, A
A, #74H
TC0C, A
; 禁止 TC0 中断
;
;
; TC0 时钟= Fcpu / 64
; TC0C 初始值=74H
; TC0 间隔= 10 ms
B0BSET
B0BCLR
B0BSET
FTC0IEN
FTC0IRQ
FTC0ENB
; 允许 TC0 中断
; 清 TC0 中断请求标志
;
B0BSET
FGIE
; 允许 GIE
8
INT_SERVICE
;
¾
例:TC0 中断服务程序。
ORG
JMP
INT_SERVICE:
…
; ACC 和 PFLAG 入栈保护
B0BTS1
JMP
FTC0IRQ
EXIT_INT
; 检查是否有 TC0 中断请求标志
; TC0IRQ = 0, 退出中断
B0BCLR
MOV
B0MOV
…
…
FTC0IRQ
A, #74H
TC0C, A
; 清 TC0IRQ
; 清 TC0C
; TC0 中断程序
EXIT_INT:
…
; ACC 和 PFLAG 出栈恢复
RETI
; 退出中断
SONiX TECHNOLOGY CO., LTD
Page 55
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
6.10 多中断操作举例
在同一时刻,系统中可能出现多个中断请求。处理这种多中断情况时,必须预先对各中断请求设置不同的优先级别。
中断请求标志 IRQ 由中断事件触发,当 IRQ 处于有效值“1”时,系统并不一定会响应该中断。各中断触发事件列表如下:
中断
P00IRQ
P01IRQ
T0IRQ
TC0IRQ
有效触发
由 PEDGE 控制
下降沿触发
T0C 溢出
TC0C 溢出
多个中断同时发生时,需要注意的是:首先,必须预先设定好各中断的优先级。其次,利用 IEN 和 IRQ 控制系统是
否响应该中断。在程序中,必须对中断控制位和中断请求标志进行检测。
¾
例:多中断条件下检测中断请求。
ORG
JMP
8
INT_SERVICE
;
INT_SERVICE:
…
; ACC 和 PFLAG 入栈保护
INTP00CHK:
B0BTS1
JMP
B0BTS0
JMP
FP00IEN
INTP01CHK
FP00IRQ
INTP00
B0BTS1
JMP
B0BTS0
JMP
FP01IEN
INTT0CHK
FP01IRQ
INTP01
B0BTS1
JMP
B0BTS0
JMP
FT0IEN
INTTC0CHK
FT0IRQ
INTT0
B0BTS1
JMP
B0BTS0
JMP
FTC0IEN
INT_EXIT
FTC0IRQ
INTTC0
INTP01CHK:
INTT0CHK:
INTTC0CHK:
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
检查是否有 INT0 中断请求
检查是否允许 INT0 中断
跳到下一个中断
检查是否有 INT0 中断请求
进入 INT0 中断
检查是否有 INT1 中断请求
检查是否允许 INT1 中断
跳到下一个中断
检查是否有 INT1 中断请求
进入 INT1 中断
检查是否有 T0 中断请求
检查是否允许 T0 中断
跳到下一个中断
检查是否有 T0 中断请求
进入 T0 中断
检查是否有 TC0 中断请求
检查是否允许 TC0 中断
检查是否有 TC0 中断请求
进入 TC0 中断
INT_EXIT:
…
; ACC 和 PFLAG 出栈恢复
RETI
; 退出中断
SONiX TECHNOLOGY CO., LTD
Page 56
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
7
I/O 口
7.1 I/O 口模式
对寄存器 PnM 编程设置可选择各端口的数据传送方向。
0B8H
P0M
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
-
Bit 1
P01M
R/W
0
Bit 0
P00M
R/W
0
0C1H
P1M
读/写
复位后
Bit 7
P17M
R/W
0
Bit 6
P16M
R/W
0
Bit 5
-
Bit 4
P14M
R/W
0
Bit 3
P13M
R/W
0
Bit 2
P12M
R/W
0
Bit 1
P12M
R/W
0
Bit 0
P10M
R/W
0
0C5H
P5M
读/写
复位后
Bit 7
P57M
R/W
0
Bit 6
P56M
R/W
0
Bit 5
P55M
R/W
0
Bit 4
P54M
R/W
0
Bit 3
P53M
R/W
0
Bit 2
P52M
R/W
0
Bit 1
P51M
R/W
0
Bit 0
P50M
R/W
0
Bit[7:0]
PnM[7:0]:Pn 模式控制位(n = 0~7).
0 = Pn 为输入模式
1 = Pn 为输出模式
’
1.
2.
注:
用户可通过位操作指令(B0BSET, B0BCLR)对 I/O 口进行编程控制;
P1.5 只能作为输入引脚,寄存器 P1M.5 的值保持为“1”。
¾
例:I/O 模式设置。
CLR
CLR
CLR
P0M
P1M
P5M
; 所有端口设为输入模式
MOV
B0MOV
B0MOV
B0MOV
A, #0FFH
P0M, A
P1M, A
P5M, A
; 所有端口设为输出模式
B0BCLR
P1M.2
; P1.2 设为输入模式
B0BSET
P1M.2
; P1.2 设为输出模式
SONiX TECHNOLOGY CO., LTD
Page 57
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
7.2 I/O 上拉电阻寄存器
0E0H
P0UR
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
-
Bit 1
P01R
W
0
Bit 0
P00R
W
0
0E1H
P1UR
读/写
复位后
Bit 7
P17R
W
0
Bit 6
P16R
W
0
Bit 5
-
Bit 4
P14R
W
0
Bit 3
P13R
W
0
Bit 2
P12R
W
0
Bit 1
P11R
W
0
Bit 0
P10R
W
0
0E5H
P5UR
读/写
复位后
Bit 7
P57R
W
0
Bit 6
P56R
W
0
Bit 5
P55R
W
0
Bit 4
P54R
W
0
Bit 3
P53R
W
0
Bit 2
P52R
W
0
Bit 1
P51R
W
0
Bit 0
P50R
W
0
’
注:P1.5 只能工作在无上拉电阻的输入模式,因此 P1UR.5 必须保持“1“。
¾
例:I/O 上拉电阻寄存器设置。
MOV
B0MOV
B0MOV
B0MOV
A, #0FFH
P0UR, A
P1UR, A
P5UR, A
SONiX TECHNOLOGY CO., LTD
; 使能 P0, 1, 5 上拉电阻。
Page 58
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
7.3 I/O 漏极开路寄存器
P1.0 有内置漏极开路功能,当使能该功能时,P1.0 必须被置为输出模式。漏极开路的外部电路如下:
MCU2
MCU1
U
U
VCC
Pull-up Resistor
Open-drain pin
Open-drain pin
图中的上拉电阻必不可少,漏极开路的输出高电平由上拉电阻驱动,输出低电平时为灌电流。
0E9H
P1OC
读/写
复位后
Bit 0
¾
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
-
Bit 1
-
Bit 0
P10OC
W
0
P10OC:P1.0 漏极开路控制位
0 = 禁止漏极开路
1 = 漏极开路
例:P1.0 设置为漏极开路模式,输出高电平。
B0BSET
P1.0
B0BSET
MOV
B0MOV
P10M
A, #01H
P1OC, A
; P1.0 置 1
; 设置 P1.0 输出模式
; P1.0 置为漏极开路模式
’
注:P1OC 为只写寄存器,所以 P10OC 只能用指令“MOV”进行设置。
¾
例:禁止 P1.0 漏极开路,输出低电平。
MOV
A, #0
B0MOV
P1OC, A
’
注:禁止 P1.0 的漏极开路功能后,P1.0 返回上一个 I/O 模式。
SONiX TECHNOLOGY CO., LTD
Page 59
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
7.4 I/O 口数据寄存器
0D0H
P0
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
-
Bit 1
P01
R/W
0
Bit 0
P00
R/W
0
0D1H
P1
读/写
复位后
Bit 7
P17
R
0
Bit 6
P16
R/W
0
Bit 5
P15
R
0
Bit 4
P14
R/W
0
Bit 3
P13
R/W
0
Bit 2
P12
R/W
0
Bit 1
P11
R/W
0
Bit 0
P10
R/W
0
0D5H
P5
读/写
复位后
Bit 7
P57
R/W
0
Bit 6
P56
R/W
0
Bit 5
P55
R/W
0
Bit 4
P54
R/W
0
Bit 3
P53
R/W
0
Bit 2
P52
R/W
0
Bit 1
P51
R/W
0
Bit 0
P50
R/W
0
’
注:当外部复位有效时,P15 的值保持为“1”。
¾
例:从输入端口读取数据。
B0MOV
B0MOV
B0MOV
A, P0
A, P1
A, P5
例:数据写到输出端口。
MOV
B0MOV
B0MOV
B0MOV
A, #0FFH
P0, A
P1, A
P5, A
¾
¾ 例:数据写到输出端口。
B0BSET
B0BSET
B0BCLR
B0BCLR
; 从 P 0 口读数据
; 从 P 1 口读数据
; 从 P 5 口读数据
P1.3
P5.5
; P1.3 和 P5.5 置为 “1”.
P1.3
P5.5
; P1.3 和 P5.5 置为 “0”.
SONiX TECHNOLOGY CO., LTD
Page 60
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8
定时器
8.1 看门狗定时器
看门狗定时器 WDT 用于控制程序的正常执行。如果由于干扰程序进入了未知状态,WDT 溢出,MCU 复位。看门狗
的工作模式由编译选项控制,其时钟源来自内部低速振荡器(16KHz @3V, 32KHz @5V)。
看门狗溢出时间 = 8192 /内部低速振荡器周期 (sec).
内部低速 RC Freq.
16KHz
32KHz
VDD
3V
5V
’
看门狗溢出时间
512ms
256ms
注:如果看门狗被置为“Always_On” 模式,那么看门狗在睡眠模式和绿色模式下仍然运行。
寄存器 WDTR 控制对看门狗的清零:WDTR 置为 5AH 即可将看门狗清零。
0CCH
WDTR
读/写
复位后
¾
z
z
z
Bit 7
WDTR7
W
0
Bit 6
WDTR6
W
0
Bit 5
WDTR5
W
0
Bit 4
WDTR4
W
0
Bit 3
WDTR3
W
0
Bit 2
WDTR2
W
0
Bit 1
WDTR1
W
0
Bit 0
WDTR0
W
0
例:如下是对看门狗定时器的操作,在主程序开头对看门狗清零。
MOV
A,#5AH
; 看门狗定时器清零
B0MOV
WDTR,A
…
CALL
SUB1
CALL
SUB2
…
…
JMP
MAIN
看门狗应用注意事项如下:
对看门狗清零之前,检查 I/O 口的状态和 RAM 的内容可增强程序的可靠性;
不能在中断中对看门狗清零,否则无法侦测到主程序跑飞的状况;
程序中应该只在主程序中有一次清看门狗的动作,这种架构能够最大限度的发挥看门狗的保护作用。
¾
例:如下是对看门狗定时器的操作,在主程序开头对看门狗清零。
main:
…
; 检测 I/O 口状态
…
; 检测 RAM 内存
Err:
JMP $
; I/O 或 RAM 出错,不对看门狗清零,并等待看门狗计时溢出
@RST_WDT
…
CALL
CALL
…
…
JMP
; I/O 和 RAM 正常,看门狗清零
;
;
SUB1
SUB2
MAIN
SONiX TECHNOLOGY CO., LTD
Page 61
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.2 定时器 T0
8.2.1 概述
8-bit 二进制定时器 T0 可作为事件计数器使用。T0 溢出时(由 FFH 计到 00H),T0 在继续计数的同时给出一个超时
信号,该信号即是 T0 中断触发信号。计数器 T0 主要有以下功能:
)
)
8-bit 可编程计数器:根据选定的时钟频率定时产生中断;
绿色模式唤醒功能:在 T0ENB=1 的条件下,T0 的溢出可将系统从绿色模式中唤醒。
T0 Rate
(Fcpu/2~Fcpu/256)
T0ENB
Internal Data Bus
Load
Fcpu
T0C 8-Bit Binary Up Counting Counter
T0 Time Out
CPUM0,1
8.2.2 模式寄存器 T0M
0D8H
T0M
读/写
复位后
Bit 7
T0ENB
R/W
0
Bit 6
T0rate2
R/W
0
Bit 5
T0rate1
R/W
0
Bit 4
T0rate0
R/W
0
Bit 3
-
Bit 2
-
Bit 1
-
Bit 0
0
R/W
0
Bit [6:4] T0RATE[2:0]:T0 时钟频率控制位
000 = fcpu/256.
001 = fcpu/128.
…
110 = fcpu/4.
111 = fcpu/2.
Bit 7
T0ENB:T0 计数控制位
0 = 关闭 T0 计数器
1 = 开启 T0 计数器
SONiX TECHNOLOGY CO., LTD
Page 62
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.2.3 计数寄存器 T0C
T0C 用于存放 T0 计数间隔时间。
0D9H
T0C
读/写
复位后
Bit 7
T0C7
R/W
0
Bit 6
T0C6
R/W
0
Bit 5
T0C5
R/W
0
Bit 4
T0C4
R/W
0
Bit 3
T0C3
R/W
0
Bit 2
T0C2
R/W
0
Bit 1
T0C1
R/W
0
Bit 0
T0C0
R/W
0
T0C 初始值计算公式如下:
T0C 初始值= 256 - (T0 中断间隔时间 * 输入时钟)
¾
例:T0 中断间隔时间设置为 10ms,高速时钟选择外部 4MHz,Fcpu=Fosc/4,T0RATE=010 (Fcpu/64)。
T0C 初始值 = 256 - (T0 中断间隔时间 * 输入时钟)
= 256 - (10ms * 4MHz / 4 / 64)
= 256 - (10-2 * 4 * 106 / 4 / 64)
= 100
= 64H
T0 的时间间隔表
T0RATE T0CLOCK
000
001
010
011
100
101
110
111
Fcpu/256
Fcpu/128
Fcpu/64
Fcpu/32
Fcpu/16
Fcpu/8
Fcpu/4
Fcpu/2
高速模式 (Fcpu = 4MHz / 4)
最大溢出间隔时间
65.536 ms
32.768 ms
16.384 ms
8.192 ms
4.096 ms
2.048 ms
1.024 ms
0.512 ms
SONiX TECHNOLOGY CO., LTD
单步间隔时间 = max/256
256 us
128 us
64 us
32 us
16 us
8 us
4 us
2 us
Page 63
低速模式 (Fcpu = 32768Hz / 4)
最大溢出间隔时间
8000 ms
4000 ms
2000 ms
1000 ms
500 ms
250 ms
125 ms
62.5 ms
单步间隔时间 = max/256
31250 us
15625 us
7812.5 us
3906.25 us
1953.125 us
976.563 us
488.281 us
244.141 us
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.2.4 T0 操作举例
T0 的操作流程如下:
)
T0 停止计数,禁止 T0 中断,清 T0 中断请求标志。
B0BCLR
FT0ENB
;
B0BCLR
FT0IEN
; 禁止 T0 中断
B0BCLR
FT0IRQ
; 清 T0 中断请求标志
)
设置 T0 的计数速率。
MOV
T0M,A
; 设置 T0M 的 bit4~bit6 控制 T0 的计数速率
; 范围为 x000xxxxb~x111xxxxb
; 禁止 T0 定时器
设置 T0 中断的间隔时间。
MOV
B0MOV
A,#7FH
T0C,A
;
设置 T0 的功能模式。
B0BSET
FT0IEN
; 开启 T0 的中断功能
开启 T0 定时器
B0BSET
FT0ENB
;
B0MOV
)
)
)
A, #0xxx0000b
SONiX TECHNOLOGY CO., LTD
Page 64
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.3 定时/计数器 TC0
8.3.1 概述
8-bit 二进制增量计数器 TC0 可根据实际需要,分别采用内部时钟和外部时钟两种时钟源作为计数时基。其中,内部
时钟来自 Fcpu,外部时钟 INT0 由 P0.0 引脚(下降沿触发)输入。寄存器 TC0M 控制具体时钟源的选择。通常,TC0 计
数到 0xFF 变为 0X00 时,系统给出溢出信号触发 TC0 中断,同时开始重新计数。在 PWM 模式下,TC0 的溢出由 ALOAD0
和 TC0OUT 控制的 PWM 周期决定。
TC0 的主要作用如下:
) 8-bit 可编程定时器:根据选定的时钟频率在特定时间产生中断信号;
) 外部事件计数:通过对 INT0 口输入信号下降沿的检测,统计系统“事件”数;
) 蜂鸣器输出
) PWM 输出
TC0OUT
Internal P5.4 I/O Circuit
Up Counting
Reload Value
ALOAD0
Buzzer
Auto. Reload
TC0 Time Out
TC0R Reload
Data Buffer
R
TC0CKS
Compare
TC0ENB
P5.4
ALOAD0, TC0OUT
TC0 Rate
(Fcpu/2~Fcpu/256)
Fcpu
TC0 / 2
PWM0OUT
PWM
S
Load
TC0C
8-Bit Binary Up
Counting Counter
TC0 Time Out
INT0
(Schmitter Trigger)
CPUM0,1
SONiX TECHNOLOGY CO., LTD
Page 65
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.3.2 模式寄存器 TC0M
0DAH
TC0M
读/写
复位后
Bit 0
Bit 7
TC0ENB
R/W
0
Bit 6
TC0rate2
R/W
0
Bit 5
TC0rate1
R/W
0
Bit 4
TC0rate0
R/W
0
Bit 3
TC0CKS
R/W
0
Bit 1
TC0OUT
R/W
0
Bit 0
PWM0OUT
R/W
0
PWM0OUT:PWM 输出控制
0 = 禁止 PWM 输出;
1 = 开放 PWM 输出,PWM 输出占空比由 TC0OUT 和 ALOAD0 控制。
Bit 1
TC0OUT:TC0 超时输出信号控制。仅当 PWM0OUT = 0 时有效。
0 = 禁止,P5.4 作为输入/输出口;
1 = 允许,P5.4 输出 TC0OUT 信号。
Bit 2
ALOAD0:自动重载控制。仅当 PWM0OUT = 0 时有效。
0 = 禁止 TC0 自动重载;
1 = 允许 TC0 自动重载。
Bit 3
Bit 2
ALOAD0
R/W
0
TC0CKS:TC0 时钟源控制位
0 = 内部时钟(Fcpu or Fosc);
1 = 外部时钟,由 P0.0/INT0 输入。
Bit [6:4] TC0RATE[2:0]:TC0 内部时钟选择控制
000 = fcpu/256;
001 = fcpu/128;
…
110 = fcpu/4;
111 = fcpu/2。
Bit 7
’
TC0ENB:TC0 计数控制位。
0 = 禁止 TC0 定时器;
1 = 开放 TC0 定时器。
注:若 TC0CKS=1, 则 TC0 用作外部事件计数器,此时不需要考虑 TC0RATE 的设置,P0.0 口无中断信号(P0.0IRQ=0)。
SONiX TECHNOLOGY CO., LTD
Page 66
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.3.3 计数寄存器 TC0C
TC0C 控制 TC0 的时间间隔。
0DBH
TC0C
读/写
复位后
Bit 7
TC0C7
R/W
0
Bit 6
TC0C6
R/W
0
Bit 5
TC0C5
R/W
0
Bit 4
TC0C4
R/W
0
Bit 3
TC0C3
R/W
0
Bit 2
TC0C2
R/W
0
Bit 1
TC0C1
R/W
0
Bit 0
TC0C0
R/W
0
TC0C 初始值的计算公式如下:
TC0C 初始值 = N - (TC0 中断间隔时间 * 输入时钟)
N 为 TC0 二进制计数范围,TC0 共有六种工作模式:TC0 定时器、TC0 事件计数器、TC0 Fcpu 时钟源、TC0 Fosc
时钟源、PWM 模式和无 PWM 模式。各模式下参数的设定如下表所示:
TC0CKS PWM0 ALOAD0 TC0OUT N
TC0C 范围
TC0C 二进制计数范围
注释
0
1
¾
0
1
1
1
1
-
x
0
0
1
1
-
x
0
1
0
1
-
256
256
64
32
16
256
0x00~0xFF
0x00~0xFF
0x00~0x3F
0x00~0x1F
0x00~0x0F
0x00~0xFF
00000000b~11111111b
00000000b~11111111b
xx000000b~xx111111b
xxx00000b~xxx11111b
xxxx0000b~xxxx1111b
00000000b~11111111b
每计数 256 次溢出
每计数 256 次溢出
每计数 64 次溢出
每计数 32 次溢出
每计数 16 次溢出
每计数 256 次溢出
例:TC0 中断时间设为 10ms,时钟源选择 Fcpu(TC0KS = 0) ,无 PWM 输出(PWM0=0),高速时钟 = 4MHz. Fcpu
= Fosc/4,TC0RATE = 010 (Fcpu/64)。
TC0C 初始值 = N - (TC0 中断时间 * 输入时钟)
= 256 - (10ms * 4MHz / 4 / 64)
= 256 - (10-2 * 4 * 106 / 4 / 64)
= 100
= 64H
TC0RATE TC0CLOCK
000
001
010
011
100
101
110
111
Fcpu/256
Fcpu/128
Fcpu/64
Fcpu/32
Fcpu/16
Fcpu/8
Fcpu/4
Fcpu/2
TC0 中断时间对应表
高速模式 (Fcpu = 4MHz / 4)
低速模式 (Fcpu = 32768Hz / 4)
最大溢出间隔时间 单步间隔时间 = max/256 最大溢出间隔时间 单步间隔时间 = max/256
65.536 ms
256 us
8000 ms
31250 us
32.768 ms
128 us
4000 ms
15625 us
16.384 ms
64 us
2000 ms
7812.5 us
8.192 ms
32 us
1000 ms
3906.25 us
4.096 ms
16 us
500 ms
1953.125 us
2.048 ms
8 us
250 ms
976.563 us
1.024 ms
4 us
125 ms
488.281 us
0.512 ms
2 us
62.5 ms
244.141 us
SONiX TECHNOLOGY CO., LTD
Page 67
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.3.4 自动重载寄存器 TC0R
TC0 的自动重载功能由 TC0M 的 ALOAD0 位控制。当 TC0C 溢出时,TC0R 的值自动装入 TC0C 中。这样,用户在
使用的过程中就不需要在中断中重新赋值。
TC0 为双重缓存器结构。若程序对 TC0R 进行了修改,那么修改后的 TC0R 值首先被暂存在 TC0R 的第一个缓存器
中,直到 TC0 溢出后,才被真正存入 TC0R 缓存器中,从而避免 TC0 中断时间出错以及 PWM 和蜂鸣器误动作。
’
注:在 PWM 模式下,系统自动开启自动重装功能。位寄存器 ALOAD0 用于控制溢出范围。
0CDH
TC0R
读/写
复位后
Bit 7
TC0R7
W
0
Bit 6
TC0R6
W
0
Bit 5
TC0R5
W
0
Bit 4
TC0R4
W
0
Bit 3
TC0R3
W
0
Bit 2
TC0R2
W
0
Bit 1
TC0R1
W
0
Bit 0
TC0R0
W
0
TC0R 初始值计算公式如下:
TC0R 初始值 = N - (TC0 中断间隔时间 * 输入时钟)
上式中,N 为 TC0 的最大计数范围。TC0 的溢出时间有如下六种可能情况:
TC0CKS
0
1
¾
PWM0
ALOAD0
0
1
1
1
1
-
x
0
0
1
1
-
TC0OUT N
x
0
1
0
1
-
TC0R 计数范围
TC0R 二进制计数范围
0x00~0xFF
0x00~0xFF
0x00~0x3F
0x00~0x1F
0x00~0x0F
0x00~0xFF
00000000b~11111111b
00000000b~11111111b
xx000000b~xx111111b
xxx00000b~xxx11111b
xxxx0000b~xxxx1111b
00000000b~11111111b
256
256
64
32
16
256
例:TC0 中断间隔时间设置为 10ms,时钟源选 Fcpu (TC0KS = 0) ,无 PWM 输出,(PWM0 = 0),高速时钟为外
部 4MHz,Fcpu = Fosc/4,TC0RATE = 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 68
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.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.5KHz,TC0 频率 = 1KHz,TC0 时
钟源采用内部时钟 Fcpu/4,TC0RATE2~TC0RATE1 = 110, TC0C = TC0R = 131。
MOV
A,#01100000B
B0MOV
TC0M,A
; TC0 速率 Fcpu/4
MOV
B0MOV
B0MOV
A,#131
TC0C,A
TC0R,A
; 自动加载参考值设置
B0BSET
B0BSET
B0BSET
FTC0OUT
FALOAD1
FTC0ENB
; TC0 的输出信号由 P5.4 输出,禁止 P5.4 的普通 I/O 功能
; 允许 TC0 自动重载功能
; 开启 TC0 定时器
注:蜂鸣器的输出有效时,“PWM0OUT”必须被置为 0。
SONiX TECHNOLOGY CO., LTD
Page 69
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.3.6 TC0 操作举例
TC0 定时器可用于定时器中断、事件计数、TC0OUT 和 PWM。下面分别举例说明。
¾
例:停止 TC0 计数器,禁止 TC0 中断并将 TC0 中断请求标志清零。
B0BCLR
FTC0ENB
B0BCLR
FTC0IEN
B0BCLR
FTC0IRQ
¾
例:设置 TC0 的速率 (不包含事件计数模式)。
¾
¾
¾
MOV
A, #0xxx0000b
; TC0M 的 bit4~bit6 控制 TC0 速率,设置范围为
x000xxxxb~x111xxxxb
B0MOV
TC0M,A
; 禁止 TC0 中断
FTC0CKS
; 选择内部时钟
FTC0CKS
; 选择外部时钟
例:设置 TC0 的时钟源。
B0BCLR
or
B0BSET
例:TC0 自动重载模式设置。
B0BCLR
FALOAD0
or
B0BSET
FALOAD0
; 禁止 TC0 自动重载
例:TC0 中断间隔时间设置。
MOV
A,#7FH
B0MOV
TC0C,A
B0MOV
TC0R,A
; TC0 模式决定 TC0C 和 TC0R 的值
; 设置 TC0C
; 设置 TC0R
; 开放自动重载功能
B0BCLR
B0BCLR
FALOAD0
FTC0OUT
; ALOAD0, TC0OUT = 00, PWM 周期 = 0~255
B0BCLR
B0BSET
FALOAD0
FTC0OUT
; ALOAD0, TC0OUT = 01, PWM 周期 = 0~63
B0BSET
B0BCLR
FALOAD0
FTC0OUT
; ALOAD0, TC0OUT = 10, PWM 周期 = 0~31
B0BSET
B0BSET
FALOAD0
FTC0OUT
; ALOAD0, TC0OUT = 11, PWM 周期 = 0~15
FTC0IEN
; 开放 TC0 中断功能
B0BSET
FTC0OUT
; 开放 TC0OUT (蜂鸣器) 功能
B0BSET
FPWM0OUT
; 开放 PWM 功能
FTC0ENB
; 开放 TC0
or
or
or
¾
例:设置 TC0 模式。
B0BSET
or
or
¾
例:开启 TC0。
B0BSET
SONiX TECHNOLOGY CO., LTD
Page 70
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.4 PWM0
8.4.1 概述
PWM 信号输出到 PWM0OUT(P5.4 引脚),TC0OUT 和 ALOAD0 控制 PWM 输出的量程(256、64、32 和 16)。
8-bit 计数器 TC0C 计数过程中不断与 TC0R 相比较,当 TC0C 计数到两者相等时,PWM 输出低电平,当 TC0C 再次从
零开始计数时,PWM 被强制输出高电平。PWM0 输出占空比 = TC0R/计数量程(计数量程 = 256、64、32 或 16)。
参考寄存器保持输入 00H 可使 PWM 的输出长时间维持在低电平,通过修改 TC0R 可改变 PWM 输出占空比。
’ 注:TC0 为双重缓存器结构,调整 TC0R 的值可以改变 PWM 的输出占空比。用户可随时改变 TC0R 的值,但是只有在 TC0 溢出
后,这一修改值才真正被写入 TC0R 中。
ALOAD0
TC0OUT
PWM 占空比范围
TC0C 有效值
TC0R 有效值
0
0
1
1
0
1
0
1
0/256~255/256
0/64~63/64
0/32~31/32
0/16~15/16
0x00~0xFF
0x00~0x3F
0x00~0x1F
0x00~0x0F
0x00~0xFF
0x00~0x3F
0x00~0x1F
0x00~0x0F
MAX. PWM 输出频率
(Fcpu = 4MHz)
7.8125K
31.25K
62.5K
125K
注释
每计数 256 次溢出
每计数 64 次溢出
每计数 32 次溢出
每计数 16 次溢出
PWM 输出占空比随 TC0R 的变化而变化:0/256~255/256。
0
1
128
……
……
254
255
0
1
……
128
……
254
255
TC0 Clock
TC0R=00H
Low
High
TC0R=01H
TC0R=80H
TC0R=FFH
SONiX TECHNOLOGY CO., LTD
Low
High
Low
High
Low
Page 71
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.4.2 TC0IRQ 和 PWM 输出占空比
在 PWM 模式下,TC0IRQ 的频率与 PWM 的占空比有关,具体情况如下图所示:
TC0 Overflow,
TC0IRQ = 1
0xFF
TC0C Value
0x00
PWM0 Output
(Duty Range 0~255)
TC0 Overflow,
TC0IRQ = 1
0xFF
TC0C Value
0x00
PWM0 Output
(Duty Range 0~63)
TC0 Overflow,
TC0IRQ = 1
0xFF
TC0C Value
0x00
PWM0 Output
(Duty Range 0~31)
TC0 Overflow,
TC0IRQ = 1
0xFF
TC0C Value
0x00
PWM0 Output
(Duty Range 0~15)
SONiX TECHNOLOGY CO., LTD
Page 72
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.4.3 PWM 输出占空比与 TC0R 的变化
在 PWM 模式下,系统随时比较 TC0C 和 TC0R 的异同。若 TC0C<TC0R,PWM 输出高电平,反之则输出低电平。
当 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
Update New TC0R!
Old TC0R < TC0C < New TC0R
0xFF
Old TC0R
Update New TC0R!
New TC0R < TC0C < Old TC0R
New TC0R
New TC0R
Old TC0R
TC0C Value
0x00
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 73
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
8.4.4 PWM 编程举例
¾
例:PWM 输出设置。外部高速振荡器输出频率 = 4MHZ,Fcpu = Fosc/4,PWM 输出占空比 = 30/256,输出频率
1KHZ,PWM 时钟源来自外部时钟,TC0 速率 = Fcpu/4,TC0RATE2~TC0RATE1 = 110,TC0C = TC0R = 30。
MOV
A,#01100000B
B0MOV
TC0M,A
; TC0 速率=Fcpu/4
MOV
B0MOV
B0MOV
A,#30
TC0C,A
TC0R,A
; PWM 输出占空比=30/256
B0BCLR
B0BCLR
B0BSET
B0BSET
FTC0OUT
FALOAD0
FPWM0OUT
FTC0ENB
; 占空比变化范围: 0/256~255/256.
; PWM0 输出至 P5.4,禁止 P5.4 I/O 功能
’ 注:TC0R 为只写寄存器,不能用 INCMS 和 DECMS 指令对其进行操作。
¾
例:改变 TC0R 的内容。
MOV
B0MOV
INCMS
NOP
B0MOV
B0MOV
A, #30H
TC0R, A
BUF0
A, BUF0
TC0R, A
SONiX TECHNOLOGY CO., LTD
Page 74
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
9
Field
M
O
V
E
A
R
I
T
H
M
E
T
I
C
L
O
G
I
C
P
R
O
C
E
S
S
B
R
A
N
C
H
M
I
S
C
指令集
C
DC
Z
周期
MOV
MOV
B0MOV
B0MOV
MOV
B0MOV
XCH
B0XCH
MOVC
指令格式
A,M
M,A
A,M
M,A
A,I
M,I
A,M
A,M
A←M
M←A
A ← M (bank 0)
M (bank 0) ← A
A←I
M ← I。(M 仅适用于系统寄存器 R, Y, Z , RBANK, PFLAG)
A ←→M
A ←→M (bank 0)
R, A ← ROM [Y,Z]
-
-
√
√
-
1
1
1
1
1
1
1+N
1+N
2
ADC
ADC
ADD
ADD
B0ADD
ADD
SBC
SBC
SUB
SUB
SUB
A,M
M,A
A,M
M,A
M,A
A,I
A,M
M,A
A,M
M,A
A,I
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) ← M (bank 0) + A,如果产生进位则 C=1,否则 C=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
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
1
1+N
1
1+N
1+N
1
1
1+N
1
1+N
1
AND
AND
AND
OR
OR
OR
XOR
XOR
XOR
A,M
M,A
A,I
A,M
M,A
A,I
A,M
M,A
A,I
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
-
-
1
1+N
1
1
1+N
1
1
1+N
1
SWAP
SWAPM
RRC
RRCM
RLC
RLCM
CLR
BCLR
BSET
B0BCLR
B0BSET
M
M
M
M
M
M
M
M.b
M.b
M.b
M.b
A (b3~b0, b7~b4) ←M(b7~b4, b3~b0)
M(b3~b0, b7~b4) ← M(b7~b4, b3~b0)
A ← M 带进位右移
M ← M 带进位右移
A ← M 带进位左移
M ← M 带进位左移
M←0
M.b ← 0
M.b ← 1
M(bank 0).b ← 0
M(bank 0).b ← 1
√
√
√
√
-
-
√
√
√
√
√
√
√
√
√
-
CMPRS
CMPRS
INCS
INCMS
DECS
DECMS
BTS0
BTS1
B0BTS0
B0BTS1
JMP
CALL
A,I
A,M
M
M
M
M
M.b
M.b
M.b
M.b
d
d
比较, 如果相等则跳过下一条指令 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
√
√
-
-
√
√
-
1+S
1+S
1+ S
1+N+S
1+ S
1+N+S
1+S
1+S
1+S
1+S
2
2
子程序跳出指令,PC Å Stack
中断处理程序跳出指令,PC Å Stack,使能全局中断控制位
进栈指令,保存 ACC 和工作寄存器
出栈指令,恢复 ACC 和工作寄存器
空指令,无特别意义
√
-
√
-
√
-
2
2
1
1
1
RET
RETI
PUSH
POP
NOP
描述
1
1+N
1
1+N
1
1+N
1
1+N
1+N
1+N
1+N
注: 1. “M”是系统寄存器或 RAM,M 为系统寄存器时 N = 0,否则 N = 1。
2.条件跳转指令的条件为真,则 S = 1,否则 S = 0。
SONiX TECHNOLOGY CO., LTD
Page 75
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
10 电气特性
SN8P2612_13 的电气特性请参考英文版的 Datasheet。
SONiX TECHNOLOGY CO., LTD
Page 76
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
11 OTP 烧录引脚
11.1 Easy Writer 转接板烧录脚位
Easy Writer JP1/JP2
VSS 2
CE 4
OE/ShiftDat 6
D0 8
D2 10
D4 12
D6 14
VPP 16
RST 18
ALSB/PDB 20
Easy Writer JP3 (Mapping to 48-pin text tool)
1 VDD
3 CLK/PGCLK
5 PGM/OTPCLK
7 D1
9 D3
11 D5
13 D7
15 VDD
17 HLS
19 -
DIP1
1
48
DIP48
DIP2
2
47
DIP47
DIP3
3
46
DIP46
DIP4
4
45
DIP45
DIP5
5
44
DIP44
DIP6
6
43
DIP43
DIP7
7
42
DIP42
DIP8
8
41
DIP41
DIP9
9
40
DIP40
DIP10
10 39
DIP39
DIP11
11 38
DIP38
DIP12
12 37
DIP38
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 转接板
JP1 连接 MP 转接板
JP2 连接 Writer V3.0 转接板
11.2 Writer V3.0 转接板烧录脚位
GND
CE
OE
D0
D2
D4
D6
VPP
RST
2
4
6
8
10
12
14
16
18
20
1
3
5
7
9
11
13
15
17
19
VDD
CLK
PGM
D1
D3
D5
D7
VDD
HLS
Writer V3.0 JP1 引脚配置
SONiX TECHNOLOGY CO., LTD
Page 77
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
11.3 烧录引脚
Chip
EZ Writer / Writer
Writer V2.5
V3.0
Number
2
1
4
3
6
5
8
7
10
9
12
11
14
13
16
15
18
17
-
’
’
’
SN8P2610 系列的烧录信息
SN8P2613P/S/X
SN8P2612P/S
SN8P2612X
SN8P2611P/S
OTP IC / JP3 引脚配置
Name Number Name
Number
Pin
Number
Pin
Number
Pin
Number
Pin
VDD
1
VDD
15
VDD
14
VDD
15,16
VDD
4
VDD
GND
2
GND
6
VSS
5
VSS
5,6
VSS
11
VSS
CLK
3
CLK
7
P5.0
6
P5.0
7
P5.0
12
P5.0
CE
4
CE
PGM
5
PGM
18
P1.0
17
P1.0
19
P1.0
7
P1.0
OE
6
OE
8
P5.1
7
P5.1
8
P5.1
13
P5.1
D1
7
D1
D0
8
D0
D3
9
D3
D2
10
D2
D5
11
D5
D4
12
D4
D7
13
D7
D6
14
D6
VDD
15
VDD
VPP
16
VPP
5
RST
4
RST
4
RST
9
RST
HLS
17
HLS
RST
18
RST
19
20
ALSB/PDB
9,19
P5.2P1.1 8,18 P5.2,P1.1
9,20
P5.2,P1.1
14,8
P5.2,P1.1
注:使用 M2IDE V1.07 或更新的版本仿真;
注:仿真内部 16M RC 时使用 16MHz 晶振;
注:用 EZ Writer 烧录时使用 16MHz 晶振。
SONiX TECHNOLOGY CO., LTD
Page 78
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
12 封装
12.1 P-DIP 20 PIN
SYMBOLS
A
A1
A2
D
E
E1
L
eB
θ°
MIN
NOR
MAX
MIN
(inch)
0.015
0.125
0.980
0.245
0.115
0.335
0°
SONiX TECHNOLOGY CO., LTD
0.130
1.030
0.300
0.250
0.130
0.355
7°
NOR
MAX
(mm)
0.210
0.135
1.060
0.381
3.175
24.892
0.255
0.150
0.375
15°
6.223
2.921
8.509
0°
Page 79
3.302
26.162
7.620
6.350
3.302
9.017
7°
5.334
3.429
26.924
6.477
3.810
9.525
15°
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
12.2 P-DIP 18 PIN
SYMBOLS
A
A1
A2
D
E
E1
L
eB
θ°
MIN
NOR
MAX
MIN
(inch)
0.015
0.125
0.880
0.245
0.115
0.335
0°
SONiX TECHNOLOGY CO., LTD
0.130
0.900
0.300
0.250
0.130
0.355
7°
NOR
MAX
(mm)
0.210
0.135
0.920
0.381
3.175
22.352
0.255
0.150
0.375
15°
6.223
2.921
8.509
0°
Page 80
3.302
22.860
7.620
6.350
3.302
9.017
7°
5.334
3.429
23.368
6.477
3.810
9.525
15°
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
12.3 P-DIP 14 PIN
SYMBOLS
A
A1
A2
D
E
E1
L
eB
θ°
MIN
NOR
MAX
MIN
(inch)
0.015
0.125
0.735
0.245
0.115
0.335
0°
SONiX TECHNOLOGY CO., LTD
0.130
0.075
0.300
0.250
0.130
0.355
7°
NOR
MAX
(mm)
0.210
0.135
0.775
0.381
3.175
18.669
0.255
0.150
0.375
15°
6.223
2.921
8.509
0°
Page 81
3.302
1.905
7.62
6.35
3.302
9.017
7°
5.334
3.429
19.685
6.477
3.810
9.525
15°
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
12.4 SOP 20 PIN
SYMBOLS
A
A1
D
E
H
L
θ°
MIN
NOR
MAX
MIN
(inch)
0.093
0.004
0.496
0.291
0.394
0.016
0°
SONiX TECHNOLOGY CO., LTD
0.099
0.008
0.502
0.295
0.407
0.033
4°
NOR
MAX
(mm)
0.104
0.012
0.508
0.299
0.419
0.050
8°
Page 82
2.362
0.102
12.598
7.391
10.008
0.406
0°
2.502
0.203
12.751
7.493
10.325
0.838
4°
2.642
0.305
12.903
7.595
10.643
1.270
8°
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
12.5 SOP 18 PIN
SYMBOLS
A
A1
D
E
H
L
θ°
MIN
NOR
MAX
MIN
(inch)
0.093
0.004
0.447
0.291
0.394
0.016
0°
SONiX TECHNOLOGY CO., LTD
0.099
0.008
0.455
0.295
0.407
0.033
4°
NOR
MAX
(mm)
0.104
0.012
0.463
0.299
0.419
0.050
8°
Page 83
2.362
0.102
11.354
7.391
10.008
0.406
0°
2.502
0.203
11.557
7.493
10.325
0.838
4°
2.642
0.305
11.760
7.595
10.643
1.270
8°
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
12.6 SOP 14 PIN
SYMBOLS
A
A1
B
C
D
E
e
H
L
θ°
MIN
NOR
MAX
MIN
(inch)
0.058
0.004
0.013
0.0075
0.336
0.150
0.228
0.015
0°
SONiX TECHNOLOGY CO., LTD
0.064
0.016
0.008
0.341
0.154
0.050
0.236
0.025
-
NOR
MAX
(mm)
0.068
0.010
0.020
0.0098
0.344
0.157
0.244
0.050
8°
Page 84
1.4732
0.1016
0.3302
0.1905
8.5344
3.81
5.7912
0.381
0°
1.6256
0.4064
0.2032
8.6614
3.9116
1.27
5.9944
0.635
-
1.7272
0.254
0.508
0.2490
8.7376
3.9878
6.1976
1.27
8°
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
12.7 SSOP 20 PIN
SYMBOLS
A
A1
A2
b
c
D
E
E1
[e]
h
L
L1
ZD
Y
θ°
MIN
NOR
MAX
MIN
(inch)
0.053
0.004
0.008
0.007
0.337
0.228
0.150
0.010
0.016
0.039
0°
SONiX TECHNOLOGY CO., LTD
0.063
0.006
0.010
0.008
0.341
0.236
0.154
0.025
0.017
0.025
0.041
0.059
-
NOR
MAX
(mm)
0.069
0.010
0.059
0.012
0.010
0.344
0.244
0.157
1.350
0.100
0.200
0.180
8.560
5.800
3.800
0.020
0.050
0.043
0.250
0.400
1.000
0.004
8°
0°
Page 85
1.600
0.150
0.254
0.203
8.660
6.000
3.900
0.635
0.420
0.635
1.050
1.500
-
1.750
0.250
1.500
0.300
0.250
8.740
6.200
4.000
0.500
1.270
1.100
0.100
8°
Version 1.0
SN8P2610 Series
8-Bit Micro-Controller
SONiX 公司保留对以下所有产品在可靠性,功能和设计方面的改进作进一步说明的权利。SONiX 不承担由本手册所
涉及的产品或电路的运用和使用所引起的任何责任,SONiX 的产品不是专门设计来应用于外科植入、生命维持和任何
SONiX 产品的故障会对个体造成伤害甚至死亡的领域。如果将 SONiX 的产品应用于上述领域,即使这些是由 SONiX 在
产品设计和制造上的疏忽引起的,用户应赔偿所有费用、损失、合理的人身伤害或死亡所直接或间接产生的律师费用,并
且用户保证 SONiX 及其雇员、子公司、分支机构和销售商与上述事宜无关。
总公司
地址:台湾新竹县竹北市县政 5 街 32 巷 8 号 9 楼
电话:886-3-551 0520
传真:886-3-551 0523
松翰科技(深圳)有限公司
地址:深圳市南山区高新技术产业园南区 T2-B 栋 2 楼
电话:86-755-2671 9666
传真:86-755-2671 9786
台北办事处
地址:台北市松德路 171 号 15 楼之 2
电话:886-2-2759 1980
传真:886-2-2759 8180
香港办事处
地址:香港新界沙田沙田乡宁会路 138#新城市中央广场第一座 7 楼
705 室
电话:852-2723 8086
传真:852-2723 9179
技术支持
[email protected]
SONiX TECHNOLOGY CO., LTD
Page 86
Version 1.0