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

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
BS83B08A-3

BS83B08A-3

  • 厂商:

    HOLTEK(合泰)

  • 封装:

    SOP-16

  • 描述:

    CPU内核:RISC;CPU最大主频:-;程序存储容量:2KB;程序存储器类型:FLASH;RAM总容量:160Byte;GPIO端口数量:-;

  • 数据手册
  • 价格&库存
BS83B08A-3 数据手册
8-Bit 触控式 Flash 单片机 BS83B04A-4 BS83B08A-3/BS83B08A-4 BS83B12A-3/BS83B12A-4 BS83B16A-3/BS83B16A-4 版本 : V1.40 日期 : 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 目录 特性 .................................................................................................................................5 CPU 特性 ............................................................................................................................... 5 周边特性 ................................................................................................................................ 6 概述 .................................................................................................................................6 选型表 .............................................................................................................................7 方框图 .............................................................................................................................8 引脚图 .............................................................................................................................9 引脚说明 .......................................................................................................................10 极限参数 ......................................................................................................................14 直流电气特性 ...............................................................................................................14 交流电气特性 ...............................................................................................................17 上电复位特性 ...............................................................................................................18 系统结构 .......................................................................................................................18 时序和流水线结构 .............................................................................................................. 18 程序计数器 .......................................................................................................................... 19 堆栈 ..................................................................................................................................... 20 算术逻辑单元 – ALU .......................................................................................................... 20 Flash 程序存储器 .........................................................................................................21 结构 ..................................................................................................................................... 21 特殊向量 .............................................................................................................................. 21 查表 ...................................................................................................................................... 21 查表范例 .............................................................................................................................. 22 在线烧录 .............................................................................................................................. 23 片上调试 – OCDS................................................................................................................ 23 数据存储器 ...................................................................................................................24 结构 ...................................................................................................................................... 24 特殊功能寄存器描述 ...................................................................................................24 间接寻址寄存器 – IAR0,IAR1 ........................................................................................ 24 存储器指针 – MP0,MP1................................................................................................... 25 间接寻址程序范例 .............................................................................................................. 28 存储区指针 – BP ................................................................................................................. 28 累加器 – ACC ..................................................................................................................... 29 程序计数器低字节寄存器 – PCL ...................................................................................... 29 表格寄存器 – TBLP,TBHP,TBLH ................................................................................ 29 状态寄存器 – STATUS ........................................................................................................ 29 EEPROM 数据存储器 .................................................................................................31 EEPROM 数据存储器结构 ................................................................................................. 31 EEPROM 寄存器 ................................................................................................................. 31 从 EEPROM 中读取数据 .................................................................................................... 33 Rev.1.40 2 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 写数据到 EEPROM ............................................................................................................. 33 写保护 .................................................................................................................................. 33 EEPROM 中断 ..................................................................................................................... 33 编程注意事项 ...................................................................................................................... 34 程序举例 .............................................................................................................................. 34 振荡器 ...........................................................................................................................35 振荡器概述 .......................................................................................................................... 35 系统时钟配置 ...................................................................................................................... 35 内部高速 RC 振荡器 – HIRC ............................................................................................. 36 内部低速 RC 振荡器 – LIRC .............................................................................................. 36 工作模式和系统时钟 ...................................................................................................36 系统时钟 .............................................................................................................................. 36 控制寄存器 .......................................................................................................................... 37 系统工作模式 ...................................................................................................................... 39 工作模式切换 ...................................................................................................................... 40 静态电流的注意事项 .......................................................................................................... 43 唤醒 ...................................................................................................................................... 43 编程注意事项 ...................................................................................................................... 44 看门狗定时器 ...............................................................................................................44 看门狗定时器时钟源 .......................................................................................................... 44 看门狗定时器控制寄存器 .................................................................................................. 44 看门狗定时器操作 .............................................................................................................. 46 复位和初始化 ...............................................................................................................47 复位功能 .............................................................................................................................. 47 复位初始状态 ...................................................................................................................... 50 输入 / 输出端口 ............................................................................................................58 上拉电阻 .............................................................................................................................. 59 PA 口唤醒 ........................................................................................................................... 60 输入 / 输出端口控制寄存器 ............................................................................................... 61 引脚重置功能 ...................................................................................................................... 62 输入 / 输出引脚结构 ........................................................................................................... 63 编程注意事项 ..................................................................................................................... 63 定时 / 计数器 ................................................................................................................64 配置定时 / 计数器输入时钟源 .......................................................................................... 64 定时 / 计数寄存器 – TMR .................................................................................................. 64 定时 / 计数控制寄存器 – TMRC ........................................................................................ 65 定时器操作 .......................................................................................................................... 66 预分频器 .............................................................................................................................. 66 编程注意事项 ...................................................................................................................... 66 触摸按键功能 ...............................................................................................................67 触摸按键结构 ...................................................................................................................... 67 触摸按键寄存器描述 .......................................................................................................... 67 触摸按键操作 ...................................................................................................................... 74 Rev.1.40 3 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 触摸按键中断 ...................................................................................................................... 77 编程注意事项 ...................................................................................................................... 77 串行接口模块 – SIM ....................................................................................................77 SPI 接口 ............................................................................................................................... 77 I2C 接口 ................................................................................................................................ 83 中断 ...............................................................................................................................94 中断寄存器 .......................................................................................................................... 94 中断操作 .............................................................................................................................. 98 外部中断 .............................................................................................................................. 99 时基中断 .............................................................................................................................. 99 定时 / 计数器中断 ............................................................................................................. 100 EEPROM 中断 ................................................................................................................... 100 触控按键中断 .................................................................................................................... 100 SIM 中断 ( 除 BS83B04A-4 外 )....................................................................................... 101 I2C 中断 (BS83B04A-4)..................................................................................................... 101 中断唤醒功能 .................................................................................................................... 101 编程注意事项 .................................................................................................................... 101 应用电路 .....................................................................................................................102 指令集介绍 .................................................................................................................103 简介 .................................................................................................................................... 103 指令周期 ............................................................................................................................ 103 数据的传送 ........................................................................................................................ 103 算术运算 ............................................................................................................................ 103 逻辑和移位运算 ................................................................................................................ 103 分支和控制的转换 ............................................................................................................ 104 位运算 ................................................................................................................................ 104 查表运算 ............................................................................................................................ 104 其它运算 ............................................................................................................................ 104 指令集概要 .................................................................................................................105 惯例 .................................................................................................................................... 105 指令定义 .....................................................................................................................108 封装信息 .....................................................................................................................120 8-pin SOP(150mil) 外形尺寸 ............................................................................................ 121 10-pin MSOP 外形尺寸 ..................................................................................................... 122 16-pin NSOP(150mil) 外形尺寸........................................................................................ 123 16-pin SSOP(150mil) 外形尺寸 ........................................................................................ 124 20-pin SOP(300mil) 外形尺寸 .......................................................................................... 125 20-pin SSOP(150mil) 外形尺寸 ........................................................................................ 126 24-pin SOP(300mil) 外形尺寸 .......................................................................................... 127 24-pin SSOP(150mil) 外形尺寸 ........................................................................................ 128 Rev.1.40 4 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 特性 CPU 特性 ● 工作电压: ♦ BS83B04A-4 – fSYS=8MHz:2.2V~5.5V ♦ BS83B08A-3/BS83B12A-3/BS83B16A-3 – fSYS=8MHz:2.7V~5.5V – fSYS=12MHz:2.7V~5.5V – fSYS=16MHz:4.5V~5.5V ♦ BS83B08A-4/BS83B12A-4/BS83B16A-4 – fSYS=8MHz:2.2V~5.5V – fSYS=12MHz:2.7V~5.5V – fSYS=16MHz:4.5V~5.5V ● VDD=5V,系统时钟为 16MHz 时,指令周期为 0.25μs ● 集成 4/8/12/16 触摸按键功能 -- 不需要增加外接元件 ● 暂停和唤醒功能,以降低功耗 ● 集成高 / 低速内部振荡器 ♦ 低速 – 32kHz ♦ 高速 – 8MHz,12MHz,16MHz ● 多种工作模式:正常模式,低速模式,空闲模式和休眠模式 ● 所有指令都可在 1 个或 2 个指令周期内完成 ● 查表指令 ● 63 条功能强大的指令系统 ● 多达 4 层堆栈 ● 位操作指令 Rev.1.40 5 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 周边特性 ● Flash 程序存储器:2K×16 ● 数据存储器:128×8~288×8 ● EEPROM 存储器:32×8~64×8 ● 看门狗定时器功能 ● 多达 22 个双向 I/O 口 ● 与 I/O 口复用的外部中断输入 ● 一个 8 位定时 / 计数器 ● 一个时基功能,用于产生固定时间的中断信号 ● I2C 适用于该系列所有单片机,SPI 适用于除 BS83B04A-4 外的单片机 ● 低电压复位功能 ● 4/8/12/16 个触控按键 ● 大电流 LED 驱动 概述 该系列单片机是一款 8 位具有高性能精简指令集且完全集成触摸按键功能的 Flash 单片机。此系列单片机含有触摸按键功能和可多次编程的 Flash 存储器特 性,为各种触摸按键的应用提供了一种简单而又有效的实现方法。 触摸按键功能完全集成于单片机内,使用较少的外部元件便可实现触摸按键的 应用。该系列单片机除了 Flash 程序存储器,还包括 RAM 数据存储器和用于存 储串列数据、校准数据等非易失性数据的 EEPROM 存储器。内部看门狗定时器 和低电压保护功能具有良好的抗噪声和抗 ESD 保护功能,确保单片机在恶劣的 电气环境中仍能保持稳定的操作。 该系列单片机内部集成了高 / 低速振荡器,在应用中不需增加外部元件。动态 切换高低系统时钟的能力,为用户提供了优化单片机操作和降低功耗的能力。 通过内部 I2C 和 SPI 接口,可方便与外部 MCU 之间的通讯,I/O 灵活、8-bit 定 时器和其它特性增强了该系列单片机的功能和灵活性。 该系列触摸按键单片机能广泛应用于各种触摸按键产品中,例如仪器仪表,家 用电器,电子控制工具等等。 Rev.1.40 6 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 选型表 该系列单片机的大多特性都相同,他们的主要不同之处在于输入 / 输出引脚个 数和触摸按键。以下表格概述了每款单片机的主要特性。 型号 BS83B04A-4 BS83B08A-3 BS83B08A-4 BS83B12A-3 BS83B12A-4 BS83B16A-3 BS83B16A-4 型号 内部 时钟 VDD 系统 时钟 程序 存储器 数据 数据 输入 / LED 大电 存储器 EEPROM 输出口 流输出 8MHz 2.2V~ 5.5V 8MHz 2K×16 128×8 32×8 8 — 2.7V~ 5.5V 8MHz~ 16MHz 2K×16 160×8 64×8 14 — 2.2V~ 5.5V 8MHz~ 16MHz 2K×16 160×8 64×8 14 — 2.7V~ 5.5V 8MHz~ 16MHz 2K×16 288×8 64×8 18 18 2.2V~ 5.5V 8MHz~ 16MHz 2K×16 288×8 64×8 18 18 2.7V~ 5.5V 8MHz~ 16MHz 2K×16 288×8 64×8 22 22 2.2V~ 5.5V 8MHz~ 16MHz 2K×16 288×8 64×8 22 22 8MHz 12MHz 16MHz 8MHz 12MHz 16MHz 8MHz 12MHz 16MHz 8MHz 12MHz 16MHz 8MHz 12MHz 16MHz 8MHz 12MHz 16MHz 8位 触摸按 SPI/ 时基 定时器 键个数 I2C LVR 堆栈 封装形式 BS83B04A-4 1 1 4 1 2.10V 4 BS83B08A-3 1 1 8 1 2.55V 4 BS83B08A-4 1 1 8 1 2.10V 4 BS83B12A-3 1 1 12 1 2.55V 4 BS83B12A-4 1 1 12 1 2.10V 4 BS83B16A-3 1 1 16 1 2.55V 4 BS83B16A-4 1 1 16 1 2.10V 4 Rev.1.40 7 正印 10MSOP/ 8SOP 16NSOP/ SSOP 16NSOP/ SSOP BS83B04A-4 20SOP/ BS83B04A-4 (for 8SOP) SSOP 83B04A4 (for 10MSOP) 20SOP/ SSOP 24SOP/ SSOP 24SOP/ SSOP 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 方框图   ‚ ƒ                                                      …       ­           „     €  ­                                                     …                       注:I2C 适用于该系列所有单片机,SPI 适用于除 BS83B04A-4 外的单片机。 Rev.1.40 8 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 引脚图 10 1 8 VDD VDD PA5/Key1 1 PA5/Key1 2 9 PA1/Key2 PA3/Key3 2 7 VSS PA1/Key2 3 8 PA0/INT/SCL/ICPDA 3 6 PA2/SDA/ICPCK PA3/Key3 4 7 PA6/[INT] PA4/Key4 4 5 PA0/INT/SCL/ICPDA PA4/Key4 5 6 PA7 BS83B04A-4 8 SOP-A VSS PA2/SDA/ICPCK BS83B04A-4 10 MSOP-A NC 1 16 NC PB0/KEY1 1 16 PA1/SDO VDD 2 15 PB1/KEY2 2 15 PA4/INT PA5/Key1 3 14 VSS PA2/SDA/ICPCK/OCDSCK PB2/KEY3 3 14 PA3/SCS PA1/Key2 PA3/Key3 4 13 PB3/KEY4 4 13 PA0/SDI/SDA/ICPDA/OCDSDA 5 12 PA0/INT/SCL/ICPDA/OCDSDA PA6/[INT] PB4/KEY5 5 12 PA2/SCK/SCL/ICPCK/OCDSCK PA4/Key4 6 11 PA7 PB5/KEY6 6 11 PA7 NC OCDSCK 7 10 NC PB6/KEY7 7 10 VDD/AVDD 8 9 OCDSDA PB7/KEY8 8 9 AVSS/VSS BS83B08A-3/BS83B08A-4/83V08AV15 16 NSOP-A/SSOP-A BS83BV04A 16 NSOP-A PB0/KEY1 1 24 PA1/SDO PB1/KEY2 2 23 PA4/INT PB0/KEY1 1 20 PA1/SDO PB2/KEY3 3 22 PA3/SCS PB1/KEY2 2 19 PA4/INT PB3/KEY4 4 21 PA0/SDI/SDA/ICPDA/OCDSDA PB2/KEY3 3 18 PA3/SCS PB4/KEY5 5 20 PA2/SCK/SCL/ICPCK/OCDSCK PB3/KEY4 4 17 PA0/SDI/SDA/ICPDA/OCDSDA PB5/KEY6 6 19 PA7 PB4/KEY5 5 16 PA2/SCK/SCL/ICPCK/OCDSCK PB6/KEY7 7 18 VDD/AVDD PB5/KEY6 6 15 PA7 PB7/KEY8 8 17 AVSS/VSS PB6/KEY7 7 14 VDD/AVDD PC0/KEY9 9 16 PC7/KEY16 PB7/KEY8 8 13 AVSS/VSS PC1/KEY10 10 15 PC6/KEY15 PC0/KEY9 9 12 PC3/KEY12 PC2/KEY11 11 14 PC5/KEY14 PC1/KEY10 10 11 PC2/KEY11 PC3/KEY12 12 13 PC4/KEY13 BS83B12A-3/BS83B12A-4/BS83V12A 20 SOP-A/SSOP-A BS83B16A-3/BS83B16A-4/BS83V16A 24 SOP-A/SSOP-A 注:OCDSDA 和 OCDSCK 引脚用于 OCDS 功能,ICPDA 和 ICPCK 引脚用于 ICP 功能。 Rev.1.40 9 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 引脚说明 下表中列出了每个引脚的功能,而每个引脚功能的细节将在文中其它章节有详 细的描述。 BS83B04A-4 引脚名称 功能 PA0/INT/SCL/ ICPDA/ OCDSDA PA1/KEY2 PA2/SDA/ ICPCK/ OCDSCK PA3/KEY3 PA4/KEY4 PA5/KEY1 PA6/[INT] PA7 VDD VSS OPT PAWU PA0 PAPU INTEG INT SFS SCL IICC0 ICPDA — OCDSDA — PAWU PA1 PAPU KEY2 TKM0C1 PAWU PA2 PAPU SDA — ICPCK — OCDSCK — PAWU PA3 PAPU KEY3 TKM0C1 PAWU PA4 PAPU KEY4 TKM0C1 PAWU PA5 PAPU KEY1 TKM0C1 PAWU PA6 PAPU INTEG INT SFS PAWU PA7 PAPU VDD — VSS — I/T ST ST 说明 通用 I/O 口,可通过寄存器设置上拉电阻 CMOS 和唤醒功能 O/T — 外部中断 ST NMOS I2C 时钟 ST CMOS 在线烧录数据 / 地址引脚 ST CMOS 片上调试地址 / 数据引脚,仅用于 EV 芯片 通用 I/O 口,可通过寄存器设置上拉电阻 ST CMOS 和唤醒功能 NSI — 触控按键输入口 通用 I/O 口,可通过寄存器设置上拉电阻 ST CMOS 和唤醒功能 ST NMOS I2C 数据 ST — 在线烧录时钟输入引脚 ST — 片上调试时钟输入引脚,仅用于 EV 芯片 通用 I/O 口,可通过寄存器设置上拉电阻 ST CMOS 和唤醒功能 NSI — 触控按键输入口 通用 I/O 口,可通过寄存器设置上拉电阻 ST CMOS 和唤醒功能 NSI — 触控按键输入口 通用 I/O 口,可通过寄存器设置上拉电阻 ST CMOS 和唤醒功能 NSI — 触控按键输入口 通用 I/O 口,可通过寄存器设置上拉电阻 ST CMOS 和唤醒功能 ST — ST CMOS PWR PWR — — 外部中断 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 电源 * 地 ** 注:I/T:输入类型; O/T:输出类型 OP:通过寄存器选择; PWR:电源 ST:斯密特触发输入; CMOS:CMOS 输出 NMOS:NMOS 输出; NSI:非标准输入 *:VDD 是单片机电源电压,而 AVDD 是触控按键电路电源电压。AVDD 与 VDD 在内部是同一个引脚。 **:VSS 是单片机地引脚,而 AVSS 是触控按键电路地引脚。AVSS 与 VSS 在内部是同一个引脚。 Rev.1.40 10 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 BS83B08A-3/BS83B08A-4 引脚名称 功能 OP PAWU PA0 PAPU PA0/SDI/ SDI — SDA/ ICPDA/ SDA — OCDSDA ICPDA — OCDSDA — PAWU PA1 PAPU PA1/SDO SDO SIMC0 PAWU PA2 PAPU PA2/SCK/ SCK SIMC0 SCL/ ICPCK/ SCL SIMC0 OCDSCK ICPCK — OCDSCK — PAWU PA3 PAPU PA3/SCS SCS SIMC0 PAWU PA4 PAPU PA4/INT INT INTEG PAWU PA7 PA7 PAPU PBPU PB0/KEY1~ PB0~PB3 PB3/KEY4 KEY1~KEY4 TKM0C1 PBPU PB4/KEY5~ PB4~PB7 PB7/KEY8 KEY5~KEY8 TKM1C1 VDD VDD — AVDD — AVDD VSS VSS — AVSS — AVSS I/T O/T ST CMOS ST ST ST ST — NMOS CMOS CMOS ST CMOS — CMOS ST CMOS ST ST ST ST CMOS NMOS — — ST CMOS ST CMOS ST CMOS ST — ST CMOS ST CMOS NSI — ST CMOS NSI — PWR — PWR — PWR — PWR — 说明 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 数据输入 I2C 数据 在线烧录数据 / 地址引脚 片上调试地址 / 数据引脚,仅用于 EV 芯片 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 数据输出 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 串行时钟 I2C 时钟 在线烧录时钟输入引脚 片上调试时钟输入引脚,仅用于 EV 芯片 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 从机选择 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 外部中断 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 通用 I/O 口,可通过寄存器设置上拉电阻 触摸按键输入口 通用 I/O 口,可通过寄存器设置上拉电阻 触摸按键输入口 电源电压 * 触控按键电路电源电压 * 地 ** 触控按键电路地 ** 注:I/T:输入类型 O/T:输出类型 OP:通过设置寄存器来选择功能 PWR:电源 ST:斯密特触发输入 CMOS:CMOS 输出 NMOS:NMOS 输出 NSI:无标准输入 *:VDD 是单片机电源电压,而 AVDD 是触控按键电路电源电压。AVDD 与 VDD 相连。 **:VSS 是单片机地引脚,而 AVSS 是触控按键电路地引脚。AVSS 与 VSS 相连。 Rev.1.40 11 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 BS83B12A-3/BS83B12A-4 引脚名称 功能 OP PAWU PA0 PAPU PA0/SDI/ SDI — SDA/ ICPDA/ SDA — OCDSDA ICPDA — OCDSDA — PAWU PA1 PAPU PA1/SDO SDO SIMC0 PAWU PA2 PAPU PA2/SCK/ SCK SIMC0 SCL/ ICPCK/ SCL SIMC0 OCDSCK ICPCK — OCDSCK — PAWU PA3 PAPU PA3/SCS SCS SIMC0 PAWU PA4 PAPU PA4/INT INT INTEG PAWU PA7 PA7 PAPU PBPU PB0/KEY1~ PB0~PB3 PB3/KEY4 KEY1~KEY4 TKM0C1 PBPU PB4/KEY5~ PB4~PB7 PB7/KEY8 KEY5~KEY8 TKM1C1 PCPU PC0/KEY9~ PC0~PC3 PC3/KEY12 KEY9~KEY12 TKM2C1 VDD VDD — AVDD — AVDD VSS VSS — AVSS — AVSS I/T O/T ST CMOS ST ST ST ST — NMOS CMOS CMOS ST CMOS — CMOS ST CMOS ST ST ST ST CMOS NMOS — — ST CMOS ST CMOS ST CMOS ST — ST CMOS ST CMOS NSI — ST CMOS NSI — ST CMOS NSI — PWR — PWR — PWR — PWR — 说明 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 数据输入 I2C 数据 在线烧录数据 / 地址引脚 片上调试地址 / 数据引脚,仅用于 EV 芯片 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 数据输出 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 串行时钟 I2C 时钟 在线烧录时钟输入引脚 片上调试时钟输入引脚,仅用于 EV 芯片 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 从机选择 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 外部中断 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 通用 I/O 口,可通过寄存器设置上拉电阻 触摸按键输入口 通用 I/O 口,可通过寄存器设置上拉电阻 触摸按键输入口 通用 I/O 口,可通过寄存器设置上拉电阻 触摸按键输入口 电源电压 * 触控按键电路电源电压 * 地 ** 触控按键电路地 ** 注:I/T:输入类型; O/T:输出类型 OP:通过设置寄存器来选择功能 PWR:电源; ST:斯密特触发输入 CMOS:CMOS 输出 NMOS:NMOS 输出 NSI:无标准输入 *:VDD 是单片机电源电压,而 AVDD 是触控按键电路电源电压。AVDD 与 VDD 相连。 **:VSS 是单片机地引脚,而 AVSS 是触控按键电路地引脚。AVSS 与 VSS 相连。 Rev.1.40 12 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 BS83B16A-3/BS83B16A-4 引脚名称 功能 OP PAWU PA0 PAPU SDI — PA0/SDI/ SDA/ICPDA/ SDA — OCDSDA ICPDA — OCDSDA — I/T O/T ST CMOS ST ST ST — NMOS CMOS ST CMOS PAWU ST CMOS PAPU SDO SIMC0 — CMOS PAWU ST CMOS PA2 PAPU PA2/SCK/ SCK SIMC0 ST CMOS SCL/ICPCK/ SCL SIMC0 ST NMOS OCDSCK ICPCK — ST — OCDSCK — ST — PAWU PA3 ST CMOS PAPU PA3/SCS SCS SIMC0 ST CMOS PAWU PA4 ST CMOS PAPU PA4/INT INT INTEG ST — PAWU PA7 ST CMOS PA7 PAPU PB0~PB3 PBPU ST CMOS PB0/KEY1~ PB3/KEY4 KEY1~KEY4 TKM0C1 NSI — PB4~PB7 PBPU ST CMOS PB4/KEY5~ PB7/KEY8 KEY5~KEY8 TKM1C1 NSI — PC0~PC3 PCPU ST CMOS PC0/KEY9~ KEY9~ PC3/KEY12 TKM2C1 NSI — KEY12 PC4~PC7 PCPU ST CMOS PC4/KEY13~ KEY13~ PC7/KEY16 TKM3C1 NSI — KEY16 VDD VDD — PWR — AVDD — PWR — AVDD PWR — VSS VSS — AVSS — PWR — AVSS PA1/SDO PA1 说明 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 数据输入 I2C 数据 在线烧录数据 / 地址引脚 片上调试地址 / 数据引脚, 仅用于 EV 芯片 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 数据输出 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 串行时钟 I2C 时钟 在线烧录时钟输入引脚 片上调试时钟输入引脚,仅用于 EV 芯片 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 SPI 从机选择 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 外部中断 通用 I/O 口,可通过寄存器设置上拉电阻 和唤醒功能 通用 I/O 口,可通过寄存器设置上拉电阻 触摸按键输入口 通用 I/O 口,可通过寄存器设置上拉电阻 触摸按键输入口 通用 I/O 口,可通过寄存器设置上拉电阻 触摸按键输入口 通用 I/O 口,可通过寄存器设置上拉电阻 触摸按键输入口 电源电压 * 触控按键电路电源电压 * 地 ** 触控按键电路地 ** 注:I/T:输入类型; O/T:输出类型; OP:通过设置寄存器来选择功能 PWR:电源; ST:斯密特触发输入 CMOS:CMOS 输出; NMOS:NMOS 输出; NSI:无标准输入 *:VDD 是单片机电源电压,而 AVDD 是触控按键电路电源电压。AVDD 与 VDD 相连。 **:VSS 是单片机地引脚,而 AVSS 是触控按键电路地引脚。AVSS 与 VSS 相连。 Rev.1.40 13 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 极限参数 电源供应电压 .................................................................................VSS-0.3V~VSS+6.0V 端口输入电压 ................................................................................VSS-0.3V~VDD+0.3V 储存温度 ....................................................................................................-50˚C~125˚C 工作温度 ......................................................................................................-40˚C~85˚C IOL 总电流.............................................................................................................. 80mA IOH 总电流 ............................................................................................................ -80mA 总功耗 ................................................................................................................ 500mW 注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在 上述标示范围外的工作状态,而且若长期在标示范围外的条件下工作,可能影响芯片的 可靠性。 直流电气特性 Ta=25˚C 符号 参数 工作电压 (HIRC) (BS83B08A-3/BS83B12A-3 /BS83B16A-3) VDD 工作电压 (HIRC) (BS83B08A-4/BS83B12A-4 /BS83B16A-4) 工作电压 (HIRC) (BS83B04A-4) IDD1 工作电流 (HIRC) (fSYS=fH, fS=fSUB=fLIRC) (BS83B08A-3/BS83B12A-3 /BS83B16A-3/BS83B08A-4 /BS83B12A-4/BS83B16A-4) 工作电流 (HIRC) (fSYS=fH, fS=fSUB=fLIRC) (BS83B04A-4) Rev.1.40 VDD 测试条件 条件 fSYS=8MHz 最小 典型 最大 单位 2.7 — 5.5 — fSYS=12MHz 2.7 — 5.5 fSYS=16MHz 4.5 2.2 2.7 4.5 — 5.5 — 5.5 — 5.5 — 5.5 V V V V V V 2.2 — 5.5 V — — — — — — — 1.2 mA 0.8 1.8 3.3 2.4 5.0 3.0 6.0 1.2 — 1.6 2.4 mA fSYS=8MHz — fSYS=12MHz fSYS=16MHz — fSYS=8MHz 3V 5V 3V 5V 3V 5V 3V 无负载 , fH=8MHz WDT 使能 无负载 , fH=12MHz WDT 使能 无负载 , fH=16MHz WDT 使能 无负载 , fH=8MHz 5V WDT 使能 14 2.2 1.6 3.3 2.0 4.0 mA mA mA mA mA mA 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 符号 参数 VDD 无负载 , fH=12MHz, fL=fH/2, WDT 使能 最小 典型 最大 单位 — — — — — — — — — — — — 1.2 mA 1.5 2.0 3.3 1.5 2.7 1.4 2.4 1.2 2.3 1.2 2.3 1.2 2.3 — 50 100 μA 5V — 70 150 μA 工作电流 (HIRC) (fSYS=fL=fLIRC, fS=fSUB=fLIRC) (BS83B04A-4) 3V 无负载 , WDT 使能 , 5V LVR 使能 — 10 20 μA — 30 50 μA ISTB1 IDLE 模式静态电流 (HIRC) (fSYS=fH, fS=fSUB=fLIRC) — 0.9 mA — 1.4 1.4 2.1 IDLE 模式静态电流 (HIRC) (fSYS=off, fS=fSUB=fLIRC) — 40 80 μA ISTB2 3V 无负载 , 系统 HALT, 5V WDT 使能 , fSYS=12MHz 3V 无负载 , 系统 HALT, WDT 使能 , fSYS=12MHz, 5V LVR 使能 3V 无负载 , 系统 HALT, WDT 使能 , 5V fSYS=12MHz/64 3V 无负载 , 系统 HALT, WDT 使能 , 5V fSYS=12MHz/64, LVR 使能 3V 无负载 , 系统 HALT, 5V WDT 使能 , fSYS=32kHz — 50 100 μA — 0.7 1.1 mA — 1.4 2.1 mA — 40 80 μA — 50 100 μA — 1.9 μA — 3.3 4.0 7.0 3V 无负载 , 系统 HALT, WDT 使能 , fSYS=32kHz, 5V LVR 使能 — 40 80 μA — 50 100 μA ISTB7 SLEEP 模式静态电流 (LIRC) 3V 无负载 , 系统 HALT, (fSYS=off, fS=fSUB=fLIRC) 5V WDT 使能 , fSYS=32kHz — 1.3 μA — 2.4 ISTB8 SLEEP 模式静态电流 ( 仅适用于 BS83B04A-4) — 1.5 — 3.0 3.0 5.0 3.0 5.0 IDD2 IDD3 ISTB3 ISTB4 工作电流 (HIRC) (fSYS=fL, fS=fSUB=fLIRC) 工作电流 (LIRC) (fSYS=fL=fLIRC, fS=fSUB=fLIRC) (BS83B08A-3/BS83B12A-3 /BS83B16A-3/BS83B08A-4 /BS83B12A-4/BS83B16A-4) IDLE 模式静态电流 (HIRC) (fSYS=fL, fS=fSUB=fLIRC) IDLE 模式静态电流 (HIRC) (fSYS=off, fS=fSUB=fLIRC) ISTB5 IDLE 模式静态电流 (LIRC) (fSYS=fL=fLIRC, fS=fSUB=fLIRC) ISTB6 IDLE 模式静态电流 (LIRC) (fSYS=off, fS=fSUB=fLIRC) Rev.1.40 3V 5V 3V 5V 3V 5V 3V 5V 3V 5V 3V 5V 测试条件 条件 3V 3V 5V 无负载,fH=12MHz, fL=fH/4, WDT 使能 无负载 , fH=12MHz, fL=fH/8, WDT 使能 无负载 , fH=12MHz, fL=fH/16, WDT 使能 无负载 , fH=12MHz, fL=fH/32, WDT 使能 无负载 , fH=12MHz, fL=fH/64, WDT 使能 2.2 1.0 1.8 0.9 1.6 0.8 1.5 0.8 1.5 0.8 无负载 , WDT 使能 , LVR 使能 无负载 , WDT 使能 15 mA mA mA mA mA mA mA mA mA mA mA mA μA μA μA μA 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 符号 参数 ISTB9 IDLE0 模式静态电流 ( 仅适用于 BS83B04A-4) ISTB10 IDLE1 模式静态电流 ( 仅适用于 BS83B04A-4) VIL 输入 / 输出口或输入引脚低 电平输入电压 VIH 输入 / 输出口或输入引脚高 电平输入电压 VLVR ILVR IOL IOH RPH 低电压复位电压 (BS83B08A-3/BS83B12A-3 /BS83B16A-3) 低电压复位电压 (BS83B04A-4/BS83B08A-4 /BS83B12A-4/BS83B16A-4) 低电压复位电流 VDD 3V 5V 测试条件 条件 无负载 , fSUB on — — — 5.0 5.0 10.0 360 500 600 800 — 1.5 — 0.2VDD — 5.0 — VDD 3.0 μA μA μA 3V 无负载 , fSUB on, 5V fSUB=fLIRC=8MHz 5V — — 5V — — — 0 0 3.5 0.8VDD — LVR 使能 , 2.55V -5% 2.55 +5% V — LVR 使能 , 2.10V -5% 2.10 +5% V — 4 10 62 8 20 90 — — μA mA mA 8 16 — mA 16 32 — mA -2 -5 -4 -10 — — mA mA -3.75 -7.5 — mA -7.5 -15 — mA 20 60 100 10 30 50 kΩ kΩ — LVR 使能 3V 输入 / 输出口灌电流 VOL=0.1VDD (BS83B08A-3/BS83B08A-4) 5V 输入 / 输出口灌电流 3V (BS83B12A-3/BS83B16A-3 VOL=0.1VDD /BS83B04A-4/BS83B12A-4 5V /BS83B16A-4) 3V 输入 / 输出口源电流 VOH=0.9VDD (BS83B08A-3/BS83B08A-4) 5V 输入 / 输出口源电流 3V (BS83B12A-3/BS83B16A-3 VOH=0.9VDD /BS83B04A-4/BS83B12A-4 5V /BS83B16A-4) 3V — 上拉电阻 ( 输入 / 输出口 ) 5V — Rev.1.40 最小 典型 最大 单位 16 μA V V V V 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 交流电气特性 Ta=25˚C 符号 fSYS 参数 系统时钟 (HIRC) fTIMER 定时器输入频率 fLIRC tINT tLVR tEERD tEEWR tRSTD tSST 系统时钟 (32kHz) 中断脉冲宽度 低电压复位宽度 EEPROM 读时间 EEPROM 写时间 系统复位延迟时间 ( 上电复位 , LVR 硬件复 位 LVR 软件复位 , WDT 软件复位 ) 系统复位延迟时间 (WDT 溢出硬件冷复位 ) 系统启动时间 ( 从 HALT 中唤醒, HALT 时,fSYS off) 系统启动时间 ( 低速模式 ↔ 正常模式 ) 系统启动时间 ( 从 HALT 中唤醒, HALT 时,fSYS on) 系统启动时间 (WDT 溢出硬件冷复位 ) I2C 标准模式 fSYS=100kHz fI2C I2C 快速模式 fSYS=400kHz VDD 3V/5V 测试条件 条件 Ta=25˚C 2.7V~5.5V 2.7V~5.5V — 4.5V~5.5V 5V Ta=25˚C — — — — — — — — 最小 典型 最大 单位 -2% -2% -2% — — — -10% 1 60 1 1 8 12 16 — — — 32 — 120 2 2 +2% +2% +2% 8 12 16 +10% — 240 4 4 MHz MHz MHz MHz MHz MHz kHz μs μs tSYS ms — — 25 50 100 ms — — 8.3 16.7 33.3 ms — fSYS = fHIRC ~ fHIRC/64 16 — — tHIRC — fSYS = fLIRC 2 — — tLIRC — fHIRC off → on (HTO=1) 16 — — tHIRC — fSYS = fHIRC ~ fHIRC/64 2 — — tHIRC — fSYS = fLIRC 2 — — tLIRC 0 — — tH 2 4 8 5 10 20 — — — — — — — — — — — — MHz MHz MHz MHz MHz MHz — — — — — — — — 无去抖系统时钟 2 个去抖系统时钟 4 个去抖系统时钟 无去抖系统时钟 2 个去抖系统时钟 4 个去抖系统时钟 注:1. tSYS=1/fSYS 2. 为了保持内部 HIRC 振荡器频率的准确性,需要在 VDD 和 VSS 之间接入一个 0.1μF 的去耦电容, 并且尽可能地靠近单片机。 3. 当电源电压小于 3V 时,16MHz 不可用。 Rev.1.40 17 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 上电复位特性 符号 参数 VPOR 上电复位电压 RRVDD 上电复位电压速率 VDD 保持为 VPOR 的最小时间 tPOR  VDD — — — 测试条件 条件 — — — 最小 典型 最大 单位 — 0.035 1 — — — 100 — — mV V/ms ms                  系统结构 内部系统结构是盛群单片机具有良好性能的主要因素。由于采用 RISC 结构, 该系列单片机具有高运算速度和高性能的特点。通过流水线的方式,指令的取 得和执行同时进行,此举使得除了跳转和调用指令外,其它指令都能在一个指 令周期内完成。8 位 ALU 参与指令集中所有的运算,它可完成算术运算、逻辑 运算、移位、递增、递减和分支等功能,而内部的数据路径则是以通过累加器 或 ALU 的方式加以简化。有些寄存器在数据存储器中被实现,且可以直接或间 接寻址。简单的寄存器寻址方式和结构特性,确保了在提供具有最大可靠度和 灵活性的实用性 I/O 控制系统时,仅需要少数的外部器件。这些特性使得该系 列单片机适用于低成本,大批量生产的控制应用。 时序和流水线结构 主系统时钟由内部 RC 振荡器提供,它被细分为 T1~T4 四个内部产生的非重 叠时序。在 T1 时间,程序计数器自动加一并抓取一条新的指令。剩下的时间 T2~T4 完成译码和执行功能,因此,一个 T1~T4 时间周期构成一个指令周期。 虽然指令的抓取和执行发生在连续的指令周期,但单片机流水线结构会保证指 令在一个指令周期内被有效执行。除非程序计数器的内容被改变,如子程序的 调用或跳转,在这种情况下指令将需要多一个指令周期的时间去执行。 Rev.1.40 18 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机                                                                                                                                          系统时序和流水线 如果指令牵涉到分支,例如跳转或调用等指令,则需要两个指令周期才能完成 指令执行。需要一个额外周期的原因是程序先用一个周期取出实际要跳转或调 用的地址,再用另一个周期去实际执行分支动作,因此用户需要特别考虑额外 周期的问题,尤其是在执行时间要求较严格的时候。 1 MOV A,[12H] 2 CALL DELAY 3 CPL [12H] 4 : 5 : 6 DELAY: NOP Fetch Inst. 1 Execute Inst. 1 Fetch Inst. 2 Execute Inst. 2 Fetch Inst. 3 Flush Pipeline Fetch Inst. 6 Execute Inst. 6 Fetch Inst. 7 指令捕捉 程序计数器 在程序执行期间,程序计数器用来指向下一个要执行的指令地址。除了 “JMP” 和“CALL”指令需要跳转到一个非连续的程序存储器地址之外,它会在每条 指令执行完成以后自动加一。然而只有较低的 8 位,即所谓的程序低字节寄存 器 PCL,可以被用户直接读写。 当执行的指令要求跳转到不连续的地址时,如跳转指令、子程序调用、中断或 复位等,单片机通过加载所需要的位址到程序寄存器来控制程序,对于条件跳 转指令,一旦条件符合,在当前指令执行时取得的下一条指令将会被舍弃,而 由一个空指令周期来取代。 程序计数器的低字节,即程序计数器的低字节寄存器 PCL,可以通过程序控制, 且它是可以读取和写入的寄存器。通过直接写入数据到这个寄存器,一个程序 短跳转可直接执行,然而只有低字节的操作是有效的,跳转被限制在存储器的 当前页中,即 256 个存储器地址范围内,当这样一个程序跳转要执行时,会插 入一个空指令周期。PCL 的使用可能引起程序跳转,因此需要额外的指令周期。 程序计数器 程序计数器高字节 PCL 寄存器 PC10~PC8 PCL7~PCL0 程序计数器 Rev.1.40 19 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 堆栈 堆栈是一个特殊的存储器空间,用来保存程序计数器中的值。该系列单片机含 有 4 层堆栈。堆栈寄存器既不是数据存储器的一部分,也不是程序存储器的一 部分,而且它既不能读出,也不能写入。堆栈的使用是通过堆栈指针 SP 来指 示的,堆栈指针也不能读出或写入。当发生子程序调用或中断响应时,程序计 数器中的内容会被压入堆栈;在子程序调用结束或中断响应结束时,执行指令 RET 或 RETI,堆栈将原先压入堆栈的内容弹出,重新装入程序计数器中。在 系统复位后,堆栈指针会指向堆栈顶部。 P ro g ra m T o p o f S ta c k S ta c k L e v e l 1 S ta c k L e v e l 2 S ta c k P o in te r B o tto m C o u n te r S ta c k L e v e l 3 o f S ta c k S ta c k L e v e l 4 P ro g ra m M e m o ry 如果堆栈已满,且有非屏蔽的中断发生,则只有中断请求标志位会被置位,而 中断响应会被禁止,直到堆栈指针发生递减 ( 执行 RET 或 RETI 指令 ),中断才 会被响应。这个特性提供程序设计者简单的方法来预防堆栈溢出。然而即使堆 栈已满,CALL 指令仍然可以执行,从而造成堆栈溢出。使用时应避免堆栈溢 出的情况发生,因为这样会造成不可预期的程序分支指令的执行错误。 如果堆栈溢出,第一个保存在堆栈中的 PC 会丢失。 算术逻辑单元 – ALU 算术逻辑单元是单片机中很重要的部分,执行指令集中的算术和逻辑运算。 ALU 连接到单片机的数据总线,在接收相关的指令码后执行需要的算术与逻辑 运算,并将结果储存在指定的寄存器,当 ALU 计算或操作时,可能导致进位、 借位或其它状态的改变,而相关的状态寄存器会因此更新内容以显示这些改变, ALU 所提供的功能如下: ● 算术运算:ADD、ADDM、ADC、ADCM、SUB、SUBM、SBC、SBCM、 DAA ● 逻辑运算:AND、OR、XOR、ANDM、ORM、XORM、CPL、CPLA ● 移位运算:RRA、RR、RRCA、RRC、RLA、RL、RLCA、RLC ● 递增和递减:INCA、INC、DECA、DEC ● 分支判断:JMP、SZ、SZA、SNZ、SIZ、SDZ、SIZA、SDZA、CALL、 RET、RETI Rev.1.40 20 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 Flash 程序存储器 程序存储器用来存放用户代码即存储程序。该系列单片机提供可多次编程的存 储器 (Flash),用户可以很方便的在同一个芯片中修改他们的应用代码。通过使 用合适的编程工具,该系列 Flash 型单片机提供用户以灵活的方式自由开发他 们的应用,这对于需要除错或需要经常升级和改变程序的产品是很有帮助的。 结构 程序存储器的容量为 2K×16。程序存储器用程序计数器来寻址,其中也包含数 据、表格和中断入口,数据表格可以设定在程序存储器的任何地址,由表格指 针来寻址。 特殊向量 程序存储器中某些地址保留用作诸如复位和中断的入口等特殊用途。000H 是保 留用做单片机复位后的程序起始地址。在芯片初始化后,程序将会跳转到这个 地址并开始执行。                                   Flash 程序存储器结构 查表 程序存储器中的任何地址都可以定义为一个表格,以便存储固定的数据。使用 表格时,表格指针必须先行设定,其方式是将表格的地址放在表格指针寄存器 TBLP 和 TBHP 中。这两个寄存器定义的是表格总的地址。 在设定完表格指针后,表格数据可以使用“TABRD [m]”或“TABRDL [m]” 指令从程序存储器中查表来读取。当这些指令执行时,程序存储器的表格的低 字节,将会传输到用户所指定的数据存储器 [m] 中。程序存储器表格的高字节, 将会传输到特殊寄存器 TBLH 中。传输数据中任何未定义的字节将会读取为 “0”。 下图为查表寻址 / 数据流程图: Program Memory Address Last Page or TBHP Register TBLP Register Rev.1.40 Data 16 bits Register TBLH User Selected Register High Byte Low Byte 21 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 指令 b10 b9 TABRDC [m] @10 @9 1 TABRDL [m] 1 b8 @8 1 b7 @7 @7 表格地址位 b6 b5 b4 @6 @5 @4 @6 @5 @4 b3 @3 @3 b2 @2 @2 b1 @1 @1 b0 @0 @0 表格地址 注:b10~b0:表格地址位 @7~@0:表格指针 (TBLP) 位 @10~@8:表格指针 (TBHP) 位 查表范例 以下范例说明在芯片中表格指针和表格数据如何被定义和执行。这个实例使用 的表格数据用 ORG 伪指令储存在存储器的最后一页,在此 ORG 伪指令中的值 为“700H”,即 2K 程序存储器最后一页存储器的起始地址,而表格指针的初 始值则为“06H”,这可保证从数据表格读取的第一笔数据位于程序存储器地 址“706H”,即最后一页起始地址后的第 6 个地址。注意,假如“TABRD [m]” 指令被使用,则表格指针指向当前页。在这个例子中,表格数据的高字节等于 零,而当“TABRD [m]”指令被执行时,此值将会自动的被传送到 TBLH 寄存 器。 因为 TBLH 寄存器是只读寄存器,不能重新储存,若主程序和中断服务程序都 使用表格读取指令,应该注意它的保护。使用表格读取指令,中断服务程序可 能会改变 TBLH 的值,若随后在主程序中再次使用这个值,则会发生错误。因 此建议避免同时使用表格读取指令。然而在某些情况下,如果同时使用表格读 取指令是不可避免的,则在执行任何主程序的表格读取指令前,中断应该先除 能,另外要注意,所有与表格相关的指令,都需要两个指令周期去完成操作。 表格读取程序范例 tempreg1 db ? ; tempreg2 db ? ; : : mov a,06h ; mov tblp, a ; mov a,07h ; mov tbhp,a : : tabrd tempreg1 ; ; ; dec tblp ; tabrd tempreg2 ; ; ; ; ; : : org 700h ; temporary register #1 temporary register #2 initialise low table pointer - note that this address is referenced initialise high table pointer transfers value in table referenced by table pointer data at program memory address “706H” transferred to tempreg1 and TBLH reduce value of table pointer by one transfers value in table referenced by table pointer data at program memory address “705H” transferred to tempreg2 and TBLH, in this example the data “1AH” is transferred to tempreg1 and data “0FH” to register tempreg2 sets initial address of program memory dc 00Ah, 00Bh, 00Ch, 00Dh, 00Eh, 00Fh, 01Ah, 01Bh : : Rev.1.40 22 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 在线烧录 Flash 型程序存储器提供用户便利地对同一芯片进行程序的更新和修改。 另外,HOLTEK 单片机提供 4 线接口的在线编程方式。用户可将进行过编程或 未经过编程的单片机芯片连同电路板一起制成,最后阶段进行程序的更新和程 序的烧写,在无需去除或重新插入芯片的情况下方便地保持程序为最新版。 MCU 在线编程 引脚名称 PA0 PA2 VDD VSS Holtek Writer 引脚名称 ICPDA ICPCK VDD VSS 功能 串行地址和数据 — 读 / 写 串行时钟输入 电源 (5.0V) 地 芯片内部程序存储器和 EEPROM 存储器都可以通过 4 线的接口在线进行编程。 其中 PA0 用于数据串行下载或上传、PA2 用于串行时钟、两条用于提供电源。 芯片在线烧写的详细使用说明超出此文档的描述范围,将由专门的参考文献提 供。 在编程过程中,编程器控制 PA0 和 PA2 脚进行数据和时钟编程,用户必须确保 这两个引脚没有连接至其它输出脚。 W r ite r C o n n e c to r S ig n a ls M C U W r ite r _ V D D V D D IC P D A P A 0 IC P C K P A 2 W r ite r _ V S S V S S * P r o g r a m m in g P in s * T o o th e r C ir c u it 注:* 可能为电阻或电容。若为电容则其必须小于 1nF,若为电阻则其值必须大于 1kΩ。 片上调试 – OCDS EV 芯片用于单片机仿真。此 EV 芯片提供片上调试功能 (OCDS) 用于开发过程 中的单片机调试。除了片上调试功能,单片机和 EV 芯片在功能上几乎是兼容 的。用户可将 OCDSDA 和 OCDSCK 引脚连接至 Holtek HT-IDE 开发工具,从 而实现 EV 芯片对单片机的仿真。OCDSDA 引脚为 OCDS 数据 / 地址输入 / 输 出脚,OCDSCK 引脚为 OCDS 时钟输入脚。当用户用 EV 芯片进行调试时,单 片机 OCDSDA 和 OCDSCK 引脚上的其它共用功能对 EV 芯片无效。由于这两 个 OCDS 引脚与 ICP 引脚共用,因此在线烧录时仍用作 Flash 存储器烧录引脚。 关于 OCDS 功能的详细描述,请参考“Holtek e-Link for 8-bit MCU OCDS 使用 手册”文件。 Rev.1.40 23 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 Holtek e-Link 引脚 EV 芯片引脚 OCDSDA OCDSDA OCDSCK OCDSCK VDD VDD GND VSS 引脚描述 片上调试数据 / 地址输入 / 输出 片上调试时钟输入 电源 地 数据存储器 数据存储器是内容可以更改的 8 位 RAM 内部存储器,用来存储临时数据。 结构 数据存储器分为两个部分,第一部分是特殊功能寄存器,这些寄存器有特定的 地址且与单片机的正确操作密切相关。大多特殊功能寄存器都可在程序控制下 直接读取和写入,而有些是被加以保护而不对用户开放。 第二部分是通用数据存储器,所有地址都可在程序的控制下进行读取和写入。 该系列单片机总的数据存储器被分为两个区。大部分特殊功能数据寄存器均可 在所有 Bank 被访问,处于“40H”地址的 EEC 寄存器却只能在 Bank 1 中被访 问到。切换不同区域可通过设置区域指针 (BP) 实现。所有单片机的数据存储器 的起始地址都是“00H”。 单片机型号 BS83B04A-4 BS83B08A-3 BS83B08A-4 BS83B12A-3 BS83B12A-4 BS83B16A-3 BS83B16A-4 容量 128×8 Bank 0 60H~FFH Bank 1 E0H~FFH 160×8 60H~FFH — 288×8 60H~FFH 80H~FFH 288×8 60H~FFH 80H~FFH 通用数据存储器 特殊功能寄存器描述 大部分特殊功能寄存器的细节将在相关功能中描述,但有几个寄存器在此章节 单独描述。 间接寻址寄存器 – IAR0,IAR1 间接寻址寄存器 IAR0 和 IAR1,位于数据存储区,并没有实际的物理地址。间 接寻址方式是使用间接寻址寄存器和存储器指针对数据操作,以取代定义在实 际存储器地址的直接存储器寻址方式。在间接寻址寄存器 (IAR0 和 IAR1) 上的 任何动作,将对间接寻址指针 (MP0 或 MP1) 所指定的存储器地址产生对应的读 / 写操作。IAR0 和 MP0,IAR1 和 MP1 对数据存储器中数据的操作是成对出现 的,MP0 和 IAR0 用于访问 Bank 0,而 MP1 和 IAR1 可访问所有的 Bank。间接 寻址寄存器不是实际存在的,直接读取将会返回 00H 的结果,而直接写入此寄 存器则不做任何操作。 Rev.1.40 24 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 存储器指针 – MP0,MP1 该系列单片机提供两个存储器指针,即 MP0 和 MP1。由于这些指针在数据存 储器中能像普通的寄存器一样被写入和操作,因此提供了一个有效的寻址和数 据追踪的方法。当对间接寻址寄存器进行任何操作时,单片机所指向的实际地 址是由存储器指针所指定的地址。MP0 和 IAR0 用于访问 Bank 0,而 MP1 和 IAR1 可访问所有的 Bank。注意,对于该系列单片机,存储器指针 MP0 和 MP1 为 8 位寄存器,常与 IAR0、IAR1 搭配一起对数据存储器寻址。 Bank 0 Bank 0,1 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 10H 11H 12H 13H 14H 15H 16H 17H 18H 19H 1AH 1BH 1CH 1DH 1EH 1FH 20H 21H 22H 23H 24H 25H 26H 27H 28H 29H 2AH 2BH 2CH 2DH 2EH 2FH IAR0 MP0 IAR1 MP1 BP ACC PCL TBLP TBLH TBHP STATUS SMOD CTRL INTEG INTC0 INTC1 SFS Unused Unused LVRC PA PAC PAPU PAWU Unused Unused WDTC TBC TMR TMRC Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused 30H 31H 32H 33H 34H 35H 36H 37H 38H 39H 3AH 3BH 3CH 3DH 3EH 3FH 40H 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH 50H 51H 52H 53H 54H 55H 56H 57H 58H 59H 5AH 5BH 5CH 5DH 5EH 5FH Bank 1 Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused EEC EEA EED TKTMR TKC0 TK16DL TK16DH TKC1 TKM016DL TKM016DH TKM0ROL TKM0ROH TKM0C0 TKM0C1 Unused Unused IICC0 IICC1 IICD IICA I2CTOC Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Unused Special Purpose Data Memory – BS83B04A-4 特殊功能数据存储器 – BS83B04A-4 Rev.1.40 25 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        特殊功能数据存储器 – BS83B08A-3/BS83B08A-4/BS83B12A-3/BS83B12A-4 Rev.1.40 26 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              特殊功能数据存储器 – BS83B16A-3/BS83B16A-4                                                                                                                        通用数据存储器 以下范例说明如何清除一个具有 4 个 RAM 地址的区块,它们已经事先被定义 成地址 adres1 到 adres4。 Rev.1.40 27 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 间接寻址程序范例 data . section ‘data’ adres1 db ? adres2 db ? adres3 db ? adres4 db ? block db ? code. section at 0 code org 00h start: mov a,04h mov block,a mov a,offset adres1 mov mp0,a loop: clr IAR0 inc mp0 sdz block jmp loop continue: ;setup size of block ; Accumulator loaded with first RAM address ; setup memory pointer with first RAM address ; clear the data at address defined by MP0 ; increment memory pointer ; check if last memory location has been cleared 在以上的例子中,没有提及具体的数据存储器地址。 存储区指针 – BP 该系列单片机数据存储器被分为两个部分,即 Bank 0 和 Bank 1。可以通过设置 存储区指针(Bank Pointer)值来访问不同的数据存储区。位 0 用来选择数据存 储器 Bank 0~1。 复位后,数据存储器会初始化到 Bank 0,但是在暂停模式下的 WDT 溢出复位, 不会改变通用数据存储器的存储区号。应该注意的是特殊功能数据存储器不受 存储区的影响,也就是说,不论是在哪一个存储区,都能对特殊功能寄存器进 行读写操作。数据存储器的直接寻址总是访问 Bank 0,不影响存储区指针的值。 要访问除 Bank 0 外的其它 Bank,则必须要使用间接寻址方式。 BP 寄存器 Bit Name R/W POR Rev.1.40 7 — — — 6 — — — 5 — — — 4 — — — Bit 7~1 未定义,读为“0” Bit 0 DMBP0:数据存储区选择 0:Bank 0 1:Bank 1 28 3 — — — 2 — — — 1 — — — 0 DMBP0 R/W 0 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 累加器 – ACC 对于任何单片机来说,累加器是相当重要的,且与 ALU 所完成的运算有密切 关系,所有的 ALU 得到的运算结果都将暂存在累加器中,如果没有累加器, ALU 必须在每次进行如加法、减法和移位等运算时,将结果写入数据存储器中, 这样会造成程序编写和时间的负担。另外,数据传输通常涉及到累加器的临时 储存功能,如在用户定义的寄存器和另一个寄存器之间,由于两者之间的不能 直接传送数据,因此需要通过累加器来传送数据。 程序计数器低字节寄存器 – PCL 为了提供额外的程序控制功能,程序计数器的低字节被设置在数据存储器的特 殊功能区域,程序员可对此寄存器进行操作,很容易直接跳转到其它程序地址。 直接给 PCL 寄存器赋值将导致程序直接跳转到专用程序存储器某一地址,然 而,由于寄存器只有 8 位的长度,因此只允许在本页的程序存储器中跳转。注 意,使用这种运算时,会插入一个空指令周期。 表格寄存器 – TBLP,TBHP,TBLH 这三个特殊功能寄存器对存储在程序存储器中的表格进行操作。TBLP 和 TBHP 为表格指针,指向表格的地址。它的值必须在任何表格读取指令执行前加以设 定。由于它的值可以被如 INC 或 DEC 的指令所改变,这就提供了一种简单的 方法对表格数据进行读取。表格读取数据指令执行之后,表格数据高字节存储 在 TBLH 中。其中要注意的是,表格数据低字节会被传送到用户指定的地址。 状态寄存器 – STATUS 这 8 位寄存器包括零标志位 (Z)、进位标志位 (C)、辅助进位标志位 (AC)、溢出 标志位 (OV),暂停标志位 (PDF)、和看门狗溢出标志位 (TO)。这些标志位同时 记录单片机的状态数据和算术 / 逻辑运算。 除了 TO 和 PDF 标志位以外,状态寄存器的其它位像其它大多数寄存器一样可 以被改变。但是任何数据写入状态寄存器将不会改变 TO 和 PDF 标志位。另外, 执行不同指令操作后,与状态寄存器相关的运算将会得到不同的结果。TO 标志 位只会受系统上电、看门狗溢出、或执行“CLR WDT”或“HALT”指令的影响。 PDF 指令只会受执行“HALT”或“CLR WDT”指令或系统上电的影响。 Z、OV、AC 和 C 标志位通常反映最近的运算操作的状态。 ● C:当加法运算的结果产生进位,或减法运算的结果没有产生借位时,则 C 被置位,否则 C 被清零,同时 C 也会被带进位的移位指令所影响。 ● AC:当低半字节加法运算的结果产生进位,或低半字节减法运算的结果没有 产生借位时,AC 被置位,否则 AC 被清零。 ● Z: 当算术或逻辑运算结果是零时,Z 被置位,否则 Z 被清零。 ● OV:当运算结果高两位的进位状态异或结果为 1 时,OV 被置位,否则 OV 被清零。 ● PDF:系统上电或执行“CLR WDT”指令会清零 PDF,而执行“HALT”指 令则会置位 PDF。 ● TO:系统上电或执行“CLR WDT”或“HALT”指令会清零 TO,而当 WDT 溢出则会置位 TO。 另外,当进入一个中断程序或执行子程序调用时状态寄存器将不会自动压入到 堆栈中保存。假如状态寄存器的内容很重要,且中断子程序会改变状态寄存器 的内容,则需要保存备份以备恢复。注意,状态寄存器的 0~3 位可以读取和写入。 Rev.1.40 29 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 状态寄存器 Bit Name R/W POR 7 — — — 6 — — — 5 TO R 0 4 PDF R 0 3 OV R/W x 2 Z R/W x 1 AC R/W x 0 C R/W x “x”表示未知 Rev.1.40 Bit 7~6 未定义,读为“0” Bit 5 TO:看门狗溢出标志位 0:系统上电或执行“CLR WDT”或“HALT”指令 1:WDT 溢出 Bit 4 PDF:暂停标志位 0:系统上电或执行“CLR WDT”指令 1:执行“HALT”指令将会置位 PDF 位。 Bit 3 OV :溢出标志位 0:不发生溢出时 1:当运算结果高两位的进位状态异或结果为 1 时 Bit 2 Z:零标志位 0:算数运算或逻辑运算的结果不为零时 1:算数运算或逻辑运算的结果为零时 Bit 1 AC:辅助进位标志位 0:没有辅助进位时 1:当低字节的加法造成进位或低字节的减法没有造成借位时 Bit 0 C:进位标志位 0:没有进位时 1:当加法造成进位或减法没有造成借位时,同时移位指令也会影响 C 标志位 C 也受循环移位指令的影响。 30 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 EEPROM 数据存储器 该系列单片机内建 EEPROM 数据存储器。“Electrically Erasable Programmable Read Only Memory”为电可擦可编程只读存储器,由于其非易失性的存储结构, 即使在电源掉电的情况下存储器内的数据仍然保存完好。通过 EEPROM 数据存 储器,可以给设计者提供一个全新的主机应用。应用 EEPROM 的存储功能使得 该系列单片机可以用来存储产品编号、校准值、用户特定数据、系统配置参数 或其它产品信息等。读取和写数据到 EEPROM 存储器的过程已经变得很容易。 EEPROM 数据存储器结构 该系列单片机内部 EEPROM 数据寄存器容量为 64×8 位。由于映射方式与程序 存储器和数据存储器不同,因此不能像其它类型的存储器一样寻址。使用 Bank 0 中的一个地址和数据寄存器以及 Bank 1 中的一个控制寄存器,可以实现对 EEPROM 的单字节读写操作。 单片机 BS83B04A-4 BS83B08A-3 BS83B08A-4 BS83B12A-3 BS83B12A-4 BS83B16A-3 BS83B16A-4 容量 32×8 地址 00H~1FH 64×8 00H~3FH 64×8 00H~3FH 64×8 00H~3FH EEPROM 寄存器 有三个寄存器控制内部 EEPROM 数据存储器总的操作。地址寄存器 EEA、数 据寄存器 EED 及控制寄存器 EEC。EEA 和 EED 位于 Bank 0 中,它们能像其它 特殊功能寄存器一样直接被访问。EEC 位于 Bank 1 中,不能被直接访问,仅能 通过 MP1 和 IAR1 进行间接读取或写入。由于 EEC 控制寄存器位于 Bank 1 中 的“40H”,在 EEC 寄存器上的任何操作被执行前,MP1 必须先设为“40H”, BP 被设为“01H”。 单片机 BS83B04A-4 其它型号 所有型号 寄存器 名称 EEA EEA EED EEC 位 7 — — D7 — 6 — — D6 — 5 — D5 D5 — 4 D4 D4 D4 — 3 D3 D3 D3 WREN 2 1 D2 D1 D2 D1 D2 D1 WR RDEN 0 D0 D0 D0 RD EEPROM 控制寄存器列表 Rev.1.40 31 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 EEA 寄存器 – BS83B04A-4 Bit Name R/W POR 7 — — — 6 — — — 5 — — — Bit 7~5 未定义,读为“0” Bit 4~0 数据 EEPROM 地址 数据 EEPROM 地址 Bit 4~Bit 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 4 — — — 3 WREN R/W 0 2 WR R/W 0 1 RDEN R/W 0 0 RD R/W 0 EEA 寄存器 – 除 BS83B04A-4 外 Bit Name R/W POR 7 — — — 6 — — — 5 D5 R/W 0 Bit 7~6 未定义,读为“0” Bit 5~0 数据 EEPROM 地址 数据 EEPROM 地址 Bit 5~Bit 0 EEC 寄存器 Bit Name R/W POR 7 — — — 6 — — — 5 — — — Bit 7~4 未定义,读为“0” Bit 3 WREN:数据 EEPROM 写使能位 0:除能 1:使能 此位为数据 EEPROM 写使能位,向数据 EEPROM 写操作之前需将此位置高。 将此位清零时,则禁止向数据 EEPROM 写操作。 Bit 2 WR:EEPROM 写控制位 0:写周期结束 1:写周期有效 此位为数据 EEPROM 写控制位,由应用程序将此位置高将激活写周期。写周期 结束后,硬件自动将此位清零。当 WREN 未先置高时,此位置高无效。 Bit 1 RDEN:数据 EEPROM 读使能位 0:除能 1:使能 此位为数据 EEPROM 读使能位,向数据 EEPROM 读操作之前需将此位置高。 将此位清零时,则禁止向数据 EEPROM 读操作。 Bit 0 RD:EEPROM 读控制位 0:读周期结束 1:读周期有效 此位为数据 EEPROM 读控制位,由应用程序将此位置高将激活读周期。读周期 结束后,硬件自动将此位清零。当 RDEN 未首先置高时,此位置高无效。 注:在同一条指令中 WREN、WR、RDEN 和 RD 不能同时置为“1”。WR 和 RD 不能同时 置为“1”。 Rev.1.40 32 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 EED 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 数据 EEPROM 数据 数据 EEPROM 数据 Bit 7~Bit 0 从 EEPROM 中读取数据 从 EEPROM 中读取数据,EEC 寄存器中的读使能位 RDEN 先置为高以使能读 功能,EEPROM 中读取数据的地址要先放入 EEA 寄存器中。若 EEC 寄存器中 的 RD 位被置高,一个读周期将开始。若 RD 位已置为高而 RDEN 位还未被设 置则不能开始读操作。若读周期结束,RD 位将自动清除为“0”,数据可以从 EED 寄存器中读取。数据在其它读或写操作执行前将一直保留在 EED 寄存器 中。应用程序将轮询 RD 位以确定数据可以有效地被读取。 写数据到 EEPROM 写数据至 EEPROM,EEPROM 中写入数据的地址要先放入 EEA 寄存器中, 写入的数据需存入 EED 寄存器中。EEC 寄存器中的写使能位 WREN 先置为高 以使能写功能。此后, EEC 寄存器中 WR 位须立即被置为高,以初始化一个 写周期。若 WR 位已置为高而 WREN 位还未被设置则不能开始写操作。由于 控制 EEPROM 写周期是一个内部时钟,与单片机的系统时钟异步,所以数据 写入 EEPROM 的时间将有所延迟。可通过轮询 EEC 寄存器中的 WR 位或判断 EEPROM 中断以侦测写周期是否完成。若写周期完成,WR 位将自动清除为 “0”,通知用户数据已写入 EEPROM。因此,应用程序将轮询 WR 位以确定 写周期是否结束。 写保护 防止误写入的写保护有以下几种。单片机上电后控制寄存器中的写使能位将被 清除以杜绝任何写入操作。上电后 BP 将重置为“0”,这意味着数据存储区 Bank 0 被选中。由于 EEPROM 控制寄存器位于 Bank 1 中,这增加了对写操作 的保护措施。在正常程序操作中确保控制寄存器中的写使能位被清除将能防止 不正确的写操作。 EEPROM 中断 EEPROM 写周期结束后将产生 EEPROM 写中断,需先通过设置相关中断寄存 器的 DEE 位使能 EEPROM 中断。当 EEPROM 写周期结束,DEF 中断请求标 志位将被置位。若 EEPROM 中断使能且堆栈未满的情况下将跳转到相应的中断 向量中执行。当中断被响应,EEPROM 中断标志将自动复位。更多细节将在中 断章节讲述。 Rev.1.40 33 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 编程注意事项 必须注意的是数据不会无意写入 EEPROM。在没有写动作时写使能位被正常清 零可以增强保护功能。BP 指针也可以正常清零以阻止进入 EEPROM 控制寄存 器存在的 Bank 1。尽管没有必要,写一个简单的读回程序以检查新写入的数据 是否正确还是应该考虑的。 写数据时,WREN 位置高后,WR 位须立即置为高,以确保写周期的正确执行。 写周期执行前,总中断控制位应清除,写周期开始后再重新使能该控制位。 程序举例 从 EEPROM 中读取数据 — 轮询法 MOV A, EEPROM_ADRES MOV EEA, A MOV A, 040H MOV MP1, A MOV A, 01H MOV BP, A SET IAR1.1 SET IAR1.0 BACK: SZ IAR1.0 JMP BACK CLR IAR1 CLR BP MOV A, EED MOV READ_DATA, A ; user defined address ; setup memory pointer MP1 ; MP1 points to EEC register ; setup Bank Pointer ; set RDEN bit, enable read operations ; start Read Cycle - set RD bit ; check for read cycle end ; disable EEPROM write ; move read data to register 写数据到 EEPROM — 轮询法 CLR EMI MOV A, EEPROM_ADRES MOV EEA, A MOV A, EEPROM_DATA MOV EED, A MOV A, 040H MOV MP1, A MOV A, 01H MOV BP, A SET IAR1.3 SET IAR1.2 SET EMI BACK: SZ IAR1.2 JMP BACK CLR IAR1 CLR BP Rev.1.40 ; user defined address ; user defined data ; setup memory pointer MP1 ; MP1 points to EEC register ; setup Bank Pointer ; set WREN bit, enable write operations ; Start Write Cycle-set WR bit ; check for write cycle end ; disable EEPROM write 34 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 振荡器 不同的振荡器选择可以让使用者在不同的应用需求中实现更大范围的功能。振 荡器的灵活性使得在速度和功耗之间可以达到最优化。振荡器选项是通过寄存 器来完成的。 振荡器概述 该系列单片机有两个内部振荡器,一个低速振荡器和一个高速振荡器。它们都 可以作为系统时钟源,低速振荡器还可以作为看门狗定时器,时基功能和定 时 / 计数器的时钟源。集成的两个内部振荡器不需要任何外接器件。所有振荡 器选项通过寄存器设置。较高频率的振荡器提供更高的性能,但要求有更高的 功率,反之亦然。动态切换快慢系统时钟的能力使单片机具有灵活而优化的性 能 / 功耗比,此特性对功耗敏感的应用领域尤为重要。 单片机 BS83B04A-4 其它型号 所有型号 振荡类型 内部高速 RC 内部高速 RC 内部低速 RC 名称 HIRC HIRC LIRC 频率范围 8MHz 8/12/16MHz 32kHz 振荡器类型 系统时钟配置 该系列单片机有两个方式产生系统时钟,一个高速内部时钟源和一个低速内部 时钟源。对于 BS83B04A-4,高速振荡器为内部 8MHz RC 振荡器,对于其它型 号的单片机,高速振荡器为内部 8MHz,12MHz 或 16MHz RC 振荡器,低速振 荡器为内部 32kHz RC 振荡器。这两个振荡器都是内部全集成的振荡器,无需 外接器件。选择高速或低速振荡器作为系统振荡器,是通过 SMOD 寄存器中的 HLCLK 位及 CKS2~CKS0 位进行选择。 高速或低速振荡器的实际时钟源经由寄存器选择。低速或高速系统时钟频率由 SMOD 寄存器的 HLCLK 位及 CKS2~CKS0 位决定的。请注意,两个振荡器必 须做出选择,即一个高速和一个低速振荡器。                                                                               ­ €   系统时钟配置 Rev.1.40 35 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 内部高速 RC 振荡器 – HIRC 内部高速 RC 振荡器是一个全集成的系统振荡器,不需其它外部器件。内部 RC 振荡器具有固定的频率,对于除 BS83B04A-4 外的其它单片机,它可以通过 CTRL 寄存器中的 HIRCS1 和 HIRCS0 位进行选择 8MHz,12MHz 或 16MHz。 芯片在制造时进行调整且内部含有频率补偿电路,使得振荡频率因 VDD、温度 以及芯片制成工艺不同的影响减至最低程度。 内部低速 RC 振荡器 – LIRC 内部 32kHz 系统振荡器为低速振荡器。LIRC 是一个全集成的 RC 振荡器,无需 外接器件,在常温 5V 条件下,振荡频率值为 32kHz。芯片在制造时进行调整 且内部含有频率补偿电路,使得振荡频率因 VDD、温度以及芯片制成工艺不同 的影响减至最低程度。系统上电,LIRC 振荡器就使能, 不存在将该振荡器除 能的寄存器位。 工作模式和系统时钟 现今的应用要求单片机具有较高的性能及尽可能低的功耗,这种矛盾的要求在 便携式电池供电的应用领域尤为明显。高性能所需要的高速时钟将增加功耗, 反之亦然。此系列单片机提供高、低速两种时钟源,它们之间可以动态切换, 用户可通过优化单片机操作来获得最佳性能 / 功耗比。 系统时钟 主系统时钟可来自高频时钟源 fH 或低频时钟源 fSUB,通过 SMOD 寄存器中的 HLCLK 位及 CKS2~CKS0 位进行选择。高频时钟和低频时钟都来自内部 RC 振 荡器。                                        ­                               € ‚  €   ƒ  €  „ …            ­        系统时钟配置 注:当系统时钟源 fSYS 由 fH 到 fSUB 转换时,高速振荡器将停止以节省耗电。因此,没有为外 围电路提供 fH~fH/64 的频率。 Rev.1.40 36 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 控制寄存器 寄存器 SMOD 用于控制单片机内部时钟。 SMOD 寄存器 Bit Name R/W POR Rev.1.40 7 CKS2 R/W 0 6 CKS1 R/W 0 5 CKS0 R/W 0 4 — — — 3 LTO R 0 2 HTO R 0 1 0 IDLEN HLCLK R/W R/W 1 1 Bit 7~5 CKS2~CKS0:当 HLCLK 为“0”时系统时钟选择位 000:fSUB(fLIRC) 001:fSUB(fLIRC) 010:fH/64 011:fH/32 100:fH/16 101:fH/8 110:fH/4 111:fH/2 这三位用于选择系统时钟源。除了 LIRC 振荡器提供的系统时钟源外,也可使 用高频振荡器的分频作为系统时钟。 Bit 4 未定义,读为“0” Bit 3 LTO:低速振荡器就绪标志位 0:未就绪 1:就绪 此位为低速系统振荡器就绪标志位,用于表明低速系统振荡器在系统上电复位 后何时稳定下来。 Bit 2 HTO:高速振荡器就绪标志位 0:未就绪 1:就绪 此位为高速系统振荡器就绪标志位,用于表明高速系统振荡器何时稳定下来。此 标志在系统上电后经硬件清零,高速系统振荡器稳定后变为高电平。因此,此位 在单片机上电后由应用程序读取的总为“1”。该标志由休眠模式或空闲模式 0 中唤醒后会处于低电平状态,15~16 个时钟周期后改标志会处于高电平状态。 Bit 1 IDLEN:空闲模式控制位 0:除能 1:使能 此位为空闲模式控制位,用于决定 HALT 指令执行后发生的动作。若此位为 高,当指令 HALT 执行后,单片机进入空闲模式。若 FSYSON 位为高,在空闲 模式 1 中 CPU 停止运行,系统时钟将继续工作以保持外围功能继续工作;若 FSYSON 为低,在空闲模式 0 中 CPU 和系统时钟都将停止运行。若此位为低, 单片机将在 HALT 指令执行后进入休眠模式。 Bit 0 HLCLK:系统时钟选择位 0:fH/2~fH/64 或 fSUB 1:fH 此位用于选择 fH 或 fH/2~fH/64 还是 fSUB 作为系统时钟。该位为高时选择 fH 作为 系统时钟,为低时则选择 fH/2~fH/64 或 fSUB 作为系统时钟。当系统时钟由 fH 时 钟向 fSUB 时钟转换时,fH 将自动关闭以降低功耗。 37 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 CTRL 寄存器 – BS83B04A-4 Bit Name R/W POR 7 FSYSON R/W 0 6 — — — 5 — — — 4 — — — 3 — — — 2 LVRF R/W x 1 LRF R/W 0 0 WRF R/W 0 “x”表示未知 Bit 7 FSYSON:空闲模式 fSYS 控制位 0:除能 1:使能 Bit 6~3 未定义,读为“0” Bit 2 LVRF:LVR 功能复位标志位 0:未发生 1:发生 当某一特定的低电压复位情况发生时,LVRF 位将会设为 1。该位只能通过应用 程序清零。 Bit 1 LRF:LVR 控制寄存器软件复位标志位 0:未发生 1:发生 当 LVRC 寄存器包含任一未定义的 LVR 电压值,LRF 位将会设为 1,这相当于 软件复位功能。该位只能通过应用程序清零。 Bit 0 WRF:WDT 控制寄存器软件复位标志位 0:未发生 1:发生 该位通过 WDT 控制寄存器软件复位功能设为 1,通过应用程序清零。注意该位 只能通过应用程序清零。 CTRL 寄存器 – 除 BS83B04A-4 外 Bit Name R/W POR 7 FSYSON R/W 0 6 — — — 5 4 HIRCS1 HIRCS0 R/W R/W 0 0 3 — — — 2 LVRF R/W x 1 LRF R/W 0 0 WRF R/W 0 “x”表示未知 Rev.1.40 Bit 7 FSYSON:空闲模式 fSYS 控制位 0:除能 1:使能 Bit 6 未定义,读为“0” Bit 5~4 HIRCS1~HIRCS0:高频时钟选择位 00:8MHz 01:16MHz 10:12MHz 11:8MHz Bit 3 未定义,读为“0” Bit 2 LVRF:LVR 功能复位标志位 0:未发生 1:发生 当某一特定的低电压复位情况发生时,LVRF 位将会设为 1。该位只能通过应用 程序清零。 38 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 Bit 1 LRF:LVR 控制寄存器软件复位标志位 0:未发生 1:发生 当 LVRC 寄存器包含任一未定义的 LVR 电压值,LRF 位将会设为 1,这相当于 软件复位功能。该位只能通过应用程序清零。 Bit 0 WRF:WDT 控制寄存器软件复位标志位 0:未发生 1:发生 该位通过 WDT 控制寄存器软件复位功能设为 1,通过应用程序清零。注意该位 只能通过应用程序清零。 系统工作模式 该系列单片机有 5 种不同的工作模式,每种有它自身的特性,根据应用中不同 的性能和功耗要求可选择不同的工作模式。单片机正常工作有两种模式:正常 模式和低速模式。剩余的 3 种工作模式:休眠模式、空闲模式 0 和空闲模式 1 用于单片机 CPU 关闭时以节省耗电。 工作模式 正常模式 低速模式 空闲模式 0 空闲模式 1 休眠模式 说明 CPU On On Off Off Off fSYS fH~fH/64 fSUB Off On Off fSUB On On On On On fS On On On On On 正常模式 顾名思义,这是主要的工作模式之一,单片机的所有功能均可在此模式中实 现且系统时钟由一个高速振荡器提供。该模式下单片机正常工作的时钟源来 自 HIRC 振荡器。高速振荡器频率可被分为 1~64 的不等比率,实际的比率由 SMOD 寄存器中的 CKS2~CKS0 位及 HLCLK 位选择的。单片机使用高速振荡 器分频作为系统时钟可减少工作电流。 低速模式 此模式的系统时钟虽为较低速时钟源,但单片机仍能正常工作,该低速时钟源 来自 fSUB。单片机在此模式中运行所耗工作电流较低。在低速模式下,fH 关闭。 休眠模式 在 HALT 指令执行后且 SMOD 寄存器中 IDLEN 位为低时,系统进入休眠模式。 在休眠模式中,CPU 停止运行。然而 fSUB 振荡器继续运行,看门狗定时器继续 运行。 空闲模式 0 执 行 HALT 指 令 后 且 SMOD 寄 存 器 中 IDLEN 位 为 高,CTRL 寄 存 器 中 FSYSON 位为低时,系统进入空闲模式 0。在空闲模式 0 中,系统振荡器停止 运行,因此 CPU 停止工作。 Rev.1.40 39 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 空闲模式 1 执 行 HALT 指 令 后 且 SMOD 寄 存 器 中 IDLEN 位 为 高,CTRL 寄 存 器 中 FSYSON 位为高时,系统进入空闲模式 1。在空闲模式 1 中,CPU 停止,但会 提供一个时钟源给一些外围功能如看门狗定时器、定时 / 计数器。在空闲模式 1 中,系统振荡器继续运行,该系统振荡器可以为高速或低速系统振荡器。                                                                                                                                                                                                                                        工作模式切换 单片机可在各个工作模式间自由切换,使得用户可根据所需选择最佳的性 能 / 功耗比。用此方式,对单片机工作的性能要求不高的情况下,可使用较低 频时钟以减少工作电流,在便携式应用上延长电池的使用寿命。 简单来说,正常模式和低速模式间的切换仅需设置 SMOD 寄存器中的 HLCLK 位及 CKS2~CKS0 位即可实现,而正常模式 / 低速模式与休眠模式 / 空闲模式间 的切换经由 HALT 指令实现。当 HALT 指令执行后,单片机是否进入空闲模式 或休眠模式由 SMOD 寄存器中的 IDLEN 位和 CTRL 寄存器中的 FSYSON 位决 定的。 当 HLCLK 位变为低电平时,时钟源将由高速时钟源 fH 转换成时钟源 fH/2~fH/64 或 fSUB。若时钟源来自 fSUB,高速时钟源将停止运行以节省耗电。此时须注意, fH/16 和 fH/64 内部时钟源也将停止运行。所附流程图显示了单片机在不同工作 模式间切换时的变化。 Rev.1.40 40 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 正常模式切换到低速模式 系统运行在正常模式时使用高速系统振荡器,因此较为耗电。可通过设置 SMOD 寄存器中的 HLCLK 位为“0”及 CKS2~CKS0 位为“000”或“001”使 系统时钟切换至运行在低速模式下。此时将使用低速系统振荡器以节省耗电。 用户可在对性能要求不高的操作中使用此方法以减少耗电。 低速模式的时钟源来自 LIRC 振荡器。因此要求振荡器在所有模式切换动作发 生前稳定下来。该动作由 SMOD 寄存器中 LTO 位控制。                                                                                                                                                             Rev.1.40 41 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 低速模式切换到正常模式 在低速模式系统使用 LIRC 低速振荡器。切换到使用高速系统时钟振荡器的正 常模式需设置 HLCLK 位为“1”,也可设置 HLCLK 位为“0”但 CKS2~CKS0 需设为“010”、“011”、“100”、“101”、“110”或“111”。高频时钟 需要一定的稳定时间,通过检测 HTO 位的状态可进行判断。高速振荡器的稳定 时间由所使用高速系统振荡器的类型决定。                                                                                                                                                                      进入休眠模式 进入休眠模式的方法仅有一种——应用程序中执行“HALT”指令前需设置寄存 器 SMOD 中 IDLEN 位为“0”。在上述条件下执行该指令后,将发生的情况如下: ● 系统时钟和时基时钟停止运行,应用程序停止在“HALT”指令处。但 fSUB 继 续运行。 ● 数据存储器中的内容和寄存器将保持当前值。 ● WDT 将被清零并重新开始计数。 ● 输入 / 输出口将保持当前值。 ● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清除。 进入空闲模式 0 进入空闲模式 0 的方法仅有一种——应用程序中执行“HALT”指令前需设置寄 存器 SMOD 中 IDLEN 位为“1”且 CTRL 寄存器中的 FSYSON 位为“0”。在 上述条件下执行该指令后,将发生的情况如下: ● 系统时钟停止运行,应用程序停止在“HALT”指令处,时基时钟和 fSUB 时钟 将继续运行。 ● 数据存储器中的内容和寄存器将保持当前值。 ● WDT 将被清零并重新开始计数 Rev.1.40 42 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 ● 输入 / 输出口将保持当前值。 ● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清除。 进入空闲模式 1 进入空闲模式 1 的方法仅有一种——应用程序中执行“HALT”指令前需设置寄 存器 SMOD 中 IDLEN 位为“1”且 CTRL 寄存器中的 FSYSON 位为“1”。在 上述条件下执行该指令后,将发生的情况如下: ● 系统时钟和 fSUB 开启,应用程序停止在“HALT”指令处。 ● 数据存储器中的内容和寄存器将保持当前值。 ● WDT 将被清零并重新开始计数。 ● 输入 / 输出口将保持当前值。 ● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清除。 静态电流的注意事项 由于单片机进入休眠或空闲模式的主要原因是将 MCU 的电流降低到尽可能低, 可能到只有几个微安的级别(空闲模式 1 除外),所以如果要将电路的电流降 到最低,电路设计者还应有其它的考虑。应该特别注意的是单片机的输入 / 输 出引脚。所有高阻抗输入脚都必须连接到固定的高或低电平,因为引脚浮空会 造成内部振荡并导致耗电增加。这也应用于有不同封装的单片机,因为它们可 能含有未引出的引脚,这些引脚也必须设为输出或带有上拉电阻的输入。 另外还需注意单片机设为输出的 I/O 引脚上的负载。应将它们设置在有最小拉 电流的状态或将它们和其它的 CMOS 输入一样接到没有拉电流的外部电路上。 在空闲模式 1 中,系统时钟开启。若系统时钟来自高速系统振荡器,额外的静 态电流也可能会有几百微安。 唤醒 系统进入休眠或空闲模式之后,可以通过以下几种方式唤醒: ● PA 口下降沿 ● 系统中断 ● WDT 溢出 若由 WDT 溢出唤醒,则会发生看门狗定时器复位。这两种唤醒方式都会使系 统复位,可以通过状态寄存器中 TO 和 PDF 位来判断它的唤醒源。系统上电或 执行清除看门狗的指令,会清零 PDF;执行 HALT 指令,PDF 将被置位。看门 狗计数器溢出将会置位 TO 标志并唤醒系统,这种复位会重置程序计数器和堆 栈指针,其它标志保持原有状态。 PA 口中的每个引脚都可以通过 PAWU 寄存器使能下降沿唤醒功能。PA 端口唤 醒后,程序将在“HALT”指令后继续执行。如果系统是通过中断唤醒,则有两 种可能发生。第一种情况是:相关中断除能或是中断使能且堆栈已满,则程序 会在“HALT”指令之后继续执行。这种情况下,唤醒系统的中断会等到相关中 断使能或有堆栈层可以使用之后才执行。第二种情况是:相关中断使能且堆栈 未满,则中断可以马上执行。 如果在进入休眠或空闲模式之前中断标志位已经 被设置为“1”,则相关中断的唤醒功能将无效。 Rev.1.40 43 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 系统振荡器 HIRC LIRC 唤醒时间 唤醒时间 唤醒时间 ( 休眠模式 ) ( 空闲模式 0) ( 空闲模式 1) 1~2 HIRC 周期 15~16 HIRC 周期 1~2 LIRC 周期 1~2 LIRC 周期 唤醒时间 编程注意事项 高速和低速振荡器都使用 SST 计数器。例如,如果系统从休眠模式下唤醒, HIRC 振荡器起振需要一定的延迟时间。 如果单片机从休眠模式唤醒到正常模式,则高速振荡器需要 SST 的系统延迟。 HTO 为高后,单片机会执行第一条指令。 看门狗定时器 看门狗定时器的功能在于防止如电磁的干扰等外部不可控制事件,所造成的程 序不正常动作或跳转到未知的地址。 看门狗定时器时钟源 WDT 定时器时钟源来自于内部低速振荡器 fSUB。看门狗定时器的时钟源可分频 为 28~218 以提供更大的溢出周期,分频比由 WDTC 寄存器中的 WS2~WS0 位来 决定。电压为 5V 时内部振荡器 LIRC 的频率大约为 32kHz。需要注意的是,这 个特殊的内部时钟周期随 VDD、温度和制成的不同而变化。 看门狗定时器控制寄存器 WDTC 寄存器用于控制 WDT 功能的使能及选择溢出周期。任何单片机复位, WDTC 都为 01010011B,且这个值在暂停模式下 WDT 溢出也不会改变。 WDTC 寄存器 Bit Name R/W POR 7 WE4 R/W 0 6 WE3 R/W 1 5 WE2 R/W 0 4 WE1 R/W 1 3 WE0 R/W 0 2 WS2 R/W 0 1 WS1 R/W 1 0 WS0 R/W 1 Bit 7~3 WE4~WE0:WDT 操作 10101B:使能 01010B:使能(默认值) 其它值:MCU 复位 ( 需要 2~3 个 LIRC 周期响应复位 ) 如果单片机复位且由 WDTC 寄存器中的 WE[4:0] 引起,则在复位后 CTRL 寄存 器中的 WRF 标志位会被置位。 Bit 2~0 WS2~WS0:WDT 溢出周期选择位 000:28/fS 001:210/fS 010:212/fS 011:214/fS 100:215/fS 101:216/fS 110:217/fS 111:218/fS 这三位控制看门狗时钟的分频比,进而控制看门狗的溢出周期。 Rev.1.40 44 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 CTRL 寄存器 – BS83B04A-4 Bit Name R/W POR 7 FSYSON R/W 0 6 — — — 5 — — — 4 — — — 3 — — — 2 LVRF R/W x 1 LRF R/W 0 0 WRF R/W 0 “x”表示未知 Bit 7 FSYSON:空闲模式 fSYS 控制位 详见其它地方的描述。 Bit 6~3 未定义,读为“0” Bit 2 LVRF:LVR 功能复位标志位 详见其它地方的描述。 Bit 1 LRF:LVR 控制寄存器软件复位标志位 详见其它地方的描述。 Bit 0 WRF:WDT 控制寄存器软件复位标志位 0:未发生 1:发生 该位通过 WDT 控制寄存器软件复位功能设为 1,通过应用程序清零。注意该位 只能通过应用程序清零。 CTRL 寄存器 – 除 BS83B04A-4 外 Bit Name R/W POR 7 FSYSON R/W 0 6 — — — 5 4 HIRCS1 HIRCS0 R/W R/W 0 0 3 — — — 2 LVRF R/W x 1 LRF R/W 0 0 WRF R/W 0 “x”表示未知 Rev.1.40 Bit 7 FSYSON:空闲模式 fSYS 控制位 详见其它地方的描述。 Bit 6 未定义,读为“0” Bit 5~4 HIRCS1~HIRCS0:高频时钟选择位 详见其它地方的描述。 Bit 3 未定义,读为“0” Bit 2 LVRF:LVR 功能复位标志位 详见其它地方的描述。 Bit 1 LRF:LVR 控制寄存器软件复位标志位 详见其它地方的描述。 Bit 0 WRF:WDT 控制寄存器软件复位标志位 0:未发生 1:发生 该位通过 WDT 控制寄存器软件复位功能设为 1,通过应用程序清零。注意该位 只能通过应用程序清零。 45 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 看门狗定时器操作 该系列单片机的看门狗定时器时钟源来自 fSUB 振荡器,它总是开启的。当 WDT 溢出时,它产生一个芯片复位的动作。这也就意味着正常工作期间,用户需在 应用程序中看门狗溢出前有策略地清看门狗定时器以防止其产生复位,可使用 清除看门狗指令实现。无论什么原因,程序失常跳转到一个未知的地址或进入 一个死循环,这些清除指令都不能被正确执行,此种情况下,看门狗将溢出以 使单片机复位。WDTC 寄存器中的 WE4~WE0 位可使能看门狗定时器。如果 WE4~WE0 为 10101 或 01010 则 WDT 使能,如果 WE4~WE0 为其它任意值, 则单片机复位。要 2~3 个 LIRC 周期响应复位。 程序正常运行时,WDT 溢出将导致芯片复位,并置位状态标志位 TO。若系统 处于休眠或空闲模式,当 WDT 发生溢出时,状态寄存器中的 TO 应置位,仅 PC 和堆栈指针复位。有三种方法可以用来清除 WDT 的内容。第一种是 WDT 复位,即将 WE4~WE0 位设置成除了 01010B 和 10101B 外的任意值;第二种是 通过软件清除指令,而第三种是通过“HALT”指令。 该系列单片机只使用一条清看门狗指令“CLR WDT”。因此只要执行“CLR WDT”便清除 WDT。 当设置分频比为 218 时,溢出周期最大。例如,时钟源为 32kHz LIRC 振荡器, 分频比为 218 时最大溢出周期约 8s,分频比为 28 时最小溢出周期约 7.8ms。 CLR WDT fSUB fS CLR 11 stage divider 8-to-1 MUX WDT Time-out 7-stage Divider WS2~WS0 (fS/21 ~ f S/2 11) WS[2:0]= 000: 28 /f S 001: 210 /fS 010: 212 /fS 011: 214/fS 100: 215 /fS 101: 216 /fS 110: 217 /fS 111: 218 /fS 看门狗定时器 Rev.1.40 46 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 复位和初始化 复位功能是任何单片机中基本的部分,使得单片机可以设定一些与外部参数无 关的先置条件。最重要的复位条件是在单片机首次上电以后,经过短暂的延迟, 内部硬件电路使得单片机处于预期的稳定状态并开始执行第一条程序指令。上 电复位以后,在程序执行之前,部分重要的内部寄存器将会被设定为预先设定 的状态。程序计数器就是其中之一,它会被清除为零,使得单片机从最低的程 序存储器地址开始执行程序。 另一种复位为看门狗溢出单片机复位,不同方式的复位操作会对寄存器产生不 同的影响。还有一种复位为低电压复位即 LVR 复位,在电源供应电压低于 LVR 设定值时,系统会产生 LVR 复位。 复位功能 包括内部和外部事件触发复位,单片机共有四种复位方式: 上电复位 这是最基本且不可避免的复位,发生在单片机上电后。除了保证程序存储器从 开始地址执行,上电复位也使得其它寄存器被设定在预设条件,所有的输入 / 输出端口控制寄存器在上电复位时会保持高电平,以确保上电后所有引脚被设 定为输入状态。 VDD Power-on Reset tRSTD SST Time-out 上电复位时序图 低电压复位 – LVR 单片机具有低电压复位电路,用来监测它的电源电压。低电压复位功能始终使 能于特定的电压值,VLVR。例如在更换电池的情况下,单片机供应的电压可能 会落在 0.9V~VLVR 的范围内,这时 LVR 将会自动复位单片机且 CTRL 寄存器中 的 LVRF 标志位置位。LVR 包含以下的规格:有效的 LVR 信号,即在 0.9V~VLVR 的低电压状态的时间,必须超过交流电气特性中 tLVR 参数的值。如果低电压存 在不超过 tLVR 参数的值,则 LVR 将会忽略它且不会执行复位功能。VLVR 参数值 可通过 LVRC 寄存器中的 LVS 位设置。若由于受到干扰 LVS7~LVS0 变为其它 值时,需经过 2~3 个 LIRC 周期响应复位。此时 CTRL 寄存器的 LRF 位被置位。 上电后寄存器的值为 01010101B。正常执行时 LVR 会于休眠或空闲时自动除能 关闭。                       低电压复位时序图 Rev.1.40 47 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 ● LVRC 寄存器 – BS83B08A-3/BS83B12A-3/BS83B16A-3 Bit Name R/W POR Bit 7~0 7 LVS7 R/W 0 6 LVS6 R/W 1 5 LVS5 R/W 0 4 LVS4 R/W 1 3 LVS3 R 0 2 LVS2 R 1 1 LVS1 R/W 0 0 LVS0 R/W 1 LVS7~LVS0:LVR 电压选择 01010101:2.55V(默认) 00110011:2.55V 10011001:2.55V 10101010:2.55V 其它值:MCU 复位 ( 需要 2~3 个 LIRC 周期响应复位 ) 注:可以通过 S/W 写 00H~FFH 来控制 LVR 电压,也可复位单片机。如果单片 机复位且由 LVRC 寄存器引起,则在复位后 CTRL 寄存器中的 LRF 标志位 会被置位。 ● LVRC 寄存器 – BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 Bit Name R/W POR Bit 7~0 Rev.1.40 7 LVS7 R/W 0 6 LVS6 R/W 1 5 LVS5 R/W 0 4 LVS4 R/W 1 3 LVS3 R 0 2 LVS2 R 1 1 LVS1 R/W 0 0 LVS0 R/W 1 LVS7~LVS0:LVR 电压选择 01010101:2.10V(默认) 00110011:2.10V 10011001:2.10V 10101010:2.10V 其它值:MCU 复位 ( 需要 2~3 个 LIRC 周期响应复位 ) 注:可以通过 S/W 写 00H~FFH 来控制 LVR 电压,也可复位单片机。如果单片 机复位且由 LVRC 寄存器引起,则在复位后 CTRL 寄存器中的 LRF 标志位 会被置位。 48 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 ● CTRL 寄存器 – BS83B04A-4 Bit Name R/W POR 7 FSYSON R/W 0 6 — — — 5 — — — 4 — — — 3 — — — 2 LVRF R/W x 1 LRF R/W 0 0 WRF R/W 0 “x”表示未知 Bit 7 FSYSON:空闲模式 fSYS 控制位 详见其它地方的描述 Bit 6~3 未定义,读为“0” Bit 2 LVRF:LVR 功能复位标志位 0:未发生 1:发生 当某一特定的低电压复位情况发生时,LVRF 位将会设为 1。该位只能通过应用 程序清零。 Bit 1 LRF:LVR 控制寄存器软件复位标志位 0:未发生 1:发生 当 LVRC 寄存器包含任一未定义的 LVR 电压值,LRF 位将会设为 1,这相当于 软件复位功能。该位只能通过应用程序清零。 Bit 0 WRF:WDT 控制寄存器软件复位标志位 详见其它地方的描述 ● CTRL 寄存器 – 除 BS83B04A-4 外 Bit Name R/W POR 7 FSYSON R/W 0 6 — — — 5 4 HIRCS1 HIRCS0 R/W R/W 0 0 3 — — — 2 LVRF R/W x 1 LRF R/W 0 0 WRF R/W 0 “x”表示未知 Rev.1.40 Bit 7 FSYSON:空闲模式下的 fSYS 控制 详见其它地方的描述 Bit 6 未定义,读为“0” Bit 5~4 HIRCS1~HIRCS0:高频时钟选择位 详见其它地方的描述 Bit 3 未定义,读为“0” Bit 2 LVRF:LVR 功能复位标志位 0:未发生 1:发生 当某一特定的低电压复位情况发生时,LVRF 位将会设为 1。该位只能通过应用 程序清零。 Bit 1 LRF:LVR 控制寄存器软件复位标志位 0:未发生 1:发生 当 LVRC 寄存器包含任一未定义的 LVR 电压值,LRF 位将会设为 1,这相当于 软件复位功能。该位只能通过应用程序清零。 Bit 0 WRF:WDT 控制寄存器软件复位标志位 详见其它地方的描述 49 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 正常运行时看门狗溢出复位 正常运行时看门狗溢出会使看门狗溢出标志位 TO 设为 1。                             注:tRSTD 为上电延迟时间,典型值为 16.7ms。 正常运行时看门狗溢出时序图 空闲 / 休眠时看门狗溢出复位 空闲 / 休眠时看门狗溢出复位和其它种类的复位有些不同,除了程序计数器与 堆栈指针将被清 0 及 TO 位被设为 1 外,绝大部分的条件保持不变。图中 tSST 的详细说明请参考交流电气特性。                       注:如果系统时钟为 HIRC 时,则 tSST 为 15~16 个时钟周期。 如果为 LIRC,则 tSST 为 1~2 个时钟周期。 空闲 / 休眠时看门狗溢出复位时序图 复位初始状态 不同的复位形式以不同的途径影响复位标志位。这些标志位,即 PDF 和 TO 位 存放在状态寄存器中,由空闲 / 休眠功能或看门狗计数器等几种控制器操作控 制。复位标志位如下所示: T0 0 u 1 1 PDF 0 u u 1 复位条件 上电复位 正常模式或低速模式时的 LVR 复位 正常模式或低速模式时的 WDT 溢出复位 空闲模式或休眠模式时的 WDT 溢出复位 “u”代表不改变 在单片机上电复位之后,各功能单元初始化的情形,列于下表。 项目 程序计数器 中断 看门狗定时器 定时 / 计数器 输入 / 输出口 堆栈指针 复位后情况 清除为零 所有中断被除能 WDT 清除并重新计数 定时 / 计数器停止 所有 I/O 设为输入模式 堆栈指针指向堆栈顶端 不同的复位形式对单片机内部寄存器的影响是不同的。为保证复位后程序能正 常执行,了解寄存器在特定条件复位后的设置是非常重要的,下表即为不同方 式复位后内部寄存器的状况。注意若芯片有多种封装类型,表格反应较大的封 装的情况。 Rev.1.40 50 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 BS83B04A-4 寄存器 IAR0 MP0 IAR1 MP1 BP ACC PCL TBLP TBLH TBHP STATUS SMOD CTRL INTEG INTC0 INTC1 SFS LVRC PA PAC PAPU PAWU WDTC TBC TMR TMRC EEA EED TKTMR TKC0 TK16DL TK16DH TKC1 TKM016DL TKM016DH TKM0ROL TKM0ROH TKM0C0 TKM0C1 Rev.1.40 LVR& 上电复位 ---- ---xxxx xxxx ---- ---xxxx xxxx ---- ---0 xxxx xxxx 0000 0000 xxxx xxxx xxxx xxxx ---- -xxx --00 xxxx 000- 0011 0--- 0x00 ---- --00 -000 0000 -000 -000 ---- ---0 0101 0101 1111 1111 1111 1111 0000 0000 0000 0000 0101 0011 --00 ---0000 0000 --00 -000 ---0 0000 0000 0000 0000 0000 -000 0000 0000 0000 0000 0000 ---- --11 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0-00 0000 51 WDT 溢出 ( 正常模式 ) ---- ---xxxx xxxx ---- ---xxxx xxxx ---- ---0 uuuu uuuu 0000 0000 uuuu uuuu uuuu uuuu ---- -uuu --1u uuuu 000- 0011 0--- 0x00 ---- --00 -000 0000 -000 -000 ---- ---0 0101 0101 1111 1111 1111 1111 0000 0000 0000 0000 0101 0011 --00 ---0000 0000 --00 -000 ---0 0000 0000 0000 0000 0000 -000 0000 0000 0000 0000 0000 ---- --11 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0-00 0000 WDT 溢出 (HALT 模式 ) ---- ---uuuu uuuu ---- ---uuuu uuuu ---- ---u uuuu uuuu 0000 0000 uuuu uuuu uuuu uuuu ---- -uuu - - 11 u u u u uuu- uuuu u--- uuuu ---- --uu -uuu uuuu -uuu -uuu ---- ---u uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu --uu ---uuuu uuuu --uu -uuu ---u uuu 0000 0000 uuuu uuuu -uuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu u-uu uuuu 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 寄存器 IICC0 IICC1 IICD IICA I2CTOC EEC LVR& 上电复位 ---- 0001000 0001 0000 0000 0000 0000 0000 0000 ---- 1111 WDT 溢出 ( 正常模式 ) ---- 0001000 0001 0000 0000 0000 0000 0000 0000 ---- 1111 WDT 溢出 (HALT 模式 ) ---- uuuuuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu ---- uuuu WDT 溢出 ( 正常模式 ) ---- ---xxxx xxxx ---- ---xxxx xxxx ---- ---0 uuuu uuuu 0000 0000 uuuu uuuu uuuu uuuu ---- uuuu --1u uuuu 0000 0011 0-00 -x00 ---- --00 -000 0000 -000 -000 0000 0000 1 - - 1 1111 1 - - 1 1111 0--0 0000 0--0 0000 0101 0011 --00 ---0000 0000 --00 -000 - - 11 1111 0000 0000 1111 1111 WDT 溢出 (HALT 模式 ) ---- ---uuuu uuuu ---- ---uuuu uuuu ---- ---u uuuu uuuu 0000 0000 uuuu uuuu uuuu uuuu ---- uuuu - - 11 u u u u uuuu uuuu u-uu -uuu ---- --uu -uuu uuuu -uuu -uuu uuuu uuuu u--u uuuu u--u uuuu u--u uuuu u--u uuuu uuuu uuuu --uu ---uuuu uuuu --uu -uuu --uu uuuu uuuu uuuu uuuu uuuu 注:“-”表示未定义 “x”表示未知 “u”表示不改变” BS83B08A-3/BS83B08A-4 寄存器 IAR0 MP0 IAR1 MP1 BP ACC PCL TBLP TBLH TBHP STATUS SMOD CTRL INTEG INTC0 INTC1 LVRC PA PAC PAPU PAWU WDTC TBC TMR TMRC EEA EED PB Rev.1.40 LVR& 上电复位 ---- ---xxxx xxxx ---- ---xxxx xxxx ---- ---0 xxxx xxxx 0000 0000 xxxx xxxx xxxx xxxx ---- xxxx --00 xxxx 0000 0011 0-00 -x00 ---- --00 -000 0000 -000 -000 0000 0000 1 - - 1 1111 1 - - 1 1111 0--0 0000 0--0 0000 0101 0011 --00 ---0000 0000 --00 -000 - - 11 1111 0000 0000 1111 1111 52 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 寄存器 PBC PBPU I2CTOC SIMC0 SIMC1 SIMD SIMC2 SIMA TKTMR TKC0 TK16DL TK16DH TKC1 TKM016DL TKM016DH TKM0ROL TKM0ROH TKM0C0 TKM0C1 TKM116DL TKM116DH TKM1ROL TKM1ROH TKM1C0 TKM1C1 EEC LVR& 上电复位 1111 1111 0000 0000 0000 0000 0000 -000000 -000 0000 0000 - - 11 1111 0000 0000 0000 0000 -000 0000 0000 0000 0000 0000 ---- --11 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0-00 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 ---- 0000 WDT 溢出 ( 正常模式 ) 1111 1111 0000 0000 0000 0000 0000 -000000 -000 0000 0000 - - 11 1111 0000 0000 0000 0000 -000 0000 0000 0000 0000 0000 ---- --11 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0-00 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 ---- 0000 WDT 溢出 (HALT 模式 ) uuuu uuuu uuuu uuuu uuuu uuuu uuuu -uuuuuu -uuu uuuu uuuu --uu uuuu uuuu uuuu uuuu uuuu -uuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu u-uu uuuu uuuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu ---- uuuu 注:“-”表示未定义 “x”表示未知 “u”表示不改变 Rev.1.40 53 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 BS83B12A-3/BS83B12A-4 寄存器 IAR0 MP0 IAR1 MP1 BP ACC PCL TBLP TBLH TBHP STATUS SMOD CTRL INTEG INTC0 INTC1 LVRC PA PAC PAPU PAWU WDTC TBC TMR TMRC EEA EED PB PBC PBPU I2CTOC SIMC0 SIMC1 SIMD SIMC2 SIMA PC PCC PCPU Rev.1.40 LVR& 上电复位 ---- ---xxxx xxxx ---- ---xxxx xxxx ---- ---0 xxxx xxxx 0000 0000 xxxx xxxx xxxx xxxx ---- xxxx --00 xxxx 0000 0011 0-00 -x00 ---- --00 -000 0000 -000 -000 0000 0000 1 - - 1 1111 1 - - 1 1111 0--0 0000 0--0 0000 0101 0011 --00 ---0000 0000 --00 -000 - - 11 1111 0000 0000 1111 1111 1111 1111 0000 0000 0000 0000 0000 -000000 -000 0000 0000 - - 11 1111 0000 0000 1111 1111 1111 1111 0000 0000 54 WDT 溢出 ( 正常模式 ) ---- ---xxxx xxxx ---- ---xxxx xxxx ---- ---0 uuuu uuuu 0000 0000 uuuu uuuu uuuu uuuu ---- uuuu --1u uuuu 0000 0011 0-00 -x00 ---- --00 -000 0000 -000 -000 0000 0000 1 - - 1 1111 1 - - 1 1111 0--0 0000 0--0 0000 0101 0011 --00 ---0000 0000 --00 -000 - - 11 1111 0000 0000 1111 1111 1111 1111 0000 0000 0000 0000 0000 -000000 -000 0000 0000 - - 11 1111 0000 0000 1111 1111 1111 1111 0000 0000 WDT 溢出 (HALT 模式 ) ---- ---uuuu uuuu ---- ---uuuu uuuu ---- ---u uuuu uuuu 0000 0000 uuuu uuuu uuuu uuuu ---- uuuu - - 11 u u u u uuuu uuuu u-uu -uuu ---- --uu -uuu uuuu -uuu -uuu uuuu uuuu u--u uuuu u--u uuuu u--u uuuu u--u uuuu uuuu uuuu --uu ---uuuu uuuu --uu -uuu --uu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu -uuuuuu -uuu uuuu uuuu --uu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 寄存器 TKTMR TKC0 TK16DL TK16DH TKC1 TKM016DL TKM016DH TKM0ROL TKM0ROH TKM0C0 TKM0C1 TKM116DL TKM116DH TKM1ROL TKM1ROH TKM1C0 TKM1C1 TKM216DL TKM216DH TKM2ROL TKM2ROH TKM2C0 TKM2C1 EEC LVR& 上电复位 0000 0000 -000 0000 0000 0000 0000 0000 ---- --11 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0-00 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 ---- 0000 WDT 溢出 ( 正常模式 ) 0000 0000 -000 0000 0000 0000 0000 0000 ---- --11 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0-00 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 ---- 0000 WDT 溢出 (HALT 模式 ) uuuu uuuu -uuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu u-uu uuuu uuuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu ---- uuuu 注:“-”表示未定义 “x”表示未知 “u”表示不改变 Rev.1.40 55 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 BS83B16A-3/BS83B16A-4 寄存器 IAR0 MP0 IAR1 MP1 BP ACC PCL TBLP TBLH TBHP STATUS SMOD CTRL INTEG INTC0 INTC1 LVRC PA PAC PAPU PAWU WDTC TBC TMR TMRC EEA EED PB PBC PBPU I2CTOC SIMC0 SIMC1 SIMD SIMC2 SIMA PC PCC PCPU Rev.1.40 LVR& 上电复位 ---- ---xxxx xxxx ---- ---xxxx xxxx ---- ---0 xxxx xxxx 0000 0000 xxxx xxxx xxxx xxxx ---- xxxx --00 xxxx 0000 0011 0-00 -x00 ---- --00 -000 0000 -000 -000 0000 0000 1 - - 1 1111 1 - - 1 1111 0--0 0000 0--0 0000 0101 0011 --00 ---0000 0000 --00 -000 - - 11 1111 0000 0000 1111 1111 1111 1111 0000 0000 0000 0000 0000 -000000 -000 0000 0000 - - 11 1111 0000 0000 1111 1111 1111 1111 0000 0000 56 WDT 溢出 ( 正常模式 ) ---- ---xxxx xxxx ---- ---xxxx xxxx ---- ---0 uuuu uuuu 0000 0000 uuuu uuuu uuuu uuuu ---- uuuu --1u uuuu 0000 0011 0-00 -x00 ---- --00 -000 0000 -000 -000 0000 0000 1 - - 1 1111 1 - - 1 1111 0--0 0000 0--0 0000 0101 0011 --00 ---0000 0000 --00 -000 - - 11 1111 0000 0000 1111 1111 1111 1111 0000 0000 0000 0000 0000 -000000 -000 0000 0000 - - 11 1111 0000 0000 1111 1111 1111 1111 0000 0000 WDT 溢出 (HALT 模式 ) ---- ---uuuu uuuu ---- ---uuuu uuuu ---- ---u uuuu uuuu 0000 0000 uuuu uuuu uuuu uuuu ---- uuuu - - 11 u u u u uuuu uuuu u-uu -uuu ---- --uu -uuu uuuu -uuu -uuu uuuu uuuu u--u uuuu u--u uuuu u--u uuuu u--u uuuu uuuu uuuu --uu ---uuuu uuuu --uu -uuu --uu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu -uuuuuu -uuu uuuu uuuu --uu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 寄存器 TKTMR TKC0 TK16DL TK16DH TKC1 TKM016DL TKM016DH TKM0ROL TKM0ROH TKM0C0 TKM0C1 TKM116DL TKM116DH TKM1ROL TKM1ROH TKM1C0 TKM1C1 TKM216DL TKM216DH TKM2ROL TKM2ROH TKM2C0 TKM2C1 TKM316DL TKM316DH TKM3ROL TKM3ROH TKM3C0 TKM3C1 EEC LVR& 上电复位 0000 0000 -000 0000 0000 0000 0000 0000 ---- --11 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0-00 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 ---- 0000 WDT 溢出 ( 正常模式 ) 0000 0000 -000 0000 0000 0000 0000 0000 ---- --11 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0-00 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ---- --00 0000 0000 0000 0000 ---- 0000 WDT 溢出 (HALT 模式 ) uuuu uuuu -uuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu u-uu uuuu uuuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu ---- --uu uuuu uuuu uuuu uuuu ---- uuuu 注:“-”表示未定义 “x”表示未知 “u”表示不改变 Rev.1.40 57 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 输入 / 输出端口 盛群单片机的输入 / 输出口控制具有很大的灵活性。大部分引脚都可在用户程 序控制下被设定为输入或输出,所有引脚的上拉电阻设置以及指定引脚的唤醒 设置也都由软件控制,这些特性也使得此类单片机在广泛应用上都能符合开发 的需求。 此系列单片机提供 PA~PC 双向输入 / 输出口。这些寄存器在数据存储器有特定 的地址。所有 I/O 口用于输入输出操作。作为输入操作,输入引脚无锁存功能, 也就是说输入数据必须在执行“MOV A, [m]”,T2 的上升沿准备好,m 为端口 地址。对于输出操作,所有数据都是被锁存的,且保持不变直到输出锁存被重 写。 输入 / 输出寄存器列表 ● BS83B04A-4 寄存器 名称 PAWU PAPU PA PAC 位 7 D7 D7 D7 D7 6 D6 D6 D6 D6 5 D5 D5 D5 D5 4 D4 D4 D4 D4 3 D3 D3 D3 D3 2 D2 D2 D2 D2 1 D1 D1 D1 D1 0 D0 D0 D0 D0 3 D3 D3 D3 D3 D3 D3 D3 2 D2 D2 D2 D2 D2 D2 D2 1 D1 D1 D1 D1 D1 D1 D1 0 D0 D0 D0 D0 D0 D0 D0 3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 ● BS83B08A-3/BS83B08A-4 寄存器 名称 PAWU PAPU PA PAC PBPU PB PBC 位 7 D7 D7 D7 D7 D7 D7 D7 6 — — — — D6 D6 D6 5 — — — — D5 D5 D5 4 D4 D4 D4 D4 D4 D4 D4 5 — — — — D5 D5 D5 — — — 4 D4 D4 D4 D4 D4 D4 D4 — — — ● BS83B12A-3/BS83B12A-4 寄存器 名称 PAWU PAPU PA PAC PBPU PB PBC PCPU PC PCC Rev.1.40 位 7 D7 D7 D7 D7 D7 D7 D7 — — — 6 — — — — D6 D6 D6 — — — 58 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 ● BS83B16A-3/BS83B16A-4 寄存器 名称 PAWU PAPU PA PAC PBPU PB PBC PCPU PC PCC 位 7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 6 — — — — D6 D6 D6 D6 D6 D6 5 — — — — D5 D5 D5 D5 D5 D5 4 D4 D4 D4 D4 D4 D4 D4 D4 D4 D4 3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 上拉电阻 许多产品应用在端口处于输入状态时需要外加一个上拉电阻来实现上拉的功 能。为了免去外部上拉电阻,当引脚规划为输入时,可由内部连接到一个上拉 电阻,这些上拉电阻可通过寄存器 PAPU~PCPU 来设置,它用一个 PMOS 晶体 管来实现上拉电阻功能。 PAPU 寄存器 – BS83B04A-4 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 PA 口 bit 7~bit 0 上拉电阻控制 0:除能 1:使能 PAPU 寄存器 – 除 BS83B04A-4 外 Bit Name R/W POR Rev.1.40 7 D7 R/W 0 6 — — — 5 — — — Bit 7 PA 口 bit 7 上拉电阻控制 0:除能 1:使能 Bit 6~5 未定义,读为“0” Bit 4~0 PA 口 bit 4~bit 0 上拉电阻控制 0:除能 1:使能 59 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 PBPU 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 4 — — — 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 PB 口 bit7~bit 0 上拉电阻控制 0:除能 1:使能 PCPU 寄存器 – BS83B12A-3/BS83B12A-4 Bit Name R/W POR 7 — — — 6 — — — 5 — — — Bit 7~4 未定义,读为“0” Bit 3~0 PC 口 bit 3~bit 0 上拉电阻控制 0:除能 1:使能 PCPU 寄存器 – BS83B16A-3/BS83B16A-4 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 PC 口 bit7~bit 0 上拉电阻控制 0:除能 1:使能 PA 口唤醒 当使用暂停指令“HALT”迫使单片机进入空闲 / 休眠模式状态,单片机的系统 时钟将会停止以降低功耗,此功能对于电池及低功耗应用很重要。唤醒单片机 有很多种方法,其中之一就是使 PA 口的其中一个引脚从高电平转为低电平。 这个功能特别适合于通过外部开关来唤醒的应用。PA 口上的每个引脚是可以通 过设置 PAWU 寄存器来单独选择是否具有唤醒功能。 PAWU 寄存器 – BS83B04A-4 Bit Name R/W POR Bit 7~0 Rev.1.40 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 PA 口 bit 7~bit 0 唤醒控制 0:除能 1:使能 60 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 PAWU 寄存器 – 除 BS83B04A-4 外 Bit Name R/W POR 7 D7 R/W 0 6 — — — 5 — — — 4 D4 R/W 0 Bit 7 PA 口 bit 7 上唤醒控制 0:除能 1:使能 Bit 6~5 未定义,读为“0” Bit 4~0 PA 口 bit 4~bit 0 唤醒控制 0:除能 1:使能 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 输入 / 输出端口控制寄存器 每一个输入 / 输出口都具有各自的控制寄存器 (PAC~PCC) 用来控制输入 / 输出 状态。通过这些控制寄存器,每个 CMOS 输出或输入都可以通过软件动态控制。 所有的 I/O 端口的引脚都各自对应于 I/O 端口控制寄存器的某一位。若 I/O 引脚 要实现输入功能,则对应的控制寄存器的位需要设置为“1”,这时程序指令可 以直接读取输入脚的逻辑状态。若控制寄存器相应的位被设定为“0”,则此引 脚被设置为 CMOS 输出。当引脚设置为输出状态时,程序指令读取的是输出端 口寄存器的内容。注意,如果对输出口做读取动作时,程序读取到的是内部输 出数据锁存器中的状态,而不是输出引脚上实际的逻辑状态。 PAC 寄存器 – BS83B04A-4 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 3 D3 R/W 1 2 D2 R/W 1 1 D1 R/W 1 0 D0 R/W 1 PA 口 bit 7~bit 0 输入 / 输出控制 0:输出 1:输入 PAC 寄存器 – 除 BS83B04A-4 外 Bit Name R/W POR Rev.1.40 7 D7 R/W 1 6 — — — 5 — — — 4 D4 R/W 1 Bit 7 PA 口 bit 7 输入 / 输出控制 0:输出 1:输入 Bit 6~5 未定义,读为“0” Bit 4~0 PA 口 bit 4~bit 0 输入 / 输出控制 0:输出 1:输入 61 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 PBC 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R/W 1 6 D6 R/W 1 5 D5 R/W 1 4 D4 R/W 1 3 D3 R/W 1 2 D2 R/W 1 1 D1 R/W 1 0 D0 R/W 1 4 — — — 3 D3 R/W 1 2 D2 R/W 1 1 D1 R/W 1 0 D0 R/W 1 4 D4 R/W 1 3 D3 R/W 1 2 D2 R/W 1 1 D1 R/W 1 0 D0 R/W 1 PB 口 bit 7~bit 0 输入 / 输出控制 0:输出 1:输入 PCC 寄存器 – BS83B12A-3/BS83B12A-4 Bit Name R/W POR 7 — — — 6 — — — 5 — — — Bit 7~4 未定义,读为“0” Bit 3~0 PC 口 bit 3~bit 0 输入 / 输出控制 0:输出 1:输入 PCC 寄存器 – BS83B16A-3/BS83B16A-4 Bit Name R/W POR Bit 7~0 7 D7 R/W 1 6 D6 R/W 1 5 D5 R/W 1 PC 口 bit 7~bit 0 输入 / 输出控制 0:输出 1:输入 引脚重置功能 引脚的多功能可以增加单片机应用的灵活性。有限的引脚个数将会限制设计者, 而引脚的多功能将会解决很多此类问题。每个功能可单独选择所在的引脚,以 及一个确定的优先级,使得引脚上多种功能可以同时使用。此外,一些引脚功 能可以通过寄存器 SFS 进行设定。 引脚重置寄存器 封装中有限的引脚个数会对某些单片机功能造成影响。然而,引脚功能重置和 引脚功能选择,使得小封装单片机具有更多不同的功能。一些单片机的特定引 脚功能可以通过寄存器 SFS 进行设定。 Rev.1.40 62 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 ● SFS 寄存器 – BS83B04A-4 Bit Name R/W POR 7 — — — 6 — — — 5 — — — 4 — — — Bit 7~1 未定义,读为 “0” Bit 5 SFS0:INT 引脚重置控制位 0:INT on PA0 1:INT on PA6 3 — — — 2 — — — 1 — — — 0 SFS0 R/W 0 输入 / 输出引脚结构 下图为输入 / 输出引脚的内部结构图。输入 / 输出引脚的准确逻辑结构图可能与 此图不同,这里只是为了方便对功能的理解提供的一个参考。图中引脚共用并 非针对所有单片机。                                                                                                                                               通用输入 / 输出端口结构 编程注意事项 在编程中,最先要考虑的是端口的初始化。复位之后,所有的输入 / 输出数据 及端口控制寄存器都将被设为逻辑高。所有输入 / 输出引脚默认为输入状态, 而其电平则取决于其它相连接电路以及是否选择了上拉电阻。如果端口控制寄 存器 PAC~PCC,某些引脚位被设定输出状态,这些输出引脚会有初始高电平输 出,除非数据寄存器端口 PA~PC 在程序中被预先设定。设置哪些引脚是输入及 哪些引脚是输出,可通过设置正确的值到适当的端口控制寄存器,或使用指令 “SET [m].i”及“CLR [m].i”来设定端口控制寄存器中个别的位。注意,当使 用这些位控制指令时,系统即将产生一个读 - 修改 - 写的操作。单片机需要先 读入整个端口上的数据,修改个别的位,然后重新把这些数据写入到输出端口。 PA 口的每个引脚都带唤醒功能。单片机处于休眠或空闲模式时,有很多方法可 以唤醒单片机,其中之一就是通过 PA 口任一引脚电平从高到低转换的方式, 可以设置 PA 口一个或多个引脚具有唤醒功能。 Rev.1.40 63 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 定时 / 计数器 定时 / 计数器在任何单片机中都是一个很重要的部分,提供程序设计者一种实 现和时间有关功能的方法。该系列单片机具有 1 个 8 位的向上计数器。并且提 供了一个内部时钟分频器,以扩大定时器的范围。 有两种和定时 / 计数器相关的寄存器。第一种类型的寄存器是用来存储实际的 计数值,赋值给此寄存器可以设定初始值,读取此寄存器可获得定时 / 计数器 的内容;第二种类型的寄存器为定时器控制寄存器,用来定义定时 / 计数器的 定时设置。                                                                                                           ­     €  ‚                 定时 / 计数器 配置定时 / 计数器输入时钟源 定时 / 计数器的时钟源可以来自系统时钟 fSYS 或 fSUB 振荡器,由 TMRC 寄存器 的 TS 位选择使用哪种时钟源。内部时钟首先由分频器分频,分频比由定时器 控制寄存器的位 TPSC0~TPSC2 来确定。 定时 / 计数寄存器 – TMR 定时 / 计数寄存器 TMR,是位于特殊数据存储器内的特殊功能寄存器,用于储 存定时器的当前值。当收到一个内部计数脉冲,此寄存器的值将会加一。定时 器将从预置寄存器所载入的值开始计数,到 FFH 时定时器溢出且会产生一个内 部中断信号。定时器的值随后被预置寄存器的值重新载入并继续计数。 注意,上电后预置寄存器处于未知状态。为了得到定时器的最大计算范围 FFH,预置寄存器需要先清为零。注意,如果定时 / 计数器在关闭条件下,写 数据到预置寄存器,会立即写入实际的定时器。而如果定时 / 计数器已经打开 且正在计数,在这个周期内写入到预置寄存器的任何新数据将保留在预置寄存 器,直到溢出发生时才被写入实际定时器。 Rev.1.40 64 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 定时 / 计数控制寄存器 – TMRC 定时 / 计数控制寄存器为 TMRC,配合相应的 TMR 寄存器控制定时 / 计数器的 全部操作。在使用定时器之前,需要先正确地设定定时 / 计数控制寄存器,以 便保证定时器能正确操作,而这个过程通常在程序初始化期间完成。 定时 / 计数控制寄存器的第 4 位即 TON,用于定时器开关控制,设定为逻辑高 时,计数器开始计数,而清零时则停止计数。定时 / 计数控制寄存器的第 0~2 位用来控制输入时钟预分频器。TS 位用来选择内部时钟源。 TMRC 寄存器 Bit Name R/W POR Rev.1.40 7 — — — 6 — — — 5 TS R/W 0 4 TON R/W 0 3 — — — Bit 7~6 未定义,读为“0” Bit 5 TS:定时器时钟源选择位 0:fSYS 1:fSUB Bit 4 TON:定时 / 计数器控制位 0:除能 1:使能 Bit 3 未定义,读为“0” Bit 2~0 TPSC2~TPSC0:选择定时器预分频比选择位 定时器内部时钟 = 000:fTP 001:fTP/2 010:fTP/4 011:fTP/8 100:fTP/16 101:fTP/32 110:fTP/64 111:fTP/128 65 2 TPSC2 R/W 0 1 TPSC1 R/W 0 0 TPSC0 R/W 0 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 定时器操作 定时 / 计数器可以用来测量固定时间间隔,当定时器发生溢出时,就会产生一 个内部中断信号。 fSYS 或 fSUB 振荡器被用来当定时器的输入时钟源。然而, 该定时器时钟源被预分频器进一步分频,分频比是由定时器控制寄存器的 TPSC2~TPSC0 位来确定。定时器使能位,即 TON 位需要设为逻辑高,才能令 定时器工作。每次内部时钟由高到低的电平转换都会使定时器值增加一。当定 时器计数已满即溢出时,会产生中断信号且定时器会重新载入预置寄存器的值, 然后继续计数。定时器溢出以及相应的内部中断产生也是唤醒暂停模式的一种 方法,然而,通过设置中断寄存器中的定时器中断使能位为 0,可以禁止计数 器中断。 预分频器 TMRC 寄存器的 TPSC2~TPSC0 位用来确定定时 / 计数器的内部时钟的分频比, 从而能够设置更长的定时器溢出周期。 编程注意事项 当读取定时 / 计数器值或写数据到预置寄存器时,计数时钟会被禁止以避免发 生错误,但这样做可能会导致计数错误,所以程序设计者应该考虑到这点。在 第一次使用定时 / 计数器之前,要仔细确认有没有正确地设定初始值。中断控 制寄存器中的定时器使能位需要正确的设置,否则相应定时 / 计数器内部中断 仍然无效。在定时 / 计数器打开之前,需要确保先载入定时 / 计数寄存器的初始 值,这是因为在上电后,定时 / 计数寄存器中的初始值是未知的。 定时 / 计数器初始化后,可以使用定时 / 计数器控制寄存器中的使能位来打开或 关闭定时器。当定时 / 计数器产生溢出,中断控制寄存器中相应的中断请求标 志将置位。若定时 / 计数器中断允许,将会依次产生一个中断信号。不管中断 是否允许,在省电状态下,定时 / 计数器的溢出也会产生唤醒。若在省电模式下, 不需要定时器中断唤醒系统,可以在执行“HALT”指令进入空闲 / 休眠模式之 前将相应中断请求标志位置位。 Rev.1.40 66 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 触摸按键功能 该系列单片机提供了多个触摸按键功能。该按键功能内建于单片机内,不需外 接元件,通过内部寄存器对其进行简单的操作。 触摸按键结构 触摸按键与 PA,PB 和 PC 的 I/O 引脚共用。通过寄存器的位来选择此功能。按 键被分成四部分,即 M0~M3 四个模块。每个模块具有自己的控制逻辑电路和 设置寄存器。寄存器的名称和它对应的模块编号相关联。 单片机 按键个数 触摸按键模块 触摸按键 BS83B04A-4 4 M0 K1~K4 M0 K1~K4 BS83B08A-3 8 BS83B08A-4 M1 K5~K8 M0 K1~K4 BS83B12A-3 12 M1 K5~K8 BS83B12A-4 M2 K9~K12 M0 K1~K4 M1 K5~K8 BS83B16A-3 16 BS83B16A-4 M2 K9~K12 M3 K13~K16 共用 I/O 口 PA5, PA1, PA3, PA4 PB0~PB3 PB4~PB7 PB0~PB3 PB4~PB7 PC0~PC3 PB0~PB3 PB4~PB7 PC0~PC3 PC4~PC7 触摸按键寄存器描述 每个触摸按键模块包含四个触摸按键功能,且都有自己相匹配的寄存器。 以 下 表 格 显 示 了 每 个 触 摸 按 键 模 块 的 寄 存 器 设 置。 寄 存 器 名 称 里 的 Mn, BS83B04A-4 触 摸 按 键 模 块 的 序 号 为 M0,BS83B08A-3/BS83B08A-4 为 触 摸 按键模块的序号 M0~M1,BS83B12A-3/BS83B12A-4 为触摸按键模块的序号 M0~M2,BS83B16A-3/BS83B16A-4 为触摸按键模块的序号 M0~M3。 名称 TKTMR TKC0 TK16DL TK16DH TKC1 TKMn16DL TKMn16DH TKMnROL TKMnROH TKMnC0 TKMnC1 作用 触控按键 8 位定时 / 计数器寄存器 计数器开关和清零控制 / 参考时钟控制 / 开始位 16 位计数器低字节内容 16 位计数器高字节内容 触控按键振荡器频率选择 模块 n 16 位 C/F 计数器低字节计数器 模块 n 16 位 C/F 计数器高字节计数器 参考振荡器内建电容选择 参考振荡器内建电容选择 控制寄存器 0 复用按键选择 控制寄存器 1 按键振荡器控制 / 参考振荡器控制 /I/O 或触控按键选择 寄存器列表 Rev.1.40 67 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 单片机 BS83B04A-4 其它型号 所有型号 位 寄存器 名称 7 6 5 TKC0 — TKRCOV TKST TKM0C1 M0TSS — TKC0 — TKRCOV TKMnC1 MnTSS — 4 3 TKCFOV TK16OV M0ROEN M0KOEN M0K4IO TKST TKCFOV TK16OV MnROEN MnKOEN MnK4IO 2 1 0 — TK16S1 TK16S0 M0K3IO M0K2IO M0K1IO TSCS TK16S1 TK16S0 MnK3IO MnK2IO MnK1IO TKTMR D7 D6 D5 D4 D3 D2 D1 D0 TK16DL D7 D6 D5 D4 D3 D2 D1 D0 TK16DH D15 D14 D13 D12 D11 D10 D9 D8 TKC1 — — — — — — TKFS1 TKFS0 TKMn16DL D7 D6 D5 D4 D3 D2 D1 D0 TKMn16DH D15 D14 D13 D12 D11 D10 D9 D8 TKMnROL D7 D6 D5 D4 D3 D2 D1 D0 — — — — — TKMnROH TKMnC0 MnMXS1 MnMXS0 MnDFEN MnFILEN MnSOFC — D9 D8 MnSOF2 MnSOF1 MnSOF0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 触控按键寄存器列表 (n=0~3) TKTMR 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 3 D3 R/W 0 触控按键 8 位定时 / 计数器寄存器 时隙计数器溢出设定的时间为 (256-TKTMR[7:0]) × 32 TKC0 寄存器 – BS83B04A-4 Bit Name R/W POR Rev.1.40 7 — — — 6 TKRCOV R/W 0 5 TKST R/W 0 4 3 TKCFOV TK16OV R/W R/W 0 0 2 — — — 1 0 TK16S1 TK16S0 R/W R/W 0 0 Bit 7 未定义,读为 “0” Bit 6 TKRCOV:时隙计数器溢出标志位 0:无溢出 1:溢出 如果模块 0 时隙计数器溢出,则触控按键中断请求标志位将会被置位 (TKMF) 且模块 0 按键振荡器和参考振荡器自动停止。模块 0 的 16 位 C/F 计数器、16 位 计数器、5 位时隙计数器和 8 位时隙时钟计数器都会自动关闭。 Bit 5 TKST:开启触控按键检测控制位 0:停止 0 → 1:开启 当该位为“0”时,模块 0 的 16 位 C/F 计数器、16 位计数器和 5 位时隙计数器 会自动清零(8 位可编程时隙计数器不清,由用户设定溢出时间)。当该位由 0 → 1 时,16 位 C/F 计数器、16 位计数器、5 位时隙计数器和 8 位时隙时钟计数 器都会自动开启,并使能按键振荡器和参考振荡器输出时钟输入到这些计数器。 Bit 4 TKCFOV:触控按键模块 16 位 C/F 计数器溢出标志位 0:无溢出 1:溢出 该位必须通过软件清零。 68 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 Bit 3 TK16OV:触控按键模块 16 位计数器溢出标志位 0:无溢出 1:溢出 该位必须通过软件清零。 Bit 2 未定义,读为 “0” Bit 1~0 TK16S1~ TK16S0:触控按键模块 16 位计数器时钟选择位 00:fSYS 01:fSYS/2 10:fSYS/4 11:fSYS/8 TKC0 寄存器 – 除 BS83B04A-4 外 Bit Name R/W POR Rev.1.40 7 — — — 6 5 4 3 2 1 0 TKRCOV TKST TKCFOV TK16OV TSCS TK16S1 TK16S0 R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 Bit 7 未定义,读为“0” Bit 6 TKRCOV:时隙计数器溢出标志位 0:无溢出 1:溢出 如果模块 0 或所有模块 ( 通过 TSCS 位选择 ) 时隙计数器溢出,则触控按键中断 请求标志位将会被置位 (TKMF) 且所有模块按键振荡器和参考振荡器自动停止。 所有模块的 16 位 C/F 计数器、16 位计数器、5 位时隙计数器和 8 位时隙时钟计 数器都会自动关闭。 Bit 5 TKST:开启触控按键检测控制位 0:停止 0 → 1:开启 当该位为“0”时,所有模块的 16 位 C/F 计数器、16 位计数器和 5 位时隙计数 器会自动清零(8 位可编程时隙计数器不清,由用户设定溢出时间)。当该位由 0 → 1 时,16 位 C/F 计数器、16 位计数器、5 位时隙计数器和 8 位时隙时钟计数 器都会自动开启,并使能按键振荡器和参考振荡器输出时钟输入到这些计数器。 Bit 4 TKCFOV:触控按键模块 16 位 C/F 计数器溢出标志位 0:无溢出 1:溢出 该位必须通过软件清零。 Bit 3 TK16OV:触控按键模块 16 位计数器溢出标志位 0:无溢出 1:溢出 该位必须通过软件清零。 Bit 2 TSCS:触控按键时隙计数器选择位 0:每个模块使用自己的时隙计数器 1:所有触控按键模块使用模块 0 的时隙计数器 Bit 1~0 TK16S1~TK16S0:触控按键模块 16 位计数器时钟选择位 00:fSYS 01:fSYS/2 10:fSYS/4 11:fSYS/8 69 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 TKC1 寄存器 Bit Name R/W POR 7 — — — 6 — — — 5 — — — 4 — — — 3 — — — 2 — — — 1 TKFS1 R/W 1 0 TKFS0 R/W 1 3 D3 R 0 2 D2 R 0 1 D1 R 0 0 D0 R 0 3 D3 R 0 2 D2 R 0 1 D1 R 0 0 D0 R 0 4 D4 R 0 3 D3 R 0 2 D2 R 0 1 D1 R 0 0 D0 R 0 4 D4 R 0 3 D3 R 0 2 D2 R 0 1 D1 R 0 0 D0 R 0 Bit 7~2 未定义,读为“0” Bit 1~0 TKFS1~TKFS0:触控按键振荡器频率选择位 00:500kHz 01:1000kHz 10:1500kHz 11:2000kHz TK16DL 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R 0 6 D6 R 0 5 D5 R 0 4 D4 R 0 触控按键模块 16 位计数器低字节内容 TK16DH 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R 0 6 D6 R 0 5 D5 R 0 4 D4 R 0 触控按键模块 16 位计数器高字节内容 TKMn16DL 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R 0 6 D6 R 0 5 D5 R 0 模块 n 16 位计数器低字节内容 TKMn16DH 寄存器 Bit Name R/W POR Bit 7~0 Rev.1.40 7 D7 R 0 6 D6 R 0 5 D5 R 0 模块 n 16 位计数器高字节内容 70 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 TKMnROL 寄存器 Bit Name R/W POR Bit 7~0 7 D7 R/W 0 6 D6 R/W 0 5 D5 R/W 0 4 D4 R/W 0 3 D3 R/W 0 2 D2 R/W 0 1 D1 R/W 0 0 D0 R/W 0 2 — — — 1 D9 R/W 0 0 D8 R/W 0 参考振荡器内建电容选择 振荡器内建电容选择为 (TKMnRO[9:0] × 50pF)/1024 TKMnROH 寄存器 Bit Name R/W POR 7 — — — 6 — — — 5 — — — 4 — — — 3 — — — Bit 7~2 未定义,读为“0” Bit 1~0 参考振荡器内建电容选择 振荡器内建电容选择为 (TKMnRO[9:0] × 50pF)/1024 TKMnC0 寄存器 Bit 7 6 5 4 3 2 1 0 Name MnMXS1 MnMXS0 MnDFEN MnFILEN MnSOFC MnSOF2 MnSOF1 MnSOF0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 0 0 0 0 Bit 7~6 MnMXS1, MnMXS0:复用按键选择位 Bit MnMXS1 MnMXS0 0 0 0 1 1 0 1 1 M3 Key 13 Key 14 Key 15 Key 16 Bit 5 MnDFEN:倍频功能控制位 0:除能 1:使能 Bit 4 MnFILEN:滤波器功能控制位 0:除能 1:使能 MnSOFC:C → F 振荡器跳频功能选择位 0:软件处理跳频功能,由 MnSOF2~MnSOF0 位决定 C → F 振荡器微调频率 1:硬件处理跳频功能,MnSOF2~MnSOF0 位无作用 当选择由硬件处理跳频功能时,由 MnSOF2~MnSOF0 选择的时隙计数器的 3 个 MSB 自动调整 C → F 振荡器微调频率。 Bit 3 Rev.1.40 M0 Key 1 Key 2 Key 3 Key 4 模块序号 M1 M2 Key 5 Key 9 Key 6 Key 10 Key 7 Key 11 Key 8 Key 12 71 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 Bit 2~0 MnSOF2~MnSOF0:C → F 振荡器由软件选择按键振荡器和参考振荡器频率 000:1380kHz 001:1500kHz 010:1670kHz 011:1830kHz 100:2000kHz 101:2230kHz 110:2460kHz 111:2740kHz 上述频率会依外挂或是内建电容值的不同而变。触控按键振荡器频率选择 2MHz,选择其他频率时依比例调整。 TKM0C1 寄存器 – BS83B04A-4 Bit 7 Name M0TSS R/W R/W POR 0 Bit 7 6 — — — 5 4 3 2 1 0 M0ROEN M0KOEN M0K4IO M0K3IO M0K2IO M0K1IO R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 M0TSS:时隙计数器时钟选择位 0:参考振荡器 1:fSYS/4 Bit 6 未定义,读为“0” Bit 5 M0ROEN:参考振荡器控制位 0:除能 1:使能 Bit 4 M0KOEN:按键振荡器控制位 0:除能 1:使能 Bit 3~0 M0K4IO~ M0K1IO:I/O 引脚或触控按键功能选择 M0K4IO 0 1 M0K3IO 0 1 M0K2IO 0 1 M0K1IO 0 1 Rev.1.40 72 M0 PA4/Key 4 I/O 触控按键 M0 PA3/Key 3 I/O 触控按键 M0 PA1/Key 2 I/O 触控按键 M0 PA5/Key 1 I/O 触控按键 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 TKMnC1 寄存器 – 除 BS83B04A-4 外 Bit 7 Name MnTSS R/W R/W POR 0 Bit 7 6 — — — 5 4 3 2 1 0 MnROEN MnKOEN MnK4IO MnK3IO MnK2IO MnK1IO R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 MnTSS:时隙计数器时钟选择位 0:参考振荡器 1:fSYS/4 Bit 6 未定义,读为“0” Bit 5 MnROEN:参考振荡器控制位 0:除能 1:使能 Bit 4 MnKOEN:按键振荡器控制位 0:除能 1:使能 Bit 3~0 MnK4IO~MnK1IO:I/O 引脚或触控按键功能选择 MnK4IO M0 PB3/Key4 M1 PB7/Key8 M2 M3 PC3/Key12 PC7/Key16 I/O 触控按键 M0 PB2/Key3 M1 PB6/Key7 M0 PB1/Key2 M1 PB5/Key6 M0 PB0/Key1 M1 PB4/Key5 0 1 MnK3IO M2 M3 PC2/Key11 PC6/Key15 I/O 触控按键 0 1 MnK2IO M2 M3 PC1/Key10 PC5/Key14 I/O 触控按键 0 1 MnK1IO 0 1 Rev.1.40 M2 PC0/Key9 M3 PC4/Key13 I/O 触控按键 73 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 触摸按键操作 手指接近或接触到触摸面板时,面板的电容量会增大,电容量的变化会轻微改 变内部感应振荡器的频率,通过测量频率的变化可以感知触摸动作。参考时钟 通过内部可编程分频器能够产生一个固定的时间周期。在这个时间周期内,通 过对感应振荡器产生的时钟周期计数,可确定触摸按键的动作。 在参考时钟固定的时间间隔内,感应振荡器产生的时钟周期数是可以测量的。 这个周期数可以用于判断触摸动作是否发生。每个触控按键模块包含四个与 I/O 引脚共用的触控按键。通过寄存器可设置相应引脚功能。 通过设置 TKC0 寄存器中的 TSCS 位可以选择模块 0 的时隙计数器作为所有模 块的时隙计数器。全部的触控按键模块共用一个起始信号,在 TKC0 寄存器 中的 TKST 下降沿时,所有模块的 16 位 C/F 计数器、16 位计数器和 5 位时隙 计数器会自动清零 (8 位可编程时隙计数器不清,由用户设定溢出时间 )。在 TKST 上升沿时,16 位 C/F 计数器、16 位计数器、5 位时隙计数器和 8 位时隙 计数器会自动开启。 5 位时隙计数器溢出,所有模块的按键振荡器和参考振荡器都会自动停止且 16 位 C/F 计数器、16 位计数器、5 位时隙计数器和 8 位时隙计数器会自动停止。 时隙计数器 (8+5 位计数器 ) 时钟来自参考振荡器或 fSYS/4。当 TKMnC1 寄存器 中的 MnROEN 位为“1”时,选到的参考振荡器就使能。当 TKMnC1 寄存器中 的 MnKOEN 为“1”时,选到的按键振荡器就使能。 当所有触控按键模块的时隙计数器都溢出时 ( 或模块 0 时隙计数器溢出 ),才产 生中断。这里所有的触控按键是指已使能的触控按键。 每 4 个按键为一个模块,所以 Key 1~Key 4 为模块 0,Key 5~Key 8 为模块 1, Key 9~Key 12 为模块 2,Key 13~Key 16 为模块 3。每个模块都是相同的架构。 Rev.1.40 74 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 KEY 1 KEY OSC KEY 2 KEY OSC MUX. KEY 3 KEY OSC KEY 4 KEY OSC Filter fSYS,fSYS/2,fSYS/4,fSYS/8 16-bit C/F counter Multi-frequency 16-bit counter Overflow Overflow TK16S1~TK16S0 MnTSS Ref OSC MUX. 8-bit time slot timer counter 5-bit time slot counter fSYS/4 8-bit time slot timer counter preload register Overflow Overflow 注:虚线部分是每个触控按键都单独有的部分。 触摸按键模块方框图 Rev.1.40 75 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 触控感应振荡器和参考振荡器时序图如下所示: TKST MnKOEN MnROEN Hardware clear to "0" KEY OSC CLK Reference OSC CLK (256-TKTMR) overflow *32 fCFTMCK enable fCFTMCK (MnDFEN=0) fCFTMCK (MnDFEN=1) TKRCOV Set Touch Key interrupt request flag                                                                                                                                                                              触摸按键或输入 / 输出功能选择 Rev.1.40 76 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 触摸按键中断 所有触控按键只有一个中断,所有触控按键模块的时隙计数器都溢出时 ( 或模 块 0 时隙计数器溢出 ),才产生中断,此时所有模块的 16 位 C/F 计数器、16 位 计数器,5 位时隙计数器和 8 位时隙计数器会自动清零。 任何一个触控按键模块的 16 位 C/F 计数器溢出就会把 16 位 C/F 计数器溢出标 志位 TKCFOV 设为“1”,此中断标志位不会自动复位,必须通过应用程序将 其复位。 模块 0 中只保留一组 16 位计数器,16 位计数器溢出就会把 16 位计数器溢出标 志位 TK16OV 设为“1”,此中断标志位不会自动复位,必须通过应用程序将 其复位。触控按键中断的详细说明见中断部分。 编程注意事项 相关寄存器设置后,TKST 位由低电平变为高电平,触控按键检测程序初始化。 此时所有相关的振荡器将使能并同步。时隙计数器标志位 TKRCOV 将变为高 电平直到计数器溢出。计数器溢出发生时,将会产生一个中断信号。 当外部触控按键的大小和布局确定时,其相关的电容将决定感应振荡器的频率。 串行接口模块 – SIM 该系列除 BS83B04A-4 外的单片机内有一个串行接口模块,包括两种易与外部 设备通信的串行接口:四线 SPI 或两线 I2C 接口,而单片机 BS83B04A-4 只包 含 I2C 接口。这两种接口具有相当简单的通信协议,单片机可以通过这些接口 与传感器、闪存或 EEPROM 内存等硬件设备通信。SIM 接口的引脚与其它的 I/ O 引脚共用,所以要使用 SIM 功能时应在 SIMC0 寄存器中用 SIMEN 位来将其 使能。因为这两种接口共用引脚和寄存器,所以要通过一个 SIMC0 寄存器中的 SIM2~SIM0 位来选择哪一种通信接口。 SPI 接口 SPI 接口常用于与外部设备如传感器、闪存或 EEPROM 内存等通信。四线 SPI 接口最初是由摩托罗拉公司研制,是一个有相当简单的通信协议的串行数据接 口,这个协议可以简化与外部硬件的编程要求。 SPI 通信模式为全双工模式,且能以主 / 从模式的工作方式进行通信,单片机既 可以做为主机,也可以做为从机。虽然 SPI 接口理论上允许一个主机控制多个 从机,但此处的 SPI 中只有一个片选信号引脚。若主机需要控制多个从机,可 使用输入 / 输出引脚选择从机。 Rev.1.40 77 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 SPI 接口操作 SPI 接口是一个全双工串行数据传输器。SPI 接口的四线为:SDI、SDO、SCK 和 SCS。SDI 和 SDO 是 数 据 的 输 入 和 输 出 线。SCK 是 串 行 时 钟 线,SCS 是 从机的选择线。SPI 的接口引脚与普通 I/O 口和 I2C 的功能脚共用。通过设定 SIMC0/SIMC2 寄存器的对应位,来使能 SPI 接口。连接到 SPI 接口的单片机以 主 / 从模式进行通信,且主机完成所有的数据传输初始化,并控制时钟信号。 由于单片机只有一个 SCS 引脚,所以只能拥有一个从机设备。可通过软件控制 SCS 引脚使能与除能,设置 CSEN 位为“1”使能 SCS 功能,设置 CSEN 位为“0” SCS 引脚将作为普通输入 / 输出引脚。                                      SPI 主 / 从机连接方式 该系列单片机的 SPI 功能具有以下特点: ● 全双工同步数据传输 ● 主从模式 ● 最低有效位先传或最高有效位先传的数据传输模式 ● 传输完成标志位 ● 时钟源上升沿或下降沿有效 SPI 接 口 状 态 受 很 多 因 素 的 影 响, 如 单 片 机 处 于 主 机 或 从 机 的 工 作 模 式 和 CSEN,SIMEN 位的状态。                    ƒ  † …   ƒ     …                    ƒ         ­  €     ‚                                                       „ …  SPI 方框图 Rev.1.40 78 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 SPI 寄存器 有三个内部寄存器用于控制 SPI 接口的所有操作,其中有一个数据寄存器 SIMD、两个控制寄存器 SIMC0 和 SIMC2。注意,SIMC1 寄存器仅用于 I2C 接口。 寄存器 名称 SIMC0 SIMD SIMC2 Bit 7 SIM2 D7 — 6 SIM1 D6 — 5 4 SIM0 — D5 D4 CKPOLB CKEG 3 — D3 MLS 2 — D2 CSEN 1 SIMEN D1 WCOL 0 — D0 TRF SPI 寄存器列表 SIMD 用于存储发送和接收的数据。这个寄存器由 SPI 和 I2C 功能所共用。在 单片机尚未将数据写入到 SPI 总线中时,要传输的数据应先存在 SIMD 中。SPI 总线接收到数据之后,单片机就可以从 SIMD 数据寄存器中读取。所有通过 SPI 传输或接收的数据都必须通过 SIMD 实现。 ● SIMD 寄存器 Bit Name R/W POR 7 D7 R/W x 6 D6 R/W x 5 D5 R/W x 4 D4 R/W x 3 D3 R/W x 2 D2 R/W x 1 D1 R/W x 0 D0 R/W x “x”表示未知 单片机中也有两个控制 SPI 接口功能的寄存器,SIMC0 和 SIMC2。应注意的是 SIMC2 与 I2C 接口功能中的的寄存器 SIMA 是同一个寄存器。SPI 功能不会用到 寄存器 SIMC1,SIMC1 只适用于 I2C 中。寄存器 SIMC0 用于控制使能 / 除能功 能和设置数据传输的时钟频率。SIMC0 与 SPI 功能有关,也用于控制外部时钟 分频。寄存器 SIMC2 用于其它的控制功能如 LSB/MSB 选择,写冲突标志位等。 ● SIMC0 寄存器 Bit Name R/W POR Rev.1.40 7 SIM2 R/W 0 6 SIM1 R/W 0 5 SIM0 R/W 0 4 — — — 3 — — — 2 — — — 1 SIMEN R/W 0 0 — — — Bit 7~5 SIM2~SIM0:SIM 工作模式控制位 000:SPI 主机模式;SPI 时钟为 fSYS/4 001:SPI 主机模式;SPI 时钟为 fSYS/16 010:SPI 主机模式;SPI 时钟为 fSYS/64 011:SPI 主机模式;SPI 时钟为 fSUB 100:SPI 主机模式;SPI 时钟为定时器溢出频率 /2 101:SPI 从机模式 110:I2C 从机模式 111:未使用模式 这几位用于设置 SIM 功能的工作模式,用于选择 SPI 的主从模式和 SPI 的主机 时钟频率及 I2C 或 SPI 功能。SPI 时钟源可来自于系统时钟也可以选择来自 fSUB 或定时 / 计数器。若选择的是作为 SPI 从机,则其时钟源从外部主机而得。 Bit 4~2 未定义,读为“0” Bit 1 SIMEN:SIM 控制位 0:除能 1:使能 79 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 此 位 为 SIM 接 口 的 开 / 关 控 制 位。 此 位 为“0” 时,SIM 接 口 除 能,SDI、 SDO、SCK 和 SCS 或 SDA 和 SCL 脚用于输入 / 输出功能,SIM 工作电流减小 到最小值。此位为“1”时,SIM 接口使能。若 SIM 经由 SIM2~SIM0 位设置 为工作在 SPI 接口,当 SIMEN 位由低到高转变时,SPI 控制寄存器中的设置不 会发生变化,其首先应在应用程序中初始化。若 SIM 经由 SIM2~SIM0 位设置 为工作在 I2C 接口,当 SIMEN 位由低到高转变时,I2C 控制寄存器中的设置, 如 HTX 和 TXAK,将不会发生变化,其首先应在应用程序中初始化,此时相关 I2C 标志,如 HCF、HAAS、HBB、SRW 和 RXAK,将被设置为其默认状态。 Bit 0 未定义,读为“0” ● SIMC2 寄存器 Bit Name R/W POR Rev.1.40 7 — — — 6 — — — 5 4 CKPOLB CKEG R/W R/W 0 0 3 MLS R/W 0 2 CSEN R/W 0 1 WCOL R/W 0 0 TRF R/W 0 Bit 7~6 未定义,读为“0” Bit 5 CKPOLB:时钟线的基础状态位 0:当时钟无效时,SCK 口为高电平 1:当时钟无效时,SCK 口为低电平 此位决定了时钟线的基础状态,当时钟无效时,若此位为高,SCK 为低电平, 若此位为低,SCK 为高电平。 Bit 4 CKEG:SPI 的 SCK 有效时钟边沿类型位 CKPOLB=0 0:SCK 为高电平且在 SCK 上升沿抓取数据 1:SCK 为高电平且在 SCK 下降沿抓取数据 CKPOLB=1 0:SCK 为低电平且在 SCK 下降沿抓取数据 1:SCK 为低电平且在 SCK 上升沿抓取数据 CKEG 和 CKPOLB 位用于设置 SPI 总线上时钟信号输入和输出方式。在执行数 据传输前,这两位必须被设置,否则将产生错误的时钟边沿信号。CKPOLB 位 决定时钟线的基本状态,若时钟无效且此位为高,则 SCK 为低电平,若时钟 无效且此位为低,则 SCK 为高电平。CKEG 位决定有效时钟边沿类型,取决于 CKPOLB 的状态。 Bit 3 MLS:SPI 数据移位命令位 0:LSB 1:MSB 数据移位选择位,用于选择数据传输时高位优先传输还是低位优先传输。此位 设置为高时高位优先传输,为低时低位优先传输。 Bit 2 CSEN:SPI SCS 引脚控制位 0:除能 1:使能 CSEN 位用于 SCS 引脚的使能 / 除能控制。此位为低时,SCS 除能并处于浮空 状态。此位为高时,SCS 作为选择脚。 Bit 1 WCOL:SPI 写冲突标志位 0:无冲突 1:冲突 WCOL 标志位用于监测数据冲突的发生。此位为高时,数据在传输时被写入 SIMD 寄存器。若数据正在被传输时,此操作无效。此位可被应用程序清零。 Bit 0 TRF:SPI 发送 / 接收结束标志位 0:数据正在发送 1:数据发送结束 TRF 位为发送 / 接收结束标志位,当 SPI 数据传输结束时,此位自动置为高, 但须通过应用程序设置为“0”。此位也可用于产生中断。 80 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 SPI 通信 将 SIMEN 设置为高,使能 SPI 功能之后,单片机处于主机模式,当数据写入 到寄存器 SIMD 的同时传输 / 接收开始进行。数据传输完成时,TRF 位将自动 被置位但清除只能通过应用程序完成。单片机处于从机模式时,收到主机发来 的信号之后,会传输 SIMD 中的数据,而且在 SDI 引脚上的数据也会被移位 到 SIMD 寄存器中。主机应在输出时钟信号之前先输出一个 SCS 信号以使能 从机,从机的数据传输功能也应在与 SCS 信号相关的适当时候准备就绪,这由 CKPOLB 和 CKEG 位决定。所附时序图表明了在 CKPOLB 和 CKEG 位各种设 置情况下从机数据与 SCS 信号的关系。 即使在单片机处于空闲模式,SPI 功能仍将继续执行。                                                                                                                               ­  €  ‚  ‚  €  ­                                  ­  €  ‚  ‚  €  ­                     ƒ   „    SPI 主机模式时序                                                                                             ­€          SPI 从机模式时序 -- CKEG=0 Rev.1.40 81 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机                                                                                                      ­    €‚    €      ƒ   „ …     ‚ † ‡  ˆ ‰€  Š ƒ     ˆ   Š ƒ   ‰    ‚   ‹     Œ ‚ ˆ   ˆ         ‚ † ‚Ž SPI 从机模式时序 -- CKEG=1                                            †‡ ˆ‰ Š ‰ ‰ ‰ „ ‰ ‰  „‰  ‰ „‰     ‰ ‰             †‡ ˆ‰ Š  ‰      ­ €    ‚   ƒ „  ‚  … „                                                                             SPI 传输控制流程图 Rev.1.40 82 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 I2C 接口 I2C 可以和传感器,EEPROM 内存等外部硬件接口进行通信。最初是由飞利浦 公司研制,是适用于同步串行数据传输的双线式低速串行接口。I2C 接口具有两 线通信,非常简单的通信协议和在同一总线上和多个设备进行通信的能力的优 点,使之在很多的应用场合中大受欢迎。                                      I2C 主从总线连接图 I2C 接口操作 I2C 串行接口是一个双线的接口,有一条串行数据线 SDA 和一条串行时钟线 SCL。由于可能有多个设备在同一条总线上相互连接,所以这些设备的输出都 是开漏型输出。因此应在这些输出口上都应加上拉电阻。应注意的是:I2C 总线 上的每个设备都没有选择线,但分别与唯一的地址一一对应,用于 I2C 通信。 如果有两个设备通过双向的 I2C 总线进行通信,那么就存在一个主机和一个从 机。主机和从机都可以用于传输和接收数据,但只有主机才可以控制总线动作。 那些处于从机模式的设备,要在 I2C 总线上传输数据只有两种方式,一是从机 发送模式,二是从机接收模式。                                 ‡    ‡                                                                                  † €            „        …   ‚   €     €    ƒ   „                          ­ €                      †        I2C 方框图 Rev.1.40 83 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 I2C 接口的去抖时间是使用内部时钟在外部时钟上增加一个去抖间隔,会减小时 钟线上毛刺发生的可能性,以避免单片机发生误动作。对于除 BS83B04A-4 外 的单片机,去抖时间为 2 个系统时钟,而对于 BS83B04A-4,去抖时间可通过 寄存器 IICC0 选择。系统时钟 fSYS 和 I2C 去抖时间存在相关连以达到所需的 I2C 数据传输速度。在 I2C 标准模式或者快速模式操作下,使用者必须注意系统时 钟频率的选择和去抖时间,相关标准如下表所示: I2C 去抖时间选择 2 个去抖系统时钟 I2C 标准模式(100kHz) fSYS > 4MHz I2C 快速模式(400kHz) fSYS > 10MHz I2C 最小 fSYS 频率(除 BS83B04A-4 外) S T A R T s ig n a l fro m M a s te r S e n d s la v e a d d r e s s a n d R /W b it fr o m M a s te r A c k n o w le d g e fr o m s la v e S e n d d a ta b y te fro m M a s te r A c k n o w le d g e fr o m s la v e S T O P s ig n a l fro m M a s te r I2C 寄存器(除 BS83B04A-4 外) I2C 总线的四个控制寄存器是 SIMC0,SIMC1,SIMA 和 I2CTOC 及一个数据寄 存器 SIMD。 SIMD 寄存器,SPI 章节中已有介绍,用于存储正在传输和接收的 数据,当单片机将数据写入 I2C 总线之前,实际将被传输的数据存放在寄存器 SIMD 中。从 I2C 总线接收到数据之后,单片机就可以从寄存器 SIMD 中得到这 个数据。I2C 总线上的所有传输或接收到的数据都必须通过 SIMD。SIM 引脚与 I/O 口共用,通过 SIMC0 中的 SIMEN 位来使能。 应注意的是 SIMA 也有另外一个名字,SIMC2,使用 SPI 功能时会用到。I2C 接 口会用到寄存器 SIMC0 中的 SIMEN 位和 SIM0~SIM2 位。 位 7 6 5 4 3 2 1 0 SIMC0 SIM2 SIM1 SIM0 — — — SIMEN — SIMC1 HCF HAAS HBB HTX TXAK SRW RNIC RXAK SIMD D7 D6 D5 D4 D3 D2 D1 D0 SIMA A6 A5 A4 IA3 A2 A1 A0 — I2CTOC I2CTOEN I2CTOF I2CTOS5 I2CTOS4 I2CTOS3 I2CTOS2 I2CTOS1 I2CTOS0 寄存器 名称 I2C 寄存器列表 Rev.1.40 84 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 ● SIMC0 寄存器 Bit Name R/W POR Rev.1.40 7 SIM2 R/W 0 6 SIM1 R/W 0 5 SIM0 R/W 0 4 — — — 3 — — — 2 — — — 1 SIMEN R/W 0 0 — — — Bit 7~5 SIM2~SIM0:SIM 工作模式控制位 000:SPI 主机模式;SPI 时钟为 fSYS/4 001:SPI 主机模式;SPI 时钟为 fSYS/16 010:SPI 主机模式;SPI 时钟为 fSYS/64 011:SPI 主机模式;SPI 时钟为 fSUB 100:SPI 主机模式;SPI 时钟为定时器溢出频率 /2 101:SPI 从机模式 110:I2C 从机模式 111:未使用模式 这几位用于设置 SIM 功能的工作模式,用于选择 SPI 的主从模式和 SPI 的主机 时钟频率及 I2C 或 SPI 功能。SPI 时钟源可来自于系统时钟也可以选择来自 fSUB 或定时 / 计数器。若选择的是作为 SPI 从机,则其时钟源从外部主机而得。 Bit 4~2 未定义,读为“0” Bit 1 SIMEN:SIM 控制位 0:除能 1:使能 此 位 为 SIM 接 口 的 开 / 关 控 制 位。 此 位 为“0” 时,SIM 接 口 除 能,SDI、 SDO、SCK 和 SCS 或 SDA 和 SCL 脚作为输入 / 输出引脚,SIM 工作电流减小 到最小值。此位为“1”时,SIM 接口使能。若 SIM 经由 SIM2~SIM0 位设置 为工作在 SPI 接口,当 SIMEN 位由低到高转变时,SPI 控制寄存器中的设置不 会发生变化,其首先应在应用程序中初始化。若 SIM 经由 SIM2~SIM0 位设置 为工作在 I2C 接口,当 SIMEN 位由低到高转变时,I2C 控制寄存器中的设置, 如 HXT 和 TXAK,将不会发生变化,其首先应在应用程序中初始化,此时相关 I2C 标志,如 HCF、HAAS、HBB、SRW 和 RXAK,将被设置为其默认状态。 Bit 0 未定义,读为“0” 85 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 ● SIMC1 寄存器 Bit Name R/W POR Rev.1.40 7 HCF R 1 6 HAAS R 0 5 HBB R 0 4 HTX R/W 0 3 TXAK R/W 0 2 SRW R 0 1 RNIC R/W 0 0 RXAK R 1 Bit 7 HCF:I2C 总线数据传输结束标志位 0:数据正在被传输 1:8 位数据传输完成 HCF 是数据传输标志位。数据正在传输时该位为低。当 8 位数据传输完成时, 此位为高并产生一个中断。 Bit 6 HAAS:I2C 地址匹配标志位 0:地址不匹配 1:地址匹配 此标志位用于决定从机地址是否与主机发送地址相同。若地址匹配此位为高, 否则此位为低。 Bit 5 HBB:I2C 总线忙标志位 0:I2C 总线闲 1:I2C 总线忙 当检测到 START 信号时 I2C 忙,此位变为高电平。当检测到 STOP 信号时 I2C 总线停止,该位变为低电平。 Bit 4 HTX:从机处于发送或接收模式标志位 0:从机处于接收模式 1:从机处于发送模式 Bit 3 TXAK:I2C 总线发送确认标志位 0:从机发送确认标志 1:从机没有发送确认标志 单片机接收 8 位数据之后会将该位在第九个时钟传到总线上。如果单片机想要 接收更多的数据,则应在接收数据之前将此位设置为“0”。 Bit 2 SRW:I2C 从机读 / 写位 0:从机应处于接收模式 1:从机应处于发送模式 SRW 位是从机读写位。决定主机是否希望传输或接收来自 I2C 总线的数据。当 传输地址和从机的地址相同时,HAAS 位会被设置为高,主机将检测 SRW 位来 决定进入发送模式还是接收模式。如果 SRW 位为高时,主机会请求从总线上读 数据,此时设备处于传输模式。当 SRW 位为“0”时,主机往总线上写数据, 设备处于接收模式以读取该数据。 Bit 1 RNIC:I2C 内部时钟使用控制位 0:I2C 使用内部时钟 1:I2C 未使用内部时钟 I2C 模块不需要内部时钟也能工作,如果 SIM 中断使能会产生中断,该中断可 用于 SLEEP 模式、IDLE 模式、NORMAL(SLOW) 模式。如果此位为“1”且单 片机处于 HALT 模式,则从机接收方可以正常工作但是从机发送方不能正常工 作因为它需要系统时钟。 Bit 0 RXAK:I2C 总线接收确认标志位 0:从机接收到确认标志 1:从机没有接收到确认标志 RXAK 位是接收确认标志位。如果 RXAK 位被重设为“0”即 8 位数据传输之 后,设备在第九个时钟有接受到一个正确的确认位。如果单片机处于发送状态, 发送方会检查 RXAK 位来判断接收方是否愿意继续接收下一个字节。因此直到 RXAK 为“1”时,传输方停止发送数据。这时,传输方将释放 SDA 线,主机 发出停止信号。 86 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 ● I2CTOC 寄存器 Bit 7 6 5 4 3 2 1 0 Name I2CTOEN I2CTOF I2CTOS5 I2CTOS4 I2CTOS3 I2CTOS2 I2CTOS1 I2CTOS0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 0 0 0 0 Bit 7 I2CTOEN:I2C 超时控制位 0:除能 1:使能 Bit 6 I2CTOF:I2C 超时标志位 0:没有超时 1:超时发生 Bit 5~0 I2CTOS5~I2CTOS0:I2C 超时时间定义位 I2C 超时时钟源是 fSUB/32 I2C 超时时间计算方法:([I2CTOS5 : I2CTOS0]+1) × (32/fSUB) SIMD 用于存储发送和接收的数据。这个寄存器由 SPI 和 I2C 功能所共用。在单 片机尚未将数据写入到 I2C 总线中时,要传输的数据应存在 SIMD 中。I2C 总线 接收到数据之后,单片机就可以从 SIMD 数据寄存器中读取。所有通过 I2C 传 输或接收的数据都必须通过 SIMD 实现。 ● SIMD 寄存器 Bit Name R/W POR 7 D7 R/W x 6 D6 R/W x 5 D5 R/W x 4 D4 R/W x 3 D3 R/W x 2 D2 R/W x 1 D1 R/W x 0 D0 R/W x “x”表示未知 ● SIMA 寄存器 Bit Name R/W POR 7 A6 R/W x 6 A5 R/W x 5 A4 R/W x 4 A3 R/W x 3 A2 R/W x 2 A1 R/W x 1 A0 R/W x 0 — — — “x”表示未知 Rev.1.40 Bit 7~1 A6~A0:I C 从机地址位 A6~A0 是从机地址对应的 6~0 位。此寄存器也在 SPI 接口功能中使用,但其名 称改为 SIMC2。SIMA 寄存器用于存放 7 位从机地址,寄存器 SIMA 中的第 7~1 位是单片机的从机地址,位 0 未定义。如果接至 I2C 的主机发送处的地址和寄存 器 SIMA 中存储的地址相符,那么就选中了这个从机。应注意的是寄存器 SIMA 和 SPI 接口使用的寄存器 SIMC2 是同一个寄存器。 Bit 0 未定义,读为“0” 2 87 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 I2C 寄存器 – BS83B04A-4 I2C 总线的四个控制寄存器是 IICC0, IICC1, IICA 和 I2CTOC 及一个数据寄存器 IICD。IICD 寄存器用于存储正在传输和接收的数据,当单片机将数据写入 I2C 总线之前,实际将被传输的数据存放在寄存器 IICD 中。从 I2C 总线接收到数据 之后,单片机就可以从寄存器 IICD 中得到这个数据。I2C 总线上的所有传输或 接收到的数据都必须通过 IICD。 位 寄存器 名称 IICC0 IICC1 IICD IICA I2CTOC 7 6 5 4 3 — — — — IICDEB1 HCF HAAS HBB HTX TXAK D7 D6 D5 D4 D3 A6 A5 A4 A3 A2 I2CTOEN I2CTOF I2CTOS5 I2CTOS4 I2CTOS3 2 1 0 IICDEB0 IICEN — SRW IAMWU RXAK D2 D1 D0 A1 A0 — I2CTOS2 I2CTOS1 I2CTOS0 I2C 寄存器列表 ● IICC0 寄存器 Bit Name R/W POR 7 — — — 6 — — — 5 — — — 4 — — — 3 2 IICDEB1 IICDEB0 R/W R/W 0 0 Bit 7~4 未定义,读为“0” Bit 3~2 IICDEB1~ IICDEB0: I2C 抖动时间选择 00:无抖动 01:2 个系统时钟 10:4 个系统时钟 11:4 个系统时钟 Bit 1 IICEN:I2C 使能控制 0:除能 1:使能 Bit 0 未定义,读为“0” 1 IICEN R/W 0 0 — — — ● IICC1 寄存器 Bit Name R/W POR Rev.1.40 7 HCF R 1 6 HAAS R 0 5 HBB R 0 4 HTX R/W 0 3 TXAK R/W 0 2 SRW R 0 1 0 IAMWU RXAK R/W R 0 1 Bit 7~2 同寄存器 SIMC1 中的 bit 7~bit 2。 Bit 1 IAMWU:I2C 地址匹配唤醒控制位 0:除能 1:使能 – 唤醒后必须由应用程序清零。 此位应设置为“1”使能 I2C 地址匹配以使系统从休眠或空闲模式中唤醒。若进 入休眠或空闲模式前 IAMWU 已经设置以使能 I2C 地址匹配唤醒功能,在系统 唤醒后须软件清除此位以确保单片机正确地运行。 Bit 0 同寄存器 SIMC1 中的 bit 0。 88 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 ● IICD 寄存器 Bit Name R/W POR 7 D7 R/W x 6 D6 R/W x 5 D5 R/W x 4 D4 R/W x 3 D3 R/W x 2 D2 R/W x 1 D1 R/W x 0 D0 R/W x “x”表示未知 Bit 7~0 同寄存器 SIMD 的 bit 7~bit 0。 ● IICA 寄存器 Bit Name R/W POR Bit 7~0 7 A6 R/W 0 6 A5 R/W 0 5 A4 R/W 0 4 A3 R/W 0 3 A2 R/W 0 2 A1 R/W 0 1 A0 R/W 0 0 — — — 同寄存器 SIMA 的 bit 7~bit 0。 I2C 总线通信 I2C 总线上的通信需要四步完成,一个起始信号,一个从机地址发送,一个数据 传输,还有一个停止信号。当起始信号被写入 I2C 总线时,总线上的所有从机 都会接收到这个起始信号并且被通知总线上会即将有数据到达。数据的前 7 位 是从机地址,高位在前,低位在后。如果发出的地址和从机地址匹配,SIMC1 或 IICC1 寄存器的 HAAS 位会被置位,同时产生 I2C 中断。进入中断服务程序 后,系统要检测 HAAS 位,以判断 I2C 总线中断是来自从机地址匹配,还是来 自 8 位数据传递完毕。在数据传递中,注意的是,在 7 位从机地址被发送后, 接下来的一位,即第 8 位,是读 / 写控制位,该位的值会反映到 SRW 位中。从 机通过检测 SRW 位以确定主控制器是要进入发送模式还是接收模式。在 I2C 总 线开始传送数据前,需要先初始化 I2C 总线,初始化 I2C 总线步骤如下: ● 步骤 1 对 于 除 BS83B04A-4 外 的 单 片 机, 设 置 SIMC0 寄 存 器 中 SIM2~SIM0 和 SIMEN 位 为“1”, 而 对 于 单 片 机 BS83B04A-4, 设 置 IICC0 寄 存 器 中 的 IICEN 位为“1”,以使能 I2C 总线。 ● 步骤 2 向 I2C 总线地址寄存器 SIMA 或 IICA 写入从机地址。 ● 步骤 3 设置 SIME 或 I2CE 位,以使能 SIM 或 I2C 中断。 Rev.1.40 89 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 Start Write Slave Address to SIMA or IICA Set SIM[2:0]=110 Set SIMEN or IICEN I2C Bus Interrupt=? No Yes CLR SIME or I2CE Poll SIMF or I2CF to decide when to go to I2C Bus ISR SET SIME or I2CE Wait for Interrupt Goto Main Program Goto Main Program I2C 总线初始化流程图 I2C 总线起始信号 起始信号只能由连接 I2C 总线主机产生,而不是由只做从机的 MCU 产生。总线 上的所有从机都可以侦测到起始信号。如果有从机侦测到起始信号,则表明 I2C 总线处于忙碌状态,并会置位 HBB。起始信号是指在 SCL 为高电平时,SDA 线上发生从高到低的电平变化。   €                                       €          ­                                                                                                                      ­                      注:* 当从机地址匹配时,单片机必须选择设置为发送模式还是接收模式。若设置为发送模 式,需写数据至 SIMD 或 IICD 寄存器;若设置为接收模式,需立即从 SIMD 或 IICD 寄存器中虚读数据以释放 SCL 线。 I2C 通信时序图 Rev.1.40 90 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 从机地址 总线上的所有从机都会侦测由主机发出的起始信号。发送起始信号后,紧接 着主机会发送从机地址以选择要进行数据传输的从机。所有在 I2C 总线上的从 机接收到 7 位地址数据后,都会将其与各自内部的地址进行比较。如果从机 从主机上接收到的地址与自身内部的地址相匹配,则会产生一个 I2C 总线中断 或 IICC1 信号。地址位接下来的一位为读 / 写状态位 ( 即第 8 位 ),将被保存到 SIMC1 寄存器的 SRW 位,随后发出一个低电平应答信号(即第 9 位)。当单 片机从机的地址匹配时,会将状态标志位 HAAS 置位。 I2C 总线有两个中断源,当程序运行至中断服务子程序时,通过检测 HAAS 位 以确定 I2C 总线中断是来自从机地址匹配,还是来自 8 位数据传递完毕。当是 从机地址匹配发生中断时,则从机或是用于发送模式并将数据写进 SIMD 或 IICD 寄存器,或是用于接收模式并从 SIMD 或 IICD 寄存器中读取空值以释放 SCL 线。 I2C 总线读 / 写信号 SIMC1 或 IICC1 寄存器的 SRW 位用来表示主机是要从 I2C 总线上读取数据还 是要将数据写到 I2C 总线上。从机则通过检测该位以确定自己是作为发送方还 是接收方。当 SRW 置“1”,表示主机要从 I2C 总线上读取数据,从机则作为 发送方,将数据写到 I2C 总线;当 SRW 清“0”,表示主机要写数据到 I2C 总 线上,从机则做为接收方,从 I2C 总线上读取数据。 I2C 总线从机地址确认信号 主机发送呼叫地址后,当 I2C 总线上的任何从机内部地址与其匹配时,会发送 一个应答信号。此应答信号会通知主机有从机已经接收到了呼叫地址。如果主 机没有收到应答信号,则主机必须发送停止 (STOP) 信号以结束通信。当 HAAS 为高时,表示从机接收到的地址与自己内部地址匹配,则从机需检查 SRW 位, 以确定自己是作为发送方还是作为接收方。如果 SRW 位为高,从机须设置成 发送方,这样会置位 SIMC1 或 IICC1 寄存器的 HTX 位。如果 SRW 位为低, 从机须设置成接收方,这样会清零 SIMC1 或 IICC1 寄存器的 HTX 位。 I2C 总线数据和确认信号 在从机确认接收到从地址后,会进行 8 位宽度的数据传输。这个数据传输顺序 是的高位在前,低位在后。接收方在接收到 8 位数据后必须发出一个应答信号 (“0”) 以继续接收下一个数据。如果发送方没接收到应答信号,发送方将释放 SDA 线,同时,主机将发出 STOP 信号以释放 I2C 总线。所传送的数据存储在 SIMD 或 IICD 寄存器中。如果设置成发送方,从机必须先将欲传输的数据写到 SIMD 或 IICD 寄存器中;如果设置成接收方,从机必须从 SIMD 或 IICD 寄存 器读取数据。 当 接 收 器 想 要 继 续 接 收 下 一 个 数 据 时, 必 须 在 第 9 个 时 钟 发 出 应 答 信 号 (TXAK)。被设为发送方的从机将检测寄存器 SIMC1 或 IICC1 中的 RXAK 位以 判断是否传输下一个字节的数据,如果单片机不传输下一个字节,那么它将释 放 SDA 线并等待接收主机的停止信号。 Rev.1.40 91 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机                                                                                                                                                                                                               I2C 总线 ISR 流程图 I2C 超时控制 为了减少由于接收错误时钟源而产生的 I2C 锁定问题,系统提供了超时功能。 在固定时间内如果 I2C 总线未接收到时钟源,则 I2C 电路和寄存器将会复位。 超时计数器在 I2C 总线接收到“START”信号和“地址匹配”条件时,超时 计数器开始计数,并在 SCL 下降沿处清零。在下一个 SCL 下降沿来临之前, 如果等待时间大于 I2CTOC 寄存器设定的超时时间,则会发生超时现象。当 I2C“STOP”条件发生时,超时计数器将停止计数。 Rev.1.40 92 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 S C L S ta rt S R W S la v e A d d r e s s 0 1 S D A 1 1 0 1 0 1 A C K 0 I2 C t i m e - o u t c o u n te r s ta rt S to p S C L 1 0 0 1 0 1 0 0 S D A I2 C t im e - o u t c o u n t e r r e s e t o n S C L n e g a tiv e tr a n s itio n I2C 超时时序图 当 I2C 超 时 计 数 器 溢 出 时, 计 数 器 将 停 止 计 数,I2CTOEN 位 被 清 零, 且 I2CTOF 位被置高以表明超时计数器中断发生。超时计数器中断使用的也是 I2C 中断向量。当 I2C 超时发生时,I2C 内部电路会被复位,寄存器也将发生如下复 位情况。 单片机 BS83B04A-4 其它型号 寄存器 IICD, IICA, IICC0 IICC1 SIMD, SIMA, SIMC0 SIMC1 I2C 超时发生后 保持不变 复位至 POR 保持不变 复位至 POR 超时发生后的 I2C 寄存器 I2CTOF 标志位可由应用程序清零。64 个超时时钟周期可由 I2CTOC 寄存器里 的相应位来设置。超时时间的计算方法如下: ((1~64)×32)/fSUB 这里给出了一个 1ms~64ms 的范围。LIRC 振荡器一直使能,即 fSUB 一直使能。 Rev.1.40 93 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 中断 中断是单片机一个重要功能。当发生外部中断或内部中断 ( 如触摸动作或定 时 / 计数器溢出 ),系统会中止当前的程序,而转到相对应的中断服务程序中。 该系列单片机提供一个外部中断和多个内部中断。外部中断由 INT 引脚信号触 发,而内部中断由触摸按键,定时 / 计数器,时基和 SIM 等控制。 中断寄存器 中断控制基本上是在一定单片机条件发生时设置请求标志位,应用程序中中断 使能位的设置是通过位于专用数据存储器中的一系列寄存器控制的。寄存器的 数量由所选单片机的型号决定,但总的分为两类。第一类是 INTC0~INTC1 寄 存器,用于设置基本的中断;第二类是 INTEG 寄存器,用于设置外部中断边沿 触发类型。 寄存器中含有中断控制位和中断请求标志位。中断控制位用于使能或除能各种 中断,中断请求标志位用于存放当前中断请求的状态。它们都按照特定的模式 命名,前面表示中断类型的缩写,紧接着的字母“E”代表使能 / 除能位,“F” 代表请求标志位。 功能 总中断 INT 脚 触摸按键模块中断 SIM 中断 ( 除 BS83B04A-4 外 ) I2C 中断 (BS83B04A-4) EEPROM 中断 时基中断 定时 / 计数器 使能位 EMI INTE TKME SIME I2CE DEE TBE TE 请求标志 — INTF TKMF SIMF I2CF DEF TBF TF 中断寄存器位命名模式 单片机 寄存器 名称 BS83B04A-4 INTC1 其它型号 INTC1 INTEG 所有型号 INTC0 位 7 — — — — 6 5 4 DEF TBF I2CF DEF TBF SIMF — — — TF TKMF INTF 3 — — — TE 2 1 0 DEE TBE I2CE DEE TBE SIME — INTS1 INTS0 TKME INTE EMI 中断寄存器列表 Rev.1.40 94 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 INTEG 寄存器 Bit Name R/W POR 7 — — — 6 — — — 5 — — — 4 — — — Bit 7~2 未定义,读为“0” Bit 1~0 INTS1, INTS0:INT 脚中断边沿控制位 00:除能 01:上升沿 10:下降沿 11:双沿 3 — — — 2 — — — 1 INTS1 R/W 0 0 INTS0 R/W 0 3 TE R/W 0 2 TKME R/W 0 1 INTE R/W 0 0 EMI R/W 0 INTC0 寄存器 Bit Name R/W POR Rev.1.40 7 — — — 6 TF R/W 0 5 TKMF R/W 0 4 INTF R/W 0 Bit 7 未定义,读为“0” Bit 6 TF:定时 / 计数器中断请求标志位 0:无请求 1:中断请求 Bit 5 TKMF:触控按键模块中断请求标志位 0:无请求 1:中断请求 Bit 4 INTF:INT 中断请求标志位 0:无请求 1:中断请求 Bit 3 TE:定时 / 计数器中断控制位 0:除能 1:使能 Bit 2 TKME:触摸按键模块中断控制位 0:除能 1:使能 Bit 1 INTE:INT 中断控制位 0:除能 1:使能 Bit 0 EMI:总中断控制位 0:除能 1:使能 95 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 INTC1 寄存器 – BS83B04A-4 Bit Name R/W POR Rev.1.40 7 — — — 6 DEF R/W 0 5 TBF R/W 0 4 I2CF R/W 0 Bit 7 未定义,读为 "0" Bit 6 DEF:数据 EEPROM 中断请求标志位 0:无请求 1:中断请求 Bit 5 TBF:时基中断请求标志位 0:无请求 1:中断请求 Bit 4 I2CF:I2C 中断请求标志位 0:无请求 1:中断请求 Bit 3 未定义,读为 "0" Bit 2 DEE:数据 EEPROM 中断控制位 0:除能 1:使能 Bit 1 TBE:时基中断控制位 0:除能 1:使能 Bit 0 I2CE:I2C 中断控制位 0:除能 1:使能 96 3 — R/W 0 2 DEE R/W 0 1 TBE R/W 0 0 I2CE R/W 0 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 INTC1 寄存器 – 除 BS83B04A-4 外 Bit Name R/W POR Rev.1.40 7 — — — 6 DEF R/W 0 5 TBF R/W 0 4 SIMF R/W 0 Bit 7 未定义,读为“0” Bit 6 DEF:数据 EEPROM 中断请求标志位 0:无请求 1:中断请求 Bit 5 TBF:时基中断请求标志位 0:无请求 1:中断请求 Bit 4 S1MF:SIMF 中断请求标志位 0:无请求 1:中断请求 Bit 3 未定义,读为“0” Bit 2 DEE:数据 EEPROM 中断控制位 0:除能 1:使能 Bit 1 TBE:时基中断控制位 0:除能 1:使能 Bit 0 SIME:SIM 中断控制位 0:除能 1:使能 97 3 — — — 2 DEE R/W 0 1 TBE R/W 0 0 SIME R/W 0 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 中断操作 若中断事件条件产生,如触摸按键计数器溢出、定时 / 计数器溢出等等,相关 中断请求标志将置起。中断标志产生后程序是否会跳转至相关中断向量执行是 由中断使能位的条件决定的。若使能位为“1”,程序将跳至相关中断向量中执 行;若使能位为“0”,即使中断请求标志置起中断也不会发生,程序也不会跳 转至相关中断向量执行。若总中断使能位为“0”,所有中断都将除能。 当中断发生时,下条指令的地址将被压入堆栈。相应的中断向量地址加载至 PC 中。系统将从此向量取下条指令。中断向量处通常为跳转指令,以跳转到相应 的中断服务程序。中断服务程序必须以“RETI”指令返回至主程序,以继续执 行原来的程序。 各个中断使能位以及相应的请求标志位,以优先级的次序显示在下图。各个中 断源都有自己的向量。一旦中断子程序被响应,系统将自动清除 EMI 位,所有 其它的中断将被屏蔽,这个方式可以防止任何进一步的中断嵌套。其它中断请 求可能发生在此期间,虽然中断不会立即响应,但是中断请求标志位会被记录。 如果某个中断服务子程序正在执行时,有另一个中断要求立即响应,那么 EMI 位应在程序进入中断子程序后置位,以允许此中断嵌套。如果堆栈已满,即使 此中断使能,中断请求也不会被响应,直到 SP 减少为止。如果要求立刻动作, 则堆栈必须避免成为储满状态。请求同时发生时,执行优先级如下流程图所示。 所有被置起的中断请求标志都可把单片机从休眠或空闲模式中唤醒,若要防止 唤醒动作发生,在单片机进入休眠或空闲模式前应将相应的标志置起。 EMI auto disabled in ISR Legend xxF Request Flag – no auto reset in ISR xxF Request Flag – auto reset in ISR xxE Enable Bit Enable Bits Master Enable Vector INTF INTE EMI 04H Touch Key Module TKMF TKME EMI 08H Timer/Event Counter TF TE EMI 0CH I2C I2CF I2CE EMI 10H Time Base TBF TBE EMI 14H EEPROM DEF DEE EMI 18H Interrupt Request Flags Name External Priority High Low Interrupt Structure(BS83B04A-4) 中断结构(BS83B04A-4) Rev.1.40 98 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 EMI auto disabled in ISR Legend xxF Request Flag – no auto reset in ISR xxF Request Flag – auto reset in ISR xxE Enable Bit Enable Bits Master Enable Vector INTF INTE EMI 04H Touch Key Module TKMF TKME EMI 08H Timer/Event Counter TF TE EMI 0CH SIM SIMF SIME EMI 10H Time Base TBF TBE EMI 14H EEPROM DEF DEE EMI 18H Interrupt Request Name Flags External Priority High Low Interrupt Structure(except BS83B04A-4) 中断结构(除 BS83B04A-4 外) 外部中断 通过 INT 引脚上的信号变化可控制外部中断。当触发沿选择位设置好触发类 型,INT 引脚的状态发生变化,外部中断请求标志 INTF 被置位时外部中断请 求产生。若要跳转到相应中断向量地址,总中断控制位 EMI 和相应中断使能位 INTE 需先被置位。此外,必须使用 INTEG 寄存器使能外部中断功能并选择触 发沿类型。外部中断引脚和普通 I/O 口共用,如果相应寄存器中的中断使能位 被置位,此引脚将被作为外部中断脚使用。此时该引脚必须通过设置控制寄存 器,将该引脚设置为输入口。当中断使能,堆栈未满并且外部中断脚状态改变, 将调用外部中断向量子程序。当响应外部中断服务子程序时,中断请求标志位 INTF 会自动复位且 EMI 位会被清零以除能其它中断。注意,即使此引脚被用 作外部中断输入,其配置选项中的上拉电阻仍保持有效。 寄存器 INTEG 被用来选择有效的边沿类型,来触发外部中断。可以选择上升沿 还是下降沿或双沿触发都产生外部中断。注意 INTEG 也可以用来除能外部中断 功能。 时基中断 时基中断提供一个固定周期的中断信号,由定时器功能产生溢出信号控制。当 中断请求标志 TBF 被置位时,中断请求发生。当总中断使能位 EMI 和时基使能 位 TBE 被置位,允许程序跳转到各自的中断向量地址。当中断使能,堆栈未满 且时基溢出时,将调用它们各自的中断向量子程序。当响应中断服务子程序时, 相应的中断请求标志位 TBF 会自动复位且 EMI 位会被清零以除能其它中断。 时基中断的目的是提供一个固定周期的中断信号,时钟源来自内部时钟源 fSYS 或 fSUB。输入时钟首先经过分频器,分频率由程序设置 TBC 寄存器相关位获取 合适的分频值以提供更长的时基中断周期。 Rev.1.40 99 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 TBC 寄存器 Bit Name R/W POR 7 — — — 6 — — — 5 TB1 R/W 0 4 TB0 R/W 0 Bit 7~6 未定义,读为“0” Bit 5~4 TB1~TB0: 选择时基溢出周期位 00:1024/fTP 01:2048/fTP 10:4096/fTP 11:8192/fTP Bit 3~0 未定义,读为“0”           3 — — — 2 — — — 1 — — — 0 — — —                            时基结构 定时 / 计数器中断 要使定时 / 计数器中断发生,总中断控制位 EMI 和相应的内部中断使能位 TE 必须先被置位。当定时 / 计数器溢出,相应的中断请求标志位 TF 将置位并触发 定时 / 计数器中断。中断使能,堆栈未满,当定时 / 计数器溢出发生中断时,将 调用位于计数器中断向量处的子程序。当响应中断服务子程序时,中断请求标 志位 TF 会被自动复位且 EMI 位会被清零以除能其它中断。 EEPROM 中断 当写周期结束,EEPROM 中断请求标志 DEF 被置位,EEPROM 中断请求产生。 若要程序跳转到相应中断向量地址,总中断控制位 EMI、EEPROM 中断使能位 DEE 需先被置位。当中断使能,堆栈未满且 EEPROM 写周期结束时,可跳转 至相关中断向量子程序中执行。当 EEPROM 中断响应,中断请求标志位 DEF 将自动复位且 EMI 位会被清零以除能其它中断。 触控按键中断 要使触控按键中断发生,总中断控制位 EMI 和相应的内部中断使能位 TKME 必须先被置位。当触控按键中的时隙计数器溢出,相应的中断请求标志位 TKMF 将置位并触发触控按键中断。中断使能,堆栈未满,当触控按键时隙计 数器溢出发生中断时,将调用位于触控按键中断向量处的子程序。当响应中断 服务子程序时,中断请求标志位 TKMF 会被自动复位且 EMI 位会被清零以除 能其它中断。 任何一个触控按键模块的 16 位 C/F 计数器溢出就会把 16 位 C/F 计数器溢出标 志位 TKCFOV 设为“1”,此标志位不会自动复位,必须通过应用程序将其复位。 模块 0 中只保留一组 16 位计数器,16 位计数器溢出就会把 16 位计数器溢出标 志位 TK16OV 设为“1”,此标志位不会自动复位,必须通过应用程序将其复位。 Rev.1.40 100 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 SIM 中断 ( 除 BS83B04A-4 外 ) 当一个字节数据已由 SIM 接口接收或发送完,中断请求标志 SIMF 被置位, SIM 中断请求产生。若要程序跳转到相应中断向量地址,总中断控制位 EMI、 串行接口中断使能位 SIME 需先被置位。当中断使能,堆栈未满且一个字节数 据已被传送或接收完毕时,可跳转至相关中断向量子程序中执行。当串行接口 中断响应,中断请求标志位 SIMF 会被自动复位且 EMI 位会被清零以除能其它 中断。 I2C 中断 (BS83B04A-4) 当一个字节数据已由 I2C 接口接收或发送完、从机地址匹配或 I2C 超时情况发 生时,中断请求标志 I2CF 被置位,I2C 中断请求产生。若要程序跳转到相应中 断向量地址,总中断控制位 EMI 和 I2C 接口中断使能位 I2CE 需先被置位。当 中断使能,堆栈未满且以上任何一种情况发生,将调用相应 I2C 中断向量子程 序。当 I2C 接口中断响应时,中断请求标志位 I2CF 被复位且 EMI 被清零以除 能其它中断。 中断唤醒功能 每个中断都具有将处于休眠或空闲模式的单片机唤醒的能力。当中断请求标志 由低到高转换时唤醒动作产生,其与中断是否使能无关。因此,尽管单片机处 于休眠或空闲模式且系统振荡器停止工作,如有外部中断脚上产生外部边沿跳 变,低电压改变都可能导致其相应的中断标志被置位,由此产生中断,因此必 须注意避免伪唤醒情况的发生。若中断唤醒功能被除能,单片机进入休眠或空 闲模式前相应中断请求标志应被置起。中断唤醒功能不受中断使能位的影响。 编程注意事项 通过禁止相关中断使能位,可以屏蔽中断请求,然而,一旦中断请求标志位被 设定,它们会被保留在中断控制寄存器内,直到相应的中断服务子程序执行或 请求标志位被软件指令清除。 建议在中断服务子程序中不要使用“CALL 子程序”指令。中断通常发生在不 可预料的情况或是需要立刻执行的某些应用。假如只剩下一层堆栈且没有控制 好中断,当“CALL 子程序”在中断服务子程序中执行时,将破坏原来的控制 序列。 所有中断在休眠或空闲模式下都具有唤醒功能,当中断请求标志发生由低到高 的转变时都可产生唤醒功能。若要避免相应中断产生唤醒动作,在单片机进入 休眠或空闲模式前需先将相应请求标志置为高。 当进入中断服务程序,系统仅将程序计数器的内容压入堆栈,如果中断服务程 序会改变状态寄存器或其它的寄存器的内容而破坏控制流程,应事先将这些数 据保存起来。 若从中断子程序中返回可执行 RET 或 RETI 指令。除了能返回至主程序外, RETI 指令还能自动设置 EMI 位为高,允许进一步中断。RET 指令只能返回至 主程序,清除 EMI 位,除能进一步中断。 Rev.1.40 101 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 应用电路 VDD VDD 0.1uF PAD Key1 PAD Key2 PAD Key3 PAD VSS Key4 I/O Control Device I2C I2C Device BS83B04A-4 VDD VDD 0.1uF PAD Key1 PAD Key2 PAD Keyn-1 PAD VSS I/O Control Device SPI/I2C SPI/I2C Device Keyn BS83B08A-3/BS83B08A-4 BS83B12A-3/BS83B12A-4 BS83B16A-3/BS83B16A-4 注:“*” 表示建议加上此元件以加强静电保护。 “**”表示建议在电源有较强干扰场合加上此元件。 Rev.1.40 102 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 指令集介绍 简介 任何单片机成功运作的核心在于它的指令集,此指令为一组程序指令码 , 用来 指导单片机如何去执行指定的工作。在盛群单片机中,提供了丰富且灵活的指 令集,共超过 60 条,程序设计师可以事半功倍地实现他们的应用。 为了更容易的了解各式各样的指令码,接下来按功能分组介绍它们。 指令周期 大部分的操作均只需要一个指令周期来执行。分支、调用或查表则需要两个指 令周期。一个指令周期相当于四个系统时钟周期,因此如果在 8MHz 的系统 时钟振荡器下,大部分的操作将在 0.5μs 中执行完成,而分支或调用操作则将 在 1μs 中执行完成。虽然需要两个指令周期的指令通常指的是 JMP、CALL、 RET、RETI 和查表指令,但如果牵涉到程序计数器低字节寄存器 PCL 也将多 花费一个周期去加以执行。即指令改变 PCL 的内容进而导致直接跳转至新地址 时,需要多一个周期去执行。例如“CLR PCL”或“MOV PCL, A”。对于跳 转命令必须注意,如果比较的结果牵涉到跳转动作将多花费一个周期,如果没 有则需一个周期即可。 数据的传送 单片机程序的数据传送是使用最为频繁的操作之一。使用三种 MOV 的指令, 数据不但可以从寄存器转移至累加器 ( 反之亦然 ),而且能够直接移动立即数到 累加器。数据传送最重要的应用之一是从接收端口接收数据或传送数据到输出 端口。 算术运算 算术运算和数据处理是大部分单片机应用所需具备的能力,在盛群单片机内部 的指令集中,可直接实现加与减的运算。当加法的结果超出 255 或减法的结果 少于 0 时,要注意正确的处理进位和借位的问题。INC、INCA、DEC 和 DECA 指令提供了对一个指定地址的值加一或减一的功能。 逻辑和移位运算 标准逻辑运算例如 AND、OR、XOR 和 CPL 全都包含在盛群单片机内部的指令 集中,如同大多数牵涉到数据运算的指令,数据的传送必须通过累加器。在所 有逻辑数据运算中,如果运算结果为零,则零标志位将被置位。另外逻辑数据 运用形式还有移位指令,例如 RR、RL、RRC 和 RLC 提供了向左或向右移动一 位的方法。移位指令常用于串行端口的程序应用,数据可从内部寄存器转移至 进位标志位,而此位则可被检验。移位运算还可应用在乘法与除法的运算组成 中。 Rev.1.40 103 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 分支和控制的转换 程序分支是采取使用 JMP 指令跳转到指定地址或使用 CALL 指令调用子程序的 形式。两者之不同在于当子程序被执行完毕后,程序必须马上返回原来的地址。 这个动作是由放置在子程序里的返回指令 RET 来实现,它可使程序跳回 CALL 指令之后的地址。在 JMP 指令中,程序则只是跳到一个指定的地址而已,并不 需如 CALL 指令跳回。一个非常有用的分支指令是条件跳转,条件是由数据存 储器或指定位来加以决定。遵循跳转条件,程序将继续执行下一条指令或略过 且跳转至接下来的指令。这些分支指令是程序走向的关键,跳转条件可能是外 部开关输入,或是内部数据位的值。 位运算 提供数据存储器单一位的运算指令是盛群单片机的特性之一,这特性对于输出 端口位的规划尤其有用,其中个别的位或端口的引脚可以使用“SET [m].i”或 “CLR [m].i”指令来设定其为高位或低位。如果没有这特性,程序设计师必须 先读入输出口的 8 位数据,处理这些数据,然后再输出正确的新数据。这种读入 修改 - 写出的程序现在则由位指令所取代。 查表运算 数据的储存通常由寄存器完成,然而当处理大量的数据时,其庞大与复杂的内 容常造成对指定存储器储存上的不便,为了改善此问题,盛群单片机允许在程 序存储器中设定一块数据可直接存取的区域,只需要一组简易的指令即可对数 据进行查表。 其它运算 除了上述功能指令外,其它指令还包括用于省电的“HALT”指令和使程序在极 端电压或电磁环境下仍能正常工作的看门狗定时器控制指令。这些指令的使用 则请查阅相关的章节。 Rev.1.40 104 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 指令集概要 下表中说明了按功能分类的指令集,用户可以将该表作为基本的指令参考。 惯例 x:立即数 m:数据存储器地址 A:累加器 i:第 0~7 位 addr:程序存储器地址 助记符 说明 指令 周期 影响标志位 1 Z, C, AC, OV 算术运算 A,[m] ACC 与数据存储器相加,结果放入 ACC ADD ADDM A,[m] ACC 与数据存储器相加,结果放入数据存储器 A, x ADD ADC ACC 与立即数相加,结果放入 ACC A,[m] ACC 与数据存储器、进位标志相加,结果放入 ACC ADCM A,[m] ACC 与数据存储器、进位标志相加,结果放入数据存储器 ACC 与立即数相减,结果放入 ACC SUB A, x SUB A,[m] ACC 与数据存储器相减,结果放入 ACC SUBM A,[m] ACC 与数据存储器相减,结果放入数据存储器 SBC A,[m] ACC 与数据存储器、进位标志的反相减,结果放入 ACC SBCM A,[m] ACC 与数据存储器、进位标志相减,结果放入数据存储器 [m] DAA 1 注 Z, C, AC, OV 1 Z, C, AC, OV 1 Z, C, AC, OV 1 注 Z, C, AC, OV 1 Z, C, AC, OV 1 Z, C, AC, OV 1注 Z, C, AC, OV 1 Z, C, AC, OV 1注 Z, C, AC, OV 将加法运算中放入 ACC 的值调整为十进制数,并将结果放入 1注 数据存储器 C 逻辑运算 AND A,[m] ACC 与数据存储器做“与”运算,结果放入 ACC 1 Z OR A,[m] ACC 与数据存储器做“或”运算,结果放入 ACC 1 Z XOR A,[m] ACC 与数据存储器做“异或”运算,结果放入 ACC 1 Z ANDM A,[m] ACC 与数据存储器做“与”运算,结果放入数据存储器 A,[m] ACC 与数据存储器做“或”运算,结果放入数据存储器 ORM XORM A,[m] ACC 与数据存储器做“异或”运算,结果放入数据存储器 注 Z 1注 Z 1 1 注 Z AND A, x ACC 与立即数做“与”运算,结果放入 ACC 1 Z OR A, x ACC 与立即数做“或”运算,结果放入 ACC 1 Z XOR A, x ACC 与立即数做“异或”运算,结果放入 ACC 1 Z CPL [m] 对数据存储器取反,结果放入数据存储器 CPLA [m] 1注 Z 对数据存储器取反,结果放入 ACC 1 Z 递增数据存储器,结果放入 ACC 1 Z 递增和递减 [m] INCA INC [m] 递增数据存储器,结果放入数据存储器 DECA [m] 递减数据存储器,结果放入 ACC DEC 递减数据存储器,结果放入数据存储器 [m] Rev.1.40 105 1 注 Z 1 Z 1注 Z 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 助记符 说明 指令 周期 影响标志位 移位 RRA [m] 数据存储器右移一位,结果放入 ACC RR [m] 数据存储器右移一位,结果放入数据存储器 RRCA [m] 带进位将数据存储器右移一位,结果放入 ACC RRC [m] 带进位将数据存储器右移一位,结果放入数据存储器 RLA [m] 数据存储器左移一位,结果放入 ACC RL [m] 数据存储器左移一位,结果放入数据存储器 RLCA [m] RLC [m] 带进位将数据存储器左移一位,结果放入 ACC 带进位将数据存储器左移一位,结果放入数据存储器 1 无 1注 无 1 C 1注 C 1 无 1注 无 1 C 1 注 C 数据传送 MOV A,[m] 将数据存储器送至 ACC MOV [m],A 将 ACC 送至数据存储器 MOV A, x 将立即数送至 ACC CLR [m].i SET [m].i 无 1 1 注 无 1 无 清除数据存储器的位 1注 无 置位数据存储器的位 1注 无 位运算 转移 JMP addr 无条件跳转 2 无 SZ [m] 如果数据存储器为零,则跳过下一条指令 1注 无 SZA [m] 数据存储器送至 ACC,如果内容为零,则跳过下一条指令 1注 无 SZ [m].i 如果数据存储器的第 i 位为零,则跳过下一条指令 1注 无 注 无 SNZ [m].i 如果数据存储器的第 i 位不为零,则跳过下一条指令 SIZ [m] 递增数据存储器,如果结果为零,则跳过下一条指令 1注 无 SDZ [m] 递减数据存储器,如果结果为零,则跳过下一条指令 1注 无 SIZA [m] 递增数据存储器,将结果放入 ACC,如果结果为零,则跳过 下一条指令 1注 无 SDZA [m] 递减数据存储器,将结果放入 ACC,如果结果为零,则跳过 下一条指令 1注 无 CALL addr 子程序调用 2 无 2 无 2 无 2 无 读取特定页的 ROM 内容,并送至数据存储器和 TBLH 2注 无 TABRDC [m] 读取当前页的 ROM 内容,并送至数据存储器和 TBLH 2注 无 TABRDL [m] 读取最后页的 ROM 内容,并送至数据存储器和 TBLH 注 无 从子程序返回 RET A, x 从子程序返回,并将立即数放入 ACC RET 从中断返回 RETI 1 查表 TABRD [m] 2 其它指令 空指令 NOP 1 无 注 无 CLR [m] 清除数据存储器 1 SET [m] 置位数据存储器 1注 无 CLR WDT 清除看门狗定时器 1 TO, PDF CLR WDT1 预清除看门狗定时器 1 TO, PDF Rev.1.40 106 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 助记符 CLR 说明 WDT2 预清除看门狗定时器 SWAP [m] 交换数据存储器的高低字节,结果放入数据存储器 SWAPA [m] 交换数据存储器的高低字节,结果放入 ACC HALT 进入暂停模式 指令 周期 影响标志位 1 TO, PDF 1注 无 1 无 1 TO, PDF 注:1. 对跳转指令而言,如果比较的结果牵涉到跳转即需 2 个周期,如果没有发生跳转,则只需一个周期。 2. 任何指令若要改变 PCL 的内容将需要 2 个周期来执行。 3. 对于“CLR WDT1”或“CLR WDT2”指令而言,TO 和 PDF 标志位也许会受执行结果影响,“CLR WDT1”和“CLR WDT2”被连续地执行后,TO 和 PDF 标志位会被清除,否则 TO 和 PDF 标志位 保持不变 Rev.1.40 107 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 指令定义 ADC A, [m] 指令说明 功能表示 影响标志位 ADCM A, [m] 指令说明 功能表示 影响标志位 ADD A, [m] 指令说明 Add ACC to Data Memory with Carry 将指定的数据存储器、累加器内容和进位标志位相加, 结果存放到指定的数据存储器。 [m] ← ACC + [m] + C OV、Z、AC、C 功能表示 影响标志位 Add Data Memory to ACC 将指定的数据存储器和累加器内容相加, 结果存放到累加器。 ACC ← ACC + [m] OV、Z、AC、C ADD A, x 指令说明 功能表示 影响标志位 Add immediate data to ACC 将累加器和立即数相加,结果存放到累加器。 ACC ← ACC + x OV、Z、AC、C ADDM A, [m] 指令说明 Add ACC to Data Memory 将指定的数据存储器和累加器内容相加, 结果存放到指定的数据存储器。 [m] ← ACC + [m] OV、Z、AC、C 功能表示 影响标志位 AND A, [m] 指令说明 功能表示 影响标志位 Rev.1.40 Add Data Memory to ACC with Carry 将指定的数据存储器、累加器内容以及进位标志相加, 结果存放到累加器。 ACC ← ACC + [m] + C OV、Z、AC、C Logical AND Data Memory to ACC 将累加器中的数据和指定数据存储器内容做逻辑与, 结果存放到累加器。 ACC ← ACC“AND”[m] Z 108 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 AND A, x 指令说明 功能表示 影响标志位 Logical AND immediate data to ACC 将累加器中的数据和立即数做逻辑与,结果存放到累加器。 ACC ← ACC“AND”x Z ANDM A, [m] 指令说明 Logical AND ACC to Data Memory 将指定数据存储器内容和累加器中的数据做逻辑与, 结果存放到数据存储器。 [m] ← ACC“AND”[m] Z 功能表示 影响标志位 CALL addr 指令说明 影响标志位 Subroutine call 无条件地调用指定地址的子程序,此时程序计数器先加 1 获得下一个要执行的指令地址并压入堆栈,接着载入指定 地址并从新地址继续执行程序,由于此指令需要额外的运 算,所以为一个 2 周期的指令。 Stack ← Program Counter + 1 Program Counter ← addr 无 CLR [m] 指令说明 功能表示 影响标志位 Clear Data Memory 将指定数据存储器的内容清零。 [m] ← 00H 无 CLR [m].i 指令说明 功能表示 影响标志位 Clear bit of Data Memory 将指定数据存储器的 i 位内容清零。 [m].i ← 0 无 CLR WDT 指令说明 Clear Watchdog Timer WDT 计数器、暂停标志位 PDF 和看门狗溢出标志位 TO 清零。 WDT cleared TO & PDF ← 0 TO、PDF 功能表示 功能表示 影响标志位 Rev.1.40 109 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 CLR WDT1 指令说明 功能表示 影响标志位 CLR WDT2 指令说明 功能表示 影响标志位 CPL [m] 指令说明 功能表示 影响标志位 CPLA [m] 指令说明 功能表示 影响标志位 Rev.1.40 Preclear Watchdog Timer PDF 和 TO 标志位都被清 0。必须配合 CLR WDT2 一起使 用清除 WDT 计时器。当程序仅执行 CLR WDT1,而没有 执行 CLR WDT2 时,PDF 与 TO 保留原状态不变。 WDT ← 00H TO & PDF ← 0 TO、PDF Preclear Watchdog Timer PDF 和 TO 标志位都被清 0。必须配合 CLR WDT1 一起使 用清除 WDT 计时器。当程序仅执行 CLR WDT2,而没有 执行 CLR WDT1 时,PDF 与 TO 保留原状态不变。 WDT ← 00H TO & PDF ← 0 TO、PDF Complement Data Memory 将指定数据存储器中的每一位取逻辑反, 相当于从 1 变 0 或 0 变 1。 [m] ← [m] Z Complement Data Memory with result in ACC 将指定数据存储器中的每一位取逻辑反,相当于从 1 变 0 或 0 变 1,而结果被储存回累加器且数据存储器中的内容 不变。 ACC ← [m] Z 110 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 DAA [m] 指令说明 影响标志位 Decimal-Adjust ACC for addition with result in Data Memory 将累加器中的内容转换为 BCD(二进制转成十进制)码。 如果低四位的值大于“9”或 AC=1,那么 BCD 调整就执 行对原值加“6”,否则原值保持不变;如果高四位的值大 于“9”或 C=1,那么 BCD 调整就执行对原值加“6”。 BCD 转换实质上是根据累加器和标志位执行 00H,06H, 60H 或 66H 的加法运算,结果存放到数据存储器。只有进 位标志位 C 受影响,用来指示原始 BCD 的和是否大于 100,并可以进行双精度十进制数的加法运算。 [m] ← ACC + 00H 或 [m] ← ACC + 06H 或 [m] ← ACC + 60H 或 [m] ← ACC + 66H C DEC [m] 指令说明 功能表示 影响标志位 Decrement Data Memory 将指定数据存储器内容减 1。 [m] ← [m] – 1 Z DECA [m] 指令说明 Decrement Data Memory with result in ACC 将指定数据存储器的内容减 1,把结果存放回累加器 并保持指定数据存储器的内容不变。 ACC ← [m] – 1 Z 功能表示 功能表示 影响标志位 HALT 指令说明 影响标志位 Enter power down mode 此指令终止程序执行并关掉系统时钟,RAM 和寄存器的内 容保持原状态,WDT 计数器和分频器被清“0”,暂停标 志位 PDF 被置位 1,WDT 溢出标志位 TO 被清 0。 TO ← 0 PDF ← 1 TO、PDF INC [m] 指令说明 功能表示 影响标志位 Increment Data Memory 将指定数据存储器的内容加 1。 [m] ← [m] + 1 Z 功能表示 Rev.1.40 111 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 INCA [m] 指令说明 功能表示 影响标志位 JMP addr 指令说明 功能表示 影响标志位 Jump unconditionally 程序计数器的内容无条件地由被指定的地址取代, 程序由新的地址继续执行。当新的地址被加载时, 必须插入一个空指令周期,所以此指令为 2 个周期的指令。 Program Counter ← addr 无 MOV A, [m] 指令说明 功能表示 影响标志位 Move Data Memory to ACC 将指定数据存储器的内容复制到累加器。 ACC ← [m] 无 MOV A, x 指令说明 功能表示 影响标志位 Move immediate data to ACC 将 8 位立即数载入累加器。 ACC ← x 无 MOV [m], A 指令说明 功能表示 影响标志位 Move ACC to Data Memory 将累加器的内容复制到指定的数据存储器。 [m] ← ACC 无 NOP 指令说明 功能表示 影响标志位 No operation 空操作,接下来顺序执行下一条指令。 PC ← PC+1 OR A, [m] 指令说明 Logical OR Data Memory to ACC 将累加器中的数据和指定的数据存储器内容逻辑或, 结果存放到累加器。 ACC ← ACC“OR”[m] Z 功能表示 影响标志位 Rev.1.40 Increment Data Memory with result in ACC 将指定数据存储器的内容加 1,结果存放回累加器并保持 指定的数据存储器内容不变。 ACC ← [m] + 1 Z 无 112 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 OR A, x 指令说明 功能表示 影响标志位 Logical OR immediate data to ACC 将累加器中的数据和立即数逻辑或,结果存放到累加器。 ACC ← ACC“OR”x Z ORM A, [m] 指令说明 Logical OR ACC to Data Memory 将存在指定数据存储器中的数据和累加器逻辑或, 结果放到数据存储器。 [m] ← ACC“OR”[m] Z 功能表示 影响标志位 RET 指令说明 功能表示 影响标志位 RET A, x 指令说明 功能表示 影响标志位 RETI 指令说明 功能表示 影响标志位 RL [m] 指令说明 功能表示 影响标志位 Rev.1.40 Return from subroutine 将堆栈寄存器中的程序计数器值恢复, 程序由取回的地址继续执行。 Program Counter ← Stack 无 Return from subroutine and load immediate data to ACC 将堆栈寄存器中的程序计数器值恢复且累加器载入指定的 立即数,程序由取回的地址继续执行。 Program Counter ← Stack ACC ← x 无 Return from interrupt 将堆栈寄存器中的程序计数器值恢复且中断功能通过设置 EMI 位重新使能。EMI 是控制中断使能的主控制位。如果 在执行 RETI 指令之前还有中断未被相应,则这个中断将 在返回主程序之前被相应。 Program Counter ← Stack EMI ← 1 无 Rotate Data Memory left 将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位。 [m].(i+1) ← [m].i (i=0~6) [m].0 ← [m].7 无 113 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 RLA [m] 指令说明 功能表示 影响标志位 RLC [m] 指令说明 功能表示 影响标志位 RLC A [m] 指令说明 功能表示 影响标志位 RR [m] 指令说明 功能表示 影响标志位 RRA [m] 指令说明 功能表示 影响标志位 Rev.1.40 Rotate Data Memory left with result in ACC 将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位, 结果送到累加器,而指定数据存储器的内容保持不变。 ACC.(i+1) ← [m].i (i=0~6) ACC.0 ← [m].7 无 Rotate Data Memory Left through Carry 将指定数据存储器的内容连同进位标志左移 1 位, 第 7 位取代进位标志且原本的进位标志移到第 0 位。 [m].(i+1) ← [m].i (i=0~6) [m].0 ← C C ← [m].7 C Rotate Data Memory left through Carry with result in ACC 将指定数据存储器的内容连同进位标志左移 1 位,第 7 位 取代进位标志且原本的进位标志移到第 0 位 , 移位结果送 回累加器,但是指定数据寄存器的内容保持不变。 ACC.(i+1) ← [m].i (i=0~6) ACC.0 ← C C ← [m].7 C Rotate Data Memory right 将指定数据存储器的内容循环右移 1 位且第 0 位移到 第 7 位。 [m].i ← [m].(i+1) (i=0~6) [m].7 ← [m].0 无 Rotate Data Memory right with result in ACC 将指定数据存储器的内容循环右移 1 位,第 0 位移到 第 7 位,移位结果存放到累加器,而指定数据存储器的内 容保持不变。 ACC.i ← [m].(i+1) (i=0~6) ACC.7 ← [m].0 无 114 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 RRC [m] 指令说明 功能表示 影响标志位 RRCA [m] 指令说明 功能表示 影响标志位 SBC A, [m] 指令说明 功能表示 影响标志位 SBCM A, [m] 指令说明 功能表示 影响标志位 SDZ [m] 指令说明 功能表示 影响标志位 Rev.1.40 Rotate Data Memory right through Carry 将指定数据存储器的内容连同进位标志右移 1 位, 第 0 位取代进位标志且原本的进位标志移到第 7 位。 [m].i ← [m].(i+1) (i=0~6) [m].7 ← C C ← [m].0 C Rotate Data Memory right through Carry with result in ACC 将指定数据存储器的内容连同进位标志右移 1 位,第 0 位 取代进位标志且原本的进位标志移到第 7 位 , 移位结果送 回累加器,但是指定数据寄存器的内容保持不变。 ACC.i ← [m].(i+1) (i=0~6) ACC.7 ← C C ← [m].0 C Subtract Data Memory from ACC with Carry 将累加器减去指定数据存储器的内容以及进位标志的反, 结果存放到累加器。如果结果为负,C 标志位清除为 0, 反之结果为正或 0,C 标志位设置为 1。 ACC ← ACC – [m] – C OV、Z、AC、C、SC、CZ Subtract Data Memory from ACC with Carry and result in Data Memory 将累加器减去指定数据存储器的内容以及进位标志的反, 结果存放到数据存储器。如果结果为负,C 标志位清除为 0, 反之结果为正或 0,C 标志位设置为 1。 [m] ← ACC – [m] – C OV、Z、AC、C、SC、CZ Skip if Decrement Data Memory is 0 将指定的数据存储器的内容减 1,判断是否为 0,若为 0 则 跳过下一条指令,由于取得下一个指令时会要求插入一个 空指令周期,所以此指令为 2 个周期的指令。如果结果不 为 0,则程序继续执行下一条指令。 [m] ← [m] -1,如果 [m]=0 跳过下一条指令执行 无 115 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 SDZA [m] 指令说明 功能表示 影响标志位 将指定数据存储器内容减 1,判断是否为 0,如果为 0 则跳 过下一条指令,此结果将存放到累加器,但指定数据存储 器内容不变。由于取得下一个指令时会要求插入一个空指 令周期,所以此指令为 2 个周期的指令。如果结果不为 0, 则程序继续执行下一条指令。 ACC ← [m]-1,如果 ACC=0 跳过下一条指令执行 无 SET [m] 指令说明 功能表示 影响标志位 Set Data Memory 将指定数据存储器的每一位设置为 1。 [m] ← FFH 无 SET [m].i 指令说明 功能表示 影响标志位 Set bit of Data Memory 将指定数据存储器的第 i 位置位为 1。 [m].i ← 1 无 SIZ [m] 指令说明 Skip if increment Data Memory is 0 将指定的数据存储器的内容加 1,判断是否为 0,若为 0 则 跳过下一条指令。由于取得下一个指令时会要求插入一个 空指令周期,所以此指令为 2 个周期的指令。如果结果不 为 0,则程序继续执行下一条指令。 [m] ← [m]+1,如果 [m]=0 跳过下一条指令执行 无 功能表示 影响标志位 SIZA [m] 指令说明 功能表示 影响标志位 Rev.1.40 Decrement data memory and place result in ACC,skip if 0 Skip if increment Data Memory is zero with result in ACC 将指定数据存储器的内容加 1,判断是否为 0,如果为 0 则 跳过下一条指令,此结果会被存放到累加器,但是指定数 据存储器的内容不变。由于取得下一个指令时会要求插入 一个空指令周期,所以此指令为 2 个周期的指令。如果结 果不为 0,则程序继续执行下一条指令。 ACC ← [m]+1,如果 ACC=0 跳过下一条指令执行 无 116 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 SNZ [m].i 指令说明 功能表示 影响标志位 SUB A, [m] 指令说明 功能表示 影响标志位 SUBM A, [m] 指令说明 功能表示 影响标志位 SUB A, x 指令说明 无 Subtract Data Memory from ACC 将累加器的内容减去指定的数据存储器的数据,把结果存 放到累加器。如果结果为负,C 标志位清除为 0,反之结果 为正或 0,C 标志位设置为 1。 ACC ← ACC – [m] OV、Z、AC、C、SC、CZ Subtract Data Memory from ACC with result in Data Memory 将累加器的内容减去指定数据存储器的数据,结果存放到 指定的数据存储器。如果结果为负,C 标志位清除为 0, 反之结果为正或 0,C 标志位设置为 1。 [m] ← ACC – [m] OV、Z、AC、C、SC、CZ 功能表示 影响标志位 Subtract immediate Data from ACC 将累加器的内容减去立即数,结果存放到累加器。如果结 果为负,C 标志位清除为 0,反之结果为正或 0,C 标志位 设置为 1。 ACC ← ACC – x OV、Z、AC、C、SC、CZ SWAP [m] 指令说明 功能表示 影响标志位 Swap nibbles of Data Memory 将指定数据存储器的低 4 位和高 4 位互相交换。 [m].3~[m].0 ↔ [m].7~[m].4 无 SWAPA [m] 指令说明 Swap nibbles of Data Memory with result in ACC 将指定数据存储器的低 4 位与高 4 位互相交换,再将结果 存放到累加器且指定数据寄存器的数据保持不变。 ACC.3~ACC.0 ← [m].7~[m].4 ACC.7~ACC.4 ← [m].3~[m].0 无 功能表示 影响标志位 Rev.1.40 Skip if bit i of Data Memory is not 0 判断指定数据存储器的第 i 位,若不为 0,则程序跳过下一 条指令执行。由于取得下一个指令时会要求插入一个空指 令周期,所以此指令为 2 个周期的指令。如果结果为 0, 则程序继续执行下一条指令。 如果 [m].i≠0,跳过下一条指令执行 117 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 SZ [m] 指令说明 功能表示 影响标志位 SZA [m] 指令说明 功能表示 影响标志位 SZ [m].i 指令说明 功能表示 影响标志位 TABRD [m] 指令说明 功能表示 影响标志位 TABRDC [m] 指令说明 功能表示 影响标志位 Rev.1.40 Skip if Data Memory is 0 判断指定数据存储器的内容是否为 0,若为 0,则程序跳过 下一条指令执行。由于取得下一个指令时会要求插入一个 空指令周期,所以此指令为 2 个周期的指令。如果结果不 为 0,则程序继续执行下一条指令。 如果 [m]=0, 跳过下一条指令执行 无 Skip if Data Memory is 0 with data movement to ACC 将指定数据存储器内容复制到累加器,并判断指定数据存 储器的内容是否为 0,若为 0 则跳过下一条指令。由于取 得下一个指令时会要求插入一个空指令周期,所以此指令 为 2 个周期的指令。如果结果不为 0,则程序继续执行下 一条指令。 ACC ← [m],如果 [m]=0,跳过下一条指令执行 无 Skip if bit i of Data Memory is 0 判断指定数据存储器的第 i 位是否为 0,若为 0,则跳过下 一条指令。由于取得下一个指令时会要求插入一个空指令 周期,所以此指令为 2 个周期的指令。如果结果不为 0, 则程序继续执行下一条指令。 如果 [m].i=0,跳过下一条指令执行 无 Read table (specific page) to TBLH and Data Memory 将 表 格 指 针 对 TBHP 和 TBLP 所 指 的 程 序 代 码 低 字 节 ( 指定页 ) 移至指定数据存储器且将高字节移至 TBLH。 [m] ← 程序代码 ( 低字节 ) TBLH ← 程序代码 ( 高字节 ) 无 Read table (current page) to TBLH and Data Memory 将表格指针 TBLP 所指的程序代码低字节(当前页)移至 指定的数据存储器且将高字节移至 TBLH。 [m] ← 程序代码 ( 低字节 ) TBLH ← 程序代码 ( 高字节 ) 无 118 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 TABRDL [m] 指令说明 功能表示 影响标志位 XOR A, [m] 指令说明 功能表示 影响标志位 XORM A, [m] 指令说明 Rev.1.40 Read table ( last page ) to TBLH and Data Memory 将表格指针 TBLP 所指的程序代码低字节 ( 最后一页 ) 移至指定数据存储器且将高字节移至 TBLH。 [m] ← 程序代码 ( 低字节 ) TBLH ← 程序代码 ( 高字节 ) 无 Logical XOR Data Memory to ACC 将累加器的数据和指定的数据存储器内容逻辑异或, 结果存放到累加器。 ACC ← ACC“XOR”[m] Z 功能表示 影响标志位 Logical XOR ACC to Data Memory 将累加器的数据和指定的数据存储器内容逻辑异或, 结果放到数据存储器。 [m] ← ACC“XOR”[m] Z XOR A, x 指令说明 功能表示 影响标志位 Logical XOR immediate data to ACC 将累加器的数据与立即数逻辑异或,结果存放到累加器。 ACC ← ACC“XOR”x Z 119 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 封装信息 请注意,这里提供的封装信息仅作为参考。由于这个信息经常更新,提醒用户 咨询 Holtek 网站以获取最新版本的封装信息。 封裝信息的相关内容如下所示,点击可链接至 Holtek 网站相关信息页面。 ● 封装信息(包括外形尺寸、包装带和卷轴规格) ● 封装材料信息 ● 纸箱信息 Rev.1.40 120 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 8-pin SOP(150mil) 外形尺寸              符号 A B C C′ D E F G H α 符号 A B C C′ D E F G H α Rev.1.40   最小 — — 0.012 — — — 0.004 0.016 0.004 0° 尺寸 ( 单位:inch) 正常 0.236 BSC 0.154 BSC — 0.193 BSC — 0.050 BSC — — — — 最大 — — 0.020 — 0.069 — 0.010 0.050 0.010 8° 最小 — — 0.31 — — — 0.10 0.40 0.10 0° 尺寸 ( 单位:mm) 正常 6.00 BSC 3.90 BSC — 4.90 BSC — 1.27 BSC — — — — 最大 — — 0.51 — 1.75 — 0.25 1.27 0.25 8° 121 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 10-pin MSOP 外形尺寸                                符号 A A1 A2 B C D E E1 e L L1 y θ 符号 A A1 A2 B C D E E1 e L L1 y θ Rev.1.40 最小 — 0.000 0.030 0.007 0.003 — — — — 0.016 — — 0° 尺寸 ( 单位:inch) 正常 — — 0.033 — — 0.118 BSC 0.193 BSC 0.118 BSC 0.020 BSC 0.024 0.037 BSC 0.004 — 最大 0.043 0.006 0.037 0.013 0.009 — — — — 0.031 — — 8° 最小 — 0.00 0.75 0.17 0.08 — — — — 0.40 — — 0° 尺寸 ( 单位:mm) 正常 — — 0.85 — — 3.00 BSC 4.90 BSC 3.00 BSC 0.50 BSC 0.60 0.95 BSC 0.10 — 最大 1.10 0.15 0.95 0.33 0.23 — — — — 0.80 — — 8° 122 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 16-pin NSOP(150mil) 外形尺寸              符号 A B C C’ D E F G H α 符号 A B C C’ D E F G H α Rev.1.40    最小 — — 0.012 — — — 0.004 0.016 0.004 0° 尺寸 ( 单位:inch) 正常 0.236 BSC 0.154 BSC — 0.390 BSC — 0.050 BSC — — — — 最大 — — 0.020 — 0.069 — 0.010 0.050 0.010 8° 最小 — — 0.31 — — — 0.10 0.40 0.10 0° 尺寸 ( 单位:mm) 正常 6.0 BSC 3.9 BSC — 9.9 BSC — 1.27 BSC — — — — 最大 — — 0.51 — 1.75 — 0.25 1.27 0.25 8° 123 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 16-pin SSOP(150mil) 外形尺寸               符号 A B C C’ D E F G H α 符号 A B C C’ D E F G H α Rev.1.40   最小 — — 0.008 — — — 0.004 0.016 0.004 0° 尺寸 ( 单位:inch) 正常 0.236 BSC 0.154 BSC — 0.193 BSC — 0.025 BSC — — — — 最大 — — 0.012 — 0.069 — 0.010 0.050 0.010 8° 最小 — — 0.20 — — — 0.10 0.41 0.10 0° 尺寸 ( 单位:mm) 正常 6.0 BSC 3.9 BSC — 4.9 BSC — 0.635 BSC — — — — 最大 — — 0.30 — 1.75 — 0.25 1.27 0.25 8° 124 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 20-pin SOP(300mil) 外形尺寸                 符号 A B C C’ D E F G H α 符号 A B C C’ D E F G H α Rev.1.40   最小 — — 0.012 — — — 0.004 0.016 0.008 0° 尺寸 ( 单位:inch) 正常 0.406 BSC 0.295 BSC — 0.504 BSC — 0.050 BSC — — — — 最大 — — 0.020 — 0.104 — 0.012 0.050 0.013 8° 最小 — — 0.31 — — — 0.10 0.40 0.20 0° 尺寸 ( 单位:mm) 正常 10.30 BSC 7.5 BSC — 12.8 BSC — 1.27 BSC — — — — 最大 — — 0.51 — 2.65 — 0.30 1.27 0.33 8° 125 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 20-pin SSOP(150mil) 外形尺寸                 符号 A B C C’ D E F G H α 符号 A B C C’ D E F G H α Rev.1.40   最小 — — 0.008 — — — 0.004 0.016 0.004 0° 尺寸 ( 单位:inch) 正常 0.236 BSC 0.154 BSC — 0.341 BSC — 0.025 BSC — — — — 最大 — — 0.012 — 0.069 — 0.010 0.050 0.010 8° 最小 — — 0.20 — — — 0.10 0.41 0.10 0° 尺寸 ( 单位:mm) 正常 6.0 BSC 3.9 BSC — 8.66 BSC — 0.635 BSC — — — — 最大 — — 0.30 — 1.75 — 0.25 1.27 0.25 8° 126 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 24-pin SOP(300mil) 外形尺寸                 最小 — — 0.012 — — — 0.004 0.016 0.008 0° 尺寸 ( 单位:inch) 正常 0.406 BSC 0.295 BSC — 0.606 BSC — 0.050 BSC — — — — 最大 — — 0.020 — 0.104 — 0.012 0.050 0.013 8° A 最小 — 尺寸 ( 单位:mm) 正常 10.30 BSC 最大 — B — 7.5 BSC — C 0.31 — 0.51 C’ — 15.4 BSC — D — — 2.65 E — 1.27 BSC — F 0.10 — 0.30 G 0.40 — 1.27 H 0.20 — 0.33 α 0° — 8° 符号 A B C C’ D E F G H α 符号 Rev.1.40   127 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 24-pin SSOP(150mil) 外形尺寸                 符号 A B C C’ D E F G H α 符号 A B C C’ D E F G H α Rev.1.40   最小 — — 0.008 — — — 0.004 0.016 0.004 0° 尺寸 ( 单位:inch) 正常 0.236 BSC 0.154 BSC — 0.341 BSC — 0.025 BSC — — — — 最大 — — 0.012 — 0.069 — 0.010 0.050 0.010 8° 最小 — — 0.20 — — — 0.10 0.41 0.10 0° 尺寸 ( 单位:mm) 正常 6.0 BSC 3.9 BSC — 8.66 BSC — 0.635 BSC — — — — 最大 — — 0.30 — 1.75 — 0.25 1.27 0.25 8° 128 2016-04-19 BS83B08A-3/BS83B12A-3/BS83B16A-3 BS83B04A-4/BS83B08A-4/BS83B12A-4/BS83B16A-4 8-Bit 触控式 Flash 单片机 Copyright© 2016 by HOLTEK SEMICONDUCTOR INC. 使用指南中所出现的信息在出版当时相信是正确的,然而盛群对于说明书的使用不负任何责任。文中 提到的应用目的仅仅是用来做说明,盛群不保证或表示这些没有进一步修改的应用将是适当的,也不 推荐它的产品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使用于救 生、维生从机或系统中做为关键从机。盛群拥有不事先通知而修改产品的权利,对于最新的信息,请 参考我们的网址 http://www.holtek.com.tw/zh/home Rev.1.40 129 2016-04-19
BS83B08A-3 价格&库存

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

免费人工找货
BS83B08A-3
  •  国内价格
  • 1+2.40090
  • 10+2.21620
  • 50+2.03150
  • 100+1.84680

库存:200

BS83B08A-3
  •  国内价格
  • 1+4.94640
  • 10+4.09320
  • 50+3.66120

库存:36