R 型血压计 Flash 单片机内置 LCD
BH67F2265
版本 : V1.00
日期 : 2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
目录
特性 ...................................................................................................................................... 7
CPU 特性 ..................................................................................................................................... 7
周边特性 ...................................................................................................................................... 7
概述 ...................................................................................................................................... 8
方框图 .................................................................................................................................. 9
引脚图 ................................................................................................................................ 10
引脚说明 ............................................................................................................................ 11
极限参数 ............................................................................................................................ 15
直流电气特性 .................................................................................................................... 15
工作电压特性 ............................................................................................................................ 15
待机电流特性 ............................................................................................................................ 16
工作电流特性 ............................................................................................................................ 16
交流电气特性 .................................................................................................................... 17
内部高速振荡器 – HIRC – 频率精准度................................................................................... 17
内部低速振荡器电气特性 – LIRC ........................................................................................... 17
低速晶体振荡器电气特性 – LXT ............................................................................................ 17
工作频率电气特性曲线图 ........................................................................................................ 18
系统上电时间电气特性 ............................................................................................................ 18
输入 / 输出口电气特性 ..................................................................................................... 19
存储器电气特性 ................................................................................................................ 19
LVR 电气特性 ................................................................................................................... 20
A/D 转换器电气特性......................................................................................................... 20
OPA 和 PGA 电气特性 ..................................................................................................... 21
LDO 电气特性 ................................................................................................................... 21
LCD 电气特性 ................................................................................................................... 22
上电复位特性 .................................................................................................................... 22
系统结构 ............................................................................................................................ 23
时序和流水线结构 .................................................................................................................... 23
程序计数器 ................................................................................................................................ 24
堆栈 ............................................................................................................................................ 24
算术逻辑单元 – ALU ................................................................................................................ 25
Flash 程序存储器 .............................................................................................................. 26
结构 ............................................................................................................................................ 26
特殊向量 .................................................................................................................................... 26
查表 ............................................................................................................................................ 26
查表范例 .................................................................................................................................... 27
在线烧录 – ICP .......................................................................................................................... 27
片上调试 – OCDS...................................................................................................................... 28
在线应用编程 – IAP .................................................................................................................. 28
Rev.1.00
2
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
数据存储器 ........................................................................................................................ 43
结构 ............................................................................................................................................ 43
数据存储器寻址 ........................................................................................................................ 44
通用数据存储器 ........................................................................................................................ 44
特殊功能数据存储器 ................................................................................................................ 44
特殊功能寄存器 ................................................................................................................ 46
间接寻址寄存器 – IAR0, IAR1, IAR2...................................................................................... 46
存储器指针 – MP0, MP1H/MP1L, MP2H/MP2L..................................................................... 46
程序存储区指针 – PBP ............................................................................................................. 47
累加器 – ACC ............................................................................................................................ 48
程序计数器低字节寄存器 – PCL ............................................................................................. 48
查表寄存器 – TBLP, TBHP, TBLH ........................................................................................... 48
状态寄存器 – STATUS .............................................................................................................. 48
EEPROM 数据存储器 ...................................................................................................... 50
EEPROM 数据存储器结构 ....................................................................................................... 50
EEPROM 寄存器 ....................................................................................................................... 50
EEPROM 读数据 ....................................................................................................................... 52
EEPROM 页擦操作 ................................................................................................................... 52
EEPROM 写操作 ....................................................................................................................... 53
写保护 ........................................................................................................................................ 54
EEPROM 中断 ........................................................................................................................... 54
编程注意事项 ............................................................................................................................ 54
振荡器 ................................................................................................................................ 57
振荡器概述 ................................................................................................................................ 57
系统时钟配置 ............................................................................................................................ 57
内部 RC 振荡器 – HIRC ........................................................................................................... 58
外部 32.768kHz 晶体振荡器 – LXT ......................................................................................... 58
内部 32kHz 振荡器 – LIRC ...................................................................................................... 59
工作模式和系统时钟 ........................................................................................................ 59
系统时钟 .................................................................................................................................... 59
系统工作模式 ............................................................................................................................ 60
控制寄存器 ................................................................................................................................ 61
工作模式切换 ............................................................................................................................ 63
待机电流的注意事项 ................................................................................................................ 66
唤醒 ............................................................................................................................................ 66
看门狗定时器 .................................................................................................................... 67
看门狗定时器时钟源 ................................................................................................................ 67
看门狗定时器控制寄存器 ........................................................................................................ 67
看门狗定时器操作 .................................................................................................................... 68
复位和初始化 .................................................................................................................... 69
复位功能 .................................................................................................................................... 69
复位初始状态 ............................................................................................................................ 72
输入 / 输出端口 ................................................................................................................. 76
上拉电阻 .................................................................................................................................... 76
Rev.1.00
3
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
PA 口唤醒 .................................................................................................................................. 77
输入 / 输出端口控制寄存器 ..................................................................................................... 77
输入 / 输出端口源电流选择 ..................................................................................................... 77
引脚共用功能 ............................................................................................................................ 79
输入 / 输出引脚结构 ................................................................................................................. 84
编程注意事项 ............................................................................................................................ 85
定时器模块 – TM .............................................................................................................. 85
简介 ............................................................................................................................................ 85
TM 操作 ..................................................................................................................................... 85
TM 时钟源 ................................................................................................................................. 86
TM 中断 ..................................................................................................................................... 86
TM 外部引脚 ............................................................................................................................. 86
编程注意事项 ............................................................................................................................ 87
简易型 TM – CTM............................................................................................................ 88
简易型 TM 操作 ........................................................................................................................ 88
简易型 TM 寄存器介绍 ............................................................................................................ 88
简易型 TM 工作模式 ................................................................................................................ 92
标准型 TM – STM ............................................................................................................ 98
标准型 TM 操作 ........................................................................................................................ 98
标准型 TM 寄存器介绍 ........................................................................................................... 98
标准型 TM 工作模式 .............................................................................................................. 102
串行接口模块 – SIM ....................................................................................................... 110
SPI 接口 ................................................................................................................................... 110
I2C 接口 .................................................................................................................................... 117
UART 串行接口 .............................................................................................................. 127
UART 外部引脚....................................................................................................................... 128
UART 单线模式....................................................................................................................... 128
UART 数据传输方案............................................................................................................... 128
UART 状态和控制寄存器....................................................................................................... 129
波特率发生器 .......................................................................................................................... 133
UART 的设置与控制............................................................................................................... 134
UART 发送器........................................................................................................................... 135
UART 接收器........................................................................................................................... 136
接收错误处理 .......................................................................................................................... 137
UART 中断结构....................................................................................................................... 138
UART 暂停和唤醒................................................................................................................... 139
稳压器 – LDO .................................................................................................................. 140
可编程增益放大器和开关电容滤波器 .......................................................................... 141
PGA 和 SCF 操作 .................................................................................................................... 141
PGA 和 SCF 控制寄存器 ........................................................................................................ 142
传感器恒定电流发生器电路 .......................................................................................... 145
恒定电流发生器操作 .............................................................................................................. 145
压力传感器恒定电流控制寄存器 .......................................................................................... 146
电池电压检测 .................................................................................................................. 146
Rev.1.00
4
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
A/D 转换器....................................................................................................................... 147
A/D 转换器简介 ...................................................................................................................... 147
A/D 转换寄存器介绍 .............................................................................................................. 147
A/D 转换器参考电压 .............................................................................................................. 150
A/D 转换器输入信号 .............................................................................................................. 150
A/D 转换器操作 ...................................................................................................................... 151
A/D 转换率及时序图 .............................................................................................................. 151
A/D 转换步骤 .......................................................................................................................... 152
编程注意事项 .......................................................................................................................... 153
A/D 转换功能 .......................................................................................................................... 153
A/D 转换应用范例 .................................................................................................................. 154
LCD 驱动 ......................................................................................................................... 155
LCD 显示存储器 ..................................................................................................................... 155
LCD 时钟源 ............................................................................................................................ 156
LCD 寄存器 ............................................................................................................................. 156
LCD 电压源和偏压 ................................................................................................................. 158
LCD 复位状态 ......................................................................................................................... 159
LCD 驱动输出 ......................................................................................................................... 159
编程注意事项 .......................................................................................................................... 164
中断 .................................................................................................................................. 165
中断寄存器 .............................................................................................................................. 165
中断操作 .................................................................................................................................. 169
外部中断 .................................................................................................................................. 170
A/D 转换器中断 ...................................................................................................................... 170
多功能中断 .............................................................................................................................. 171
TM 中断 ................................................................................................................................... 171
时基中断 .................................................................................................................................. 171
串行接口模块中断 .................................................................................................................. 173
UART 中断............................................................................................................................... 173
EEPROM 中断 ......................................................................................................................... 173
SCF 中断 .................................................................................................................................. 173
中断唤醒功能 .......................................................................................................................... 173
编程注意事项 .......................................................................................................................... 173
应用电路 .......................................................................................................................... 174
指令集 .............................................................................................................................. 175
简介 .......................................................................................................................................... 175
指令周期 .................................................................................................................................. 175
数据的传送 .............................................................................................................................. 175
算术运算 .................................................................................................................................. 175
逻辑和移位运算 ...................................................................................................................... 175
分支和控制转换 ...................................................................................................................... 176
位运算 ...................................................................................................................................... 176
查表运算 .................................................................................................................................. 176
其它运算 .................................................................................................................................. 176
Rev.1.00
5
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
指令集概要 ...................................................................................................................... 177
惯例 .......................................................................................................................................... 177
扩展指令集 .............................................................................................................................. 180
指令定义 .......................................................................................................................... 182
扩展指令定义 .......................................................................................................................... 194
封装信息 .......................................................................................................................... 204
64-pin LQFP (7mm × 7mm) 外形尺寸 .................................................................................... 205
Rev.1.00
6
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
特性
CPU 特性
● 工作电压:
♦ fSYS=8MHz:2.2V~5.5V
● VDD=5V,系统时钟为 8MHz 时,指令周期为 0.5μs
● 暂停和唤醒功能,以降低功耗
● 振荡器类型:
♦ 内部高速 8MHz RC – HIRC
♦ 外部低速 32.768kHz 晶振 – LXT
♦ 内部 32kHz RC – LIRC
● 多种工作模式:快速模式、低速模式、空闲模式和休眠模式
● 内部集成的振荡器,无需外接元件
● 所有指令都可在 1~3 个指令周期内完成
● 查表指令
● 115 条功能强大的指令系统
● 12 层硬件堆栈
● 位操作指令
周边特性
● Flash 程序存储器:16K×16
● RAM 数据存储器:512×8
● True EEPROM 存储器:1024×8
● 在线应用编程功能 – IAP
● 看门狗定时器功能
● 多达 30 个双向 I/O 口
● 2 个与 I/O 口复用的外部中断输入
● 多个定时器模块用于时间测量、比较匹配输出、PWM 输出及单脉冲输出
● 双时基功能,用于产生固定时间的中断信号
● 串行接口模块 – SIM,包含 SPI 和 I2C 接口
● 1 个全双工 / 半双工通用异步通信接口 – UART
● R 型传感器血压计模拟前端
♦ 4 个外部通道 12-bit 分辨率的 A/D 转换器
♦ PGA 和 OPA 模块
♦ 恒流控制
♦ 电池电压检测
● LCD 驱动功能
♦ SEG×COM:32×4 或 30×6
♦ 占空比类型:1/4 Duty 或 1/6 Duty
♦ 偏压电平:1/3 bias
♦ 偏压类型:R 型
Rev.1.00
7
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
♦ 波形类型:A 型或 B 型
● 内部 3.0V 或 3.3V LDO
● 低电压复位功能
● 封装类型:64-pin LQFP
概述
该单片机是一款 A/D 型具有 8 位高性能精简指令集的 Flash 单片机,内置 LCD
驱动器,专门为血压计产品而设计。
在存储器特性方面,Flash 存储器可多次编程的特性给用户提供了较大的方便。
除了 Flash 程序存储器,还包含了一个 RAM 数据存储器和一个可用于存储序号、
校准数据等非易失性数据的 True EEPROM 存储器。此外通过使用 IAP 功能,
便于用户直接将测量的数据存储至程序存储器中或进行应用程序更新。
在模拟特性方面,该单片机包含一个多通道 12 位 A/D 转换器、PGA 和 OPA 功
能。该单片机还带有多个使用灵活的定时器模块,可提供定时功能、脉冲产生
功能及 PWM 产生功能。内建完整的 SPI、UART 和 I2C 接口功能,为设计者提
供了一个易与外部硬件通信的接口。另外,内部 LDO 可为内部模块或外部设备
提供电源。内部看门狗定时器、低压复位等内部保护特性,外加优秀的抗干扰
和 ESD 保护性能,确保单片机在恶劣的电磁干扰环境下可靠地运行。
该单片机提供了丰富的外部低速、内部高速和低速振荡器功能选项,完全内置
的两个系统振荡器,无需外围元器件。其在不同工作模式之间动态切换的能力,
为用户提供了一个优化单片机操作和减少功耗的手段。
外加 I/O 使用灵活、内置的 LCD 驱动和时基功能等其它特性,使这款单片机可
以广泛应用于快速、低成本的血压计产品。
Rev.1.00
8
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
方框图
IAP
Reset
Circuit
INT0~
INT1
Interrupt
Controller
Pin-Shared
With Port A & B & C
ROM
16K × 16
RAM
512 × 8
SIM
EEPROM
1024 × 8
Stack
12-Level
UART
Watchdog
Timer
LVR
Port A
Driver
PA0~PA7
Port B
Driver
PB0~PB7
Timers
Port C
Driver
PC0~PC5
I/O
Port D
Driver
PD0~PD7
Pin-Shared
Function
HT8 MCU Core
SYSCLK
Digital Peripherals
Time Bases
Bus
LIRC
32kHz
XT1
XT2
MUX
HIRC
8MHz
SEG8~22
LXT
Pin-Shared
With Port A
LCD
Driver
LCD
COM0~3
SEG0~7,
SEG23~SEG31
COM4~5
Clock System
LCDRAM
Pin-Shared
With Port A & B & D
VOREG
VREF
VPGAO2
VDD
VSS
VSS
PLCD
VPLCD
VMAX
VMAX
VSCFR
VBATD
Analog to Digital
Converter
VDD
Pin-Shared
With Port C
VSCF
MUX
VDD
12-bit
ADC
AN0~AN3
Pin-Shared
With Port C
BATDEN
VDD
VBATD
LDO
VOREG
VOREG
VCCREF
+
CCVIP
CCVREF
OPA
_
CCVIN
_
SCFR
SVIN
PGA1
+
VSCFR (to ADC)
D/A
SVIP
PGA2G
VPGAO2 (to ADC)
SLPF
PGA2
D/A
SCFADC
VSCF (to ADC)
SCFC
SCFPGA
D/A
Analog Peripherals
: Pin-Shared Node
Rev.1.00
2
*:SIM including SPI, I C
9
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
引脚图
PB1/INT1/STP/SCK/SCL/SEG25
PB0/SDI/SDA/SEG26
PA7/CTP0/TX/SDO
PA6/STCK/STP/RX/TX/SCS
PA5/STPB/SCK/SCL
PA4/CTP0/CTCK0/SDI/SDA
PA3/CTP1/CTCK1/SDO
PA1/INT0/STCK/SCS/SEG27
VDD
PA2/XT2/ICPCK/OCDSCK
PA0/XT1/ICPDA/OCDSDA
VSS
PC0/AN0/VREF
PC1/AN1/INT0
PC2/AN2/CTP1
PC3/AN3/CTP0
PC4/RX/TX
PC5/TX
SLPF
SCFC
SCFR
SVIN
SVIP
CCVIP
CCVIN
CCVREF
VSS
VOREG
64 63 62 6160 59 58 57 56 55 5453 52 51 50 49
1
48
2
47
3
46
4
45
5
44
6
43
7
42
8
BH67F2265/BH67V2265
41
64 LQFP-A
9
40
10
39
11
38
12
37
13
36
35
14
15
34
16
33
1718 19 2021 2223 2425 26 2728 29303132
SEG20
SEG19
SEG18
SEG17
COM3
COM2
COM1
COM0
VMAX
PB7/SEG31
PB6/SEG30
注:1. 若共用脚同时有多种输出,所需引脚共用功能通过引脚共用寄存器中相应的软件控制
位控制。
2. BH67V2265 是 BH67F2265 的 EV 芯片,OCDSCK 和 OCDSDA 引脚仅存在于 OCDS
EV 芯片。
Rev.1.00
10
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
引脚说明
每个引脚的功能如下表所述,而引脚配置的详细内容见规格书其它章节。
OPT
I/T
O/T
说明
PAPU
通用 I/O 口,可通过寄存器设置上
PA0
PAWU ST CMOS
拉电阻和唤醒功能
PAS0
PA0/XT1/ICPDA/
XT1
PAS0 LXT
— LXT 引脚
OCDSDA
ICPDA
—
ST CMOS ICP 数据 / 地址
OCDSDA
—
ST CMOS OCDS 数据 / 地址,仅用于 EV 芯片
PAPU
通用 I/O 口,可通过寄存器设置上
PA1
PAWU ST CMOS
拉电阻和唤醒功能
PAS0
PAS0
INTEG
INT0
ST
— 外部中断 0 输入
INTC0
PA1/INT0/STCK/SCS/
IFS
SEG27
PAS0
STCK
ST
— STM 时钟输入
IFS
PAS0
SCS
ST CMOS SPI 从机选择
IFS
SEG27
PAS0
—
SEG LCD SEG 输出
PAPU
通用 I/O 口,可通过寄存器设置上
PA2
PAWU ST CMOS
拉电阻和唤醒功能
PAS0
PA2/XT2/ICPCK/
XT2
PAS0
—
LXT LXT 引脚
OCDSCK
ICPCK
—
ST
— ICP 时钟
OCDSCK
—
ST
— OCDS 时钟,仅用于 EV 芯片
PAPU
通用 I/O 口,可通过寄存器设置上
PA3
PAWU ST CMOS
拉电阻和唤醒功能
PAS0
PA3/CTP1/CTCK1/SDO
CTP1
PAS0
— CMOS CTM1 输出
CTCK1 PAS0
ST
— CTM1 时钟输入
SDO
PAS0
— CMOS SPI 数据输出
PAPU
通用 I/O 口,可通过寄存器设置上
PA4
PAWU ST CMOS
拉电阻和唤醒功能
PAS1
CTP0
PAS1
— CMOS CTM0 输出
PA4/CTP0/CTCK0/SDI/
CTCK0 PAS1
ST
— CTM0 时钟输入
SDA
PAS1
SDI
ST
— SPI 数据输入
IFS
PAS1
SDA
ST NMOS I2C 数据线
IFS
引脚名称
Rev.1.00
功能
11
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
引脚名称
功能
PA5
PA5/STPB/SCK/SCL
STPB
SCK
SCL
PA6
STCK
PA6/STCK/STP/RX/TX/
SCS
STP
RX/TX
SCS
PA7
PA7/CTP0/TX/SDO
CTP0
TX
SDO
PB0
PB0/SDI/SDA/SEG26
SDI
SDA
SEG26
PB1
INT1
PB1/INT1/STP/SCK/
SCL/SEG25
STP
SCK
SCL
SEG25
Rev.1.00
OPT
PAPU
PAWU
PAS1
PAS1
PAS1
IFS
PAS1
IFS
PAPU
PAWU
PAS1
PAS1
IFS
PAS1
PAS1
IFS
PAS1
IFS
PAPU
PAWU
PAS1
PAS1
PAS1
PAS1
PBPU
PBS0
PBS0
IFS
PBS0
IFS
PBS0
PBPU
PBS0
PBS0
INTEG
INTC0
PBS0
PBS0
IFS
PBS0
IFS
PBS0
I/T
O/T
ST
CMOS
—
CMOS STM 反相输出
ST
CMOS SPI 串行时钟
ST
NMOS I2C 时钟线
ST
CMOS
ST
—
—
ST
说明
通用 I/O 口,可通过寄存器设置上
拉电阻和唤醒功能
通用 I/O 口,可通过寄存器设置上
拉电阻和唤醒功能
STM 时钟输入
CMOS STM 正相输出
UART 串行数据输入 ( 全双工通信 ),
CMOS UART 串行数据输入 / 输出 ( 单线通
信模式 )
ST
CMOS SPI 从机选择
ST
CMOS
—
—
—
CMOS CTM0 输出
CMOS UART 串行数据输出
CMOS SPI 数据输出
通用 I/O 口,可通过寄存器设置上
CMOS
拉电阻
ST
ST
—
通用 I/O 口,可通过寄存器设置上
拉电阻和唤醒功能
SPI 数据输入
ST
NMOS I2C 数据线
—
SEG LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
CMOS
拉电阻
ST
ST
—
外部中断 1 输入
—
CMOS STM 正相输出
ST
CMOS SPI 串行时钟
ST
NMOS I2C 时钟线
—
12
SEG LCD SEG 输出
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
引脚名称
PB2/SEG24
PB3/SEG23
PB4/SEG28
PB5/SEG29
PB6/SEG30
PB7/SEG31
功能
PB2
SEG24
PB3
SEG23
PB4
SEG28
PB5
SEG29
PB6
SEG30
PB7
SEG31
PC0
PC0/AN0/VREF
AN0
VREF
PC1
PC1/AN1/INT0
AN1
INT0
PC2
PC2/AN2/CTP1
AN2
CTP1
PC3
PC3/AN3/CTP0
AN3
CTP0
PC4
PC4/RX/TX
Rev.1.00
RX/TX
OPT
PBPU
PBS0
PBS0
PBPU
PBS0
PBS0
PBPU
PBS1
PBS1
PBPU
PBS1
PBS1
PBPU
PBS1
PBS1
PBPU
PBS1
PBS1
PCPU
PCS0
PCS0
PCS0
PCPU
PCS0
PCS0
PCS0
INTEG
INTC0
IFS
PCPU
PCS0
PCS0
PCS0
PCPU
PCS0
PCS0
PCS0
PCPU
PCS1
PCS1
IFS
I/T
O/T
ST
CMOS
—
SEG
ST
CMOS
—
SEG
ST
CMOS
—
SEG
ST
CMOS
—
SEG
ST
CMOS
—
SEG
ST
CMOS
—
SEG
ST
CMOS
AN
AN
—
—
ST
CMOS
AN
—
说明
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
A/D 转换器外部输入 0
A/D 转换器外部参考电压输入
通用 I/O 口,可通过寄存器设置上
拉电阻
A/D 转换器外部输入 1
ST
—
外部中断 0
ST
CMOS
AN
—
— CMOS
ST
CMOS
AN
—
— CMOS
ST
CMOS
ST
CMOS
13
通用 I/O 口,可通过寄存器设置上
拉电阻
A/D 转换器外部输入 2
CTM1 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
A/D 转换器外部输入 3
CTM0 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
UART 串行数据输入 ( 全双工通信 ),
UART 串行数据输入 / 输出 ( 单线通
信模式 )
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
引脚名称
PC5/TX
功能
PC5
TX
PD0
PD0/SEG0/COM4
SEG0
COM4
PD1
PD1/SEG1/COM5
PD2/SEG2
PD3/SEG3
PD4/SEG4
PD5/SEG5
PD6/SEG6
PD7/SEG7
COM0~COM3
SEG4~SEG22
VMAX
PLCD
SLPF
SCFR
SCFC
SVIN
SVIP
CCVIP
CCVIN
SEG1
COM5
PD2
SEG2
PD3
SEG3
PD4
SEG4
PD5
SEG5
PD6
SEG6
PD7
SEG7
COMn
SEGn
VMAX
PLCD
SLPF
SCFR
SCFC
SVIN
SVIP
CCVIP
CCVIN
OPT
I/T
PCPU
ST
PCS1
PCS1
—
PDPU
ST
PDS0
PDS0
—
PDS0
—
PDPU
ST
PDS0
PDS0
—
PDS0
—
PDPU
ST
PDS0
PDS0
—
PDPU
ST
PDS0
PDS0
—
PDPU
ST
PDS1
PDS1
—
PDPU
ST
PDS1
PDS1
—
PDPU
ST
PDS1
PDS1
—
PDPU
ST
PDS1
PDS1
—
—
—
—
—
—
PWR
—
PWR
—
AN
—
—
—
AN
—
AN
—
AN
—
—
—
AN
O/T
CMOS
CMOS
CMOS
SEG
COM
CMOS
SEG
COM
CMOS
SEG
CMOS
SEG
CMOS
SEG
CMOS
SEG
CMOS
SEG
CMOS
SEG
COM
SEG
—
AN
—
AN
—
—
—
AN
—
CCVREF
CCVREF
—
—
AN
VOREG
VOREG
—
—
PWR
Rev.1.00
14
说明
通用 I/O 口,可通过寄存器设置上
拉电阻
UART 串行数据输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
LCD COM 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
LCD COM 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
通用 I/O 口,可通过寄存器设置上
拉电阻
LCD SEG 输出
LCD COM 输出
LCD SEG 输出
IC 最大电压,连接至 VDD 或 PLCD
LCD 电源电压
PGA2 输入
PGA1 输出
SCFPGA 输入
压力传感器负输入
压力传感器正输入
OPA 输出
OPA 反相输入
VCCREF 输出引脚,该引脚与 VSS
之间连接一个电容
LDO 稳压器输出
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
引脚名称
VDD
VSS
功能
VDD
VSS
注:I/T:输入类型;
OPT:通过寄存器选项来配置;
ST:施密特触发输入;
AN:模拟信号;
COM:LCD COM 输出;
OPT
—
—
I/T
PWR
PWR
O/T
—
—
说明
正电源电压
负电源电压,接地
O/T:输出类型;
PWR:电源;
CMOS:CMOS 输出;
SEG:LCD SEG 输出;
LXT:低频晶体振荡器
NMOS:NMOS 输出;
极限参数
电源供应电压 ....................................................................................... VSS-0.3V~6.0V
端口输入电压 ...............................................................................VSS-0.3V~VDD+0.3V
储存温度 .................................................................................................. -50°C~125°C
工作温度 .................................................................................................... -40°C~85°C
IOH 总电流 ........................................................................................................... -80mA
IOL 总电流............................................................................................................. 80mA
总功耗 ............................................................................................................... 500mW
注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无
法预期芯片在上述标示范围外的工作状态,而且若长期在标示范围外的条
件下工作,可能影响芯片的可靠性。
直流电气特性
以下表格中参数测量结果可能受多个因素影响,如振荡器类型、工作电压、工
作频率、引脚负载状况、温度和程序指令等等。
工作电压特性
Ta=-40°C~85°C
符号
VDD
Rev.1.00
参数
工作电压 – HIRC
工作电压 – LXT
工作电压 – LIRC
测试条件
fSYS=8MHz
fSYS=32.768kHz
fSYS=32kHz
15
最小 典型 最大 单位
2.2
—
5.5
V
2.2
—
5.5
V
2.2
—
5.5
V
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
待机电流特性
Ta=25°C,除非另有说明
符号
待机模式
休眠模式
ISTB
空闲模式 0 – LIRC
空闲模式 0 – LXT
空闲模式 1 – HIRC
VDD
2.2V
3V
5V
2.2V
3V
5V
2.2V
3V
5V
2.2V
3V
5V
2.2V
3V
5V
测试条件
条件
WDT off
WDT on
fSUB on
fSUB on
fSUB on,fSYS=8MHz
最大
单位
@85°C
最小 典型 最大
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
0.45
0.45
0.5
1.2
1.5
3
2.4
3
5
2.4
3
5
288
360
600
0.90
0.90
2.0
2.4
3.0
5
4.0
5
10
4.0
5
10
400
500
800
8.00
8.00
10.0
2.9
3.6
6
4.8
6
12
4.8
6
12
480
600
960
μA
μA
μA
μA
μA
注:当使用该表格电气特性数据时,以下几点需注意:
1. 任何数字输入都设置为非浮空的状态。
2. 所有测量都在无负载且所有外围功能关闭的条件下进行。
3. 无直流电流路径。
4. 所有待机电流数值都是在 HALT 指令执行后测得,因此 HALT 后停止执行所有指令。
工作电流特性
Ta=-40°C~85°C
符号
工作模式
低速模式 – LIRC
IDD
低速模式 – LXT
快速模式 – HIRC
测试条件
条件
VDD
2.2V
3V fSYS=32kHz
5V
2.2V
3V fSYS=32768Hz
5V
2.2V
3V fSYS=8MHz
5V
最小 典型 最大 单位
—
—
—
—
—
—
—
—
—
8
10
30
8
10
30
0.6
0.8
1.6
16
20
50
16
20
50
1.0
1.2
2.4
μA
μA
mA
注:当使用该表格电气特性数据时,以下几点需注意:
1. 任何数字输入都设置为非浮空的状态。
2. 所有测量都在无负载且所有外围功能关闭的条件下进行。
3. 无直流电流路径。
4. 所有工作电流数值通过一个连续的 NOP 指令循环程序测得。
Rev.1.00
16
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
交流电气特性
以下表格中参数测量结果可能受多个因素影响,如振荡器类型、工作电压、工
作频率、和温度等等。
内部高速振荡器 – HIRC – 频率精准度
程序烧录时,烧录器会调整 HIRC 振荡器使其工作在用户选择的 HIRC 频率和
工作电压 (3V 或 5V) 条件下。
符号
fHIRC
参数
通过烧录器调整后的
8MHz HIRC 频率
测试条件
温度
25°C
3V/5V
-40°C~85°C
25°C
2.2V~5.5V
-40°C~85°C
VDD
最小 典型 最大 单位
-1%
-2%
-2.5%
-3%
8
8
8
8
+1%
+2%
MHz
+2.5%
+3%
注:1. 烧录器可在 3V/5V 这两个可选的固定电压下对 HIRC 频率进行调整,在此提供 VDD=3V/5V 时的参
数值。
2. 3V/5V 表格列下面提供的是全压条件下的参数值。当应用电压范围是 2.2V~3.6V 时,建议烧录器
电压固定在 3V;当应用电压范围是 3.6V~5.5V 时,建议烧录器电压固定在 5V。
内部低速振荡器电气特性 – LIRC
符号
fLIRC
tSTART
参数
振荡器频率
LIRC 启动时间
测试条件
VDD
温度
2.2V~5.5V -40°C~85°C
—
—
最小 典型 最大 单位
-7%
—
32
—
低速晶体振荡器电气特性 – LXT
符号
参数
fLXT
Duty Cycle
振荡器频率
占空比
tSTART
LXT 启动时间
RNEG
负阻 ( 注 )
VDD
2.2V~5.5V
—
3V
5V
2.2V
+7%
100
kHz
μs
Ta=25°C
测试条件
条件
—
—
—
—
—
最小
典型
最大 单位
—
32.768 —
40
—
60
—
—
1000
—
—
1000
3×ESR —
—
kHz
%
ms
ms
Ω
注:C1、C2 和 RP 为外部元器件。C1=C2=10pF,RP=10MΩ,CL=7pF,ESR=30kΩ。
Rev.1.00
17
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
工作频率电气特性曲线图
System Operating Frequency
8MHz
~
~
~
~
~
~
2.2V
5.5V
Operating Voltage
系统上电时间电气特性
Ta=-40°C~85°C
符号
参数
系统启动时间
( 从 fSYS off 的状态下唤醒 )
tSST
系统启动时间
( 从 fSYS on 的状态下唤醒 )
系统速度切换时间
( 快速模式 → 低速模式或
低速模式 → 快速模式 )
tRSTD
tSRESET
系统复位延迟时间
( 上电复位或 LVR 硬件复位 )
系统复位延迟时间
( WDTC/RSTC 软件复位 )
系统复位延迟时间
( WDT 溢出 )
软件复位最小脉宽
VDD
—
—
—
—
—
测试条件
条件
fSYS=fH~fH/64,fH=fHIRC
fSYS=fSUB=fLXT
fSYS=fSUB=fLIRC
fSYS=fH~fH/64,fH=fHIRC
fSYS=fSUB=fLXT 或 fLIRC
—
最小 典型 最大 单位
—
—
—
—
—
16
1024
2
2
2
—
—
—
—
—
tHIRC
tLXT
tLIRC
tH
tSUB
fHIRC off → on
—
16
—
tHIRC
—
fLXT off → on
—
1024
—
tLXT
—
RRPOR=5 V/ms
—
—
14
16
18
ms
—
—
—
—
45
90
120
μs
注:1. 系统启动时间里提到的 fSYS on/off 状态取决于工作模式类型以及所选的系统时钟振荡器。更多相关
细节请参考系统工作模式章节。
2. tHIRC 等符号所表示的时间单位,是对应频率值的倒数,相关频率值在前面表格有说明。例如,
tHIRC=1/fHIRC,tSYS=1/fSYS 等等。
3. 若 LIRC 被选择作为系统时钟源且在休眠模式下 LIRC 关闭,则上面表格中对应 tSST 数值还需加上
LIRC 频率表格里提供的 LIRC 启动时间 tSTART。
4. 系统速度切换时间实际上是指新使能的振荡器的启动时间。
Rev.1.00
18
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
输入 / 输出口电气特性
符号
参数
VIL
I/O 口低电平输入电压
VIH
I/O 口高电平输入电压
IOL
I/O 口灌电流
Ta=-40°C~85°C
测试条件
VDD
条件
5V
—
—
—
5V
—
—
—
3V
VOL=0.1VDD
5V
3V
5V
3V
IOH
I/O 口源电流
5V
3V
5V
3V
5V
RPH
I/O 口上拉电阻 ( 注 )
tTCK
tINT
TM 时钟输入最小脉宽
中断引脚最小输入脉宽
最小
典型
0
0
3.5
0.8VDD
16
32
—
—
—
—
32
65
VOH=0.9VDD,
SLEDCn[m+1:m]=00B,
(n=0, 1; m=0, 2, 4, 6)
-0.7
-1.5
—
-1.5
-2.9
—
VOH=0.9VDD,
SLEDCn[m+1:m]=01B,
(n=0, 1; m=0, 2, 4, 6)
-1.3
-2.5
—
-2.5
-5.1
—
VOH=0.9VDD,
SLEDCn[m+1:m]=10B,
(n=0, 1; m=0, 2, 4, 6)
-1.8
-3.6
—
-3.6
-7.3
—
VOH=0.9VDD,
SLEDCn[m+1:m]=11B,
(n=0, 1; m=0, 2, 4, 6)
-4
-8
—
-8
-16
—
20
10
0.3
10
60
30
—
—
100
50
—
—
3V
5V
—
—
—
—
—
—
最大
单位
1.5
V
0.2VDD
5.0
V
VDD
—
mA
—
mA
kΩ
μs
μs
注:RPH 内部上拉电阻值的计算方法是:将其接地并使能输入引脚的上拉电阻选项,然后在特定电源电压
下测量该引脚上的电流,在此基础上测量上拉电阻上的分压从而得到此上拉电阻值。
存储器电气特性
Ta=-40°C~85°C,除非另有说明
符号
参数
测试条件
条件
VDD
最小 典型 最大 单位
Flash 程序存储器
tFER
擦除时间
tFWR
写时间
EP
tRETD
存储单元耐受性
ROM 数据保存时间
ROM 激活时间 – 从暂停模
式唤醒
tACTV
Rev.1.00
—
—
—
—
—
—
FWERTS=0
FWERTS=1
FWERTS=0
FWERTS=1
—
Ta=25°C
—
—
19
—
—
—
—
10K
—
3.2
3.7
2.2
3.0
—
40
3.9
4.5
2.7
3.6
—
—
E/W
Year
32
—
64
μs
ms
ms
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
符号
参数
VDD
数据 EEPROM 存储器
VRW
读 / 写工作电压 VDD
tEERD
读时间
写时间 ( 字节模式 )
tEEWR
写时间 ( 页模式 )
tEEER
测试条件
条件
擦除时间
EP
存储单元耐受性
tRETD
数据保存时间
RAM 数据存储器
VDR
RAM 数据保存电压
—
—
—
—
—
—
—
—
—
—
—
—
EWERTS=0
EWERTS=1
EWERTS=0
EWERTS=1
EWERTS=0
EWERTS=1
—
Ta=25°C
—
—
最小 典型 最大 单位
2.2
—
—
—
—
—
—
—
100K
—
—
—
5.4
6.7
2.2
3.0
3.2
3.7
—
40
5.5
4
6.6
8.1
2.7
3.6
3.9
4.5
—
—
V
E/W
Year
1.0
—
—
V
tSYS
ms
ms
注:1.“E/W”表示擦 / 写次数。
2. 在计算从空闲 / 休眠模式唤醒的系统总启动时间时,还需加上 ROM 激活时间 tACTV。
LVR 电气特性
符号
Ta=-40°C~85°C
参数
VDD
VLVR
工作电压
低电压复位电压
ILVROP
工作电流
tLVR
ILVR
产生 LVR 复位的低电压
最短保持时间
LVR 使能的额外电流
测试条件
VDD
条件
—
—
— LVR 使能,电压选择 2.1V
3V
LVR 使能,VLVR=2.1V
5V
参数
VDD
VADI
VREF
A/D 转换器工作电压
A/D 转换器输入电压
A/D 转换器参考电压
DNL
A/D 非线性微分误差
Rev.1.00
2.2
-3%
—
—
—
2.1
—
10
5.5
+3%
10
15
V
V
μA
μA
—
—
120
240
480
μs
5V
—
—
—
14
μA
A/D 转换器电气特性
符号
最小 典型 最大 单位
Ta=-40°C~85°C,除非另有说明
测试条件
VDD
条件
—
—
—
—
—
—
3V
VREF=VDD,tADCK=0.5μs
5V
3V
VREF=VDD,tADCK=10μs
5V
20
最小 典型 最大 单位
2.7
0
2
—
—
—
3.6
VREF
VDD
V
V
V
-3
—
+3
LSB
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
符号
测试条件
条件
参数
INL
A/D 非线性积分误差
IADC
A/D 转换器使能的额外电流
tADCK
tON2ST
tADS
A/D 转换器时钟周期
A/D 转换器 On-to-Start 时间
A/D 转换器采样时间
A/D 转换时间
( 包括采样和保持时间 )
tADC
VDD
3V
VREF=VDD,tADCK=0.5μs
5V
3V
VREF=VDD,tADCK=10μs
5V
3V
无负载,tADCK=0.5μs
5V
—
—
—
—
—
—
—
最小 典型 最大 单位
—
-4
—
—
—
0.5
4
—
1
1.5
—
—
4
—
16
+4
2
mA
3.0 mA
10.0 μs
μs
—
— tADCK
VDD
IOPA
VCM
VOR
符号
Ta=25°C
参数
VDD
—
工作电压
OPA 工作电流
( 所有 OPA 和 PGA )
PGA 共模电压范围
PGA 最大输出电压范围
LDO 电气特性
3.3V
3.3V
Rev.1.00
最小
典型
最大
单位
2.7
—
3.6
V
—
—
650
μA
—
—
0.5
VSS+0.1
—
—
VDD-1.3
VDD-0.1
V
V
VDD=VIN,VIN=VOUT+0.4V,CLOAD=10μF,Ta=-40°C~85°C,除非另有说明
参数
VDD
LDO 输出电压
—
IQ
IOUT
测试条件
条件
—
3.3V VP=VN=1/2 VDD
—
VOUT
tADCK
—
OPA 和 PGA 电气特性
符号
LSB
LDO 静态电流
LDO 输出电流
5V
—
测试条件
条件
Ta=25°C,ILOAD 无负载,
REGEN[1:0]=10B
Ta=25°C,ILOAD 无负载,
REGEN[1:0]=11B
无负载
ΔVOUT=0.1V
21
最小 典型 最大 单位
2.7
3.0
3.3
V
3.0
3.3
3.6
V
—
10.0
350
13.5
—
—
μA
mA
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LCD 电气特性
符号
VIN
Ta=-40°C~85°C
参数
LCD 工作电压
VDD
—
2.2V
~5.5V
VLCD
充电泵提供电源
2.7V
~5.5V
ILCD
使用 LCD 的额外电流
( R 型 ),
LCD 时钟 = 4kHz
ILCDOL
LCD COM 和 SEG
灌电流
ILCDOH
LCD COM 和 SEG
源电流
5V
3V
5V
3V
5V
测试条件
最小 典型 最大 单位
条件
PLCD 引脚提供电源电压,
3.0
—
5.5
V
LCDPR=0
LCDIS[1:0]=00B,
3.3
LCDPR=1,CPVS[2:0]=000B
LCDIS[1:0]=00B,
3.0
LCDPR=1,CPVS[2:0]=001B
LCDIS[1:0]=00B,
2.7
LCDPR=1,CPVS[2:0]=010B
-10%
+10% V
LCDIS[1:0]=00B,
4.5
LCDPR=1,CPVS[2:0]=011B
LCDIS[1:0]=00B,
4.3
LCDPR=1,CPVS[2:0]=100B
LCDIS[1:0]=00B,
4.0
LCDPR=1,CPVS[2:0]=101B
无负载,
VA=VPLCD=VDD,
— 25.0 37.5 μA
LCDPR=0,LCDIS[1:0]=00B
无负载,
μA
VA=VPLCD=VDD,
—
50
75
LCDPR=0,LCDIS[1:0]=01B
无负载,
μA
VA=VPLCD=VDD,
—
100 150
LCDPR=0,LCDIS[1:0]=10B
无负载,
μA
VA=VPLCD=VDD,
—
200 300
LCDPR=0,LCDIS[1:0]=11B
210 420
—
μA
VOL=0.1VDD
350 700
—
-80 -160
—
μA
VOH=0.9VDD
-180 -360
—
上电复位特性
Ta=-40℃~85℃
符号
VPOR
RRPOR
tPOR
Rev.1.00
参数
上电复位电压
上电复位电压速率
VDD 保持为 VPOR 的最小时间
测试条件
条件
—
—
—
VDD
—
—
—
22
最小 典型 最大 单位
—
0.035
1
—
—
—
100
—
—
mV
V/ms
ms
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
VDD
tPOR
RRPOR
VPOR
Time
系统结构
内部系统结构是 Holtek 单片机具有良好性能的主要因素。由于采用 RISC 结构,
该单片机具有高运算速度和高性能的特点。通过流水线的方式,指令的获取和
执行同时进行,此举使得除了跳转和调用指令需多一个指令周期外,其它大部
分标准指令或扩展指令都能分别在一个或两个指令周期内完成。8 位 ALU 参与
指令集中所有的运算,它可完成算术运算、逻辑运算、移位、递增、递减和分
支等功能,而内部的数据路径则是以通过累加器和 ALU 的方式加以简化。有些
寄存器在数据存储器中被实现,且可以直接或间接寻址。简单的寄存器寻址方
式和结构特性,确保了在提供具有较大可靠度和灵活性的 I/O 和 A/D 控制系统
时,仅需要少数的外部器件。使得该单片机适用于低成本和大量生产的控制应
用。
时序和流水线结构
主系统时钟由 HIRC、LXT 或 LIRC 振荡器提供,它被细分为 T1~T4 四个内部
产生的非重叠时序。在 T1 时间,程序计数器自动加一并抓取一条新的指令。
剩下的时间 T2~T4 完成译码和执行功能,因此,一个 T1~T4 时钟周期构成一个
指令周期。虽然指令的抓取和执行发生在连续的指令周期,但单片机流水线结
构会保证指令在一个指令周期内被有效执行。除非程序计数器的内容被改变,
如子程序的调用或跳转,在这种情况下指令将需要多一个指令周期的时间去执
行。
如果指令牵涉到分支,例如跳转或调用等指令,则需要两个指令周期才能完成
指令执行。需要一个额外周期的原因是程序先用一个周期取出实际要跳转或调
用的地址,再用另一个周期去实际执行分支动作,因此用户需要特别考虑额外
周期的问题,尤其是在执行时间要求较严格的时候。
fSYS
(System Clock)
Phase Clock T1
Phase Clock T2
Phase Clock T3
Phase Clock T4
Program Counter
Pipelining
PC
PC+1
PC+2
Fetch Inst. (PC)
Execute Inst. (PC-1)
Fetch Inst. (PC+1)
Execute Inst. (PC)
Fetch Inst. (PC+2)
Execute Inst. (PC+1)
系统时序和流水线
Rev.1.00
23
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
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”指令需要跳转到一个非连续的程序存储器地址之外,它会在每条
指令执行完成以后自动加一。由于单片机存储器容量大于 8K,程序存储器地址
可能位于某一程序存储区,可通过程序存储区指针的 PBP0 位来选择。只有较
低的 8 位,即所谓的程序计数器低字节寄存器 PCL,可以被用户直接读写。
当执行的指令要求跳转到不连续的地址时,如跳转指令、子程序调用、中断或
复位等,单片机通过加载所需要的地址到程序寄存器来控制程序,对于条件跳
转指令,一旦条件符合,在当前指令执行时取得的下一条指令将会被舍弃,而
由一个空指令周期来取代。
程序计数器
高字节
PBP0,PC12~PC8
低字节 (PCL)
PCL7~PCL0
程序计数器
程序计数器的低字节,即程序计数器的低字节寄存器 PCL,可以通过程序控制,
且它是可以读取和写入的寄存器。通过直接写入数据到这个寄存器,一个程序
短跳转可直接执行,然而只有低字节的操作是有效的,跳转被限制在存储器的
当前页中,即 256 个存储器地址范围内,当这样一个程序跳转要执行时,会插
入一个空指令周期。程序计数器的低字节可由程序直接进行读取,PCL 的使用
可能引起程序跳转,因此需要额外的指令周期。
堆栈
堆栈是一个特殊的存储空间,用来存储程序计数器中的内容。该单片机有多层
堆栈,堆栈既不是数据部分也不是程序空间部分,而且它既不是可读取也不是
可写入的。当前层由堆栈指针 (SP) 加以指示,同样也是不可读写的。在子程序
调用或中断响应服务时,程序计数器的内容被压入到堆栈中。当子程序或中断
响应结束时,返回指令 (RET 或 RETI) 使程序计数器从堆栈中重新得到它以前
的值。当一个芯片复位后,堆栈指针将指向堆栈顶部。
如果堆栈已满,且有非屏蔽的中断发生,中断请求标志会被置位,但中断响应
将被禁止。当堆栈指针减少 ( 执行 RET 或 RETI ),中断将被响应。这个特性提
供程序设计者简单的方法来预防堆栈溢出。然而即使堆栈已满,CALL 指令仍
然可以被执行,而造成堆栈溢出。使用时应避免堆栈溢出的情况发生,因为这
可能导致不可预期的程序分支指令执行错误。
若堆栈溢出,则首个存入堆栈的程序计数器数据将会丢失。
Rev.1.00
24
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Program Counter
Top of Stack
Stack Level 1
Stack Level 2
Stack
Pointer
Stack Level 3
Bottom of Stack
Stack Level 12
:
:
:
Program Memory
算术逻辑单元 – ALU
算术逻辑单元是单片机中很重要的部分,执行指令集中的算术和逻辑运算。
ALU 连接到单片机的数据总线,在接收相关的指令码后执行需要的算术与逻辑
操作,并将结果存储在指定的寄存器,当 ALU 计算或操作时,可能导致进位、
借位或其它状态的改变,而相关的状态寄存器会因此更新内容以显示这些改变,
ALU 所提供的功能如下:
● 算术运算:
ADD,ADDM,ADC,ADCM,SUB,SUBM,SBC,SBCM,DAA
LADD,LADDM,LADC,LADCM,LSUB,LSUBM,LSBC,LSBCM,
LDAA
● 逻辑运算:
AND,OR,XOR,ANDM,ORM,XORM,CPL,CPLA
LAND,LANDM,LOR,LORM,LXOR,LXORM,LCPL,LCPLA
● 移位运算:
RRA,RR,RRCA,RRC,RLA,RL,RLCA,RLC
LRRA,LRR,LRRCA,LRRC,LRLA,LRL,LRLCA,LRLC
● 递增和递减:
INCA,INC,DECA,DEC
LINCA,LINC,LDECA,LDEC
● 分支判断:
JMP,SZ,SZA,SNZ,SIZ,SDZ,SIZA,SDZA,CALL,RET,RETI
LSNZ,LSZ,LSZA,LSIZ,LSIZA,LSDZ,LSDZA
Rev.1.00
25
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Flash 程序存储器
程序存储器用来存放用户代码即储存程序。程序存储器为 Flash 类型意味着可
以多次重复编程,方便用户使用同一芯片进行程序的修改。使用适当的单片机
编程工具,此单片机提供用户灵活便利的调试方法和项目开发规划及更新。
结构
程序存储器的容量为 16K×16 位,程序存储器用程序计数器来寻址,其中也包
含数据、表格和中断入口。数据表格可以设定在程序存储器的任何地址,由表
格指针来寻址。
0000H
Reset
0004H
Interrupt Vectors
002CH
n00H
nFFH
Look-up Table
16 bits
2000H
3FFFH
Bank 1
程序存储器结构
特殊向量
程序存储器内部某些地址保留用做诸如复位和中断入口等特殊用途。地址
0000H 是芯片复位后的程序起始地址。在芯片复位之后,程序将跳到这个地址
并开始执行。
查表
程序存储器中的任何地址都可以定义成一个表格,以便储存固定的数据。使用
表格时,表格指针必须先行设定,其方式是将表格的地址放在表格指针寄存器
TBLP 和 TBHP 中。这些寄存器定义表格总的地址。
在设定完表格指针后,当数据存储器 [m] 位于 Sector 0,表格数据可以使用如
“TABRD [m]”或“TABRDL [m]”等指令分别从程序存储器查表读取。如果存储
器 [m] 位于其它 Sector,表格数据可以使用如“LTABRD [m]”或“LTABRDL [m]”
等指令分别从程序存储器查表读取。当这些指令执行时,程序存储器中表格数
据低字节,将被传送到使用者所指定的数据存储器 [m],程序存储器中表格数
据的高字节,则被传送到 TBLH 特殊寄存器,而高字节中未使用的位将被读取
为“0”。
下图是查表中寻址 / 数据流程:
Program Memory
Address
Last Page or
TBHP Register
TBLP Register
Rev.1.00
Data
16 bits
Register TBLH
User Selected
Register
High Byte
Low Byte
26
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
查表范例
以下范例说明表格指针和表格数据如何被定义和执行。这个例子使用的表格数
据用 ORG 伪指令储存在存储器中。ORG 指令的值“1F00H”位于 ROM Bank 1,
指向的地址是 16K 程序存储器中最后一页的起始地址。表格指针低字节寄存器
的初始值设为 06H,这可保证从数据表格读取的第一笔数据位于程序存储器地
址 3F06H,即最后一页起始地址后的第六个地址。值得注意的是,假如“TABRD
[m]”或“LTABRD [m]”指令被使用,则表格指针指向 TBHP 和 TBLP 所指定
的地址。在这个例子中,表格数据的高字节等于零,而当“TABRD [m]”或
“LTABRD [m]”指令被执行时,此值将会自动的被传送到 TBLH 寄存器。
TBLH 寄存器为可读 / 写寄存器,且能重新储存,若主程序和中断服务程序都
使用表格读取指令,应该注意它的保护。使用表格读取指令,中断服务程序可
能会改变 TBLH 的值,若随后在主程序中再次使用这个值,则会发生错误,因
此建议避免同时使用表格读取指令。然而在某些情况下,如果同时使用表格读
取指令是不可避免的,则在执行任何主程序的表格读取指令前,中断应该先除
能,另外要注意的是所有与表格相关的指令,都需要两个指令周期去完成操作。
表格读取程序范例
rombank 1 code1
ds .section ‘data’
tempreg1 db?
; temporary register #1
tempreg2 db?
; temporary register #2
code0 .section ‘code’
mov a,06H
; initialise table pointer - note that this address is
; referenced
mov tblp,a
; to the last page or the page that tbhp pointed
mov a,3FH
; initialise high table pointer
mov tbhp,a
; it is not necessary to set tbhp if executing tabrdl
; or ltabrdl
:
:
tabrd tempreg1
; transfers value in table referenced by table pointer
; data at program memory address “3F06H” transferred to
; tempreg1 and TBLH
dec tblp
; reduce value of table pointer by one
tabrd tempreg2
; transfers value in table referenced by table pointer
; data at program memory address “3F05H” transferred to
; tempreg2 and TBLH
; in this example the data “1AH” is transferred to
; tempreg1 and data “0FH” to tempreg2
; the value “00H” will be transferred to the high byte
; register TBLH
:
:
code1 .section ‘code’
org 1F00H
; sets initial address of last page
dc 00Ah,00Bh,00Ch,00Dh,00Eh,00Fh,01Ah,01Bh
在线烧录 – ICP
Flash 型程序存储器提供用户便利地对同一芯片进行程序的更新和修改。另外,
Holtek 单片机提供 4 线接口的在线烧录方式。用户可将进行过烧录或未经过烧
录的单片机芯片连同电路板一起制成,最后阶段进行程序的更新和程序的烧录,
在无需拔出再重新插入芯片的情况下方便地保持程序为最新版。
Rev.1.00
27
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Holtek 烧录器引脚名称
ICPDA
ICPCK
VDD
VSS
MCU 在线烧录引脚名称
PA0
PA2
VDD
VSS
引脚描述
串行数据 / 地址烧录
时钟烧录
电源
地
程序存储器可以通过 4 线的接口在线进行烧录。其中一条线用于数据串行下载
或上传、一条线用于串行时钟、剩下两条用于提供电源。芯片在线烧写的详细
使用说明超出此文档的描述范围,将由专门的参考文献提供。
烧录过程中,用户必须确保 ICPDA 和 ICPCK 这两个引脚没有连接至其它输出
脚。
Writer Connector
Signals
MCU Programming
Pins
Writer_VDD
VDD
ICPDA
PA0
ICPCK
PA2
Writer_VSS
VSS
*
*
To other Circuit
注:* 可能为电阻或电容。若为电阻则其值必须大于 1kΩ,若为电容则其必须小于 1nF。
片上调试 – OCDS
EV 芯片 BH67V2265 用于 BH67F2265 单片机仿真。此 EV 芯片提供片上调试功
能 (OCDS) 用于开发过程中的单片机调试。除了片上调试功能,单片机和 EV 芯
片在功能上几乎是兼容的。用户可将 OCDSDA 和 OCDSCK 引脚连接至 Holtek
HT-IDE 开发工具,从而实现单片机的仿真。OCDSDA 引脚为 OCDS 数据 / 地
址输入 / 输出脚,OCDSCK 引脚为 OCDS 时钟输入脚。当用户用 EV 芯片进行
调试时,单片机 OCDSDA 和 OCDSCK 引脚上的其它共用功能对 EV 芯片无效。
由于这两个 OCDS 引脚与 ICP 引脚共用,因此在线烧录时仍用作 Flash 存储器
烧录引脚。关于 OCDS 功能的详细描述,请参考“Holtek e-Link for 8-bit MCU
OCDS 用户手册”文件。
Holtek e-Link 引脚名称 EV 芯片引脚名称
OCDSDA
PA0
OCDSCK
PA2
VDD
VDD
VSS
VSS
功能
片上调试串行数据 / 地址输入 / 输出
片上调试时钟输入
电源
地
在线应用编程 – IAP
Flash 型程序存储器便于用户在同一芯片上对程序进行更新和修改。单片机提供
的 IAP 功能使用户可以方便地对 Flash 程序存储器进行多次编程。IAP 功能可
以通过内部固件进行程序的更新,而无需外接烧录器或 PC。此外,IAP 接口通
Rev.1.00
28
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
过 I/O 引脚可以设置为任何类型的通信协议,例如 UART 或 USB。关于内部固
件,用户可以选择 Holtek 提供的版本或创建自己的内部固件。以下章节说明了
如何实现 IAP 固件程序。
Flash 存储器读 / 写大小
Flash 存储器以页为单位进行擦 / 写操作,以字为单位进行读出操作。页的大小
和写入缓冲器的大小都为 32 字。注意,在执行写入操作之前必须先执行擦除操
作。
Flash 存储器擦 / 写功能成功使能时 CFWEN 位会被硬件置高,当该位被置高,
便可写入数据到“写入缓冲器”。FWT 位用于启动写入程序,并指示写入操作
的状态。当该位由应用程序置高时将开始一个写入程序,当写入操作结束后该
位将由硬件清零。
读出操作是通过一个特定的读出程序来执行的。FRDEN 位用于使能读出功能,
由应用程序设置 FRD 位来启动读出程序,并指示读出操作的状态。当读出操作
结束后该位将由硬件清零。
操作
格式
擦除
32 字 / 页
写入
32 字 / 次
读出
1字/次
注:页大小 = 写入缓冲器大小 = 32 字
IAP 操作格式
页
0
1
2
3
4
5
6
7
8
:
:
510
511
FARH
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0001
:
:
0011 1110
0011 1111
FARL [7:5]
000
001
010
011
100
101
110
111
000
:
:
110
111
FARL [4:0]
标记地址
页序号和地址选择
Rev.1.00
29
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Write Page Data to FD0L/FD0H
(32 words/page)
Flash Memory
Read Data Word to FD0H/FD0L
Flash Memory
FARH/FARL
=FA13~FA0
FARH/FARL
=FA13~FA0
Word m
FD0H
Page addr.
=FA13~FA5
Page n
Write buffer addr.
=FA4~FA0
FD0L
Note: “m” is specified by FA13~FA0
00000b
Write Buffer
CLWB
11111b
FD0H
FD0L
Note: “n” is specified by FA13~FA5
Flash 存储器 IAP 读 / 写结构
写入缓冲器
执行写入操作时写入缓冲器用于临时存储写入的数据。通过执行 Flash 存储器
擦 / 写使能程序成功使能 Flash 存储器擦 / 写功能后,才可将要写入的数据填入
到写入缓冲器。通过配置 FC2 寄存器中的 CLWB 位可以清除写入缓冲器。置高
CLWB 位可以使能清除写入缓冲器程序,完成后该位会被硬件自动清零。建议
第一次使用写入缓冲器或更新写入缓冲器内的数据时,应先置高 CLWB 位将写
入缓冲器清零。
写入缓冲器的大小为每页 32 字。写入缓冲器的地址与存储器地址位 FA13~FA5
指定的 Flash 存储器页的地址相对应。写入到 FD0L 和 FD0H 寄存器的数据会
被加载到写入缓冲器。当写入数据到高字节数据寄存器 FD0H 时,会将存储在
FD0L 和 FD0H 数据寄存器内的数据都加载到写入缓冲器,并使 Flash 存储器地
址自动加一,之后新的地址会被加载到 FARH 和 FARL 地址寄存器。当 Flash
存储器地址到达当前页的最大地址,即 32 字的页为 11111b,地址将不再增加,
并停在该页的最后一个地址,此时需要再设定一个新的页地址才可进行其它擦 /
写操作。
写入程序结束后,硬件会自动清除写入缓冲器。注意,如果在比对步骤时发现
写入到 Flash 存储器的数据不正确,则需通过应用程序手动清除写入缓冲器,
在写入缓冲器被清零之后再重新对其写入数据。
IAP Flash 程序存储器寄存器
与 IAP 相关的 Flash 存取寄存器有两个地址寄存器、四对 16 位数据寄存器和三
个控制寄存器,这些寄存器都位于 Sector 1。使用地址、数据和控制寄存器可以
对 Flash 存储器执行 16 位数据读 / 写操作。内部 Flash 程序存储器所有操作由一
系列寄存器控制,即地址寄存器 FARL 和 FARH,数据寄存器 FDnL 和 FDnH,
控制寄存器 FC0、FC1 和 FC2。由于这些寄存器都位于 Sector 1 中,可通过扩
展指令直接被访问,或者通过存储器指针对 MP1H/MP1L 或 MP2H/MP2L 和间
接寻址寄存器 IAR1 或 IAR2 进行间接读取或写入。
Rev.1.00
30
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
位
寄存器
名称
7
6
5
4
3
FC0 CFWEN FMOD2 FMOD1 FMOD0 FWPEN
FC1
D7
D6
D5
D4
D3
FC2
—
—
—
—
—
FARL
FA7
FA6
FA5
FA4
FA3
FARH
—
—
FA13
FA12
FA11
FD0L
D7
D6
D5
D4
D3
FD0H
D15
D14
D13
D12
D11
FD1L
D7
D6
D5
D4
D3
FD1H
D15
D14
D13
D12
D11
FD2L
D7
D6
D5
D4
D3
FD2H
D15
D14
D13
D12
D11
FD3L
D7
D6
D5
D4
D3
FD3H
D15
D14
D13
D12
D11
2
FWT
D2
—
FA2
FA10
D2
D10
D2
D10
D2
D10
D2
D10
1
0
FRDEN
FRD
D1
D0
FWERTS CLWB
FA1
FA0
FA9
FA8
D1
D0
D9
D8
D1
D0
D9
D8
D1
D0
D9
D8
D1
D0
D9
D8
IAP 寄存器列表
● FC0 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
6
5
4
3
CFWEN FMOD2 FMOD1 FMOD0 FWPEN
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
2
FWT
R/W
0
1
FRDEN
R/W
0
0
FRD
R/W
0
Bit 7
CFWEN:Flash 存储器擦 / 写功能使能控制
0:Flash 存储器擦 / 写功能除能
1:Flash 存储器擦 / 写功能已成功使能
当此位由应用程序清零后,Flash 存储器擦 / 写功能除能。注意,此位不可通过
应用程序置位,对此位直接写“1”不会使能擦 / 写功能。此位可用于指示 Flash
存储器擦 / 写功能状态。当此位由硬件置为“1”时,表明 Flash 存储器擦 / 写功
能已经成功使能,若为“0”,表明 Flash 存储器擦 / 写功能除能。
Bit 6~4
FMOD2~FMOD0:Flash 存储器模式选择
000:写入模式
001:页擦除模式
010:保留
011:读出模式
100:保留
101:保留
110:Flash 存储器擦 / 写功能使能模式
111:保留
这几位用于选择 Flash 存储器的操作模式。注意在执行擦 / 写 Flash 存储器操作
之前必须先成功使能“Flash 存储器擦 / 写使能模式”。
Bit 3
FWPEN:Flash 存储器擦 / 写功能使能程序触发控制位
0:擦 / 写功能使能程序未被触发或程序定时器发生溢出
1:擦 / 写功能使能程序被触发且程序定时器开始计时
该位用于启动 Flash 存储器擦 / 写使能程序和内部定时器。此位由应用程序置高,
当内部定时器计时溢出后由硬件清零。需在 FWPEN 置高后尽快写入正确数据
序列到 FD1L/FD1H、FD2L/FD2H 和 FD3L/FD3H 寄存器。
31
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Bit 2
FWT:Flash 存储器写入控制位
0:不启动 Flash 存储器写入程序或 Flash 存储器写入程序已完成
1:启动 Flash 存储器写入程序
此位由软件置“1”,当 Flash 存储器写入程序完成后由硬件清零。
Bit 1
FRDEN:Flash 存储器读出使能位
0:除能
1:使能
此位为 Flash 存储器读出使能位,在执行 Flash 存储器读出操作之前需将此位置
高。将此位清零则禁止 Flash 存储器读出操作。
Bit 0
FRD:Flash 存储器读出控制位
0:不启动 Flash 存储器读出程序或 Flash 存储器读出程序已完成
1:启动 Flash 存储器读出程序
此位由软件置“1”,当 Flash 存储器读出程序完成后由硬件清零。
注:1. 在同一条指令中 FWT、FRDEN 和 FRD 位不可同时设置为“1”。
2. 确保 fSUB 时钟在执行擦或写动作前已稳定。
3. 当读、擦或写动作成功启动后,CPU 相关操作将停止。
4. 确保读、擦或写动作成功完成后才可执行其它操作。
● FC1 寄存器
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
D7~D0:整个芯片复位
当用户写“55H”到该寄存器,将产生一个复位信号将整个单片机复位。
● FC2 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
—
—
—
1
0
FWERTS CLWB
R/W
R/W
0
0
Bit 7~2
未定义,读为“0”
Bit 1
FWERTS:擦除时间和写入时间选择位
0:擦除时间为 3.2ms (tFER) / 写入时间为 2.2ms (tFWR)
1:擦除时间为 3.7ms (tFER) / 写入时间为 3.0ms (tFWR)
Bit 0
CLWB:Flash 存储器写入缓冲器清除控制位
0:不启动清除写入缓冲器或清除程序已完成
1:启动清除写入缓冲器程序
此位由软件置“1”,当清除写入缓冲器程序完成后由硬件清零。
● FARL 寄存器
Bit
Name
R/W
POR
Bit 7~0
Rev.1.00
7
FA7
R/W
0
6
FA6
R/W
0
5
FA5
R/W
0
4
FA4
R/W
0
3
FA3
R/W
0
2
FA2
R/W
0
1
FA1
R/W
0
0
FA0
R/W
0
FA7~FA0:Flash 存储器地址 bit 7 ~ bit 0
32
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● FARH 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
FA13
R/W
0
4
FA12
R/W
0
3
FA11
R/W
0
Bit 7~6
未定义,读为“0”
Bit 5~0
FA13~FA8:Flash 存储器地址 bit 13 ~ bit 8
2
FA10
R/W
0
1
FA9
R/W
0
0
FA8
R/W
0
2
D2
R/W
0
1
D1
R/W
0
0
D0
R/W
0
● FD0L 寄存器
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
D7~D0:第一个 Flash 存储器数据 bit 7 ~ bit 0
注意写入低字节数据寄存器 FD0L 的数据只能存储在 FD0L 寄存器,不会加载
到低 8 位写入缓冲器。
● FD0H 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
D15
R/W
0
6
D14
R/W
0
5
D13
R/W
0
4
D12
R/W
0
3
D11
R/W
0
2
D10
R/W
0
1
D9
R/W
0
0
D8
R/W
0
D15~D8:第一个 Flash 存储器数据 bit 15 ~ bit 8
注意当写入 8 位数据到高字节数据寄存器 FD0H 时,存储在 FD0H 和 FD0L 寄
存器内的 16 位数据将同时加载到 16 位写入缓冲器中,此时 Flash 存储器地址寄
存器 FARH 和 FARL 的内容将自动加一。
● FD1L 寄存器
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
D10
R/W
0
1
D9
R/W
0
0
D8
R/W
0
D7~D0:第二个 Flash 存储器数据 bit 7 ~ bit 0
● FD1H 寄存器
Bit
Name
R/W
POR
Bit 7~0
Rev.1.00
7
D15
R/W
0
6
D14
R/W
0
5
D13
R/W
0
4
D12
R/W
0
3
D11
R/W
0
D15~D8:第二个 Flash 存储器数据 bit 15 ~ bit 8
33
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● FD2L 寄存器
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
D10
R/W
0
1
D9
R/W
0
0
D8
R/W
0
2
D2
R/W
0
1
D1
R/W
0
0
D0
R/W
0
2
D10
R/W
0
1
D9
R/W
0
0
D8
R/W
0
D7~D0:第三个 Flash 存储器数据 bit 7 ~ bit 0
● FD2H 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
D15
R/W
0
6
D14
R/W
0
5
D13
R/W
0
4
D12
R/W
0
3
D11
R/W
0
D15~D8:第三个 Flash 存储器数据 bit 15 ~ bit 8
● FD3L 寄存器
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
D7~D0:第四个 Flash 存储器数据 bit 7 ~ bit 0
● FD3H 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
D15
R/W
0
6
D14
R/W
0
5
D13
R/W
0
4
D12
R/W
0
3
D11
R/W
0
D15~D8:第四个 Flash 存储器数据 bit 15 ~ bit 8
Flash 存储器擦 / 写流程
在开始更新 Flash 存储器之前,先了解 Flash 存储器擦 / 写流程操作是很重要的,
用户可参考下列步骤进行程序开发,以确保 IAP 功能擦 / 写 Flash 存储器内容更
新正确。
Flash 存储器擦 / 写流程说明
1. 先启动“Flash 存储器擦 / 写使能程序”。当 Flash 存储器擦 / 写功能成功使
能后,FC0 寄存器中的 CFWEN 位会由硬件自动置高,此时才可执行擦 / 写
Flash 存储器操作。详细内容请参考“Flash 存储器擦 / 写使能程序”。
2. 配置 Flash 存储器地址以指定要擦除的页,标记地址,然后擦除此页。
对于页擦除操作,首先设置 FARL 和 FARH 寄存器来指定要擦除页的起始地
址,然后写入任意数据到 FD0H 寄存器来标记地址。每写入一个任意数据到
FD0H 寄存器,当前地址将自动加一。当地址自动递增到当前页的最大地址,
即 11111b,地址将不再增加,并停在该页的最后一个地址。注意写数据到
FD0H 是为了标记地址,这一操作必须执行以确定要擦除哪些地址。
3. 查空确认是否擦除成功,可采用 TABRD 指令进行读取并比对是否为“0000h”,
如果擦除不成功返回步骤 2 再执行页擦除。
Rev.1.00
34
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
4. 写入数据至该页,详细内容请参考“Flash 存储器写入程序”。
5. 采用 TABRD 指令进行读取并比对写入数据是否正确,如果写入不成功,设
置 CLWB 位为“1”清除“写入缓冲器”再返回步骤 4,再写入相同数据。
6. 完成当前页擦 / 写后,如果无需擦 / 写其它页,可清除 CFWEN 位来解除“Flash
存储器擦 / 写使能模式”。
Flash Memory
Erase/Write Flow
Flash Memory Erase/Write
Function Enable Procedure(*)
(CFWEN=1)
Page Erase
Flash Memory
No
Blank Check
Page Data=0000h?
Yes
Flash Memory
(Page) Write Procedure(*)
Set CLWB bit
No
Verify
Page Data
Correct?
Yes
Clear CFWEN bit
Disable Flash Memory
Erase/Write Function
END
Flash 存储器擦 / 写流程
注:“Flash 存储器擦 / 写使能程序”和“Flash 存储器写入程序”详见后续章节。
Rev.1.00
35
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Flash 存储器擦 / 写使能程序
Flash 存储器擦 / 写使能模式是专门为保护 Flash 存储器内容不被轻易地修改而
设计的。用户必须先使能 Flash 存储器擦 / 写功能,才能通过 IAP 控制寄存器来
更改 Flash 存储器数据。
Flash 存储器擦 / 写使能程序说明
1. 写入数值“110”至 FC0 寄存器中的 FMOD[2:0] 位,选择 Flash 存储器擦 / 写
使能模式。
2. 设置 FC0 寄存器中的 FWPEN 位为“1”,启动 Flash 存储器擦 / 写使能程序,
此时内部硬件线路会启动一个内部定时器。
3. 使用者必须在 FWPEN 位置高后尽快填入正确数据序列至 FD1L~FD3L 和
FD1H~FD3H 寄存器中,数据序列为 FD1L=00h、FD1H=04h、FD2L=0Dh、
FD2H=09h、FD3L=C3h、FD3H=40h。
4. 一旦定时器计时结束,无论写入的数据序列是否正确,FWPEN 位将由硬件
自动清零。
5. 如果写入的数据序列不正确,表示 Flash 存储器擦 / 写功能没有成功使能,需
重复以上步骤。如果写入的数据序列正确,表示 Flash 存储器擦 / 写功能成功
使能。
6. 一旦 Flash 存储器擦 / 写功能成功使能,即可通过 IAP 控制寄存器进行页擦 /
写操作来更新 Flash 存储器内容。
将 FC0 寄存器中的 CFWEN 位清零,可除能 Flash 存储器擦 / 写功能,此时不
必再执行以上步骤。
Rev.1.00
36
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Flash Memory
Erase/Write Function
Enable Procedure
FMOD[2:0]=110
Set FWPEN=1
Hardware start a timer
Wrtie the following pattern to Flash Data register
FD1L=00h, FD1H=04h
FD2L=0Dh, FD2H=09h
FD3L=C3h, FD3H=40h
No
Is timer
Time-out
FWPEN=0?
Yes
Is pattern
correct?
No
Yes
CFWEN=1
Flash Memory Erase/Write
Function Enabled
CFWEN=0
Flash Memory Erase/Write
Function Disabled
END
Flash 存储器擦 / 写使能程序
Rev.1.00
37
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Flash 存储器写入步骤
当 Flash 擦 / 写功能成功使能后,CFWEN 位会被硬件置高,此时要写入 Flash
存储器的数据才能加载到写入缓冲器。在开始写入程序之前,应先正确配置
IAP 控制寄存器,将所选的 Flash 存储器页的数据擦除。
写入缓冲器的大小为每页 32 个字,其地址与 FA13~FA5 指定的 Flash 存储器页
的地址为相对应关系。注意,写入缓冲器的地址与对应存储器的地址必须在相
同页。
Flash 存储器连续地址写入步骤说明
对于写入操作每次写入的数据最多为 32 字。多笔连续地址的数据写入时,
写入缓冲器的地址将自动加“1”。用户只需将第一笔数据的地址填入 FARL
和 FARH,并将第一笔数据依序填入 FD0L 和 FD0H 寄存器 ( 先写 FD0L 再写
FD0H,才会将 FD0L 和 FD0H 数据一起填入写入缓冲器 ),写入缓冲器的地址
将自动加“1”,要填入第二笔数据时,可不用再指定地址 FARL 和 FARH。
当连续地址到达当前页的最后一个地址时,写入缓冲器的地址将不会再自动加
“1”,保持在最后一个地址。
1. 启动“Flash 存储器擦 / 写使能程序”,确认 CFWEN 的值,如果 CFWEN 被
硬件置高,表示可进行 IAP 擦 / 写操作。详细内容请参考“Flash 存储器擦 /
写使能程序”。
2. 设定 FMOD[2:0] 为“001”,选择擦除模式,并设定 CLWB 位为“1”,清除“写
入缓冲器”。设定 FWT 位为“1”,擦除 FARH 和 FARL 指定且标记地址的
目标页,直到 FWT 变为“0”。
3. 通过查表指令读出方式进行查空,以确保擦除操作已成功完成。
如果擦除操作不成功则返回步骤 2。
如果擦除操作成功则接着执行步骤 4。
4. 设定 FMOD[2:0] 为“000”,选择写入模式。
5. 先将目标起始地址写入 FARL 和 FARH 寄存器中,将要往连续地址所在页写
入的数据依序写入 FD0L 和 FD0H 寄存器。最多可写入 32 个字。
6. 设定 FWT 位为“1”,将写入缓冲器的数据写入到对应的 Flash 存储器中,
直到 FWT 变为“0”。
7. 通过查表指令读出方式进行数据比对,以确保写入操作已成功完成。
如果写入操作不成功,设置 CLWB 位为“1”清除写入缓冲器,再返回步骤 5。
如果写入操作成功则接着执行步骤 8。
8. 将 CFWEN 位清零以除能 Flash 存储器擦 / 写功能。
Rev.1.00
38
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Write Flash
Memory
Flash Memory Erase/Write
Function Enable Procedure
Page Erase
FMOD[2:0]=001
Set CLWB Bit
Set Erase Page Address
FARH=xxH, FARL=xxH
Write dummy data into
FD0H (Tag Address)
No
Tag address
Finish ?
Yes
FWT=1
No
FWT=0 ?
Yes
Blank Check with Table
Read instruction
Blank Check
Page Data=0000h?
No
Yes
Write
FMOD[2:0]=000
Specify Flash Memory Address
FARH=xxH, FARL=xxH
Write data to Write Buffer
FD0L=xxH, FD0H=xxH
No
Write next data
Write to Buffer
Finish?
Yes
FWT=1
No
Set CLWB bit
FWT=0 ?
Yes
Verify data with
Table Read instruction
DATA correct ?
No
Yes
No
Write another Page
Write Finish ?
Yes
Clear CFWEN bit
END
Flash 存储器连续地址写入步骤
注:1. 当擦或写动作成功启动后,所有 CPU 相关操作将暂停。
2. 在擦除或写入操作中,FWT 位由高变低所需时间可以通过 FC2 寄存器中的 FWERTS 位选择。
Rev.1.00
39
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Flash 存储器非连续地址写入步骤说明
连续地址写入操作与非连续地址写入操作的主要差别在于要写入的数据是否位
于连续地址。如果要写入的数据不是位于连续的地址,当一笔数据成功写入到
Flash 存储器后需重新配置另一个目标地址。
以两笔非连续的数据写入操作为例,说明如下:
1. 启动“Flash 存储器擦 / 写使能程序”,确认 CFWEN 位的值,如果 CFWEN
被硬件置高,表示可进行 IAP 擦 / 写操作。详细内容请参考“Flash 存储器擦
写使能程序”。
2. 设定 FMOD[2:0] 为“001”,选择擦除模式,并设置 CLWB 位为“1” 清除“写
入缓冲器”。设定 FWT 位为“1”,擦除 FARH 和 FARL 指定且已标记地址
的目标页,直到 FWT 变为“0”。
3. 通过查表指令读出方式进行查空,以确保擦除操作已成功完成。
如果擦除操作不成功则返回步骤 2。
如果擦除操作成功则接着执行步骤 4。
4. 设定 FMOD[2:0] 为“000”,选择写入模式。
5. 先 将 目 标 地 址 ADDR1 写 入 FARL 和 FARH 寄 存 器 中, 将 要 写 入 的 数 据
DATA1 先写入 FD0L 寄存器再写入 FD0H 寄存器。
6. 设定 FWT 位为“1”,将写入缓冲器的数据写入到对应的 Flash 存储器中,
直到 FWT 变为“0”。
7. 通过查表指令读出方式进行数据比对,以确保写入操作已成功完成。
如果写入操作不成功,设置 CLWB 位为“1”清除写入缓冲器,再返回步骤 5。
如果写入操作成功则接着执行步骤 8。
8. 再 将 目 标 地 址 ADDR2 写 入 FARL 和 FARH 寄 存 器 中, 将 要 写 入 的 数 据
DATA2 先写入 FD0L 寄存器再写入 FD0H 寄存器。
9. 设定 FWT 位为“1”,将写入缓冲器的数据写入到对应的 Flash 存储器中,
直到 FWT 变为“0”。
10. 通过查表指令读出方式进行数据比对,以确保写入操作已成功完成。
如果写入操作不成功,设置 CLWB 位为“1”清除写入缓冲器,再返回步骤 8。
如果写入操作成功则接着执行步骤 11。
11. 将 CFWEN 位清零以除能 Flash 存储器擦 / 写功能。
Rev.1.00
40
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Write Flash
Memory
Flash Memory Erase/Write
Function Enable Procedure
Page Erase
FMOD[2:0]=001
Set CLWB Bit
Set Erase Page Address
FARH=xxH, FARL=xxH
Write dummy data into
FD0H (Tag Address)
No
Tag address
Finish ?
Yes
FWT=1
No
FWT=0 ?
Yes
Blank Check with Table
Read instruction
Blank Check
Page Data=0000h?
No
Yes
Write
FMOD[2:0]=000
Specify Flash Memory Address
FARH=xxH, FARL=xxH
Write data to Write Buffer
FD0L=xxH, FD0H=xxH
FWT=1
No
FWT=0 ?
Set CLWB bit
Yes
Verify data with
Table Read instruction
DATA correct ?
No
Yes
Yes
Write another Word
Write Another
Data Word ?
No
Clear CFWEN bit
END
Flash 存储器非连续地址写入步骤
注:1. 当擦或写动作成功启动后,所有 CPU 相关操作将暂停。
2. 在擦除或写入操作中,FWT 位由高变低所需时间可以通过 FC2 寄存器中的 FWERTS 位选择。
Rev.1.00
41
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Flash 存储器写入操作注意事项
1. 要开始对 Flash 存储器进行 IAP 擦 / 写操作之前,必须先完成“Flash 存储器
擦 / 写使能程序”。
2. Flash 存储器擦除操作以页为单位进行擦除。
3. 写入缓冲器中的数据写入 Flash 存储器是以页为单位进行的,且写入时不可
跨页填写。
4. 数据写入 Flash 存储器后,必须以查表指令“TABRD”读出方式比对所写数
据是否正确,若比对发现写入数据不正确时,通过置高 CLWB 位将写入缓冲
器清除,然后重新写入数据,且不清除 Flash 存储器,直接再写入,然后再
比对,直到写入正确。
5. IAP 写入与数据比对时需与最高应用频率相同。
Flash 存储器读出程序
要启动 Flash 存储器读出程序,需将 FMOD[2:0] 位设为“011”选择 Flash 存
储器读出模式,将 FRDEN 位设为“1”使能读出功能。将要读出的地址填入
FARH 和 FARL 地址寄存器中,并将 FRD 位设为“1”,然后便可开始 Flash
存储器读出操作。当 FRD 被硬件清为“0”时,则可从 FD0H 和 FD0L 寄存器
中取得 Flash 存储器中该地址数据。进行 Flash 存储器读出操作前,无需执行
Flash 存储器擦 / 写使能程序。
Read Flash
Memory
FMOD[2:0]=011
FRDEN=1
Flash Memory Address:
FARH=xxh, FARL=xxh
FRD=1
No
FRD=0 ?
Yes
Read value:
FD0L=xxh, FD0H=xxh
No
Read Finish ?
Yes
FRDEN=0
END
Flash 存储器读出步骤
注:1. 当读动作成功启动后,所有 CPU 相关操作将暂停。
2. FRD 位由高变低所需时间为 3 个指令周期 ( 典型值 )。
Rev.1.00
42
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
数据存储器
数据存储器是内容可更改的 8 位 RAM 内部存储器,用来储存临时数据。
数据存储器分为三个部分,第一部分是特殊功能数据存储器。这些寄存器有固
定的地址且与单片机的正确操作密切相关。大多特殊功能寄存器都可在程序控
制下直接读取和写入,但有些被加以保护而不对用户开放。第二部分数据存储
器是做一般用途使用,都可在程序控制下进行读取和写入。第三部分为 LCD 数
据存储器。该特殊区域的的数据直接映射到 LCD 显示,所以写入该存储器区域
的数据将直接影响显示。
当使用间接寻址时,切换不同的数据存储器 Sector 通过设置正确的间接寻址指
针值实现。
结构
数据存储器被分为多个 Sector,都位于 8 位存储器中。每个数据存储器 Sector
分为两种类型,即特殊功能数据存储器和通用数据存储器。特殊功能数据存储
器地址范围为 00H~7FH,而通用数据存储器地址范围为 80H~FFH。LCD 显示
数据存储器位于 Sector 4 的 00H~1FH。
特殊功能数据存储器
位于 Sector
0, 1
通用数据存储器
容量
Sector:地址
0: 80H~FFH
1: 80H~FFH
512×8
2: 80H~FFH
3: 80H~FFH
LCD 显示数据存储器
Sector:地址
4: 00H~1FH
数据存储器概要
LCD Display
Data Memory
00H
(Sector 4)
00H
Special Purpose
Data Memory
1FH
(Sector 0 ~ Sector 1)
7FH
80H
General Purpose
Data Memory
(Sector 0 ~ Sector 3)
FFH
Sector 0
Sector 1
Sector 2
Sector 3
数据存储器结构
Rev.1.00
43
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
数据存储器寻址
此单片机支持扩展指令架构,它并没有可用于数据存储器的存储区指针。存储
区指针 PBP 仅适用于程序存储器。对于数据存储器,使用间接寻址访问方式时
所需的 Sector 是通过 MP1H 或 MP2H 寄存器指定,而所选 Sector 的某一数据存
储器地址是通过 MP1L 或 MP2L 寄存器指定。
直接寻址可用于所有 Sector,通过扩展指令可以寻址所有可用的数据存储器空
间。当所访问的数据存储器位于除 Sector 0 外的任何数据存储器 Sector 时,扩
展指令可代替间接寻址方式用来访问数据存储器。标准指令和扩展指令的主
要区别在于扩展指令中的数据存储器地址“m”有 10 个有效位,高字节表示
Sector,低字节表示指定的地址。
通用数据存储器
所有的单片机程序需要一个读 / 写的存储区,让临时数据可以被储存和再使用,
该 RAM 区域就是通用数据存储器。这个数据存储区可让使用者进行读取和写
入的操作。使用位操作指令可对个别的位做置位或复位的操作,较大地方便了
用户在数据存储器内进行位操作。
特殊功能数据存储器
这个区域的数据存储器是存放特殊寄存器的,这些寄存器与单片机的正确操作
密切相关,大多数的寄存器可进行读取和写入,只有一些是被写保护而只能读
取的,相关细节的介绍请参看有关特殊功能寄存器的部分。要注意的是,任何
读取指令对存储器中未定义的地址进行读取将返回“00H”。
Rev.1.00
44
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Sector 0
Sector 1
Sector 0
Sector 1
EEC
00H
IAR0
40H
01H
MP0
41H
EEAL
02H
IAR1
42H
EEAH
03H
MP1L
43H
EED
04H
MP1H
44H
05H
ACC
45H
FC2
06H
PCL
46H
FARL
07H
TBLP
47H
FARH
08H
TBLH
48H
09H
TBHP
49H
STMC0
0AH
STATUS
4AH
STMC1
FD1L
0BH
PBP
4BH
STMDL
FD1H
0CH
IAR2
4CH
STMDH
FD2L
0DH
MP2L
4DH
STMAL
FD2H
0EH
MP2H
4EH
STMAH
FD3L
0FH
RSTFC
4FH
STMRP
FD3H
10H
SCC
50H
CTM0C0
IFS
11H
HIRCC
51H
CTM0C1
FC0
FC1
FD0L
FD0H
52H
CTM0DL
13H
LXTC
53H
CTM0DH
PAS0
14H
PA
54H
CTM0AL
PAS1
15H
PAC
55H
CTM0AH
PBS0
16H
PAPU
56H
CTM1C0
PBS1
17H
PAWU
57H
CTM1C1
PCS0
18H
RSTC
58H
CTM1DL
PCS1
19H
LVRC
59H
CTM1DH
PDS0
5AH
CTM1AL
PDS1
CTM1AH
12H
1AH
1BH
MFI0
5BH
1CH
MFI1
5CH
1DH
5DH
1EH
WDTC
5EH
LCDC
1FH
INTEG
5FH
LCDCP
20H
INTC0
60H
21H
INTC1
61H
22H
INTC2
62H
SLEDC0
REGC
63H
PGAC0
24H
PB
64H
PGAC1
25H
PBC
65H
PGAC2
26H
PBPU
66H
PGAC3
27H
PC
67H
SCFC0
28H
PCC
68H
SCFC1
29H
PCPU
69H
SCFCKD
2AH
6AH
CCVREFC
2BH
6BH
SADC0
23H
2CH
PSCR
6CH
SADC1
2DH
TB0C
6DH
SADOH
2EH
TB1C
6EH
SADOL
2FH
SLEDC1
6FH
30H
SIMC0
70H
PD
31H
SIMC1
71H
PDC
32H
SIMD
72H
PDPU
33H
SIMA/SIMC2
73H
34H
SIMTOC
74H
35H
75H
36H
76H
37H
77H
38H
USR
39H
UCR1
79H
3AH
UCR2
7AH
78H
3BH
UCR3
7BH
3CH
TXR_RXR
7CH
3DH
BRG
7DH
3EH
7EH
3FH
7FH
: Reserved, cannot be changed
: Unused, read as 00H
特殊功能数据存储器结构
Rev.1.00
45
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
特殊功能寄存器
大部分特殊功能寄存器的细节将在相关功能章节描述,但有几个寄存器需在此
章节单独描述。
间接寻址寄存器 – IAR0, IAR1, IAR2
间接寻址寄存器 IAR0、IAR1 和 IAR2 的地址虽位于数据存储区,但不同于普
通寄存器,它们没有实际的物理地址。与定义实际存储器地址的直接存储器寻
址不同,间接寻址是使用间接寻址寄存器和存储器指针来执行存储器数据操
作。在间接寻址寄存器 IAR0、IAR1 和 IAR2 上的任何动作,将对间接寻址指
针 MP0、MP1L/MP1H 或 MP2L/MP2H 所指定的存储器地址产生对应的读 / 写
操作。它们总是成对出现,IAR0 和 MP0 可以访问 Sector 0,而 IAR1 和 MP1L/
MP1H、IAR2 和 MP2L/MP2H 可以访问任何 Sector。因为这些间接寻址寄存器
不是实际存在的,直接读取将返回“00H”的结果,而直接写入此寄存器则不
做任何操作。
存储器指针 – MP0, MP1H/MP1L, MP2H/MP2L
该单片机提供五个存储器指针,即 MP0、MP1L、MP1H、MP2L 和 MP2H。由
于这些指针在数据存储器中能像普通的寄存器一般被操作,因此提供了一个寻
址和数据追踪的有效方法。当对间接寻址寄存器进行任何操作时,单片机指向
的实际地址是由存储器指针所指定的地址。MP0、IAR0 用于访问 Sector 0,而
MP1L/MP1H 和 IAR1、MP2L/MP2H 和 IAR2 可根据 MP1H 或 MP2H 寄存器访
问所有的 Sector。使用扩展指令可对所有的数据 Sector 进行直接寻址。
以下例子说明如何清除一个具有 4 RAM 地址的区块,它们已事先定义成地址
adres1 到 adres4。
间接寻址程序举例
Example 1
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:
:
Rev.1.00
; 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
46
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Example 2
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,01h
mov mp1h,a
mov a,offset adres1
mov mp1l,a
loop:
clr IAR1
inc mp1l
sdz block
jmp loop
continue:
:
; setup size of block
; setup the memory sector
; Accumulator loaded with first RAM address
; setup memory pointer with first RAM address
; clear the data at address defined by MP1
; increment memory pointer MP1L
; check if last memory location has been cleared
在上面的例子中有一点值得注意,即并没有确定 RAM 地址。
使用扩展指令直接寻址程序举例
data .section ‘data’
temp db ?
code .section at 0 code
org 00h
start:
lmov a,[m]
lsub a, [m+1]
snz c
jmp continue
lmov a,[m]
mov temp,a
lmov a,[m+1]
lmov [m],a
mov a,temp
lmov [m+1],a
continue:
:
;
;
;
;
;
move [m] data to acc
compare [m] and [m+1] data
[m]>[m+1]?
no
yes, exchange [m] and [m+1] data
注:“m”是位于任何数据存储器 Sector 的某一地址。例如,m=1F0H 表示 Sector 1 中的地
址 0F0H。
程序存储区指针 – PBP
该单片机程序存储器被分为几个 Bank,可以通过设置程序存储区指针 PBP 来
访问不同的程序存储区。PBP 寄存器应在单片机使用“JMP”或“CALL”指令
执行“分支”操作前正确地配置。在分支指令执行后会跳转到一个非连续的程
序存储器地址,此地址位于程序存储区指针所选 Bank 内。
Rev.1.00
47
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● PBP 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
Bit 7~1
未定义,读为“0”
Bit 0
PBP0:程序存储区选择
0:Bank 0
1:Bank 1
4
—
—
—
3
—
—
—
2
—
—
—
1
—
—
—
0
PBP0
R/W
0
累加器 – ACC
对任何单片机来说,累加器是相当重要的,且与 ALU 所完成的运算有密切关
系,所有 ALU 得到的运算结果都会暂时存在 ACC 累加器里。若没有累加器,
ALU 必须在每次进行如加法、减法和移位的运算时,将结果写入到数据存储器,
这样会造成程序编写和时间的负担。另外数据传送也常常牵涉到累加器的临时
储存功能,例如在使用者定义的一个寄存器和另一个寄存器之间传送数据时,
由于两寄存器之间不能直接传送数据,因此必须通过累加器来传送数据。
程序计数器低字节寄存器 – PCL
为了提供额外的程序控制功能,程序计数器低字节设置在数据存储器的特殊功
能区域内,程序员可对此寄存器进行操作,很容易的直接跳转到其它程序地址。
直接给 PCL 寄存器赋值将导致程序直接跳转到程序存储器的某一地址,然而由
于寄存器只有 8 位长度,因此只允许在本页的程序存储器范围内进行跳转,而
当使用这种运算时,要注意会插入一个空指令周期。
查表寄存器 – TBLP, TBHP, TBLH
这三个特殊功能寄存器对存储在程序存储器中的表格进行操作。TBLP 和 TBHP
为表格指针,指向表格数据存储的地址。它们的值必须在任何表格读取指令执
行前加以设定,由于它们的值可以被如“INC”或“DEC”的指令所改变,这
就提供了一种简单的方法对表格数据进行读取。表格读取数据指令执行之后,
表格数据高字节存储在 TBLH 中。其中要注意的是,表格数据低字节会被传送
到使用者指定的地址。
状态寄存器 – STATUS
这 8 位的状态寄存器由 SC 标志位、CZ 标志位、零标志位 (Z)、进位标志位 (C)、
辅助进位标志位 (AC)、溢出标志位 (OV)、暂停标志位 (PDF) 和看门狗定时器
溢出标志位 (TO) 组成。这些算术 / 逻辑操作和系统运行标志位是用来记录单片
机的运行状态。
除了 PDF 和 TO 标志外,状态寄存器中的位像其它大部分寄存器一样可以被改
变。任何数据写入到状态寄存器将不会改变 TO 或 PDF 标志位。另外,执行不
同的指令后,与状态寄存器有关的运算可能会得到不同的结果。TO 标志位只会
受系统上电、看门狗溢出或执行“CLR WDT”或“HALT”指令影响。PDF 标
志位只会受执行“HALT”或“CLR WDT”指令或系统上电影响。
SC、CZ、Z、OV、AC 和 C 标志位通常反映最近运算的状态。
● C:当加法运算的结果产生进位,或减法运算的结果没有产生借位时,则 C
被置位,否则 C 被清零,同时 C 也会被带进位的移位指令所影响。
Rev.1.00
48
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● AC:当低半字节加法运算的结果产生进位,或低半字节减法运算的结果没有
产生借位时,AC 被置位,否则 AC 被清零。
● Z:当算术或逻辑运算结果是零时,Z 被置位,否则 Z 被清零。
● OV:当运算结果高两位的进位状态异或结果为 1 时,OV 被置位,否则 OV
被清零。
● PDF:系统上电或执行“CLR WDT”指令会清零 PDF,而执行“HALT”指
令则会置位 PDF。
● TO:系统上电或执行“CLR WDT”或“HALT”指令会清零 TO,而当 WDT
溢出则会置位 TO。
● CZ:不同指令不同标志位的操作结果。详细资料请参考寄存器定义部分。
● SC:当 OV 与当前指令操作结果 MSB 执行“XOR”所得结果。
另外,当进入一个中断程序或执行子程序调用时,状态寄存器不会自动压入到
堆栈保存。假如状态寄存器的内容是重要的且子程序可能改变状态寄存器的话,
则需谨慎的去做正确的储存。
● STATUS 寄存器
Bit
Name
R/W
POR
7
SC
R/W
x
6
CZ
R/W
x
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.00
Bit 7
SC:当 OV 与当前指令操作结果 MSB 执行“XOR”所得结果
Bit 6
CZ:不同指令不同标志位的操作结果。
对于 SUB/SUBM/LSUB/LSUBM 指令,CZ 等于 Z 标志位。
对于 SBC/SBCM/LSBC/LSBCM 指令,CZ 等于上一个 CZ 标志位与当前零标志
位执行“AND”所得结果。对于其它指令,CZ 标志位无影响。
Bit 5
TO:看门狗溢出标志位
0:系统上电或执行“CLR WDT”或“HALT”指令后
1:看门狗溢出发生
Bit 4
PDF:暂停标志位
0:系统上电或执行“CLR WDT”指令后
1:执行“HALT” 指令
Bit 3
OV:溢出标志位
0:无溢出
1:运算结果高两位的进位状态异或结果为 1
Bit 2
Z:零标志位
0:算术或逻辑运算结果不为 0
1:算术或逻辑运算结果为 0
Bit 1
AC:辅助进位标志位
0:无辅助进位
1:在加法运算中低四位产生了向高四位进位,或减法运算中低四位不发生从
高四位借位
Bit 0
C:进位标志位
0:无进位
1:如果在加法运算中结果产生了进位,或在减法运算中结果不发生借位
C 也受循环移位指令的影响。
49
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
EEPROM 数据存储器
该单片机内建 EEPROM 数据存储器。由于其非易失的存储结构,即使在电源掉
电的情况下存储器内的数据仍然保存完好。这种存储区扩展了存储器空间,对
设计者来说增加了许多新的应用机会。EEPROM 可以用来存储产品编号、校准
值、用户特定数据、系统配置参数或其它产品信息等。EEPROM 的数据读取和
写入过程也会变的更简单。
EEPROM 数据存储器结构
该单片机的 EEPROM 数据存储器容量为 1024×8 位。由于映射方式与程序存储
器和数据存储器不同,因此不能像其它类型的存储器一样寻址。使用 Sector 0
中的一个地址寄存器和一个数据寄存器以及 Sector 1 中的一个控制寄存器,可
以实现对 EEPROM 的单字节读写操作。
EEPROM 寄存器
有四个寄存器控制内部 EEPROM 数据存储器总的操作,地址寄存器 EEAL
和 EEAH、数据寄存器 EED 及控制寄存器 EEC。EEAL、EEAH 和 EED 位于
Sector 0 中,它们能像其它特殊功能寄存器一样直接被访问。EEC 位于 Sector 1
中,仅可通过 MP1L/MP1H 和 IAR1 或 MP2L/MP2H 和 IAR2 进行间接读取或写
入。由于 EEC 控制寄存器位于 Sector 1 中的“40H”,在 EEC 寄存器上的任何
操作被执行前,MP1L 或 MP2L 必须先设为“40H”,MP1H 或 MP2H 被设为
“01H”。
位
寄存器
名称
7
6
5
4
3
2
1
0
EEAL EEAL7 EEAL6 EEA5L EEAL 4 EEAL3 EEAL2 EEAL1 EEAL0
EEAH
—
—
—
—
—
—
EEAH1 EEAH0
EED
D7
D6
D5
D4
D3
D2
D1
D0
EEC EWERTS EREN
ER
MODE WREN
WR
RDEN
RD
EEPROM 寄存器列表
● EEAL 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
6
5
4
3
2
1
0
EEAL7 EEAL6 EEAL5 EEAL4 EEAL3 EEAL2 EEAL1 EEAL0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
EEAL7~EEAL0:数据 EEPROM 地址低字节 Bit 7 ~ Bit 0
● EEAH 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
—
—
—
Bit 7~2
未定义,读为“0”
Bit 1~0
EEAH1~EEAH0:数据 EEPROM 地址高字节 Bit 1 ~ Bit 0
50
1
0
EEAH1 EEAH0
R/W
R/W
0
0
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● 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
3
WREN
R/W
0
2
WR
R/W
0
1
RDEN
R/W
0
0
RD
R/W
0
D7~D0:数据 EEPROM 数据 Bit 7 ~ Bit 0
● EEC 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
6
EWERTS EREN
R/W
R/W
0
0
5
ER
R/W
0
4
MODE
R/W
0
Bit 7
EWERTS:数据 EEPROM 擦除时间和写入时间选择位
0:擦除时间为 3.2ms (tEEER)/ 写入时间为 2.2ms (tEEWR)
1:擦除时间为 3.7ms (tEEER)/ 写入时间为 3.0ms (tEEWR)
Bit 6
EREN:数据 EEPROM 擦使能位
0:除能
1:使能
此位用来使能数据 EEPROM 擦功能,向数据 EEPROM 擦操作之前需将此位
置高。擦周期结束后,硬件自动将此位清零。将此位清零时,则禁止向数据
EEPROM 擦操作。
Bit 5
ER:数据 EEPROM 擦控制位
0:擦周期结束
1:开始擦周期
此位为数据 EEPROM 擦控制位,由应用程序将此位置高将激活擦周期。擦周期
结束后,硬件自动将此位清零。当 EREN 未先置高时,此位置高无效。
Bit 4
MODE:数据 EEPROM 操作模式选择位
0:字节操作模式
1:页操作模式
此位为数据 EEPROM 操作模式选择位。当此位为高,则选择页写、擦或读操作
模式。当此位为 0,则选择字节写或读操作模式。EEPROM 页缓存器大小为 16
字节。
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 读操作。
51
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Bit 0
RD:EEPROM 读控制位
0:读周期结束
1:开始读周期
此位为数据 EEPROM 读控制位,由应用程序将此位置高将激活读周期。读周期
结束后,硬件自动将此位清零。当 RDEN 未首先置高时,此位置高无效。
注:1. 在同一条指令中 EREN、ER、WREN、WR、RDEN 和 RD 不能同时置为“1”。
2. 确保 fSUB 时钟在执行写动作前已稳定。
3. 确保擦 / 写动作完成后才可改写 EEPROM 相关寄存器或启动 IAP 功能。
EEPROM 读数据
单片机有两种模式可实现从 EEPROM 中读取数据,即字节读模式和页读模式,
可通过 EEC 寄存器中的 EEPROM 操作模式选择位 MODE 选择。
字节读模式
当模式选择位 MODE 为 0 时,可执行 EEPROM 字节读操作。为了实现字节读
操作,EEPROM 中要读取数据的地址需先放入 EEAH 和 EEAL 寄存器中,EEC
寄存器中的读使能位 RDEN 也要置高以使能读功能,然后再置高 RD 位以开始
EEPROM 字节读操作。注意,若 RD 为已置高而 RDEN 位还未被置高则不能开
始读操作。若读周期结束,EEPROM 数据可以从 EED 寄存器中读取,RD 位将
自动清零。读到的数据在其他读或写操作执行前将一直保留在 EED 寄存器中。
应用程序可轮询 RD 位以确定数据可以有效地读取。
页读模式
当模式选择位 MODE 为 1 时,可执行 EEPROM 页读操作。页读操作中页大小
可达 16 个字节。为了实现页读操作,EEPROM 中要读取页的起始地址需先放
入 EEAH 和 EEAL 寄存器中,EEC 寄存器中的读使能位 RDEN 也要置高以使
能读功能,然后再置高 RD 位以开始 EEPROM 页读操作。注意,若 RD 为已置
高而 RDEN 位还未被置高则不能开始读操作。若读周期结束,EEPROM 数据可
以从 EED 寄存器中读取,而当前地址将由硬件自动加一,然后 RD 位将自动清
零。只要再置高 RD 位无需重新配置 EEPROM 地址和 RDEN 控制位,就可以
连续读取下一个 EEPROM 地址的数据。应用程序可轮询 RD 位以确定数据可以
有效地读取。
EEPROM 地址高 6 位用来指定要读取页的位置,而低 4 位用来指向实际的地
址。在页操作模式低 4 位地址将自动加一,而高 6 位地址不会自动增加。当
EEPROM 地址低 4 位自动递增到当前页的最大地址,即 0FH,EEPROM 地址
低 4 位的值会停止在 0FH,EEPROM 地址将不会再增加。
EEPROM 页擦操作
当模式选择位 MODE 为 1 时,可执行 EEPROM 页擦操作。EEPROM 一页可
擦除 16 个字节。上电复位后内部页缓存器将由硬件清零。当 EEPROM 擦使能
控制位 EREN 由 1 变为 0 时,内部页缓存器也会被清零。注意当 EREN 位由 0
变为 1 时,内部页缓存器不会清零。EEPROM 地址高 6 位用来指定要擦除页
的位置,而低 4 位用来指向实际的地址。在页擦操作模式每写入一字节任意数
据到 EED 寄存器,低 4 位地址将自动加一,而高 6 位地址不会自动增加。当
EEPROM 地址低 4 位自动递增到当前页的最大地址,即 0FH,EEPROM 地址
低 4 位的值会停止在 0FH,EEPROM 地址将不会再增加。
为了实现页擦操作,EEPROM 中要擦除页的起始地址需先放入 EEAH 和 EEAL
寄存器中,要写入的任意数据也需存入 EED 寄存器中。一页的最大数据长度
为 16 字节。注意写数据到 EED 是为了标记地址,这一操作必须执行以确定要
Rev.1.00
52
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
擦除哪些地址。当一整页的任意数据都写入 EED 寄存器后,EEC 寄存器中的
EREN 位先置高以使能擦功能,然后 EEC 寄存器中的 ER 位需立即置高以开始
擦操作。这两条指令必须在两个指令周期内连续执行才可成功启动一个擦除操
作。进行擦除操作之前应先将总中断使能位 EMI 清零,在一个有效的擦启动步
骤完成之后再将其使能。
由于控制 EEPROM 擦除周期是一个内部时钟,与单片机的系统时钟异步,所
以擦除 EEPROM 数据的时间将有所延迟。可通过轮询 EEC 寄存器中的 ER 位
或判断 EEPROM 中断以侦测擦周期是否完成。若擦除周期完成,ER 位将自动
清零,通知用户数据已擦除。因此,应用程序将轮询 ER 位以确定擦除周期是
否结束。擦操作结束后,EREN 位将会被硬件置低。执行完一个页擦操作后,
EEPROM 被擦除页的内容将全为零。
EEPROM 写操作
此单片机有两种模式可实现写数据到 EEPROM,即字节写模式和页写模式,可
通过 EEC 寄存器中的 EEPROM 操作模式选择位 MODE 选择。
字节写模式
当模式选择位 MODE 为 0 时,可执行 EEPROM 字节写操作。为了实现字节写
操作,EEPROM 中要写入数据的地址需先放入 EEAH 和 EEAL 寄存器中,写入
的数据也需存入 EED 寄存器中。EEC 寄存器中的写使能位 WREN 先置高以使
能写功能,然后 EEC 寄存器中的 WR 位需立即置高以开始写操作。这两条指令
必须在两个指令周期内连续执行才可成功启动一个写操作。进行写操作之前应
先将总中断使能位 EMI 清零,在一个有效的写启动步骤完成之后再将其使能。
若 WR 位已置为高而 WREN 位还未被设置则不能开始写操作。
由于控制 EEPROM 写周期是一个内部时钟,与单片机的系统时钟异步,所以数
据写入 EEPROM 的时间将有所延迟。可通过轮询 EEC 寄存器中的 WR 位或判
断 EEPROM 写中断以侦测写周期是否完成。若写周期完成,WR 位将自动清零,
通知用户数据已写入 EEPROM。因此,应用程序将轮询 WR 位以确定写周期是
否结束。写操作结束后,WREN 位将会被硬件置低。注意,字节写操作被成功
启动前会自动执行字节擦除操作。
页写模式
在执行页写操作之前,务必确保已成功执行了相关的页擦除操作。当模式选择
位 MODE 为 1 时,可执行 EEPROM 页写操作。EEPROM 一页可写入 16 个字节。
上电复位后内部页缓存器将由硬件清零。当 EEPROM 写使能控制位 WREN 由
1 变为 0 时,内部页缓存器也会被清零。注意当 WREN 位由 0 变为 1 时,内部
页缓存器不会清零。除了最多可以写入 16 字节 EEPROM 数据以外,页写操作
启动的方法与字节写操作相同。EEPROM 地址高 6 位用来指定要写入页的位置,
而低 4 位用来指向实际的地址。在页写操作模式每写入一字节数据到 EED 寄存
器,低 4 位地址将自动加一,而高 6 位地址不会自动增加。当 EEPROM 地址低
4 位自动递增到当前页的最大地址,即 0FH,EEPROM 地址低 4 位的值会停止
在 0FH,EEPROM 地址将不会再增加。此时再对 EED 寄存器写入数据也将无效。
为了实现页写操作,EEPROM 中要写入页的起始地址需先放入 EEAH 和 EEAL
寄存器中,要写入的数据也需存入 EED 寄存器中。一页的最大数据长度为 16
字节。注意当写入一字节数据到 EED 寄存器,EED 中的数据会加载到内部页
缓存器中,然后当前地址值会自动加一。当一页数据被全部写入页缓存器,
EEC 寄存器中的写使能位 WREN 先置高以使能写功能,然后 EEC 寄存器中的
WR 位需立即置高以开始写操作。这两条指令必须在两个指令周期内连续执行
Rev.1.00
53
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
才可成功启动一个写操作。进行写操作之前应先将总中断使能位 EMI 清零,在
一个有效的写启动步骤完成之后再将其使能。若 WR 位已置为高而 WREN 位还
未被设置则不能开始写操作。
由于控制 EEPROM 写周期是一个内部时钟,与单片机的系统时钟异步,所以数
据写入 EEPROM 的时间将有所延迟。可通过轮询 EEC 寄存器中的 WR 位或判
断 EEPROM 写中断以侦测写周期是否完成。若写周期完成,WR 位将自动清零,
通知用户数据已写入 EEPROM。因此,应用程序将轮询 WR 位以确定写周期是
否结束。写操作结束后,WREN 位将会被硬件置低。
写保护
防止误写入的写保护有以下几种。单片机上电后控制寄存器中的写使能位将被
清除以杜绝任何写入操作。上电后存储器指针高字节寄存器 MP1H 或 MP2H 将
重置为“0”,这意味着数据存储区 Sector 0 被选中。由于 EEPROM 控制寄存
器位于 Sector 1 中,这增加了对写操作的保护措施。在正常程序操作中确保控
制寄存器中的写使能位被清除将能防止不正确的写操作。
EEPROM 中断
EEPROM 擦 / 写周期结束后将产生 EEPROM 中断,需先通过设置相关中断寄
存器的 DEE 位使能 EEPROM 中断。当 EEPROM 擦 / 写周期结束,DEF 请求标
志位将被置位。若总中断和 EEPROM 中断使能且堆栈未满的情况下将跳转到
EEPROM 中断向量中执行。当中断被响应,EEPROM 中断标志位将自动复位。
详情可参考中断章节。
编程注意事项
必须注意的是数据不会无意写入 EEPROM。在没有写动作时写使能位被正常清
零可以增强保护功能。存储器指针高字节寄存器 MP1H 或 MP2H 也可以正常清
零以阻止进入 EEPROM 控制寄存器存在的 Sector 1。尽管没有必要,写一个简
单的读回程序以检查新写入的数据是否正确还是应该考虑的。
WREN 位置位后,EEC 寄存器中的 WR 位需立即置位,以确保写周期正确地执
行。写或擦周期执行前总中断位 EMI 应先清零,写或擦周期开始执行后再将此
位重新使能。注意,单片机不应在 EEPROM 读、擦或写操作完全完成之前进入
空闲或休眠模式,否则 EEPROM 读、擦或写操作将失败。
程序举例
从 EEPROM 中读取一个字节数据 – 轮询法
MOV A, 40H
MOV MP1L, A
MOV A, 01H
MOV MP1H, A
CLR IAR1.4
MOV A, EEPROM_ADRES_H
MOV EEAH, A
MOV A, EEPROM_ADRES_L
MOV EEAL, A
SET IAR1.1
SET IAR1.0
BACK:
SZ IAR1.0
JMP BACK
CLR IAR1
Rev.1.00
; set memory pointer low byte MP1L
; MP1 points to EEC register
; set memory pointer high byte MP1H
; clear MODE bit, select byte operation mode
; user defined high byte address
; user defined low byte address
; set RDEN bit, enable read operations
; start Read Cycle - set RD bit
; check for read cycle end
; disable EEPROM read function
54
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
CLR MP1H
MOV A, EED
MOV READ_DATA, A
; move read data to register
从 EEPROM 中读取一页数据 – 轮询法
MOV A, 40H
; set memory pointer low byte MP1L
MOV MP1L, A
; MP1 points to EEC register
MOV A, 01H
; set memory pointer high byte MP1H
MOV MP1H, A
SET IAR1.4
; set MODE bit, select page operation mode
MOV A, EEPROM_ADRES_H
; user defined high byte address
MOV EEAH, A
MOV A, EEPROM_ADRES_L
; user defined low byte address
MOV EEAL, A
SET IAR1.1
; set RDEN bit, enable read operations
; ~~~~ The data length can be up to 16 bytes (Start) ~~~~
CALL READ
CALL READ
:
:
JMP PAGE_READ_FINISH
; ~~~~ The data length can be up to 16 bytes (End) ~~~~
READ:
SET IAR1.0
; start Read Cycle – set RD bit
BACK:
SZ IAR1.0
; check for read cycle end
JMP BACK
MOV A, EED
; move read data to register
MOV READ_DATA, A
RET
:
PAGE_READ_FINISH
CLR IAR1
; disable EEPROM read function
CLR MP1H
擦除 EEPROM 的一页数据 – 轮询法
MOV A, 40H
; set memory pointer low byte MP1L
MOV MP1L, A
; MP1 points to EEC register
MOV A, 01H
; set memory pointer high byte MP1H
MOV MP1H, A
SET IAR1.4
; set MODE bit, select page operation mode
MOV A, EEPROM_ADRES_H
; user defined high byte address
MOV EEAH, A
MOV A, EEPROM_ADRES_L
; user defined low byte address
MOV EEAL, A
; ~~~~ The data length can be up to 16 bytes (Start) ~~~~
CALL WRITE_BUF
CALL WRITE_BUF
:
:
JMP Erase_START
; ~~~~ The data length can be up to 16 bytes (End) ~~~~
WRITE_BUF:
MOV A, EEPROM_DATA
; user define data, erase mode don’t care data
; value
MOV EED, A
RET
Rev.1.00
55
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
:
Erase_START:
CLR EMI
SET IAR1.6
SET IAR1.5
SET EMI
BACK:
SZ IAR1.5
JMP BACK
CLR MP1H
; set EREN bit, select erase operations
; start Erase Cycle – set ER bit – executed
; immediately after setting EREN bit
; check for erase cycle end
写入一个字节数据到 EEPROM – 轮询法
MOV A, 40H
MOV MP1L, A
MOV A, 01H
MOV MP1H, A
CLR IAR1.4
MOV A, EEPROM_ADRES_H
MOV EEAH, A
MOV A, EEPROM_ADRES_L
MOV EEAL, A
MOV A, EEPROM_DATA
MOV EED, A
CLR EMI
SET IAR1.3
SET IAR1.2
SET EMI
BACK:
SZ IAR1.2
JMP BACK
CLR MP1H
; set memory pointer low byte MP1L
; MP1 points to EEC register
; set memory pointer high byte MP1H
; clear MODE bit, select byte write mode
; user defined high byte address
; user defined low byte address
; user define data
; set WREN bit, enable write operations
; start Write Cycle - set WR bit – executed
; immediately after setting WREN bit
; check for write cycle end
写入一页数据到 EEPROM – 轮询法
MOV A, 40H
; set memory pointer low byte MP1L
MOV MP1L, A
; MP1 points to EEC register
MOV A, 01H
; set memory pointer high byte MP1H
MOV MP1H, A
SET IAR1.4
; set MODE bit, select page operation mode
MOV A, EEPROM_ADRES_H
; user defined high byte address
MOV EEAH, A
MOV A, EEPROM_ADRES_L
; user defined low byte address
MOV EEAL, A
; ~~~~ The data length can be up to 16 bytes (Start) ~~~~
CALL WRITE_BUF
CALL WRITE_BUF
:
:
JMP WRITE_START
; ~~~~ The data length can be up to 16 bytes (End) ~~~~
WRITE_BUF:
MOV A, EEPROM_DATA
; user define data
MOV EED, A
RET
:
WRITE_START:
Rev.1.00
56
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
CLR EMI
SET IAR1.3
SET IAR1.2
SET EMI
BACK:
SZ IAR1.2
JMP BACK
CLR MP1H
; set WREN bit, enable write operations
; start Write Cycle – set WR bit – executed
; immediately after setting WREN bit
; check for write cycle end
振荡器
不同的振荡器选择可以让使用者在不同的应用需求中实现更大范围的功能。振
荡器的灵活性使得在速度和功耗方面可以达到较佳的优化。振荡器选择及相关
操作是通过应用程序和相关的控制寄存器共同完成的。
振荡器概述
振荡器除了作为系统时钟源,还作为看门狗定时器和时基中断的时钟源。外部
振荡器需要一些外围器件,而集成的内部振荡器不需要任何外围器件。它们提
供的高速和低速系统振荡器具有较宽的频率范围。所有振荡器选项通过寄存器
选择。较高频率的振荡器提供更高的性能,但要求有更高的功率,反之亦然。
动态切换快慢系统时钟的能力使单片机具有灵活而优化的性能 / 功耗比,此特
性对功耗敏感的应用领域尤为重要。
类型
内部高速 RC
外部低速晶振
内部低速 RC
名称
HIRC
LXT
LIRC
频率
8MHz
32.768kHz
32kHz
引脚
—
XT1/XT2
—
振荡器类型
系统时钟配置
该单片机有三个系统振荡器,包括一个高速振荡器和两个低速振荡器。高速
振荡器为内部 8MHz 高速振荡器 HIRC,低速振荡器有内部 32kHz 低速振荡器
LIRC 和外部 32.768kHz 晶振 LXT。使用高速或低速振荡器作为系统时钟的选
择是通过设置 SCC 寄存器中的 CKS2~CKS0 位决定的,系统时钟可动态选择。
低速振荡器的实际时钟源由 SCC 寄存器的 FSS 位选择。低速或高速系统时钟频
率由 SCC 寄存器的 CKS2~CKS0 位决定的。请注意,两个振荡器必须做出选择,
即一个高速和一个低速振荡器。
Rev.1.00
57
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
fH
fH/2
High Speed
Oscillator
HIRCEN
fH/4
fH/8
HIRC
IDLE0
SLEEP
Prescaler
fSYS
fH/16
fH/32
fH/64
Low Speed
Oscillators
LXTEN
fSUB
LXT
CKS2~CKS0
fSUB
IDLE2
SLEEP
LIRC
FSS
fLIRC
系统时钟配置选项
内部 RC 振荡器 – HIRC
内部 RC 振荡器是一个集成的系统振荡器,不需其它外部器件。内部 RC 振荡
器频率固定为 8MHz。芯片在制造时进行调整且内部含有频率补偿电路,使得
振荡频率因 VDD、温度以及芯片制成工艺不同的影响较大程度地降低。如果选
择了该内部时钟,无需使用额外的引脚。
外部 32.768kHz 晶体振荡器 – LXT
外部 32.768kHz 晶体振荡器是一个低频振荡器,由 FSS 控制位选择。时钟频率
固定为 32.768kHz,此时 XT1 和 XT2 间引脚必须连接 32.768kHz 的晶体振荡器。
需要外部电阻和电容连接到 32.768kHz 晶振以帮助起振。对于那些要求精准频
率的场合中,可能需要这些元件来对由制程产生的误差提供频率补偿。LXTEN
位置高使能 LXT 振荡器后,LXT 振荡器启动需要一定的延时。
当系统进入空闲或休眠模式,系统时钟关闭以降低功耗。然而在某些应用,比
如空闲或休眠模式下要保持内部定时器功能,必须提供另一个独立于系统时钟
的时钟。
然而,对于一些晶体,为了保证系统频率的启动与精准度要求,需要外接两个
小容量电容 C1 和 C2,具体数值与客户选择的晶体规格有关。外部还需并联一
个反馈电阻 RP。
引脚共用的软件控制位决定 XT1/XT2 脚是用于 LXT 还是作为普通 I/O 口或其
它共用功能使用。
● 若 LXT 振荡器未被用于任何时钟源,XT1/XT2 脚能被用作一般 I/O 口或其它
共用功能使用。
● 若 LXT 振荡器被用于一些时钟源,32.768kHz 晶体应被连接至 XT1/XT2 脚。
为了确保振荡器的稳定性及减少噪声和串扰的影响,晶体振荡器及其相关的电
阻和电容以及它们之间的连线都应尽可能的接近单片机。
Rev.1.00
58
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
C1
Internal
Oscillator
Circuit
XT1
Internal RC
Oscillator
RP
32.768kHz
XT2
C2
To internal
circuits
Note: 1. RP, C1 and C2 are required.
2. Although not shown XT1/XT2 pins have a parasitic
capacitance of around 7pF.
外部 LXT 振荡器
LXT 振荡器 C1 和 C2 值
晶体频率
C1
32.768kHz
10pF
注:1. C1 和 C2 数值仅作参考用
2. RP 的建议值为 5MΩ~10MΩ
C2
10pF
32.768kHz 振荡器电容推荐值
内部 32kHz 振荡器 – LIRC
内部 32kHz 系统振荡器是一个低频振荡器,由 FSS 控制位选择。它是一个完全
集成 RC 振荡器,它的典型频率值为 32kHz 且无需外部元件。芯片在制造时进
行调整且内部含有频率补偿电路,使得振荡器因电源电压、温度及芯片制成工
艺不同的影响较大程度地降低。
工作模式和系统时钟
现今的应用要求单片机具有较高的性能及尽可能低的功耗,这种矛盾的要求在
便携式电池供电的应用领域尤为明显。高性能所需要的高速时钟将增加功耗,
反之亦然。此单片机提供高、低速两种时钟源,它们之间可以动态切换,用户
可通过优化单片机操作来获得较佳性能 / 功耗比。
系统时钟
单片机为 CPU 和外围功能操作提供了多种不同的时钟源。用户使用寄存器编程
可获取多种时钟,进而使系统时钟获取较大的应用性能。
主系统时钟可来自高频时钟源 fH 或低频时钟源 fSUB,通过 SCC 寄存器中的
CKS2~CKS0 位进行选择。高频时钟来自 HIRC 振荡器。低频系统时钟源来自
fSUB,若 fSUB 被选择,低频时钟来自 LXT 或 LIRC 振荡器,可通过 SCC 寄存器
中的 FSS 位选择。其它系统时钟还有高速系统振荡器的分频 fH/2~fH/64。
Rev.1.00
59
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
fH/2
High Speed
Oscillator
HIRCEN
fH/4
HIRC
fH/8
fH
IDLE0
SLEEP
Prescaler
fSYS
fH/16
fH/32
fH/64
Low Speed
Oscillators
LXTEN
fSUB
LXT
CKS2~CKS0
fSUB
IDLE2
SLEEP
LIRC
TB0[2:0]
FSS
fLIRC
TB0ON
fSUB
fSYS/4
WDT
fPSC
fSYS
fLIRC
Time
Base 0
Prescaler
TB1ON
LVR
CLKSEL[1:0]
Time
Base 1
TB1[2:0]
单片机时钟选项
注:当系统时钟源 fSYS 由 fH 到 fSUB 转换时,可以通过设置相应的高速振荡器使能控制位,选择停止以节
省耗电,或者继续振荡,为外围电路提供 fH~fH/64 频率的时钟源。
系统工作模式
单片机有 6 种不同的工作模式,每种有它自身的特性,根据应用中不同的性能
和功耗要求可选择不同的工作模式。单片机正常工作有两种模式:快速模式和
低速模式。剩余的 4 种工作模式:休眠模式、空闲模式 0、空闲模式 1 和空闲
模式 2 用于单片机 CPU 关闭时以节省耗电。
工作模式
CPU
快速模式
低速模式
On
On
空闲模式 0
Off
空闲模式 1
Off
空闲模式 2
Off
休眠模式
Off
寄存器设置
fSYS
fH
FHIDEN FSIDEN CKS2~CKS0
x
x
000~110
fH~fH/64
On
(1)
x
x
111
fSUB
On/Off
000~110
Off
0
1
Off
111
On
1
1
xxx
On
On
000~110
On
1
0
On
111
Off
0
0
xxx
Off
Off
fSUB
fLIRC
On
On
On
On
On
On
On
On
Off
On
Off
On/Off
(2)
“x”:无关
注:1. 在低速模式中,fH 开启或关闭由相应的振荡器使能位控制。
2. 在休眠模式中,fLIRC 开启或关闭由 WDT 功能使能或除能控制。
Rev.1.00
60
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
快速模式
这是主要的工作模式之一,单片机的所有功能均可在此模式中实现且系统时
钟由一个高速振荡器提供。该模式下单片机正常工作的时钟源来自 HIRC 振荡
器。高速振荡器频率可被分为 1~64 的不等比率,实际的比率由 SCC 寄存器中
的 CKS2~CKS0 位选择。单片机使用高速振荡器分频作为系统时钟可减少工作
电流。
低速模式
此模式的系统时钟虽为较低速时钟源,但单片机仍能正常工作。该低速时钟源
可来自 fSUB,而 fSUB 可来自于 LXT 或 LIRC 振荡器,通过 SCC 寄存器的 FSS 位
选择。
休眠模式
执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 和 FSIDEN 位都为低时,系统
进入休眠模式。在休眠模式中,CPU 停止运行,fSUB 停止为外围功能提供时钟。
若看门狗定时器功能使能,fLIRC 继续运行。
空闲模式 0
执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 位为低、FSIDEN 位为高时,系
统进入空闲模式 0。在空闲模式 0 中,CPU 停止,但低速振荡器会开启以驱动
一些外围功能。
空闲模式 1
执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 和 FSIDEN 位都为高时,系统
进入空闲模式 1。在空闲模式 1 中,CPU 停止,但高速和低速振荡器都会开启
以确保一些外围功能继续工作。
空闲模式 2
执行 HALT 指令后且 SCC 寄存器中的 FHIDEN 位为高、FSIDEN 位为低时,系
统进入空闲模式 2。在空闲模式 2 中,CPU 停止,但高速振荡器会开启以确保
一些外围功能继续工作。
控制寄存器
寄存器 SCC、HIRCC 和 LXTC 用于控制系统时钟和相应的振荡器配置。
寄存器
名称
SCC
HIRCC
LXTC
位
7
CKS2
—
—
6
CKS1
—
—
5
CKS0
—
—
4
—
—
—
3
—
—
—
2
FSS
—
—
1
0
FHIDEN FSIDEN
HIRCF HIRCEN
LXTF LXTEN
系统工作模式控制寄存器列表
Rev.1.00
61
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● SCC 寄存器
Bit
Name
R/W
POR
7
CKS2
R/W
0
6
CKS1
R/W
0
5
CKS0
R/W
0
4
—
—
—
3
—
—
—
2
FSS
R/W
0
1
0
FHIDEN FSIDEN
R/W
R/W
0
0
Bit 7~5
CKS2~CKS0:系统时钟选择位
000:fH
001:fH/2
010:fH/4
011:fH/8
100:fH/16
101:fH/32
110:fH/64
111:fSUB
这三位用于选择系统时钟源。除了 fH 或 fSUB 提供的系统时钟源外,也可使用高
频振荡器的分频作为系统时钟。
Bit 4~3
未定义,读为“0”
Bit 2
FSS:低频振荡器选择位
0:LIRC
1:LXT
Bit 1
FHIDEN:CPU 关闭时高频振荡器控制位
0:除能
1:使能
此位用来控制在 CPU 执行 HALT 指令关闭后高速振荡器是被激活还是停止。
Bit 0
FSIDEN:CPU 关闭时低频振荡器控制位
0:除能
1:使能
此位用来控制在 CPU 执行 HALT 指令关闭后低速振荡器是被激活还是停止。
● HIRCC 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
—
—
—
1
0
HIRCF HIRCEN
R
R/W
0
1
Bit 7~2
未定义,读为“0”
Bit 1
HIRCF:HIRC 振荡器稳定标志位
0:HIRC 未稳定
1:HIRC 稳定
此位用于表明 HIRC 振荡器是否稳定。HIRCEN 位置高使能 HIRC 振荡器,HIRCF
位会先被清零,在 HIRC 稳定后会被置高。
Bit 0
HIRCEN:HIRC 振荡器使能控制位
0:除能
1:使能
62
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● LXTC 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
—
—
—
1
LXTF
R
0
0
LXTEN
R/W
0
Bit 7~2
未定义,读为“0”
Bit 1
LXTF:LXT 振荡器稳定标志位
0:LXT 未稳定
1:LXT 稳定
此位用于表明 LXT 振荡器是否稳定。LXTEN 位置高使能 LXT 振荡器后,LXTF
位会先被清零,在 LXT 稳定后会被置高。
Bit 0
LXTEN:LXT 振荡器使能控制位
0:除能
1:使能
工作模式切换
单片机可在各个工作模式间自由切换,使得用户可根据所需选择较佳的性能 /
功耗比。用此方式,对单片机工作的性能要求不高的情况下,可使用较低频时
钟以减少工作电流,在便携式应用上延长电池的使用寿命。
简单来说,快速模式和低速模式间的切换仅需设置 SCC 寄存器中的 CKS2~CKS0
位即可实现,而快速模式 / 低速模式与休眠模式 / 空闲模式间的切换经由 HALT
指令实现。当 HALT 指令执行后,单片机是否进入空闲模式或休眠模式由 SCC
寄存器中的 FHIDEN 和 FSIDEN 位决定的。
FAST
fSYS=fH~fH/64
fH on
CPU run
fSYS on
fSUB on
SLOW
fSYS=fSUB
fSUB on
CPU run
fSYS on
fH on/off
SLEEP
HALT instruction executed
CPU stop
FHIDEN=0
FSIDEN=0
fH off
fSUB off
IDLE0
HALT instruction executed
CPU stop
FHIDEN=0
FSIDEN=1
fH off
fSUB on
IDLE2
HALT instruction executed
CPU stop
FHIDEN=1
FSIDEN=0
fH on
fSUB off
Rev.1.00
63
IDLE1
HALT instruction executed
CPU stop
FHIDEN=1
FSIDEN=1
fH on
fSUB on
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
快速模式切换到低速模式
系统运行在快速模式时使用高速系统振荡器,因此较为耗电。可通过设置 SCC
寄存器中的 CKS2~CKS0 位为“111”使系统时钟切换至运行在低速模式下。此
时将使用低速系统振荡器以节省耗电。用户可在对性能要求不高的操作中使用
此方法以减少耗电。
低速模式的时钟源来自 LXT 或 LIRC 振荡器,由 SCC 寄存器中的 FSS 位确定,
因此要求所选振荡器在所有模式切换动作发生前稳定下来。
FAST Mode
CKS2~CKS0 = 111
SLOW Mode
FHIDEN=0, FSIDEN=0
HALT instruction is executed
SLEEP Mode
FHIDEN=0, FSIDEN=1
HALT instruction is executed
IDLE0 Mode
FHIDEN=1, FSIDEN=1
HALT instruction is executed
IDLE1 Mode
FHIDEN=1, FSIDEN=0
HALT instruction is executed
IDLE2 Mode
低速模式切换到快速模式
在低速模式时系统时钟来自 fSUB。切换回快速模式时,需设置 CKS2~CKS0 位
为“000”~“110”使系统时钟从 fSUB 切换到 fH~fH/64。
然而,如果在低速模式下 fH 因未使用而关闭,那么从低速模式切换到快速模
式时,它需要一定的时间来重新起振和稳定,可通过检测 HIRCC 寄存器中的
HIRCF 位进行判断,所需的高速系统振荡器稳定时间在系统上电时间电气特性
中有说明。
Rev.1.00
64
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SLOW Mode
CKS2~CKS0 = 000~110
FAST Mode
FHIDEN=0, FSIDEN=0
HALT instruction is executed
SLEEP Mode
FHIDEN=0, FSIDEN=1
HALT instruction is executed
IDLE0 Mode
FHIDEN=1, FSIDEN=1
HALT instruction is executed
IDLE1 Mode
FHIDEN=1, FSIDEN=0
HALT instruction is executed
IDLE2 Mode
进入休眠模式
进入休眠模式的方法仅有一种,既应用程序中执行“HALT”指令前需设置
SCC 寄存器中的 FHIDEN 和 FSIDEN 位都为“0”。在这种模式下,除了 WDT
以外的所有时钟和功能都将关闭。在上述条件下执行该指令后,将发生的情况
如下:
● 系统时钟停止运行,应用程序停止在“HALT”指令处。
● 数据存储器中的内容和寄存器将保持当前值。
● 输入 / 输出口将保持当前值。
● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清除。
● 如果 WDT 功能使能,WDT 将被清零并重新开始计数。如果 WDT 功能除能,
WDT 将被清零并停止计数。
进入空闲模式 0
进入空闲模式 0 的方法仅有一种,即应用程序中执行“HALT”指令前需设置
SCC 寄存器中的 FHIDEN 位为“0”且 FSIDEN 位为“1”。在上述条件下执行
该指令后,将发生的情况如下:
● fH 时钟停止运行,应用程序停止在“HALT”指令处,但 fSUB 时钟将继续运行。
● 数据存储器中的内容和寄存器将保持当前值。
● 输入 / 输出口将保持当前值。
● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清除。
● 如果 WDT 功能使能,WDT 将被清零并重新开始计数。如果 WDT 功能除能,
WDT 将被清零并停止计数。
Rev.1.00
65
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
进入空闲模式 1
进入空闲模式 1 的方法仅有一种,既应用程序中执行“HALT”指令前需设置
SCC 寄存器中的 FHIDEN 和 FSIDEN 位都为“1”。在上述条件下执行该指令后,
将发生的情况如下:
● fH 和 fSUB 时钟开启,应用程序停止在“HALT”指令处。
● 数据存储器中的内容和寄存器将保持当前值。
● 输入 / 输出口将保持当前值。
● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清除。
● 如果 WDT 功能使能,WDT 将被清零并重新开始计数。如果 WDT 功能除能,
WDT 将被清零并停止计数。
进入空闲模式 2
进入空闲模式 2 的方法仅有一种,既应用程序中执行“HALT”指令前需设置
SCC 寄存器中的 FHIDEN 位为“1”且 FSIDEN 位为“0”。在上述条件下执行
该指令后,将发生的情况如下:
● fH 时钟开启,fSUB 时钟关闭,应用程序停止在“HALT”指令处。
● 数据存储器中的内容和寄存器将保持当前值。
● 输入 / 输出口将保持当前值。
● 状态寄存器中暂停标志 PDF 将被置起,看门狗溢出标志 TO 将被清除。
● 如果 WDT 功能使能,WDT 将被清零并重新开始计数。如果 WDT 功能除能,
WDT 将被清零并停止计数。
待机电流的注意事项
由于单片机进入休眠或空闲模式的主要原因是将单片机的电流降低到尽可能
低,可能到只有几个微安的级别 ( 空闲模式 1 和空闲模式 2 除外 ),所以如果要
将电路的电流进一步降低,电路设计者还应有其它的考虑。应该特别注意的是
单片机的输入 / 输出引脚。所有高阻抗输入脚都必须连接到固定的高或低电平,
因为引脚浮空会造成内部振荡并导致耗电增加。这也应用于有不同封装的单片
机,因为它们可能含有未引出的引脚,这些引脚也必须设为输出或带有上拉电
阻的输入。
另外还需注意单片机设为输出的 I/O 引脚上的负载。应将它们设置在有最小拉
电流的状态或将它们和其它的 CMOS 输入一样接到没有拉电流的外部电路上。
还应注意的是,如果选择 LIRC 或 LXT 振荡器,会导致耗电增加。
在空闲模式 1 和空闲模式 2 中,高速振荡器开启。若外围功能时钟源来自高速
振荡器,额外的待机电流也可能会有几百微安。
唤醒
单片机进入休眠模式或空闲模式后,系统时钟将停止以降低功耗。然而单片机
再次唤醒,原来的系统时钟重新起振、稳定且恢复正常工作需要一定的时间。
系统进入休眠或空闲模式之后,可以通过以下几种方式唤醒:
● PA 口下降沿
● 系统中断
● WDT 溢出
Rev.1.00
66
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
执行 HALT 指令,PDF 将被置位。系统上电或执行清除看门狗的指令,PDF 将
被清零。若系统由 WDT 溢出唤醒,则会发生看门狗定时器复位,PDF 将被置位。
看门狗计数器溢出将会置位 TO 标志并唤醒系统,这种复位会重置程序计数器
和堆栈指针,其它标志保持原有状态。
PA 口中的每个引脚都可以通过 PAWU 寄存器使能下降沿唤醒功能。PA 端口唤
醒后,程序将在“HALT”指令后继续执行。如果系统是通过中断唤醒,则有两
种可能发生。第一种情况是:相关中断除能或是中断使能且堆栈已满,则程序
会在“HALT”指令之后继续执行。这种情况下,唤醒系统的中断会等到相关中
断使能或有堆栈层可以使用之后才执行。第二种情况是:相关中断使能且堆栈
未满,则中断可以马上执行。如果在进入休眠或空闲模式之前中断标志位已经
被设置为“1”,则相关中断的唤醒功能将无效。
看门狗定时器
看门狗定时器的功能在于防止如电磁的干扰等外部不可控制事件,所造成的程
序不正常动作或跳转到未知的地址。
看门狗定时器时钟源
WDT 定时器时钟源 fLIRC 由内部低速振荡器 LIRC 提供。内部振荡器 LIRC 的频
率大约为 32kHz,这个特殊的内部时钟周期会随 VDD、温度和制成的不同而变
化。看门狗定时器的时钟源可分频为 28~218 以提供更大的溢出周期,分频比由
WDTC 寄存器中的 WS2~WS0 位来决定。
看门狗定时器控制寄存器
WDTC 寄存器用于选择溢出周期、控制 WDT 功能的使能 / 除能和单片机复位
操作。
● WDTC 寄存器
Bit
Name
R/W
POR
Rev.1.00
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 功能控制
10101:除能
01010:使能
其它值:单片机复位
如果由于不利的环境因素使这些位变为其它值,单片机将复位。复位动作发生
在 tSRESET 延迟时间后,且 RSTFC 寄存器的 WRF 位将置为“1”。
Bit 2~0
WS2~WS0:WDT 溢出周期选择位
000:28/fLIRC
001:210/fLIRC
010:212/fLIRC
011:214/fLIRC
100:215/fLIRC
101:216/fLIRC
110:217/fLIRC
111:218/fLIRC
这三位控制 WDT 时钟源的分频比,从而实现对 WDT 溢出周期的控制。
67
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● RSTFC 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
RSTF
R/W
0
2
LVRF
R/W
x
1
LRF
R/W
0
0
WRF
R/W
0
“x”:未知
Bit 7~4
未定义,读为“0”
Bit 3
RSTF:复位控制寄存器软件复位标志位
具体描述见内部复位控制章节。
Bit 2
LVRF:LVR 复位标志位
具体描述见低电压复位章节。
Bit 1
LRF:LVR 控制寄存器软件复位标志位
具体描述见低电压复位章节。
Bit 0
WRF:WDT 控制寄存器软件复位标志位
0:未发生
1:发生
当 WDT 控制寄存器软件复位发生时,此位被置为“1”,且只能通过应用程序
清零。
看门狗定时器操作
当 WDT 溢出时,它产生一个单片机复位的动作。这也就意味着正常工作期间,
用户需在应用程序中看门狗溢出前有策略地清看门狗定时器以防止其产生复
位,可使用清除看门狗指令实现。无论什么原因,程序失常跳转到一个未知的
地址或进入一个死循环,清除指令都不能被正确执行,此种情况下,看门狗将
溢出以使单片机复位。看门狗定时器控制寄存器 WDTC 中的 WE4~WE0 位可
提供使能 / 除能控制以及单片机复位操作。当 WE4~WE0 设置为“10101B”时
除能 WDT 功能,而当设置为“01010B”时使能 WDT 功能。如果 WE4~WE0
设置为除“01010B”和“10101B”以外的值时,单片机将在 tSRESET 延迟时间后
复位。上电后这些位初始化为“01010B”。
WE4~WE0 位
10101B
01010B
其它值
WDT 功能
除能
使能
单片机复位
看门狗定时器使能 / 除能控制
程序正常运行时,WDT 溢出将导致单片机复位,并置位状态标志位 TO。若系
统处于休眠或空闲模式,当 WDT 发生溢出时,状态寄存器中的 TO 应置位,仅
PC 和堆栈指针复位。有三种方法可以用来清除 WDT 的内容。第一种是 WDTC
软件复位,即将 WE4~WE0 位设置成除了 01010B 和 10101B 外的任意值;第二
种是通过软件清除指令,而第三种是通过“HALT”指令。
该单片机只使用一条清看门狗指令“CLR WDT”。因此只要执行“CLR WDT”
便清除 WDT。
当设置分频比为 218 时,溢出周期最大。例如,时钟源为 32kHz LIRC 振荡器,
分频比为 218 时最大溢出周期约 8s,分频比为 28 时最小溢出周期约 8ms。
Rev.1.00
68
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
WDTC Register WE4~WE0 bits
Reset MCU
CLR
“HALT” Instruction
“CLR WDT” Instruction
LIRC
fLIRC
8-stage Divider
fLIRC/28
WDT Prescaler
WS2~WS0
8-to-1 MUX
WDT Time-out
(28/fLIRC ~ 218/fLIRC)
看门狗定时器
复位和初始化
复位功能是任何单片机中基本的部分,使得单片机可以设定一些与外部参数无
关的先置条件。最重要的复位条件是在单片机首次上电以后,经过短暂的延迟,
内部硬件电路使得单片机处于预期的稳定状态并开始执行第一条程序指令。上
电复位以后,在程序执行之前,部分重要的内部寄存器将会被设定为预先设定
的状态。程序计数器就是其中之一,它会被清除为零,使得单片机从最低的程
序存储器地址开始执行程序。
另一种复位为低电压复位即 LVR 复位,在电源供应电压低于 LVR 设定值时,
系统会产生 LVR 复位。另一种复位为看门狗溢出单片机复位,不同方式的复位
操作会对寄存器产生不同的影响。
复位功能
单片机的几种内部复位方式将在此处做具体介绍。
上电复位
这是最基本且不可避免的复位,发生在单片机上电后。除了保证程序存储器从
开始地址执行,上电复位也使得其它寄存器被设定在预设条件。所有的输入 /
输出端口控制寄存器在上电复位时会保持高电平,以确保上电后所有引脚被设
定为输入状态。
VDD
Power-on Reset
tRSTD
SST Time-out
上电复位时序图
内部复位控制
内部复位控制寄存器 RSTC 用于为单片机在受到环境噪声干扰而异常工作时
提供复位。如果 RSTC 寄存器的内容被设置为除 01010101B 或 10101010B 以
外的任何值,单片机会在 tSRESET 延迟时间后发生复位。上电后寄存器的值为
01010101B。
Rev.1.00
69
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
RSTC7~RSTC0 位
01010101B
10101010B
其它值
复位功能
无操作
无操作
单片机复位
内部复位功能控制
● RSTC 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
RSTC7
R/W
0
6
RSTC6
R/W
1
5
RSTC5
R/W
0
4
RSTC4
R/W
1
3
RSTC3
R/W
0
2
RSTC2
R/W
1
1
RSTC1
R/W
0
0
RSTC0
R/W
1
RSTC7~RSTC0:复位功能控制位
01010101:无操作
10101010:无操作
其它值:单片机复位
如果由于不利的环境因素使这些位发生改变,单片机将复位。复位动作发生在
tSRESET 延迟时间后,且 RSTFC 寄存器的 RSTF 位将置为“1”。除了 WDT 溢出
硬件复位外,其它所有复位发生时此寄存器恢复至上电复位值。
● RSTFC 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
RSTF
R/W
0
2
LVRF
R/W
x
1
LRF
R/W
0
0
WRF
R/W
0
“x”:未知
Bit 7~4
未定义,读为“0”
Bit 3
RSTF:复位控制寄存器软件复位标志位
0:未发生
1:发生
当 RSTC 控制寄存器软件复位发生时,此位被置为“1”,且只能通过应用程序
清零。
Bit 2
LVRF:LVR 复位标志位
具体描述见低电压复位章节。
Bit 1
LRF:LVR 控制寄存器软件复位标志位
具体描述见低电压复位章节。
Bit 0
WRF:WDT 控制寄存器软件复位标志位
具体描述见看门狗定时器控制寄存器章节。
低电压复位 – LVR
单片机具有低电压复位电路,用来监测它的电源电压。当电源电压低于某一预
定值时,它将复位单片机。如果在更换电池的情况下,单片机供应的电压可
能会在 0.9V~VLVR 之间,这时 LVR 将会自动复位单片机且 RSTFC 寄存器中的
LVRF 标志位置位。所谓有效的 LVR 信号,即在 0.9V~VLVR 的低电压状态的时
间,必须超过 LVR 电气特性中 tLVR 参数的值。如果低电压存在时间不超过 tLVR
参数的值,则 LVR 将会忽略它且不会执行复位功能。若 LVS7~LVS0 位设置为
01011010B, 则 LVR 功 能 使 能, 且 VLVR 值 固 定 为 2.1V。 若 LVS7~LVS0 位 设
置为 10100101B,则 LVR 功能除能。若由于受到干扰 LVS7~LVS0 变为其它值
Rev.1.00
70
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
时,将在 tSRESET 时间后复位单片机。此时 RSTFC 寄存器的 LRF 位被置位。上
电后寄存器的值为 01011010B。需要注意的是,当单片机进入空闲或休眠模式,
LVR 功能将自动除能。
LVR
tRSTD + tSST
Internal Reset
低电压复位时序图
● LVRC 寄存器
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/W
1
2
LVS2
R/W
0
1
LVS1
R/W
1
0
LVS0
R/W
0
LVS7~LVS0:LVR 电压选择
01011010:2.1V
10100101:LVR 除能
其他值:单片机复位 – 寄存器复位为 POR 值
当上述定义的相应的低电压出现,且低电压保持时间大于 tLVR 值,则单片机复
位发生。此时复位后的寄存器内容保持不变。
若将 LVRC 寄存器定义为 01011010B 和 10100101B 以外的其他值,将会产生单
片机复位。复位操作会在 tSRESET 时间后执行。注意的的是此处单片机复位后,
寄存器的值将恢复到上电复位值。
● RSTFC 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
RSTF
R/W
0
2
LVRF
R/W
x
1
LRF
R/W
0
0
WRF
R/W
0
“x”:未知
Bit 7~4
未定义,读为“0”
Bit 3
RSTF:复位控制寄存器软件复位标志位
具体描述详见内部复位章节。
Bit 2
LVRF:LVR 复位标志位
0:未发生
1:发生
当特定的低电压复位条件发生时,此位被置为“1”,且只能通过应用程序清零。
Bit 1
LRF:LVR 控制寄存器软件复位标志位
0:未发生
1:发生
如果 LVRC 寄存器包含任何非定义的 LVR 电压值,此位被置为“1”,这类似
与软件复位功能,且只能通过应用程序清零。
Bit 0
WRF:WDT 控制寄存器软件复位标志位
具体描述见看门狗定时器控制寄存器章节。
IAP 复位
当写值“55H”至 FC1 寄存器时,将产生一个复位信号将整个单片机复位。详
见 IAP 章节。
Rev.1.00
71
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
正常运行时看门狗溢出复位
在快速模式或低速模式时看门狗溢出复位,看门狗溢出标志位 TO 将被设为
“1”。
WDT Time-out
tRSTD
Internal Reset
正常运行时看门狗溢出复位时序图
休眠或空闲时看门狗溢出复位
休眠或空闲时看门狗溢出复位和其它种类的复位有些不同,除了程序计数器与
堆栈指针将被清 0 及 TO 位被设为 1 外,绝大部份的条件保持不变。图中 tSST
的详细说明请参考系统上电时间电气特性。
WDT Time-out
tSST
Internal Reset
休眠或空闲时看门狗溢出复位时序图
复位初始状态
不同的复位形式以不同的途径影响复位标志位。这些标志位,即 PDF 和 TO 位
存放在状态寄存器中,由休眠或空闲模式功能或看门狗计数器等几种控制器操
作控制。复位标志位如下所示:
TO
0
u
1
1
PDF
0
u
u
1
复位条件
上电复位
快速模式或低速模式时的 LVR 复位
快速模式或低速模式时的 WDT 溢出复位
空闲或休眠模式时的 WDT 溢出复位
“u”代表不改变
在单片机上电复位之后,各功能单元初始化的情形,列于下表。
项目
程序计数器
中断
看门狗定时器,时基
定时器模块
输入 / 输出口
堆栈指针
复位后情况
清除为零
所有中断被除能
都清除,且 WDT 重新计数
所有定时器模块停止
I/O 口设为输入模式
堆栈指针指向堆栈顶端
不同的复位形式对单片机内部寄存器的影响是不同的。为保证复位后程序能正
常执行,了解寄存器在特定条件复位后的设置是非常重要的。下表即为不同方
式复位后内部寄存器的状况。
Rev.1.00
72
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
寄存器
IAR0
MP0
IAR1
MP1L
MP1H
ACC
PCL
TBLP
TBLH
TBHP
STATUS
PBP
IAR2
MP2L
MP2H
RSTFC
SCC
HIRCC
LXTC
PA
PAC
PAPU
PAWU
RSTC
LVRC
MFI0
MFI1
WDTC
INTEG
INTC0
INTC1
INTC2
PB
PBC
PBPU
PC
PCC
PCPU
PSCR
TB0C
TB1C
SIMC0
Rev.1.00
上电复位
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
xxxx xxxx
0000 0000
xxxx xxxx
xxxx xxxx
--xx xxxx
xx00 xxxx
---- ---0
0000 0000
0000 0000
0000 0000
---- 0x00
000- -000
---- --01
---- --00
1111 1111
1111 1111
0000 0000
0000 0000
0101 0101
0101 1010
0000 0000
-000 -000
0101 0011
---- 0000
-000 0000
0000 0000
1000 0000
1111 1111
1111 1111
0000 0000
- - 11 1111
- - 11 1111
--00 0000
---- --00
0--- -000
0--- -000
111- 0000
73
WDT 溢出
( 正常运行 )
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
uuuu uuuu
0000 0000
uuuu uuuu
uuuu uuuu
--uu uuuu
uu1u uuuu
---- ---0
0000 0000
0000 0000
0000 0000
---- uuuu
000- -000
---- --01
---- --00
1111 1111
1111 1111
0000 0000
0000 0000
0101 0101
0101 1010
0000 0000
-000 -000
0101 0011
---- 0000
-000 0000
0000 0000
1000 0000
1111 1111
1111 1111
0000 0000
- - 11 1111
- - 11 1111
--00 0000
---- --00
0--- -000
0--- -000
111- 0000
WDT 溢出
( 空闲 / 休眠 )
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
0000 0000
uuuu uuuu
uuuu uuuu
--uu uuuu
uu11 uuuu
---- ---u
uuuu uuuu
uuuu uuuu
uuuu uuuu
---- uuuu
uuu- -uuu
---- --uu
---- --uu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
-uuu -uuu
uuuu uuuu
---- uuuu
-uuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
--uu uuuu
--uu uuuu
--uu uuuu
---- --uu
u--- -uuu
u--- -uuu
uuu- uuuu
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
寄存器
SIMC1
SIMD
SIMA/SIMC2
SIMTOC
USR
UCR1
UCR2
UCR3
TXR_RXR
BRG
EEAL
EEAH
EED
STMC0
STMC1
STMDL
STMDH
STMAL
STMAH
STMRP
CTM0C0
CTM0C1
CTM0DL
CTM0DH
CTM0AL
CTM0AH
CTM1C0
CTM1C1
CTM1DL
CTM1DH
CTM1AL
CTM1AH
LCDC
LCDCP
REGC
PGAC0
PGAC1
PGAC2
PGAC3
SCFC0
SCFC1
SCFCKD
Rev.1.00
上电复位
1000 0001
xxxx xxxx
0000 0000
0000 0000
0000 1011
0000 00x0
0000 0000
---- ---0
xxxx xxxx
xxxx xxxx
0000 0000
---- --00
0000 0000
0000 0--0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
---- --00
0000 0000
---- --00
0000 0000
0000 0000
0000 0000
---- --00
0000 0000
---- --00
0--- -000
---0 0000
---- --00
0000 0000
0000 0000
0000 0000
00-0 0000
0000 0000
-000 00-0000 0000
74
WDT 溢出
( 正常运行 )
1000 0001
xxxx xxxx
0000 0000
0000 0000
0000 1011
0000 00x0
0000 0000
---- ---0
xxxx xxxx
xxxx xxxx
0000 0000
---- --00
0000 0000
0000 0--0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
---- --00
0000 0000
---- --00
0000 0000
0000 0000
0000 0000
---- --00
0000 0000
---- --00
0--- -000
---0 0000
---- --00
0000 0000
0000 0000
0000 0000
00-0 0000
0000 0000
-000 00-0000 0000
WDT 溢出
( 空闲 / 休眠 )
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
---- ---u
uuuu uuuu
uuuu uuuu
uuuu uuuu
---- --uu
uuuu uuuu
uuuu u--uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
---- --uu
uuuu uuuu
---- --uu
uuuu uuuu
uuuu uuuu
uuuu uuuu
---- --uu
uuuu uuuu
---- --uu
u--- -uuu
---u uuuu
---- --uu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uu-u uuuu
uuuu uuuu
-uuu uu-uuuu uuuu
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
CCVREFC
SADC0
SADC1
00-- 0000
0000 0000
0000 0000
WDT 溢出
( 正常运行 )
00-- 0000
0000 0000
0000 0000
SADOH
xxxx xxxx
xxxx xxxx
SADOL
xxxx ----
xxxx ----
PD
PDC
PDPU
EEC
FC0
FC1
FC2
FARL
FARH
FD0L
FD0H
FD1L
FD1H
FD2L
FD2H
FD3L
FD3H
IFS
PAS0
PAS1
PBS0
PBS1
PCS0
PCS1
PDS0
PDS1
SLEDC0
SLEDC1
1111 1111
1111 1111
0000 0000
0000 0000
0000 0000
0000 0000
---- --00
0000 0000
--00 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
-000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
---- 0000
0000 0000
0000 0000
0000 0000
0000 0000
1111 1111
1111 1111
0000 0000
0000 0000
0000 0000
0000 0000
---- --00
0000 0000
--00 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
-000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
---- 0000
0000 0000
0000 0000
0000 0000
0000 0000
寄存器
上电复位
WDT 溢出
( 空闲 / 休眠 )
uu-- uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
(ADRFS=0)
---- uuuu
(ADRFS=1)
uuuu ---(ADRFS=0)
uuuu uuuu
(ADRFS=1)
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
---- --uu
uuuu uuuu
--uu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
-uuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
---- uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
注:“u”表示不改变
“x”表示未知
“-”表示未定义
Rev.1.00
75
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
输入 / 输出端口
Holtek 单片机的输入 / 输出口控制具有很大的灵活性。大部分引脚可在用户程
序控制下被设定为输入或输出。所有引脚的上拉电阻设置以及指定引脚的唤醒
设置也都由软件控制,这些特性也使得此类单片机在广泛应用上都能符合开发
的需求。
该单片机提供 PA~PD 双向输入 / 输出口。这些寄存器在数据存储器有特定的地
址。所有 I/O 口用于输入输出操作。作为输入操作,输入引脚无锁存功能,也
就是说输入数据必须在执行“MOV A, [m]”,T2 的上升沿准备好,m 为端口地
址。对于输出操作,所有数据都是被锁存的,且保持不变直到输出锁存被重写。
寄存器
名称
PA
PAC
PAPU
PAWU
PB
PBC
PBPU
PC
PCC
PCPU
PD
PDC
PDPU
7
PA7
PAC7
PAPU7
PAWU7
PB7
PBC7
PBPU7
—
—
—
PD7
PDC7
PDPU7
6
PA6
PAC6
PAPU6
PAWU6
PB6
PBC6
PBPU6
—
—
—
PD6
PDC6
PDPU6
5
PA5
PAC5
PAPU5
PAWU5
PB5
PBC5
PBPU5
PC5
PCC5
PCPU5
PD5
PDC5
PDPU5
位
4
3
PA4
PA3
PAC4
PAC3
PAPU4 PAPU3
PAWU4 PAWU3
PB4
PB3
PBC4
PBC3
PBPU4 PBPU3
PC4
PC3
PCC4
PCC3
PCPU4 PCPU3
PD4
PD3
PDC4
PDC3
PDPU4 PDPU3
2
PA2
PAC2
PAPU2
PAWU2
PB2
PBC2
PBPU2
PC2
PCC2
PCPU2
PD2
PDC2
PDPU2
1
PA1
PAC1
PAPU1
PAWU1
PB1
PBC1
PBPU1
PC1
PCC1
PCPU1
PD1
PDC1
PDPU1
0
PA0
PAC0
PAPU0
PAWU0
PB0
PBC0
PBPU0
PC0
PCC0
PCPU0
PD0
PDC0
PDPU0
“—”:未定义,读为“0”
I/O 逻辑功能寄存器列表
上拉电阻
许多产品应用在端口处于输入状态时需要外加一个上拉电阻来实现上拉的功
能。为了免去外部上拉电阻,当引脚规划为输入时,可由内部连接到一个上拉
电阻。这些上拉电阻可通过相应的上拉控制寄存器 PAPU~PDPU 来设置,它用
一个 PMOS 晶体管来实现上拉电阻功能。
需要注意的是,当 I/O 引脚设为数字输入或 NMOS 输出时,上拉功能才会受
PxPU 控制开启,其它状态下上拉功能不可用。
● PxPU 寄存器
Bit
Name
R/W
POR
7
PxPU7
R/W
0
6
PxPU6
R/W
0
5
PxPU5
R/W
0
4
PxPU4
R/W
0
3
PxPU3
R/W
0
2
PxPU2
R/W
0
1
PxPU1
R/W
0
0
PxPU0
R/W
0
PxPUn:I/O Px 口上拉电阻控制位
0:除能
1:使能
PxPUn 位用于控制上拉电阻功能。这里的 x 可以是端口 A、B、C 和 D。但是,每
个 I/O 端口实际有效位可能不同。
Rev.1.00
76
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
PA 口唤醒
当使用暂停指令“HALT”迫使单片机进入休眠或空闲模式,单片机的系统时
钟将会停止以降低功耗,此功能对于电池及低功耗应用很重要。唤醒单片机有
很多种方法,其中之一就是使 PA 口的其中一个引脚从高电平转为低电平。这
个功能特别适合于通过外部开关来唤醒的应用。PA 口的每个引脚可以通过设置
PAWU 寄存器来单独选择是否具有唤醒功能。
需要注意的是,只有当引脚被设置为通用型输入类型且单片机处于空闲 / 休眠
模式时,唤醒功能才会受 PAWU 控制开启,其它状态下此唤醒功能不可用。
● PAWU 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
6
5
4
3
2
1
0
PAWU7 PAWU6 PAWU5 PAWU4 PAWU3 PAWU2 PAWU1 PAWU0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
PAWU7~PAWU0:PA7~PA0 唤醒功能控制位
0:除能
1:使能
输入 / 输出端口控制寄存器
每一个输入 / 输出口都具有各自的控制寄存器,即 PAC~PDC,用来控制输入 /
输出状态。从而每个 I/O 引脚都可以通过软件控制,动态的设置为 CMOS 输出
或输入。所有的 I/O 端口的引脚都各自对应于 I/O 端口控制的某一位。若 I/O 引
脚要实现输入功能,则对应的控制寄存器的位需要设置为“1”。这时程序指令
可以直接读取输入脚的逻辑状态。若控制寄存器相应的位被设定为“0”,则此
引脚被设置为 CMOS 输出。当引脚设置为输出状态时,程序指令读取的是输出
端口寄存器的内容。注意,如果对输出口做读取动作时,程序读取到的是内部
输出数据锁存器中的状态,而不是输出引脚上实际的逻辑状态。
● PxC 寄存器
Bit
Name
R/W
POR
7
PxC7
R/W
1
6
PxC6
R/W
1
5
PxC5
R/W
1
4
PxC4
R/W
1
3
PxC3
R/W
1
2
PxC2
R/W
1
1
PxC1
R/W
1
0
PxC0
R/W
1
PxCn:I/O Px 口类型选择位
0:输出
1:输入
PxCn 位用于控制引脚类型。这里的 x 可以是端口 A、B、C 和 D。但是,每个 I/O 端
口实际有效位可能不同。
输入 / 输出端口源电流选择
该单片机的每个 I/O 口都支持不同的源电流驱动能力,通过相应的源电流选择
位控制。仅当对应的引脚被设为 CMOS 输出时,其源电流选择位才有效。否则,
这些选择位无效。用户可参考输入 / 输出口电气特性章节为不同应用选择所需
的源电流。
Rev.1.00
77
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
寄存器
名称
位
7
6
5
4
3
2
1
0
SLEDC0
SLEDC07 SLEDC06 SLEDC05 SLEDC04 SLEDC03 SLEDC02 SLEDC01 SLEDC00
SLEDC1
SLEDC17 SLEDC16 SLEDC15 SLEDC14 SLEDC13 SLEDC12 SLEDC11 SLEDC10
I/O 口源电流控制寄存器列表
● SLEDC0 寄存器
Bit
Name
R/W
POR
7
6
5
4
3
2
1
0
SLEDC07 SLEDC06 SLEDC05 SLEDC04 SLEDC03 SLEDC02 SLEDC01 SLEDC00
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
Bit 7~6
SLEDC07~SLEDC06:PB7~PB4 源电流选择位
00:Level 0 ( 最小 )
01:Level 1
10:Level 2
11:Level 3 ( 最大 )
Bit 5~4
SLEDC05~SLEDC04:PB3~PB0 源电流选择位
00:Level 0 ( 最小 )
01:Level 1
10:Level 2
11:Level 3 ( 最大 )
Bit 3~2
SLEDC03~SLEDC02:PA7~PA4 源电流选择位
00:Level 0 ( 最小 )
01:Level 1
10:Level 2
11:Level 3 ( 最大 )
Bit 1~0
SLEDC01~SLEDC00:PA3~PA0 源电流选择位
00:Level 0 ( 最小 )
01:Level 1
10:Level 2
11:Level 3 ( 最大 )
● SLEDC1 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
6
5
4
3
2
1
0
SLEDC17 SLEDC16 SLEDC15 SLEDC14 SLEDC13 SLEDC12 SLEDC11 SLEDC10
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
Bit 7~6
SLEDC17~SLEDC16:PD7~PD4 源电流选择位
00:Level 0 ( 最小 )
01:Level 1
10:Level 2
11:Level 3 ( 最大 )
Bit 5~4
SLEDC15~SLEDC14:PD3~PD0 源电流选择位
00:Level 0 ( 最小 )
01:Level 1
10:Level 2
11:Level 3 ( 最大 )
78
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Bit 3~2
SLEDC13~SLEDC12:PC5 和 PC4 源电流选择位
00:Level 0 ( 最小 )
01:Level 1
10:Level 2
11:Level 3 ( 最大 )
Bit 1~0
SLEDC11~SLEDC10:PC3~PC0 源电流选择位
00:Level 0 ( 最小 )
01:Level 1
10:Level 2
11:Level 3 ( 最大 )
引脚共用功能
引脚的多功能可以增加单片机应用的灵活性。有限的引脚个数将会限制设计者,
而引脚的多功能将会解决很多此类问题。此外,这些引脚功能可以通过一系列
寄存器进行设定。
引脚共用功能选择寄存器
封装中有限的引脚个数会对某些单片机功能造成影响。然而,引脚功能共用和
引脚功能选择,使得小封装单片机具有更多不同的功能。单片机包含端口“x”
输出功能选择寄存器“n”,记为 PxSn,和输入功能选择寄存器记为 IFS,这些
寄存器可以用来选择共用引脚的特定功能。
要注意的最重要一点是,确保所需的引脚共用功能被正确地选择和取消。对于
大部分共用功能,要选择所需的引脚共用功能,首先应通过相应的引脚共用控
制寄存器正确地选择该功能,然后再配置相应的外围功能设置以使能外围功能。
但是,在设置相关引脚控制字段时,一些数字输入引脚如 INTn、xTCKn 等,
与对应的通用 I/O 口共用同一个引脚共用设置选项。要选择这些引脚功能,除
了上述的必要的引脚共用控制和外围功能设置外,还必须将其对应的端口控制
寄存器位设置为输入。要正确地取消引脚共用功能,首先应除能外围功能,然
后再修改相应的引脚共用控制寄存器以选择其它的共用功能。
寄存器
名称
PAS0
PAS1
PBS0
PBS1
PCS0
PCS1
PDS0
PDS1
IFS
位
7
6
5
4
3
2
PAS07
PAS06
PAS05
PAS04
PAS03
PAS02
PAS17
PAS16
PAS15
PAS14
PAS13
PAS12
PBS07
PBS06
PBS05
PBS04
PBS03
PBS02
PBS17
PBS16
PBS15
PBS14
PBS13
PBS12
PCS07
PCS06
PCS05
PCS04
PCS03
PCS02
—
—
—
—
PCS13
PCS12
PDS07
PDS06
PDS05
PDS04
PDS03
PDS02
PDS17
PDS16
PDS15
PDS14
PDS13
PDS12
—
TXRXPS1 TXRXPS0 SCKSCLPS SDISDAPS SCSBPS
1
0
PAS01 PAS00
PAS11 PAS10
PBS01 PBS00
PBS11 PBS10
PCS01 PCS00
PCS11 PCS10
PDS01 PDS00
PDS11 PDS10
INT0PS STCKPS
引脚共用功能选择寄存器列表
Rev.1.00
79
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● PAS0 寄存器
Bit
Name
R/W
POR
7
PAS07
R/W
0
6
PAS06
R/W
0
5
PAS05
R/W
0
4
PAS04
R/W
0
Bit 7~6
PAS07~PAS06:PA3 引脚共用功能选择
00:PA3/CTCK1
01:CTP1
10:SDO
11:PA3/CTCK1
Bit 5~4
PAS05~PAS04:PA2 引脚共用功能选择
00:PA2
01:PA2
10:PA2
11:XT2
Bit 3~2
PAS03~PAS02:PA1 引脚共用功能选择
00:PA1/INT0/STCK
01:SCS
10:PA1/INT0/STCK
11:SEG27
Bit 1~0
PAS01~PAS00:PA0 引脚共用功能选择
00: PA0
01: PA0
10: PA0
11: XT1
3
PAS03
R/W
0
2
PAS02
R/W
0
1
PAS01
R/W
0
0
PAS00
R/W
0
3
PAS13
R/W
0
2
PAS12
R/W
0
1
PAS11
R/W
0
0
PAS10
R/W
0
● PAS1 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
PAS17
R/W
0
6
PAS16
R/W
0
5
PAS15
R/W
0
4
PAS14
R/W
0
Bit 7~6
PAS17~PAS16:PA7 引脚共用功能选择
00:PA7
01:CTP0
10:TX
11:SDO
Bit 5~4
PAS15~PAS14:PA6 引脚共用功能选择
00:PA6/STCK
01:STP
10:RX/TX
11:SCS
Bit 3~2
PAS13~PAS12:PA5 引脚共用功能选择
00:PA5
01:STPB
10:SCK/SCL
11:PA5
Bit 1~0
PAS11~PAS10:PA4 引脚共用功能选择
00:PA4/CTCK0
01:CTP0
10:SDI/SDA
11:PA4/CTCK0
80
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● PBS0 寄存器
Bit
Name
R/W
POR
7
PBS07
R/W
0
6
PBS06
R/W
0
5
PBS05
R/W
0
4
PBS04
R/W
0
Bit 7~6
PBS07~PBS06:PB3 引脚共用功能选择
00:PB3
01:PB3
10:PB3
11:SEG23
Bit 5~4
PBS05~PBS04:PB2 引脚共用功能选择
00:PB2
01:PB2
10:PB2
11:SEG24
Bit 3~2
PBS03~PBS02:PB1 引脚共用功能选择
00:PB1/INT1
01:STP
10:SCK/SCL
11:SEG25
Bit 1~0
PBS01~PBS00:PB0 引脚共用功能选择
00:PB0
01:SDI/SDA
10:PB0
11:SEG26
3
PBS03
R/W
0
2
PBS02
R/W
0
1
PBS01
R/W
0
0
PBS00
R/W
0
3
PBS13
R/W
0
2
PBS12
R/W
0
1
PBS11
R/W
0
0
PBS10
R/W
0
● PBS1 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
PBS17
R/W
0
6
PBS16
R/W
0
5
PBS15
R/W
0
4
PBS14
R/W
0
Bit 7~6
PBS17~PBS16:PB7 引脚共用功能选择
00:PB7
01:PB7
10:PB7
11:SEG31
Bit 5~4
PBS15~PBS14:PB6 引脚共用功能选择
00:PB6
01:PB6
10:PB6
11:SEG30
Bit 3~2
PBS13~PBS12:PB5 引脚共用功能选择
00:PB5
01:PB5
10:PB5
11:SEG29
Bit 1~0
PBS11~PBS10:PB4 引脚共用功能选择
00:PB4
01:PB4
10:PB4
11:SEG28
81
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● PCS0 寄存器
Bit
Name
R/W
POR
7
PCS07
R/W
0
6
PCS06
R/W
0
5
PCS05
R/W
0
4
PCS04
R/W
0
Bit 7~6
PCS07~PCS06:PC3 引脚共用功能选择
00:PC3
01:CTP0
10:PC3
11:AN3
Bit 5~4
PCS05~PCS04:PC2 引脚共用功能选择
00:PC2
01:CTP1
10:PC2
11:AN2
Bit 3~2
PCS03~PCS02:PC1 引脚共用功能选择
00:PC1/INT0
01:PC1/INT0
10:PC1/INT0
11:AN1
Bit 1~0
PCS01~PCS00:PC0 引脚共用功能选择
00:PC0
01:PC0
10:VREF
11:AN0
3
PCS03
R/W
0
2
PCS02
R/W
0
1
PCS01
R/W
0
0
PCS00
R/W
0
3
PCS13
R/W
0
2
PCS12
R/W
0
1
PCS11
R/W
0
0
PCS10
R/W
0
● PCS1 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
Bit 7~4
未定义,读为“0”
Bit 3~2
PCS13~PCS12:PC5 引脚共用功能选择
00:PC5
01:TX
10:PC5
11:PC5
Bit 1~0
PCS11~PCS10:PC4 引脚共用功能选择
00:PC4
01:RX/TX
10:PC4
11:PC4
82
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● PDS0 寄存器
Bit
Name
R/W
POR
7
PDS07
R/W
0
6
PDS06
R/W
0
5
PDS05
R/W
0
4
PDS04
R/W
0
Bit 7~6
PDS07~PDS06:PD3 引脚共用功能选择
00:PD3
01:PD3
10:PD3
11:SEG3
Bit 5~4
PDS05~PDS04:PD2 引脚共用功能选择
00:PD2
01:PD2
10:PD2
11:SEG2
Bit 3~2
PDS03~PDS02:PD1 引脚共用功能选择
00:PD1
01:PD1
10:COM5
11:SEG1
Bit 1~0
PDS01~PDS00:PD0 引脚共用功能选择
00:PD0
01:PD0
10:COM4
11:SEG0
3
PDS03
R/W
0
2
PDS02
R/W
0
1
PDS01
R/W
0
0
PDS00
R/W
0
3
PDS13
R/W
0
2
PDS12
R/W
0
1
PDS11
R/W
0
0
PDS10
R/W
0
● PDS1 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
PDS17
R/W
0
6
PDS16
R/W
0
5
PDS15
R/W
0
4
PDS14
R/W
0
Bit 7~6
PDS17~PDS16:PD7 引脚共用功能选择
00:PD7
01:PD7
10:PD7
11:SEG7
Bit 5~4
PDS15~PDS14:PD6 引脚共用功能选择
00:PD6
01:PD6
10:PD6
11:SEG6
Bit 3~2
PDS13~PDS12:PD5 引脚共用功能选择
00:PD5
01:PD5
10:PD5
11:SEG 5
Bit 1~0
PDS11~PDS10:PD4 引脚共用功能选择
00:PD4
01:PD4
10:PD4
11:SEG4
83
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● IFS 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
5
4
3
2
1
0
TXRXPS1 TXRXPS0 SCKSCLPS SDISDAPS SCSBPS INT0PS STCKPS
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~5
TXRXPS1~TXRXPS0:RX/TX 引脚共用功能选择
00:PA6
01:PC4
10:未使用
11:PA6
Bit 4
SCKSCLPS:SCK/SCL 输入源引脚选择
0:PA5
1:PB1
Bit 3
SDISDAPS:SDI/SDA 输入源引脚选择
0:PA4
1:PB0
Bit 2
SCSBPS:SCS 输入源引脚选择
0:PA1
1:PA6
Bit 1
INT0PS:INT0 输入源引脚选择
0:PA1
1:PC1
Bit 0
STCKPS:STCK 输入源引脚选择
0:PA1
1:PA6
输入 / 输出引脚结构
下图为输入 / 输出引脚逻辑功能的内部结构图。输入 / 输出引脚的准确逻辑结构
图可能与此图不同,这里只是为了方便对 I/O 引脚逻辑功能的理解提供一个参
考。由于存在诸多的引脚共用结构,在此不方便提供所有类型引脚功能结构图。
VDD
Control Bit
Data Bus
Write Control Register
Chip Reset
Read Control Register
D
Weak
Pull-up
CK Q
S
I/O pin
Data Bit
D
Write Data Register
Q
Pull-high
Register
Select
Q
CK Q
S
Read Data Register
System Wake-up
M
U
X
wake-up Select
PA only
逻辑功能输入 / 输出端口结构
Rev.1.00
84
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
编程注意事项
在编程中,最先要考虑的是端口的初始化。复位之后,所有的输入 / 输出数据
及端口控制寄存器都将被设为逻辑高。所有输入 / 输出引脚默认为输入状态,
而其电平则取决于其它相连接电路以及是否选择了上拉电阻。如果端口控制寄
存器将某些引脚设定为输出状态,这些输出引脚会有初始高电平输出,除非端
口数据寄存器在程序中被预先设定。设置哪些引脚是输入及哪些引脚是输出,
可通过设置正确的值到对应的端口控制寄存器,或使用指令“SET [m].i”及
“CLR [m].i”来设定端口控制寄存器中个别的位。注意,当使用这些位控制指
令时,系统即将产生一个读 - 修改 - 写的操作。单片机需要先读入整个端口上
的数据,修改个别的位,然后重新把这些数据写入到输出端口。
PA 口的每个引脚都带唤醒功能。单片机处于休眠或空闲模式时,有很多方法可
以唤醒单片机,其中之一就是通过 PA 任一引脚电平从高到低转换的方式,可
以设置 PA 口一个或多个引脚具有唤醒功能。
定时器模块 – TM
控制和测量时间在任何单片机中都是一个很重要的部分。该单片机提供几个定
时器模块 ( 简称 TM ),来实现和时间有关的功能。定时器模块是包括多种操作
的定时单元,提供的操作有:定时 / 事件计数器,比较匹配输出,单脉冲输出
以及 PWM 输出等功能。每个定时器模块有两个独立中断。每个 TM 外加的输
入输出引脚,扩大了定时器的灵活性,便于用户使用。
这里只介绍各种 TM 的共性,更多详细资料请参考简易型和标准型定时器章节。
简介
该单片机包含 3 个 TM,每个 TM 可被划分为一个特定的类型,即简易型 TM
或标准型 TM。虽然性质相似,但不同 TM 特性复杂度不同。本章介绍简易型
和标准型 TM 的共性,更多详细资料分别见后面各章。两种类型 TM 的特性和
区别见下表。
TM 功能
定时 / 计数器
比较匹配输出
PWM 输出
单脉冲输出
PWM 对齐方式
PWM 调节周期 & 占空比
CTM
√
√
√
—
边沿对齐
占空比或周期
STM
√
√
√
√
边沿对齐
占空比或周期
TM 功能概要
TM 操作
不同类型的 TM 提供从简单的定时操作到 PWM 信号产生等多种功能。理解
TM 操作的关键是比较 TM 内独立运行的计数器的值与内部比较器的预置值。
当计数器的值与比较器的预置值相同时,则比较匹配,TM 中断信号产生,清
零计数器并改变 TM 输出引脚的状态。用户选择内部时钟或外部时钟来驱动内
部 TM 计数器。
Rev.1.00
85
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
TM 时钟源
驱动 TM 计数器的时钟源很多。通过设置 xTMn 控制寄存器的 xTnCK2~xTnCK0
位,选择所需的时钟源,其中 x 代表 C 或 S 型 TM,n 代表具体 TM 编号。由
于该单片机只包含一个 STM,STM 相关的引脚、寄存器和控制位都不带编号。
该时钟源来自系统时钟 fSYS 的分频比或内部高速时钟 fH 或 fSUB 时钟源或外部
xTCKn 引脚。xTCKn 引脚时钟源用于允许外部信号作为 TM 时钟源或用于事件
计数。
TM 中断
每个简易型或标准型 TM 都有两个内部中断,分别是内部比较器 A 或比较器 P,
当比较匹配发生时产生 TM 中断。当 TM 中断产生时,计数器清零并改变 TM
输出引脚的状态。
TM 外部引脚
无论哪种类型的 TM,都有一个 TM 输入引脚 xTCKn。xTMn 输入引脚 xTCKn
作为 xTMn 时钟源输入脚,通过设置 xTMnC0 寄存器中的 xTnCK2~xTnCK0 位
进行选择。外部时钟源可通过该引脚来驱动内部 TM。xTCKn 引脚可选择上升
沿有效或下降沿有效。STCK 引脚还可用作 STM 单脉冲输出模式的外部触发引
脚。
每 个 CTM 都 有 一 个 输 出 引 脚 CTPn,STM 有 两 个 输 出 引 脚 STP 和 STPB。
STPB 为 STP 的反相输出。当 TM 工作在比较匹配输出模式且比较匹配发生时,
这些引脚会由 TM 控制切换到高电平或低电平或翻转。外部输出引脚也被 TM
用来产生 PWM 输出波形。
当 TM 输入和输出引脚与其它功能共用时,TM 输入和输出功能需要事先通过
相关引脚共用功能选择寄存器先被设置。更多引脚共用功能选择详见引脚共用
功能章节。
CTM0
输入
输出
CTCK0
CTP0
CTM1
输入
输出
CTCK1
CTP1
STM
输入
STCK
输出
STP, STPB
TM 外部引脚
Clock input
CTCKn
CTMn
CCR output
CTPn
CTM 功能引脚框图 (n=0~1)
Rev.1.00
86
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Clock input
STCK
STM
CCR output
STP
STPB
STM 功能引脚框图
编程注意事项
TM 计数寄存器和比较寄存器 CCRA,含有低字节和高字节结构。高字节可直
接访问,低字节则仅能通过一个内部 8-bit 的缓存器进行访问。值得注意的是,
8-bit 缓存器的存取数据及相关低字节的读写操作仅在其相应的高字节读写操作
执行时发生。
CCRA 寄存器访问方式如下图所示,读写这些成对的寄存器需通过特殊的方式。
建议使用“MOV”指令按照以下步骤访问 CCRA 低字节寄存器,即 xTMnAL,
否则可能导致无法预期的结果。
xTMn Counter Register (Read only)
xTMnDL
xTMnDH
8-bit Buffer
xTMnAL
xTMnAH
xTMn CCRA Register (Read/Write)
Data Bus
读写流程如下步骤所示:
● 写数据至 CCRA
♦ 步骤 1. 写数据至低字节寄存器 xTMnAL
– 注意,此时数据仅写入 8-bit 缓存器。
♦ 步骤 2. 写数据至高字节寄存器 xTMnAH
– 注意,此时数据直接写入高字节寄存器,同时锁存在 8-bit 缓存器中的数
据写入低字节寄存器。
● 从计数器寄存器、CCRA 中读取数据
♦ 步骤 1. 从高字节寄存器 xTMnDH、xTMnAH 读取数据
– 注意,此时高字节寄存器中的数据直接读取,同时由低字节寄存器读取
的数据锁存至 8-bit 缓存器中。
♦ 步骤 2. 从低字节寄存器 xTMnDL、xTMnAL 读取数据
– 注意,此时读取 8-bit 缓存器中的数据。
Rev.1.00
87
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
简易型 TM – CTM
简易型 TM 包括三种工作模式,即比较匹配输出、定时 / 事件计数器和 PWM
输出模式。简易型 TM 由一个外部输入脚控制并驱动一个外部输出引脚。
CCRP
fSYS/4
fSYS
fH/16
fH/64
fSUB
fSUB
CTCKn
000
001
010
011
100
101
110
111
3-bit Comparator P
Comparator P Match
CTMnPF Interrupt
CTnOC
b7~b9
Counter Clear
10-bit Count-up Counter
CTnON
CTnPAU
b0~b9
10-bit Comparator A
Output
Control
0
1
CTnCCLR
Polarity
Control
CTPn
CTnM1, CTnM0 CTnPOL
CTnIO1, CTnIO0
Comparator A Match
CTMnAF Interrupt
CTnCK2~CTnCK0
CCRA
注:CTMn 的外部引脚为多功能引脚,因此在使用 CTMn 功能之前应该合理设置相应引脚共用功能选择
寄存器以使能 CTMn 引脚功能。
10-bit 简易型 TM 框图 (n=0~1)
简易型 TM 操作
简易型 TM 核心是一个由用户选择的内部或外部时钟源驱动的 10 位向上计数
器,它还包括两个内部比较器即比较器 A 和比较器 P。这两个比较器将计数器
的值与 CCRP 和 CCRA 寄存器中的值进行比较。CCRP 是 3 位宽度,与计数器
的高 3 位比较;而 CCRA 是 10 位的,与计数器的所有位比较。
通过应用程序改变 10 位计数器值的唯一方法是使 CTnON 位发生上升沿跳变清
除计数器。此外,计数器溢出或比较匹配也会自动清除计数器。上述条件发生
时,通常情况会产生 CTMn 中断信号。简易型 TM 可工作在不同的模式,可由
包括来自输入脚的不同时钟源驱动,也可以控制输出脚。所有工作模式的设定
都是通过设置相关寄存器来实现的。
简易型 TM 寄存器介绍
简易型 TM 的所有操作由一系列寄存器控制。一对只读寄存器用来存放 10 位计
数器的值,一对读 / 写寄存器存放 10 位 CCRA 的值。剩下两个控制寄存器设置
不同的操作和控制模式以及 CCRP 的 3 个位。
寄存器
名称
位
7
6
5
4
CTMnC0 CTnPAU CTnCK2 CTnCK1 CTnCK0
CTMnC1 CTnM1 CTnM0 CTnIO1 CTnIO0
CTMnDL
D7
D6
D5
D4
CTMnDH
—
—
—
—
CTMnAL
D7
D6
D5
D4
CTMnAH
—
—
—
—
3
CTnON
CTnOC
D3
—
D3
—
2
1
0
CTnRP2 CTnRP1 CTnRP0
CTnPOL CTnDPX CTnCCLR
D2
D1
D0
—
D9
D8
D2
D1
D0
—
D9
D8
10-bit 标准型 TM 寄存器列表 (n=0~1)
Rev.1.00
88
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● CTMnC0 寄存器
Bit
7
6
5
4
3
2
1
0
Name CTnPAU CTnCK2 CTnCK1 CTnCK0 CTnON CTnRP2 CTnRP1 CTnRP0
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
Rev.1.00
Bit 7
CTnPAU:CTMn 计数器暂停控制位
0:运行
1:暂停
通过设置此位为高可使计数器暂停,清零此位恢复正常计数器操作。当处于暂
停条件时,CTMn 保持上电状态并继续耗电。当此位由低到高转换时,计数器
将保留其剩余值,直到此位再次改变为低电平,并从此值开始继续计数。
Bit 6~4
CTnCK2~CTnCK0:CTMn 计数时钟选择位
000:fSYS/4
001:fSYS
010:fH/16
011:fH/64
100:fSUB
101:fSUB
110:CTCKn 上升沿时钟
111:CTCKn 下降沿时钟
此三位用于选择 CTMn 的时钟源。外部引脚时钟源能被选择在上升沿或下降沿
有效。fSYS 是系统时钟,fH 和 fSUB 是其它的内部时钟源,细节方面请参考振荡器
章节。
Bit 3
CTnON:CTMn 计数器 On/Off 控制位
0:Off
1:On
此位控制 CTMn 的总开关功能。设置此位为高则使能计数器使其运行,清零此
位则除能 CTMn。清零此位将停止计数器并关闭 CTMn 减少耗电。当此位经由
低到高转换时,内部计数器将复位清零;当此位经由高到低的转换时,内部计
数器将保持其剩余值,直到此位再次改变为高电平。
若 CTMn 处于比较匹配输出模式或 PWM 输出模式,当 CTnON 位经由低到高
的转换时,CTMn 输出脚将复位至 CTnOC 位指定的初始值。
Bit 2~0
CTnRP2~CTnRP0:CTMn CCRP 3-bit 寄存器,与 CTM 计数器 bit 9~bit 7 比较
比较器 P 匹配周期 =
000:1024 个 CTMn 时钟周期
001:128 个 CTMn 时钟周期
010:256 个 CTMn 时钟周期
011:384 个 CTMn 时钟周期
100:512 个 CTMn 时钟周期
101:640 个 CTMn 时钟周期
110:768 个 CTMn 时钟周期
111:896 个 CTMn 时钟周期
此三位设定内部 CCRP 3-bit 寄存器的值,然后与内部计数器的高三位进行比较。
如果 CTnCCLR 位设定为 0 时,此比较结果可用于清零内部计数器。CTnCCLR
位设为低,内部计数器在比较器 P 比较匹配发生时被重置;由于 CCRP 只与计
数器高三位比较,比较值是 128 时钟周期的倍数。CCRP 被清零时,实际上会
使得计数器在最大值溢出。
89
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● CTMnC1 寄存器
Bit
7
6
5
4
3
2
1
0
Name CTnM1 CTnM0 CTnIO1 CTnIO0 CTnOC CTnPOL CTnDPX CTnCCLR
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
Rev.1.00
Bit 7~6
CTnM1~CTnM0:CTMn 工作模式选择位
00:比较匹配输出模式
01:未定义
10:PWM 输出模式
11:定时 / 计数器模式
这两位设置 CTMn 需要的工作模式。为了确保操作可靠,CTMn 应在 CTnM1 和
CTnM0 位有任何改变前先关掉。在定时 / 计数器模式,CTMn 输出脚状态未定
义。
Bit 5~4
CTnIO1~CTnIO0:CTMn 外部引脚功能选择位
比较匹配输出模式
00:无变化
01:输出低
10:输出高
11:输出翻转
PWM 输出模式
00:PWM 输出无效状态
01:PWM 输出有效状态
10:PWM 输出
11:未定义
定时 / 计数器模式
未使用
此两位用于决定在满足特定条件时 CTMn 外部引脚如何改变状态。这两位值的
选择取决于 CTMn 运行在哪种模式下。
在比较匹配输出模式下,CTnIO1 和 CTnIO0 位决定当从比较器 A 比较匹配输出
发生时 CTMn 输出脚如何改变状态。当从比较器 A 比较匹配输出发生时 CTMn
输出脚能设为切换高、切换低或翻转当前状态。若此两位同时为 0 时,这个输
出将不会改变。CTMn 输出脚的初始值通过 CTMnC1 寄存器的 CTnOC 位设置
取得。注意,由 CTnIO1 和 CTnIO0 位得到的输出电平必须与通过 CTnOC 位设
置的初始值不同,否则当比较匹配发生时,CTMn 输出脚将不会发生变化。在
CTMn 输出脚改变状态后,通过 CTnON 位由低到高电平的转换复位至初始值。
在 PWM 输 出 模 式,CTnIO1 和 CTnIO0 决 定 比 较 匹 配 条 件 发 生 时 怎 样 改 变
CTMn 输出脚的状态。PWM 输出功能通过这两位的变化进行更新。仅在 CTMn
关闭后才能改变 CTnIO1 和 CTnIO0 位的值。若在 CTMn 运行时改变 CTnIO1 和
CTnIO0 的值,PWM 输出的值将无法预料。
Bit 3
CTnOC:CTPn 输出控制位
比较匹配输出模式
0:初始低
1:初始高
PWM 输出模式
0:低有效
1:高有效
这是 CTMn 输出脚输出控制位。它取决于 CTMn 此时正运行于比较匹配输出模
式还是 PWM 输出模式。若 CTMn 处于定时 / 计数器模式,则其无效。在比较
匹配输出模式时,比较匹配发生前其决定 CTMn 输出脚的逻辑电平值。在 PWM
输出模式时,其决定 PWM 信号是高有效还是低有效。
Bit 2
CTnPOL:CTPn 输出极性控制位
0:同相
1:反相
90
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
此位控制 CTPn 输出脚的极性。此位为高时 CTMn 输出脚反相,为低时 CTMn
输出脚同相。若 CTMn 处于定时 / 计数器模式时其无效。
Bit 1
CTnDPX:CTMn PWM 周期 / 占空比控制位
0:CCRP – 周期;CCRA – 占空比
1:CCRP – 占空比;CCRA – 周期
此位决定 CCRA 与 CCRP 寄存器哪个被用于 PWM 波形的周期和占空比控制。
Bit 0
CTnCCLR:CTMn 计数器清零条件选择位
0:CTMn 比较器 P 匹配
1:CTMn 比较器 A 匹配
此位用于选择清除计数器的方法。简易型 TM 包括两个比较器 – 比较器 A 和比
较器 P。这两个比较器每个都可以用于清除内部计数器。CTnCCLR 位设为高,
计数器在比较器 A 比较匹配发生时被清除;此位设为低,计数器在比较器 P 比
较匹配发生或计数器溢出时被清除。计数器溢出清除的方法仅在 CCRP 被清除
为 0 时才能生效。CTnCCLR 位在 PWM 输出模式时未使用。
● CTMnDL 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
D7
R
0
6
D6
R
0
5
D5
R
0
4
D4
R
0
3
D3
R
0
2
D2
R
0
1
D1
R
0
0
D0
R
0
2
—
—
—
1
D9
R
0
0
D8
R
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
D7~D0:CTMn 计数器低字节寄存器 bit 7 ~ bit 0
CMn 10-bit 计数器 bit 7 ~ bit 0
● CTMnDH 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
Bit 7~2
未定义,读为“0”
Bit 1~0
D9~D8:CTMn 计数器高字节寄存器 bit 1 ~ bit 0
CTMn 10-bit 计数器 bit 9 ~ bit 8
● CTMnAL 寄存器
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
D7~D0:CTMn CCRA 低字节寄存器 bit 7 ~ bit 0
CTMn 10-bit CCRA bit 7 ~ bit 0
● CTMnAH 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
Bit 7~2
未定义,读为“0”
Bit 1~0
D9~D8:CTMn CCRA 高字节寄存器 bit 1 ~ bit 0
CTMn 10-bit CCRA bit 9 ~ bit 8
91
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
简易型 TM 工作模式
简易型 TM 有三种工作模式,即比较匹配输出模式,PWM 输出模式或定时 / 计
数器模式。通过设置 CTMnC1 寄存器的 CTnM1 和 CTnM0 位选择任意模式。
比较匹配输出模式
为使 CTMn 工作在此模式,CTMnC1 寄存器中的 CTnM1 和 CTnM0 位需要设
置为“00”。当工作在该模式,一旦计数器使能并开始计数,有三种方法来清
零,分别是:计数器溢出,比较器 A 比较匹配发生和比较器 P 比较匹配发生。
当 CTnCCLR 位为低,有两种方法清零计数器。一种是比较器 P 比较匹配发生,
另一种是 CCRP 所有位设置为零并使得计数器溢出。此时,比较器 A 和比较器
P 的请求标志位 CTMnAF 和 CTMnPF 将分别置起。
如 果 CTMnC1 寄 存 器 的 CTnCCLR 位 设 置 为 高, 当 比 较 器 A 比 较 匹 配 发 生
时计数器被清零。此时,即使 CCRP 寄存器的值小于 CCRA 寄存器的值,仅
CTMnAF 中断请求标志产生。所以当 CTnCCLR 为高时,不产生 CTMnPF 中断
请求标志。如果 CCRA 被清零,当计数达到最大值 3FFH 时,计数器溢出,而
此时不产生 CTMnAF 请求标志。
正如该模式名所言,当比较匹配发生后,CTMn 输出脚状态改变。当比较器 A
比较匹配发生后 CTMnAF 标志产生时,CTMn 输出脚状态改变。比较器 P 比较
匹配发生时产生的 CTMnPF 标志不影响 CTMn 输出脚。CTMn 输出脚状态改变
方式由 CTMnC1 寄存器中 CTnIO1 和 CTnIO0 位决定。当比较器 A 比较匹配发
生时,CTnIO1 和 CTnIO0 位决定 CTMn 输出脚输出高,低或翻转当前状态。
在 CTnON 位由低到高电平的变化后,CTMn 输出脚初始状态为 CTnOC 位所指
定的电平。注意,若 CTnIO1 和 CTnIO0 位同时为 0 时,引脚输出不变。
Rev.1.00
92
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Counter overflow
Counter Value
0x3FF
CTnCCLR = 0; CTnM [1:0] = 00
CCRP > 0
Counter cleared by CCRP value
CCRP=0
CCRP > 0
Counter
Restart
Resume
CCRP
Pause
CCRA
Stop
Time
CTnON
CTnPAU
CTnPOL
CCRP Int.
Flag CTMnPF
CCRA Int.
Flag CTMnAF
CTMn O/P Pin
Output pin set to
initial Level Low if
CTnOC=0
Output not affected by
CTMnAF flag. Remains High
until reset by CTnON bit
Output Toggle with
CTMnAF flag
Here CTnIO [1:0] = 11
Toggle Output select
Note CTnIO [1:0] = 10
Active High Output select
Output Inverts
when CTnPOL is high
Output Pin
Reset to Initial value
Output controlled by other
pin-shared function
比较匹配模式 – CTnCCLR=0 (n=0~1)
注:1. CTnCCLR=0,比较器 P 匹配将清除计数器
2. CTMn 输出脚仅由 CTMnAF 标志位控制
3. 在 CTnON 上升沿 CTMn 输出脚复位至初始值
Rev.1.00
93
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Counter Value
CTnCCLR = 1; CTnM [1:0] = 00
CCRA = 0
Counter overflow
CCRA > 0 Counter cleared by CCRA value
0x3FF
CCRA=0
Resume
CCRA
Pause
Stop
Counter Restart
CCRP
Time
CTnON
CTnPAU
CTnPOL
No CTMnAF flag
generated on
CCRA overflow
CCRA Int.
Flag CTMnAF
CCRP Int.
Flag CTMnPF
CTMn O/P Pin
CTMnPF not
generated
Output pin set to
initial Level Low if
CTnOC=0
Output does
not change
Output not affected by
CTMnAF flag. Remains High
until reset by CTnON bit
Output Toggle with
CTMnAF flag
Here CTnIO [1:0] = 11
Toggle Output select
Note CTnIO [1:0] = 10
Active High Output select
Output Inverts
when CTnPOL is high
Output Pin
Reset to Initial value
Output controlled by other
pin-shared function
比较匹配模式 – CTnCCLR=1 (n=0~1)
注:1. CTnCCLR=1,比较器 A 匹配将清除计数器
2. CTMn 输出脚仅由 CTMnAF 标志位控制
3. 在 CTnON 上升沿 CTMn 输出脚复位至初始值
4. 当 CTnCCLR=1 时,CTMnPF 标志位不会产生
Rev.1.00
94
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
定时 / 计数器模式
为使 CTMn 工作在此模式,CTMnC1 寄存器中的 CTnM1 和 CTnM0 位需要设
置为“11”。定时 / 计数器模式与比较匹配输出模式操作方式相同,并产生同
样的中断请求标志。不同的是,在定时 / 计数器模式下 CTMn 输出脚未使用。
因此,比较匹配输出模式中的描述和时序图可以适用于此功能。该模式中未使
用的 CTMn 输出脚用作普通 I/O 脚或其它功能。
PWM 输出模式
为使 CTMn 工作在此模式,CTMnC1 寄存器中的 CTnM1 和 CTnM0 位需要设
置为“10”。CTMn 的 PWM 功能在马达控制,加热控制,照明控制等方面十
分有用。给 CTMn 输出脚提供一个频率固定但占空比可调的信号,将产生一个
有效值等于 DC 均方根的 AC 方波。
由于 PWM 波形的周期和占空比可调,其波形的选择就较为灵活。在 PWM 输
出模式中,CTnCCLR 位不影响 PWM 操作。CCRA 和 CCRP 寄存器决定 PWM
波形,一个用来清零内部计数器并控制 PWM 波形的频率,另一个用来控制占
空比。哪个寄存器控制频率或占空比取决于 CTMnC1 寄存器的 CTnDPX 位。
所以 PWM 波形频率和占空比由 CCRA 和 CCRP 寄存器共同决定。
当比较器 A 或比较器 P 比较匹配发生时,将产生 CCRA 或 CCRP 中断标志。
CTMnC1 寄存器中的 CTnOC 位决定 PWM 波形的极性,CTnIO1 和 CTnIO0 位
使能 PWM 输出或将 CTMn 输出脚置为逻辑高或逻辑低。CTnPOL 位对 PWM
输出波形的极性取反。
● 10-bit CTMn,PWM 输出模式,边沿对齐模式,CTnDPX=0
CCRP
Period
Duty
1~7
CCRP×128
0
1024
CCRA
若 fSYS=8MHz,CTMn 时钟源选择 fSYS/4,CCRP=4,CCRA=128,
CTMn PWM 输出频率 = (fSYS/4)/(4×128)=fSYS/2048=3.9063kHz,
duty=128/(4×128)=25%。
若由 CCRA 寄存器定义的 Duty 值等于或大于 Period 值,PWM 输出占空比为
100%。
● 10-bit CTMn,PWM 输出模式,边沿对齐模式,CTnDPX=1
CCRP
Period
Duty
1~7
0
CCRA
CCRP×128
1024
PWM 的输出周期由 CCRA 寄存器的值与 CTMn 的时钟共同决定,PWM 的占
空比由 CCRP 寄存器的值决定。
Rev.1.00
95
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Counter Value
CTnDPX = 0; CTnM [1:0] = 10
Counter cleared by
CCRP
Counter Reset when
CTnON returns high
CCRP
Pause
Resume
Counter Stop if
CTnON bit low
CCRA
Time
CTnON
CTnPAU
CTnPOL
CCRA Int.
Flag CTMnAF
CCRP Int.
Flag CTMnPF
CTMn O/P Pin
(CTnOC=1)
CTMn O/P Pin
(CTnOC=0)
PWM resumes
operation
Output controlled by
other pin-shared function
Output Inverts
when CTnPOL = 1
PWM Period set by CCRP
PWM Duty Cycle
set by CCRA
PWM 输出模式 – CTnDPX=0 (n=0~1)
注:1. CTnDPX=0,CCRP 清除计数器
2. 计数器清零并设置 PWM 周期
3. 当 CTnIO[1:0]=00 或 01,PWM 功能不变
4. CTnCCLR 位不影响 PWM 操作
Rev.1.00
96
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Counter Value
CTnDPX = 1; CTnM [1:0] = 10
Counter cleared by
CCRA
Counter Reset when
CTnON returns high
CCRA
Pause
Resume
Counter Stop if
CTnON bit low
CCRP
Time
CTnON
CTnPAU
CTnPOL
CCRP Int.
Flag CTMnPF
CCRA Int.
Flag CTMnAF
CTMn O/P Pin
(CTnOC=1)
CTMn O/P Pin
(CTnOC=0)
PWM Duty Cycle
set by CCRP
PWM resumes
Output controlled by
operation
other pin-shared function
Output Inverts
when CTnPOL = 1
PWM Period set by CCRA
PWM 输出模式 – CTnDPX=1 (n=0~1)
注:1. CTnDPX=1,CCRA 清除计数器
2. 计数器清零并设置 PWM 周期
3. 当 CTnIO[1:0]=00 或 01,PWM 功能不变
4. CTnCCLR 位不影响 PWM 操作
Rev.1.00
97
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
标准型 TM – STM
标准型 TM 包括 4 种工作模式,即比较匹配输出,定时 / 事件计数器,单脉冲
输出和 PWM 输出模式。标准型 TM 由一个外部输入脚控制并驱动两个外部输
出脚。
CCRP
fSYS/4
fSYS
fH/16
fH/64
fSUB
fSUB
STCK
8-bit Comparator P
000
001
b8~b15
010
011
16-bit Count-up Counter
100
101 STON
110 STPAU
b0~b15
111
16-bit Comparator A
STCK2~STCK0
Comparator P Match
STMPF Interrupt
STOC
Counter Clear
Output
Control
0
1
Polarity
Control
STP
STPB
STCCLR
STM1, STM0
STIO1, STIO0
Comparator A Match
STPOL
STMAF Interrupt
CCRA
注:1. STM 外部引脚与其他功能共用引脚,因此在使用 STM 功能前,应合理设置相关引脚共用功能选择
寄存器以选择所需的 STM 引脚功能。
2. STPB 为 STP 的反相输出。
16-bit 标准型 TM 框图
标准型 TM 操作
标准型 TM 核心是一个由用户选择的内部或外部时钟源驱动的 16 位向上计数
器,它还包括两个内部比较器即比较器 A 和比较器 P。这两个比较器将计数器
的值与 CCRP 和 CCRA 寄存器中的值进行比较。CCRP 是 8 位宽度,与计数器
的高 8 位比较;而 CCRA 是 16 位的,与计数器的所有位比较。
通过应用程序改变 16 位计数器值的唯一方法是使 STON 位发生上升沿跳变清
除计数器。此外,计数器溢出或比较匹配也会自动清除计数器。上述条件发生
时,通常情况会产生 STM 中断信号。标准型 TM 可工作在不同的模式,可由包
括来自输入脚的不同时钟源驱动,也可以控制输出脚。所有工作模式的设定都
是通过设置相关寄存器来实现的。
标准型 TM 寄存器介绍
标准型 TM 的所有工作由一系列寄存器控制。一对只读寄存器用来存放 16 位计
数器的值,一对读 / 写寄存器存放 16 位 CCRA 的值,STMRP 寄存器存放 8 位
CCRP 的值。剩下两个控制寄存器设置不同的操作和控制模式。
寄存器
名称
STMC0
STMC1
STMDL
STMDH
STMAL
STMAH
Rev.1.00
位
7
6
5
4
STPAU STCK2 STCK1 STCK0
STM1 STM0 STIO1 STIO0
D7
D6
D5
D4
D15
D14
D13
D12
D7
D6
D5
D4
D15
D14
D13
D12
98
3
STON
STOC
D3
D11
D3
D11
2
1
0
—
—
—
STPOL STDPX STCCLR
D2
D1
D0
D10
D9
D8
D2
D1
D0
D10
D9
D8
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
寄存器
名称
STMRP
位
7
D7
6
D6
5
D5
4
D4
3
D3
2
D2
1
D1
0
D0
2
—
—
—
1
—
—
—
0
—
—
—
16-bit 标准型 TM 寄存器列表
● STMC0 寄存器
Bit
Name
R/W
POR
7
6
5
4
STPAU STCK2 STCK1 STCK0
R/W
R/W
R/W
R/W
0
0
0
0
3
STON
R/W
0
Bit 7
STPAU:STM 计数器暂停控制位
0:运行
1:暂停
通过设置此位为高可使计数器暂停,清零此位恢复正常计数器操作。当处于暂
停条件时,STM 保持上电状态并继续耗电。当此位由低到高转换时,计数器将
保留其剩余值,直到此位再次改变为低电平,并从此值开始继续计数。
Bit 6~4
STCK2~STCK0:STM 计数时钟选择位
000:fSYS/4
001:fSYS
010:fH/16
011:fH/64
100:fSUB
101:fSUB
110:STCK 上升沿时钟
111:STCK 下降沿时钟
此三位用于选择 STM 的时钟源。外部引脚时钟源能被选择在上升沿或下降沿有
效。fSYS 是系统时钟,fH 和 fSUB 是其它的内部时钟源,细节方面请参考振荡器章节。
Bit 3
STON:STM 计数器 On/Off 控制位
0:Off
1:On
此位控制 STM 的总开关功能。设置此位为高则使能计数器使其运行,清零此位
则除能 STM。清零此位将停止计数器并关闭 STM 减少耗电。当此位经由低到
高转换时,内部计数器将复位清零;当此位经由高到低的转换时,内部计数器
将保持其剩余值,直到此位再次改变为高电平。
若 STM 处于比较匹配输出模式、PWM 输出模式或单脉冲输出模式,当 STON
位经由低到高的转换时,STM 输出脚将复位至 STOC 位指定的初始值。
Bit 2~0
未定义,读为“0”
● STMC1 寄存器
Bit
Name
R/W
POR
Bit 7~6
Rev.1.00
7
STM1
R/W
0
6
STM0
R/W
0
5
STIO1
R/W
0
4
STIO0
R/W
0
3
STOC
R/W
0
2
1
0
STPOL STDPX STCCLR
R/W
R/W
R/W
0
0
0
STM1~STM0:STM 工作模式选择位
00:比较匹配输出模式
01:未定义
10:PWM 输出模式或单脉冲输出模式
11:定时 / 计数器模式
这两位设置 STM 需要的工作模式。为了确保操作可靠,STM 应在 STM1 和
STM0 位有任何改变前先关掉。在定时 / 计数器模式,STM 输出脚状态未定义。
99
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Rev.1.00
Bit 5~4
STIO1~STIO0:STM 外部引脚功能选择位
比较匹配输出模式
00:无变化
01:输出低
10:输出高
11:输出翻转
PWM 输出模式 / 单脉冲输出模式
00:PWM 输出无效状态
01:PWM 输出有效状态
10:PWM 输出
11:单脉冲输出
定时 / 计数器模式
未使用
此两位用于决定在满足特定条件时 STM 外部引脚如何改变状态。这两位值的选
择取决于 STM 运行在哪种模式下。
在比较匹配输出模式下,STIO1 和 STIO0 位决定当从比较器 A 比较匹配输出发
生时 STM 输出脚如何改变状态。当从比较器 A 比较匹配输出发生时 STM 输出
脚能设为切换高、切换低或翻转当前状态。若此两位同时为 0 时,这个输出将
不会改变。STM 输出脚的初始值通过 STMC1 寄存器的 STOC 位设置取得。注意,
由 STIO1 和 STIO0 位得到的输出电平必须与通过 STOC 位设置的初始值不同,
否则当比较匹配发生时,STM 输出脚将不会发生变化。在 STM 输出脚改变状
态后,通过 STON 位由低到高电平的转换复位至初始值。
在 PWM 输出模式,STIO1 和 STIO0 决定比较匹配条件发生时怎样改变 STM 输
出脚的状态。PWM 输出功能通过这两位的变化进行更新。仅在 STM 关闭后才
可改变 STIO1 和 STIO0 位的值。若在 STM 运行时改变 STIO1 和 STIO0 的值,
PWM 输出的值将无法预料。
Bit 3
STOC:STM STP 输出控制位
比较匹配输出模式
0:初始低
1:初始高
PWM 输出模式 / 单脉冲输出模式
0:低有效
1:高有效
这是 STM 输出脚输出控制位。它取决于 STM 此时正运行于比较匹配输出模式
还是 PWM 输出模式 / 单脉冲输出模式。若 STM 处于定时 / 计数器模式,则其
无效。在比较匹配输出模式时,其决定比较匹配发生前 STM 输出脚的逻辑电平
值。在 PWM 输出模式时,其决定 PWM 信号是高有效还是低有效。在单脉冲
输出模式,其决定 STON 位由高变为低时 STM 输出脚的逻辑电平值。
Bit 2
STPOL:STM STP 输出极性控制位
0:同相
1:反相
此位控制 STP 输出脚的极性。此位为高时 STM 输出脚反相,为低时 STM 输出
脚同相。若 STM 处于定时 / 计数器模式时其无效。
Bit 1
STDPX:STM PWM 周期 / 占空比控制位
0:CCRP – 周期;CCRA – 占空比
1:CCRP – 占空比;CCRA – 周期
此位决定 CCRA 与 CCRP 寄存器哪个被用于 PWM 波形的周期和占空比控制。
Bit 0
STCCLR:STM 计数器清零条件选择位
0:STM 比较器 P 匹配
1:STM 比较器 A 匹配
此位用于选择清除计数器的方法。标准型 TM 包括两个比较器 – 比较器 A 和比
较器 P。这两个比较器每个都可以用于清除内部计数器。STCCLR 位设为高,
计数器在比较器 A 比较匹配发生时被清除;此位设为低,计数器在比较器 P 比
较匹配发生或计数器溢出时被清除。计数器溢出清除的方法仅在 CCRP 被清除
为 0 时才能生效。STCCLR 位在 PWM 输出模式、单脉冲输出模式时未使用。
100
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● STMDL 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
D7
R
0
6
D6
R
0
5
D5
R
0
4
D4
R
0
3
D3
R
0
2
D2
R
0
1
D1
R
0
0
D0
R
0
2
D10
R
0
1
D9
R
0
0
D8
R
0
2
D2
R/W
0
1
D1
R/W
0
0
D0
R/W
0
2
D10
R/W
0
1
D9
R/W
0
0
D8
R/W
0
2
D2
R/W
0
1
D1
R/W
0
0
D0
R/W
0
D7~D0:STM 计数器低字节寄存器 bit 7 ~ bit 0
STM 16-bit 计数器 bit 7 ~ bit 0
● STMDH 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
D15
R
0
6
D14
R
0
5
D13
R
0
4
D12
R
0
3
D11
R
0
D15~D8:STM 计数器高字节寄存器 bit 7 ~ bit 0
STM 16-bit 计数器 bit 15 ~ bit 8
● STMAL 寄存器
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
D7~D0:STM CCRA 低字节寄存器 bit 7 ~ bit 0
STM 16-bit CCRA bit 7 ~ bit 0
● STMAH 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
D15
R/W
0
6
D14
R/W
0
5
D13
R/W
0
4
D12
R/W
0
3
D11
R/W
0
D15~D8:STM CCRA 高字节寄存器 bit 7 ~ bit 0
STM 16-bit CCRA bit 15 ~ bit 8
● STMRP 寄存器
Bit
Name
R/W
POR
Bit 7~0
Rev.1.00
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
D7~D0:STM CCRP 8-bit 寄存器,与 STM 计数器 bit15~bit8 比较
比较器 P 匹配周期 =
0:65536 个 STM 时钟周期
1~255:(1~255)×256 个 STM 时钟周期
此八位设定内部 CCRP 8-bit 寄存器的值,然后与内部计数器的高八位进行比较。
如果 STCCLR 位设为 0 时,此比较结果可用于清零内部计数器。STCCLR 位设
为低,CCRP 比较匹配结果将重置内部计数器。由于 CCRP 只与计数器高八位
比较,比较值是 256 时钟周期的倍数。CCRP 被清零时,实际上会使得计数器
在最大值溢出。
101
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
标准型 TM 工作模式
标准型 TM 有四种工作模式,即比较匹配输出模式,PWM 输出模式,单脉冲
输出模式或定时 / 计数器模式。通过设置 STMC1 寄存器的 STM1 和 STM0 位
选择任意模式。
比较匹配输出模式
为使 STM 工作在此模式,STMC1 寄存器中的 STM1 和 STM0 位需要设置为
“00”。当工作在该模式,一旦计数器使能并开始计数,有三种方法来清零,
分别是:计数器溢出,比较器 A 比较匹配发生和比较器 P 比较匹配发生。当
STCCLR 位为低,有两种方法清除计数器。一种是比较器 P 比较匹配发生,另
一种是 CCRP 所有位设置为零并使得计数器溢出。此时,比较器 A 和比较器 P
的请求标志位 STMAF 和 STMPF 将分别置位。
如果 STMC1 寄存器的 STCCLR 位设置为高,当比较器 A 比较匹配发生时计
数器被清零。此时,即使 CCRP 寄存器的值小于 CCRA 寄存器的值,仅产生
STMAF 中断请求标志。所以当 STCCLR 为高时,不会产生 STMPF 中断请求标
志。在比较匹配输出模式下,CCRA 不能设为“0”。
如果 CCRA 位都清除为零,当计数器的值达到 16 位最大值 FFFFH 时将溢出,
但此时不会产生 STMAF 中断请求标志。
正如该模式名所言,当比较匹配发生后,STM 输出脚状态改变。当比较器 A
比较匹配发生后 STMAF 标志产生时,STM 输出脚状态改变。比较器 P 比较匹
配发生时产生的 STMPF 标志不影响 STM 输出脚。STM 输出脚状态改变方式
由 STMC1 寄存器中 STIO1 和 STIO0 位决定。当比较器 A 比较匹配发生时,
STIO1 和 STIO0 位决定 STM 输出脚输出高、低或翻转当前状态。在 STON 位
由低到高电平的变化后,STM 输出脚初始状态为 STOC 位所指定的电平。注意,
若 STIO1 和 STIO0 位同时为 0 时,引脚输出不变。
Rev.1.00
102
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Counter overflow
Counter Value
0xFFFF
STCCLR = 0; STM [1:0] = 00
CCRP > 0
Counter cleared by CCRP value
CCRP=0
CCRP > 0
Counter
Restart
Resume
CCRP
Pause
CCRA
Stop
Time
STON
STPAU
STPOL
CCRP Int.
Flag STMPF
CCRA Int.
Flag STMAF
STM O/P Pin
Output pin set
to initial Level
Low if STOC=0
Output not affected by STMAF
flag. Remains High until reset
by STON bit
Output Toggle with
STMAF flag
Here STIO [1:0] = 11
Toggle Output select
Note STIO [1:0] = 10
Active High Output select
Output Inverts
when STPOL is high
Output Pin
Reset to Initial value
Output controlled by other
pin-shared function
比较匹配输出模式 – STCCLR=0
注:1. STCCLR=0,比较器 P 匹配将清除计数器
2. STM 输出脚仅由 STMAF 标志位控制
3. 在 STON 上升沿 STM 输出脚复位至初始值
Rev.1.00
103
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Counter Value
STCCLR = 1; STM [1:0] = 00
CCRA = 0
Counter overflow
CCRA > 0 Counter cleared by CCRA value
0xFFFF
CCRA=0
Resume
CCRA
Pause
Stop
Counter Restart
CCRP
Time
STON
STPAU
STPOL
No STMAF flag
generated on
CCRA overflow
CCRA Int.
Flag STMAF
CCRP Int.
Flag STMPF
STM O/P Pin
STMPF not
generated
Output pin set
to initial Level
Low if STOC=0
Output does
not change
Output not affected by
STMAF flag. Remains High
until reset by STON bit
Output Toggle with
STMAF flag
Here STIO [1:0] = 11
Toggle Output select
Note STIO [1:0] = 10
Active High Output select
Output Inverts
when STPOL is high
Output Pin
Reset to Initial value
Output controlled by other
pin-shared function
比较匹配输出模式 – STCCLR=1
注:1. STCCLR=1,比较器 A 匹配将清除计数器
2. STM 输出脚仅由 STMAF 标志位控制
3. 在 STON 上升沿 STM 输出脚复位至初始值
4. 当 STCCLR=1 时,不会产生 STMPF 标志
Rev.1.00
104
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
定时 / 计数器模式
为使 STM 工作在此模式,STMC1 寄存器中的 STM1 和 STM0 位需要设置为
“11”。定时 / 计数器模式与比较输出模式操作方式相同,并产生同样的中断
请求标志。不同的是,在定时 / 计数器模式下 STM 输出脚未使用。因此,比较
匹配输出模式中的描述和时序图可以适用于此功能。该模式中未使用的 STM 输
出脚用作普通 I/O 脚或其它功能。
PWM 输出模式
为使 STM 工作在此模式,STMC1 寄存器中的 STM1 和 STM0 位需要设置为
“10”,且 STIO1 和 STIO0 位也需要设置为“10”。STM 的 PWM 功能在马
达控制,加热控制,照明控制等方面十分有用。给 STM 输出脚提供一个频率固
定但占空比可调的信号,将产生一个有效值等于 DC 均方根的 AC 方波。
由于 PWM 波形的周期和占空比可调,其波形的选择就较为灵活。在 PWM 输
出模式中,STCCLR 位不影响 PWM 周期。CCRA 和 CCRP 寄存器决定 PWM
波形,一个用来清除内部计数器并控制 PWM 波形的频率,另一个用来控制占
空比。哪个寄存器控制频率或占空比取决于 STMC1 寄存器的 STDPX 位。所以
PWM 波形由 CCRA 和 CCRP 寄存器共同决定。
当比较器 A 或比较器 P 比较匹配发生时,将产生 CCRA 或 CCRP 中断标志。
STMC1 寄存器中的 STOC 位决定 PWM 波形的极性,STIO1 和 STIO0 位使能
PWM 输出或将 STM 输出脚置为逻辑高或逻辑低。STPOL 位对 PWM 输出波形
的极性取反。
● 16-bit STM,PWM 输出模式,边沿对齐模式,STDPX=0
CCRP
Period
Duty
1~255
CCRP×256
0
65536
CCRA
若 fSYS=8MHz,STM 时钟源选择 fSYS/4,CCRP=2,CCRA=128,
STM PWM 输出频率 = (fSYS/4)/(2×256)=fSYS/2048≈4kHz,duty=128/(2×256)=25%。
若由 CCRA 寄存器定义的 Duty 值等于或大于 Period 值,PWM 输出占空比为
100%。
● 16-bit STM,PWM 输出模式,边沿对齐模式,STDPX=1
CCRP
Period
Duty
1~255
0
CCRA
CCRP×256
65536
PWM 的输出周期由 CCRA 寄存器的值与 STM 的时钟共同决定,PWM 的占空
比由 CCRP 的值决定。
Rev.1.00
105
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Counter Value
STDPX = 0; STM [1:0] = 10
Counter cleared by
CCRP
Counter Reset when
STON returns high
CCRP
Pause
Resume
Counter Stop if
STON bit low
CCRA
Time
STON
STPAU
STPOL
CCRA Int.
Flag STMAF
CCRP Int.
Flag STMPF
STM O/P Pin
(STOC=1)
STM O/P Pin
(STOC=0)
PWM Duty Cycle
set by CCRA
PWM Period set by CCRP
PWM resumes
operation
Output controlled by
Output Inverts
other pin-shared function
when STPOL = 1
PWM 输出模式 – STDPX=0
注:1. STDPX=0,CCRP 清除计数器
2. 计数器清零并设置 PWM 周期
3. 当 STIO[1:0]=00 或 01,PWM 功能不变
4. STCCLR 位不影响 PWM 操作
Rev.1.00
106
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Counter Value
STDPX = 1; STM [1:0] = 10
Counter cleared by
CCRA
Counter Reset when
STON returns high
CCRA
Pause
Resume
Counter Stop if
STON bit low
CCRP
Time
STON
STPAU
STPOL
CCRP Int.
Flag STMPF
CCRA Int.
Flag STMAF
STM O/P Pin
(STOC=1)
STM O/P Pin
(STOC=0)
PWM resumes
operation
Output controlled by
Output Inverts
other pin-shared function
when STPOL = 1
PWM Period set by CCRA
PWM Duty Cycle
set by CCRP
PWM 输出模式 – STDPX=1
注:1. STDPX=1,CCRA 清除计数器
2. 计数器清零并设置 PWM 周期
3. 当 STIO[1:0]=00 或 01,PWM 功能不变
4. STCCLR 位不影响 PWM 操作
Rev.1.00
107
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
单脉冲输出模式
为使 STM 工作在此模式,STMC1 寄存器中的 STM1 和 STM0 位需要设置为
“10”,同时 STIO1 和 STIO0 位需要设置为“11”。正如模式名所言,单脉冲
输出模式,在 STM 输出脚将产生一个脉冲输出。
脉冲输出可以通过应用程序控制 STON 位由低到高的转变来触发。而处于单脉
冲输出模式时,STON 位可在 STCK 脚发生有效边沿跳转时自动由低转变为高,
进而开始单脉冲输出。当 STON 位转变为高电平时,计数器将开始运行,并产
生脉冲前沿。当脉冲有效时 STON 位保持高电平。通过应用程序使 STON 位清
零或比较器 A 比较匹配发生时,产生脉冲后沿。
然而,比较器 A 比较匹配发生时,会自动清除 STON 位并产生单脉冲输出边沿
跳转。CCRA 的值通过这种方式控制脉冲宽度。比较器 A 比较匹配发生时,也
会产生 STM 中断。STON 位在计数器重启时会发生由低到高的转变,此时计数
器才复位至零。在单脉冲输出模式中,CCRP 寄存器、STCCLR 和 STDPX 位未
使用。
S/W Command
SET“STON”
or
STCK Pin
Transition
CCRA
Leading Edge
CCRA
Trailing Edge
STON bit
0→1
STON bit
1→0
S/W Command
CLR“STON”
or
CCRA Compare
Match
STP Output Pin
Pulse Width = CCRA Value
单脉冲产生示意图
Rev.1.00
108
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Counter Value
STM [1:0] = 10 ; STIO [1:0] = 11
Counter stopped by
CCRA
Counter Reset when
STON returns high
CCRA
Pause
Counter Stops by
software
Resume
CCRP
Time
STON
Software
Trigger
Auto. set by
STCK pin
Cleared by
CCRA match
STCK pin
Software
Trigger
Software
Trigger
Software
Software Trigger
Clear
STCK pin
Trigger
STPAU
STPOL
No CCRP Interrupts
generated
CCRP Int.
Flag STMPF
CCRA Int.
Flag STMAF
STM O/P Pin
(STOC=1)
STM O/P Pin
(STOC=0)
Output Inverts
when STPOL = 1
Pulse Width
set by CCRA
单脉冲输出模式
注:1. 通过 CCRA 匹配停止计数器
2. CCRP 未使用
3. 通过 STCK 脚或设置 STON 位为高来触发脉冲
4. STCK 脚有效沿会自动置高位 STON
5. 单脉冲输出模式中,STIO[1:0] 需置位“11”,且不能更改
Rev.1.00
109
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
串行接口模块 – SIM
此单片机内建一个串行接口模块,包括两种易与外部设备通信的串行接口:四
线 SPI 或两线 I2C 接口。这两种接口具有相当简单的通信协议,单片机可以通
过这些接口与外部基于 SPI 或 I2C 的传感器、闪存等硬件设备通信。因为 SIM
接口引脚是与其它 I/O 引脚共用,因此在使用 SIM 功能前,要先通过相应的引
脚共用功能选择寄存器选定 SIM 引脚功能。因为 SPI 和 I2C 这两种接口共用引
脚和寄存器,所以要先通过 SIMC0 寄存器中的 SIM2~SIM0 位选择哪一种通信
接口。若 SIM 功能使能且引脚用作 SIM 输入脚,可通过对应上拉电阻控制寄存
器选择此脚的上拉电阻。
SPI 接口
SPI 接口常用于与外部设备如传感器、闪存或 EEPROM 内存等通信。四线 SPI
接口最初是由摩托罗拉公司研制,是一个有相当简单的通信协议的串行数据接
口,这个协议可以简化与外部硬件的编程要求。
SPI 通信模式为全双工模式,且能以主 / 从模式的工作方式进行通信,单片机既
可以做为主机,也可以做为从机。虽然 SPI 接口理论上允许一个主机控制多个
从机,但此处的 SPI 中只有一个片选信号引脚 SCS。若主机需要控制多个从机,
可使用输入 / 输出引脚选择从机。
SPI 接口操作
SPI 接口是一个全双工串行数据传输器。SPI 接口的四线为:SDI、SDO、SCK
和 SCS。SDI 和 SDO 是数据的输入和输出线。SCK 是串行时钟线,SCS 是从
机的选择线。SPI 的接口引脚与普通 I/O 口和 I2C 的功能脚共用。通过设定相关
引脚共用选择位以及 SIMC0 和 SIMC2 寄存器的对应位,来使能 SPI 接口。当
SPI 所需配置已设定好,可通过 SIMC0 寄存器的 SIMEN 位使能 SPI 接口。连
接到 SPI 接口的单片机以从主 / 从模式进行通信,且所有的数据传输由主机发
起,时钟信号也由主机控制。由于单片机只有一个 SCS 引脚,所以只能拥有一
个从机设备。可通过软件控制 SCS 引脚使能与除能,设置 CSEN 位为“1”使
能 SCS 引脚功能,设置 CSEN 位为“0”,SCS 引脚将处于浮空状态。
SPI Master
SPI Slave
SCK
SCK
SDO
SDI
SDI
SDO
SCS
SCS
SPI 主 / 从机连接方式
该单片机的 SPI 功能具有以下特点:
● 全双工同步数据传输
● 主从模式
● 最低有效位先传或最高有效位先传的数据传输模式
● 传输完成标志位
● 时钟源上升沿或下降沿有效
SPI 接口状态受很多因素的影响,如单片机处于主机或从机的工作模式以及
CSEN、SIMEN 位的状态。
Rev.1.00
110
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Data Bus
SIMD
SDI Pin
TX/RX Shift Register
CKEG
CKPOLB
SDO Pin
Clock
Edge/Polarity
Control
Busy
Status
SCK Pin
fSYS
fSUB
Clock
Source
Select
CTM0 CCRP match frequency/2
SCS Pin
WCOL
TRF
SIMICF
CSEN
SPI 方框图
SPI 寄存器
有三个内部寄存器用于控制 SPI 接口的所有操作,其中有一个数据寄存器
SIMD、两个控制寄存器 SIMC0 和 SIMC2。SIMC1 寄存器仅用于 I2C 接口。
寄存器
名称
SIMC0
SIMC2
SIMD
7
SIM2
D7
D7
位
6
5
4
3
2
1
0
SIM1
SIM0
— SIMDEB1 SIMDEB0 SIMEN SIMICF
D6
CKPOLB CKEG
MLS
CSEN
WCOL TRF
D6
D5
D4
D3
D2
D1
D0
SPI 寄存器列表
SPI 数据寄存器
SIMD 寄存器用于存储发送和接收的数据。这个寄存器由 SPI 和 I2C 功能所共
用。在单片机将数据写入到 SPI 总线之前,要传输的数据应先存在 SIMD 中。
SPI 总线接收到数据之后,单片机就可以从 SIMD 数据寄存器中读取。所有通
过 SPI 传输或接收的数据都必须通过 SIMD 实现。
● SID 寄存器
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
Rev.1.00
D7~D0:SIM 数据寄存器位 bit 7 ~ bit 0
111
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SPI 控制寄存器
单片机中也有两个控制 SPI 接口功能的寄存器,SIMC0 和 SIMC2。应注意的是
SIMC2 与 I2C 接口功能中的寄存器 SIMA 是共用同一个寄存器地址。SPI 功能
不会用到寄存器 SIMC1,SIMC1 寄存器仅在工作于 I2C 接口时才被使用。寄存
器 SIMC0 用于控制使能 / 除能功能和设置数据传输的时钟频率。寄存器 SIMC2
用于其它的控制功能如 LSB/MSB 选择,写冲突标志位等。
● SIMC0 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
SIM2
R/W
1
6
SIM1
R/W
1
5
SIM0
R/W
1
4
—
—
—
3
2
1
0
SIMDEB1 SIMDEB0 SIMEN SIMICF
R/W
R/W
R/W
R/W
0
0
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 时钟为 CTM0 CCRP 匹配频率 / 2
101:SPI 从机模式
110:I2C 从机模式
111:未使用模式
这几位用于设置 SIM 功能的工作模式,除了选择 I2C 或 SPI 功能,还可选择 SPI
的主从模式和 SPI 的主机时钟频率。SPI 时钟源可来自于系统时钟和 fSUB 也可以
选择来自 CTM0。若选择的是作为 SPI 从机模式,则其时钟源从外部主机而得。
Bit 4
未定义,读为“0”
Bit 3~2
SIMDEB1~SIMDEB0:I2C 去抖时间选择位
这些位只有在 SIM 设置成 I2C 接口模式时才有效。请参考 I2C 寄存器部分。
Bit 1
SIMEN:SIM 控制位
0:除能
1:使能
此位为 SIM 接口的开 / 关控制位。此位为“0”时,SIM 接口除能,SDI、SDO、
SCK 和 SCS 或 SDA 和 SCL 脚将失去 SPI 或 I2C 功能,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
SIMICF:SIM SPI 未完成标志位
0:未发生
1:发生
此位仅当 SIM 配置在 SPI 从机模式时有效。如果 SPI 工作在从机模式且 SIMEN
和 CSEN 位都为“1”,但在 SPI 数据传输完全结束前 SCS 线被外部主机拉高,
SIMICF 和 TRF 位都会被置高。在这种情况下,如果相应的中断功能使能将产
生一个中断。然而,如果 SIMICF 位是由软件应用程序设为 1,那么 TRF 位将
不会置高。
112
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● SIMC2 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
D7
R/W
0
6
D6
R/W
0
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
D7~D6:未定义位
这两位可通过应用程序进行读写。
Bit 5
CKPOLB:SPI 时钟线的基础状态选择位
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”。此位也可用于产生中断。
113
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SPI 通信
将 SIMEN 设置为高,使能 SPI 功能之后,单片机处于主机模式,当数据写入
到寄存器 SIMD 的同时传输 / 接收开始进行。数据传输完成时,TRF 位将自动
被置位但清除只能通过应用程序完成。单片机处于从机模式时,收到主机发来
的信号之后,会传输 SIMD 中的数据,而且在 SDI 引脚上的数据也会被移位
到 SIMD 寄存器中。主机应在输出时钟信号之前先输出一个 SCS 信号以使能从
机,从机的数据传输功能也应在与 SCK 信号相关的适当时候准备就绪,这由
CKPOLB 和 CKEG 位决定。所附时序图表明了在 CKPOLB 和 CKEG 位各种设
置情况下从机数据与 SCK 信号的关系。
即使在单片机处于空闲模式时,若 SPI 接口使用的时钟源仍开启,SPI 功能仍
将继续执行。
SIMEN=1, CSEN=0 (External Pull-high)
SCS
SIMEN, CSEN=1
SCK (CKPOLB=1, CKEG=0)
SCK (CKPOLB=0, CKEG=0)
SCK (CKPOLB=1, CKEG=1)
SCK (CKPOLB=0, CKEG=1)
SDO (CKEG=0)
D7/D0
D6/D1
D5/D2
D4/D3
D3/D4
D2/D5
D1/D6
D0/D7
SDO (CKEG=1)
D7/D0
D6/D1
D5/D2
D4/D3
D3/D4
D2/D5
D1/D6
D0/D7
SDI Data Capture
Write to SIMD
SPI 主机模式时序
SCS
SCK (CKPOLB=1)
SCK (CKPOLB=0)
SDO
D7/D0
D6/D1
D5/D2
D4/D3
D3/D4
D2/D5
D1/D6
D0/D7
SDI Data Capture
Write to SIMD
(SDO does not change until first SCK edge)
SPI 从机模式时序 – CKEG=0
Rev.1.00
114
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SCS
SCK (CKPOLB=1)
SCK (CKPOLB=0)
SDO
D7/D0
D6/D1
D5/D2
D4/D3
D3/D4
D2/D5
D1/D6
D0/D7
SDI Data Capture
Write to SIMD
(SDO changes as soon as writing occurs; SDO is floating if SCS=1)
Note: For SPI slave mode, if SIMEN=1 and CSEN=0, SPI is always
enabled and ignores the SCS level.
SPI 从机模式时序 – CKEG=1
SPI Transfer
Master
Master or Slave
?
A
Write Data
into SIMD
Clear WCOL
Slave
Y
SIM[2:0]=000, 001,
010, 011 or 100
WCOL=1?
SIM[2:0]=101
N
N
Configure CKPOLB,
CKEG, CSEN and MLS
Transmission
completed?
(TRF=1?)
Y
SIMEN=1
Read Data
from SIMD
A
Clear TRF
Transfer
finished?
N
Y
END
SPI 传输控制流程图
Rev.1.00
115
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SPI 总线使能 / 除能
设置 CSEN=1、SCS=0 将使能 SPI 总线,然后等待写数据到 SIMD 寄存器 ( TXRX
缓存器 )。单片机处于主机模式,数据写入 SIMD 寄存器后,自动开始数据传
输或接收操作。数据传输完成时,TRF 位将自动被置位。单片机处于从机模式,
SCK 引脚上收到脉冲信号之后,会传输 TXRX 中的数据,或将 SDI 引脚上的数
据移入。
当 SPI 总线除能时,通过设置相应引脚共用控制位,SCK、SDI、SDO、SCS 可
作为 I/O 口或其它功能引脚使用。
SPI 操作步骤
四线制 SPI 接口可完成所有主 / 从模式通信工作。
在 SIMC2 寄存器中,CSEN 位控制 SPI 接口的所有功能。设置此位为高,SCS
信号线有效将使能 SPI 接口。设置此位为低,SPI 接口将除能,SCS 信号线处
于浮空状态因此不能控制 SPI 接口。CSEN 位和 SIMC0 寄存器中的 SIMEN 位
设置为高,使得 SDI 信号线处于浮空状态且 SDO 信号线为高电平。主机模式
中,如果 SCK 信号线为高还是低取决于 SIMC2 寄存器中的时钟极性选择位
CKPOLB。从机模式中,SCK 信号线处于浮空状态。如果 SIMEN 位设置为低,
SPI 接口被除能,通过设置相应引脚共用控制位,SCS、SDI、SDO 和 SCK 可
作为 I/O 口或其它功能引脚使用。主机模式中,当数据被写入 SIMD 寄存器后,
主机发起数据传输,并控制时钟信号。从机模式中,由外部主机发出数据传送 /
接收时钟信号。下面介绍主从模式中数据传输步骤。
主机模式
● 步骤 1
设置 SIMC0 控制寄存器中的 SIM2~SIM0 位,选择 SPI 主机模式和时钟源。
● 步骤 2
设置 CSEN 和 MLS 位,选择高位或低位数据优先传送,这必须与从机设备一致。
● 步骤 3
设置 SIMC0 控制寄存器中的 SIMEN 位,使能 SPI 接口功能。
● 步骤 4
对于写操作:写数据到 SIMD 寄存器,实际上此时数据会被存储在 TXRX 缓
存器中。再使用 SCK 和 SCS 信号线将数据输出。跳至步骤 5。
对于读操作:从 SDI 信号线移入的数据将被存储在 TXRX 缓存器中,直到所
有数据接收完毕,此时数据全部锁存至 SIMD 寄存器。
● 步骤 5
检测 WCOL 位,若此位为高,则发生数据冲突并跳回至步骤 4;若为低,则
继续执行下面的步骤。
● 步骤 6
检测 TRF 位或等待 SIM SPI 串行总线中断发生。
● 步骤 7
从 SIMD 寄存器中读数据。
● 步骤 8
清除 TRF。
● 步骤 9
跳回至步骤 4。
Rev.1.00
116
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
从机模式
● 步骤 1
设置 SIMC0 控制寄存器中的 SIM2~SIM0 位,选择 SPI 从机模式。
● 步骤 2
设置 CSEN 和 MLS 位,选择高位或低位数据优先传送,这必须与主机设备一
致。
● 步骤 3
设置 SIMC0 控制寄存器中的 SIMEN 位,使能 SPI 接口功能。
● 步骤 4
对于写操作:写数据到 SIMD 寄存器,实际上此时数据会被存储在 TXRX 缓
存器中。等待主机时钟 SCK 信号和 SCS 信号。跳至步骤 5。
对于读操作:从 SDI 信号线移入的数据将被存储在 TXRX 缓存器中,直到所
有数据接收完毕,此时数据全部锁存至 SIMD 寄存器。
● 步骤 5
检测 WCOL 位,若此位为高,则发生数据冲突并跳回至步骤 4;若为低,则
继续执行下面的步骤。
● 步骤 6
检测 TRF 位或等待 SIM SPI 串行总线中断发生。
● 步骤 7
从 SIMD 寄存器中读数据。
● 步骤 8
清除 TRF。
● 步骤 9
跳回至步骤 4。
错误侦测
SIMC2 寄存器中的 WCOL 位用于数据传输期间监测数据冲突的发生。此位由
SPI 串行接口设置为高,而由应用程序来清除为零。在数据传输期间如果写数
据到 SIMD,此位被置高提示数据冲突发生,并阻止数据继续被写入。
I2C 接口
I2C 可以和传感器、EEPROM 内存等外部硬件接口进行通信。最初是由飞利浦
公司研制,是适用于同步串行数据传输的双线式低速串行接口。I2C 接口具有两
线通信,非常简单的的通信协议和在同一总线上和多个设备进行通信的能力的
优点,使之在很多的应用场合中大受欢迎。
VDD
SDA
SCL
Device
Slave
Device
Master
Device
Slave
I2C 主从总线连接图
Rev.1.00
117
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
I2C 接口操作
I2C 串行接口是一个双线的接口,有一条串行数据线 SDA 和一条串行时钟线
SCL。由于可能有多个设备在同一条总线上相互连接,所以这些设备的输出都
是开漏型输出。因此应在这些输出口上都加上拉电阻。应注意的是,I2C 总线上
的每个设备都没有选择线,但分别与唯一的地址一一对应,用于 I2C 通信。
如果有两个设备通过双向的 I2C 总线进行通信,那么就存在一个主机和一个从
机。主机和从机都可以用于传输和接收数据,但只有主机才可以控制总线动作。
那么处于从机模式的设备,要在 I2C 总线上传输数据只有两种方式,一是从机
发送模式,二是从机接收模式。即使 I2C 设备被激活,与 SCL/SDA 引脚共用的
I/O 口上拉电阻控制功能仍有效,其上拉电阻功能由相应的上拉电阻控制寄存
器控制。
Data Bus
I2C Data Register
(SIMD)
fSYS
SCL Pin
SDA Pin
HTX
Debounce
Circuitry
SIMDEB[1:0]
I2C Address Register
(SIMA)
Address Address Match – HAAS
Comparator
Direction Control
Data in MSB
M
U
X
Shift Register
Read/Write Slave
Data out MSB
SRW
TXAK
8-bit Data Transfer ComPlete – HCF
Transmit/
Receive
Control Unit
fSUB
SIMTOEN
SIM Interrupt
Detect Start or Stop
HBB
SIMTOF
Time-out
Control
Address Match
I2C 方框图
START signal
from Master
Send slave address
and R/W bit from Master
Acknowledge
from slave
Send data byte
from Master
Acknowledge
from slave
STOP signal
from Master
I2C 接口操作
Rev.1.00
118
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SIMDEB1 和 SIMDEB0 位决定 I2C 接口的去抖时间。这个功能可以使用内部时
钟在外部时间上增加一个去抖间隔,减小时钟线上毛刺发生的可能性,以避免
单片机发生误动作。如果选择了这个功能,去抖时间可以选择 2 个或 4 个系统
时钟。为了达到需要的 I2C 数据传输速度,系统时钟 fSYS 和 I2C 去抖时间之间存
在一定的关系。I2C 标准模式或者快速模式下,用户需要注意所选的系统时钟频
率与标准匹配去抖时间的设置,其具体关系如下表所示。
I2C 去抖时间选择
无去抖时间
2 个系统时钟去抖时间
4 个系统时钟去抖时间
I2C 标准模式 (100kHz)
fSYS > 2MHz
fSYS > 4MHz
fSYS > 8MHz
I2C 快速模式 (400kHz)
fSYS > 5MHz
fSYS > 10MHz
fSYS > 20MHz
I2C 最小 fSYS 频率要求
I2C 寄存器
I2C 总线上有三个控制寄存器 SIMC0、SIMC1 和 SIMTOC,一个地址寄存器
SIMA 以及一个数据寄存器 SIMD。
位
寄存器
名称
7
6
5
4
3
2
1
0
SIMC0
SIM2
SIM1
SIM0
—
SIMDEB1 SIMDEB0 SIMEN SIMICF
SIMC1
HCF
HAAS
HBB
HTX
TXAK
SRW
IAMWU RXAK
SIMD
D7
D6
D5
D4
D3
D2
D1
D0
SIMA
SIMA6
SIMA5 SIMA4
SIMA3
SIMA2
SIMA1
SIMA0
D0
SIMTOC SIMTOEN SIMTOF SIMTOS5 SIMTOS4 SIMTOS3 SIMTOS2 SIMTOS1 SIMTOS0
I2C 寄存器列表
I2C 数据寄存器
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”:未知
Bit 7~0
D7~D0:SIM 数据寄存器位 bit 7~bit 0
I2C 地址寄存器
SIMA 寄存器也在 SPI 接口功能中使用,但其名称改为 SIMC2。SIMA 寄存器
用于存放 7 位从机地址,寄存器 SIMA 中的 bit 7 ~ bit 1 是单片机的从机地址,
bit 0 未定义。
如果接至 I2C 的主机发送出的地址和寄存器 SIMA 中存储的地址相符,那么就
选中了这个从机。应注意的是寄存器 SIMA 和 SPI 接口使用的寄存器 SIMC2 共
用同一个寄存器地址。
Rev.1.00
119
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● SIMA 寄存器
Bit
Name
R/W
POR
Bit 7~1
Bit 0
7
SIMA6
R/W
0
6
SIMA5
R/W
0
5
SIMA4
R/W
0
4
SIMA3
R/W
0
3
SIMA2
R/W
0
2
SIMA1
R/W
0
1
SIMA0
R/W
0
0
D0
R/W
0
SIMA6~SIMA0:I2C 从机地址位
SIMA6~SIMA0 是从机地址 bit 6 ~ bit 0。
D0:保留位,此位可通过软件程序进行读或写
I2C 控制寄存器
单片机中有三个控制 I2C 接口功能的寄存器,SIMC0、SIMC1 和 SIMTOC。
寄存器 SIMC0 用于控制使能 / 除能功能和设置数据传输的时钟频率。寄存器
SIMC1 包括多个用于指示 I2C 传输状态的相关标志位。SIMTOC 寄存器用于控
制 I2C 超时功能,此寄存器在 I2C 超时一节介绍。
● SIMC0 寄存器
Bit
Name
R/W
POR
Bit 7~5
Bit 4
Bit 3~2
Bit 1
Bit 0
Rev.1.00
7
SIM2
R/W
1
6
SIM1
R/W
1
5
SIM0
R/W
1
4
—
—
—
3
2
1
0
SIMDEB1 SIMDEB0 SIMEN SIMICF
R/W
R/W
R/W
R/W
0
0
0
0
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 时钟为 CTM0 CCRP 匹配频率 / 2
101:SPI 从机模式
110:I2C 从机模式
111:未使用模式
这几位用于设置 SIM 功能的工作模式,用于选择 SPI 的主从模式和 SPI 的主机
时钟频率及 I2C 或 SPI 功能。SPI 时钟源可来自于系统时钟和 fSUB 也可以选择来
自 CTM0。若选择的是作为 SPI 从机,则其时钟源从外部主机而得。
未定义,读为“0”
SIMDEB1~SIMDEB0:I2C 去抖时间选择位
00:无去抖时间
01:2 个系统时钟去抖时间
1x:4 个系统时钟去抖时间
当设置 SIM2~SIM0 位为“110”将 SIM 设置为 I2C 接口功能时,这两个位用于
选择 I2C 去抖时间。
SIMEN:SIM 控制位
0:除能
1:使能
此位为 SIM 接口的开 / 关控制位。此位为“0”时,SIM 接口除能,SDI、SDO、
SCK 和 SCS 或 SDA 和 SCL 脚将失去 SPI 或 I2C 功能,SIM 工作电流减小到最
小值。此位为“1”时,SIM 接口使能。若 SIM 经由 SIM2~SIM0 位设置为工作
在 SPI 接口,当 SIMEN 位由低到高转变时,SPI 控制寄存器中的设置不会发生
变化,其首先应在应用程序中初始化。若 SIM 经由 SIM2~SIM0 位设置为工作
在 I2C 接口,当 SIMEN 位由低到高转变时,I2C 控制寄存器中的设置,如 HTX
和 TXAK,将不会发生变化,其首先应在应用程序中初始化,此时相关 I2C 标志,
如 HCF、HAAS、HBB、SRW 和 RXAK,将被设置为其默认状态。
SIMICF:SIM SPI 未完成标志位
此位仅当 SIM 配置在 SPI 从机模式时有效。请参考 SPI 寄存器部分。
120
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● SIMC1 寄存器
Bit
Name
R/W
POR
Rev.1.00
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
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
IAMWU:I2C 地址匹配唤醒控制位
0:除能
1:使能
此位设置为“1”则使能 I2C 地址匹配使系统从休眠或空闲模式中唤醒的功能。
若进入休眠或空闲模式前 IAMWU 已经置高以使能 I2C 地址匹配唤醒功能,在
系统唤醒后须软件清除此位以确保单片机正确地运行。
Bit 0
RXAK:I2C 总线接收应答标志位
0:从机接收到应答标志
1:从机没有接收到应答标志
RXAK 位是接收应答标志位。如果 RXAK 位为“0”,即表示 8 位数据传输之后,
从机在第九个时钟有接受到一个应答信号。如果从机处于发送状态,从机作为
发送方会检查 RXAK 位来判断主机接收方是否愿意继续接收下一个字节。因此
发送方会一直发送数据,直到 RXAK 为“1”时才停止发送数据。这时,发送
方将释放 SDA 线,主机方可发出停止信号从而释放 I2C 总线。
121
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
I2C 总线通信
I2C 总线上的通信需要四步完成,一个起始信号,一个从机地址发送,一个数据
传输,还有一个停止信号。当起始信号被写入 I2C 总线时,总线上的所有从机
都会接收到这个起始信号并且被通知总线上即将有数据到达。数据的前 7 位是
从机地址,高位在前,低位在后。如果发出的地址和从机地址匹配,SIMC1 寄
存器的 HAAS 位会被置位,同时产生 SIM I2C 中断。进入中断服务程序后,系
统要检测 HAAS 位和 SIMTOF 位,以判断 I2C 总线中断是来自从机地址匹配,
还是来自 8 位数据传递完毕,或是来自 I2C 超时。在数据传递中,要注意的是,
在 7 位从机地址被发送后,接下来的一位,即第 8 位,是读 / 写控制位,该位
的值会反映到 SRW 位中。从机通过检测 SRW 位以确定自己是要进入发送模式
还是接收模式。在 I2C 总线开始传送数据前,需要先初始化 I2C 总线,初始化
I2C 总线步骤如下:
● 步骤 1
设置 SIMC0 寄存器中 SIM2~SIM0 位为“110”和 SIMEN 位为“1”,以使能
I2C 总线。
● 步骤 2
向 I2C 总线地址寄存器 SIMA 写入从机地址。
● 步骤 3
设置 SIME 位,以使能 SIM 中断。
Start
SET SIM[2:0]=110
SET SIMEN
Write Slave
Address to SIMA
No
I2C Bus
Interrupt?
Yes
CLR SIME
Poll SIMF to decide
when to go to I2C Bus ISR
SET SIME
Wait for Interrupt
Go to Main Program
Go to Main Program
I2C 总线初始化流程图
I2C 总线起始信号
起始信号只能由连接 I2C 总线的主机产生,而不是由从机产生。总线上的所有
从机都可以侦测到起始信号。如果有从机侦测到起始信号,则表明 I2C 总线处
于忙碌状态,并会置位 HBB。起始信号是指在 SCL 为高电平时,SDA 线上发
生从高到低的电平变化。
I2C 从机地址
总线上的所有从机都会侦测由主机发出的起始信号。发送起始信号后,紧接着
主机会发送从机地址以选择要进行数据传输的从机。所有在 I2C 总线上的从机
Rev.1.00
122
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
接收到 7 位地址数据后,都会将其与各自内部的地址进行比较。如果从机从主
机上接收到的地址与自身内部的地址相匹配,则会产生一个 SIM I2C 总线中断
信号。地址位接下来的一位为读 / 写状态位 ( 即第 8 位 ),将被保存到 SIMC1
寄存器的 SRW 位,从机随后发出一个低电平应答信号 ( 即第 9 位 )。当从机地
址匹配时,从机会将状态标志位 HAAS 置位。
SIM I2C 总线中断有三个中断源,当程序运行至中断服务子程序时,通过检测
HAAS 位和 SIMTOF 位,以判断 I2C 总线中断是来自从机地址匹配,还是来自
8 位数据传递完毕,或是来自 I2C 超时。当是从机地址匹配发生中断时,则从机
或是用于发送模式并将数据写进 SIMD 寄存器,或是用于接收模式并从 SIMD
寄存器中读取空值以释放 SCL 线。
I2C 总线读 / 写信号
SIMC1 寄存器的 SRW 位用来表示主机是要从 I2C 总线上读取数据还是要将数
据写到 I2C 总线上。从机通过检测该位以确定自己是作为发送方还是接收方。
当 SRW 置“1”,表示主机要从 I2C 总线上读取数据,从机则作为发送方,将
数据写到 I2C 总线;当 SRW 清“0”,表示主机要写数据到 I2C 总线上,从机
则做为接收方,从 I2C 总线上读取数据。
I2C 总线从机地址应答信号
主机发送呼叫地址后,当 I2C 总线上的任何从机内部地址与其匹配时,会发送
一个应答信号。此应答信号会通知主机有从机已经接收到了呼叫地址。如果主
机没有收到应答信号,则主机必须发送停止 (STOP) 信号以结束通信。当 HAAS
为高时,表示从机接收到的地址与自己内部地址匹配,则从机需检查 SRW 位,
以确定自己是作为发送方还是作为接收方。如果 SRW 位为高,从机须设置成
发送方,这样会置位 SIMC1 寄存器的 HTX 位。如果 SRW 位为低,从机须设
置成接收方,这样会清零 SIMC1 寄存器的 HTX 位。
I2C 总线数据和应答信号
在从机确认接收到从地址后,会进行 8 位宽度的数据传输。这个数据传输顺序
是高位在前,低位在后。接收方在接收到 8 位数据后必须发出一个应答信号
(“0”) 以继续接收下一个数据。如果从机发送方没接收到来自主机接收方的应
答信号,发送方将释放 SDA 线,此时主机方可发出 STOP 信号以释放 I2C 总线。
所传送的数据存储在 SIMD 寄存器中。如果设置成发送方,从机必须先将欲传
输的数据写到 SIMD 寄存器中;如果设置成接收方,从机必须从 SIMD 寄存器
读取数据。
当 接 收 方 想 要 继 续 接 收 下 一 个 数 据 时, 必 须 在 第 9 个 时 钟 发 出 应 答 信 号
(TXAK)。被设为发送方的从机将检测寄存器 SIMC1 中的 RXAK 位以判断是否
传输下一个字节的数据,如果从机不传输下一个字节,那么它将释放 SDA 线并
等待接收主机的停止信号。
Rev.1.00
123
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SCL
Slave Address
Start
1
SDA
1
0
1
0
1
SRW
ACK
1
0
0
Data
SCL
1
0
0
1
0
ACK
1
0
Stop
0
SDA
S=Start (1 bit)
SA=Slave Address (7 bits)
SR=SRW bit (1 bit)
M=Slave device send acknowledge bit (1 bit)
D=Data (8 bits)
A=ACK (RXAK bit for transmitter, TXAK bit for receiver, 1 bit)
P=Stop (1 bit)
S
SA SR M
D
A
D
A
……
S
SA SR M
D
A
D
A
……
P
注:当从机地址匹配时,单片机必须选择设置为发送模式还是接收模式。若设置为发送模式,
需写数据至 SIMD 寄存器;若设置为接收模式,需立即从 SIMD 寄存器中虚读数据以释
放 SCL 线。
I2C 通信时序图
Rev.1.00
124
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Start
No
No
No
HTX=1?
Yes
HAAS=1?
Yes
SIMTOF=1?
Yes
Yes
SET SIMTOEN
CLR SIMTOF
SRW=1?
No
RETI
Read from SIMD to
release SCL Line
RETI
Yes
SET HTX
CLR HTX
CLR TXAK
Write data to SIMD to
release SCL Line
Dummy read from SIMD
to release SCL Line
RETI
RETI
RXAK=1?
No
CLR HTX
CLR TXAK
Write data to SIMD to
release SCL Line
Dummy read from SIMD
to release SCL Line
RETI
RETI
I2C 总线 ISR 流程图
I2C 超时控制
超时功能可减少 I2C 接收错误的时钟源而引起的锁死问题。如果连接到 I2C 总
线的时钟源经过一段时间还未接收到,则在一定的超时周期后,I2C 电路和寄
存器将复位。超时计数器在 I2C 总线“START”和“地址匹配”条件下开始计
数,且在 SCL 下降沿清零。在下一个 SCL 下降沿到来之前,如果超时时间大
于 SIMTOC 寄存器指定的超时周期,则超时发生。I2C“STOP”条件发生时超
时功能终止。
Rev.1.00
125
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SCL
Start
Slave Address
1
SDA
0
1
1
0
1
SRW
ACK
1
0
0
I2C time-out
counter start
Stop
SCL
1
0
0
1
0
1
0
0
SDA
I2C time-out counter reset
on SCL negative transition
I2C 超时时序图
当 I2C 超 时 计 数 器 溢 出 时, 计 数 器 将 暂 停 计 数,SIMTOEN 位 被 清 零, 且
SIMTOF 位被置高以表明超时计数器中断发生。超时计数器中断使用的也是
SIM 中断向量。当 I2C 超时发生时,I2C 内部电路会被复位,寄存器也将发生如
下复位情况。
寄存器
SIMD, SIMA, SIMC0
SIMC1
I2C 超时发生后
保持不变
复位至 POR 值
超时发生后的 I2C 寄存器
SIMTOF 标志位由应用程序清零。共有 64 个超时周期,可通过 SIMTOC 寄存器的
SIMTOS5~SIMTOS0 位进行选择。超时周期可通过公式计算:((1~64)×(32/fSUB))。
由此可得超时周期范围为 1ms~64ms。
● SIMTOC 寄存器
Bit
7
6
5
4
3
2
1
0
Name SIMTOEN SIMTOF SIMTOS5 SIMTOS4 SIMTOS3 SIMTOS2 SIMTOS1 SIMTOS0
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
Rev.1.00
Bit 7
SIMTOEN:SIM I2C 超时控制位
0:除能
1:使能
Bit 6
SIMTOF:SIM I2C 超时标志位
0:超时未发生
1:超时发生
当发生超时,此位由硬件自动置位;此位必须通过应用程序清零。
Bit 5~0
SIMTOS5~SIMTOS0:SIM I2C 超时时间选择位
I2C 超时时钟源是 fSUB/32
I2C 超时时间计算方法:(SIMTOS[5:0]+1) × (32/fSUB)
126
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
UART 串行接口
该单片机具有一个全双工或半双工的异步串行通信接口,可以很方便的与其它
具有串行口的芯片通信。UART 具有许多功能特性,发送或接收串行数据时,
将数据组成一个 8 位或 9 位的数据块,连同数据特征位一并传输。具有检测数
据覆盖或帧错误等功能。UART 功能占用一个内部中断向量,当接收到数据或
数据发送结束,触发 UART 中断。
内置的 UART 功能包含以下特性:
● 全双工或半双工 ( 单线通信模式 ) 通用异步接收器 / 发送器
● 8 位或 9 位传输格式
● 奇校验、偶校验或无校验
● 1 位或 2 位停止位
● 8 位预分频的波特率发生器
● 奇偶、帧、噪声和溢出检测
● 支持地址匹配中断 ( 最后一位 = 1 )
● 独立的发送和接收使能
● 2-byte FIFO 接收缓冲器
● RX/TX 引脚唤醒功能
● 发送和接收中断
● 中断可由下列条件触发:
♦ 发送器为空
♦ 发送器空闲
♦ 接收完成
♦ 接收器溢出
♦ 地址匹配
Transmitter Shift Register (TSR)
MSB
…………………………
Receiver Shift Register (RSR)
LSB
TX Pin
TXR_RXR Register
fH
RX/TX Pin
MSB
LSB
TXR_RXR Register
Baud Rate
Generator
Data to be transmitted
…………………………
Buffer
Data received
MCU Data Bus
UART 数据传输方框图 – SWM=0
Rev.1.00
127
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Transmitter Shift Register (TSR)
MSB
…………………………
Receiver Shift Register (RSR)
LSB
RX/TX Pin
TX Pin
TXR_RXR Register
fH
RX/TX Pin
MSB
Baud Rate
Generator
Data to be transmitted
…………………………
LSB
TXR_RXR Register
Buffer
Data received
MCU Data Bus
UART 数据传输方框图 – SWM=1
UART 外部引脚
内部 UART 有两个外部引脚 TX 和 RX/TX,可与外部串行接口进行通信。TX
和 RX/TX 分别为 UART 发送脚和接收脚,与 I/O 口或其它功能共用引脚。在使
用 UART 功能前,应先通过相应的引脚共用功能选择寄存器,选择 TX 和 RX/
TX 引脚功能。当 UARTEN 和 TXEN/RXEN 位置高时,将自动设置这些 I/O 脚
或其它共用功能脚作为 TX 输出和 RX/TX 输入,并且除能 TX 和 RX/TX 引脚
上的上拉电阻功能。当 UARTEN、TXEN 或 RXEN 位清零除能 TX 或 RX/TX
引脚功能后,TX 或 RX/TX 引脚将处于浮空状态。这时 TX 或 RX/TX 引脚是否
连接内部上拉电阻是由相应的 I/O 上拉电阻控制位决定的。
UART 单线模式
UART 功能支持单线模式通信,通过 UCR3 寄存器中的 SWM 位选择。当设置
该位为高,UART 将工作在单线模式。在单线模式下,单个 RX/TX 引脚通过相
关控制位的不同设置即可完成数据的发送与接收。设置 RXEN 位为高,RX/TX
引脚用作接收引脚。将 RXEN 位清零,同时设置 TXEN 位为高,RX/TX 引脚
用作发送引脚。
在单线模式下建议不要将 RXEN 位和 TXEN 位同时设置为高。若 RXEN 位和
TXEN 位同时为高,RXEN 位具有更高的优先级,此时 UART 为接收器状态。
需特别注意的是,UART 章节所有内容是基于 UART 全双工通信来对 UART 功
能进行描述,相关的说明除引脚的使用外,对半双工通信 ( 单线模式 ) 同样适用。
在理解单线模式通信时,全双工通信中使用的 TX 引脚需取代为 RX/TX 引脚。
在单线模式下,通过合理的软件配置,数据也可以在 TX 引脚发送。因此数据
可通过 RX/TX 和 TX 引脚输出。
UART 数据传输方案
UART 数据传输方框图显示了 UART 的整体结构。需要发送的数据首先写入
TXR_RXR 寄存器,接着此数据被传输到发送移位寄存器 TSR 中,然后在波特
率发生器的控制下将 TSR 寄存器中数据一位位地移到 TX 引脚上,低位在前。
TXR_RXR 寄存器被映射到单片机的数据存储器中,而发送移位寄存器没有实
际地址,所以发送移位寄存器不可直接操作。
数据在波特率发生器的控制下,低位在前高位在后,从外部引脚 RX/TX 进入接
收移位寄存器 RSR。当数据接收完成,数据从接收移位寄存器移入可被用户程
序操作的 TXR_RXR 寄存器中。TXR_RXR 寄存器被映射到单片机数据存储器
中,而接收移位寄存器没有实际地址,所以接收移位寄存器不可直接操作。
需要注意的是,发送和接收都是共用同一个数据存储器地址的数据寄存器,即
TXR_RXR 寄存器。
Rev.1.00
128
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
UART 状态和控制寄存器
与 UART 功 能 相 关 的 有 6 个 寄 存 器。 其 它 包 括 控 制 UART 模 块 整 体 功 能 的
USR、UCR1、UCR2 和 UCR3 寄存器,控制波特率的 BRG 寄存器,管理发送
和接收数据的数据寄存器 TXR_RXR。
位
寄存器
名称
7
6
USR
PERR
NF
UCR1
UARTEN BNO
UCR2
TXEN
RXEN
UCR3
—
—
TXR_RXR TXRX7 TXRX6
BRG
D7
D6
5
FERR
PREN
BRGH
—
TXRX5
D5
4
OERR
PRT
ADDEN
—
TXRX4
D4
3
RIDLE
STOPS
WAKE
—
TXRX3
D3
2
RXIF
TXBRK
RIE
—
TXRX2
D2
1
TIDLE
RX8
TIIE
—
TXRX1
D1
0
TXIF
TX8
TEIE
SWM
TXRX0
D0
UART 寄存器列表
● USR 寄存器
寄存器 USR 是 UART 的状态寄存器,可通过程序读取。所有 USR 位是只读的。
详细解释如下:
Bit
Name
R/W
POR
Rev.1.00
7
PERR
R
0
6
NF
R
0
5
FERR
R
0
4
OERR
R
0
3
RIDLE
R
1
2
RXIF
R
0
1
TIDLE
R
1
0
TXIF
R
1
Bit 7
PERR:奇偶校验出错标志位
0:奇偶校验正确
1:奇偶校验出错
PERR 是奇偶校验出错标志位。若 PERR=0,奇偶校验正确;若 PERR=1,接收
到的数据奇偶校验出错。只有使能了奇偶校验此位才有效。可使用软件清除该
标志位,即先读取 USR 寄存器再读 TXR_RXR 寄存器来清除此位。
Bit 6
NF:噪声干扰标志位
0:没有受到噪声干扰
1:受到噪声干扰
NF 是噪声干扰标志位。若 NF=0,没有受到噪声干扰;若 NF=1,UART 接收数
据时受到噪声干扰。它与 RXIF 在同周期内置位,但不会与溢出标志位同时置
位。可使用软件清除该标志位,即先读取 USR 寄存器再读 TXR_RXR 寄存器将
清除此标志位。
Bit 5
FERR:帧错误标志位
0:无帧错误发生
1:有帧错误发生
FERR 是帧错误标志位。若 FERR=0,没有帧错误发生;若 FERR=1,当前的数据发
生了帧错误。可使用软件清除该标志位,即先读取 USR 寄存器再读 TXR_RXR
寄存器来清除此位。
Bit 4
OERR:溢出错误标志位
0:无溢出错误发生
1:有溢出错误发生
OERR 是溢出错误标志位,表示接收缓冲器是否溢出。若 OERR=0,没有溢出
错误;若 OERR=1,发生了溢出错误,它将禁止下一组数据的接收。可通过软
件清除该标志位,即先读取 USR 寄存器再读 TXR_RXR 寄存器将清除此标志位。
129
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Bit 3
RIDLE:接收状态标志位
0:正在接收数据
1:接收器空闲
RIDLE 是接收状态标志位。若 RIDLE=0,正在接收数据;若 RIDLE=1,接收
器空闲。在接收到停止位和下一个数据的起始位之间,RIDLE 被置位,表明
UART 空闲,RX/TX 脚处于逻辑高状态。
Bit 2
RXIF:接收寄存器状态标志位
0:TXR_RXR 寄存器为空
1:TXR_RXR 寄存器含有有效数据
RXIF 是接收寄存器状态标志位。当 RXIF=0,TXR_RXR 寄存器为空;当 RXIF=1,
TXR_RXR 寄存器接收到新数据。当数据从移位寄存器加载到 TXR_RXR 寄存
器中,如果 UCR2 寄存器中的 RIE=1,则会触发中断。当接收数据时检测到一
个或多个错误时,相应的标志位 NF、FERR 或 PERR 会在同一周期内置位。读
取 USR 寄存器再读 TXR_RXR 寄存器,如果 TXR_RXR 寄存器中没有新的数据,
那么将清除 RXIF 标志。
Bit 1
TIDLE:数据发送完成标志位
0:数据传输中
1:无数据传输
TIDLE 是数据发送完成标志位。若 TIDLE=0,数据传输中。当 TXIF=1 且数据
发送完毕或者暂停字被发送时,TIDLE 置位。TIDLE=1,TX 引脚空闲且处于逻
辑高状态。读取 USR 寄存器再写 TXR_RXR 寄存器将清除 TIDLE 位。数据字
符或暂停字就绪时,不会产生该标志位。
Bit 0
TXIF:发送数据寄存器 TXR_RXR 状态位
0:数据还没有从缓冲器加载到移位寄存器中
1:数据已从缓冲器加载到移位寄存器中 ( TXR_RXR 数据寄存器为空 )
TXIF 是发送数据寄存器为空标志位。若 TXIF=0,数据还没有从缓冲器加载到
移位寄存器中;若 TXIF=1,数据已从缓冲器中加载到移位寄存器中。读取 USR
存器再写 TXR_RXR 寄存器将清除 TXIF。当 TXEN 被置位,由于发送缓冲器未
满,TXIF 也会被置位。
● UCR1 寄存器
UCR1、UCR2 和 UCR3 是 UART 的三个控制寄存器,用来定义各种 UART 功能,
例如 UART 的使能与除能、奇偶校验控制、传输数据的长度和单线模式通信等
等。详细解释如下:
Bit
Name
R/W
POR
7
UARTEN
R/W
0
6
BNO
R/W
0
5
PREN
R/W
0
4
PRT
R/W
0
3
2
STOPS TXBRK
R/W
R/W
0
0
1
RX8
R
x
0
TX8
W
0
“x”:未知
Bit 7
Rev.1.00
UARTEN:UART 功能使能位
0:UART 除能,TX 和 RX/TX 脚处于浮空状态
1:UART 使能,TX 和 RX/TX 脚作为 UART 功能引脚
此位为 UART 的使能位。UARTEN=0,UART 除能,RX/TX 和 TX 处于浮空状
态;UARTEN=1,UART 使能,TX 和 RX/TX 将分别由 SWM 模式选择位以及
TXEN 和 RXEN 使能位控制。
当 UART 被除能将清除缓冲器,所有缓冲器中的数据将被忽略,另外波特率计
数器、错误和状态标志位被复位,TXEN、RXEN、TXBRK、RXIF、OERR、
FERR、PERR 和 NF 清 零, 而 TIDLE、TXIF 和 RIDLE 置 位,UCR1、UCR2、
UCR3 和 BRG 寄存器中的其它位保持不变。若 UART 工作时 UARTEN 清零,
所有发送和接收将停止,模块也将复位成上述状态。当 UARTn 再次使能时,它
将在上次配置下重新工作。
130
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Bit 6
BNO:发送数据位数选择位
0:8-bit 传输数据
1:9-bit 传输数据
BNO 是发送数据位数选择位。BNO=1,传输数据为 9 位;BNO=0,传输数据为
8 位。若选择了 9 位数据传输格式,RX8 和 TX8 将分别存储接收和发送数据的
第 9 位。
Bit 5
PREN:奇偶校验使能位
0:奇偶校验除能
1:奇偶校验使能
此位为奇偶校验使能位。PREN=1,使能奇偶校验;PREN=0,除能奇偶校验。
Bit 4
PRT:奇偶校验选择位
0:偶校验
1:奇校验
此位为奇偶校验选择位。PRT=1,奇校验;PRT=0,偶校验。
Bit 3
STOPS:发送器停止位的长度选择位
0:有一位停止位
1:有两位停止位
此位用来设置发送器停止位的长度。STOP=1,有两位停止位;STOP=0,只有
一位停止位。
Bit 2
TXBRK:暂停字发送控制位
0:没有暂停字要发送
1:发送暂停字
TXBRK 是暂停字发送控制位。TXBRK=0,没有暂停字要发送,TX 引脚正常
操作;TXBRK=1,将会发送暂停字,发送器将发送逻辑“0”。若 TXBRK 为
高,缓冲器中数据发送完毕后,发送器输出将至少保持 13 位宽的低电平直至
TXBRK 复位。
Bit 1
RX8:接收 9-bit 数据传输格式中的第 9 位 ( 只读 )
此位只有在传输数据为 9 位的格式中有效,用来存储接收数据的第 9 位。BNO
是用来控制传输位数是 8 位还是 9 位。
Bit 0
TX8:发送 9-bit 数据传输格式中的第 9 位 ( 只写 )
此位只有在传输数据为 9 位的格式中有效,用来存储发送数据的第 9 位。BNO
是用来控制传输位数是 8 位还是 9 位。
● UCR2 寄存器
UCR2 是 UART 的第二个控制寄存器,它的主要功能是控制发送器、接收器以
及各种 UART 中断源的使能或除能。它也可用来控制波特率,使能接收唤醒和
地址侦测。详细解释如下:
Bit
Name
R/W
POR
Rev.1.00
7
TXEN
R/W
0
6
RXEN
R/W
0
5
4
3
BRGH ADDEN WAKE
R/W
R/W
R/W
0
0
0
2
RIE
R/W
0
1
TIIE
R/W
0
0
TEIE
R/W
0
Bit 7
TXEN:UART 发送使能位
0:UART 发送除能
1:UART 发送使能
此位为发送使能位。TXEN=0,发送将被除能,发送器立刻停止工作。另外发送
缓冲器将被复位,此时 TX 引脚将处于浮空状态。若 TXEN=1 且 UARTEN=1,
则发送将被使能,TX 引脚将由 UART 来控制。在数据传输时清除 TXEN 将中
止数据发送且复位发送器,此时 TX 引脚将处于浮空状态。
Bit 6
RXEN:UART 接收使能位
0:UART 接收除能
1:UART 接收使能
131
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
此位为接收使能位。RXEN=0,接收将被除能,接收器立刻停止工作。另外
接 收 缓 冲 器 将 被 复 位, 此 时 RX/TX 引 脚 将 处 于 浮 空 状 态。 若 RXEN=1 且
UARTEN=1,则接收将被使能,RX/TX 引脚将由 UART 来控制。在数据传输时
清除 RXEN 将中止数据接收且复位接收器,此时 RX/TX 引脚将处于浮空状态。
Rev.1.00
Bit 5
BRGH:波特率发生器高低速选择位
0:低速波特率
1:高速波特率
此位为波特率发生器高低速选择位,它和 BRG 寄存器一起控制 UART 的波特率。
BRGH=1,为高速模式;BRGH=0,为低速模式。
Bit 4
ADDEN:地址检测使能位
0:地址检测除能
1:地址检测使能
此位为地址检测使能和除能位。ADDEN=1,地址检测使能,此时数据的第 8 位
即 TXRX7 (BNO=0) 或第 9 位即 RX8 (BNO=1) 为高,那么接到的是地址而非数
据。若相应的中断使能且接收到的值最高位为 1,那么中断请求标志将会被置
位,若地址检测功能使能且最高位为 0,那么将不会产生中断且收到的数据也会
被忽略。
Bit 3
WAKE:RX/TX 脚下降沿唤醒 UART 功能使能位
0:RX/TX 脚下降沿唤醒 UART 功能除能
1:RX/TX 脚下降沿唤醒 UART 功能使能
此位用于控制 RX/TX 引脚下降沿时是否唤醒 UART 功能。此位仅当 UART 时
钟源 fH 关闭时有效。若 UART 时钟源 fH 还开启,则 RXn/TX 引脚唤醒 UART
功能无效。若此位置高且 UART 时钟 fH 关闭,当 RX/TX 引脚发生下降沿时会
产生 UART 唤醒请求。若相应的中断使能,将产生 RX/TX 引脚唤醒 UART 的
中断,以告知单片机使其通过应用程序开启 UART 时钟源 fH,从而唤醒 UART
功能。否则,若此位为低,即使 RX/TX 引脚发生下降沿也无法恢复 UART 功能。
Bit 2
RIE:接收中断使能位
0:接收中断除能
1:接收中断使能
此位为接收中断使能或除能位。若 RIE=1,当 OERR 或 RXIF 置位时,UART 的
中断请求标志置位;若 RIE=0,UART 中断请求标志不受 OERR 和 RXIF 影响。
Bit 1
TIIE:发送器空闲中断使能位
0:发送器空闲中断除能
1:发送器空闲中断使能
此位为发送器空闲中断的使能或除能位。若 TIIE=1,当发送器空闲触发 TIDLE
置位时,UART 的中断请求标志置位;若 TIIE=0,UART 中断请求标志不受
TIDLE 的影响。
Bit 0
TEIE:发送寄存器为空中断使能位
0:发送寄存器为空中断除能
1:发送寄存器为空中断使能
此位为发送寄存器为空中断的使能或除能位。若 TEIE=1,当发送器为空触发
TXIF 置位时,UART 的中断请求标志置位;若 TEIE=0,UART 中断请求标志不
受 TXIF 的影响。
132
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● UCR3 寄存器
UCR3 寄存器用于使能 UART 单线模式通信。顾名思义,在单线模式下只需要使
用一条线,RX/TX,在 UCR2 寄存器中的 RXEN 和 TXEN 位控制即可完成通信。
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
—
—
—
1
—
—
—
0
SWM
R/W
0
Bit 7~1
未定义,读为“0”
Bit 0
SWM:单线模式使能控制
0:除能,RX/TX 引脚仅用作 UART 接收功能
1:使能,RX/TX 引脚在 RXEN 和 TXEN 位控制下可用作接收或发送功能
需注意的是,单线模式使能时,若将 RXEN 和 TXEN 位同时设置为高,RX/TX
引脚用作接收功能。
● TXR_RXR 寄存器
TXR_RXR 寄存器是一个数据寄存器,用来储存 TX 引脚将要发送或 RX/TX 引
脚正在接收的数据。
Bit
Name
R/W
POR
7
6
5
4
3
2
1
0
TXRX7 TXRX6 TXRX5 TXRX4 TXRX3 TXRX2 TXRX1 TXRX0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
x
x
x
x
x
x
x
x
“x”:未知
Bit 7~0TXRX7~TXRX0:UART 发送 / 接收数据位 Bit 7 ~ Bit 0
● BRG 寄存器
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
D7~D0:波特率值
软件设置 UCR2 寄存器中的 BRGH 位 ( 设置波特率发生器的速度 ) 和 BRG 寄存
器 ( 设置波特率的值 ),一起控制 UART 的波特率。
注:若 BRGH=0,波特率 = fH/[64×(N+1)];
若 BRGH=1,波特率 = fH/[16×(N+1)]。
波特率发生器
UART 自身具有一个波特率发生器,通过它可以设定数据传输速率。波特率是
由一个独立的内部 8 位计数器产生,它由 BRG 寄存器和 UCR2 寄存器的 BRGH
位来控制。BRGH 是决定波特率发生器处于高速模式还是低速模式,从而决定
计算公式的选用。BRG 寄存器的值 N 可根据下表中的公式计算,N 的范围是 0
到 255。
UCR2 的 BRGH 位
波特率 (BR)
Rev.1.00
0
fH / [64 (N+1)]
133
1
fH / [16 (N+1)]
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
为了得到相应的波特率,首先需要设置 BRGH 来选择相应的计算公式从而算出
BRG 的值。由于 BRG 的值不连续,所以实际波特率和理论值之间有一个偏差。
下面举例怎样计算 BRG 寄存器中的值 N 和误差。
波特率和误差计算
若选用 4MHz 时钟频率且 BRGH=0,若期望的波特率为 4800,计算它的 BRG
寄存器的值 N,实际波特率和误差。
根据上表,波特率 BR=fH / [64 (N+1)]
转换后的公式 N=[fH / (BR×64)] - 1
带入参数 N=[4000000 / (4800×64)] - 1=12.0208
取最接近的值,十进制 12 写入 BRG 寄存器,实际波特率如下
BR=4000000 / [64 × (12+1)]=4808
因此,误差 = (4808 - 4800) / 4800=0.16%
UART 的设置与控制
UART 采用标准的不归零码传输数据,这种方法通常被称为 NRZ 法。它由 1 位
起始位,8 位或 9 位数据位和 1 位或者 2 位停止位组成。奇偶校验是由硬件自
动完成的,可设置成奇校验、偶校验和无校验三种格式。常用的数据传输格式
由 8 位数据位,1 位停止位,无校验组成,用 8、N、1 表示,它是系统上电的
默认格式。数据位数、停止位数和奇偶校验由 UCR1 寄存器的 BNO、PRT、
PREN 和 STOPS 设定。用于数据发送和接收的波特率由一个内部的 8 位波特率
发送器产生,数据传输时低位在前高位在后。尽管 UART 发送器和接收器在功
能上相互独立,但它们使用相同的数据传输格式和波特率,在任何情况下,停
止位是必须的。
UART 的使能和除能
UART 是由 UCR1 寄存器的 UARTEN 位来使能和除能的。若 UARTEN、TXEN
和 RXEN 都为高,则 TX 和 RX/TX 分别为 UART 的发送端口和接收端口。若
没有数据发送,TX 引脚默认状态为高电平。
UARTEN 清零将除能 TX 和 RX/TX,通过设置相关引脚共用控制位,这两个引
脚可用作普通 I/O 口或其它引脚共用功能。当 UART 被除能时将清空缓冲器,
所有缓冲器中的数据将被忽略,另外一些使能控制、错误标志和状态标志将被
复位,如 TXEN、RXEN、TXBRK、RXIF、OERR、FERR、PERR 和 NF 清零,
而 TIDLE、TXIF 和 RIDLE 置位,UCR1、UCR2、UCR3 和 BRG 寄存器中的其
它位保持不变。若 UART 工作时 UARTEN 清零,所有发送和接收将停止,模
块也将复位成上述状态。当 UART 再次使能时,它将在上次配置下重新工作。
数据位、停止位位数以及奇偶校验的选择
数据传输格式由数据长度、是否校验、校验类型、地址位以及停止位长度组成。
它们都是由 UCR1 寄存器的各个位控制的。BNO 决定数据传输是 8 位还是 9 位;
PRT 决定校验类型;PREN 决定是否选择奇偶校验;而 STOPS 决定选用 1 位还
是 2 位停止位。下表列出了各种数据传输格式。若地址检测功能使能,地址位,
即数据字节的最高位,用来确定此帧是地址还是数据。停止位的长度和数据位
的长度无关,且只有发送器需设置停止位长度。接收器只接收一个停止位。
Rev.1.00
134
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
起始位
8 位数据位
1
1
1
9 位数据位
1
1
1
数据位
地址位
校验位
停止位
8
7
7
0
0
1
0
1
0
1
1
1
9
8
8
0
0
1
0
1
0
1
1
1
发送和接收数据格式
下面是传输 8 位和 9 位数据的波形。
Start
Bit
Parity Bit
Bit 0
Bit 1
Bit 2
Bit 3
Bit 4
Bit 5
Bit 6
Bit 7
Bit 6
Bit 7
8-bit data format
Start
Bit
Bit 0
Bit 1
Bit 2
Bit 3
Bit 4
Bit 5
Stop
Bit
Next
Start
Bit
Parity Bit
Bit 8
Stop
Bit
Next
Start
Bit
9-bit data format
UART 发送器
UCR1 寄存器的 BNO 位是控制数据传输的长度。BNO=1 其长度为 9 位,第
9 位 MSB 存储在 UCR1 寄存器的 TX8 中。发送器的核心是发送移位寄存器
TSR,它的数据由发送寄存器 TXR_RXR 提供,应用程序只须将发送数据写
入 TXR_RXR 寄存器。上组数据的停止位发出前,TSR 寄存器禁止写入。如
果还有新的数据要发送,一旦停止位发出,待发数据将会从 TXR_RXR 寄存器
加载到 TSR 寄存器。TSR 不像其它寄存器一样映射到数据存储器,所以应用
程序不能对其进行读写操作。TXEN=1,发送使能,但若 TXR_RXR 寄存器没
有数据或者波特率没有设置,发送器将不会工作。先写 TXR_RXR 寄存器再置
高 TXEN 也会触发发送。当发送器使能,若 TSR 寄存器为空,数据写入 TXR_
RXR 寄存器将会直接加载到 TSR 寄存器中。发送器工作时,TXEN 清零,发送
器将立刻停止工作并且复位,此时通过设置相关引脚共用控制位,TX 引脚用
作普通 I/O 口或其它引脚共用功能。
发送数据
当 UART 发送数据时,数据从移位寄存器中移到 TX 引脚上,其低位在前高位
在后。在发送模式中,TXR_RXR 寄存器在内部总线和发送移位寄存器间形成一
个缓冲。如果选择 9 位数据传输格式,最高位 MSB 取自 UCR1 寄存器的 TX8。
启动数据发送的步骤如下:
● 正确地设置 BNO、PRT、PREN 和 STOPS 位以确定数据长度、校验类型和停
止位长度。
● 设置 BRG 寄存器,选择期望的波特率。
● 置高 TXEN,使能 UART 发送器且使 TX 作为 UART 的发送端。
● 读取 USR 寄存器,然后将待发数据写入 TXR_RXR 寄存器。注意,此步骤会
清除 TXIF 标志位。
Rev.1.00
135
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
如果要发送多个数据只需重复上一步骤。
当 TXIF=0 时,数据将禁止写入 TXR_RXR 寄存器。可以通过以下步骤来清除
TXIF:
1. 读取 USR 寄存器
2. 写 TXR_RXR 寄存器
只读标志位 TXIF 由 UART 硬件置位。若 TXIF=1,TXR_RXR 寄存器为空,其
它数据可以写入而不会覆盖之前的数据。若 TEIE=1,TXIF 标志位会产生中断。
在数据传输时,写 TXR_RXR 指令会将待发数据暂存在 TXR_RXR 寄存器中,
当前数据发送完毕后,待发数据被加载到发送移位寄存器中。当发送器空闲
时,写 TXR_RXR 指令会将数据直接加载到 TSR 寄存器中,数据传输立刻开始
且 TXIF 置位。当发送完停止位或暂停帧后,表示一帧数据已发送完毕,此时
TIDLE 位将被置位。
可以通过以下步骤来清除 TIDLE:
1. 读取 USR 寄存器
2. 写 TXR_RXR 寄存器
清除 TXIF 和 TIDLE 软件执行次序相同。
发送暂停字
若 TXBRK=1 保持时间超过 [(BRG+1)×tH] 且 TIDLE=1,下一帧将会发送暂停字。
它是由一个起始位、13×N (N=1, 2……) 位逻辑 0 组成。置位 TXBRK 将会发送
暂停字,而清除 TXBRK 将产生停止位,传输暂停字不会产生中断。需要注意
的是,暂停字至少 13 位宽。若 TXBRK 持续为高,那么发送器会一直发送暂停
字;当应用程序将 TXBRK 清零后,发送器结束最后一帧暂停字的发送后接着
发送一位或两位停止位。最后一帧暂停字的结尾自动为高电平,以确保下一帧
数据起始位的检测。
UART 接收器
UART 接收器支持 8 位或者 9 位数据接收。若 BNO=1,数据长度为 9 位,而
最高位 MSB 存放在 UCR1 寄存器的 RX8 中。接收器的核心是串行移位寄存器
RSR。RX/TX 引脚上的数据送入数据恢复器中,它在 16 倍波特率的频率下工
作,而串行移位器工作在正常波特率下。当在 RX/TX 引脚上检测到停止位,若
TXR_RXR 寄存器为空,数据从 RSR 寄存器中加载到 TXR_RXR 寄存器。RX/
TX 引脚上的每一位数据会被采样三次以判断其逻辑状态。RSR 不像其它寄存
器一样映射在数据存储器,所以应用程序不能对其进行读写操作。
接收数据
当 UART 接收数据时,数据低位在前高位在后,连续地从 RX/TX 引脚进入移
位寄存器。TXR_RXR 寄存器在内部总线和接收移位寄存器间形成一个缓冲。
TXR_RXR 寄存器是一个两层的 FIFO 缓冲器,它能保存两帧数据的同时接收第
三帧数据,应用程序必须保证在接收完第三帧前读取 TXR_RXR 寄存器,否则
忽略第三帧数据并且发生溢出错误。
启动数据接收的步骤如下:
● 正确地设置 BNO、PRT 和 PREN 位以确定数据长度和校验类型。
● 设置 BRG 寄存器,选择期望的波特率。
● 置高 RXEN,使能 UART 接收器且使 RX/TX 引脚作为 UART 的接收端。
Rev.1.00
136
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
此时接收器被使能并检测起始位。
接收数据将会发生如下事件:
● 当 TXR_RXR 寄存器中包含有效数据时,USR 寄存器中的 RXIF 位将会置位,
溢出错误发生之前至多还有一帧数据可读。
● 若 RIE=1,数据从 RSR 寄存器加载到 TXR_RXR 寄存器中将产生中断。
● 若接收器检测到帧错误、噪声干扰错误、奇偶出错或溢出错误,那么相应的
错误标志位置位。
可以通过如下步骤来清除 RXIF:
1. 读取 USR 寄存器
2. 读取 TXR_RXR 寄存器
接收暂停字
UART 接收任何暂停字都会当作帧错误处理。接收器只根据 BNO 位的设置外加
一个停止位来确定一帧数据的长度。若暂停字位数大于 BNO 位指定的长度外
加一个停止位,接收器认为接收已完毕,RXIF 和 FERR 置位,TXR_RXR 寄存
器清 0,若相应的中断允许且 RIDLE 为高将会产生中断。如果检测到较长的暂
停信号,接收器会将此信号视为包含一个起始位、数据位和无效的停止位的数
据帧并且置位 FERR 标志位。在下个开始位到来之前,接收器必须等待一个有
效的停止位。接收器不会假定线上的暂停信号是下一个开始位。暂停字只会被
认为包含信息 0 且会置位 FERR 标志位。暂停字将会加载到缓冲器中,在接收
到停止位前不会再接收数据,没有检测到停止位也会置位只读标志位 RIDLE。
UARTn 接收到暂停字会产生以下事件:
● 帧错误标志位 FERR 置位。
● TXR_RXR 寄存器清零。
● OERR、NF、PERR、RIDLE 或 RXIF 可能会置位。
空闲状态
当 UART 接收数据时,即在起始位和停止位之间,USR 寄存器的接收状态标志
位 RIDLE 清零。在停止位和下一帧数据的起始位之间,RIDLE 被置位,表示
接收器空闲。
接收中断
USR 寄存器的只读标志位 RXIF 由接收器的边沿触发置位。若 RIE=1,数据从
移位寄存器 RSR 加载到 TXR_RXR 寄存器时产生中断,同样地,溢出也会产生
中断。
接收错误处理
UART 会产生几种接收错误,下面部分将描述各错误以及怎样处理。
溢出 – OERR 标志
TXR_RXR 寄存器是一个两层的 FIFO 缓冲器,它能保存两帧数据的同时接收第
三帧数据,应用程序必须保证在接收完第三帧前读取 TXR_RXR 寄存器,否则
发生溢出错误。
产生溢出错误时将会发生以下事件:
Rev.1.00
137
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● USR 寄存器中 OERR 被置位。
● TXR_RXR 寄存器中数据不会丢失。
● RSR 寄存器数据将会被覆盖。
● 若 RIE=1,将会产生中断。
先读取 USR 寄存器再读取 TXR_RXR 寄存器可将 OERR 清零。
噪声干扰 – NF 标志
数据恢复时多次采样可以有效的鉴别出噪声干扰。当检测到数据受到噪声干扰
时将会发生以下事件:
● 在 RXIF 上升沿,USR 寄存器中只读标志位 NF 置位。
● 数据从 RSR 寄存器加载到 TXR_RXR 寄存器中。
● 不产生中断,但此位置位发生在 RXIF 置位产生中断的同周期内。
先读取 USR 寄存器再读取 TXR_RXR 寄存器可将 NF 清零。
帧错误 – FERR 标志
若在停止位上检测到 0,USR 寄存器中只读标志 FERR 置位。若选择两位停止
位,此两位都必须为高,否则将置位 FERR。此标志位同接收的数据一起缓冲
且可被任何复位清零。
奇偶校验错误 – PERR 标志
若接收到数据出现奇偶校验错误,USR 寄存器中只读标志 PERR 置位。只有使
能了奇偶校验,选择了校验类型,此标志位才有效。此标志位同接收的数据一
起缓冲且可被任何复位清零。注意,在读取相应的数据之前必须先访问 USR 寄
存器中的 FERR 和 PERR 错误标志位。
UART 中断结构
几个独立的 UART 条件可以产生一个 UART 中断。当所有条件满足时,会产生
一个低脉冲信号。发送寄存器为空、发送器空闲、接收器数据有效、溢出、地
址检测和 RX/TX 引脚唤醒都会产生中断。若总中断使能位及相应的中断控制位
使能且堆栈未满,程序将会跳转到相应的中断向量执行中断服务程序,而后再
返回主程序。其中四种情况,若其 UCR2 寄存器中相应中断允许位被置位,则
USR 寄存器中对应中断标志位将产生 UART 中断。发送器相关的两个中断情况
有各自对应的中断允许位,而接收器相关的两个中断情况共用一个中断允许位。
这些允许位可用于禁止个别的 UART 中断源。
地 址 检 测 也 是 UART 的 中 断 源, 它 没 有 相 应 的 标 志 位, 若 UCR2 寄 存 器 中
ADDEN=1,当检测到地址将会产生 UART 中断。RX/TX 引脚唤醒也可以产
生 UART 中断,它没有相应的标志位,当 UART 时钟源 fH 关闭且 UCR2 中的
WAKE 和 RIE 位被置位,RX/TX 引脚上有下降沿时会产生 UART 中断。应注
意 RX/TX 唤醒中断发生时将会有一定时间的延迟,即系统上电时间,从而允许
振荡器在系统恢复正常操作之前重启并达到稳定。
注意,USR 寄存器标志位为只读状态,软件不能对其进行设置,和其它一些
中断一样,在进入相应中断服务程序时也不能清除这些标志位。这些标志位仅
在 UART 特定动作发生时才会自动被清除,详细解释见 UART 寄存器章节。
UART 中断的使能或除能可由中断控制寄存器中的相关中断使能控制位控制,
以决定是否屏蔽或响应 UART 模块的中断请求。
Rev.1.00
138
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
USR Register
UCR2 Register
Transmitter Empty
Flag TXIF
TEIE
Transmitter Idle
Flag TIDLE
TIIE
Receiver Overrun
Flag OERR
RIE
1
WAKE
UART Interrupt
Request Flag
URF
0
1
EMI
URE
Interrupt signal
to MCU
0
1
ADDEN
Receiver Data
Available RXIF
RX/TX
Pin Wake-up
0
0
0
1
1
0
TXRX7 if BNO=0
RX8 if BNO=1
1
UCR2 Register
UART 中断框图
地址检测模式
置位 UCR2 寄存器中的 ADDEN 将启动地址检测模式。若此位为“1”,可产生
接收数据有效中断,其请求标志位为 RXIF。若 ADDEN 位使能,只有在接收到
数据最高位为“1”才会产生中断请求,注意 URE 和 EMI 中断使能位也要使能
才会产生中断。地址的最高位为第 9 位 (BNO=1) 或第 8 位 (BNO=0),若此位为
高,则接收到的是地址而非数据。只有接收的数据的最后一位为高才会产生中
断。若 ADDEN 除能,每接收到一个有效数据便会置位 RXIF,而不用考虑数据
的最后一位。地址检测和奇偶校验在功能上相互排斥,若地址检测模式使能,
为了确保操作正确,必须将奇偶校验使能位清零以除能奇偶校验。
ADDEN
0
1
9th Bit (BNO=1)
8th Bit (BNO=0)
0
1
0
1
产生 UART 中断
√
√
×
√
ADDEN 位功能
UART 暂停和唤醒
UART 时钟 fH 关闭后 UART 将停止运行。当传送数据时 UART 时钟 fH 关闭,
发送将停止直到 UART 时钟再次使能。同样地,当接收数据时单片机进入空
闲或休眠模式,数据接收也会停止。当单片机进入空闲或休眠模式,USR、
UCR1、UCR2、UCR3、TXR_RXR 以及 BRG 寄存器都不会受到影响。建议在
单片机进入空闲或休眠模式前先确保数据发送或接收已完成。
UART 具备 RX/TX 引脚的唤醒功能,由 UCR2 寄存器中 WAKE 位控制。当单
片机进入空闲或休眠模式且 UART 时钟 fH 关闭时,若 WAKE 位、UART 使能
位 UARTEN、接收器使能位 RXEN 和接收器中断使能位 RIE 都被置位,则 RX/
TX 引脚的下降沿可触发产生 RX/TX 引脚唤醒 UART 的中断。唤醒后系统需延
时一段时间才能正常工作,在此期间,RX/TX 引脚上的任何数据将被忽略。
Rev.1.00
139
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
若要唤醒并产生 UART 中断,除了唤醒使能控制位和接收中断使能控制位需置
位外,总中断使能位 EMI 和 UART 中断使能控制位 URE 也必须置位;若这两
个控制位没有被置位,那么单片机将可以被唤醒但不会产生中断。同样唤醒后
系统需一定的延时才能正常工作,然后才会产生 UART 中断。
稳压器 – LDO
该单片机内置一个稳压器,LDO。REGC 寄存器可控制稳压器工作在四种工作
模式下。在高阻抗模式下,LDO 进入省电模式,VOREG 引脚浮空。在 VDD 模
式下,VDD 会绕过 LDO 电路直接通过 VOREG 引脚输出。在第三种或第四种
模式下,LDO 开启,当其输入电压超过设定电压 0.4V 或以上时,LDO 将在
VOREG 引脚上固定输出 3.0V 或 3.3V 电压。
VDD
LDO Regulator
VOREG
REGEN1~REGEN0
LDO 稳压器
● REGC 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
—
—
—
1
0
REGEN1 REGEN0
R/W
R/W
0
0
Bit 7~2
未定义,读为“0”
Bit 1~0
REGEN1~REGEN0:稳压器 on/off 控制
00:稳压器关闭,高阻抗模式,VOREG 引脚处于浮空状态
01:稳压器关闭,VDD 将绕过稳压器直接通过 VOREG 引脚输出
10:稳压器开启,VOREG 引脚输出 3.0V
11:稳压器开启,VOREG 引脚输出 3.3V
140
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
可编程增益放大器和开关电容滤波器
该单片机包含两个可编程增益放大器 PGA 和一个开关电容滤波器 SCF,它是一
个可用于传感器信号处理的带通滤波器。
PGAEN
PGAA0[2:0]
Power: VOREG
PGAA1[4:0]
D/A
SVIP
+
SVIN
-
PGAVREF[4:0]
PGA1
SCFR
VSCFR (to ADC)
CPEN
PGA2G
D/A
SLPF
PGA2
SCFLF[1:0]
VPGAO2 (to ADC)
SCFA[5:0]
D/A
SCFC
PGA2VREF[7:0]
SCFVREF[4:0]
SCFPGA
VSCF (to ADC)
SCFADSF
SCFADC
Divider
SCF Interrupt
fSYS
SCFCKD[7:0]
SCFCKP[2:0]
PGA 和 SCF 方框图
PGA 和 SCF 操作
整个 PGA 和 SCF 电路的使能 / 除能都是由 PGAC3 寄存器中的 PGAEN 位控制
的。当该位为低时,PGA 和 SCF 电路将关闭,这对电池供电的设备是一个重
要的考虑因素。注意,使用 PGA 和 SCF 功能时,用户必须在使能稳压器后等
待约 15ms,然后再设置 PGA 和 SCF 的相关选项,等待约 400ms 后再开始 A/D
转换,这样才能得到正确的 A/D 转换结果。
PGA1
PGA1 输入电压范围为 -20mV~100mV。PGA1 增益被分为两级。第一级增益
G11, 为 8、16、32、64 或 128 五 个 值 之 一, 由 PGAC0 寄 存 器 的 PGAA02~
PGAA00 位选择。第二级增益 G12,为 (32~95)/32,由 PGAC1 寄存器的 PGAA14
~PGAA10 位 选 择。PGA1 失 调 电 压 VOF1=(PGAVREF[4:0]/32)×VOREG, 是 32 个
离散的值之一,由 PGAC0 寄存器的 PGAVREF4~PGAVREF0 位控制。PGA1 输
出电压 VPGAO1 可根据下式计算:
VPGAO1=(V+ - V-) × G11 × G12 + VOF1
V+ 和 V- 分别表示 SVIP 和 SVIN 引脚上的输入电压。VPGAO1 还有另外一个名称
VSCFR,如上面方框图中所示。
Rev.1.00
141
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
PGA2
PGA2 的增益 G2 定为 1 或 2,由 PGAC3 寄存器的 PGA2G 位选择。PGA2 失调
电压 VOF2 可根据下式计算:
VOF2=VOREG × PGA2VREF[7:0] / 256
PGA2 输出电压 VPGAO2 可根据下式计算:
VPGAO2=(VPGAO1 × G2) - VOF2
VPGAO2 提供给 A/D 转换器作为血压测量信号。
开关电容滤波器 – SCF
该 单 片 机 包 含 一 个 带 通 开 关 电 容 滤 波 器。SCF PGA 输 入 电 压 VIN 的 范 围 为
30µV~150µV。SCF 低通滤波器截止频率有四个:9Hz、10Hz、11Hz 和 12Hz,
可通过 SCFC0 寄存器的 SCFLF1~SCFLF0 位选择。高通滤波器截止频率固定为
0.7Hz。SCF 也具有 PGA 功能,其增益为 56~308 中的 64 个离散的值之一,可
通过 SCFC0 寄存器的 SCFA5~SCFA0 位控制。SCF 增益可根据下式计算:
SCF 增益 = 56 + 4 × SCFA[5:0]
SCF 需 要 一 个 约 488Hz 的 时 钟, 时 钟 源 来 自 系 统 时 钟 分 频, 由 SCFC1 和
SCFCKD 寄存器中的位设置。SCF 时钟可根据下式计算:
SCF 时钟 = fSCF / (SCFCKD[7:0] + 1)
fSCF 等于 fSYS/8,fSYS/16,fSYS/32,fSYS/64,fSYS/128,fSYS/256,fSYS/512 或 fSYS/1024,
由 SCFC1 寄存器的 SCFCKP2~SCFCKP0 位选择。
SCF 信号自动进行 A/D 转换
SCF 连接到 A/D 转换器,可以设置 SCF 输出信号自动执行 A/D 转换。当 SCF
PGA 自动触发 A/D 转换使能 / 除能位 SCFADC 为高,A/D 转换器会自动选择
SCF 输出为输入通道并覆盖其它应用程序的 A/D 通道选择配置。此时由应用程
序启动的 A/D 转换仍然有效。如果由 SCF 或应用程序启动的 A/D 转换还在进行,
而另一个 A/D 启动请求 ( 即 START ) 又发起,那么以最后一次 A/D 请求优先。
下图为自动 A/D 转换进程与 SCF 时钟的关系。
SCF clock (488Hz)
SCF auto trigger ADC
/ SCFADSF flag
Interval when SCF output is available for A/D conversion
Here the SCF output is automatically converted by
the A/D converter and generates an SCF interrupt.
SCF 信号自动进行 A/D 转换时序图
PGA 和 SCF 控制寄存器
PGA 和 SCF 电路由一系列寄存器控制。这些寄存器控制的功能包括增益选择、
失调电压选择、总体电路的使能 / 除能控制、时钟预分频器 / 除频选择,等等。
Rev.1.00
142
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
位
寄存器
名称
7
6
5
4
3
2
1
0
PGAC0
PGAA02
PGAA01
PGAA00
PGAVREF4
PGAVREF3
PGAVREF2
PGAVREF1
PGAVREF0
CPEN
D6
D5
PGAA14
PGAA13
PGAA12
PGAA11
PGAA10
PGAC1
PGAC2
PGA2VREF7 PGA2VREF6 PGA2VREF5 PGA2VREF4 PGA2VREF3 PGA2VREF2 PGA2VREF1 PGA2VREF0
PGAC3
PGAEN
PGA2G
—
SCFVREF4
SCFVREF3
SCFVREF2
SCFVREF1
SCFVREF0
SCFC0
SCFLF1
SCFLF0
SCFA5
SCFA4
SCFA3
SCFA2
SCFA1
SCFA0
SCFC1
—
SCFADSF
SCFADC
SCFCKP2
SCFCKP1
SCFCKP0
—
—
SCFCKD
SCFCKD7
SCFCKD6
SCFCKD5
SCFCKD4
SCFCKD3
SCFCKD2
SCFCKD1
SCFCKD0
PGA 和 SCF 控制寄存器列表
● PGAC0 寄存器
Bit
7
6
5
4
3
2
1
0
Name PGAA02 PGAA01 PGAA00 PGAVREF4 PGAVREF3 PGAVREF2 PGAVREF1 PGAVREF0
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~5
PGAA02~PGAA00:PGA1 第一级增益 (G11) 选择位
000:×8
001:×16
010:×32
011:×64
100:×128
101:×128
110:×128
111:×128
Bit 4~0
PGAVREF4~PGAVREF0:PGA1 失调电压设置
PGA1 失调电压 VOF1=(PGAVREF[4:0] / 32) × VOREG
● PGAC1 寄存器
Bit
Name
R/W
POR
7
CPEN
R/W
0
6
D6
R/W
0
5
D5
R/W
0
4
3
2
1
0
PGAA14 PGAA13 PGAA12 PGAA11 PGAA10
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
Bit 7
CPEN:PGA1 斩波器使能 / 除能控制位
0:除能
1:使能
当此位置高,PGA1 斩波器使能时,系统将为斩波器操作提供 12kHz 至 PGA1。
Bit 6~5
保留位,不可用,须固定为“00”
Bit 4~0
PGAA14~PGAA10:PGA1 第二级增益 (G12) 设置
G12=1 + 3×PGAA1[4:0] / 32
● PGAC2 寄存器
Bit
Name
R/W
POR
Bit 7~0
Rev.1.00
7
6
5
4
3
2
1
0
PGA2VREF7 PGA2VREF6 PGA2VREF5 PGA2VREF4 PGA2VREF3 PGA2VREF2 PGA2VREF1 PGA2VREF0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
PGA2VREF7~PGA2VREF0:PGA2 失调电压设置
PGA2 失调电压 VOF2=VOREG × PGA2VREF[7:0] / 256
143
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● PGAC3 寄存器
Bit
7
6
Name PGAEN PGA2G
R/W
R/W
R/W
POR
0
0
5
—
—
—
4
3
2
1
0
SCFVREF4 SCFVREF3 SCFVREF2 SCFVREF1 SCFVREF0
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
Bit 7
PGAEN:PGA 和 SCF 电路使能 / 除能控制位
0:除能
1:使能
当此位为 0 时,包括 PGA1、PGA2 和 SCF PGA 在内的整个电路将进入省电模式。
Bit 6
PGA2G:PGA2 增益 (G2) 选择位
0:×2
1:×1
Bit 5
未定义,读为“0”
Bit 4~0
SCFVREF4~SCFVREF0:SCF PGA 失调电压设置
SCF PGA 失调电压 = (SCFVREF[4:0] / 32) × VOREG
● SCFC0 寄存器
Bit
Name
R/W
POR
7
6
5
SCFLF1 SCFLF0 SCFA5
R/W
R/W
R/W
0
0
0
4
SCFA4
R/W
0
3
SCFA3
R/W
0
2
SCFA2
R/W
0
Bit 7~6
SCFLF1~SCFLF0:SCF PGA 低通滤波器截止频率选择位
带通滤波器 – 3dB 选项:
00:9Hz
01:10Hz
10:11Hz
11:12Hz
Bit 5~0
SCFA5~SCFA0:SCF PGA 增益选择位
SCF 增益 = 56 + 4 × SCFA[5:0]
1
SCFA1
R/W
0
0
SCFA0
R/W
0
1
—
—
—
0
—
—
—
● SCFC1 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
—
—
—
6
5
4
3
2
SCFADSF SCFADC SCFCKP2 SCFCKP1 SCFCKP0
R
R/W
R/W
R/W
R/W
0
0
0
0
0
Bit 7
未定义,读为“0”
Bit 6
SCFADSF:SCF PGA 输出信号状态位
0:未就绪
1:就绪
此位用于指示 SCF PGA 输出状态。当此位为 0 时,SCF PGA 处于转换阶段,
无有效的输出信号供 A/D 转换。当此位由 0 变为 1 时,表示 SCF PGA 输出就绪,
SCFF 中断标志位置高产生中断请求。此时,若 SCFADC 位已置高,还会自动
触发 A/D 转换器启动 SCF PGA 信号转换。
Bit 5
SCFADC:SCF PGA 输出信号自动触发 A/D 转换使能 / 除能控制位
0:除能
1:使能
若此位为 1,当 SCF PGA 输出就绪时,SCFADSF 位自动触发 A/D 转换。若此
位为 0,此自动转换模式除能。
144
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Bit 4~2
SCFCKP2~SCFCKP0:SCF PGA 时钟分频
fSCF=
000:fSYS/8
001:fSYS/16
010:fSYS/32
011:fSYS/64
100:fSYS/128
101:fSYS/256
110:fSYS/512
111:fSYS/1024
Bit 1~0
未定义,读为“0”
● SCFCKD 寄存器
Bit
Name
R/W
POR
Bit 7~0
7
6
5
4
3
2
1
0
SCFCKD7 SCFCKD6 SCFCKD5 SCFCKD4 SCFCKD3 SCFCKD2 SCFCKD1 SCFCKD0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
SCFCKD7~SCFCKD0:SCF PGA 电路时钟分频
SCF PGA 时钟大约为 488Hz。
这 8 位可将 fSCF 时钟进行 1~256 分频。
可根据公式计算:SCF 时钟 = fSCF / (SCFCKD[7:0]+1)
传感器恒定电流发生器电路
该单片机包含一个恒定电流发生器,可用于驱动压力桥接传感器。它由一个可
编程参考电压和一个运算放大器组成的。
恒定电流发生器操作
恒定电流发生器必须先使能,其方式是将 CCVREFC 寄存器中的 CCVREFEN
位置高。如果该位为 0,恒定电流电路将关闭,这对电池供电的设备是一个重
要的考虑因素。恒定电流参考电压电路输出共有 16 个选项,从 0.2V~0.95V,
间隔 0.05V,可通过 CCVREFC 寄存器的 CCVREF3~CCVREF0 位选择。这个
电压可连接到 CCVREF 引脚使用,为了稳定,该引脚需连接一个电容。这个电
压可提供给运算放大器作为其正相输入端。再连接一个外部电阻到运算放大器
的反相输入端便可设定一个恒定电流,请参考应用电路图。
CCVREFEN
Power: VOREG
CCVREF
VCCREF
0.2V~0.95V
+
-
CCVIN
OPA
CCVIP
恒定电流发生器方框图
Rev.1.00
145
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
压力传感器恒定电流控制寄存器
● CCVREFC 寄存器
Bit
7
6
Name CCVREFEN BATDEN
R/W
R/W
R/W
POR
0
0
5
—
—
—
4
—
—
—
3
2
1
0
CCVREF3 CCVREF2 CCVREF1 CCVREF0
R/W
R/W
R/W
R/W
0
0
0
0
Bit 7
CCVREFEN:传感器恒定电流电路使能 / 除能控制位
0:除能
1:使能
当此位等于 0,包括恒定电流发生器 OPA 和参考电压发生电路在内的整个恒定
电流电路都将进入省电模式。当此位等于 1,上述相关电路使能。
Bit 6
BATDEN:电池电压检测电路使能 / 除能控制位
0:除能
1:使能
此位用于使能或除能 VDD 偏压电阻。当此位为 0,偏压电阻除能,当此位为 1,
偏压电阻使能。
Bit 5~4
未定义,读为“0”
Bit 3~0
CCVREF3~CCVREF0:传感器恒定电流发生器参考电压选择位
0000:0.2V
0001:0.25V
0010:0.3V
0011:0.35V
0100:0.4V
0101:0.45V
0110:0.5V
0111:0.55V
1000:0.6V
1001:0.65V
1010:0.7V
1011:0.75V
1100:0.8V
1101:0.85V
1110:0.9V
1111:0.95V
电池电压检测
该单片机包含电池电压检测功能,由 CCVREFC 寄存器中的 BATDEN 位控制。
电池检测电压可作为 A/D 转换器内部输入信号由 A/D 转换器进行转换。
VDD
BATDEN
10K
VBATD
(to ADC)
3.3K
Rev.1.00
146
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
A/D 转换器
对于大多数电子系统而言,处理现实世界的模拟信号是共同的需求。为了完全
由单片机来处理这些信号,首先需要通过 A/D 转换器将模拟信号转换成数字信
号。将 A/D 转换器电路集成入单片机,可有效的减少外部器件,随之而来,具
有降低成本和减少器件空间需求的优势。
A/D 转换器简介
此单片机包含一个多通道的 A/D 转换器,它们可以直接接入外部模拟信号 ( 来
自传感器或其它控制信号 ) 或内部模拟信号并直接将这些信号转换成 12 位的数
字量。选择转换外部或内部模拟信号由 SAINS2~SAINS0 位和 SACS3~SACS0
位共同控制。若需要转换外部模拟信号时,需要先正确设置相关的引脚共用功
能选择寄存器,再通过 SAINS2~SAINS0 位和 SACS3~SACS0 位选择所需转换
的通道。若需要转换内部信号,SAINS2~SAINS0 位和 SACS3~SACS0 位需合
理设置以避免外部通道输入。关于 A/D 输入信号的详细描述请参考“A/D 转换
寄存器介绍”和“A/D 转换器输入信号”两节内容。
外部输入通道
4:AN0~AN3
A/D 通道选择位
SAINS2~SAINS0,
SACS3~SACS0
内部输入信号
4:VPGAO2, VSCF,
VSCFR, VBATD
下图显示了 A/D 转换器内部结构和相关的寄存器。
VOREG
fSYS
Pin-shared
Selection
SACS3~SACS0
SACKS2~
SACKS0
AN0
÷ 2N
(N=0~7)
ADCEN
VSS
A/D Clock
AN1
SADOL
A/D Converter
AN2
ADRFS
A/D Data
Registers
SADOH
AN3
A/D Reference Voltage
SAINS2~SAINS0
START
ADBZ
ADCEN
SAVRS1~SAVRS0
VPGAO2
VOREG
VSCF
VREF
VSCFR
VBATD
Pin-shared
Selection
A/D 转换器结构
A/D 转换寄存器介绍
A/D 转换器的所有工作由四个寄存器控制。一对只读寄存器来存放 A/D 转换器
12 位转换值。剩下两个控制寄存器设置 A/D 转换器的操作和控制功能。
Rev.1.00
147
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
位
寄存器名称
SADOL
(ADRFS=0)
SADOL
(ADRFS=1)
SADOH
(ADRFS=0)
SADOH
(ADRFS=1)
SADC0
SADC1
7
6
5
4
3
2
1
0
D3
D2
D1
D0
—
—
—
—
D7
D6
D5
D4
D3
D2
D1
D0
D11
D10
D9
D8
D7
D6
D5
D4
—
—
—
—
D11
D10
D9
D8
START
SAINS2
ADBZ ADCEN ADRFS SACS3 SACS2 SACS1 SACS0
SAINS1 SAINS0 SAVRS1 SAVRS0 SACKS2 SACKS1 SACKS0
A/D 转换寄存器列表
A/D 转换器数据寄存器 – SADOL, SADOH
此 A/D 转换器每次转换值为 12 位,需要两个数据寄存器存放转换结果,一个
高字节寄存器 SADOH 和一个低字节寄存器 SADOL。在 A/D 转换完毕后,单
片机可以直接读取这些寄存器以获得转换结果。由于只使用到 16 位中的 12 位,
转换结果的数据存储格式由 SADC0 寄存器的 ADRFS 位控制,如下表所示。未
使用的位读为“0”。当 A/D 转换器除能时,数据寄存器的值将保持不变。
ADRFS
0
1
SADOH
SADOL
7
6 5 4 3
2
1 0 7 6 5 4 3 2 1 0
D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0
0
0 0 0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
A/D 转换器数据寄存器
A/D 转换器控制寄存器 – SADC0, SADC1
寄存器 SADC0 和 SADC1 用来控制 A/D 转换器的功能和操作。这些 8 位的寄存
器定义包括选择连接至内部 A/D 转换器的模拟通道,数字化数据格式,A/D 时
钟源,并控制和监视 A/D 转换器的忙碌状态。由于每个单片机只包含一个实际
的模数转换电路,因此这些外部和内部模拟信号中的每一个都需要分别被发送
到转换器。SADC0 寄存器中的 SACS3~SACS0 位用于选择哪个外部模拟输入通
道被连接到内部 A/D 转换器。SADC1 寄存器中的 SAINS2~SAINS0 位用于选择
外部模拟输入通道或内部模拟信号被连接到内部 A/D 转换器。
引脚共用功能选择寄存器的相关位用来定义 I/O 端口中的哪些引脚为 A/D 转换
器的模拟输入,哪些引脚不作为 A/D 转换输入。当引脚作为 A/D 输入时,其原
来的 I/O 或其它引脚共用功能消失,此外,其内部上拉电阻也将自动断开。
Rev.1.00
148
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● SADC0 寄存器
Bit
Name
R/W
POR
7
START
R/W
0
6
5
4
3
ADBZ ADCEN ADRFS SACS3
R
R/W
R/W
R/W
0
0
0
0
2
SACS2
R/W
0
1
SACS1
R/W
0
0
SACS0
R/W
0
Bit 7
START:启动 A/D 转换位
0→1→0:启动
此位用于启动 A/D 转换过程。通常此位为低,但如果设为高再被清零,将启动
A/D 转换过程。
Bit 6
ADBZ:A/D 转换忙碌标志位
0:A/D 转换结束或未开始转换
1:A/D 转换中
此位用于表明 A/D 转换过程是否完成。当 START 位由低变为高再变为低时,
ADBZ 位为高,表明 A/D 转换已启动。A/D 转换结束后,此位被清零。
Bit 5
ADCEN:A/D 转换器使能 / 除能控制位
0:除能
1:使能
此位控制 A/D 内部功能。该位被置高将使能 A/D 转换器。如果该位设为低将关
闭 A/D 转换器以降低功耗。当 A/D 转换器除能时,A/D 数据寄存器 SADOH 和
SADOL 的内容将保持不变。
Bit 4
ADRFS:A/D 转换数据格式选择位
0:A/D 转换数据格式 → SADOH=D[11:4];SADOL=D[3:0]
1:A/D 转换数据格式 → SADOH=D[11:8];SADOL=D[7:0]
此位控制存放在两个 A/D 数据寄存器中的 12 位 A/D 转换结果的格式。细节方
面请参考 A/D 数据寄存器章节。
Bit 3~0
SACS3~SACS0:A/D 转换器外部模拟通道输入选择位
0000:AN0
0001:AN1
0010:AN2
0011:AN3
0100~1111:不存在的通道,输入浮空
● SADC1 寄存器
Bit
7
6
5
4
3
2
1
0
Name SAINS2 SAINS1 SAINS0 SAVRS1 SAVRS0 SACKS2 SACKS1 SACKS0
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~5
Rev.1.00
SAINS2~SAINS0:A/D 转换器输入信号选择位
000:外部信号 – 外部模拟通道输入
001:内部信号 – 内部 PGA2 输出,VPGAO2
010:内部信号 – 内部 SCFPGA 输出,VSCF
011:内部信号 – 内部 PGA1 输出,VSCFR
100:内部信号 – 内部电池检测电压,VBATD
101~111:外部信号 – 外部模拟通道输入
当 SAINS2~SAINS0 被设为“001~100”时,选择转换内部模拟信号。当选择内
部模拟信号时,应将 SACS3~SACS0 位设置为“0100~1111”中的任意值选择浮
空状态。否则,已选择的外部输入通道会和内部模拟信号一起连接至内部 A/D
转换器,这将导致无法预期的损害。
149
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Bit 4~3
SAVRS1~SAVRS0:A/D 转换器参考电压选择位
00:外部 VREF 引脚
01:内部稳压器输出,VOREG
1x:外部 VREF 引脚
这两位用于选择 A/D 转换器参考电压。当 SAVRS1~SAVRS0 为被设为“01”时,
选择内部稳压器输出作为参考电压源。当选择内部稳压器输出作为参考电压时,
外部 VREF 引脚需通过引脚共用控制位选择作为其它共用的引脚功能。否则,
外部 VREF 输入电压会和内部稳压器输出电压一起连接至内部 A/D 转换器。
Bit 2~0
SACKS2~SACKS0:A/D 时钟源选择位
000:fSYS
001:fSYS/2
010:fSYS/4
011:fSYS/8
100:fSYS/16
101:fSYS/32
110:fSYS/64
111:fSYS/128
这三位用于选择 A/D 转换器的时钟源。
A/D 转换器参考电压
A/D 转换器参考电压来自稳压器输出 VOREG 或外部参考源引脚 VREF,通过
SAVRS1 和 SAVRS0 位选择。当 SAVRS1~SAVRS0 位为“01”时,A/D 转换器
参考电压来自稳压器输出。当 SAVRS1~SAVRS0 位为“01”以外的其它值时,
A/D 转换器参考电压来自 VREF 引脚。由于 VREF 引脚与其它功能共用,当选
择 VREF 引脚作为参考电压源时,需合理设置相关引脚共用控制位选择 VREF
引脚功能且除能其它共用引脚功能。然而,当稳压器输出被选作参考电压源时,
相关的引脚共用控制位不可选择 VREF 参考电压输入功能,避免 VREF 引脚电
压跟稳压器输出电压一起接入 A/D 转换器。模拟输入值一定不能超过所选的参
考电压值。
SAVRS[1:0]
00, 10, 11
01
参考电压源
说明
VREF 引脚 外部 A/D 转换器参考电压引脚 VREF
VOREG
内部稳压器输出电压
A/D 转换器参考电压选择
A/D 转换器输入信号
所有的 A/D 模拟输入引脚都与 I/O 口及其它功能共用。使用 PxS0 和 PxS1 寄存
器中的相应位,可以将它们设置为 A/D 转换器模拟输入脚或具有其它功能。如
果对应的引脚作为 A/D 转换输入,那么它原来的引脚功能将除能。通过这种方
式,引脚的功能可由程序来控制,灵活地切换引脚功能。如果将引脚设为 A/D
输入,则通过寄存器编程设置的所有上拉电阻会自动断开。请注意,端口控制
寄存器不需要为使能 A/D 输入而先设定为输入模式,当 A/D 输入功能选择位使
能 A/D 输入时,端口控制寄存器的状态将被重置。
若 SAINS2~SAINS0 位为“000”或“100~111”,则选择转换外部模拟输入信号,
具体外部通道由 SACS3~SACS0 位决定。若 SAINS2~SAINS0 位为“001~100”,
则选择转换内部模拟信号,VPGAO2、VSCF、VSCFR 或 VBATD。当选择内部模拟信号
时,应将 SACS3~SACS0 位设置为“0100~1111”中的任意值选择浮空状态。
Rev.1.00
150
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SAINS[2:0]
000, 101~111
001
010
011
100
SACS[3:0] 输入信号
说明
0000~0011 AN0~AN3 外部模拟通道输入
0100~1111
—
不存在的通道,输入浮空
0100~1111
VPGAO2 内部 PGA2 输出
0100~1111
VSCF
内部 SCFPGA 输出
0100~1111
VSCFR
内部 PGA1 输出
0100~1111
VBATD
内部电池检测电压
A/D 转换器输入信号选择
A/D 转换器操作
SADC0 寄存器中的 START 位,用于开启 A/D 转换。当单片机设置此位从逻辑
低到逻辑高,然后再到逻辑低,就会开始一个模数转换周期。
SADC0 寄存器中的 ADBZ 位用于表明模数转换过程是否正在进行。A/D 转换
成功启动后,ADBZ 位会被单片机自动置为“1”。在转换周期结束后,ADBZ
位会自动置为“0”。此外,也会置位中断控制寄存器内相应的 A/D 中断请求
标志位,如果中断使能,就会产生对应的内部中断信号。A/D 内部中断信号将
引导程序跳转到相应的 A/D 内部中断地址。如果 A/D 内部中断被禁止,可以让
单片机轮询 SADC0 寄存器中的 ADBZ 位,检查此位是否被清除,作为另一种
侦测 A/D 转换周期结束的方法。
A/D 转换器的时钟源为系统时钟 fSYS 或其分频,而分频系数由 SADC1 寄存
器 中 的 SACKS2~SACKS0 位 决 定。 虽 然 A/D 时 钟 源 是 由 系 统 时 钟 fSYS 和
SACKS2~SACKS0 位决定,但可选择的最大 A/D 时钟源则有一些限制。由于允
许的 A/D 时钟周期 tADCK 的范围为 0.5µs~10µs,所以选择系统时钟速度时就必
须小心。例如,如果系统时钟速度为 8MHz 时,SACKS2~SACKS0 位不能设为
“000”、“001”或“111”。必须保证设置的 A/D 转换时钟周期不小于时钟
周期的最小值或大于时钟周期的最大值,否则将会产生不准确的 A/D 转换值。
使用者可以参考下面的表格,被标上星号 * 的数值是不允许的。
A/D 时钟周期 (tADCK)
fSYS
SACKS[2:0] SACKS[2:0] SACKS[2:0] SACKS[2:0] SACKS[2:0] SACKS[2:0] SACKS[2:0] SACKS[2:0]
=000
=001
=010
=011
=100
=101
=110
=111
(fSYS)
(fSYS/2)
(fSYS/4)
(fSYS/8)
(fSYS/16)
(fSYS/32)
(fSYS/64)
(fSYS/128)
1MHz
1μs
2μs
4μs
8μs
16μs *
32μs *
64μs *
128μs *
2MHz
500ns
1μs
2μs
4μs
8μs
16μs *
32μs *
64μs *
4MHz
250ns *
500ns
1μs
2μs
4μs
8μs
16μs *
32μs *
8MHz
125ns *
250ns *
500ns
1μs
2μs
4μs
8μs
16μs *
A/D 时钟周期范例
SADC0 寄存器中的 ADCEN 位用于控制 A/D 转换电路电源的开启和关闭。该
位必须置高以开启 A/D 转换器电源。当设置 ADCEN 位为高开启 A/D 转换器内
部电路时,在 A/D 转换成功开启前需一段延时。即使通过相关引脚共用控制位
选择无引脚作为 A/D 输入,如果 ADCEN 设为“1”,那么仍然会产生功耗。
因此在功耗敏感的应用中,当未使用 A/D 转换器功能时,建议设置 ADCEN 为
低以减少功耗。
A/D 转换率及时序图
一个完整的 A/D 转换包含两部分,数据采样和数据转换。数据采样时间定义为
tADS,需要 4 个 A/D 时钟周期,而数据转换需要 12 个 A/D 时钟周期。所以一个
Rev.1.00
151
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
完整的 A/D 转换时间,tADC,一共需要 16 个 A/D 时钟周期。
最大 A/D 转换率 = A/D 时钟周期 ÷ 16
下列时序图表示模数转换过程中不同阶段的图形与时序。由应用程序控制开始
A/D 转换过程后,单片机的内部硬件就会开始进行转换,在这个过程中,程序
可以继续其它功能。A/D 转换时间为 16tADCK,tADCK 为 A/D 时钟周期。
tON2ST
ADCEN
off
on
off
A/D sampling time
tADS
A/D sampling time
tADS
Start of A/D conversion
Start of A/D conversion
End of A/D
conversion
End of A/D
conversion
on
START
ADBZ
SACS[3:0]
(SAINS[2:0]=000B)
0011B
A/D channel
switch
0010B
tADC
A/D conversion time
0000B
tADC
A/D conversion time
Start of A/D conversion
0001B
tADC
A/D conversion time
A/D 转换时序图 – 外部模拟通道输入
A/D 转换步骤
下面概述实现 A/D 转换过程的各个步骤。
● 步骤 1
通过 SADC1 寄存器中的 SACKS2~SACKS0 位,选择所需的 A/D 转换时钟。
● 步骤 2
将 SADC0 寄存器中的 ADCEN 位置高使能 A/D 转换器。
● 步骤 3
通过 SADC1 寄存器中的 SAINS2~SAINS0 位,选择连接至内部 A/D 转换器的
信号。
若选择外部通道输入,接着执行步骤 4。
若选择内部模拟信号,接着执行步骤 5。
● 步骤 4
若 通 过 SAINS2~SAINS0 位 选 择 A/D 输 入 信 号 来 自 外 部 通 道 输 入, 应 设
置 相 关 的 引 脚 共 用 控 制 位 将 相 关 引 脚 规 划 为 A/D 输 入 引 脚。 通 过 设 置
SACS3~SACS0 位选择对应外部通道接至 A/D 转换器。接着执行步骤 6。
● 步骤 5
选择内部模拟信号前,应将 SACS3~SACS0 设置为“0100~1111”中的任意值
以断开外部通道。设置 SAINS2~SAINS0 位选择 A/D 输入信号来自内部模拟
信号。接着执行步骤 6。
● 步骤 6
通过 SADC1 寄存器中的 SAVRS1~SAVRS0 位选择参考电压。若选择内部参
考电压 VOREG,应合理设置相关引脚共用控制位除能外部参考输入引脚功能。
● 步骤 7
设置 SADC0 寄存器中的 ADRFS 位选择 A/D 转换器输出数据格式。
Rev.1.00
152
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● 步骤 8
如果要使用中断,则中断控制寄存器需要正确地设置,以确保 A/D 中断功
能是激活的。总中断控制位 EMI 需要置位为“1”,以及 A/D 转换器中断位
ADE 也需要置位为“1”。
● 步骤 9
现在可以通过设置 SADC0 寄存器中的 START 位从“0”到“1”再回到“0”,
开始模数转换的过程。
● 步骤 10
如果 A/D 转换正在进行中,ADBZ 位会被置为逻辑高。A/D 转换完成后,
ADBZ 位会被置为逻辑低,并可从 SADOH 和 SADOL 寄存器中读取输出数据。
注:若使用轮询 SADC0 寄存器中 ADBZ 位的状态的方法来检查转换过程是否
结束时,则中断使能的步骤可以省略。
编程注意事项
在编程时,如果 A/D 转换器未使用,通过设置 SADC0 寄存器中的 ADCEN 为低,
关闭 A/D 内部电路以减少电源功耗。此时,不考虑输入脚的模拟电压,内部 A/D
转换器电路不产生功耗。如果 A/D 转换器输入脚用作普通 I/O 脚,必须特别注
意,输入电压为无效逻辑电平也可能增加功耗。
A/D 转换功能
单片机含有一组 12 位的 A/D 转换器,它们转换的最大值可达 FFFH。由于
模拟输入最大值等于实际 A/D 转换器参考电压值,VREF,因此每一位可表示
VREF/4096 的模拟输入值。
1 LSB = VREF ÷ 4096
通过下面的等式可估算 A/D 转换器输入电压值:
A/D 输入电压 = A/D 数字输出值 × VREF ÷ 4096
下图显示 A/D 转换器模拟输入值和数字输出值之间理想的转换功能。除了数字
化数值 0,其后的数字化数值会在精确点之前的 0.5 LSB 处改变,而数字化数
值的最大值将在 VREF 之前的 1.5 LSB 处改变。注意,这里的 VREF 电压指代的是
通过 SAVRS 位段选择的实际 A/D 转换器参考电压。
1.5 LSB
FFFH
FFEH
FFDH
A/D Conversion
Result
03H
0.5 LSB
02H
01H
0
1
2
3
4093 4094 4095 4096
VREF
4096
Analog Input Voltage
理想的 A/D 转换功能
Rev.1.00
153
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
A/D 转换应用范例
下面两个范例程序用来说明怎样使用 A/D 转换。第一个范例是轮询 SADC0 寄
存器中的 ADBZ 位来判断 A/D 转换是否完成;第二个范例则使用中断的方式判
断。
范例 1:使用查询 ADBZ 的方式来检测转换结束
clr ADE
;
mov a,0Bh
mov SADC1,a
;
;
;
set ADCEN
mov a,03h
;
mov PCS0,a
mov a,20h
mov SADC0,a
;
;
:
:
start_conversion:
clr START
;
set START
;
clr START
;
:
polling_EOC:
sz ADBZ
;
;
jmp polling_EOC
;
:
mov a,SADOL
;
mov SADOL_buffer,a
;
mov a,SADOH
;
mov SADOH_buffer,a
;
:
jmp start_conversion
;
disable ADC interrupt
select A/D input signal for external channel,
reference voltage from internal regulator
output and fSYS/8 as A/D clock
setup PCS0 to configure pin AN0
enable A/D and connect AN0 channel to A/D
converter
high pulse on start bit to initiate conversion
reset A/D
start A/D
poll the SADC0 register ADBZ bit to detect end
of A/D conversion
continue polling
read
save
read
save
low byte conversion result value
result to user defined register
high byte conversion result value
result to user defined register
start next A/D conversion
范例 2:使用中断的方式来检测转换结束
clr ADE
;
mov a, 0Bh
mov SADC1,a
;
;
;
set ADCEN
mov a, 03h
;
mov PCS0,a
mov a,20h
mov SADC0,a
;
;
:
Start_conversion:
clr START
;
set START
;
clr START
;
clr ADF
;
set ADE
;
set EMI
;
Rev.1.00
disable ADC interrupt
select A/D input signal for external channel,
reference voltage from internal regulator
output and fSYS/8 as A/D clock
setup PCS0 to configure pin AN0
enable A/D and connect AN0 channel to A/D
converter
high pulse on START bit to initiate conversion
reset A/D
start A/D
clear ADC interrupt request flag
enable ADC interrupt
enable global interrupt
154
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
:
:
ADC_ISR:
mov acc_stack,a
mov a,STATUS
mov status_stack,a
:
mov a, SADOL
mov SADOL_buffer,a
mov a, SADOH
mov SADOH_buffer,a
:
EXIT_INT_ISR:
mov a,status_stack
mov STATUS,a
mov a,acc_stack
reti
; ADC interrupt service routine
; save ACC to user defined memory
; save STATUS to user defined memory
;
;
;
;
read
save
read
save
low byte conversion result value
result to user defined register
high byte conversion result value
result to user defined register
; restore STATUS from user defined memory
; restore ACC from user defined memory
LCD 驱动
对于设计中带有 LCD 功能的大批量应用,选择定制而非较昂贵的基于字符的
显示方式可以有效地降低成本。然而,驱动此类定制的显示器需要振幅及时间
可变的 COM 和 SEG 信号,且需很多特殊的考虑以正确地操作 LCD。此单片机
有内部 LCD 信号产生电路,可以自动地产生时间与振幅可变的信号直接驱动
LCD,与用户 LCD 的接口连接也相当容易。
此单片机含有驱动使能 LCD 各种类型显示的选项。下表显示此单片机带有的功
能选项。
驱动数目
32×4
30×6
占空比
1/4
1/6
偏压电平
1/3
1/3
偏压类型
R
R
波形类型
A或B
A或B
LCD 选项
LCD 显示存储器
数据存储器中有一部分区域是专门为 LCD 的显示数据而保留,即显示存储区。
单片机内部显示驱动电路会自动读取任何写入此处的数据并据此产生 LCD 驱动
信号。因此任何写入 LCD 存储器的数据,会立即映射到连接单片机的 LCD 显
示器上。
该单片机为 LCD 显示提供一个嵌入式数据存储区域。这个区域位于 Sector 4 的
00H~1FH。如果使用间接寻址方式,当要存取 LCD 存储器时,首先要将 MP1H
或 MP2H 的值设为“04H”来选择对 Sector 4 操作。此后,用户可以通过 MP1L
或 MP2L 使用间接寻址方式来对存储区进行操作。选择了 Sector 4 之后,使用
MP1L 或 MP2L 可以对地址范围为 00H~1FH 的存储区操作,就可以直接对显示
存储区进行读或者写的操作了。直接寻址显示存储区仅能通过扩展指令来实现。
当数据被写入显示数据区域,这些数据自动地被 LCD 驱动器读取来产生相应的
LCD 驱动信号。把“1”或“0”写入显示存储器的相应位,可以控制显示或不
显示。下图为显示存储器和 LCD 显示模块之间的映射关系。
未使用到的 LCD 存储器位不可用于通用数据存储器。例如,若 LCD 选择的是
1/4 占空比 (4COM),则 COM4~COM7 对应的 RAM 都读为“0”。
Rev.1.00
155
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
b7 b6 b5 b4 b3 b2 b1 b0
b7 b6 b5 b4 b3 b2 b1 b0
400H
SEG 0
400H
SEG 0
401H
SEG 1
401H
SEG 1
402H
SEG 2
402H
SEG 2
403H
SEG 3
403H
SEG 3
41CH
SEG 28
41CH
SEG 28
41DH
SEG 29
41DH
SEG 29
41EH
SEG 30
41EH
SEG 30
41FH
SEG 31
41FH
SEG 31
COM 0
COM 1
COM 2
COM 3
COM 4
COM 5
COM 6
COM 7
COM 0
COM 1
COM 2
COM 3
COM 4
COM 5
COM 6
COM 7
: can not be used
: can not be used
30 SEG × 6 COM
32 SEG × 4 COM
LCD 存储器映射图
LCD 时钟源
LCD 时钟是由内部时钟源 fSUB 通过内部分频电路进行 8 分频获得,其中,fSUB
的时钟源通过 SCC 寄存器的 FSS 位选择来自于内部 LIRC 振荡器或者 LXT 振
荡器。该方法用于产生理想的频率为 4kHz 的 LCD 时钟,以获得更好的 LCD
显示效果。
fSUB 时钟源
LIRC
LXT
LCD 时钟频率
4kHz
4kHz
LCD 时钟源
LCD 寄存器
LCD 控制寄存器位于数据存储区,用于设置 LCD 驱动器的各种特性。该单片
机有两个 LCD 控制寄存器,LCDCP 和 LCDC。
LCDCP 寄存器中的 DTYC 位用于选择 LCD 占空比。LCDCP 寄存器中的 LCDPR
位用于选择 PLCD 或内部充电泵稳压器来提供电源给 R 型 LCD COM 和 SEG
引脚。同一个寄存器中的 CPVS2~CPVS0 位用于选择一个合适的充电泵输出电
压电平给 R 型 LCD。
LCDC 寄存器中的 TYPE 位是用于选择 A 型或 B 型的 LCD 控制信号。寄存器
LCDC 中的 LCDIS1~LCDIS0 位用于选择内部偏置电流来提供 R 型 LCD 适当的
偏压。在应用中,选择匹配的 LCD 面板也可以降低偏压电流。LCDC 寄存器中
的 LCDEN 位只有当单片机工作于快速模式、低速模式或空闲模式时才可以控
制 LCD 的使能与除能。如果驱动处于休眠模式,则显示将一直处于除能状态。
Rev.1.00
156
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
寄存器
名称
LCDC
LCDCP
位
7
TYPE
—
6
—
—
5
—
—
4
—
DTYC
3
2
1
0
—
LCDIS1 LCDIS0 LCDEN
LCDPR CPVS2 CPVS1 CPVS0
LCD 寄存器列表
● LCDC 寄存器
Bit
Name
R/W
POR
7
TYPE
R/W
0
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
1
0
LCDIS1 LCDIS0 LCDEN
R/W
R/W
R/W
0
0
0
Bit 7
TYPE:LCD 波形类型选择
0:A 型
1:B 型
Bit 6~3
未使用,读为“0”
Bit 2~1
LCDIS1~LCDIS0:R 型 LCD 偏置电流选择 (VA=VPLCD=VDD,1/3 bias)
00:25μA
01:50μA
10:100μA
11:200μA
Bit 0
LCDEN:LCD 使能控制
0:除能
1:使能
在快速、低速和空闲模式下,LCD 使能 / 除能可由此位控制。在休眠模式下,
LCD 总是关闭。
● LCDCP 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
—
—
—
6
—
—
—
5
—
—
—
4
DTYC
R/W
0
3
2
LCDPR CPVS2
R/W
R/W
0
0
1
CPVS1
R/W
0
Bit 7~5
未使用,读为“0”
Bit 4
DTYC:LCD 占空比选择
0:1/4 Duty (COM0~COM3)
1:1/6 Duty (COM0~COM5)
未使用到的 COM 引脚允许被配置为普通 I/O 或其它共用引脚功能。
Bit 3
LCDPR:R 型 LCD 电源选择
0:PLCD 引脚
1:内部充电泵
当此位为 0,R 型 LCD 电源来自 PLCD 引脚,其内部充电泵除能。
Bit 2~0
CPVS2~CPVS0:充电泵输出电压选择
000:3.3V
001:3.0V
010:2.7V
011:4.5V
100:4.3V
101:4.0V
110:3.3V
111:3.3V
157
0
CPVS0
R/W
0
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LCD 电压源和偏压
LCD 驱动器需要几种电压值以产生时间振幅可变的信号。此单片机 LCD 驱动
器支持 R 型偏压。
R 型偏压
对于 R 型偏压,LCD 电压源可通过 LCDCP 寄存器中的 LCDPR 位选择来自
PLCD 引脚或内部充电泵稳压器,以产生内部偏压电压。PLCD 引脚上的来源
可以是单片机的电压源也可以是其它电压源。
对 于 R 型 1/3 偏 压 的 结 构, 要 用 到 VSS、VA、VB 和 VC 四 种 电 压 值。VA 等 于
VPLCD,VB 等于 VPLCD × 2/3,VC 等于 VPLCD × 1/3。
不 同 的 内 部 偏 压 电 流 可 由 LCDC 寄 存 器 中 的 LCDIS1~LCDIS0 位 来 选 择。
VMAX 引脚需接至 VDD 与 PLCD 中的最高电压处。
VPLCD
LCDEN
VA
(=VPLCD)
R
VB
(=VPLCD × 2/3)
R
VC
(=VPLCD × 1/3)
R
VSS
R Type 1/3 Bias
注:1. 当 LCD 除能时,其直流路径将被关闭。
2. 当 LCDPR=1 时,PLCD 引脚应该外接一个 4.7μF 的电容;当 LCDPR=0 时,PLCD 引
脚无需外接电容。
R 型偏压产生示意图
内部充电泵
对于 R 型 LCD,COMs 和 SEGs 引脚可通过外部 PLCD 引脚或内部充电泵电路
上电,由 LCDCP 寄存器中的 LCDPR 位决定。如果 LCDPR 为高,LCD 驱动器
电源由内部充电泵电路提供。有四种充电泵输出电压电平,通过 LCDCP 寄存
器中的 CPVS1~CPVS0 位选择。如果使用内部充电泵电路,应该连接一个外部
4.7μF 电容到外部 PLCD 引脚以使输出电压稳定。
Rev.1.00
158
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
VMAX
LCDPR
VDD
PLCD
Charge Pump
PLCD
CPVS[1:0]
LCD
COM / SEG
SEGs
COMs
内部充电泵电路
LCD 复位状态
LCDC 寄存器中的 LCDEN 位取反后,与休眠功能进行“OR”逻辑或运算的结
果可产生 LCD 内部复位。清除 LCDEN 位也会将 LCD 复位。若进入休眠模式前,
即使 LCDEN 位为 1 使能 LCD 驱动,进入休眠模式后 LCD 仍被复位。
当 LCDEN 位设置为 1 使能 LCD 驱动功能接着发生单片机复位,则 LCD 驱动
器将被复位,且在单片机复位过程中 COM 和 SEG 输出都处于浮空状态。LCD
复位操作所需时间为 tRSTD+tSST,这两个参数值可参考系统上电时间电气特性。
MCU 复位
No
No
No
Yes
休眠模式
Off
Off
On
x
LCDEN
1
0
x
x
LCD 复位
No
Yes
Yes
Yes
COM & SEG 电平
正常操作
逻辑低
逻辑低
浮空
注:1. 这里所说的 MCU 复位情况不包含 WDT 在空闲 / 休眠模式时的溢出复位。
2.“x”:无关。
LCD 复位状态
LCD 驱动输出
LCD 驱动器提供的 COM 和 SEG 输出数目,以及偏压和波形类型选项,取决于
LCD 控制位的设置。
由于 LCD 基本性质的缘故,它们的像素点只能加上 AC 电压,如果加上 DC 电
压,将会引起永久性的损害。因此 LCD 显示器的对比度由提供到每个像素的实
际 RMS 电压控制,这个值等于 COM 引脚上的电压值减去 SEG 引脚上电压值
的结果的 RMS 值。RMS 电压必须大于 LCD 的饱和电压,以便能打开像素点,
但同时也要小于阈值电压,以便能关闭像素点。
因为要将 DC 电压限制为 0 且以尽量少的连接数来控制尽可能多的像素点,因
此需要产生时间振幅可变的信号供给 LCD 使用。这些时间与振幅都可变的信号
由单片机内的 LCD 驱动电路自动产生。占空比决定使用 COM 口的个数,也称
为底板或 COMs。例如,占空比为 1/4,表示 COM 的数目为 4,因此该值定义
了每个 LCD 信号帧内的时间片数。单片机提供两种类型的信号即 A 型和 B 型,
通过寄存器 LCDC 中的 TYPE 位加以选择。B 型提供较低频率的信号,然而,
较低的频率可能引起闪烁,从而影响显示的清晰度。
Rev.1.00
159
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
R 型,4-COM,1/3 Bias
LCD Display Off Mode
COM0 ~ COM3
VA
VB
VC
VSS
All segment outputs
VA
VB
VC
VSS
Normal Operation Mode
1 Frame
COM0
VA
VB
VC
VSS
COM1
VA
VB
VC
VSS
COM2
VA
VB
VC
VSS
COM3
VA
VB
VC
VSS
All segments are OFF
VA
VB
VC
VSS
COM0 side segments are ON
VA
VB
VC
VSS
COM1 side segments are ON
VA
VB
VC
VSS
COM2 side segments are ON
VA
VB
VC
VSS
COM3 side segments are ON
VA
VB
VC
VSS
COM0,1 side segments are ON
VA
VB
VC
VSS
COM0,2 side segments are ON
VA
VB
VC
VSS
COM0,3 side segments are ON
VA
VB
VC
VSS
(other combinations are omitted)
VA
VB
VC
VSS
All segments are ON
LCD 驱动输出 – A 型,1/4 Duty,1/3 Bias
Rev.1.00
160
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LCD Display Off Mode
COM0 ~ COM3
VA
VB
VC
VSS
All segment outputs
VA
VB
VC
VSS
Normal Operation Mode
1 Frame
COM0
VA
VB
VC
VSS
COM1
VA
VB
VC
VSS
COM2
VA
VB
VC
VSS
COM3
VA
VB
VC
VSS
All segments are OFF
VA
VB
VC
VSS
COM0 side segments are ON
VA
VB
VC
VSS
COM1 side segments are ON
VA
VB
VC
VSS
COM2 side segments are ON
VA
VB
VC
VSS
COM3 side segments are ON
VA
VB
VC
VSS
COM0,1 side segments are ON
VA
VB
VC
VSS
COM0,2 side segments are ON
VA
VB
VC
VSS
COM0,3 side segments are ON
VA
VB
VC
VSS
(other combinations are omitted)
VA
VB
VC
VSS
All segments are ON
LCD 驱动输出 – B 型,1/4 Duty,1/3 Bias
Rev.1.00
161
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
R 型,6-COM,1/3 Bias
LCD Display Off Mode
COM0 ~ COM5
VA
VB
VC
VSS
All segment outputs
VA
VB
VC
VSS
Normal Operation Mode
1 Frame
COM0
VA
VB
VC
VSS
COM1
VA
VB
VC
VSS
COM2
VA
VB
VC
VSS
COM3
VA
VB
VC
VSS
COM4
VA
VB
VC
VSS
COM5
VA
VB
VC
VSS
All segments are OFF
VA
VB
VC
VSS
COM0 side segments are ON
VA
VB
VC
VSS
COM1 side segments are ON
VA
VB
VC
VSS
COM2 side segments are ON
VA
VB
VC
VSS
COM3 side segments are ON
VA
VB
VC
VSS
COM4 side segments are ON
VA
VB
VC
VSS
COM5 side segments are ON
VA
VB
VC
VSS
COM0,1 side segments are ON
VA
VB
VC
VSS
COM0,2 side segments are ON
VA
VB
VC
VSS
COM0,3 side segments are ON
VA
VB
VC
VSS
COM0,4 side segments are ON
VA
VB
VC
VSS
COM0,5 side segments are ON
VA
VB
VC
VSS
VA
VB
VC
VSS
All segments are ON
LCD 驱动输出 – A 型,1/6 Duty,1/3 Bias
Rev.1.00
162
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LCD Display Off Mode
COM0 ~ COM5
VA
VB
VC
VSS
All segment outputs
VA
VB
VC
VSS
Normal Operation Mode
1 Frame
COM0
VA
VB
VC
VSS
COM1
VA
VB
VC
VSS
COM2
VA
VB
VC
VSS
COM3
VA
VB
VC
VSS
COM4
VA
VB
VC
VSS
COM5
VA
VB
VC
VSS
All segments are OFF
VA
VB
VC
VSS
COM0 side segments are ON
VA
VB
VC
VSS
COM1 side segments are ON
VA
VB
VC
VSS
COM2 side segments are ON
VA
VB
VC
VSS
COM3 side segments are ON
VA
VB
VC
VSS
COM4 side segments are ON
VA
VB
VC
VSS
COM5 side segments are ON
VA
VB
VC
VSS
COM0,1 side segments are ON
VA
VB
VC
VSS
COM0,2 side segments are ON
VA
VB
VC
VSS
COM0,3 side segments are ON
VA
VB
VC
VSS
COM0,4 side segments are ON
VA
VB
VC
VSS
COM0,5 side segments are ON
VA
VB
VC
VSS
VA
VB
VC
VSS
All segments are ON
LCD 驱动输出 – B 型,1/6 Duty,1/3 Bias
Rev.1.00
163
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
编程注意事项
LCD 编程时要注意几点,其中之一就是在单片机上电后,要保证 LCD 存储器
正确地初始化。与通用数据存储器一样,在上电后,LCD 存储器的内容是未知
的。由于 LCD 存储器的内容会映射到实际的 LCD,所以在上电后,为获得正
确的显示图形,初始化此存储器内容是非常重要的。
在实际应用中,必须要考虑 LCD 的实际容性负载。对于单片机来说,LCD 的
像素点一般可以看作电容性的负载,要确保所连接的像素点不能过多。这点对
可以连接多个 LCD 像素点的 COM 口来说尤为重要。下图描述了 LCD 的等效
电路。
另外还有一个要注意的就是当单片机进入空闲模式或休眠模式后所发生的变
化。LCDC 控制寄存器中的 LCD 使能控制位 LCDEN 会清零以降低功耗。当此
位被清零,就会停止产生显示的驱动信号,并处于一种低功耗的空白显示的状
态。
要注意当上电复位后,LCDEN 位会被清零,显示功能关闭。
SEG0
SEG1
SEG2
SEGn
COM0
COM1
COM2
COMn
LCD 面板等效电路
Rev.1.00
164
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
中断
中断是单片机一个重要功能。当外部事件或内部功能如定时器模块或 A/D 转换
器有效,并且产生中断时,系统会暂时中止当前的程序而转到执行相对应的中
断服务程序。此单片机提供多个外部中断和内部中断功能,外部中断由 INT0
和 INT1 引脚动作产生,而内部中断由各种内部功能产生,如定时器模块、时
基和 A/D 转换器等等。
中断寄存器
中断控制基本上是在一定单片机条件发生时设置请求标志位,应用程序中中断
使能位的设置是通过位于专用数据存储器中的一系列寄存器控制的。寄存器总
的分为三类。第一类是 INTC0~INTC2 寄存器,用于设置基本的中断;第二类
是 MFI0~MFI1 寄存器,用于设置多功能中断;最后一种有 INTEG 寄存器,用
于设置外部中断边沿触发类型。
寄存器中含有中断控制位和中断请求标志位。中断控制位用于使能或除能各种
中断,中断请求标志位用于存放当前中断请求的状态。它们都按照特定的模式
命名,前面表示中断类型的缩写,紧接着的字母“E”代表使能 / 除能位,“F”
代表请求标志位。
功能
总中断
INTn 引脚
SCF PGA
时基
A/D 转换器
多功能中断
EEPROM
SIM
UART
CTM
STM
使能位
EMI
INTnE
SCFE
TBnE
ADE
MFnE
DEE
SIME
URE
CTMnPE
CTMnAE
STMPE
STMAE
请求标志
—
INTnF
SCFF
TBnF
ADF
MFnF
DEF
SIMF
URF
CTMnPF
CTMnAF
STMPF
STMAF
注释
—
n=0 或 1
—
n=0 或 1
—
n=0 或 1
—
—
—
n=0 或 1
—
—
中断寄存器位命名模式
寄存器
名称
INTEG
INTC0
INTC1
INTC2
MFI
MFI
位
7
6
5
4
3
2
1
0
—
—
—
—
INT1S1 INT1S0 INT0S1 INT0S0
—
ADF
INT1F
INT0F
ADE
INT1E
INT0E
EMI
TB1F
TB0F
MF1F
MF0F
TB1E
TB0E
MF1E
MF0E
SCFF
DEF
URF
SIMF
SCFE
DEE
URE
SIME
CTM1AF CTM1PF CTM0AF CTM0PF CTM1AE CTM1PE CTM0AE CTM0PE
—
—
STMAF STMPF
—
—
STMAE STMPE
中断寄存器列表
Rev.1.00
165
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● INTEG 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
2
1
0
INT1S1 INT1S0 INT0S1 INT0S0
R/W
R/W
R/W
R/W
0
0
0
0
Bit 7~4
未定义,读为“0”
Bit 3~2
INT1S1~INT1S0:INT1 脚中断边沿控制位
00:除能
01:上升沿
10:下降沿
11:双沿
Bit 1~0
INT0S1~INT0S0:INT0 脚中断边沿控制位
00:除能
01:上升沿
10:下降沿
11:双沿
● INTC0 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
—
—
—
6
ADF
R/W
0
5
INT1F
R/W
0
4
INT0F
R/W
0
Bit 7
未定义,读为“0”
Bit 6
ADF:A/D 转换器中断请求标志位
0:无请求
1:中断请求
Bit 5
INT1F:INT1 中断请求标志位
0:无请求
1:中断请求
Bit 4
INT0F:INT0 中断请求标志位
0:无请求
1:中断请求
Bit 3
ADE:A/D 转换器中断控制位
0:除能
1:使能
Bit 2
INT1E:INT1 中断控制位
0:除能
1:使能
Bit 1
INT0E:INT0 中断控制位
0:除能
1:使能
Bit 0
EMI:总中断控制位
0:除能
1:使能
166
3
ADE
R/W
0
2
INT1E
R/W
0
1
INT0E
R/W
0
0
EMI
R/W
0
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● INTC1 寄存器
Bit
Name
R/W
POR
7
TB1F
R/W
0
6
TB0F
R/W
0
5
MF1F
R/W
0
4
MF0F
R/W
0
Bit 7
TB1F:时基 1 中断请求标志位
0:无请求
1:中断请求
Bit 6
TB0F:时基 0 中断请求标志位
0:无请求
1:中断请求
Bit 5
MF1F:多功能中断 1 请求标志位
0:无请求
1:中断请求
Bit 4
MF0F:多功能中断 0 请求标志位
0:无请求
1:中断请求
Bit 3
TB1E:时基 1 中断控制位
0:除能
1:使能
Bit 2
TB0E:时基 0 中断控制位
0:除能
1:使能
Bit 1
MF1E:多功能中断 1 控制位
0:除能
1:使能
Bit 0
MF0E:多功能中断 0 控制位
0:除能
1:使能
3
TB1E
R/W
0
2
TB0E
R/W
0
1
MF1E
R/W
0
0
MF0E
R/W
0
3
SCFE
R/W
0
2
DEE
R/W
0
1
URE
R/W
0
0
SIME
R/W
0
● INTC2 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
SCFF
R/W
1
6
DEF
R/W
0
5
URF
R/W
0
4
SIMF
R/W
0
Bit 7
SCFF:SCF 中断请求标志位
0:无请求
1:中断请求
Bit 6
DEF:EEPROM 中断请求标志位
0:无请求
1:中断请求
Bit 5
URF:UART 中断请求标志位
0:无请求
1:中断请求
Bit 4
SIMF:SIM 中断请求标志位
0:无请求
1:中断请求
Bit 3
SCFE:SCF 中断控制位
0:除能
1:使能
167
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Bit 2
DEE:EEPROM 中断控制位
0:除能
1:使能
Bit 1
URE:UART 中断控制位
0:除能
1:使能
Bit 0
SIME:SIM 中断控制位
0:除能
1:使能
● MFI0 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
6
5
4
3
2
1
0
CTM1AF CTM1PF CTM0AF CTM0PF CTM1AE CTM1PE CTM0AE CTM0PE
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
Bit 7
CTM1AF:CTM1 比较器 A 匹配中断请求标志位
0:无请求
1:中断请求
Bit 6
CTM1PF:CTM1 比较器 P 匹配中断请求标志位
0:无请求
1:中断请求
Bit 5
CTM0AF:CTM0 比较器 A 匹配中断请求标志位
0:无请求
1:中断请求
Bit 4
CTM0PF:CTM0 比较器 P 匹配中断请求标志位
0:无请求
1:中断请求
Bit 3
CTM1AE:CTM1 比较器 A 匹配中断控制位
0:除能
1:使能
Bit 2
CTM1PE:CTM1 比较器 P 匹配中断控制位
0:除能
1:使能
Bit 1
CTM0AE:CTM0 比较器 A 匹配中断控制位
0:除能
1:使能
Bit 0
CTM0PE:CTM0 比较器 P 匹配中断控制位
0:除能
1:使能
168
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● MFI1 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
4
STMAF STMPF
R/W
R/W
0
0
3
—
—
—
Bit 7~6
未定义,读为“0”
Bit 5
STMAF:STM 比较器 A 匹配中断请求标志位
0:无请求
1:中断请求
Bit 4
STMPF:STM 比较器 P 匹配中断请求标志位
0:无请求
1:中断请求
Bit 3~2
未定义,读为“0”
Bit 1
STMAE:STM 比较器 A 匹配中断控制位
0:除能
1:使能
Bit 0
STMPE:STM 比较器 P 匹配中断控制位
0:除能
1:使能
2
—
—
—
1
0
STMAE STMPE
R/W
R/W
0
0
中断操作
若中断事件条件产生,如一个 TM 比较器 P、比较器 A 匹配或 A/D 转换结束等
等,相关中断请求标志将置起。中断标志产生后程序是否会跳转至相关中断向
量执行是由中断使能位的条件决定的。若使能位为“1”,程序将跳至相关中断
向量中执行;若使能位为“0”,即使中断请求标志置起中断也不会发生,程序
也不会跳转至相关中断向量执行。若总中断使能位为“0”,所有中断都将除能。
当中断发生时,下条指令的地址将被压入堆栈。相应的中断向量地址加载至 PC
中。系统将从此向量取下条指令。中断向量处通常为“JMP”指令,以跳转到
相应的中断服务程序。中断服务程序必须以“RETI”指令返回至主程序,以继
续执行原来的程序。
各个中断使能位以及相应的请求标志位,以优先级的次序显示在下图。一些中
断源有自己的向量,但是有些中断却共用多功能中断向量。一旦中断子程序被
响应,系统将自动清除 EMI 位,所有其它的中断将被屏蔽,这个方式可以防止
任何进一步的中断嵌套。其它中断请求可能发生在此期间,虽然中断不会立即
响应,但是中断请求标志位会被记录。
如果某个中断服务子程序正在执行时,有另一个中断要求立即响应,那么 EMI
位应在程序进入中断子程序后置位,以允许此中断嵌套。如果堆栈已满,即使
此中断使能,中断请求也不会被响应,直到 SP 减少为止。如果要求立刻动作,
则堆栈必须避免成为储满状态。请求同时发生时,执行优先级如下流程图所示。
所有被置起的中断请求标志都可把单片机从休眠或空闲模式中唤醒,若要防止
唤醒动作发生,在单片机进入休眠或空闲模式前应将相应的标志置起。
Rev.1.00
169
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Legend
EMI auto disabled in ISR
xxF
Request Flag, no auto reset in ISR
xxF
Request Flag, auto reset in ISR
Interrupt
Name
Request
Flags
Enable
Bits
Master
Enable
Vector
xxE
Enable Bits
INT0 Pin
INT0F
INT0E
EMI
04H
Interrupt
Name
Request
Flags
Enable
Bits
INT1 Pin
INT1F
INT1E
EMI
08H
CTM0 P
CTM0PF
CTM0PE
A/D
ADF
ADE
EMI
0CH
CTM0 A
CTM0AF
CTM0AE
M. Funct. 0
MF0F
MF0E
EMI
10H
CTM1 P
CTM1PF
CTM1PE
M. Funct. 1
MF1F
MF1E
EMI
14H
CTM1 A
CTM1AF
CTM1AE
Time Base 0
TB0F
TB0E
EMI
18H
STM P
STMPF
STMPE
STM A
STMAF
STMAE
Time Base 1
TB1F
TB1E
EMI
1CH
SIM
SIMF
SIME
EMI
20H
UART
URF
URE
EMI
24H
EEPROM
DEF
DEE
EMI
28H
SCF
SCFF
SCFE
EMI
2CH
Interrupts contained within
Multi-Function Interrupt
Priority
High
Low
中断结构
外部中断
通过 INT0~INT1 引脚上的信号变化可控制外部中断。当触发沿选择位设置好触
发类型,INT0~INT1 引脚的状态发生变化,外部中断请求标志 INT0F~INT1F 被
置位时外部中断请求产生。若要跳转到相应中断向量地址,总中断控制位 EMI
和相应中断使能位 INT0E~INT1E 需先被置位。此外,必须使用 INTEG 寄存器
使能外部中断功能并选择触发沿类型。外部中断引脚和普通 I/O 口共用,如果
相应寄存器中的中断使能位被置位,并且通过引脚共用寄存器选择外部中断脚,
此引脚将被作为外部中断脚使用。此时该引脚必须通过设置控制寄存器,将该
引脚设置为输入口。当中断使能,堆栈未满并且外部中断脚发生了所选择的边
沿跳转,将调用外部中断向量子程序。当响应外部中断服务子程序时,中断请
求标志位 INT0F~INT1F 会自动复位且 EMI 位会被清零以除能其它中断。注意,
即使此引脚被用作外部中断输入,其上拉电阻仍保持有效。
寄存器 INTEG 被用来选择有效的边沿类型,来触发外部中断。可以选择上升沿
还是下降沿或双沿触发都产生外部中断。注意 INTEG 也可以用来除能外部中断
功能。
A/D 转换器中断
A/D 转换器中断由 A/D 转换动作的结束来控制。当 A/D 转换器中断请求标志被
置位,即 A/D 转换过程完成时,中断请求发生。若要跳转到相应中断向量地址,
总中断控制位 EMI 和 A/D 转换器中断使能位 ADE 需先被置位。当中断使能,
堆栈未满且 A/D 转换动作结束时,将调用 A/D 转换器中断向量子程序。当响应
中断服务子程序时,A/D 转换器中断请求标志位 ADF 会自动复位且 EMI 位会
被清零以除能其它中断。
Rev.1.00
170
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
多功能中断
此单片机中有两个多功能中断,与其它中断不同,它没有独立源,而是由其它
现有的中断源构成,即 TM 中断。
当多功能中断中任何一种中断请求发生,标志位 MFnF 被置位,多功能中断请
求产生。当中断使能,堆栈未满,包括在多功能中断中的任意一个中断发生时,
将调用多功能中断向量子程序。当响应中断服务子程序时,多功能请求标志位
会自动复位且 EMI 位会自动清零以除能其它中断。
但必须注意的是,在中断响应时,虽然多功能中断标志会自动复位,但多功能
中断源的请求标志位不会自动复位,必须由应用程序清零。
TM 中断
简易型和标准型 TM 各自有两个中断,分别来自比较器 P、A 匹配,都属于多
功能中断。所有类型的 TM 都有两个中断请求标志位及两个使能位。当 TM 比
较器 P、A 匹配情况发生时,相应 TM 中断请求标志被置位,TM 中断请求产生。
若要程序跳转到相应中断向量地址,总中断控制位 EMI、相应 TM 中断使能位
和相关多功能中断使能位 MFnE 需先被置位。当中断使能,堆栈未满且 TM 比
较器匹配情况发生时,可跳转至相关多功能中断向量子程序中执行。当 TM 中
断响应,EMI 将被自动清零以除能其它中断,相关 MFnF 标志也可自动清除,
但 TM 中断请求标志需在应用程序中手动清除。
时基中断
时基中断提供一个固定周期的中断信号,由各自的定时器功能产生溢出信号控
制。当各自的中断请求标志 TB0F 或 TB1F 被置位时,中断请求发生。当总中
断使能位 EMI 和时基使能位 TB0E 或 TB1E 被置位,允许程序跳转到各自的中
断向量地址。当中断使能,堆栈未满且时基溢出时,将调用它们各自的中断向
量子程序。当响应中断服务子程序时,相应的中断请求标志位 TB0F 或 TB1F
会自动复位且 EMI 位会被清零以除能其它中断。
时基中断的目的是提供一个固定周期的中断信号。其时钟源 fPSC 来自内部时钟
源 fSYS、fSYS/4 或 fSUB。fPSC 输入时钟首先经过分频器,分频率由程序设置 TB0C
和 TB1C 寄存器相关位获取合适的分频值以提供更长的时基中断周期。时基中
断周期控制时钟 fPSC 的时钟源可通过 PSCR 寄存器的 CLKSEL1 和 CLKSEL0 位
选择。
TB0[2:0]
TB0ON
fPSC/28 ~ fPSC/215
fSYS
fSYS/4
fSUB
M
U
X
fPSC
M
U
X
Time Base 0 Interrupt
M
U
X
Time Base 1 Interrupt
Prescaler
fPSC/28 ~ fPSC/215
CLKSEL[1:0]
TB1ON
TB1[2:0]
时基中断
Rev.1.00
171
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
● PSCR 寄存器
Bit
Name
R/W
POR
7
—
—
—
6
—
—
—
5
—
—
—
4
—
—
—
3
—
—
—
2
—
—
—
Bit 7~2
未定义,读为“0”
Bit 1~0
CLKSEL1~CLKSEL0:分频器时钟源选择
00:fSYS
01:fSYS/4
1x:fSUB
1
0
CLKSEL1 CLKSEL0
R/W
R/W
0
0
● TB0C 寄存器
Bit
Name
R/W
POR
7
TB0ON
R/W
0
6
—
—
—
5
—
—
—
4
—
—
—
Bit 7
TB0ON:时基 0 使能 / 除能控制位
0:除能
1:使能
Bit 6~3
未定义,读为“0”
Bit 2~0
TB02~TB00:选择时基 0 溢出周期位
000:28/fPSC
001:29/fPSC
010:210/fPSC
011:211/fPSC
100:212/fPSC
101:213/fPSC
110:214/fPSC
111:215/fPSC
3
—
—
—
2
TB02
R/W
0
1
TB01
R/W
0
0
TB00
R/W
0
3
—
—
—
2
TB12
R/W
0
1
TB11
R/W
0
0
TB10
R/W
0
● TB1C 寄存器
Bit
Name
R/W
POR
Rev.1.00
7
TB1ON
R/W
0
6
—
—
—
5
—
—
—
4
—
—
—
Bit 7
TB1ON:时基 1 使能 / 除能控制位
0:除能
1:使能
Bit 6~3
未定义,读为“0”
Bit 2~0
TB12~TB10:选择时基 1 溢出周期位
000:28/fPSC
001:29/fPSC
010:210/fPSC
011:211/fPSC
100:212/fPSC
101:213/fPSC
110:214/fPSC
111:215/fPSC
172
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
串行接口模块中断
串行接口模块中断,即 SIM 中断。当一个字节数据已由 SIM 接口接收或发送
完,或 I2C 从机地址匹配,或 I2C 超时,中断请求标志 SIMF 被置位,SIM 中断
请求产生。若要程序跳转到相应中断向量地址,总中断控制位 EMI 和串行接口
中断使能位 SIME 需先被置位。当中断使能,堆栈未满且以上任一种情况发生
时,可调用 SIM 中断向量子程序。当 SIM 中断响应时,相应的中断请求标志位
SIMF 会自动复位且 EMI 位会被清零以除能其他中断。
UART 中断
UART 中断是由几种 UART 传输条件来控制的。当发送器为空、发送器空闲、
接收器数据有效、接收器溢出、地址检测和 RX/TX 引脚唤醒,UART 中断请求
标志位 URF 被置位,UART 中断请求产生。若要程序跳转到相应中断向量地址,
总中断控制位 EMI 和 UART 中断使能位 URE 需先被置位。当中断使能,堆栈
未满且以上任何一种情况发生时,将调用 UART 中断向量子程序。当 UART 中
断响应时,相应的中断标志位 URF 会自动复位且 EMI 位会被清零以除能其他
中断。然而 USR 寄存器里的标志位只有在对 UART 执行特定动作是才会被清
零,详细参考 UART 章节。
EEPROM 中断
当擦或写周期结束,EEPROM 中断请求标志 DEF 被置位,EEPROM 中断请求
产生。若要程序跳转到相应中断向量地址,总中断控制位 EMI 和 EEPROM 中
断使能位 DEE 需先被置位。当中断使能,堆栈未满且 EEPROM 擦或写周期结
束时,将调用 EEPROM 中断向量子程序。当 EEPROM 中断响应时,相应的中
断请求标志位 DEF 会自动复位且 EMI 位会被清零以除能其它中断。
SCF 中断
当 SCF 中断请求标志 SCFF 被置位,即 SCFADSF 位由 0 变为 1 表示 SCF PGA
输出就绪时,中断请求发生。若要跳转到相应中断向量地址,总中断控制位
EMI 和 SCF 中断使能位 SCFE 需先被置位。当中断使能,SCF PGA 输出一个上
升沿时,将调用 SCF 中断向量子程序。当响应中断服务子程序时,相应的中断
请求标志位 SCFF 会自动复位且 EMI 位会被清零以除能其它中断。
中断唤醒功能
每个中断都具有将处于休眠或空闲模式的单片机唤醒的能力。当中断请求标志
由低到高转换时唤醒动作产生,其与中断是否使能无关。因此,尽管单片机处
于休眠或空闲模式且系统振荡器停止工作,如有外部中断脚上产生外部边沿跳
变可能导致其相应的中断标志被置位,由此产生中断,因此必须注意避免伪唤
醒情况的发生。若中断唤醒功能被除能,单片机进入休眠或空闲模式前相应中
断请求标志应被置起。中断唤醒功能不受中断使能位的影响。
编程注意事项
通过禁止相关中断使能位,可以屏蔽中断请求,然而,一旦中断请求标志位被
设定,它们会被保留在中断控制寄存器内,直到相应的中断服务子程序执行或
请求标志位被软件指令清除。
多功能中断中所含中断相应程序执行时,多功能中断请求标志 MFnF 可以自动
清零,但各自的请求标志需在应用程序中手动清除。
建议在中断服务子程序中不要使用“CALL 子程序”指令。中断通常发生在不
可预料的情况或是需要立刻执行的某些应用。假如只剩下一层堆栈且没有控制
Rev.1.00
173
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
好中断,当“CALL 子程序”在中断服务子程序中执行时,将破坏原来的控制
序列。
所有中断在休眠或空闲模式下都具有唤醒功能,当中断请求标志发生由低到高
的转变时都可产生唤醒功能。若要避免相应中断产生唤醒动作,在单片机进入
休眠或空闲模式前需先将相应请求标志置为高。
当进入中断服务程序,系统仅将程序计数器的内容压入堆栈,如果中断服务程
序会改变状态寄存器或其它的寄存器的内容而破坏控制流程,应事先将这些数
据保存起来。
若从中断子程序中返回可执行 RET 或 RETI 指令。除了能返回至主程序外,
RETI 指令还能自动设置 EMI 位为高,允许进一步中断。RET 指令只能返回至
主程序,清除 EMI 位,除能进一步中断。
应用电路
VDD
VDD
SPI/I2C
Communication Device
UART
Communication Device
0.1µF
VSS
VOREG
I/O
CCVIP
Sensor
Control Device
Key
Matrix
I/O
A/D
SVIP
Analog Signals
SVIN
CCVIN
LCD
Panel
COM
SEG
SCFR
SLPF
XT1
32768Hz
XT2
SCFC
Rev.1.00
174
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
指令集
简介
任何单片机成功运作的核心在于它的指令集,此指令集为一组程序指令码,用
来指导单片机如何去执行指定的工作。在 Holtek 单片机中,提供了丰富且灵活
的指令,共超过六十条,程序设计者可以事半功倍地实现它们的应用。
为了更加容易理解各种各样的指令码,接下来按功能分组介绍它们。
指令周期
大部分的操作均只需要一个指令周期来执行。分支、调用或查表则需要两个指
令周期。一个指令周期相当于四个系统时钟周期,因此如果在 8MHz 的系统
时钟振荡器下,大部分的操作将在 0.5μs 中执行完成,而分支或调用操作则将
在 1μs 中执行完成。虽然需要两个指令周期的指令通常指的是 JMP、CALL、
RET、RETI 和查表指令,但如果牵涉到程序计数器低字节寄存器 PCL 也将多
花费一个周期去加以执行。即指令改变 PCL 的内容进而导致直接跳转至新地址
时,需要多一个周期去执行,例如“CLR PCL”或“MOV PCL, A”指令。对
于跳转指令必须注意的是,如果比较的结果牵涉到跳转动作将多花费一个周期,
如果没有则需一个周期即可。
数据的传送
单片机程序中数据传送是使用最为频繁的操作之一,使用三种 MOV 的指令,
数据不但可以从寄存器转移至累加器 ( 反之亦然 ),而且能够直接移动立即数到
累加器。数据传送最重要的应用之一是从输入端口接收数据或传送数据到输出
端口。
算术运算
算术运算和数据处理是大部分单片机应用所必需具备的能力,在 Holtek 单片机
内部的指令集中,可直接实现加与减的运算。当加法的结果超出 255 或减法的
结果少于 0 时,要注意正确的处理进位和借位的问题。INC、INCA、DEC 和
DECA 指令提供了对一个指定地址的值加一或减一的功能。
逻辑和移位运算
标准逻辑运算例如 AND、OR、XOR 和 CPL 全都包含在 Holtek 单片机内部的
指令集中。大多数牵涉到数据运算的指令,数据的传送必须通过累加器。在所
有逻辑数据运算中,如果运算结果为零,则零标志位将被置位,另外逻辑数据
运用形式还有移位指令,例如 RR、RL、RRC 和 RLC 提供了向左或向右移动一
位的方法。不同的移位指令可满足不同的应用需要。移位指令常用于串行端口
的程序应用,数据可从内部寄存器转移至进位标志位,而此位则可被检验,移
位运算还可应用在乘法与除法的运算组成中。
Rev.1.00
175
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
分支和控制转换
程序分支是采取使用 JMP 指令跳转至指定地址或使用 CALL 指令调用子程序的
形式,两者之不同在于当子程序被执行完毕后,程序必须马上返回原来的地址。
这个动作是由放置在子程序里的返回指令 RET 来实现,它可使程序跳回 CALL
指令之后的地址。在 JMP 指令中,程序则只是跳到一个指定的地址而已,并不
需如 CALL 指令般跳回。一个非常有用的分支指令是条件跳转,跳转条件是由
数据存储器或指定位来加以决定。遵循跳转条件,程序将继续执行下一条指令
或略过且跳转至接下来的指令。这些分支指令是程序走向的关键,跳转条件可
能是外部开关输入,或是内部数据位的值。
位运算
提供数据存储器中单个位的运算指令是 Holtek 单片机的特性之一。这特性对于
输出端口位的设置尤其有用,其中个别的位或端口的引脚可以使用“SET [m].i”
或“CLR [m].i”指令来设定其为高位或低位。如果没有这特性,程序设计师必
须先读入输出口的 8 位数据,处理这些数据,然后再输出正确的新数据。这种
读入 - 修改 - 写出的过程现在则被位运算指令所取代。
查表运算
数据的储存通常由寄存器完成,然而当处理大量固定的数据时,它的存储量常
常造成对个别存储器的不便。为了改善此问题,Holtek 单片机允许在程序存储
器中建立一个表格作为数据可直接存储的区域,只需要一组简易的指令即可对
数据进行查表。
其它运算
除了上述功能指令外,其它指令还包括用于省电的“HALT”指令和使程序在极
端电压或电磁环境下仍能正常工作的看门狗定时器控制指令。这些指令的使用
则请查阅相关的章节。
Rev.1.00
176
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
指令集概要
当要操作的数据存储器位于数据存储器 Sector 0 时,下表说明了与数据存储器
存取有关的指令。
惯例
x:立即数
m:数据存储器地址
A:累加器
i:第 0~7 位
addr:程序存储器地址
助记符
说明
指令
周期
影响标志位
算术运算
ADD
A,[m] ACC 与数据存储器相加,结果放入 ACC
ADDM A,[m] ACC 与数据存储器相加,结果放入数据存储器
ADD
ADC
A, x ACC 与立即数相加,结果放入 ACC
A,[m] ACC 与数据存储器、进位标志相加,结果放入 ACC
ADCM A,[m] ACC 与数据存储器、进位标志相加,结果放入数据存储器
SUB
A, x ACC 与立即数相减,结果放入 ACC
SUB
A,[m] ACC 与数据存储器相减,结果放入 ACC
SUBM
A,[m] ACC 与数据存储器相减,结果放入数据存储器
SBC
A, x ACC 与立即数、进位标志相减,结果放入 ACC
SBC
A,[m] ACC 与数据存储器、进位标志相减,结果放入 ACC
SBCM
A,[m] ACC 与数据存储器、进位标志相减,结果放入数据存储器
将加法运算中放入 ACC 的值调整为十进制数,并将结果放
[m]
入数据存储器
DAA
1
Z, C, AC, OV, SC
1注
Z, C, AC, OV, SC
1
Z, C, AC, OV, SC
1
Z, C, AC, OV, SC
1注
Z, C, AC, OV, SC
1
Z, C, AC, OV, SC, CZ
1
Z, C, AC, OV, SC, CZ
1注
Z, C, AC, OV, SC, CZ
1
Z, C, AC, OV, SC, CZ
1
Z, C, AC, OV, SC, CZ
1
注
Z, C, AC, OV, SC, CZ
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 与数据存储器做“与”运算,结果放入数据存储器
1
注
Z
ORM
1注
Z
1注
Z
A,[m] ACC 与数据存储器做“或”运算,结果放入数据存储器
XORM A,[m] ACC 与数据存储器做“异或”运算,结果放入数据存储器
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] 对数据存储器取反,结果放入 ACC
1
注
Z
1
Z
递增和递减
INCA
[m] 递增数据存储器,结果放入 ACC
INC
[m] 递增数据存储器,结果放入数据存储器
DECA
[m] 递减数据存储器,结果放入 ACC
DEC
[m] 递减数据存储器,结果放入数据存储器
Rev.1.00
177
1
Z
1注
Z
1
Z
1注
Z
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
助记符
说明
指令
周期
影响标志位
1
无
移位
RRA
[m] 数据存储器右移一位,结果放入 ACC
RR
[m] 数据存储器右移一位,结果放入数据存储器
RRCA
[m] 带进位将数据存储器右移一位,结果放入 ACC
RRC
[m] 带进位将数据存储器右移一位,结果放入数据存储器
RLA
[m] 数据存储器左移一位,结果放入 ACC
RL
[m] 数据存储器左移一位,结果放入数据存储器
RLCA
[m] 带进位将数据存储器左移一位,结果放入 ACC
RLC
[m] 带进位将数据存储器左移一位,结果放入数据存储器
1
注
无
1
C
1注
C
1
无
1注
无
1
C
1注
C
数据传送
MOV
A,[m] 将数据存储器送至 ACC
1
无
MOV
[m],A 将 ACC 送至数据存储器
1注
无
A, x 将立即数送至 ACC
1
无
CLR
[m].i 清除数据存储器的位
1注
无
SET
[m].i 置位数据存储器的位
1
无
MOV
位运算
注
转移
JMP
addr 无条件跳转
2
无
SZ
[m] 如果数据存储器为零,则跳过下一条指令
1
SZA
[m] 数据存储器送至 ACC,如果内容为零,则跳过下一条指令
1注
无
SNZ
[m] 如果数据存储器不为零,则跳过下一条指令
1
注
无
注
无
SZ
[m].i 如果数据存储器的第 i 位为零,则跳过下一条指令
1注
无
SNZ
[m].i 如果数据存储器的第 i 位不为零,则跳过下一条指令
1注
无
注
无
SIZ
[m] 递增数据存储器,如果结果为零,则跳过下一条指令
1
SDZ
[m] 递减数据存储器,如果结果为零,则跳过下一条指令
1注
无
SIZA
[m]
递增数据存储器,将结果放入 ACC,如果结果为零,则跳
过下一条指令
1注
无
SDZA
[m]
递减数据存储器,将结果放入 ACC,如果结果为零,则跳
过下一条指令
1注
无
2
无
2
无
2
无
2
无
[m] 读取特定页的 ROM 内容,并送至数据存储器和 TBLH
2注
无
TABRDL [m] 读取最后页的 ROM 内容,并送至数据存储器和 TBLH
2注
无
读表指针 TBLP 自加,读取特定页的 ROM 内容,并送至
[m]
数据存储器和 TBLH
2注
无
读表指针 TBLP 自加,读取最后页的 ROM 内容,并送至
数据存储器和 TBLH
2注
无
CALL
addr 子程序调用
RET
RET
从子程序返回
A, x 从子程序返回,并将立即数放入 ACC
RETI
从中断返回
查表
TABRD
ITABRD
ITABRDL [m]
其它指令
NOP
1
无
CLR
[m] 清除数据存储器
1注
无
SET
[m] 置位数据存储器
1
无
Rev.1.00
空指令
178
注
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
助记符
CLR
说明
WDT 清除看门狗定时器
SWAP
[m] 交换数据存储器的高低字节,结果放入数据存储器
SWAPA
[m] 交换数据存储器的高低字节,结果放入 ACC
HALT
进入暂停模式
指令
周期
影响标志位
1
TO, PDF
1注
无
1
无
1
TO, PDF
注:1. 对跳转指令而言,如果比较的结果牵涉到跳转即需 2 个周期,如果没有发生跳转,则只需一个周期。
2. 任何指令若要改变 PCL 的内容将需要 2 个周期来执行。
Rev.1.00
179
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
扩展指令集
扩展指令用来提供更大范围的数据存储器寻址。当被存取的数据存储器位于
Sector 0 之外的任何数据存储器 Sector,扩展指令可直接存取数据存储器而无需
使用间接寻址,此举不仅可节省 Flash 存储器空间的使用,同时可提高 CPU 执
行效率。
助记符
说明
指令
周期
影响标志位
算术运算
LADD
A,[m] ACC 与数据存储器相加,结果放入 ACC
LADDM
A,[m] ACC 与数据存储器相加,结果放入数据存储器
LADC
A,[m] ACC 与数据存储器、进位标志相加,结果放入 ACC
LADCM
A,[m] ACC 与数据存储器、进位标志相加,结果放入数据存储器
LSUB
A,[m] ACC 与数据存储器相减,结果放入 ACC
LSUBM
A,[m] ACC 与数据存储器相减,结果放入数据存储器
LSBC
A,[m] ACC 与数据存储器、进位标志相减,结果放入 ACC
LSBCM
A,[m] ACC 与数据存储器、进位标志相减,结果放入数据存储器
LDAA
[m]
将加法运算中放入 ACC 的值调整为十进制数,并将结果
放入数据存储器
2
Z, C, AC, OV, SC
2注
Z, C, AC, OV, SC
2
Z, C, AC, OV, SC
2注
Z, C, AC, OV, SC
2
Z, C, AC, OV, SC, CZ
2注
Z, C, AC, OV, SC, CZ
2
Z, C, AC, OV, SC, CZ
2注
Z, C, AC, OV, SC, CZ
2注
C
逻辑运算
LAND
A,[m] ACC 与数据存储器做“与”运算,结果放入 ACC
2
Z
LOR
A,[m] ACC 与数据存储器做“或”运算,结果放入 ACC
2
Z
LXOR
A,[m] ACC 与数据存储器做“异或”运算,结果放入 ACC
2
Z
LANDM
A,[m] ACC 与数据存储器做“与”运算,结果放入数据存储器
2注
Z
LORM
A,[m] ACC 与数据存储器做“或”运算,结果放入数据存储器
2
注
Z
LXORM
A,[m] ACC 与数据存储器做“异或”运算,结果放入数据存储器
2注
Z
2
Z
LCPL
[m] 对数据存储器取反,结果放入数据存储器
LCPLA
[m] 对数据存储器取反,结果放入 ACC
注
2
Z
递增和递减
LINCA
[m] 递增数据存储器,结果放入 ACC
LINC
[m] 递增数据存储器,结果放入数据存储器
LDECA
[m] 递减数据存储器,结果放入 ACC
LDEC
[m] 递减数据存储器,结果放入数据存储器
2
Z
2注
Z
2
Z
2注
Z
移位
LRRA
[m] 数据存储器右移一位,结果放入 ACC
LRR
[m] 数据存储器右移一位,结果放入数据存储器
LRRCA
[m] 带进位将数据存储器右移一位,结果放入 ACC
LRRC
[m] 带进位将数据存储器右移一位,结果放入数据存储器
LRLA
[m] 数据存储器左移一位,结果放入 ACC
LRL
[m] 数据存储器左移一位,结果放入数据存储器
LRLCA
[m] 带进位将数据存储器左移一位,结果放入 ACC
LRLC
[m] 带进位将数据存储器左移一位,结果放入数据存储器
2
无
2注
无
2
C
2
注
C
2
无
2注
无
2
C
2注
C
2
无
数据传送
LMOV
A,[m] 将数据存储器送至 ACC
LMOV
[m],A 将 ACC 送至数据存储器
Rev.1.00
2
180
注
无
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
助记符
说明
指令
周期
影响标志位
位运算
LCLR
[m].i 清除数据存储器的位
2注
无
LSET
[m].i 置位数据存储器的位
2
注
无
转移
LSZ
[m] 如果数据存储器为零,则跳过下一条指令
2注
无
LSZA
[m] 数据存储器送至 ACC,如果内容为零,则跳过下一条指令
2
注
无
LSNZ
[m] 如果数据存储器不为零,则跳过下一条指令
2注
无
注
无
LSZ
[m].i 如果数据存储器的第 i 位为零,则跳过下一条指令
2
LSNZ
[m].i 如果数据存储器的第 i 位不为零,则跳过下一条指令
2注
无
LSIZ
[m] 递增数据存储器,如果结果为零,则跳过下一条指令
2注
无
LSDZ
[m] 递减数据存储器,如果结果为零,则跳过下一条指令
2
注
无
LSIZA
递增数据存储器,将结果放入 ACC,如果结果为零,则跳
[m]
过下一条指令
2注
无
LSDZA
[m]
递减数据存储器,将结果放入 ACC,如果结果为零,则跳
过下一条指令
2注
无
查表
LTABRD
[m] 读取特定页的 ROM 内容,并送至数据存储器和 TBLH
3注
无
LTABRDL
[m] 读取最后页的 ROM 内容,并送至数据存储器和 TBLH
3注
无
LITABRD
读表指针 TBLP 自加,读取特定页的 ROM 内容,并送至
[m]
数据存储器和 TBLH
3注
无
读表指针 TBLP 自加,读取最后页的 ROM 内容,并送至
数据存储器和 TBLH
3注
无
LITABRDL [m]
其它指令
LCLR
[m] 清除数据存储器
2注
无
LSET
[m] 置位数据存储器
2注
无
LSWAP
[m] 交换数据存储器的高低字节,结果放入数据存储器
2
无
LSWAPA
[m] 交换数据存储器的高低字节,结果放入 ACC
注
2
无
注:1. 对扩展跳转指令而言,如果比较的结果牵涉到跳转即需 3 个周期,如果没有发生跳转,则只需两
个周期。
2. 任何扩展指令若要改变 PCL 的内容将需要 3 个周期来执行。
Rev.1.00
181
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
指令定义
ADC A, [m]
指令说明
功能表示
影响标志位
ADCM A, [m]
指令说明
功能表示
影响标志位
ADD A, [m]
指令说明
Add ACC to Data Memory with Carry
将指定的数据存储器、累加器内容和进位标志位相加,
结果存放到指定的数据存储器。
[m] ←ACC + [m] + C
OV、Z、AC、C、SC
功能表示
影响标志位
Add Data Memory to ACC
将指定的数据存储器和累加器内容相加,
结果存放到累加器。
ACC ← ACC + [m]
OV、Z、AC、C、SC
ADD A, x
指令说明
功能表示
影响标志位
Add immediate data to ACC
将累加器和立即数相加,结果存放到累加器。
ACC ← ACC + x
OV、Z、AC、C、SC
ADDM A, [m]
指令说明
Add ACC to Data Memory
将指定的数据存储器和累加器内容相加,
结果存放到指定的数据存储器。
[m] ←ACC + [m]
OV、Z、AC、C、SC
功能表示
影响标志位
AND A, [m]
指令说明
功能表示
影响标志位
Rev.1.00
Add Data Memory to ACC with Carry
将指定的数据存储器、累加器内容以及进位标志相加,
结果存放到累加器。
ACC ← ACC + [m] + C
OV、Z、AC、C、SC
Logical AND Data Memory to ACC
将累加器中的数据和指定数据存储器内容做逻辑与,
结果存放到累加器。
ACC ← ACC“AND”[m]
Z
182
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
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.00
183
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
CPL [m]
指令说明
功能表示
影响标志位
CPLA [m]
指令说明
功能表示
影响标志位
DAA [m]
指令说明
Complement Data Memory with result in ACC
将指定数据存储器中的每一位取逻辑反,相当于从 1 变 0
或 0 变 1,而结果被储存回累加器且数据存储器中的内容
不变。
ACC←[m]
Z
影响标志位
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
功能表示
功能表示
影响标志位
Rev.1.00
Complement Data Memory
将指定数据存储器中的每一位取逻辑反,
相当于从 1 变 0 或 0 变 1。
[m] ← [m]
Z
184
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
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
INCA [m]
指令说明
Increment Data Memory with result in ACC
将指定数据存储器的内容加 1,结果存放回累加器并保持
指定的数据存储器内容不变。
ACC ← [m] + 1
Z
功能表示
功能表示
影响标志位
JMP addr
指令说明
Rev.1.00
功能表示
影响标志位
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
无
185
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
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
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
指令说明
功能表示
影响标志位
Rev.1.00
无
Return from subroutine
将堆栈寄存器中的程序计数器值恢复,
程序由取回的地址继续执行。
Program Counter←Stack
无
Return from subroutine and load immediate data to ACC
将堆栈寄存器中的程序计数器值恢复且累加器载入指定的
立即数,程序由取回的地址继续执行。
Program Counter ← Stack
ACC←x
无
186
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
RETI
指令说明
功能表示
影响标志位
无
RL [m]
指令说明
功能表示
Rotate Data Memory left
将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位。
[m].(i+1) ← [m].i (i=0~6)
[m].0 ← [m].7
无
影响标志位
RLA [m]
指令说明
功能表示
Rotate Data Memory left with result in ACC
将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位,
结果送到累加器,而指定数据存储器的内容保持不变。
ACC.(i+1) ← [m].i (i=0~6)
ACC.0 ←[m].7
影响标志位
无
RLC [m]
指令说明
Rotate Data Memory Left through Carry
将指定数据存储器的内容连同进位标志左移 1 位,
第 7 位取代进位标志且原本的进位标志移到第 0 位。
[m].(i+1) ← [m].i (i=0~6)
[m].0 ← C
C ← [m].7
C
功能表示
影响标志位
RLC A [m]
指令说明
功能表示
影响标志位
Rev.1.00
Return from interrupt
将堆栈寄存器中的程序计数器值恢复且中断功能通过设置
EMI 位重新使能。EMI 是控制中断使能的主控制位。如果
在执行 RETI 指令之前还有中断未被响应,则这个中断将
在返回主程序之前被响应。
Program Counter ←Stack
EMI ← 1
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
187
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
RR [m]
指令说明
功能表示
影响标志位
RRA [m]
指令说明
功能表示
影响标志位
RRC [m]
指令说明
功能表示
影响标志位
RRCA [m]
指令说明
功能表示
影响标志位
SBC A, [m]
指令说明
功能表示
影响标志位
Rev.1.00
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
无
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
188
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SBC A, x
指令说明
功能表示
影响标志位
SBCM A, [m]
指令说明
功能表示
影响标志位
SDZ [m]
指令说明
功能表示
影响标志位
SDZA [m]
指令说明
Rev.1.00
Subtract immediate data 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 跳过下一条指令执行
无
Decrement data memory and place result in ACC, skip if 0
功能表示
影响标志位
将指定数据存储器内容减 1,判断是否为 0,如果为 0 则跳
过下一条指令,此结果将存放到累加器,但指定数据存储
器内容不变。由于取得下一个指令时会要求插入一个空指
令周期,所以此指令为 2 个周期的指令。如果结果不为 0,
则程序继续执行下一条指令。
ACC ← [m] – 1,如果 ACC=0 跳过下一条指令执行
无
SET [m]
指令说明
功能表示
影响标志位
Set Data Memory
将指定数据存储器的每一位设置为 1。
[m] ← FFH
无
189
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
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]
指令说明
功能表示
影响标志位
SNZ [m].i
指令说明
功能表示
影响标志位
SNZ [m]
指令说明
功能表示
影响标志位
Rev.1.00
Skip if increment Data Memory is zero with result in ACC
将指定数据存储器的内容加 1,判断是否为 0,如果为 0 则
跳过下一条指令,此结果会被存放到累加器,但是指定数
据存储器的内容不变。由于取得下一个指令时会要求插入
一个空指令周期,所以此指令为 2 个周期的指令。如果结
果不为 0,则程序继续执行下一条指令。
ACC ←[m] + 1,如果 ACC=0 跳过下一条指令执行
无
Skip if bit i of Data Memory is not 0
判断指定数据存储器的第 i 位,若不为 0,则程序跳过下一
条指令执行。由于取得下一个指令时会要求插入一个空指
令周期,所以此指令为 2 个周期的指令。如果结果为 0,
则程序继续执行下一条指令。
如果 [m].i≠0,跳过下一条指令执行
无
Skip if Data Memory is not 0
判断指定存储器,若不为 0,则程序跳过下一条指令执行。
由于取得下一个指令时会要求插入一个空指令周期,所以
此指令为 2 个周期的指令。如果结果为 0,则程序继续执
行下一条指令。
如果 [m]≠0,跳过下一条指令执行
无
190
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SUB A, [m]
指令说明
功能表示
影响标志位
SUBM A, [m]
指令说明
功能表示
影响标志位
SUB A, x
指令说明
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
无
功能表示
影响标志位
SZ [m]
指令说明
功能表示
影响标志位
Rev.1.00
Subtract Data Memory from ACC
将累加器的内容减去指定的数据存储器的数据,把结果存
放到累加器。如果结果为负,C 标志位清除为 0,反之结果
为正或 0,C 标志位设置为 1。
ACC ← ACC – [m]
OV、Z、AC、C、SC、CZ
Skip if Data Memory is 0
判断指定数据存储器的内容是否为 0,若为 0,则程序跳过
下一条指令执行。由于取得下一个指令时会要求插入一个
空指令周期,所以此指令为 2 个周期的指令。如果结果不
为 0,则程序继续执行下一条指令。
如果 [m]=0,跳过下一条指令执行
无
191
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
SZA [m]
指令说明
功能表示
影响标志位
SZ [m].i
指令说明
功能表示
影响标志位
TABRD [m]
指令说明
功能表示
影响标志位
TABRDL [m]
指令说明
功能表示
影响标志位
ITABRD [m]
指令说明
功能表示
影响标志位
Rev.1.00
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 (last page) to TBLH and Data Memory
将表格指针 TBLP 所指的程序代码低字节 ( 最后一页 )
移至指定数据存储器且将高字节移至 TBLH。
[m] ← 程序代码 ( 低字节 )
TBLH ← 程序代码 ( 高字节 )
无
Increment table pointer low byte first and read table (specific
page) to TBLH and data memory
自加表格指针低字节 TBLP,将表格指针对 TBHP 和 TBLP
所指的程序代码低字节 ( 指定页 ) 移至指定的数据存储器且
将高字节移至 TBLH。
[m] ← 程序代码 ( 低字节 )
TBLH ← 程序代码 ( 高字节 )
无
192
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
ITABRDL [m]
指令说明
功能表示
影响标志位
XOR A, [m]
指令说明
功能表示
影响标志位
XORM A, [m]
指令说明
Rev.1.00
Increment table pointer low byte first and read table (last page)
to TBLH and data memory
自加表格指针低字节 TBLP,将表格指针 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
193
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
扩展指令定义
扩展指令被用来直接存取存储在任何数据存储器 Sector 中的数据。
LADC A, [m]
Add Data Memory to ACC with Carry
指令说明
将指定的数据存储器、累加器内容以及进位标志相加,
结果存放到累加器。
功能表示
ACC ← ACC + [m] + C
影响标志位
OV、Z、AC、C、SC
LADCM A, [m]
指令说明
功能表示
影响标志位
LADD A, [m]
指令说明
功能表示
影响标志位
LADDM A, [m]
指令说明
功能表示
影响标志位
LAND A, [m]
指令说明
功能表示
影响标志位
LANDM A, [m]
指令说明
功能表示
影响标志位
Rev.1.00
Add ACC to Data Memory with Carry
将指定的数据存储器、累加器内容和进位标志位相加,
结果存放到指定的数据存储器。
[m] ←ACC + [m] + C
OV、Z、AC、C、SC
Add Data Memory to ACC
将将指定的数据存储器和累加器内容相加,
结果存放到累加器。
ACC ← ACC + [m]
OV、Z、AC、C、SC
Add ACC to Data Memory
将指定的数据存储器和累加器内容相加,
结果存放到指定的数据存储器。
[m] ←ACC + [m]
OV、Z、AC、C、SC
Logical AND Data Memory to ACC
将累加器中的数据和指定数据存储器内容做逻辑与,
结果存放到累加器。
ACC ← ACC“AND”[m]
Z
Logical AND ACC to Data Memory
将指定数据存储器内容和累加器中的数据做逻辑与,
结果存放到数据存储器。
[m] ← ACC“AND”[m]
Z
194
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LCLR [m]
指令说明
功能表示
影响标志位
Clear Data Memory
将指定数据存储器的内容清零。
[m] ← 00H
无
LCLR [m].i
指令说明
功能表示
影响标志位
Clear bit of Data Memory
将指定数据存储器的第 i 位内容清零。
[m].i ← 0
无
LCPL [m]
指令说明
Complement Data Memory
将指定数据存储器中的每一位取逻辑反,
相当于从 1 变 0 或 0 变 1。
[m] ← [m]
Z
功能表示
影响标志位
LCPLA [m]
指令说明
功能表示
影响标志位
LDAA [m]
指令说明
功能表示
影响标志位
Rev.1.00
Complement Data Memory with result in ACC
将指定数据存储器中的每一位取逻辑反,相当于从 1 变 0
或 0 变 1,结果被存放回累加器且数据寄存器的内容保持
不变。
ACC←[m]
Z
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
195
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LDEC [m]
指令说明
功能表示
影响标志位
Decrement Data Memory
将指定数据存储器的内容减 1。
[m] ← [m] – 1
Z
LDECA [m]
指令说明
功能表示
影响标志位
Decrement Data Memory with result in ACC
将指定数据存储器的内容减 1,把结果存放回累加器并保
持指定数据存储器的内容不变。
ACC ← [m] – 1
Z
LINC [m]
指令说明
功能表示
影响标志位
Increment Data Memory
将指定数据存储器的内容加 1。
[m] ← [m] + 1
Z
LINCA [m]
指令说明
功能表示
影响标志位
Increment Data Memory with result in ACC
将指定数据存储器的内容加 1,结果存放回累加器并保持
指定的数据存储器内容不变。
ACC ← [m] + 1
Z
LMOV A, [m]
指令说明
功能表示
影响标志位
Move Data Memory to ACC
将指定数据存储器的内容复制到累加器中。
ACC← [m]
无
LMOV [m], A
指令说明
功能表示
影响标志位
Move ACC to Data Memory
将累加器的内容复制到指定数据存储器。
[m] ← ACC
无
LOR A, [m]
指令说明
Logical OR Data Memory to ACC
将累加器中的数据和指定的数据存储器内容逻辑或,
结果存放到累加器。
ACC ← ACC“OR”[m]
Z
功能表示
影响标志位
Rev.1.00
196
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LORM A, [m]
指令说明
功能表示
影响标志位
LRL [m]
指令说明
功能表示
影响标志位
LRLA [m]
指令说明
功能表示
Rotate Data Memory left
将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位。
[m].(i+1) ← [m].i (i=0~6)
[m].0 ← [m].7
无
Rotate Data Memory left with result in ACC
将指定数据存储器的内容左移 1 位,且第 7 位移到第 0 位,
结果送到累加器,而指定数据存储器的内容保持不变。
ACC.(i+1) ← [m].i (i=0~6)
ACC.0 ←[m].7
影响标志位
无
LRLC [m]
指令说明
Rotate Data Memory Left through Carry
将指定数据存储器的内容连同进位标志左移 1 位,
第 7 位取代进位标志且原本的进位标志移到第 0 位。
[m].(i+1) ← [m].i (i=0~6)
[m].0 ← C
C ← [m].7
C
功能表示
影响标志位
LRLC A [m]
指令说明
功能表示
影响标志位
Rev.1.00
Logical OR ACC to Data Memory
将存在指定数据存储器中的数据和累加器逻辑或,
结果放到数据存储器。
[m] ← ACC“OR”[m]
Z
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
197
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LRR [m]
指令说明
功能表示
影响标志位
LRRA [m]
指令说明
功能表示
影响标志位
LRRC [m]
指令说明
功能表示
影响标志位
LRRCA [m]
指令说明
功能表示
影响标志位
LSBC A, [m]
指令说明
功能表示
影响标志位
Rev.1.00
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
无
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
198
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LSBCM A, [m]
指令说明
功能表示
影响标志位
LSDZ [m]
指令说明
功能表示
影响标志位
LSDZA [m]
指令说明
Rev.1.00
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 则
跳过下一条指令,由于取得下一个指令时会要求插入一个
空指令周期,所以此指令为 3 个周期的指令。如果结果不
为 0,则程序继续执行下一条指令。
[m] ← [m] – 1,如果 [m]=0 跳过下一条指令执行
无
功能表示
影响标志位
Skip if decrement Data Memory is zero with result in ACC
将指定数据存储器内容减 1,判断是否为 0,如果为 0 则跳
过下一条指令,此结果将存放到累加器,但指定数据存储
器内容不变。由于取得下一个指令时会要求插入一个空指
令周期,所以此指令为 3 个周期的指令。如果结果不为 0,
则程序继续执行下一条指令。
ACC ← [m] – 1,如果 ACC=0 跳过下一条指令执行
无
LSET [m]
指令说明
功能表示
影响标志位
Set Data Memory
将指定数据存储器的每一个位置位为 1。
[m] ← FFH
无
LSET [m].i
指令说明
功能表示
影响标志位
Set bit of Data Memory
将指定数据存储器的第 i 位置位为 1。
[m].i ← 1
无
199
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LSIZ [m]
指令说明
功能表示
影响标志位
LSIZA [m]
指令说明
功能表示
影响标志位
LSNZ [m].i
指令说明
功能表示
影响标志位
LSNZ [m]
指令说明
功能表示
影响标志位
LSUB A, [m]
指令说明
功能表示
影响标志位
Rev.1.00
Skip if increment Data Memory is 0
将指定的数据存储器的内容加 1,判断是否为 0,若为 0 则
跳过下一条指令。由于取得下一个指令时会要求插入一个
空指令周期,所以此指令为 3 个周期的指令。如果结果不
为 0,则程序继续执行下一条指令。
[m] ←[m] + 1,如果 [m]=0 跳过下一条指令执行
无
Skip if increment Data Memory is zero with result in ACC
将指定数据存储器的内容加 1,判断是否为 0,如果为 0 则
跳过下一条指令,此结果会被存放到累加器,但是指定数
据存储器的内容不变。由于取得下一个指令时会要求插入
一个空指令周期,所以此指令为 3 个周期的指令。如果结
果不为 0,则程序继续执行下一条指令。
ACC ←[m] + 1,如果 ACC=0 跳过下一条指令执行
无
Skip if bit i of Data Memory is not 0
判断指定数据存储器的第 i 位,若不为 0,则程序跳过下
一条指令执行。由于取得下一个指令时会要求插入一个空
指令周期,所以此指令为 3 个周期的指令。如果结果为 0,
则程序继续执行下一条指令。
如果 [m].i≠0,跳过下一条指令执行
无
Skip if Data Memory is not 0
判断指定数据存储器,若不为 0,则程序跳过下一条指令
执行。由于取得下一个指令时会要求插入一个空指令周期,
所以此指令为 3 个周期的指令。如果结果为 0,则程序继
续执行下一条指令。
如果 [m]≠0,跳过下一条指令执行
无
Subtract Data Memory from ACC
将累加器的内容减去指定的数据存储器的数据,把结果存
放到累加器。如果结果为负,C 标志位清除为 0,反之结果
为正或 0,C 标志位设置为 1。
ACC ← ACC – [m]
OV、Z、AC、C、SC、CZ
200
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LSUBM A, [m]
指令说明
功能表示
影响标志位
Subtract Data Memory from ACC with result in Data Memory
将累加器的内容减去指定数据存储器的数据,结果存放到
指定的数据存储器。如果结果为负,C 标志位清除为 0,
反之结果为正或 0,C 标志位设置为 1。
[m] ← ACC – [m]
OV、Z、AC、C、SC、CZ
LSWAP [m]
指令说明
功能表示
影响标志位
Swap nibbles of Data Memory
将指定数据存储器的低 4 位和高 4 位互相交换。
[m].3~[m].0 ↔ [m].7~[m].4
无
LSWAPA [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
无
功能表示
影响标志位
LSZ [m]
指令说明
功能表示
影响标志位
LSZA [m]
指令说明
功能表示
影响标志位
Rev.1.00
Skip if Data Memory is 0
判断指定数据存储器的内容是否为 0,若为 0,则程序跳过
下一条指令执行。由于取得下一个指令时会要求插入一个
空指令周期,所以此指令为 3 个周期的指令。如果结果不
为 0,则程序继续执行下一条指令。
如果 [m]=0,跳过下一条指令执行
无
Skip if Data Memory is 0 with data movement to ACC
将指定数据存储器内容复制到累加器,并判断指定数据存
储器的内容是否为 0,若为 0 则跳过下一条指令。由于取
得下一个指令时会要求插入一个空指令周期,所以此指令
为 3 个周期的指令。如果结果不为 0,则程序继续执行下
一条指令。
ACC ← [m],如果 [m]=0,跳过下一条指令执行
无
201
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LSZ [m].i
指令说明
功能表示
影响标志位
LTABRD [m]
指令说明
功能表示
影响标志位
LTABRDL [m]
指令说明
功能表示
影响标志位
LITABRD [m]
指令说明
功能表示
影响标志位
LITABRDL [m]
指令说明
功能表示
影响标志位
Rev.1.00
Skip if bit i of Data Memory is 0
判断指定数据存储器的第 i 位是否为 0,若为 0,则跳过下
一条指令。由于取得下一个指令时会要求插入一个空指令
周期,所以此指令为 3 个周期的指令。如果结果不为 0,
则程序继续执行下一条指令。
如果 [m].i=0,跳过下一条指令执行
无
Move the ROM code (specific page) to TBLH and data memory
将表格指针对 TBHP 和 TBLP 所指的程序代码低字节 ( 指
定页 ) 移至指定数据存储器且将高字节移至 TBLH。
[m] ← 程序代码 ( 低字节 )
TBLH ← 程序代码 ( 高字节 )
无
Read table (last page) to TBLH and Data Memory
将表格指针 TBLP 所指的程序代码低字节 ( 最后一页 )
移至指定数据存储器且将高字节移至 TBLH。
[m] ← 程序代码 ( 低字节 )
TBLH ← 程序代码 ( 高字节 )
无
Increment table pointer low byte first and read table (specific
page) to TBLH and data memory
自加表格指针低字节 TBLP,将表格指针对 TBHP 和 TBLP
所指的程序代码低字节 ( 指定页 ) 移至指定的数据存储器
且将高字节移至 TBLH。
[m] ← 程序代码 ( 低字节 )
TBLH ← 程序代码 ( 高字节 )
无
Increment table pointer low byte first and read table (last page)
to TBLH and data memory
自加表格指针低字节 TBLP,将表格指针 TBLP 所指的程序
代码低字节 ( 最后一页 ) 移至指定的数据存储器且将高字节
移至 TBLH。
[m] ← 程序代码 ( 低字节 )
TBLH ← 程序代码 ( 高字节 )
无
202
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
LXOR A, [m]
指令说明
功能表示
影响标志位
LXORM A, [m]
指令说明
功能表示
影响标志位
Rev.1.00
Logical XOR Data Memory to ACC
将累加器的数据和指定的数据存储器内容逻辑异或,
结果存放到累加器。
ACC ← ACC“XOR”[m]
Z
Logical XOR ACC to Data Memory
将累加器的数据和指定的数据存储器内容逻辑异或,
结果放到数据存储器。
[m] ← ACC“XOR”[m]
Z
203
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
封装信息
请注意,这里提供的封装信息仅作为参考。由于这个信息经常更新,提醒用户
咨询 Holtek 网站 以获取最新版本的封装信息。
封装信息的相关内容如下所示,点击可链接至 Holtek 网站相关信息页面。
● 封装信息 ( 包括外形尺寸、包装带和卷轴规格 )
● 封装材料信息
● 纸箱信息
Rev.1.00
204
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
64-pin LQFP (7mm × 7mm) 外形尺寸
符号
A
B
C
D
E
F
G
H
I
J
K
α
符号
A
B
C
D
E
F
G
H
I
J
K
α
Rev.1.00
最小值
—
—
—
—
—
0.005
0.053
—
0.002
0.018
0.004
0°
尺寸 ( 单位:inch )
典型值
0.354 BSC
0.276 BSC
0.354 BSC
0.276 BSC
0.016 BSC
0.007
0.055
—
—
0.024
—
—
最大值
—
—
—
—
—
0.009
0.057
0.063
0.006
0.030
0.008
7°
最小值
—
—
—
—
—
0.13
1.35
—
0.05
0.45
0.09
0°
尺寸 ( 单位:mm )
典型值
9.00 BSC
7.00 BSC
9.00 BSC
7.00 BSC
0.40 BSC
0.18
1.40
—
—
0.60
—
—
最大值
—
—
—
—
—
0.23
1.45
1.60
0.15
0.75
0.20
7°
205
2021-02-03
BH67F2265
R 型血压计 Flash 单片机内置 LCD
Copyright© 2021 by HOLTEK SEMICONDUCTOR INC.
使用指南中所出现的信息在出版当时相信是正确的,然而 Holtek 对于说明书的使用不负任何责任。
文中提到的应用目的仅仅是用来做说明,Holtek 不保证或表示这些没有进一步修改的应用将是适当
的,也不推荐它的产品使用在会由于故障或其它原因可能会对人身造成危害的地方。Holtek 产品不
授权使用于救生、维生从机或系统中做为关键从机。Holtek 拥有不事先通知而修改产品的权利,对
于最新的信息,请参考我们的网址 http://www.holtek.com/zh/.
Rev.1.00
206
2021-02-03