PFS173
8 位 MTP 型单片机带 8 位 ADC
目录
1. 单片机特性.............................................................................................................................. 5
特性 ........................................................................................................................................5
1.2.
系统特性 .................................................................................................................................5
1.3.
CPU 特性 ...............................................................................................................................5
1.4.
封装信息 .................................................................................................................................5
to
r
1.1.
2. 系统概述和方框图.................................................................................................................. 6
uc
3. 引脚功能说明........................................................................................................................ 7
4. 器件电气特性........................................................................................................................ 14
直流交流电气特性 .................................................................................................................14
4.2.
绝对最大值............................................................................................................................16
4.3.
ILRC 频率与 VDD 的关系曲线图............................................................................................16
4.4.
IHRC 频率与 VDD 的关系曲线图(校准到 16MHz) .............................................................17
4.5.
ILRC 频率与温度的关系曲线图.............................................................................................17
4.6.
IHRC 频率与温度的关系曲线图(校准到 16MHz)...............................................................18
4.7.
工作电流与 VDD、系统时钟 CLK = ILRC/n 关系曲线图........................................................18
4.8.
工作电流与 VDD、系统时钟 CLK = IHRC/n 关系曲线图 .......................................................19
4.9.
工作电流与 VDD、系统时钟 CLK = 4MHz EOSC / n 关系曲线图..........................................19
4.10.
工作电流与 VDD、系统时钟 CLK = 32KHz EOSC / n 关系曲线图 .........................................20
4.11.
工作电流与 VDD、系统时钟 CLK = 1MHz EOSC / n 关系曲线图...........................................20
4.12.
IO 引脚输出驱动电流(IOH) 和灌电流 (IOL)曲线图 ...................................................................21
4.13.
IO 引脚输入高/低阀值电压(VIH/VIL)曲线图 .............................................................................23
JS
MI
CR
O
Se
mi
co
nd
4.1.
4.14.
IO 引脚上拉/下拉阻抗曲线图 .................................................................................................23
4.15.
掉电模式消耗电流(IPD)与省电模式消耗电流(IPS)曲线图 ..........................................................25
4.16.
开机时序图............................................................................................................................26
5. 功能概述 ............................................................................................................................... 2 7
5.1.
程序存储器 - MTP ................................................................................................................27
5.2.
开机流程 ...............................................................................................................................27
5.3.
数据存储器 - SRAM..............................................................................................................28
5.4.
振荡器和时钟 ........................................................................................................................28
5.4.1. 内部高频振荡器和低频振荡器 ...................................................................................28
5.4.2. 芯片校准...................................................................................................................28
5.4.3. IHRC 频率校准与系统时钟........................................................................................29
5.4.4. 外部晶体振荡器 .........................................................................................................30
5.4.5. 系统时钟和 LVR 基准位 .............................................................................................32
www.jsmsemi.com
第1页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.4.6. 系统时钟切换.............................................................................................................33
5.5.
比较器...................................................................................................................................34
5.5.1
内部参考电压 (Vinternal R).............................................................................................35
5.5.2
使用比较器 ...............................................................................................................37
5.5.3
使用比较器和 band-gap 1.20V..................................................................................38
VDD/2 LCD Bias 电压生成器................................................................................................39
5.7
16 位计数器(Timer16) ...........................................................................................................40
5.8
8 位 PWM 计数器 (Timer2, Timer3) ......................................................................................42
使用 Timer2 产生周期波形 .........................................................................................43
5.8.2
使用 Timer2 产生 8 位 PWM 波形 ..............................................................................45
5.8.3
使用 Timer2 产生 6 位 PWM 波形 ..............................................................................46
uc
5.8.1
nd
11 位 PWM 计数器 ..............................................................................................................47
5.9.1
PWM 波形 ................................................................................................................47
5.9.2
硬件框图...................................................................................................................48
5.9.3
11 位 PWM 生成器计算公式......................................................................................48
co
5.9
to
r
5.6
看门狗...................................................................................................................................50
5.11
中断 ......................................................................................................................................50
5.12
省电与掉电............................................................................................................................53
mi
5.10
Se
5.12.1 省电模式(“stopexe”)...................................................................................................53
5.12.2 掉电模式 (“stopsys”) .................................................................................................53
5.12.3 唤醒...........................................................................................................................54
IO 引脚 .................................................................................................................................55
5.14
复位和 LVR ...........................................................................................................................56
CR
O
5.13
5.14.1 复位...........................................................................................................................56
JS
MI
5.14.2 LVR 复位 ..................................................................................................................56
5.15
模拟-数字转换器(ADC) 模块 .................................................................................................56
5.15.1 AD 转换的输入要求 ..................................................................................................57
5.15.2 选择参考高电压 ........................................................................................................58
5.15.3 ADC 时钟选择...........................................................................................................58
5.15.4 配置模拟引脚............................................................................................................58
5.15.5 使用 ADC..................................................................................................................58
6. 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
www.jsmsemi.com
第2页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
Timer16 控制寄存器 (t16m), IO 地址 = 0x06 ........................................................................62
6.7.
外部晶体振荡器控制寄存器(eoscr), IO 地址 = 0x0a ..............................................................62
6.8.
中断边缘选择寄存器(integs), IO 地址 = 0x0c ........................................................................63
6.9.
端口 A 数字输入使能寄存器(padier), IO 地址 = 0x0d ............................................................63
6.10.
端口 B 数字输入使能寄存器(pbdier), IO 地址 = 0x0e ...........................................................63
6.11.
端口 C 数字输入使能寄存器(pcdier), IO 地址= 0x0f ..............................................................64
6.12.
端口 A 数据寄存器(pa), IO 地址 = 0x10 ................................................................................64
6.13.
端口 A 控制寄存器(pac), IO 地址 = 0x11...............................................................................64
6.14.
端口 A 上拉控制寄存器(paph), IO 地址 = 0x12 .....................................................................64
6.15.
端口 B 数据寄存器(pb), IO 地址 = 0x13 ................................................................................64
6.16.
端口 B 控制寄存器(pbc), IO 地址 = 0x14...............................................................................64
6.17.
端口 B 上拉控制寄存器(pbph), IO 地址 = 0x15 .....................................................................64
6.18.
端口 C 数据寄存器((pc), IO 地址= 0x16 .................................................................................64
6.19.
端口 C 控制寄存器 (pcc), IO 地址= 0x17...............................................................................65
6.20.
端口 C 上拉控制寄存器(pcph), IO 地址= 0x18 .......................................................................65
6.21.
端口 B 下拉控制寄存器 (pbpl), IO 地址= 0x19.......................................................................65
6.22.
端口 C 下拉控制寄存器(pcpl), IO 地址= 0x1a ........................................................................65
6.23.
ADC 控制寄存器(adcc), IO 地址 = 0x20................................................................................66
6.24.
ADC 模式寄存器(adcm), IO 地址 = 0x21 ..............................................................................66
6.25.
ADC 结果寄存器(adcr), IO 地址= 0x22 .................................................................................66
6.26.
ADC 调节控制寄存器(adcrgc), IO 地址 = 0x24 ....................................................................67
6.27.
杂项寄存器(misc), IO 地址 = 0x26 .......................................................................................67
6.28.
比较器控制寄存器(gpcc), IO 地址 = 0x2b ............................................................................68
6.29.
比较器选择寄存器(gpcs), IO 地址 = 0x2c..............................................................................68
6.30.
Timer2 控制寄存器(tm2c), IO 地址 = 0x30 ............................................................................69
6.31.
Timer2 计数寄存器(tm2ct), IO 地址 = 0x31 ...........................................................................69
6.32.
Timer2 分频寄存器(tm2s), IO 地址 = 0x32 ...........................................................................69
6.33.
Timer2 上限寄存器(tm2b), IO 地址 = 0x33............................................................................70
6.34.
Timer3 控制寄存器(tm3c), IO 地址 = 0x34 ............................................................................70
6.35.
Timer3 计数寄存器(tm3ct), IO 地址 = 0x35 ..........................................................................70
6.36.
Timer3 Scalar Register (tm3s), IO address = 0x36................................................................71
6.37.
Timer3 上限寄存器(tm3b), IO 地址 = 0x37...........................................................................71
6.38.
PWMG0 控制寄存器(pwmg0c), IO 地址 = 0x40 ....................................................................71
6.39.
PWMG 时钟寄存器(pwmgclk), IO 地址 = 0x41.....................................................................72
6.40.
PWMG0 占空比高位寄存器(pwmg0dth), IO 地址 = 0x42 ......................................................72
6.41.
PWMG0 占空比低位寄存器((pwmg0dtl), IO 地址 = 0x43 ......................................................72
6.42.
PWMG 计数上限高位寄存器(pwmgcubh ), IO 地址 = 0x44 ..................................................72
6.43.
PWMG 计数上限低位寄存器(pwmgcubl ), IO 地址= 0x45 .....................................................72
JS
MI
CR
O
Se
mi
co
nd
uc
to
r
6.6.
www.jsmsemi.com
第3页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.44.
PWMG1 控制寄存器 (pwmg1c), IO 地址= 0x46 ....................................................................73
6.45.
PWMG1 占空比高位寄存器 (pwmg1dth), IO 地址= 0x48......................................................73
6.46.
PWMG1 占空比低位寄存器(pwmg1dtl), IO 地址= 0x49.........................................................73
6.47.
PWMG2 控制寄存器(pwmg2c), IO 地址 = 0x4C...................................................................74
6.48.
PWMG2 占空比高位寄存器(pwmg2dth), IO 地址= 0x4E .......................................................74
6.49.
PWMG2 占空比低位寄存器(pwmg2dtl), IO 地址= 0x4F ........................................................74
to
r
7. 指令 ..............................................................................................................................................................75
数据传输类指令.....................................................................................................................76
7.2.
算术运算类指令.....................................................................................................................79
7.3.
移位运算类指令....................................................................................................................79
7.4.
逻辑运算类指令.....................................................................................................................82
7.5.
位运算类指令 ........................................................................................................................85
7.6.
条件运算类指令.....................................................................................................................86
7.7.
系统控制类指令....................................................................................................................87
7.8.
指令执行周期综述 ................................................................................................................88
7.9.
指令影响标志综述 ................................................................................................................89
7.10.
位定义...................................................................................................................................89
mi
co
nd
uc
7.1.
Se
8. 程序选项(Code Options) ....................................................................................................90
9. 特别注意事项........................................................................................................................ 92
警告 ......................................................................................................................................92
9.2.
使用 IC ..................................................................................................................................92
CR
O
9.1.
9.2.1. IO 引脚的使用和设定 .................................................................................................92
9.2.2. 中断...........................................................................................................................93
JS
MI
9.2.3. 系统时钟切换.............................................................................................................93
9.2.4. 看门狗 .......................................................................................................................93
9.2.5. TIMER 溢出 ...............................................................................................................94
9.2.6. IHRC .........................................................................................................................94
9.2.7. LVR ...........................................................................................................................94
9.2.8. 烧录方法....................................................................................................................95
9.3.
使用 ICE................................................................................................................................96
www.jsmsemi.com
第4页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
1. 单片机特性
1.1. 特性
通用系列
不建议使用于 AC 阻容降压供电或有高 EFT 要求的应用。应广不对使用于此类应用而不达安规要求负责
工作温度范围:-20°C ~ 70°C
to
r
1.2. 系统特性
3KW MTP 程序空间(可编程 1000 次以上)
一个硬件 16 位定时器
两个 8 位带 PWM 功能的定时器
nd
一组可设三路 11 位 SuLED (Super LED) PWM 生成器和计数器
uc
256 Bytes 数据空间
一个硬件比较器
Band-gap 电路提供 1.20V 参考电压
co
高达 14 通道 8 位精度 ADC(其中一个通道来自内部 band-gap 电压)
ADC 参考高电压:外部输入,内部 VDD
每个 IO 引脚都可设定为唤醒功能
mi
最大 18 IO 引脚带可选择的上拉电阻,其中 4 个 IO 引脚同时带下拉电阻
内设 VDD/2 LCD bias 电压生成器以提供最大 5x12 点阵 LCD 显示
Se
时钟源:IHRC、ILRC 和 EOSC (XTAL)
每个能唤醒的 IO 均支持两种可选的唤醒速度:正常和快速
16 级可选择的 LVR 复位电压从 1.8V 到 4.5V
1.3. CPU 特性
CR
O
两个可选择的外部中断引脚
8 位高性能精简指令集 CPU
88 个高效指令
JS
MI
绝大部分指令都是单周期(1T)指令
可程序设定的堆栈指针和堆栈深度
数据存取支持直接和间接寻址模式,用数据存储器即可當作间接寻址模式的数据指针(index pointer)
IO 地址以及存储地址空间互相独立
1.4. 封装信息
PFS173-U06: SOT23-6 (60mil)
PFS173-S08: SOP8 (150mil)
PFS173-M10: MSOP10 (118mil)
PFS173-S14: SOP14 (150mil)
PFS173-S16: SOP16 (150mil)
PFS173-D16: DIP16 (300mil)
PFS173-S20: SOP20 (300mil)
PFS173-H20: HTSOP20 (150mil)
PFS173-1J16A: QFN3*3-16P (0.5pitch)
www.jsmsemi.com
第5页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
2. 系统概述和方框图
PFS173 是一款基于 CMOS 带 8 位 ADC 的 MTP 的 8 位微控制器。它运用 RISC 的架构基础使大部分的指
令执行时间都是一个指令周期,只有少部分间接地址访问的指令是需要两个指令周期。
PFS173 内置高达 3KW MTP 程序存储器和 256 bytes 数据存储器,内设一个高达 14 通道带多路参考电压可
to
r
选的 8 位 ADC 转换器。PFS173 同时提供 4 个硬件计数器:一个是 16 位定时器,两个 8 位计数器带 PWM 生
成器和一组新的三路 11 位计数器带 SuLED PWM 生成器(PWMG0、PWMG1 & PWMG2)。PFS173 也支持一个
JS
MI
CR
O
Se
mi
co
nd
uc
硬件比较器和 VDD/2 LCD bias 电压生成器作为 LCD 显示应用。
www.jsmsemi.com
第6页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
JS
MI
CR
O
Se
mi
co
nd
uc
to
r
3. 引脚功能说明
www.jsmsemi.com
第7页,共96页
JS
MI
CR
O
Se
mi
co
nd
uc
to
r
PFS173
8 位 MTP 型单片机带 8 位 ADC
www.jsmsemi.com
第8页,共96页
JS
MI
CR
O
Se
mi
co
nd
uc
to
r
PFS173
8 位 MTP 型单片机带 8 位 ADC
引脚名称
引脚&缓冲器
功能描述
类型
此引脚可用做:
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”时,唤
醒功能是被关闭的。
www.jsmsemi.com
第9页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
引脚名称
引脚&缓冲器
功能描述
类型
此引脚可用做:
(1) 端口 A 位 5,并可编程设定为输入或开漏输出(open drain),弱上拉电阻模式。
PA5 /
IO (OD)
PRSTB /
ST /
PG2PWM
CMOS
(2) 硬件复位脚。
(3) 11 位计数器 PWMG2 的输出。
这个引脚可以设定在睡眠中唤醒系统的功能;但是,当寄存器 padier 位 5 为”0”时,唤
to
r
醒功能是被关闭的。当此引脚设定成输入时,对于需要高抗干扰能力的系统,请串接
33Ω 电阻。
此引脚可用做:
(1) 端口 A 位 4,并可编程设定为输入或输出,弱上拉电阻模式。
PA4 /
uc
(2) ADC 模拟输入通道 9。
(3) 比较器的正输入源。
AD9 /
IO
CIN+ /
ST /
CIN1- /
CMOS /
(5) 外部中断源 1。上升沿和下降沿均可触发中断。
Analog
(6) 11 位计数器 PWMG1 的输出。
nd
当用做模拟输入功能时,为减少漏电流,请用 padier 寄存器位 4 关闭其数字输入功能。
PG1PWM
co
INT1 /
(4) 比较器的负输入源 1。
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 padier 位 4 为”0”时,唤醒功能
此引脚可用做:
mi
是被关闭的。
(1) 端口 A 位 3,并可编程设定为输入或输出,弱上拉电阻模式。
CIN0- /
TM2PWM /
PG2PWM
IO
ST /
CMOS /
Analog
Se
AD8 /
(3) 比较器的负输入源 0。
(4) Timer2 的 PWM 输出。
(5) 11 位计数器 PWMG2 的输出 。
CR
O
PA3 /
(2) ADC 模拟输入通道 8。
当用做模拟输入功能时,为减少漏电流,请用 padier 寄存器位 3 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 padier 位 3 为”0”时,唤醒功能
是被关闭的。
JS
MI
此引脚可用做:
(1) 端口 A 位 0,并可编程设定为输入或输出,弱上拉电阻模式。
PA0 /
AD10 /
CO /
INT0 /
PG0PWM
IO
ST /
CMOS /
Analog
(2) ADC 模拟输入通道 10。
(3) 比较器的输出。
(4) 外部中断源 0,上升沿和下降沿都可触发中断。
(5) 11 位计数器 PWMG0 的输出。
当用做模拟输入功能时,为减少漏电流,请用 padier 寄存器位 0 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 padier 位 0 为”0”时,唤醒功能
是被关闭的。
www.jsmsemi.com
第10页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
引脚名称
引脚&缓冲器
功能描述
类型
此引脚可用做:
(1) 端口 B 位 7,并可编程设定为输入或输出,弱上拉电阻模式。
AD7 /
CIN5- /
TM3PWM /
PG1PWM
IO
ST /
CMOS /
Analog
(2) ADC 模拟输入通道 7。
(3) 比较器的负输入源 5。
(4) Timer3 的 PWM 输出。
(5) 11 位计数器 PWMG1 的输出。
to
r
PB7 /
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 7 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 pbdier 位 7 为”0”时,唤醒功能
uc
是被关闭的。
此引脚可用做:
(1) 端口 B 位 6,并可编程设定为输入或输出,弱上拉电阻模式。
CIN4- /
TM3PWM /
PG1PWM /
ST /
CMOS /
Analog
PG0PWM
(3) COM4 口,提供 1/2 VDD 驱动 LCD 驱动显示。
(4) 比较器的负输入源 4。
co
COM4 /
IO
(5) Timer3 的 PWM 输出。
(6) 11 位计数器 PWMG1 的输出。
mi
AD6 /
nd
(2) ADC 模拟输入通道 6。
PB6 /
(7) 11 位计数器 PWMG0 的输出。
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 6 关闭其数字输入功能。
Se
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 pbdier 位 6 为”0”时,唤醒功能
是被关闭的。
COM3 /
IO
ST /
CMOS /
JS
MI
INT0 /
CR
O
PB5 /
AD5 /
此引脚可用做:
(1) 端口 B 位 5,并可编程设定为输入或输出,弱上拉电阻模式。
(2) ADC 模拟输入通道 5。
(3) COM3 口,提供 1/2 VDD 驱动 LCD 驱动显示。
(4) 外部中断源 0,上升沿和下降沿都可触发中断。
(5) Timer3 的 PWM 输出。
(6) 11 位计数器 PWMG0 的输出。
(7) 11 位计数器 PWMG2 的输出。
TM3PWM /
PG0PWM /
Analog
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 5 关闭其数字输入功能。
PG2PWM
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 pbdier 位 5 为”0”时,唤醒功能
是被关闭的。
PB4 /
IO
AD4 /
ST /
TM2PWM /
CMOS /
此引脚可用做:
(1) 端口 B 位 4,并可编程设定为输入或输出,弱上拉电阻模式。
(2) ADC 模拟输入通道 4。
(3) Timer2 的 PWM 输出。
(4) 11 位计数器 PWMG0 的输出。
PG0PWM
Analog
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 4 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 pbdier 位 4 为”0”时,唤醒功能
是被关闭的。
www.jsmsemi.com
第11页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
PG2PWM
PB2 /
AD2 /
COM2 /
TM2PWM /
CMOS /
Analog
IO
ST /
CMOS /
Analog
此引脚可用做:
(1) 端口 B 位 2,并可编程设定为输入或输出,弱上/弱下拉拉电阻模式。
(2) ADC 模拟输入通道 2。
(3) COM2 口,提供 1/2 VDD 驱动 LCD 驱动显示。
(4) Timer2 的 PWM 输出。
(5) 11 位计数器 PWMG2 的输出。
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 2 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 pbdier 位 2 为”0”时,唤醒功能
是被关闭的。
co
PG2PWM
IO
ST /
此引脚可用做:
(1) 端口 B 位 3.并可编程设定为输入或输出,弱上拉/弱下拉电阻模式。
(2) ADC 模拟输入通道 3。
(3) 11 位计数器 PWMG2 的输出。
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 3 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 pbdier 位 3 为”0”时,唤醒功能
是被关闭的。
to
r
AD3 /
功能描述
类型
uc
PB3 /
引脚&缓冲器
nd
引脚名称
IO
AD1 /
ST /
COM1 /
CMOS /
Vref
Analog
(2) ADC 模拟输入通道 1。
(3) COM1 口,提供 1/2 VDD 驱动 LCD 驱动显示。
(4) ADC 的外部参考高电压。
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 1 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 pbdier 位 1 为”0”时,唤醒功能
是被关闭的。
Se
PB1 /
mi
此引脚可用做:
(1) 端口 B 位 1,并可编程设定为输入或输出,弱上拉电阻模式。
CR
O
此引脚可用做:
(1) 端口 B 位 0,并可编程设定为输入或输出,弱上拉电阻模式。
IO
AD0 /
ST /
COM0 /
CMOS /
INT1
Analog
(2) ADC 模拟输入通道 0。
(3) COM0 口,提供 1/2 VDD 驱动 LCD 驱动显示。
(4) 外部中断源 1,上升沿和下降沿都可触发中断。
当用做模拟输入功能时,为减少漏电流,请用 pbdier 寄存器位 0 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 pbdier 位 0 为”0”时,唤醒功能
是被关闭的。
JS
MI
PB0 /
PC3 /
PG1PWM
PC2 /
AD12 /
PG0PWM
IO
ST /
CMOS
IO
ST /
CMOS /
Analog
此引脚可用做:
(1) 端口 C 位 3,并可编程设定为输入或输出,弱上拉电阻模式。
(2) 11 位计数器 PWMG1 的输出。
pcdier 寄存器位 3 设”0”关闭数字输入功能,同时唤醒功能是被关闭的。
此引脚可用做:
(1) 端口 C 位 2,并可编程设定为输入或输出,弱上拉电阻模式。
(2) ADC 模拟输入通道 12。
(3) 11 位计数器 PWMG0 的输出。
当用做模拟输入功能时,为减少漏电流,请用 pcdier 寄存器位 2 关闭其数字输入功能。
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 pcdier 位 2 为”0”时,唤醒功能
是被关闭的。
www.jsmsemi.com
第12页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
引脚名称
引脚&缓冲器
功能描述
类型
此引脚可用做:
IO
(1) 端口 C 位 1,并可编程设定为输入或输出,弱上拉/弱下拉电阻模式。
(2) ADC 模拟输入通道 11。
ST /
AD11
CMOS /
当用做模拟输入功能时,为减少漏电流,请用 pcdier 寄存器位 1 关闭其数字输入功能。
Analog
这个引脚可以设定在睡眠中唤醒系统的功能;当寄存器 pcdier 位 1 为”0”时,唤醒功能
to
r
PC1 /
是被关闭的。
PG2PWM
IO
ST /
CMOS
此引脚可用做:
(1) 端口 C 位 1,并可编程设定为输入或输出,弱上拉/弱下拉电阻模式。
(2) 11 位计数器 PWMG2 的输出。
uc
PC0 /
pcdier 寄存器位 0 设”0”关闭数字输入功能,同时唤醒功能是被关闭的。
nd
VDD:数字正电源
VDD /
AVDD:模拟正电源
AVDD
AVDD
VDD 是 IC 电源,
而 AVDD 是 ADC 专用电源。
在 IC 内部,AVDD 与 VDD 连在一起(double
co
VDD /
bonding),而外部为相同引脚。
GND:数字负电源
GND /
AGND:模拟负电源
AGND
AGND
GND 是 IC 接地引脚,而 AGND 是 ADC 接地引脚。在 IC 内部,AGND 与 GND 连在
mi
GND /
Se
一起(double bonding),而外部为相同引脚。
注意:IO:输入/输出;ST:施密特触发器输入;OD:开漏输出;Analog:模拟输入引脚;
JS
MI
CR
O
CMOS:CMOS 电压基准位
www.jsmsemi.com
第13页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
4. 器件电气特性
4.1. 直流交流电气特性
o
o
下列所有数据除特别列明外,皆于 Ta = -20 C ~ 75 C,VDD=5.0V,fSYS=2MHz 之条件下获得。
IOP
IPD
IPS
单位
2.2*
-5
5.0
5.5
5
V
%
掉电模式消耗电流
(使用 stopsys 命令)
省电模式消耗电流
(使用 stopexe 命令)
输入低电压
VIH
输入高电压
IOH
VIN
IINJ (PIN)
RPH
RPL
2.5
uA
0.1 VDD
0
0.2 VDD
0.8 VDD
VDD
0.7 VDD
VDD
CR
O
40
30
其他 IO
10
5
PB4, PB5(强)
20
PA5
0
其他 IO
5
-0.3
PA5
其他 IO
mA
VDD=5.0V, VOL=0.5V
mA
VDD=5.0V, VOH=4.5V
VDD+0.3
V
1
mA
脚位的引入电流
下拉电阻
其他 IO
IO 驱动电流
PB4, PB5(正常)
上拉电阻
V
PA5
10
PB4, PB5(强)
输入电压
V
fSYS=IHRC/16=1MIPS@5.0V
fSYS=ILRC=96KHz@5.0V
fSYS= 0Hz,VDD=5.0V
fSYS= 0Hz,VDD=3.3V
VDD =5.0V; fSYS= ILRC
仅使用 ILRC 的模式下
IO 灌电流
PC0, PC2, PC3
JS
MI
IOL
mA
uA
uA
uA
0.75
87
0.2
0.1
0
PB4, PB5(正常)
VDD ≧ 3.5V
VDD ≧ 2.5V
VDD ≧ 2.2V
VDD = 5.0V
* 由 LVR 的精度而定
2.0*
工作电流
Hz
* 受限于 LVR 设置
uc
93K
上电复位电压
VIL
8M
4M
2M
0
0
0
o
条件(Ta=25 C)
to
r
最大值
co
VPOR
典型值
mi
fSYS
工作电压
低电压复位的精度
系统时钟(CLK)* =
IHRC/2
IHRC/4
IHRC/8
ILRC
最小值
Se
VDD
LVR%
特性
nd
符号
VDD +0.3≧VIN≧ -0.3
76
VDD =5.0V, PB2/PB3/PC0/PC1
100
VDD =5.0V, 其他 IO
52
200
KΩ
VDD =3.3V, PB2/PB3/PC1/PC1
VDD =3.3V, 其他 IO
30
VDD =2.2V, PB2/PB3/PC1/PC1
450
VDD =2.2V, 其他 IO
65
VDD =5.0V, PB2/PB3/PC0/PC1
45
28
www.jsmsemi.com
KΩ
VDD =3.3V, PB2/PB3/PC0/PC1
VDD =2.2V, PB2/PB3/PC0/PC1
第14页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
VBG
fIHRC
特性
Band-gap 参考电压
IHRC 输出频率(校准后)*
最小值
典型值
最大值
单位
1.145*
1.20*
1.255*
V
15.76*
16*
16.24*
MHz
15.20*
16*
16.80*
VADC
ADC 工作电压
2.2
VDD
V
VAD
AD 输入电压
0
VDD
V
ADrs
ADC 分辨率
ADcs
ADC 消耗电流
ADclk
ADC 时钟周期
ADC 积分非线性
tWDT
ADC 失调电压
RAM 数据保留电压*
看门狗超时溢出时间
5*
mV
1.5
V
8k
CR
O
3000
系统上电开机时间(正常)
JS
MI
tSBP
正常唤醒时间
tRST
系统上电开机时间(快开机)
外部复位脉冲宽度
比较器偏压*
-
CPcm
比较器共模输入电压*
0
CPspt
比较器响应时间*
CPmc
CPcs
2.2V ~ 5.5V
8 位分辨率
@ VDD =3V
在关机模式下
misc[1:0]=10
misc[1:0]=11
TILRC
TILRC 是 ILRC 的时钟周期
50
ms
VDD =5V
750
us
VDD =5V
us
@ VDD =5V
120
CPos
@5V
@3V
misc[1:0]=01
TILRC
64k
45
VDD = 5.0V
misc[1:0]=00(默认)
16k
快速唤醒时间
o
uc
LSB
256k
tWUP
o
LSB
±4*
mi
VDR
±2*
tADCLK
co
AD INL
ADos
16
us
nd
ADC 转换时间
ADC 微分非线性
mA
2
(tADCLK 是 AD 转换时钟周期)
AD DNL
bit
0.8
Se
tADCONV
o
25 C, VDD =2.2V~5.5V
o
ns
0.9
o
0 C “缓存器介
to
r
绍” -> CLKMD”。
例 1: 系统时钟从 ILRC 切换到 IHRC/2
//
CLKMD
=
0x34;
//
CLKMD.2
=
0;
//
系统时钟是 ILRC
切换到 IHRC/2,ILRC 不能在这里停用
ILRC 可以在这里停用
uc
…
nd
…
例 2: 系统时钟从 ILRC 切换到 EOSC
//
=
0xA6;
//
CLKMD.2
=
0;
//
例 3: 系统时钟从 IHRC/2 切换到 ILRC
Se
//
0xF4;
//
0;
//
CR
O
…
mi
…
//
CLKMD
=
CLKMD.4
=
系统时钟是 ILRC
切换到 IHRC,ILRC 不能在这里停用
ILRC 可以在这里停用
co
…
CLKMD
系统时钟是 IHRC/2
切换到 ILRC,IHRC 不能在这里停用
IHRC 可以在这里停用
…
例 4: 系统时钟从 IHRC/2 切换到 EOSC
…
JS
MI
CLKMD
CLKMD.4
=
0XB0;
//
=
0;
//
系统时钟是 IHRC/2
切换到 EOSC,IHRC 不能在这里停用
IHRC 可以在这里停用
…
例 5: 系统时钟从 IHRC/2 切换到 IHRC/4
…
CLKMD
//
=
0X14;
//
系统时钟是 IHRC/2,ILRC 在这里是启用的
切换到 IHRC/4
…
例 6: 如果同时切换系统时钟关闭原来的振荡器,系统会当机
…
CLKMD
//
=
0x30;
//
系统时钟是 ILRC
不能从 ILRC 切换到 IHRC/2 同时关闭 ILRC 振荡器
www.jsmsemi.com
第33页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.5. 比较器
PFS173 内置一个硬件比较器,图 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 来选择。
to
r
比较器的输出结果可以选择直接输出到 PA0,或者通过 Timer2 计数器时钟模块(TM2_CLK)采样,另外,信
16 stages
VDD
8R
R
R
R
gpcs.4=1
MUX
mi
gpcs[3:0]
M
U
X
0
JS
MI
MUX
1
gpcc.4
-
CR
O
000
001
010
011
100
101
Se
Vinternal R
gpcc[3:1]
PA4/CIN+
gpcs.4=0
R
co
gpcs.5=0
PB6/CIN4PB7/CIN5-
8R
nd
8R
gpcs.5=1
PA3/CIN0PA4/CIN1Band-gap
uc
号是否反极性也是可选的,比较器输出结果可以用产生中断信号或者通过 gpcc 寄存器的方式读取。
M
U
X
+
Timer 2
clock
TM2_CLK
To request interrupt
D
F
F
X
O
R
gpcc.6
To
PA0
gpcc.5
gpcc.0
gpcs.7
图 4:比较器硬件原理框图
www.jsmsemi.com
第34页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.5.1
内部参考电压 (Vinternal R)
内部参考电压 Vinternal R 由一连串电阻所组成,可以产生不同层次的参考电压,gpcs 寄存器的位 4 和位
5 是用来选择 Vinternal R 的最高和最低值,位[3:0]用于选择所要的电压水平,这电压水平是由 Vinternal R 的最高
和最低值均分 16 等份,由位[3:0]选择出来。图 5 ~ 图 8 显示四个条件下有不同的参考电压 Vinternal R。内部
Case 1 : gpcs.5=0 & gpcs.4=0
16 stages
8R
8R
8R
gpcs.5=1
R
R
R
MUX
gpcs.4=0
gpcs.4=1
co
nd
gpcs.5=0
gpcs[3:0]
R
uc
VDD
to
r
参考电压 Vinternal R 可以通过 gpcs 寄存器来设置,范围从(1/32)*VDD 到 (3/4)*VDD。
V internal R = (3/4) VDD ~ (1/4) VDD + (1/32) VDD
1
V internal R =
(n+1)
* VDD +
32
* VDD, n = gpcs[3:0] in decimal
Se
4
mi
@ gpcs[3:0] = 1111 ~ gpcs[3:0] = 0000
CR
O
图 5:Vinternal R 硬件接法(gpcs.5=0 & gpcs.4=0)
Case 2 : gpcs.5=0 & gpcs.4= 1
8R
JS
MI
VDD
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 = (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)
www.jsmsemi.com
第35页,共96页
PFS173
8 位 MTP 型单片机带 8 位 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
MUX
gpcs[3:0]
V internal R = (3/5) VDD ~ (1/5) VDD + (1/40) VDD
40
* VDD, n = gpcs[3:0] in decimal
co
5
(n+1)
* VDD +
nd
1
V internal R =
uc
@ gpcs[3:0] = 1111 ~ gpcs[3:0] = 0000
to
r
gpcs.4=1
VDD
8R
8R
Se
Case 4 : gpcs.5=1 & gpcs.4=1
mi
图 7:Vinternal R 硬件接法(gpcs.5=1 & gpcs.4=0)
gpcs.5=1
8R
R
CR
O
R
16 stages
R
R
gpcs.5=0
gpcs.4=1
MUX
gpcs[3:0]
JS
MI
gpcs.4=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)
www.jsmsemi.com
第36页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.5.2
使用比较器
例一:
选择 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 = [(9+9)/32]*VDD =
to
r
(18/32)*VDD 的参考电压。
gpcs
= 0b1_0_00_1001;
// Vinternal R = VDD*(18/32)
gpcc
= 0b1_0_0_0_000_0;
// 启用比较器,负输入:PA3,正输入:Vinternal R
// 停用 PA3 数字输入防止漏电(x:由客户自定)
uc
padier = 0bxxxx_0_xxx;
nd
或者
VDD*18/32;
$ GPCC
Enable, N_PA3, P_R;
//
例二:
Se
mi
PADIER = 0bxxxx_0_xxx;
N_xx 是负输入,P_R 代表正输入是内部参考电压
co
$ GPCS
选择 Vinternal R 为负输入,Vinternal R 的电压为(22/40)*VDD,选择 PA4 为正输入,比较器的结果将反极性
并输出到 PA0。Vinternal
R
选择上图的配置方式 “gpcs[5:4] = 2b’10” 和 gpcs[3:0] = 4b’1101 (n=13) 得到
CR
O
Vinternal R = (1/5)*VDD + [(13+1)/40]*VDD = [(13+9)/40]*VDD = (22/40)*VDD。
= 0b1_0_10_1101;
// 输出到 PA0,Vinternal R = VDD*(22/40)
gpcc
= 0b1_0_0_1_011_1;
// 反极性输出,负输入=Vinternal R,正输入=PA4
JS
MI
gpcs
padier
= 0bxxx_0_xxxx;
// 停用 PA4 数字输入防止漏电(x:由客户自定)
或者
$ GPCS
Output, VDD*22/40;
$ GPCC
Enable, Inverse, N_R, P_PA4;
//
N_R 代表负输入是内部参考电压,P_xx 是正输入
PADIER=0bxxx_0_xxxx;
注意:当选择 PA0 做比较器结果输出时,GPCS 会影响 PA3 的仿真输出功能,但不影响实际 IC 的功能,
请在仿真时需避开这个情况。
www.jsmsemi.com
第37页,共96页
PFS173
8 位 MTP 型单片机带 8 位 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
to
r
的电压就可以透过下列公式计算:
对于 Case 1 而言:VDD = [ 32 / (N+9) ] * 1.20 volt ;
对于 Case 2 而言:VDD = [ 24 / (N+1) ] * 1.20 volt ;
uc
对于 Case 3 而言:VDD = [ 40 / (N+9) ] * 1.20 volt ;
nd
对于 Case 4 而言:VDD = [ 32 / (N+1) ] * 1.20 volt ;
$ GPCS VDD*12/40;
if
(GPC_Out)
{
else
{
BANDGAP 是负输入,P_R 代表正输入是内部参考电压
//
或写成 GPCC.6
//
当 VDD﹥4V
//
当 VDD﹤4V
JS
MI
}
CR
O
}
//
Se
….
4.0V * 12/40 = 1.2V
mi
//
$ GPCC Enable, BANDGAP, P_R;
co
例一:
www.jsmsemi.com
第38页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.6 VDD/2 LCD Bias 电压生成器
PFS173 有 5 个引脚:PB0、PB1、PB2、PB5 和 PB6,可以作为 LCD 应用的 COM 端口。通过设定 misc.4=1
这五个 COM 端口能够输出高电位(VDD)、输入(VDD/2)、输出低电位(GND)三种电压。
COM 端口和正常的 IO 端口一样在输出模式 (pbc.x=1) 下通过选择 pb.x 的 1 或者 0 输出 VDD 和 GND 电压。
同样,COM 端口通过进入输入模式 (pbc.x=0)能输出 VDD/2 电压。然而,要注意关闭上拉电阻 pbph.x 和
to
r
pbdier.x 防止输出电压受到干扰。图 9 显示如何使用此功能。
uc
VDD
GND
引脚设为输出高电位
引脚设为输入
引脚设为输出低电位
Se
mi
co
nd
VDD/2
JS
MI
CR
O
图 9:使用 VDD/2 LCD bias 电压生成器
www.jsmsemi.com
第39页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.7 16 位计数器(Timer16)
PFS173 内置一个 16 位硬件计数器(Timer16),计数器时钟可来自于系统时钟(CLK)、外部晶体振荡器时钟
(EOSC)、内部高频振荡时钟(IHRC)、内部低频振荡时钟(ILRC)、PA4 和 PA0,一个多任务器用来选择时钟输
出的时钟来源。在送到 16 位计数器之前,1 个可软件编程的预分频器提供÷1、÷4、÷16、÷64 选择,让计数范
围更大。
16 位计数器只能向上计数,计数器初始值可以使用 stt16 指令来设定,而计数器的数值也可以利用 ldt16 指
to
r
令存储到 SRAM 数据存储器。可软件编程的选择器用于选择 Timer16 的中断条件,当计数器溢出时,Timer16
可以触发中断。Timer16 模块框图如图 10 所示。中断源是来自 16 位计数器的位 8 到位 15,中断类型可以上升
mi
co
nd
uc
沿触发或下降沿触发,定义在寄存器 integs.5(IO 地址是 0x0C)。
JS
MI
CR
O
Se
PA4
图 10: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
// 第三个参数
www.jsmsemi.com
第40页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
使用者可以依照系统的要求来定义 T16M 参数,
例子如下,
更多例子请参考 IDE 软件 “帮助 使用手册 IC
介绍 缓存器介绍 T16M”。
$ T16M SYSCLK, /64, BIT15;
// 选择(SYSCLK/64)当 Timer16 时钟源,每 2^16 个时钟周期产生一次 INTRQ.2=1
// 系统时钟 System Clock = IHRC / 2 = 8 MHz
to
r
// SYSCLK/64 = 8 MHz/64 = 125kHz,约每 524 mS 产生一次 INTRQ.2=1
$ T16M EOSC, /1, BIT13;
EOSC=32768 Hz, 32768 Hz/(2^14) = 2Hz,每 0.5S 产生一次 INTRQ.2=1
$ T16M PA0_F, /1, BIT8;
nd
//
uc
// 选择(EOSC/1)当 Timer16 时钟源,每 2^14 个时钟周期产生一次 INTRQ.2=1
// 选择 PA0 当 Timer16 时钟源,每 2^9 个时钟周期产生一次 INTRQ.2=1
co
// 每接收 512 个 PA0 时钟周期产生一次 INTRQ.2=1
mi
$ T16M STOP;
Se
// 停止 Timer16 计数
假如 Timer16 是不受干扰自由运行,中断发生的频率可以用下列式子描述:
CR
O
FINTRQ_T16M = Fclock source ÷ P ÷ 2n+1
其中,F 是 Timer16 的时钟源频率;
P 是 t16m [4:3]的选项(比如 1, 4, 16, 64);
JS
MI
N 是中断要求选择的位,例如:选择位 10,那么 n=10。
www.jsmsemi.com
第41页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.8 8 位 PWM 计数器 (Timer2, Timer3)
PFS173 内置 2 个 8 位硬件 PWM 计数器(Timer2/Timer3)。
以下描述只以 Timer2 为例,
因为 Timer3 和 Timer2
结构是一样的。图 11 为 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
to
r
引脚。利用软件编程寄存器 tm2s 位[6:5],时钟预分频模块提供÷1,÷4,÷16 和÷64 的选择,另外,利用软件编
程寄存器 tm2s 位[4:0],时钟分频器的模块提供了÷1~÷31 的功能。在结合预分频器以及分频器,Timer2 时钟
uc
(TM2_CLK)频率可以广泛和灵活,以提供不同产品应用。
8 位 PWM 定时器只能执行 8 位上升计数操作,经由寄存器 tm2ct,定时器的值可以设置或读取。当 8 位定
时器计数值达到上限寄存器设定的范围时,定时器将自动清除为零,上限寄存器用来定义定时器产生波形的周期
nd
或 PWM 占空比。8 位 PWM 定时器有两个工作模式:周期模式和 PWM 模式;周期模式用于输出固定周期波形
或中断事件;PWM 模式是用来产生 PWM 输出波形,PWM 分辨率可以为 6 位到 8 位。图 11 显示出 Timer2 周
JS
MI
CR
O
Se
mi
co
期模式和 PWM 模式的时序图。
图 11:Timer2 硬件框图
Timer3 的输出可以是 PB5,PB6 或 PB7。
www.jsmsemi.com
第42页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
Time out and
Interrupt request
Time out and
Interrupt request
Time out and
Interrupt request
Counter
Counter
0xFF
0xFF
0x3F
bound
bound
bound
Time
Event Trigger
Output-pin
Time
Event Trigger
Output-pin
Event Trigger
Mode 1 – 8-bit PWM Mode
Time
uc
Time
Time
Mode 0 – Period Mode
Time
Output-pin
to
r
Counter
Mode 1 – 6-bit PWM Mode
nd
图 12:Timer2 周期模式和 PWM 模式的时序图(tm2c.1=1)
程序选项” GPC_PWM “是指根据需求由比较器结果控制生成 PWM 波形的功能。如果程序选项“GPC_PWM”
mi
co
被选中后,此时当比较器输出是 1 时,PWM 停止输出;而比较器输出是 0 时,PWM 恢复输出,如图 13 所示。
Se
PWM Output
CR
O
Comparator
Output
JS
MI
图 13:比较器控制 PWM 波形的输出
5.8.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)
www.jsmsemi.com
第43页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
例 1:
tm2c = 0b0001_1000, Y=8MHz
tm2b = 0b0111_1111, K=127
tm2s = 0b0_00_00000, S1=1, S2=0
输出频率 = 8MHz ÷
[ 2 × (127+1) × 1 × (0+1) ] = 31.25KHz
例 2:
to
r
tm2c = 0b0001_1000, Y=8MHz
tm2b = 0b0111_1111, K=127
tm2s[7:0] = 0b0_11_11111, S1=64 , S2 = 31
uc
输出频率= 8MHz ÷ ( 2 × (127+1) × 64 × (31+1) ) =15.25Hz
例 3:
tm2b = 0b0000_1111, K=15
co
tm2s = 0b0_00_00000, S1=1, S2=0
nd
tm2c = 0b0001_1000, Y=8MHz
输出频率= 8MHz ÷ ( 2 × (15+1) × 1 × (0+1) ) = 250KHz
mi
例 4:
tm2c = 0b0001_1000, Y=8MHz
Se
tm2b = 0b0000_0001, K=1
tm2s = 0b0_00_00000, S1=1, S2=0
CR
O
输出频率= 8MHz ÷ ( 2 × (1+1) × 1 × (0+1) ) =2MHz
使用 Timer2 定时器从 PA3 引脚产生周期波形的示例程序如下所示:
Void
JS
MI
{
FPPA0 (void)
. ADJUST_IC
SYSCLK=IHRC/2, IHRC=16MHz, VDD=5V
…
tm2ct = 0x0;
tm2b = 0x7f;
tm2s = 0b0_00_00001;
//
8-bit PWM,预分频 = 1,分频 = 2
tm2c = 0b0001_10_0_0;
//
系统时钟,输出=PA3,周期模式
while(1)
{
nop;
}
}
www.jsmsemi.com
第44页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.8.2
使用 Timer2 产生 8 位 PWM 波形
如果选择 8 位 PWM 的模式,应设立 tm2c [1] = 1,tm2s [7] = 0,输出波形的频率和占空比可以概括如下:
输出频率= Y ÷ [256 × S1 × (S2+1) ]
Y = tm2c[7:4] : Timer2 所选择的时钟源频率
K = tm2b[7:0] : 上限寄存器设定的值(十进制)
S1= tm2s[6:5] : 预分频器设定值 (1, 4, 16, 64)
uc
S2 = tm2s[4:0] : 分频器值(十进制,1 ~ 31)
to
r
输出占空比= [( K+1 ) ÷ 256]×100%
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0111_1111, K=127
co
tm2s = 0b0_00_00000, S1=1, S2=0
nd
例 1:
输出频率 = 8MHz ÷ ( 256 × 1 × (0+1) ) = 31.25KHz
mi
输出占空比 = [(127+1) ÷ 256] × 100% = 50%
Se
例 2:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0111_1111, K=127
tm2s = 0b0_11_11111, S1=64, S2=31
CR
O
输出频率 = 8MHz ÷ ( 256 × 64 × (31+1) ) = 15.25Hz
输出占空比 = [(127+1) ÷ 256] × 100% = 50%
例 3:
JS
MI
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b1111_1111, K=255
tm2s = 0b0_00_0000, S1=1, S2=0
PWM 输出是高电平
输出占空比 = [(255+1) ÷ 256] × 100% = 100%
例 4:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0000_1001, K = 9
tm2s = 0b0_00_0000, S1=1, S2=0
输出频率 = 8MHz ÷ ( 256 × 1 × (0+1) ) = 31.25KHz
输出占空比 = [(9+1) ÷ 256] × 100% = 3.9%
www.jsmsemi.com
第45页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
使用 Timer2 定时器从 PA3 产生 PWM 波形的示例程序如下所示:
void
FPPA0 (void)
{
.ADJUST_IC
SYSCLK=IHRC/2, IHRC=16MHz, VDD=5V
tm2ct = 0x0;
tm2b = 0x7f;
// 8-bit PWM,预分频 = 1,分频 = 2
tm2c = 0b0001_10_1_0;
//系统时钟,输出=PA3,PWM 模式
to
r
tm2s = 0b0_00_00001;
while(1)
{
uc
nop;
}
使用 Timer2 产生 6 位 PWM 波形
co
5.8.3
nd
}
如果选择 6 位 PWM 的模式,应设立 tm2c [1] = 1,tm2s [7] = 1,输出波形的频率和占空比可以概括如下:
mi
输出频率= Y ÷ [64 × S1 × (S2+1) ]
输出占空比= [( K+1 ) ÷ 64] × 100%
Se
tm2c[7:4] = Y : Timer2 所选择的时钟源频率
tm2b[7:0] = K : 上限寄存器设定的值(十进制)
tm2s[6:5] = S1 : 预分频器设定值 (1, 4, 16, 64)
CR
O
tm2s[4:0] = S2 : 分频器值(十进制,1 ~ 31)
用户可以通过设置程序选项中的 TMx_Bit 把 Timer2 由 6 位 PWM 模式改成 7 位 PWM 模式。此时,要把
JS
MI
计算式中的 64 改为 128。
例 1:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0001_1111, K=31
tm2s = 0b1_00_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 = 0b1_11_11111, S1=64, S2=31
输出频率 = 8MHz ÷ ( 64 × 64 × (31+1) ) = 61.03 Hz
输出占空比 = [(31+1) ÷ 64] × 100% = 50%
www.jsmsemi.com
第46页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
例 3:
tm2c = 0b0001_1010, Y=8MHz
tm2b = 0b0011_1111, K=63
tm2s = 0b1_00_00000, S1=1, S2=0
PWM 输出高电平
输出占空比 = [(63+1) ÷ 64] × 100% = 100%
to
r
例 4:
tm2c = 0b0001_1010, Y=8MHz
tm2s = 0b1_00_00000, S1=1, S2=0
uc
tm2b = 0b0000_0000, K=0
输出频率 = 8MHz ÷ ( 64 × 1 × (0+1) ) = 125KHz
nd
输出占空比 = [(0+1) ÷ 64] × 100% =1.5%
co
5.9 11 位 PWM 计数器
PFS173 内置一组三路 11 位 SuLED (Super LED)硬件 PWM 生成器(PWMG0、PWMG1 和 PWMG2)。各路
mi
输出端口如下:
PWMG0 – PA0, PB4, PB5, PC2, PB6(适用于 PWMG1 没有选择 PB6 的情况下)
Se
PWMG1 – PA4, PB6, PB7, PC3
5.9.1
PWM 波形
CR
O
PWMG2 – PA3, PB2, PB3, PA5(只有开漏输出), PC0, PB5(适用于 PWMG0 没有选择 PB5 的情况下)
PWM 输出波形(图 14)有一个时基(TPeriod = 时间周期)和一个周期里输出高电平的时间(占空比)。PWM
JS
MI
输出的频率取决于时基(fPWM = 1/TPeriod)。
图 14:PWM 输出波形
www.jsmsemi.com
第47页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.9.2
硬件框图
图 15 所示是整组 SuLED 11 位 PWM 生成器的硬件方框图。这三组 PWM 生成器使用共同的 Up-Counter 和
时钟源选择开关来产生时基,所以 PWM 周期的起点(上升沿)是同步的,时钟源可以是 IHRC 或者系统时钟。
PWM 信号输出引脚通过 pwmgxc 寄存器来选择。PWM 波形的周期由 PWM 上限高和低寄存器决定,各路 PWM
波形的占空比由各路 PWM 占空比高和低寄存器决定。
在 PWMG0 通道的那两个附带的 OR 和 XOR 逻辑门是用于产生互补非重叠并有死区的开关控制波形的。用
JS
MI
CR
O
Se
mi
co
nd
uc
to
r
户也可以通过使用程序选项 GPC_PWM,使比较器结果也能控制 PWM 波形的输出。
图 15:整组 SuLED 三路 11 位 PWM 生成器硬件框图
www.jsmsemi.com
第48页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
0x7FF
Counter_Bound[10:1]
Duty[10:0]
to
r
Time
Time
Output
uc
Output Timing Diagram for 11- bit PWM generation
11 位 PWM 生成器计算公式
co
5.9.3
nd
图 16:11 位 PWM 生成器输出时序图
如果 FIHRC 是 IHRC 振荡器的频率,并且 11 位 PWM 生成器选择的时钟源是 IHRC,那么 PWM 频率和
mi
占空比计算式如下:
Se
PWM 输出频率= FIHRC ÷ [ CB +1 ]
PWM 输出占空比 (实时) = (1/FIHRC) * [ DB10_1 + DB0 * 0.5 + 0.5]
CR
O
pwms[6:5] = P;预分频
pwms[4:0] =
K;分频
Duty_Bound[10:1] = {pwmgxdth[7:0],pwmgxdtl[7:6]} = DB10_1;占空比
JS
MI
Duty_Bound[0] = pwmgxdtl[5] = DB0
Counter_Bound[10:1] = {pwmgxcubh[7:0], pwmgxcubl[7:6]} = CB;计数器
www.jsmsemi.com
第49页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.10 看门狗
看门狗是一个计数器,其时钟源来自内部低频振荡器(ILRC),可以通过上电复位和 wdreset 指令随时清零看
门狗计数,利用 misc 寄存器的选择,可以设定四种不同的看门狗超时时间,如下:
当 misc[1:0]=00(默认)时:8k ILRC 时钟周期
当 misc[1:0]=01 时:16k ILRC 时钟周期
to
r
当 misc[1:0]=10 时:64k ILRC 时钟周期
当 misc[1:0]=11 时:256k ILRC 时钟周期
ILRC 的频率有可能因为工厂制造的变化,电源电压和工作温度而漂移很多,使用者必须预留安全操作范围。
uc
由于在系统重启或者唤醒之后,看门狗计数周期会比预计要短,为防止看门狗计数溢出导致复位,建议在系统重
nd
启或唤醒之后使用立即 wdreset 指令清零看门狗计数。
VDD
tSBP
Se
mi
看门狗超时触发
co
当看门狗超时溢出时,PFS173 将复位并重新运行程序。看门狗时序图如图 17 所示。
程序执行
5.11 中断
CR
O
看门狗超时复位开机时序
图 17:看门狗超时溢出时序图
JS
MI
PFS173 有 8 个中断源:
外部中断源 PA0/PB5
外部中断源 PB0/PA4
ADC 中断源
Timer16 中断源
GPC 中断源
PWMG 中断源
Timer2 中断源
Timer3 中断源
每个中断请求源都有自己的中断控制位来启用或停用。中断功能的硬件框图如图 18 所示。所有的中断请求
标志位是由硬件置位并且并通过软件写寄存器 intrq 清零。中断请求标志设置点可以是上升沿或下降沿或两者兼
而有之,这取决于对寄存器 integs 的设置。所有的中断请求源最后都需由 engint 指令控制(启用全局中断)使
中断运行,以及使用 disgint 指令(停用全局中断)停用它。
www.jsmsemi.com
第50页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
中断堆栈与数据存储器共享,其地址由堆栈寄存器 sp 指定。由于程序计数器是 16 位宽度,堆栈寄存器 sp
位 0 应保持 0。此外,用户可以使用 pushaf 指令存储 ACC 和标志寄存器的值到堆栈,以及使用 popaf 指令将值
从堆栈恢复到 ACC 和标志寄存器中。由于堆栈与数据存储器共享,在 Mini-C 模式,堆栈位置与深度由编译程序
JS
MI
CR
O
Se
mi
co
nd
uc
to
r
安排。在汇编模式或自行定义堆栈深度时,用户应仔细安排位置,以防地址冲突。
图 18:中断控制器硬件框图
一旦发生中断,其具体工作流程将是:
程序计数器将自动存储到 sp 寄存器指定的堆栈存储器。
新的 sp 将被更新为 sp+2。
全局中断将被自动停用。
将从地址 0x010 获取下一条指令。
在中断服务程序中,可以通过读寄存器 intrq 知道中断发生源。
注意:即使 INTEN 为 0,INTRQ 还是会被中断发生源触发。
中断服务程序完成后,发出 reti 指令返回既有的程序,其具体工作流程将是:
www.jsmsemi.com
第51页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
从 sp 寄存器指定的堆栈存储器自动恢复程序计数器。
新的 sp 将被更新为 sp-2。
全局中断将自动启用。
下一条指令将是中断前原来的指令。
使用者必须预留足够的堆栈存储器以存中断向量,一级中断需要两个字节,两级中断需要 4 个字节。下面的
=
0;
ENGINT
uc
INTRQ
(void)
// INTEN =1; 当 PA0 准位改变,产生中断请求
// 清除 INTRQ
// 启用全局中断
nd
void
FPPA0
{
...
$ INTEN PA0;
to
r
示例程序演示了如何处理中断,请注意,处理中断和 pushaf 是需要四个字节堆栈存储器。
...
// 停用全局中断
co
DISGINT
...
Interrupt (void)
{
PUSHAF
// 中断程序
Se
void
mi
}
//
存储 ALU 和 FLAG 寄存器
如果 INTEN.PA0 在主程序会动态开和关,则表达式中可以判断 INTEN.PA0 是否为 1。
//
例如: If (INTEN.PA0 && INTRQ.PA0) {…}
//
如果 INTEN.PA0 一直在使能状态,就可以省略判断 INTEN.PA0,以加速中断执行。
JS
MI
CR
O
//
If (INTRQ.PA0)
{
INTRQ.PA0 = 0;
//
PA0 的中断程序
// 只须清除相对应的位 (PA0)
...
}
...
// X : INTRQ = 0;
//不建议在中断程序最后,才使用 INTRQ = 0 一次全部清除
//因为它可能会把刚发生而尚未处理的中断,意外清除掉
POPAF
//回复 ALU 和 FLAG 寄存器
}
www.jsmsemi.com
第52页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.12 省电与掉电
PFS173 有三个由硬件定义的操作模式,分别为:正常工作模式,电源省电模式和掉电模式。正常工作模式
是所有功能都正常运行的状态,省电模式(stopexe)是在降低工作电流而且 CPU 保持在随时可以继续工作的状
态,掉电模式(stopsys)是用来深度的节省电力。因此,省电模式适合在偶尔需要唤醒的系统工作,掉电模式是
to
r
在非常低消耗功率且很少需要唤醒的系统中使用。
5.12.1 省电模式(“stopexe”)
使用 stopexe 指令进入省电模式,只有系统时钟被停用,其余所有的振荡器模块都仍继续工作. 所以只有
uc
CPU 是停止执行指令,然而,对 Timer16 计数器而言,如果它的时钟源不是系统时钟,那 Timer16 仍然会保持
计数。省电模式下,唤醒源可以是 IO 的切换,或者 Timer16 计数到设定值时(假如 Timer16 的时钟源是 IHRC
co
IHRC 和 EOSC 振荡器模块:没改变,如果被启用,则仍然保持运行状态;
ILRC 振荡器模块:必须保持启用,唤醒时需要靠 ILRC 启动。
系统时钟:停用,因此 CPU 停止运行;
MTP 存储器关闭;
Timer16/ TM2/ TM3:停止计数,如果选择系统时钟或相应的振荡器模块被停止,否则,仍然保持计数;
唤醒源:IO 在数字输入模式下电平变换(PxDIER 位是 1)或者 Timer16 或者 Timer2 或者 Timer3。
mi
nd
或者 ILRC)。假如系统唤醒是因输入引脚切换,那可以视为系统继续正常运行。 省电模式的详细信息如下所示:
$ T16M
$ INTEGS
Se
以下例子是利用 Timer16 来唤醒系统因 stopexe 的省电模式:
ILRC, /1, BIT8
BIT_R, xxx;
// Timer16 设置
// BITx 0 到 1 会触发(默认)
JS
MI
CR
O
…
WORD
count =
0;
STT16
count;
stopexe;
…
Timer16 的初始值为 0,在 Timer16 计数了 256 个 IHRC 时钟后,系统将被唤醒。
5.12.2 掉电模式 (“stopsys”)
掉电模式是深度省电的状态,所有的振荡器模块都会被关闭。通过使用“stopsys” 指令,芯片会直接进入掉
电模式。下面显示发出 stopsys 命令后,如下是 PFS173 内部详细的状态:
有的振荡器模块被关闭;
MTP 存储器被关闭;
SRAM 和寄存器内容保持不变;
唤醒源:IO 在数字输入模式下电平变换(PxDIER 位是 1)
输入引脚的唤醒可以被视为正常运行的延续,为了降低功耗,进入掉电模式之前,所有的 I/O 引脚应仔细检
查,避免悬空而漏电。断电参考示例程序如下所示:
www.jsmsemi.com
第53页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
CLKMD
=
0xF4;
//
CLKMD.4
=
0;
//
系统时钟从 IHRC 变为 ILRC,关闭看门狗时钟
停用 IHRC
…
while (1)
{
//
系统时钟从 ILRC 变为 IHRC/2
//
if
//
(…)
break;
to
r
//
进入断电模式
假如发生唤醒而且检查 OK,就返回正常工作
否则,停留在断电模式
STOPSYS;
CLKMD =
唤醒
nd
5.12.3
0x34;
uc
}
进入掉电或省电模式后,PFS173 可以通过切换 IO 引脚恢复正常工作,而 Timer 中断的唤醒只适用于省电
co
模式。表 5 显示 stopsys 掉电模式和 stopexe 省电模式在唤醒源的差异。
mi
掉电模式 (stopsys)和省电模式 (stopexe)在唤醒源的差异
STOPEXE
计时器中断
是
否
是
是
Se
STOPSYS
IO 引脚切换
表 5:掉电模式和省电模式在唤醒源的差异
CR
O
当使用 IO 引脚来唤醒 PFS173, padier 寄存器应对每一个相应的引脚正确设置“使能唤醒功能”。从唤醒事
件发生后开始计数,正常的唤醒时间大约是 3000 个 ILRC 时钟周期,另外,PFS173 提供快速唤醒功能,透过
JS
MI
misc 寄存器选择快速唤醒大约 45 个 ILRC 时钟周期。
模式
STOPEXE 省电模式
STOPSYS 掉电模式
STOPEXE 省电模式
STOPSYS 掉电模式
唤醒模式
快速唤醒
正常唤醒
切换 IO 引脚的唤醒时间(tWUP)
45 * TILRC,
这里的 TILRC 是指 ILRC 时钟周期
3000* TILRC,
这里的 TILRC 是指 ILRC 时钟周期
请注意:当使用快速开机模式时,不管寄存器 misc.5 是否选择了唤醒模式,都会强制使用快速唤醒模式。
如果选择正常开机模式,即由寄存器 misc.5 来选择唤醒模式。
www.jsmsemi.com
第54页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.13 IO 引脚
PFS173 所有 IO 引脚都可以设定成输入或输出,透过数据寄存器(pa, pb, pc), 控制寄存器(pac, pbc, pcc)
和上拉寄存器(paph, pbph, pcph) 。其中有四个引脚 PB2、PB3、PC0 和 PC1 增加下拉寄存器(pbpl.2, pbpl.3,
pcpl.0, pcpl.1)。所有这些引脚设置有施密特触发输入缓冲器和 CMOS 输出驱动电位水平。当这些引脚为输出低
电位时,弱上拉/下拉电阻会自动关闭.如果用户要读取端口上的电位状态,一定要先设置成输入模式,因为在输
出模式下,读取到的数据是数据寄存器的值,而不是 IO 端口的值。举例,表 6 为端口 PA0 位的设定配置表。 图
pa.0
to
r
19 显示了 IO 缓冲区硬件图。
描述
pac.0 paph.0
0
0
输入,没有弱上拉电阻
X
0
1
输入,有弱上拉电阻
0
1
X
输出低电位,没有弱上拉电阻(弱上拉电阻自动关闭)
1
1
0
输出高电位,没有弱上拉电阻
1
1
1
输出高电位,有弱上拉电阻
nd
uc
X
JS
MI
CR
O
Se
mi
co
表 6:PA0 设定配置表
图 19:IO 引脚缓冲区硬件图
PB4 和 PB5 通过程序选项 PB4_PB5_Drive 来调整驱动电流和灌电流。
www.jsmsemi.com
第55页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
除了 PA5 外,所有的 IO 引脚具有相同的结构;PA5 的输出只能是漏极开路模式(没有 Q1)。对于被选择
为模拟功能的引脚,必须在寄存器 padier / pbdier / pcdier 相应位设置为低,以防止漏电流,当 PFS173 在掉
电或省电模式,每一个引脚都可以切换其状态来唤醒系统。因此,对于需用来唤醒系统的引脚,必须设置为输入
模式以及寄存器 pxdier 为高电平。
同样的原因,当 PA0 用作外部中断引脚时,
padier.0 应设置为高,
诸如 pbdier.0
对于 PB0,padier.4 对于 PA4 和 pbdier.5 对于 PB5,都是同样的用法。
to
r
5.14 复位和 LVR
5.14.1 复位
引起 PFS173 复位的原因很多,一旦复位发生,PFS173 的所有寄存器将被设置为默认值,系统会重新
uc
启动,程序计数器会跳跃地址 0x0。当发生上电复位或 LVR 复位,数据存储器的值是在不确定的状态,然而,
若是复位是因为 PRSTB 引脚或 WDT 超时溢位,数据存储器的值将被保留。
nd
5.14.2 LVR 复位
通过程序选项(code option)可以看到,有很多不同级别的 LVR 复位电压可供选择,通常情况下,使用者
co
在选择 LVR 复位电压时,必须结合单片机工作频率和电源电压,以便让单片机稳定工作。
JS
MI
CR
O
Se
mi
5.15 模拟-数字转换器(ADC) 模块
图 20:ADC 模块框图
www.jsmsemi.com
第56页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
当使用 ADC 模块时有 7 个寄存器需要配置,它们是:
ADC 控制寄存器 (adcc)
ADC 调节控制寄存器(adcrgc)
ADC 模式寄存器 (adcm)
ADC 结果寄存器(adcr)
to
r
端口 A/B/C 数字输入启用寄存器 (padier, pbdier, pcdier)
如下是 ADC 转换进程的步骤:
通过寄存器 adcrgc 配置参考高电压
(2)
通过 adcm 寄存器配置 AD 转换时钟信号
(3)
通过 padier,pbdier 寄存器配置模拟输入引脚
(4)
通过 adcc 寄存器选择 ADC 输入通道
(5)
通过 adcc 寄存器启用 ADC 模块
(6)
执行 AD 转换并检查 ADC 转换数据是否已经完成
co
nd
uc
(1)
addc.6 设置 1 开启 AD 转换并且检测 addc.6 是否是‘1’
从 ADC 寄存器读取转换结果
mi
(7)
Se
5.15.1 AD 转换的输入要求
为了满足 AD 转换的精度要求,电容的保持电荷(CHOLD)必须完全充电到参考高电压的水平和放电到参考
低电压的水平。模拟输入电路模型如图 21 所示,信号驱动源阻抗(Rs)和内部采样开关阻抗(Rss)会直接影响
CR
O
到电容 CHOLD 充电所需求的时间。内部采样开关的阻抗可能会因 ADC 充电电压而产生变化;信号驱动源阻
抗会影响模拟输入信号的精度。使用者必须确保在采样前,被测信号的稳定,因此,信号驱动源阻抗的最大
JS
MI
值与被测信号的频率高度相关。建议,在输入频率为 500khz 下,模拟信号源的最大阻抗值不要超过 10KΩ。
图 21:模拟输入模型
在使用 AD 转换之前,必须确认所选的模拟输入信号的采集时间应符合要求,ADCLK 的选择必须满足最
短信号采集时间。
www.jsmsemi.com
第57页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
5.15.2 选择参考高电压
ADC 参考高电压能够通过寄存器 adcrgc 的位[7]来选择,并且它的选择有 VDD 或者来自 PB1 外部引脚。
5.15.3 ADC 时钟选择
ADC 模块的时钟(ADCLK)能够通过 adcm 寄存器来选择,ADCLK 从 CLK÷1 到 CLK÷128 一共有 8 个选
to
r
项可被选择(CLK 是系统时钟)。由于信号采集时间 TACQ 是 ADCLK 的一个时钟周期,所以 ADCLK 必须
满足这已要求,建议 ADC 时钟周期是 2us。
uc
5.15.4 配置模拟引脚
有 14 模拟信号可以被 AD 转换选择:13 来自外部引脚的模拟输入信号和一个 band-gap 参考电压 1.2V。
nd
这些外部引脚定义为模拟输入时,为避免从共享 IO 端口的数字电路产生的漏电,请务必记住要禁止数字输入
的功能(设置寄存器 padier, pbdier or pcdier 对应位为 0)。
co
因为 ADC 的测量信号属于小信号,为避免测量信号在测量期间被干扰,被选定的引脚应:
(1) 设为输入模式,
mi
(2) 关闭弱上拉电阻,
Se
(3) 通过端口 A/B/C 寄存器 (padier / pbdier / pcdier).设置模拟输入并关闭数字输入。
5.15.5 使用 ADC
CR
O
下面的示例演示使用 PB0〜PB3 来当 ADC 输入引脚:
首先,定义所选择的引脚:
JS
MI
PBC
PBPH
PBPH
PBDIER
=
=
=
=
0B_XXXX_0000;
0B_XXXX_0000;
0B_XXXX_00XX;
0B_XXXX_0000;
作为输入
没有弱上拉电阻
没有弱下拉电阻
停用数字输入
//
//
//
//
PB0 ~ PB3
PB0 ~ PB3
PB2 ~ PB3
PB0 ~ PB3
//
//
//
设置 PB3 作为 ADC 输入
设置 PB2 作为 ADC 输入
设置 PB0 作为 ADC 输入
//
//
建议 /16 @系统时钟=8MHz
建议 /8 @系统时钟=4MHz
//
系统时钟=8MHz
下一步,设定 ADCC 寄存器,示例如下:
$
$
$
ADCC Enable, PB3;
ADCC Enable, PB2;
ADCC Enable, PB0;
下一步,设定 ADCM 寄存器,示例如下:
$
$
ADCM /16;
ADCM /8;
下一步,延迟 400us,示例如下:
.Delay 8*400;
www.jsmsemi.com
第58页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
.Delay 4*400;
系统时钟=4MHz
//
接着,开始 ADC 转换:
AD_START =
1;
while(!AD_DONE) NULL;
//
//
开始 ADC 转换
等待 ADC 转换结果
最后,当 AD_DONE 高电位时读取 ADC 结果:
=
Data;
ADCR
to
r
BYTE
Data
ADC 也可以利用下面方法停用:
ADCC Disable;
uc
$
或
0;
nd
=
JS
MI
CR
O
Se
mi
co
ADCC
www.jsmsemi.com
第59页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6. IO 寄存器
6.1. ACC 状态标志寄存器(flag), IO 地址 = 0x00
位
初始值
读/写
7-4
-
-
3
0
读/写
2
0
读/写
1
0
读/写
0
0
读/写
描述
保留。
OV(溢出标志)。溢出时置 1。
位,(2)减法运算时,低半字节向高半字节借位。
C(进位标志)。有两个条件下,此位设置为 1:(1)加法运算产生进位,(2)减法运算有借
位。进位标志还受带进位标志的 shift 指令影响。
uc
Z(零)。此位将被设置为 1,当算术或逻辑运算的结果是 0;否则将被清零。
读/写
7-0
-
读/写
描述
堆栈指针寄存器。读出当前堆栈指针,或写入以改变堆栈指针。请注意 0 位必须维持为 0
因程序计数器是 16 位。
初始值
读/写
Se
位
mi
6.3. 时钟模式寄存器(clkmd), IO 地址 = 0x03
co
初始值
nd
6.2. 堆栈指针寄存器(sp), IO 地址 = 0x02
位
描述
系统时钟(CLK)选择
类型 0,clkmd[3]=0
000:IHRC÷16
001:IHRC÷2
001:IHRC÷8
CR
O
111
读/写
类型 1,clkmd[3]=1
000:IHRC÷4
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:保留
JS
MI
7-5
1
读/写
0
读/写
2
1
读/写
1
1
读/写
看门狗功能。 0/1:停用/启用
0
0
读/写
引脚 PA5/PRSTB 功能。0 / 1:PA5 / PRSTB
4
3
to
r
AC(辅助进位标志)。两个条件下,此位设置为 1:(1)是进行低半字节加法运算产生进
内部高频 RC 振荡器功能。 0/1:停用/启用
时钟类型选择。这个位是用来选择位 7~位 5 的时钟类型。
0 / 1:类型 0 /类型 1
内部低频 RC 振荡器功能。0/1:停用/启用
当内部低频 RC 振荡器功能停用时,看门狗功能同时被关闭。
www.jsmsemi.com
第60页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.4. 中断允许寄存器(inten), IO 地址 = 0x04
初始值
读/写
描述
7
0
读/写
启用从 Timer3 或 PWMG2 的溢出中断。0/1:停用/启用
6
0
读/写
启用从 Timer2 的溢出中断。0/1:停用/启用
5
0
读/写
启用从 PWMG 的溢出中断。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:停用/启用
nd
uc
to
r
位
6.5. 中断请求寄存器(intrq), IO 地址 = 0x05
初始值
读/写
描述
7
-
读/写
Timer3 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求
6
-
读/写
Timer2 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求
5
-
读/写
PWMG 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求
4
-
读/写
比较器的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求
3
-
读/写
ADC 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求
2
-
读/写
Timer16 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求
1
-
读/写
PB0/PA4 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求
0
-
读/写
PA0/PB5 的中断请求,此位是由硬件置位并由软件清零。 0/1:不要求/请求
JS
MI
CR
O
Se
mi
co
位
www.jsmsemi.com
第61页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.6. Timer16 控制寄存器 (t16m), IO 地址 = 0x06
位
初始值
读/写
描述
Timer16 时钟选择:
000:停用
001:CLK(系统时钟)
010:保留
7-5
000
读/写
011:PA4 下降沿(从外部引脚)
to
r
100:IHRC
101:EOSC
110:ILRC
uc
111:PA0 下降沿(从外部引脚)
Timer16 时钟分频:
00:÷1
00
读/写
01:÷4
nd
4-3
10:÷16
11:÷64
co
中断源选择。当所选择的状态位变化时,中断事件发生。
1:Timer16 位 9
2:Timer16 位 10
2-0
000
读/写 3:Timer16 位 11
Se
4:Timer16 位 12
mi
0:Timer16 位 8
5:Timer16 位 13
6:Timer16 位 14
CR
O
7:Timer16 位 15
6.7. 外部晶体振荡器控制寄存器(eoscr), IO 地址 = 0x0a
初始值
读/写
7
0
只写
描述
使能外部晶体振荡器。0 / 1:停用/使能
JS
MI
位
晶体振荡器的选择。
00:保留
6-5
00
只写
01:低驱动电流,适用于中等频率晶体,例如:32KHz
10:中驱动电流,适用于中等频率晶体,例如:1MHz
11:高驱动电流,适用于较高频率晶体,例如:4MHz
4-1
-
-
0
0
只写
保留。请设为 0。
将 Band-gap 和 LVR 硬件模块断电。 0 / 1:正常/ 断电
www.jsmsemi.com
第62页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.8. 中断边缘选择寄存器(integs), IO 地址 = 0x0c
位
初始值
读/写
7-5
-
-
描述
保留。
Timer16 中断边缘选择:
4
0
只写
0:上升缘请求中断
1:下降缘请求中断
PB0/PA4 中断边缘选择:
3-2
00
只写
to
r
00:上升缘和下降缘都请求中断
01:上升缘请求中断
10:下降缘请求中断
11:保留
uc
PA0/PB5 中断边缘选择:
00:上升缘和下降缘都请求中断
00
只写
01:上升缘请求中断
nd
1-0
10:下降缘请求中断
co
11:保留
6.9. 端口 A 数字输入使能寄存器(padier), IO 地址 = 0x0d
7
1
只写
6
1
只写
5
1
只写
4
1
只写
2-1
0
JS
MI
3
描述
使能 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 则不能用来
唤醒系统。
mi
读/写
Se
初始值
CR
O
位
1
只写
1
只写
保留。
1
只写
使能 PA0 数字输入和唤醒和中断请求。1 / 0:启用 / 停用
当 PA0 作为 AD 模拟输入时,该位设为 0 可以防止耗电。如果这个位设为 0,PA0 则不能
用来唤醒系统,并且停用中断请求。
6.10. 端口 B 数字输入使能寄存器(pbdier), IO 地址 = 0x0e
位
初始值
读/写
描述
使能 PB7~PB0 数字输入和唤醒和中断请求。0 / 1:停用 / 启用
7-0
0xFF
只写
当 PB7~PB0 作为 AD 输入时,这些位设 0 可以防止漏电。当选择停用时,这些引脚的唤醒
功能也被停用。
www.jsmsemi.com
第63页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.11. 端口 C 数字输入使能寄存器(pcdier), IO 地址= 0x0f
位
初始值
读/写
描述
7-4
-
-
3-0
0xF
只写
保留。
使能 PC3~PC0 数字输入和唤醒和中断请求。0 / 1:停用 / 启用
当 PC2~PC1 作为 AD 输入时,这些位设 0 可以防止漏电。当选择停用时,这些引脚的唤醒
功能也被停用。
to
r
注意:详细设置请参考 9.3 部分。
6.12. 端口 A 数据寄存器(pa), IO 地址 = 0x10
初始值
读/写
7-0
0x00
读/写
描述
数据寄存器的端口 A。
6.13. 端口 A 控制寄存器(pac), IO 地址 = 0x11
初始值
读/写
描述
nd
位
uc
位
端口 A 控制寄存器。这些寄存器是用来定义端口 A 每个相应的引脚的输入模式或输出模式。
0x00
读/写
0/1:输入/输出
co
7-0
请注意:PA5 当输入或输出低,当 PA5 设为输出高时,为 OC/OD 输出。
初始值
读/写
7-0
0x00
读/写
描述
端口 A 上拉控制寄存器。这些寄存器是用来控制上拉高端口 A 每个相应的引脚。
Se
位
mi
6.14. 端口 A 上拉控制寄存器(paph), IO 地址 = 0x12
0/1:停用/启用
6.15. 端口 B 数据寄存器(pb), IO 地址 = 0x13
初始值
读/写
7-0
0x00
读/写
描述
CR
O
位
数据寄存器的端口 B。
位
7-0
JS
MI
6.16. 端口 B 控制寄存器(pbc), IO 地址 = 0x14
初始值
读/写
0x00
读/写
描述
端口 B 控制寄存器。这些寄存器是用来定义端口 B 每个相应的引脚的输入模式或输出模式。
0/1:输入/输出
6.17. 端口 B 上拉控制寄存器(pbph), IO 地址 = 0x15
位
初始值
读/写
7-0
0x00
读/写
描述
端口 B 上拉控制寄存器。这些寄存器是用来控制上拉高端口 B 每个相应的引脚。
0/1:停用/启用
6.18. 端口 C 数据寄存器((pc), IO 地址= 0x16
位
初始值
读/写
7-4
-
-
3-0
0x00
读/写
描述
保留。
数据寄存器的端口 C。
www.jsmsemi.com
第64页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.19. 端口 C 控制寄存器 (pcc), IO 地址= 0x17
位
初始值
读/写
7-4
-
-
3-0
0x00
读/写
描述
保留.
端口 C 控制寄存器。这些寄存器是用来定义端口 B 每个相应的引脚的输入模式或输出模式。
0/1:输入/输出
6.20. 端口 C 上拉控制寄存器(pcph), IO 地址= 0x18
读/写
7-4
-
-
3-0
0x00
读/写
描述
to
r
初始值
保留。
端口 C 上拉控制寄存器。这些寄存器是用来控制上拉高端口 C 每个相应的引脚。
0/1:停用/启用
uc
位
位
初始值
读/写
7-4
-
-
3
0
读/写
端口 PB3 下拉寄存器。0/1:停用/启用
2
0
读/写
端口 PB2 下拉寄存器。0/1:停用/启用
1-0
-
-
nd
6.21. 端口 B 下拉控制寄存器 (pbpl), IO 地址= 0x19
描述
co
保留。
mi
保留。
Se
6.22. 端口 C 下拉控制寄存器(pcpl), IO 地址= 0x1a
位
初始值
读/写
7-2
-
-
1
0
读/写
端口 PC1 下拉寄存器。0/1:停用/启用
0
0
读/写
端口 PC0 下拉寄存器。0/1:停用/启用
JS
MI
CR
O
保留。
描述
www.jsmsemi.com
第65页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.23. ADC 控制寄存器(adcc), IO 地址 = 0x20
位
初始值
读/写
7
0
读/写
6
0
读/写
描述
启用 ADC 功能。0/1:停用/启用
ADC 转换进程控制位:
读到 “1” 表明 ADC 已经准备好,或已转换完成。
通道选择。 以下 4 位用来选择 AD 转换的输入信号:
0000:PB0/AD0,
to
r
0001:PB1/AD1,
0010:PB2/AD2,
0011:PB3/AD3,
0100:PB4/AD4,
0000
读/写
0110:PB6/AD6,
0111:PB7/AD7,
nd
5-2
uc
0101:PB5/AD5,
1000:PA3/AD8,
1001:PA4/AD9,
co
1010:PA0/AD10,
1011:PC1/AD11,(ICE 上是 PA1)
mi
1100:PC2/AD12,(ICE 上是 PC1)
1111:(通道 F)Band-gap 参考电压
其他:保留
-
保留。(写 0)
-
Se
0-1
6.24. ADC 模式寄存器(adcm), IO 地址 = 0x21
初始值
读/写
7-4
-
-
描述
CR
O
位
保留(写 0)。
ADC 时钟源选择:
000:CLK(系统时钟)÷ 1,
JS
MI
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.25. ADC 结果寄存器(adcr), IO 地址= 0x22
位
初始值
读/写
7-0
-
只读
描述
8 个只读位都是 AD 转换的结果。
www.jsmsemi.com
第66页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.26. ADC 调节控制寄存器(adcrgc), IO 地址 = 0x24
位
初始值 读/写
描述
ADC 参考高电压:
7
0
只写
0:VDD,
1:外部引脚 (PB1)
-
-
保留。
to
r
6-0
6.27. 杂项寄存器(misc), IO 地址 = 0x26
初始值
读/写
7-6
-
-
描述
保留。(写 0)
uc
位
快唤醒功能。快速唤醒功能 EOSC 模式下不支持。
5
0
只写
0:正常唤醒。唤醒时间是 3000 个 ILRC 时钟(不适用快速开机)。
使能 VDD/2 LCD bias 电压生成器。
0
只写
0 / 1:停用/ 开启(ICE 不能实时转换)
co
4
nd
1:快速唤醒。唤醒时间为 45 个 ILRC 时钟。
如果 Code Option 有选择 LCD 输出,但 MISC.4 没有设为 1,则在 IC 上还是无法输出 VDD/2
-
-
2
0
只写
保留。
停用 LVR 功能。
Se
3
mi
bias,但仿真器则恒可以,此处两边现象不同。
0 / 1:开启/ 停用
看门狗时钟超时时间设定:
00:8k ILRC 时钟周期
只写
01:16k ILRC 时钟周期
CR
O
00
10:64k ILRC 时钟周期
11:256k ILRC 时钟周期
JS
MI
1-0
www.jsmsemi.com
第67页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.28. 比较器控制寄存器(gpcc), IO 地址 = 0x2b
位
初始值
读/写
7
0
读/写
描述
启用比较器。0 / 1:停用/启用
当此位被设置为启用,请同时设置相应的模拟输入引脚是数字停用,以防止漏电。
比较器结果。
6
-
只读
0:正输入 < 负输入
to
r
1:正输入 > 负输入
选择比较器的结果是否由 TM2_CLK 采样输出。
5
0
读/写
0:比较器的结果没有 TM2_CLK 采样输出
uc
1:比较器的结果是由 TM2_CLK 采样输出
选择比较器输出的结果是否反极性。
0
读/写
0:比较器输出的结果没有反极性
nd
4
1:比较器输出的结果是反极性
co
选择比较器负输入的来源。
000:PA3
001:PA4
000
读/写
010:内部 1.20 V band-gap 参考电压
mi
3-1
011:Vinternal R
Se
100:PB6(不适用 EV5)
101:PB7(不适用 EV5)
11X:保留
0
0
CR
O
选择比较器正输入的来源。
读/写
0:Vinternal R
1:PA4
位
JS
MI
6.29. 比较器选择寄存器(gpcs), IO 地址 = 0x2c
初始值
读/写
0
只写
0
-
5
0
只写
选择比较器参考电压 Vinternal R 最高的范围。
4
0
只写
选择比较器参考电压 Vinternal R 最低的范围。
3-0
0000
只写
7
6
描述
比较器输出启用(到 PA0)。
0 / 1:停用/启用
保留。
选择比较器参考电压 Vinternal R。
0000(最低) ~ 1111(最高)
www.jsmsemi.com
第68页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.30. Timer2 控制寄存器(tm2c), IO 地址 = 0x30
初始值
0000
描述
读/写
Timer2 时钟源选择:
0000:停用
0001:CLK(系统时钟)
0010:IHRC or IHRC *2(由 code option TMx_ source 决定)
0011:EOSC
0100:ILRC
0101:比较器输出(仿真器不支持)
1000:PA0(上升沿)
1001:~PA0(下降沿)
1010:PB0(上升沿)
1011:~PB0(下降沿)
1100:PA4(上升沿)
1101:~PA4(下降沿)
其他:保留
注意:在 ICE 模式且 IHRC 被选为 Timer2 定时器时钟,当 ICE 停下时,发送到定时器的时钟
是不停止,定时器仍然继续计数。
co
nd
uc
7-4
读/写
to
r
位
mi
Timer2 输出选择:
00:停用
00
读/写
01:PB2
10:PA3
11:PB4
0
读/写
0
0
读/写
Timer2 模式选择:
0 / 1:定周期模式 / PWM 模式。
启用 Timer2 反极性输出:
CR
O
1
Se
3-2
0 / 1:停用/启用
位
7-0
JS
MI
6.31. Timer2 计数寄存器(tm2ct), IO 地址 = 0x31
初始值
读/写
0x00
读/写
描述
Timer2 定时器位[7:0]。
6.32. Timer2 分频寄存器(tm2s), IO 地址 = 0x32
位
初始值
读/写
描述
PWM 分辨率选择。
7
0
只写
0:8 位
1:6 位或者 7 位(由 code option TMx_Bit 决定)
Timer2 时钟预分频器。
00:÷ 1
6-5
00
只写
01:÷ 4
10:÷ 16
11:÷ 64
www.jsmsemi.com
第69页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
4-0
00000
只写
Timer2 时钟分频器。
6.33. Timer2 上限寄存器(tm2b), IO 地址 = 0x33
位
初始值
读/写
7-0
0x00
只写
描述
Timer2 上限寄存器。
6.34. Timer3 控制寄存器(tm3c), IO 地址 = 0x34
初始值
读/写
描述
to
r
位
Timer3 时钟选择。
0000:disable
uc
0001:CLK(系统时钟)
0010:IHRC or IHRC *2(由 code option TMx_ source 决定)
0011:EOSC
nd
0100:ILRC
0101:比较器输出
0000
读/写
1000:PA0(上升沿)
co
7-4
1001:~PA0(下降沿)
1010:PB0(上升沿)
1100:PA4(上升沿)
mi
1011:~PB0(下降沿)
其他:保留
Se
1101:~PA4(下降沿)
注意:在 ICE 模式且 IHRC 被选为 Timer3 定时器时钟,当 ICE 停下时,发送到定时器的时钟
3-2
00
读/写
CR
O
是不停止,定时器仍然继续计数。
Timer3 输出选择。
00:停用
01:PB5
10:PB6
JS
MI
11:PB7
Timer3 模式选择。
1
0
读/写
0:周期模式
1:PWM 模式
0
0
读/写
启用 Timer3 反极性输出。
0/1:停用/启用
6.35. Timer3 计数寄存器(tm3ct), IO 地址 = 0x35
位
初始值
读/写
7-0
0x00
读/写
描述
Timer3 定时器位[7:0]。
www.jsmsemi.com
第70页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.36. Timer3 Scalar Register (tm3s), IO address = 0x36
位
初始值
读/写
描述
PWM 分辨率选择。
7
0
只写
0:8 位
1:6 位或者 7 位(由 code option TMx_Bit 决定)
Timer3 时钟预分频器。
6-5
00
只写
to
r
00:÷ 1
01:÷ 4
10:÷ 16
11:÷ 64
只写
Timer3 时钟分频器。
6.37. Timer3 上限寄存器(tm3b), IO 地址 = 0x37
位
初始值
读/写
7-0
0x00
WO
uc
00000
nd
4-0
描述
co
Timer3 上限寄存器。
位
初始值
读/写
7
-
-
6
-
只读
5
0
只写
mi
6.38. PWMG0 控制寄存器(pwmg0c), IO 地址 = 0x40
Se
保留。
描述
PWMG0 生成器输出状态。
选择 PWMG0 的输出的结果是否反极性:
CR
O
0/1:停用/启用
PWMG0 输出选择。
4
0
只写
0:PWMG0 输出
JS
MI
1:PWMG0 XOR PWMG1 或者 PWMG0 OR PWMG1(通过 pwmg0c.0 位来选择)
PWMG0 输出端口选择。
000:输出停用
001:PB5
3-1
000
读/写
010:PC2
011:PA0
100:PB4
101:PB6(仅适用于 PB6 不配置成 PWMG1 的输出)
其他:保留
PWMG0 输出预选择。
0
0
读/写
0:PWMG0 XOR PWMG1
1:PWMG0 OR PWMG1
www.jsmsemi.com
第71页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.39. PWMG 时钟寄存器(pwmgclk), IO 地址 = 0x41
000
只写
3-1
-
-
0
to
r
PWMG 时钟预分频。
000:÷1
001:÷2
010:÷4
011:÷8
100:÷16
101:÷32
110:÷64
111:÷128
uc
只写
PWMG 停用/ 启用。
0:PWMG 停用
1:PWMG 启用
6-4
0
描述
nd
0
读/写
保留。
只写
PWMG 时钟源选择。
0:系统时钟
1:IHRC 或者 IHRC*2(由 code option PWM_Source 决定)
co
7
初始值
mi
位
位
初始值
读/写
7-0
-
只写
Se
6.40. PWMG0 占空比高位寄存器(pwmg0dth), IO 地址 = 0x42
描述
PWMG0 占空比值。位[10:3]。
CR
O
6.41. PWMG0 占空比低位寄存器((pwmg0dtl), IO 地址 = 0x43
初始值
读/写
7-5
-
只写
4-0
描述
PWMG0 占空比值。位[2:0]。
JS
MI
位
-
-
保留。
注意: PWMG0 占空比低位寄存器的值必须写在 PWMG0 占空比高位寄存器之前。
6.42. PWMG 计数上限高位寄存器(pwmgcubh ), IO 地址 = 0x44
位
初始值
读/写
7-0
-
只写
描述
PWMG 上限寄存器。位[10:3]。
6.43. PWMG 计数上限低位寄存器(pwmgcubl ), IO 地址= 0x45
位
初始值
读/写
7-6
-
只写
5-0
-
-
描述
PWMG 上限寄存器。位[2:1]。
保留。
www.jsmsemi.com
第72页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.44. PWMG1 控制寄存器 (pwmg1c), IO 地址= 0x46
位
初始值
读/写
7
-
-
6
-
只读
5
0
读/写
PWMG1 生成器输出状态。
选择 PWMG1 的输出的结果是否反极性:
000
读/写
0
-
读/写
保留。
mi
3-1
PWMG1 输出端口选择:
000:输出停用
001:PB6
010:保留
011:PA4
100:PB7
1xx:保留
uc
读/写
PWMG1 输出选择:
0:PWMG1
1:PWMG2
to
r
0/1:停用/启用。
nd
0
保留。
co
4
描述
初始值
读/写
7-0
-
只写
描述
PWMG1 占空比值。位[10:3]。
CR
O
位
Se
6.45. PWMG1 占空比高位寄存器 (pwmg1dth), IO 地址= 0x48
6.46. PWMG1 占空比低位寄存器(pwmg1dtl), IO 地址= 0x49
初始值
读/写
7-5
-
只写
-
-
4-0
描述
PWMG1 占空比值。位[2:0]。
JS
MI
位
保留。
注意:PWMG1 占空比低位寄存器的值必须写在 PWMG1 占空比高位寄存器之前。
www.jsmsemi.com
第73页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
6.47. PWMG2 控制寄存器(pwmg2c), IO 地址 = 0x4C
位
初始值
读/写
描述
7
-
-
6
-
只读
5
0
读/写
4
0
读/写
PWMG2 输出选择:
0:PWMG2
1:PWMG2 ÷2
保留。
PWMG2 生成器输出状态。
选择 PWMG2 的输出的结果是否反极性:
-
读/写
保留。
uc
0
nd
读/写
co
000
mi
3-1
PWMG2 输出端口选择:
000:输出停用
001:PB3
010:保留
011:PA3
100:PB2
101:PA5
1xx:保留
to
r
0/1:停用/启用
初始值
读/写
7-0
-
只写
描述
PWMG2 占空比值。位[10:3]。
CR
O
位
Se
6.48. PWMG2 占空比高位寄存器(pwmg2dth), IO 地址= 0x4E
6.49. PWMG2 占空比低位寄存器(pwmg2dtl), IO 地址= 0x4F
7-5
4-0
初始值
读/写
描述
JS
MI
位
-
只写
-
-
PWMG2 占空比值。位[2:0]。
保留。
注意:PWMG2 占空比低位寄存器的值必须写在 PWMG2 占空比高位寄存器之前。
www.jsmsemi.com
第74页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
7. 指令
符号
flag
to
r
sp
累加器(Accumulator 在程序里的代表符号)
堆栈指针
ACC 标志寄存器
I
立即数据
&
逻辑与
|
逻辑或
uc
a
累加器(Accumulator 的缩写)
nd
ACC
描述
移动
^
异或
+
加
-
减
〜
按位取反(逻辑补数,1 补数)
〒
负数(2 补码)
OV
溢出(2 补数系统的运算结果超出范围)
mi
Se
CR
O
零(如果零运算单元操作的结果是 0,这位设置为 1)
JS
MI
Z
co
←
C
进位 (Carry)
AC
辅助进位标志 (Auxiliary Carry)
M.n
只允许寻址在地址 0~0x7F (0~127) 的位置
www.jsmsemi.com
第75页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
7.1. 数据传输类指令
mov
M, a
mov
a, M
a, IO
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:
ldtabh
index
移动数据由累加器到 IO。
例如:mov
pb, a;
结果:pb ← a
『不变』,
受影响标志位:Z:
mi
IO, a
C:
『不变』,
AC:『不变』,
OV:『不变』
OV:
『不变』
通过使用 index 作为 OTP 地址把数据的高位存进程序存储器给累加器。该操作需要 2T 指令周期。
例如:ldtabh
index;
Se
mov
co
nd
mov
移动即时数据到累加器。
例如: mov
a, 0x0f;
结果: a ← 0fh;
『不变』,
受影响标志位: Z:
to
r
a, I
uc
mov
结果:a ← {bit 15~8 of OTP [index]};
受影响标志位:
『N』Z
『N』C
『N』AC
『N』OV
CR
O
应用范例:
// 在 RAM 里面声明指针
mov
a, la@TableA ;
// 指针指向 ROM 里面的 TableA (LSB)
mov
lb@ROMptr, a ;
// 保存指针给 RAM(LSB)
mov
a, ha@TableA ;
// 指针指向 ROM 里面的 TableA (MSB)
mov
hb@ROMptr, a ;
// 保存指针给 RAM(MSB)
ROMptr ;
// 存储 TableA MSB 给 ACC (ACC=0X02)
-----------------------------------------------------------------------------------------------------------------------word
ROMptr ;
JS
MI
...
...
ldtabh
...
TableA :
dc
0x0234, 0x0042, 0x0024, 0x0018 ;
------------------------------------------------------------------------------------------------------------------------
www.jsmsemi.com
第76页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
index
通过使用 index 作为 OTP 地址把数据的低位存进程序存储器给累加器。该操作需要 2T 指令周期。
例如: ldtabl index;
结果: a ← {bit7~0 of OTP [index]};
受影响标志位:
『N』Z 『N』C 『N』AC 『N』OV
应用范例:
-----------------------------------------------------------------------------------------------------------------------word
ROMptr ;
// 在 RAM 里面声明指针
...
mov
a, la@TableA ;
// 指针指向 ROM 里面的 TableA (LSB)
mov
lb@ROMptr, a ;
// 保存指针给 RAM (LSB)
mov
a, ha@TableA ;
// 指针指向 ROM 里面的 TableA (MSB)
mov
hb@ROMptr, a ; // 保存指针给 RAM (MSB)
...
ldtabl
ROMptr ;
// 存储 TableA LSB 给 ACC (ACC=0x34)
...
TableA :
dc
0x0234, 0x0042, 0x0024, 0x0018 ;
------------------------------------------------------------------------------------------------------------------------
ldt16
word
将 Timer16 的 16 位计算值复制到 RAM。
例如: ldt16 word;
结果: word ← 16-bit timer
受影响标志位: Z:
『不变』, C:
『不变』,
mi
co
nd
uc
to
r
ldtabl
AC:『不变』,
OV:
『不变』
JS
MI
CR
O
Se
应用范例:
-----------------------------------------------------------------------------------------------------------------------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
….
-----------------------------------------------------------------------------------------------------------------------将放在 word 的 16 位 RAM 复制到 Timer16。
例如: stt16 word;
结果: 16-bit timer ← word
stt16
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
…
www.jsmsemi.com
第77页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
idxm
a, index
使用索引作为 RAM 的地址并将 RAM 的数据读取并载入到累加器。它需要 2T 时间执行这一指令。
例如:
idxm
结果:
a ← [index], index 是用 word 定义。
a, index;
受影响的标志位: Z:
『不变』
,
C:
『不变』,
AC:『不变』
,
OV:『不变』
应用范例:
RAMIndex ;
// 定义一个 RAM 指针
mov
a, 0x5B ;
// 指定指针地址(LSB)
mov
lb@RAMIndex, a ;
// 将指针存到 RAM(LSB)
mov
a, 0x00 ;
// 指定指针地址为 0x00 (MSB),在 PFS173 要为 0
mov
hb@RAMIndex, a ;
// 将指针存到 RAM (MSB)
word
uc
…
idxm
to
r
…
// 将 RAM 地址为 0x5B 的数据读取并载入累加器
a, RAMIndex ;
index, a
使用索引作为 RAM 的地址并将 RAM 的数据读取并载入到累加器。它需要 2T 时间执行这一指令。
例如:
idxm
结果:
a ← [index], index 是用 word 定义。
a, index;
co
Idxm
nd
------------------------------------------------------------------------------------------------------------------------
xch
JS
MI
CR
O
Se
mi
受影响的标志位: Z:
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
应用范例:
-----------------------------------------------------------------------------------------------------------------------word
RAMIndex ;
// 定义一个 RAM 指针
…
mov
a, 0x5B ;
// 指定指针地址 (LSB)
mov
lb@RAMIndex, a ;
// 将指针存到 RAM (LSB)
mov
a, 0x00 ;
// 指定指针地址为 0x00 (MSB),必须为 0
mov
hb@RAMIndex, a ; // 将指针存到 RAM (MSB)
…
mov
a, 0xA5 ;
idxm
RAMIndex, a ;
// 0xA5 存入 RAM 地址为 0x5B
------------------------------------------------------------------------------------------------------------------------
M
累加器与 RAM 之间交换数据。
例如:
xch
MEM ;
结果: MEM ← a , a ← MEM
受影响的标志位: Z:
『不变』
,
C:
『不变』,
www.jsmsemi.com
AC:『不变』
,
OV:『不变』
第78页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
将累加器和算术逻辑状态寄存器的数据存到堆栈指针指定的堆栈存储器。
例如: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:『受影响』
uc
to
r
pushaf
mi
co
nd
popaf
7.2. 算术运算类指令
a, I
将立即数据与累加器相加,然后把结果放入累加器。
Se
add
例如:
add
结果:
a ← a + 0fh
a, 0x0f ;
受影响的标志位: Z:
『受影响』,
a, M
例如:
add
结果:
a ← a + MEM
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
AC:『受影响』,
OV:『受影响』
将 RAM 与累加器相加,然后把结果放入 RAM。
JS
MI
M, a
OV:『受影响』
a, MEM ;
受影响的标志位: Z:
『受影响』,
add
AC:『受影响』,
将 RAM 与累加器相加,然后把结果放入累加器。
CR
O
add
C:
『受影响』
,
例如: add
MEM, a;
结果: MEM ← a + MEM
受影响的标志位: Z:
『受影响』,
addc
a, M
C:
『受影响』
,
将 RAM、累加器以及进位相加,然后把结果放入累加器。
例如: addc
a, MEM ;
结果: a ← a + MEM + C
受影响的标志位: Z:
『受影响』,
addc
M, a
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
将 RAM、累加器以及进位相加,然后把结果放入 RAM。
例如: addc
MEM, a ;
结果: MEM ← a + MEM + C
受影响的标志位: Z:
『受影响』,
addc
a
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
AC:『受影响』,
OV:『受影响』
将累加器与进位相加,然后把结果放入累加器。
例如: addc
a;
结果: a ← a + C
受影响的标志位: Z:
『受影响』,
C:
『受影响』
,
www.jsmsemi.com
第79页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
M
将 RAM 与进位相加,然后把结果放入 RAM。
例如:
addc
结果:
MEM ← MEM + C
MEM ;
受影响的标志位: Z:
『受影响』,
nadd
a, M
M, a
例如:
nadd
结果:
a ← 〒a + MEM
结果:
sub
M, a
subc
a, M
subc
M, a
AC:『受影响』,
nadd
MEM, a ;
MEM ←
〒MEM + a
OV:『受影响』
受影响的标志位: Z:
『受影响』, C:
『受影响』
, AC:『受影响』, OV:『受影响』
累加器减立即数据,然后把结果放入累加器。
例如: 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:
uc
a, M
C:
『受影响』
,
nd
sub
Z:
『受影响』,
JS
MI
CR
O
Se
mi
co
a, I
OV:『受影响』
a, MEM ;
将RAM的负逻辑(2补码)与累加器相加,然后把结果放入RAM。
例如:
sub
AC:『受影响』,
将累加器的负逻辑(2补码)与RAM相加,然后把结果放入累加器。
受影响的标志位:
nadd
C:
『受影响』
,
to
r
addc
subc
a
subc
M
RAM 减进位,然后把结果放入 RAM。
例如: subc
inc
M
MEM;
结果: MEM ← MEM - C
受影响的标志位: Z:
『受影响』,
RAM 加 1。
例如: inc
MEM ;
结果: MEM ← MEM + 1
『受影响』,
受影响的标志位: Z:
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
www.jsmsemi.com
第80页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
dec
M
RAM 减 1。
例如: dec
MEM;
结果: MEM ← MEM - 1
受影响的标志位: Z:
『受影响』,
clear
M
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
清除 RAM 为 0。
例如: clear
MEM ;
结果: MEM ← 0
C:
『不变』,
AC:『不变』
,
a
uc
7.3. 移位运算类指令
sr
累加器的位右移,位 7 移入值为 0。
例如:
OV:『不变』
to
r
受影响的标志位: Z:
『不变』
,
sr
a;
a
累加器的位右移,位 7 移入进位标志位。
例如: src
co
src
nd
结果: 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:『不变』
a;
M
RAM 的位右移,位 7 移入值为 0。
例如: sr
MEM ;
Se
sr
mi
结果: 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:『不变』
结果: 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 移入进位标志位。
MEM ;
CR
O
例如: src
结果: 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:『不变』
a
累加器的位左移,位 0 移入值为 0。
JS
MI
sl
例如: sl
a;
结果: a (b6,b5,b4,b3,b2,b1,b0,0) ← a (b7,b6,b5,b4,b3,b2,b1,b0), C ← a (b7)
受影响的标志位: Z:
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
slc
a
累加器的位左移,位 0 移入进位标志位。
例如: slc
a;
结果: a (b6,b5,b4,b3,b2,b1,b0,c) ← a (b7,b6,b5,b4,b3,b2,b1,b0), C ← a(b7)
受影响的标志位: Z:
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
sl
M
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)
受影响的标志位: Z:
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
slc
M
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)
受影响的标志位: Z:
『不变』
, C:
『受影响』
, AC:
『不变』
, OV:『不变』
www.jsmsemi.com
第81页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
swap
a
累加器的高 4 位与低 4 位互换。
例如: swap
a;
7.4. 逻辑运算类指令
a, I
累加器和立即数据执行逻辑 AND,然后把结果保存到累加器。
例如:and
uc
and
a, 0x0f ;
结果:a ← a & 0fh
受影响的标志位: Z:
『受影响』,
a, RAM10 ;
结果:a ← a & RAM10
受影响的标志位: Z:
『受影响』,
a, I
OV:『不变』
累加器和 RAM 执行逻辑 AND,然后把结果保存到 RAM。
例如:
and
结果:
MEM ← a & MEM
MEM, a ;
受影响的标志位: Z:
『受影响』,
or
AC:
『不变』
,
mi
C:
『不变』
,
Se
M, a
OV:『不变』
累加器和 RAM 执行逻辑 AND,然后把结果保存到累加器。
例如:and
and
AC:
『不变』
,
nd
a, M
C:
『不变』
,
co
and
to
r
结果: a (b3,b2,b1,b0,b7,b6,b5,b4) ← a (b7,b6,b5,b4,b3,b2,b1,b0)
受影响的标志位: Z:
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
累加器和立即数据执行逻辑 OR,然后把结果保存到累加器。
a, 0x0f ;
CR
O
例如: or
结果: a ← a | 0fh
受影响的标志位: Z:
『受影响』,
or
a, M
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
累加器和 RAM 执行逻辑 OR,然后把结果保存到累加器。
JS
MI
例如:or
a, MEM ;
结果:a ← a | MEM
受影响的标志位: Z:
『受影响』,
or
M, a
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
累加器和 RAM 执行逻辑 OR,然后把结果保存到 RAM。
例如: or
MEM, a ;
结果: MEM ← a | MEM
受影响的标志位: Z:
『受影响』,
xor
a, I
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
累加器和立即数据执行逻辑 XOR,然后把结果保存到累加器。
例如: xor
a, 0x0f ;
结果: a ← a ^ 0fh
受影响的标志位: Z:
『受影响』,
xor
IO, a
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
累加器和 IO 寄存器执行逻辑 XOR,然把结果存到 IO 寄存器。
例如:
xor
结果:
pa ← a ^ pa ;
pa, a ;
// pa 是 port A 资料寄存器
受影响的标志位: Z:
『不变』
,
C:
『不变』,
www.jsmsemi.com
AC:『不变』
,
OV:『不变』
第82页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
累加器和 RAM 执行逻辑 XOR,然后把结果保存到累加器。
例如:
xor
结果:
a ← a ^ RAM10
a, MEM ;
受影响的标志位: Z:
『受影响』,
xor
M, a
a
AC:
『不变』
,
OV:『不变』
累加器和 RAM 执行逻辑 XOR,然后把结果保存到 RAM。
例如:
xor
结果:
MEM ← a ^ MEM
MEM, a ;
受影响的标志位: Z:
『受影响』,
not
C:
『不变』
,
C:
『不变』
,
AC:
『不变』
,
累加器执行 1 补码运算,结果放在累加器。
例如: not
a;
a ← 〜a
结果:
受影响的标志位: Z:
『受影响』,
C:
『不变』
,
OV:『不变』
to
r
a, M
uc
xor
AC:
『不变』
,
应用范例:
OV:『不变』
a, 0x38 ;
// ACC=0X38
not
a;
// ACC=0XC7
co
mov
nd
------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------M
RAM 执行 1 补码运算,结果放在 RAM。
例如:
not
结果:
MEM ← 〜MEM
MEM ;
mi
not
C:
『不变』
,
Se
受影响的标志位: Z:
『受影响』,
应用范例:
AC:
『不变』
,
OV:『不变』
-----------------------------------------------------------------------------------------------------------------------a, 0x38 ;
mov
mem, a ;
CR
O
mov
// mem = 0x38
not
mem ;
// mem = 0xC7
-----------------------------------------------------------------------------------------------------------------------a
累加器执行 2 补码运算,结果放在累加器。
例如: neg
JS
MI
neg
a;
结果: a ←a 的 2 补码
受影响的标志位: Z:
『受影响』,
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
应用范例:
-----------------------------------------------------------------------------------------------------------------------mov
a, 0x38 ;
// ACC=0X38
neg
a;
// ACC=0XC8
------------------------------------------------------------------------------------------------------------------------
www.jsmsemi.com
第83页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
neg
M
RAM 执行 2 补码运算,结果放在 RAM。
例如: neg
MEM;
结果: MEM ←
MEM 的 2 补码
受影响的标志位: Z:
『受影响』,
C:
『不变』
,
AC:
『不变』
,
OV:『不变』
应用范例:
-----------------------------------------------------------------------------------------------------------------------a, 0x38 ;
mov
mem, a ;
// mem = 0x38
to
r
mov
not
mem ;
// mem = 0xC8
-----------------------------------------------------------------------------------------------------------------------a, M
比较累加器和 RAM 的内容。
例如: comp
a, MEM;
结果: 等效于( a - MEM ),并改变标志位 Flag。
Z:
『受影响』,
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
nd
受影响的标志位:
uc
comp
应用范例:
mov
mem, a ;
comp
a, mem ;
mov
a, 0x42 ;
mov
mem, a ;
mov
a, 0x38 ;
comp
a, mem ;
// Z 标志被设为 1
mi
a, 0x38 ;
Se
mov
co
------------------------------------------------------------------------------------------------------------------------
// C 标志被设为 1
-----------------------------------------------------------------------------------------------------------------------M, a
比较累加器和 RAM 的内容。
CR
O
comp
例如: comp
MEM, a;
结果: 等效于( MEM - a ),并改变标志位 Flag。
Z:
『受影响』,
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
JS
MI
受影响的标志位:
www.jsmsemi.com
第84页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
7.5. 位运算类指令
set0
IO.n
IO 口的位 N 拉低电位。
例如: set0
pa.5 ;
结果: PA5=0
受影响的标志位: Z:
『不变』
,
set1
IO.n
C:
『不变』,
AC:『不变』
,
C:
『不变』,
AC:『不变』
,
例如:set1
pb.5 ;
受影响的标志位: Z:
『不变』
,
IO 口的位 N 与 C 位互换。
例如:
swapc
结果:
C ← IO.0 , IO.0 ← C
IO.0;
当 IO.0 是输出端口,进位 C 数值给 IO.0;
『受影响』C
应用范例 1(连续输出) :
nd
当 IO.0 是输入端口,IO.0 数值给进位 C;
受影响的标志位: 『不变』Z
OV:『不变』
uc
IO.n
to
r
结果: PB5=1
swapc
OV:『不变』
IO 口的位 N 拉高电位。
『不变』AC
『不变』OV
co
-----------------------------------------------------------------------------------------------------------------------...
// 设置 PA.0 作为输出
pac.0 ;
mi
set1
...
swapc
set1
swapc
flag.1 ;
// C=0
// 送 C 给 PA.0 (位操作)
,PA.0=0
pa.0 ;
Se
set0
flag.1 ;
// C=1
// 送 C 给 PA.0 (位操作)
,PA.0=1
pa.0 ;
...
CR
O
-----------------------------------------------------------------------------------------------------------------------应用范例 2 (连续输入)
:
-----------------------------------------------------------------------------------------------------------------------...
JS
MI
set0
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
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:
『不变』
,
www.jsmsemi.com
第85页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
7.6. 条件运算类指令
ceqsn
a, I
比较累加器与立即数据,如果是相同的,即跳过下一指令。标志位的改变与 (a ← a - I)相同。
例如:
ceqsn
a, 0x55 ;
inc
MEM ;
goto
error ;
结果: 假如 a=0x55, then “goto error”; 否则, “inc MEM”.
受影响的标志位: Z:
『受影响』,
a, M
AC:『受影响』,
比较累加器与 RAM,如果是相同的,即跳过下一指令。标志位改变与 (a ← a - M)相同。
例如:ceqsn
a, MEM;
结果:假如 a=MEM,跳过下一个指令
受影响的标志位: Z:
『受影响』,
a, MEM;
结果: 如果 a≠MEM, 跳到下一条指令
受影响的标志位: Z:
『受影响』,
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
例如:
cneqsn
a,0x55 ;
inc
MEM ;
goto
error ;
co
比较累加器和立即数的值,如果不相等就跳到下一条指令.标志改变与(a ← a - I) 。
mi
a, I
OV:『受影响』
比较累加器和 RAM 的值,如果不相等就跳到下一条指令. 标志改变与(a ← a - M)相同。
例如: cneqsn
cneqsn
AC:『受影响』,
uc
a, M
C:
『受影响』
,
nd
cneqsn
OV:『受影响』
to
r
ceqsn
C:
『受影响』
,
结果:如果 a≠0x55, 然后 “goto error”; 否则, “inc MEM”.
受影响的标志位: Z:
『受影响』,
IO.n
Se
t0sn
C:
『受影响』
,
AC:『受影响』,
OV:『受影响』
如果 IO 的指定位是 0,跳过下一个指令。
例如:t0sn
pa.5;
CR
O
结果:如果 PA5 是 0,跳过下一个指令。
受影响的标志位: Z:
『不变』
,
t1sn
IO.n
C:
『不变』,
AC:『不变』
,
OV:『不变』
AC:『不变』
,
OV:『不变』
如果 IO 的指定位是 1,跳过下一个指令。
例如:t1sn
pa.5 ;
JS
MI
结果:如果 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:
C:
『受影响』
,
www.jsmsemi.com
AC:『受影响』,
OV:『受影响』
第86页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
累加器减 1,若累加器新值是 0,跳过下一个指令。
例如:
dzsn
结果:
a
←
a;
a – 1,若 a=0,跳过下一个指令。
受影响的标志位: Z:
『受影响』,
izsn
M
C:
『受影响』
,
M
例如:
izsn
结果:
MEM
MEM;
←
MEM + 1,若 MEM=0,跳过下一个指令。
C:
『受影响』
,
例如:
dzsn
结果:
MEM
MEM;
←
MEM - 1,若 MEM=0,跳过下一个指令。
C:
『受影响』
,
label
AC:『受影响』,
OV:『受影响』
函数调用,地址可以是全部空间的任一地址。
例如: 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:
I
ret
CR
O
ret
JS
MI
Se
mi
co
goto
OV:『受影响』
nd
7.7. 系统控制类指令
label
AC:『受影响』,
RAM 减 1,若 RAM 新值是 0,跳过下一个指令。
受影响的标志位: Z:
『受影响』,
call
OV:『受影响』
RAM 加 1,若 RAM 新值是 0,跳过下一个指令。
受影响的标志位: Z:
『受影响』,
dzsn
AC:『受影响』,
to
r
a
uc
dzsn
reti
nop
engint
允许全部中断。
例如:engint;
结果:中断要求可送到 FPP0,以便进行中断服务
受影响的标志位: Z:
『不变』
,
C:
『不变』,
www.jsmsemi.com
AC:『不变』
,
OV:『不变』
第87页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
a
目前的程序计数器加累加器是下一个程序计数器。
例如: pcadd a;
结果: pc ← pc + a
受影响的标志位: Z:
『不变』
, C:
『不变』, AC:『不变』
, OV:『不变』
应用范例:
-----------------------------------------------------------------------------------------------------------------------…
mov
a, 0x02 ;
pcadd
a;
// PC 10 欧电阻。
应尽量避免使用 PA5 作为输入。
(6) PA7 和 PA6 作为外部晶体振荡器。
PA7 和 PA6 设定为输入。
PA7 和
PA6 内部上拉电阻设为关闭。
用 PADIER 寄存器将
PA6 和 PA7 设为模拟输入。
EOSCR 寄存器位[6:5]选择对应的晶体振荡器频率:
01 : 低频,例如:32KHz
10 : 中频,例如:455KHz、1MHz
www.jsmsemi.com
第92页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
11 : 高频,例如:4MHz
设置 EOSCR.7 =1 启用晶体振荡器。
从 IHRC 或 ILRC 切换到 EOSC,要先确认 EOSC 已经稳定振荡。
注意:请务必仔细阅读 PMC-APN013 之内容,并据此合理使用晶体振荡器。如因用户的晶体振荡器的质量
不佳、使用条件不合理、PCB 清洁剂残留漏电、或是 PCB 板布局不合理等等用户原因,造成的慢起振或不
to
r
起振情况,我司不对此负责。
9.2.2. 中断
(1) 使用中断功能的一般步骤如下:
uc
步骤 1:设定 INTEN 寄存器,开启需要的中断的控制位。
步骤 2:清除 INTRQ 寄存器。
步骤 4:等待中断。中断发生后,跳入中断子程序。
步骤 5:当中断子程序执行完毕,返回主程序
nd
步骤 3:主程序中,使用 ENGINT 指令允许 CPU 的中断功能。
co
* 在主程序中,可使用 DISGINT 指令关闭所有中断
* 跳入中断子程序处理时,可使用 PUSHAF 指令来保存 ALU 和 FLAG 寄存器数据,
mi
并在 RETI 之前,使用 POPAF 指令复原。一般步骤如下:
void Interrupt (void)
// 中断发生后,跳入中断子程序
{
// 自动进入 DISGINT 的状态,CPU 不会再接受中断
Se
PUSHAF;
…
POPAF;
// 系统自动填入 RETI,直到执行 RETI 完毕才自动恢复到 ENGINT 的状态
CR
O
}
(2) INTEN,INTRQ 没有初始值,所以要使用中断前,一定要根据需要设定数值。
(3) 有两组 IO 口外部中断源,每组由程序选项(code option)中的 Interrupt Src0 和 Interrupt Src1 决定对应的中断
JS
MI
引脚。请根据寄存器 inten / intrq / integs 来选择 IO 引脚。
9.2.3. 系统时钟切换
利用 CLKMD 寄存器可切换系统时钟源。但必须注意,不可在切换系统时钟源的同时把原时钟源关闭。例如:
从 A 时钟源切换到 B 时钟源时,应该先用 CLKMD 寄存器切换系统时钟源,然后再透过 CLKMD 寄存器关闭 A
时钟源振荡器。
例:系统时钟从 ILRC 切换到 IHRC/2
CLKMD
=
CLKMD.2 =
0x36;
// 切到 IHRC,但 ILRC 不要 disable
0;
// 此时才可关闭 ILRC
错误的写法:ILRC 切换到 IHRC,同时关闭 ILRC
CLKMD
=
0x50;
// MCU 会死机
9.2.4. 看门狗
当 ILRC 关闭时,看门狗也会失效。
www.jsmsemi.com
第93页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
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 计数
to
r
改为每次数到 0x200/0x400/0x600/…时发生中断。两种设定 INTEGS 的方法各有好处,也请注意其中差异。
uc
9.2.6. IHRC
(1) IHRC 的校正操作是于使用 writer 烧录时进行的。
nd
(2) 因为 IC 的塑封材料(不论是封装用的或 COB 用的黑胶)的特牲,是会对 IHRC 的频率有一定影响。所以如
果用户是在 IC 盖上塑封材料前,就对 IC 进行烧录,及后再封上盖上塑封材料的,则可能造成 IHRC 的特性
co
偏移超出规格的情况。正常情况是频率会变慢一些。
(3) 此种情况通常发生在用户是使用 COB 封装,或者是委托我司进行晶圆代烧 (QTP)时。此情况下我司将不对
mi
频率的超出规格的情况负责。
(4) 用户可按自身经验进行一些补偿性调整,例如把 IHRC 的目标频率调高 0.5%-1%左右,令封装后 IC 的 IHRC
Se
频率更接近目标值。
9.2.7. LVR
JS
MI
作不正常。
CR
O
可以设定寄存器 MISC.2 为 1 将 LVR 关闭,但此时应确保 VDD 在 chip 最低工作电压以上,否则 IC 可能工
www.jsmsemi.com
第94页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
9.2.8. 烧录方法
请使用 PDK5S-P-003 进行烧录。PDK3S-P-002 或之前的 writer 版本皆已不支持烧录 PFS173。
离线烧录
可依照烧录器软件上的说明,连接 jumper 即可。
在线烧录
PFS173 可以支持在线烧录。在线烧录需要使用 PDK5S-P-003 上五根线:ICPCK(烧录时钟)、ICPDA(烧
CR
O
Se
mi
co
nd
uc
to
r
录数据)、VDD、GND 和 ICVPP(烧录电压),用于与 IC 上的 PA3、PA6、VDD、GND 和 PA5 相连。
JS
MI
上图为 PFS173 在线烧录时接线示意图。示意图中的 ☆可以是电阻或电容,用于隔离烧录接线和外围电
路,其条件如下表:
PFS173 接脚
电阻
电容
VDD / GND
---
≦0.1uF
PA3 / PA5 / PA6
≧10KΩ
≦220pF
同时,请依烧录器 PDK5S-P-003 的用户手册第 5-5 小节,设定只对烧录脚位做开短路测试 (O/S test)。
注意:
(1) 刻录时 PA5 电压高达 8V ,务必确认应用周边零件可承受电压。
(2) 其他刻录接脚的高压有可能 5.5V 以上。
(3) 若刻录 COB 板且板子使用 5.1V 稳压二极管而必须限制刻录 VDD,请务必在 writer 界面上选择『MTP
On-board VDD limitation』(请参考烧录器 PDK5S-P-003 的用户手册),但注意刻录时 VDD 最高仍
为 5.0V。
www.jsmsemi.com
第95页,共96页
PFS173
8 位 MTP 型单片机带 8 位 ADC
合封(MCP)或在板烧录(On-Board Writing)时的有关电压和电流的注意事项
(1) PA5 (VPP)可能高于 11V。
(2) VDD 可能高于 6.5V,而最大供给电流最高可达约 20mA。
(3) 其他烧录引脚(GND 除外)的电位与 VDD 相同。
请用户自行确认在使用本产品于合封或在板烧录时,周边电路及元件不会被上述电压破坏,也不会限制上述
to
r
电压。
PDK5S-I-S01/2(B) 支援 PFS173 MCU 仿真,如下是使用 PDK5S-I-S01/2 仿真 PFS173 的注意事项:
PDK5S-I-S01/2(B) 不支援指令 NMOV/SWAP/NADD/COMP。
PDK5S-I-S01/2(B) 不支援 SYSCLK=ILRC/16。
PDK5S-I-S01/2(B) 不支援动态设定 misc.4(仅适用 0 或者 1)
。
PDK5S-I-S01/2(B) 不支援 Tm2.gpcrs/Tm3.gpcrs。
PDK5S-I-S01/2(B) 不支援 ADCRGC [3:2]的 ADC channel F 的 band-gap 参考电压。仅存在稳定的
1.2V。
PDK5S-I-S01/2(B) 在使用 adcc 时,PC2 和 PC1 有不同的设置。
快速唤醒时间和使用 PDK5S-I-S01/2(B)仿真不同 (PDK5S-I-S01/2(B): 128 SysClk,PFS173: 45
ILRC)。
看门狗溢出时间和使用 PDK5S-I-S01/2(B)仿真不同,如下:
Se
mi
co
nd
CR
O
(1)
uc
9.3. 使用 ICE
PDK5S-I-S01/2(B)
PFS173
misc[1:0]=00
2048 * TILRC
8192 * TILRC
misc[1:0]=01
4096 * TILRC
16384 * TILRC
misc[1:0]=10
16384 * TILRC
65536 * TILRC
misc[1:0]=11
256 * TILRC
262144 * TILRC
JS
MI
WDT 溢出时间
PDK5S-I-S01/2(B) 不支援程序选项:PB4_PB5_Drive, GPC_PWM, TMx_source, PWM_Source 和
TMx_bit。
PDK5S-I-S01/2(B) 不支援 SuLED PWM 产生器及其他有关的寄存器。
PDK5S-I-S01/2(B) 只有 240 bytes 数据存储器。
PDK5S-I-S01/2(B) PCDIER 寄 存 器 不 同 于 实 际 IC 。 PDK5S-I-S01/2(B) 的 PCDIER[0] 用 于 设 定
PC0~PC3 的数字输入,PCDIER[1]用于设定 PC4~ PC7 的数字输入。建议不用设置 PCDIER。
当 PB1 在 ADCRGC 里使用时,PA1 需悬空。
当 GPCC 输出时,PA3 会受到影响。
www.jsmsemi.com
第96页,共96页