PMS132/PMS132B 系列
8 位 OTP 型单片机带 12 位 ADC
数据手册
第 1.03 版
2018 年 11 月 28 日
Copyright 2018 by PADAUK Technology Co., Ltd., all rights reserved.
6F-6, No.1, Sec. 3, Gongdao 5th Rd., Hsinchu City 30069, Taiwan, R.O.C.
TEL: 886-3-572-8688
www.padauk.com.tw
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
重要声明
应广科技保留权利在任何时候变更或终止产品,建议客户在使用或下单前与应广科技或代理商
联系以取得最新、最正确的产品信息。
应广科技不担保本产品适用于保障生命安全或紧急安全的应用,应广科技不为此类应用产品承
担任何责任。关键应用产品包括,但不仅限于,可能涉及的潜在风险的死亡,人身伤害,火灾或严
重财产损失。
应广科技不承担任何责任来自于因客户的产品设计所造成的任何损失。在应广科技所保障的规
格范围内,客户应设计和验证他们的产品。为了尽量减少风险,客户设计产品时,应保留适当的产
品工作范围安全保障。
提供本文档的中文简体版是为了便于了解,请勿忽视文中英文的部份,因为其中提供有关产品性能以及产品使用的有用
信息,应广科技暨代理商对于文中可能存在的差错不承担任何责任,建议参考本文件英文版。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 2 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
目 录
1. 功能 ………………………………………………………………………………………………….9
1.1.
特性 ........................................................................................................................................ 9
1.2.
系统特性 ................................................................................................................................. 9
1.3.
CPU 特点............................................................................................................................... 9
1.4.
封装信息 ................................................................................................................................. 9
2. 系统概述和方框图 ................................................................................................................. 10
3. 引脚功能说明 ........................................................................................................................ 11
4. 器件电器特性 ........................................................................................................................ 17
4.1. 直流交流电气特性..................................................................................................................... 17
4.2. 绝对最大值范围 ........................................................................................................................ 18
4.3. ILRC 频率与 VDD 关系曲线图 ................................................................................................... 19
4.4. IHRC 频率与 VDD 关系曲线图(校准到 16MHz) ..................................................................... 19
4.5. ILRC 频率与温度关系曲线图 ..................................................................................................... 20
4.6. IHRC 频率与温度关系曲线图 (校准到 16MHz) ..................................................................... 20
4.7. 工作电流 vs. VDD 与系统时钟 = ILRC/n 关系曲线图 ................................................................ 21
4.8. 工作电流 vs. VDD 与系统时钟 = IHRC/n 关系曲线图............................................................... 21
4.9. 工作电流 vs. VDD 与系统时钟 = 4MHz EOSC / n 关系曲线图 .................................................. 22
4.10. 工作电流 vs.VDD 与系统时钟 = 32KHz EOSC / n 关系曲线图................................................ 22
4.11. 工作电流 vs. VDD 与系统时钟 = 1MHz EOSC / n .................................................................. 23
4.12. IO 引脚输出的驱动电流(IOH)与灌电流(IOL)曲线图...................................................................... 23
4.13. IO 引脚输入高/低阀值电压(VIH/VIL)曲线图 ................................................................................ 25
4.14. IO 引脚上拉阻抗曲线图 ........................................................................................................... 26
4.15. 省电模式和掉电模式消耗电流 ................................................................................................. 26
4.16. 开机时序图 ............................................................................................................................. 27
5. 功能概述 ............................................................................................................................... 28
5.1.
OTP 程序存储器 ................................................................................................................... 28
5.2.
开机流程 ............................................................................................................................... 28
5.3.
数据存储器 - SRAM ............................................................................................................. 29
5.4.
振荡器和时钟 ........................................................................................................................ 29
5.4.1. 内部高频 RC 振荡器和内部低频 RC 振荡器 ............................................................... 29
5.4.2. 芯片校准 ................................................................................................................... 29
5.4.3. IHRC 频率校准和系统时钟 ........................................................................................ 30
5.4.4. 外部晶体振荡器......................................................................................................... 31
©Copyright 2018, PADAUK Technology Co. Ltd
Page 3 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.4.5. 系统时钟和 LVR 基准位 ............................................................................................ 33
5.4.6. 系统时钟切换 ............................................................................................................ 34
5.5.
比较器 .................................................................................................................................. 35
5.5.1
内部参考电压 (Vinternal R) ............................................................................................ 36
5.5.2
使用比较器 ................................................................................................................ 38
5.5.3
使用比较器和 band-gap 1.20V .................................................................................. 39
5.6
16 位计数器 (Timer16) ......................................................................................................... 40
5.7
8 位 PWM 计数器(Timer2/Timer3) ........................................................................................ 41
5.8
5.7.1
使用 Timer2 产生周期波形 ........................................................................................ 43
5.7.2
使用 Timer2 产生 8 位 PWM 波形 .............................................................................. 45
5.7.3
使用 Timer2 产生 6 位 PWM 波形 .............................................................................. 46
11 位 PWM 计数器................................................................................................................ 47
5.8.1
PWM 波形 ................................................................................................................. 47
5.8.2
硬件和时序框图......................................................................................................... 48
5.8.3
11 位 PWM 生成器计算公式 ...................................................................................... 49
5.9
看门狗 .................................................................................................................................. 49
5.10
中断 ...................................................................................................................................... 50
5.11
省电与掉电 ........................................................................................................................... 52
5.11.1 省电模式(“stopexe”) .................................................................................................. 52
5.11.2 掉电模式(“stopsys”)................................................................................................... 53
5.11.3 唤醒 .......................................................................................................................... 54
5.12
IO 引脚 ................................................................................................................................ 54
5.13
复位和 LVR........................................................................................................................... 55
5.13.1 复位 .......................................................................................................................... 55
5.13.2 LVR 复位 .................................................................................................................. 55
5.14
模拟-数字转换器(ADC) 模块 ................................................................................................ 56
5.14.1 AD 转换的输入要求 ................................................................................................... 57
5.14.2 选择参考高电压......................................................................................................... 58
5.14.3 ADC 时钟选择 ........................................................................................................... 58
5.14.4 配置模拟引脚 ............................................................................................................ 58
5.14.5 使用 ADC .................................................................................................................. 58
5.15
6.
乘法器 .................................................................................................................................. 59
IO 寄存器 ............................................................................................................................. 60
6.1.
ACC 状态标志寄存器(flag), IO 地址 = 0x00 .......................................................................... 60
6.2.
堆栈指针寄存器(sp), IO 地址 = 0x02 .................................................................................... 60
6.3.
时钟模式寄存器(clkmd), IO 地址 = 0x03............................................................................... 60
6.4.
中断允许寄存器(inten), IO 地址 = 0x04 ................................................................................ 61
6.5.
中断请求寄存器(intrq), IO 地址 = 0x05 ................................................................................. 61
©Copyright 2018, PADAUK Technology Co. Ltd
Page 4 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.6.
乘法器运算对象寄存器(mulop), IO 地址 = 0x08.................................................................... 61
6.7.
乘法器结果高字节寄存器(mulrh), IO 地址 = 0x09 ................................................................. 61
6.8.
Timer16 控制寄存器 (t16m), IO 地址 = 0x06 ....................................................................... 62
6.9.
外部晶体振荡器控制寄存器(eoscr), IO 地址 = 0x0a.............................................................. 62
6.10.
中断边缘选择寄存器(integs), IO 地址 = 0x0c........................................................................ 63
6.11.
端口 A 数字输入使能寄存器(padier), IO 地址 = 0x0d ........................................................... 63
6.12.
端口 B 数字输入使能寄存器(pbdier), IO 地址 = 0x0e ............................................................ 63
6.13.
端口 A 数据寄存器(pa), IO 地址 = 0x10 ................................................................................ 64
6.14.
端口 A 控制寄存器(pac), IO 地址 = 0x11 .............................................................................. 64
6.15.
端口 A 上拉控制寄存器(paph), IO 地址 = 0x12 ..................................................................... 64
6.16.
端口 B 数据寄存器(pb), IO 地址 = 0x14 ................................................................................ 64
6.17.
端口 B 控制寄存器(pbc), IO 地址 = 0x15 .............................................................................. 64
6.18.
端口 B 上拉控制寄存器(pbph), IO 地址 = 0x16 ..................................................................... 64
6.19.
杂项寄存器(misc), IO 地址 = 0x17........................................................................................ 65
6.20.
比较器控制寄存器(gpcc), IO 地址 = 0x18 ............................................................................. 65
6.21.
比较器选择寄存器(gpcs), IO 地址 = 0x19 ............................................................................. 66
6.22.
状态复位寄存器(rstst), IO 地址 = 0x1b ................................................................................. 66
6.23.
Timer2 控制寄存器(tm2c), IO 地址 = 0x1c............................................................................ 67
6.24.
Timer2 计数寄存器(tm2ct), IO 地址 = 0x1d .......................................................................... 67
6.25.
Timer2 分频寄存器(tm2s), IO 地址 = 0x1e ........................................................................... 67
6.26.
Timer2 上限寄存器(tm2b), IO 地址 = 0x09 ........................................................................... 68
6.27.
PWMG0 控制寄存器(pwmg0c), IO 地址 = 0x20.................................................................... 68
6.28.
PWMG0 分频寄存器 (pwmg0s), IO 地址 = 0x21 .................................................................. 68
6.29.
PWMG0 计数上限高位寄存器(pwmg0cubh), IO 地址 = 0x24................................................ 68
6.30.
PWMG0 计数上限高位寄存器(pwmg0cubl), IO 地址 = 0x25 ................................................. 69
6.31.
PWMG0 占空比高位寄存器(pwmg0dth), IO 地址 = 0x22 ...................................................... 69
6.32.
PWMG0 占空比低位寄存器(pwmg0dtl), IO 地址 = 0x23 ....................................................... 69
6.33.
Timer3 控制寄存器(tm3c), IO 地址 = 0x32 ........................................................................... 69
6.34.
Timer3 计数寄存器(tm3ct), IO 地址 = 0x33 ......................................................................... 70
6.35.
Timer3 分频寄存器(tm3s), IO 地址 = 0x34 .......................................................................... 70
6.36.
Timer3 上限寄存器(tm3b), IO 地址 = 0x3f ........................................................................... 70
6.37.
ADC 控制寄存器(adcc), IO 地址 = 0x3b ............................................................................... 70
6.38.
ADC 模式寄存器(adcm), IO 地址 = 0x3c .............................................................................. 71
6.39.
ADC 调节控制寄存器(adcrgc), IO 地址 = 0x3d ..................................................................... 71
6.40.
ADC 数据高位寄存器(adcrh), IO 地址 = 0x3e....................................................................... 71
6.41.
ADC 数据低位寄存器(adcrl), IO 地址 = 0x3f ......................................................................... 71
6.42.
PWMG1 控制寄存器(pwmg1c), IO 地址 = 0x26.................................................................... 72
6.43.
PWMG1 分频寄存器(pwmg1s), IO 地址 = 0x27.................................................................... 72
6.44.
PWMG1 计数上限高位寄存器(pwmg1cubh), IO 地址 = 0x2A ............................................... 72
©Copyright 2018, PADAUK Technology Co. Ltd
Page 5 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
7.
6.45.
PWMG1 计数上限高位寄存器(pwmg1cubl), IO 地址 = 0x2B ................................................ 72
6.46.
PWMG1 占空比高位寄存器(pwmg1dth), IO 地址 = 0x28 ...................................................... 73
6.47.
PWMG1 占空比低位寄存器(pwmg1dtl), IO 地址 = 0x29 ....................................................... 73
6.48.
PWMG2 控制寄存器(pwmg2c), IO 地址 = 0x2C ................................................................... 73
6.49.
PWMG2 分频寄存器(pwmg2s), IO 地址 = 0x2D ................................................................... 73
6.50.
PWMG2 计数上限高位寄存器(pwmg2cubh), IO 地址 = 0x30................................................ 74
6.51.
PWMG2 计数上限高位寄存器(pwmg2cubl), IO 地址 = 0x31 ................................................. 74
6.52.
PWMG2 占空比高位寄存器(pwmg2dth), IO 地址 = 0x2E ..................................................... 74
6.53.
PWMG2 占空比低位寄存器(pwmg2dtl), IO 地址 = 0x2F ....................................................... 74
指令 ..................................................................................................................................... 75
7.1.
数据传输类指令 .................................................................................................................... 76
7.2.
算数运算类指令 .................................................................................................................... 78
7.3.
移位运算类指令 .................................................................................................................... 80
7.4.
逻辑运算类指令 .................................................................................................................... 81
7.5.
位运算类指令 ........................................................................................................................ 84
7.6.
条件运算类指令 .................................................................................................................... 85
7.7.
系统控制类指令 .................................................................................................................... 86
7.8.
指令执行周期综述 ................................................................................................................. 88
7.9.
指令影响标志综述 ................................................................................................................. 88
7.10.
位定义 .................................................................................................................................. 88
8. 程序选项 ............................................................................................................................... 89
9.
特别注意事项 ....................................................................................................................... 90
9.1
警告 ...................................................................................................................................... 90
9.2
使用 IC ................................................................................................................................. 90
9.2.1 IO 引脚的使用和设定 .................................................................................................... 90
9.3
9.2.2
中断 .......................................................................................................................... 91
9.2.3
系统时钟选择 ............................................................................................................ 91
9.2.4
掉电模式, 唤醒和看门狗 ........................................................................................... 92
9.2.5
TIMER 溢出.............................................................................................................. 92
9.2.6
IHRC ......................................................................................................................... 92
9.2.7
LVR .......................................................................................................................... 93
9.2.8
比较器控制 PWM 引脚输出的结果............................................................................. 93
9.2.9
PMS132/PMS132B 的烧录方法 ................................................................................ 93
使用 ICE .............................................................................................................................. 95
©Copyright 2018, PADAUK Technology Co. Ltd
Page 6 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
修订历史:
修订
日期
0.00
2016/08/08
0.01
2016/12/01
0.02
2017/11/23
描述
初版
1. 修改第三章:引脚功能说明图和描述
2. 修改 5.8.2 节:硬件和时序框图
3. 修改 5.8.3 节:PWM 输出频率公式
4. 增加 5.8 节:11 位 PWM 计数器
5. 增加 6.43~6.51 节:IO 寄存器
1. 修改 1.2 节 系统特性
2. 增加 1.4 节 封装信息
3. 修改第 2 章 系统概述和方框图
4. 增加 第三章引脚功能说明图和描述:PMS132/PMS132B-S08,
PMS132/PMS132B-U06
5. 修改 4.1 节 直流交流电气特性:“VIL” 和 “VIH”
6. 修改 4.3 节 ILRC 频率与 VDD 关系曲线图
7. 修改 4.4 节 IHRC 频率与 VDD 关系曲线图
8. 修改 4.5 节 ILRC 频率与温度关系曲线图
9. 修改 4.6 节 IHRC 频率与温度关系曲线图
10. 修改 4.7 节 工作电流 vs. VDD 与系统时钟 = ILRC/n 关系曲线图
11. 修改 4.8 节 工作电流 vs. VDD 与系统时钟 = IHRC/n 关系曲线图
12. 修改 4.9 节 工作电流 vs. VDD 与系统时钟 = 4MHz EOSC / n 关系曲线图
13. 修改 4.10 节 工作电流 vs.VDD 与系统时钟 = 32KHz EOSC / n 关系曲线图
14. 增加 4.11 节 工作电流 vs. VDD 与系统时钟 = 1MHz EOSC / n
15. 修改 4.12 节 IO 引脚输出的驱动电流(IOH)与灌电流(IOL)曲线图
16. 修改 4.13 节 IO 引脚输入高/低阀值电压(VIH /VIL)曲线图
17. 修改 4.14 节 IO 引脚上拉阻抗曲线图
18. 增加 4.15 节 省电模式和掉电模式消耗电流
19. 修改 5.1 节 OTP 程序存储器
20. 修改表 2:3 个振荡器电路
21. 修改 5.4.3 节 IHRC 频率校准和系统时钟
22. 修改 5.4.4 节 外部晶体震荡器
23. 修改图 3:系统时钟源选项
24. 修改 5.5.2 节 使用比较器
25. 修改 5.6 节 16 位计数器
26. 修改 5.8 节 11 位 PWM 计数器
27. 修改 5.11.1 节 省电模式
28. 修改图 20:ADC 模块框图
29. 修改 5.14.4 节 配置模拟引脚
30. 修改 5.14.5 节 使用 ADC
31. 修改 6.3 节 时钟模式寄存器
32. 修改 6.4 节 中断允许寄存器
33. 修改 6.5 节 中断请求寄存器
34. 修改 6.11 节 端口 A 数字输入使能寄存器
35. 修改 6.12 节 端口 B 数字输入使能寄存器
36. 删除 6.13 节 MISC2 寄存器
37. 修改 6.15 节 端口 A 上拉控制寄存器
38. 修改 6.20 节 比较器控制寄存器
39. 修改 6.27 节 PWMG0 控制寄存器
40. 修改 6.29 节 PWMG0 计数上限高位寄存器
41. 修改 6.30 节 PWMG0 计数上限高位寄存器
42. 修改 6.31 节 PWMG0 占空比高位寄存器
©Copyright 2018, PADAUK Technology Co. Ltd
Page 7 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
1.03
2018/11/28
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
修改 6.32 节 PWMG0 占空比低位寄存器
修改 6.33 节 Timer3 控制寄存器
修改 6.39 节 ADC 调节控制寄存器
修改 6.42 节 PWMG1 控制寄存器
修改 6.48 节 PWMG2 控制寄存器
删除 第七章指令:”word” 和”pc0”
修改 7.1 节 数据传输类指令”mov a, M”和”mov a,IO”
修改 7.5 节 位运算类指令“swapc IO.n”
增加第 8 章 程序选项
修改 9.2.1 节 IO 引脚的使用和设定
修改 9.2.3 节 系统时钟选择
增加 9.2.6 节 IHRC
修改 9.2.7 节 LVR
修改 9.2.8 节 比较器控制 PWM 引脚输出的结果
修改 9.2.10 节 BIT 定义
修改 9.2.11 PMS132/PMS132B 的烧录方法
修改 9.3 使用 ICE
修改所有 PWMG 寄存器从”读/写”改为”只写”
加入 PMS132B 型号
更新公司地址与电话
开放 32KHz EOSC 模式
修改 1.1 节、1.2 节和 1.3 节
修改第 3 章 引脚功能说明(加入 AVDD 和 AGND)
修改 4.1 节 直流交流电气特性
更新 4.3、4.4、4.5、4.6、4.7、4.12、4.13、4.14 和 4.15 节之图
修改 5.2 节 开机流程
修改 5.4.1 节、5.4.4 节和 5.4.5 节
修改 5.5.2 节和 5.5.3 节
修改 5.5 节 比较器
修改图 4:比较器硬件原理框图
修改 5.7 节 8 位 PWM 计数器
新增图 12:比较器控制 PWM 输出
修改 5.8.2 节和 5.8.3 节
修改图 14:11 位 PWM 生成器硬件框图
修改 5.10 节 中断
修改 5.11.1 节与 5.11.2 节
修改表 6:掉电模式和省电模式在唤醒源的差异
修改 5.13.2 节 LVR 复位
修改图 20:模拟输入模型
修改 5.14.5 节 使用 ADC
修改 6.9 节、6.28 节、6.19 节、6.28 节、6.30 节、6.45 节、6.51 节
修改 7.8 节 指令执行周期综述(删除 9.2.9 节)
增加 7.10 节 位定义(删除 9.2.10 节)
修改第 8 章 程序选项
更新第 9.1 节之网站连结
修改 9.2.1 节 IO 引脚的使用和设定
修改第 9.2.5 节 TIMER 溢出
修改 9.2.9 节 PMS132/PMS132B 的烧录方法
修改 9.3 使用 ICE
©Copyright 2018, PADAUK Technology Co. Ltd
Page 8 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
1. 功能
1.1. 特性
通用系列
不建议使用于 AC 阻容降压供电或有高 EFT 要求的应用。应广不对使用于此类应用而不达安规要求负责
工作温度范围:-20°C ~ 70°C
1.2. 系统特性
2KW OTP 程序存储器
128 字节数据存储器
一个硬件 16 位计数器
两个 8 位硬件 PWM 生成器
三个 11 位硬件 PWM 生成器(PWMG0, PWMG1 & PWMG2)
提供一个硬件比较器
提供 1T 8x8 硬件乘法器
14 个 IO 引脚并带有上拉电阻选项
每个 IO 引脚都可设定唤醒功能
Band-gap 电路提供 1.2V 参考电压
高达 12 通道 12 位 ADC,其中一个通道来自于内部 band-gap 参考电压或 0.25*VDD
提供 ADC 参考高电压:外部输入,内部 VDD,Band-gap (1.20V),4V,3V,2V
时钟源:内部高频 RC 振荡器,内部低频 RC 振荡器和外部晶体震荡
对所有带有唤醒功能的 IO,都支持两种可选择的唤醒速度:正常唤醒和快速唤醒
8 段 LVR 复位设定:4.0V,3.5V,3.0V,2.75V,2.5V,2.2V,2.0V,1.8V
4 个可选的外部中断引脚
1.3. CPU 特点
单一处理单元工作模式
提供 87 个有效指令
大部分都是 1T(单周期)指令
可程序设定的堆栈指针和堆栈深度
数据存取支持直接和间接寻址模式,用数据存储器即可当作间接寻址模式的数据指针(index pointer)
IO 地址以及存储地址空间互相独立
1.4. 封装信息
PMS132/PMS132B-U06: SOT23-6 (60mil);
PMS132/PMS132B-S08: SOP8 (150mil);
PMS132/PMS132B-M10: MSOP10 (118mil);
PMS132/PMS132B-4N10: DFN3*3-10P (0.5pitch);
PMS132/PMS132B-S14: SOP14 (150mil);
PMS132/PMS132B-S16A: SOP16A (150mil);
PMS132/PMS132B-S16B: SOP16B (150mil);
PMS132/PMS132B-2J16A: QFN4*4-16P (0.65pitch);
PMS132/PMS132B-1J16A: QFN3*3-16P (0.5pitch)
©Copyright 2018, PADAUK Technology Co. Ltd
Page 9 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
2. 系统概述和方框图
PMS132/PMS132B 系列是一款带 ADC,完全静态的,以 OTP 为程序基础的 CMOS 8-bit 微处理器。它运用
RISC 的架构并且所有的指令架构的执行周期都是一个指令周期,只有少部分指令需要两个指令周期。
PMS132/PMS132B 是 2KW OTP 程序存储器以及 128 字节数据存储器,还有多达 12 通道 12 位分辨率的
ADC,其中一个通道是内部 band-gap 参考电压或 0.25*VDD。PMS132/PMS132B 同时提供 6 个硬件计数器:一个
16 位的硬件计数器,两个 8 位 PWM 计数器和 3 个 11 位 PWM 计数器。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 10 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
3. 引脚功能说明
VDD/AVDD
1
16
GND/AGND
PA7/X1
2
15
PA0/AD10/CO/INT0/PG0PWM
PA6/X2
3
14
PA4/AD9/CIN+/CIN-/INT1A/PG1PWM
PA5/PRSTB/PG2PWM
4
13
PA3/AD8/CIN0-/TW2PWM/PG2PWM
PB7/AD7/CIN5-/TM3PWM/PG1PWM
5
12
PB3/AD3/PG2PWM
PB4/AD4/TW2PWM/PG0PWM
6
11
PB1/AD1/Vref
PB5/AD5/INT0A/TM3PWM/PG0PWM
7
10
PB0/AD0/INT1
PB6/AD6/CIN4-/TW3PWM/PG1PWM
8
9
PB2/AD2/TM2PWM/PG2PWM
PMS132/PMS132B-S16A (SOP16A-150mil)
GND/AGND
1
16
VDD/AVDD
PA7/X1
2
15
PA0/AD10/CO/INT0/PG0PWM
PA6/X2
3
14
PA4/AD9/CIN+/CIN-/INT1A/PG1PWM
PA5/PRSTB/PG2PWM
4
13
PA3/AD8/CIN0-/TW2PWM/PG2PWM
PB7/AD7/CIN5-/TM3PWM/PG1PWM
5
12
PB3/AD3/PG2PWM
PB4/AD4/TW2PWM/PG0PWM
6
11
PB1/AD1/Vref
PB5/AD5/INT0A/TM3PWM/PG0PWM
7
10
PB0/AD0/INT1
PB6/AD6/CIN4-/TW3PWM/PG1PWM
8
9
PB2/AD2/TM2PWM/PG2PWM
PMS132/PMS132B-S16B (SOP16B-150mil)
VDD/AVDD
1
14
GND/AGND
PA7/X1
2
13
PA0/AD10/CO/INT0/PG0PWM
PA6/X2
3
12
PA4/AD9/CIN+/CIN-/INT1A/PG1PWM
PA5/PRSTB/PG2PWM
4
11
PA3/AD8/CIN0-/TW2PWM/PG2PWM
PB7/AD7/CIN5-/TM3PWM/PG1PWM
5
10
PB3/AD3/PG2PWM
PB4/AD4/TW2PWM/PG0PWM
6
9
PB1/AD1/Vref
PB5/AD5/INT0A/TM3PWM/PG0PWM
7
8
PB0/AD0/INT1
PMS132/PMS132B-S14 (SOP14-150mil)
©Copyright 2018, PADAUK Technology Co. Ltd
Page 11 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
GND/AGND
PA0/AD10/CO/INT0/PG0PWM
PA4/AD9/CIN+/CIN-/INT1A/PG1PWM
PA3/AD8/CIN0-/TW2PWM/PG2PWM
8 位 OTP 型单片机带 12 位 ADC
16
15
14
13
VDD/AVDD 1
12 PB3/AD3/PG2PWM
PA7/X1 2
11 PB1/AD1/Vref
PA6/X2 3
10 PB0/AD0/INT1
PA5/PRSTB/PG2PWM 4
5
6
7
8
PB7/AD7/CIN5-/TM3PWM/PG1PWM
PB4/AD4/TW2PWM/PG0PWM
PB5/AD5/INT0A/TM3PWM/PG0PWM
PB6/AD6/CIN4-/TW3PWM/PG1PWM
9 PB2/AD2/TM2PWM/PG2PWM
PMS132/PMS132B-2J16A(QFN4*4-16P-0.65pitch)
PMS132/PMS132B-1J16A(QFN3*3-16P-0.5pitch)
VDD/AVDD
1
10
GND/AGND
PA6/X2
2
9
PA0/AD10/CO/INT0/PG0PWM
PA5/RSTB/PG2PWM
3
8
PA4/AD9/CIN+/CIN-/INT1A/PG1PWM
PB7/AD7/CIN5-/TM3PWM/PG1PWM
4
7
PA3/AD8/CIN0-/TW2PWM/PG2PWM
5
6
PB1/AD1/Vref
PB4/AD4/TW2PWM/PG0PWM
PMS132/PMS132B-M10 (MSOP10-118mil)
VDD/AVDD
1
10
GND/AGND
PA6/X2
2
9
PA0/AD10/CO/INT0/PG0PWM
PA5/PRSTB/PG2PWM
3
8
PA4/AD9/CIN+/CIN-/INT1A/PG1PWM
PB7/AD7/CIN5-/TM3PWM/PG1PWM
4
7
PA3/AD8/CIN0-/TW2PWM/PG2PWM
PB4/AD4/TW2PWM/PG0PWM
5
6
PB1/AD1/Vref
PMS132/PMS132B-4N10 (DFN3*3-10P-0.5pitch)
©Copyright 2018, PADAUK Technology Co. Ltd
Page 12 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
VDD/AVDD
1
8
GND/AGND
PA6/X2
2
7
PA4/AD9/CIN+/CIN-/INT1A/PG1PWM
PA5/PRSTB/PG2PWM
3
6
PA3/AD8/CIN0-/TW2PWM/PG2PWM
PB7/AD7/CIN5-/TM3PWM/PG1PWM
4
5
PB1/AD1/Vref
PMS132/PMS132B-S08 (SOP8-150mil)
PA4/AD9/CIN+/CIN-/INT1A/PG1PWM
PA4
1
6
PA3/AD8/CIN0-/TW2PWM/PG2PWM
GND/AGND
GND
2
5
VDD/AVDD
PA6/X2
PA6
3
4
PA5/PRSTB/PG2PWM
PA5/PRSTB
PMS132/PMS132B-U06 (SOT23-6 60mil)
引脚描述
引脚名称
Pin Type &
描述
Buffer Type
此引脚可以用作:
PA7 /
X1
IO
ST /
CMOS
(1) 端口 A 位 7,并可编程设定为输入或输出,弱上拉电阻模式。
(2) 当使用外部晶振时,作为 X1 引脚。
当用做晶体振荡器的功能时,为减少漏电流,请用 padier 寄存器位 7 关闭其数字输入
功能.这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 padier 位 7 为”0”
时,唤醒功能是被关闭的。
此引脚可以用作:
PA6 /
X2
IO
ST /
CMOS
(1) 端口 A 位 6,并可编程设定为输入或输出,弱上拉电阻模式。
(2) 当使用外部晶振时,作为 X2 引脚。
当用做晶体振荡器的功能时,为减少漏电流,请用 padier 寄存器位 6 关闭其数字输入
功能,这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 padier 位 6 为”0”
时,唤醒功能是被关闭的。
此引脚可以用作:
(1) 端口 A 位 5,此引脚可以设定为输入或开漏输出(open drain),弱上拉电阻模式。
PA5 /
IO (OD)
PRSTB /
ST /
PG2PWM
CMOS
(2) 硬件复位。
(3) 11 位 PWM 生成器 PWMG2 的输出。
请注意此引脚没有上拉或下拉电阻。这个引脚可以设定在睡眠中唤醒系统的功能;但是,
当寄存器 padier 位 5 为”0”时,唤醒功能是被关闭的。另外,当此引脚设定成输入时,
对于需要高抗干扰能力的系统,请串接 33Ω 电阻。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 13 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
引脚名称
引脚类型 &
描述
形态
此引脚可以用作:
(1) 端口 A 位 4,并可编程设定为输入或输出,弱上拉电阻模式。
(2) ADC 模拟输入通道 9 。
PA4 /
AD9 /
CIN+ /
CIN1- /
INT1A /
PG1PWM
IO
ST /
CMOS /
Analog
(3) 比较器的正输入源。
(4) 比较器的负输入源 1。
(5) 外部中断源 1A。它可以用作外部中断源 1。通过寄存器可以设置上升沿和下降沿响
应中断服务请求。
(6) 11 位 PWM 生成器 PWMG1 的输出。
当用做模拟输入功能时,为减少漏电流,请用 padier 寄存器位 4 关闭其数字输入功能.
这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 padier 位 4 为”0”时,唤
醒功能是被关闭的。
此引脚可以用作:
(1) 端口 A 位 3,并可编程设定为输入或输出,弱上拉电阻模式。
PA3 /
AD8 /
CIN0- /
TM2PWM /
PG2PWM
IO
ST /
CMOS /
Analog
(2) ADC 模拟输入通道 8。
(3) 比较器 0 的负输入。
(4) Timer2 的 PWM 输出。
(5) 11 位 PWM 生成器 PWMG2 的输出。
当用做模拟输入功能时,为减少漏电流,请用 padier 寄存器位 3 关闭其数字输入功能.
这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 padier 位 3 为”0”时,唤
醒功能是被关闭的。
此引脚可以用作:
PA0 /
AD10 /
CO /
PG0PWM /
INT0
IO
ST /
CMOS /
Analog
(1) 端口 A 位 0,并可编程设定为输入或输出,弱上拉电阻模式。
(2) ADC 模拟输入通道 10。
(3) 比较器输出。
(4) 11 位 PWM 生成器 PWMG0 的输出。
(5) 外部中断源 0,上升沿和下降沿都可触发中断。
padier 寄存器的位 0 可以设为“0” 停用睡眠中唤醒系统的功能。
此引脚可以用作:
(1) 端口 B 位 7,并可编程设定为输入或输出,弱上拉电阻模式。
PB7 /
AD7 /
CIN5- /
TM3PWM /
PG1PWM
IO
ST /
CMOS /
Analog
(2) ADC 模拟输入通道 7。
(3) 比较器的负输入源 5。
(4) Timer3 的 PWM 输出。
(5) 11 位 PWM 生成器 PWMG1 的输出。
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 7 关闭其数字输入功能.
这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 pbdier 位 7 为”0”时,唤
醒功能是被关闭的。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 14 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
引脚名称
引脚类型 &
描述
形态
此引脚可以用作:
(1) 端口 B 位 6,并可编程设定为输入或输出,弱上拉电阻模式。
PB6 /
AD6 /
CIN4- /
TM3PWM /
PG1PWM
IO
ST /
CMOS /
Analog
(2) ADC 模拟输入通道 6。
(3) 比较器的负输入源 4。
(4) Timer3 的 PWM 输出。
(5) 11 位 PWM 生成器 PWMG1 的输出。
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 6 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 pbdier 位 6 为”0”时,唤
醒功能是被关闭的。
此引脚可以用作:
(1) 端口 B 位 5,并可编程设定为输入或输出,弱上拉电阻模式。
PB5 /
AD5 /
TM3PWM /
PG0PWM /
INT0A
IO
ST /
CMOS /
Analog
(2) ADC 模拟输入通道 5。
(3) Timer3 的 PWM 输出。
(4) 11 位 PWM 生成器 PWMG0 的输出。
(5) 外部中断源 0A,上升沿和下降沿都可触发中断。
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 5 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 pbdier 位 5 为”0”时,唤
醒功能是被关闭的。
此引脚可以用作:
(1) 端口 B 位 4,并可编程设定为输入或输出,弱上拉电阻模式。
PB4 /
IO
(2) ADC 模拟输入通道 4。
AD4 /
ST /
(3) Timer2 的 PWM 输出。
TM2PWM /
CMOS /
(4) 11 位 PWM 生成器 PWMG0 的输出。
PG0PWM
Analog
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 4 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 pbdier 位 4 为”0”时,唤
醒功能是被关闭的。
此引脚可以用作:
PB3 /
AD3 /
PG2PWM
IO
ST /
CMOS /
Analog
(1) 端口 B 位 3,并可编程设定为输入或输出,弱上拉电阻模式。
(2) ADC 模拟输入通道 3。
(3) 11 位 PWM 生成器 PWMG2 的输出。
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 3 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 pbdier 位 3 为”0”时,唤
醒功能是被关闭的。
此引脚可以用作:
(1) 端口 B 位 2,并可编程设定为输入或输出,弱上拉电阻模式。
PB2 /
IO
(2) ADC 模拟输入通道 2。
AD2 /
ST /
(3) Timer2 的 PWM 输出。
TM2PWM /
CMOS /
(4) 11 位 PWM 生成器 PWMG2 的输出。
PG2PWM
Analog
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 2 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 pbdier 位 2 为”0”时,唤
醒功能是被关闭的。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 15 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
引脚名称
引脚类型 &
描述
形态
此引脚可以用作:
PB1 /
AD1 /
Vref
IO
ST /
CMOS /
Analog
(1) 端口 B 位 1,并可编程设定为输入或输出,弱上拉电阻模式。
(2) ADC 模拟输入通道 1。
(3) ADC 的外部参考高电压。
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 1 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 pbdier 位 1 为”0”时,唤
醒功能是被关闭的。
此引脚可以用作:
PB0 /
AD0 /
INT1
IO
ST /
CMOS /
Analog
(1) 端口 B 位 0,并可编程设定为输入或输出,弱上拉电阻模式。
(2) ADC 的模拟输入通道 0。
(3) 外部中断源 1。通过寄存器的设置,上升沿和下降沿都可以用来响应中断请求。
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 0 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能。这个引脚可以设定在睡眠中唤醒系统的
功能;但是,当寄存器 pbdier 位 0 为”0”时,唤醒功能是被关闭的。
VDD:数字正电源
VDD /
VDD/
AVDD:模拟正电源
AVDD
AVDD
VDD 是 IC 电源,
而 AVDD 是 ADC 专用电源。
在 IC 内部,AVDD 与 VDD 连在一起(double
bonding),而外部为相同引脚。
GND:数字负电源
GND /
GND /
AGND:模拟负电源
AGND
AGND
GND 是 IC 接地引脚,而 AGND 是 ADC 接地引脚。在 IC 内部,AGND 与 GND 连在
一起(double bonding),而外部为相同引脚。
注意:IO:输入/输出;ST:施密特触发器输入;Analog:模拟输入引脚;CMOS:CMOS 电压基准位
©Copyright 2018, PADAUK Technology Co. Ltd
Page 16 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
4. 器件电器特性
4.1. 直流交流电气特性
o
o
下列所有数据除特别列明外,皆于 Ta = -20 C ~ 75 C,VDD=5.0V,fSYS=2MHz 之条件下获得。
符号
VDD
LVR%
fSYS
IOP
IPD
IPS
描述
最小值
典型值
最大值
单位
工作电压
2.2
5.0
5.5
V
LVR 精度
系统时钟 (CLK)* =
IHRC/2
IHRC/4
IHRC/8
ILRC
-5
5
%
0
0
0
8M
4M
2M
Hz
工作电流
掉电模式下电流
(使用 stopsys 命令)
省电模式下电流
(使用 stopexe 命令)
55K
1
15
1
0.6
mA
uA
uA
uA
5
uA
0
0.1 VDD
0
0.2 VDD
0.8 VDD
VDD
0.7 VDD
VDD
VIL
输入低电压
VIH
输入高电压
IOL
IO 输出灌电流
PA5
PA0, PA3, PA4
PA6, PA7, PB0, PB1, PB3 PB2,
PB5, PB6
PB4, PB7(正常输出)
PB4, PB7(低输出)
23
20
13
13
40
20
IOH
IO 输出驱动电流
PA5
PB4, PB7(正常输出)
PB4, PB7(低输出)
其他 IO
0
-20
-10
-10
VIN
输入电压
IINJ (PIN)
-0.3
引脚输入电流
V
V
上拉电阻
fIHRC
tINT
Band-gap 参考电压
校准后 IHRC 频率 *
中断脉冲宽度
©Copyright 2018, PADAUK Technology Co. Ltd
其他 IO 口
PA5
其他 IO 口
VDD=5.0V, VOH=4.5V
V
1
mA
VDD +0.3≧VIN≧ -0.3
VDD =5.0V
KΩ
VDD =3.3V
VDD =2.2V
1.145*
1.20*
1.255*
15.76*
16*
16.24*
15.20*
16*
16.80*
Page 17 of 95
PA5
mA
VDD +0.3
200
30
VDD ≧ 3.5V
VDD ≧ 2.5V
VDD ≧ 2.2V
VDD =5.0V
fSYS=IHRC/16=1MIPS@5.0V
fSYS=ILRC=55kHz@3.3V
fSYS= 0Hz, VDD =5.0V
fSYS= 0Hz, VDD =3.3V
VDD =5.0V; fSYS= ILRC
仅使用 ILRC 模式下
VDD=5.0V, VOL=0.5V
450
VBG
* 受限于 LVR 公差
mA
100
RPH
o
条件(Ta=25 C)
V
VDD =2.2V ~ 5.5V
o
o
-20 C
“IC 介绍” -> “缓存器介绍” -> CLKMD”。
例 1: 系统时钟从 ILRC 切换到 IHRC/2
…
//
CLKMD
=
0x34;
//
CLKMD.2
=
0;
//
系统时钟是 ILRC
切换到 IHRC/2,ILRC 不能在这里停用
ILRC 可以在这里停用
…
例 2: 系统时钟从 ILRC 切换到 EOSC
…
//
CLKMD
=
0xA6;
//
CLKMD.2
=
0;
//
系统时钟是 ILRC
切换到 IHRC,ILRC 不能在这里停用
ILRC 可以在这里停用
…
例 3: 系统时钟从 IHRC/2 切换到 ILRC
…
//
CLKMD
=
0xF4;
//
CLKMD.4
=
0;
//
系统时钟是 IHRC/2
切换到 ILRC,IHRC 不能在这里停用
IHRC 可以在这里停用
…
例 4: 系统时钟从 IHRC/2 切换到 EOSC
…
//
CLKMD
=
0XB0;
//
CLKMD.4
=
0;
//
系统时钟是 IHRC/2
切换到 EOSC,IHRC 不能在这里停用
IHRC 可以在这里停用
…
例 5: 系统时钟从 IHRC/2 切换到 IHRC/4
…
CLKMD
//
=
0X14;
//
系统时钟是 IHRC/2,ILRC 在这里是启用的
切换到 IHRC/4
…
例 6: 如果同时切换系统时钟关闭原来的振荡器,系统会当机
…
CLKMD
//
=
©Copyright 2018, PADAUK Technology Co. Ltd
0x30;
//
系统时钟是 ILRC
不能从 ILRC 切换到 IHRC/2 同时关闭 ILRC 振荡器
Page 34 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.5. 比较器
PMS132/PMS132B 内置一个硬件比较器,如图 4 所示比较器硬件原理框图。 它可以比较两个引脚之间的
信号或者与内部参考电压 Vinternal R 或者与内置 band-gap(1.2v)做比较。两个信号进行比较,一个是正输入,另一
个是负输入。比较器的负输入可以是 PA3,PA4,内置 band-gap(1.2v),PB6,PB7,或者内部参考电压 Vinternal
R,并由寄存器
gpcc 的[3:1]位来选择。比较器的正输入可以是 PA4 或者 Vinternal R,并由 gpcc 寄存器的位 0 来选择。
比较器输出的结果可以用 gpcs.7 选择性的送到 PA0,此时无论 PA0 是输入还是输出状态,比较器结果都
会被强制输出;输出结果信号可以是直接输出,或是通过 Time2 从定时器时钟模块(TM2_CLK)采样。另外,
信号是否反极性也可由 gpcc.4 选择。比较输出结果可以用来产生中断信号或通过 gpcc.6 读取出来。
16 stages
VDD
8R
8R
8R
gpcs.5=1
R
R
R
gpcs.4=0
R
gpcs.5=0
gpcs.4=1
MUX
gpcs[3:0]
Vinternal R
gpcc[3:1]
PA3/CIN0PA4/CIN1Band-gap
PB6/CIN4PB7/CIN5-
000
001
010
011
100
101
M
U
X
0
MUX
PA4/CIN+
1
gpcc.4
+
Timer 2
clock
D
F
F
TM2_CLK
To request interrupt
M
U
X
X
O
R
gpcc.6
To
PA0
gpcc.5
gpcc.0
gpcs.7
图 4:比较器硬件原理框图
©Copyright 2018, PADAUK Technology Co. Ltd
Page 35 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.5.1
内部参考电压 (Vinternal R)
内部参考电压 Vinternal R 由一连串电阻所组成,可以产生不同层次的参考电压,gpcs 寄存器的位 4 和位 5
是用来选择 Vinternal R 的最高和最低值,位[3:0]用于选择所要的电压水平,这电压水平是由 Vinternal R 的最高和
最低值均分 16 等份,由位[3:0]选择出来。图.5 ~ 图.8 显示四个条件下有不同的参考电压 Vinternal R。内部参
考电压 Vinternal R 可以通过 gpcs 寄存器来设置,范围从(1/32)*VDD 到 (3/4)*VDD。
Case 1 : gpcs.5=0 & gpcs.4=0
16 stages
VDD
8R
8R
8R
gpcs.5=1
R
R
R
R
gpcs.5=0
gpcs.4=0
gpcs.4=1
MUX
gpcs[3:0]
V internal R = (3/4) VDD ~ (1/4) VDD + (1/32) VDD
@ gpcs[3:0] = 1111 ~ gpcs[3:0] = 0000
1
V internal R =
4
(n+1)
* VDD +
32
* VDD, n = gpcs[3:0] in decimal
图 5:Vinternal R 硬件接法(gpcs.5=0 & gpcs.4=0)
Case 2 : gpcs.5=0 & gpcs.4= 1
16 stages
VDD
8R
8R
gpcs.5=1
8R
R
R
R
R
gpcs.5=0
gpcs.4=0
gpcs.4=1
MUX
gpcs[3:0]
V internal R = (2/3) VDD ~ (1/24) VDD
@ gpcs[3:0] = 1111 ~ gpcs[3:0] = 0000
V internal R =
(n+1)
24
* VDD, n = gpcs[3:0] in decimal
图 6:Vinternal R 硬件接法(gpcs.5=0 & gpcs.4=1)
©Copyright 2018, PADAUK Technology Co. Ltd
Page 36 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
Case 3 : gpcs.5= 1 & gpcs.4= 0
16 stages
VDD
8R
8R
8R
gpcs.5=1
R
R
R
R
gpcs.5=0
gpcs.4=0
gpcs.4=1
MUX
gpcs[3:0]
V internal R = (3/5) VDD ~ (1/5) VDD + (1/40) VDD
@ gpcs[3:0] = 1111 ~ gpcs[3:0] = 0000
1
V internal R =
5
(n+1)
* VDD +
40
* VDD, n = gpcs[3:0] in decimal
图 7:Vinternal R 硬件接法(gpcs.5=1 & gpcs.4=0)
Case 4 : gpcs.5=1 & gpcs.4=1
VDD
8R
16 stages
8R
gpcs.5=1
8R
R
R
R
R
gpcs.5=0
gpcs.4=0
gpcs.4=1
MUX
gpcs[3:0]
V internal R = (1/2) VDD ~ (1/32) VDD
@ gpcs[3:0] = 1111 ~ gpcs[3:0] = 0000
V internal R =
(n+1)
32
* VDD, n = gpcs[3:0] in decimal
图 8:Vinternal R 硬件接法(gpcs.5=1 & gpcs.4=1)
©Copyright 2018, PADAUK Technology Co. Ltd
Page 37 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.5.2
使用比较器
例 I:
选择 PA3 为负输入和 Vinternal R 的电压为(18/32)*VDD 作为正输入。Vinternal R 选择上图 gpcs[5:4] = 2b’00
的配置方式,gpcs [3:0] = 4b’1001 (n=9)以得到 Vinternal R = (1/4)*VDD + [(9+1)/32]*VDD = (18/32)*VDD 的参考
电压。
gpcs
= 0b0_0_00_1001;
// Vinternal R = VDD*(18/32)
gpcc
= 0b1_0_0_0_000_0;
// 启用比较器, 负输入: PA3, 正输入: Vinternal R
padier
//停用 PA3 数字输入使能以防止漏电(x 表示用户自定)
=0bxxxx_0_xxx;
或者
$ GPCS
VDD*18/32;
$ GPCC
Enable, N_PA3, P_R;
//
N_xx 是负输入,P_R 代表正输入是内部参考电压
PADIER = 0bxxxx_0_xxx;
例 2:
选择 Vinternal R 为负输入,Vinternal R 的电压为(22/40)*VDD voltage level,选择 PA4 为正输入,比较器的结
果将反极性并输出到 PA0。
Vinternal R 选择上图的配置方式 “gpcs[5:4] = 2b’10” 和 gpcs [3:0] = 4b’1101 (n=13)
以得到 Vinternal R = (1/5)*VDD + [(13+1)/40]*VDD = [(13+9)/40]*VDD = (22/40)*VDD。
gpcs
= 0b1_0_10_1101;
// 输出到 PA0,Vinternal R = VDD*(22/40)
gpcc
= 0b1_0_0_1_011_1;
// 反极性输出,负输入:Vinternal R,正输入:PA4
//停用 PA4 数字输入使能以防止漏电(x 表示用户自定)
padier = 0bxxx_0_xxxx;
或者
$ GPCS
Output, VDD*22/40;
$ GPCC
Enable, Inverse, N_R, P_PA4;
//
N_R 代表负输入是内部参考电压,P_xx 是正输入
PADIER=0bxxx_0_xxxx;
注意:当选择 PA0 做比较器结果输出时,GPCS 会影响 PA3 的仿真输出功能,但不影响实际 IC 的功能,
请在仿真时需避开这个情况。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 38 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.5.3
使用比较器和 band-gap 1.20V
内部 Band-gap 参考电压生成器可以提供 1.20V,它可以测量外部电源电压水平。该 Band-gap 参考电
压可以选做负输入去和正输入 Vinternal R 比较。Vinternal R 的电源是 VDD,
利用调整 Vinternal R 电压水平和 Band-gap
参考电压比较,就可以知道 VDD 的电压。如果 N(gpcs[3:0]十进制)是让 Vinternal R 最接近 1.20V ,那么 VDD
的电压就可以透过下列公式计算:
对于 Case 1 而言:VDD = [ 32 / (N+9) ] * 1.20 volt;
对于 Case 2 而言:VDD = [ 24 / (N+1) ] * 1.20 volt;
对于 Case 3 而言:VDD = [ 40 / (N+9) ] * 1.20 volt;
对于 Case 4 而言:VDD = [ 32 / (N+1) ] * 1.20 volt;
例 1:
$ GPCS VDD*12/40;
//
$ GPCC Enable, BANDGAP, P_R;
//
4.0V * 12/40 = 1.2V
BANDGAP 是负输入,P_R 代表正输入是内部参考电压
….
if
(GPC_Out)
{
//
或写成 GPCC.6
//
当 VDD﹥4V
//
当 VDD﹤4V
}
else
{
}
©Copyright 2018, PADAUK Technology Co. Ltd
Page 39 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.6 16 位计数器 (Timer16)
PMS132/PMS132B 内置一个 16 位硬件计数器(Timer16),计数器时钟可来自于系统时钟(CLK) ,外部晶
体振荡器时钟(EOSC),内部高频振荡时钟(IHRC),内部低频振荡时钟(ILRC),PA4 和 PA0,一个多任务器用来
选择时钟输出的时钟来源。在送到 16 位计数器之前,1 个可软件编程的预分频器提供÷1、÷4、÷16、÷64 选择,
让计数范围更大。
16 位计数器只能向上计数,计数器初始值可以使用 stt16 指令来设定,而计数器的数值也可以利用 ldt16
指令存储到 SRAM 数据存储器。可软件编程的选择器用于选择 Timer16 的中断条件,当计数器溢出时, Timer16
可以触发中断。Timer16 模块框图如图.9 所示。中断源是来自 16 位计数器的位 8 到位 15,中断类型可以上升
沿触发或下降沿触发,定义在寄存器 integs.5(IO 地址是 0x0C)。
图 9:Timer16 模块框图
当使用 Timer16 时,Timer16 的语法定义在.inc 文件中。有三个参数来定义 Timer16 的使用。第一个参数
是用来定义 Timer16 的时钟源,第二个参数是用来定义预分频器,最后一个参数是定义中断源。详细如下:
T16M
IO_RW
0x06
$ 7~5: STOP, SYSCLK, X, PA4_F, IHRC, EOSC, ILRC, PA0_F
//第一个参数
$ 4~3: /1, /4, /16, /64
//第二个参数
$ 2~0: BIT8, BIT9, BIT10, BIT11, BIT12, BIT13, BIT14, BIT15
//第三个参数
©Copyright 2018, PADAUK Technology Co. Ltd
Page 40 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
使用者可以依照系统的要求来定义 T16M 参数,例子如下,更多例子请参考 IDE 软件“帮助 使用手册 IC
介绍 缓存器介绍 T16M” 。
$ T16M SYSCLK, /64, BIT15;
// 选择(SYSCLK/64)当 Timer16 时钟源,每 2^16 个时钟周期产生一次 INTRQ.2=1
// 系统时钟 System Clock = IHRC / 2 = 8 MHz
// SYSCLK/64 = 8 MHz/64 = 125kHz,约每 524 mS 产生一次 INTRQ.2=1
$ T16M EOSC, /1, BIT13;
// 选择(EOSC/1)当 Timer16 时钟源,每 2^14 个时钟周期产生一次 INTRQ.2=1
// EOSC=32768 Hz,32768 Hz/(2^14) = 2Hz,每 0.5S 产生一次 INTRQ.2=1
$ T16M PA0_F, /1, BIT8;
// 选择 PA0 当 Timer16 时钟源,每 2^9 个时钟周期产生一次 INTRQ.2=1
// 每接收 512 个 PA0 时钟周期产生一次 INTRQ.2=1
$ T16M STOP;
// 停止 Timer16 计数
假如 Timer16 是不受干扰自由运行,中断发生的频率可以用下列式子描述:
FINTRQ_T16M = Fclock source ÷ P ÷ 2n+1
其中,F 是 Timer16 的时钟源频率;
P 是 t16m [4:3]的选项(比如 1, 4, 16, 64);
N 是中断要求选择的位,例如:选择位 10,那么 n=10。
5.7 8 位 PWM 计数器(Timer2/Timer3)
PMS132/PMS132B 内置 2 个 8 位硬件 PWM 计数器(Timer2/Timer3)。
以下描述只以 Timer2 为例,
因为 Timer3
和 Timer2 结构是一样的。图 10 为 Timer2 硬件框图,计数器的时钟源可以来自系统时钟(CLK),内部高频 RC 振
荡器时钟(IHRC),内部低频 RC 振荡器时钟(ILRC),外部晶体振荡器(EOSC),PA0, PB0, PA4 和比较器。寄存器
tm2c 的位[7:4]用来选择 Timer2 的时钟。 如果 IHRC 作为 Timer2 的时钟源,当仿真器停住时,IHRC 时钟仍然会送
到 Timer2,所以 Timer2 仍然会计数。依据寄存器 tm2c[3:2]的设定,Timer2 的输出可以选择性输出到 PB2,PA3
或 PB4(Timer3 的计数输出可选择为 PB5,
PB6 或 PB7)。
此时无论 PX.x 是输入还是输出的状态,
Timer2
(或 Timer3)
的信号都会被强制输出。利用软件编程寄存器 tm2s 位[6:5],时钟预分频模块提供÷1,÷4,÷16 和÷64 的选择,另
外,利用软件编程寄存器 tm2s 位[4:0],时钟分频器的模块提供了÷1~÷31 的功能。在结合预分频器以及分频器,
Timer2 时钟(TM2_CLK)频率可以广泛和灵活,以提供不同产品应用。
8 位 PWM 定时器只能执行 8 位上升计数操作,经由寄存器 tm2ct,定时器的值可以设置或读取。当 8 位定时
器计数值达到上限寄存器设定的范围时,定时器将自动清除为零,上限寄存器用来定义定时器产生波形的周期或
PWM 占空比。8 位 PWM 定时器有两个工作模式:周期模式和 PWM 模式;周期模式用于输出固定周期波形或中断
事件;PWM 模式是用来产生 PWM 输出波形,PWM 分辨率可以为 6 位到 8 位。图 11 显示出 Timer2 周期模式和
PWM 模式的时序图。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 41 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
图 10:Timer2 硬件框图
图 11:Timer2 周期模式和 PWM 模式的时序图(tm2c.1=1)
©Copyright 2018, PADAUK Technology Co. Ltd
Page 42 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
程序选项 ”GPC_PWM“ 是指根据需求由比较器结果控制生成 PWM 波形的功能。如果程序选项“GPC_PWM”
被选中后,此时当比较器输出是 1 时,PWM 停止输出;而比较器输出是 0 时,PWM 恢复输出,如图 12 所示。
图 12:比较器控制 PWM 输出
5.7.1
使用 Timer2 产生周期波形
如果选择周期模式的输出,输出波形的占空比总是 50%,其输出频率与寄存器设定,可以概括如下:
输出频率= Y ÷ [2 × (K+1) × S1 × (S2+1) ]
Y = tm2c[7:4] : Timer2 所选择的时钟源频率
K = tm2b[7:0] : 上限寄存器设定的值(十进制)
S1 = tm2s[6:5] : 预分频器设定值 (1, 4, 16, 64)
S2 = tm2s[4:0] : 分频器值(十进制,1 ~ 31)
例 1:
tm2c = 0b0001_1000, Y=8MHz
tm2b = 0b0111_1111, K=127
tm2s = 0b0000_00000, S1=1, S2=0
输出频率= 8MHz ÷
[ 2 × (127+1) × 1 × (0+1) ] = 31.25kHz
例 2:
tm2c = 0b0001_1000, Y=8MHz
tm2b = 0b0111_1111, K=127
tm2s[7:0] = 0b0111_11111, S1=64 , S2 = 31
输出频率= 8MHz ÷ ( 2 × (127+1) × 64 × (31+1) ) =15.25Hz
©Copyright 2018, PADAUK Technology Co. Ltd
Page 43 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
例 3:
tm2c = 0b0001_1000, Y=8MHz
tm2b = 0b0000_1111, K=15
tm2s = 0b0000_00000, S1=1, S2=0
输出频率= 8MHz ÷ ( 2 × (15+1) × 1 × (0+1) ) = 250kHz
例 4:
tm2c = 0b0001_1000, Y=8MHz
tm2b = 0b0000_0001, K=1
tm2s = 0b0000_00000, S1=1, S2=0
输出频率= 8MHz ÷ ( 2 × (1+1) × 1 × (0+1) ) =2MHz
使用 Timer2 定时器从 PA3 引脚产生周期波形的示例程序如下所示:
Void
FPPA0 (void)
{
. ADJUST_IC
SYSCLK=IHRC/2, IHRC=16MHz, VDD=5V
…
tm2ct = 0x00;
tm2b = 0x7f;
tm2s = 0b0_00_00001;
//
8-bit PWM,预分频 = 1,分频 = 2
tm2c = 0b0001_10_0_0;
//
系统时钟,输出=PA3,周期模式
while(1)
{
nop;
}
}
©Copyright 2018, PADAUK Technology Co. Ltd
Page 44 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.7.2
使用 Timer2 产生 8 位 PWM 波形
如果选择 8 位 PWM 的模式,应设立 tm2c [1] = 1,tm2s [7] = 0,输出波形的频率和占空比可以概括如下:
输出频率= Y ÷ [256 × S1 × (S2+1) ]
输出占空比= [( K+1 ) ÷ 256]×100%
Y = tm2c[7:4] : Timer2 所选择的时钟源频率
K = tm2b[7:0] : 上限寄存器设定的值(十进制)
S1= tm2s[6:5] : 预分频器设定值 (1, 4, 16, 64)
S2 = tm2s[4:0] : 分频器值(十进制,1 ~ 31)
例 1:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0111_1111, K=127
tm2s = 0b0000_00000, S1=1, S2=0
输出频率 = 8MHz ÷ ( 256 × 1 × (0+1) ) = 31.25kHz
输出占空比 = [(127+1) ÷ 256] × 100% = 50%
例 2:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0111_1111, K=127
tm2s = 0b0111_11111, S1=64, S2=31
输出频率 = 8MHz ÷ ( 256 × 64 × (31+1) ) = 15.25Hz
输出占空比 = [(127+1) ÷ 256] × 100% = 50%
例 3:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b1111_1111, K=255
tm2s = 0b0000_00000, S1=1, S2=0
PWM 输出是高电平
输出占空比 = [(255+1) ÷ 256] × 100% = 100%
例 4:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0000_1001, K = 9
tm2s = 0b0000_00000, S1=1, S2=0
输出频率 = 8MHz ÷ ( 256 × 1 × (0+1) ) = 31.25kHz
输出占空比 = [(9+1) ÷ 256] × 100% = 3.9%
©Copyright 2018, PADAUK Technology Co. Ltd
Page 45 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
使用 Timer2 定时器从 PA3 产生 PWM 波形的示例程序如下所示:
void
FPPA0 (void)
{
.ADJUST_IC
SYSCLK=IHRC/2, IHRC=16MHz, VDD=5V
wdreset;
tm2ct = 0x00;
tm2b = 0x7f;
tm2s = 0b0_00_00001;
//
8-bit PWM, 预分频 = 1,分频 = 2
tm2c = 0b0001_10_1_0;
//
系统时钟,输出=PA3,PWM 模式
while(1)
{
nop;
}
}
5.7.3
使用 Timer2 产生 6 位 PWM 波形
如果选择 6 位 PWM 的模式,应设立 tm2c [1] = 1,tm2s [7] = 1,输出波形的频率和占空比可以概括如下:
输出频率 = Y ÷ [64 × S1 × (S2+1) ]
输出占空比 = [( K+1 ) ÷ 64] × 100%
tm2c[7:4] = Y : Timer2 所选择的时钟源频率
tm2b[7:0] = K : 上限寄存器设定的值(十进制)
tm2s[6:5] = S1 : 预分频器设定值 (1, 4, 16, 64)
tm2s[4:0] = S2 : 分频器值(十进制,1 ~ 31)
例 1:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0001_1111, K=31
tm2s = 0b1000_00000, S1=1, S2=0
输出频率 = 8MHz ÷ ( 64 × 1 × (0+1) ) = 125kHz
输出占空比 = [(31+1) ÷ 64] × 100% = 50%
例 2:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0001_1111, K=31
tm2s = 0b1111_11111, S1=64, S2=31
输出频率= 8MHz ÷ ( 64 × 64 × (31+1) ) = 61.03 Hz
输出占空比 = [(31+1) ÷ 64] × 100% = 50%
©Copyright 2018, PADAUK Technology Co. Ltd
Page 46 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
例 3:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0011_1111, K=63
tm2s = 0b1000_00000, S1=1, S2=0
PWM 输出是高电平
输出占空比 = [(63+1) ÷ 64] × 100% = 100%
例 4:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0000_0000, K=0
tm2s = 0b1000_00000, S1=1, S2=0
输出频率= 8MHz ÷ ( 64 × 1 × (0+1) ) = 125kHz
输出占空比 = [(0+1) ÷ 64] × 100% =1.5%
5.8 11 位 PWM 计数器
PMS132/PMS132B 内置 3 个 11 位硬件 PWM 生成器(PWMG0,
PWMG1 & PWMG2)。
以下描述只以 PWMG0
为例,因为 PWMG1 和 PWMG2 结构是一样的。
其各自的输出如下:
PWMG0 – PA0, PB4, PB5
PWMG1 – PA4, PB6, PB7
PWMG2 – PA3, PB2, PB3, PA5(PA5 只有开漏输出,而且仿真器不支持)
5.8.1
PWM 波形
PWM 波形(图 13)有一个时基(TPeriod =时间周期)和一个周期里输出高的时间(占空比)。PWM 的频
N
率取决于时基(fPWM = 1/TPeriod),PWM 的分辫率取决于一个时基里的计数个数(N 位分辫率,2 × Tclock = TPeriod)。
图 13:PWM 输出波形
©Copyright 2018, PADAUK Technology Co. Ltd
Page 47 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.8.2
硬件和时序框图
PMS132/PMS132B 内置三个 11 位硬件 PWM 生成器,图 14 所示是硬件框图,以 PMMG0 为例。时
钟源可以是 IHRC 或者系统时钟。依据寄存器 PWMC 的设定,使用者可以选择性将 PWM 输出到 PA0,PB4
或者 PB5。此时无论 PX.x 是输入还是输出的状态,PWM 信号都会被强制输出。PWM 的周期由 PWM 上
限高和低寄存器决定,PWM 的占空比由 PWM 占空比高和低寄存器决定。用户也可以通过用 GPC_PWM
code option,令比较器可控制 PWM 波形的输出。
图 14:11 位 PWM 生成器硬件框图
图 15:11 位 PWM 生成器输出时序图
©Copyright 2018, PADAUK Technology Co. Ltd
Page 48 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.8.3
11 位 PWM 生成器计算公式
如果 11 位 PWM 生成器选择的时钟源是 IHRC,PWM 的频率和占空比可由下公式得出:
PWM 输出频率 = FIHRC ÷ [P × (K + 1) × CB ]
PWM 输出占空比(实时) = (1/FIHRC) * [ DB10_1 + DB0 * 0.5 + 0.5]
pwms[6:5] = P;预分频
pwms[4:0] =
K;分频
Duty_Bound[10:1] = {pwmgxdth[7:0],pwmgxdtl[7:6]} = DB10_1;占空比
Duty_Bound[0] = pwmgxdtl[5] = DB0
Counter_Bound[10:1] = {pwmgxcubh[7:0], pwmgxcubl[7:6]} = CB;计数器
5.9
看门狗
看门狗是一个计数器,其时钟源来自内部低频振荡器(ILRC),可以通过上电复位和 wdreset 指令随时清零看
门狗计数,利用 misc 寄存器的选择,可以设定四种不同的看门狗超时时间,它是:
当 misc[1:0]=00(默认)时:8k ILRC 时钟周期
当 misc[1:0]=01 时:16k ILRC 时钟周期
当 misc[1:0]=10 时:64k ILRC 时钟周期
当 misc[1:0]=11 时:256k ILRC 时钟周期
ILRC 的频率有可能因为工厂制造的变化,电源电压和工作温度而漂移很多,使用者必须预留安全操作范围。
由于在系统重启或者唤醒之后,看门狗计数周期会比预计要短,为防止看门狗计数溢出导致复位,建议在系统重
启或唤醒之后使用立即 wdreset 指令清零看门狗计数。
当看门狗超时溢出时,PMS132/PMS132B 将复位并重新运行程序。看门狗时序图如图 16 所示。
图 16:看门狗超时溢出时序图
©Copyright 2018, PADAUK Technology Co. Ltd
Page 49 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.10 中断
PMS132/PMS132B 有 8 个中断源:
外部中断源 PA0/PB5
外部中断源 PB0/PA4
ADC 中断源
Timer16 中断源
GPC 中断源
PWMG0 中断源
Timer2 中断源
Timer3 中断源
每个中断请求源都有自己的中断控制位来启用或停用。中断功能的硬件框图如图 17 所示。所有的中断请求
标志位是由硬件置位并且并通过软件写寄存器 intrq 清零。中断请求标志设置点可以是上升沿或下降沿或两者兼
而有之,这取决于对寄存器 integs 的设置。所有的中断请求源最后都需由 engint 指令控制(启用全局中断)使
中断运行,以及使用 disgint 指令(停用全局中断)停用它。
中断堆栈与数据存储器共享,其地址由堆栈寄存器 sp 指定。由于程序计数器是 16 位宽度,堆栈寄存器 sp
位 0 应保持 0。此外,用户可以使用 pushaf 指令存储 ACC 和标志寄存器的值到堆栈,以及使用 popaf 指令将
值从堆栈恢复到 ACC 和标志寄存器中。由于堆栈与数据存储器共享,在 Mini-C 模式,堆栈位置与深度由编译
程序安排。在汇编模式或自行定义堆栈深度时,用户应仔细安排位置,以防地址冲突。
图 17:中断控制器硬件框图
©Copyright 2018, PADAUK Technology Co. Ltd
Page 50 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
一旦发生中断,其具体工作流程将是:
程序计数器将自动存储到 sp 寄存器指定的堆栈存储器
新的 sp 将被更新为 sp+2
全局中断将被自动停用
将从地址 0x010 获取下一条指令
在中断服务程序中,可以通过读寄存器 intrq 知道中断发生源。
注意:即使 INTEN 为 0,INTRQ 还是会被中断发生源触发。
中断服务程序完成后,发出 reti 指令返回既有的程序,其具体工作流程将是:
从 sp 寄存器指定的堆栈存储器自动恢复程序计数器
新的 sp 将被更新为 sp-2
全局中断将自动启用
下一条指令将是中断前原来的指令。
使用者必须预留足够的堆栈存储器以存中断向量,一级中断需要两个字节,两级中断需要 4 个字节。下面
的示例程序演示了如何处理中断,请注意,处理中断和 pushaf 是需要四个字节堆栈存储器。
void
FPPA0
(void)
{
...
$
INTEN
INTRQ
=
PA0;
// INTEN =1; 当 PA0 准位改变,产生中断请求
0;
// 清除 INTRQ
ENGINT
// 启用全局中断
...
DISGINT
// 停用全局中断
...
}
©Copyright 2018, PADAUK Technology Co. Ltd
Page 51 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
void
// 中断程序
Interrupt (void)
{
PUSHAF
//
存储 ALU 和 FLAG 寄存器
//
如果 INTEN.PA0 在主程序会动态开和关,则表达式中可以判断 INTEN.PA0 是否为 1。
//
例如: If (INTEN.PA0 && INTRQ.PA0) {…}
//
如果 INTEN.PA0 一直在使能状态,就可以省略判断 INTEN.PA0,以加速中断执行。
If (INTRQ.PA0)
{
//
INTRQ.PA0 = 0;
PA0 的中断程序
// 只须清除相对应的位 (PA0)
...
}
...
// X : INTRQ = 0;
//不建议在中断程序最后,才使用 INTRQ = 0 一次全部清除
//因为它可能会把刚发生而尚未处理的中断,意外清除掉
POPAF
//回复 ALU 和 FLAG 寄存器
}
5.11 省电与掉电
PMS132/PMS132B 有三个由硬件定义的操作模式,分别为:正常工作模式,电源省电模式和掉电模式。正
常工作模式是所有功能都正常运行的状态,省电模式(stopexe)是在降低工作电流而且 CPU 保持在随时可以继续
工作的状态,掉电模式(stopsys)是用来深度的节省电力。因此,省电模式适合在偶尔需要唤醒的系统工作,掉电
模式是在非常低消耗功率且很少需要唤醒的系统中使用。表 5 显示省电模式(stopexe)和掉电模式(stopsys)之间在
振荡器模块的差异,没改变就是维持原状态。
STOPSYS
STOPEXE
STOPSYS 和 STOPEXE 模式下在振荡器的差异
IHRC
ILRC
EOSC
停止
停止
停止
没改变
没改变
没改变
表 5:省电模式和掉电模式在振荡器模块的差异
5.11.1 省电模式(“stopexe”)
使用 stopexe 指令进入省电模式,只有系统时钟被停用,其余所有的振荡器模块都仍继续工作。所以只
有 CPU 是停止执行指令,然而, 对 Timer16 计数器而言,如果它的时钟源不是系统时钟,那 Timer16 仍然
会保持计数。stopexe 的省电模式下,唤醒源可以是 IO 的切换,或者 Timer16 计数到设定值时(假如 Timer16
的时钟源是 IHRC 或者 ILRC),或比较器唤醒(需同时设定 GPCC.7 为 1 与 GPCS.6 为 1 来启用比较器唤
醒功能)。假如系统唤醒是因输入引脚切换,那可以视为系统继续正常运行。 省电模式的详细信息如下所示:
©Copyright 2018, PADAUK Technology Co. Ltd
Page 52 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
IHRC 和 EOSC 振荡器模块:没改变,如果被启用,则仍然保持运行状态。
ILRC 振荡器模块:必须保持启用,唤醒时需要靠 ILRC 启动。
系统时钟:停用,因此 CPU 停止运行。
OTP 存储器关闭。
Timer16/ TM2 / TM3:停止计数,如果选择系统时钟或相应的振荡器模块被停止,否则,仍然保持计数。
唤醒源:IO 唤醒(PxDIER 位是 1)或者 Timer16,TM2,TM3 或比较器唤醒。
以下例子是利用 Timer16 来唤醒系统因 stopexe 的省电模式:
$ T16M
ILRC, /1, BIT8
// Timer16 设置
…
WORD
count =
0;
STT16
count;
stopexe;
…
Timer16 的初始值为 0,在 Timer16 计数了 256 个 ILRC 时钟后,系统将被唤醒。
5.11.2 掉电模式(“stopsys”)
掉电模式是深度省电的状态,所有的振荡器模块都会被关闭。通过使用“stopsys” 指令,芯片会直接进
入掉电模式。在下达 stopsys 指令之前建议将 GPCC.7 设为 0 来关闭比较器。下面显示发出 stopsys 命令后,
PMS132/PMS132B 内部详细的状态:
所有的振荡器模块被关闭。
OTP 存储器被关闭。
SRAM 和寄存器内容保持不变。
唤醒源:数字输入使能(PxDIER 位是 1)的 IO 口发生切换。
输入引脚的唤醒可以被视为正常运行的延续,为了降低功耗,进入掉电模式之前,所有的 I/O 引脚应仔
细检查,避免悬空而漏电。断电参考示例程序如下所示:
CLKMD
=
0xF4;
//
CLKMD.4
=
0;
//
系统时钟从 IHRC 变为 ILRC,关闭看门狗时钟
IHRC 停用
…
while (1)
{
//
进入断电模式
假如发生唤醒而且检查 OK,就返回正常工作
否则,停留在断电模式
//
系统时钟从 ILRC 变为 IHRC/2
STOPSYS;
//
if
//
(…)
break;
}
CLKMD =
0x34;
©Copyright 2018, PADAUK Technology Co. Ltd
Page 53 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.11.3 唤醒
进入掉电或省电模式后,PMS132/PMS132B 可以通过切换 IO 引脚恢复正常工作;而 Timer16 中断的
唤醒只适用于省电模式。表 6 显示 stopsys 掉电模式和 stopexe 省电模式在唤醒源的差异。
掉电模式(stopsys)和省电模式(stopexe)在唤醒源的差异
IO 引脚切换
计时器中断
STOPSYS
是
否
STOPEXE
是
是
表 6:掉电模式和省电模式在唤醒源的差异
当使用 IO 引脚来唤醒 PMS132/PMS132B, padier 寄存器应对每一个相应的引脚正确设置“使能唤醒功
能 ” 。 从 唤 醒 事 件 发 生 后 开 始 计 数 , 正 常 的 唤 醒 时 间 大 约 是 3000 个 ILRC 时 钟 周 期 , 另 外 ,
PMS132/PMS132B 提供快速唤醒功能,透过 misc 寄存器选择快速唤醒大约 45 个 ILRC 时钟周期。
模式
唤醒模式
STOPEXE 省电模式 /
STOPSYS 掉电模式
STOPEXE 省电模式 /
STOPSYS 掉电模式
快速唤醒
正常唤醒
切换 IO 引脚的唤醒时间(tWUP)
45 * TILRC,
这里的 TILRC 是指 ILRC 时钟周期
3000* TILRC,
这里的 TILRC 是指 ILRC 时钟周期
请注意:当使用快速开机模式时,不管寄存器 misc.5 是否选择了唤醒模式,都会强制使用快速唤醒模
式。如果选择正常开机模式,即由寄存器 misc.5 来选择唤醒模式。
5.12 IO 引脚
除了 PA5,PMS132/PMS132B 所有 IO 引脚都可以设定成输入或输出,透过数据寄存器(pa, pb),控制寄存
器(pac, pbc)和弱上拉电阻(paph, pbph)设定,每一 IO 引脚都可以独立配置成不同的功能;所有这些引脚设置有
施密特触发输入缓冲器和 CMOS 输出驱动电位水平。当这些引脚为输出低电位时,弱上拉电阻会自动关闭。如果
要读取端口上的电位状态,一定要先设置成输入模式;在输出模式下,读取到的数据是数据寄存器的值。表 7 为
端口 PA0 位的设定配置表。图 18 显示了 IO 缓冲区硬件图。
pa.0
X
X
0
1
1
描述
pac.0 paph.0
0
0
1
1
1
0
1
X
0
1
输入,没有弱上拉电阻
输入,有弱上拉电阻
输出低电位,没有弱上拉电阻(弱上拉电阻自动关闭)
输出高电位,没有弱上拉电阻
输出高电位,有弱上拉电阻
表 7:PA0 设定配置表
©Copyright 2018, PADAUK Technology Co. Ltd
Page 54 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
图 18:IO 引脚缓冲区硬件图
除了 PA5 外,所有的 IO 引脚具有相同的结构;PA5 的输出只能是漏极开路模式(没有 Q1)。对于被选择
为模拟功能的引脚,必须在寄存器 padier 相应位设置为低,以防止漏电流。当 PMS132/PMS132B 在掉电或省
电模式,每一个引脚都可以切换其状态来唤醒系统。对于需用来唤醒系统的引脚,必须设置为输入模式以及寄存
器 padier 相应为高。同样的原因, 当 PA0 用作外部中断引脚时,padier.0 应设置为高,诸如 pbdier.0 对于 PB0,
padier.4 对于 PA4 和 pbdier.5 对于 PB5,都是同样的用法。
5.13 复位和 LVR
5.13.1 复位
引起 PMS132/PMS132B 复位的原因很多,一旦复位发生,PMS132/PMS132B 的所有寄存器将被设置为默
认值,系统会重新启动,程序计数器会跳跃地址 0x0。 当发生上电复位或 LVR 复位,数据存储器的值是在不确
定的状态,然而,若是复位是因为 PRSTB 引脚或 WDT 超时溢位,数据存储器的值将被保留。
5.13.2 LVR 复位
通过程序选项(code option)可以看到,有很多不同级别的 LVR 复位电压可供选择。通常情况下,使用者在选
择 LVR 复位水平时,必须结合单片机工作频率和电源电压,以便让单片机稳定工作。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 55 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.14 模拟-数字转换器(ADC) 模块
图 19:ADC 模块框图
当使用 ADC 模块时有 7 个寄存器需要配置,它们是:
ADC 控制寄存器(adcc)
ADC 调节控制寄存器(adcrgc)
ADC 模式寄存器(adcm)
ADC 数据高位/低位寄存器(adcrh, adcrl)
端口 A/B 数字输入启用寄存器(padier, pbdier)
©Copyright 2018, PADAUK Technology Co. Ltd
Page 56 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
如下是 ADC 装进程的步骤:
(1) 通过寄存器 adcrgc 配置参考高电压
(2) 通过 adcm 寄存器配置 AD 转换时钟信号
(3) 通过 padier、pbdier 寄存器配置模拟输入引脚
(4) 通过 adcc 寄存器选择 ADC 输入通道
(5) 通过 adcc 寄存器启用 ADC 模块
(6) 启用 ADC 模块之后,延迟一段时间
条件 1:使用内部参考高电压如 2V,3V,4V 或者输入通道是 band-gap 时,并且当 200 个 AD 时钟仍小于
1ms 时,所需的延迟时间必须超过 1ms;如果 200 个 AD 时钟已经超过 1ms,那么延迟时间只需要 200 个
AD 时钟即可。
条件 2:没有使用任何内部参考电压如 2V,3V,4V, band-gap 时,延迟时间仅需 200 个 AD 时钟。
(7) 执行 AD 转换并检查 ADC 转换数据是否已经完成 addc.6 设置 1 开启 AD 转换并且检测 addc.6 是否是‘1’。
(8) 从 ADC 寄存器读取转换结果:
先读取 adcrh 寄存器的值然后再读取 adcrl 寄存器的值。
应用时,如果是关掉 ADC 模块后再重新启用 ADC 的情况下,在进行 ADC 转换之前请重新执行如上步骤 6,
确保 ADC 模块已经准备好。
5.14.1 AD 转换的输入要求
为了满足 AD 转换的精度要求,电容的保持电荷(CHOLD)必须完全充电到参考高电压的水平和放电到参考低电
压的水平。模拟输入电路模型如图 20 所示,信号驱动源阻抗(Rs)和内部采样开关阻抗(Rss)会直接影响到 电容
CHOLD 充电所需求的时间。内部采样开关的阻抗可能会因 ADC 充电电压而产生变化;信号驱动源阻抗会影响模
拟输入信号的精度。使用者必须确保在采样前,被测信号的稳定,因此, 信号驱动源阻抗的最大值与被测信号的
频率高度相关。建议,在输入频率为 500khz 下,模拟信号源的最大阻抗值不要超过 10KΩ。
图 20:模拟输入模型
在使用 AD 转换之前,必须确认所选的模拟输入信号的采集时间应符合要求,ADCLK 的选择必须满足最短
信号采集时间。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 57 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
5.14.2 选择参考高电压
ADC 参考高电压能够通过寄存器 adcrgc 的位[7:5]来选择,并且它的选择有 VDD,4V,3V,2V,band-gap
(1.20V)参考电压或者来自 PB1 外部引脚。
5.14.3 ADC 时钟选择
ADC 模块的时钟(ADCLK)能够通过 adcm 寄存器来选择,ADCLK 从 CLK÷1 到 CLK÷128 一共有 8 个选项
可被选择(CLK 是系统时钟)。由于信号采集时间 TACQ ADCLK 的一个时钟周期,所以 ADCLK 必须满足这要
求,建议 ADC 时钟周期是 2us。
5.14.4 配置模拟引脚
有 12 模拟信号可以被 AD 转换选择:11 来自外部引脚的模拟输入信号和一个 band-gap 参考电压或者
0.25*VDD。Bang-gap 有 4 级电压可供选择,分别是:1.2V,2V,3V 和 4V。以外部引脚而言,12 个模拟信号
与 Port A[0],Port A[3],Port A[4],和 Port B[7:0]共享引脚。为了避免漏电,这些引脚在使用时定义为模拟输入
并应停用数字输入功能(设置 padier / pbdier 寄存器的相应位为 0)。
ADC 的测量信号属于小信号,为避免测量信号在测量期间被干扰,被选定的引脚应:(1) 设为输入模式,
(2) 关闭弱上拉电阻,(3) 通过端口 A/B 寄存器(padier / pbdier)设置模拟输入并关闭数字输入。
5.14.5 使用 ADC
下面的示例演示使用 PB0〜PB3 来当 ADC 输入引脚。
首先,定义所选择的引脚:
PBC
PBPH
PBDIER
=
=
=
0B_XXXX_0000;
0B_XXXX_0000;
0B_XXXX_0000;
//
//
//
PB0 ~ PB3 作为输入
PB0 ~ PB3 没有弱上拉电阻
PB0 ~ PB3 停用数字输入
//
//
//
设置 PB3 作为 ADC 输入
设置 PB2 作为 ADC 输入
设置 PB0 作为 ADC 输入
//
//
建议 /16 @系统时钟=8MHz
建议 /8 @系统时钟=4MHz
下一步,设定 ADCC 寄存器,示例如下:
$
$
$
ADCC Enable, PB3;
ADCC Enable, PB2;
ADCC Enable, PB0;
下一步,设定 ADCM 寄存器,示例如下:
$
$
ADCM 12BIT, /16;
ADCM 12BIT, /8;
下一步,延迟 400us,示例如下:
// 系统时钟=8MHz
// 系统时钟=4MHz
.Delay 8*400;
.Delay 4*400;
©Copyright 2018, PADAUK Technology Co. Ltd
Page 58 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
接着,开始 ADC 转换:
AD_START =
1;
while (! AD_DONE) NULL;
//
//
开始 ADC 转换
等待 ADC 转换结果
//
两字节结果:放在 ADCRH 和 ADCRL
最后,当 AD_DONE 高电位时读取 ADC 结果:
WORD
Data$1
Data$0
Data
=
=
=
Data;
ADCRH;
ADCRL;
Data >> 4;
ADC 也可以利用下面方法停用:
$
ADCC Disable;
或
ADCC
=
0;
5.15 乘法器
芯片内置一 8x8 乘法器以加强硬件的运算功能。这个乘法运算方式是 8x8 的无符号运算并且在一个时钟周期
内完成运算。在下达指令之前,乘数与被乘数都要放在 ACC 累加器和 mulop(0x08)寄存器上,在下达 mul 指令
之后,运算结果的高位字节会放在寄存器 mulrh(0x09)上,运算结果的低位字节会放在 ACC 累加器上。乘法器的
硬件框图如图 21 所示。
图 21:硬件乘法器框图
©Copyright 2018, PADAUK Technology Co. Ltd
Page 59 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
IO 寄存器
6.
6.1. ACC 状态标志寄存器(flag), IO 地址 = 0x00
位
初始值
读/写
7-4
-
-
3
0
读/写
2
0
读/写
1
0
读/写
0
0
读/写
描述
保留。
OV(溢出标志)。溢出时置 1。
AC(辅助进位标志)。两个条件下,此位设置为 1:(1)是进行低半字节加法运算产生进位,
(2)减法运算时,低半字节向高半字节借位。
C(进位标志)。有两个条件下,此位设置为 1:(1)加法运算产生进位,(2)减法运算有借位。
进位标志还受带进位标志的 shift 指令影响。
Z(零)。此位将被设置为 1,当算术或逻辑运算的结果是 0;否则将被清零。
6.2. 堆栈指针寄存器(sp), IO 地址 = 0x02
位
初始值
读/写
7-0
-
读/写
描述
堆栈指针寄存器。读出当前堆栈指针,或写入以改变堆栈指针。请注意 0 位必须维持为 0
因程序计数器是 16 位。
6.3. 时钟模式寄存器(clkmd), IO 地址 = 0x03
位
初始值
读/写
描述
系统时钟(CLK)选择:
类型 0, clkmd[3]=0
7-5
111
读/写
类型 1, clkmd[3]=1
000:IHRC÷4
000:IHRC÷16
001:IHRC÷2
001:IHRC÷8
010:IHRC
010:ILRC÷16(仿真器不支持)
011:EOSC÷4
011:IHRC÷32
100:EOSC÷2
100:IHRC÷64
101:EOSC
101:EOSC÷8
110:ILRC÷4
111:ILRC(默认值)
11x:保留
4
1
读/写
内部高频 RC 振荡器功能。 0/1:停用/启用
3
0
读/写
2
1
读/写
1
1
读/写
看门狗功能。 0/1:停用/启用
0
0
读/写
引脚 PA5/PRSTB 功能
时钟类型选择。这个位是用来选择位 7~位 5 的时钟类型。
0 / 1:类型 0 /类型 1
内部低频 RC 振荡器功能。0/1:停用/启用
当内部低频 RC 振荡器功能停用时,看门狗功能同时被关闭。
©Copyright 2018, PADAUK Technology Co. Ltd
0 / 1:PA5 / PRSTB
Page 60 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.4. 中断允许寄存器(inten), IO 地址 = 0x04
位
初始值
读/写
描述
7
0
读/写
启用从 Timer3 的溢出中断。0/1:停用/启用
6
0
读/写
启用从 Timer2 的溢出中断。0/1:停用/启用
5
0
读/写
启用从 PWMG0 的溢出中断。0/1:停用/启用
4
0
读/写
启用从比较器的溢出中断。0/1:停用/启用
3
0
读/写
启用从 ADC 的溢出中断。0/1:停用/启用
2
0
读/写
启用从 Timer16 的溢出中断。0/1:停用/启用
1
0
读/写
启用从 PB0/PA4 的溢出中断。0/1:停用/启用
0
0
读/写
启用从 PA0/PB5 的溢出中断。0/1:停用/启用
6.5. 中断请求寄存器(intrq), IO 地址 = 0x05
位
初始值
读/写
描述
7
-
读/写
Timer3 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求。
6
-
读/写
Timer2 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求。
5
-
读/写
PWMG0 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求。
4
-
读/写
比较器的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求。
3
-
读/写
ADC 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求。
2
-
读/写
Timer16 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求。
1
-
读/写
PB0/PA4 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求。
0
-
读/写
PA0/PB5 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求。
6.6. 乘法器运算对象寄存器(mulop), IO 地址 = 0x08
位
初始值
读/写
7-0
-
读/写
描述
硬件乘法运算的运算对象。
6.7. 乘法器结果高字节寄存器(mulrh), IO 地址 = 0x09
位
初始值
读/写
7-0
-
只读
描述
乘法运算的高字节结果(只读)
©Copyright 2018, PADAUK Technology Co. Ltd
Page 61 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.8. Timer16 控制寄存器 (t16m), IO 地址 = 0x06
位
初始值
读/写
描述
Timer16 时钟选择:
000:停用
001:CLK(系统时钟)
010:保留
7-5
000
读/写
011:PA4 下降沿(从外部引脚)
100:IHRC
101:EOSC
110:ILRC
111:PA0 下降沿(从外部引脚)
Timer16 时钟分频:
00:÷1
4-3
00
读/写
01:÷4
10:÷16
11:÷64
中断源选择。当所选择的状态位变化时,中断事件发生。
0:bit 8 of Timer16
1:bit 9 of Timer16
2:bit 10 of Timer16
2-0
000
读/写
3:bit 11 of Timer16
4:bit 12 of Timer16
5:bit 13 of Timer16
6:bit 14 of Timer16
7:bit 15 of Timer16
6.9. 外部晶体振荡器控制寄存器(eoscr), IO 地址 = 0x0a
位
初始值
读/写
7
0
只写
描述
使能外部晶体振荡器。0 / 1:停用/使能。
晶体振荡器的选择。
00:保留
6-5
00
只写
01:低驱动电流。适用于较低频率晶体,例如:32KHz
10:中驱动电流。适用于中等频率晶体,例如:1MHz
11:高驱动电流。适用于较高频率晶体,例如:4MHz
4-1
-
-
0
0
只写
保留。请设为 0。
将 Band-gap 和 LVR 硬件模块断电。 0 / 1:正常/ 断电。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 62 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.10.中断边缘选择寄存器(integs), IO 地址 = 0x0c
位
初始值
读/写
7-5
-
-
描述
保留。
Timer16 中断边缘选择:
4
0
只读
0:上升缘请求中断。
1:下降缘请求中断。
PB0/PA4 中断边缘选择:
00:上升缘和下降缘都请求中断。
3-2
00
只读
01:上升缘请求中断。
10:下降缘请求中断。
11:保留。
PA0/PB5 中断边缘选择:
00:上升缘和下降缘都请求中断。
1-0
00
只读
01:上升缘请求中断。
10:下降缘请求中断。
11:保留。
6.11.端口 A 数字输入使能寄存器(padier), IO 地址 = 0x0d
位
初始值
读/写
描述
使能 PA7 数字输入和唤醒事件。1 / 0:启用/ 停用。
当使用外部晶体振荡器的时候,该位设为 0 防止耗电。如果这个位设为 0,PA7 则不能用来唤
醒系统。
使能 PA6 数字输入和唤醒事件。1 / 0:启用/ 停用。
当使用外部晶体振荡器的时候,该位设为 0 防止耗电。如果这个位设为 0,PA6 则不能用来唤
醒系统。
使能 PA5 数字输入和唤醒事件。1 / 0:启用/ 停用。
该位设为 0,PA5 无法唤醒系统。
使能 PA4 数字输入和唤醒事件。1 / 0:启用/ 停用。
当 PA4 作为 AD 输入时,该位设为 0 可以防止耗电。如果这个位设为 0,PA4 则不能用来唤
醒系统。
使能 PA3 数字输入和唤醒事件。1 / 0:启用/ 停用。
当 PA4 作为 AD 输入时,该位设为 0 可以防止耗电。如果这个位设为 0,PA3 则不能用来唤
醒系统。
7
1
只读
6
1
只读
5
1
只读
4
1
只读
3
1
只读
2-1
1
只读
保留
0
1
只读
使能 PA0 数字输入和唤醒和中断请求。 1 / 0:启用/ 停用。
当 PA0 作为 AD 模拟输入时,该位设为 0 可以防止耗电。如果这个位设为 0,PA0 则不能用
来唤醒系统,并且停用中断请求。
6.12.端口 B 数字输入使能寄存器(pbdier), IO 地址 = 0x0e
位
初始值
读/写
7-0
0xFF
只读
描述
使能 PB7~PB0 数字输入防止当引脚用作模拟输入时漏电, 当选择停用时,这个引脚的
唤醒功能也被停用。0 / 1 : 停用/ 启用。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 63 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.13. 端口 A 数据寄存器(pa), IO 地址 = 0x10
位
初始值
读/写
7-0
0x00
读/写
描述
数据寄存器的端口 A。
6.14. 端口 A 控制寄存器(pac), IO 地址 = 0x11
位
初始值
读/写
描述
端口 A 控制寄存器。这些寄存器是用来定义端口 A 每个相应的引脚的输入模式或输出模式。
7-0
0x00
读/写
0/1:输入/输出。
请注意:PA5 当输入或输出低,当 PA5 设为输出高时,为 OC/OD 输出。
6.15. 端口 A 上拉控制寄存器(paph), IO 地址 = 0x12
位
初始值
读/写
7-0
0x00
读/写
描述
端口 A 上拉控制寄存器。这些寄存器是用来控制上拉高端口 A 每个相应的引脚。
0/1:停用/启用
6.16. 端口 B 数据寄存器(pb), IO 地址 = 0x14
位
初始值
读/写
7-0
0x00
读/写
描述
数据寄存器的端口 B。
6.17. 端口 B 控制寄存器(pbc), IO 地址 = 0x15
位
初始值
读/写
7-0
0x00
读/写
描述
端口 B 控制寄存器。这些寄存器是用来定义端口 B 每个相应的引脚的输入模式或输出模式。
0/1:输入/输出。
6.18. 端口 B 上拉控制寄存器(pbph), IO 地址 = 0x16
位
初始值
读/写
7-0
0x00
读/写
描述
端口 B 上拉控制寄存器。这些寄存器是用来控制上拉高端口 B 每个相应的引脚。
0/1:停用/启用。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 64 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.19. 杂项寄存器(misc), IO 地址 = 0x17
位
初始值
读/写
7-6
-
-
描述
保留(写 0) 。
快唤醒功能。快速唤醒功能 EOSC 模式下不支持。
0:正常唤醒
5
0
只写
唤醒时间是 3000 个 ILRC 时钟(不适用快速开机)
1:快速唤醒
唤醒时间为 45 个 ILRC 时钟
4-3
-
-
2
0
只写
保留(写 0) 。
停用 LVR 功能:
0 / 1:启用 / 停用
看门狗时钟超时时间设定:
00:8k ILRC 时钟周期
1-0
00
只写
01:16k ILRC 时钟周期
10:64k ILRC 时钟周期
11:256k ILRC 时钟周期
6.20. 比较器控制寄存器(gpcc), IO 地址 = 0x18
位
初始值
读/写
7
0
读/写
描述
启用比较器。 0 / 1:停用/启用。
当此位被设置为启用,请同时设置相应的模拟输入引脚是数字停用,以防止漏电。
比较器结果。
6
-
只读
0:正输入 < 负输入
1:正输入 > 负输入
选择比较器的结果是否由 TM2_CLK 采样输出。
5
0
读/写
0:比较器的结果没有 TM2_CLK 采样输出
1:比较器的结果是由 TM2_CLK 采样输出
选择比较器输出的结果是否反极性。
4
0
读/写
0:比较器输出的结果没有反极性
1:比较器输出的结果是反极性
选择比较器负输入的来源。
000:PA3
001:PA4
3-1
000
读/写
010:内部 1.20 V band-gap 参考电压
011:Vinternal R
100:PB6
101:PB7
11X:保留
选择比较器正输入的来源。
0
0
读/写
0:Vinternal R
1:PA4
©Copyright 2018, PADAUK Technology Co. Ltd
Page 65 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.21. 比较器选择寄存器(gpcs), IO 地址 = 0x19
位
初始值
读/写
描述
7
0
只写
6
0
-
5
0
只写
选择比较器参考电压 Vinternal R 最高的范围
4
0
只写
选择比较器参考电压 Vinternal R 最低的范围
3-0
0000
只写
比较器输出启用(到 PA0)。
0 / 1 :停用/启用。
保留。
选择比较器参考电压 Vinternal R。
0000(最低) ~ 1111(最高)
6.22. 状态复位寄存器(rstst), IO 地址 = 0x1b
位
初始值
(只有 POR )
读/写
描述
MCU 是否从看门狗复位? 如果是,则此位设为高。并且在只有该位写入 0,或者上电复位
7
0
读/写
6
0
读/写
5
0
-
保留(写 0)。
4
-
-
保留(写 1)。
3
-
读/写
2
-
读/写
1
-
读/写
0
-
读/写
时才发生复位动作。 0 / 1:否 / 是。
MCU 是否从无效代码复位? 如果是,则此为设为高。并且在只有该位写入 0,或者上电复
位时才发生复位动作。 0 / 1:否 / 是。
MCU 是否从(PA5)引脚复位? 如果是,则此为设为高。并且在只有该位写入 0,或者上电
复位时才发生复位动作。 0 / 1:否 / 是。
VDD 是否低于 4V 复位? 如果是,则此为设为高。并且在只有该位写入 0,或者上电复位时
才发生复位动作。 0 / 1:否 / 是。
VDD 是否低于 3V 复位? 如果是,则此为设为高。并且在只有该位写入 0,或者上电复位时
才发生复位动作。 0 / 1:否 / 是。
VDD 是否低于 2V 复位? 如果是,则此为设为高。并且在只有该位写入 0,或者上电复位时
才发生复位动作。 0 / 1:否 / 是。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 66 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.23. Timer2 控制寄存器(tm2c), IO 地址 = 0x1c
位
初始值
读/写
描述
Timer2 时钟源选择:
0000:停用
0001:CLK(系统时钟)
0010:IHRC
0011:EOSC
0100:ILRC
0101:比较器输出
7-4
0000
读/写
011x:保留
1000:PA0(上升沿)
1001:~PA0(下降沿)
1010:PB0(上升沿)
1011:~PB0(下降沿)
1100:PA4(上升沿)
1101:~PA4(下降沿)
注意:在 ICE 模式且 IHRC 被选为 Timer2 定时器时钟,当 ICE 停下时,发送到定时器的时
钟是不停止,定时器仍然继续计数。
Timer2 输出选择:
00:停用
3-2
00
读/写
01:PB2
10:PA3
11:PB4
1
0
读/写
0
0
读/写
Timer2 模式选择:
0 / 1:定周期模式 / PWM 模式。
启用 Timer2 反极性输出:
0 / 1:停用/启用。
6.24. Timer2 计数寄存器(tm2ct), IO 地址 = 0x1d
位
初始值
读/写
7-0
0x00
读/写
描述
Timer2 定时器位[7:0]。
6.25. Timer2 分频寄存器(tm2s), IO 地址 = 0x1e
位
初始值
读/写
7
0
只写
描述
PWM 分辨率选择:
0:8 位
1:6 位
Timer2 时钟预分频器:
00:÷ 1
6-5
00
只写
01:÷ 4
10:÷ 16
11:÷ 64
4-0
00000
只写
Timer2 时钟分频器。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 67 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.26. Timer2 上限寄存器(tm2b), IO 地址 = 0x09
位
初始值
读/写
7-0
0x00
只写
描述
Timer2 上限寄存器。
6.27. PWMG0 控制寄存器(pwmg0c), IO 地址 = 0x20
位
初始值
读/写
描述
7
0
只写
启用 PWMG0:
0/1:停用/启用。
6
-
只读
PWMG0 生成器输出状态。
5
0
只写
选择 PWMG0 的输出的结果是否反极性:
0/1:停用/启用。
4
0
只写
PWMG0 计数器清零。
写“1”清零 PWMG0 计数,清零 PWMG0 计数后,这个位会自动归 0。
选择 PWMG0 输出:
000:不输出
3-1
0
只写
001:PB5
011:PA0
100:PB4
其他:保留
0
0
只写
PWMG0 时钟源。
0:SYSCLK
1:IHRC or IHRC * 2(由 Code Option:PWM_Source 決定)
6.28. PWMG0 分频寄存器 (pwmg0s), IO 地址 = 0x21
位
7
初始值
0
读/写
描述
只写
PWMG0 中断模式。
0:当计数为设定的占空比时产生中断
1:当计数为 0 产生中断
6-5
0
只写
PWMG0 预分频
00:÷1
01:÷4
10:÷16
11:÷64
4-0
0
只写
PWMG0 时钟分频
6.29. PWMG0 计数上限高位寄存器(pwmg0cubh), IO 地址 = 0x24
位
初始值
读/写
7-0
-
只写
描述
PWMG0 上限寄存器 Bit[10:3]。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 68 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.30. PWMG0 计数上限高位寄存器(pwmg0cubl), IO 地址 = 0x25
位
初始值
读/写
7-6
-
只写
5-0
-
-
描述
PWMG0 上限寄存器 Bit[2:1]。
保留。
6.31. PWMG0 占空比高位寄存器(pwmg0dth), IO 地址 = 0x22
位
初始值
读/写
7-0
-
只写
描述
PWMG0 占空比值 bit[10:3]。
6.32. PWMG0 占空比低位寄存器(pwmg0dtl), IO 地址 = 0x23
位
初始值
读/写
7-5
-
只写
4-0
-
-
描述
PWMG0 占空比值 bit [2:0]。
保留。
注意:PWMG0 占空比低位寄存器的值必须写在 PWMG0 占空比高位寄存器之前。
6.33. Timer3 控制寄存器(tm3c), IO 地址 = 0x32
位
初始值
读/写
7-4
0000
读/写
3-2
00
读/写
1
0
读/写
0
0
读/写
描述
Timer3 时钟选择。
0000:disable
0001:CLK(系统时钟)
0010:IHRC
0011:EOSC
0100:ILRC
0101:比较器输出
011x:保留
1000:PA0(上升沿)
1001:~PA0(下降沿)
1010:PB0(上升沿)
1011:~PB0(下降沿)
1100:PA4(上升沿))
1101:~PA4(下降沿)
注意:在 ICE 模式且 IHRC 被选为 Timer3 定时器时钟,当 ICE 停下时,发送到定时器的
时钟是不停止,定时器仍然继续计数。
Timer3 输出选择。
00:停用
01:PB5
10:PB6
11:PB7
Timer3 模式选择。
0:周期模式
1:PWM 模式
启用 Timer3 反极性输出。
0 / 1:停用/启用
©Copyright 2018, PADAUK Technology Co. Ltd
Page 69 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.34. Timer3 计数寄存器(tm3ct), IO 地址 = 0x33
位
初始值
读/写
7-0
0x00
读/写
描述
Timer3 定时器位[7:0]。
6.35. Timer3 分频寄存器(tm3s), IO 地址 = 0x34
位
初始值
读/写
描述
PWM 分辨率选择。
7
0
只写
0:8 位
1:6 位
Timer3 时钟预分频器。
00:÷ 1
6-5
00
只写
01:÷ 4
10:÷ 16
11:÷ 64
4-0
00000
只写
Timer3 时钟分频器。
6.36. Timer3 上限寄存器(tm3b), IO 地址 = 0x3f
位
初始值
读/写
7-0
0x00
只写
描述
Timer3 上限寄存器。
6.37. ADC 控制寄存器(adcc), IO 地址 = 0x3b
位
初始值
读/写
7
0
读/写
6
0
读/写
描述
启用 ADC 功能. 0/1:停用/启用。
ADC 转换进程控制位:
读到 “1”表明 ADC 已经准备好,或已转换完成。
通道选择。 以下 4 位用来选择 AD 转换的输入信号:
0000:PB0/AD0,
0001:PB1/AD1,
0010:PB2/AD2,
0011:PB3/AD3,
0100:PB4/AD4,
5-2
0000
读/写
0101:PB5/AD5,
0110:PB6/AD6,
0111:PB7/AD7,
1000:PA3/AD8,
1001:PA4/AD9,
1010:PA0/AD10,
1111:(通道 F) Band-gap 参考电压或者 0.25*VDD
其他:保留。
0-1
-
-
保留(写 0)。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 70 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.38. ADC 模式寄存器(adcm), IO 地址 = 0x3c
位
初始值
读/写
7-4
-
-
描述
保留(写 0)。
ADC 时钟源选择:
000:CLK(系统时钟)÷ 1,
001:CLK(系统时钟)÷ 2,
010:CLK(系统时钟)÷ 4,
3-1
000
只写
011:CLK(系统时钟)÷ 8,
100:CLK(系统时钟)÷ 16,
101:CLK(系统时钟)÷ 32,
110:CLK(系统时钟)÷ 64,
111:CLK(系统时钟)÷ 128,
0
-
保留。
-
6.39. ADC 调节控制寄存器(adcrgc), IO 地址 = 0x3d
位
初始值
读/写
描述
以下 3 位用来选择 ADC 输入信号的参考电压:
000:VDD,
001:2V,
7-5
000
只写
010:3V,
011:4V,
100:PB1,
101:Band-gap 1.20v 参考电压,
其他: 保留。
ADC 通道 F 选择器:
4
只写
0
0:Band-gap 参考电压,
1:0.25*VDD(电压偏移±0.01*VDD)。
ADC 通道 F 的 Band-gap 参考电压选择:
00:1.2V
3-2
00
只写
01:2V
10:3V
11:4V
1-0
-
-
保留(写 0)。
6.40. ADC 数据高位寄存器(adcrh), IO 地址 = 0x3e
位
初始值
读/写
7-0
-
只读
描述
这 8 个只读位是 ADC 转换结果的位[11:4] ,寄存器的位 7 是 ADC 转换结果的最高位。
6.41. ADC 数据低位寄存器(adcrl), IO 地址 = 0x3f
位
初始值
读/写
7-4
-
只读
3-0
-
-
描述
这 4 个只读位是 ADC 转换结果的位 [3:0]。
保留。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 71 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.42. PWMG1 控制寄存器(pwmg1c), IO 地址 = 0x26
位
初始值
读/写
描述
7
0
只写
启用 PWMG1:
0/1:停用/启用。
6
-
只读
PWMG1 生成器输出状态。
5
0
只写
选择 PWMG1 的输出的结果是否反极性:
0/1:停用/启用。
4
0
只写
PWMG1 计数器清零。
写“1”清零 PWMG1 计数,清零 PWMG1 计数后,这个位会自动归 0。
选择 PWMG1 输出:
000:不输出
3-1
只写
0
001:PB6
011:PA4
100:PB7
其他:保留
0
只写
0
PWMG1 时钟源。
0:SYSCLK
1:IHRC or IHRC * 2(由 Code Option:PWM_Source 決定)
6.43. PWMG1 分频寄存器(pwmg1s), IO 地址 = 0x27
位
7
初始值
0
读/写
只写
描述
PWMG1 中断模式。
0:当计数为设定的占空比时产生中断
1:当计数为 0 产生中断
PWMG1 预分频
00:÷1
6-5
0
只写
01:÷4
10:÷16
11:÷64
4-0
0
只写
PWMG1 时钟分频
6.44. PWMG1 计数上限高位寄存器(pwmg1cubh), IO 地址 = 0x2A
位
初始值
读/写
7-0
8’h00
只写
描述
PWMG1 上限寄存器 Bit[10:3]。
6.45. PWMG1 计数上限高位寄存器(pwmg1cubl), IO 地址 = 0x2B
位
初始值
读/写
7-6
000
只写
5-0
-
-
描述
PWMG1 上限寄存器 Bit[2:1]。
保留。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 72 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.46. PWMG1 占空比高位寄存器(pwmg1dth), IO 地址 = 0x28
位
初始值
读/写
7-0
8’h00
只写
描述
PWMG1 占空比值 bit[10:3]。
6.47. PWMG1 占空比低位寄存器(pwmg1dtl), IO 地址 = 0x29
位
初始值
读/写
7-5
000
只写
4-0
-
-
描述
PWMG1 占空比值 bit [2:0]。
保留。
注意:PWMG1 占空比低位寄存器的值必须写在 PWMG1 占空比高位寄存器之前。
6.48. PWMG2 控制寄存器(pwmg2c), IO 地址 = 0x2C
位
初始值
读/写
7
0
只写
启用 PWMG2:
0/1:停用/启用。
6
-
只读
PWMG2 生成器输出状态。
5
0
只写
选择 PWMG2 的输出的结果是否反极性:
0/1:停用/启用。
4
0
只写
PWMG2 计数器清零。
写“1”清零 PWMG2 计数,清零 PWMG2 计数后,这个位会自动归 0。
只写
选择 PWMG2 输出:
000:不输出
001:PB3
011:PA3
100:PB2
101:PA5
其他:保留
只写
PWMG2 时钟源。
0:SYSCLK
1:IHRC or IHRC * 2(由 Code Option:PWM_Source 決定)
3-1
0
0
0
描述
6.49. PWMG2 分频寄存器(pwmg2s), IO 地址 = 0x2D
位
初始值
读/写
7
0
只写
6-5
0
只写
4-0
0
只写
描述
PWMG2 中断模式。
0:当计数为设定的占空比时产生中断
1:当计数为 0 产生中断
PWMG2 预分频
00:÷1
01:÷4
10:÷16
11:÷64
PWMG2 时钟分频
©Copyright 2018, PADAUK Technology Co. Ltd
Page 73 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
6.50. PWMG2 计数上限高位寄存器(pwmg2cubh), IO 地址 = 0x30
位
初始值
读/写
7-0
8’h00
只写
描述
PWMG2 上限寄存器 Bit[10:3]。
6.51. PWMG2 计数上限高位寄存器(pwmg2cubl), IO 地址 = 0x31
位
初始值
读/写
7-6
000
只写
5-0
-
-
描述
PWMG2 上限寄存器 Bit[2:1]。
保留。
6.52. PWMG2 占空比高位寄存器(pwmg2dth), IO 地址 = 0x2E
位
初始值
读/写
7-0
8’h00
只写
描述
PWMG2 占空比值 bit[10:3]。
6.53. PWMG2 占空比低位寄存器(pwmg2dtl), IO 地址 = 0x2F
位
初始值
读/写
7-5
000
只写
4-0
-
-
描述
PWMG2 占空比值 bit [2:0]。
保留。
注意:PWMG2 占空比低位寄存器的值必须写在 PWMG2 占空比高位寄存器之前。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 74 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
7.
指令
符号
ACC
a
sp
flag
描述
累加器(Accumulator 的缩写)
累加器(Accumulator 在程序里的代表符号)
堆栈指针
ACC 标志寄存器
I
立即数据
&
逻辑与
|
逻辑或
←
移动
^
异或
+
加
-
减
〜
按位取反(逻辑补数,1 补数)
〒
负数(2 补码)
OV
溢出(2 补数系统的运算结果超出范围)
Z
零(如果零运算单元操作的结果是 0,这位设置为 1)
C
进位(Carry)
AC
辅助进位标志(Auxiliary Carry)
IO.n
寄存器的位
M.n
只允许寻址在地址 0~0x3F (0~63) 的位置
©Copyright 2018, PADAUK Technology Co. Ltd
Page 75 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
7.1. 数据传输类指令
mov
mov
mov
mov
mov
ldt16
a, I
M, a
a, M
a, IO
IO, a
word
移动即时数据到累加器。
例如: mov
a, 0x0f;
结果:
a ← 0fh;
『不变』,
受影响标志位: Z:
C:
『不变』,
AC:『不变』,
OV:
『不变』
移动数据由累加器到存储器。
例如: mov
MEM, a;
结果:
MEM ← a
『不变』,
受影响标志位: Z:
C:
『不变』,
AC:『不变』,
OV:
『不变』
移动数据由存储器到累加器。
例如: mov
a, MEM ;
结果:
a ← MEM; 当 MEM 为零时,标志位 Z 会被置位。
『受影响』
, C:『不变』
, AC:
『不变』,
受影响标志位:Z:
OV:
『不变』
移动数据由 IO 到累加器。
例如: mov
a, pa ;
结果:
a ← pa; 当 pa 为零时,标志位 Z 会被置位。
『受影响』
, C:
『不变』, AC:『不变』
,
受影响标志位: Z:
移动数据由累加器到 IO。
例如: mov
pb, a;
结果:
pb ← a
『不变』,
受影响标志位:Z:
C:
『不变』,
将 Timer16 的 16 位计算值复制到 RAM。
例如: ldt16 word;
结果:
word ← 16-bit timer
受影响标志位: Z:
『不变』, C:
『不变』,
AC:『不变』,
AC:『不变』,
OV:『不变』
OV:
『不变』
OV:
『不变』
应用范例:
-----------------------------------------------------------------------------------------------------------------------word
T16val ;
// 定义一个 RAM word
…
clear
lb@T16val ;
// 清零 T16val (LSB)
clear
hb@T16val ;
// 清零 T16val (MSB)
stt16
T16val ;
// 设定 Timer16 的起始值为 0
…
set1
t16m.5 ;
// 启用 Timer16
…
set0
t16m.5 ;
// 停用 Timer16
ldt16
T16val ;
// 将 Timer16 的 16 位计算值复制到 RAM T16val
….
------------------------------------------------------------------------------------------------------------------------
©Copyright 2018, PADAUK Technology Co. Ltd
Page 76 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
stt16
word
将放在 word 的 16 位 RAM 复制到 Timer16。
例如: stt16 word;
结果: 16-bit timer ← word
受影响标志位: Z:
『不变』, C:
『不变』, AC:『不变』, OV:
『不变』
应用范例:
----------------------------------------------------------------------------------------------------------------------------word
T16val ;
// 定义一个 RAM word
…
mov
a, 0x34 ;
mov
lb@T16val, a ; // 将 0x34 搬到 T16val (LSB)
mov
a, 0x12 ;
mov
hb@T16val, a ; // 将 0x12 搬到 T16val (MSB)
stt16
T16val ;
// Timer16 初始化 0x1234
…
----------------------------------------------------------------------------------------------------------------------
idxm
a, index
使用索引作为 RAM 的地址并将 RAM 的数据读取并载入到累加器。它需要 2T 时间执行这一指令。
例如:
idxm
结果:
a ← [index], index 是用 word 定义。
a, index;
受影响的标志位: Z:
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
应用范例:
------------------------------------------------------------------------------------------------------------------------word
RAMIndex ;
// 定义一个 RAM 指针
…
mov
a, 0x5B ;
// 指定指针地址 (LSB)
mov
lb@RAMIndex, a ; // 将指针存到 RAM (LSB)
mov
a, 0x00 ;
// 指定指针地址为 0x00 (MSB),在 PMS132/PMS132B 要为 0
mov
hb@RAMIndex, a ; // 将指针存到 RAM (MSB)
…
idxm
a, RAMIndex ;
// 将 RAM 地址为 0x5B 的数据读取并载入累加器
-----------------------------------------------------------------------------------------------------------------------Idxm
index, a
使用索引作为 RAM 的地址并将累加器的数据读取并载入到 RAM。它需要 2T 时间执行这一指令。
例如:idxm
index, a;
结果:
[index] ← a; index 是以 word 定义。
受影响的标志位: Z:
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
应用范例:
-------------------------------------------------------------------------------------------------------------------------word
RAMIndex ;
// 定义一个 RAM 指针
…
mov
a, 0x5B ;
// 指定指针地址 (LSB)
mov
lb@RAMIndex, a ; // 将指针存到 RAM (LSB)
mov
a, 0x00 ;
// 指定指针地址为 0x00 (MSB),在 PMS132/PMS132B 要
为0
mov
hb@RAMIndex, a ; // 将指针存到 RAM (MSB)
…
mov
a, 0Xa5 ;
idxm
RAMIndex, a ;
// 将累加器数据读取并载入地址为 0x5B 的 RAM
-----------------------------------------------------------------------------------------------------------------------©Copyright 2018, PADAUK Technology Co. Ltd
Page 77 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
xch
M
累加器与 RAM 之间交换数据。
例如:
xch
MEM ;
结果: MEM ← a , a ← MEM
受影响的标志位: Z:
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
将累加器和算术逻辑状态寄存器的数据存到堆栈指针指定的堆栈存储器。
例如:pushaf;
结果:[sp] ← {flag, ACC};
sp ← sp + 2 ;
受影响的标志位: Z:
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
应用范例:
-----------------------------------------------------------------------------------------------------------------------.romadr 0x10 ;
// 中断服务程序入口地址
pushaf ;
// 将累加器和算术逻辑状态寄存器的资料存到堆栈存储器
…
// 中断服务程序
…
// 中断服务程序
popaf ;
// 将堆栈存储器的资料回存到累加器和算术逻辑状态寄存器
reti ;
-----------------------------------------------------------------------------------------------------------------------将堆栈指针指定的堆栈存储器的数据回传到累加器和算术逻辑状态寄存器。
例如:popaf;
结果:sp ← sp - 2 ;
{Flag, ACC} ← [sp] ;
受影响的标志位: Z:
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
pushaf
popaf
7.2. 算数运算类指令
add
a, I
add
a, M
add
M, a
addc
a, M
addc
M, a
将立即数据与累加器相加,然后把结果放入累加器。
例如: add
a, 0x0f ;
结果: a ← a + 0fh
『受影响』, C:
『受影响』
, AC:『受影响』,
受影响的标志位: Z:
将 RAM 与累加器相加,然后把结果放入累加器。
例如: add
a, MEM ;
结果: a ← a + MEM
『受影响』, C:
『受影响』
, AC:『受影响』,
受影响的标志位: Z:
将 RAM 与累加器相加,然后把结果放入 RAM。
例如: add
MEM, a;
结果: MEM ← a + MEM
『受影响』, C:
『受影响』
, AC:『受影响』,
受影响的标志位: Z:
将 RAM、累加器以及进位相加,然后把结果放入累加器。
例如: addc
a, MEM ;
结果: a ← a + MEM + C
『受影响』, C:
『受影响』
, AC:『受影响』,
受影响的标志位: Z:
将 RAM、累加器以及进位相加,然后把结果放入 RAM。
例如: addc
MEM, a ;
结果: MEM ← a + MEM + C
『受影响』, C:
『受影响』
, AC:『受影响』,
受影响的标志位: Z:
©Copyright 2018, PADAUK Technology Co. Ltd
Page 78 of 95
OV:『受影响』
OV:『受影响』
OV:『受影响』
OV:『受影响』
OV:『受影响』
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
addc
a
addc
M
nadd
a, M
nadd
M, a
sub
a, I
sub
a, M
sub
M, a
subc
a, M
subc
M, a
subc
a
subc
M
将累加器与进位相加,然后把结果放入累加器。
例如: addc
a;
结果: a ← a + C
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
受影响的标志位: Z:
将 RAM 与进位相加,然后把结果放入 RAM。
例如: addc
MEM ;
结果: MEM ← MEM + C
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
受影响的标志位: Z:
将累加器的负逻辑(2补码)与RAM相加,然后把结果放入累加器。
例如: nadd
a, MEM ;
结果: a ← 〒a + MEM
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
受影响的标志位: Z:
将RAM的负逻辑(2补码)与累加器相加,然后把结果放入RAM。
例如: nadd
MEM, a ;
结果: MEM ← 〒MEM + a
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
受影响的标志位: Z:
累加器减立即数据,然后把结果放入累加器。
例如: sub
a, 0x0f;
结果: a ← a - 0fh ( a + [2’s complement of 0fh] )
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
受影响的标志位: Z:
累加器减 RAM,然后把结果放入累加器。
例如: sub
a, MEM ;
结果: a ← a - MEM ( a + [2’s complement of M] )
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
受影响的标志位: Z:
RAM 减累加器,然后把结果放入 RAM。
例如: sub
MEM, a;
结果: MEM ← MEM - a ( MEM + [2’s complement of a] )
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
受影响的标志位: Z:
累加器减 RAM,再减进位,然后把结果放入累加器。
例如: subc
a, MEM;
结果: a ← a – MEM - C
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
受影响的标志位: Z:
RAM 减累加器,再减进位,然后把结果放入 RAM。
例如: subc
MEM, a ;
结果: MEM ← MEM – a - C
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
受影响的标志位: Z:
累加器减进位,然后把结果放入累加器。
例如: subc
a;
结果: a ← a - C
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
受影响的标志位: Z:
RAM 减进位,然后把结果放入 RAM。
例如: subc
MEM;
结果: MEM ← MEM - C
受影响的标志位: Z:
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
inc M
RAM 加 1。
例如: inc
MEM ;
结果: MEM ← MEM + 1
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
受影响的标志位: Z:
©Copyright 2018, PADAUK Technology Co. Ltd
Page 79 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
dec
M
RAM 减 1。
例如: dec
MEM;
结果: MEM ← MEM - 1
受影响的标志位: Z:
『受影响』,
clear
M
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
清除 RAM 为 0。
例如: clear
MEM ;
结果: MEM ← 0
受影响的标志位: Z:
『不变』
,
C:
『不变』,
AC:『不变』
,
OV:『不变』
AC:『不变』
,
OV:『不变』
乘法运算,8x8 无符号乘法执行指令。
mul
例如:
mul
结果:
{MulRH,ACC} ← ACC * MulOp
;
受影响的标志位:
Z:
『不变』
,
C:
『不变』,
应用范例 :
--------------------------------------------------------------------------------------------------------------------…
mov
a, 0x5a ;
mov
mulop, a ;
mov
a, 0xa5 ;
mul
// 0x5A * 0xA5 = 3A02 (mulrh + ACC)
mov
ram0, a ;
// LSB, ram0=0x02
mov
a, mulrh ;
// MSB, ACC=0X3A
…
---------------------------------------------------------------------------------------------------------------------
7.3. 移位运算类指令
sr
a
累加器的位右移,位 7 移入值为 0。
例如: sr
a;
结果: a (0,b7,b6,b5,b4,b3,b2,b1) ← a (b7,b6,b5,b4,b3,b2,b1,b0), C ← a(b0)
受影响的标志位: Z:
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
src
a
累加器的位右移,位 7 移入进位标志位。
例如: src
a;
结果: a (c,b7,b6,b5,b4,b3,b2,b1) ← a (b7,b6,b5,b4,b3,b2,b1,b0), C ← a(b0)
受影响的标志位: Z:
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
sr
M
RAM 的位右移,位 7 移入值为 0。
例如: sr
MEM ;
结果: MEM(0,b7,b6,b5,b4,b3,b2,b1) ← MEM(b7,b6,b5,b4,b3,b2,b1,b0), C ← MEM(b0)
受影响的标志位: Z:
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
src
M
RAM 的位右移,位 7 移入进位标志位。
例如: src
MEM ;
结果: MEM(c,b7,b6,b5,b4,b3,b2,b1) ← MEM (b7,b6,b5,b4,b3,b2,b1,b0), C ← MEM(b0)
受影响的标志位: Z:
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
©Copyright 2018, PADAUK Technology Co. Ltd
Page 80 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
sl
slc
sl
slc
a
a
M
M
swap
a
累加器的位左移,位 0 移入值为 0。
例如: sl a ;
结果: a (b6,b5,b4,b3,b2,b1,b0,0) ← a (b7,b6,b5,b4,b3,b2,b1,b0), C ← a (b7)
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
受影响的标志位: Z:
累加器的位左移,位 0 移入进位标志位。
例如: slc a ;
结果: a (b6,b5,b4,b3,b2,b1,b0,c) ← a (b7,b6,b5,b4,b3,b2,b1,b0), C ← a(b7)
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
受影响的标志位: Z:
RAM 的位左移,位 0 移入值为 0。
例如: sl MEM ;
结果: MEM (b6,b5,b4,b3,b2,b1,b0,0) ← MEM (b7,b6,b5,b4,b3,b2,b1,b0), C ← MEM(b7)
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
受影响的标志位: Z:
RAM 的位左移,位 0 移入进位标志位。
例如: slc MEM ;
结果: MEM (b6,b5,b4,b3,b2,b1,b0,C) ← MEM (b7,b6,b5,b4,b3,b2,b1,b0), C ← MEM (b7)
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
受影响的标志位: Z:
累加器的高 4 位与低 4 位互换。
例如: swap
a;
结果: a (b3,b2,b1,b0,b7,b6,b5,b4) ← a (b7,b6,b5,b4,b3,b2,b1,b0)
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
受影响的标志位: Z:
7.4. 逻辑运算类指令
and
a, I
累加器和立即数据执行逻辑 AND,然后把结果保存到累加器。
例如:and
a, 0x0f ;
结果:a ← a & 0fh
受影响的标志位: Z:
『受影响』,
and
a, M
and
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
a, 0x0f ;
结果: a ← a | 0fh
受影响的标志位: Z:
『受影响』,
a, M
OV:『不变』
累加器和立即数据执行逻辑 OR,然后把结果保存到累加器。
例如: or
or
AC:
『不变』
,
MEM, a ;
结果: MEM ← a & MEM
受影响的标志位: Z:
『受影响』,
a, I
C:
『不变』
,
累加器和 RAM 执行逻辑 AND,然后把结果保存到 RAM。
例如:
or
OV:『不变』
a, RAM10 ;
结果:a ← a & RAM10
受影响的标志位: Z:
『受影响』,
M, a
AC:
『不变』
,
累加器和 RAM 执行逻辑 AND,然后把结果保存到累加器。
例如:and
and
C:
『不变』
,
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
累加器和 RAM 执行逻辑 OR,然后把结果保存到累加器。
例如:or
a, MEM ;
结果:a ← a | MEM
受影响的标志位: Z:
『受影响』,
©Copyright 2018, PADAUK Technology Co. Ltd
C:
『不变』
,
Page 81 of 95
AC:
『不变』
,
OV:『不变』
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
or
M, a
累加器和 RAM 执行逻辑 OR,然后把结果保存到 RAM。
例如: or
MEM, a ;
结果: MEM ← a | MEM
受影响的标志位: Z:
『受影响』,
xor
a, I
IO, a
AC:
『不变』
,
a, 0x0f ;
结果: a ← a ^ 0fh
受影响的标志位: Z:
『受影响』, C:
『不变』
, AC:
『不变』
,
累加器和 IO 寄存器执行逻辑 XOR, 然把结果存到 IO 寄存器。
例如:
xor
a, M
a, MEM ;
结果: a ← a ^ RAM10
受影响的标志位: Z:
『受影响』,
M, a
xor
AC:
『不变』
,
OV:『不变』
MEM, a ;
结果: MEM ← a ^ MEM
受影响的标志位: Z:
『受影响』,
a
C:
『不变』
,
累加器和 RAM 执行逻辑 XOR,然后把结果保存到 RAM。
例如:
not
OV:『不变』
累加器和 RAM 执行逻辑 XOR,然后把结果保存到累加器。
例如: xor
xor
OV:『不变』
pa, a ;
结果: pa ← a ^ pa ; // pa 是 port A 资料寄存器
受影响的标志位: Z:
『不变』
, C:
『不变』, AC:『不变』
,
xor
OV:『不变』
累加器和立即数据执行逻辑 XOR,然后把结果保存到累加器。
例如: xor
xor
C:
『不变』
,
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
AC:
『不变』
,
OV:『不变』
累加器执行 1 补码运算,结果放在累加器。
例如: not
a;
结果: a ← 〜a
受影响的标志位: Z:
『受影响』,
C:
『不变』
,
应用范例:
-----------------------------------------------------------------------------------------------------------------------mov
a, 0x38 ;
// ACC=0X38
not
a;
// ACC=0XC7
-----------------------------------------------------------------------------------------------------------------------not
M
RAM 执行 1 补码运算,结果放在 RAM。
例如:
not
结果:
MEM ← 〜MEM
MEM ;
受影响的标志位: Z:
『受影响』,
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
应用范例:
-----------------------------------------------------------------------------------------------------------------------mov
a, 0x38 ;
mov
mem, a ;
// mem = 0x38
not
mem ;
// mem = 0xC7
------------------------------------------------------------------------------------------------------------------------
©Copyright 2018, PADAUK Technology Co. Ltd
Page 82 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
neg
累加器执行 2 补码运算,结果放在累加器。
a
例如: neg
a;
结果: a ←a 的 2 补码
受影响的标志位: Z:
『受影响』,
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
应用范例:
-----------------------------------------------------------------------------------------------------------------------mov
a, 0x38 ;
// ACC=0X38
neg
a;
// ACC=0XC8
-----------------------------------------------------------------------------------------------------------------------neg
M
RAM 执行 2 补码运算,结果放在 RAM。
例如: neg
MEM;
结果: MEM ←
MEM 的 2 补码
受影响的标志位: Z:
『受影响』,
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
应用范例:
-----------------------------------------------------------------------------------------------------------------------mov
a, 0x38 ;
mov
mem, a ;
// mem = 0x38
not
mem ;
// mem = 0xC8
-----------------------------------------------------------------------------------------------------------------------comp
a, M
比较累加器和 RAM 的内容。
例如: comp
a, MEM;
结果: 等效于( a - MEM ),并改变标志位 Flag。
受影响的标志位:
Z:
『受影响』,
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
应用范例:
-----------------------------------------------------------------------------------------------------------------------mov
a, 0x38 ;
mov
mem, a ;
comp
a, mem ;
mov
a, 0x42 ;
mov
mem, a ;
mov
a, 0x38 ;
comp
a, mem ;
// Z 标志被设为 1
// C 标志被设为 1
-----------------------------------------------------------------------------------------------------------------------comp
M, a
比较累加器和 RAM 的内容。
例如: comp
MEM, a;
结果:等效于( MEM - a ),并改变标志位 Flag。
受影响的标志位:
Z:
『受影响』,
©Copyright 2018, PADAUK Technology Co. Ltd
C:
『受影响』
,
Page 83 of 95
AC:『受影响』,
OV:『受影响』
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
7.5. 位运算类指令
set0
IO.n
IO 口的位 N 拉低电位。
例如: set0
pa.5 ;
结果: PA5=0
受影响的标志位: Z:
『不变』
,
set1
IO.n
C:
『不变』,
AC:『不变』
,
OV:『不变』
C:
『不变』,
AC:『不变』
,
OV:『不变』
IO 口的位 N 拉高电位。
例如:set1
pb.5 ;
结果: PB5=1
受影响的标志位: Z:
『不变』
,
swapc
IO.n
受影响的标志位: 『不变』Z
『受影响』C
『不变』AC
『不变』OV。
应用范例 1(连续输出) :
...
set1
pac.0 ;
// 设置 PA.0 作为输出
flag.1 ;
// C=0
...
set0
swapc
set1
swapc
pa.0 ;
flag.1 ;
pa.0 ;
// 送 C 给 PA.0(位操作), PA.0=0
// C=1
// 送 C 给 PA.0(位操作), PA.0=1
...
应用范例 2 (连续输入) :
...
pac.0 ;
// 设置 PA.0 作为输入
swapc
pa.0 ;
// 读 PA.0 的值给 C(位操作)
src
a;
// 把 C 移位给 ACC 的位 7
swapc
pa.0 ;
// 读 PA.0 的值给 C(位操作)
src
a;
// 把新进 C 移位给 ACC 的位 7,上一个 PA.0 的值给 ACC 的位 6
set0
...
...
-----------------------------------------------------------------------------------------------------------------------set0
M.n
RAM 的位 N 设为 0。
例如:set0
MEM.5 ;
结果: MEM 位 5 为 0
受影响的标志位: Z:
『不变』
,
set1
M.n
C:
『不变』,
AC:『不变』
,
OV:『不变』
C:
『不变』,
AC:『不变』
,
OV:『不变』
RAM 的位 N 设为 1。
例如: set1
MEM.5 ;
结果: MEM 位 5 为 1
受影响的标志位: Z:
『不变』
,
©Copyright 2018, PADAUK Technology Co. Ltd
Page 84 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
7.6. 条件运算类指令
ceqsn
a, I
比较累加器与立即数据,如果是相同的,即跳过下一指令。标志位的改变与 (a ← a - I)相同
例如:
ceqsn
a, 0x55 ;
inc
MEM ;
goto
error ;
结果: 假如 a=0x55, then “goto error”; 否则, “inc MEM”.
受影响的标志位: Z:
『受影响』,
ceqsn
a, M
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
比较累加器与 RAM,如果是相同的,即跳过下一指令。标志位改变与 (a ← a - M)相同
例如: ceqsn
a, MEM;
结果: 假如 a=MEM,跳过下一个指令
受影响的标志位: Z:
『受影响』,
cneqsn
a, M
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
比较累加器和 RAM 的值,如果不相等就跳到下一条指令。 标志改变与(a ← a - M)相同
例如: cneqsn
a, MEM;
结果: 如果 a≠MEM, 跳到下一条指令
『受影响』,
受影响的标志位: Z:
cneqsn
a, I
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
比较累加器和立即数的值,如果不相等就跳到下一条指令。标志改变与(a ← a - I)
例如: cneqsn
inc
a,0x55 ;
MEM ;
goto
error ;
结果:如果 a≠0x55, 然后 “goto error”; 否则, “inc MEM”.
受影响的标志位: Z:
『受影响』,
t0sn
IO.n
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
如果 IO 的指定位是 0,跳过下一个指令。
例如: t0sn
pa.5;
结果: 如果 PA5 是 0,跳过下一个指令。
受影响的标志位: Z:
『不变』
,
t1sn
IO.n
C:
『不变』,
AC:『不变』
,
OV:『不变』
AC:『不变』
,
OV:『不变』
如果 IO 的指定位是 1,跳过下一个指令。
例如: t1sn
pa.5 ;
结果: 如果 PA5 是 1,跳过下一个指令。
受影响的标志位: Z:
『不变』
,
t0sn
M.n
C:
『不变』,
如果 RAM 的指定位是 0,跳过下一个指令。
例如: t0sn
MEM.5 ;
结果: 如果 MEM 的位 5 是 0,跳过下一个指令。
受影响的标志位: Z:
『不变』
,
t1sn
M.n
C:
『不变』,
AC:『不变』
,
OV:『不变』
如果 RAM 的指定位是 1,跳过下一个指令。
例如: t1sn
MEM.5 ;
结果: 如果 MEM 的位 5 是 1,跳过下一个指令。
受影响的标志位: Z:
『不变』
,
izsn
a
C:
『不变』,
AC:『不变』
,
OV:『不变』
累加器加 1,若累加器新值是 0,跳过下一个指令。
例如:
izsn
a;
结果:
a
a + 1,若 a=0,跳过下一个指令。
←
受影响的标志位: Z:
『受影响』,
©Copyright 2018, PADAUK Technology Co. Ltd
C:
『受影响』
,
Page 85 of 95
AC:『受影响』,
OV:『受影响』
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
dzsn
a
累加器减 1,若累加器新值是 0,跳过下一个指令。
例如:
dzsn
结果:
a
←
a;
a – 1,若 a=0,跳过下一个指令。
受影响的标志位: Z:
『受影响』,
izsn
M
M
AC:『受影响』,
OV:『受影响』
RAM 加 1,若 RAM 新值是 0,跳过下一个指令。
例如:
izsn
结果:
MEM
MEM;
←
MEM + 1,若 MEM=0,跳过下一个指令。
受影响的标志位: Z:
『受影响』,
dzsn
C:
『受影响』
,
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
RAM 减 1,若 RAM 新值是 0,跳过下一个指令。
例如:
dzsn
结果:
MEM
MEM;
←
MEM - 1,若 MEM=0,跳过下一个指令。
受影响的标志位: Z:
『受影响』,
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
7.7. 系统控制类指令
call
label
goto
label
ret
ret
reti
nop
I
函数调用,地址可以是全部空间的任一地址。
例如: call
function1;
结果: [sp] ← pc + 1
pc ← function1
sp ← sp + 2
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
受影响的标志位: Z:
转到指定的地址,地址可以是全部空间的任一地址。
例如: goto
error;
结果: 跳到 error 并继续执行程序
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
受影响的标志位: Z:
将立即数据复制到累加器,然后返回。
例如: ret 0x55;
结果: A ← 55h
ret ;
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
受影响的标志位: Z:
从函数调用中返回原程序。
例如: ret;
结果: sp ← sp - 2
pc ← [sp]
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
受影响的标志位: Z:
从中断服务程序返回到原程序。在这指令执行之后,全部中断将自动启用。
例如: reti;
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
受影响的标志位: Z:
没任何动作。
例如: nop;
结果: 没任何改变
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
受影响的标志位: Z:
©Copyright 2018, PADAUK Technology Co. Ltd
Page 86 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
pcadd
engint
a
目前的程序计数器加累加器是下一个程序计数器。
例如: pcadd a;
结果: pc ← pc + a
受影响的标志位: Z:
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
应用范例:
-----------------------------------------------------------------------------------------------------------------------…
mov
a, 0x02 ;
pcadd
a;
// PC 33Ω。
应尽量避免使用 PA5 作为输入。
(6) PA7 和 PA6 作为外部晶体振荡器。
PA7 和 PA6 设定为输入。
PA7 和
用 PADIER 寄存器将
EOSCR 寄存器位[6:5]选择对应的晶体振荡器频率:
PA6 内部上拉电阻设为关闭。
PA6 和 PA7 设为模拟输入。
01 : 低频,例如:32KHz
10 : 中频,例如:455KHz、1MHz
11 : 高频,例如:4MHz
设置 EOSCR.7 =1 启用晶体振荡器。
从 IHRC 或 ILRC 切换到 EOSC,要先确认 EOSC 已经稳定振荡 。
注意:请务必仔细阅读 PMC-APN013 之内容,并据此合理使用晶体振荡器。如因用户的晶体振荡器的质量不佳、
使用条件不合理、PCB 清洁剂残留漏电、或是 PCB 板布局不合理等等用户原因,造成的慢起振或不起振情况,我
司不对此负责。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 90 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
9.2.2 中断
(1) 使用中断功能的一般步骤如下:
步骤 1:设定 INTEN 寄存器,开启需要的中断的控制位
步骤 2:清除 INTRQ 寄存器
步骤 3:主程序中,使用 ENGINT 指令允许 CPU 的中断功能
步骤 4:等待中断。中断发生后,跳入中断子程序
步骤 5:当中断子程序执行完毕,返回主程序
* 在主程序中,可使用 DISGINT 指令关闭所有中断
* 跳入中断子程序处理时,可使用 PUSHAF 指令来保存 ALU 和 FLAG 寄存器数据,并在
RETI 之前,使用 POPAF 指令复原,步骤如下:
void
Interrupt (void)
// 中断发生后,跳入中断子程序
// 自动进入 DISGINT 的状态,CPU 不会再接受中断
{
PUSHAF;
…
POPAF;
// 系统自动填入 RETI,直到执行 RETI 完毕才自动恢复到 ENGINT 的状态。
}
(2) INTEN,INTRQ 没有初始值,所以要使用中断前,一定要根据需要设定数值。
(3) 外部中断源新增 PA4 及 PB5。使用 PA4 当外部中断源,在 inten/intrq/integs 寄存器的设定与 PB0 相同,唯
一不同的是 PB0 或者 PA4 在 PADAUK_CODE_OPTION 里面作为中断源的选择。 同样,当使用 PB5 作为外
部 中 断 源 时 , 寄 存 器 inten/intrq/integs 的 设 置 与 PA0 一 样 , 唯 一 不 同 的 是 PA0 或 者 PB5 在
PADAUK_CODE_OPTION 里面作为中断源的选择。
9.2.3 系统时钟选择
(1) 利用 CLKMD 寄存器可切换系统时钟源。请注意,不可在切换系统时钟源的同时把原时钟源关闭。例如:从 A
时钟源切换到 B 时钟源时,应该先用 CLKMD 寄存器切换系统时钟源,然后再通过 CLKMD 寄存器关闭 A 时
钟振荡源。
例一:系统时钟从 ILRC 切换到 IHRC/2
CLKMD
=
CLKMD.2 =
0;
// 切到 IHRC,但 ILRC 不要停用
// 此时才可关闭
ILRC
例二:系统时钟从 ILRC 切换到 EOSC
CLKMD
=
CLKMD.2 =
0x36;
0xA6;
// 切到 EOSC,但 ILRC 不要停用
0;
// 此时才可关闭
ILRC
错误的写法:ILRC 切换到 IHRC,同时关闭 ILRC
CLKMD
=
0x50;
// MCU 会死机
(2) 要确认系统时钟从 ILRC 或 IHRC 切换到 EOSC 时,EOSC 已经稳定振荡,因为 MCU 并不会检查这个状态。
所以在启用 EOSC 后请等待一段时间,EOSC 稳定振荡之后才可以将系统时钟切换到 EOSC,否则,MCU 会
死机。举个例子,开机后系统时钟从 ILRC 切换到 4MHz EOSC,如下:
©Copyright 2018, PADAUK Technology Co. Ltd
Page 91 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
.ADJUST_IC
SYSCLK=ILRC;
$
Enable, 4MHz;
EOSCR
// 4MHz EOSC 开始振荡.
// 延迟(Delay)一段时间等待 EOSC 稳定
$ T16M EOSC, /1, BIT10
Word Count = 0;
Stt16 Count;
Intrq.T16 = 0;
do
{ nop; }while(!Intrq.T16);
CLKMD
= 0xA4;
// ILRC -> EOSC;
// 关闭 ILRC,但不一定需要
CLKMD.2 = 0;
延迟(Delay)等待时间需依照晶体震荡器以及板子的特性调整。如使用示波器测量晶体震荡器信号,请把示
波器探头调到 x10 档,并从 PA6(X2)测量,避免影响震荡器。
9.2.4 掉电模式, 唤醒和看门狗
当 ILRC 关闭时,看门狗也会失效。
9.2.5 TIMER 溢出
当设定 $ INTEGS BIT_R 时(这是 IC 默认值),且设定 T16M 计数器 BIT8 产生中断,若 T16 计数从 0 开
始 ,则第一次中断是在计数到 0x100 时发生(BIT8 从 0 到 1),第二次中断在计数到 0x300 时发生(BIT8 从 0
到 1)。所以设定 BIT8 是计数 512 次才中断。请注意,如果在中断中重新给 T16M 计数器设值,则下一次中断也
将在 BIT8 从 0 变 1 时发生。
如果设定 $ INTEGS
BIT_F(BIT 从 1 到 0 触发)而且设定 T16M 计数器 BIT8 产生中断,则 T16 计数改
为每次数到 0x200/0x400/0x600/…时发生中断。两种设定 INTEGS 的方法各有好处,也请注意其中差异。
9.2.6 IHRC
(1) 当 IC 在烧录器烧录时,会校准 IHRC 频率。
(2) 由于 EMC 的特性或者在 IC 封装或 COB 时,会不同程度影响 IHRC 频率。如果频率校准在 IC 封塑之前已经
完成,那么实际的 IHRC 频率会在 IC 封塑之后有可能出现偏差或者超出规格指标。通常情况下该频率会稍稍
变慢。
(3) 通常在 COB 封胶或 QTP 时会发生如上描述的情况,应广科技不负任何责任。
(4) 用户可以根据使用经验来做频率补偿,例如,用户可以在使用时调高 IHRC 频率约 0.5%~1%,以便得到比 IC
封塑之后更好的 IHRC 频率。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 92 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
9.2.7 LVR
(1) Power On 时,VDD 需要到达或超过 2.0V 左右,IC 才能成功起动,否则 IC 不能工作。
(2) 只有当 IC 正常起动后,设定 LVR=1.8V, 2.0V, 2.2V 才有作用。
(3) 可以设定寄存器 MISC.2 为 1 将 LVR 关闭,但此时应确保 VDD 在 IC 的最低工作电压以上,否则 IC 不能工作。
9.2.8 比较器控制 PWM 引脚输出的结果
PADAUK_CODE_OPTION 里面的特殊功能 GPC_PWM 是根据 gpcc.6 的状态用来控制包括 TM2,TM3 和
PWMG0 / PWMG1 / PWMG2 的 PWM 模块输出引脚,当 gpcc.6 是 1 时,这些 PWM 模块的任何输出引脚会变
成 0, 并且当 gpcc.6 是 0 时回返回正常 PWM 功能。
9.2.9
PMS132/PMS132B 的烧录方法
PMS132/PMS132B 的烧录脚为 PA3,PA4,PA5,PA6,VDD,GND 这 6 只引脚。
在 PDK3S-P-002 烧录器上,可以使用 CN38,往下空 3 格,就可以烧录 PMS132/PMS132B-S16A / S16B
/ S14 这三种包装;如为其他包装,可以自行跳接烧录接脚,烧录器背后的 Jumper,所有左侧的讯号都是一致
的,就如左下角说明文字一样,分别为 VDD,PA0(不需要),PA3,PA4,PA5,PA6,PA7(不需要)
,GND。
如使用 PDK5S-P-003 或以上进行烧录,并依照烧录器软件上说明,连接 jumper 即可。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 93 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
如果刻录 S08 这种包装,也可以使用如下接法,IC 则放在上层 Socket 并往下空出 4 格的位置:
合封(MCP)或在板烧录(On-Board Writing)时的有关电压和电流的注意事项
(1) PA5 (VPP)可能高于 11V。
(2) VDD 可能高于 6.5V,而最大供给电流最高可达约 20mA。
(3) 其他烧录引脚(GND 除外)的电位与 VDD 相同。
请用户自行确认在使用本产品于合封或在板烧录时,周边电路及元件不会被上述电压破坏,也不会限制上
述电压。
©Copyright 2018, PADAUK Technology Co. Ltd
Page 94 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018
PMS132/PMS132B
8 位 OTP 型单片机带 12 位 ADC
9.3 使用 ICE
(1) 建 议 使 用 PDK5S-I-S01/2(B) 仿 真 器 来 仿 真 PMS132/PMS132B 。 PDK5S-I-S01/2(B) 仿 真 器 支 持
PMS132/PMS132B(1-FPPA) MCU 的仿真。如下是使用 PDK5S-I-S01/2(B)仿真 PMS132/PMS132B 的注意
事项:
PDK5S-I-S01/2(B) 仿真 PMS132/PMS132B 时不支持指令 NADD/COMP。
PDK5S-I-S01/2(B) 仿真 PMC132 时不支持指令 SYSCLK=ILRC/16。
PDK5S-I-S01/2(B) 仿真 PMC132 时不支持功能 TM2.GPCRS/TM3.GPCRS。
PDK5S-I-S01/2(B) 仿真 PMC132 时不支持功能 PWMG2C.PA5。
PDK5S-I-S01/2(B) 仿 真 PMC132 时 不 支 持 功 能 ADCRGC.BG_2V/BG_3V_BG_4V , 并 固 定 只 有
BG_1V2。
PDK5S-I-S01/2(B)仿真时,不支持 GPC_PWM,PWM_Source,TMx_bit 等 code option。
PDK5S-I-S01/2(B)仿真时,当 GPCS 选择 Output 到 PA0 输出时,PA3 输出功能也会受影响。
PDK5S-I-S01/2(B)仿真时,当使用 ADCRGC 里的 PB1 时,PA1 必须浮空。
快速唤醒的时间有差异:PDK5S-I-S01/2(B):128 系统时钟,PMS132/PMS132B:45 ILRC 周期。
看门狗溢出的时间和仿真器 PDK5S-I-S01/2(B)有不同:
WDT 周期
PMS132/PMS132B
PDK5S-I-S01/2(B)
misc[1:0]=00
8K* TILRC
2048* TILRC
misc[1:0]=01
16K* TILRC
4096* TILRC
misc[1:0]=10
64K* TILRC
16384* TILRC
misc[1:0]=11
256K* TILRC
256* TILRC
©Copyright 2018, PADAUK Technology Co. Ltd
Page 95 of 95
PDK-DS-PMS132(B)_CN_V103 – Nov. 28, 2018