0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
PFS173-S14

PFS173-S14

  • 厂商:

    JSMICRO(杰盛微)

  • 封装:

    SOP-14

  • 描述:

    8位MTP型单片机带8位ADC

  • 数据手册
  • 价格&库存
PFS173-S14 数据手册
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页
PFS173-S14 价格&库存

很抱歉,暂时无法提供与“PFS173-S14”相匹配的价格&库存,您可以联系我们找货

免费人工找货