SONIX SN8P2808

SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
SN8P2808
用户参考手册
Version1.1
SONiX 8 位单片机
SONiX 公司保留对以下所有产品在可靠性,功能和设计方面的改进作进一步说明的权利。SONiX 不承担由本
手册所涉及的产品或电路的运用和使用所引起的任何责任,SONiX 的产品不是专门设计来应用于外科植入、生命
维持和任何 SONiX 产品的故障会对个体造成伤害甚至死亡的领域。如果将 SONiX 的产品应用于上述领域,即使这
些是由 SONiX 在产品设计和制造上的疏忽引起的,用户应赔偿所有费用、损失、合理的人身伤害或死亡所直接或
间接产生的律师费用,并且用户保证 SONiX 及其雇员、子公司、分支机构和销售商与上述事宜无关。
SONiX TECHNOLOGY CO., LTD
Page 1
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
版本
VER1.0
VER 1.1
修改记录
日期
说明
2008 年 3 月 初版。
2008 年 6 月 修改烧录信息章节内容。
1、 增加 SN8P2807Q 烧录引脚表。
2009 年 6 月
2、 修改 TC0 绿色模式唤醒功能。
SONiX TECHNOLOGY CO., LTD
Page 2
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
目录
111
222
333
444
555
修改记录 .........................................................................................................................................................................2
产品简介 .....................................................................................................................................................................6
1.1
功能特性 ............................................................................................................................................................6
1.2
系统框图 ............................................................................................................................................................7
1.3
引脚配置 ............................................................................................................................................................8
1.4
引脚说明 ..........................................................................................................................................................10
1.5
引脚电路结构图 ...............................................................................................................................................11
中央处理器(CPU) ................................................................................................................................................13
2.1
存储器 ..............................................................................................................................................................13
2.1.1 程序存储器(ROM)...................................................................................................................................13
2.1.2 编译选项表(CODE OPTION)..................................................................................................................19
2.1.3 数据存储器(RAM) ...................................................................................................................................20
2.1.4 系统寄存器 ..................................................................................................................................................21
2.1.5 LCD RAM ....................................................................................................................................................23
2.2
寻址模式 ..........................................................................................................................................................30
2.2.1 立即寻址 ......................................................................................................................................................30
2.2.2 直接寻址 ......................................................................................................................................................30
2.2.3 间接寻址 ......................................................................................................................................................30
2.3
堆栈..................................................................................................................................................................31
2.3.1 概述 .............................................................................................................................................................31
2.3.2 堆栈寄存器 ..................................................................................................................................................32
2.3.3 堆栈操作 ......................................................................................................................................................33
复位 ..........................................................................................................................................................................34
3.1
概述..................................................................................................................................................................34
3.2
上电复位 ..........................................................................................................................................................35
3.3
看门狗复位.......................................................................................................................................................35
3.4
掉电复位 ..........................................................................................................................................................36
3.4.1 概述 .............................................................................................................................................................36
3.4.2 系统工作电压...............................................................................................................................................36
3.4.3 掉电复位性能改进 .......................................................................................................................................37
3.5
外部复位 ..........................................................................................................................................................39
3.6
外部复位电路 ...................................................................................................................................................40
3.6.1 RC复位电路.................................................................................................................................................40
3.6.2 二极管及RC复位电路 ..................................................................................................................................40
3.6.3 稳压二极管复位电路....................................................................................................................................41
3.6.4 电压偏置复位电路 .......................................................................................................................................41
3.6.5 外部IC复位 ..................................................................................................................................................42
系统时钟 ...................................................................................................................................................................43
4.1
概述..................................................................................................................................................................43
4.2
时钟框图 ..........................................................................................................................................................43
4.3
寄存器 OSCM..................................................................................................................................................44
4.4
系统高速时钟 ...................................................................................................................................................45
4.4.1 外部高速时钟...............................................................................................................................................45
4.5
系统低速时钟 ...................................................................................................................................................47
4.5.1 晶体/陶瓷型 .................................................................................................................................................47
4.5.2 低速RC振荡器 .............................................................................................................................................47
4.5.3 外部时钟信号...............................................................................................................................................48
4.5.4 系统时钟测试...............................................................................................................................................48
系统工作模式............................................................................................................................................................49
5.1
概述..................................................................................................................................................................49
5.2
系统模式切换 ...................................................................................................................................................50
5.3
唤醒时间 ..........................................................................................................................................................51
5.3.1 概述 .............................................................................................................................................................51
5.3.2 唤醒时间 ......................................................................................................................................................51
SONiX TECHNOLOGY CO., LTD
Page 3
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
666
777
888
999
5.3.3 P1W唤醒控制寄存器 ...................................................................................................................................51
I/O口 .........................................................................................................................................................................52
6.1
I/O口模式 .........................................................................................................................................................52
6.2
I/O上拉电阻 .....................................................................................................................................................54
6.3
I/O口数据寄存器 ..............................................................................................................................................55
6.4
P2/LCD寄存器 .................................................................................................................................................56
中断 ..........................................................................................................................................................................57
7.1
概述..................................................................................................................................................................57
7.2
中断使能寄存器INTEN.....................................................................................................................................58
7.3
中断请求寄存器INTRQ ....................................................................................................................................59
7.4
GIE 全局中断...................................................................................................................................................59
7.5
PUSH, POP处理 ..............................................................................................................................................60
7.6
INT0(P0.0)中断 ...........................................................................................................................................61
7.7
INT1(P0.1)中断 ...........................................................................................................................................62
7.8
T0 中断 ............................................................................................................................................................63
7.9
TC0 中断..........................................................................................................................................................64
7.10
TC1 中断..........................................................................................................................................................65
7.11
ADC中断 ..........................................................................................................................................................66
7.12
多中断操作举例 ...............................................................................................................................................67
定时器.......................................................................................................................................................................67
8.1
看门狗定时器 ...................................................................................................................................................68
8.2
定时器T0..........................................................................................................................................................69
8.2.1 概述 .............................................................................................................................................................69
8.2.2 T0M模式寄存器 ...........................................................................................................................................70
8.2.3 T0C计数寄存器 ...........................................................................................................................................71
8.2.4 T0 操作流程 ................................................................................................................................................71
8.3
定时/计数器TC0...............................................................................................................................................72
8.3.1 概述 .............................................................................................................................................................72
8.3.2 TC0M模式寄存器 ........................................................................................................................................73
8.3.3 TC1X8, TC0X8, TC0GN标志 ......................................................................................................................74
8.3.4 TC0C计数寄存器.........................................................................................................................................75
8.3.5 TC0R自动装载寄存器..................................................................................................................................76
8.3.6 TC0 时钟频率输出(蜂鸣器输出)..............................................................................................................77
8.3.7 TC0 操作流程 ..............................................................................................................................................78
8.4
定时/计数器TC1...............................................................................................................................................79
8.4.1 概述 .............................................................................................................................................................79
8.4.2 TC1M模式寄存器 ........................................................................................................................................80
8.4.3 TC1X8 标志 ................................................................................................................................................80
8.4.4 TC1C计数寄存器.........................................................................................................................................81
8.4.5 TC1R自动装载寄存器..................................................................................................................................82
8.4.6 TC1 时钟频率输出(蜂鸣器输出)..............................................................................................................83
8.4.7 TC1 操作流程 ..............................................................................................................................................84
8.5
PWM0 模式......................................................................................................................................................85
8.5.1 概述 .............................................................................................................................................................85
8.5.2 TC0IRQ和PWM0 输出占空比......................................................................................................................85
8.5.3 PWM0 编程举例 ..........................................................................................................................................86
8.5.4 PWM0 占空比注意事项 ...............................................................................................................................86
8.6
PWM1 模式......................................................................................................................................................87
8.6.1 概述 .............................................................................................................................................................87
8.6.2 TC1IRQ和PWM占空比................................................................................................................................88
8.6.3 PWM编程举例 .............................................................................................................................................88
8.6.4 PWM1 占空比注意事项 ...............................................................................................................................89
4X32 LCD 驱动........................................................................................................................................................90
9.1
概述..................................................................................................................................................................90
9.2
LCD寄存器.......................................................................................................................................................91
9.3
LCD设置 ..........................................................................................................................................................92
9.4
LCD RAM分配 .................................................................................................................................................94
9.5
LCD时间及波形 ...............................................................................................................................................95
SONiX TECHNOLOGY CO., LTD
Page 4
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
111000
8+1 通道ADC............................................................................................................................................................97
10.1
概述..................................................................................................................................................................97
10.2
ADM 寄存器 ....................................................................................................................................................98
10.3
ADR寄存器 ......................................................................................................................................................98
10.4
ADB 寄存器 .....................................................................................................................................................99
10.5
P4CON 寄存器 ................................................................................................................................................99
10.6
VREFH 寄存器 ..............................................................................................................................................100
10.7
ADC 转换时间 ...............................................................................................................................................100
10.8
ADC操作实例.................................................................................................................................................101
10.9
ADC电路 ........................................................................................................................................................103
111111
指令表 ................................................................................................................................................................104
111222
电气特性.............................................................................................................................................................105
12.1
极限参数 ........................................................................................................................................................105
12.2
电气特性 ........................................................................................................................................................105
111333
开发工具.............................................................................................................................................................106
13.1
在线仿真器(ICE) .......................................................................................................................................106
13.2
OTP WRITER ................................................................................................................................................106
13.3
IDE.................................................................................................................................................................106
13.4
SN8P2808 EV KIT .........................................................................................................................................107
13.4.1
PCB说明 ...............................................................................................................................................107
13.4.2
SN8P2808 EV KIT与SN8ICE2K的连接 ................................................................................................109
13.5
OTP烧录转接板 .............................................................................................................................................110
13.5.1
SN8P2808 转接板(LQFP 64 PIN) ....................................................................................................110
13.5.2
与MPIII WRITER的连接........................................................................................................................110
13.6
OTP烧录信息.................................................................................................................................................111
13.6.1
烧录转接板信息.....................................................................................................................................111
13.6.2 SN8P2808 烧录引脚信息 ............................................................................................................................113
111444
封装 ....................................................................................................................................................................114
14.1
LQFP 64 PIN..................................................................................................................................................114
14.2
LQFP 48 PIN..................................................................................................................................................116
14.3
SSOP 48 PIN .................................................................................................................................................117
14.4
P-DIP 48 PIN .................................................................................................................................................118
111555
单片机正印命名规则...........................................................................................................................................119
15.1
概述................................................................................................................................................................119
15.2
单片机型号说明 .............................................................................................................................................119
15.3
命名举例 ........................................................................................................................................................119
15.4
日期码规则.....................................................................................................................................................120
SONiX TECHNOLOGY CO., LTD
Page 5
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
1
产品简介
1.1 功能特性
♦
存储器配置
OTP ROM 空间:6K * 16 位。
RAM 空间:256 字节。
♦
6 个中断源
4 个内部中断:T0,TC0,TC1,ADC。
2 个外部中断:INT0,INT1。
♦
4*32 / 8*28 LCD 驱动
R:1/3bias 或 1/4 bias。
♦
♦
8 层堆栈缓存器
3 个 8 位定时/计数器
T0:基本定时器。
TC0:自动装载定时/计数器/PWM0/Buzzer 输出。
TC1:自动装载定时/计数器/PWM1/Buzzer 输出。
♦
I/O 引脚配置
♦
输入输出双向端口:P0、P1、P2、P4、P5。
和 SEG 引脚共用的输入输出端口:P2。
单向输入引脚:P0.3,和 RST/VPP 引脚共用。 ♦
具有唤醒功能的端口:P0、P1 的电平变化触发。
内置上拉电阻的端口:P0、P1、P2、P4、P5。
外部中断引脚:
♦
P0.0 由 PEDGE 控制。
事件计数器输入引脚:
P0.0,TC0 事件计算器输入引脚。
P0.1,TC1 事件计算器输入引脚。
♦
8 通道 12 为 ADC,内部参考电压为 2V/3V/4V/VDD
♦
♦
3 级 LVD
系统复位,VDD 指示器。
♦
强大的指令系统
指令周期由编译选项(CODE OPTION)控制。
指令的长度为 1 个字。
绝大部分指令只需要一个周期。
指令最多需要 2 个周期。
JMP 和 CALL 指令可寻址整个 ROM 区。
查表指令 MOVC 可寻址整个 ROM 区。
)
♦
来自外部低速时钟的实时时钟(RTC)
RTC 的时间为 0.5S。
内置看门狗定时器,时钟源由内部低速 RC 振荡电路提供
(16KHz @3V,32KHz @5V)
双时钟系统
外部高速时钟:RC 模式高达 10 MHz。
外部高速时钟:晶振模式高达 16MHz。
外部低速时钟:RC/晶振模式,32KHz。
工作模式
普通模式:高、低速时钟同时工作。
低速模式:只有 32KHz 低速时钟在工作。
睡眠模式:高、低速时钟同时停止工作。
绿色模式:由 T0 周期性的唤醒。
封装形式
LQFP 48 pins。
SSOP 48 pins。
P-DIP 48 pins。
LQFP 64 pins。
特性比较表
单片机名称
ROM
RAM
定时器
堆栈
I/O
ADC
LCD
T0 TC0 TC1
PWM
封装形式
Buzzer
唤醒功能
引脚数目
SN8P2807
6K*16
256
8
Y
Y
Y
21
8
4*16/8*12
2
4
LQFP48
SN8P2808
6K*16
256
8
Y
Y
Y
21
8
4*32/8*28
2
4
LQFP64
SONiX TECHNOLOGY CO., LTD
Page 6
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
1.2 系统框图
外部低速
振荡器
PC
IR
OTP
ROM
外部高速
振荡器
低电压检测
(LVD)
内部低速
RC振荡器
看门狗定时器
时序产生器
FLAGS
PWM 0/1
BUZZER 0/1
PWM 0/1
BUZZER 0/1
ALU
12位ADC
RAM
ACC
P0
内部参考源
系统寄存器
中断控制
SONiX TECHNOLOGY CO., LTD
P2
P3
Page 7
COM0~COM3
SEG0~SEG31
4*32/8*28
LCD驱动
定时器/计数器
P1
AIN0~AIN7
P4
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
1.3 引脚配置
COM4/SEG0
COM5/SEG1
COM6/SEG2
COM7/SEG3
SEG4
SEG5
SEG6
SEG7
SEG8
SEG9
SEG10
SEG11
SEG12
SEG13
SEG14
SEG15
SN8P2808 (LQFP 64 pins)
64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49
COM3
COM2
COM1
COM0
VLCD
V4
V3
V2
V1
AVDD
AVREFH
P4.0/AIN0
P4.1/AIN1
P4.2/AIN2
P4.3/AIN3
P4.4/AIN4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
O
SN8P2808Q
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
SEG16
SEG17
SEG18
SEG19
SEG20
SEG21
SEG22
SEG23
VLCD1
SEG24/P2.0
SEG25/P2.1
SEG26/P2.2
SEG27/P2.3
SEG28/P2.4
SEG29/P2.5
SEG30/P2.6
P4.5/AIN5
P4.6/AIN6
P4.7/AIN7
VSS
LXOUT
LXIN
XOUT/P0.2
XIN
VDD
RST/VPP
P0.0/INT0
P0.1/INT1
P1.0
P5.3/BZ1/PWM1
P5.4/BZ0/PWM0
SEG31/P2.7
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
SONiX TECHNOLOGY CO., LTD
Page 8
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
P4.5/AIN5
P4.4/AIN4
P4.3/AIN3
P4.2/AIN2
P4.1/AIN1
P4.0/AIN0
AVREFH
AVDD
VLCD
COM0
COM1
COM2
SN8P2807 (LQFP48)
48 47 46 45 44 43 42 41 40 39 38 37
P4.6/AIN6
P4.7/AIN7
VSS
LXOUT
LXIN
XOUT/P0.2
XIN
VDD
RST/VPP
P0.0/INT0
P0.1/INT1
P1.0
1
2
3
4
5
6
7
8
9
10
11
12
36
35
34
33
32
31
30
29
28
27
26
25
SN8P2807Q
COM3
COM4/SEG0
COM5/SEG1
COM6/SEG2
COM7/SEG3
SEG4
SEG5
SEG6
SEG7
SEG8
SEG9
SEG10
P5.3/BZ1/PWM1
P5.4/BZ0/PWM0
SEG31/P2.7
SEG30/P2.6
SEG29/P2.5
SEG28/P2.4
SEG27/P2.3
SEG26/P2.2
SEG25/P2.1
SEG24/P2.0
VLCD1
SEG11
13 14 15 16 17 18 19 20 21 22 23 24
SN8P2807(SSOP 48/DIP 48)
P4.0/AIN0
P4.1/AIN1
P4.2/AIN2
P4.3/AIN3
P4.4/AIN4
P4.5/AIN5
P4.6/AIN6
P4.7/AIN7
VSS
LXOUT
LXIN
XOUT/P0.2
XIN
VDD
RST/VPP
P0.0/INT0
P0.1/INT1
P1.0
P5.3/BZ1/PWM1
P5.4/BZ0/PWM0
SEG31/P2.7
SEG30/P2.6
SEG29/P2.5
SEG28/P2.4
SONiX TECHNOLOGY CO., LTD
1
U
48
2
47
3
46
4
45
5
44
6
43
7
42
8
41
9
40
10
39
11
38
12
37
13
36
14
35
15
34
16
33
17
32
18
31
19
30
20
29
21
28
22
27
23
26
24
25
SN8P2807X
SN8P2807P
Page 9
AVREFH
AVDD
VLCD
COM0
COM1
COM2
COM3
COM4/SEG0
COM5/SEG1
COM6/SEG2
COM7/SEG3
SEG4
SEG5
SEG6
SEG7
SEG8
SEG9
SEG10
SEG11
VLCD1
SEG24/P2.0
SEG25/P2.1
SEG26/P2.2
SEG27/P2.3
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
1.4 引脚说明
引脚名称
类型
功能说明
VDD, VSS
VLCD
P
P
VLCD1
P
V1, V2, V3, V4
P
RST/VPP/P0.3
I, P
XIN
I
XOUT/P0.2
I/O
LXIN
LXOUT
I
O
P0[1:0]/INT[1:0]
I/O
P1.0
P2[7:0]/SEG24~SEG32
P4[7:0]
I/O
I/O
I/O
P5[3:4]
I/O
COM0~COM3
COM4/SEG0~COM7/SEG3
SEG4~SEG23
O
O
O
电源输入端。
LCD 电源输入端。
P28~35 的电源端(SEG24/P2.0~SEG31/P2.7)。
当 P28~35 作为 LCD Segment 时短接 VLCD1 和 VLCD;当 P28~35 作为普
通 I/O 引脚时短接 VLCD1 和 VDD。
VLVD 偏置电压,连接一个外部电阻以调节 VLCD 的电压。
RST:系统复位引脚,施密特触发,低电平有效,通常保持高电平。
VPP:OTP 烧录引脚。
振荡信号输入引脚。
双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。
XOUT:振荡信号输出引脚。
外部低速振荡器输入引脚(32768 的晶振模式或 RC 模式)。
外部低速振荡器输出引脚。
双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。
外部中断触发引脚(施密特触发)。
TC1/TC0 事件计数器的信号输入引脚。
内置上拉电阻,具有唤醒功能。
Segment 引脚:SEG24~32,与 P2 共用。电源来自 VLCD1。
双向输入输出引脚/内置上拉电阻/ADC 输入通道/输入模式为施密特触发。
双向输入输出引脚/内置上拉电阻/输入模式为施密特触发。
P5.4:PWM0/BZ0,P5.3:PWM1/BZ1。
LCD 驱动 COM 引脚。
LCD 驱动 COM4~7 引脚,与 SEG0~3 共用。
LCD 驱动 SEG 引脚。
SONiX TECHNOLOGY CO., LTD
Page 10
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
1.5 引脚电路结构图
P0.2:
Pull-Up
Oscillator
Code Option
PnM
PnM, PnUR
Input Bus
Pin
Output
Latch
Output Bus
Int. Osc.
P0.1:
Pull-Up
PnM
PnM, PnUR
Input Bus
Pin
Output
Latch
Output Bus
P0.3:
Ext. Reset
Code Option
Int. Bus
Pin
Int. Rst
P2:
Pull-Up
P2SEG
PnM
PnM, PnUR
Input Bus
Pin
Output
Latch
Output Bus
Int. LCD SEG
SONiX TECHNOLOGY CO., LTD
Page 11
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
P5.3/5.4:
Pull-Up
PnM
RFCENB
PnM, PnUR
Input Bus
Pin
Output
Latch
Output Bus
Int. RFC
P4:
Pull-Up
P4CON
PnM
PnM, PnUR
Input Bus
Pin
Output
Latch
GCHS
Output Bus
Int. ADC
SONiX TECHNOLOGY CO., LTD
Page 12
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2
中央处理器(CPU)
2.1 存储器
2.1.1 程序存储器(ROM)
)
ROM:6K
ROM
0000H
复位向量
0001H
.
.
0007H
0008H
0009H
.
.
000FH
0010H
0011H
.
.
.
.
.
17FCH
17FDH
17FEH
17FFH
用户复位向量
用户程序开始
通用存储区
中断向量
用户中断向量
用户程序
通用存储区
用户程序结束
系统保留
2.1.1.1 复位向量(0000H)
具有一个字长的系统复位向量(0000H)。
)
)
)
上电复位(NT0=1,NPD=0);
看门狗复位(NT0=0,NPD=0);
外部复位(NT0=1,NPD=1)。
发生上述任一种复位后,程序将从 0000H 处重新开始执行,系统寄存器也都将恢复为默认值。根据 PFLAG 寄存器中
的 NT0 和 NPD 标志位的内容可以判断系统复位方式。下面一段程序演示了如何定义 ROM 中的复位向量。
¾
例:定义复位向量。
ORG
JMP
…
0
START
ORG
10H
START:
…
…
ENDP
SONiX TECHNOLOGY CO., LTD
;
; 跳至用户程序。
; 用户程序起始地址。
; 用户程序。
; 程序结束。
Page 13
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.1.2 中断向量(0008H)
中断向量地址为 0008H。一旦有中断响应,程序计数器 PC 的当前值就会存入堆栈缓存器并跳转到 0008H 开始执行
中断服务程序。0008H 处的第一条指令必须是“JMP”或“NOP”。下面的示例程序说明了如何编写中断服务程序。
’
注:“PUSH”,“POP”指令用于存储和恢复 ACC/PFLAG,NT0、NTD 不受影响。PUSH/POP 缓存器是唯一的,且仅有一层。
¾
例:定义中断向量,中断服务程序紧随 ORG 8H 之后。
.CODE
ORG
JMP
…
ORG
PUSH
…
POP
RETI
…
0
START
8H
¾
; 中断向量。
; 保存 ACC 和 PFLAG。
; 恢复 ACC 和 PFLAG。
; 中断结束。
START:
…
JMP
…
ENDP
; 跳至用户程序。
START
; 用户程序开始。
;
; 用户程序结束。
; 程序结束。
例:定义中断向量,中断程序在用户程序之后。
.CODE
ORG
JMP
…
ORG
JMP
0
START
; 跳至用户程序。
8H
MY_IRQ
; 中断向量。
; 跳至中断程序。
ORG
10H
START:
; 用户程序开始。
…
JMP
…
START
MY_IRQ:
PUSH
…
POP
RETI
…
ENDP
’
; 用户程序结束。
; 中断程序开始。
; 保存 ACC 和 PFLAG。
; 恢复 ACC 和 PFLAG。
; 中断程序结束。
; 程序结束。
注:从上面的程序中容易得出 SONiX 的编程规则,有以下几点:
1.
地址 0000H 的“JMP”指令使程序从头开始执行;
2.
地址 0008H 是中断向量;
3.
用户的程序应该是一个循环。
SONiX TECHNOLOGY CO., LTD
Page 14
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.1.3 查表
在 SONiX 单片机中,对 ROM 区中的数据进行查找,寄存器 Y 指向所找数据地址的中间字节(bit8~bit15),寄存
器 Z 指向所找数据地址的低字节(bit0~bit7)。执行完 MOVC 指令后,所查找数据低字节内容被存入 ACC 中,而数据高
字节内容被存入 R 寄存器。
¾
例:查找 ROM 地址为“TABLE1”的值。
B0MOV
B0MOV
MOVC
Y, #TABLE1$M
Z, #TABLE1$L
INCMS
JMP
INCMS
NOP
Z
@F
Y
; 设置 TABLE1 地址高字节。
; 设置 TABLE1 地址低字节。
; 查表,R = 00H,ACC = 35H。
; 查找下一地址。
@@:
TABLE1:
MOVC
…
DW
DW
DW
…
0035H
5105H
2012H
; Z 没有溢出。
; Z 溢出(FFH Æ 00),Æ Y=Y+1
;
;
; 查表,R = 51H,ACC = 05H。
;
; 定义数据表(16 位)数据。
’
注:当寄存器 Z 溢出(从 0FFH 变为 00H)时,寄存器 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
B0MOV
MOVC
Y, #TABLE1$M
Z, #TABLE1$L
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 位)数据。
Page 15
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
下面的程序通过累加器对 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,数据为 0035H。
; 如果 BUF = 1,数据=5105H。
; 如果 BUF = 2,数据=2012H。
MOVC
TABLE1:
…
DW
DW
DW
…
0035H
5105H
2012H
SONiX TECHNOLOGY CO., LTD
; 定义数据表(16 位)数据。
Page 16
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.1.4 跳转表
跳转表能够实现多地址跳转功能。由于 PCL 和 ACC 的值相加即可得到新的 PCL,因此,可以通过对 PCL 加上不同
的 ACC 值来实现多地址跳转。ACC 值若为 n,PCL+ACC 即表示当前地址加 n,执行完当前指令后 PCL 值还会自加 1,
可参考以下范例。如果 PCL+ACC 后发生溢出,PCH 则自动加 1。由此得到的新的 PC 值再指向跳转指令列表中新的地
址。这样,用户就可以通过修改 ACC 的值轻松实现多地址的跳转。
’
注:PCH 只支持 PC 增量运算,而不支持 PC 减量运算。当 PCL+ACC 后如有进位,PCH 的值会自动加 1。PCL-ACC 后若有借
位,PCH 的值将保持不变,用户在设计应用时要加以注意。
¾
例:跳转表。
ORG
0100H
; 跳转表从 ROM 前端开始。
B0ADD
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
IF
JMP
ORG
ENDIF
ADD
ENDM
VAL
(($+1) !& 0XFF00) !!= (($+(VAL)) !& 0XFF00)
($ | 0XFF)
($ | 0XFF)
PCL, A
’
注:“VAL”为跳转表列表中列表个数。
¾
例:宏“MACRO3.H”中,“@JMP_A”的应用。
B0MOV
@JMP_A
JMP
JMP
JMP
JMP
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。
如果跳转表恰好位于 ROM BANK 边界处(00FFH~0100H),宏指令“@JMP_A”将调整跳转表到适当的位置(0100H)。
¾
例:“@JMP_A”运用举例
; 编译前
ROM 地址
00FDH
00FEH
00FFH
0100H
0101H
; 编译后
ROM 地址
0100H
0101H
0102H
0103H
0104H
B0MOV
@JMP_A
JMP
JMP
JMP
JMP
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。
B0MOV
@JMP_A
JMP
JMP
JMP
JMP
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。
SONiX TECHNOLOGY CO., LTD
Page 17
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.1.5 CHECKSUM 计算
ROM 区末端位置的几个字限制使用,进行 Checksum 计算时,用户应避免对该单元的访问。
¾
例:示例程序演示了如何对00H到用户程序结束进行Checksum计算。
MOV
B0MOV
MOV
B0MOV
CLR
CLR
A,#END_USER_CODE$L
END_ADDR1, A
A,#END_USER_CODE$M
END_ADDR2, A
Y
Z
MOVC
B0BCLR
ADD
MOV
ADC
JMP
FC
DATA1, A
A, R
DATA2, A
END_CHECK
;
; 检查 YZ 地址是否为代码的结束地址。
INCMS
JMP
JMP
Z
@B
Y_ADD_1
; 若 Z != 00H,进行下一个计算。
; 若 Z = 00H,Y+1。
MOV
CMPRS
JMP
MOV
CMPRS
JMP
JMP
A, END_ADDR1
A, Z
AAA
A, END_ADDR2
A, Y
AAA
CHECKSUM_END
INCMS
NOP
JMP
Y
;
@B
; 跳转到 Checksum 计算。
; 用户程序结束地址低位地址存入end_addr1。
; 用户程序结束地址中间地址存入end_addr2。
; 清 Y。
; 清 Z。
@@:
; 清标志位 C。
;
AAA:
END_CHECK:
; 检查 Z 地址是否为用户程序结束地址低位地址。
; 否,则进行 Checksum 计算。
; 是则检查 Y 的地址是否为用户程序结束地址中间地址。
; 否,则进行 Checksum 计算。
; 是则 Checksum 计算结束。
Y_ADD_1:
CHECKSUM_END:
…
…
END_USER_CODE:
SONiX TECHNOLOGY CO., LTD
; 程序结束。
Page 18
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
编译选项表(CODE OPTION)
2.1.2
编译选项
配置项目
RC
High_Clk
Watch_Dog
Fcpu
Reset_Pin
Security
Noise_Filter
LVD
32K X’tal
12M X’tal
4M X’tal
Always_On
Enable
Disable
Fhosc/1
Fhosc/2
Fhosc/4
Fhosc/8
Reset
P03
Enable
Disable
Enable
Disable
LVD_L
LVD_M
LVD_H
’
功能说明
外部高速时钟振荡器采用廉价的 RC 振荡电路,XOUT(P0.2)作为普通的
I/O 引脚。
外部高速时钟振荡器采用低频、低功耗的晶体/陶瓷振荡器(如 32.768KHz)。
外部高速时钟振荡器采用高频晶体/陶瓷振荡器(如 12MHz)。
外部高速时钟振荡器采用标准晶体/陶瓷振荡器(如 4MHz)。
始终开启看门狗定时器,即使在睡眠模式和绿色模式下也处于开启状态。
开启看门狗定时器,但在睡眠模式和绿色模式下关闭。
关闭看门狗定时器。
指令周期 = 1 个时钟周期,在 Fosc/1 的选项时必须关闭杂讯滤波功能。
指令周期 = 2 个时钟周期,在 Fosc/2 的选项时必须关闭杂讯滤波功能。
指令周期 = 4 个时钟周期。
指令周期 = 8 个时钟周期。
使能外部复位引脚。
P0.3 为单向输入引脚,无上拉电阻。
ROM 代码加密。
ROM 代码不加密。
开启杂讯滤波功能,Fcpu = Fosc/4~Fosc/8。
禁止杂讯滤波功能,Fcpu = Fosc/1~Fosc/8。
VDD 低于 2.0V 时,LVD 复位系统。
VDD 低于 2.0V 时,LVD 复位系统;
PFLAG 寄存器的 LVD24 位作为 2.4V 低电压监测器。
VDD 低于 2.4V 时,LVD 复位系统;
PFLAG 寄存器的 LVD36 位作为 3.6V 低电压监测器。
注:
1.
2.
3.
在干扰严重的情况下,建议开启杂讯滤波功能,并将 Watch_Dog 设置为“Always_On”;
使能“Noise_Filter”,Fcpu 被限制为 Fosc/4 和 Fosc/8;
编译选项 Fcpu 仅针对高速时钟,在低速模式下 Fcpu = Flosc/1。
SONiX TECHNOLOGY CO., LTD
Page 19
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.3 数据存储器(RAM)
)
RAM:256 字节
BANK 0
BANK 1
BANK 15
地址
000H
“
“
“
“
“
07FH
080H
“
“
“
“
“
0FFH
100H
“
“
“
17FH
F00H
“
“
“
F1FH
SONiX TECHNOLOGY CO., LTD
RAM
通用存储区
Bank0 的 080H~0FFH 是系统寄存器
区(128 字节)。
系统寄存器
Bank 0 的结束区
通用存储区
LCD RAM 区
Page 20
Bank 15 的 00H~1FH(32 字节)是
LCD RAM 寄存器。
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.4 系统寄存器
2.1.4.1 系统寄存器列表
Bank 0:
0
L
8
9
A
B
C P1W
D P0
E P0UR
F STK7L
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
H
R
Z
Y
X
PFLAG
RBANK
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
P4CON VREFH
PEDGE
ADM
ADB
ADR
-
-
-
-
P0M
-
-
-
-
-
P1M
P2M
-
P4M
P5M
-
-
INTRQ
INTEN
OSCM
LCDM
WDTR
TC0R
PCL
PCH
P1
P2
-
P4
P5
-
-
T0M
T0C
TC0M
TC0C
TC1M
TC1C
TC1R
STKP
P1UR
P2UR
-
P4UR
P5UR
@HL
-
-
-
-
-
-
-
STK7H
STK6L STK6H STK5L STK5H STK4L
@YZ
-
STK4H
STK3L
STK3H STK2L STK2H STK1L STK1H STK0L STK0H
2.1.4.2 系统寄存器说明
R
PFLAG
RBANK
TC1M
PnM
INTRQ
OSCM
TC0R
Pn
TC0M
T0C
=
=
=
=
=
=
=
=
=
=
=
工作寄存器和 ROM 查表数据缓存器
ROM 页及特殊标志寄存器
RAM bank 选择寄存器
TC1 模式寄存器
Pn 输入/输出模式控制寄存器
中断请求寄存器
振荡模式控制寄存器
TC0 自动装载数据缓存器
Pn 数据缓存器
TC0 模式寄存器
T0 计数寄存器
PnUR
= Pn 上拉电阻控制寄存器
P4CON
ADB
STK0~STK7
TC1C
=
=
=
=
P4 配置控制寄存器
ADC 数据缓存器
堆栈缓存器
TC1 计数寄存器
SONiX TECHNOLOGY CO., LTD
Y, Z
= 专用寄存器,@YZ 间接寻址寄存器,ROM 寻址寄存器
= 专用寄存器,@HL 间接寻址寄存器
= TC1 自动装载数据缓存器
H, L
TC1R
PEDGE
= P0.0 触发方向寄存器
= P1 唤醒功能寄存器
P1W
INTEN
= 中断使能寄存器
= LCD 模式寄存器
LCDM
WDTR
= 看门狗定时器清零寄存器
PCH, PCL
T0M
TC0C
STKP
ADM
ADR
@HL
@YZ
=
=
=
=
=
=
=
=
程序计数器
TC0/TC1 加速和 TC0 唤醒功能寄存器
TC0 计数寄存器
堆栈指针缓存器
ADC 模式寄存器
ADC 精度选择寄存器
间接寻址寄存器
间接寻址寄存器
Page 21
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.4.3 系统寄存器的位定义
地址
080H
081H
082H
083H
084H
085H
086H
087H
0AEH
0AFH
0B1H
0B2H
0B3H
0B8H
0BFH
0C0H
0C1H
0C2H
0C4H
0C5H
0C8H
0C9H
0CAH
0CBH
0CCH
0CDH
0CEH
0CFH
0D0H
0D1H
0D2H
0D4H
0D5H
0D8H
0D9H
0DAH
0DBH
0DCH
0DDH
0DEH
0DFH
0E0H
0E1H
0E2H
0E4H
0E5H
0E6H
0E7H
0F0H
0F1H
0F2H
0F3H
0F4H
0F5H
0F6H
0F7H
0F8H
0F9H
0FAH
0FBH
0FCH
0FDH
0FEH
0FFH
’
Bit7
LBIT7
HBIT7
RBIT7
ZBIT7
YBIT7
XBIT7
NT0
Bit6
LBIT6
HBIT6
RBIT6
ZBIT6
YBIT6
XBIT6
NPD
Bit5
LBIT5
HBIT5
RBIT5
ZBIT5
YBIT5
XBIT5
LVD36
Bit4
LBIT4
HBIT4
RBIT4
ZBIT4
YBIT4
XBIT4
LVD24
P4CON7
EVHENB
ADENB
ADB11
-
P4CON6
P4CON 5
P4CON4
RBNKS3
P4CON3
ADS
ADB10
ADCKS1
EOC
ADB9
ADLEN
GCHS
ADB8
ADCKS0
CHS3
ADB7
ADB3
P00G1
P00G0
P27M
P47M
P26M
P46M
P25M
P45M
ADCIRQ
ADCIEN
TC1IRQ
TC1IEN
TC0IRQ
TC0IEN
WDTR7
TC0R7
PC7
WDTR6
TC0R6
PC6
WDTR5
TC0R5
PC5
P27
P47
P26
P46
P25
P45
T0ENB
T0C7
TC0ENB
TC0C7
TC1ENB
TC1C7
TC1R7
GIE
T0RATE2
T0C6
TC0rate2
TC0C6
TC1rate2
TC1C6
TC1R6
T0RATE1
T0C5
TC0rate1
TC0C5
TC1rate1
TC1C5
TC1R5
P27R
P47R
P26R
P46R
P25R
P45R
@HL7
@YZ7
S7PC7
@HL6
@YZ6
S7PC6
@HL5
@YZ5
S7PC5
S6PC7
S6PC6
S6PC5
S5PC7
S5PC6
S5PC5
S4PC7
S4PC6
S4PC5
S3PC7
S3PC6
S3PC5
S2PC7
S2PC6
S2PC5
S1PC7
S1PC6
S1PC5
S0PC7
S0PC6
S0PC5
Bit1
LBIT1
HBIT1
RBIT1
ZBIT1
YBIT1
XBIT1
DC
RBNKS1
P4CON1
VHS1
CHS1
ADB5
ADB1
P01M
Bit0
LBIT0
HBIT0
RBIT0
ZBIT0
YBIT0
XBIT0
Z
RBNKS0
P4CON0
VHS0
CHS0
ADB4
ADB0
P00M
P22M
P42M
P21M
P41M
P10W
P10M
P20M
P40M
CPUM0
RCLK
WDTR3
TC0R3
PC3
PC11
P03
CLKMD
P2SEG
WDTR2
TC0R2
PC2
PC10
P02
P01IRQ
P01IEN
STPHX
BIAS
WDTR1
TC0R1
PC1
PC9
P01
P24
P44
P54
T0RATE0
T0C4
TC0rate0
TC0C4
TC1rate0
TC1C4
TC1R4
P23
P43
P53
TC1X8
T0C3
TC0CKS
TC0C3
TC1CKS
TC1C3
TC1R3
P22
P42
P21
P41
TC0X8
T0C2
ALOAD0
TC0C2
ALOAD1
TC1C2
TC1R2
STKPB2
P02R
TC0GN
T0C1
TC0OUT
TC0C1
TC1OUT
TC1C1
TC1R1
STKPB1
P01R
P24R
P44R
P54R
@HL4
@YZ4
S7PC4
S7PC12
S6PC4
S6PC12
S5PC4
S5PC12
S4PC4
S4PC12
S3PC4
S3PC12
S2PC4
S2PC12
S1PC4
S1PC12
S0PC4
S0PC12
P23R
P43R
P53R
@HL3
@YZ3
S7PC3
S7PC11
S6PC3
S6PC11
S5PC3
S5PC11
S4PC3
S4PC11
S3PC3
S3PC11
S2PC3
S2PC11
S1PC3
S1PC11
S0PC3
S0PC11
P22R
P42R
P21R
P41R
T0TB
T0C0
PWM0OUT
TC0C0
PWM1OUT
TC1C0
TC1R0
STKPB0
P00R
P10R
P20R
P40R
@HL2
@YZ2
S7PC2
S7PC10
S6PC2
S6PC10
S5PC2
S5PC10
S4PC2
S4PC10
S3PC2
S3PC10
S2PC2
S2PC10
S1PC2
S1PC10
S0PC2
S0PC10
@HL1
@YZ1
S7PC1
S7PC9
S6PC1
S6PC9
S5PC1
S5PC9
S4PC1
S4PC9
S3PC1
S3PC9
S2PC1
S2PC9
S1PC1
S1PC9
S0PC1
S0PC9
@HL0
@YZ0
S7PC0
S7PC8
S6PC0
S6PC8
S5PC0
S5PC8
S4PC0
S4PC8
S3PC0
S3PC8
S2PC0
S2PC8
S1PC0
S1PC8
S0PC0
S0PC8
P24M
P44M
P54M
T0IRQ
T0IEN
CPUM1
COMSEL
WDTR4
TC0R4
PC4
PC12
Bit3
LBIT3
HBIT3
RBIT3
ZBIT3
YBIT3
XBIT3
P23M
P43M
P53M
Bit2
LBIT2
HBIT2
RBIT2
ZBIT2
YBIT2
XBIT2
C
RBNKS2
P4CON2
CHS2
ADB6
ADB2
P02M
P00IRQ
P00IEN
LCDENB
WDTR0
TC0R0
PC0
PC8
P00
P10
P20
P40
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
W
R/W
R/W
R
R/W
R/W
R/W
W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
W
W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
W
R/W
W
W
W
W
W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
备注
L
H
R
Z
Y
X
PFLAG
RBANK
P4CON
VREFH
ADM 模式寄存器
ADB 数据缓存器
ADR 寄存器
P0M
PEDGE
P1W
P1M
P2M
P4M
P5M
INTRQ
INTEN
OSCM
LCDM
WDTR
TC0R
PCL
PCH
P0
P1
P2
P4
P5
T0M
T0C
TC0M
TC0C
TC1M
TC1C
TC1R
STKP
P0UR
P1UR
P2UR
P4UR
P5UR
@HL
@YZ
STK7L
STK7H
STK6L
STK6H
STK5L
STK5H
STK4L
STK4H
STK3L
STK3H
STK2L
STK2H
STK1L
STK1H
STK0L
STK0H
注: 1、所有寄存器名都已在 SN8ASM 编译器中做了宣告;
2、用户使用SN8ASM编译器对寄存器的位进行操作时,须在该寄存器的位前加“F”;
3、指令“b0bset”,“b0bclr”,“bset”,“bclr”只能用于可读写的寄存器(R/W)。
SONiX TECHNOLOGY CO., LTD
Page 22
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.5 LCD RAM
LCD RAM 对应于 Bank 15 中 COM 和 SEG 的各交叉点。当设置为 4 个 COM 时,LCD RAM 寄存器只存放其低半
字节(COM0~COM3);当设置为 8 个 COM 时,LCD RAM 寄存器存放所有的高低字节(COM0~COM8)。
2.1.5.1 LCD RAM 列表
Bank 15:
0
0
1
2
3
4
5
6
7
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
-
-
-
-
-
-
-
LCD RAM AREA
-
-
-
-
-
-
-
-
-
2.1.5.2 LCD RAM 的位定义
RAM bank 15 地址与 Common/Segment 位置的关系
RAM
Bit
0
1
2
3
4
5
6
7
地址
LCD
COM0
COM1
COM2
COM3
COM4
COM5
COM6
COM7
00h
01h
02h
03h
.
.
.
0Ch
0Dh
0Eh
0Fh
10h
.
.
.
1Bh
1Ch
1Dh
1Eh
1Fh
SEG0
SEG1
SEG2
SEG3
.
.
.
SEG12
SEG13
SEG14
SEG15
SEG16
.
.
.
SEG27
SEG28
SEG29
SEG30
SEG31
00h.0
01h.0
02h.0
03h.0
.
.
.
0Ch.0
0Dh.0
0Eh.0
0Fh.0
10h.0
.
.
.
1Bh.0
1Ch.0
1Dh.0
1Eh.0
1Fh.0
00h.1
01h.1
02h.1
03h.1
.
.
.
0Ch.1
0Dh.1
0Eh.1
0Fh.1
10h.1
.
.
.
1Bh.1
1Ch.1
1Dh.1
1Eh.1
1Fh.1
00h.2
01h.2
02h.2
03h.2
.
.
.
0Ch.2
0Dh.2
0Eh.2
0Fh.2
10h.2
.
.
.
1Bh.2
1Ch.2
1Dh.2
1Eh.2
1Fh.2
00h.3
01h.3
02h.3
03h.3
.
.
.
0Ch.3
0Dh.3
0Eh.3
0Fh.3
10h.3
.
.
.
1Bh.3
1Ch.3
1Dh.3
1Eh.3
1Fh.3
00h.4
01h.4
02h.4
03h.4
.
.
.
0Ch.4
0Dh.4
0Eh.4
0Fh.4
10h.4
.
.
.
1Bh.4
1Ch.4
1Dh.4
1Eh.4
1Fh.4
00h.5
01h.5
02h.5
03h.5
.
.
.
0Ch.5
0Dh.5
0Eh.5
0Fh.5
10h.5
.
.
.
1Bh.5
1Ch.5
1Dh.5
1Eh.5
1Fh.5
00h.6
01h.6
02h.6
03h.6
.
.
.
0Ch.6
0Dh.6
0Eh.6
0Fh.6
10h.6
.
.
.
1Bh.6
1Ch.6
1Dh.6
1Eh.6
1Fh.6
00h.7
01h.7
02h.7
03h.7
.
.
.
0Ch.7
0Dh.7
0Eh.7
0Fh.7
10h.7
.
.
.
1Bh.7
1Ch.7
1Dh.7
1Eh.7
1Fh.7
SONiX TECHNOLOGY CO., LTD
Page 23
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.5.3 累加器
8 位数据寄存器 ACC 用来执行 ALU 与数据存储器之间数据的传送操作。如果操作结果为零(Z)或有进位产生(C
或 DC),程序状态寄存器 PFLAG 中相应位会发生变化。
ACC 并不在 RAM 中,因此在立即寻址模式中不能用“B0MOV”指令对其进行读写。
¾
例:读/写 ACC。
; 数据写入 ACC。
MOV
A, #0FH
; 读取 ACC 中的数据并存入 BUF。
MOV
B0MOV
BUF, A
BUF, A
; BUF 中的数据写入 ACC。
MOV
B0MOV
A, BUF
A, BUF
系统执行中断操作时,ACC 和 PFLAG 中的数据不会自动存储,用户需通过程序将中断入口处的 ACC 和 PFLAG 中
的数据送入存储器进行保存。可通过“PUSH”和“POP”指令对 ACC 和 PFLAG 等系统寄存器进行存储及恢复。
¾
例:ACC 和工作寄存器中断保护操作。
INT_SERVICE:
PUSH
…
…
POP
; 保存 PFLAG 和 ACC。
.
RETI
SONiX TECHNOLOGY CO., LTD
; 恢复 ACC 和 PFLAG。
; 退出中断。
Page 24
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.5.4 程序状态寄存器 PFLAG
寄存器 PFLAG 中包含 ALU 运算状态信息、系统复位状态信息和 LVD 检测信息,其中,位 NT0 和 NPD 显示系统复
位状态信息,包括上电复位、LVD 复位、外部复位和看门狗复位;位 C、DC 和 Z 显示 ALU 的运算信息。位 LVD24 和
LVD36 显示了单片机供电电压状况。
086H
PFLAG
读/写
复位后
Bit [7:6]
Bit 7
NT0
R/W
X
Bit 6
NPD
R/W
X
Bit 5
LVD36
R
0
Bit 4
LVD24
R
0
Bit 3
-
Bit 2
C
R/W
0
NPD
0
1
0
1
复位状态
看门狗复位
保留
LVD 复位
外部复位
Bit 5
LVD36:3.6V LVD 工作电压标志, LVD 编译选项为 LVD_H 时有效。
0 =系统工作电压 VDD 超过 3.6V,低电压检测器没有工作;
1 =系统工作电压 VDD 低于 3.6V,说明此时低电压检测器已处于监控状态。
Bit 4
LVD24:2.4V LVD 工作电压标志,LVD 编译选项为 LVD_M 时有效。
0 =系统工作电压 VDD 超过 2.4V,低电压检测器没有工作;
1 =系统工作电压 VDD 低于 2.4V,说明此时低电压检测器已处于监控状态。
C:进位标志。
1 = 加法运算后有进位、减法运算没有借位发生或移位后移出逻辑“1”或比较运算的结果 ≥ 0;
0 = 加法运算后没有进位、减法运算有借位发生或移位后移出逻辑“0”或比较运算的结果 < 0。
Bit 1
DC:辅助进位标志。
1 = 加法运算时低四位有进位,或减法运算后没有向高四位借位;
0 = 加法运算时低四位没有进位,或减法运算后有向高四位借位。
Bit 0
Z:零标志。
1 = 算术/逻辑/分支运算的结果为零;
0 = 算术/逻辑/分支运算的结果非零。
’
Bit 0
Z
R/W
0
NT0, NPD:复位状态标志。
NT0
0
0
1
1
Bit 2
Bit 1
DC
R/W
0
注:关于标志位 C、DC 和 Z 的更多信息请参阅指令集相关内容。
SONiX TECHNOLOGY CO., LTD
Page 25
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.5.5 程序计数器
程序计数器 PC 是一个 13 位二进制程序地址寄存器,分高 5 位和低 8 位。专门用来存放下一条需要执行指令的内存
地址。通常,程序计数器会随程序中指令的执行自动增加。
若程序执行 CALL 和 JMP 指令时,PC 指向特定的地址。
PC
复位后
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9
PC12 PC11 PC10 PC9
0
0
0
0
PCH
)
Bit 8
PC8
0
Bit 7
PC7
0
Bit 6
PC6
0
Bit 5
PC5
0
Bit 4 Bit 3
PC4 PC3
0
0
PCL
Bit 2
PC2
0
Bit 1
PC1
0
Bit 0
PC0
0
单地址跳转
在 SONiX 单片机里面,有 9 条指令(CMPRS、INCS、INCMS、DECS、DECMS、BTS0、BTS1、B0BTS0 和 B0BTS1)
可完成单地址跳转功能。如果这些指令执行结果为真,那么 PC 值加 2 以跳过下一条指令。
如果位测试为真,PC 加 2。
FC
C0STEP
; 若 Carry_flag = 1 则跳过下一条指令。
; 否则执行 C0STEP。
C0STEP:
B0BTS1
JMP
…
…
NOP
A, BUF0
FZ
C1STEP
; BUF0 送入 ACC。
; Zero flag = 0 则跳过下一条指令。
; 否则执行 C1STEP。
C1STEP:
B0MOV
B0BTS0
JMP
…
…
NOP
如果 ACC 等于指定的立即数则 PC 值加 2,跳过下一条指令。
C0STEP:
CMPRS
JMP
…
…
NOP
A, #12H
C0STEP
; 若 ACC = 12H,则跳过下一条指令。
; 否则跳至 C0STEP。
执行加 1 指令后,结果为零时,PC 的值加 2,跳过下一条指令。
INCS:
C0STEP:
INCS
JMP
…
NOP
BUF0
C0STEP
INCMS
JMP
…
NOP
BUF0
C0STEP
INCMS:
C0STEP:
执行减 1 指令后,结果为零时,PC 的值加 2,跳过下一条指令。
DECS:
C0STEP:
DECS
JMP
…
NOP
BUF0
C0STEP
DECMS
JMP
…
NOP
BUF0
C0STEP
DECMS:
C0STEP:
SONiX TECHNOLOGY CO., LTD
Page 26
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
)
多地址跳转
执行 JMP 或 ADD M,A(M=PCL)指令可实现多地址跳转。执行 ADD M, A、ADC M, A 或 B0ADD M, A 后,若 PCL
溢出,PCH 会自动进位。对于跳转表及其它应用,用户可以通过上述 3 条指令计算 PC 的值而无需担心 PCL 溢出的问题。
’
注:PCH 仅支持 PC 的递增运算而不支持递减运算。当 PCL+ACC 执行完 PCL 有进位时,PCH 会自动加 1;但执行 PCL-ACC
有借位发生,PCH 的值会保持不变。
¾
例:PC = 0323H(PCH = 03H,PCL = 23H)。
; PC = 0323H
MOV
B0MOV
…
A, #28H
PCL, A
; 跳到地址 0328H。
MOV
B0MOV
…
A, #00H
PCL, A
; 跳到地址 0300H。
; PC = 0328H
¾
例: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 27
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.5.6 H,L 寄存器
寄存器 H 和 L 都是 8 位缓存器,主要有以下两个功能:
z
z
¾
通用工作寄存器;
RAM 数据寻址指针@HL。
081H
H
读/写
复位后
Bit 7
HBIT7
R/W
X
Bit 6
HBIT6
R/W
X
Bit 5
HBIT5
R/W
X
Bit 4
HBIT4
R/W
X
Bit 3
HBIT3
R/W
X
Bit 2
HBIT2
R/W
X
Bit 1
HBIT1
R/W
X
Bit 0
HBIT0
R/W
X
080H
L
读/写
复位后
Bit 7
LBIT7
R/W
X
Bit 6
LBIT6
R/W
X
Bit 5
LBIT5
R/W
X
Bit 4
LBIT4
R/W
X
Bit 3
LBIT3
R/W
X
Bit 2
LBIT2
R/W
X
Bit 1
LBIT1
R/W
X
Bit 0
LBIT0
R/W
X
Bit 1
XBIT1
R/W
0
Bit 0
XBIT0
R/W
0
例:用 H、L 作为数据指针,访问 bank0 中 020H 处的内容。
B0MOV
B0MOV
B0MOV
¾
H, #00H
L, #20H
A, @HL
例:对 bank 0 中的数据进行清零处理。
CLR
B0MOV
H
L, #7FH
; H = 0,指向 bank 0。
; L = 7FH。
CLR
DECMS
JMP
@HL
L
CLR_HL_BUF
; @HL 清零。
; L – 1,如果 L = 0,程序结束。
CLR
@HL
CLR_HL_BUF:
END_CLR:
…
…
2.1.5.7 X 寄存器
z
z
8 位缓存器 X 寄存器主要有以下两个功能:
通用工作寄存器;
查表时为 ROM 的数据指针。
085H
X
读/写
复位后
’
Bit 7
XBIT7
R/W
0
Bit 6
XBIT6
R/W
0
Bit 5
XBIT5
R/W
0
Bit 4
XBIT4
R/W
0
Bit 3
XBIT3
R/W
0
Bit 2
XBIT2
R/W
0
注:关于 X 寄存器的查表应用请参阅“查表”章节。
SONiX TECHNOLOGY CO., LTD
Page 28
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.5.8 Y,Z 寄存器
z
z
z
¾
寄存器 Y 和 Z 都是 8 位缓存器,主要用途如下:
普通工作寄存器;
RAM 数据寻址指针@YZ;
配合指令 MOVC 对 ROM 数据进行查表。
084H
Y
读/写
复位后
Bit 7
YBIT7
R/W
X
Bit 6
YBIT6
R/W
X
Bit 5
YBIT5
R/W
X
Bit 4
YBIT4
R/W
X
Bit 3
YBIT3
R/W
X
Bit 2
YBIT2
R/W
X
Bit 1
YBIT1
R/W
X
Bit 0
YBIT0
R/W
X
083H
Z
读/写
复位后
Bit 7
ZBIT7
R/W
X
Bit 6
ZBIT6
R/W
X
Bit 5
ZBIT5
R/W
X
Bit 4
ZBIT4
R/W
X
Bit 3
ZBIT3
R/W
X
Bit 2
ZBIT2
R/W
X
Bit 1
ZBIT1
R/W
X
Bit 0
ZBIT0
R/W
X
例:用 Y、Z 作为数据指针,访问 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, #7FH
; 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.5.9 R 寄存器
8 位缓存器 R 主要有以下两个功能:
z
作为工作寄存器使用;
z
存储执行查表指令后的高字节数据。(执行 MOVC 指令,指定 ROM 单元的高字节数据会被存入 R 寄存器而低
字节数据则存入 ACC。)
082H
R
读/写
复位后
Bit 7
RBIT7
R/W
X
Bit 6
RBIT6
R/W
X
SONiX TECHNOLOGY CO., LTD
Bit 5
RBIT5
R/W
X
Bit 4
RBIT4
R/W
X
Bit 3
RBIT3
R/W
X
Page 29
Bit 2
RBIT2
R/W
X
Bit 1
RBIT1
R/W
X
Bit 0
RBIT0
R/W
X
Version 1.0
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.2 寻址模式
2.2.1
立即寻址
将立即数直接送入 ACC 或指定的 RAM 单元。
¾
例:立即数 12H 送入 ACC。
MOV
¾
例:立即数 12H 送入寄存器 R。
B0MOV
’
A, #12H
R, #12H
注:立即寻址模式中,指定的 RAM 单元必须是 80H~87H 的工作寄存器。
2.2.2
直接寻址
通过 ACC 对 RAM 单元数据进行操作。
¾
例:地址 12H 处的内容送入 ACC。
B0MOV
¾
A, 12H
例:ACC 中数据写入 RAM 中 12H 单元。
B0MOV
2.2.3
12H, A
间接寻址
通过数据指针(H/L、Y/Z)对数据存储单元进行读写。
¾
例:通过指针@HL 间接寻址。
B0MOV
B0MOV
B0MOV
¾
H, #0
L, #12H
A, @HL
; 清“H”以寻址 RAM bank 0。
; 设定寄存器地址。
Y, #0
Z, #12H
A, @YZ
; 清“Y”以寻址 RAM bank 0。
; 设定寄存器地址。
例:通过指针@YZ 间接寻址。
B0MOV
B0MOV
B0MOV
SONiX TECHNOLOGY CO., LTD
Page 30
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.3 堆栈
2.3.1 概述
SN8P2800 系列的堆栈缓存器共 8 层,程序进入中断或执行 CALL 指令时,用于存储程序计数器 PC 的值。寄存器
STKP 为堆栈指针,指向堆栈缓存器顶层,STKnH 和 STKnL 分别是各堆栈缓存器高、低字节。
RET /
RETI
STKP + 1
CALL /
中断
STKP - 1
PCH
PCL
堆栈层数
堆栈缓存器高
字节
堆栈缓存器低
字节
STKP = 7
STK7H
STK7L
STKP = 6
STK6H
STK6L
STKP = 5
STK5H
STKP
SONiX TECHNOLOGY CO., LTD
STK5L
STKP
STKP = 4
STK4H
STK4L
STKP = 3
STK3H
STK3L
STKP = 2
STK2H
STK2L
STKP = 1
STK1H
STK1L
STKP = 0
STK0H
STK0L
Page 31
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.3.2 堆栈寄存器
堆栈指针 STKP 是一个 3 位寄存器,存放被访问的堆栈单元地址,13 位数据存储器 STKnH 和 STKnL 用于暂存堆栈
数据。以上寄存器都位于 bank 0。
使用入栈指令 PUSH 和出栈指令 POP 可对堆栈缓存器进行操作。堆栈操作遵循后进先出(LIFO)的原则,入栈时堆
栈指针 STKP 的值减 1,出栈时 STKP 的值加 1,这样,STKP 总是指向堆栈缓存器顶层单元。
系统进入中断或执行 CALL 指令之前,程序计数器 PC 的值被存入堆栈缓存器中进行入栈保护
0DFH
STKP
读/写
复位后
Bit 7
GIE
R/W
0
Bit 6
-
Bit 5
-
Bit[2:0]
STKPBn:堆栈指针(n = 0 ~ 2)。
Bit 7
GIE:全局中断控制位。
0 = 禁止;
1 = 使能。
¾
Bit 4
-
Bit 3
-
Bit 2
STKPB2
R/W
1
Bit 1
STKPB1
R/W
1
Bit 0
STKPB0
R/W
1
例:系统复位时,堆栈指针寄存器内容为默认值,但强烈建议在程序初始部分重新设定,如下面所示:
MOV
B0MOV
A, #00000111B
STKP, A
0F0H~0FFH
STKnH
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
SnPC12
R/W
0
Bit 3
SnPC11
R/W
0
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 = 7 ~ 0)。
SONiX TECHNOLOGY CO., LTD
Page 32
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.3.3 堆栈操作
执行程序调用指令 CALL 和响应中断服务时,堆栈指针 STKP 的值减 1,指针指向下一个堆栈缓存器。同时,对程序
计数器 PC 的内容进行入栈保存。
堆栈层数
0
1
2
3
4
5
6
7
8
>8
STKPB2
1
1
1
1
0
0
0
0
1
1
STKP
STKPB1
1
1
0
0
1
1
0
0
1
1
STKPB0
1
0
1
0
1
0
1
0
1
0
堆栈缓存器
高字节
低字节
Free
Free
STK0H
STK0L
STK1H
STK1L
STK2H
STK2L
STK3H
STK3L
STK4H
STK4L
STK5H
STK5L
STK6H
STK6L
STK7H
STK7L
-
说明
堆栈溢出,错误
对应每个入栈操作,都有一个出栈操作来恢复程序计数器PC的值。RETI指令用于中断服务程序中,RET用于子程序
调用。出栈时,STKP加1并指向下一个空闲堆栈缓存器。堆栈恢复操作如下表所示:
堆栈层数
8
7
6
5
4
3
2
1
0
STKPB2
1
0
0
0
0
1
1
1
1
STKP
STKPB1
1
0
0
1
1
0
0
1
1
SONiX TECHNOLOGY CO., LTD
STKPB0
1
0
1
0
1
0
1
0
1
堆栈缓存器
高字节
低字节
STK7H
STK7L
STK6H
STK6L
STK5H
STK5L
STK4H
STK4L
STK3H
STK3L
STK2H
STK2L
STK1H
STK1L
STK0H
STK0L
Free
Free
Page 33
说明
-
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
3
复位
3.1 概述
SN8P2808 有以下几种复位方式:
z
上电复位;
z
看门狗复位;
z
掉电复位;
z
外部复位(仅在外部复位引脚处于使能状态)。
上述任一种复位发生时,所有的系统寄存器恢复默认状态,程序停止运行,同时程序计数器 PC 清零。复位结束后,
系统从向量 0000H 处重新开始运行。PFLAG 寄存器的 NT0 和 NPD 两个标志位能够给出系统复位状态的信息。用户可以
编程控制 NT0 和 NPD,从而控制系统的运行路径。
086H
PFLAG
读/写
复位后
Bit 7
NT0
R/W
X
Bit [7:6]
NT0
0
0
1
1
Bit 6
NPD
R/W
X
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
NT0, NPD:复位状态标志。
NPD
0
1
0
1
复位情况
看门狗复位
保留
上电及 LVD 复位
外部复位
说明
看门狗溢出
电源电压低于 LVD 检测值
外部复位引脚检测到低电平
任何一种复位情况都需要一定的响应时间,系统提供完善的复位流程以保证复位动作的顺利进行。对于不同类型的振
荡器,完成复位所需要的时间也不同。因此,VDD 的上升速度和不同晶振的起振时间都不固定。RC 振荡器的起振时间最
短,晶体振荡器的起振时间则较长。在用户终端使用的过程中,应注意考虑主机对上电复位时间的要求。
VDD
上电
低电压检测
VSS
VDD
外部复位
VSS
外部复位高电压检测
外部复位低电压检测
看门狗溢出
看门狗定时器正常工作
看门狗复位
看门狗定时器停止计时
系统正常运行
系统状态
系统停止工作
上电延时
SONiX TECHNOLOGY CO., LTD
外部复位延迟时间
Page 34
看门狗复位延迟时间
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
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 35
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
3.4 掉电复位
3.4.1 概述
掉电复位针对外部因素引起的系统电压跌落情形(例如,干扰或外部负载的变化),掉电复位可能会引起系统工作状
态不正常或程序执行错误。
VDD
系统正常工作区域
V1
V2
系统工作出错区域
V3
LVD检测电压
掉电复位示意图
电压跌落可能会进入系统死区。系统死区意味着电源不能满足系统的最小工作电压要求。上图是一个典型的掉电复位
示意图。图中,VDD 受到严重的干扰,电压值降的非常低。虚线以上区域系统正常工作,在虚线以下的区域内,系统进
入未知的工作状态,这个区域称作死区。当 VDD 跌至 V1 时,系统仍处于正常状态;当 VDD 跌至 V2 和 V3 时,系统进
入死区,则容易导致出错。以下情况系统可能进入死区:
DC 运用中:
DC 运用中一般都采用电池供电,当电池电压过低或单片机驱动负载时,系统电压可能跌落并进入死区。这时,电源
不会进一步下降到 LVD 检测电压,因此系统维持在死区。
AC 运用中:
系统采用 AC 供电时,DC 电压值受 AC 电源中的噪声影响。当外部负载过高,如驱动马达时,负载动作产生的干扰
也影响到 DC 电源。VDD 若由于受到干扰而跌落至最低工作电压以下时,则系统将有可能进入不稳定工作状态。
在 AC 运用中,系统上、下电时间都较长。其中,上电时序保护使得系统正常上电,但下电过程却和 DC 运用中情形
类似,AC 电源关断后,VDD 电压在缓慢下降的过程中易进入死区。
3.4.2 系统工作电压
为了改善系统掉电复位的性能,首先必须明确系统具有的最低工作电压值。系统最低工作电压与系统执行速度有关,
不同的执行速度下最低工作电压值也不同。
系统最低
工作电压值
工作电压
(Vdd) (V)
系统正常工作
电压区域
死区
系统复位电压
复位区域
系统执行速度 (Fcpu)
系统工作电压与执行速度关系图
如上图所示,系统正常工作电压区域一般高于系统复位电压,同时复位电压由低电压检测(LVD)电平决定。当系统
执行速度提高时,系统最低工作电压也相应提高,但由于系统复位电压是固定的,因此在系统最低工作电压与系统复位电
压之间就会出现一个电压区域,系统不能正常工作,也不会复位,这个区域即为死区。
SONiX TECHNOLOGY CO., LTD
Page 36
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
3.4.3 掉电复位性能改进
如何改善系统掉电复位性能,有以下几点建议:
z
LVD 复位;
z
看门狗复位;
z
降低系统工作速度;
z
采用外部复位电路(稳压二极管复位电路,电压偏移复位电路,外部 IC 复位)。
’
注:“稳压二极管复位电路”、“电压偏移复位电路”和“外部 IC 复位”能够完全避免掉电复位出错。
LVD 复位:
VDD
上电
低电压检测
VSS
电压低于低电压检测点
系统复位
系统正常运行
系统状态
系统停止工作
上电延迟
低电压检测(LVD)是 SONiX 8 位单片机内置的掉电复位保护装置,当 VDD 跌落并低于 LVD 检测电压值时,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
X
Bit 6
NPD
R/W
X
Bit 5
LVD36
R
0
Bit 4
LVD24
R
0
Bit 3
-
Bit 2
C
R/W
0
Bit 5
LVD36:3.6V LVD 工作电压标志, LVD 编译选项为 LVD_H 时有效。
0 =系统工作电压 VDD 超过 3.6V,低电压检测器没有工作;
1 =系统工作电压 VDD 低于 3.6V,说明此时低电压检测器已处于监控状态。
Bit 4
LVD24:2.4V LVD 工作电压标志,LVD 编译选项为 LVD_M 时有效。
0 =系统工作电压 VDD 超过 2.4V,低电压检测器没有工作;
1 =系统工作电压 VDD 低于 2.4V,说明此时低电压检测器已处于监控状态。
SONiX TECHNOLOGY CO., LTD
Page 37
Bit 1
DC
R/W
0
Bit 0
Z
R/W
0
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
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 标志位无意义。
LVD_H
如果 VDD < 2.4V,系统复位;
LVD36:如果 VDD > 3.6V,LVD36=0;如果 VDD <= 3.6V,LVD36=1;
LVD24 标志位无意义。
’
注:
a)LVD 复位结束后,LVD24 和 LVD36 都将被清零;
b)LVD 2.4V 和 LVD3.6V 检测电平值仅作为设计参考,不能用作芯片工作电压值的精确检测。
看门狗复位:
看门狗定时器用于保证系统正常工作。通常,会在主程序中将看门狗定时器清零,但不要在多个分支程序中清看门狗。
若程序正常运行,看门狗不会复位。当系统进入死区或程序运行出错的时候,看门狗定时器继续计数直至溢出,系统复位。
如果看门狗复位后电源仍处于死区,则系统复位失败,保持复位状态,直到系统工作状态恢复到正常值。
降低系统工作速度:
系统工作速度越快最低工作电压值越高,从而加大工作死区的范围,因此降低系统工作速度不失为降低系统进入死区
几率的有效措施。所以,可选择合适的工作速度以避免系统进入死区,这个方法需要调整整个程序使其满足系统要求。
附加外部复位电路:
外部复位也能够完全改善掉电复位性能。有三种外部复位方式可改善掉电复位性能:稳压二极管复位电路,电压偏移
复位电路和外部 IC 复位。它们都采用外部复位信号控制单片机可靠复位。
SONiX TECHNOLOGY CO., LTD
Page 38
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
3.5 外部复位
外部复位功能由编译选项“Reset_Pin”控制。将该编译选项置为“Reset”,可使能外部复位功能。外部复位引脚为
施密特触发结构,低电平有效。复位引脚处于高电平时,系统正常运行。当复位引脚输入低电平信号时,系统复位。外部
复位操作在上电和正常工作模式时有效。需要注意的是,在系统上电完成后,外部复位引脚必须输入高电平,否则系统将
一直保持在复位状态。外部复位的时序如下:
z
z
z
z
外部复位(当且仅当外部复位引脚为使能状态):系统检测复位引脚的状态,如果复位引脚不为高电平,则系统会
一直保持在复位状态,直到外部复位结束;
系统初始化:初始化所有的系统寄存器;
振荡器开始工作:振荡器开始提供系统时钟;
执行程序:上电结束,程序开始运行。
外部复位可以在上电过程中使系统复位。良好的外部复位电路可以保护系统以免进入未知的工作状态,如 AC 应用中的
掉电复位等。
SONiX TECHNOLOGY CO., LTD
Page 39
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
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 40
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
3.6.3 稳压二极管复位电路
VDD
R1
33K ohm
R2
E
B
10K ohm
Vz
Q1
C
RST
MCU
R3
40K ohm
VSS
VCC
GND
稳压二极管复位电路是一种简单的 LVD 电路,基本上可以完全解决掉电复位问题。如上图电路中,利用稳压管的击
穿电压作为电路复位检测值,当 VDD 高于“Vz + 0.7V”时,三极管集电极输出高电平,单片机正常工作;当 VDD 低于
“Vz + 0.7V”时,三极管集电极输出低电平,单片机复位。稳压管规格不同则电路复位检测值不同,根据电路的要求选
择合适的二极管。
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 输出高电平,单片机正常工作;VDD 低于“0.7V x (R1 + R2) / R1”时,集电极 C 输出低电平,
单片机复位。
对于不同应用需求,选择适当的分压电阻。单片机复位引脚上电压的变化与 VDD 电压变化之间的差值为 0.7V。如果
VDD 跌落并低于复位引脚复位检测值,那么系统将被复位。如果希望提升电路复位电平,可将分压电阻设置为 R2>R1,
并选择 VDD 与集电极之间的结电压高于 0.7V。分压电阻 R1 和 R2 在电路中要耗电,此处的功耗必须计入整个系统的功
耗中。
’
注:在电源不稳定或掉电复位的情况下,“稳压二极管复位电路”和“偏压复位电路”能够保护电路在电压跌落时避免系统出错。当
电压跌落至低于复位检测值时,系统将被复位。从而保证系统正常工作。
SONiX TECHNOLOGY CO., LTD
Page 41
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
3.6.5 外部 IC 复位
VDD
VDD
B ypass
C a p a c ito r
0 .1 u F
R eset
IC
RST
RST
MCU
VSS
VSS
VCC
GND
外部复位也可以选用 IC 进行外部复位,但是这样一来系统成本将会增加。针对不用的应用要求选择适当的复位 IC,
如上图所示外部 IC 复位电路,能够有效的降低电源变化对系统的影响。
SONiX TECHNOLOGY CO., LTD
Page 42
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
4
系统时钟
4.1 概述
SN8P2808 内带双时钟系统:高速时钟信号由外部晶振电路提供,低速时钟信号由外部 32768Hz 振荡电路提供。高
速和低速时钟均可作为系统时钟。系统工作在低速模式下时,指令周期 Fcpu = Flosc(32768Hz)。
)
普通模式 (高速时钟):Fcpu = Fhosc / N,N = 1 ~ 8,N 值由 Fcpu 编译选项确定。
)
低速模式 (低速时钟):Fcpu = Flosc/1。
SONiX 内置杂讯滤波器在干扰严重的情况下能够有效的隔离干扰,保证系统正常运行。
4.2 时钟框图
STPHX
XIN
XOUT
HOSC
CLKMD
Fcpu Code Option
Fosc
Fhosc.
Fcpu = Fhosc/1 ~ Fhosc/8
Fcpu
Fosc
CPUM[1:0]
LXIN
LXOUT
z
z
z
z
z
Flosc.
Fcpu = Flosc/1
HOSC:High_Clk 编译选项。
Fhosc:外部高速时钟频率。
Flosc:外部 32768Hz 低速时钟频率。
Fosc:系统时钟频率。
Fcpu:指令执行频率。
SONiX TECHNOLOGY CO., LTD
Page 43
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
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 = 系统保留。
¾
Bit 2
CLKMD
R/W
0
Bit 1
STPHX
R/W
0
Bit 0
0
-
例:关闭高速振荡器。
B0BSET
¾
Bit 3
CPUM0
R/W
0
FSTPHX
例:系统进入睡眠模式时,停止各时钟源。
B0BSET
FCPUM0
SONiX TECHNOLOGY CO., LTD
Page 44
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
4.4 系统高速时钟
系统高速时钟信号由外部高速振荡器产生,由编译选项“High_Clk”控制。
High_Clk
说明
RC
外部 RC 振荡器为系统高速时钟, XOUT 引脚为通用 I/O 口。
32K
外部 32768Hz 低速振荡器为系统高速时钟。
12M
外部高速振荡器作为系统高速时钟,典型频率为 12MHz。
4M
外部振荡器作为系统高速时钟,典型频率为 4MHz。
4.4.1 外部高速时钟
外部高速时钟共有三种可选模式(晶体/陶瓷振荡器、RC 振荡器和外部时钟信号),由编译选项 High_Clk 控制。其中,
晶体/陶瓷振荡器和 RC 型振荡器的上升时间各不相同,RC 振荡器的上升时间相对较短。振荡器上升时间与复位时间的长
短密切相关。
4MHz Crystal
RC
32768Hz Crystal
4MHz Ceramic
4.4.1.1 晶体/陶瓷振荡器
晶体/陶瓷振荡器由引脚 XIN 和 XOUT 驱动,对应于不同工作模式下的振荡频率,驱动电流各不相同。编译选项 High_Clk
支持的工作频率有:12MHz,4MHz 和 32768HZ。
XIN
CRYSTAL
C
20pF
XOUT
MCU
C
VDD
20pF
VSS
VCC
GND
’
注:晶体/陶瓷和电容 C 与单片机引脚 XIN/XOUT/VSS 之间的距离越近越好。
SONiX TECHNOLOGY CO., LTD
Page 45
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
4.4.1.2 RC 振荡器
通过编译选项 High_Clk 的设置可控制 RC 振荡器的选择,RC 振荡器输出频率最高可达 10MHZ。改变 R 可改变输出
频率的大小,电容 C 的最佳容量为 50P~100P,引脚 XOUT 为通用 I/O 口,如下图所示:
XOUT
XIN
C
R
MCU
VDD
VSS
VCC
GND
’
注:电容 C 和电阻 R 应尽可能的接近单片机的 VDD。
4.4.1.3 外部时钟信号
单片机可选择外部时钟信号作为系统时钟,此时编译选项 High_Clk 应设为 RC,其外部时钟信号由 XIN 脚送入,XOUT
用作通用 I/O 口。
External Clock Input
XIN
XOUT
MCU
VSS
VDD
VCC
GND
’
注:外部振荡电路的 GND 必须尽量靠近单片机 VSS 端。
SONiX TECHNOLOGY CO., LTD
Page 46
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
4.5 系统低速时钟
系统低速时钟源为外部低速振荡器,同样具有三种可选模式:陶瓷/晶体振荡器、RC 振荡器和外部信号源。具体工作
模式由寄存器 LCDM 中的 RCLK 位控制,外部低速时钟源支持系统低速时钟和 LCD 扫描时钟信号源。
4.5.1 晶体/陶瓷型
晶体/陶瓷振荡器由 LXIN 和 LXOUT 驱动,信号频率 32768Hz。
LXIN
MCU
32768Hz LXOUT
C
10pF
C
VDD
10pF
VSS
VCC
GND
’ 注:晶体/陶瓷振荡器和电容 C 要尽可能的接近单片机的 LXIN/LXOUT/VSS 引脚,LXIN/LXOUT 和 VSS 之间的电容只能为 10pF。
4.5.2 低速 RC 振荡器
寄存器 LCDM 中的位 RCLK 控制 RC 低速振荡器的选择。RC 振荡器的频率为 32768Hz, 外部 32K RC 振荡器电路
可省略 LXIN 和 VDD 之间的电阻,电容的选择为 22pF @3V 或 35pF @5V 。
LXOUT
LXIN
22pF (3V)
35pF (5V)
C
MCU
VDD
VSS
VCC
GND
’ 注:电容 C 应尽可能接近单片机的 VSS 引脚,电容的大小决定了振荡器的频率,改变电容的值可以得到所需的 32K 频率。
SONiX TECHNOLOGY CO., LTD
Page 47
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
4.5.3 外部时钟信号
外部时钟信号由 LXIN 输入,LXOUT 处于闲置状态。
外部时钟输入
LXIN
LXOUT
MCU
VSS
VDD
VCC
GND
’ 注:外部振荡电路的 GND 必须尽可能的接近单片机 VSS 端。
4.5.4 系统时钟测试
在设计过程中,用户可通过软件指令周期 Fcpu 对系统时钟速度进行测试。
¾
例:外部振荡器的 Fcpu 指令周期测试。
B0BSET
P0M.0
B0BSET
B0BCLR
JMP
P0.0
P0.0
@B
; P0.0 设置为输出模式以输出 Fcpu 的触发信号。
@@:
’ 注:不能直接由 XIN 引脚处测试,探针的接触将影响实际 RC 频率。
SONiX TECHNOLOGY CO., LTD
Page 48
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
5
系统工作模式
5.1 概述
SN8P2808 可在如下四种工作模式之间进行切换:
z 普通模式(高速模式);
z 低速模式;
z 省电模式(睡眠模式);
z 绿色模式。
睡眠模式
P0、P1唤醒功能有效
外部复位电路有效
CPUM1, CPUM0 = 01.
CLKMD = 1
普通模式
P0、P1唤醒功能有效
T0定时器溢出
外部复位电路有效
CLKMD = 0
低速模式
CPUM1, CPUM0 = 10.
P0、P1唤醒功能有效
T0定时器溢出
绿色模式
外部复位电路有效
系统模式切换示意图
工作模式说明
工作模式
EHOSC
ILRC
CPU 指令
T0 定时器
TC0 定时器
TC1 定时器
普通模式
低速模式
绿色模式
睡眠模式
运行
由 STPHX 控制 由 STPHX 控制
停止
运行
运行
运行
停止
执行
执行
停止
停止
*有效
*有效
*有效
无效
*有效
*有效
*有效
无效
*有效
*有效
*有效
无效
由 Watch_Dog 由 Watch_Dog
由 Watch_Dog 由 Watch_Dog
看门狗定时器
编译选项控制 编译选项控制
编译选项控制
编译选项控制
内部中断
全部有效
全部有效
T0
全部无效
外部中断
全部有效
全部有效
全部有效
全部无效
唤醒功能
P0,P1,T0,复位 P0,P1,复位
注释
*T0ENB = 1 时有效
*TC0ENB = 1 时有效
*TC1ENB = 1 时有效
请参阅编译选项章节
EHOSC:外部高速时钟。
ILRC:内部低速时钟(RC 振荡器:3V 时 16K,5V 时 32K)。
SONiX TECHNOLOGY CO., LTD
Page 49
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
5.2 系统模式切换
¾
例:系统由普通/低速模式切换到睡眠模式。
B0BSET
FCPUM0
; CPUM0 = 1。
¾
’
¾
注:系统进入睡眠模式后,只有具有唤醒功能的引脚和复位引脚能够将系统唤醒并回到普通模式中。
¾
例:系统由普通模式转换到低速模式。
B0BSET
B0BSET
¾
FCLKMD
例:系统由低速模式转换到普通模式(外部高速振荡器停止工作)。
在外部高速时钟停振的情况下,系统回到普通模式时至少需要延迟 20ms 以稳定振荡器。
B0BCLR
FSTPHX
; 启动外部振荡器。
@@:
¾
; 外部高速振荡器停振。
例:低速模式转换到普通模式(外部高速振荡器始终处于工作状态)。
B0BCLR
¾
FCLKMD
FSTPHX
B0MOV
DECMS
JMP
Z, #54
Z
@B
; 若 VDD=5V、内部 RC=32KHz,
系统延迟 0.125msX162 = 20.25ms。
B0BCLR
FCLKMD
; 系统回到普通模式。
例:系统由普通模式/低速模式进入绿色模式。
B0BSET
FCPUM1
’ 注:绿色模式下如果禁止 T0 的唤醒功能,则只有具有唤醒功能的引脚和复位引脚可以将系统唤醒(具有唤醒功能的引脚将系统返
回到上一个工作模式,复位引脚将系统返回到普通模式)。
¾
例:系统由普通/低速模式进入绿色模式,并使能 T0 唤醒功能。
; 设置 T0 定时器的唤醒功能。
B0BCLR
B0BCLR
MOV
B0MOV
MOV
B0MOV
FT0IEN
FT0ENB
A,#20H
T0M,A
A,#64H
T0C,A
; 禁止 T0 中断。
; 关闭 T0 定时器。
;
; T0 时钟=Fcpu / 64。
B0BCLR
B0BCLR
B0BSET
FT0IEN
FT0IRQ
FT0ENB
; 禁止 T0 中断。
; T0 中断请求寄存器清零。
; 开启 T0。
B0BCLR
B0BSET
FCPUM0
FCPUM1
; T0C 初始值= 64H(T0 中断间隔= 10 ms)。
; 进入绿色模式。
’ 注:绿色模式下如果使能 T0 的唤醒功能,则具有唤醒功能的引脚、复位引脚和 T0 都能够将系统唤醒。T0 的唤醒周期可编程控
制,请注意对 T0ENB 的设置。
SONiX TECHNOLOGY CO., LTD
Page 50
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
5.3 唤醒时间
5.3.1 概述
系统在睡眠模式下并不执行程序。唤醒触发信号可以将系统唤醒进入普通模式或低速模式。唤醒触发信号来自外部触
发信号(P0、P1 的电平变化)和内部触发信号(T0/TC0 定时溢出)。
z
从睡眠模式唤醒后只能进入普通模式,且将其唤醒的触发只能是外部触发信号(P0、P1 电平变化);
z
由绿色模式唤醒回到系统前一工作模式(普通模式或低速模式)可以用外部触发或者内部触发。
5.3.2 唤醒时间
系统进入睡眠模式后,高速时钟停止运行。把系统从睡眠模式下唤醒时,单片机需要等待 2048 个外部高速振荡器时
钟周期以使振荡电路进入稳定工作状态,等待的这一段时间就称为唤醒时间。唤醒时间结束后,系统才进入到普通模式。
’
注:将系统从绿色模式中唤醒是不需要唤醒时间的,因为在绿色模式下高速时钟仍然正常工作。
唤醒时间计算如下:
唤醒时间 = 1/Fosc * 2048(sec)+ 高速时钟启动时间
’
注:高速时钟的启动时间与 VDD 和振荡器类型有关。
¾
例:将系统从睡眠模式中唤醒,并设置系统进入普通模式。唤醒时间计算如下。
唤醒时间= 1/Fosc * 2048 = 0.512 ms (Fosc = 4MHz)
总的唤醒时间 = 0.512 ms + 振荡器启动时间
’
注: P0 口的唤醒功能不能被禁止。因此用户需确保在进入睡眠模式前使能 P0 口或外部的上拉电阻。
5.3.3 P1W 唤醒控制寄存器
在绿色模式和睡眠模式下,有唤醒功能的 I/O 口能够将系统唤醒到普通模式。P0 和 P1 都有唤醒功能,二者区别在于,
P0 的唤醒功能始终有效,而 P1 由寄存器 P1W 控制。
0C0H
P1W
读/写
复位后
Bit[3:0]
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
-
Bit 1
-
Bit 0
P10W
W
0
P10W:P1 唤醒功能控制位。
0 =禁止 P1n 唤醒功能;
1 =开放 P1n 唤醒功能。
SONiX TECHNOLOGY CO., LTD
Page 51
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
6
I/O 口
6.1 I/O 口模式
寄存器 PnM 控制 I/O 口的工作模式。
0B8H
P0M
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
P02M
R/W
0
Bit 1
P01M
R/W
0
Bit 0
P00M
R/W
0
0C1H
P1M
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
-
Bit 1
-
Bit 0
P10M
R/W
0
0C2H
P2M
读/写
复位后
Bit 7
P27M
R/W
0
Bit 6
P26M
R/W
0
Bit 5
P25M
R/W
0
Bit 4
P24M
R/W
0
Bit 3
P23M
R/W
0
Bit 2
P22M
R/W
0
Bit 1
P21M
R/W
0
Bit 0
P20M
R/W
0
0C4H
P4M
读/写
复位后
Bit 7
P47M
R/W
0
Bit 6
P46M
R/W
0
Bit 5
P45M
R/W
0
Bit 4
P44M
R/W
0
Bit 3
P43M
R/W
0
Bit 2
P42M
R/W
0
Bit 1
P41M
R/W
0
Bit 0
P40M
R/W
0
0C5H
P5M
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
P54M
R/W
0
Bit 3
P53M
R/W
0
Bit 2
-
Bit 1
-
Bit 0
-
Bit[7:0]
’
PnM[7:0]:Pn 模式控制位(n = 0~5)。
0 = 输入模式;
1 = 输出模式。
注:
1.
2.
3.
4.
用户可通过位操作指令(B0BSET,B0BCLR)对 I/O 口进行编程控制;
P0.3 是单向输入引脚,P0M.3 保持为“1”;
P2 口与 SEG24~SEG31 共用,由寄存器 LCDM 的 P2SEG 位控制;
上电或复位后,P3 默认为输入低电平。
SONiX TECHNOLOGY CO., LTD
Page 52
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
¾
¾
例:I/O 模式选择。
CLR
CLR
CLR
P0M
P1M
P5M
; 设置为输入模式。
MOV
B0MOV
B0MOV
B0MOV
A, #0FFH
P0M, A
P1M,A
P5M, A
; 设置为输出模式。
B0BCLR
P1M.0
; P1.0 设为输入模式。
B0BSET
P1M.0
; P1.0 设为输出模式。
B0BSET
FP2SEG
; 使能 P2 的 I/O 功能。
CLR
P2M
; 设 P2 为输入模式。
MOV
B0MOV
A, #0FFH
P2M, A
; 设 P2 为输出模式。
B0BCLR
P2M.0
; 设 P2.0 为输入模式。
B0BSET
P2M.0
; 设 P2.0 为输出模式。
例:P2 I/O 模式设置。
SONiX TECHNOLOGY CO., LTD
Page 53
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
6.2 I/O 上拉电阻
0E0H
P0UR
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
P02R
W
0
Bit 1
P01R
W
0
Bit 0
P00R
W
0
0E1H
P1UR
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
-
Bit 1
-
Bit 0
P10R
W
0
0E2H
P2UR
读/写
复位后
Bit 7
P27R
W
0
Bit 6
P26R
W
0
Bit 5
P25R
W
0
Bit 4
P24R
W
0
Bit 3
P23R
W
0
Bit 2
P22R
W
0
Bit 1
P21R
W
0
Bit 0
P20R
W
0
0E4H
P4UR
读/写
复位后
Bit 7
P47R
W
0
Bit 6
P46R
W
0
Bit 5
P45R
W
0
Bit 4
P44R
W
0
Bit 3
P43R
W
0
Bit 2
P42R
W
0
Bit 1
P41R
W
0
Bit 0
P40R
W
0
0E5H
P5UR
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
P54R
W
0
Bit 3
P53R
W
0
Bit 2
-
Bit 1
-
Bit 0
-
’
注:P0.3 为单向输入引脚,无上拉电阻。P0UR.3 始终保持为“1”。
¾
例:I/O 口的上拉电阻。
MOV
B0MOV
B0MOV
B0MOV
B0MOV
A, #0FFH
P0UR, A
P1UR, A
P2UR, A
P5UR, A
SONiX TECHNOLOGY CO., LTD
; 使能 P0、1、2、5 的上拉电阻。
;
Page 54
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
6.3 I/O 口数据寄存器
0D0H
P0
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
P03
R
0
Bit 2
P02
R/W
0
Bit 1
P01
R/W
0
Bit 0
P00
R/W
0
0D1H
P1
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
-
Bit 1
-
Bit 0
P10
R/W
0
0D2H
P2
读/写
复位后
Bit 7
P27
R/W
0
Bit 6
P26
R/W
0
Bit 5
P25
R/W
0
Bit 4
P24
R/W
0
Bit 3
P23
R/W
0
Bit 2
P22
R/W
0
Bit 1
P21
R/W
0
Bit 0
P20
R/W
0
0D4H
P4
读/写
复位后
Bit 7
P47
R/W
0
Bit 6
P46
R/W
0
Bit 5
P45
R/W
0
Bit 4
P44
R/W
0
Bit 3
P43
R/W
0
Bit 2
P42
R/W
0
Bit 1
P41
R/W
0
Bit 0
P40
R/W
0
0D5H
P5
读/写
复位后
Bit 7
-
Bit 6
-
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
’
注:通过编译选项使能外部复位时,P0.3 保持为“1”。
¾
例:读取输入口的数据。.
B0MOV
B0MOV
B0MOV
B0MOV
¾
; 读取 P0、P1、P2 和 P5 口的数据。
A, #0FFH
P0, A
P1, A
P2, A
P5, A
; 写入数据 0FFH 到 P0、P1、P2 和 P5。
例:写入数据到输出端口。
MOV
B0MOV
B0MOV
B0MOV
B0MOV
¾
A, P0
A, P1
A, P2
A, P5
例:写入 1 位数据到输出端口。
B0BSET
B0BSET
P1.0
P5.3
; P1.0 和 P5.3 置 1。
B0BCLR
B0BCLR
P1.0
P5.3
; P1.0 和 P5.3 置 0。
SONiX TECHNOLOGY CO., LTD
Page 55
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
6.4 P2/LCD 寄存器
0CBH
LCDM
读/写
复位后
Bit 2
’
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
COMSEL
R/W
0
Bit 3
RCLK
R/W
0
Bit 2
P2SEG
R/W
0
Bit 1
BIAS
R/W
0
Bit 0
LCDENB
R/W
0
P2SEG:Seg24~Seg31 与 P2.0~P2.7 共用功能控制位。
0 = 作为 Seg24~Seg 31 引脚;
1 = 作为 P2.0~P2.7 引脚。
注:Segment 24~Segment 31 引脚与 P2.0~P2.7 共用,当作为 P2 普通 I/O 引脚使用时,LCDM 寄存器的 P2SEG 位必须置 1。
通过设置寄存器 LCDM 的 P2SEG 位,可以选择 SEG24~SEG31 是作为 LCD segment 还是作为 P2 普通 I/O 引脚
使用。当 P2SEG=0 时,作为 LCD 应用,将 VLCD1 与 LVCD 短接;当 P2SEG=1 时,作为普通的 I/O 使用,将 VLCD1
与 VDD 短接。
LCD Panel
SEG0~23
VLCD
SEG0~23
VLCD1
LCD Panel
MCU
SEG24~31
VLCD1
MCU
VDD
VDD
P2SEG=0
SONiX TECHNOLOGY CO., LTD
Port 2.0~2.7
..
VLCD
LCD Panel
P2SEG=1
Page 56
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7
中断
7.1 概述
SN8P2808 共有 6 种中断源:4 个内部中断(T0/TC0/TC1/ADC)和 2 个外部中断(INT0/INT1)。外部中断可以将
系统从睡眠模式唤醒进入高速模式,在返回高速模式前,外部中断请求被锁定。一旦程序进入中断,寄存器 STKP 的位
GIE 将被硬件自动清零以避免再次响应其它中断。系统退出中断,即执行完 RETI 指令后,硬件自动将 GIE 置“1”,以
响应下一个中断。中断请求存放在寄存器 INTRQ 中。
INTEN 中断使能寄存器
P00IRQ
INT0 触发
P01IRQ
INT1 触发
T0 溢出
TC0 溢出
INTRQ
8位锁存
TC1 溢出
ADC 转换结束
’
T0IRQ
TC0IRQ
中
断
使
能
门
中断向量地址(0008H)
全局中断请求信号
TC1IRQ
ADCIRQ
注:程序响应中断时,位 GIE 必须处于有效状态。
SONiX TECHNOLOGY CO., LTD
Page 57
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7.2 中断使能寄存器 INTEN
中断请求控制寄存器 INTEN 包括所有中断的使能控制位。INTEN 的有效位被置为“1”,则系统进入该中断服务程
序,程序计数器入栈,程序转至 0008H 即中断程序。程序运行到指令 RETI 时,中断结束,系统退出中断服务。
0C9H
INTEN
读/写
复位后
Bit 7
ADCIEN
R/W
0
Bit 6
TC1IEN
R/W
0
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 = 使能。
Bit 6
TC1IEN:TC1 中断控制位。
0 = 禁止;
1 = 使能。
Bit 7
ADCIEN:ADC 中断控制位。
0 = 禁止;
1 = 使能。
SONiX TECHNOLOGY CO., LTD
Bit 4
T0IEN
R/W
0
Page 58
Bit 3
-
Bit 2
-
Bit 1
P01IEN
R/W
0
Bit 0
P00IEN
R/W
0
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7.3 中断请求寄存器 INTRQ
中断请求寄存器 INTRQ 中存放各中断请求标志。一旦有中断请求发生,INTRQ 中的相应位将被置“1”,该请求被响应
后,程序应将该标志位清零。根据 INTRQ 的状态,程序判断是否有中断发生,并执行相应的中断服务。
0C8H
INTRQ
读/写
复位后
Bit 7
ADCIRQ
R/W
0
Bit 6
TC1IRQ
R/W
0
Bit 5
TC0IRQ
R/W
0
Bit 0
P00IRQ:P0.0 中断(INT0)请求标志位。
0 = INT0 无中断请求;
1 = INT0 有中断请求。
Bit 1
P01IRQ:P0.1 中断(INT1)请求标志位。
0 = INT1 无中断请求;
1 = INT1 有中断请求。
Bit 4
T0IRQ:T0 中断请求标志位。
0 = T0 无中断请求;
1 = T0 有中断请求。
Bit 5
TC0IRQ:TC0 中断请求标志位。
0 = TC0 无中断请求;
1 = TC0 有中断请求。
Bit 6
TC1IRQ:TC1 中断请求标志位。
0 = TC1 无中断请求;
1 = TC1 有中断请求。
Bit 7
ADCIRQ:ADC 中断请求标志位。
0 = ADC 无中断请求;
1 = ADC 有中断请求。
Bit 4
T0IRQ
R/W
0
Bit 3
-
Bit 2
-
Bit 1
P01IRQ
R/W
0
Bit 0
P00IRQ
R/W
0
7.4 GIE 全局中断
只有当全局中断控制位 GIE 置“1”的时候程序才能响应中断请求。 一旦有中断发生,程序计数器(PC)指向中断
向量地址(0008H),堆栈层数加 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 59
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7.5 PUSH, POP 处理
有中断请求发生并被响应后,程序转至 0008H 执行中断子程序。响应中断之前,必须保存 ACC、PFLAG 的内容。
芯片提供 PUSH 和 POP 指令进行入栈保存和出栈恢复,从而避免中断结束后可能的程序运行错误。
’
注:“PUSH”、“POP”指令仅对 ACC 和 PFLAG 作中断保护,而不包括 NT0 和 NPD。PUSH/POP 缓存器是唯一的且仅有一层。
¾
例:对 ACC 和 PAFLG 进行入栈保护。
ORG
JMP
0
START
ORG
JMP
8H
INT_SERVICE
ORG
10H
START:
…
INT_SERVICE:
PUSH
…
…
POP
; 保存 ACC 和 PFLAG。
RETI
…
ENDP
; 退出中断。
SONiX TECHNOLOGY CO., LTD
; 恢复 ACC 和 PFLAG。
Page 60
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7.6 INT0(P0.0)中断
INT0 被触发,则无论 P00IEN 处于何种状态,P00IRQ 都会被置“1”。如果 P00IRQ=1 且 P00IEN=1,系统响应
该中断;如果 P00IRQ=1 而 P00IEN=0,系统并不会执行中断服务。在处理多中断时尤其需要注意。
’
注:P0.0 的中断触发方式由 PEDGE 控制。
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 置为电平触发。
B0BCLR
B0BSET
B0BSET
FP00IRQ
FP00IEN
FGIE
; INT0 中断请求标志清零。
; 使能 INT0 中断。
; 使能 GIE。
8H
INT_SERVICE
;
例:INT0 中断。
ORG
JMP
INT_SERVICE:
…
; ACC 和 PFLAG 入栈保护。
B0BTS1
JMP
FP00IRQ
EXIT_INT
; 检测 P00IRQ。
; P00IRQ = 0,退出中断。
B0BCLR
…
…
FP00IRQ
; P00IRQ 清零。
; INT1 中断服务程序。
EXIT_INT:
…
; ACC 和 PFLAG 出栈恢复。
RETI
; 退出中断。
SONiX TECHNOLOGY CO., LTD
Page 61
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7.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 中断请求设置。
B0BCLR
B0BSET
B0BSET
¾
FP01IRQ
FP01IEN
FGIE
; 清 INT1 中断请求标志。
; 使能 INT1 中断。
; 使能 GIE。
8H
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 62
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7.8 T0 中断
T0C 计数器溢出时,不管 T0IEN 是否开启,T0IRQ 会被置“1”,此时若 T0IEN=1,则系统响应 T0 中断;若此时
T0IEN=0,则系统并不会响应 T0 中断。
¾
¾
例:T0 中断请求设置。
B0BCLR
B0BCLR
MOV
B0MOV
MOV
B0MOV
FT0IEN
FT0ENB
A, #20H
T0M, A
A, # 64H
T0C, A
; 禁止 T0 中断。
;
;
; T0 时钟= Fcpu / 64。
; T0C 初始值置为 64H。
; T0 间隔为 10 ms。
B0BCLR
B0BSET
B0BSET
FT0IRQ
FT0IEN
FT0ENB
; T0 中断请求标志清零。
; 允许响应 T0 中断。
;
B0BSET
FGIE
; 使能 GIE。
ORG
JMP
8H
INT_SERVICE
;
…
B0BTS1
JMP
FT0IRQ
EXIT_INT
例:T0 设置为无 RTC。
INT_SERVICE:
B0BCLR
MOV
B0MOV
…
FT0IRQ
A, #64H
T0C, A
; ACC 和 PFLAG 入栈保存。
; 检查是否有 T0 中断请求标志。
;
; 清 T0IRQ。
;
; T0 中断程序。
EXIT_INT:
’
¾
…
; ACC 和 PFLAG 出栈恢复。
RETI
; 退出中断。
注:
1. 在 RTC 模式下,必须延迟 1/2 RTC 时钟源(32768Hz)之后再对 T0IRQ 作清零动作,否则 RTC 间隔时间可能出错。即从程
序响应 T0 中断开始到 T0IRQ 再次被清零大约需要 16us。
2. RTC 模式下,中断服务程序中不能对 T0C 进行清零。
例:RTC 下执行 T0 中断。
ORG
JMP
8H
INT_SERVICE
;
INT_SERVICE:
…
> 16us
B0BTS1
JMP
…
…
B0BCLR
; ACC 和 PFLAG 中断保护。
FT0IRQ
EXIT_INT
; 检测 T0IRQ。
; T0IRQ = 0,退出中断。
FT0IRQ
; T0 中断程序。
;
; T0IRQ 清零。
EXIT_INT:
…
; 恢复 ACC 和 PFLAG。
RETI
; 退出中断。
SONiX TECHNOLOGY CO., LTD
Page 63
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7.9 TC0 中断
TC0C 溢出时,无论 TC0IEN 处于何种状态,TC0IRQ 都会置“1”。若 TC0IEN 和 TC0IRQ 都置“1”,系统就会
响应 TC0 的中断;若 TC0IEN = 0,则无论 TC0IRQ 是否置“1”,系统都不会响应 TC0 中断。尤其需要注意多种中断下
的情形。
¾
¾
例:TC0 中断请求设置。
B0BCLR
B0BCLR
MOV
B0MOV
MOV
B0MOV
FTC0IEN
FTC0ENB
A, #20H
TC0M, A
A, # 64H
TC0C, A
; 禁止 TC0 中断。
;
;
; TC0 时钟=Fcpu / 64。
; TC0C 初始值=64H。
; TC0 间隔= 10 ms。
B0BCLR
B0BSET
B0BSET
FTC0IRQ
FTC0IEN
FTC0ENB
; 清 TC0 中断请求标志。
; 使能 TC0 中断。
;
B0BSET
FGIE
; 使能 GIE。
8H
INT_SERVICE
;
例:TC0 中断服务程序。
ORG
JMP
INT_SERVICE:
…
; 保存 ACC 和 PFLAG。
B0BTS1
JMP
FTC0IRQ
EXIT_INT
; 检查是否有 TC0 中断请求标志。
; TC0IRQ = 0,退出中断。
B0BCLR
MOV
B0MOV
…
…
FTC0IRQ
A, #64H
TC0C, A
; 清 TC0IRQ。
; 清 TC0C。
; TC0 中断程序。
EXIT_INT:
…
; 恢复 ACC 和 PFLAG。
RETI
; 退出中断。
SONiX TECHNOLOGY CO., LTD
Page 64
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7.10 TC1 中断
TC1C 溢出时,无论 TC1IEN 处于何种状态,TC1IRQ 都会置“1”。若 TC1IEN 和 TC1IRQ 都置“1”,系统就会
响应 TC1 的中断;若 TC1IEN = 0,则无论 TC1IRQ 是否置“1”,系统都不会响应 TC1 中断。尤其需要注意多种中断下
的情形。
¾
¾
例:设置 TC1 中断请求。
B0BCLR
B0BCLR
MOV
B0MOV
MOV
B0MOV
FTC1IEN
FTC1ENB
A, # 20H
TC1M, A
A, # 64H
TC1C, A
;
;
;
;
;
;
B0BCLR
B0BSET
B0BSET
FTC1IRQ
FTC1IEN
FTC1ENB
; 清 TC1 中断请求标志。
; 使能 TC1 中断。
; 开启 TC1 定时器。
B0BSET
FGIE
; 使能 GIE。
8H
INT_SERVICE
;
禁止 TC1 中断。
关闭 TC1 定时器。
设置 TC1 时钟=Fcpu / 64。
设置 TC1C 初始值=64H。
设置 TC1 间隔时间=10 ms。
例:TC1 中断服务程序。
ORG
JMP
INT_SERVICE:
…
; 保存 ACC 和 PFLAG。
B0BTS1
JMP
FTC1IRQ
EXIT_INT
; 检查是否有 TC1 中断请求标志。
; TC1IRQ = 0,退出中断。
B0BCLR
MOV
B0MOV
…
…
FTC1IRQ
A, #64H
TC1C, A
; 清 TC1IRQ。
; 清 TC1C。
; TC1 中断服务程序。
EXIT_INT:
…
; 恢复 ACC 和 PFLAG。
RETI
; 退出中断。
SONiX TECHNOLOGY CO., LTD
Page 65
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7.11 ADC 中断
当 ADC 转换完成后,无论 ADCIEN 是否使能,ADCIQR 都会置“1”。若 ADCIEN 和 ADCIQR 都置“1”,那么系
统就会响应 ADC 中断。若 ADCIEN = 0,不管 ADCIRQ 是否置“1”,系统都不会进入 ADC 中断。用户应注意多种中断
下的处理。
¾
¾
例: ADC 中断设置。
B0BCLR
FADCIEN
; 禁止 ADC 中断。
MOV
B0MOV
MOV
B0MOV
A, #10110000B
ADM, A
A, #00000000B
ADR, A
;
; 允许 P4.0 ADC 输入,使能 ADC 功能。
; 设置 AD 转换速率 = Fcpu/16。
B0BCLR
B0BSET
B0BSET
FADCIRQ
FADCIEN
FGIE
; 清除 ADC 中断请求标志。
; 使能 ADC 中断。
; 使能 GIE。
B0BSET
FADS
; 开始 AD 转换。
8H
INT_SERVICE
; 中断向量地址。
例:ADC 中断服务程序。
INT_SERVICE:
ORG
JMP
…
EXIT_INT:
; 保存 ACC 和 PFLAG。
B0BTS1
JMP
FADCIRQ
EXIT_INT
; 检查是否有 ADC 中断。
; ADCIRQ = 0,退出中断。
B0BCLR
…
…
FADCIRQ
; 清 ADCIRQ。
; ADC 中断服务程序。
…
; 恢复 ACC 和 PFLAG。
RETI
; 退出中断。
SONiX TECHNOLOGY CO., LTD
Page 66
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7.12 多中断操作举例
在同一时刻,系统中可能出现多个中断请求。此时,用户必须根据系统的要求对各中断进行优先权的设置。中断请求
标志 IRQ 由中断事件触发,当 IRQ 处于有效值“1”时,系统并不一定会响应该中断。各中断触发事件如下表所示:
中断
P00IRQ
P01IRQ
T0IRQ
TC0IRQ
TC1IRQ
ADCIRQ
有效触发
由 PEDGE 控制
由 PEDGE 控制
T0C 溢出
TC0C 溢出
TC1C 溢出
AD 转换结束
多个中断同时发生时,需要注意的是:首先,必须预先设定好各中断的优先权;其次,利用 IEN 和 IRQ 控制系统是
否响应该中断。在程序中,必须对中断控制位和中断请求标志进行检测。
¾
例:多中断条件下检测中断请求。
ORG
JMP
8H
INT_SERVICE
INT_SERVICE:
…
; 保存 ACC 和 PFLAG。
INTP00CHK:
B0BTS1
JMP
B0BTS0
JMP
FP00IEN
INTP01CHK
FP00IRQ
INTP00
B0BTS1
JMP
B0BTS0
JMP
FP00IEN
INTT0CHK
FP01IRQ
INTP01
B0BTS1
JMP
B0BTS0
JMP
FT0IEN
INTTC0CHK
FT0IRQ
INTT0
B0BTS1
JMP
B0BTS0
JMP
FTC0IEN
INTTC1CHK
FTC0IRQ
INTTC0
B0BTS1
JMP
B0BTS0
JMP
FTC1IEN
INTADCHK
FTC1IRQ
INTT1
B0BTS1
JMP
B0BTS0
JMP
FADCIEN
INT_EXIT
FADCIRQ
INTADC
INTP01CHK:
INTT0CHK:
INTTC0CHK:
INTTC1CHK:
INTADCHK:
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
检查是否有 INT0 中断请求。
检查是否使能 INT 中断。
跳到下一个中断。
检查是否有 INT0 中断请求。
进入 INT0 中断。
检查是否有 INT1 中断请求。
检查是否使能 INT1 中断。
跳到下一个中断。
检查是否有 INT1 中断请求。
进入 INT1 中断。
检查是否有 T0 中断请求。
检查是否使能 T0 中断。
跳到下一个中断。
检查是否有 T0 中断请求。
进入 T0 中断。
检查是否有 TC0 中断请求。
检查是否使能 TC0 中断。
跳到下一个中断。
检查是否有 TC0 中断请求。
进入 TC0 中断。
检查是否有 TC1 中断请求。
检查是否使能 TC1 中断。
跳到下一个中断。
检查是否有 TC1 中断。
进入 TC1 中断。
检查是否有 ADC 中断请求。
检查是否使能 ADC 中断。
; 检查是否有 ADC 中断请求。
; 进入 ADC 中断。
INT_EXIT:
…
; 恢复 ACC 和 PFLAG。
RETI
; 退出中断。
SONiX TECHNOLOGY CO., LTD
Page 67
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8
定时器
8.1 看门狗定时器
看门狗定时器 WDT 是一个 4 位二进制计数器,用于监控程序的正常执行。如果由于干扰,程序进入了未知状态,看
门狗定时器溢出,系统复位。看门狗的工作模式由编译选项控制,其时钟源由内部低速 RC 振荡器(16KHz @3V,32KHz
@5V)提供。
看门狗溢出时间 = 8192 /内部低速振荡器周期(sec)
内部低速 RC Freq.
16KHz
32KHz
VDD
3V
5V
’
看门狗溢出时间
512ms
256ms
注:如果看门狗被置为“Always_On”模式,那么看门狗在睡眠模式和绿色模式下仍然运行。
看门狗清零的方法是对看门狗计数器清零寄存器 WDTR 写入清零控制字 5AH。
0CCH
WDTR
读/写
复位后
¾
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
B0MOV
…
CALL
CALL
…
…
JMP
A,#5AH
WDTR,A
; 看门狗定时器清零。
SUB1
SUB2
MAIN
z
z
z
看门狗定时器应用注意事项如下:
对看门狗清零之前,检查 I/O 口的状态和 RAM 的内容可增强程序的可靠性;
不能在中断中对看门狗清零,否则无法侦测到主程序跑飞的状况;
程序中应该只在主程序中有一次清看门狗的动作,这种架构能够最大限度的发挥看门狗的保护功能。
¾
例:如下是对看门狗定时器的操作,在主程序开头对看门狗清零。
main:
Err:
…
…
JMP $
; 检测 I/O 口的状态。
; 检测 RAM 的内容。
; I/O 或 RAM 出错,不清看门狗等看门狗计时溢出。
Correct:
MOV
B0MOV
…
CALL
CALL
…
…
JMP
A, 5AH
WDTR, A
; I/O 和 RAM 正常,看门狗清零 。
;
; 在整个程序中只有一处地方清看门狗。
SUB1
SUB2
MAIN
SONiX TECHNOLOGY CO., LTD
Page 68
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.2 定时器 T0
8.2.1 概述
二进制定时/计数器 T0 溢出(从 0FFH 到 00H)时,T0 继续计数并给出一个溢出信号触发 T0 中断。定时器 T0 的主
要用途如下:
) 8 位可编程定时计数器:根据选择的时钟频率周期性的产生中断请求;
) RTC 定时器:根据时钟信号在实时的产生中断请求,仅当 T0TB=1 时 RTC 功能有效;
) 绿色模式唤醒功能:T0ENB = 1 的条件下,T0 的溢出能够将系统从绿色模式下唤醒。
T0 Rate
(Fcpu/2~Fcpu/256)
T0ENB
内部数据总线
Load
Fcpu
T0TB
T0C 8位二进制计数器
CPUM0,1
T0 溢出
RTC
T0ENB
’
注:RTC 模式下,T0 的溢出时间间隔固定为 0.5S 而不受 T0C 控制。
SONiX TECHNOLOGY CO., LTD
Page 69
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
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
TC1X8
R/W
0
Bit 2
TC0X8
R/W
0
Bit 0
T0TB: RTC 时钟源控制位。
0 = 禁止 RTC (T0 时钟源来自 Fcpu);
1 = 开启 0.5sRTC 功能(低速时钟必须为 32768Hz 晶振)。
Bit 1
TC0GN: TC0 绿色模式下唤醒功能控制位。
0 = 禁止;
1 = 使能。
Bit 2
TC0X8: TC0 内部时钟源选择位。
0 = TC0 内部时钟源为 Fcpu, TC0RATE 可选范围 Fcpu/2~Fcpu/256;
1 = TC0 内部时钟源为 Fosc, TC0RATE 可选范围 Fosc/1~Fosc/128。
Bit 3
TC1X8: TC1 内部时钟源选择位。
0 = TC1 内部时钟源为 Fcpu, TC1RATE 可选范围 Fcpu/2~Fcpu/256;
1 = TC1 内部时钟源为 Fosc,TC1RATE 可选范围 Fosc/1~Fosc/128。
Bit [6:4]
T0RATE[2:0]: T0 分频选择位。
000 = fcpu/256;
001 = fcpu/128;
… ;
110 = fcpu/4;
111 = fcpu/2。
Bit 7
T0ENB: T0 启动控制位。
0 =关闭;
1 =开启。
’
Bit 1
TC0GN
R/W
0
Bit 0
T0TB
R/W
0
注:RTC 模式下,T0RATE 的功能被屏蔽,T0 的间隔时间固定为 0.5 sec.
SONiX TECHNOLOGY CO., LTD
Page 70
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.2.3 T0C 计数寄存器
8 位计数寄存器 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 / 1 / 64)
= 256 -(10-2 * 4 * 106 / 1 / 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
低速模式(Fcpu = 32768Hz / 4)
单步间隔时间 =max/256
256 us
128 us
64 us
32 us
16 us
8 us
4 us
2 us
最大间隔溢出时间
2000 ms
1000 ms
500 ms
250 ms
125 ms
62.5 ms
31.25 ms
15.625 ms
单步间隔时间 =max/256
7812.5 us
3906.25 us
1953.12 us
976.56 us
488.28 us
244.14 us
122.07 us
61.035 us
注:RTC 模式下,T0C 设置无效,T0 的间隔时间固定为 0.5S。
8.2.4 T0 操作流程
T0 的操作流程如下:
) T0 停止计数,禁止 T0 中断功能,并清除 T0 中断请求标志。
B0BCLR
B0BCLR
B0BCLR
)
; 关闭 T0 定时器。
; 清 T0IRQ。
; 禁止 T0 中断。
A, #0xxx0000b
T0M,A
; T0M 的 bit4~bit6 将 T0 的速率控制在 x000xxxxb~x111xxxxb。
; 关闭 T0 定时器。
设置 T0 速率。
MOV
B0MOV
¾
FT0ENB
FT0IRQ
FT0IEN
设置 T0 的时钟信号(Fcpu 或 RTC)。
B0BCLR
FT0TB
; Fcpu 为时钟源。
B0BSET
FT0TB
; 选择 RTC 时钟源。
A,#7FH
T0C,A
; 设置 T0C 的值。
FT0IEN
; 开启 T0 的中断功能。
或
¾
设置 T0 的间隔时间。
MOV
B0MOV
¾
设置 T0 的功能模式。
B0BSET
¾
开启 T0 定时器。
B0BSET
FT0ENB
SONiX TECHNOLOGY CO., LTD
Page 71
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.3 定时/计数器 TC0
8.3.1 概述
定时/计数器 TC0 为双层结构,可根据实际需要选择内部时钟或外部时钟作为计时标准。其中,内部时钟源来自 Fcpu
或 Fosc(Fosc 由 TC0X8 标志控制)。外部时钟源 INT0 从 P0.0 端输入(下降沿触发)。寄存器 TC0M 控制 TC0 时钟
源的选择。当 TC0 从 0FFH 溢出到 00H 时,TC0 在继续计数的同时产生一个溢出信号,触发 TC0 中断请求。
在 PWM 模式,TC0 的溢出时间由 ALOAD0 和 TC0OUT 位控制。
TC0 的主要功能如下:
) 8 位可编程定时器:根据选择的时钟频率信号,产生周期中断;
) 外部事件计数器:对外部事件计数;
) 绿色模式唤醒功能:TC0 可以将系统从绿色模式下唤醒;
) Buzzer 输出;
) PWM 输出。
TC0OUT
内部P5.4 I/O电路
记录重装值
ALOAD0
Buzzer
Auto. Reload
TC0 Time Out
TC0R 数据重装
缓存器
TC0 Rate
(Fcpu/2~Fcpu/256)
TC0 / 2
P5.4
ALOAD0, TC0OUT
TC0X8
R
Fcpu
TC0CKS
比较器
TC0ENB
PWM0OUT
PWM
S
Load
Fosc
TC0C
8位二进制计数
寄存器
TC0 Rate
(Fosc/1~Fosc/128)
TC0溢出
CPUM0,1
INT0
(施密特触发)
SONiX TECHNOLOGY CO., LTD
Page 72
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.3.2 TC0M 模式寄存器
0DAH
TC0M
读/写
复位后
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 0
PWM0OUT:PWM 输出控制。
0 = 禁止 PWM 输出;
1 = 使能 PWM 输出,PWM 输出占空比由 T0OUT 和 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
TC0CKS:TC0 时钟信号控制位。
0 = 内部时钟(Fcpu 或 Fosc);
1 = 外部时钟,由 P0.0/INT0 输入。
Bit [6:4]
TC0RATE[2:0]:TC0 分频选择位。
TC0RATE [2:0]
000
001
010
011
100
101
110
111
Bit 7
’
TC0X8 = 0
Fcpu / 256
Fcpu / 128
Fcpu / 64
Fcpu / 32
Fcpu / 16
Fcpu / 8
Fcpu / 4
Fcpu / 2
Bit 2
ALOAD0
R/W
0
Bit 1
TC0OUT
R/W
0
Bit 0
PWM0OUT
R/W
0
TC0X8 = 1
Fosc / 128
Fosc / 64
Fosc / 32
Fosc / 16
Fosc / 8
Fosc / 4
Fosc / 2
Fosc / 1
TC0ENB:TC0 启动控制位。
0 =关闭;
1 =开启。
注:若 TC0CKS=1, 则 TC0 用作外部事件计数器,此时不需要考虑 TC0RATE 的设置,P0.0 口无中断信号(P00IRQ=0)。
SONiX TECHNOLOGY CO., LTD
Page 73
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.3.3 TC1X8, TC0X8, TC0GN 标志
0D8H
T0M
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
TC1X8
R/W
0
Bit 1
TC0GN:TC0 绿色模式唤醒功能控制位。
0 = 禁止 TC0 的唤醒功能;
1 = 允许 TC0 的唤醒功能。
Bit 2
TC0X8:TC0 内部时钟选择控制位。
0 = TC0 内部时钟来自 Fcpu,TC0RATE = Fcpu/2~Fcpu/256;
1 = TC0 内部时钟来自 Fosc,TC0RATE = Fosc/1~Fosc/128。
Bit 3
TC1X8:TC1 内部时钟选择控制位。
0 = TC1 内部时钟来自 Fcpu,TC0RATE = Fcpu/2~Fcpu/256;
1 = TC1 内部时钟来自 Fosc,TC0RATE = Fosc/1~Fosc/128。
’
Bit 2
TC0X8
R/W
0
Bit 1
TC0GN
R/W
0
Bit 0
-
注:TC0CKS = 1 时,TC0X8 和 TC0RATE 可以忽略不计。
SONiX TECHNOLOGY CO., LTD
Page 74
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.3.4 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 二进制计数范围。各模式下参数的设定如下表所示:
TC0X8
PWM0 ALOAD0 TC0OUT N
TC0C 有效值
TC0CKS
0
1
1
1
1
0
1
1
1
1
-
0
(Fcpu/2~
Fcpu/256)
0
1
(Fosc/1~
Fosc/128)
1
¾
-
x
0
0
1
1
x
0
0
1
1
-
x
0
1
0
1
x
0
1
0
1
-
256
256
64
32
16
256
256
64
32
16
256
00H~0FFH
00H~0FFH
00H~3FH
00H~1FH
00H~0FH
00H~0FFH
00H~0FFH
00H~3FH
00H~1FH
00H~0FH
00H~0FFH
TC0C 二进制计数范围
00000000b~11111111b
00000000b~11111111b
xx000000b~xx111111b
xxx00000b~xxx11111b
xxxx0000b~xxxx1111b
00000000b~11111111b
00000000b~11111111b
xx000000b~xx111111b
xxx00000b~xxx11111b
xxxx0000b~xxxx1111b
00000000b~11111111b
备注
每计数 256 次溢出
每计数 256 次溢出
每计数 64 次溢出
每计数 32 次溢出
每计数 16 次溢出
每计数 256 次溢出
每计数 256 次溢出
每计数 64 次溢出
每计数 32 次溢出
每计数 16 次溢出
每计数 256 次溢出
例:TC0 的间隔时间为 10ms,时钟源来自 Fcpu(TC0CKS = 0,TC0X8 = 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
TC0 中断时间对应表(TC0X8 = 0)
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
高速模式(fcpu = 4MHz / 4)
低速模式(fcpu = 32768Hz / 4)
最大溢出间隔时间 单步间隔时间 = max/256
65.536 ms
256 us
32.768 ms
128 us
16.384 ms
64 us
8.192 ms
32 us
4.096 ms
16 us
2.048 ms
8 us
1.024 ms
4 us
0.512 ms
2 us
最大溢出间隔时间 单步间隔时间 = max/256
8000 ms
31250 us
4000 ms
15625 us
2000 ms
7812.5 us
1000 ms
3906.25 us
500 ms
1953.125 us
250 ms
976.563 us
125 ms
488.281 us
62.5 ms
244.141 us
TC0X8 = 1
TC0RATE
TC0CLOCK
000
001
010
011
100
101
110
111
Fosc/128
Fosc/64
Fosc/32
Fosc/16
Fosc/8
Fosc/4
Fosc/2
Fosc/1
高速模式(fcpu = 4MHz / 4)
低速模式(fcpu = 32768Hz / 4)
最大溢出间隔时间 单步间隔时间 = max/256
8.192 ms
32 us
4.096 ms
16 us
2.048 ms
8 us
1.024 ms
4 us
0.512 ms
2 us
0.256 ms
1 us
0.128 ms
0.5 us
0.064 ms
0.25 us
SONiX TECHNOLOGY CO., LTD
最大溢出间隔时间 单步间隔时间 = max/256
1000 ms
7812.5 us
500 ms
3906.25 us
250 ms
1953.125 us
125 ms
976.563 us
62.5 ms
488.281 us
31.25 ms
244.141 us
15.625 ms
122.07 us
7.813 ms
61.035 us
Page 75
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.3.5 TC0R 自动装载寄存器
TC0 的自动重装功能由 TC0M 的 ALOAD0 位控制。当 TC0C 溢出时,TC0R 的值自动装入 TC0C 中。这样,用户在
使用的过程中就不需要在中断中复位 TC0C。
TC0 为双重缓存器结构。若程序对 TC0R 进行了修改,那么修改后的 TC0R 值首先被暂存在 TC0R 的第一个缓存器
中,TC0 溢出后,TC0R 的新值就会被存入 TC0R 缓存器中,从而避免 TC0 中断时间出错以及 PWM 和蜂鸣器误动作。
’
’
注:在 PWM 模式下,系统自动开启重装功能,ALOAD0 用于控制溢出范围。
注:TC0 将系统从绿色模式唤醒后,TC0R 的值不会由硬件装入 TC0C。即如果使用 TC0 自动装载功能,系统由 TC0 从绿色模
式下后,需由软件将 TC0R 的值装入 TC0C。
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
TC0X8
0
(Fcpu/2~
Fcpu/256)
0
1
(Fosc/1~
Fosc/128)
1
¾
-
PWM0
0
1
1
1
1
0
1
1
1
1
-
ALOAD0
x
0
0
1
1
x
0
0
1
1
-
TC0OUT
x
0
1
0
1
x
0
1
0
1
-
N
256
256
64
32
16
256
256
64
32
16
256
TC0R 有效值
00H~0FFH
00H~0FFH
00H~3FH
00H~1FH
00H~0FH
00H~0FFH
00H~0FFH
00H~3FH
00H~1FH
00H~0FH
00H~0FFH
TC0R 二进制有效范围
00000000b~11111111b
00000000b~11111111b
xx000000b~xx111111b
xxx00000b~xxx11111b
xxxx0000b~xxxx1111b
00000000b~11111111b
00000000b~11111111b
xx000000b~xx111111b
xxx00000b~xxx11111b
xxxx0000b~xxxx1111b
00000000b~11111111b
例:TC0 中断间隔时间设置为 10ms,时钟源选 Fcpu(TC0KS=0,TC0X8 = 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 76
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.3.6 TC0 时钟频率输出(蜂鸣器输出)
对 TC0 时钟频率进行适当设置可得到特定频率的蜂鸣器输出(TC0OUT),并通过引脚 P5.4 输出。单片机内部设置
TC0 的溢出频率经过 2 分频后作为 TC0OUT 的频率,即 TC0 每溢出 2 次 TC0OUT 输出一个完整的脉冲,此时,P5.4 的
I/O 功能自动被禁止。TC0OUT 输出波形如下:
1
2
3
4
TC0溢出时钟
1
2
3
4
TC0OUT(Buzzer)输出时钟
若外部高速时钟选择 4MHz,系统时钟源采用外部时钟 Fosc/4,程序中设置 TC0RATE2~TC0RATE1 = 110, TC0C
= TC0R = 131,则 TC0 的溢出频率为 2KHz,TC0OUT 的输出频率为 1KHz。下面给出范例程序。
¾
’
例:设置 TC0OUT(P5.4)。
MOV
B0MOV
A,#01100000B
TC0M,A
MOV
B0MOV
B0MOV
A,#131
TC0C,A
TC0R,A
; 自动装载参考值设置。
B0BSET
B0BSET
B0BSET
FTC0OUT
FALOAD0
FTC0ENB
; TC0 的输出信号由 P5.4 输出,禁止 P5.4 的普通 I/O 功能。
; 允许 TC0 自动重装功能。
; 开启 TC0 定时器。
; TC0 速率 = Fcpu/4。
注:蜂鸣器的输出有效时,“PWM0OUT”必须被置为“0”。
SONiX TECHNOLOGY CO., LTD
Page 77
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.3.7 TC0 操作流程
TC0 定时器可用于定时器中断、事件计数、TC0OUT 和 PWM。下面分别举例说明。
)
停止 TC0 计数,禁止 TC0 中断,并清 TC0 中断请求标志。
B0BCLR
B0BCLR
B0BCLR
)
; 停止 TC0 计数、TC0OUT 和 PWM。
; 禁止 TC0 中断。
; 清 TC0 中断请求标志。
设置 TC0 的速率 (不包含事件计数模式)。
MOV
B0MOV
)
FTC0ENB
FTC0IEN
FTC0IRQ
A, #0xxx0000b
TC0M,A
; TC0M 的 bit4~bit6 控制 TC0 的速率为 x000xxxxb~x111xxxxb。
; 禁止 TC0 中断。
FTC0CKS
; 内部时钟。
FTC0CKS
; 外部时钟。
FTC0X8
; Fcpu 内部时钟。
FTC0X8
; Fosc 内部时钟。
设置 TC0 的时钟源。
; 选择 TC0 内部/外部时钟源。
B0BCLR
或
B0BSET
;选择 TC0 Fcpu/Fosc 内部时钟源。
B0BCLR
或
B0BSET
’
注:在 TC0 外部时钟模式下,TC0X8 可以忽略不计。
)
设置 TC0 的自动装载模式。
B0BCLR
FALOAD0
; 禁止 TC0 自动装载功能。
B0BSET
FALOAD0
; 使能 TC0 自动装载功能。
或
)
设置 TC0 中断间隔时间,TC0OUT(Buzzer)频率或 PWM 占空比。
; 设置 TC0 中断间隔时间,TC0OUT(Buzzer)频率或 PWM 占空比。
MOV
A,#7FH
; TC0 的模式决定 TC0C 和 TC0R 的值。
B0MOV
TC0C,A
; 设置 TC0C 的值。
B0MOV
TC0R,A
; 在自动装载模式或 PWM 模式下设置 TC0R 的值。
; PWM 模式下设置 PWM 的周期。
B0BCLR
B0BCLR
或
B0BCLR
B0BSET
或
B0BSET
B0BCLR
或
B0BSET
B0BSET
)
FALOAD0
FTC0OUT
; ALOAD0,TC0OUT = 00,PWM 周期 = 0~255。
FALOAD0
FTC0OUT
; ALOAD0,TC0OUT = 01,PWM 周期 = 0~63。
FALOAD0
FTC0OUT
; ALOAD0,TC0OUT = 10,PWM 周期 = 0~31。
FALOAD0
FTC0OUT
; ALOAD0,TC0OUT = 11,PWM 周期 = 0~15。
B0BSET
FTC0IEN
; 使能 TC0 中断。
B0BSET
FTC0OUT
; 使能 TC0OUT(Buzzer)功能。
B0BSET
FPWM0OUT
; 使能 PWM。
B0BSET
FTC0GN
; 使能 TC0 的绿色模式下的唤醒功能。
设置 TC0 的模式。
或
或
或
)
开启 TC0 定时器。
B0BSET
FTC0ENB
SONiX TECHNOLOGY CO., LTD
Page 78
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.4 定时/计数器 TC1
8.4.1
概述
定时/计数器 TC1 为双层结构,可根据实际需要选择内部时钟或外部时钟作为计时标准。其中,内部时钟源来自 Fcpu
或 Fosc(Fosc 由 TC1X8 标志控制)。外部时钟源 INT1 从 P0.1 端输入(下降沿触发)。寄存器 TC1M 控制 TC1 时钟
源的选择。当 TC1 从 0FFH 溢出到 00H 时,TC1 在继续计数的同时产生一个溢出信号,触发 TC1 中断请求。
在 PWM 模式,TC1 的溢出时间由 ALOAD1 和 TC1OUT 位控制。
TC1 的主要功能如下:
) 8 位可编程定时器:根据选择的时钟信号,产生周期中断;
) 外部事件计数器:对外部事件计数;
) Buzzer 输出;
) PWM 输出。
TC1OUT
内部 P5.3 I/O 电路
记录重装值
ALOAD1
Buzzer
Auto. Reload
TC1 溢出
TC1R 数据重装
缓存器
TC1 Rate
(Fcpu/2~Fcpu/256)
TC1 / 2
P5.3
ALOAD1, TC1OUT
TC1X8
R
Fcpu
TC1CKS
Compare
TC1ENB
PWM1OUT
PWM
S
Load
Fosc
TC1C
8位二进制计数
寄存器
TC1 Rate
(Fosc/1~Fosc/128)
TC1 溢出
CPUM0,1
INT1
(施密特触发)
SONiX TECHNOLOGY CO., LTD
Page 79
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.4.2 TC1M 模式寄存器
0DCH
TC1M
读/写
复位后
Bit 7
TC1ENB
R/W
0
Bit 6
TC1rate2
R/W
0
Bit 5
TC1rate1
R/W
0
Bit 4
TC1rate0
R/W
0
Bit 3
TC1CKS
R/W
0
Bit 0
PWM1OUT:PWM 输出控制位。
0 = 禁止 PWM 输出;
1 = 允许 PWM 输出,PWM 输出占空比由 TC1OUT 和 ALOAD1 控制。
Bit 1
TC1OUT:TC1 溢出信号输出控制位。仅当 PWM1OUT = 0 时有效。
0 = 禁止,P5.3 作为普通的 I/O 口;
1 = 使能,P5.3 输出 TC1OUT 信号。
Bit 2
ALOAD1:自动装载控制位。仅当 PWM1OUT = 0 时有效。
0 = 禁止;
1 = 使能。
Bit 3
TC1CKS:TC1 时钟源控制位。
0 = 内部时钟(Fcpu 或 Fosc);
1 = 外部时钟,由 P0.1/INT1 输入。
Bit [6:4]
TC1RATE[2:0]: TC1 分频选择位。
TC1RATE [2:0]
000
001
010
011
100
101
110
111
Bit 7
’
TC1X8 = 0
Fcpu / 256
Fcpu / 128
Fcpu / 64
Fcpu / 32
Fcpu / 16
Fcpu / 8
Fcpu / 4
Fcpu / 2
Bit 2
ALOAD1
R/W
0
Bit 1
TC1OUT
R/W
0
Bit 0
PWM1OUT
R/W
0
TC1X8 = 1
Fosc / 128
Fosc / 64
Fosc / 32
Fosc / 16
Fosc / 8
Fosc / 4
Fosc / 2
Fosc / 1
TC1ENB: TC1 启动控制位。
0 = 关闭 TC1 定时器;
1 = 开启 TC1 定时器。
注:若 TC1CKS=1, 则 TC1 用作外部事件计数器,此时不需要考虑 TC1RATE 的设置,P0.1 无中断请求(P01IRQ=0)。
8.4.3 TC1X8 标志
0D8H
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
TC1X8
T0M
R/W
读/写
0
复位后
Bit 3
TC1X8:TC1 内部时钟选择控制位。
0 = TC1 内部时钟来自 Fcpu,TC1RATE = Fcpu/2~Fcpu/256;
1 = TC1 内部时钟来自 Fosc,TC1RATE = Fosc/1~Fosc/128。
’
Bit 2
-
Bit 1
-
Bit 0
-
注:TC1CKS = 1 时,TC1X8 和 TC1RATE 可以忽略不计。
SONiX TECHNOLOGY CO., LTD
Page 80
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.4.4 TC1C 计数寄存器
TC1C 控制 TC1 的时间间隔。
0DDH
TC1C
读/写
复位后
Bit 7
TC1C7
R/W
0
Bit 6
TC1C6
R/W
0
Bit 5
TC1C5
R/W
0
Bit 4
TC1C4
R/W
0
Bit 3
TC1C3
R/W
0
Bit 2
TC1C2
R/W
0
Bit 1
TC1C1
R/W
0
Bit 0
TC1C0
R/W
0
TC1C 初始值的计算公式如下:
TC1C 初始值 = N -(TC1 中断间隔时间 * 输入时钟)
N 为 TC1 二进制计数范围。各模式下参数的设定如下表所示:
TC1X8
PWM1 ALOAD1 TC1OUT N
TC1C 有效值
TC1CKS
0
1
1
1
1
0
1
1
1
1
-
0
(Fcpu/2~
Fcpu/256)
0
1
(Fosc/1~
Fosc/128)
1
¾
-
x
0
0
1
1
x
0
0
1
1
-
x
0
1
0
1
x
0
1
0
1
-
256
256
64
32
16
256
256
64
32
16
256
00H~0FFH
00H~0FFH
00H~3FH
00H~1FH
00H~0FH
00H~0FFH
00H~0FFH
00H~3FH
00H~1FH
00H~0FH
00H~0FFH
TC1C 二进制计数范围
00000000b~11111111b
00000000b~11111111b
xx000000b~xx111111b
xxx00000b~xxx11111b
xxxx0000b~xxxx1111b
00000000b~11111111b
00000000b~11111111b
xx000000b~xx111111b
xxx00000b~xxx11111b
xxxx0000b~xxxx1111b
00000000b~11111111b
备注
每计数 256 次溢出
每计数 256 次溢出
每计数 64 次溢出
每计数 32 次溢出
每计数 16 次溢出
每计数 256 次溢出
每计数 256 次溢出
每计数 64 次溢出
每计数 32 次溢出
每计数 16 次溢出
每计数 256 次溢出
例:TC1 的间隔时间为 10ms,时钟源来自 Fcpu(TC1CKS = 0,TC1X8 = 0),无 PWM 输出(PWM1 = 0),高
速时钟 = 4MHz,Fcpu=Fosc/4,TC1RATE=010(Fcpu/64)。
TC1C 初始值 = N - (TC1 中断间隔时间 * 输入时钟)
= 256 -(10ms * 4MHz / 4 / 64)
= 256 -(10-2 * 4 * 106 / 4 / 64)
= 100
= 64H
TC1 中断时间对应表,TC1X8 = 0
TC1RATE
TC1CLOCK
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
低速模式(fcpu = 32768Hz / 4)
单步间隔时间 = max/256
256 us
128 us
64 us
32 us
16 us
8 us
4 us
2 us
最大溢出间隔时间
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
TC1 中断时间对应表,TC1X8 = 1
TC1RATE
TC1CLOCK
000
001
010
011
100
101
110
111
Fosc/128
Fosc/64
Fosc/32
Fosc/16
Fosc/8
Fosc/4
Fosc/2
Fosc/1
高速模式(fcpu = 4MHz / 4)
最大溢出间隔时间
8.192 ms
4.096 ms
2.048 ms
1.024 ms
0.512 ms
0.256 ms
0.128 ms
0.064 ms
SONiX TECHNOLOGY CO., LTD
低速模式(fcpu = 32768Hz / 4)
单步间隔时间 = max/256
32 us
16 us
8 us
4 us
2 us
1 us
0.5 us
0.25 us
最大溢出间隔时间
1000 ms
500 ms
250 ms
125 ms
62.5 ms
31.25 ms
15.625 ms
7.813 ms
Page 81
单步间隔时间 = max/256
7812.5 us
3906.25 us
1953.125 us
976.563 us
488.281 us
244.141 us
122.07 us
61.035 us
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.4.5 TC1R 自动装载寄存器
TC1 的自动重装功能由 TC1M 的 ALOAD1 位控制。当 TC1C 溢出时,TC1R 的值自动装入 TC1C 中。这样,用户在
使用的过程中就不需要在中断中复位 TC1C。
TC1 为双重缓存器结构。若程序对 TC1R 进行了修改,那么修改后的 TC1R 值首先被暂存在 TC1R 的第一个缓存器
中,TC1 溢出后,TC1R 的新值就会被存入 TC1R 缓存器中,从而避免 TC1 中断时间出错以及 PWM 和蜂鸣器误动作。
’
注:在 PWM 模式下,系统自动开启自动重装功能,ALOAD1 用于控制溢出范围。
0DEH
TC1R
读/写
复位后
Bit 7
TC1R7
W
0
Bit 6
TC1R6
W
0
Bit 5
TC1R5
W
0
Bit 4
TC1R4
W
0
Bit 3
TC1R3
W
0
Bit 2
TC1R2
W
0
Bit 1
TC1R1
W
0
Bit 0
TC1R0
W
0
TC1R 初始值计算公式如下:
TC1R 初始值 = N -(TC1 中断间隔时间 * 输入时钟)
N 是 TC1 最大溢出值。TC1 的溢出时间和有效值见下表:
TC1CKS
0
1
¾
TC1X8
PWM1 ALOAD1 TC1OUT N
0
x
x
256
0
1
0
0
256
1
0
1
64
(Fcpu/2~
1
1
0
32
Fcpu/256)
1
1
1
16
0
x
x
256
1
0
0
256
1
(Fosc/1~
1
0
1
64
Fosc/128)
1
1
0
32
1
1
1
16
256
TC1R 有效值
00H~0FFH
00H~0FFH
00H~3FH
00H~1FH
00H~0FH
00H~0FFH
00H~0FFH
00H~3FH
00H~1FH
00H~0FH
00H~0FFH
TC1R 二进制有效范围
00000000b~11111111b
00000000b~11111111b
xx000000b~xx111111b
xxx00000b~xxx11111b
xxxx0000b~xxxx1111b
00000000b~11111111b
00000000b~11111111b
xx000000b~xx111111b
xxx00000b~xxx11111b
xxxx0000b~xxxx1111b
00000000b~11111111b
例:TC1 中断间隔时间设置为 10ms,时钟源选 Fcpu(TC1CKS=0,TC1X8 = 0),无 PWM 输出(PWM1=0),
高速时钟为外部 4MHz,Fcpu=Fosc/4,TC1RATE=010(Fcpu/64)。
TC1R 有效值 = N -(TC1 中断间隔时间 * 输入时钟)
= 256 -(10ms * 4MHz / 4 / 64)
= 256 -(10-2 * 4 * 106 / 4 / 64)
= 100
= 64H
SONiX TECHNOLOGY CO., LTD
Page 82
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.4.6
TC1 时钟频率输出(蜂鸣器输出)
对 TC1 时钟频率进行适当设置可得到特定频率的蜂鸣器输出(TC1OUT),并通过引脚 P5.3 输出。单片机内部设置
TC1 的溢出频率经过 2 分频后作为 TC1OUT 的频率,即 TC1 每溢出 2 次 TC1OUT 输出一个完整的脉冲,此时,P5.3 的
I/O 功能自动被禁止。TC1OUT 输出波形如下:
1
2
3
4
TC1溢出时钟
1
2
3
4
TC1OUT (Buzzer)输出时钟
若外部高速时钟选择 4MHz,系统时钟源采用外部时钟 Fosc/4,程序中设置 TC1RATE2~TC1RATE1 = 110, TC1C
= TC1R = 131,则 TC1 的溢出频率为 2KHz,TC1OUT 的输出频率为 1KHz。下面给出范例程序。
¾
’
例:设置 TC1OUT(P5.3)。
MOV
B0MOV
A,#01100000B
TC1M,A
MOV
B0MOV
B0MOV
A,#131
TC1C,A
TC1R,A
; 自动装载参考值设置。
B0BSET
B0BSET
B0BSET
FTC1OUT
FALOAD1
FTC1ENB
; TC1 的输出信号由 P5.3 输出,禁止 P5.3 的普通 I/O 功能。
; 使能 TC1 自动装载功能。
; 开启 TC1 定时器。
; TC1 速率 = Fcpu/4。
注:蜂鸣器的输出有效时,“PWM1OUT”必须被置为“0”。
SONiX TECHNOLOGY CO., LTD
Page 83
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.4.7 TC1 操作流程
TC1 定时器可用于定时器中断、事件计数、TC1OUT 和 PWM。下面分别举例说明。
)
停止 TC1 计数,禁止 TC1 中断并清 TC1 中断请求标志。
B0BCLR
B0BCLR
B0BCLR
)
; 停止 TC1 计数、TC1OUT 和 PWM。
; 禁止 TC1 中断。
; 清 TC1 中断请求标志。
设置 TC1 的速率 (不包含事件计数模式)。
MOV
B0MOV
)
FTC1ENB
FTC1IEN
FTC1IRQ
A, #0xxx0000b
TC1M,A
;TC1M 的 bit4~bit6 控制 TC1 的速率在 x000xxxxb~x111xxxxb。
; 禁止 TC1 中断。
FTC1CKS
; 内部时钟。
FTC1CKS
; 外部时钟。
FTC1X8
; Fcpu 内部时钟。
FTC1X8
; Fosc 内部时钟。
设置 TC1 的时钟源。
; 选择 TC1 内部/外部时钟源。
B0BCLR
或
B0BSET
;选择 TC1 Fcpu/Fosc 内部时钟源。
B0BCLR
或
B0BSET
’
)
注:在 TC1 外部时钟模式下,TC1X8 可以忽略不计。
设置 TC1 的自动装载模式。
B0BCLR
FALOAD1
; 禁止 TC1 自动装载功能。
B0BSET
FALOAD1
; 使能 TC1 自动装载功能。
或
)
设置 TC1 中断间隔时间,TC1OUT(Buzzer)频率或 PWM 占空比。
; 设置 TC1 中断间隔时间,TC1OUT(Buzzer)频率或 PWM 占空比。
MOV
A,#7FH
; TC1 的模式决定 TC1C 和 TC1R 的值。
B0MOV
TC1C,A
; 设置 TC1C 的值。
B0MOV
TC1R,A
; 在自动装载模式或 PWM 模式下设置 TC1R 的值。
; PWM 模式下设置 PWM 周期。
B0BCLR
B0BCLR
FALOAD1
FTC1OUT
; ALOAD1,TC1OUT = 00,PWM 周期 = 0~255。
B0BCLR
B0BSET
FALOAD1
FTC1OUT
; ALOAD1,TC1OUT = 01,PWM 周期 = 0~63。
B0BSET
B0BCLR
FALOAD1
FTC1OUT
; ALOAD1,TC1OUT = 10,PWM 周期 = 0~31。
B0BSET
B0BSET
FALOAD1
FTC1OUT
; ALOAD1,TC1OUT = 11,PWM 周期 = 0~15。
B0BSET
FTC1IEN
; 使能 TC1 中断。
B0BSET
FTC1OUT
; 使能 TC1OUT(Buzzer)功能。
B0BSET
FPWM1OUT
; 使能 PWM。
FTC1ENB
;
或
或
或
)
设置 TC1 的模式。
或
或
)
开启 TC1 定时器。
B0BSET
SONiX TECHNOLOGY CO., LTD
Page 84
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.5 PWM0 模式
8.5.1 概述
PWM 信号通过 PWM0OUT(P5.4 引脚)输出(256 阶)。8 位计数器 TC0C 计数过程中不断与 TC0R 相比较,当
TC0C 的值增加到与 TC0R 相等时,PWM 输出低电平,当 TC0C 的值溢出重新回到 0 时,PWM 被强制输出高电平。PWM0
输出占空比 = TC0R/ 256。
PWM 占空比范围
TC0C 有效值
TC0R 有效值
0/256~255/256
00H~0FFH
00H~0FFH
MAX. PWM 频率
(Fcpu = 4MHz)
7.8125K
备注
每计数 256 次溢出
PWM 输出占空比随 TC0R 的变化而变化:0/256~255/256。
0
1
128
……
……
254
255
0
1
……
128
……
254
255
TC0 Clock
Low
TC0R=00H
High
Low
TC0R=01H
High
Low
TC0R=80H
High
Low
TC0R=FFH
8.5.2 TC0IRQ 和 PWM0 输出占空比
在 PWM 模式下,TC0IRQ 的频率与 PWM 的占空比有关,具体情况如下图所示:
TC0 Overflow,
TC0IRQ = 1
0xFF
TC0C Value
0x00
PWM0 Output
(Duty Range 0~255)
SONiX TECHNOLOGY CO., LTD
Page 85
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.5.3
¾
’
¾
’
PWM0 编程举例
例:PWM0 输出设置。外部高速振荡器输出频率= 4MHZ,Fcpu = Fosc/4,PWM0 输出占空比= 30/256,输出频率
1KHZ,PWM 时钟源来自外部时钟,TC0 速率= Fcpu/4,TC0RATE2~TC0RATE0 = 110,TC0C = TC0R = 30。
MOV
B0MOV
A,#01100000B
TC0M,A
MOV
B0MOV
B0MOV
A,#30
TC0C,A
TC0R,A
; PWM 输出占空比=30/256。
B0BSET
B0BSET
FPWM0OUT
FTC0ENB
; PWM0 输出至 P5.4,禁止 P5.4 I/O 功能。
; 使能 TC0 定时器。
; TC0 速率=Fcpu/4。
注:TC0R 为只写寄存器,不能用 INCMS 和 DECMS 指令对其进行操作。
例:改变 TC0R 的内容。
MOV
B0MOV
A, #30H
TC0R, A
INCMS
NOP
B0MOV
B0MOV
BUF0
A, BUF0
TC0R, A
注:PWM0 可以在中断下工作。
8.5.4 PWM0 占空比注意事项
在 PWM 模式下,系统会随时比较 TC0C 和 TC0R 的值。如果 TC0C<TC0R,PWM 输出高电平,而当 TC0C≧TC0R
时则输出低电平。当 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 输出低电平。
’
注:若要在程序处理过程中设置 PWM 的占空比,必须得在下一个周期开始时进行。
SONiX TECHNOLOGY CO., LTD
Page 86
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.6 PWM1 模式
8.6.1 概述
PWM 的功能由定时/计数器 TC1 产生,PWM 信号通过 PWM1OUT(P5.3 引脚)输出,8 位计数器的计数系数为 256
位。8 位计数器 TC1C 计数过程中不断与 TC1R 相比较,当 TC1C 的值增加到与 TC1R 相等时,PWM 输出低电平,当
TC1C 的值溢出重新回到 0 时,PWM 被强制输出高电平。PWM1 输出占空比 = TC1R/ 256。
PWM 占空比范围
TC1C 有效值
TC1R 有效值
0/256~255/256
00H~0FFH
00H~0FFH
MAX. PWM 频率
(Fcpu = 4MHz)
7.8125K
备注
每计数 256 次溢出
PWM 输出占空比随 TC1R 的变化而变化:0/256~255/256。
0
1
128
……
……
254
255
0
1
……
128
……
254
255
TC1 Clock
TC1R=00H
TC1R=01H
Low
High
Low
High
TC1R=80H
TC1R=FFH
SONiX TECHNOLOGY CO., LTD
Low
High
Low
Page 87
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.6.2 TC1IRQ 和 PWM 占空比
在 PWM 模式下,TC1IRQ 的频率与 PWM 的占空比有关,具体情况如下图所示:.
TC1 Overflow,
TC1IRQ = 1
0xFF
TC1C Value
0x00
PWM1 Output
(Duty Range 0~255)
8.6.3 PWM 编程举例
¾
’
¾
’
例:PWM1 输出设置。外部高速振荡器输出频率 = 4MHZ,Fcpu = Fosc/4,PWM1 输出占空比 = 30/256,输出频
率 1KHZ,PWM1 时钟源来自外部时钟,TC1 速率 = Fcpu/4,TC1RATE2~TC1RATE0 = 110,TC1C = TC1R = 30。
MOV
B0MOV
A,#01100000B
TC1M,A
MOV
B0MOV
B0MOV
A,#30
TC1C,A
TC1R,A
; 设置 PWM 占空比为 30/256。
B0BSET
B0BSET
FPWM1OUT
FTC1ENB
; PWM1 输出至 P5.3,禁止 P5.3 I/O 功能。
; 启动 TC1 定时器。
; 设置 TC1 速率为 Fcpu/4
注:TC1R 为只写寄存器,不能用 INCMS 和 DECMS 指令对其进行操作。
例:改变 TC1R 的内容。
MOV
B0MOV
A, #30H
TC1R, A
INCMS
NOP
B0MOV
B0MOV
BUF0
A, BUF0
TC1R, A
注:PWM1 可以在中断下工作。
SONiX TECHNOLOGY CO., LTD
Page 88
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
8.6.4 PWM1 占空比注意事项
在 PWM 模式下,系统会随时比较 TC1C 和 TC1R 的值。如果 TC1C<TC1R,PWM 输出高电平,而当 TC1C≧TC1R
时则输出低电平。当 TC1C 发生改变的时候,PWM 的占空比也随着改变,如果 TC1R 保持恒定,那么 PWM 输出波形也
保持稳定。
TC1C = TC1R
TC1C overflow
and TC1IRQ set
0xFF
TC1C Value
0x00
PWM1 Output
Period
1
2
SONiX TECHNOLOGY CO., LTD
3
4
5
Page 89
6
7
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
9
4x32 LCD 驱动
9.1 概述
SN8P2808 内置两种类型的 LCD 驱动模块,一种为 4x32(4 个 com 口和 32 个 seg 口,共 128 点)的 LCD 驱动,
支持 1/4 占空比和 1/3 偏压的 LCD 面板,另一种为 8x28(8 个 com 口和 28 个 seg 口,共 224 点)的 LCD 驱动,支持
1/8 占空比和 1/4 偏压的 LCD 面板。LCD 帧速率为 64Hz(32768Hz/512 = 64Hz),可选择外部 32768Hz 晶振或 RC 振
荡电路作为时钟源。用户可在 VLCD/V2/V1 间增加电阻以取得较大的驱动电流。
VDD
10pF
LXIN
0.1uF
VLCD
32768Hz
10pF
100Kohm
0.1uF
LXOUT
VSS
V4
COM0~COM3
LCD
PANEL
100Kohm
0.1uF
MCU
V3
100Kohm
0.1uF
SEG0~SEG31
V2
100Kohm
V1
VSS
VSS
Optional
基本 LCD 电路
SONiX TECHNOLOGY CO., LTD
Page 90
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
9.2 LCD 寄存器
0CBH
LCDM
读/写
复位后
Bit 7
-
Bit 6
-
Bit 5
-
Bit 4
COMSEL
R/W
0
Bit 3
RCLK
R/W
0
Bit 4
COMSEL: LCD COM 选择位。
1 = 设置 LCD 为 4 COM * 32 SEG;
0 = 设置 LCD 为 8 COM * 28 SEG 。
Bit 3
RCLK:外部低速时钟的类型选择位。
0 = 32768Hz 石英/陶瓷,分别连接到 LXIN、LXOUT 引脚;
1 = RC 振荡电路。
Bit 2
P2SEG:Seg24~Seg31 与 P2.0~P2.7 共享的控制位。
0 = 为 Seg24~Seg 31 引脚;
1 = 为 P2.0~P2.7 引脚。
Bit 1
BIAS:LCD 偏压控制位。
0 = 1/4 偏压;
1 = 1/3 偏压。
Bit 0
LCDENB:LCD 控制位。
0 = 禁止;
1 = 启动。
’
Bit 2
P2SEG
R/W
0
Bit 1
BIAS
R/W
0
Bit 0
LCDENB
R/W
0
注:Segment 24~Segment 31 引脚和 P2.0~P2.7 引脚共享,当这些引脚作为普通的 I/O 口时,LCDM 的 P2SEG 位必须置 1。
SONiX TECHNOLOGY CO., LTD
Page 91
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
9.3 LCD 设置
在 4*32 LCD 模式下,COM0~COM3 和 SEG0~SEG31 有效,在 8*24 LCD 模式下,
COM0~COM7 和 SEG4~SEG31
有效,用户可根据自己的 LCD 面板,选择不同的 LCD 点数(dots)。另外,单片机还提供不同的偏压值:1/3 和 1/4。以
上这些设置所需的电阻电路已集成在单片机内部,因而在实际应用中,用户只需将 V1/V2/V3 与 0.1uF 的电容连接。
10pF
LXIN
10pF
LXIN
VLCD
VLCD
32768Hz
10pF
32768Hz
200Kohm
LXOUT
10pF
VSS
150Kohm
LXOUT
VSS
V4
V4
150Kohm
200Kohm
COM0~COM8
COM0~COM3
V3
V3
150Kohm
LCD
PANEL
SEG0~SEG31
V2
LCD
PANEL
SEG4~SEG31
V2
150Kohm
200Kohm
V1
V1
VSS
VSS
1/3 bias, 1/4 duty, LCD Circuit.
1/4 bias, 1/8 duty, LCD Circuit.
P2SEG 位可以设置 SEG24~SEG31 与 P2 口共享的引脚为 LCD 的 seg 口或普通 I/O 口。当 P2SEG=0 时,这些引
脚为 LCD 应用引脚,VLCD1 与 VLCD 相连接;当 P2SEG=1 时,这些引脚为 I/O 应用引脚,VLCD1 与 VDD 相连接。
LCD Panel
SEG0~23
VLCD
SEG0~23
LCD Panel
MCU
SEG24~31
VLCD1
VLCD1
MCU
VDD
P2SEG=0
SONiX TECHNOLOGY CO., LTD
Port 2.0~2.7
..
VLCD
LCD Panel
VDD
P2SEG=1
Page 92
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
’
注:
1.
2.
¾
1/3 偏压下, V3 与 V2 相连接。
在 VLCD/V1/V2/V3/V4 引脚接上 0.1uF 电容可保证电压的稳定。
例:设置 LCD 模式。
;R 型模式。
; 设置 LCD 32768Hz 时钟源类型。
B0BCLR
FRCLK
; 石英/陶瓷振荡器。
B0BSET
FRCLK
; RC 振荡器。
B0BCLR
FBIAS
; 1/4 偏压。
B0BSET
; 设置 LCD COM。
B0BCLR
FBIAS
; 1/3 偏压。
或
; 设置 LCD 偏压。
或
FCOMSEL
; 设置为 8 COM * 28 SEG。
B0BSET
FCOMSEL
; 设置为 4 COM * 32 SEG。
B0BCLR
FP2SEG
; 使能 Seg24~Seg 31 引脚。
B0BSET
FP2SEG
;.使能 P2.0~P2.7 引脚。
B0BSET
FLCDENB
; 开启 LCD 驱动功能。
或
; Set LCD P2SEG.
或
; 开启 LCD 功能。
SONiX TECHNOLOGY CO., LTD
Page 93
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
9.4 LCD RAM 分配
LCD 的点数(dots)由 LCD RAM bank15 控制,使用间接寻址(bank0)或者直接寻址(bank15)访问 LCD RAM。
由 LCD SEG 决定 LCD RAM 的分配放置。一个 SEG 地址包括 4 个 COM 数据。COM0 ~ COM7 是一个 LCD RAM 的低
字节数据(bit0 ~ bit7)。LCD RAM 的分配如下表所示:
RAM bank 15 地址 vs. Common/Segment 位置
RAM
Bit
0
1
2
3
4
5
6
7
地址
LCD
COM0
COM1
COM2
COM3
COM4
COM5
COM
COM
00h
01h
02h
03h
04h
.
.
0Ch
0Dh
0Eh
0Fh
10h
.
.
.
1Bh
1Ch
1Dh
1Eh
1Fh
SEG0
SEG1
SEG2
SEG3
SEG4
.
.
SEG12
SEG13
SEG14
SEG15
SEG16
.
.
.
SEG27
SEG28
SEG29
SEG30
SEG31
00h.0
01h.0
02h.0
03h.0
04h.0
.
.
0Ch.0
0Dh.0
0Eh.0
0Fh.0
10h.0
.
.
.
1Bh.0
1Ch.0
1Dh.0
1Eh.0
1Fh.0
00h.1
01h.1
02h.1
03h.1
04h.1
.
.
0Ch.1
0Dh.1
0Eh.1
0Fh.1
10h.1
.
.
.
1Bh.1
1Ch.1
1Dh.1
1Eh.1
1Fh.1
00h.2
01h.2
02h.2
03h.2
04h.2
.
.
0Ch.2
0Dh.2
0Eh.2
0Fh.2
10h.2
.
.
.
1Bh.2
1Ch.2
1Dh.2
1Eh.2
1Fh.2
00h.3
01h.3
02h.3
03h.3
04h.3
.
.
0Ch.3
0Dh.3
0Eh.3
0Fh.3
10h.3
.
.
.
1Bh.3
1Ch.3
1Dh.3
1Eh.3
1Fh.3
.
.
.
.
04h.4
.
.
0Ch.4
0Dh.4
0Eh.4
0Fh.4
10h.4
.
.
.
1Bh.4
1Ch.4
1Dh.4
1Eh.4
1Fh.4
.
.
.
.
04h.5
.
.
0Ch.5
0Dh.5
0Eh.5
0Fh.5
10h.5
.
.
.
1Bh.5
1Ch.5
1Dh.5
1Eh.5
1Fh.5
.
.
.
.
04h.6
.
.
0Ch.6
0Dh.6
0Eh.6
0Fh.6
10h.6
.
.
.
1Bh.6
1Ch.6
1Dh.6
1Eh.6
1Fh6.
.
.
.
.
04h.7
.
.
0Ch.7
0Dh.7
0Eh.7
0Fh.7
10h.7
.
.
.
1Bh.7
1Ch.7
1Dh.7
1Eh.7
1Fh.7
¾
¾
’
例:通过间接寻址@YZ bank0 设置 LCD RAM。
B0MOV
CLR
Y, #0FH
Z
; 设置@YZ 指向 LCD RAM 的地址 1500H。
MOV
B0MOV
A, #00001010B
@YZ, A
; 设置 SEG0 的 COM0=0,COM1=1,COM=0,COM3=1。
INCMS
…
…
Z
; 指向下一个 segment 地址。
例:通过直接寻址 bank15 设置 LCD RAM。
MOV
B0MOV
A, #15
RBANK, A
; 切换到 RAM bank 15。
MOV
MOV
A, #00001010B
00H, A
; 设置 SEG0 的 COM0=0,COM1=1,COM=0,COM3=1。
BCLR
BSET
…
…
01H.0
01H.1
; 清 SEG 1 的 COM0=0。
; 设置 SEG 1 的 COM1=1。
MOV
B0MOV
A, #0
RBANK, A
; 切换到 RAM bank 0。
注:用指令“B0XXX”来访问 RAM Bank0(系统寄存器和用户自定义的 RAM 0000H~007FH)。
SONiX TECHNOLOGY CO., LTD
Page 94
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
9.5 LCD 时间及波形
F-frame =外部低速时钟/ 512
Ex. 外部低速时钟为 2768Hz. F-frame 为 32768Hz/512 = 64Hz.
注: LCD 驱动时钟源为外部低速时钟。
1/3 偏压, 1/4 占空比。
LCD Clock
1 Frame
1 Frame
VLCD
2/3*VLCD
COM0
1/3*VLCD
VSS
VLCD
2/3*VLCD
COM1
1/3*VLCD
VSS
VLCD
2/3*VLCD
COM2
1/3*VLCD
VSS
VLCD
2/3*VLCD
COM3
1/3*VLCD
VSS
VLCD
2/3*VLCD
SEG0 (1010b)
1/3*VLCD
VSS
OFF
ON
OFF
ON
OFF
ON
OFF
ON
VLCD
2/3*VLCD
SEG0 (0101b)
1/3*VLCD
VSS
ON
OFF
ON
SONiX TECHNOLOGY CO., LTD
OFF
ON
OFF
ON
OFF
Page 95
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
1/4 偏压, 1/8 占空比。
LCD Clock
1 Frame
1 Frame
COM0
VLCD
3/4*VLCD
1/2*VLCD
1/4*VLCD
VSS
COM1
VLCD
3/4*VLCD
1/2*VLCD
1/4*VLCD
VSS
.
.
.
COM6
VLCD
3/4*VLCD
1/2*VLCD
1/4*VLCD
VSS
COM7
VLCD
3/4*VLCD
1/2*VLCD
1/4*VLCD
VSS
VLCD
3/4*VLCD
1/2*VLCD
1/4*VLCD
VSS
SEG0 (10101010b)
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
VLCD
3/4*VLCD
1/2*VLCD
1/4*VLCD
VSS
SEG0 (01010101b)
1
0
1
0
1
0
SONiX TECHNOLOGY CO., LTD
1
0
1
0
1
0
1
0
1
0
Page 96
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
10 8+1 通道 ADC
10.1 概述
SN8P2808 的模数转换(A/D)模块可以提供 8 个外部输入通道(AIN0~AIN7)和 1 个内部对地(VSS)偏移量检测
A/D 通道,高达 4096 阶的分辨率,能将一个模拟信号转换成相应的 12 位数字信号。进行 AD 转换时,首先要选择输入通
道(AIN0~AIN7),然后将 GCHS 和 ADS 置为“1”,并启动 AD 转换。当 AD 转换结束后,系统会自动的把 EOC 置为
“1”,并将转换结果存入寄存器 ADB 和 ADR 的低位半字节中。
AIN0/P4.0
AIN1/P4.1
AIN2/P4.2
AIN3/P4.3
AIN4/P4.4
A/D转换
(ADC)
数
据
总
线
12位
AIN5/P4.5
AIN6/P4.6
AIN7/P4.7
AIN8
内部VSS通道
SONiX TECHNOLOGY CO., LTD
Page 97
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
10.2 ADM 寄存器
0B1H
ADM
读/写
复位后
Bit 7
ADENB
R/W
0
Bit 6
ADS
R/W
0
Bit 5
EOC
R/W
0
Bit 4
GCHS
R/W
0
Bit 3
CHS3
R/W
0
Bit 2
CHS2
R/W
0
Bit 1
CHS1
R/W
0
Bit 7
ADENB:ADC 控制位。
0 = 禁止;
1 = 允许。
Bit 6
ADS:ADC 启动位 。
0 = 停止;
1 = 转换开始。
Bit 5
EOC:ADC 状态控制位。
0 = 转换过程中;
1 = 转换结束,ADS 复位。
Bit 4
GCHS:ADC 输入通道控制位。
0 = 禁止 AIN 通道;
1 = 允许 AIN 通道。
Bit[2:0]
CHS[3:0]: ADC 输入通道选择位。
0000 = AIN0;0001 = AIN1;0010 = AIN2;0011 = AIN3;0100 = AIN4;0101 = AIN5;
0110 = AIN6;0111 = AIN7;1000 = AIN8 为内部对地偏移量检测通道。
Bit 0
CHS0
R/W
0
AIN8 为内部 VSS 输入通道,无外部输入,AIN8 可以不通过外部电路而检测 ADC 偏移量。
注:若 ADENB = 1,用户应设置 P4.n/AINn 为输入模式,且禁止上拉电阻,系统不会自动设置。若已经设置了 P4CON.n,P4.n/AINn
的数字功能(包括上拉电阻)被隔离。
’
10.3 ADR 寄存器
0B3H
ADR
读/写
复位后
Bit[6,4]
Bit 6
ADCKS1
R/W
0
Bit 5
ADLEN
R/W
0
Bit 4
ADCKS0
R/W
0
Bit 3
ADB3
R
-
Bit 2
ADB2
R
-
Bit 1
ADB1
R
-
Bit 0
ADB0
R
-
ADCKS1, ADCKS0: ADC 时钟源选择位。
ADCKS1 ADCKS0 ADC 时钟源
0
0
Fcpu/16
0
1
Fcpu/8
1
0
Fcpu
1
1
Fcpu/2
ADLEN:ADC 分辨率选择位。
0 = 8 位;
1 = 12 位。
Bit 5
Bit[3:0]
’
Bit 7
-
ADB[3:0]:存储 12 位 ADC 转换结果的低 4 位。
注:寄存器 ADR 的 ADB[3:0]的初始值是未知的。
SONiX TECHNOLOGY CO., LTD
Page 98
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
10.4 ADB 寄存器
0B2H
ADB
Bit 7
Bit 6
Bit 5
Bit 4
ADB15
ADB14
ADB13
ADB12
读/写
R
R
R
R
复位后
Bit[7:0]
ADB[7:0]:ADC 12 位分辨率的高字节数据缓存器。
Bit 3
ADB11
R
-
Bit 2
ADB10
R
-
Bit 1
ADB9
R
-
Bit 0
ADB8
R
-
8 位数据缓存器 ADB 用来保存 AD 转换结果的高 8 位(bit4~bit11),转换结果的低 4 位则保存在 ADR 寄存器中。
ADB 为只读寄存器,在 8 位 ADC 模式下,AD 转换结果保存在寄存器 ADB 中;在 12 位模式下,则分别保存在寄存器 ADB
和 ADR 中。
AIN 的输入电压 v.s. ADB 的输出数据
AIN n
0/4096*VREFH
1/4096*VREFH
.
.
.
4094/4096*VREFH
4095/4096*VREFH
ADB11
0
0
.
.
.
1
1
ADB10
0
0
.
.
.
1
1
ADB9
0
0
.
.
.
1
1
ADB8
0
0
.
.
.
1
1
ADB7
0
0
.
.
.
1
1
ADB6
0
0
.
.
.
1
1
ADB5
0
0
.
.
.
1
1
ADB4
0
0
.
.
.
1
1
ADB3
0
0
.
.
.
1
1
ADB2
0
0
.
.
.
1
1
ADB1
0
0
.
.
.
1
1
ADB0
0
1
.
.
.
0
1
针对不同的应用,用户可能需要精度介于 8 位到 12 位之间的 AD 转换器。对于这种情况,可以通过对保存在 ADR 和
ADB 中的转换结果进行处理得到。首先,用户必须选择 12 位分辨率的模式,进行 AD 转换,然后在转换结果中去掉最低
的几位得到需要的结果。如下表所示:
ADC 分辨率
ADB11 ADB10 ADB9
8-bit
O
O
O
9-bit
O
O
O
10-bit
O
O
O
11-bit
O
O
O
12-bit
O
O
O
O = 可选位,x = 未使用的位
’
ADB
ADB8 ADB7
O
O
O
O
O
O
O
O
O
O
ADB6
O
O
O
O
O
ADB5
O
O
O
O
O
ADB4
O
O
O
O
O
ADB3
x
O
O
O
O
ADR
ADB2 ADB1
x
x
x
x
O
x
O
O
O
O
ADB0
x
x
x
x
O
注:寄存器 ADB 各位的初始值是未知的。
10.5 P4CON 寄存器
P4 口和 ADC 的输入口共享。同一时间只能设置 P4 口的一个引脚作为 ADC 的测量信号输入口(通过 ADM 寄存器来
设置),其它引脚则作为普通 I/O 使用。具体应用中,当输入一个模拟信号到 CMOS 结构端口,尤其当模拟信号为 1/2 VDD
时,将可能产生额外的漏电流。同样,当 P4 口外接多个模拟信号时,也会产生额外的漏电流。在睡眠模式下,上述漏电
流会严重影响到系统的整体功耗。P4CON 为 P4 口的配置寄存器。将 P4CON[7:0]置"1",其对应的 P4 口将被设置为纯模
拟信号输入口,从而避免上述漏电流的情况。
0AEH
P4CON
读/写
复位后
Bit[4:0]
’
Bit 7
P4CON7
R/W
0
Bit 6
P4CON6
R/W
0
Bit 5
P4CON5
R/W
0
Bit 4
P4CON4
R/W
0
Bit 3
P4CON3
R/W
0
Bit 2
P4CON2
R/W
0
Bit 1
P4CON1
R/W
0
Bit 0
P4CON0
R/W
0
P4CON[4:0]: P4.n 配置控制位。
0 = P4.n 作为模拟输入(ADC 输入)引脚或者数字 I/O 引脚;
1 = P4.n 只能作为模拟输入引脚,不能作为数字 I/O 引脚。
注:当 P4.n 为基本 I/O 而不是 ADC 通道时,P4CON.n 必须置“0”,否则 P4.n 的数字 I/O 信号会被隔离。
SONiX TECHNOLOGY CO., LTD
Page 99
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
10.6 VREFH 寄存器
单片机的(AVREFH)引脚可以输入外部电压源作为 ADC 输入参考高电平, 用户可通过此引脚输入的电压或内部参考
电压作为 ADC 参考电压。当用户使用内部参考电压时,AVREFH 可通过 VHS[1:0]选择设置为 VDD, 4V, 3V, 2V。
’
注:
a. ADC 分辨率为 12 位时可选择内部 VDD 或外部电压源作为参考高电压。
b. 无论 REFH 如何设置,在 AVREFH 引脚上接上 0.1uF 的电容。
c. AVREFH 引脚输出电压由 VHS[1:0]设置决定,可以为 VDD, 4V, 3V, 2V( REFS= GCHS=1 的条件下)。
0AFH
VREFH
Bit 7
REFS
R/W
0
读/写
复位后
Bit[1:0]
’
Bit[7]
Bit 6
-
Bit 5
-
Bit 4
-
Bit 3
-
Bit 2
-
Bit 1
VHS1
R/W
0
Bit 0
VHS0
R/W
0
VHS[1:0]:ADC 内部参考高电平选择位。
VHS0 VREFH 参考电压
VHS1
1
1
VDD
1
0
4.0V
0
1
3.0V
0
0
2.0V
注:如果由 VHS[1:0]选择的 VREFH 电压高于 VDD,则内部 VREFH 为 VDD。例如,VHS1:0]为 10(选择内部 VREFH = 4.0V),
而 VDD 为 3.0V,则实际上 VREFH 等于 VDD(3.0V)。
REFS:ADC 内部参考高电压控制位。
1 = 选择单片机内部参考电压 VREFH,AVREFH 将输出 VHS[1:0]设置的电压。
0 = 不选择单片机内部参考电压 VREFH,将 AVREFH 连接到外部电压源。
10.7 ADC 转换时间
12 位 AD 转换时间 = 1/(ADC clock /4)*16 sec
High Clock (Fosc) =
Fcpu
ADCKS1
Fosc/ 1
Fosc/ 2
Fosc/ 4
Fosc/ 8
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
4MHz
ADCKS0
ADC Clock
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Fcpu/16
Fcpu/8
Fcpu
Fcpu/2
Fcpu/16
Fcpu/8
Fcpu
Fcpu/2
Fcpu/16
Fcpu/8
Fcpu
Fcpu/2
Fcpu/16
Fcpu/8
Fcpu
Fcpu/2
SONiX TECHNOLOGY CO., LTD
ADC 转换时间
1/(
1/(
1/(
1/(
1/(
1/(
1/(
1/(
1/(
1/(
1/(
1/(
1/(
1/(
1/(
1/(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
4MHz
4MHz
4MHz
4MHz
4MHz
4MHz
4MHz
4MHz
4MHz
4MHz
4MHz
4MHz
4MHz
4MHz
4MHz
4MHz
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
1
1
1
1
2
2
2
2
4
4
4
4
8
8
8
8
Page 100
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
16
8
1
2
16
8
1
2
16
8
1
2
16
8
1
2
/4
/4
/4
/4
/4
/4
/4
/4
/4
/4
/4
/4
/4
/4
/4
/4
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
x16=
x16=
x16=
x16=
x16=
x16=
x16=
x16=
x16=
x16=
x16=
x16=
x16=
x16=
x16=
x16=
256
128
16
32
512
256
32
64
1024
512
64
128
2048
1024
128
256
us
us
us
us
us
us
us
us
us
us
us
us
us
us
us
us
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
10.8 ADC 操作实例
¾
例:设置 AIN0 为 12 位 ADC,VREFH 选择内部 3.0V,ADC 时钟源为 Fcpu。
; 使能 ADC 功能,并延迟 100u 为 AD 转换做准备。
ADC0:
B0BSET
FADENB
CALL
Delay100uS
; 设置 P4 口为 I/O 模式。
MOV
A, #0FEH
B0MOV
P4UR, A
B0BCLR
FP40M
; 或
MOV
A, #01H
B0MOV
P4CON, A
; 设置 VREFH 为内部 3.0V。
MOV
A, #081H
B0MOV
VREFH, A
; 设置 ADC 时钟源 = Fcpu.
MOV
A, #40H
B0MOV
ADR, A
; 允许 ADC (P4.0)。
MOV
A, #90H
B0MOV
ADM,A
; 开始转换。
B0BSET
FADS
WADC0:
B0BTS1
FEOC
JMP
WADC0
B0MOV
A, ADB
B0MOV
Adc_Buf_Hi, A
B0MOV
A, ADR
AND
A, 0FH
B0MOV
Adc_Buf_Low, A
End_ADC:
.
B0BCLR
FADENB
SONiX TECHNOLOGY CO., LTD
; 使能 ADC 电路。
; 延迟 100us 等待 ADC 电路开始转换。
; 禁止 P4.0 上拉电阻。
; 设置 P4.0 为输入模式。
; 设置 P4.0 为模拟输入模式。
; 设置内部 3.0V 为 VREFH。
; ADC 时钟源 = Fcpu。
; 允许 ADC 并设置 AIN0 输入。
;
; 检测是否转换结束。
; 没有结束,跳至 WADC0
; 结束,取得 AIN0 输入数据的 bit11 ~ bit4。
; 取得 AIN0 输入数据的 bit3 ~ bit0。
; 关闭 AD 转换。
Page 101
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
¾
例:设置 AIN1 为 12 位 ADC, VREFH 选择 AVREFH 引脚输入的外部电压源作为 ADC 参考电压,ADC 时钟源为
Fcpu,使用 ADC 中断处理结果。
; 使能 ADC 功能,并延迟 100u 为 AD 转换做准备。
ADC0:
B0BSET
FADENB
CALL
Delay100uS
; 使能 ADC 电路。
; 延迟 100us 等待 ADC 电路开始转换。
; 设置 P4 口为 I/O 模式。
MOV
B0MOV
B0BCLR
; 或
MOV
B0MOV
A, #0FDH
P4UR, A
FP41M
; 禁止 P4.1 上拉电阻。
; 设置 P4.1 为输入模式。
A, #02H
P4CON, A
; 设置 P4.1 为模拟输入模式。
; 设置 VREFH 为外部输入电压。
B0BCLR
FREFS
; 使能外部参考输入源。
; 设置 ADC 时钟源 = Fcpu。
MOV
B0MOV
A, #40H
ADR, A
; ADC 时钟源 = Fcpu。
; 使能 AIN0 (P4.1)。
MOV
B0MOV
A, #91H
ADM,A
; 使能 ADC,并选择 AIN1 为输入引脚。
B0BCLR
B0BSET
B0BSET
FADCIRQ
FADCIEN
FGIE
; 清 ADC 中断请求标志位。
; 使能 ADC 中断允许控制位。
; 使能全局中断控制位。
B0BSET
…
…
…
FADS
; 开始转换。
FADCIRQ
ADC_INT_EXIT
FADCIRQ
A, ADB
Adc_Buf_Hi, A
A, ADR
A, 0FH
Adc_Buf_Low, A
FADENB
; 检测是否有 ADC 中断请求标志位。
; 设置 ADC 中断。
; 开始 AD 转换。
ADC_INT_SR:
PUSH
B0BTS1
JMP
B0BCLR
B0MOV
B0MOV
B0MOV
AND
B0MOV
B0BCLR
ADC_INT_EXIT:
; 清 ADC 中断请求标志位。
; 得到 AIN1 通道转换数据的 bit11 ~ bit4。
; 得到 AIN1 通道转换数据的 bit3 ~ bit0。
; 关闭 AD 转换。
.
POP
RETI
SONiX TECHNOLOGY CO., LTD
Page 102
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
10.9 ADC 电路
AINn/P4.n
模拟信号输入
0.1uF
VSS
0.1uF
VDD
47uF
VCC
GND
ADC 参考高电压为内部参考电压,VREFH 引脚为 AIN0/P4.0 模式,AINn/P4.n 与 VSS 之间的 0.1uF 的电容可以用
来稳定模拟信号。
A IN n/P 4.n
模拟信号输入
0.1uF
VSS
MCU
V R E FH
0.1uF
VDD
47uF
VCC
GND
ADC 参考高电压来自 VDD 引脚,AIN0/P4.0 引脚为 VREFH 输入引脚。VREFH 需来自单片机的 VDD 引脚。请不要
将其接在主电源上。
AINn/P4.n
模拟信号输入
0.1uF
VSS
MCU
VREFH
参考高电压输入
VDD
47uF
0.1uF
VCC
GND
ADC 参考高电压来自外部电压,AIN0/P4.0 引脚为 VREFH 输入引脚。在 VREFH 与 VSS 之间接 47uF 的电容以稳
定 VREFH 的电压。
SONiX TECHNOLOGY CO., LTD
Page 103
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
11 指令表
指令
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
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”只支持 80H~87H 之间的寄存器 (如 PFLAG,R,Y,Z…)
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
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
1
1+N
1
1+N
1+N
1
1
1+N
1
1+N
1
MUL
A,M
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
R, A ← A * M,乘积低字节存放到 ACC,高字节存放在系统寄存器 R 中,ZF 标志位受 ACC 内
容影响
-
-
√
2
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 and M
M ← A and M
A ← A and I
A ← A or M
M ← A or M
A ← A or I
A ← A xor M
M ← A xor M
A ← A xor 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 ← RRC M
M ← RRC M
A ← RLC M
M ← RLC M
M←0
M.b ← 0
M.b ← 1
M(bank 0).b ← 0
M(bank 0).b ← 1
√
√
√
√
-
-
√
√
√
√
√
√
√
√
√
-
1
1+N
1
1+N
1
1+N
1
1+N
1+N
1+N
1+N
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
ZF,C ← A - I, 如果 A = I,则跳过下一条指令
ZF,C ← A – M, 如果 A = M,则跳过下一条指令
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
√
-
√
-
√
-
2
2
1
1
1
PC ← Stack
PC ← Stack,使能全局中断控制位
进栈操作,保存 ACC 和 PFLAG (除 NT0, NPD 位)
出栈操作,恢复 ACC 和 PFLAG (除 NT0, NPD 位)
空指令,无特别意义
注: 1.“M”是系统寄存器或 RAM,若是系统寄存器,则 N = 0,否则 N = 1。
2. 若满足跳转条件,S = 1,否则 S = 0。
M
I
S
C
RET
RETI
PUSH
POP
NOP
SONiX TECHNOLOGY CO., LTD
Page 104
Version 1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
12 电气特性
12.1 极限参数
Supply voltage (Vdd)………………………………………………………………………………….……………… - 0.3V ~ 6.0V
Input in voltage (Vin)………………………………………………………………………………….… Vss – 0.2V ~ Vdd + 0.2V
Operating ambient temperature (Topr)
SN8P2808Q,SN8P2807Q,SN8P2807X,SN8P2807P ………………………………………………
0°C ~ + 70°C
SN8P2808QD,SN8P2807QD,SN8P2807XD,SN8P2807PD………………………………………… –40°C ~ +
85°C
Storage ambient temperature (Tstor) ………………………………………………………………….……… –40°C ~ + 125°C
12.2 电气特性
(All of voltages refer to Vss, Vdd = 5.0V, fosc = 4MHz, ambient temperature is 25°C unless otherwise note.)
PARAMETER
Operating voltage
RAM Data Retention voltage
Internal POR
SYM.
Vdd
Reset pin leakage current
Vdr
Vpor
ViL1
ViL2
ViH1
ViH2
Ilekg
I/O port pull-up resistor
Rup
I/O port input leakage current
Port0, Port1, Port 4, Port 5 output
source current
sink current
INTn trigger pulse width
AVREFH input voltage
AIN0 ~ AIN7 input voltage
Ilekg
Input Low Voltage
Input High Voltage
ADC Clock Frequency
IoH
IoL
Tint0
Varfh
Vani
FADCLK
ADC Conversion Cycle Time
ADC Sampling Rate
(Set FADS=1 Frequency)
Differential Nonlinearity
Integral Nonlinearity
No Missing Code
FADCYL
FADSMP
ADC enable time
Tast
ADC current consumption
IADC
DNL
INL
NMC
Idd1
Idd2
Idd3
Supply Current
(Disable ADC)
Idd4
Idd5
Idd6
LVD Voltage
Vdet0
Vdet1
Vdet2
DESCRIPTION
Normal mode, Vpp = Vdd
Programming mode, Vpp = 12.5V
Vdd rise rate to ensure internal power-on reset
All input ports
Reset pin
All input ports
Reset pin
Vin = Vdd
Vin = Vss , Vdd = 3V
Vin = Vss , Vdd = 5V
Pull-up resistor disable, Vin = Vdd
Vop = Vdd - 0.5V
Vop = Vss + 0.5V
INT0 ~ INT1 interrupt request pulse width
Vdd = 5.0V
Vdd = 5.0V
MIN.
2.4
1.5
0.05
Vss
Vss
0.7Vdd
0.9Vdd
100
50
-
TYP.
5.0
5.0
200
100
-
MAX.
5.5
UNIT
0.3Vdd
0.2Vdd
Vdd
Vdd
2
300
180
2
V
V/ms
V
V
V
V
uA
KΩ
KΩ
uA
V
9
-
-
mA
10
2/fcpu
2V
0
-
Vdd
Varfh
mA
Cycle
V
V
8M
5M
Hz
Hz
1/FADCLK
K/sec
K/sec
LSB
LSB
Bits
VDD=5.0V
VDD=3.0V
VDD=2.4V~5.5V
VDD=5.0V
VDD=3.0V
VDD=5.0V , AVREFH=3.2V, FADSMP =7.8K
VDD=5.0V , AVREFH=3.2V, FADSMP =7.8K
VDD=5.0V , AVREFH=3.2V, FADSMP =7.8K
32K
32K
64
±1
±2
8
±2
±4
10
125
80
±16
±16
12
Ready to start convert after set ADENB = “1”
Vdd=5.0V
Vdd=3.0V
Vdd= 5V 4MHz
normal Mode
Fcpu = Fosc/4
Vdd= 3V 4MHz
Slow Mode
Vdd= 5V ~ 32768hz
(External 32K,LCD OFF
Vdd= 3V ~ 32768Khz
Stop high clock)
Vdd= 5V ~ 32768hz
Slow Mode
(External 32K,LCD ON
Vdd= 3V ~ 32768Khz
Stop high clock)
Vdd= 5V ~ 32768hz
Green Mode
(External 32K,LCD OFF
Vdd= 3V ~ 32768Khz
Stop high clock)
Vdd= 5V ~ 32768hz
Green Mode
(External 32K,LCD ON
Vdd= 3V ~ 32768Khz
Stop high clock)
Sleep mode
Vdd= 5V
(LVD = LVD_L)
Vdd= 3V
Low voltage reset level
Low voltage reset/indicator level Fcpu=1MHz
Low voltage indicator level Fcpu=1MHz
100
-
0.6*
0.4*
2.5
1.5
20
5
3
30
uS
mA
mA
mA
mA
uA
-
8
20
uA
-
20
50
uA
-
15
30
uA
-
10
20
uA
-
5
10
uA
-
20
40
uA
-
8
20
uA
1.7
2.0
2.7
1
0.6
2.0
2.4
3.6
2
1
2.3
3
4.5
uA
uA
V
V
V
*These parameters are for design reference, not tested.
SONiX TECHNOLOGY CO., LTD
Page 105
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
13 开发工具
13.1 在线仿真器(ICE)
z
SN8ICE 2K ICE:可以仿真 SN8P2808 的所有功能。
’
SN8ICE 2K ICE 仿真时需注意:
a. ICE 的电源电压:3.0V ~ 5.0V。
b. 5V 时建议仿真的最大速度:8 MIPS(如 16Mhz 晶振模式时,Fcpu = Fhosc/2)。
c. 使用 SN8P2808 EV-KIT 仿真 LVD、LCD 和内部参考电压功能。
’
注:S8KD-2 ICE 不支持 SN8P2808 的仿真。
13.2 OTP WRITER
z
MP WriterIII:支持 SN8P2700A 的联机烧录,也支持大批量的脱机烧录。
13.3 IDE
z
’
SONiX 8 位单片机的集成开发环境包括编译器、ICE 调试器和 OTP 的烧录软件。
M2IDE_V115 或更新的版本:
„
支持 SN8ICE_2K ICE
„
支持编译和 ICE 的调试功能
„
支持 MPIII Writer
注:SN8IDE_1.99X 不支持 SN8P2808 的仿真。
SONiX TECHNOLOGY CO., LTD
Page 106
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
13.4 SN8P2808 EV KIT
13.4.1 PCB 说明
SONIX 提供的 SN8P2808 EV Kit 能够对 SN8P2808 的功能进行仿真,对于 SN8P2808 ICE 仿真,EV-Kit 提供 LCD、
ADC 内部参考电压和 LVD 2.4V/3.6V 选择电路。
CON1:I/O 接口,连接到 SN8ICE 2K CON1。
CON2:I/O 接口,连接到用户的目标板。
JP1:LVD 2.4V、3.6V 输入引脚,LCD 和内部参考电压的控制引脚,连接到 SN8ICE 2K 的 JP6。
JP2:LCD COM0~COM3、SEG0~SEG31 输出引脚,连接到 LCD 面板。
JP3:AVDD、VLCD、VLCD1 和 VDD“短路”引脚。关于 VLCD 和 VLCD1,请参考 LCD 章节。
JP6:若使能 ADENB 和 REFS,内部参考电压来自 SN8P2808 EV-Kit 上的 SN8P2808 单片机(U1)。
JP7:AVSS 和 VSS 的“短路”引脚。
C1, R3:SN8P2808 仿真芯片的复位电路,C1=0,1uF,R3=10K 欧姆。
C7/C8/C9/C13/C14/C17/C18/C21, C10/C11/C12/C15/C16/C19/C20/C22:若 P4 作为 ADC 的输入引脚,将这些电容连
接到 P4 口。
SONiX TECHNOLOGY CO., LTD
Page 107
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
S1:LVD 2.4V/3.6V 选择控制开关。仿真 LVD 2.4V 标志/复位功能和 LVD 3.6V 标志功能。
S1.
有效
无效
LVD 3.6V(P1)
ON
OFF
LVD 2.4V(P2)
ON
OFF
C23~C26, R4/R5/R6/R13/R14:LCD 电路元器件。请参考 LCD 章节。
注:若禁止 LCD segment 24 ~ segment 31(P2SEG = 1),P2 作为普通 I/O 引脚,将 VLCD1 和 VDD 短接。
S3:选择不同的参考源作为 ADC 的参考电压。
S3.
P1
P2
INT_VREFH
ON
OFF
EXT_VREFH
OFF
ON
若用户使能 ADENB 和 REFS 位,则必须选择 INT_VREFH =ON,EXT_VREFH = OFF。除此之外,用户还必须断
开 SN8ICE2K 上的“AVREFH/VDD”跳线。而当用户使能 ADENB 位但禁止 REFS 位时,用户必须选择 EXT_VREFH=
ON,INT_VREFH = OFF。用户可以将 EX_EFH 连接到 CON2。
SONiX TECHNOLOGY CO., LTD
Page 108
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
13.4.2 SN8P2808 EV KIT 与 SN8ICE2K 的连接
SN8P2808 EV KIT 与 SN8ICE 2K 的连接如下图所示:
SONiX TECHNOLOGY CO., LTD
Page 109
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
13.5 OTP 烧录转接板
13.5.1 SN8P2808 转接板(LQFP 64 PIN)
SN8P2808 OTP 烧录时用到 LQFP 64pin 的烧录转接板。
JP1:连接到 MPIII Writer。
U1:LQFP 64 pin 插座。
13.5.2 与 MPIII WRITER 的连接
SONiX TECHNOLOGY CO., LTD
Page 110
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
14
OTP 烧录信息
14.1 烧录转接板信息
图 1 MPIII Writer 的内部结构
Pin 20 (UP)
Pin 1 (Down)
Writer 上板 JP1/JP3
Writer 上板 JP1/JP3
Writer 上板 JP2
注 1:JP1 连接 MP 烧录转接板,JP3 连接 OTP MCU。
注 2:JP2 连接外部烧录转接板。当 OTP MCU 的 PIN 超过 48PIN,或者烧录 Dice MCU 时,请采用外部烧录转接
板,连接到 JP2 进行烧录。
下面两个图演示了如何焊接烧录转接板。
图2
SONiX TECHNOLOGY CO., LTD
图3
Page 111
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
注:
1、 印有 IC 型号的这一面为转接板的正面。
2、 180 度的母座必须焊接在 MP 转接板的背面。请参考图 2 和图 3。
Pin 1
Pin 48
48
40
28
18
14
Pin 25
Pin 24
图 4 MP 转接板(连接到 JP1&JP3)
JP3(连接 48-pin text tool)
DIP 1
DIP 2
DIP 3
DIP 4
DIP 5
DIP 6
DIP 7
DIP 8
DIP 9
DIP10
DIP11
DIP12
DIP13
DIP14
DIP15
DIP16
DIP17
DIP18
DIP19
DIP20
DIP21
DIP22
DIP23
DIP24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
SONiX TECHNOLOGY CO., LTD
DIP48
DIP47
DIP46
DIP45
DIP44
DIP43
DIP42
DIP41
DIP40
DIP39
DIP38
DIP37
DIP36
DIP35
DIP34
DIP33
DIP32
DIP31
DIP30
DIP29
DIP28
DIP27
DIP26
DIP25
JP1/JP2
VDD 1
CLK/PGCLK 3
PGM/OTPCLK 5
D1 7
D3 9
D5 11
D7 13
VDD 15
HLS 17
- 19
2 VSS
4 CE
6 OE/ShiftDat
8 D0
10 D2
12 D4
14 D6
16 VPP
18 RST
20 ALSB/PDB
JP1 连接 MP 烧录转接板
JP2 连接外部转接板
Page 112
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
14.2 SN8P2808 烧录引脚信息
SN8P2808 的烧录信息
SN8P2808Q
SN8P2807Q
单片机名称
MPIII Writer
OTP IC / JP3 引脚配置
JP1/JP2 引脚编号 JP1/JP2 引脚名称 IC 引脚编号 IC 引脚名称 IC 引脚编号 IN 引脚名称
1
VDD
10,25,40
VDD
8,23,41
VDD
2
GND
20
VSS
3
VSS
3
CLK
19
P4.7
2
P4.7
4
CE
5
PGM
17
P4.5
48
P4.5
6
OE
18
P4.6
1
P4.6
7
D1
8
D0
9
D3
10
D2
11
D5
12
D4
13
D7
14
D6
15
VDD
10,25,40
VDD
8,23,41
VDD
16
VPP
26
RST
9
RST
17
HLS
18
RST
19
20
ALSB/PDB
16
P4.4
47
P4.4
SONiX TECHNOLOGY CO., LTD
Page 113
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
15 封装
15.1 LQFP 64 PIN
SONiX TECHNOLOGY CO., LTD
Page 114
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
SYMBLE
A
A1
A2
b
b1
c
c1
D
D1
E
E1
[e]
L
L1
R1
R2
Y
θ
θ1
θ2
θ3
MIN.
0.05
1.36
0.17
0.17
0.09
0.09
11.75
9.95
11.75
9.95
0.45
0.9
0.08
0.08
DIMENSION (MM)
NOM.
MAX.
1.60
1.40
0.15
0.22
1.45
0.22
0.27
0.23
0.20
0.16
12.00
12.25
10.00
10.05
12.00
12.25
10.00
10.05
0.50
0.60
0.75
1
1.1
0°
0°
11°
11°
SONiX TECHNOLOGY CO., LTD
3.5°
0.20
0.075
7°
12°
12°
13°
13°
MIN.
2
35
7
7
4
4
463
392
463
392
18
DIMENSION (MIL)
NOM.
MAX.
63
55
6
9
57
8
11
12
8
6
473
483
394
396
473
483
394
396
20
24
30
39
3
3
0°
0°
11°
11°
Page 115
3.5°
8
3
7°
12°
12°
13°
13°
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
15.2 LQFP 48 PIN
SYMBOLS
A
A1
A2
c1
D
D1
E
E1
e
B
L
L1
SONiX TECHNOLOGY CO., LTD
MIN
NOR
MAX
(mm)
0.05
1.35
0.09
0.17
0.45
9.00 BSC
7.00 BSC
9.00 BSC
7.00 BSC
0.5 BSC
1 REF
Page 116
1.6
0.15
1.45
0.16
0.27
0.75
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
15.3 SSOP 48 PIN
SYMBOLS
A
A1
A2
b
C
D
E
[e]
He
L
L1
Y
θ°
MIN
NOR
MAX
MIN
(inch)
0.095
0.008
0.089
0.008
0.620
0.291
0.396
0.020
0°
SONiX TECHNOLOGY CO., LTD
0.102
0.012
0.094
0.010
0.008
0.625
0.295
0.025
0.406
0.030
0.056
-
NOR
MAX
(mm)
0.110
0.016
0.099
0.030
0.630
0.299
0.416
0.040
0.003
8°
2.413
0.203
2.261
0.203
15.748
7.391
10.058
0.508
0°
Page 117
2.591
0.305
2.388
0.254
0.203
15.875
7.493
0.635
10.312
0.762
1.422
-
2.794
0.406
2.515
0.762
16.002
7.595
10.566
1.016
0.076
8°
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
15.4 P-DIP 48 PIN
SYMBOLS
A
A1
A2
D
E
E1
L
eB
θ°
MIN
NOR
MAX
MIN
(inch)
0.015
0.150
2.400
0.540
0.115
0.630
0°
SONiX TECHNOLOGY CO., LTD
0.155
2.450
0.600
0.545
0.130
0.650
7°
NOR
MAX
(mm)
0.220
0.160
2.550
0.381
3.810
60.960
0.550
0.150
0.067
15°
13.716
2.921
16.002
0°
Page 118
3.937
62.230
15.240
13.843
3.302
16.510
7°
5.588
4.064
64.770
13.970
3.810
1.702
15°
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
16 单片机正印命名规则
16.1 概述
SONiX 8 位单片机产品具有多种型号,本章将给出所有 8 位单片机分类命名规则,适用于空片 OTP 型单片机。
16.2 单片机型号说明
16.3 命名举例
名称
SN8P2808QG
SN8P2808QB
ROM 类型
器件(Device)
封装形式
温度范围
封装材料
OTP
OTP
TA01
TA01
LQFP
LQFP
0℃~70℃
0℃~70℃
绿色封装(Green Package)
无铅封装(PB-Free Package)
SONiX TECHNOLOGY CO., LTD
Page 119
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
16.4 日期码规则
SONiX 的日期码规则共有 8~9 个字符,后 4(5)个字符是指 SONiX 的内部使用编号,前 4 个则是指封装的日期,
包括年/月/日。如下图所示:
X X X X XXXXX
SONiX Internal Use
1=01
2=02
....
9=09
A=10
B=11
....
Day
Month
Year
SONiX TECHNOLOGY CO., LTD
1=January
2=February
....
9=September
A=October
B=November
C=December
03= 2003
04= 2004
05= 2005
06= 2006
....
Page 120
Version1.1
SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
SONiX 公司保留对以下所有产品在可靠性,功能和设计方面的改进作进一步说明的权利。SONiX 不承担由本
手册所涉及的产品或电路的运用和使用所引起的任何责任,SONiX 的产品不是专门设计来应用于外科植入、生命
维持和任何 SONiX 产品的故障会对个体造成伤害甚至死亡的领域。如果将 SONiX 的产品应用于上述领域,即使这
些是由 SONiX 在产品设计和制造上的疏忽引起的,用户应赔偿所有费用、损失、合理的人身伤害或死亡所直接或
间接产生的律师费用,并且用户保证 SONiX 及其雇员、子公司、分支机构和销售商与上述事宜无关。
总公司:
地址:台湾新竹县竹北市台元街 36 号 10 楼之一
电话:886-3-5600-888
传真:886-3-5600-889
台北办事处:
地址:台北市松德路 171 号 15 楼之 2
电话:886-2-2759 1980
传真:886-2-2759 8180
香港办事处:
地址:香港新界沙田沙田乡宁会路 138#新城市中央广场第一座 7
楼 705 室
电话:852-2723 8086
传真:852-2723 9179
松翰科技(深圳)有限公司
地址:深圳市南山区高新技术产业园南区 T2-B 栋 2 层
电话:86-755-2671 9666
传真:86-755-2671 9786
技术支持:
[email protected]
SONiX TECHNOLOGY CO., LTD
Page 121
Version1.1