C8051F80x and C8051F83x 混合信号 ISP 闪存 MCU 系列

C8051F80x-83x
混合信号 ISP 闪存 MCU 系列
高速 8051 μC 内核
- 管线指令体系结构;执行 1 个或 2 个系统时钟中
数字转换器电容
- 支持按钮、滑动器、齿轮和电容接近感应
- 每通道 40 μs 快速转换时间
- 16 位分辨率
- 多达 16 条输入通道
- 自动扫描和触碰唤醒
- 自动累积 4x、 8x、 16、 32x 和 64x 样品
模拟外围设备
- 10 位 ADC
• 高达 500 ksps
• 多达 16 个外部单端输入
• 片上 VREF、外部针脚或 VDD 的 VREF
• 转换源的内部或外部启动
• 内置温度传感器
- 比较器
• 可调节的迟滞性和响应时间
• 可设置为中断或复位源
片上调试
- 片上调试电路提供全速的非侵入式系统内调试
-
-
型 SPI™ 串行端口
三个通用 16 位计数器/定时器
配置三个捕捉/比较模块和增强 PWM 功能的 16 位
可编程计数器阵列 (PCA)
使用定时器和晶体的实时时钟模式
时钟源
- 24.5 兆赫 ±2% 振荡器
• 支持无晶 UART 运算
- 外部振荡器:晶体、 RC、 C 或时钟 (1 或 2 个针
(无需仿真器)
提供断点、单步执行、检查/调节内存和寄存器
具有使用 ICE 芯片、目标特性板和插座仿真系统的
卓越性能
低成本、完整的开发套件
脚模式)
- 可在时钟源运行间转换;可在省电模式中使用
供电电压 1.8 至 3.6 伏
- 内置供电电压监控器
24 针 QSOP、 20 针 QFN、 16 针 SOIC 温度范
围:–40 至 +85 °C
模拟外围设备
A
M
U
X
10 位
500 ksps
ADC
数字 I/O
温度
传感器
+
电容传感
–
UART
SMBus
SPI
PCA
定时器 0
定时器 1
定时器 2
端口 0
交叉开关
-
70% 的指令
- 高达 25 MIPS 吞吐率和 25 兆赫时钟脉冲
- 扩展的中断处理程序
内存
- 高达 512 字节的内部数据 RAM (256 + 256)
- 高达 16 千字节闪存;系统内可在 512 字节段内编程
数字外围设备
- 17 或 13 个高灌电流端口 I/O
- 硬件增强型 UART、 SMBus™ (I2C 兼容)和增强
P1.0P1.3
P1.4P1.7
P2.0
电压比较器
24.5 兆赫精确内部振荡器
高速控制器内核
修订 1.0 7/10
16 千字节
ISP 闪存
8051 CPU
(25 MIPS)
灵活中断
调试电路
512 字节 RAM
POR
© 2010 年由 Silicon Laboratories 版权所有
WDT
C8051F80x-83x
C8051F80x-83x
2
Rev. 0.2
C8051F80x-83x
目录
1. 系统概览..................................................................................................................... 15
2. 订购资料..................................................................................................................... 25
3. 针脚定义..................................................................................................................... 28
4. QFN-20 封装规格....................................................................................................... 33
5. QSOP-24 封装规格 .................................................................................................... 35
6. SOIC-16 封装规格...................................................................................................... 37
7. 电气特性..................................................................................................................... 39
7.1. 绝对值最大规格 ................................................................................................. 39
7.2. 电气特性 ............................................................................................................ 40
8. 10 位 ADC (ADC0) .................................................................................................... 46
8.1. 输出代码格式 ..................................................................................................... 47
8.2. 8 位模式 ............................................................................................................ 47
8.3. 操作模式 ............................................................................................................ 47
8.3.1. 启动转换.................................................................................................... 47
8.3.2. 追踪模式.................................................................................................... 48
8.3.3. 设置时间要求............................................................................................. 49
8.4. 可编程窗口探测器.............................................................................................. 53
8.4.1. 窗口探测器范例 ......................................................................................... 55
8.5. ADC0 模拟多路复用器....................................................................................... 56
9. 温度传感器 ................................................................................................................. 58
9.1. 校准
............................................................................................................ 58
10. 电压与接地基准选项................................................................................................. 60
10.1. 外部电压基准 ................................................................................................... 60
10.2. 内部电压基准选项............................................................................................ 61
10.3. 模拟接地基准 ................................................................................................... 61
10.4. 温度传感器启用 ............................................................................................... 61
11. 稳压器 (REG0) ......................................................................................................... 63
12. 比较器 0 ................................................................................................................... 65
12.1. 比较器多路复用器............................................................................................ 69
13. 电容传感 (CS0) ........................................................................................................ 71
13.1. 端口针脚配置为电容传感输入.......................................................................... 72
13.2. 电容传感启动转换源 ........................................................................................ 72
13.3. 自动扫描 .......................................................................................................... 72
13.4. CS0 比较器...................................................................................................... 73
13.5. CS0 转换累加器............................................................................................... 74
13.6. 电容传感多路复用器 ........................................................................................ 80
14. CIP-51 微控制器 ...................................................................................................... 82
14.1. 指令集 ............................................................................................................ 83
14.1.1. 指令和 CPU 定时..................................................................................... 83
14.2. CIP-51 寄存器说明 .......................................................................................... 88
15. 内存组织................................................................................................................... 92
15.1. 程序内存 .......................................................................................................... 93
15.1.1. MOVX 指令和程序内存 ........................................................................... 93
Rev. 1.0
3
C8051F80x-83x
15.2. 数据内存 .......................................................................................................... 93
15.2.1. 内部 RAM ................................................................................................ 93
15.2.1.1. 通用寄存器...................................................................................... 94
15.2.1.2. 位寻址 ............................................................................................ 94
15.2.1.3. 堆栈 ............................................................................................ 94
16. 系统内设备识别........................................................................................................ 95
17. 特殊功能寄存器........................................................................................................ 97
18. 中断........................................................................................................................ 102
18.1. MCU 中断源和矢量........................................................................................ 103
18.1.1. 中断优先级 ............................................................................................ 103
18.1.2. 中断延时................................................................................................ 103
18.2. 中断寄存器说明 ............................................................................................. 104
18.3. INT0 和 INT1 外部中断 .................................................................................. 111
19. 闪存........................................................................................................................ 113
19.1. 编程闪存 ........................................................................................................ 113
19.1.1. 闪存锁定和主要功能.............................................................................. 113
19.1.2. 闪存擦除程序......................................................................................... 113
19.1.3. 闪存写入步骤......................................................................................... 114
19.2. 非易失性数据存储.......................................................................................... 114
19.3. 安全选项 ........................................................................................................ 114
19.4. 闪存写入和擦除指引 ...................................................................................... 115
19.4.1. VDD 维护和 VDD 监控器 ...................................................................... 116
19.4.2. PSWE 维护 ........................................................................................... 116
19.4.3. 系统时钟................................................................................................ 117
20. 电源管理模式 ......................................................................................................... 120
20.1. 空闲模式 ........................................................................................................ 120
20.2. 停止模式 ........................................................................................................ 121
20.3. 暂停模式 ........................................................................................................ 121
21. 复位源 .................................................................................................................... 123
21.1. 启动复位 ........................................................................................................ 124
21.2. 掉电复位/ VDD 监视器 ................................................................................ 125
21.3. 外部复位 ........................................................................................................ 126
21.4. 缺失时钟探测器复位 ...................................................................................... 126
21.5. 比较器 0 复位................................................................................................. 127
21.6. PCA 看门狗复位 ............................................................................................ 127
21.7. 闪存故障复位 ................................................................................................. 127
21.8. 软件复位 ........................................................................................................ 127
22. 振荡器和时钟选择寄存器 ....................................................................................... 129
22.1. 系统时钟选择 ................................................................................................. 129
22.2. 可编程内部高频 (H-F) 振荡器 ........................................................................ 131
22.3. 外部振荡器驱动电路 ...................................................................................... 133
22.3.1. 外部晶体范例......................................................................................... 135
22.3.2. 外部 RC 范例......................................................................................... 136
22.3.3. 外部电容器范例 ..................................................................................... 137
23. 端口输入 / 输出....................................................................................................... 138
4
Rev. 1.0
C8051F80x-83x
23.1. 端口 I/O 模式操作 .......................................................................................... 139
23.1.1. 为模拟 I/O 配置端口针脚 ....................................................................... 139
23.1.2. 为数字 I/O 配置端口针脚 ....................................................................... 139
23.1.3. 连接端口 I/O 至 5 伏逻辑....................................................................... 140
23.2. 分配端口 I/O 针脚至模拟和数字功能 ............................................................. 140
23.2.1. 分配端口 I/O 针脚至模拟功能................................................................ 140
23.2.2. 分配端口 I/O 针脚至数字功能................................................................ 141
23.2.3. 分配端口 I/O 针脚至外部数字事件捕捉功能 .......................................... 142
23.3. 优先级交叉开关编码器................................................................................... 143
23.4. 端口 I/O 初始化.............................................................................................. 147
23.5. 端口匹配 ........................................................................................................ 150
23.6. 访问和配置端口 I/O 的特殊功能寄存器.......................................................... 152
24. 循环冗余检验单位 (CRC0) ..................................................................................... 159
24.1. 16 位 CRC 算法 ............................................................................................. 160
24.2. 32 位 CRC 算法 ............................................................................................. 161
24.3. 准备 CRC 计算 .............................................................................................. 162
24.4. 执行 CRC 计算 .............................................................................................. 162
24.5. 存取 CRC0 结果 ............................................................................................ 162
24.6. CRC0 位元反转特征 ...................................................................................... 166
25. 增强型串行外围接口 (SPI0) ................................................................................... 167
25.1. 信号说明 ........................................................................................................ 168
25.1.1. 主输出、从输入 (MOSI) ........................................................................ 168
25.1.2. 主输入、从输出 (MISO) ........................................................................ 168
25.1.3. 串行时钟 (SCK) ..................................................................................... 168
25.1.4. 从选择 (NSS)......................................................................................... 168
25.2. SPI0 主模式操作............................................................................................ 168
25.3. SPI0 从模式操作............................................................................................ 170
25.4. SPI0 中断源 ................................................................................................... 171
25.5. 串行时钟相位和极性 ...................................................................................... 171
25.6. SPI 特殊功能寄存器....................................................................................... 173
26. SMBus................................................................................................................... 180
26.1. 辅助文件 ........................................................................................................ 181
26.2. SMBus 配置寄存器 ........................................................................................ 181
26.3. SMBus 操作................................................................................................... 181
26.3.1. 发送器与接收器 ..................................................................................... 182
26.3.2. 仲裁 ..................................................................................................... 182
26.3.3. 时钟低电平扩展 ..................................................................................... 182
26.3.4. SCL 低电平超时 .................................................................................... 182
26.3.5. SCL 高电平 (SMBus 空闲)超时 ........................................................ 183
26.4. 使用 SMBus................................................................................................... 183
26.4.1. SMBus 配置寄存器................................................................................ 183
26.4.2. SMB0CN 控制寄存器 ............................................................................ 187
26.4.2.1. 软件 ACK 发生器 .......................................................................... 187
26.4.2.2. 硬件 ACK 发生器 .......................................................................... 187
26.4.3. 硬件从地址识别 ..................................................................................... 189
Rev. 1.0
5
C8051F80x-83x
26.4.4. 数据寄存器 ............................................................................................ 192
26.5. SMBus 传输模式............................................................................................ 193
26.5.1. 写入顺序 (主)..................................................................................... 193
26.5.2. 读取顺序 (主)..................................................................................... 194
26.5.3. 写入顺序 (从)..................................................................................... 195
26.5.4. 读取顺序 (从)..................................................................................... 196
26.6. SMBus 状态解码............................................................................................ 196
27. UART0 ................................................................................................................... 201
27.1. 增强型波特率发生器 ...................................................................................... 202
27.2. 操作模式 ........................................................................................................ 203
27.2.1. 8 位 UART............................................................................................. 203
27.2.2. 9 位 UART............................................................................................. 204
27.3. 多处理器通信 ................................................................................................. 205
28. 定时器 .................................................................................................................... 209
28.1. 定时器 0 和定时器 1 ...................................................................................... 211
28.1.1. 模式 0:13 位计数器 / 定时器 ............................................................... 211
28.1.2. 模式 1:16 位计数器 / 定时器 ............................................................... 212
28.1.3. 模式 2:8 位自动重载计数器 / 定时器 ................................................... 212
28.1.4. 模式 3:两个 8 位计数器 / 定时器 (仅限定时器 0)............................. 213
28.2. 定时器 2......................................................................................................... 219
28.2.1. 16 位自动重载定时器 ............................................................................ 219
28.2.2. 8 位自动重载定时器 .............................................................................. 220
29. 可编程计数器阵列 .................................................................................................. 225
29.1. PCA 计数器 / 定时器...................................................................................... 226
29.2. PCA0 中断源 ................................................................................................. 227
29.3. 捕捉 / 比较模块 .............................................................................................. 228
29.3.1. 边缘触发捕捉模式 ................................................................................. 229
29.3.2. 软件定时器 (比较)模式...................................................................... 230
29.3.3. 高速输出模式......................................................................................... 231
29.3.4. 频率输出模式......................................................................................... 232
29.3.5. 8 位至 15 位脉冲宽度调制器模式 ......................................................... 232
29.3.5.1. 8 位脉冲宽度调制器模式............................................................... 233
29.3.5.2. 9 位至 15 位脉冲宽度调制器模式.................................................. 234
29.3.6. 16 位脉冲宽度调制器模式 .................................................................... 235
29.4. 看门狗模式..................................................................................................... 236
29.4.1. 看门狗操作 ............................................................................................ 236
29.4.2. 看门狗用法 ............................................................................................ 237
29.5. PCA0 寄存器说明 .......................................................................................... 237
30. C2 接口 .................................................................................................................. 244
30.1. C2 接口寄存器 ............................................................................................... 244
30.2. C2CK 针脚共享.............................................................................................. 247
文件更新一览表............................................................................................................ 248
联络资料....................................................................................................................... 250
6
Rev. 1.0
C8051F80x-83x
表一览表
1. 系统概览
2. 订购资料
表 2.1. 产品选择指南 ............................................................................................. 26
3. 针脚定义
表 3.1. C8051F80x-83x 针脚定义 .......................................................................... 28
4. QFN-20 封装规格
表 4.1. QFN-20 封装尺寸 ....................................................................................... 33
表 4.2. QFN-20 印制电路板焊盘图形尺寸 .............................................................. 34
5. QSOP-24 封装规格
表 5.1. QSOP-24 封装尺寸 .................................................................................... 35
表 5.2. QSOP-24 印制电路板焊盘图形尺寸 ........................................................... 36
6. SOIC-16 封装规格
表 6.1. SOIC-16 封装尺寸 ...................................................................................... 37
表 6.2. SOIC-16 印制电路板焊盘图形尺寸 ............................................................ 38
7. 电气特性
表 7.1. 绝对值最大等级 .......................................................................................... 39
表 7.2. 全球电气特性 ............................................................................................. 40
表 7.3. 端口 I/O DC 电气特性 ................................................................................ 41
表 7.4. 复位电气特性 ............................................................................................. 41
表 7.5. 内部稳压器电气特性 ................................................................................... 41
表 7.6. 闪存电气特性 ............................................................................................. 42
表 7.7. 内部高频振荡器电气特性 ........................................................................... 42
表 7.8. 电容传感电气特性 ...................................................................................... 42
表 7.9. ADC0 电气特性 .......................................................................................... 43
表 7.10. 电源管理电气特性 .................................................................................... 44
表 7.11. 温度传感器电气特性 ................................................................................. 44
表 7.12. 电压基准电气特性 .................................................................................... 44
表 7.13. 比较器电气特性 ........................................................................................ 45
8. 10 位 ADC (ADC0)
9. 温度传感器
10. 电压与接地基准选项
11. 稳压器 (REG0)
12. 比较器 0
13. 电容传感 (CS0)
表 13.1. 自动扫描和累加的操作 ............................................................................. 74
14. CIP-51 微控制器
表 14.1. CIP-51 指令集一览表 ............................................................................... 84
15. 内存组织
16. 系统内设备识别
17. 特殊功能寄存器
表 17.1. 特殊功能寄存器 (SFR) 存储器映像 .......................................................... 97
表 17.2. 特殊功能寄存器 ........................................................................................ 98
Rev. 1.0
7
C8051F80x-83x
18. 中断
表 18.1:中断概述 ................................................................................................ 104
19. 闪存
表 19.1:闪存安全概述 ......................................................................................... 115
20. 电源管理模式
21. 复位源
22. 振荡器和时钟选择寄存器
23. 端口输入 / 输出
表 23.1:端口 I/O 模拟功能分配 ........................................................................... 141
表 23.2:端口 I/O 数字功能分配 ........................................................................... 142
表 23.3:端口 I/O 外部数字事件捕捉功能分配 ..................................................... 142
24. 循环冗余检验单位 (CRC0)
表 24.1:16 位 CRC 输出范例 .............................................................................. 160
表 24.2:32 位 CRC 输出范例 .............................................................................. 161
25. 增强型串行外围接口 (SPI0)
表 25.1:SPI 从定时参数 ...................................................................................... 179
26. SMBus
表 26.1:SMBus 时钟源选择 ................................................................................ 184
表 26.2:最小 SDA 建立和保持时间 ..................................................................... 185
表 26.3:SMB0CN 硬件更换源 ............................................................................ 189
表 26.4:硬件地址识别范例 (EHACK = 1) ............................................................ 190
表 26.5:SMBus 状态解码 (禁用硬件 ACK 发生器)(EHACK = 0) .................... 197
表 26.6:SMBus 状态解码 (启用硬件 ACK 发生器)(EHACK = 1) .................... 199
27. UART0
表 27.1:使用内部 24.5 MHz 振荡器进行标准波特率的定时器设置 ..................... 208
表 27.2:使用外部 22.1184 MHz 振荡器进行标准波特率的定时器设置 ............... 208
28. 定时器
29. 可编程计数器阵列
表 29.1:PCA 时基输入选项 ................................................................................ 226
表 29.2:PCA 捕捉 / 比较模块的 PCA0CPM 和 PCA0PWM 位设置 1,2,3,4,5,6 ...... 228
表 29.3:看门狗超时间隔 1 .................................................................................. 237
30. C2 接口
8
Rev. 1.0
C8051F80x-83x
图一览表
1. 系统概览
图 1.1. C8051F800、 C8051F806、 C8051F812、 C8051F818 结构图 ............... 16
图 1.2. C8051F801、 C8051F807、 C8051F813、 C8051F819 结构图 ............... 17
图 1.3. C8051F802、 C8051F808、 C8051F814、 C8051F820 结构图 ............... 18
图 1.4. C8051F803、 C8051F809、 C8051F815、 C8051F821 结构图 ............... 19
图 1.5. C8051F804、 C8051F810、 C8051F816、 C8051F822 结构图 ............... 20
图 1.6. C8051F805、 C8051F811、 C8051F817、 C8051F823 结构图 ............... 21
图 1.7. C8051F824、 C8051F827、 C8051F830、 C8051F833 结构图 ............... 22
图 1.8. C8051F825、 C8051F828、 C8051F831、 C8051F834 结构图 ............... 23
图 1.9. C8051F826、 C8051F829、 C8051F832、 C8051F835 结构图 ............... 24
2. 订购资料
3. 针脚定义
图 3.1. QFN-20 针脚分布图 (俯视图) ................................................................. 30
图 3.2. QSOP-24 针脚分布图 (俯视图) .............................................................. 31
图 3.3. SOIC-16 针脚分布图 (俯视图) ................................................................ 32
4. QFN-20 封装规格
图 4.1. QFN-20 封装图 .......................................................................................... 33
图 4.2. QFN-20 推荐的印制电路板焊盘图形 .......................................................... 34
5. QSOP-24 封装规格
图 5.1. QSOP-24 封装图 ........................................................................................ 35
图 5.2. QSOP-24 印制电路板焊盘图形 .................................................................. 36
6. SOIC-16 封装规格
图 6.1. SOIC-16 封装图 ......................................................................................... 37
图 6.2. SOIC-16 印制电路板焊盘图形 .................................................................... 38
7. 电气特性
8. 10 位 ADC (ADC0)
图 8.1. ADC0 功能结构图 ...................................................................................... 46
图 8.2. 10 位 ADC 追踪和转换范例定时 ................................................................ 48
图 8.3. ADC0 等效输入电路 ................................................................................... 49
图 8.4. ADC 窗口比较范例:右对齐数据 ............................................................... 55
图 8.5. ADC 窗口比较范例:左对齐数据 ............................................................... 55
图 8.6. ADC0 多路复用器功能结构图 .................................................................... 56
9. 温度传感器
图 9.1. 温度传感器转移函数 ................................................................................... 58
图 9.2. 在 0 °C 附近 1 点校准的温度传感器误差 .................................................... 59
10. 电压与接地基准选项
图 10.1. 电压基准功能结构图 ................................................................................. 60
11. 稳压器 (REG0)
12. 比较器 0
图 12.1. 比较器 0 功能结构图 ................................................................................ 65
图 12.2. 比较器迟滞数据表 .................................................................................... 66
图 12.3. 比较器输入多路复用器结构图 ................................................................... 69
Rev. 1.0
9
C8051F80x-83x
13. 电容传感 (CS0)
图 13.1. CS0 结构图 .............................................................................................. 71
图 13.2. 自动扫描范例 ........................................................................................... 73
图 13.3. CS0 多路复用器结构图 ............................................................................ 80
14. CIP-51 微控制器
图 14.1. CIP-51 结构图 .......................................................................................... 82
15. 内存组织
图 15.1. C8051F80x-83x 存储器映像 .................................................................... 92
图 15.2. 闪存程序存储器映像 ................................................................................. 93
16. 系统内设备识别
17. 特殊功能寄存器
18. 中断
19. 闪存
20. 电源管理模式
21. 复位源
图 21.1. 复位源 ..................................................................................................... 123
图 21.2. 启动和 VDD 监视器复位定时 ................................................................... 124
22. 振荡器和时钟选择寄存器
图 22.1. 振荡器选项 .............................................................................................. 129
图 22.2. 外部 32.768 千赫石英晶体振荡器接线图 ................................................. 136
23. 端口输入 / 输出
图 23.1. 端口 I/O 功能结构图 ................................................................................ 138
图 23.2. 端口 I/O 单元结构图 ................................................................................ 139
图 23.3. 端口 I/O 超速电流 .................................................................................... 140
图 23.4. 优先级交叉开关编码器潜在针脚分配 ....................................................... 144
图 23.5. 优先级交叉开关编码器范例 1 -无跳过针脚 ........................................... 145
图 23.6. 优先级交叉开关编码器范例 2 -跳过针脚 ............................................... 146
24. 循环冗余检验单位 (CRC0)
图 24.1. CRC0 结构图 ........................................................................................... 159
25. 增强型串行外围接口 (SPI0)
图 25.1. SPI 结构图 ............................................................................................... 167
图 25.2. 多主模式接线图 ....................................................................................... 169
图 25.3. 3 线单主模式和 3 线单从模式接线图 ....................................................... 169
图 25.4. 4 线单主模式和 4 线从模式接线图 .......................................................... 170
图 25.5. 主模式数据 / 时钟定时 ............................................................................. 172
图 25.6. 从模式数据 / 时钟定时 (CKPHA = 0) ....................................................... 172
图 25.7. 从模式数据 / 时钟定时 (CKPHA = 1) ....................................................... 173
图 25.8. SPI 主定时 (CKPHA = 0) ......................................................................... 177
图 25.9. SPI 主定时 (CKPHA = 1) ......................................................................... 177
图 25.10. SPI 从定时 (CKPHA = 0) ....................................................................... 178
图 25.11. SPI 从定时 (CKPHA = 1) ....................................................................... 178
26. SMBus
图 26.1. SMBus 结构图 ......................................................................................... 180
图 26.2. 典型 SMBus 配置 .................................................................................... 181
图 26.3. SMBus 传输 ............................................................................................ 182
10
Rev. 1.0
C8051F80x-83x
图 26.4. 典型 SMBus SCL 发生器 ......................................................................... 184
图 26.5. 典型主发送器写入顺序 ............................................................................ 193
图 26.6. 典型主接收器读取顺序 ............................................................................ 194
图 26.7. 典型从接收器写入顺序 ............................................................................ 195
图 26.8. 典型从发送器读取顺序 ............................................................................ 196
27. UART0
图 27.1. UART0 结构图 ......................................................................................... 201
图 27.2. UART0 波特率逻辑 ................................................................................. 202
图 27.3. UART 互连图 ........................................................................................... 203
图 27.4. 8 位 UART 定时图 ................................................................................... 203
图 27.5. 9 位 UART 定时图 ................................................................................... 204
图 27.6. UART 多处理器模式互连图 ..................................................................... 205
28. 定时器
图 28.1. T0 模式 0 结构图 ..................................................................................... 212
图 28.2. T0 模式 2 结构图 ..................................................................................... 213
图 28.3. T0 模式 3 结构图 ..................................................................................... 214
图 28.4. 定时器 2 16 位模式结构图 ....................................................................... 219
图 28.5. 定时器 2 8 位模式结构图 ......................................................................... 220
29. 可编程计数器阵列
图 29.1. PCA 结构图 ............................................................................................. 225
图 29.2. PCA 计数器 / 定时器结构图 ..................................................................... 226
图 29.3. PCA 中断结构图 ...................................................................................... 227
图 29.4. PCA 捕捉模式图 ...................................................................................... 229
图 29.5. PCA 软件定时器模式图 ........................................................................... 230
图 29.6. PCA 高速输出模式图 ............................................................................... 231
图 29.7. PCA 频率输出模式 .................................................................................. 232
图 29.8. PCA 8 位 PWM 模式图 ............................................................................ 233
图 29.9. PCA 9 位至 15 位 PWM 模式图 .............................................................. 234
图 29.10. PCA 16 位 PWM 模式图 ........................................................................ 235
图 29.11. 启用看门狗的 PCA 模块 2 ..................................................................... 236
30. C2 接口
图 30.1:典型 C2 针脚共享 .................................................................................. 247
Rev. 1.0
11
C8051F80x-83x
12
Rev. 1.0
C8051F80x-83x
寄存器一览表
SFR 定义 8.1. ADC0CF:ADC0 配置寄存器 .............................................................. 50
SFR 定义 8.2. ADC0H:ADC0 数据字 MSB 寄存器 ................................................... 51
SFR 定义 8.3. ADC0L:ADC0 数据字 LSB 寄存器 .................................................... 51
SFR 定义 8.4. ADC0CN:ADC0 控制寄存器 .............................................................. 52
SFR 定义 8.5. ADC0GTH:ADC0 下限数据高字节寄存器 ......................................... 53
SFR 定义 8.6. ADC0GTL:ADC0 下限数据低字节寄存器 .......................................... 53
SFR 定义 8.7. ADC0LTH:ADC0 上限数据高字节寄存器 .......................................... 54
SFR 定义 8.8. ADC0LTL:ADC0 上限数据低字节寄存器 ........................................... 54
SFR 定义 8.9. ADC0MX:AMUX0 通道选择寄存器 ................................................... 57
SFR 定义 10.1. REF0CN: 电压基准控制寄存器 .......................................................... 62
SFR 定义 11.1. REG0CN:稳压器控制寄存器 ........................................................... 64
SFR 定义 12.1. CPT0CN:比较器 0 控制寄存器 ........................................................ 67
SFR 定义 12.2. CPT0MD: 比较器 0 模式选择 ............................................................. 68
SFR 定义 12.3. CPT0MX:比较器 0 MUX 选择寄存器 ................................................. 70
SFR 定义 13.1. CS0CN:电容传感控制寄存器 .......................................................... 75
SFR 定义 13.2. CS0CF:电容传感配置寄存器 ........................................................... 76
SFR 定义 13.3. CS0DH:电容传感数据高字节寄存器 ................................................ 77
SFR 定义 13.4. CS0DL:电容传感数据低字节寄存器 ................................................ 77
SFR 定义 13.5. CS0SS:电容传感自动扫描启动通道寄存器 (Capacitive Sense
Auto-Scan Start Channel) ............................................................................................. 78
SFR 定义 13.6. CS0SE:电容传感自动扫描结束通道寄存器 (Capacitive Sense
Auto-Scan End Channel) .............................................................................................. 78
SFR 定义 13.7. CS0THH:电容传感比较器阈值高字节寄存器 (Capacitive Sense
Comparator Threshold High Byte) ................................................................................ 79
SFR 定义 13.8. CS0THL:电容传感比较器阈值低字节寄存器 (Capacitive Sense
Comparator Threshold Low Byte) ................................................................................. 79
SFR 定义 13.9. CS0MX:电容传感 Mux 通道选择 ..................................................... 81
SFR 定义 14.1. DPL:数据指针低字节寄存器 ............................................................ 88
SFR 定义 14.2. DPH:数据指针高字节寄存器 ........................................................... 88
SFR 定义 14.3. SP:堆栈指针寄存器 ......................................................................... 89
SFR 定义 14.4. ACC:累加器 ..................................................................................... 89
SFR 定义 14.5. B:B 寄存器 ...................................................................................... 90
SFR 定义 14.6. PSW:程序状态字寄存器 .................................................................. 91
SFR 定义 16.1. HWID:硬件 ID 字节寄存器 ............................................................... 95
SFR 定义 16.2. DERIVID:硬件 ID 字节寄存器 .......................................................... 96
SFR 定义 16.3. REVID:硬件版本 ID 字节寄存器 ...................................................... 96
SFR 定义 18.1: IE:中断允许寄存器 ........................................................................ 105
SFR 定义 18.2: IP:中断优先级寄存器 .................................................................... 106
SFR 定义 18.3: EIE1:扩展中断允许 1 寄存器 ........................................................ 107
SFR 定义 18.4: EIE2:扩展中断允许 2 寄存器 ........................................................ 108
SFR 定义 18.5: EIP1:扩展中断优先级 1 寄存器 ..................................................... 109
SFR 定义 18.6: EIP2:扩展中断优先级 2 寄存器 ..................................................... 110
SFR 定义 18.7: IT01CF: INT0 / INT1 配置寄存器 ................................................ 112
Rev. 1.0
12
C8051F80x-83x
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
13
19.1: PSCTL:程序存储读写控制寄存器 ................................................. 118
19.2: FLKEY:闪存锁定和关键码寄存器 ................................................. 119
20.1: PCON:电源控制寄存器 ................................................................. 122
21.1: VDM0CN:VDD 监视器控制寄存器 ................................................ 126
21.2: RSTSRC:复位源 ........................................................................... 128
22.1: CLKSEL:时钟选择 ........................................................................ 130
22.2: OSCICL:内部 H-F 振荡器校准 ...................................................... 131
22.3: OSCICN:内部 H-F 振荡器控制 ..................................................... 132
22.4: OSCXCN:外部振荡器控制寄存器 ................................................. 134
23.1: XBR0:端口 I/O 交叉开关寄存器 0 ................................................. 148
23.2: XBR1:端口 I/O 交叉开关寄存器 1 ................................................. 149
23.3: P0MASK:端口 0 屏蔽寄存器 ......................................................... 151
23.4: P0MAT:端口 0 匹配寄存器 ........................................................... 151
23.5: P1MASK:端口 1 屏蔽寄存器 ......................................................... 152
23.6: P1MAT:端口 1 匹配寄存器 ........................................................... 152
23.7: P0:端口 0 ...................................................................................... 153
23.8: P0MDIN:端口 0 输入模式 ............................................................. 154
23.9: P0MDOUT:端口 0 输出模式 ......................................................... 154
23.10: P0SKIP:端口 0 跳过寄存器 ......................................................... 155
23.11: P1: 端口 1 ..................................................................................... 155
23.12: P1MDIN:端口 1 输入模式 ........................................................... 156
23.13: P1MDOUT:端口 1 输出模式 ....................................................... 156
23.14: P1SKIP:端口 1 跳过寄存器 ......................................................... 157
23.15: P2: 端口 2 ..................................................................................... 157
23.16: P2MDOUT:端口 2 输出模式 ....................................................... 158
24.1: CRC0CN:CRC0 控制寄存器 ......................................................... 163
24.2: CRC0IN:CRC 数据输入寄存器 ..................................................... 164
24.3: CRC0DATA:CRC 数据输出寄存器 ............................................... 164
24.4: CRC0AUTO:CRC 自动控制寄存器 ............................................... 165
24.5: CRC0CNT:CRC 自动闪存扇区总数寄存器 ................................... 165
24.6: CRC0FLIP:CRC 位翻转寄存器 ..................................................... 166
25.1: SPI0CFG:SPI0 配置寄存器 .......................................................... 174
25.2: SPI0CN:SPI0 控制寄存器 ............................................................. 175
25.3: SPI0CKR:SPI0 时钟频率寄存器 ................................................... 176
25.4: SPI0DAT:SPI0 数据寄存器 ........................................................... 176
26.1: SMB0CF:SMBus 时钟 / 配置寄存器 ............................................. 186
26.2: SMB0CN:SMBus 控制寄存器 ....................................................... 188
26.3: SMB0ADR:SMBus 从地址寄存器 ................................................. 191
26.4: SMB0ADM:SMBus 从地址屏蔽寄存器 ......................................... 191
26.5: SMB0DAT:SMBus 数据寄存器 ..................................................... 192
27.1: SCON0:串行端口 0 控制寄存器 .................................................... 206
27.2: SBUF0:串行 (UART0) 端口数据缓冲器 ........................................ 207
28.1: CKCON:时钟控制寄存器 .............................................................. 210
28.2: TCON:定时器控制寄存器 ............................................................. 215
28.3: TMOD:定时器模式 ........................................................................ 216
Rev. 1.0
C8051F80x-83x
SFR 定义 28.4: TL0:定时器 0 低字节寄存器 .......................................................... 217
SFR 定义 28.5: TL1:定时器 1 低字节寄存器 .......................................................... 217
SFR 定义 28.6: TH0:定时器 0 高字节寄存器 ......................................................... 218
SFR 定义 28.7: TH1:定时器 1 高字节寄存器 ......................................................... 218
SFR 定义 28.8: TMR2CN:定时器 2 控制寄存器 ..................................................... 222
SFR 定义 28.9: TMR2RLL:定时器 2 重载寄存器低字节 ........................................ 223
SFR 定义 28.10: TMR2RLH:定时器 2 重载寄存器高字节 ...................................... 223
SFR 定义 28.11: TMR2L:定时器 2 低字节寄存器 .................................................. 224
SFR 定义 28.12: TMR2H 定时器 2 高字节寄存器 .................................................... 224
SFR 定义 29.1: PCA0CN:PCA0 控制寄存器 ......................................................... 238
SFR 定义 29.2: PCA0MD:PCA0 模式 .................................................................... 239
SFR 定义 29.3: PCA0PWM:PCA0 PWM 配置寄存器 ............................................ 240
SFR 定义 29.4: PCA0CPMn:PCA0 捕捉 / 比较模式寄存器 ................................... 241
SFR 定义 29.5: PCA0L:PCA0 计数器 / 定时器低字节寄存器 ................................. 242
SFR 定义 29.6: PCA0H:PCA0 计数器 / 定时器高字节 ........................................... 242
SFR 定义 29.7: PCA0CPLn:PCA0 捕捉模块低字节寄存器 .................................... 243
SFR 定义 29.8: PCA0CPHn:PCA0 捕捉模块高字节寄存器 ................................... 243
C2 寄存器定义 30.1:C2ADD:C2 地址寄存器 ........................................................ 244
C2 寄存器定义 30.2:DEVICEID:C2 设备 ID .......................................................... 244
C2 寄存器定义 30.3:REVID:C2 版本 ID ................................................................ 245
C2 寄存器定义 30.4:FPCTL:C2 闪存编程控制寄存器 ........................................... 246
C2 寄存器定义 30.5:FPDAT:C2 闪存编程数据寄存器 .......................................... 246
Rev. 1.0
14
C8051F80x-83x
15
Rev. 1.0
C8051F80x-83x
1. 系统概览
C8051F80x-83x 设备为完全集成、混合信号、片上系统电容传感的 MCU。主要部件列示如下。有关特定产
品部件选择和部件订购编号,请参阅表 2.1。
高速流水线
8051 兼容微控制器内核 (高达 25 MIPS)
系统内、全速、非侵入式调试接口 (片上)
具有 16 条输入通道的电容传感接口
具有 16 条通道模拟多路复用器和集成温度传感器的 10 位 500 ksps 单端 ADC
精密的 24.5 兆赫内部振荡器
16 千字节片上闪存
512 字节片上 RAM
硬件中应用的 ?SMBus/I2C、增强型 UART 和增强型 SPI 串行接口
三个通用 16 位定时器
具有三个捕捉/比较模块的可编程计数器/定时器阵列 (PCA)
片上内部电压基准
片上看门狗
片上启动复位和电源监控器
片上电压比较器
17 个通用 I/O
由于带有片上启动复位、 VDD 监视器、看门狗和时钟振荡器, C8051F80x-83x 设备成为一个真正独立的片
上系统解决方案。该设备甚至可在线改编闪存,前提是非易失数据存储,且允许 8051 固件现场升级。用户
软件已完成所有外围设备的控制,并可单独关闭任何或所有外围设备以节省电力。
C8051F80x-83x 处理器包括 Silicon Laboratories 的 2 线 C2 调试和编程接口,可利用安装到最终应用中的
产品 MCU,进行非侵入性 (不使用片上资源)、全速、在线调试。该调试逻辑支持进行内存检查、查看和
修改特殊功能寄存器、设置断点、单步执行以及运行和停止命令。使用 C2 调试时,所有模拟和数字外围设
备均具有完善的功能。两个 C2 接口针脚可通过用户功能共享,在不占用封装针脚的情况下允许系统调试。
每个设备在整个工业温度范围 (–45 至 +85 °C)内均被指定为以 1.8–3.6 伏运转。内部 LDO 稳压器用于
提供 1.8 伏的处理器内核电压。端口 I/O 和 RST 针脚能接受达 5 伏的输入信号。有关订购资料,请参阅
表 2.1。 C8051F80x-83x 系列的设备结构图列示于图 1.1 至 图 1.9。
Rev. 1.0
15
C8051F80x-83x
CIP-51 8051
控制器内核
启动复位
Reset
端口 I/O 设置
数字外围设备
闪存
‘F800/6: 16 千字节
‘F812/8: 8 千字节
UART
定时器
0、1
256 字节 RAM
RST/C2CK
调试/编程
硬件
256 字节 XRAM
定时器
2 / RTC
P2.0/C2D
SMBus
SFR
Bus
VDD
稳压器
SPI
内核电源
交叉开关控制
GND
模拟
外围设备
SYSCLK
精确内部
振荡器
XTAL1
XTAL2
外部时钟
电路
端口 1
驱动
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
优先级
交叉开关
编码器
PCA/
WDT
外围电源
端口 0
驱动
P0.0/VREF
P0.1/AGND
P0.2/XTAL1
P0.3/XTAL2
P0.4/TX
P0.5/RX
P0.6/CNVSTR
P0.7
+
-
比较器
VDD
10 位
500 ksps
ADC
系统时钟设置
端口 2
驱动
电容传感
A
M
U
X
VREF
A
M
U
X
16 条通道
VREG 输出
(仅‘F800、‘F812)
VREG 输出
VDD
16 条通道
温度传感器
图 1.1. C8051F800、 C8051F806、 C8051F812、 C8051F818 结构图
16
Rev. 1.0
P2.0/C2D
C8051F80x-83x
CIP-51 8051
控制器内核
启动复位
复位
端口 I/O 设置
数字外围设备
闪存
‘F801/7: 16 千字节
‘F813/9: 8 千字节
UART
定时器
0、1
256 字节 RAM
RST/C2CK
调试/编程
硬件
256 字节 XRAM
定时器
2 / RTC
P2.0/C2D
SMBus
SFR
Bus
VDD
稳压器
交叉开关控制
SYSCLK
精确内部
振荡器
XTAL1
XTAL2
SPI
内核电源
GND
外部时钟
电路
系统时钟设置
端口 1
驱动
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
优先级
交叉开关
编码器
PCA/
WDT
外围电源
端口 0
驱动
P0.0/VREF
P0.1/AGND
P0.2/XTAL1
P0.3/XTAL2
P0.4/TX
P0.5/RX
P0.6/CNVSTR
P0.7
模拟
外围设备
+
-
比较器
VDD
10 位
500 ksps
ADC
端口 2
驱动
电容传感
A
M
U
X
VREF
A
M
U
X
P2.0/C2D
8 条通道
VREG 输出
(仅‘F801、‘F813)
VREG 输出
VDD
16 条通道
温度传感器
图 1.2. C8051F801、 C8051F807、 C8051F813、 C8051F819 结构图
Rev. 1.0
17
C8051F80x-83x
CIP-51 8051
控制器内核
启动复位
复位
端口 I/O 设置
数字外围设备
闪存
‘F802/8: 16 千字节
‘F814, ‘F820: 8 千字节
UART
定时器
0、1
256 字节 RAM
RST/C2CK
调试/编程
硬件
256 字节 XRAM
定时器
2 / RTC
P2.0/C2D
SMBus
SFR
Bus
VDD
稳压器
端口 1
驱动
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
优先级
交叉开关
编码器
PCA/
WDT
外围电源
端口 0
驱动
P0.0/VREF
P0.1/AGND
P0.2/XTAL1
P0.3/XTAL2
P0.4/TX
P0.5/RX
P0.6/CNVSTR
P0.7
SPI
内核电源
交叉开关控制
端口 2
驱动
GND
SYSCLK
模拟外围设备
精确内部
振荡器
XTAL1
XTAL2
外部时钟
电路
+
-
比较器
VDD
10 位
500 ksps
ADC
系统时钟设置
A
M
U
X
VREF
A
M
U
X
VREG 输出
(仅‘F802、‘F814)
VREG 输出
VDD
16 条通道
温度传感器
图 1.3. C8051F802、 C8051F808、 C8051F814、 C8051F820 结构图
18
Rev. 1.0
P2.0/C2D
C8051F80x-83x
CIP-51 8051
控制器内核
启动复位
复位
端口 I/O 设置
数字外围设备
闪存
‘F803/9: 16 千字节
‘F815, ‘F821: 8 千字节
UART
256 字节 RAM
RST/C2CK
调试/编程
硬件
256 字节 XRAM
定时器
2 / RTC
P2.0/C2D
交叉开关控制
SYSCLK
精确内部
振荡器
XTAL2
外部时钟
电路
系统时钟设置
P1.0
P1.1
P1.2
P1.3
SPI
内核电源
GND
XTAL1
端口 1
驱动
SMBus
SFR
Bus
稳压器
优先级
交叉开关
编码器
PCA/
WDT
外围电源
VDD
端口 0
驱动
定时器
0、1
P0.0/VREF
P0.1/AGND
P0.2/XTAL1
P0.3/XTAL2
P0.4/TX
P0.5/RX
P0.6/CNVSTR
P0.7
模拟
外围设备
+
-
比较器
VDD
10 位
500 ksps
ADC
端口 2
驱动
电容传感
A
M
U
X
VREF
A
M
U
X
P2.0/C2D
12 条通道
VREG 输出
(仅‘F803、‘F815)
VREG 输出
VDD
12 条通道
温度传感器
图 1.4. C8051F803、 C8051F809、 C8051F815、 C8051F821 结构图
Rev. 1.0
19
C8051F80x-83x
CIP-51 8051
控制器内核
启动复位
复位
端口 I/O 设置
数字外围设备
闪存
‘F804, ‘F810: 16 千字节
‘F816, ‘F822: 8 千字节
UART
256 字节 RAM
RST/C2CK
调试/编程
硬件
256 字节 XRAM
定时器
2 / RTC
P2.0/C2D
内核电源
交叉开关控制
模拟
外围设备
SYSCLK
精确内部
振荡器
XTAL2
外部时钟
电路
+
-
比较器
VDD
10 位
500 ksps
ADC
系统时钟设置
端口 2
驱动
电容传感
A
M
U
X
VREF
A
M
U
X
8 条通道
VREG 输出
(仅‘F804、‘F816)
VREG 输出
VDD
12 条通道
温度传感器
图 1.5. C8051F804、 C8051F810、 C8051F816、 C8051F822 结构图
20
P1.0
P1.1
P1.2
P1.3
SPI
GND
XTAL1
端口 1
驱动
SMBus
SFR
Bus
稳压器
优先级
交叉开关
编码器
PCA/
WDT
外围电源
VDD
端口 0
驱动
定时器
0、1
P0.0/VREF
P0.1/AGND
P0.2/XTAL1
P0.3/XTAL2
P0.4/TX
P0.5/RX
P0.6/CNVSTR
P0.7
Rev. 1.0
P2.0/C2D
C8051F80x-83x
CIP-51 8051
控制器内核
启动复位
复位
端口 I/O 设置
数字外围设备
闪存
‘F805, ‘F811: 16 千字节
‘F817, ‘F823: 8 千字节
UART
256 字节 RAM
RST/C2CK
调试/编程
硬件
256 字节 XRAM
定时器
2 / RTC
P2.0/C2D
端口 1
驱动
SMBus
SFR
Bus
稳压器
优先级
交叉开关
编码器
PCA/
WDT
外围电源
VDD
端口 0
驱动
定时器
0、1
P0.0/VREF
P0.1/AGND
P0.2/XTAL1
P0.3/XTAL2
P0.4/TX
P0.5/RX
P0.6/CNVSTR
P0.7
P1.0
P1.1
P1.2
P1.3
SPI
内核电源
交叉开关控制
端口 2
驱动
P2.0/C2D
GND
SYSCLK
精确内部
振荡器
XTAL1
XTAL2
外部时钟
电路
系统时钟设置
模拟外围设备
+
-
比较器
VDD
10 位
500 ksps
ADC
A
M
U
X
VREF
A
M
U
X
VREG 输出
(仅‘F805、‘F817)
VREG 输出
VDD
12 条通道
温度传感器
图 1.6. C8051F805、 C8051F811、 C8051F817、 C8051F823 结构图
Rev. 1.0
21
C8051F80x-83x
CIP-51 8051
控制器内核
端口 I/O 设置
数字外围设备
启动复位
复位
RST/C2CK
调试/编程
硬件
闪存
‘F824, ‘F827: 8 千字节
‘F830, ‘F833: 4 千字节
UART
256 字节 RAM
定时器
2 / RTC
P2.0/C2D
内核电源
交叉开关控制
模拟
外围设备
SYSCLK
精确内部
振荡器
XTAL2
外部时钟
电路
+
-
比较器
VDD
10 位
500 ksps
ADC
系统时钟设置
端口 2
驱动
电容传感
A
M
U
X
VREF
A
M
U
X
12 条通道
VREG 输出
(仅‘F824、‘F830)
VREG 输出
VDD
12 条通道
温度传感器
图 1.7. C8051F824、 C8051F827、 C8051F830、 C8051F833 结构图
22
P1.0
P1.1
P1.2
P1.3
SPI
GND
XTAL1
端口 1
驱动
SMBus
SFR
Bus
稳压器
优先级
交叉开关
编码器
PCA/
WDT
外围电源
VDD
端口 0
驱动
定时器
0、1
P0.0/VREF
P0.1/AGND
P0.2/XTAL1
P0.3/XTAL2
P0.4/TX
P0.5/RX
P0.6/CNVSTR
P0.7
Rev. 1.0
P2.0/C2D
C8051F80x-83x
CIP-51 8051
控制器内核
端口 I/O 设置
数字外围设备
启动复位
复位
RST/C2CK
调试/编程
硬件
闪存
‘F825, ‘F828: 8 千字节
‘F831, ‘F834: 4 千字节
UART
256 字节 RAM
定时器
2 / RTC
P2.0/C2D
交叉开关控制
SYSCLK
精确内部
振荡器
XTAL2
外部时钟
电路
系统时钟设置
P1.0
P1.1
P1.2
P1.3
SPI
内核电源
GND
XTAL1
端口 1
驱动
SMBus
SFR
Bus
稳压器
优先级
交叉开关
编码器
PCA/
WDT
外围电源
VDD
端口 0
驱动
定时器
0、1
P0.0/VREF
P0.1/AGND
P0.2/XTAL1
P0.3/XTAL2
P0.4/TX
P0.5/RX
P0.6/CNVSTR
P0.7
模拟
外围设备
+
-
比较器
VDD
10 位
500 ksps
ADC
端口 2
驱动
电容传感
A
M
U
X
VREF
A
M
U
X
P2.0/C2D
8 条通道
VREG 输出
(仅‘F825、‘F831)
VREG 输出
VDD
12 条通道
温度传感器
图 1.8. C8051F825、 C8051F828、 C8051F831、 C8051F834 结构图
Rev. 1.0
23
C8051F80x-83x
CIP-51 8051
控制器内核
端口 I/O 设置
数字外围设备
启动复位
复位
RST/C2CK
调试/编程
硬件
闪存
‘F826, ‘F829: 千字节
‘F832, ‘F835: 千字节
UART
256 字节 RAM
定时器
2 / RTC
P2.0/C2D
端口 1
驱动
SMBus
SFR
Bus
稳压器
优先级
交叉开关
编码器
PCA/
WDT
外围电源
VDD
端口 0
驱动
定时器
0、1
内核电源
交叉开关控制
SYSCLK
端口 2
驱动
模拟外围设备
精确内部
振荡器
XTAL2
外部时钟
电路
+
-
比较器
VDD
10 位
500 ksps
ADC
系统时钟设置
A
M
U
X
VREF
A
M
U
X
VREG 输出
(仅‘F826、‘F832)
VREG 输出
VDD
12 条通道
温度传感器
图 1.9. C8051F826、 C8051F829、 C8051F832、 C8051F835 结构图
24
P1.0
P1.1
P1.2
P1.3
SPI
GND
XTAL1
P0.0/VREF
P0.1/AGND
P0.2/XTAL1
P0.3/XTAL2
P0.4/TX
P0.5/RX
P0.6/CNVSTR
P0.7
Rev. 1.0
P2.0/C2D
C8051F80x-83x
2. 订购资料
所有 C8051F80x-83x 设备均具备以下特征:

25 MIPS (峰值)

已校准内部振荡器
SMBus / I2C

增强型 SPI
 UART


可编程计数器阵列 (3 条通道)

3 个定时器 (16 位)

1 个比较器

无铅 (通过 RoHS 认证)封装
除上述特征外, C8051F80x-83x 系列中的各设备还具有与该产品系列不同的一系列特征。请参见表 2.1,
了解该系列中各设备具有的独有特征一览表。
Rev. 1.0
25
C8051F80x-83x
26
部件编号
数字端口
I/O
电容传感
通道
闪存
(千字节)
RAM
(字节)
10 位
500 ksps
ADC
ADC
通道
温度传感器
封装
(RoHS)
表 2.1. 产品选择指南
C8051F800-GU
17
16
16
512

16

QSOP-24
C8051F801-GU
17
8
16
512

16

QSOP-24
C8051F802-GU
17
—
16
512

16

QSOP-24
C8051F800-GM
17
16
16
512

16

QFN-20
QFN-20
C8051F801-GM
17
8
16
512

16

C8051F802-GM
17
—
16
512

16

QFN-20
C8051F803-GS
13
12
16
512

12

SOIC-16
C8051F804-GS
13
8
16
512

12

SOIC-16
SOIC-16
C8051F805-GS
13
—
16
512

12

C8051F806-GU
17
16
16
512
—
—
—
QSOP-24
C8051F807-GU
17
8
16
512
—
—
—
QSOP-24
C8051F808-GU
17
—
16
512
—
—
—
QSOP-24
C8051F806-GM
17
16
16
512
—
—
—
QFN-20
C8051F807-GM
17
8
16
512
—
—
—
QFN-20
C8051F808-GM
17
—
16
512
—
—
—
QFN-20
C8051F809-GS
13
12
16
512
—
—
—
SOIC-16
C8051F810-GS
13
8
16
512
—
—
—
SOIC-16
C8051F811-GS
13
—
16
512
—
—
—
SOIC-16
C8051F812-GU
17
16
8
512

16

QSOP-24
C8051F813-GU
17
8
8
512

16

QSOP-24
QSOP-24
C8051F814-GU
17
—
8
512

16

C8051F812-GM
17
16
8
512

16

QFN-20
C8051F813-GM
17
8
8
512

16

QFN-20
C8051F814-GM
17
—
8
512

16

QFN-20
SOIC-16
C8051F815-GS
13
12
8
512

12

C8051F816-GS
13
8
8
512

12

SOIC-16
C8051F817-GS
13
—
8
512

12

SOIC-16
C8051F818-GU
17
16
8
512
—
—
—
QSOP-24
C8051F819-GU
17
8
8
512
—
—
—
QSOP-24
C8051F820-GU
17
—
8
512
—
—
—
QSOP-24
C8051F818-GM
17
16
8
512
—
—
—
QFN-20
C8051F819-GM
17
8
8
512
—
—
—
QFN-20
C8051F820-GM
17
—
8
512
—
—
—
QFN-20
C8051F821-GS
13
12
8
512
—
—
—
SOIC-16
C8051F822-GS
13
8
8
512
—
—
—
SOIC-16
Rev. 1.0
C8051F80x-83x
部件编号
数字端口
I/O
电容传感
通道
闪存
(千字节)
RAM
(字节)
10 位
500 ksps
ADC
ADC
通道
温度传感器
封装
(RoHS)
表 2.1. 产品选择指南 (Continued)
C8051F823-GS
13
—
8
512
—
—
—
SOIC-16
C8051F824-GS
13
12
8
256

12

SOIC-16
C8051F825-GS
13
8
8
256

12

SOIC-16
C8051F826-GS
13
—
8
256

12

SOIC-16
C8051F827-GS
13
12
8
256
—
—
—
SOIC-16
C8051F828-GS
13
8
8
256
—
—
—
SOIC-16
C8051F829-GS
13
—
8
256
—
—
—
SOIC-16
C8051F830-GS
13
12
4
256

12

SOIC-16
SOIC-16
C8051F831-GS
13
8
4
256

12

C8051F832-GS
13
—
4
256

12

SOIC-16
C8051F833-GS
13
12
4
256
—
—
—
SOIC-16
C8051F834-GS
13
8
4
256
—
—
—
SOIC-16
C8051F835-GS
13
—
4
256
—
—
—
SOIC-16
所有设备上的含铅材料均为 100% 雾锡 (Sn)。
Rev. 1.0
27
C8051F80x-83x
28
Rev. 1.0
C8051F80x-83x
3. 针脚定义
表 3.1. C8051F80x-83x 针脚定义
名称
针脚
QSOP-24
针脚
QFN-20
针脚
SOIC-16
GND
5
2
4
接地。
必需进行该接地连接。中心板可连接至地面或连
接在 QFN-20 封装上。
VDD
6
3
5
电源电压。
RST/
7
4
6
8
5
7
数字 I/O 设备复位。内部 POR 或 VDD 监控器开路输出。
外部信源可以通过使针脚降低至少 10 微秒来启
动系统复位。
数字 I/O C2 调试接口双向数据信号。与 P2.0 共享 20 针
封装及与 P2.4 共享 24 针封装。
数字 I/O C2 调试接口双向数据信号。与 P2.0 共享 20 针
封装及与 P2.4 共享 24 针封装。
C2D
P0.0/
说明
数字 I/O C2 调试接口时钟信号。
C2CK
P2.0/
类型
4
1
3
数字 I/O 端口 0.0。
或音频
输入
音频输入 外部 VREF 输入。
VREF
P0.1
3
20
2
数字 I/O 端口 0.1。
或音频
输入
P0.2/
2
19
1
数字 I/O 端口 0.2。
或音频
输入
音频输入 外部时钟输入。此针脚为晶体或谐振器的外部振
荡器回路。
XTAL1
P0.3/
23
18
16
音频 I/O 外部时钟输出。就外部晶体或谐振器而言,此针
或数字 脚为自激驱动。此针脚为 CMOS、电容器或 RC
输入
振荡器设置的外部时钟输入。
XTAL2
P0.4
数字 I/O 端口 0.3。
或音频
输入
22
17
15
数字 I/O 端口 0.4。
或音频
输入
Rev. 1.0
28
C8051F80x-83x
表 3.1. C8051F80x-83x 针脚定义 (Continued)
名称
针脚
QSOP-24
针脚
QFN-20
针脚
SOIC-16
P0.5
21
16
14
数字 I/O 端口 0.5。
或音频
输入
P0.6/
20
15
13
数字 I/O 端口 0.6。
或音频
输入
说明
数字输入 ADC0 外部转化启动或 IDA0 更新信源输入。
CNVSTR
29
类型
P0.7
19
14
12
数字 I/O 端口 0.7。
或音频
输入
P1.0
18
13
11
数字 I/O 端口 1.0。
或音频
输入
P1.1
17
12
10
数字 I/O 端口 1.1。
或音频
输入
P1.2
16
11
9
数字 I/O 端口 1.2。
或音频
输入
P1.3
15
10
8
数字 I/O 端口 1.3。
或音频
输入
P1.4
14
9
数字 I/O 端口 1.4。
或音频
输入
P1.5
11
8
数字 I/O 端口 1.5。
或音频
输入
P1.6
10
7
数字 I/O 端口 1.6。
或音频
输入
P1.7
9
6
数字 I/O 端口 1.7。
或音频
输入
NC
1, 12, 13,
24
无连接。
Rev. 1.0
P0.1
P0.2
P0.3
P0.4
P0.5
19
18
17
16
GND
10
5
P1.3
P2.0/C2D
9
4
P1.4
RST/C2CK
8
3
P1.5
VDD
C8051F80x-GM
C8051F81x-GM
C8051F82x-GM
俯视图
7
2
P1.6
GND
6
1
P1.7
P0.0
20
C8051F80x-83x
15
P0.6
14
P0.7
13
P1.0
12
P1.1
11
P1.2
图 3.1. QFN-20 针脚分布图 (俯视图)
Rev. 1.0
30
C8051F80x-83x
俯视图
NC
1
24
NC
P0.2
2
23
P0.3
P0.1
3
22
P0.4
P0.0
4
21
P0.5
GND
5
20
P0.6
VDD
6
19
P0.7
RST / C2CK
7
18
P1.0
P2.0/C2D
8
17
P1.1
P1.7
9
16
P1.2
P1.6
10
15
P1.3
P1.5
11
14
P1.4
NC
12
13
NC
C8051F80x-GU
C8051F81x-GU
C8051F82x-GU
图 3.2. QSOP-24 针脚分布图 (俯视图)
31
Rev. 1.0
C8051F80x-83x
俯视图
P0.2
1
16
P0.3
P0.1
2
15
P0.4
P0.0
3
14
P0.5
GND
4
13
P0.6
VDD
5
12
P0.7
RST / C2CK
6
11
P1.0
P2.0/C2D
7
10
P1.1
P1.3
8
9
P1.2
C8051F80x-GS
C8051F81x-GS
C8051F82x-GS
C8051F83x-GS
图 3.3. SOIC-16 针脚分布图 (俯视图)
Rev. 1.0
32
C8051F80x-83x
33
Rev. 1.0
C8051F80x-83x
4. QFN-20 封装规格
图 4.1. QFN-20 封装图
表 4.1. QFN-20 封装尺寸
尺寸
最小值
特有值
最大值
尺寸
最小值
特有值
最大值
A
A1
b
D
D2
e
E
E2
0.80
0.00
0.18
0.90
0.02
0.25
4.00 BSC.
2.15
0.50 BSC.
4.00 BSC.
2.15
1.00
0.05
0.30
L
L1
aaa
bbb
ddd
eee
Z
Y
0.45
0.00
—
—
—
—
—
—
0.55
—
—
—
—
—
0.43
0.18
0.65
0.15
0.15
0.10
0.05
0.08
—
—
2.00
2.00
2.25
2.25
附注:
1. 除非另有注明,否则,所有尺寸都以毫米 (mm) 列示。
2. 尺寸和容差参照 ANSI Y14.5M-1994。
3. 本图纸符合 JEDEC 固态外形图 MO-220、公差 VGGD,但自定义特征 D2、 E2、 Z、 Y 和 L 的容
差则依循供应商指示。
4. 获推荐的卡回流资料符合 JEDEC/IPC J-STD-020 有关小型元件的规格。
Rev. 1.0
33
C8051F80x-83x
图 4.2. QFN-20 推荐的印制电路板焊盘图形
表 4.2. QFN-20 印制电路板焊盘图形尺寸
尺寸
C1
C2
E
X1
最小值
最大值
3.70
3.70
0.50
0.20
尺寸
最小值
最大值
X2
Y1
Y2
2.15
0.90
2.15
2.25
1.00
2.25
0.30
附注:
一般情况
1. 除非另有注明,否则,所有尺寸都以毫米 (mm) 列示。
2. 尺寸和容差参照 ANSI Y14.5M-1994 的规格。
3. 本焊盘图形根据 IPC-7351 的指引设计。
阻焊层设计
4. 所有金属板都为非阻焊层限定 (NSMD)。阻焊层与金属板之间的间距至少为 60 μm,一直
沿着金属板排列。
模板设计
5. 应使用不锈钢、激光切割并已电镀的模板以及梯形墙,以确保适当释放焊膏。
6. 模板厚度应为 0.125 mm (千分之五寸)。
7. 所有外围针脚的模板开孔与焊盘尺寸的比例应为 1:1。
8. 中心板应在 1.1 mm 的间距上 2x2 阵列的 0.95 mm 开口,以确保焊膏数量恰当。
卡组装
9. 建议使用免清洗的 3 型焊膏。
10. 获推荐的卡回流资料符合 JEDEC/IPC J-STD-020 有关小型元件的规格。
34
Rev. 1.0
C8051F80x-83x
5. QSOP-24 封装规格
基准平面
底 座面
详图
详 图
图 5.1. QSOP-24 封装图
表 5.1. QSOP-24 封装尺寸
尺寸
最小值
正常值
最大值
尺寸
最小值
正常值
最大值
A
A1
b
c
—
0.10
0.20
0.10
—
—
—
1.75
0.25
0.30
0.40
0.25
—
0.25 BSC
—
0.20
1.27
—
8.65 BSC
6.00 BSC
3.90 BSC
0.635 BSC
L
L2
θ
aaa
D
E
E1
e
0º
bbb
ccc
ddd
8º
0.18
0.10
0.10
附注:
1. 除非另有注明,否则,所有尺寸都以毫米 (mm) 列示。
2. 尺寸和容差参照 ANSI Y14.5M-1994。
3. 本图纸符合 JEDEC 外形图 MO-137、公差 AE。
4. 获推荐的卡回流资料符合 JEDEC/IPC J-STD-020 有关小型元件的规格。
Rev. 1.0
35
C8051F80x-83x
图 5.2. QSOP-24 印制电路板焊盘图形
表 5.2. QSOP-24 印制电路板焊盘图形尺寸
尺寸
最小值
最大值
C
E
X
Y
5.20
5.30
0.635 BSC
0.30
1.50
0.40
1.60
附注:
一般情况
1. 除非另有注明,否则,所有尺寸都以毫米 (mm) 列示。
2. 本焊盘图形根据 IPC-7351 的指引设计。
阻焊层设计
3. 所有金属板都为非阻焊层限定 (NSMD)。阻焊层与金属板之间的间距至少为 60 μm,一直沿着金属板排列。
模板设计
4. 应使用不锈钢、激光切割并已电镀的模板以及梯形墙,以确保适当释放焊膏。
5. 模板厚度应为 0.125 mm (千分之五寸)。
6. 所有外围焊盘的模板开孔与焊盘尺寸的比例应为 1:1。
卡组装
7. 建议使用免清洗的 3 型焊膏。
8. 获推荐的卡回流资料符合 JEDEC/IPC J-STD-020 有关小型元件的规格。
36
Rev. 1.0
C8051F80x-83x
6. SOIC-16 封装规格
图 6.1. SOIC-16 封装图
表 6.1. SOIC-16 封装尺寸
尺寸
最小值
A
A1
A2
b
c
—
0.10
1.25
0.31
0.17
D
E
E1
e
正常值
最大值
尺寸
最小值
1.75
0.25
—
0.51
L
L2
h
θ
aaa
0.40
0.25
9.90 BSC
6.00 BSC
3.90 BSC
1.27 BSC
正常值
最大值
1.27
0.25 BSC
0.25
0º
bbb
ccc
ddd
0.50
8º
0.10
0.20
0.10
0.25
附注:
1. 除非另有注明,否则,所有尺寸都以毫米 (mm) 列示。
2. 尺寸和容差参照 ANSI Y14.5M-1994。
3. 本图纸符合 JEDEC 固态外形图 MS-012、公差 AC。
4. 获推荐的卡回流资料符合 JEDEC/IPC J-STD-020 有关小型元件的规格。
Rev. 1.0
37
C8051F80x-83x
图 6.2. SOIC-16 印制电路板焊盘图形
表 6.2. SOIC-16 印制电路板焊盘图形尺寸
尺寸
特征
(mm)
C1
E
X1
Y1
焊盘列间距
焊盘行距
焊盘宽度
焊盘长度
5.40
1.27
0.60
1.55
附注:
一般情况
1. 除非另有注明,否则,所有尺寸都以毫米 (mm) 列示。
2. 本焊盘图形根据 IPC-7351 图形 SOIC127P600X165-16N 的密度等级 B (中等焊盘突出)设计。
3. 所有形体尺寸都按最大实体条件 (MMC) 列示,且已假设卡制作公差为 0.05 mm。
38
Rev. 1.0
C8051F80x-83x
7. 电气特性
7.1. 绝对值最大规格
表 7.1. 绝对值最大等级
参数
条件
最小值
特有值
最大值
单位
偏差内环境温度
–55
—
125
°C
存储温度
–65
—
150
°C
RST 或任何端口 I/O 针脚上的 GND
电压
–0.3
—
5.8
V
VDD 上的 GND 电压
–0.3
—
4.2
V
通过 VDD 及 GND 的最大总电流
—
—
500
mA
流入 RST 或任何端口针脚的最大输出
电流
—
—
100
mA
附注: 如使用负荷超过 “ 绝对值最大等级 ” 所列数值,可能对设备造成永久损害。上表仅列出负荷等级,并未说明设
备在上述或高于规格操作列表所指的任何其它条件下的功能性操作。如设备长期处于最大的等级条件下,
则其可靠性可能受到损害。
Rev. 1.0
39
C8051F80x-83x
7.2. 电气特性
表 7.2. 全球电气特性
除非另有指明,否则,温度为 –40 至 +85 °C,系统时钟为 25 MHz。
参数
条件
供电电压
最小值 特有值 最大值
单位
1.8
3.0
3.6
V
CPU 激活时 (正常模式 1)的
数字电源电流
VDD 为 1.8 V,时钟为 25 MHz
VDD 为 1.8 V,时钟为 1 MHz
VDD 为 1.8 V,时钟为 32 kHz
VDD 为 3.0 V,时钟为 25 MHz
VDD 为 3.0 V,时钟为 1 MHz
VDD 为 3.0 V,时钟为 32 kHz
—
—
—
—
—
—
4.6
1.2
135
5.5
1.3
150
6.0
—
—
6.5
—
—
mA
mA
µA
mA
mA
µA
CPU 未激活时 (空闲模式 1)
的数字电源电流
VDD 为 1.8 V,时钟为 25 MHz
VDD 为 1.8 V,时钟为 1 MHz
VDD 为 1.8 V,时钟为 32 kHz
VDD 为 3.0 V,时钟为 25 MHz
VDD 为 3.0 V,时钟为 1 MHz
VDD 为 3.0 V,时钟为 32 kHz
—
—
—
—
—
—
2
190
100
2.3
335
115
2.6
—
—
2.8
—
—
mA
µA
µA
mA
µA
µA
数字电源电流 (关机)
振荡器未运行 (停止模式),内部
稳压器关闭 , 25 °C
—
0.5
2
µA
振荡器未运行 (停止或暂停模式),
内部稳压器启动 , 25 °C
—
105
140
µA
—
1.3
—
V
–40
—
+85
°C
0
—
25
MHz
Tsysl (SYSCLK 低时间)
18
—
—
ns
Tsysl (SYSCLK 高时间)
18
—
—
ns
数字电源 RAM 数据保留电压
指定操作温度范围
SYSCLK (系统时钟频率)
请参见附注 2
附注:
1. 包括内部稳压器的偏差电流。
2. SYSCLK 必须低于 32 kHz,以启动调试。
40
Rev. 1.0
C8051F80x-83x
表 7.3. 端口 I/O DC 电气特性
除非另有指明,否则, VDD 为 1.8 至 3.6 V,温度为 –40 至 +85 °C。
参数
输出高压
输出低压
输入高压
输入低压
输入泄露电流
条件
最小值
特有值
最大值
单位
IOH 为 –3 mA,端口 I/O 为推拉式
IOH 为 –10 μA,端口 I/O 为推拉式
IOH 为 –10 mA,端口 I/O 为推拉式
IOL 为 8.5 mA
IOL 为 10 µA
IOL 为 25 mA
VDD – 0.7
VDD - 0.1
—
—
—
—
0.75 x VDD
—
–1
—
—
—
VDD - 0.8
—
—
1.0
—
—
—
15
—
—
—
0.6
0.1
—
—
0.6
1
50
V
V
V
V
V
V
V
V
µA
µA
弱上拉关闭
弱上拉开启, VIN 为 0 V
表 7.4. 复位电气特性
除非另有指明,否则, VDD 为 1.8 至 3.6 V,温度为 –40 至 +85 °C。
参数
最小值
特有值
最大值
单位
—
—
0.6
V
RST 输入高压
0.75 x VDD
—
—
V
RST 输入低压
—
—
0.3 x VDD
VDD
—
25
50
µA
VDD POR 启动时间
—
—
1
ms
VDD 监控器阈值 (VRST)
1.7
1.75
1.8
V
RST 输出低压
RST 输入上拉电流
条件
IOL 为 8.5 mA,
VDD 为 1.8 V 至 3.6 V
RST 为 0.0 V
缺失时钟探测器超时
从最后一个系统时钟上升沿到
产生复位的时间
100
500
1000
µs
复位时间延迟
从退出任何复位源到开始执行
位于 0x0000 地址的代码之间
的延时
—
—
30
µs
15
—
—
µs
—
50
—
µs
—
20
30
µA
产生系统复位的最小 RST
低电平时间
VDD 监视器启动时间
VDD = VRST – 0.1 V
VDD 监视器电源电流
表 7.5. 内部稳压器电气特性
除非另有指明,否则, VDD 为 3.0 V,温度为 –40 至 +85 °C。
参数
条件
最小值 特有值 最大值
输入电压范围
偏差电流
Rev. 1.0
单位
1.8
—
3.6
V
—
50
65
µA
41
C8051F80x-83x
表 7.6. 闪存电气特性
参数
条件
闪存尺寸 (附注 1)
最小值 特有值 最大值 单位
C8051F80x 和 C8051F810/1
C8051F812/3/4/5/6/7/8/9 和 C8051F82x
C8051F830/1/2/3/4/5
擦写寿命
擦除时间
写入时间
闪存写入 / 擦除操作的时钟速
度
字节
字节
字节
16384
8192
4096
10000
—
—
15
20
26
25 MHz 时钟
25 MHz 时钟
周期
ms
15
20
26
µs
1
__
__
MHz
附注: 内含安全锁定字节。
表 7.7. 内部高频振荡器电气特性
除非另有指明,否则, VDD 为 1.8 至 3.6 V ; TA 为 –40 至 +85 °C。采用出厂校准的设置。
参数
振荡器频率
振荡器电源电流
条件
最小值 特有值 最大值
IFCN = 11b
25 °C, VDD = 3.0 V,
OSCICN.7 = 1,
OCSICN.5 = 0
24
—
24.5
350
25
650
单位
MHz
µA
表 7.8. 电容传感电气特性
除非另有指明,否则, VDD 为 1.8 至 3.6 V ; TA 为 –40 至 +85 °C。
参数
条件
转换时间
每种代码的电容
外部电容负载
量化噪音 1
单次转换
电源电流
25 °C 下 CS 模块偏置电流
25 °C 下,单独使用 CS 模块时的最大
代码输出
CS 阀值时唤醒 ,25 °C2
RMS
峰间
附注:
1. RMS 噪音等于一个标准值偏离。峰间噪音包含 ±3.3 个标准值偏离。
2. 仅包括从稳压器、 CS 模块和暂停模式下的 MCU 通过的电流。
42
Rev. 1.0
最小值 特有值 最大值
26
—
—
—
—
—
—
—
38
1
—
3
20
40
75
150
50
—
45
—
—
60
105
165
单位
µs
fF
pF
fF
fF
µA
µA
µA
C8051F80x-83x
表 7.9. ADC0 电气特性
除非另有指明,否则, VDD 为 3.0 V, VREF 为 2.40 V (REFSL=0),温度为 –40 至 +85 °C。
参数
条件
最小值
特有值
最大值
单位
—
—
–2
–2
—
10
±0.5
±0.5
0
0
45
±1
±1
2
2
—
bits
LSB
LSB
LSB
LSB
ppm/°C
DC 精度
分辨率
积分非线性
微分非线性
偏移误差
满度误差
偏差温度系数
保证单调
动态性能 (10 kHz 正弦波单端输入,满度值的 1 dB 以下, 200 ksps)
信噪比加失真
总谐波失真
无失真动态范围
多达 5 次谐波
54
—
—
60
75
–90
—
—
—
dB
dB
dB
10 位模式
8 位模式
VDD >= 2.0 V
VDD < 2.0 V
—
13
11
300
2.0
—
—
—
—
—
—
—
8.33
—
—
—
—
500
MHz
clocks
clocks
ns
µs
ksps
0
—
—
—
—
5
3
5
VREF
—
—
—
V
pF
pF
kΩ
—
—
630
–70
1000
—
µA
dB
转换速率
SAR 转换时钟
转换时间 (SAR 时钟数)
跟踪/保持捕获时间
吞吐速率
模拟输入
ADC 输入电压范围
采样容量
1x 增益
0.5x 增益
输入多路复用器电阻
电源规格
电源电流
电源抑制比
操作模式, 500 ksps
Rev. 1.0
43
C8051F80x-83x
表 7.10. 电源管理电气特性
除非另有指明,否则, VDD 为 1.8 至 3.6 V ; TA 为 –40 至 +85 °C。采用出厂校准的设置。
参数
条件
空闲模式唤醒时间
暂停模式唤醒时间
最小值 特有值 最大值
2
—
—
500
单位
3
—
SYSCLKs
ns
表 7.11. 温度传感器电气特性
除非另有指明,否则, VDD 为 3.0 V,温度为 –40 至 +85 °C。
参数
条件
最小值
特有值
最大值
单位
—
—
—
—
—
1
2.43
±45
873
±14.5
—
—
—
—
—
°C
mV/°C
µV/°C
mV
mV
线性度
斜率
斜率误差 *
温度为 0 °C
温度为 0 °C
偏移
偏移误差 *
* 附注:代表偏离平均值一个标准差。
表 7.12. 电压基准电气特性
除非另有指明,否则, VDD 为 1.8 至 3.6 V ;温度为 –40 至 +85 °C。
参数
输出电压
条件
内部高速基准 (REFSL[1:0] = 11)
环境温度 25 °C
最小值 特有值 最大值
单位
1.55
1.65
1.75
V
启动时间
—
—
1.7
µs
电源电流
—
180
—
µA
0
—
VDD
—
7
—
外部基准 (REF0E = 0)
输入电压范围
输入电流
44
采样速率 = 500 ksps ; VREF = 3.0 V
Rev. 1.0
µA
C8051F80x-83x
表 7.13. 比较器电气特性
除非另有指明,否则, VDD 为 3.0 V,温度为 –40 至 +85 °C。
参数
条件
最小值
特有值
最大值
单位
响应时间:
模式 0, Vcm* = 1.5 V
CP0+ – CP0– = 100 mV
—
220
—
ns
CP0+ – CP0– = –100 mV
—
225
—
ns
响应时间:
模式 1, Vcm* = 1.5 V
CP0+ – CP0– = 100 mV
—
340
—
ns
CP0+ – CP0– = –100 mV
—
380
—
ns
响应时间:
模式 2, Vcm* = 1.5 V
CP0+ – CP0– = 100 mV
—
510
—
ns
CP0+ – CP0– = –100 mV
—
945
—
ns
响应时间:
模式 3, Vcm* = 1.5 V
CP0+ – CP0– = 100 mV
—
1500
—
ns
CP0+ – CP0– = –100 mV
—
5000
—
ns
—
1
4
mV/V
共模抑制比
正向回差电压 1
模式 2, CP0HYP1–0 = 00b
—
0
1
mV
正向回差电压 2
模式 2, CP0HYP1–0 = 01b
2
5
10
mV
正向回差电压 3
模式 2, CP0HYP1–0 = 10b
7
10
20
mV
正向回差电压 4
模式 2, CP0HYP1–0 = 11b
10
20
30
mV
负向回差电压 1
模式 2, CP0HYN1–0 = 00b
—
0
1
mV
负向回差电压 2
模式 2, CP0HYN1–0 = 01b
2
5
10
mV
负向回差电压 3
模式 2, CP0HYN1–0 = 10b
7
10
20
mV
负向回差电压 4
模式 2, CP0HYN1–0 = 11b
10
20
30
mV
–0.25
—
VDD + 0.25
V
–7.5
—
7.5
mV
—
0.1
—
mV/V
—
10
—
µs
模式 0
—
20
—
µA
模式 1
—
8
—
µA
模式 2
—
3
—
µA
模式 3
—
0.5
—
µA
反相或同相输入电压范围
输入偏移电压
电源规格
电源抑制比
上电时间
电源电流 (DC)
附注: Vcm 是 CP0+ 和 CP0– 上的共模电压。
Rev. 1.0
45
C8051F80x-83x
46
Rev. 1.0
C8051F80x-83x
8. 10 位 ADC (ADC0)
C8051F800/1/2/3/4/5、 C8051F812/3/4/5/6/7、 C8051F824/5/6 和 C8051F830/1/2 上的 ADC0 是一个 500
ksps 10 位逐次逼近寄存器 (SAR) ADC, ADC 中集成了追踪保持电路、可编程至 1x 或 0.5x 的增益阶段和
可编程窗口探测器。ADC 可在软件控制下通过特殊功能寄存器完全设置。ADC 可被设置为用于使用模拟多
路复用器 (请参阅? 56 ? “8.5. ADC0 模拟多路复用器”)测量各种不同的信号。 ADC 的电压基准按第 9 条
所述选择。 ? 58 ? “9. 温度传感器” 描述。只有当 ADC0 控制寄存器 (ADC0CN) 中的 AD0EN 位设置为逻辑
1 时, ADC0 子系统才能启用。当 AD0EN 位为逻辑 0 时, ADC0 子系统处于低功耗关断状态。
AD0CM0
AD0CM1
AD0CM2
AD0WINT
AD0INT
AD0BUSY
AD0EN
AD0TM
ADC0CN
VDD
10 位
SAR
AIN
X1 或
X0.5
000
001
010
011
100
AD0BUSY (W)
定时器 0 溢出
定时器 2 溢出
定时器 1 溢出
CNVSTR 输入
ADC0H
ADC
ADC0CF
AD08BE
AMP0GN0
AD0SC0
AD0LJST
AD0SC1
AD0SC2
AD0SC3
SYSCLK
REF
AMP0GN0
AD0SC4
起始
AMUX0
ADC0L
启动转换
AD0WINT
32
ADC0LTH
ADC0LTL
ADC0GTH
ADC0GTL
窗口比较
逻辑
图 8.1. ADC0 功能结构图
Rev. 1.0
46
C8051F80x-83x
8.1. 输出代码格式
ADC 测量有关 GND 的输入电压。完成每次转换时,寄存器 ADC0H 和 ADC0L 包含高字节和低字节 ADC
输出转换码。数据可根据 AD0LJST 位的设置设为右对齐或左对齐。转换码为 10 位无符号整数。所测的输
入范围为 0 到 VREF x 1023/1024。下面列举右对齐和左对齐数据代码示例。ADC0H 和 ADC0L 寄存器中未
使用的位设为 0。
输入电压
右对齐 ADC0H:ADC0L
(AD0LJST = 0)
左对齐 ADC0H:ADC0L
(AD0LJST = 1)
VREF x 1023/1024
VREF x 512/1024
VREF x 256/1024
0
0x03FF
0x0200
0x0100
0x0000
0xFFC0
0x8000
0x4000
0x0000
8.2. 8 位模式
将寄存器 ADC0CF 中的 ADC08BE 位设为 1 将使 ADC 处于 8 位模式。在 8 位模式中,只有 8 个数据 MSB
被转换,且 ADC0H 寄存器保存相关结果。AD0LJST 位在 8 位模式中被忽略。8 位转换比 10 位转换少两个
SAR 时钟周期,因此,该转换可更快完成,且使用较慢的 SAR 时钟也可达到 500 ksps 的采样速率。
8.3. 操作模式
ADC0 的最高转换速度为 500 ksps。 ADC0 转换时钟由系统时钟分频得到,分频数由 ADC0CF 寄存器中的
AD0SC 位决定。
8.3.1. 启动转换
转换启动有六种方式,由寄存器 ADC0CN 中的 ADC0 转换启动模式位 (AD0CM2–0) 的设定状态决定采用
哪一种方式。转换触发源有:
1. 写 1 到寄存器 ADC0CN 的 AD0BUSY 位
2. 定时器 0 溢出 (即定时的连续转换)
3. 定时器 2 溢出
4. 定时器 1 溢出
5. CNVSTR 输入信号的上升沿
向 AD0BUSY 写 1 的方式提供了用软件控制 ADC0 的能力,借此 “ 应要求 ” 执行转换。转换期间,AD0BUSY
位被设为逻辑 1,转换结束后复位为逻辑 0。AD0BUSY 位的下降沿触发中断(允许时)并设置 ADC0 中断
标志 (AD0INT)。应使用 ADC0 中断标志 (AD0INT) 来检测 ADC 转换是否完成。当 AD0INT 位为逻辑 1 时,
ADC0 数据寄存器 ADC0H:ADC0L 中的转换数据有效。当转换源是定时器 2 溢出时,如果定时器 2/3 处于
8 位模式,则使用低字节溢出;如果定时器 2 处于 16 位模式,则使用高字节溢出。有关定时器设置,请参
见第 209 页 “28. 定时器 ”。
关于使用 CNVSTR 的重要事项:CNVSTR 输入针脚也是端口 I/O 针脚。当使用 CNVSTR 输入作为 ADC0
转换源时,应使数字交叉开关跳过相关针脚。有关端口 I/O 设置的详细信息,请参见第 138 页 “23. 端口输
入 / 输出 ”。
47
Rev. 1.0
C8051F80x-83x
8.3.2. 追踪模式
寄存器 ADC0CN 中的 AD0TM 位能启动 “ 延时的转换 ”,且将使实际转换延迟三个 SAR 时钟周期,在这三
个 SAR 时钟周期中,ADC 将继续追踪输入。若 AD0TM 被置逻辑 0,转换将立即开始,而无额外追踪时间。
若内部启动转换源,则 ADC 将在未执行转换时始终追踪。如果使用 CNVSTR 信号启动转换,则当 AD0TM
为逻辑 1 或当 AD0TM 为逻辑 0 时, ADC0 将进行追踪,且 CNVSTR 保持较低水平。有关追踪和转换定时
的详细信息,请参见图 8.2。当 AMUX 设置因设置时间要求 (请参阅第 49 页 “8.3.3. 设置时间要求 ”)而
频繁改变时,延时转换模式十分有用。
A. 使用外部触发源的 ADC 定时
CNVSTR
(AD0CM[2:0]=1xx)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15* 16 17
SAR 时钟
追踪
AD0TM=1
转换
追踪
*第 15 个时钟上升沿的转换终端处于 8 位模式
1 2 3 4 5 6 7 8 9 10 11 12* 13 14
SAR 时钟
追踪
AD0TM=0 不可用
转换
不可用
*第 12 个时钟上升沿的转换终端处于 8 位模式
B. 使用内部触发源的 ADC 定时
向 AD0BUSY 写 ‘1’,
定时器 0、定时器 2、定时器 1 溢出
(AD0CM[2:0]=000, 001, 010, 011)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15* 16 17
SAR 时钟
AD0TM=1
追踪
转换
追踪
*第 15 个时钟上升沿的转换终端处于 8 位模式
1 2 3 4 5 6 7 8 9 10 11 12* 13 14
SAR 时钟
AD0TM=0
追踪或
转换
转换
追踪
*第 12 个时钟上升沿的转换终端处于 8 位模式
图 8.2. 10 位 ADC 追踪和转换范例定时
Rev. 1.0
48
C8051F80x-83x
8.3.3. 设置时间要求
在每次转换前,必需有一个最小追踪时间,以确保准确执行转换。该追踪时间由任何串联电阻(包括 AMUX0
电阻)、ADC0 采样容量和所要求的转换精度决定。在延时追踪模式下,每次启动转换时,均使用三个 SAR
时钟追踪。对于大多数应用,这三个 SAR 时钟可以满足最小追踪时间要求。
图 8.3 列示等效 ADC0 输入电路。对于一个给定的设置精度 (SA),所需 ADC0 设置时间可用方程 8.1 估
算。有关 ADC0 最小设置时间要求以及 mux 电阻和采样电容器数值,请参见表 7.9。
n
2
t = ln  ------- × R TOTAL C SAMPLE
 SA
方程 8.1. ADC0 设置时间要求
其中:
SA 是设置精度,用一个 LSB 的分数表示 (例如,设置精度 0.25 对应 1/4 LSB)
t 为所需的设置时间,以秒为单位
RTOTAL 为 AMUX0 电阻与任何外部信号源电阻之和。
n 为 ADC 分辨率,用比特表示 (10)。
MUX 选 择
输入针脚
R MUX
C SAM PLE
R C In p u t = R M U X * C S A M P L E
附 注 : 有 关 R M UX 和 C SAM PLE 参 数 , 请 参 见 电 气 规 格 表 。
图 8.3. ADC0 等效输入电路
49
Rev. 1.0
C8051F80x-83x
SFR 定义 8.1. ADC0CF:ADC0 配置寄存器
位
7
6
5
4
3
2
1
0
名称
AD0SC[4:0]
AD0LJST
AD08BE
AMP0GN0
类型
R/W
R/W
R/W
R/W
0
0
1
复位
1
1
1
1
1
SFR 地址 = 0xBC
位
7:3
名称
功能
AD0SC[4:0] ADC0 SAR 转换时钟周期控制位。
SAR 转换时钟来源于系统时钟,由下面的方程式得出,其中 AD0SC 表示 AD0SC 4-0
中保存的 5 位数值。 SAR 转换时钟要求已列于 ADC 规格表中。
SYSCLK
AD0SC = ----------------------- – 1
CLK SAR
2
AD0LJST
ADC0 左对齐选择。
0:ADC0H:ADC0L 寄存器中的数据均为右对齐。
1:ADC0H:ADC0L 寄存器中的数据均为左对齐。
附注: AD0LJST 位仅在 10 位模式 (AD08BE = 0) 下有效。
1
AD08BE
8 位模式启用。
0:ADC 在 10 位模式 (正常)下运行。
1:ADC 在 8 位模式下运行。
附注: 当 AD08BE 设为 1 时, AD0LJST 位被忽略。
0
AMP0GN0 ADC 增益控制位。
0:增益 = 0.5
1:增益 = 1
Rev. 1.0
50
C8051F80x-83x
SFR 定义 8.2. ADC0H:ADC0 数据字 MSB 寄存器
位
7
6
5
4
3
名称
ADC0H[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xBE
位
名称
功能
7:0 ADC0H[7:0] ADC0 数据字高序位。
当 AD0LJST = 0 时:位 7–2 的读数将为 000000b。位 1–0 为 10 位 ADC0 数据字的
高 2 位。
当 AD0LJST = 1 时:位 7–0 为 10 位 ADC0 数据字的最高位。
附注: 在 8 位模式下, AD0LJST 被忽略,且 ADC0H 保存 8 位数据字。
SFR 定义 8.3. ADC0L:ADC0 数据字 LSB 寄存器
位
7
6
5
4
3
名称
ADC0L[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xBD
位
7:0
名称
功能
ADC0L[7:0] ADC0 数据字低序位。
当 AD0LJST = 0 时:位 7–0 为 10 位数据字的低 8 位。
当 AD0LJST = 1 时:位 7–6 为 10 位数据字的低 2 位。位 5–0 的读数将一直为 0。
附注: 在 8 位模式下, AD0LJST 被忽略,且 ADC0L 的读数将复 00000000b。
51
Rev. 1.0
C8051F80x-83x
SFR 定义 8.4. ADC0CN:ADC0 控制寄存器
位
7
6
5
名称
AD0EN
AD0TM
AD0INT
类型
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
4
3
AD0BUSY AD0WINT
SFR 地址 = 0xE8 ; 可位寻址
位
名称
7
AD0EN
2
1
0
AD0CM[2:0]
R/W
0
0
0
功能
ADC0 启用位。
0:ADC0 禁用。 ADC0 处于低耗关闭状态。
1:ADC0 启用。 ADC0 处于活动状态,并准备转换数据。
6
AD0TM
ADC0 追踪模式位。
0:正常追踪模式:当 ADC0 被启用时,除了转换期间之外,一直处于追踪模式。如
AD0CM[2:0] 所定义,启动转换事件发生后,转换立即开始。
1:延时追踪模式:当 ADC0 被启用时,如转换未进行,则会追踪输入。启动转换信
号启动三个额外追踪 SAR 时钟,然后开始转换。
5
AD0INT
ADC0 转换结束中断标志。
0:从 AD0INT 最后一次将该位清 0 后, ADC0 还没有完成一次数据转换。
1:ADC0 完成了一次数据转换。
4
AD0BUSY
ADC0 忙标志位。
读:
写:
0:ADC0 转换未进行。
0:无作用。
1:ADC0 转换正在进行。 1:若 AD0CM[2:0] = 000b
则启动 ADC0 转换
3
AD0WINT
ADC0 窗口比较中断标志。
0:该标志最后一次被清除后,未发生 ADC0 窗口比较数据匹配。
1:发生 ADC0 窗口比较数据匹配。
2:0 AD0CM[2:0] ADC0 转换启动模式选择。
000:ADC0 启动转换源为向 AD0BUSY 写 1。
001:ADC0 启动转换源为定时器 0 溢出。
010:ADC0 启动转换源为定时器 2 溢出。
011:ADC0 启动转换源为定时器 1 溢出。
100:ADC0 启动转换源为外部 CNVSTR 上升沿。
101–111:备用。
Rev. 1.0
52
C8051F80x-83x
8.4. 可编程窗口探测器
ADC 可编程窗口探测器不断地将 ADC0 输出寄存器与用户编程的极限值进行比较,并在检测到越限条件时
通知系统控制器。这在一个中断驱动系统中尤其有效,既可以节省代码空间和 CPU 带宽,又能提供快速系
统响应时间。窗口探测器中断标志 (ADC0CN 寄存器中的 AD0WINT)也可以用于查询模式。 ADC0 下限
(大于)寄存器 (ADC0GTH、 ADC0GTL)和上限 (小于)寄存器 (ADC0LTH、 ADC0LTL)中保持比较
值。窗口探测器标志既可以在测量数据位于用户编程的极限值以内时有效,也可以在测量数据位于用户编程
的极限值以外时有效,这取决于 ADC0 上限和 ADC0 下限寄存器的编程值。
SFR 定义 8.5. ADC0GTH:ADC0 下限数据高字节寄存器
位
7
6
5
4
3
名称
ADC0GTH[7:0]
类型
R/W
复位
1
1
1
1
1
2
1
0
1
1
1
2
1
0
1
1
1
SFR 地址 = 0xC4
位
名称
功能
7:0 ADC0GTH[7:0] ADC0 下限数据字高序位。
SFR 定义 8.6. ADC0GTL:ADC0 下限数据低字节寄存器
位
7
6
5
4
3
名称
ADC0GTL[7:0]
类型
R/W
复位
1
1
1
1
1
SFR 地址 = 0xC3
位
7:0
53
名称
功能
ADC0GTL[7:0] ADC0 下限数据字低序位。
Rev. 1.0
C8051F80x-83x
SFR 定义 8.7. ADC0LTH:ADC0 上限数据高字节寄存器
位
7
6
5
4
3
名称
ADC0LTH[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xC6
位
7:0
名称
功能
ADC0LTH[7:0] ADC0 上限数据字高序位。
SFR 定义 8.8. ADC0LTL:ADC0 上限数据低字节寄存器
位
7
6
5
4
3
名称
ADC0LTL[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xC5
位
7:0
名称
功能
ADC0LTL[7:0] ADC0 上限数据字低序位。
Rev. 1.0
54
C8051F80x-83x
8.4.1. 窗口探测器范例
图 8.4 列 示 两 个 右 对 齐 数 据 窗 口 比 较 的 范 例,其 中 ADC0LTH:ADC0LTL = 0x0080 (128d) 及
ADC0GTH:ADC0GTL = 0x0040 (64d)。 GND 输入电压范围可为 0 到 VREF x (1023/1024),用一个 10 位
无 符 号 整 数 值 表 示。对 于 左 边 的 范 例,如 果 ADC0 转 换 结 果 数 据 字 (ADC0H:ADC0L) 位 于 由
ADC0GTH:ADC0GTL 和 ADC0LTH:ADC0LTL 定义的范围之内(即 0x0040 < ADC0H:ADC0L < 0x0080),
则会产生一个 AD0WINT 中断。对于右边的范例,如果 ADC0 转换结果数据字位于由 ADC0GT 和 ADC0LT
寄 存 器 定 义 的 范 围 之 外 (即 ADC0H:ADC0L < 0x0040 或 ADC0H:ADC0L > 0x0080) ,则 会 产 生 一 个
AD0WINT 中断。图 8.5 列示使用具有相同比较值的左对齐数据的范例。
ADC0H:ADC0L
ADC0H:ADC0L
输入电压
(AIN - GND)
VREF x (1023/
1024)
输入电压
(AIN - GND)
VREF x (1023/
1024)
0x03FF
0x03FF
AD0WINT
不受影响
AD0WINT=1
0x0081
VREF x (128/1024)
0x0080
0x0081
ADC0LTH:ADC0LTL
VREF x (128/1024)
0x007F
0x0080
0x007F
AD0WINT=1
VREF x (64/1024)
0x0041
0x0040
ADC0GTH:ADC0GTL
VREF x (64/1024)
0x003F
0x0041
0x0040
ADC0GTH:ADC0GTL
AD0WINT
不受影响
ADC0LTH:ADC0LTL
0x003F
AD0WINT=1
AD0WINT
不受影响
0
0x0000
0
0x0000
图 8.4. ADC 窗口比较范例:右对齐数据
ADC0H:ADC0L
ADC0H:ADC0L
输入电压
(AIN - GND)
VREF x (1023/
1024)
输入电压
(AIN - GND)
0xFFC0
VREF x (1023/
1024)
0xFFC0
AD0WINT
不受影响
AD0WINT=1
0x2040
VREF x (128/1024)
0x2000
0x2040
ADC0LTH:ADC0LTL
VREF x (128/1024)
0x1FC0
0x2000
0x1FC0
AD0WINT=1
0x1040
VREF x (64/1024)
0x1000
0x1040
ADC0GTH:ADC0GTL
VREF x (64/1024)
0x0FC0
0x1000
ADC0LTH:ADC0LTL
AD0WINT=1
0x0000
0
0x0000
图 8.5. ADC 窗口比较范例:左对齐数据
55
AD0WINT
不受影响
0x0FC0
AD0WINT
不受影响
0
ADC0GTH:ADC0GTL
Rev. 1.0
C8051F80x-83x
8.5. ADC0 模拟多路复用器
C8051F800/1/2/3/4/5, C8051F812/3/4/5/6/7, C8051F824/5/6, and C8051F830/1/2 上的 ADC0 使用一个模
拟输入多路复用器选择 ADC 的正输入。以下任一项都可以被选择为正输入:端口 0 或端口 1 I/O 针脚、片
上温度传感器或正电源 (VDD)。 ADC0 输入通道在 ADC0MX 寄存器中选择 (见 SFR 定义 8.9)。
AMX0P4
AMX0P3
AMX0P2
AMX0P1
AMX0P0
ADC0MX
P0.0
附注:P1.4-P1.7
在 16 针封装上
不可用。
P1.7
温度
传感器
AMUX
ADC0
VREG 输出
VDD
GND
图 8.6. ADC0 多路复用器功能结构图
有关 ADC0 输入设置的重要事项:被选择为 ADC0 输入的端口针脚应被设置为模拟输入,并且应被数字交
叉开关跳过。要将一个端口针脚设置为模拟输入,应将 PnMDIN 寄存器中的相应位设为 0。要使交叉开关跳
过一个端口针脚,应将寄存器 PnSKIP 中的相应位设为 1。有关端口 I/O 设置的更多详细资料,请参见?138?
“23. 端口输入/输出”。
Rev. 1.0
56
C8051F80x-83x
SFR 定义 8.9. ADC0MX:AMUX0 通道选择寄存器
位
7
6
5
4
3
类型
R
R
R
复位
0
0
0
57
0
1
1
R/W
1
SFR 地址 = 0xBB
位
名称
4:0
1
AMX0P[3:0]
名称
7:5
2
1
1
功能
未使用
读 = 000b ;写 = 无需在意。
AMX0P[4:0] AMUX0 正输入选择寄存器。
00000:
20 针和 24 针设备
P0.0
16 针设备
P0.0
00001:
P0.1
P0.1
00010:
P0.2
P0.2
00011:
P0.3
P0.3
00100:
P0.4
P0.4
00101:
P0.5
P0.5
00110:
P0.6
P0.6
00111:
P0.7
P0.7
01000
P1.0
P1.0
01001
P1.1
P1.1
01010
P1.2
P1.2
01011
P1.3
P1.3
01100
P1.4
01101
P1.5
备用。
备用。
01110
P1.6
备用。
01111
P1.7
备用。
10000:
温度传感器
温度传感器
10001:
VREG 输出
10010:
VDD
VREG 输出
VDD
10011:
GND
GND
10100 – 11111:
未选择任何输入
Rev. 1.0
C8051F80x-83x
9. 温度传感器
C8051F800/1/2/3/4/5, C8051F812/3/4/5/6/7, C8051F824/5/6, and C8051F830/1/2 上已配备一个片上温度
传感器,可通过单端设置中的 ADC 多路复用器直接访问。要使用 ADC 测量温度传感器,ADC mux 通道应
设为连接至温度传感器。温度传感器转移函数如图 9.1 所示。当 ADC 多路复用器设置正确时,输出电压
(VTEMP) 为正 ADC 输入。寄存器 REF0CN 中的 TEMPE 位启用 / 禁用温度传感器 (见 SFR 定义 10.1)。
当禁用时,温度传感器默认为高电阻状态,此时传感器执行的任何 ADC 测量均为无效数据。有关温度传感
器的斜率和偏移参数,请参阅表 7.11。
VTEMP = (斜率 x Temp C ) + 偏移量
TempC = ( VTEMP - 偏移量) / 斜率
电压
斜率 ( V / deg C )
偏移量
(V 处于 0 摄氏度的环境时)
温度
图 9.1. 温度传感器转移函数
9.1. 校准
未经校准的温度传感器输出的线性度非常好,适合于相对温度测量 (有关线性度规格,请参见表 5.1)。对
于绝对温度测量,建议对偏移和 / 或增益进行校准。典型的 1 点 (偏移)校准包括下列步骤:
1. 控制 / 测量环境温度 (该温度必须是已知的)。
2. 给设备上电,等待几秒钟使设备自热。
3. 将温度传感器选为 ADC 输入,执行一次 ADC 转换。
4. 计算偏移值,并将这些计算值存入非易失性内存中,以备以后使用温度传感器进行温度测量时使用。
图 5.3 列示典型温度传感器误差曲线 (假设在 0°C 1 点校准)。
影响 ADC 测量的参数,尤其是电压基准值,也同样会影响温度测量。
Rev. 1.0
58
误差(摄氏度)
C8051F80x-83x
5.00
5.00
4.00
4.00
3.00
3.00
2.00
2.00
1.00
1.00
0.00
-40.00
-20.00
0.00
20.00
40.00
80.00
0.00
-1.00
-1.00
-2.00
-2.00
-3.00
-3.00
-4.00
-4.00
-5.00
-5.00
温度(摄氏度)
图 9.2. 在 0 °C 附近 1 点校准的温度传感器误差
59
60.00
Rev. 1.0
C8051F80x-83x
10. 电压与接地基准选项
电压基准 MUX 可设置为使用连接到外部电压基准、片上电压基准或两种电源电压中的一种 (请参见图
10.1)。接地基准 MUX 允许在接地针脚 (GND) 或专用模拟接地端口针脚 (P0.1/AGND) 之间选择 ADC0 接
地基准。
电压与接地基准选项均使用 REF0CN SFR (见第 62 页)进行设置。电气规格见电气规格一章。
有关 VREF 和 AGND 输入的重要事项:端口针脚被用作外部 VREF 和 AGND 输入。当使用外部电压基准时,
P0.0/VREF 应 被 设 置 为 模 拟 输 入,并 被 数 字 交 叉 开 关 跳 过。当 使 用 AGND 作 为 ADC0 接 地 基 准 时,
P0.1/AGND 应被设置为模拟输入,并被数字交叉开关跳过。有关端口 I/O 设置的所有详细信息,请参阅第
138 页 “23. 端口输入 / 输出 ” 。外部基准电压必须满足 0 ≤ VREF ≤ VDD,外部接地基准 DC 电压必须与 GND
相同。
REFGND
REFSL1
REFSL0
TEMPE
BIASE
REF0CN
EN
偏压发生器
EN
温度传感器
至 ADC、内部
振荡器、基准、
温度传感器
IOSCEN
至模拟 Mux
VDD
外部电压
基准电路
R1
P0.0/VREF
00
VDD
01
内部 1.8V
调压数字电源
GND
10
11
4.7μF
+
内部 1.65V
高速基准
0.1μF
GND
推荐旁路电容器
0
P0.1/AGND
1
REFGND
图 10.1. 电压基准功能结构图
Rev. 1.0
60
C8051F80x-83x
10.1. 外部电压基准
要使用外部电压基准, REFSL[1:0] 应设为 00。应根据外部电压基准制造商的推荐添加旁路电容器。
10.2. 内部电压基准选项
片上含有 1.65 V 高速基准。已通过将 REFSL[1:0] 设为 11 来选择高速内部基准。选择后, ADC0 将视需要
自动启用高速内部基准。
对于采用稳定电源电压的应用,如将电源作为电压基准,ADC0 可以降低电源噪声抑制为代价,来扩大动态
范围。要使用 1.8 到 3.6 V 的电源电压 (VDD) 或使用 1.8 V 的调压数字电源电压作为基准源,REFSL[1:0] 应
分别设为 01 或 10。
10.3. 模拟接地基准
为防止转换数字逻辑产生的接地噪声影响敏感模拟测量,有单独的模拟接地基准选项可供选择。允许时,
ADC0 基底基准取自 P0.1/AGND 针脚。 P0.1/AGND 针脚应参考 ADC0 采集的任何外部传感器样本。单独
模拟接地基准选线已通过将 REFGND 设为 1 启用。请注意,使用该选项时, P0.1/AGND 必须连接至与
GND 相同的电压。
10.4. 温度传感器启用
寄存器 REF0CN 中的 TEMPE 位启用温度传感器。当禁用时,温度传感器默认为高电阻状态,此时传感器
执行的任何 ADC0 测量均为无效数据。
61
Rev. 1.0
C8051F80x-83x
SFR 定义 10.1. REF0CN: 电压基准控制寄存器
位
7
6
5
4
REFGND
名称
3
REFSL
2
1
TEMPE
BIASE
0
类型
R
R
R/W
R/W
R/W
R/W
R/W
R
复位
0
0
0
1
0
0
0
0
SFR 地址 = 0xD1
位
名称
7:6
5
功能
未使用
读 = 00b ;写 = 无需在意。
REFGND 模拟接地基准。
选择 ADC0 接地基准。
0:ADC0 接地基准为 GND 针脚。
1:ADC0 接地基准为 P0.1/AGND 针脚。
4:3
REFSL
电压基准选择。
选择 ADC0 电压基准。
00:ADC0 电压基准为 P0.0/VREF 针脚。
01:ADC0 电压基准为 VDD 针脚。
10:ADC0 电压基准为内部 1.8 V 数字电源电压。
11:ADC0 电压基准为内部 1.65 V 高速电压基准。
2
TEMPE
温度传感器启用。
启用 / 禁用内部温度传感器。
0:温度传感器禁用。
1:温度传感器启用。
1
BIASE
内部模拟偏压发生器启用位。
未使用
0:内部偏压发生器关闭。
1:内部偏压发生器打开。
读 = 0b ;写 = 无需在意。
0
Rev. 1.0
62
C8051F80x-83x
63
Rev. 1.0
C8051F80x-83x
11. 稳压器 (REG0)
C8051F80x-83x 设备配有一个内部稳压器 (REG0),以将内部内核电源从 1.8 到 3.6 V 的 VDD 电源调整为
1.8 V。稳压器内置省电模式,以帮助在低耗应用中减少电流消耗。该模式可通过 REG0CN 寄存器(见 SFR
定义 11.1)访问。片上稳压器的电气特性请参见第 41 页表 7.5 。
在默认状况下,当设备进入停止模式时,内部稳压器仍然运行。这使任何已启用的复位源为设备进行复位,
并使设备退出停止模式。要额外省电,可在设备进入停止模式时,使用 STOPCF 位关闭稳压器和设备的内
部电网。当 STOPCF 设为 1 时, RST 针脚或设备的一个完整供电周期是使设备复位的唯一方法。
Rev. 1.0
63
C8051F80x-83x
SFR 定义 11.1. REG0CN:稳压器控制寄存器
位
7
名称
STOPCF
类型
复位
6
5
4
3
2
1
0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
0
0
SFR 地址 = 0xC9
位
名称
7
功能
STOPCF 停止模式设置。
当设备进入停止模式时,此位设置稳压器的运行方式。
0:在停止模式下,稳压器仍然处于活动状态。任何启用的复位源都将使设备复位。
1:在停止模式下,稳压器关闭。只有 RST 针脚或供电周期能使设备复位。
6:0
64
备用
必须写入 0000000b。
Rev. 1.0
C8051F80x-83x
12. 比较器 0
C8051F80x-83x 设备含有一个片上可编程电压比较器 (比较器 0),如图 12.1 所示。
该比较器提供可编程的响应时间和回差电压、一个模拟输入多路复用器和两个输出 (可在端口针脚选配):
一个同步 “ 锁存 ” 输出 (CP0) 或一个异步 “ 直接 ” 输出 (CP0A)。即使在系统时钟未激活时,异步 CP0A 信号
仍然可用。这使比较器可以在设备处于停机模式时运行并产生输出。当被分配端口针脚时,比较器输出可被
设置为漏极开路或推拉式(请参见 ?147?“23.4. 端口 I/O 初始化 ” )。比较器 0 也可以被用作复位源(请参
见 ?127?“21.5. 比较器 0 复位 ” )。
比较器 0 的输入通过比较器输入多路复用器 (见第 69 页 “12.1. 比较器多路复用器 ” )选择。
CPT0CN
CP0EN
CP0OUT
CP0RIF
CP0FIF
CP0HYP1
CP0HYP0
CP0HYN1
CP0HYN0
VDD
CP0 +
+
比较器输入
多路复用器
CP0 -
CP0
D
-
SET
CLR
D
Q
Q
SET
CLR
Q
Q
交叉开关
(同步器)
CP0A
GND
CPT0MD
复位表
决树
CP0FIE
CP0RIE
CP0MD1
CP0MD0
CP0RIF
CP0FIF
0
CP0EN
EA
1
0
0
0
1
1
CP0 中断
1
图 12.1. 比较器 0 功能结构图
该比较器输出可以由软件查询,作为中断源和 / 或被连到端口针脚。当被连到端口针脚时,比较器输出可与
系统时钟同步或异步;即使在停止模式下 (系统时钟停止),异步输出仍然可用。当被禁用时,比较器输出
(如果已通过交叉开关分配到端口 I/O 针脚)默认为逻辑低状态,比较器电源关闭。有关通过数字交叉开关
设置比较器输出的详细信息,请参见 ?143?“23.3. 优先级交叉开关编码器 ” 。比较器输入可以承受 –0.25 V
到 (VDD) + 0.25 V 的外部驱动电压而不至损坏或发生运行错误。完整的比较器电气规格,请参阅
?39?“7. 电气特性 ” 。
Rev. 1.0
65
C8051F80x-83x
比较器响应时间可通过 CPT0MD 寄存器 (见 SFR 定义 12.2)用软件设置。选择较长的响应时间可以减少
比较器电源电流。
VIN+
VIN-
CP0+
+
CP0
_
CP0-
输出
电路设置
正向回差电压
(用 CP0HYP 位编程)
VIN-
输入
负向回差电压
(用 CP0HYN 位编程)
VIN+
VOH
输出
VOL
负向回差禁用
正向回差禁用
最大负向回差电压
最大正向回差电压
图 12.2. 比较器迟滞数据表
比较器的回差电压可以通过比较器控制寄存器 CPT0CN 用软件编程。用户既可以对回差电压值 (这里指输
入电压)编程,也可以对门限电压两侧的正向和负向回差对称度编程。
比较器回差使用比较器控制寄存器 CPT0CN(见 SFR 定义 12.1)中的位 3:0 进行编程。负向回差电压值由
CP0HYN 位的设置决定。如图 12.2 所示,可以设置 20 mV、10 mV 或 5 mV 的负向回差值,或者禁用负向
回差电压。类似地,通过 CP0HYP 位设置正向回差电压值在比较器输出的上升沿和下降沿都可以产生中断。
(有关中断允许和优先级控制,请参见 ?103?“18.1. MCU 中断源和矢量 ” )。比较器下降沿发生时,CP0FIF
中断标志被设为逻辑 1,比较器上升沿发生时, CP0RIF 中断标志被设为逻辑 1。一旦设置,这些位将一直
保持设定状态,直到被软件清除。比较器上升沿中断屏蔽可通过将 CP0RIE 设为逻辑 1 启用。比较器 0 下
降沿中断屏蔽可通过将 CP0FIE 设为逻辑 1 启用。
比较器输出状态可以随时通过读取 CP0OUT 位获得。通过将 CP0EN 位设为逻辑 1 可以启用比较器,通过
将该位清 0 可禁用比较器。
请注意,当比较器开始接通电源或对回差电压或响应时间控制位做出改动时,可发现错误的上升沿和下降
沿。因此,建议在比较器启用或其模式位改变后不久,将上升沿和下降沿标志明确清 0。
66
Rev. 1.0
C8051F80x-83x
SFR 定义 12.1. CPT0CN:比较器 0 控制寄存器
位
7
6
5
4
名称
CP0EN
CP0OUT
CP0RIF
CP0FIF
CP0HYP[1:0]
CP0HYN[1:0]
类型
R/W
R
R/W
R/W
R/W
R/W
复位
0
0
0
0
3
0
SFR 地址 = 0x9B
位
名称
7
CP0EN
2
0
1
0
0
0
功能
比较器 0 启用位。
0:比较器 0 禁用。
1:比较器 0 启用。
6
CP0OUT
比较器 0 输出状态标志。
0:电压值 CP0+ < CP0–。
1:电压值 CP0+ > CP0–。
5
CP0RIF
比较器 0 上升沿标志。必须被软件清除。
0:自该标志位被清除后,并无出现比较器 0 上升沿。
1:出现过比较器 0 上升沿。
4
CP0FIF
比较器 0 下降沿标志。必须被软件清除。
0:自该标志位被清除后,没有出现过比较器 0 下降沿。
1:出现过比较器 0 下降沿。
3:2 CP0HYP[1:0] 比较器 0 正向回差电压控制位。
00:正向回差电压禁用。
01:正向回差电压 = 5 mV。
10:正向回差电压 = 10 mV。
11:正向回差电压 = 20 mV。
1:0 CP0HYN[1:0] 比较器 0 负向回差电压控制位。
00:负向回差电压禁用。
01:负向回差电压 = 5 mV。
10:负向回差电压 = 10 mV。
11:负向回差电压 = 20 mV。
Rev. 1.0
67
C8051F80x-83x
SFR 定义 12.2. CPT0MD: 比较器 0 模式选择
位
7
6
名称
5
4
CP0RIE
CP0FIE
3
2
R
R
R/W
R/W
R
R
复位
0
0
0
0
0
0
7:6
5
未使用
CP0RIE
功能
读 = 00b,写 = 无需在意。
比较器 0 上升沿中断允许寄存器。
0:比较器 0 上升沿中断禁用。
1:比较器 0 上升沿中断启用。
4
CP0FIE
比较器 0 下降沿中断允许寄存器。
0:比较器 0 下降沿中断禁用。
1:比较器 0 下降沿中断启用。
3:2
1:0
未使用
读 = 00b,写 = 无需在意。
CP0MD[1:0] 比较器 0 模式选择。
这些位影响比较器 0 的响应时间和电耗。
00:模式 0 (最快响应时间,最高电耗)
01:模式 1
10:模式 2
11:模式 3 (最慢响应时间,最低电耗)
68
Rev. 1.0
0
CP0MD[1:0]
类型
SFR 地址 = 0x9D
位
名称
1
R/W
1
0
C8051F80x-83x
12.1. 比较器多路复用器
C8051F80x-83x 设备包含一个模拟输入多路复用器,将端口 I/O 针脚连接至比较器输入。比较器 0 输入在
CPT0MX 寄存器 (见 SFR 定义 12.3)中选择。 CMX0P3– CMX0P0 位选择比较器 0 正输入; CMX0N3–
CMX0N0 位选择比较器 0 负输入。有关比较器输入的重要事项:应将选作比较器输入的端口针脚设置为其
相关端口设置寄存器中的模拟输入,且设置为被交叉开关跳过 (有关端口设置的详细信息,请参见 ?152?
“23.6. 访问和配置端口 I/O 的特殊功能寄存器 ”)。
CPT0MX
CMX0P0
CMX0P1
CMX0P2
CMX0P3
CMX0N0
CMX0N1
CMX0N2
CMX0N3
P0.0
P0.2
P0.4
P0.6
P1.0
P1.2
P1.4
P1.6
VREG 输出
VDD
CP0 +
+
CP0 -
GND
P0.1
P0.3
P0.5
P0.7
P1.1
P1.3
P1.5
P1.7
VREG 输出
附注:P1.4-P1.7
在 16 针封装上
不可用。
图 12.3. 比较器输入多路复用器结构图
Rev. 1.0
69
C8051F80x-83x
SFR 定义 12.3. CPT0MX:比较器 0 MUX 选择寄存器
位
7
6
5
4
3
2
1
名称
CMX0N[3:0]
CMX0P[3:0]
类型
R/W
R/W
复位
1
1
1
1
1
1
1
SFR 地址 = 0x9F
位
7:4
名称
功能
CMX0N[3:0] 比较器 0 负输入 MUX 选择寄存器。
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001–1111
3:0
16 针设备
P0.1
P0.3
P0.5
P0.7
P1.1
P1.3
备用。
备用。
VREG 输出。
未选择任何输入。
CMX0P[3:0] 比较器 0 正输入 MUX 选择寄存器。
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001–1111
70
20 针和 24 针设备
P0.1
P0.3
P0.5
P0.7
P1.1
P1.3
P1.5
P1.7
VREG 输出。
未选择任何输入。
20 针和 24 针设备
P0.0
P0.2
P0.4
P0.6
P1.0
P1.2
P1.4
P1.6
VREG 输出。
未选择任何输入。
Rev. 1.0
16 针设备
P0.0
P0.2
P0.4
P0.6
P1.0
P1.2
备用。
备用。
VREG 输出。
未选择任何输入。
0
1
C8051F80x-83x
13. 电容传感 (CS0)
C8051F800/1/3/4/6/7/9, C8051F810/2/3/5/6/8/9, C8051F821/2/4/5/7/8, C8051F830/1/3/4 上的电容传感子
系统使用数字电容电路确定端口针脚上的电容。该模块可以使用模块的模拟多路复用器测量不同端口针脚的
电容。模拟多路复用器支持多达 16 条通道。有关特定部件编号的通道可用性,请参见第 81 页 SFR 定义
13.9. “CS0MX:电容传感 Mux 通道选择 ” 。该模块仅在 CS0EN 位 (CS0CN) 被设置为 1 时启用。在其它
情况下,该模块处于低耗关闭状态。该模块可被设置为使用自动扫描对一个端口针脚或一组端口针脚进行测
量。可配置一个累加器,累计一个输入通道上的多次转换。当 CS0 完成一次转换或测量值超过 CS0THH:L
中界定的阈值时,会发生中断。
CS0SE
自动扫描
逻辑
启动转换
AMUX
CS0MX
...
CS0CM2
CS0CM1
CS0CM0
CS0CMPF
CS0INT
CS0BUSY
CS0CMPEN
CS0EN
CS0SS
CS0ACU2
CS0ACU1
CS0ACU0
CS0CF
CS0CN
电容转换器的
16 位电容器
000
001
010
011
100
101
110
111
CS0BUSY (W)
定时器 0 溢出
定时器 2 溢出
定时器 1 溢出
备用
备用
连续启动
当自动扫描启用时,
连续启动
22 位累加器
CS0DH:L
大于比较逻辑
CS0CMPF
CS0THH:L
图 13.1. CS0 结构图
Rev. 1.0
71
C8051F80x-83x
13.1. 端口针脚配置为电容传感输入
为用 CS0 测量端口针脚,该端口针脚必须配置为模拟输入 (请参见 “23. 端口输入 / 输出 ” )。将输入多路
复用器配置为未配置为模拟输入的端口针脚将引致电容传感比较器输出有误的测量结果。
13.2. 电容传感启动转换源
电容传感转换根据 CS0 启动转换位的设计模式 (CS0CF6:4),可用下列七种方式中任一种启动。转换触发
源有:
1. 写 1 到寄存器 CS0CN 的 CS0BUSY 位
2. 定时器 0 溢出
3. 定时器 2 溢出
4. 定时器 1 溢出
5. 连续转换
6. 当自动扫描启用时,连续转换
可通过下列两种方法中任一种将转换配置为连续启动。CS0 可配置为单一通道连续转换,或配置为自动扫描
启用时连续转换。配置为连续转换时, CS0CF 中的 CS0BUSY 位经设置后将启动转换。
如通过设置 ECSCPT 位 (EIE2.0) 允许 CS0 转换结束中断,则将产生一个中断。
附注: CS0 转换结束中断的产生取决于 CS0 累加器的设置。如 CS0 配置为累加一个输入通道的多次转换,则 CS0 转
换结束中断仅在最后一次转换结束后产生。
13.3. 自动扫描
CS0 可通过配置和启用自动扫描,配置为自动扫描相邻 CS0 输入通道的顺序。使用 CS0 比较器中断被允许
的自动扫描无需任何额外专用的 MCU 资源,即可使系统探测到测量电容的变更。
通过将 CS0 启动转换位 (CS0CF6:4) 设置为 111b 启用自动扫描。启用自动扫描后,启动和结束通道应分别
在 CS0SS 和 CS0SE 中设置为适当的值。启用自动扫描时写 CS0SS 将引致写入 CS0SS 的值被写入
CS0MX。启用之后,向 CS0BUSY 写 1 将启动自动扫描转换。当自动扫描完成 CS0 累加器位 (CS0CF1:0)
中界定的转换次数 (请参见 “13.5. CS0 转换累加器 ”),自动扫描将 CS0MX 配置为下一个最高的配置为模
拟输入的端口针脚,并在该通道启动转换。此扫描顺序将保持,直至 CS0MX 达到 CS0SE 中界定的结束输
入通道值。此通道进行一次或多次转换之后,自动扫描将 CS0MX 配置为原来的启动输入通道。请参见第 73
页的图 “13.2 自动扫描范例 ”,查看配置为使用自动扫描的系统范例。
附注: 不论 CS0MX 通道的端口针脚是否已配置为模拟输入,自动扫描都将在该通道上进行一次转换。
如在设备进入暂停模式时启用自动扫描,则自动扫描将保持启用和运行状态。通过纳入自动扫描输入顺序的
任何配置的电容传感输入中的 CS0 下限比较器事件,此功能将设备从暂停模式中唤醒。
72
Rev. 1.0
CS0CN = 0x80
启用电容传感 0
端口针脚
CS0MX
通道
CS0CF = 0x70
PxMDIN bit
C8051F80x-83x
启动自动扫描作为
启动转换源
A
P0.0
0
D
P0.1
1
A
P0.2
2
A
P0.3
3
D
P0.4
4
将 P0.3、P0.2、P0.0
设置为模拟输入
D
P0.5
5
D
P0.6
6
将 P1.0-P1.1 和
P1.3-P1.7 设置为
模拟输入
D
P0.7
7
A
P1.0
8
A
P1.1
9
D
P1.2
10
A
P1.3
11
A
P1.4
12
A
P1.5
13
A
P1.6
14
A
P1.7
15
SFR 设置:
CS0SS = 0x02
将 P0.2 设置为自动
扫描启动通道
CS0SE = 0x0D
将 P1.5 设置为自动
扫描启动通道
P0MDIN = 0xF2
P1MDIN = 0x04
通道上的扫描未
设置为模拟输入会
导致不确定数值,
从而引发 CS0
下限中断事件
...
图 13.2. 自动扫描范例
13.4. CS0 比较器
CS0 比较器比较最新电容传感转换结果和储存在 CS0THH:CS0THL 中的数值。如果结果小于或等于储存数
值,则 CS0CMPF 位 (CS0CN:0) 被设置为 0。如果结果大于储存数值,则 CS0CMPF 被设置为 1。
如果已配置 CS0 转换累加器累加多次转换,则直到最后一次转换被累加才会进行比较。
比较器将 CS0CMPF 设置为 1 时,若通过设置 ECSGRT 位 (EIE2.1) 允许 CS0 下限比较器中断,则会发生
中断。
如果比较器设置 CS0CMPF 位时,自动扫描正在运行,则直到固件将 CS0BUSY 设置为 1 才会开始进一步
自动扫描启动转换。
CS0 下限比较器事件可将设备从暂停模式唤醒。这一功能在设置用于连续采样一个或多个电容传感通道的
系统中十分有用。设备将一直处于低耗暂停状态,直到一个扫描通道的捕获数值导致发生 CS0 下限比较器
事件。为了利用下限事件将设备从暂停模式唤醒,必需允许 CS0 比较器发生中断。
附注: 因 CS0 下限比较器事件而从暂停模式唤醒后, CS0CN 寄存器至少在两个系统时钟周期后方可被访问。
有关不同 CS0 比较器、自动扫描和自动累加器设置的行为概要,请参见表 13.1。
Rev. 1.0
73
C8051F80x-83x
13.5. CS0 转换累加器
可配置 CS0,累加一个输入通道上的多次转换。将被累加的样品数目使用 CS0ACU2:0 位 (CS0CF2:0) 进行
设置。累加器可累加 1、4、8、16、32 或 64 个样品。在界定的样品数目被累加后,有关结果通过将 22 位
累加器除以 1、 4、 8、 16、 32 或 64 (取决于 CS0ACU[2:0] 设置)被转换成一个 16 位数值,并被复制到
CS0DH:CS0DL SFR。
自动扫描启动
累加器启用
表 13.1. 自动扫描和累加的操作
N
N
1 次转换完成后 如果 CS0DH:CS0DL 中的数值
发生 CS0INT 中断 大于 CS0THH:CS0THL,则 1
次转换完成后发生中断
CS0MX 无变化。
N
Y
M 次转换完成后
发生 CS0INT 中断
如果 16 位累加器中的数值大
于 CS0THH:CS0THL,则 M
次转换完成后发生中断
CS0MX 无变化。
Y
N
1 次转换完成后 如果 CS0DH:CS0DL 中的数值
发生 CS0INT 中断
大于 CS0THH:CS0THL,
则转换完成后发生中断,
自动扫描停止
如果下限比较器发现转换值大于
CS0THH:CS0THL,则 CMUX0 保持
不变;否则, CMUX0 更新至下一个
通道 (CS0MX + 1) 并在通过 CS0SE 后
绕回 CS0SS
Y
Y
M 次转换完成后
发生 CS0INT 中断
如果下限比较器发现转换值大于
CS0THH:CS0THL,则 CS0MX 保持
不变;否则, CS0MX 更新至下一个
通道 (CS0MX + 1) 并在通过 CS0SE 后
绕回 CS0SS
CS0 转换完成
中断行为
CS0 下限中断行为
如果 16 位累加器中的数值
大于 CS0THH:CS0THL,
则 M 次转换完成后发生中断;
自动扫描停止
CS0MX 行为
M = 累加器设置 (1x、 4x、 8x、 16x、 32x、 64x)
74
Rev. 1.0
C8051F80x-83x
SFR 定义 13.1. CS0CN:电容传感控制寄存器
位
7
名称
CS0EN
类型
R/W
R
R/W
R/W
R/W
R
R
R
复位
0
0
0
0
0
0
0
0
6
5
CS0INT
4
3
2
1
CS0BUSY CS0CMPEN
SFR 地址 = 0xB0 ;可位寻址
位
名称
7
CS0EN
CS0 启用。
0
CS0CMPF
功能
0:CS0 禁用并且处于低耗模式。
1:CS0 启用并且准备就绪,可进行转换。
6
5
未使用
CS0INT
读 = 0b ;写 = 无需在意
CS0 中断标志。
0:从最后一次 CS0INT 被清零后, CS0 尚未完成一次数据转换。
1:CS0 已完成一次数据转换。
此位不能由硬件自动清除。
4
CS0BUSY
CS0 忙。
读:
0:CS0 转换已完成或现在未进行转换。
1:CS0 转换正在进行。
写:
0:无作用。
1:如果 CS0CM[2:0] = 000b、 110b 或 111b,则启动 CS0 转换。
3
CS0CMPEN
2:1
未使用
0
CS0CMPF
CS0 数字比较器启动位。
启动数字比较器,数字比较器将累加的 CS0 转换输出与储存在 CS0THH:CS0THL
中的数值进行比较。
0:CS0 数字比较器禁用。
1:CS0 数字比较器启用。
读 = 00b ;写 = 无需在意
CS0 数字比较器中断标志。
0:自最后一次 CS0CMPF 被清零后, CS0 结果小于 CS0THH 和 CS0THL 设置的
数值。
1:自最后一次 CS0CMPF 被清零后, CS0 结果大于 CS0THH 和 CS0THL 设置的
数值。
附注:因 CS0 下限比较器事件而从暂停模式唤醒后, CS0CN 寄存器至少在两个系统时钟周期后方可被
访问。
Rev. 1.0
75
C8051F80x-83x
SFR 定义 13.2. CS0CF:电容传感配置寄存器
位
7
6
5
4
3
2
CS0CM[2:0]
名称
1
0
CS0ACU[2:0]
类型
R
R/W
R/W
R/W
R
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0x9E
位
名称
7
未使用
6:4
CS0CM[2:0]
3
未使用
2:0
CS0ACU[2:0]
76
功能
读 = 0b ;写 = 无需在意
CS0 转换启动模式选择。
000:每次向 CS0BUSY 写 1 时,转换启动。
001:定时器 0 溢出时,转换启动。
010:定时器 2 溢出时,转换启动。
011:定时器 1 溢出时,转换启动。
100:备用。
101:备用。
110:向 CS0BUSY 写 1 后,转换连续启动。
111:自动扫描启用,向 CS0BUSY 写 1 后,转换连续启动。
读 = 0b ;写 = 无需在意
CS0 累加器模式选择。
000:累加 1 样品。
001:累加 4 样品。
010:累加 8 样品。
011:累加 16 样品。
100:累加 32 样品。
101:累加 64 样品。
11x:备用。
Rev. 1.0
C8051F80x-83x
SFR 定义 13.3. CS0DH:电容传感数据高字节寄存器
位
7
6
5
4
3
2
1
0
CS0DH[7:0]
名称
类型
R
R
R
R
R
R
R
R
复位
0
0
0
0
0
0
0
0
2
1
0
SFR 地址 = 0xAC
位
名称
7:0
CS0DH
功能
CS0 数据高字节寄存器。
储存最后完成的 16 位电容传感转换的高字节。
SFR 定义 13.4. CS0DL:电容传感数据低字节寄存器
位
7
6
5
4
3
CS0DL[7:0]
名称
类型
R
R
R
R
R
R
R
R
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xAB
位
名称
7:0
CS0DL
功能
CS0 数据低字节寄存器。
储存最后完成的 16 位电容传感转换的低字节。
Rev. 1.0
77
C8051F80x-83x
SFR 定义 13.5. CS0SS:电容传感自动扫描启动通道寄存器 (Capacitive Sense
Auto-Scan Start Channel)
位
7
6
5
4
3
2
1
0
CS0SS[4:0]
名称
类型
R
R
R
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xB9
位
名称
7:5
未使用
4:0
CS0SS[4:0]
功能
读 = 000b ;写 = 无需在意
自动扫描启动通道寄存器。
当自动扫描启动和激活时,设置第一条 CS0 通道,以供 mux 选择用于电容传感
转换。
当自动扫描启动时,向 CS0SS 写入值也会更新 CS0MX。
SFR 定义 13.6. CS0SE:电容传感自动扫描结束通道寄存器 (Capacitive Sense
Auto-Scan End Channel)
Bit
7
6
5
4
3
2
1
0
CS0SE[4:0]
Name
Type
R
R
R
R/W
R/W
R/W
R/W
R/W
Reset
0
0
0
0
0
0
0
0
SFR 地址 = 0xBA
位
名称
7:5
未使用
4:0
78
CS0SE[4:0]
功能
读 = 000b ;写 = 无需在意
自动扫描结束通道寄存器。
当自动扫描启动和激活时,设置最后一条 CS0 通道,以供 mux 选择用于电容传感
转换。
Rev. 1.0
C8051F80x-83x
SFR 定义 13.7. CS0THH:电容传感比较器阈值高字节寄存器 (Capacitive Sense
Comparator Threshold High Byte)
位
7
6
5
4
3
2
1
0
CS0THH[7:0]
名称
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0x97
位
名称
7:0 CS0THH[7:0]
功能
CS0 比较器阈值高字节寄存器。
将 16 位数值高字节与电容传感转换结果进行比较。
SFR 定义 13.8. CS0THL:电容传感比较器阈值低字节寄存器 (Capacitive Sense
Comparator Threshold Low Byte)
位
7
6
5
4
3
2
1
0
CS0THL[7:0]
名称
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0x96
位
名称
7:0
CS0THL[7:0]
功能
CS0 比较器阈值低字节寄存器。
将 16 位数值低字节与电容传感转换结果进行比较。
Rev. 1.0
79
C8051F80x-83x
80
Rev. 1.0
C8051F80x-83x
13.6. 电容传感多路复用器
输入多路复用器可以通过两种方法控制。 CS0MX 寄存器可以通过固件写入,或该寄存器可以使用模块自动
扫描功能自动设置 (请参见 “13.3. 自动扫描 ” )。
CS0MX3
CS0MX2
CS0MX1
CS0MX0
CS0UC
CS0MX
附注:有关特定部件编号
的通道可用性,请参见
CS0MX SFR 定义。
P0.0
(多达 16 条通道)
CS0MUX
电容传感 0
P1.7
图 13.3. CS0 多路复用器结构图
Rev. 1.0
80
C8051F80x-83x
SFR 定义 13.9. CS0MX:电容传感 Mux 通道选择
位
7
名称
CS0UC
类型
R/W
R
R
R
R/W
R/W
R/W
R/W
复位
1
0
0
1
1
1
1
1
6
5
4
CS0UC
2
1
0
CS0MX[3:0]
SFR 地址 = 0x9C
位
名称
7
3
功能
CS0 未连接。
将 CS0 从所有端口针脚断开,无论所选通道为何。
0:CS0 已连接至端口针脚
1:CS0 已从端口针脚断开连接
6:4
3:0
备用
CS0MX[3:0]
读 = 000b ; 写 = 000b
CS0 Mux 通道选择寄存器。
选择 16 条通道中的一条进行电容传感转换。
C8051F803/9、
数值
C8051F800/6、
C8051F815、
C8051F812/8
C8051F821/4/7、
C8051F830/3
C8051F801/4/7、
C8051F810/3/6/9、
C8051F822/5/8、
C8051F831/4
0000
P0.0
P0.0
P0.0
0001
P0.1
P0.1
P0.1
0010
P0.2
P0.2
P0.2
0011
P0.3
P0.3
P0.3
0100
P0.4
P0.4
P0.4
0101
P0.5
P0.5
P0.5
0110
P0.6
P0.6
P0.6
0111
P0.7
P0.7
P0.7
1000
P1.0
P1.0
备用。
1001
P1.1
P1.1
备用。
1010
P1.2
P1.2
备用。
1011
P1.3
P1.3
备用。
1100
P1.4
备用。
1101
P1.5
备用。
备用。
1110
P1.6
备用。
备用。
1111
P1.7
备用。
备用。
附注: 在未于上表列出的所有设备上, CS0MX 均备用。
81
Rev. 1.0
备用。
C8051F80x-83x
14. CIP-51 微控制器
MCU 系 统 控 制 器 内 核 是 CIP-51 微 控 制 器。 CIP-51 与 MCS-51™ 指 令 集 完 全 兼 容 ; 可 以 使 用 标 准
803x/805x 汇编器和编译器进行软件开发。该 MCU 系列具有标准 8051 配备的所有外围设备超集合。该
CIP-51 还包含片上调试硬件(请参见 ?30? 说明)和与 MCU 直接接口的模拟和数字子系统,在一个集成电
路内提供完整的数据采集或控制系统解决方案。
CIP-51 微控制器内核除具有标准 8051 组织结构和外围设备外,另有增加的定制外围设备和功能,大大增强
了它的处理能力 (见图 14.1 结构图)。 CIP-51 具有以下特点:
与
复位输入
配备
MCS-51 指令集完全兼容
25 MHz 时钟时,最大吞吐率达 25 MIPS
0 到 25 MHz 的时钟频率
扩展的中断处理程序
电源管理模式
片上调试逻辑
程序和数据内存安全
性能
CIP-51 采用流水线结构,与标准 8051 结构相比指令吞吐率有很大提高。在一个标准 8051 中,除 MUL 和 DIV
以外,所有指令都需要 12 或 24 个系统时钟周期执行,并且通常最大系统时钟频率为 12 MHz。而对于 CIP51 内核, 70% 的指令都是在一个或两个系统时钟周期执行,没有执行时间超过八个系统时钟周期的指令。
数据总线
PSW
D8
堆栈指针寄存器
SRAM
地址寄存器
SRAM
D8
D8
ALU
B 寄存器
D8
TMP2
D8
D8
TMP1
累加器
D8
D8
D8
数据总线
数据总线
SFR_地址
缓冲器
D8
SFR_控制
D8
数据指针
D8
SFR
总线接口
SFR_写数据
SFR_读数据
数据总线
PC 增量器
程序计数器 (PC)
程序地址寄存器
内存地址
D8
内存地址
A16
内存接口
内存写数据
内存读数据
流水线
复位
D8
控制逻辑
系统中断
时钟
中断接口
D8
停止
空闲
电源控制寄存器
仿真中断
D8
图 14.1. CIP-51 结构图
Rev. 1.0
82
C8051F80x-83x
CIP-51 处于最大系统时钟频率 25 MHz 时,最大吞吐率达 25 MIPS。CIP-51 共有 109 条指令。下表列示指
令总条数与执行时所需系统时间周期数的关系。
执行周期数
1
2
2/3
3
3/4
4
4/5
5
8
指令条数
26
50
5
14
6
3
2
2
1
14.1. 指令集
CIP-51 系统控制器控制器的指令集与标准 MCS-51™ 指令集完全兼容。可以使用标准 8051 开发工具开发
CIP-51 软件。所有 CIP-51 指令在二进制码和功能上 (包括操作码、寻址模式和对 PSW 标志的影响)均与
同类 MCS-51™ 产品相等。但是,指令定时与标准 8051 不同。
14.1.1. 指令和 CPU 定时
在很多 8051 产品中,机器周期与时钟周期不同,机器周期的长度介于 2 到 12 个时钟周期。但 CIP-51 执行
只基于时钟周期定时。所有指令定时都以时钟周期计算。
由于 CIP-51 采用流水线结构,大多数指令执行所需的时钟周期数与指令的字节数一致。条件转移指令在不
发生转移时的执行周期数比发生转移时少一个。表 14.1 为 CIP-51 指令集一览表,其中包括每条指令的助记
符、字节数和时钟周期数。
83
Rev. 1.0
C8051F80x-83x
表 14.1. CIP-51 指令集一览表
助记符
说明
字节
时钟周期
算术操作类指令
ADD A, Rn
ADD A, direct
ADD A, @Ri
ADD A, #data
ADDC A, Rn
ADDC A, direct
ADDC A, @Ri
ADDC A, #data
SUBB A, Rn
SUBB A, direct
SUBB A, @Ri
SUBB A, #data
INC A
INC Rn
INC direct
INC @Ri
DEC A
DEC Rn
DEC direct
DEC @Ri
INC DPTR
MUL AB
DIV AB
DA A
寄存器加到累加器
直接寻址字节加到累加器
间址 RAM 加到累加器
立即数加到累加器
寄存器加到累加器 (带进位)
直接寻址字节加到累加器 (带进位)
间址 RAM 加到累加器 (带进位)
立即数加到累加器 (带进位)
累加器减去寄存器 (带借位)
累加器减去直接寻址字节 (带借位)
累加器减去间址 RAM (带借位)
累加器减去立即数 (带借位)
累加器加 1
寄存器加 1
直接寻址字节加 1
间址 RAM 加 1
累加器减 1
寄存器减 1
直接寻址字节减 1
间址 RAM 减 1
数据指针加 1
累加器与寄存器 B 相乘
累加器除以寄存器 B
累加器十进制调整
1
2
1
2
1
2
1
2
1
2
1
2
1
1
2
1
1
1
2
1
1
1
1
1
1
2
2
2
1
2
2
2
1
2
2
2
1
1
2
2
1
1
2
2
1
4
8
1
逻辑操作类指令
ANL A, Rn
ANL A, direct
ANL A, @Ri
ANL A, #data
ANL direct, A
ANL direct, #data
ORL A, Rn
ORL A, direct
ORL A, @Ri
ORL A, #data
ORL direct, A
ORL direct, #data
XRL A, Rn
XRL A, direct
XRL A, @Ri
XRL A, #data
XRL direct, A
寄存器 “ 与 ” 到累加器
直接寻址字节 “ 与 ” 到累加器
间址 RAM“ 与 ” 到累加器
立即数 “ 与 ” 到累加器
累加器 “ 与 ” 到直接寻址字节
立即数 “ 与 ” 到直接寻址字节
寄存器 “ 或 ” 到累加器
直接寻址字节 “ 或 ” 到累加器
间址 RAM“ 或 ” 到累加器
立即数 “ 或 ” 到累加器
累加器 “ 或 ” 到直接寻址字节
立即数 “ 或 ” 到直接寻址字节
寄存器 “ 异或 ” 到累加器
直接寻址字节 “ 异或 ” 到累加器
间址 RAM“ 异或 ” 到累加器
立即数 “ 异或 ” 到累加器
累加器 “ 异或 ” 到直接寻址字节
1
2
1
2
2
3
1
2
1
2
2
3
1
2
1
2
2
1
2
2
2
2
3
1
2
2
2
2
3
1
2
2
2
2
Rev. 1.0
84
C8051F80x-83x
表 14.1. CIP-51 指令集一览表 (Continued)
助记符
说明
XRL direct, #data
CLR A
CPL A
RL A
RLC A
RR A
RRC A
SWAP A
字节
时钟周期
立即数 “ 异或 ” 到直接寻址字节
累加器清零
累加器求反
累加器循环左移
带进位的累加器循环左移
累加器循环右移
带进位的累加器循环右移
累加器内高低半字节交换
3
1
1
1
1
1
1
1
3
1
1
1
1
1
1
1
数据传输类指令
MOV A, Rn
MOV A, direct
MOV A, @Ri
MOV A, #data
MOV Rn, A
MOV Rn, direct
MOV Rn, #data
MOV direct, A
MOV direct, Rn
MOV direct, direct
MOV direct, @Ri
MOV direct, #data
MOV @Ri, A
MOV @Ri, direct
MOV @Ri, #data
MOV DPTR, #data16
MOVC A, @A+DPTR
MOVC A, @A+PC
MOVX A, @Ri
MOVX @Ri, A
MOVX A, @DPTR
MOVX @DPTR, A
PUSH direct
POP direct
XCH A, Rn
XCH A, direct
XCH A, @Ri
XCHD A, @Ri
寄存器传送到累加器
直接寻址字节传送到累加器
间址 RAM 传送到累加器
立即数传送到累加器
累加器传送到寄存器
直接寻址字节传送到寄存器
立即数传送到寄存器
累加器传送到直接寻址字节
寄存器传送到直接寻址字节
直接寻址字节传送到直接寻址字节
间址 RAM 传送到直接寻址字节
立即数传送到直接寻址字节
累加器传送到间址 RAM
直接寻址字节传送到间址 RAM
立即数传送到间址 RAM
16 位常数载入 DPTR
相对于 DPTR 的代码字节传送到累加器
相对于 PC 的代码字节传送到累加器
外部数据 (8 位地址)传送到累加器
累加器传送到外部数据 (8 位地址)
外部数据 (16 位地址)传送到累加器
累加器传送到外部数据 (16 位地址)
直接寻址字节压入堆栈
堆栈数据弹出到直接寻址字节
寄存器与累加器交换
直接寻址字节与累加器交换
间址 RAM 与累加器交换
间址 RAM 与累加器交换低半字节
1
2
1
2
1
2
2
2
2
3
2
3
1
2
2
3
1
1
1
1
1
1
2
2
1
2
1
1
1
2
2
2
1
2
2
2
2
3
2
3
2
2
2
3
3
3
3
3
3
3
2
2
1
2
2
2
布尔调处指令
CLR C
CLR bit
SETB C
SETB bit
CPL C
CPL bit
ANL C, bit
清除进位位
清除直接寻址位
设置进位位
设置直接寻址位
进位位取反
直接寻址位取反
直接寻址位 “ 与 ” 到进位位
1
2
1
2
1
2
2
1
2
1
2
1
2
2
85
Rev. 1.0
C8051F80x-83x
表 14.1. CIP-51 指令集一览表 (Continued)
助记符
说明
ANL C, /bit
ORL C, bit
ORL C, /bit
MOV C, bit
MOV bit, C
JC rel
JNC rel
JB bit, rel
JNB bit, rel
JBC bit, rel
字节
时钟周期
直接寻址位的反码 “ 与 ” 到进位位
直接寻址位 “ 或 ” 到进位位
直接寻址位的反码 “ 或 ” 到进位位
直接寻址位传送到进位位
进位位传送到直接寻址位
若进位位已设置则跳转
若进位位未设置则跳转
若直接寻址位已设置则跳转
若直接寻址位未设置则跳转
若直接寻址位已设置则跳转,并清除改位
2
2
2
2
2
2
2
3
3
3
2
2
2
2
2
2/3
2/3
3/4
3/4
3/4
绝对调用子程序
长调用子程序
从子程序返回
从中断返回
绝对转移
长转移
短转移 (相对地址)
相对 DPTR 的间接转移
累加器为零则转移
累加器不为零则转移
比较直接寻址字节与累加器,不相等则转移
比较立即数与累加器,不相等则转移
比较立即数与寄存器,不相等则转移
比较立即数与间接寻址,不相等则转移
寄存器减 1,不为零则转移
直接寻址字节减 1,不为零则转移
空操作
2
3
1
1
2
3
2
1
2
2
3
3
3
3
2
3
1
3
4
5
5
3
4
3
3
2/3
2/3
4/5
3/4
3/4
4/5
2/3
3/4
1
程序分支指令
ACALL addr11
LCALL addr16
RET
RETI
AJMP addr11
LJMP addr16
SJMP rel
JMP @A+DPTR
JZ rel
JNZ rel
CJNE A, direct, rel
CJNE A, #data, rel
CJNE Rn, #data, rel
CJNE @Ri, #data, rel
DJNZ Rn, rel
DJNZ direct, rel
NOP
Rev. 1.0
86
C8051F80x-83x
寄存器、操作数和寻址模式说明:
Rn— 当前选择的寄存器区的寄存器 R0–R7。
@Ri— 通过寄存器 R0 或 R1 间接寻址的数据 RAM 地址。
rel— 相对于下一条指令第一个字节的 8 位有符号 (2 的补码)偏移量。 SJMP 和所有有条件转移指令
使用。
direct—8 位内部数据位置地址。可以是直接访问数据 RAM 地址 (0x00–0x7F) 或一个 SFR 地址 (0x80–
0xFF)。
#data—8 位常数
#data16—16 位常数
bit— 数据 RAM 或 SFR 中的直接寻址位
addr11—ACALL 和 AJMP 使用的 11 位目的地址。目的地址必须与下一条指令第一个字节处于同一个
2 kB 的程序内存页。
addr16—LCALL 和 LJMP 使用的 16 位目的地址。目的地址可以是 8 kB 程序内存空间内的任何位置。
有一个未使用操作码 (0xA5),该操作码执行与 NOP 指令相同的功能。
所有助记符归 © Intel Corporation 1980 版权所有。
87
Rev. 1.0
C8051F80x-83x
14.2. CIP-51 寄存器说明
下面对与 CIP-51 系统控制器操作有关的 SFR 加以说明。保留位应始终写 SFR 说明中指示的数值。将来的
产品版本可能会使用这些位执行新功能,在这种情况下,各位的复位值将为指示的数值,以选择功能的默认
状态。有关其它 SFR 的详细说明载于本数据表与其对应的系统功能相关的章节。
SFR 定义 14.1. DPL:数据指针低字节寄存器
位
7
6
5
4
名称
DPL[7:0]
类型
R/W
复位
0
SFR 地址 = 0x82
位
名称
7:0
DPL[7:0]
0
0
0
3
2
1
0
0
0
0
0
3
2
1
0
0
0
0
0
功能
数据指针低字节。
DPL 寄存器是 16 位 DPTR 的低字节寄存器。
SFR 定义 14.2. DPH:数据指针高字节寄存器
位
7
6
5
4
名称
DPH[7:0]
类型
R/W
复位
0
SFR 地址 = 0x83
位
名称
7:0
DPH[7:0]
0
0
0
功能
数据指针高字节。
DPH 寄存器是 16 位 DPTR 的高字节寄存器。
Rev. 1.0
88
C8051F80x-83x
SFR 定义 14.3. SP:堆栈指针寄存器
位
7
6
5
4
名称
SP[7:0]
类型
R/W
复位
0
SFR 地址 = 0x81
位
名称
7:0
SP[7:0]
0
0
0
3
2
1
0
0
1
1
1
功能
堆栈指针。
堆栈指针保持栈顶位置。在每次执行 PUSH 操作前,堆栈指针增加。 SP 寄存器复位
后的默认值为 0x07。
SFR 定义 14.4. ACC:累加器
位
7
6
5
4
名称
ACC[7:0]
类型
R/W
复位
0
0
0
0
SFR 地址 = 0xE0 ;可位寻址
位
名称
7:0
ACC[7:0] 累加器。
2
1
0
0
0
0
0
功能
该寄存器是算术操作累加器。
89
3
Rev. 1.0
C8051F80x-83x
SFR 定义 14.5. B:B 寄存器
位
7
6
5
4
名称
B[7:0]
类型
R/W
复位
0
0
SFR 地址 = 0xF0 ;可位寻址
位
名称
7:0
B[7:0]
B 寄存器。
0
0
3
2
1
0
0
0
0
0
功能
该寄存器为某些算术操作的第二累加器。
Rev. 1.0
90
C8051F80x-83x
SFR 定义 14.6. PSW:程序状态字寄存器
位
7
6
5
名称
CY
AC
F0
类型
R/W
R/W
R/W
复位
0
0
0
4
3
2
1
0
RS[1:0]
OV
F1
PARITY
R/W
R/W
R/W
R
0
0
0
0
SFR 地址 = 0xD0 ;可位寻址
位
名称
7
CY
进位标志。
0
功能
当最后一次算术操作产生进位 (加法)或借位 (减法)时,该位被设置。其它算术
操作将其清为逻辑 0。
6
AC
辅助进位标志。
当最后一次算术操作向高半字节有进位 (加法)或借位 (减法)时,该位被设置。
其它算术操作将其清为逻辑 0。
5
F0
用户标志 0。
这是一个可位寻址、受软件控制的通用标志位。
4:3
RS[1:0]
寄存器区选择。
这些位在寄存器访问时用于选择寄存器区。
00:寄存器区 0,地址 0x00-0x07
01:寄存器区 1,地址 0x08-0x0F
10:寄存器区 2,地址 0x10-0x17
11:寄存器区 3,地址 0x18-0x1F
2
OV
溢出标志。
在下列情况下,该位设置为 1:
一个
ADD、 ADDC 或 SUBB 指令导致符号改变溢出。
一个 MUL 指令导致溢出 (结果大于 255)。
一个 DIV 指令导致出现除以 0 的情况。
在所有其它情况下, OV 位被 ADD、 ADDC、 SUBB、 MUL 和 DIV 指令清 0。
1
F1
用户标志 1。
这是一个可位寻址、受软件控制的通用标志位。
0
PARITY
奇偶标志。
若累加器中八个位的和为奇数,则该位设置为逻辑 1,为偶数时则清零。
91
Rev. 1.0
C8051F80x-83x
15. 内存组织
CIP-51 系统控制器的内存组织类似于标准 8051 的内存组织,它分为两个独立的内存空间:程序内存和数据
内存。程序和数据内存共享同一地址空间,但需经不同的指令类型存取。 C8051F80x-83x 设备系列的内存
组织见图 15.1。
数据内存 (RAM)
内部数据地址空间
程序/数据内存(闪存)
C8051F80x 及 C8051F810/1
0x3FFF
0x3FFE
高 128 RAM
(仅间接寻址)
特殊功能寄存器
(仅直接寻址)
0x80
0x7F
16 kB 闪存
(在 512 字节扇区可进行
系统内编程)
0x0000
C8051F812/3/4/5/6/7/8/9
and C8051F82x
0x1FFF
0xFF
锁定字节
(直接和间接寻址)
低 128 RAM(直接
和间接寻址)
0x30
0x2F
0x20
0x1F
0x00
可位寻址
通用寄存器
锁定字节
外部数据地址空间
0x1FFE
仅 C8051F80x、C8051F81x 及
C8051F820/1/2/3
8 kB 闪存
(在 512 字节扇区可进行
系统内编程)
0xFFFF
0x0000
从 0x0000 至 0x01FF
为相同 256 字节,
且最大为 256 字节
C8051F830/1/2/3/4/5
0x0FFF
0x0FFE
锁定字节
4 kB 闪存
(在 512 字节扇区可进行
系统内编程)
0x0100
0x00FF
0x0000
XRAM - 256 字节
(可使用 MOVX 指令存取)
0x0000
图 15.1. C8051F80x-83x 存储器映像
Rev. 1.0
92
C8051F80x-83x
15.1. 程序内存
C8051F80x-83x 设备系列包含 16 kB (C8051F80x and C8051F810/1)、 8 kB (C8051F812/3/4/5/6/7/8/9
and C8051F82x),或 4 kB (C8051F830/1/2/3/4/5)可再编程闪存,可存储非易失性程序或数据。用户代
码空间的最后一字节用作安全锁定字节 (16 kB 设备的 0x3FFF、 8 kB 设备的 0x1FFF 及 4 kB 设备的
0x0FFF)。
C8051F80x 及
C8051F810/1 (16kB)
锁定字节
锁定字节页
0x3FFF
0x3FFE
在 512 字节页内组织的闪存
0x3E00
C8051F812/3/4/5/6/7/8/9
及 C8051F82x (8 kB)
锁定 字节
锁定字节页
0x1FFF
0x1FFE
0x1E00
C8051F830/1/2/3/4/5 (4 kB)
锁定字节
闪存空 间
锁定字节页
0x0FFF
0x0FFE
0x0E00
闪存空间
闪存空间
0x0000
0x0000
0x0000
图 15.2. 闪存程序存储器映像
15.1.1. MOVX 指令和程序内存
8051 设备的 MOVX 指令通常用于存取外部数据内存。在 C8051F80x-83x 设备上,MOVX 指令通常用于读
写片上 XRAM,但可重新配置以读取和擦除片上闪存空间。MOVC 指令一直用于读取闪存,而 MOVX 写入
指令用于擦除和写入闪存。该闪存存取功能提供一种便于 C8051F80x-83x 更新程序代码并利用程序内存空
间存储非易失性数据的机制。详情请参阅 113 ?“19. c 闪存 ”??。
15.2. 数据内存
C8051F80x-83x 设备系列产品包含 512 字节(C8051F80x, C8051F81x, and C8051F820/1/2/3)或 256 字
节(C8051F824/5/6/7/8/9 and C8051F830/1/2/3/4/5)RAM 数据内存。在所有 C8051F80x-83x 设备中,该
256 字节的内存被映射到 8051 的内部 RAM 空间。在拥有 512 字节 RAM 的设备中,剩余的 256 字节内存
属片上 “ 外部 ” 内存。数据内存图见图 15.1,以供参考。
15.2.1. 内部 RAM
从 0x00 到 0xFF 有 256 字节内部 RAM 被映射到数据内存空间。低 128 字节数据内存用于通用寄存器及高
速暂存器。不论直接或间接寻址均可用于存取低 128 字节数据内存。因有通用寄存器的四个地址芯片,每个
包括八字节宽的寄存器,从 0x00 到 0x1F 的单元均可寻址。其次从 0x20 到 0x2F 单元的 16 字节,可按字
节寻址或以直接寻址模式按 128 位单元寻址。
高 128 字节数据内存仅通过间接寻址存取。该区占有与特殊功能寄存器 (SFR) 相同的地址空间,但实体上
与其空间相分离。存取 0x7F 以上的单元的指令使用的寻址模式决定 CPU 存取高 128 字节数据内存空间或
SFR。使用直接寻址的指令将存取 SFR 空间。间接寻址 0x7F 以上的指令存取高 128 字节数据内存。图
15.1 描述了 C8051F80x-83x 的数据内存组织。
93
Rev. 1.0
C8051F80x-83x
15.2.1.1. 通用寄存器
低 32 字节数据内存位于 0x00 至 0x1F,可依照通用寄存器的四个地址芯片被寻址。每一地址芯片包含八字
节宽寄存器,分别命名为 R0 至 R7。这些地址芯片一次仅能激活一个。程序状态字中的两位元 RS0 (PSW.3)
和 RS1 (PSW.4),选择激活的寄存器地址芯片(参见 SFR 定义 14.6 的 PSW 说明)。这使进入子程序并中
断服务例行程序时可进行快速上下文转接。间接寻址模式使用寄存器 R0 和 R1 作为变址寄存器。
15.2.1.2. 位寻址
除直接存取字节形式的数据内存外,位于 0x20 至 0x2F 的 16 个数据内存单元也可作为 128 个独立的可寻
址位存取。每位均有一个从 0x00 至 0x7F 的位地址。位于 0x20 的字节 0 位地址为 0x00,而位于 0x20 的
字节 7 位地址为 0x07。位于 0x2F 的字节 7 位地址为 0x7F。按照使用的指令类型,位存取有别于全字节存
取 (位源或目的运算元而非字节源或目的)。
MCS-51™ 汇编语言允许使用为区域 XX.B(XX 为字节地址,B 为该字节内的位位置)位寻址的替代符。例
如,指令:
MOV
C, 22.3h
将 0x13 (0x22 单元的字节 3 位)的布尔值移至进位标志。
15.2.1.3. 堆栈
一个程序员的堆栈在 256 字节的数据内存的任何地点均可被定位。堆栈区指定使用堆栈指针寄存器 (SP)
SFR。SP 将指向最后使用的单元。插入堆栈的下一值位于 SP+1,而后 SP 即会增加。复位将使堆栈指针初
始化至单元 0x07。因此,插入堆栈的首值置于单元 0x08,也是寄存器地址芯片 1 的首个寄存器 (R0)。由
此,如使用的寄存器地址芯片不止一个, SP 应被初始化至数据内存内,而非用于数据存储。堆栈深度可扩
展至 256 字节。
Rev. 1.0
94
C8051F80x-83x
95
Rev. 1.0
C8051F80x-83x
16. 系统内设备识别
C8051F80x-83x 拥有 SFR,可识别设备系列及衍生产品。此类 SFR 可在运行时被固件读取以确定执行代码
的 MCU 能力。这样相同的固件形象可在不同的内存容量和外设的 MCU 上运行,并动态改变功能以适应该
MCU 能力。
为使固件识别 MCU,必须读取三个 SFR。HWID 描述 MCU 系列,DERIVID 描述该设备系列中的具体衍生
产品,而 REVID 描述 MCU 的硬件版本。
SFR 定义 16.1. HWID:硬件 ID 字节寄存器
位
7
6
5
4
3
2
1
0
HWID[7:0]
名称
类型
R
R
R
R
R
R
R
R
复位
0
0
1
0
0
0
1
1
SFR 地址 = 0xB5
位
名称
HWID[7:0]
7:0
功能
硬件 ID 字节寄存器。
描述 MCU 系列。
0x23:本文件所载设备 (C8051F80x-83x)
Rev. 1.0
95
C8051F80x-83x
SFR 定义 16.2. DERIVID:硬件 ID 字节寄存器
位
7
6
5
4
3
2
1
0
DERIVID[7:0]
名称
类型
R
R
R
R
R
R
R
R
复位
变化
变化
变化
变化
变化
变化
变化
变化
SFR 地址 = 0xAD
位
名称
7:0 DERIVID[7:0]
功能
硬件 ID 字节寄存器。
显示使用的 C8051F80x-83x 衍生产品。
0xD0: C8051F800; 0xD1: C8051F801; 0xD2: C8051F802; 0xD3: C8051F803
0xD4: C8051F804; 0xD5: C8051F805; 0xD6: C8051F806; 0xD7: C8051F807
0xD8: C8051F808; 0xD9: C8051F809; 0xDA: C8051F810; 0xDB: C8051F811
0xDC: C8051F812; 0xDD: C8051F813; 0xDE: C8051F814; 0xDF: C8051F815
0xE0: C8051F816; 0xE1: C8051F817; 0xE2: C8051F818; 0xE3: C8051F819
0xE4: C8051F820; 0xE5: C8051F821; 0xE6: C8051F822; 0xE7: C8051F823
0xE8: C8051F824; 0xE9: C8051F825; 0xEA: C8051F826; 0xEB: C8051F827
0xEC: C8051F828; 0xED: C8051F829; 0xEE: C8051F830; 0xEF: C8051F831
0xF0: C8051F832; 0xF1: C8051F833; 0xF2: C8051F834; 0xF3: C8051F835
SFR 定义 16.3. REVID:硬件版本 ID 字节寄存器
位
7
6
5
4
3
2
1
0
REVID[7:0]
名称
类型
R
R
R
R
R
R
R
R
复位
变化
变化
变化
变化
变化
变化
变化
变化
SFR 地址 = 0xB6
位
名称
REVID[7:0]
7:0
功能
硬件版本 ID 字节寄存器。
显示使用的 C8051F80x-83x 硬件版本。
例如, 0x00 = 版本 A。
96
Rev. 1.0
C8051F80x-83x
17. 特殊功能寄存器
位于 0x80 至 0xFF 的直接存取数据内存构成特殊功能寄存器 (SFR)。 SFR 可控制 C8051F80x-83x 的资
源及外围设备,并与其进行数据交换。 CIP-51 控制器内核可复制典型的 8051 设备内的 SFR,并能安装额
外的 SFR,以配置及访问 C8051F80x-83x 独有的子系统。这样在保持与 MCS-51™ 指令设备兼容的情况
下,即可添加新的功能。表 17.1 列载了装载入 C8051F80x-83x 设备系列的 SFR。
SFR 寄存器是一种可随时直接访问的寻址模式,可访问 0x80 至 0xFF 的内存位置。配有 0x0 或 0x8 寻址终
端的 SFR (如 P0、 TCON、 SCON0 及 IE 等)可通过位及字节寻址。而所有其他的 SFR 则仅能通过字节
寻址。SFR 中未占用的地址空间将留作日后使用。访问这类区域所造成的后果不详,因此应避免此类操作。
请参阅数据表中的相应页面 (载于表 17.2),以了解各台寄存器的详细情况。
表 17.1. 特殊功能寄存器 (SFR) 存储器映像
F8
F0
E8
E0
D8
D0
C8
C0
B8
B0
A8
A0
98
90
88
80
SPI0CN
B
ADC0CN
ACC
PCA0CN
PSW
TMR2CN
SMB0CN
IP
CS0CN
IE
P2
SCON0
P1
TCON
P0
0(8)
PCA0L
PCA0H PCA0CPL0 PCA0CPH0 P0MAT
P0MASK
VDM0CN
P0MDIN
P1MDIN
EIP1
EIP2
PCA0PWM
PCA0CPL1 PCA0CPH1 PCA0CPL2 PCA0CPH2 P1MAT
P1MASK
RSTSRC
XBR0
XBR1
IT01CF
EIE1
EIE2
PCA0MD PCA0CPM0 PCA0CPM1 PCA0CPM2 CRC0IN CRC0DATA
REF0CN CRC0AUTO CRC0CNT
P0SKIP
P1SKIP
SMB0ADM SMB0ADR
REG0CN TMR2RLL TMR2RLH
TMR2L
TMR2H
CRC0CN CRC0FLIP
SMB0CF SMB0DAT ADC0GTL ADC0GTH ADC0LTL ADC0LTH
CS0SS
CS0SE
ADC0MX
ADC0CF
ADC0L
ADC0H
OSCXCN
OSCICN
OSCICL
HWID
REVID
FLKEY
CLKSEL
CS0DL
CS0DH
DERVID
SPI0CFG SPI0CKR
SPI0DAT P0MDOUT P1MDOUT P2MDOUT
SBUF0
CPT0CN
CS0MX
CPT0MD
CS0CF
CPT0MX
CS0THL
CS0THH
TMOD
TL0
TL1
TH0
TH1
CKCON
PSCTL
SP
DPL
DPH
PCON
1(9)
2(A)
3(B)
4(C)
5(D)
6(E)
7(F)
附注: 以 0x0 或 0x8 结尾的 SFR 地址可通过位进行寻址,也可接受逐位指令。
Rev. 1.0
97
C8051F80x-83x
表 17.2. 特殊功能寄存器
按照字母顺序排列 SFR。保留所有未定义的 SFR 位置。
寄存器
98
地址
说明
页码
ACC
0xE0
累加器
89
ADC0CF
0xBC
ADC0 配置寄存器
50
ADC0CN
0xE8
ADC0 控制寄存器
52
ADC0GTH
0xC4
ADC0 下限比较高寄存器
53
ADC0GTL
0xC3
ADC0 下限比较低寄存器
53
ADC0H
0xBE
ADC0 高寄存器
51
ADC0L
0xBD
ADC0 低寄存器
51
ADC0LTH
0xC6
ADC0 上限比较高字寄存器
54
ADC0LTL
0xC5
ADC0 上限比较低字寄存器
54
ADC0MX
0xBB
AMUX0 多路复用器通道选择器
57
B
0xF0
B 寄存器
90
CKCON
0x8E
时钟控制寄存器
210
CLKSEL
0xA9
时钟选择寄存器
210
CPT0CN
0x9B
比较器 0 控制寄存器
67
CPT0MD
0x9D
比较器 0 模式选择寄存器
68
CPT0MX
0x9F
比较器 0 MUX 选择寄存器
70
CRC0AUTO
0xD2
CRC0 自动控制寄存器
165
CRC0CN
0xCE
CRC0 控制寄存器
163
CRC0CNT
0xD3
CRC0 自动闪存扇区总数寄存器
165
CRC0DATA
0xDE
CRC0 数据输出寄存器
164
CRC0FLIP
0xCF
CRC0 位翻转寄存器
166
CRC0IN
0xDD
CRC 数据输入寄存器
164
CS0THH
0x97
CS0 数字比较阈值高寄存器
79
CS0THL
0x96
CS0 数字比较阈值高寄存器
79
CS0CN
0xB0
CS0 控制寄存器
75
CS0DH
0xAC
CS0 数据高寄存器
77
CS0DL
0xAB
CS0 数据低寄存器
77
Rev. 1.0
C8051F80x-83x
表 17.2. 特殊功能寄存器 (Continued)
按照字母顺序排列 SFR。保留所有未定义的 SFR 位置。
寄存器
地址
说明
页码
CS0CF
0x9E
CS0 配置寄存器
76
CS0MX
0x9C
CS0 Mux
81
CS0SE
0xBA
自动扫描结束通道寄存器
78
CS0SS
0xB9
自动扫描启动通道寄存器
78
DERIVID
0xAD
硬件 ID 寄存器
96
DPH
0x83
数据指针高寄存器
88
DPL
0x82
数据指针低寄存器
88
EIE1
0xE6
扩展中断允许 1 寄存器
107
EIE2
0xE7
扩展中断允许 2 寄存器
108
EIP1
0xF3
扩展中断优先级 1 寄存器
109
EIP2
0xF4
扩展中断优先级 2 寄存器
110
FLKEY
0xB7
闪存锁定和关键码寄存器
119
HWID
0xB5
硬件 ID 寄存器
95
IE
0xA8
中断允许寄存器
105
IP
0xB8
中断优先级寄存器
106
IT01CF
0xE4
INT0/INT1 配置寄存器
112
OSCICL
0xB3
内部振荡器校准寄存器
131
OSCICN
0xB2
内部振荡器控制寄存器
132
OSCXCN
0xB1
外部振荡器控制寄存器
134
P0
0x80
端口 0 闩锁寄存器
153
P0MASK
0xFE
端口 0 屏蔽寄存器
151
P0MAT
0xFD
端口 0 匹配寄存器
151
P0MDIN
0xF1
端口 0 输入模式配置寄存器
154
P0MDOUT
0xA4
端口 0 输出模式配置寄存器
154
P0SKIP
0xD4
端口 0 跳过寄存器
155
P1
0x90
端口 1 闩锁寄存器
155
P1MASK
0xEE
P0 匹配寄存器
152
Rev. 1.0
99
C8051F80x-83x
表 17.2. 特殊功能寄存器 (Continued)
按照字母顺序排列 SFR。保留所有未定义的 SFR 位置。
寄存器
100
地址
说明
页码
P1MAT
0xED
P1 匹配寄存器
152
P1MDIN
0xF2
端口 1 输入模式配置寄存器
156
P1MDOUT
0xA5
端口 1 输出模式配置寄存器
156
P1SKIP
0xD5
端口 1 跳过寄存器
157
P2
0xA0
端口 2 闩锁寄存器
157
P2MDOUT
0xA6
端口 2 输出模式配置寄存器
158
PCA0CN
0xD8
PCA 控制寄存器
238
PCA0CPH0
0xFC
PCA 捕捉 0 高寄存器
243
PCA0CPH1
0xEA
PCA 捕捉 0 高寄存器
243
PCA0CPH2
0xEC
PCA 捕捉 2 高寄存器
243
PCA0CPL0
0xFB
PCA 捕捉 0 低寄存器
243
PCA0CPL1
0xE9
PCA 捕捉 1 低寄存器
243
PCA0CPL2
0xEB
PCA 捕捉 2 低寄存器
243
PCA0CPM0
0xDA
PCA 模块 0 模式寄存器
241
PCA0CPM1
0xDB
PCA 模块 1 模式寄存器
241
PCA0CPM2
0xDC
PCA 模块 2 模式寄存器
241
PCA0H
0xFA
PCA 计数器高寄存器
242
PCA0L
0xF9
PCA 计数器低寄存器
242
PCA0MD
0xD9
PCA 模式寄存器
239
PCA0PWM
0xF7
PCA PWM 配置寄存器
240
PCON
0x87
电源控制寄存器
122
PSCTL
0x8F
程序存储读写控制寄存器
118
PSW
0xD0
程序状态字寄存器
91
REF0CN
0xD1
电压基准控制寄存器
62
REG0CN
0xC9
稳压器控制寄存器
64
REVID
0xB6
ID 版本寄存器
96
RSTSRC
0xEF
复位源配置/状态
128
Rev. 1.0
C8051F80x-83x
表 17.2. 特殊功能寄存器 (Continued)
按照字母顺序排列 SFR。保留所有未定义的 SFR 位置。
寄存器
地址
说明
页码
SBUF0
0x99
UART0 数据缓冲器寄存器
207
SCON0
0x98
UART0 控制寄存器
206
SMB0ADM
0xD6
SMBus 从地址屏蔽寄存器
191
SMB0ADR
0xD7
SMBus 从地址寄存器
191
SMB0CF
0xC1
SMBus 配置寄存器
186
SMB0CN
0xC0
SMBus 控制寄存器
188
SMB0DAT
0xC2
SMBus 数据寄存器
192
SP
0x81
堆栈指针寄存器
89
SPI0CFG
0xA1
SPI0 配置寄存器
174
SPI0CKR
0xA2
SPI0 时钟频率控制寄存器
176
SPI0CN
0xF8
SPI0 控制寄存器
175
SPI0DAT
0xA3
SPI0 数据寄存器
176
TCON
0x88
定时器/计数器控制寄存器
215
TH0
0x8C
定时器/计数器 0 高寄存器
218
TH1
0x8D
定时器/计数器 1 高寄存器
218
TL0
0x8A
定时器/计数器 0 低寄存器
217
TL1
0x8B
定时器/计数器 1 低寄存器
217
TMOD
0x89
定时器/计数器模式寄存器
216
TMR2CN
0xC8
定时器/计数器 2 控制寄存器
222
TMR2H
0xCD
定时器/计数器 2 高寄存器
224
TMR2L
0xCC
定时器/计数器 2 低寄存器
224
TMR2RLH
0xCB
定时器/计数器 2 重载高寄存器
223
TMR2RLL
0xCA
定时器/计数器 2 重载低寄存器
223
VDM0CN
0xFF
VDD 监视器控制寄存器
126
XBR0
0xE1
端口 I/O 交叉开关控制 0 寄存器
148
XBR1
0xE2
端口 I/O 交叉开关控制 1 寄存器
149
所有其他 SFR 的位置
备用
Rev. 1.0
101
C8051F80x-83x
102
Rev. 1.0
C8051F80x-83x
18. 中断
C8051F80x-83x 包括一个扩展中断系统,该系统共支持两种优先级别的 15 种中断源。片上外围设备与外输
入针脚间的中断源分布依据设备的特定版本而有所差异。每项中断源在 SFR 中均有一个或多个对应的未决
中断标志。当外围设备或外部源头遇到有效的中断条件时,相关的未决中断标志即会设定为逻辑 1。
如对源头开启中断,则在设置未决中断标志时会产生一个中断请求。每当执行完当前指令, CPU 会立即在
预定地址生成一个 LCALL,即可开始执行中断服务例行程序 (ISR)。每个 ISR 必须以 RETI 指令结尾,这样
即可使程序执行回复至下一项指令并执行该指令,犹如中断命令尚未发出。如未启用中断,则硬件及程序将
忽略未决中断标志,按常规执行。(无论启用/禁用中断状态,未决中断标志均将设置为逻辑 1。)
通过控制 SFR (IE-EIE1) 中与每个中断源相应的中断启用位,即可单独启用或禁用每个中断源。不过,必须
事先将 EA 位 (IE.7) 设置为逻辑 1,以便启用所有中断,方可识别启用的单项中断。将 EA 位设置为逻辑 0
将禁用所有中断源,无论是否启用单独的中断设置。
当 CPU 矢量转至 ISR 时,硬件将自动清除若干未决中断标志。不过,多数标志并不会被硬件清除,而必须
自 ISR 返回前通过软件清除。如在 CPU 完成中断回归 (RETI) 指令后,未决中断标志的设置仍有效,则将
立即生成一项新的中断要求, CPU 在完成下一次指令后将重新进入 ISR。
Rev. 1.0
102
C8051F80x-83x
18.1. MCU 中断源和矢量
C8051F80x-83x MCU 支持 15 种中断源。可通过设置未决中断标志为逻辑 1,使软件模拟中断。如对标志
启用中断,则将生成一项中断要求,CPU 将转至与未决中断标志相关的 ISR 矢量地址。表 18.1 概述了与矢
量地址、优先级顺序及控制位相关的 MCU 中断源。有关外围设备有效的中断条件及未决中断标志操作的资
料,请参阅有关特定片上外围设备的数据表部分。
18.1.1. 中断优先级
每种中断源均可单独编程入一种或两种优先级:低级别和高级别。较低优先级的中断服务例程可能会被高优
先级别的中断抢先。而高优先级别中断则不会被抢先。每种中断在 SFR(IP 或 EIP1)中均有其对应的中断
优先级位,用以配置其优先等级。默认为低优先级。如同时识别两个中断,则将优先适用具有较高优先级别
的中断。如两个中断的优先级别相当,则将根据已设定的优先顺序 (载于表 18.1)进行判断。
18.1.2. 中断延时
中断发生时,其反应时间依据 CPU 的状态而定。未决中断在每个系统时钟循环中进行抽样及优先解码。因
此,最快的可能反应时间为 5 个系统时钟循环:其中 1 个时钟循环用于检测中断, 4 个时钟循环用于完成
ISR 中的 LCALL。如 RETI 执行时出现一个未决中断,则在 LCALL 处理未决中断前将执行一项单独的指
令。因此,当 CPU 正在执行 RETI 指令,且下一项指令为 DIV 时,(如当时并未处理其他的中断或新的中
断具有更高的优先级)中断将需要最长的反应时间。在这种情况下,反应时间为 18 个系统时钟循环:其中
1 个时钟循环用于检测中断,5 个时钟循环用于执行 RETI,8 个时钟循环用于完成 DIV 指令,而剩下的 4 个
时钟循环则用于执行 ISR 中的 LCALL。如新的中断与 CPU 所执行在 ISR 中所执行的中断具有相同或更低
的优先级,则仅当当前的 ISR (包括 RETI 及随后的指令)完成后 (包括 RETI 及随后的指令),才会执行
新的中断。
103
Rev. 1.0
C8051F80x-83x
中断矢量 优先
顺序
复位
0x0000
外部中断 0 (INT0)
定时器 0 溢出
外部中断 1 (INT1)
定时器 1 溢出
UART0
启用标志
优先级
控制
不
可
用
是
是
是
是
否
始终启用
始终为
最高级
EX0 (IE.0)
ET0 (IE.1)
EX1 (IE.2)
ET1 (IE.3)
ES0 (IE.4)
PX0 (IP.0)
PT0 (IP.1)
PX1 (IP.2)
PT1 (IP.3)
PS0 (IP.4)
未决标志
是否可通过位寻址?
中断源
是否可由 HW 清除?
表 18.1:中断概述
最高
无
0x0003
0x000B
0x0013
0x001B
0x0023
0
1
2
3
4
定时器 2 溢出
0x002B
5
是
否
ET2 (IE.5) PT2 (IP.5)
SPI0
0x0033
6
SMB0
0x003B
7
IE0 (TCON.1)
TF0 (TCON.5)
IE1 (TCON.3)
TF1 (TCON.7)
RI0 (SCON0.0)
TI0 (SCON0.1)
TF2H (TMR2CN.7)
TF2L (TMR2CN.6)
SPIF (SPI0CN.7)
WCOL (SPI0CN.6)
MODF (SPI0CN.5)
RXOVRN (SPI0CN.4)
SI (SMB0CN.0)
不
可
用
是
是
是
是
是
端口匹配
0x0043
8
无
ADC0
窗口比较
ADC0
转换完成
可编程计数器阵列
0x004B
是
ESPI0
(IE.6)
PSPI0
(IP.6)
ESMB0
(EIE1.0)
EMAT
(EIE1.1)
PSMB0
(EIP1.0)
PMAT
(EIP1.1)
EWADC0
(EIE1.2)
PWADC0
(EIP1.2)
是
否
9
不
可
用
AD0WINT (ADC0CN.3) 是
不
可
用
否
0x0053
10
AD0INT (ADC0CN.5)
是
否
EADC0
(EIE1.3)
PADC0
(EIP1.3)
0x005B
11
是
否
EPCA0
(EIE1.4)
PPCA0
(EIP1.4)
比较器 0
0x0063
12
CF (PCA0CN.7)
CCFn (PCA0CN.n)
CP0FIF (CPT0CN.4)
CP0RIF (CPT0CN.5)
否
否
ECP0
(EIE1.5)
PCP0
(EIP1.5)
备用
备用
CS0 转换完成
0x007B
15
CS0INT (CS0CN.5)
否
否
CS0 下限
0x0083
16
CS0CMPF (CS0CN.0)
否
否
ECSCPT
(EIE2.0)
ECSGRT
(EIE2.1)
PSCCPT
(EIP2.0)
PSCGRT
(EIP2.1)
18.2. 中断寄存器说明
本节介绍用于启用中断源及设置其优先级别的 SFR。有关外围设备有效的中断条件及未决中断标志操作的
资料,请参阅有关特定片上外围设备的数据表部分。
Rev. 1.0
104
C8051F80x-83x
SFR 定义 18.1:IE:中断允许寄存器
位
7
6
5
4
3
2
1
0
名称
EA
ESPI0
ET2
ES0
ET1
EX1
ET0
EX0
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xA8;可位寻址
位
名称
功能
7
EA
启用所有中断。
全部启用/禁用所有中断。覆盖单独的中断屏蔽设置。
0:禁用所有的中断源。
1:根据单独的屏蔽设置启用每项中断。
6
ESPI0 启用的串行外围接口 (SPI0) 中断。
此位设置 SPI0 中断的屏蔽。
0:禁用所有的 SPI0 中断。
1:启用 SPI0 生成的中断要求。
5
ET2
启用定时器 2 中断。
此位设置定时器 2 中断的屏蔽。
0:禁用定时器 2 中断。
1:启用 TF2L 或 TF2H 标志生成的中断要求。
4
ES0
启用 UART0 中断。
此位设置 UART0 中断的屏蔽。
0:禁用 UART0 中断。
1:启用 UART0 中断。
3
ET1
启用定时器 1 中断。
此位设置定时器 1 中断的屏蔽。
0:禁用所有定时器 1 中断。
1:启用 TF1 标志生成的中断要求。
2
EX1
启用外部中断 1。
此位设置外部中断 1 的屏蔽。
0:禁用外部中断 1。
1:启用 INT1 输入生成的中断要求。
1
ET0
启用定时器 0 中断。
此位设置定时器 0 中断的屏蔽。
0:禁用所有定时器 0 中断。
1:启用 TF0 标志生成的中断要求。
0
EX0
启用外部中断 0。
此位设置外部中断 0 的屏蔽。
0:禁用外部中断 0。
1:启用 INT0 输入生成的中断要求。
105
Rev. 1.0
C8051F80x-83x
SFR 定义 18.2:IP:中断优先级寄存器
位
7
名称
6
5
4
3
2
1
0
PSPI0
PT2
PS0
PT1
PX1
PT0
PX0
类型
R
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
1
0
0
0
0
0
0
0
SFR 地址 = 0xB8;可位寻址
位
名称
7
未使用 读 = 1b,写 = 无需在意。
功能
6
PSPI0
串行外围接口 (SPI0) 中断优先级控制。
此位设置 SPI0 中断的优先级。
0:SPI0 中断设置可降低优先级别。
1:SPI0 中断设置可升高优先级别。
5
PT2
定时器 2 中断优先级控制。
此位设置定时器 2 中断的优先级。
0:定时器 2 中断设置可降低优先级别。
1:定时器 2 中断设置可升高优先级别。
4
PS0
UART0 中断优先级控制。
此位设置 UART0 中断的优先级。
0:UART0 中断设置可降低优先级别。
1:UART0 中断设置可升高优先级别。
3
PT1
定时器 1 中断优先级控制。
此位设置定时器 1 中断的优先级。
0:定时器 1 中断设置可降低优先级别。
1:定时器 1 中断设置可升高优先级别。
2
PX1
外部中断 1 优先级控制。
此位设置外部中断 1 中断的优先级。
0:外部中断 1 设置可降低优先级别。
1:外部中断 1 设置可升高优先级别。
1
PT0
定时器 0 中断优先级控制。
此位设置定时器 0 中断的优先级。
0:定时器 0 中断设置可降低优先级别。
1:定时器 0 中断设置可升高优先级别。
0
PX0
外部中断 0 优先级控制。
此位设置外部中断 0 中断的优先级。
0:外部中断 0 设置可降低优先级别。
1:外部中断 0 设置可升高优先级别。
Rev. 1.0
106
C8051F80x-83x
SFR 定义 18.3:EIE1:扩展中断允许 1 寄存器
位
7
6
5
4
3
2
1
0
名称
备用
备用
ECP0
EADC0
EPCA0
EWADC0
EMAT
ESMB0
类型
W
W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xE6
位
名称
7
备用
必须写入 0。
6
备用
备用。
功能
必须写入 0。
启用比较器 0 (CP0) 中断。
此位设置 CP0 上升沿或下降沿中断的屏蔽。
0:禁用 CP0 中断。
1:启用 CP0RIF 及 CP0FIF 标志生成的中断要求。
5
ECP0
4
EADC0
启用 ADC0 转换完成中断。
此位设置 ADC0 转换完成中断的屏蔽。
0:禁用 ADC0 转换完成中断。
1:启用 AD0INT 标志生成的中断要求。
3
EPCA0
启用可编程计数器阵列 (PCA0) 中断。
此位设置 PCA0 中断的屏蔽。
0:禁用所有 PCA0 中断。
1:启用 PCA0 生成的中断要求。
2
1
0
107
EWADC0 启用窗口比较 ADC0 中断。
此位设置 ADC0 窗口比较中断的屏蔽。
0:禁用 ADC0 窗口比较中断。
1:启用 ADC0 窗口比较标志 (AD0WINT) 生成的中断要求。
EMAT
启用端口匹配中断。
此位设置端口匹配事件中断的屏蔽。
0:禁用所有端口匹配中断。
1:启用端口匹配生成的中断要求。
ESMB0 启用 SMBus (SMB0) 中断。
此位设置 SMB0 中断的屏蔽。
0:禁用所有 SMB0 中断。
1:启用 SMB0 生成的中断要求。
Rev. 1.0
C8051F80x-83x
SFR 定义 18.4:EIE2:扩展中断允许 2 寄存器
位
7
6
5
4
3
2
名称
1
0
ECSGRT
ECSCPT
类型
R
R
R
R
R
R
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xE7
位
名称
7:2
未使用 读取 = 000000b;写 = 无需在意。
1
ECSGRT 启用电容传感下限比较器中断。
功能
0:禁用电容传感下限比较器中断。
1:启用 CS0CMPF 生成的中断要求。
0
ECSCPT 启用电容传感转换完成中断。
0:禁用电容传感转换完成中断。
1:启用 CS0INT 生成的中断要求。
Rev. 1.0
108
C8051F80x-83x
SFR 定义 18.5:EIP1:扩展中断优先级 1 寄存器
位
7
6
5
4
3
2
1
0
名称
备用
备用
PCP0
PPCA0
PADC0
PWADC0
PMAT
PSMB0
类型
W
W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xF3
位
名称
7:6
备用
必须写入 0。
5
PCP0
比较器 0 (CP0) 中断优先级控制。
功能
此位设置 CP0 上升沿或下降沿中断的优先级。
0:CP0 中断设置可降低优先级别。
1:CP0 中断设置可升高优先级别。
4
PPCA0
可编程计数器阵列 (PCA0) 中断优先级控制。
此位设置 PCA0 中断的优先级。
0:PCA0 中断设置可降低优先级别。
1:PCA0 中断设置可升高优先级别。
3
PADC0
ADC0 转换完成中断优先级控制。
此位设置 ADC0 转换完成中断的优先级。
0:ADC0 转换完成中断设置可降低优先级别。
1:ADC0 转换完成中断设置可升高优先级别。
2
PWADC0 ADC0 窗口比较器中断优先级控制。
此位设置 ADC0 窗口中断的优先级。
0:ADC0 窗口中断设置可降低优先级别。
1:ADC0 窗口中断设置可升高优先级别。
1
PMAT
0
PSMB0
端口匹配中断优先级控制。
此位设置端口匹配事件中断的优先级。
0:端口匹配中断设置可降低优先级别。
1:端口匹配中断设置可升高优先级别。
SMBus (SMB0) 中断优先级控制。
此位设置 SMB0 中断的优先级。
0:SMB0 中断设置可降低优先级别。
1:SMB0 中断设置可升高优先级别。
109
Rev. 1.0
C8051F80x-83x
SFR 定义 18.6:EIP2:扩展中断优先级 2 寄存器
位
7
6
5
4
3
2
1
0
名称
备用
备用
备用
备用
备用
备用
PSCGRT
PSCCPT
类型
R
R
R
R
R
R
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xF4
位
名称
7:2
备用
1
0
功能
PSCGRT 电容传感下限比较器优先级控制。
此位设置电容传感下限比较器中断的优先级。
0:CS0 下限比较器中断设置可降低优先级别。
1:CS0 下限比较器设置可升高优先级别。
PSCCPT 电容传感转换完成优先级控制。
此位设置电容传感转换完成中断的优先级。
0:CS0 转换完成设置可降低优先级别。
1:CS0 转换完成设置可提高优先级别。
Rev. 1.0
110
C8051F80x-83x
18.3. INT0 和 INT1 外部中断
INT0 和 INT1 外部中断源可配置为高态或低态有效,边沿或水平敏感。IT01CF 寄存器中规定 IN0PL(INT0
极性)和IN1PL (INT1 极性)位选择高态或低态有效, TCON 中的 IT0 和 IT1 位 (见 211 页第“28.1 条定
时器 0 和定时器 1”)选择水平或边沿敏感。下表列载出可能的配置。
IT0
IN0PL
1
0
1
INT0 中断
INT1 中断
IT1
IN1PL
低态有效,边沿敏感
1
0
低态有效,边沿敏感
1
高态有效,边沿敏感
1
1
高态有效,边沿敏感
0
0
低态有效,水平敏感
0
0
低态有效,水平敏感
0
1
高态有效,水平敏感
0
1
高态有效,水平敏感
INT0 和 INT1 在端口针脚的分布情况详见 IT01CF 寄存器定义 (见 SFR 定义 18.7)。注意, INT0 和 INT0
端口针脚分配与任何交叉开关分配无关。INT0 和 INT1 将监控各自所分配的端口针脚,而不会影响通过交叉
开关分配予端口针脚的外围设备。如仅向 INT0 及/或 INT1 分配端口针脚,则可设定交叉开关以跳过所选
的针脚。此操作可通过在寄存器 XBR0 中设置相关位来完成(有关交叉开关配置的完整详情,请参阅第 143
页“23.3.优先级交叉开关编码器”一节)。
IE0 (TCON.1) 和 IE1 (TCON.3) 分别作为 INT0 和 INT1 外部中断的未决中断标志。如 INT0 或 INT1 的外部
中断配置属边沿敏感,则当 CPU 矢量转至 ISR 时,相应的未决中断标志将会被硬件自动清除。当配置属水
平敏感,则未决中断标志仍将保持为逻辑 1,而输入将根据相应极性位(IN0PL 或 IN1PL)的定义处于激活
状态,当输入处于非激活状态时,标志将保持为逻辑 0。外部中断源须保持输入处于激活状态,直至中断要
求被识别。然后须先释放中断要求,方可完成ISR 的执行或产生另一项中断要求。
111
Rev. 1.0
C8051F80x-83x
SFR 定义 18.7:IT01CF:INT0/INT1 配置寄存器
位
7
名称
IN1PL
IN1SL[2:0]
IN0PL
IN0SL[2:0]
类型
R/W
R/W
R/W
R/W
复位
0
6
0
5
0
4
3
0
0
2
0
1
0
0
1
SFR 地址 = 0xE4
位
名称
7
IN1PL
功能
INT1 极性。
0:INT1 输入处于低态有效。
1:INT1 输入处于高态有效。
6:4
IN1SL[2:0] INT1 端口针脚选择位。
这些位选择分配予 INT1 的端口针脚。注意,这种针脚分配独立于交叉开关;INT1 将
监控分配的端口针脚,而不会影响通过交叉开关分配予端口针脚的外围设备。如配置
为跳过所选针脚,则交叉开关不会将端口针脚分配予外围设备。
000:选择 P0.0
001:选择 P0.1
010:选择 P0.2
011:选择 P0.3
100:选择 P0.4
101:选择 P0.5
110:选择 P0.6
111:选择 P0.7
3
IN0PL
INT0 极性。
0:INT0 输入处于低态有效。
1:INT0 输入处于高态有效。
2:0
IN0SL[2:0] INT0 端口针脚选择位。
这些位选择分配予 INT0 的端口针脚。注意,这种针脚分配独立于交叉开关;INT0 将
监控分配的端口针脚,而不会影响通过交叉开关分配予端口针脚的外围设备。如配置
为跳过所选针脚,则交叉开关不会将端口针脚分配予外围设备。
000:选择 P0.0
001:选择 P0.1
010:选择 P0.2
011:选择 P0.3
100:选择 P0.4
101:选择 P0.5
110:选择 P0.6
111:选择 P0.7
Rev. 1.0
112
C8051F80x-83x
113
Rev. 1.0
C8051F80x-83x
19. c闪存
内部含有片上、可再编程闪存,用于程序代码和非易失性数据存储。可以通过 C2 接口或由软件使用 MOVX
写入指令对闪存进行系统编程。清除到逻辑 0 时,必须擦除一个闪存位方能再返回逻辑 1 状态。在进行重新
编程之前,一般要将闪存字节擦除(设置为 0xFF)。为了保障操作正确,写入和擦除操作由硬件自动定时,
不需要进行数据查询来判断写入/擦除操作何时结束。在闪存写入/擦除操作期间,代码停止执行。请参阅
表 7.6,了解闪存的完整电气特性。
19.1. 编程闪存
对闪存进行编程的最简单的方法是使用 Silicon Laboratories 或第三方供应商提供的编程工具,通过 C2 接口
编程。这是对未被初始化过的设备的唯一编程方法。有关对闪存进行编程的 C2 命令的详情,请见第 244 页
“30. C2 接口”一条。
软件使用 MOVX 写入指令,将待编程的地址和数据字节当作正常操作数,可对闪存进行编程。使用 MOVX
进行闪存编程前,必须通过以下步骤启用闪存编程操作:(1) 将 PSWE 程序存储写入允许位 (PSCTL.0)
设置为逻辑 1 (指示 MOVX 写入目标闪存);及 (2) 按顺序将闪存关键码写入闪存锁定寄存器(FLKEY)。
在被软件清除之前, PSWE 位一直保持设定。有关固件闪存编程的详细指引请见第 115 页“19.4. 闪存写入
和擦除指引”一条。
注意: 写入或擦除闪存具有最小 SYSCLK 频率要求,详细信息请参照 <“电气特性”一章中的表 7.6>
为了保证闪存内容的正确性,必须在包含代码(该代码可以从软件中写入及/或擦除闪存)的任何系统中启
用片上 VDD 监视器,并将其作为复位源。此外,启用 VDD 监视器和允许 VDD 监视器担任复位源之间不得有
延时。在 VDD 监视器被禁用或未被允许作为复位源时,任何意图写入或擦除闪存的举动都会导致闪存故障
设备复位。
19.1.1. 闪存锁定和主要功能
从用户软件编写和擦除闪存受锁定和关键码功能的保护。在进行闪存操作之前,必须按顺序向闪存锁定和关
键码寄存器 (FLKEY)写入正确的关键码。关键码为:0xA5、 0xF1。写入关键码的时序并不重要,但必须
按顺序填写。如果关键码的写入顺序不对,或写入了错误的关键码,闪存写入和擦除将被禁止,直至下一次
系统复位。如果在正确写入关键码之前进行了闪存写入和擦除操作,闪存写入和擦除也将被禁止。每次写入
或擦除操作之后,闪存锁定功能复位;在进行下一次闪存操作之前,必须重写关键码。SFR 定义 19.2. 中给
出了 FLKEY 寄存器的详细说明。
19.1.2. 闪存擦除程序
闪存是以 512 字节的页面来组织的。一次擦除操作将应用到整个页面 (将该页的所有字节设置为 0xFF)。
要擦除整个 512 字节的页面,执行以下步骤:
1. 跳过电流中断状态并禁止中断。
2. 设置 PSEE 位 (寄存器 PSCTL)。
3. 设置 PSWE 位 (寄存器 PSCTL)。
4. 将第一个关键码写入 FLKEY:0xA5。
5. 将第二个关键码写入 FLKEY:0xF1。
6. 用 MOVX 指令向待擦除的 512 字节页面内的任何一个地址写入一个数据字节。
7. 清除 PSWE 和 PSEE 位。
8. 恢复先前的中断状态。
Rev. 1.0
113
C8051F80x-83x
每擦除一页 512 字节页面,必须重复 4-6 步。
附注: 闪存安全设置可预防一些闪存页的擦除,如保留区和含有锁定字节的页面。有关闪存安全设置和限制影响闪存
擦除操作的概述,请参阅 114 页的“19.3. 安全选项”章节。
19.1.3. 闪存写入步骤
对闪存的写入可清除位元至逻辑 0 ,但无法设置它们;惟有擦除操作可将闪存内的位元设为内存的逻辑 1。
写入新值前,应擦除待编写的字节位置。
建议按如下步骤向内存中写入单字节:
1. 跳过电流中断状态并禁止中断。
2. 确保闪存字节已擦除 (赋值 0xFF)。
3. 设置 PSWE 位 (寄存器 PSCTL)。
4. 清除 PSEE 位 (寄存器 PSCTL)。
5. 将第一个关键码写入 FLKEY:0xA5。
6. 将第二个关键码写入 FLKEY:0xF1。
7. 使用 MOVX 指令,将单数据字节写入 512 字节扇区内的指定位置。
8. 清除 PSWE 位。
9. 恢复先前的中断状态。
每写入一字节,必须重复步骤 5-7。
附注: 闪存安全设置可预防写入保留区等若干闪存区。有关闪存安全设置和限制影响闪存写入操作的概述,请参阅
114 页的“19.3. 安全选项”章节。
19.2. 非易失性数据存储
闪存可用于存储非易失性数据和程序代码。这允许在运行时计算并存储如校准系数之类的数据。使用 MOVX
写入指令写入数据,使用 MOVC 指令读取数据。
附注: MOVX 读取指令始终用于 XRAM。
19.3. 安全选项
CIP-51 提供安全选项以防备闪存被软件不慎修改及专利程序代码和常量泄露。程序存储写入启用位 (寄存
器 PSCTL 内的 PSWE 位)和程序存储擦除启用位 (寄存器 PSCTL 内的 PSEE 位)可防备闪存遭软件意
外修改。在软件可修改闪存之前, PSWE 必须被明确设置为 1;在软件可擦除闪存之前, PSWE 和 PSEE
必须被设置为 1。其他安全特征防备专利程序代码和数据常量通过 C2 接口遭读取或更改。
位于闪存用户空间最后一字节的安全锁定字节可防备程序闪存被未受保护的代码或 C2 接口存取(读取、写
入和擦除)。通过将非 0xFF 数值写入锁定字节,闪存安全机制允许用户锁定从 0 页开始的所有闪存页。请
注意,在锁定字节中写入非 0xFF 数值将会锁定所有闪存页,使其无法被读取、写入或擦除 (包括含有锁定
字节的页面)。
闪存安全级别取决于闪存存取方式。读取、写入和擦除的三种闪存存取方式是通过 C2 调试接口,在未锁定
页上执行的用户固件和在锁定页上执行的用户固件。表 19.1 概述 C8051F80x-83x 设备的闪存安全特征。
114
Rev. 1.0
C8051F80x-83x
表 19.1:闪存安全概述
操作
C2 调试接口
用户固件执行对象:
未锁定页
锁定页
读取、写入或擦除未锁定页
(含有锁定字节的页除外)
允许
允许
允许
读取、写入或擦除锁定页
(含有锁定字节的页除外)
禁止
FEDR
允许
读取或写入含有锁定字节的页
(如无锁定页)
允许
允许
允许
读取或写入含有锁定字节的页
(如均为锁定页)
禁止
FEDR
允许
读取锁定字节内容
(如无锁定页)
允许
允许
允许
读取锁定字节内容
(如均为锁定页)
禁止
FEDR
允许
擦除含有锁定字节的页
(如无锁定页)
允许
FEDR
FEDR
擦除含有锁定字节的页 - 解除所有页的锁定
(如均为锁定页)
仅通过 C2DE FEDR
FEDR
锁定其他页
(锁定字节的 1s 改为 0s)
禁止
FEDR
FEDR
解锁独立页
(锁定字节的0s 改为1s)
禁止
FEDR
FEDR
读取、写入或擦除保留区
禁止
FEDR
FEDR
C2DE—C2 设备擦除 (擦除包括含有锁定字节页在内的所有闪存页)
FEDR—禁止;促使闪存故障设备复位 (复位后 RSTSRC 内的 FERROR 位为 1)

无需在意通过 C2 接口执行的所有违规操作 (不会引起设备复位)。
锁定任何闪存页及含有锁定字节的页。
 锁定字节一经写入,则仅可通过执行 C2 设备擦除来修改。


如用户代码写入锁定字节,则直至下次设备复位锁定方可生效。
19.4. 闪存写入和擦除指引
包含按照软件写入或擦除闪存的例行程序的任何系统均有风险,即如 CPU 运行时超出其 VDD 规定运行范
围、系统时钟频率或温度,写入或擦除例行程序将自行启用。该闪存修改代码的意外操作会导致闪存内容改
变,造成系统故障,惟有重新设置设备代码方可修复。
为帮助预防闪存被固件意外修改,必须启用 C8051F80x-83x 设备上的 VDD 监控器并作为复位源以成功修
改闪存。如无法启用 VDD 监控器或 VDD 监控器复位源,当固件试图修改闪存时将造成闪存故障设备复位。
Rev. 1.0
115
C8051F80x-83x
对于包含按照代码写入或擦除闪存的例行程序的任何系统,建议遵循以下指引。
19.4.1. VDD 维护和 VDD 监控器
1. 如系统供电受电压或电流“峰值”影响,请为电源配置足够的瞬变保护设备以确保电源电压低于绝对最大
额定值表所列。
2. 确保最小 VDD 上升时间达到规定的 1 ms。如系统未能满足上升时间规定,则将一外部 VDD 节电电路
加至设备 RST 针,该 RST 针保持设备复位直至VDD 达到最低设备工作电压,而当 VDD 低于最低设备
工作电压时再次使用 RST。
3. 保持片上 VDD 监控器处于启用状态,并启用 VDD 监控器作为复位源,尽早使用代码。这应是执行复位
向量后的第一批指令。对 C 语言系统而言,这还包括更改 C 语言编译程序施加的启动代码。欲知详情,
请参阅编译程序文件。确保软件及时启用 VDD 监控器并将其作为复位源。指导该操作的代码实例,请
登陆 Silicon Laboratories 网站查找“AN201:固件写入闪存”。
附注: 在 C8051F80x-83x 设备上, VDD 监控器及其复位源均须被启用以写入或擦除闪存,而不产生闪存故障设备
复位。
在 C8051F80x-83x 设备上, VDD 监控器及其复位源均在上电复位后由硬件启用。
4. 作为附加的预防措施,明确启用 VDD 监控器并使其在写入和擦除闪存的功能内作为复位源。 VDD 监控
器启用指令应紧接 PSWE 设置为 a 1 的指令后发出,但早于闪存写入或擦除操作指令发出。
5. 确保对 RSTSRC (复位源)寄存器的所有写入使用直接赋值算符并明确禁用位运算符 (如 AND 或
OR)。例如, “RSTSRC = 0x02”为正确格式,而“RSTSRC |= 0x02”则属错误。
6. 确保对 RSTSRC 寄存器的所有写入明确将 PORSF 位设置为 a 1。需检查启用其他复位源的初始化代
码,如缺失时钟探测器或比较器,以及强制软件复位的指令。一项关于“RSTSRC”的全球调查可很快证
实这一点。
19.4.2. PSWE 维护
1. 当 PSWE 位 (b0 在 PSCTL)被设置为 a 1 时减少代码位数。应有一个例行代码将 PSWE 设置为 a 1
以写入闪存字节而有另一例行代码将 PSWE 和 PSEE 均设为 a 1 以擦除闪存页。
2. 当 PSWE 设为 a 1 时,将可变存取数目减至最低。更新指针地址并在“PSWE = 1;...PSWE = 0;”区外
环回维护。指导该操作的代码实例,请登陆 Silicon Laboratories 网站查找“AN201:固件写入
闪存”。
3. 在将 PSWE 设为 a 1 前不可中断运行,直至 PSWE 被复位至 0 后方可中断。在闪存操作已完成及软件
再次中断运行后,在闪存写入或擦除操作过程中施加的任何中断将加入优先级别。
4. 确报闪存写入和擦除指针变量未位于 XRAM 内。有关如何明确定位不同内存区变量的指令,请参阅您
的编译程序文件。
5. 对写入或擦除闪存的例行程序进行地址边界检查以确保例行程序访问非法地址不会导致闪存修改。
116
Rev. 1.0
C8051F80x-83x
19.4.3. 系统时钟
1. 如在外部晶体环境下操作,请注意晶体性能易受电干扰,且对布局和温度的改变十分敏感。若系统在电
噪声环境下运行,请使用内部振荡器或使用外部 CMOS 时钟。
2. 若在外部振荡器下运行,请在闪存写入或擦除操作过程中切换至内部振荡器。外部振荡器可持续运行,
闪存操作结束后可将 CPU 切回外部振荡器。
更多闪存建议和代码实例,请参阅 Silicon Laboratories 网站的“AN201:由固件写入闪存”。
Rev. 1.0
117
C8051F80x-83x
SFR 定义 19.1:PSCTL:程序存储读写控制寄存器
位
7
6
5
4
3
2
名称
1
0
PSEE
PSWE
类型
R
R
R
R
R
R
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 =0x8F
位
名称
7:2
未使用 读 = 000000b;写 = 无需在意。
1
PSEE
程序存储擦除允许。
功能
设置此位 (以及 PSWE)允许删除一整页闪存程序内存。如此位为逻辑 1 且允许闪存
写入 (PSWE 为逻辑 1),使用 MOVX 指令写入的闪存将擦除包含以 MOVX 指令定址
的一整页。写入数据字节的值无关紧要。
0:闪存程序内存擦除禁用。
1:闪存程序内存擦除启用。
0
PSWE
程序存储写入允许。
设置此位允许使用 MOVX 写入指令向闪存程序内存写入一个字节。写入数据前应擦除
闪存位置。
0:写入闪存程序内存禁用。
1:写入闪存程序内存启用;MOVX 写入指令定位于闪存。
118
Rev. 1.0
C8051F80x-83x
SFR 定义 19.2:FLKEY:闪存锁定和关键码寄存器
位
7
6
5
4
3
名称
FLKEY[7:0]
类型
R/W
复位
0
0
0
SFR 地址 = 0xB7
位
名称
7:0 FLKEY[7:0] Fash 锁定和关键码寄存器。
0
0
2
1
0
0
0
0
功能
写:
此寄存器提供闪存擦除和写入的锁定和关键码功能。闪存写入和擦除是通过向 FLKEY
寄存器中写入 0xA5 再写入 0xF1 启用。下一步写入或擦除完成后,闪存写入和擦除被
自动禁用。如向 FLKEY 中的任何写入操作不正确,或在有关功能被禁用时执行闪存写
入或擦除操作,闪存将被永久锁定,不能写入或擦除,直至下次设备复位。如某项应
用无法写入闪存,则会通过自软件向 FLKEY 写入非 0xA5 值有意锁定闪存。
读:
读取时, 1-0 位表明当前的闪存锁定状态。
00:闪存为写入/擦除锁定。
01:首位关键代码已被写入 (0xA5)。
10:闪存解除锁定 (允许写入/擦除)。
11:下次复位前,闪存写入/擦除被禁用。
Rev. 1.0
119
C8051F80x-83x
120
Rev. 1.0
C8051F80x-83x
20. 电源管理模式
C8051F80x-83x 设备有三种软件可编程的电源管理模式:空闲、停止及暂停。空闲模式和停止模式是标准
8051 结构的一部分,而暂停模式是由高度振荡器外围设备实施的一种增强型省电模式。
空闲模式下,CPU 暂停而外围设备和时钟激活。停止模式下,CPU 暂停、所有中断处理程序和定时器(缺
失时钟探测器除外)均处于非激活状态,内部振荡器停止(模拟外围设备依然处于所选状态;外部振荡器不
受影响)。暂停模式与停止模式类似,内部振荡器和 CPU 暂停,但在出现端口不匹配、比较器输出过低或
定时器 3 溢出事件时便能唤醒有关设备。由于时钟在空闲模式下运行,决定电耗的是系统时钟的频率和进出
空闲状态前处于激活状态的外围设备数目。停止模式和暂停模式耗电最少,因为大多数设备都被关闭,且没
有时钟处于激活状态。 SFR 定义 20.1 描述用于控制 C8051F80x-83x 停止和空闲电源管理模式的电源控制
寄存器 (PCON)。暂停模式由 OSCICN 寄存器中的暂停位控制 (SFR 定义 22.3)。
尽管 C8051F80x-83x 有空闲、停止和暂停模式可供使用,可按需要通过启用/禁用单个外围设备,实现对
设备电源的更多控制。每一个模拟外围设备在未被使用及处于低能模式时均可被禁用。数字外围设备(如定
时器或串行总线)不使用时用电极少。关闭振荡器可显著降低电耗,其代价就是功能减少。
20.1. 空闲模式
设置空闲模式选择位 (PCON.0) ,硬件让 CPU 暂停并在设置位的指令执行完成后立即进入空闲模式。所
有内部寄存器和存储器均维持其原始数据。在空闲模式下,所有模拟和数字外围设备均可保持激活状态。
允许中断被判定或出现复位时,空闲模式即告终止。判定允许中端将引起空闲模式选择位 (PCON.0)被清
除及 CPU 重新运行。未决中断将得到执行,而从中断中回复后要执行的下个指令将是紧随设置空闲模式选
择位之后的指令。如空闲模式是因内部或外部复位而终止,则 CIP-51 执行正常的复位流程,并在 0x0000
位置开始程序执行。
附注: 如写入空闲位之后的指令是一个单字节指令,且中断出现在设置空闲位的指令的执行阶段,未来出现中断时
CPU 可能无法从空闲模式中唤醒。因此,设置空闲位的指令后面应该紧随一个两字节或更多字节的指令,
例如:
// 用 'C' 语言:
PCON |= 0x01;
// 设置 IDLE 位
PCON = PCON;
// ... 跟随一条 3 周期伪指令
; 用汇编语言:
ORL PCON, #01h
MOV PCON, PCON
; 设置 IDLE 位
; ... 跟随一条 3 周期伪指令
如启用,看门狗 (WDT)将最终引起内部看门狗复位,从而终止空闲模式。此特点保护系统在出现不慎写
入 PCON 寄存器事件时免于被意外永久关机。如不需要此行为,而 WDT 最初被配置为允许此操作,可在进
入空闲模式前通过软件禁用 WDT。这提供附加的省电机会,无限期允许系统保持空闲模式,等待外部刺激
将其唤醒。参见第 236 页“29.4. 看门狗模式”一条,了解 WDT 使用及配置方面的更多资料。
Rev. 1.0
120
C8051F80x-83x
20.2. 停止模式
设置停止模式选择位 (PCON.1),在设置位的指令执行完成后立即让控制器内核进入停止模式。在停止模式
下,内部振荡器、 CPU 及所有数字外围设备均停止;外部振荡器电路的状态不受影响。每一个模拟外围设
备(包括外部振荡器电路)在进入停止模式前可能分别关闭。停止模式仅能通过内部或外部复位终止。复位
时,设备执行正常的复位流程,并在 0x0000 位置开始程序执行。
如启用,缺失时钟探测器将引起内部复位,从而终止停止模式。如 CPU 处于停止模式的时间将长于 100 μs
的 MCD 超时,则应禁用缺失时钟探测器。
20.3. 暂停模式
暂停模式允许系统从内部振荡器进入类似停止模式的极低电耗状态,但若干状态下可无需将设备复位而唤醒
处理器。选择暂停位 (OSCICN.5) ,硬件让 CPU 及高频内部振荡器暂停,并在设置位的指令执行完成后
立即进入暂停模式。所有内部寄存器和存储器均维持其原始数据。暂停模式下,多数数字外围设备均未激
活。但端口匹配特征和定时器 3 从外部振荡器源运行则除外。
进入暂停模式时,在寄存器 CLKSEL 中的时钟除法器位 CLKDIV[2:0] 必须设置为“除以 1”。
可通过五类事件终止暂停模式:端口匹配 (见第 150 页“23.5. 端口匹配”一条所述)、定时器 2 溢出 (见第
219 页“28.2. 定时器 2”一条所述)、比较器输出过低(如启用)、电容传感下限比较器事件或设备复位事件。
为在暂停模式下运行定时器 3,必须自外部时钟源将定时器配置为时钟。暂停模式终止后,该设备将继续按
设置暂停位的后一个指令运行。如唤醒事件 (端口匹配或定时器 2 溢出)被配置为产生中断,则唤醒设备
时该中断获执行。如暂停模式是因内部或外部复位而终止,则 CIP-51 执行正常的复位流程,并在 0x0000
位置开始程序执行。
注意: 如果唤醒源“挂起”,则设备仍会进入暂停模式,而设备不会唤醒 这些挂起的唤醒源。 必须确保设备
进入暂停模式后,可以触发设定的唤醒源,这一点至关重要。 例如,如果在设备进入暂停模式之前 CS0 转
换结束且产生中断,则该中断不会触发唤醒事件。 由于端口匹配事件有优先级之分,因此只要在设备进入暂
停模式时仍存在匹配条件,先发生的端口匹配事件就会触发唤醒。
121
Rev. 1.0
C8051F80x-83x
SFR 定义 20.1:PCON:电源控制寄存器
位
7
6
5
4
3
2
1
0
名称
GF[5:0]
停止
空闲
类型
R/W
R/W
R/W
0
0
复位
0
SFR 地址 = 0x87
位
名称
7:2
GF[5:0]
0
0
0
0
0
功能
通用标志 5-0。
存在在软件控制下使用的通用标志。
1
停止
停止模式选择。
设置此位会将 CIP-51 置于停止模式。此位将一直读作 0。
1:CPU 进入停止模式 (内部振荡器停止)。
0
空闲
空闲:空闲模式选择。
设置此位会将 CIP-51 置于空闲模式。此位将一直读作 0。
1:CPU 进入空闲模式。(CPU 时钟关闭,但定时器、中断、串行端口和模拟外围设
备的时钟依然处于激活状态。)
Rev. 1.0
122
C8051F80x-83x
123
Rev. 1.0
C8051F80x-83x
21. 复位源
复位电路让控制器轻松位于预先定义的默认条件中。进入此复位状态时,会出现以下情况:

CIP-51 暂停程序执行

特殊功能寄存器 (SFR)初始化为设定的复位值
外部端口针脚被迫进入已知状态
 中断和定时器被禁用。
所有 SFR 均复位到 SFR 详细说明中的预先定义值。复位时内部数据内存的内容不受影响;任何先前存储的
数据均被保留。但由于堆栈指针特殊功能寄存器被复位,尽管堆栈上的数据未变更,堆栈实际上已经丢失。

端口 I/O 锁存器被复位到开路模式下的 0xFF (全部为逻辑 1) 。复位期间和复位之后,弱上拉模式启用。
对于 VDD 监视器和启动复位, RST 针脚变为低电平,直至设备退出复位状态时为止。
退出重置状态后,程序计数器 (PC)被重置,系统时钟默认到内部振荡器。用系统时钟除以 12 作为时钟
源,便能启用看门狗。程序执行始于位置 0x0000。
VDD
启动复位
电源
监视器
+
-
比较器 0
'0'
启用
(“或”功能线)
RST
+
-
Px.x
C0RSEF
缺失时
钟探测
器(单
触发)
EN
复位
逻辑
PCA
WDT
(软件复位)
SWRSF
MCD
启用
EN
FLASH 操作
错误
WDT
启用
Px.x
系统
时钟
CIP-51
微控制器内核
系统复位
扩展的中断处理程序
图 21.1. 复位源
Rev. 1.0
123
C8051F80x-83x
21.1. 启动复位
在上电期间,设备处于复位状态, RST 针脚处于低电平,直至 VDD 上升至 VRST 以上时为止。设备从复位
状态退出复位状态前会出现延时,延时随 VDD 上升时间的增加而减少 (VDD 上升时间被定义为 VDD 从 0 V
上升到 VRST 的时间)。图 21.2. 是启动和 VDD 监视器复位定时最大 VDD 上升时间为 1 ms;上升时间过慢
会导致设备在 VDD 达到 VRST 电平之前退出复位状态。当上升时间小于 1 ms 时,启动复位延时 (TPORDelay)
通常小于 10 ms。
在退出启动复位状态时,PORSF 标志 (RSTSRC.1) 被硬件设置为逻辑 1。当 PORSF 被置位时,RSTSRC
寄存器中的所有其他复位标志都是不确定的 (PORSF 被所有其他复位清零)。由于所有复位都导致程序从
同一个地址 (0x0000) 开始执行,软件可以通过读 PORSF 标志来确定是否为上电引起的复位。在一次启动
复位后,内部数据内存中的内容应被认为是未定义的。将启用并选择 VDD 监控器作为上电复位后的复位源。
VDD
V
DD
VDD 电源
VRST
t
逻辑高电平
逻辑低电平
RST
TPORDelay
VDD
监视器复位
启动复位
图 21.2. 启动和 VDD 监视器复位定时
124
Rev. 1.0
C8051F80x-83x
21.2. 掉电复位/VDD 监视器
当发生掉电或因电源波动导致 VDD 降到 VRST 以下时,电源监视器将 RST 针脚驱动为低电平并使 CIP-51
保持复位状态 (见图 21.2)。当 VDD 又返回高于 VRST 的电平时, CIP-51 将退出复位状态。尽管内部数据
内存的内容可能没有因掉电复位而发生改变,但无法确定 VDD 是否降到了数据保持所要求的最低电平以
下。如果 PORSF 标志的读数为 1,则数据可能不再有效。启动复位后, VDD 监视器被启用。但其设定状态
(启用/禁用)不受任何其他复位源影响。将启用并选择 VDD 监控器作为上电复位后的复位源。
重要事项:如 VDD 监视器被从禁用状态打开,则在选择其作为复位源之前,必须启用 VDD 监视器。在 VDD
监视器被启用或稳定之前选其为复位源可能导致系统复位。某些应用中,此复位可能属不良现象:如在有关
应用中属于不良现象,则应在启用监视器和选其作为复位源之间插入延时。启用 VDD 监视器并将其从禁用
状态配置为复位源的操作步骤如下:
1. 启用 VDD 监视器 (VDM0CN 中的 VDMEN 位 = 1)。
2. 如必要,等待 VDD 监视器稳定。
3. 选择 VDD 监视器作为复位源 (RSTSRC 中的 PORSF 位 = 1)。
图 21.2 给出了 VDD 监视器的时序;注意,在 VDD 监视器复位后没有上电复位延时。见第 39 页"7. 电气特
性"一条,了解 VDD 监视器的完整电气特性。
Rev. 1.0
125
C8051F80x-83x
SFR 定义 21.1:VDM0CN:VDD 监视器控制寄存器
位
7
6
名称
VDMEN
VDDSTAT
类型
R/W
复位
Varies
SFR 地址 = 0xFF
位
名称
7
VDMEN
5
4
3
2
1
0
R
R
R
R
R
R
R
Varies
Varies
Varies
Varies
Varies
Varies
Varies
功能
VDD 监视器启用。
此位控制 VDD 监视器电路的通断。 VDD 监视器在寄存器 RSTSRC (SFR 定义
21.2)中被选择为复位源之前不可能产生系统复位。在 VDD 监视器稳定之前选其为
复位源可能导致系统复位。在此复位可能属于不良状态的系统中,则应在启用 VDD
监视器和选其作为复位源之间插入延时。上电复位后,将启用 VDD 监控器,此位读
数为 1。 此位状态不受任何其他复位源影响。
0:VDD 监视器禁用。
1:VDD 监视器启用。
6
VDDSTAT
VDD 状态。
此位指示当前电源状态 (VDD 监视器输出)。
0:VDD 等于或低于 VDD 监视器阈值。
1:VDD 高于 VDD 监视器阈值。
5:0
未使用
读 = Varies;写 = 无需在意。
21.3. 外部复位
外部 RST 针脚提供了使用外部电路强制设备进入复位状态的手段。在 RST 针脚上加一个低电平有效信号产
生复位;可能需要外部上拉及/或对 RST 去耦以避免过强噪声引起复位。见第 39 页"7. 电气特性"一条,了
解完整 RST 针脚规格。从外部复位退出后, PINRSF 标志 (RSTSRC.0) 被设置。
21.4. 缺失时钟探测器复位
缺失时钟探测器 (MCD) 是由系统时钟触发的单触法电路。如系统时钟保持在逻辑高电平或过逻辑低电平的
时间超过 MCD 超时,单稳态将超时并产生复位。 MCD 复位后, MCDRSF 标志 (RSTSRC.2) )的读数为
1,表示 MCD 为复位源;否则,该位读数为 0。向 MCDRSF 位写入 1 启动缺失时钟探测器;写入 0 将禁用
缺失时钟探测器。 RST 针脚状态不受该复位影响。
126
Rev. 1.0
C8051F80x-83x
21.5. 比较器 0 复位
向 C0RSEF 标志 (RSTSRC.5) 写入 1,可将比较器 0 配置为复位源。应在写入 C0RSEF 前启用比较器 0 并
等待输出稳定,以防止通电瞬间在输出端产生抖动,从而导致不必要的复位。比较器 0 复位为低态有效:如
果同相端输入电压 (CP0+) 小于反相端输入电压 (CP0-) ,则设备被置于复位状态。比较器 0 复位后,
C0RSEF 标志 (RSTSRC.5) 的读数为 1 ,表示比较器 0 为复位源;否则该位读数为 0 。RST 针脚状态不受
该复位影响。
21.6. PCA 看门狗复位
可编程计数器阵列 (PCA) 的可编程看门狗 (WDT) 功能可用于在系统出现错误的情况下防止软件运行失控。
可以通过软件启用或禁用 PCA 的 WDT 功能 (见第 236 页的"29.4. 看门狗模式"一条);在每次复位后,
WDT 被启用并使用 SYSCLK / 12 作为计数时钟。如系统故障阻止用户软件更新 WDT,将产生一次复位且
WDTRSF 位 (RSTSRC.5) 设置为'1'。 RST 针脚状态不受该复位影响。
21.7. 闪存故障复位
如闪存读取/写入/擦除或程序读取的目标为非法地址,将产生系统复位。这可能是因以下任何一种情况导
致:

闪存写入或擦除地址超出了用户代码空间。这种情况发生在 PSWE 设置为 1,且 MOVX 写入操作的目
标地址大于地址 0x3DFF。

闪存读取地址超出了用户代码空间。这种情况发生在 MOVC 操作目标地址大于地址 0x3DFF。

程序读取地址超出了用户代码空间。这种情况发生在用户代码试图转移到大于 0x3DFF 的地址时。

闪存的读取、写入或擦除被闪存安全设置限制 (见第 114 页"19.3. 安全选项"一条)。
闪存故障复位后, FERROR 位 (RSTSRC.6) 被设置。 RST 针脚状态不受该复位影响。
21.8. 软件复位
软件可通过向 SWRSF 位 (RSTSRC.4) 写入 1 进行强制复位。在软件强制复位后,SWRSF 位的读数为 1。
RST 针脚状态不受该复位影响。
Rev. 1.0
127
C8051F80x-83x
SFR 定义 21.2:RSTSRC:复位源
位
7
名称
6
5
4
3
2
1
0
FERROR
C0RSEF
SWRSF
WDTRSF
MCDRSF
PORSF
PINRSF
类型
R
R
R/W
R/W
R
R/W
R/W
R
复位
0
变化
变化
变化
变化
变化
变化
变化
SFR 地址 = 0xEF
位
名称
说明
7
未使用 未使用。
6
FERROR 闪存故障复位标志。
5
C0RSEF 比较器 0 复位启用及标志。
4
SWRSF
写入
读取
无需在意。
0
不可用
如闪存读取/写入/擦除
故障导致上次复位,设置
为 1。
写入 1 启用作为复位源
如比较器 0导致上次复位,
(低态有效)的比较器 0。 设置为 1。
软件复位力及标志。
写入 1 强制系统复位。
如写入 SWRSF 导致上次
复位,设置为 1。
3
WDTRSF 看门狗复位标志。
不可用
如看门狗溢出导致上次复
位,设置为 1。
2
MCDRSF 缺失时钟探测器启用及标志。
写入 1 启用缺失时钟探测
器。如检测到缺失时钟条
件, MCD 触发复位。
如缺失时钟探测器超时导
致上次复位,设置为 1。
1
PORSF
启动 /VDD 监视器复位标志, 写入 1 启用作为复位源的
VDD 监视器。
且 VDD 监视器复位启用。
在 VDD 监视器启用并稳定
前在有关位数中写入 1 会
导致系统复位。
开机或 VDD 监视器复位
时,设置为 1。
设置为 1 时,所有其他
RSTSRC 标志是不确定
的。
0
PINRSF
HW 针脚复位标志。
如 RST 针脚导致上次复
位,设置为 1。
不可用
附注: 请勿在该寄存器上使用读取 - 调节 - 写入操作。
128
Rev. 1.0
C8051F80x-83x
22. 振荡器和时钟选择寄存器
C8051F80x-83x 设备包括可编程的内部高频振荡器以及外部振荡器驱动电路。可用 OSCICN 及 OSCICL 寄
存器启用/禁用及校准内部高频振荡器 (如图 22.1) 。可通过外部振荡器电路或内部振荡器 (默认)获取
系统时钟。内部振荡器提供可选的后分频功能,其初始设置为时钟除以 8。
选项 2 – RC 模式
OSCICL
OSCICN
CLKSEL
CLKSL1
CLKSL0
CLKRDY
CLKDIV2
CLKDIV1
CLKDIV0
XTAL2
SSE
IFCN1
IFCN0
IOSCEN
IFRDY
SUSPEND
STSYNC
VDD
EN
选项 4 – CMOS 模式
XTAL2
可编程内部
时钟发生器
CLKRDY
n
时钟分频器
SYSCLK
n
选项 1 – 晶体模式
XTAL1
时钟分频器
输入电路
10MΩ
OSC
XFCN2
XFCN1
XFCN0
选项 3 – C 模式
XTAL2
XOSCMD2
XOSCMD1
XOSCMD0
XTAL2
OSCXCN
图 22.1. 振荡器选项
22.1. 系统时钟选择
可使用 CLKSEL 寄存器选择 MCU 系统时钟源。时钟被选为系统时钟后,可除以 1、2、4、8、16、32、64
或 128 。当在两个时钟除数值间转换时,跳变可占用未分频时钟源的 128 次循环。查询 CLKRDY 标志,确
定何时可用新时钟除数。进入暂停模式后,时钟分频器必须设置为"除以 1" 。亦可接通正在运行的系统时钟
源。在较慢的振荡器运行一个时钟周期后,转换生效。
Rev. 1.0
129
C8051F80x-83x
SFR 定义 22.1:CLKSEL:时钟选择
位
7
名称
CLKRDY
类型
R
R/W
R/W
R/W
R
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xA9
位
名称
7
CLKRDY
6
5
4
3
CLKDIV[2:0]
CLKDIV
3
未使用
功能
系统时钟分频器时钟就绪标志。
系统时钟分频器位。
选择将应用于选定源 (内部或外部)的时钟分频。
000:选定时钟除以 1。
001:选定时钟除以 2。
010:选定时钟除以 4。
011:选定时钟除以 8。
100:选定时钟除以 16。
101:选定时钟除以 32。
110:选定时钟除以 64。
111:选定时钟除以 128。
读 = 0b。必须写入 0b。
2:0 CLKSEL[2:0] 系统时钟选择。
选择将用作未分频系统时钟源的振荡器。
000:内部振荡器
001:外部振荡器
保留所有其他值。
130
1
0
CLKSEL[2:0]
0:选定的时钟分频设置尚未应用于系统时钟。
1:选定的时钟分频设置已应用于系统时钟。
6:4
2
Rev. 1.0
C8051F80x-83x
22.2. 可编程内部高频 (H-F) 振荡器
所有 C8051F80x-83x 设备均包括一个可编程内部高频振荡器,其在系统复位后被默认为系统时钟。可通过
OSCICL 寄存器 (定义见 SFR 定义 22.2)调整内部振荡器周期。
在 C8051F80x-83x 设备上, OSCICL 为工厂校准,以获取 24.5 兆赫基本频率。
内部振荡器输出频率可除以 1 、2 、4 或 8 (定义见寄存器 OSCICN 中的 IFCN 位)。复位后,除数默认为
8。
为减少系统产生的电磁干扰 (EMI),精确振荡器支持可调制输出频率的扩频模式。启用时 (SSE = 1),
通过梯形三角波调制振荡器输出频率,三角波频率 = 振荡器频率 / 384(工厂校准为 63.8 千赫)。中心频率
的最大偏差值为 ±0.75%。输出频率每 32 次循环更新一次,且步长一般为中心频率的 0.25%。
SFR 定义 22.2:OSCICL:内部 H-F 振荡器校准
位
7
6
5
4
3
名称
OSCICL[6:0]
类型
R/W
复位
变化
变化
变化
变化
变化
SFR 地址 = 0xB3
位
名称
6:0 OSCICL[7:0] 内部振荡器校准位
2
1
0
变化
变化
变化
功能
这些位确定了内部振荡器周期。当设置为 00000000b 时, H-F
振荡器以其设置的最快速率运转。当设置为 11111111b 时, H-F 振荡器
在以其设置的最慢速率运转。复位值为工厂校准,以产生24.5 兆赫的内部振荡器
频率。
Rev. 1.0
131
C8051F80x-83x
SFR 定义 22.3:OSCICN:内部 H-F 振荡器控制
位
7
6
5
4
3
名称
IOSCEN
IFRDY
SUSPEND
STSYNC
SSE
类型
R/W
R
R/W
R
R/W
R
复位
1
1
0
0
0
0
SFR 地址 = 0xB2
位
名称
7
IOSCEN
2
1
0
IFCN[1:0]
R/W
0
0
功能
内部 H-F 振荡器启用位。
0:内部 H-F 振荡器禁用。
1:内部 H-F 振荡器启用。
6
IFRDY
内部 H-F 振荡器频率就绪标志
0:内部 H-F 振荡器尚未以编程频率运行。
1:内部 H-F 振荡器正在以编程频率运行。
5
SUSPEND
内部振荡器暂停启用位。
设置此位至逻辑 1 ,将内部振荡器设为暂停模式。一旦发生暂停模式唤醒事件,内部
振荡器将恢复操作。
4
STSYNC
暂停定时器同步位。
此位用于表示何时可安全读取及写入与暂停唤醒定时器有关的寄存器。如暂停唤醒源
(除定时器 2)使振荡器脱离暂停模式,在定时器可读取或写入前,该源会占用三个
定时器时钟。
0:定时器 2 寄存器可安全读取。
1:不应读取或写入定时器 2 寄存器。
3
SSE
扩频启用。
扩频启用位。
0:扩频时钟抖动禁用。
1:扩频时钟抖动启用。
2
1:0
未使用
IFCN[1:0]
读 = 0b;写 = 无需在意
内部 H-F 振荡器分频器控制位。
00:源自内部 H-F 振荡器的 SYSCLK 除以 8。
01:源自内部 H-F 振荡器的 SYSCLK 除以 4。
10:源自内部 H-F 振荡器的 SYSCLK 除以 2。
11:源自内部 H-F 振荡器的 SYSCLK 除以 1。
132
Rev. 1.0
C8051F80x-83x
22.3. 外部振荡器驱动电路
外部振荡器电路能驱动外部晶体、陶瓷谐振器、电容器或 RC 网络。CMOS 时钟也能提供时钟输入。就晶体
或陶瓷谐振器配置而言,晶体/谐振器必须接线穿过 XTAL1 及 XTAL2 针脚 (如图 22.1 选项 1 所示)。须
将 10M 电阻器接线穿过 XTAL1 及 XTAL2 针脚,以便进行晶体/谐振器配置。在 RC、谐振器或 CMOS 时钟
配置中,时钟源应连接至 XTAL2 针脚 (如图 22.1 选项 2、 3 或 4 所示)。须在 OSCXCN 寄存器中选择外
部振荡器类型,且须选择适当的频率控制位 (XFCN) (请参阅 SFR 定义 22.4)。
使用外部振荡器的重要事项:当使用外部振荡器电路时,须配置端口针脚。当外部振荡器驱动电路启用晶体
/谐振器模式时,端口针脚 P0.2 及 P0.3 分别用作 XTAL1 及 XTAL2 。当外部振荡器驱动电路启用电容器、
RC 或 CMOS 时钟模式时,端口针脚 P0.3 用作 XTAL2 。端口 I/O 交叉开关须配置为可跳过振荡器电路使
用的端口针脚 (欲知交叉开关配置,请参阅 143 页“23.3 优先级交叉开关编码”一节)。此外当外部振荡器电
路启用晶体/谐振器、电容器或 RC 模式中时,相关端口针脚应配置为模拟输入。CMOS 时钟模式中,相关
针脚应配置为数字输入 ( 欲知端口输入模式选择详情,请参阅 147 页“23.4. 端口 I/O 初始化”一节)。
Rev. 1.0
133
C8051F80x-83x
SFR 定义 22.4:OSCXCN:外部振荡器控制寄存器
位
7
名称
XTLVLD
XOSCMD[2:0]
类型
R
R/W
复位
0
6
0
5
0
SFR 地址 = 0xB1
位
名称
7
XTLVLD
4
3
2
1
0
XFCN[2:0]
R
0
0
R/W
0
0
0
功能
晶体振荡器有效标志
(仅当 XOSCMD = 11x 时读取)
0:晶体振荡器未使用或不稳定。
1:晶体振荡器稳定运行。
6:4
XOSCMD[2:0] 外部振荡器模式选择。
000x:外部振荡器电路关闭。
010:外部 CMOS 时钟模式。
011:外部 CMOS 时钟模式分为两个阶段。
100:RC 振荡器模式。
101:电容器振荡器模式。
110:晶体振荡器模式。
111:晶体振荡器模式分为两个阶段。
3
2:0
未使用
XFCN[2:0]
读 = 0 ;写 = 无需在意
外部振荡器频率控制位。
根据晶体或 RC 模式的适宜频率进行设置。
根据 C 模式的适宜 K 系数进行设置。
XFCN
晶体模式
RC 模式
134
C 模式
000
f≤32 千赫
f≤25 千赫
K 系数 = 0.87
001
32 千赫<f≤84 千赫
25 千赫<f≤50 千赫
K 系数 = 2.6
010
84 千赫<f≤225 千赫
50 千赫<f≤100 千赫
K 系数 = 7.7
011
225 千赫<f≤590 千赫 100 千赫<f≤200 千赫
K 系数 = 22
100
590 千赫<f≤1.5 兆赫 200 千赫<f≤400 千赫
K 系数 = 65
101
1.5 兆赫<f≤4 兆赫
400 千赫<f≤800 千赫
K 系数 = 180
110
4 兆赫<f≤10 兆赫
800 千赫<f≤1.6 兆赫
K 系数 = 664
111
10 兆赫<f≤30 兆赫
1.6 兆赫<f≤3.2 兆赫
K 系数 = 1590
Rev. 1.0
C8051F80x-83x
22.3.1. 外部晶体范例
如晶体或陶瓷谐振器用作 MCU 的外部振荡器源,电路应按图 22.1 选项 1 所示进行配置。外部振荡器频率
控制值 (XFCN) 应从 SFR 定义 22.4 (OSCXCN 寄存器)所载表格的晶体一栏中选择。例如, 11.0592 兆
赫的晶体要求 111b 的 XFCN 设置,而 32.768千赫表面晶体要求 001b 的 XFCN 设置。待外部 32.768 千赫
的振荡器稳定后,XFCN 设置可转换为 000 以节省电量。建议在系统时钟转换为任何外部振荡器源前,启用
缺失时钟探测器。
首次启用晶体振荡器时,振荡器振幅探测电路需要一定的设置时间,以达到合适偏压。若在启用振荡器与检
查 XTLVLD 位之间介入 1 毫秒延时时间,将会阻止系统时钟过早转换外部振荡器。在晶体振荡器稳定前转
换外部振荡器会导致不可预测的反应。建议的程序如下:
1. 强制 XTAL1 及 XTAL2 处于低状态。这包括启用交叉开关,并在 XTAL1 及 XTAL2 的关联端口针脚写入
0
2. 将 XTAL1 及 XTAL2 配置为模拟输入。
3. 启用外部振荡器。
4. 至少等待 1 毫秒。
5. 查询 XTLVLD = 1。
6. 如需要,启用缺失时钟探测器。
7. 将系统时钟转换至外部振荡器。
有关外部晶体的重要事项:晶体振荡器电路对 PCB 布局非常敏感。晶体放置的位置应尽可能靠近设备的
XTAL 针脚处。迹线应尽可能短,并受到屏蔽面的保护,远离可能产生噪音或干扰的任何其他迹线。
外部晶体配置所示电容器提供了晶体进行适当震荡所需的负载电容。上述电容器对晶体为"串联"设置,并与
XTAL1 及 XTAL2 针脚的寄生电容"并联"。
附注: 所需负载电容取决于晶体及制造商。完成上述计算后,请参考晶体数据表。
例如,建议负载电容为 12.5 pF 的 32.768 千赫音叉晶体的应使用图 22.1 选项 1 所示的配置。电容器与
XTAL 针脚寄生电容的总值应等于 25 pF。寄生电容为每针脚 3 pF 的负载电容 22 pF 电容器通过晶体获得
12.5 pF 的等效电容 (如图 22.2)。
Rev. 1.0
135
C8051F80x-83x
XTAL1
10MΩ
XTAL2
32.768 千赫
22pF*
22pF*
* 电容器值取决于晶体规格。
图 22.2. 外部 32.768 千赫石英晶体振荡器接线图
22.3.2. 外部 RC 范例
如 RC 网络用于 MCU 的外部振荡器源,电路应按图 22.1 选项 2 所示进行配置。电容器不应超过 100 pF;
但对微型电容器而言,总电容可能以 PBC 配置图中的寄生电容为主。为确定 OSCXCN 寄存器所需的外部
振荡器频率控制值 (XFCN) ,根据方程式 22.1(其中 f = 振荡器频率(兆赫),C = 电容值 (pF),及 R = 上
拉寄存器值(k )),选择 RC 网络值,产生振荡器所需频率。
方程 22.1:RC 模式振荡器频率
3
f = 1.23 × 10 ⁄ ( R × C )
例如:如所需频率为 100 千赫,使R = 246 k 且 C = 50 pF:
f = 1.23( 103 ) / RC = 1.23 ( 103 ) / [ 246 x 50 ] = 0.1 兆赫 = 100 千赫
参考 SFR 定义 22.4 中的表格,所需 XFCN 设置为 010b。
136
Rev. 1.0
C8051F80x-83x
22.3.3. 外部电容器范例
如电容器用于 MCU 的外部振荡器,电路应按图 22.1 选项 3 所示进行配置。电容器不应超过 100 pF;但对
微型电容器而言,总电容可能以 PCB 配置图中的寄生电容为主。为确定 OSCXCN 寄存器所需的外部振荡
器频率控制值 (XFCN) ,首先根据方程式 22.2 (其中 f = 振荡器频率 (兆赫), C = 电容值 (pF),及 VDD=
MCU 供电 (伏)),选择将使用的电容器,并找出振荡器频率。
方程 22.2:C 模式振荡器频率
f = ( KF ) ⁄ ( R × V DD )
例如:假设 VDD = 3.0 伏 且 f = 150 千赫:
f = KF / (C x VDD)
0.150 兆赫 = KF / (C x 3.0)
由于所需频率大约为 150 千赫,从 SFR 定义 22.4 的表格中选择 K 系数。
(OSCXCN) 当 KF = 22时:
0.150 兆赫 = 22 / (C x 3.0)
C x 3.0 = 22 / 0.150 兆赫
C = 146.6 / 3.0 pF = 48.8 pF
因此,本范例中所用的 XFCN 值为 011b,且 C = 50 pF。
Rev. 1.0
137
C8051F80x-83x
138
Rev. 1.0
C8051F80x-83x
23. 端口输入/输出
数字及模拟源在 17 个 I/O 针脚 (24 - 针脚及 20 - 针脚封装)或 13 个 I/O 针脚 (16 - 针封装)中可用。端
口针脚 P0.0-P1.7 可定义为通用 I/O (GPIO),或分配至内部数字源之一(如图 23.4)。端口针脚 P2.0 可用
作 GPIO,与 C2 接口数据信号 (C2D) 共用。设计者可完全控制功能分配,仅受限于实体 I/O 针脚数量。通
过使用优先级交叉开关编码器,可实现源的灵活分配。请注意端口 I/O 针脚状态可在相应的端口锁存器中随
时读取,无需理会交叉开关设置。
交叉开关根据优先级编码器,将所选内部数字源分配至 I/O 针脚(图 23.5)。可使用寄存器 XBR0 与 XBR1
(定义见 SFR 定义 23.1 及 SFR 定义 23.2)选择内部数字功能。
所有端口 I/O 可承受 5 伏电量(欲知端口单元电路,请参照图 23.2)。在端口输出模式寄存器(PnMDOUT,
其中 n = 0,1)中,端口 I/O 单元的配置为推挽式或漏极开路。端口 I/O 的完整电气规格载于第 39 页的"7. 电
气特性"一节。
端口匹配
P0MASK、P0MAT
P1MASK、 P1MAT
XBR0、XBR1、
PnSKIP 寄存器
EX0 及 EX1外部
中断
优先级
编码器
最高
优先级
UART
4
(内部数字信号)
SPI
8
2
SMBus
(端口锁存器)
数字交叉
开关
8
2
CP0
输出
SYSCLK
4
PCA
最低
优先级
PnMDOUT、
PnMDIN 寄存器
2
T0, T1
P0
I/O
单元
P0.0
P1
I/O
单元
P1.0
P2
I/O
单元
P2.0
P0.7
P1.7*
2
*附注:P1.4 P1.7 在 16 针脚
封装上不可用。
8
P0
(P0.0-P0.7)
P1
(P1.0-P1.7)
8
模拟外围设备
(ADC0、CP0、VREF、XTAL)
CS0
图 23.1. 端口 I/O 功能结构图
Rev. 1.0
138
C8051F80x-83x
23.1. 端口 I/O 模式操作
端口针脚 P0.0-P1.7 使用图 23.2 所示的端口 I/O 单元。可使用 PnMDIN 与 PnMDOUT 寄存器通过软件为模
拟 I/O 或数字 I/O 配置每个端口 I/O 单元。可使用 P2MDOUT 寄存器通过软件为数字 I/O 配置端口针脚
P2.0。复位时,所有端口 I/O 单元默认为高阻态,弱上拉模式启用。在交叉开关启用前 (XBARE = 1),在所
有交叉开关针脚上均明确禁用高低端口 I/O 驱动电路。
23.1.1. 为模拟 I/O 配置端口针脚
应为模拟 I/O 配置任何用作比较器或 ADC 输入、电容传感输入、外部振荡器输入/输出、 VREF 输出或者
AGND 连接的任何针脚 (PnMDIN.n = 0、 Pn.n = 1)。当为模拟 I/O 配置针脚时,其弱上拉模式、数字驱动
和数字接收器均被禁用 。为防止低端口 I/O 驱动电路将针脚拉低,应在相应的端口锁存器 (Pn.n = 1)写入
'1'。为模拟 I/O 配置的端口针脚将随时读回 0 值,不论针脚上的实际电压为多少。
将针脚设置为模拟 I/O 可节省电量,并使端口针脚免受数字干扰。仍可通过模拟外围设备使用配置为数字 I/
O 的端口针脚;然而由于此操作可能导致测量失误,因此并不建议如此行事。
23.1.2. 为数字 I/O 配置端口针脚
数字外围设备 (UART、 SPI、 SMBus 等)、外部数字时间捕捉功能所使用的任何针脚,或者用作 GPIO 的
任何针脚,都应被配置为数字 I/O(PnMDIN.n = 1)。对于数字 I/O 针脚,须使用 PnMDOUT 寄存器选择两
种输出模式 (推挽或漏极开路)的其中之一。
推挽输出 (PnMDOUT.n = 1)根据端口针脚的输出逻辑值,将端口板驱动至 VDD 或 GND 供电轨。漏极开
路输出使高压侧驱动器禁用;因此相关输出仅在输出逻辑值为 0 时将端口板驱动至 GND,且当输出逻辑值
为 1 时成为高阻抗输入 (高低驱动器均关闭)。
当数字 I/O 单元为高阻态时,弱上拉晶体管将端口板拉至 VDD 供电电压,以确保数字输入处于已定义逻辑
状态。为降低功耗,当将 I/O 单元驱动至 GND 时弱上拉模式被禁用,且若 WEAKPUD 被设置为 1 ,弱上
拉将被全部禁用。用户应确保数字 I/O 始终在内部或外部被上拉或驱动至有效逻辑状态,以降低功耗。为数
字 I/O 配置的端口针脚会随时读回端口板的逻辑状态,不论端口针脚的输出逻辑值为多少。
WEAKPUD
(弱上拉模式禁用)
PxMDOUT.x
(1 为推挽)
(0 为漏极开路)
VIO
XBARE
(交叉开关
启用)
(弱)
Px.x – 输出
逻辑值
(端口锁存器
或交叉开关)
端口板
PxMDIN.x
(1 为数字 I/O)
(0 为模拟 I/O)
GND
来回模拟
外围设备
Px.x - 输入逻辑值
(当将针脚配置为模拟 I/O 时读取 0)
图 23.2. 端口 I/O 单元结构图
139
VIO
Rev. 1.0
C8051F80x-83x
23.1.3. 连接端口 I/O 至 5 伏逻辑
为数字漏极开路操作配置的所有端口 I/O 能够以高于 2 伏 (高于 VDD)低于 5.25 伏的供电电压,连接至
数字逻辑操作。大部分系统通常需要能达到较高供电电压的外部上拉电阻器。
重要事项:在多极电压接口中,当供电电压介于 (VDD + 0. 6 伏) 及 (VDD + 1.0 伏)之间时,应调整外
部上拉电阻器,让至少 150 微安的电流流入端口针脚。一旦端口针脚电压超出此范围,流入端口针脚的电流
将非常微弱。图 23.3 显示了超出 VDD 的端口针脚的输入电流特性。当端口针脚电压达到约 (VDD + 0.7
伏)时,其需要 150 微安峰值超速电流。
VDD
Vtest (伏)
VDD VDD+0.7
IVtest
0
I/O
单元
IVtest
-10
(微安)
+
-
Vtest
端口 I/O 超速测试电路
-150
端口 I/O 超速电流与电压的比较
图 23.3. 端口 I/O 超速电流
23.2. 分配端口 I/O 针脚至模拟和数字功能
可将端口 I/O 针脚 P0.0-P1.7 分配至各种模拟、数字及外部中断功能。应将分配至模拟功能的端口针脚配置
给模拟 I/O,并且将分配至数字或外部中断功能的端口针脚配置给数字 I/O。
23.2.1. 分配端口 I/O 针脚至模拟功能
表 23.1 显示了需要端口 I/O 分配的所有可用模拟功能。为上述模拟功能选择的端口针脚应在设置为 1 的
PnSKIP 中拥有相应位。这样可保留模拟功能使用的针脚,并防止其被交叉开关占用。任何选定针脚亦应在
设置为 1 (Pn.n = 1) 的端口锁存器中拥有相应位。这可防止低端口 I/O 驱动电路将针脚拉低。表 23.1 显示
了端口 I/O 与各个模拟功能的潜在映射。
Rev. 1.0
140
C8051F80x-83x
表 23.1:端口 I/O 模拟功能分配
模拟功能
潜在可分配的端口针脚
用于分配的 SFR
ADC 输入
P0.0–P1.7
ADC0MX、 PnSKIP、
PnMDIN
比较器 0 输入
P0.0–P1.7
CPT0MX、 PnSKIP、
PnMDIN
CS0 输入
P0.0–P1.7
CS0MX、 CS0SS、
CS0SE、 PnMDIN
电压基准 (VREF0)
P0.0
REF0CN、 P0SKIP、
PnMDIN
接地基准 (AGND)
P0.1
REF0CN、 P0SKIP
晶体模式中的外部振荡器 (XTAL1)
P0.2
OSCXCN、 P0SKIP、
P0MDIN
RC、 C 或晶体模式 (XTAL2)中的外部振荡器
P0.3
OSCXCN、 P0SKIP、
P0MDIN
23.2.2. 分配端口 I/O 针脚至数字功能
可将未分配至模拟功能的任何端口针脚分配至数字功能,或用作 GPIO。多数数字功能依赖交叉开关进行针
脚分配;然而,某些数字功能会以类似上述模拟功能的方式绕过交叉开关。这些数字功能使用的端口针脚,
以及被选用为 GPIO 的任何端口针脚,都应在设置为 1的 PnSKIP 中拥有相应位。表 23.2 显示了所有可用
数字功能,及端口 I/O 与各个数字功能的潜在映射。
141
Rev. 1.0
C8051F80x-83x
表 23.2:端口 I/O 数字功能分配
数字功能
潜在可分配的端口针脚
UART0、 SPI0、 SMBus、 任何可由交叉开关分配的端口针脚。其中包括
SYSCLK、 PCA0 (CEX0-2 P0.0 - P1.72 针脚,其 PnSKIP 位设置为 0。 1
及 ECI)、 T0 或 T1。
P0.0–P2.02
用作 GPIO 的任何针脚
用于分配的 SFR
XBR0、 XBR1
PnSKIP
附注:
1. 交叉开关将随时把 UART0 针脚分配至 P0.4 及 P0.5。
2. 端口针脚 P1.4 - P1.7 在 16 针封装上不可用。
23.2.3. 分配端口 I/O 针脚至外部数字事件捕捉功能
当数字 I/O 针脚发生转变时,外部数字事件捕捉功能可用来触发中断,或将设备从低电能模式唤醒。数字事
件捕捉功能不需要专用针脚,且在 GPIO 针脚 (PnSKIP = 1) 及交叉开关所用针脚 (PnSKIP = 0) 上都可运
行。外部数字事件捕捉功能不能在为模拟 I/O 配置的针脚上使用。表 23.3 显示了所有可用的外部数字事件
捕捉功能。
表 23.3:端口 I/O 外部数字事件捕捉功能分配
数字功能
潜在可分配的端口针脚
用于分配的 SFR
外部中断 0
P0.0–P0.7
IT01CF
外部中断 1
P0.0–P0.7
IT01CF
端口匹配
P0.0–P1.7*
P0MASK、 P0MAT
P1MASK、 P1MAT
附注: 端口针脚 P1.4 - P1.7 在 16 针封装上不可用。
Rev. 1.0
142
C8051F80x-83x
23.3. 优先级交叉开关编码器
优先级交叉开关编码器将优先级分配至各个 I/O 功能,从 UART0 最高处开始。当数字源选定后,将最低有
效未分配端口针脚分配至该源 (UART0 除外,其随时处于针脚 4 与 5)。如端口已分配,当分配下一个选
定源时,交叉开关会跳过该针脚。此外,交叉开关将跳过在 PnSKIP 寄存器中已设置相关位的端口针脚。
PnSKIP 寄存器允许软件跳过用于模拟输入、专用功能或 GPIO 的端口针脚。
因为优先级交叉开关编码器的性质,不是所有外围设备都可在所有端口针脚上定位。图 23.4 将外围设备和
可能出现外围设备 I/O 的潜在端口针脚相对应。
交叉开关配置重要事项:如外围设备占用了端口针脚,而不使用交叉开关,应设置其相应的 PnSKIP 位。这
适用于 P0.0(如使用 VREF)、P0.1(如使用 AGND)、P0.3 及/或 P0.2(如启用外部振荡器电路)、P0.6
(如将 ADC 配置为使用外部转换启动信号 (CNVSTR))以及任何已选 ADC、比较器或电容传感输入。交叉
开关跳过已选针脚,犹如该等针脚已分配,并移至下一未分配针脚。
使用寄存器 XBR0、 XBR1 及 XBR2 将数字 I/O 源分配至物理 I/O 端口针脚。请注意,当选择 SMBus 时,
交叉开关会分配与 SMBus (SDA 及 SCL)有关联的针脚;当选择 UART 时,交叉开关会分配与 UART
(TX 及 RX) 有关联的针脚。 UART0 针脚的分配是为加载而设定:UART TX0 将始终分配至 P0.4;UART
RX0 将始终分配至 P0.5。优先功能分配完后,标准端口 I/O 将连续出现。
重要事项:可在 3 线或 4 线模式中操作 SPI,这取决于寄存器 SPI0CN 中 NSSMD1-NSSMD0 位的状态。
根据 SPI 模式决定是否可将 NSS 信号改为端口针脚。
143
Rev. 1.0
端口
P0
2
3
AGND
XTAL1
XTAL2
针脚跳过 0
设置
0
0
0
特殊功能
信号
P1
4
5
0
0
6
7
0
1
2
3 41 51 61 71 0
0
0
0
0
0
CNVSTR
1
VREF
针脚编号 0
P2
C8051F80x-83x
TX0
RX0
SCK
MISO
信号不可用于交叉开关
MOSI
NSS2
SDA
SCL
CP0
CP0A
SYSCLK
CEX0
CEX1
CEX2
ECI
T0
T1
0
P0SKIP
0
0
0
0
P1SKIP
1
可将针脚 P0.0-P1.7 分配至交叉开关外围设备。
交叉开关外围设备根据本时间图按优先级别从最高到最低进行分配。
以上方框代表可被潜在地分配至外围设备的端口针脚。
特殊功能信号不由交叉开关分配。当这些信号启用时,应手动配置交叉
开关,跳过相应端口针脚。
通过在 PnSKIP 中将相应位设置为 '1',可 "跳过" 针脚。
附注:
1. P1.4 - P1.7 在 16 针封装上不可用。
2. 当 SPI 处于 4 线模式时,NSS 仅为针脚输出。
图 23.4. 优先级交叉开关编码器潜在针脚分配
Rev. 1.0
144
端口
P0
2
3
AGND
XTAL1
XTAL2
针脚跳过 0
设置
0
0
0
特殊功能
信号
P1
4
5
0
0
6
7
0
1
2
3 41 51 61 71 0
0
0
0
0
0
CNVSTR
1
VREF
针脚编号 0
P2
C8051F80x-83x
TX0
RX0
SCK
MISO
信号不可用于交叉开关
MOSI
NSS2
SDA
SCL
CP0
CP0A
SYSCLK
CEX0
CEX1
CEX2
ECI
T0
T1
0
P0SKIP
0
0
0
0
P1SKIP
此例中,交叉开关被配置为分配 UART TX0 及 RX0 信号、SPI 信号以及
PCA 信号。请注意,SPI 信号被分配为多重信号,且使用 P0SKIP 或
P1SKIP 寄存器时未跳过针脚。
以上方框代表本配置中外围设备所用的端口针脚。
第一 TX0 被分配至 P0.4
第二 RX0 被分配至 P0.5
第三 SCK、MISO、MOSI 及 NSS 分别被分配至 P0.0、P0.1、P0.2 及
P0.3。
第四 CEX0、CEX1 及 CEX2 分别被分配至 P0.6、P0.7 及 P1.0。
所有未分配针脚均可用作 GPIO,或用于其他非交叉开关功能。
附注:
1. P1.4 - P1.7 在 16 针封装上不可用。
2. 当 SPI 处于 4 线模式时,NSS 仅为针脚输出。
图 23.5. 优先级交叉开关编码器范例 1-无跳过针脚
145
Rev. 1.0
端口
P0
P1
P2
C8051F80x-83x
CNVSTR
特殊功能
信号
VREF
AGND
XTAL1
XTAL2
针脚编号 0 1 2 3 4 5 6 7 0 1 2 3 41 51 61 71 0
TX0
RX0
信号不可用P0.0 跳过于交叉开关
SCK
MISO
MOSI
P0.2 跳过
P0.3 跳过
SCL
CP0
CP0A
P0.0 跳过
NSS2
SDA
SYSCLK
CEX0
CEX1
CEX2
ECI
T0
T1
针脚跳过 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
设置
P0SKIP
P1SKIP
此例中,交叉开关被配置为分配 UART TX0 及 RX0 信号、SPI 信号以及
PCA 信号。请注意,SPI 信号被分配为多重信号,且使用 P0SKIP 或
P1SKIP 寄存器时未跳过针脚。此外,使用 P0SKIP 寄存器时,针脚
P0.0、P0.2 及 P0.3 被配置为跳过。
以上方框代表本配置中外围设备所用的端口针脚。
第一 TX0 被分配至 P0.4
第二 RX0 被分配至 P0.5
第三 SCK、MISO、MOSI 及 NSS 分别被分配至 P0.1、P0.6、P0.7 及
P1.0。
第四 CEX0、CEX1 及 CEX2 分别被分配至 P1.1、P1.2 及 P1.3。
所有未分配针脚(包括 XBR0 跳过的针脚)均可用作 GPIO,或用于其他非
交叉开关功能。
附注:
1. P1.4 - P1.7 在 16 针封装上不可用。
2. 当 SPI 处于 4 线模式时,NSS 仅为针脚输出。
图 23.6. 优先级交叉开关编码器范例 2-跳过针脚
Rev. 1.0
146
C8051F80x-83x
23.4. 端口 I/O 初始化
端口 I/O 初始化包括以下步骤:
1. 使用端口输入模式寄存器 (PnMDIN),为所有端口针脚选择输入模式 (模拟或数字)。如针脚为模拟模
式,还须在相应的端口锁存器 (Pn) 上写入'1'。
2. 使用端口输出模式寄存器 (PnMDOUT),为所有端口针脚选择输出模式 (漏极开路或推挽)。
3. 使用端口跳过寄存器 (PnSKIP),选择 I/O 交叉开关将跳过的任何针脚。
4. 为拟定的外围设备指定端口针脚 (XBR0、 XBR1)。
5. 启用交叉开关 (XBARE = 1)。
所有端口针脚均须配置为模拟或数字输入。针脚配置为模拟输入后,其弱上拉模式、数字驱动和数字接收器
均被禁用 。此过程节省能源并降低模拟输入的噪音。模拟外围设备仍可使用配置为数字输入的针脚;但是并
不建议进行此项操作。
此外,所有模拟输入针脚应配置为可被交叉开关跳过(通过设置 PnSKIP 中的相关位完成)。PnMDIN 寄存
器中设置为端口输入模式,其中 1 表示数字输入,0 表示模拟输入。所有模拟模式的端口针脚必须在相应的
端口锁存寄存器上设置为'1'。复位后所有针脚默认为数字输入。欲知 PnMDIN 寄存器详情,请参阅 SFR 定
义 23.8 和 SFR 定义 23.12。
I/O 针脚的输出驱动特性定义为使用端口输出模式寄存器 (PnMDOUT)。各端口输出驱动可配置为漏极开路
或推挽。由于该选项并非自动选项,因此必须选择此选项,即便是 XBRn 寄存器中所选的数字源亦然。仅
SMBus (SDA、 SCL)针脚除外,无论 PnMDOUT 如何设置,该针脚均配置为漏极开路。 XBR1 中的
WEAKPUD 位为 0 时,所有配置为漏极开路的端口 I/O 均启用弱上拉模式。 WEAKPUD 并不影响推挽端口
I/O。此外,配置为 0 的输出上的弱上拉模式被关闭,避免不必要的功率耗损。
寄存器 XBR0 和 XBR1 必须负载适当数值,以选择设计所需的数字 I/O 功能。将 XBR1 中的 XBARE 位设
置为 1,启用交叉开关。交叉开关启动前,外部针脚始终维持为标准端口 I/O (输入模式) ,而不论 XBRn
寄存器如何设置。对于给定的 XBRn 寄存器设置,可使用优先解码表确定 I/O 针脚输出;作为替代方法,配
置向导 (Configuration Wizard) 实用程序将根据 XBRn 寄存器设置确定端口 I/O 针脚分配。
必须启用交叉开关,以将端口针脚用作输出模式中的标准端口 I/O。禁用交叉开关后,端口输出驱动被禁用。
147
Rev. 1.0
C8051F80x-83x
SFR 定义 23.1:XBR0:端口 I/O 交叉开关寄存器 0
位
7
6
名称
5
4
3
2
1
0
CP0AE
CP0E
SYSCKE
SMB0E
SPI0E
URT0E
类型
R
R
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xE1
位
名称
7:6
未使用
读 = 00b。写 = 无需在意。
5
CP0AE 比较器 0 异步输出启用。
功能
0:异步 CP0 在端口针脚上不可用。
1:异步 CP0 改为端口针脚。
4
CP0E
比较器 0 输出启用。
0:CP0 在端口针脚上不可用。
1:CP0 改为端口针脚。
3
SYSCKE
SYSCLK 输出启用。
0:SYSCLK 在端口针脚上不可用。
1:SYSCLK 输出改为端口针脚。
2
SMB0E
SMBus I/O 启用。
0:SMBus I/O 在端口针脚上不可用。
1:SMBus I/O 改为端口针脚。
1
SPI0E
SPI I/O 启用。
0:SPI I/O 在端口针脚上不可用。
1:SPI I/O 改为端口针脚。请注意, SPI 可配置为 3 或 4 GPIO 针脚。
0
URT0E
UART I/O 输出启用。
0:UART I/O 在端口针脚上不可用。
1:UART TX0、 RX0 改为端口针脚 P0.4 和 P0.5。
Rev. 1.0
148
C8051F80x-83x
SFR 定义 23.2:XBR1:端口 I/O 交叉开关寄存器 1
位
7
6
5
4
3
名称
WEAKPUD
XBARE
T1E
T0E
ECIE
类型
R/W
R/W
R/W
R/W
R/W
R
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xE2
位
名称
7
WEAKPUD
2
XBARE
功能
Port I/O 弱上拉模式禁用。
交叉开关启用。
0:交叉开关禁用。
1:交叉开关启用。
5
T1E
T1 启用。
0:T1 在端口针脚上不可用。
1:T1 改为端口针脚。
4
T0E
T0 启用。
0:T0 在端口针脚上不可用。
1:T0 改为端口针脚。
3
ECIE
PCA0 外部计数器输入启用。
0:ECI 在端口针脚上不可用。
1:ECI 改为端口针脚。
未使用
读 = 0b;写 = 无需在意。
1:0 PCA0ME[1:0] PCA 模块 I/O 启用位。
2
00:所有 PCA I/O 在端口针脚上不可用。
01:CEX0 改为端口针脚。
10:CEX0、 CEX1 改为端口针脚。
11:CEX0、 CEX1、 CEX2 改为端口针脚。
149
Rev. 1.0
0
PCA0ME[1:0]
0:弱上拉模式启用 (I/O 配置为模拟模式的端口除外)。
1:弱上拉模式禁用。
6
1
C8051F80x-83x
23.5. 端口匹配
端口匹配功能允许 P0 或 P1 上的逻辑值改变触发系统事件。存储在 PnMATCH 寄存器上的软件控制值指明
P0 和 P1 的预期或正常逻辑值。如端口输入针脚的逻辑电平与软件控制值不匹配,则会发生端口不匹配事
件。这可在 P0 或 P1 输入针脚发生某种改变或模式时,使软件获得通知,而不论 XBRn 如何设置。
PnMASK 寄 存 器 可 用 于 个 别 的 选 择 使 用 何 种 P0 和 P1 针 脚 来 和 PnMATCH 寄 存 器 相 比 较。如 (P0 &
P0MASK) 并不等于 (P0MATCH & P0MASK) 或如 (P1 & P1MASK) 不等于 (P1MATCH & P1MASK),则会
发生端口不匹配事件。
端口不匹配事件可用于在低电能模式中中断或唤醒设备,如空闲或暂停模式。如需更多有关中断和唤醒源,
请参阅"中断和电能选项"章节。
Rev. 1.0
150
C8051F80x-83x
SFR 定义 23.3:P0MASK:端口 0 屏蔽寄存器
位
7
6
5
4
3
名称
P0MASK[7:0]
类型
R/W
复位
0
SFR 地址 = 0xFE
位
名称
7:0 P0MASK[7:0]
0
0
0
0
2
1
0
0
0
0
2
1
0
1
1
1
功能
端口 0 屏蔽值。
选择 P0 针脚与 P0MAT 中相应位作比较。
0:P0.n 针脚逻辑值被忽略,不会引致端口不匹配事件。
1:P0.n 针脚逻辑值与 P0MAT.n 作比较。
SFR 定义 23.4:P0MAT:端口 0 匹配寄存器
位
7
6
5
4
3
名称
P0MAT[7:0]
类型
R/W
复位
1
SFR 地址 = 0xFD
位
名称
7:0
P0MAT[7:0]
1
1
1
1
功能
端口 0 匹配值。
将用在 P0MASK (设置为 1) 中的位上的端口 0 的比较值相匹配。
0:P0.n 针脚逻辑值与逻辑低电平作比较。
1:P0.n 针脚逻辑值与逻辑高电平作比较。
151
Rev. 1.0
C8051F80x-83x
SFR 定义 23.5:P1MASK:端口 1 屏蔽寄存器
位
7
6
5
4
3
名称
P1MASK[7:0]
类型
R/W
复位
0
SFR 地址 = 0xEE
位
名称
7:0 P1MASK[7:0]
0
0
0
0
2
1
0
0
0
0
2
1
0
1
1
1
功能
端口 1 屏蔽值。
选择 P1 针脚与 P1MAT 中相应位作比较。
0:P1.n 针脚逻辑值被忽略,不会引致端口不匹配事件。
1:P1.n 针脚逻辑值与 P1MAT.n 作比较。
附注: P1.4 - P1.7 在 16 针封装上不可用。
SFR 定义 23.6:P1MAT:端口 1 匹配寄存器
位
7
6
5
4
3
名称
P1MAT[7:0]
类型
R/W
复位
1
SFR 地址 = 0xED
位
名称
7:0
P1MAT[7:0]
1
1
1
1
功能
端口 1 匹配值。
将用在 P1MASK (设置为 1)中的位上的端口 1 的比较值相匹配。
0:P1.n 针脚逻辑值与逻辑低电平作比较。
1:P1.n 针脚逻辑值与逻辑高电平作比较。
附注: P1.4 - P1.7 在 16 针封装上不可用。
23.6. 访问和配置端口 I/O 的特殊功能寄存器
所有端口 I/O 均可通过相应的特殊功能寄存器 (SFR) 进行访问,特殊功能寄存器可按字节和位寻址。写入端
口时,写入 SFR 的值被锁定,以维持各针脚的输出数据值。读取时,无论 XBRn 如何设置,端口输入针脚
的逻辑电平均会返回(即,即使交叉开关将针脚分配至另一信号,端口寄存器依然可读取相应的端口 I/O 针
脚)。但执行读取 - 调节 - 写入指示是例外,该指示将端口锁存寄存器列为目标。在端口 SFR 上运行时,读
取 - 调节 - 写入指示如下:ANL、 ORL、 XRL、 JBC、 CPL、 INC、 DEC、 DJNZ 和 MOV、 CLR 或 SETB
(当目标为端口 SFR 上的单个位)。对上述指示而言,读取、调节锁存寄存器(不是针脚)的值并写回 SFR。
Rev. 1.0
152
C8051F80x-83x
各个端口拥有相应的 PnSKIP 寄存器,该寄存器可允许其单个端口针脚分配至数字功能或被交叉开关跳过。
所有用于模拟功能或 GPIO 的端口针脚应拥有设为 1 的 PnSKIP 位。
I/O 针脚的端口输入模式通过使用端口输入模式存取器 (PnMDIN) 界定。各个端口单元可为模拟或数字 I/O
进行配置。由于该选项并非自动选项,因此必须选择此选项,即便是 XBRn 寄存器中所选的数字源亦然。但
P2.0 是例外, P2.0 仅可用于数字 I/O。
I/O 针脚的输出驱动特性定义为使用端口输出模式寄存器 (PnMDOUT)。各端口输出驱动可配置为漏极开路
或推挽。由于该选项并非自动选项,因此必须选择此选项,即便是 XBRn 寄存器中所选的数字源亦然。仅
SMBus (SDA、 SCL)针脚除外,无论 PnMDOUT 如何设置,该针脚均配置为漏极开路。
SFR 定义 23.7:P0:端口 0
位
7
6
5
4
名称
P0[7:0]
类型
R/W
复位
1
1
1
1
SFR 地址 = 0x80;可位寻址
位
名称
说明
7:0
P0[7:0] 端口 0 数据。
3
2
1
0
1
1
1
1
写入
0:将输出锁存设置为逻辑
低电平。
设置端口锁存逻辑值或读取
为数字 I/O 配置的端口单元内 1:将输出锁存设置为逻辑
高电平。
的端口针脚逻辑状态。
153
Rev. 1.0
读取
0:P0.n 端口针脚为逻辑低
电平。
1:P0.n 端口针脚为逻辑高
电平。
C8051F80x-83x
SFR 定义 23.8:P0MDIN:端口 0 输入模式
位
7
6
5
4
3
名称
P0MDIN[7:0]
类型
R/W
复位
1
SFR 地址 = 0xF1
位
名称
7:0
P0MDIN[7:0]
1
1
1
1
2
1
0
1
1
1
功能
P0.7-P0.0 的模拟配置位 (分别)。
为模拟模式配置的端口针脚禁用弱上拉模式、数字驱动和数字接收器。为将 P0.n
针脚设为模拟模式,与该针脚相对应的端口锁存寄存器上须设置为'1'。
0:为模拟模式配置有相应的 P0.n 针脚。
1:未为模拟模式配置相应的 P0.n 针脚。
SFR 定义 23.9:P0MDOUT:端口 0 输出模式
位
7
6
5
4
3
名称
P0MDOUT[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xA4
位
名称
7:0 P0MDOUT[7:0] P0.7-P0.0 的输出配置位 (分别)。
2
1
0
0
0
0
功能
如寄存器 P0MDIN 中相应位为逻辑 0,上述位则被忽略。
0:相应的 P0.n 输出为漏极开路。
1:相应的 P0.n 输出为推挽。
Rev. 1.0
154
C8051F80x-83x
SFR 定义 23.10:P0SKIP:端口 0 跳过寄存器
位
7
6
5
4
3
名称
P0SKIP[7:0]
类型
R/W
复位
0
0
SFR 地址 = 0xD4
位
名称
7:0
P0SKIP[7:0]
0
0
0
2
1
0
0
0
0
功能
端口 0 交叉开关跳过启用位。
上述位选择端口 0 被交叉开关编码器跳过。模拟、特殊功能或 GPIO 的端口针脚
应被交叉开关跳过。
0:相应 P0.n 针脚未被交叉开关跳过。
1:相应 P0.n 针脚被交叉开关跳过。
SFR 定义 23.11:P1: 端口 1
位
7
6
5
4
名称
P1[7:0]
类型
R/W
复位
1
1
1
1
SFR 地址 = 0x90;可位寻址
位
名称
说明
7:0
P1[7:0] 端口 1 数据。
3
2
1
0
1
1
1
1
写入
0:将输出锁存设置为逻辑
低电平。
设置端口锁存逻辑值或读取
为数字 I/O 配置的端口单元内 1:将输出锁存设置为逻辑
高电平。
的端口针脚逻辑状态。
附注: P1.4 - P1.7 在 16 针封装
上不可用。
155
Rev. 1.0
读取
0:P1.n 端口针脚为逻辑低
电平。
1:P1.n 端口针脚为逻辑高
电平。
C8051F80x-83x
SFR 定义 23.12:P1MDIN:端口 1 输入模式
位
7
6
5
4
3
名称
P1MDIN[7:0]
类型
R/W
复位
1*
SFR 地址 = 0xF2
位
名称
7:0
P1MDIN[7:0]
1*
1*
1*
1
2
1
0
1
1
1
功能
P1.7-P1.0 的模拟配置位 (分别)。
为模拟模式配置的端口针脚禁用弱上拉模式、数字驱动和数字接收器。为将 P1.n
针脚设为模拟模式,与该针脚相应的端口锁存寄存器上须设置为 1。
0:相应 P1.n 针脚配置为模拟模式。
1:相应 P1.n 针脚未配置为模拟模式。
附注: P1.4 - P1.7在 16 针封装上不可用, P1MDIN[7:4] 的复位值为 0000b。
SFR 定义 23.13:P1MDOUT:端口 1 输出模式
位
7
6
5
4
3
名称
P1MDOUT[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xA5
位
名称
7:0 P1MDOUT[7:0] P1.7-P1.0 的输出配置位 (分别)。
2
1
0
0
0
0
功能
如寄存器 P1MDIN 中相应位为逻辑 0,上述位则被忽略。
0:相应的 P1.n 输出为漏极开路。
1:相应的P1.n 输出为推挽。
附注: P1.4 - P1.7 在 16 针封装上不可用。
Rev. 1.0
156
C8051F80x-83x
SFR 定义 23.14:P1SKIP:端口 1 跳过寄存器
位
7
6
5
4
3
名称
P1SKIP[7:0]
类型
R/W
复位
0*
0*
SFR 地址 = 0xD5
位
名称
7:0
P1SKIP[7:0]
0*
0*
0
2
1
0
0
0
0
功能
端口 1 交叉开关跳过启用位。
上述位选择端口 1 针脚被交叉开关编码器跳过。模拟、特殊功能或 GPIO 的端口
针脚应被交叉开关跳过。
0:相应 P1.n 针脚未被交叉开关跳过。
1:相应 P1.n 针脚被交叉开关跳过。
附注: P1.4 - P1.7在 16 针封装上不可用, P1SKIP[7:4] 的复位值为 1111b。
SFR 定义 23.15:P2: 端口 2
位
7
6
5
4
3
2
1
0
P2[0]
名称
类型
R
R
R
R
R
R
R
R/W
复位
0
0
0
0
0
0
0
1
SFR 地址 = 0xA0;可位寻址
位
名称
7:1
0
157
未使用
P2[0]
说明
未使用。
写入
无需在意
端口 2 数据。
0:将输出锁存设置为逻辑
低电平。
设置端口锁存逻辑值或读取
为数字 I/O 配置的端口单元内 1:将输出锁存设置为逻辑
高电平。
的端口针脚逻辑状态。
Rev. 1.0
读取
0000000b
0:P2.0 端口针脚为逻辑低
电平。
1:P2.0 端口针脚为逻辑高
电平。
C8051F80x-83x
SFR 定义 23.16:P2MDOUT:端口 2 输出模式
位
7
6
5
4
3
2
1
0
P2MDOUT[0]
名称
类型
R
R
R
R
R
R
R
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xA6
位
名称
7:1
未使用
0
P2MDOUT[0]
功能
读 = 0000000b;写 = 无需在意。
P2.0 的输出配置位。
0:P2.0 输出为漏极开路。
1:P2.0 输出为推挽。
Rev. 1.0
158
C8051F80x-83x
159
Rev. 1.0
C8051F80x-83x
24. 循环冗余检验单位 (CRC0)
C8051F80x-83x 设备包括一个可使用 16 位或 32 位多项式执行 CRC 的循环冗余检验单位 (CRC0)。CRC0
接受写入 CRC0IN 寄存器的 8 位数据。CRC0 将 16 位或 32 位结果记入内部寄存器。可使用 CRC0PNT 位
和 CRC0DAT 寄存器 (如图 24.1 所示),间接访问内部结果寄存器。 CRC0 还包括进行快速数据操作的位
元反转寄存器。
8
CRC0CN
CRC0IN
闪存
CRC0AUTO
CRC0SEL
CRC0INIT
CRC0VAL
CRC0PNT1
CRC0PNT0
CRC0FLIP
写入
自动 CRC
控制器
8
CRC 引擎
CRC0CNT
32
结果
8
8
8
8
4 比 1 MUX
8
CRC0DAT
CRC0FLIP
读取
图 24.1. CRC0 结构图
Rev. 1.0
159
C8051F80x-83x
24.1. 16 位 CRC 算法
C8051F80x-83x CRC 单位使用多项式 0x1021 优先计算 16 位 CRC MSB。硬件执行的 16 位 CRC 算法如
下所述:
1. XOR 目前 CRC 结果的最高有效字节和输入字节。如这是 CRC 单位的第一次迭代,目前的 CRC 结果
将为设定的初始值 (0x0000 或 0xFFFF)。
2. 如 CRC 结果的 MSB 已被设定,左移 CRC 结果,然后 XOR CRC 结果和多项式 (0x1021)。
3. 如果 CRC 结果的 MSB 未设定,左移 CRC 结果。
4. 重复步骤 2,重复次数为所输入位数 (8)。
例如, 16 位 C8051F80x-83x CRC 算法可通过以下代码加以说明:
unsigned short UpdateCRC (unsigned short CRC_acc, unsigned char CRC_input){
unsigned char i;
// 循环计数器
#define POLY 0x1021
// 为多项式计算创建 CRC"被除数" (二进制运算无进位)
CRC_acc = CRC_acc ^ (CRC_input << 8);
// 使用 CRC XOR 减法将多项式"分为"被除数
// CRC_acc 保持每次划分的"余数"
// 输入为 1 字节 (i = 0; i < 8; i++) 后,仅完成 8 位的除法
for (i = 0; i < 8; i++)
{
// 核实 MSB 是否设定 (如 MSB 为 1,多项式可"分为"
// "除数")
if ((CRC_acc & 0x8000) == 0x8000)
{
// 如是,移位 CRC 值, XOR"减去"多项式
CRC_acc = CRC_acc << 1;
CRC_acc ^= POLY;
}
else
{
// 如不是,仅移位 CRC 值
CRC_acc = CRC_acc << 1;
}
}
return CRC_acc; // 返回最终余数 (CRC 值)
}
表 24.1 使用 16 位 C8051F80x-83x CRC 算法列出输入值范例和相关输出 (已使用初始值 0xFFFF):
表 24.1:16 位 CRC 输出范例
160
输入
0x63
输出
0xBD35
0xAA、 0xBB、 0xCC
0x6CF6
0x00、0x00、0xAA、0xBB、0xCC
0xB166
Rev. 1.0
C8051F80x-83x
24.2. 32 位 CRC 算法
C8051F80x-83x CRC 单位使用多项式 0x04C11DB7 计算 32 位 CRC。CRC-32 算法被"反射",意思是所有
输入字节和最终 32 位输出在处理引擎中均为位反转。以下为对简化的 CRC 算法的描述,该算法生成的结
果和硬件相同:
1. XOR 目前 CRC 结果的最低有效字节和输入字节。如这是 CRC 单位的第一次迭代,目前的 CRC 结果
将为设定的初始值 (0x00000000 或 0xFFFFFFFF)。
2. 右移 CRC 结果。
3. 如 CRC 结果的 LSB 已设定, XOR CRC 结果和反射多项式 (0xEDB88320)。
4. 重复步骤 2,重复次数为所输入位数 (8)。
例如, 32 位 C8051F80x-83x CRC 算法可通过以下代码加以说明:
unsigned long UpdateCRC (unsigned long CRC_acc, unsigned char CRC_input){
unsigned char i; // 循环计数器
#define POLY 0xEDB88320 // 多项式 0x04C11DB7 位的反转版本
// 为多项式计算创建 CRC"被除数" (二进制运算无进位)
CRC_acc = CRC_acc ^ CRC_input;
// 使用 CRC XOR 减法将多项式"分为"被除数
// CRC_acc 保持每次划分的"余数"
// 由于输入为 1 字节 (i = 0; i < 8; i++),仅完成 8 位的除法
for (i = 0; i < 8; i++)
{
// 核实 MSB 是否设定 (如 MSB 为 1,多项式可"分为"
// "除数")
if ((CRC_acc & 0x00000001) == 0x00000001)
{
// 如是,移位 CRC 值, XOR"减去"多项式
CRC_acc = CRC_acc >> 1;
CRC_acc ^= POLY;
}
else
{
// 如不是,仅移位 CRC 值
CRC_acc = CRC_acc >> 1;
}
}
return CRC_acc; // 返回最终余数 (CRC 值)
}
表 24.2 使用 32 位 C8051F80x-83x CRC 算法列出输入值范例和相关输出(已使用初始值 0xFFFFFFFF):
表 24.2:32 位 CRC 输出范例
输入
0x63
输出
0xF9462090
0xAA、 0xBB、 0xCC
0x41B207B3
0x00、0x00、0xAA、0xBB、0xCC
0x78D129BC
Rev. 1.0
161
C8051F80x-83x
24.3. 准备 CRC 计算
准备 CRC0 进行 CRC 计算,软件应当选择拟定的多项式并设定结果的初始值。有两个多项式可用:0x1021
(16 位)和 0x04C11DB7(32 位)。CRC0 结果可初始化为两个值中的一个:0x00000000 或 0xFFFFFFFF。
以下步骤可用于初始化 CRC0。
1. 选择多项式 (设定 CRC0SEL 的 0 为 32 位,或 1 为 16 位)。
2. 选择初始结果值 (设定 CRC0VAL 的 0 为 0x00000000,或 1 为 0xFFFFFFFF)。
3. 设定结果为其初始值 (将 1 写入 CRC0INIT)。
24.4. 执行 CRC 计算
CRC0 初始化后,随后输入数据流写入 CRC0IN,一次一个字节。每一字节写入后, CRC0 结果自动更新。
CRC 引擎也可配置为自动在一个或多个闪存扇区执行 CRC。可使用以下步骤自动在闪存上执行 CRC。
1. 为上文所述的 CRC 计算准备 CRC0。
2. 将起始页的变址写入 CRC0AUTO。
3. 设定 CRC0AUTO 中的 AUTOEN 位。
4. 写入闪存扇区的数字,执行 CRC 计算中的 CRC0CNT。
附注: 各个闪存扇区为 512 字节。
5. 将任意值写入 CRC0CN (或用 0x00 OR 其内容),以启动 CRC 计算。在 CRC 操作完成前, CPU 不
会执行任何其他代码。
6. 清除 CRC0AUTO 中的 AUTOEN 位。
7. 使用以下程序读取 CRC 结果。
24.5. 存取 CRC0 结果
内部 CRC0 结果为 32 位 (CRC0SEL = 0b) 或 16 位 (CRC0SEL = 1b)。 CRC0PNT 位选择 CRC0DAT 上读
写操作的目标字节并在每次读或写后增量。计算结果仍为内部的 CR0 结果寄存器,直至该结果被设定、改
写或将其他数据写入 CRC0IN。
162
Rev. 1.0
C8051F80x-83x
SFR 定义 24.1:CRC0CN:CRC0 控制寄存器
位
7
6
5
4
3
2
CRC0SEL CRC0INIT CRC0VAL
名称
类型
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
SFR 地址 = 0xCE
位
名称
7:5
未使用
4
CRC0SEL
1
0
CRC0PNT[1:0]
R/W
0
0
功能
读 = 000b;写 = 无需在意。
CRC0 多项式选择位。
该位选择 CRC0 多项式和结果位数 (32 位或 16 位)。
0:CRC0 使用 32 位多项式 0x04C11DB7 计算 CRC 结果。
1:CRC0 使用 16 位多项式 0x1021 计算 CRC 结果。
3
CRC0INIT
CRC0 结果初始化位。
将 1 写入该位,可在 CRC0VAL 的基础上将整个 CRC 结果初始化。
2
CRC0VAL
CRC0 设置值初始化位。
该位选择 CRC 结果的设置值。
0:将 1 写入 CRC0INIT 后, CRC 结果设置为 0x00000000。
1:将 1 写入 CRC0INIT 后, CRC 结果设置为 0xFFFFFFFF。
1:0 CRC0PNT[1:0] CRC0 结果指针。
指明将在下次访问 CRC0DAT 时读写的 CRC 结果字节。上述字节的值在每次读取
或写入后将自动增量。
如 CRC0SEL = 0:
00:CRC0DAT 访问 32 位 CRC 结果位数 7-0。
01:CRC0DAT 访问 32 位 CRC 结果位数 15-8。
10:CRC0DAT 访问 32 位 CRC 结果位数 23-16。
11:CRC0DAT 访问 32 位 CRC 结果位数 31-24。
如 CRC0SEL = 1:
00:CRC0DAT 访问 16 位 CRC 结果位数 7-0。
01:CRC0DAT 访问 16 位 CRC 结果位数 15-8。
10:CRC0DAT 访问 16 位 CRC 结果位数 7-0。
11:CRC0DAT 访问 16 位 CRC 结果位数 15-8。
Rev. 1.0
163
C8051F80x-83x
SFR 定义 24.2:CRC0IN:CRC 数据输入寄存器
位
7
6
5
4
3
名称
CRC0IN[7:0]
类型
R/W
复位
0
SFR 地址 = 0xDD
位
名称
7:0 CRC0IN[7:0]
0
0
0
0
2
1
0
0
0
0
功能
CRC0 数据输入。
根据第 24.1 节所述的 CRC 算法,每次在写入数据中写入 CRC0IN 结果,写入数据
被算入现有的 CRC 结果中。
SFR 定义 24.3:CRC0DATA:CRC 数据输出寄存器
位
7
6
5
4
3
名称
CRC0DAT[7:0]
类型
R/W
复位
0
0
0
0
SFR 地址 = 0xDE
位
名称
7:0 CRC0DAT[7:0] CRC0 数据输出寄存器。
0
2
1
0
0
0
0
功能
每次在 CRC0DAT 上进行的读取或写入以 CRC 结果位为目标, CRC0 结果指针
(CRC0CN 中的 CRC0PNT 位)指向该位。
164
Rev. 1.0
C8051F80x-83x
SFR 定义 24.4:CRC0AUTO:CRC 自动控制寄存器
位
7
6
5
名称
AUTOEN
CRCCPT
Reserved
4
3
1
0
0
0
CRC0ST[4:0]
R/W
类型
复位
2
0
SFR 地址 = 0xD2
位
名称
7
AUTOEN
1
0
0
0
0
功能
自动 CRC 计算启用。
AUTOEN 设为 1 时,任何对 CRC0CN 的写入均会将自动 CRC 初始化,自动
CRC 启用闪存扇区 CRC0ST,并继续使用 CRC0CNT 扇区。
6
CRCCPT
自动 CRC 计算完成。
当 CRC 计算正在进行时,设为 0。 CRC 计算期间,代码停止执行,因此固件读取
将始终返回 1。
5
4:0
备用
CRC0ST[4:0]
必须写入 0。
自动 CRC 计算启用闪存扇区。
上述位指明闪存扇区进行自动 CRC 计算。纳入自动 CRC 计算的首个闪存扇区起
始地址为 CRC0ST x 512。
SFR 定义 24.5:CRC0CNT:CRC 自动闪存扇区总数寄存器
位
7
6
5
4
3
1
0
0
0
CRC0CNT[5:0]
名称
类型
R
R
复位
0
0
SFR 地址 = 0xD3
位
名称
7:6
未使用
5:0
2
R/W
0
0
0
0
功能
读 = 00b;写 = 无需在意。
CRC0CNT[5:0] 自动 CRC 计算闪存扇区总数寄存器。
上述位指明执行自动 CRC 计算时将纳入的闪存扇区的数目。纳入自动 CRC 计算
的最终闪存扇区基本地址等同于 (CRC0ST + CRC0CNT) x 512。
Rev. 1.0
165
C8051F80x-83x
24.6. CRC0 位元反转特征
CRC0 包括图 24.1 所示的字节中反转各个位数位元顺序的硬件。写入 CRC0FLIP 的各个数据字节为回读位
元反转。例如,如 0xC0 写入 CRC0FLIP,数据回读为 0x03。位元反转是算法中有用的数字计算功能,如
FFT。
SFR 定义 24.6:CRC0FLIP:CRC 位翻转寄存器
位
7
6
5
4
3
名称
CRC0FLIP[7:0]
类型
R/W
复位
0
SFR 地址 = 0xCF
位
名称
7:0 CRC0FLIP[7:0]
0
0
0
0
2
1
0
0
0
0
功能
CRC0 位翻转寄存器。
任何写入 CRC0FLIP 的字节均按位翻转次序回读,即录入的 LSB 成为 MSB。
例如:
如 0xC0 写入CRC0FLIP,数据回读将为 0x03。
如 0x05 写入 CRC0FLIP,数据回读将为 0xA0。
166
Rev. 1.0
C8051F80x-83x
25. 增强型串行外围接口 (SPI0)
增强型串行外围接口 (SPI0) 提供访问灵活的全双工同步串行总线的路径。 SPI0 可作为主设备或子设备在 3
-线或4 -线模式中运作,并支持单个 SPI 总线上的多种主设备或子设备。从设备选择 (NSS) 信号可被配置为
输入,以选择从模式中的 SPI0,或禁用多个主设备环境中的主模式操作,避免在多个主设备试图同步进行
数据转移时,争用 SPI 总线。 NSS 亦可配置为主模式的组件选择输入,或禁用 3 -线操作。其他通用端口 I/
O 针脚可用于选择主模式中的多个从设备。
SYSCLK
SPI0CFG
SPIBSY
MSTEN
CKPHA
CKPOL
SLVSEL
NSSIN
SRMT
RXBMT
SPI0CN
SPIF
WCOL
MODF
RXOVRN
NSSMD1
NSSMD0
TXBMT
SPIEN
SPI0CKR
SCR7
SCR6
SCR5
SCR4
SCR3
SCR2
SCR1
SCR0
SFR 总线
时钟除数逻辑
SPI 控制逻辑
数据路径
控制
SPI IRQ
针脚界面
控制
MOSI
Tx 数据
SPI0DAT
SCK
传输数据缓冲器
移位寄存器
7 6 5 4 3 2 1 0
Rx 数据
针脚
控制
逻辑
接收数据缓冲器
写入
SPI0DAT
MISO
交
叉
开
关
端口 I/O
NSS
读取
SPI0DAT
SFR 总线
图 25.1. SPI 结构图
Rev. 1.0
167
C8051F80x-83x
25.1. 信号说明
下面介绍 SPI0 所使用的四种信号 (MOSI、 MISO、 SCK、 NSS)。
25.1.1. 主输出、从输入 (MOSI)
主出从入 (MOSI) 信号是主设备的输出和从设备的输入。用于从主设备到从设备的串行数据传输。当 SPI0
作为主设备操作时,此信号为输出信号;当 SPI0 作为从设备操作时,此信号为输入信号。数据传输时最高
位在先。当被配置为主设备在 3 线和 4 线模式下操作时, MOSI 由移位寄存器的 MSB 驱动。
25.1.2. 主输入、从输出 (MISO)
主入从出 (MISO) 信号是从设备的输出和主设备的输入, 用于从从设备到主设备的串行数据传输。当 SPI0
作为主设备操作时,此信号为输入信号;当 SPI0 作为从设备操作时,此信号为输出信号。数据传输时最高
位在先。当 SPI 模块被禁用或 SPI 作为从装置在 4 线模式下操作而未被选中时,MISO 针脚被置于高阻态。
当作为从设备在 3 线模式下操作时, MISO 一直由移位寄存器的 MSB 驱动。
25.1.3. 串行时钟 (SCK)
串行时钟 (SCK) 信号是主设备的输出和从设备的输入, 用于同步主设备和从设备之间在 MOSI 和 MISO 线
上的数据传输。当 SPI0 作为主设备时产生此信号。在 4 线从模式下,当 SPI 从设备未被选中时 (NSS = 1),
SCK 信号被忽略。
25.1.4. 从选择 (NSS)
从选择 (NSS) 信号的功能取决于 SPI0CN 寄存器中 NSSMD1 和 NSSMD0 位的设置。有三种设有上述两种
位的可能被选中的模式:
1. NSSMD[1:0] = 00:3 线主模式或从模式:SPI0 在 3 线模式下操作, NSS 被禁用。当作为从设备在 3
线模式下操作时, SPI0 总是被选择。由于无选择信号, SPI0 在 3 线模式下操作时必须为总线唯一的从
设备。这种情况用于一个主设备和一个从设备之间的点对点通信。
2. NSSMD[1:0] = 01:4 线从模式或多主模式:SPI0 在 4 线模式下操作, NSS 作为输入被启用。当作为从
设备操作时, NSS 选择 SPI0 设备。当作为主设备操作时, NSS 信号的负跳变禁用 SPI0 的主设备功
能,因此可以在同一个 SPI 总线上使用多个主设备。
3. NSSMD[1:0] = 1x:4 线主模式:SPI0 在 4 线模式下操作, NSS 作为输出被启用。 NSSMD0 的设置值
决定 NSS 针脚的输出逻辑电平。此配置只能在 SPI0 作为主设备操作时使用。
请参见图 25.2、 25.3 和 25.4,了解不同操作模式下的典型连接图。请注意, NSSMD 位的设置影响设备的
针脚分布。当在 3 线主模式或从模式下操作时, NSS 将不被交叉开关映射针脚。在所有其它模式下, NSS
信号将被映射到设备针脚。请参见 138 页的"23. 端口输入/输出"一条,了解通用端口 I/O 和交叉开关的信息。
25.2. SPI0 主模式操作
SPI 主设备可启动 SPI 总线上的所有数据传输。通过设置主启用标志 (MSTEN、 SPI0CN.6)将 SPI0 置于
主模式。当处于主模式时,向 SPI0 数据寄存器 (SPI0DAT) 写入一个字节时是写入发送缓冲器。如果 SPI 移
位寄存器为空,发送缓冲器中的数据字节则被传送到移位寄存器,然后开始数据传输。 SPI0 主设备立即在
MOSI 线上串行移出数据,同时在 SCK 上提供串行时钟。在传输结束时, SPIF (SPI0CN.7) 标志设置为逻
辑 1。如中断被允许,设置 SPIF 标志时会产生一个中断请求。在全双工操作中,当 SPI0 主设备在 MOSI
线上向从设备传送数据时,被寻址的 SPI 从设备可同时在 MISO 线上向 SPI 主设备传送其移位寄存器中的
内容。因此,SPIF 标志既作为传输完成标志,又作为待接收数据标志。从从设备接收数据字节以 MSB 为先
的形式传送到主设备的移位寄存器。当一个数据字节被完全移入移位寄存器时,即被传送到接收缓冲器,在
此处理器可通过读 SPI0DAT 来读取数据字节。
168
Rev. 1.0
C8051F80x-83x
当被配置为主设备时,SPI0 可在三种不同模式中的任一种操作:多主模式、3 线单主模式和 4 线单主模式。
当 NSSMD1 (SPI0CN.3) = 0 且 NSSMD0 (SPI0CN.2) = 1 时,默认的多主模式被激活。在这种模式下,NSS
是设备的输入,并在另一主设备访问总线时用于禁用主 SPI0。 NSS 在该模式被拉为低电平时, MSTEN
(SPI0CN.6) 和 SPIEN (SPI0CN.0) 设置为 0,以禁用 SPI 主设备,且产生模式错误 (MODF, SPI0CN.5 = 1)。
如模式错误被启用,将产生中断。在这种情况下,必须用软件手动重启 SPI0。在多主系统中,当设备不作
为系统主设备使用时,一般默认为从设备。在多主模式下,可使用通用 I/O 针脚对从设备单独寻址(如需)。
图 25.2 展示了多主模式下两个主设备之间的连接图。
当 NSSMD1 (SPI0CN.3) = 0 且 NSSMD0 (SPI0CN.2) = 0 时, 3 线单主模式被激活。在这种模式下, NSS
未被使用,且不会通过交叉开关映射到外部端口针脚。在此模式下,须寻址的任何从设备应使用通用 I/O 针
脚进行选择。图 25.3 展示了 3 线主模式下的一个主设备和一个从设备之间的连接图。
当 NSSMD1 (SPI0CN.3) = 1 时,4 线单主模式被激活。在这种模式下,NSS 配置为输出针脚,可被用作为
单个 SPI 设备选择信号的从设备。在这种模式下, NSS 的输出值由位 NSSMD0 (SPI0CN.2) 控制 (用软
件)。额外的从设备可使用通用 I/O 针脚寻址。图 25.4 展示了 4 线主模式下的一个主设备和两个从设备之间
的连接图。
主设备 1
NSS
GPIO
MISO
MISO
MOSI
MOSI
SCK
SCK
GPIO
NSS
主设备 2
图 25.2. 多主模式接线图
主设备
MISO
MISO
MOSI
MOSI
SCK
SCK
从设备
图 25.3. 3 线单主模式和 3 线单从模式接线图
Rev. 1.0
169
C8051F80x-83x
主设备
GPIO
MISO
MISO
MOSI
MOSI
SCK
SCK
NSS
NSS
MISO
MOSI
从设备
从设备
SCK
NSS
图 25.4. 4 线单主模式和 4 线从模式接线图
25.3. SPI0 从模式操作
SPI0 被启用且未被配置为主设备时,将作为 SPI 从设备操作。作为从设备,由控制串行时钟 (SCK) 信号的
主设备从 MOSI 针脚移入数据字节,从 MISO 针脚移出数据字节。 SPI0 逻辑中的位计数器对 SCK 边沿计
数。当 8 位数据经过移位寄存器转移之后, SPIF 标志设置为逻辑 1,接收到的字节被传送到接收缓冲器。
通过读 SPI0DAT 来读取接收缓冲器中的数据。从设备不能启动数据传送。待传送至主设备的数据通过写入
SPI0DAT 预先载入移位寄存器。写入 SPI0DAT 的数据为双缓冲,首先被置于发送缓冲器。如移位寄存器为
空,发送缓冲器中的内容将立即被传送至移位寄存器。当移位寄存器中已有数据时, SPI 将在下次 (或本
次) SPI 传送最后一个 SCK 边沿之后,再将发送缓冲器中的内容载入移位寄存器。
当被配置为从设备时,SPI0 可配置为在 4 线或 3 线模式下操作。当 NSSMD1 (SPI0CN.3) = 0 且 NSSMD0
(SPI0CN.2) = 1 时,默认的 4 线从模式被激活。在 4 线模式下, NSS 信号被发送到端口针脚且被配置为数
字输入。当 NSS 为逻辑 0 时,SPI0 被启用;当 NSS 为逻辑 1 时,SPI0 被禁用。在 NSS 的下降沿,位计
数器被复位。请注意,对于每次字节传输,NSS 信号必须在第一个有效的 SCK 边沿到来之前,驱动到低电
平至少 2 个系统时钟周期。图 25.4 展示了 4 线从模式下的两个从设备和一个主设备之间的连接图。
当 NSSMD1 (SPI0CN.3) = 0 且 NSSMD0 (SPI0CN.2) = 0 时,3 线从模式被激活。在这种模式下,NSS 未
被使用,且不会通过交叉开关映射到外部端口针脚。由于在 3 线从模式下无法唯一地为该设备寻址,因此,
SPI0 须为总线上唯一的从设备。须注意,在 3 线从模式下,无外部方式可对决定收到一个完整字节的时间
的位计数器复位。仅可通过使用 SPIEN 位禁用并重启 SPI0,方可复位位计数器。图 25.3 展示了 3 线从模
式下的一个从设备和一个主设备之间的连接图。
170
Rev. 1.0
C8051F80x-83x
25.4. SPI0 中断源
当 SPI0 中断被允许,下列四种标志设置为逻辑 1 时将产生中断:
下列所有位都必须用软件清除。
在每次字节传输结束时, SPI 中断标志 SPIF (SPI0CN.7) 设置为逻辑 1。此标记可在 SPI0 所有模式下
产生。
 当发送缓冲器中的数据尚未传送至 SPI 移位寄存器时,如欲写入 SPI0DAT,写入冲突标志 WCOL
(SPI0CN.6) 设置为逻辑 1。这种情况发生时,写入 SPI0DAT 的操作将被忽略,也将不会写入发送缓冲
器。此标志可在 SPI0 所有模式下产生。

当 SPI0 配置为多主模式的主设备且 NSS 针脚被拉为低电平时,模式错误标志 MODF (SPI0CN.5) 设置
为逻辑 1。模式错误产生时, SPI0CN 中的 MSTEN 和 SPIEN 位设置为逻辑 0,以禁用 SPI0 并使另一
个主设备访问总线。
 当被配置为从设备且一次传输完成,而接收缓冲器仍保持着上次传输的未被读取的数据时,接收溢出标
志 RXOVRN (SPI0CN.4) 设置为逻辑 1。新接收的字节不会传送至接收缓冲器,允许先前接收的数据字
节被读取。引起溢出的数据字节丢失。

25.5. 串行时钟相位和极性
使用 SPI0 配置寄存器 (SPI0CFG) 中的时钟控制位可在串行时钟相位和极性的四种组合中选择其一。
CKPHA 位 (SPI0CFG.5) 选择两种时钟相位(锁存数据所用的边沿)中的一种。CKPOL 位 (SPI0CFG.4) 在
高电平有效或低电平有效的时钟之间选择。主设备和从设备都必须被配置为使用相同的时钟相位和极性。在
改变时钟相位或极性时, SPI0 应被禁用 (通过清除 SPIEN 位, SPI0CN.0)。主模式下的时钟和数据线的
时序关系如图 25.5 所示。从模式的时钟和数据线的时序关系如图 25.6 和图 25.7 所示。请注意,在 Silicon
Labs C8051 两种设备之间通信时, SPI 主设备和从设备上的 CKPHA 都应设置为 0。
SFR 定义 25.3 所示的 SPI0 时钟速率寄存器 (SPI0CKR) 控制主模式的串行时钟频率。在从模式下操作时,
寄存器被忽略。 SPI 被配置为主设备时,最大数据传输率 (位/秒)是系统时钟频率的二分之一或 12.5 MHz
(以较低的频率为准)。 SPI 被配置为从设备时,全双工操作的最大数据传输率 (位/秒)是系统时钟频率的
十分之一,前提是主设备与从设备的系统时钟同步发出 SCK、 NSS (在 4 线从模式下)和串行输入数据。
如果主设备发出的 SCK、NSS 和串行输入数据不同步,则最大数据传输率(位/秒)必须小于系统时钟频率
的十分之一。在主设备仅传送数据到从设备而无需接收从设备发出的数据 (即半双工操作)这一特殊情况
下, SPI 从设备接收数据时的最大数据传输率 (位/秒)是系统时钟频率的四分之一。这一情况发生的前提
是主设备发出 SCK、 NSS 和串行输入数据与从设备系统时钟同步。
Rev. 1.0
171
C8051F80x-83x
SCK
(CKPOL=0, CKPHA=0)
SCK
(CKPOL=0, CKPHA=1)
SCK
(CKPOL=1, CKPHA=0)
SCK
(CKPOL=1, CKPHA=1)
MISO/MOSI
MSB
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
NSS (在多主模式下必须
保持高电平)
图 25.5. 主模式数据/时钟定时
SCK
(CKPOL=0, CKPHA=0)
SCK
(CKPOL=1, CKPHA=0)
MOSI
MSB
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
MISO
MSB
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
NSS (4 线模式)
图 25.6. 从模式数据/时钟定时 (CKPHA = 0)
172
Rev. 1.0
C8051F80x-83x
SCK
(CKPOL=0, CKPHA=1)
SCK
(CKPOL=1, CKPHA=1)
MOSI
MSB
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
MISO
MSB
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Bit 0
NSS (4 线模式)
图 25.7. 从模式数据/时钟定时 (CKPHA = 1)
25.6. SPI 特殊功能寄存器
对 SPI0 的访问和控制是通过系统控制器中的四种特殊功能寄存器实现:控制寄存器 SPI0CN、数据寄存器
SPI0DAT、配置寄存器 SPI0CFG 和时钟频率寄存器 SPI0CKR。下图将介绍这四种有关 SPI0 总线操作的特
殊功能寄存器。
Rev. 1.0
173
C8051F80x-83x
SFR 定义 25.1:SPI0CFG:SPI0 配置寄存器
位
7
6
5
4
3
2
1
0
名称
SPIBSY
MSTEN
CKPHA
CKPOL
SLVSEL
NSSIN
SRMT
RXBMT
类型
R
R/W
R/W
R/W
R
R
R
R
复位
0
0
0
0
0
1
1
1
SFR 地址 = 0xA1
位
名称
7
SPIBSY
功能
SPI 忙标志。
当一次 SPI 传输正在进行时 (主或从模式),此位设置为逻辑 1。
6
MSTEN
主模式启用。
0:禁用主模式。在从模式下操作。
1:启用主模式。以主设备操作。
5
CKPHA
SPI0 时钟相位。
0:在 SCK 周期的第一个边沿采样数据。 *
1:在 SCK 周期的第二个边沿采样数据。 *
4
CKPOL
SPI0 时钟极性。
0:SCK 在空闲状态时处于低电平。
1:SCK 在空闲状态时处于高电平。
3
SLVSEL
从选择标志。
只要 NSS 针脚为低电平,则此位设置为逻辑 1,表示 SPI0 为被选中的从设备。当
NSS 针脚为高电平时(未被选中的从设备),此位被清为逻辑 0。此位并非指 NSS
针脚的即时值,而是指该针脚输入的去噪信号。
2
NSSIN
1
SRMT
NSS 针脚输入的即时值。
此位模拟寄存器被读时 NSS 端口针脚上所示的即时值。此输入未被去噪。
移位寄存器空 (仅在从模式下有效)。
当所有数据都已被传入/传出移位寄存器且无新的数据可从发送缓冲器读取或写入接
收缓冲器时,此位将设置为逻辑 1。当数据字节从发送缓冲器传入移位寄存器或
SCK 发生变化时,此位还原为逻辑 0。在主模式下 SRMT = 1。
0
RXBMT
接收缓冲器空 (仅在从模式下有效)。
当接收缓冲器已被读且内无新数据时,此位将设置为逻辑 1。如尚未被读的接收缓
冲器内有可用的新数据,此位将被还原为逻辑 0。在主模式下 RXBMT = 1。
附注: 在从模式下, MOSI 上的数据在每个数据位的中间被采样。在主模式下, MISO 上的数据在每个数据位结束前
的一个 SYSCLK 被采样,为从设备提供最大的设置时间。请参见表 25.1,了解定时参数。
174
Rev. 1.0
C8051F80x-83x
SFR 定义 25.2:SPI0CN:SPI0 控制寄存器
位
7
6
5
4
名称
SPIF
WCOL
MODF
RXOVRN
类型
R/W
R/W
R/W
R/W
复位
0
0
0
0
3
1
0
NSSMD[1:0]
TXBMT
SPIEN
R/W
R
R/W
1
0
0
SFR 地址 = 0xF8;可位寻址
位
名称
7
SPIF
SPI0 中断标志。
2
1
功能
在数据传输结束时,此位被硬件设置为逻辑 1。如 SPI 中断被允许,则将产生中
断。此位不能由硬件自动清除,必须用软件清除。
6
WCOL
写入冲突标志。
当 TXBMT 为 0 时,如欲写入 SPI0DAT,则此位设置为逻辑 1。这种情况发生时,
写入 SPI0DAT 的操作将被忽略,也将不会写入发送缓冲器。如 SPI 中断被允许,
则将产生中断。此位不能由硬件自动清除,必须用软件清除。
5
MODF
模式错误标志。
当检测到主模式冲突 (NSS 为低电平, MSTEN = 1 且 NSSMD[1:0] = 01)时,此
位被硬件设置为逻辑 1。如 SPI 中断被允许,则将产生中断。此位不能由硬件自动
清除,必须用软件清除。
4
RXOVRN
接收溢出标志 (仅在从模式下有效)。
当接收缓冲器仍存有上次传输的未读数据且本次传输的最后一位已移入 SPI0 移位
寄存器时,此位被硬件设置为逻辑 1。如 SPI 中断被允许,则将产生中断。此位不
能由硬件自动清除,必须用软件清除。
3:2
NSSMD[1:0]
从选择模式。
从下列 NSS 操作模式中选择:
(请参见第 25.2 和 25.3 条)。
00:3 线从模式或主模式。 NSS 信号不被发送到端口针脚。
01:4 线从模式或多主模式 (默认)。 NSS 为设备的输入。
1x:4 线单主模式。 NSS 信号作为设备的输出被映射,并将假定 NSSMD0 的值。
1
TXBMT
发送缓冲器空。
当新数据写入发送缓冲器时,此位将设置为逻辑 0。当发送缓冲器中的数据被传送
到 SPI 移位寄存器时,此位将设置为逻辑 1,表示可以将新的数据字节写入发送缓
冲器。
0
SPIEN
SPI0 启用。
0:SPI 禁用。
1:SPI 启用。
Rev. 1.0
175
C8051F80x-83x
SFR 定义 25.3:SPI0CKR:SPI0 时钟频率寄存器
位
7
6
5
4
名称
SCR[7:0]
类型
R/W
复位
0
SFR 地址 = 0xA2
位
名称
7:0
SCR[7:0]
0
0
0
3
2
1
0
0
0
0
0
功能
SPI0 时钟频率。
当 SPI0 模块被配置为主模式操作时,这些位决定 SCK 输出的频率。 SCK 时钟频
率是从系统时钟分频得到的,由下面的方程计算而得,其中:SYSCLK 为系统时钟
频率, SPI0CKR 为 SPI0CKR 寄存器中的 8 位值。
SYSCLK
f SCK = ----------------------------------------------------------2 × ( SPI0CKR[7:0] + 1 )
for 0 <= SPI0CKR <= 255
例如:如 SYSCLK = 2 MHz, SPI0CKR = 0x04,则
2000000
f SCK = -------------------------2 × (4 + 1)
f SCK = 200kHz
SFR 定义 25.4:SPI0DAT:SPI0 数据寄存器
位
7
6
5
4
3
名称
SPI0DAT[7:0]
类型
R/W
复位
0
0
0
0
SFR 地址 = 0xA3
位
名称
7:0 SPI0DAT[7:0] SPI0 发送和接收数据。
0
2
1
0
0
0
0
功能
SPI0DAT 寄存器用于发送和接收 SPI0 数据。在主模式下,向 SPI0DAT 写入数据,
数据被置于发送缓冲器中并启动发送。读 SPI0DAT 即还原接收缓冲器中的内容。
176
Rev. 1.0
C8051F80x-83x
SCK*
T
T
MCKH
MCKL
T
T
MIS
MIH
MISO
MOSI
* 这是对应 CKPOL = 0 时的 SCK 波形。对于 CKPOL = 1,SCK 波形的极性反向。
图 25.8. SPI 主定时 (CKPHA = 0)
SCK*
T
T
MCKH
MCKL
T
MIS
T
MIH
MISO
MOSI
* 这是对应 CKPOL = 0 时的 SCK 波形。对于 CKPOL = 1,SCK 波形的极性反向。
图 25.9. SPI 主定时 (CKPHA = 1)
Rev. 1.0
177
C8051F80x-83x
NSS
T
T
SE
T
CKL
SD
SCK*
T
CKH
T
SIS
T
SIH
MOSI
T
T
SEZ
T
SOH
SDZ
MISO
* 这是对应 CKPOL = 0 时的 SCK 波形。对于 CKPOL = 1,SCK 波形的极性反向。
图 25.10. SPI 从定时 (CKPHA = 0)
NSS
T
T
SE
T
CKL
SD
SCK*
T
CKH
T
SIS
T
SIH
MOSI
T
SEZ
T
T
SOH
SLH
MISO
* 这是对应 CKPOL = 0 时的 SCK 波形。对于 CKPOL = 1,SCK 波形的极性反向。
图 25.11. SPI 从定时 (CKPHA = 1)
178
Rev. 1.0
T
SDZ
C8051F80x-83x
表 25.1:SPI 从定时参数
参数
说明
最小值
最大值
单位
主模式定时 (见图 25.8 和 25.9)
TMCKH
SCK 高电平时间
1 x TSYSCLK
—
ns
TMCKL
SCK 低电平时间
1 x TSYSCLK
—
ns
TMIS
MISO 有效到 SCK 移位边沿
1 x TSYSCLK + 20
—
ns
TMIH
SCK 移位边沿到 MISO 发生改变
0
—
ns
从模式定时 (见图 25.10 和 25.11)
TSE
NSS 下降沿到第一个 SCK 边沿
2 x TSYSCLK
—
ns
TSD
最后一个 SCK 边沿到 NSS 上升沿
2 x TSYSCLK
—
ns
TSEZ
NSS 下降沿到 MISO 有效
—
4 x TSYSCLK
ns
TSDZ
NSS 上升沿到 MISO 变为高阻态
—
4 x TSYSCLK
ns
TCKH
SCK 高电平时间
5 x TSYSCLK
—
ns
TCKL
SCK 低电平时间
5 x TSYSCLK
—
ns
TSIS
MOSI 有效到 SCK 采样边沿
2 x TSYSCLK
—
ns
TSIH
SCK 采样边沿到 MOSI 发生改变
2 x TSYSCLK
—
ns
TSOH
SCK 移位边沿到 MISO 发生改变
—
4 x TSYSCLK
ns
TSLH
最后一个 SCK 边沿到 MISO 发生改变 (仅在
CKPHA = 1 时)
6 x TSYSCLK
8 x TSYSCLK
ns
附注: TSYSCLK 为设备系统时钟 (SYSCLK) 的一个周期。
Rev. 1.0
179
C8051F80x-83x
180
Rev. 1.0
C8051F80x-83x
26. SMBus
SMBus I/O 接口是一个双线的双向串行总线。SMBus 符合系统管理总线规格 1.1 版,与 I2C 串行总线兼容。
系统控制器对接口的读写操作都是以字节为单位,由 SMBus 接口自主控制数据的串行传输。在作为主设备
或从设备时,数据传输的最大速率可达系统时钟频率的二十分之一 (这可能比 SMBus 的规定速度快,取决
于所使用的系统时钟)。可以采用延长低电平时间的方法协调同一总线上不同速度的设备。
SMBus 接口可作为主设备和/或从设备操作,且可在一个总线上操作多个主设备。 SMBus 提供 SDA (串行
数据)控制、 SCL (串行时钟)产生和同步、仲裁逻辑以及起始/停止控制和产生电路。 SMBus 外围可被软
件完全驱动(即软件接受/拒绝从地址并产生 ACK),或硬件从地址识别和 ACK 自动产生可被启动,以降低
软件开销。 SMBus 外围的结构图和相关的 SFR 如图 26.1 所示。
SMB0CN
MT S S A A A S
A X T T CRC I
SMAOK B K
T O
R L
E D
QO
R E
S
T
SMB0CF
E I B E S S S S
N N U XMMMM
S H S T B B B B
M Y H T F CC
B
OO T S S
L E E 1 0
D
00
T0 溢出
01
T1 溢出
10
TMR2H 溢出
11
TMR2L 溢出
SMBUS 控制逻辑
仲裁
SCL 同步
SCL 产生(主模式)
SDA 控制
硬件从地址识别
硬件 ACK 发生器
IRQ 产生
中断
请求
SCL
控制
数据路径
控制
S
L
V
5
S
L
V
4
S
L
V
3
S
L
V
2
S
L
V
1
SMB0ADR
SG
L C
V
0
S S S S S S S
L L L L L L L
V V V V V V V
MMMMMMM
6 5 4 3 2 1 0
SMB0ADM
N
交
叉
开
关
SDA
控制
SMB0DAT
7 6 5 4 3 2 1 0
S
L
V
6
SCL
滤波器
端口 I/O
SDA
滤波器
E
H
A
C
K
N
图 26.1. SMBus 结构图
Rev. 1.0
180
C8051F80x-83x
26.1. 辅助文件
假设读者熟悉或有条件读取下列辅助文件:
1. I2C 总线和如何使用 (包括规格),飞利浦半导体。
2. I2C 总线规格-2.0 版,飞利浦半导体。
3. 系统管理总线规格-1.1 版, SBS 实施者论坛。
26.2. SMBus 配置寄存器
图 26.2 展示了 SMBus 的典型配置。SMBus 规定的电压为 3.0 V 至 5.0 V,总线上不同设备的工作电压可以
不同。 SCL (串行时钟)和 SDA (串行数据)线为双向,必须通过一个上拉电阻或等效电路连接到正电源
电压。连接到总线上的每个设备的 SCL 和 SDA 线须为漏极开路或集电极开路,因此,当总线空闲时,这两
条线都被拉到高电平 (隐形状态)。总线上的最大设备数目仅受规定的总线上上升和下降时间的限制,上升
和下降时间分别不得超过 300 ns 和 1000 ns。
VDD 为 5 V
VDD 为 3 V
VDD 为 5 V
VDD 为 3 V
主设备
从设备 1
从设备 2
SDA
SCL
图 26.2. 典型 SMBus 配置
26.3. SMBus 操作
有两种可能的数据传输类型:从主发送器到寻址的从接收器(写)的数据传输和从寻址的从发送器到主接收
器 (读)。这两种数据传输都由主设备启动,主设备还在 SCL 上提供串行时钟脉冲。 SMBus 接口可作为主
设备或从设备操作,同一总线上可有多个主设备。如果两个或更多个主设备试图同时启动数据传输,仲裁机
制将保证总会有一个主设备赢得总线。请注意,无必要在系统中指定一个主设备;任何发送起始和从地址的
设备都可成为数据传输期间的主设备。
一次典型的 SMBus 传输包含一个起始条件、一个地址字节 (位 7-1:7 位从地址;位 0:R/W 方向位)、一
个或多个数据字节和一个停止条件。接收到的字节 (由主设备或从设备发送)都必须用 SCL 高电平期间的
SDA 低电平 (见图 26.3)来确认 (ACK)。如果接收设备不确认,传送设备将读到一个非确认 (NACK),这
用 SCL 高电平期间的 SDA 高电平表示。
方向位 (R/W) 占据地址字节的最低位位置。方向位设置为逻辑 1,表示一个"读"的操作;被清为逻辑 0,表
示一个"写"的操作。
181
Rev. 1.0
C8051F80x-83x
所有传输都是由主设备启动,以一个或多个寻址从设备为目标。主设备产生一个起始条件,然后传送从地址
和方向位。如传输为主设备到从设备的写的操作,则主设备每传送一个数据字节后等待来自从设备的确认。
对于读的操作,从设备传送每个数据字节后等待来自主设备的确认。数据传输结束时,主设备产生一个停止
条件,终止传输并释放总线。图 26.3 列示了典型的 SMBus 传输。
SCL
SDA
SLA6
开始
SLA5-0
从地址 + R/W
R/W
D7
ACK
D6-0
数据字节
NACK
停止
图 26.3. SMBus 传输
26.3.1. 发送器与接收器
在 SMBus 通信接口上,发送地址或数据字节至总线上另一设备时,设备为"发送器"。当地址或数据字节被
总线上另一设备发送至此时,设备为"接收器"。地址或数据字节传输时,发送器控制 SDA 线。发送器传送
地址或数据信息的字节完成之后,接收器在传输 ACK 相位时发送 ACK 或 NACK 位,此时接收器控制 SDA
线。
26.3.2. 仲裁
一个主设备只有在总线空闲时才能启动一次传输。停止条件之后或 SCL 和 SDA 线保持高电平已经超过了指
定时间 (参见第 183 页"26.3.5. SCL 高 (SMBus 除外)超时"一条),则总线空闲。如两个或多个设备试图
同时开始数据传输,使用仲裁机制迫使一个主设备放弃总线。主设备继续传输,直至其中一个主设备发送高
电平而其它主设备发送低电平。由于总线为漏极开路,因此总线将被拉为低电平。试图发送高电平的主设备
将探测到 SDA 上的低电平而在竞争中失败。赢得总线的主设备继续无中断传输,而未赢得总线的主设备成
为从设备并接收传输的其余数据 (如被寻址)。此仲裁机制为非破坏性:总会有一个设备赢得总线,而无数
据丢失。
26.3.3. 时钟低电平扩展
SMBus 提供一种类似 I2C 的时钟同步机制,允许不同速度的设备共存于同一个总线上。为了使低速从设备
能与高速主设备通信,在传输时使用时钟低电平扩展。从设备可临时保持 SCL 线为低电平以扩展时钟低电
平时间,有效地降低了串行时钟频率。
26.3.4. SCL 低电平超时
如 SCL 线被总线上的从设备保持为低电平,则不能再进行通信。并且主设备不能强制 SCL 线为高电平来纠
正这种错误情况。为解决这一问题,SMBus 协议规定,参加数据传输的设备须探测任何时钟的低电平时间,
若超过 25 ms 则为"超时"。探测到超时情况的设备须在探测到此情况后 10 ms 内复位通信电路。
当 SMB0CF 中的 SMBTOE 位被设置时,定时器 3 被用于探测 SCL 低电平超时。定时器 3 在 SCL 为高电
平时被强制重载,在 SCL 为低电平时开始计数。如果定时器 3 被启用且溢出周期被配置为 25 ms (且
SMBTOE 被设置),则在发生 SCL 低电平超时事件时用定时器 3 中断服务程序,对 SMBus 复位 (禁用后
重新启用)。
Rev. 1.0
182
C8051F80x-83x
26.3.5. SCL 高电平 (SMBus 空闲)超时
SMBus 规格规定,如 SCL 和 SDA 线保持高电平的时间超过 50 μs,则认为总线处于空闲状态。当 SMB0CF
中的 SMBFTE 位被设置时,如 SCL 和 SDA 保持高电平的时间超过 10 个 SMBus 时钟源周期 (在为
SMBus 时钟源配置的定时器中定义),则总线将被视为空闲。如 SMBus 正待产生一个主起始条件,则该起
始条件将在超时后立即产生。总线空闲超时探测需要一个时钟源,即使对从设备也不例外。
26.4. 使用 SMBus
SMBus 可在主模式和从模式下操作。接口电路为串行传输提供定时和移位控制;更高层的协议由用户软件
实现。 SMBus 接口提供下述无关应用的特征:

以字节为单位的串行数据传输
SCL 时钟信号产生 (仅限主模式)和 SDA 数据同步

超时/总线错误识别 (在 SMB0CF 配置寄存器中定义)

START/STOP 定时、探测和产生

总线仲裁
中断产生
 状态信息
 从地址的可选硬件识别和地址/数据自动确认


每次数据字节或从地址传输都产生 SMBus 中断。当硬件确认被禁用,此时中断产生取决于硬件是作为数据
发送器还是接收器。作为发送器时 (即发送地址/数据、接收 ACK),中断于 ACK 周期后产生,从而使软件
可读取接收到的 ACK 值;接收数据时 (即接收地址/数据、发送 ACK),中断于 ACK 周期之前产生,从而
使软件可确定要发出的 ACK 值。如启用硬件确认,则这些中断总在 ACK 周期之后产生。请参见第 26.5 条,
了解有关传输顺序的更多详情。
当主设备产生起始条件或从设备探测到停止条件时也会产生中断,表示数据传输开始或结束。软件应通过读
SMB0CN(SMBus 控制寄存器)来确定 SMBus 中断的原因。SMB0CN 寄存器如第 26.4.2 条所述;表 26.5
载列了 SMB0CN 快速解码参考。
26.4.1. SMBus 配置寄存器
SMBus 配置寄存器 (SMB0CF) 用于启用 SMBus 主和/或从模式,选择 SMBus 时钟源以及选择 SMBus 定
时和超时选项。当 ENSMB 位被设置时,SMBus 的所有主和从事件都被允许。可通过设置 INH 位来禁止从
事件。在从事件被禁止的情况下, SMBus 接口将仍然监视 SCL 和 SDA 针脚;然而,接口将在接收到所有
地址时发出 NACK 信号,且将不会产生任何从中断。当 INH 位被设置时,在下一个起始条件后,所有的从
事件都将被禁止 (当前传输过程中的中断将继续)。
183
Rev. 1.0
C8051F80x-83x
表 26.1:SMBus 时钟源选择
SMBus 时钟源
SMBCS1
SMBCS0
0
0
定时器 0 溢出
0
1
定时器 1 溢出
1
0
定时器 2 高字节溢出
1
1
定时器 2 低字节溢出
SMBCS1-0 位选择 SMBus 时钟源,时钟源仅在作为主设备或空闲超时探测被启用时使用。作为主设备操作
时,所选时钟源的溢出周期决定 SCL 低电平和高电平的绝对值最小时间 (如方程 26.1 定义)。请注意,只
要定时器一直保持运行状态,所选时钟源就可与其它外围设备共享。例如,定时器 1 溢出可同时产生 SMBus
和 UART 波特率。定时器配置见第 209 页"28. 定时器"一条。
1
T HighMin = T LowMin = ---------------------------------------------f ClockSourceOverflow
方程 26.1:最小 SCL 高和低电平时间
所选时钟源应被配置为能产生方程 26.1 所定义的最小 SCL 高和低电平时间。当接口作为主设备操作 (且
SCL 不被总线上任何其它设备驱动或扩展)时,典型的 SMBus 位速率可由下面的方程 26.2 估算:
f ClockSourceOverflow
位速率
BitRate
= ---------------------------------------------3
方程 26.2:典型 SMBus 位速率
图 26.4 列示了方程 26.2 所述的典型 SCL 波形。请注意,THIGH 通常为 TLOW 的两倍。实际的 SCL 输出波
形可能会因总线上有其它设备而发生改变 (SCL 可能被低速从设备扩展为低电平,或被其它参与竞争的主
设备驱动为低电平)。作为主设备操作时,位速率将不能超过由方程 26.1 定义的极限值。
定时器源溢出
SCL
TLow
SCL 高电平超时
THigh
图 26.4. 典型 SMBus SCL 发生器
设置 EXTHOLD 位将扩展 SDA 线的最小建立时间和保持时间。最小 SDA 建立时间定义了在 SCL 上升沿到
来之前 SDA 稳定的绝对值最小时间。最小 SDA 保持时间定义了在 SCL 下降沿过去之后 SDA 值保持稳定
的绝对值最小时间。应设置 EXTHOLD,从而使最小建立和保持时间分别符合 SMBus 规格规定的 250 ns 和
300 ns。表 26.2 列示了两种 EXTHOLD 设置情况的最小建立和保持时间。当 SYSCLK 大于 10 MHz 时,通
常需扩展建立和保持时间。
Rev. 1.0
184
C8051F80x-83x
表 26.2:最小 SDA 建立和保持时间
EXTHOLD
0
1
最小 SDA 建立时间
Tlow – 4 个系统时钟
或
1 个系统时钟 + 软件延时*
11 个系统时钟
最小 SDA 保持时间
3 个系统时钟
12 个系统时钟
附注: 传输 ACK 位和所有数据传输中 MSB 的建立时间。使用软件确认时,软件延时发生
在写入 SMB0DAT 或 ACK 到 SI 被清除之间。请注意,如果 SI 被清除与确定要发出
的 ACK 值发生在同一个写的操作,则软件延时为零。
在 SMBTOE 位被设置的情况下,定时器 3 应被配置为以 25 ms 为周期溢出,以探测 SCL 低电平超时 (请
参见第 182 页"26.3.4. SCL 低电平超时"一条)。 SMBus 接口将在 SCL 为高电平时强制重载定时器 3,在
SCL 为低电平时允许定时器 3 计数。应通过先禁用后重启 SMBus,使用定时器 3 中断服务程序对 SMBus
通信复位。
SMBus 空闲超时探测可通过设置 SMBFTE 位启用。当此位被设置,如 SDA 和 SCL 保持高电平的时间超过
10 个 SMBus 时钟源周期 (见图 26.4),则总线将被视为空闲。
185
Rev. 1.0
C8051F80x-83x
SFR 定义 26.1:SMB0CF:SMBus 时钟/配置寄存器
位
7
6
5
名称
ENSMB
INH
BUSY
类型
R/W
R/W
R
R/W
复位
0
0
0
0
SFR 地址 = 0xC1
位
名称
7
ENSMB
4
3
EXTHOLD SMBTOE
2
1
0
SMBFTE
SMBCS[1:0]
R/W
R/W
R/W
0
0
0
0
功能
SMBus 启用。
当设置为 1 时,此位启用 SMBus 接口。启用时,接口一直监视 SDA 和 SCL 针脚。
6
INH
SMBus 从禁止。
此位设置为逻辑 1 时,SMBus 在从事件发生时不产生中断。这样有效地将 SMBus 从
设备移出总线。主模式中断不受影响。
5
BUSY
SMBus 忙状态标志。
正在进行传输时,此位被硬件设置为逻辑 1。当检测到停止条件或空闲超时时,此位
被清为逻辑 0。
4
EXTHOLD
SMBus 建立和保持时间扩展启用。
此位根据表 26.2 控制 SDA 建立和保持时间。
0:禁用 SDA 建立和保持时间扩展。
1:启用 SDA 建立和保持时间扩展。
3
SMBTOE
SMBus SCL 超时探测启用。
此位启用 SCL 低电平超时探测。如设置为逻辑 1,则 SMBus 接口将在 SCL 为高电
平时强制重载定时器 3,在 SCL 为低电平时允许定时器 3 计数。如定时器 3 被配置
为分割模式,则当 SCL 为高电平时,仅有定时器的高字节被重载。应将定时器 3 编
程为每 25 ms 产生一次中断,并使用定时器 3 中断服务程序对 SMBus 通信复位。
2
SMBFTE
SMBus 空闲超时探测启用。
当此位设置为逻辑 1,如 SCL 和 SDA 保持高电平的时间超过 10 个 SMBus 时钟源周
期,则总线将被视为空闲。
1:0 SMBCS[1:0] SMBus 时钟源选择。
这两个位选择用于产生 SMBus 位速率的 SMBus 时钟源。所选设备应根据方程 26.1
配置。
00:定时器 0 溢出
01:定时器 1 溢出
10:定时器 2 高字节溢出
11:定时器 2 低字节溢出
Rev. 1.0
186
C8051F80x-83x
26.4.2. SMB0CN 控制寄存器
SMB0CN 用 于 控 制 接 口 和 提 供 状 态 信 息 (见 SFR 定 义 26.2) 。 SMB0CN 中 的 高 四 位 (MASTER、
TXMODE、STA 和 STO)组成一个状态向量,可用于转移到服务程序。MASTER 指当前传输期间设备为主
设备或从设备。 TXMODE 指设备当前正发送或接收数据字节。
STA 和 STO 指自上次 SMBus 中断以来,探测或产生的起始和/或停止条件。 STA 和 STO 也用于在作为主
设备操作时,产生起始和停止条件。在总线为空闲时,向 STA 写 1 将使 SMBus 接口进入主模式并产生一
个起始条件 (STA 在起始条件产生之后并未被硬件清除)。在主模式下操作时,向 STO 写 1 将使接口产生
一个停止条件并在下一个 ACK 周期之后结束当前的传输。如 STO 和 STA 都被设置 (在主模式下),起始
条件产生之后将产生一个停止条件。
ARBLOST 位指此接口已在总线竞争中失败。当接口正在传输 (主或从)时,可能会出现此情况。在作为从
设备操作时,出现此情况表示总线错误。在每次 SI 被清除后, ARBLOST 被硬件清除。
在每次传输开始和结束、每个字节帧之后或竞争失败时,SI 位(SMBus 中断标志)被设置。请参见表 26.3,
了解更多详情。
有关 SI 位的重要事项:当 SI 被设置时, SMBus 接口暂停工作;而 SCL 保持低电平,总线状态被冻结,直
到软件将 SI 清除。
26.4.2.1. 软件 ACK 发生器
当寄存器 SMB0ADM 中的 EHACK 位被清 0 时,设备上的固件须探测传入的从地址和 ACK 或 NACK 从地
址和传入的数据字节。作为接收器,写 ACK 位确定要发出的 ACK 值;作为发送器,读 ACK 位表示在最后
的 ACK 周期中接收到的值。每次接收到字节时设置 ACKRQ,表示需要一个要发出的 ACK 值。当 ACKRQ
被设置,软件应在清除 SI 前向 ACK 位写拟发出的值。如软件未在清除 SI 前写 ACK 位,则将产生一个
NACK。写入 ACK 位之后, SDA 随即反射出已定义的 ACK 值,而 SCL 将保持低电平直至 SI 被清除。如
接收到的从地址未被确认,其它的从事件将被忽略,直至探测到下一个起始条件。
26.4.2.2. 硬件 ACK 发生器
当寄存器 SMB0ADM 中的 EHACK 位设置为 1 时,将启用从地址自动识别和 ACK 发生器。有关从地址自动
识别的更多详情,请参见第 26.4.3 条。作为接收器,ACK 位当前指定的值将在传入数据字节的 ACK 周期中
自动发送到总线上。作为发送器,读 ACK 位表示最后的 ACK 周期中接收到的值。启用硬件 ACK 发生器时,
不可使用 ACKRQ 位。如接收到的从地址未被硬件确认,其它的从事件将被忽略直至探测到下一个起始条
件,且将不会产生任何中断。
表 26.3 列示了影响 SMB0CN 位的所有硬件源。有关使用 SMB0CN 寄存器进行 SMBus 状态解码,请参见
表 26.5。
187
Rev. 1.0
C8051F80x-83x
SFR 定义 26.2:SMB0CN:SMBus 控制寄存器
位
7
6
5
4
3
2
1
0
名称
MASTER
TXMODE
STA
STO
ACKRQ
ARBLOST
ACK
SI
类型
R
R
R/W
R/W
R
R
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xC0;可位寻址
位
名称
说明
7
MASTER SMBus 主/从标志。此只读位
表示 SMBus 是否在主模式下
操作。
6
TXMODE SMBus 发送模式标志。此只
读位表示 SMBus 是否作为发
送器操作。
5
STA
SMBus 起始标志。
4
STO
SMBus 停止标志。
3
ACKRQ
SMBus 确认请求。
2
ARBLOST SMBus 竞争失败标志。
1
ACK
0
SI
SMBus 确认。
读
0:SMBus 在从模式下操
作。
1:SMBus 在主模式下操
作。
0:SMBus 在接收器模式
下。
1:SMBus 在发送器模式
下。
0:未探测到起始或重复起
始条件。
1:探测到起始或重复起始
条件。
0:未探测到停止条件。
1:探测到停止条件 (在从
模式下)或挂起 (在主模
式下)。
0:请求未确认
1:请求确认
0:无仲裁错误。
1:在竞争中失败
0:收到 NACK。
1:收到 ACK。
0:无中断挂起
SMBus 中断标志。
1:中断挂起
在表 15.3 所列情况下,此位
被硬件设置。 SI 必须被软件清
除。SI 被设置时,SCL 保持低
电平且 SMBus 暂停工作。
Rev. 1.0
写
不可用
不可用
0:未产生起始条件。
1:配置为主模式时,启动
起始或重复起始条件。
0:未发送停止条件。
1:配置为主模式时,产生
停止条件,以在下一次
ACK 周期后发送。
被硬件清除。
不可用
不可用
0:发送 NACK
1:发送 ACK
0:清除中断,并启动下一
状态的机器事件。
1:强制中断。
188
C8051F80x-83x
表 26.3:SMB0CN 硬件更换源
位
MASTER
在下列情况被硬件设置:

产生一个起始条件。
STA
STO
ACKRQ









SI
每个 ACK 周期之后。

每次 SI 被清除时。




ACK


产生一个起始条件。
 在 SMBus 帧开始之前写 SMB0DAT。

ARBLOST

产生一个停止条件。
在总线竞争中失败。
探测到一个起始条件。
在总线竞争中失败。
在 SMBus 帧开始之前未写
SMB0DAT。
必须被软件清除。
产生一个挂起的停止条件。


TXMODE
在下列情况被硬件清除:
起始条件后接收到一个地址字节。
作为从设备被寻址时探测到一个停止条件。
由于探测到停止条件,因此在竞争中失败。
接收到一个字节并需要一个 ACK 响应值
(仅限硬件 ACK 未启用时)。
当 STA 为低电平时,主设备探测到一个重复
的起始条件 (不希望的重复起始条件)。
在试图产生一个停止条件或重复起始条件
时,探测到 SCL 为低电平。
在发送 1 时,探测到 SDA 为低电平 (ACK
位除外)。
传入的 ACK 值为低 (确认)。
已产生一个起始条件。
竞争失败。
已发送一个字节且接收到 ACK/NACK。

传入的 ACK 值为高 (非确认)。
 必须被软件清除。

已接收到一个字节。
 在起始或重复起始条件之后接收到一个从地
址 + R/W。


已接收到一个停止条件。
26.4.3. 硬件从地址识别
SMBus 硬件能自动地识别传入的从地址并在无软件干预的情况下发送 ACK。从地址自动识别通过将寄存器
SMB0ADM 中的 EHACK 位设为 1 启用。这将对接收到的字节启用从地址自动识别和自动硬件 ACK 发生器
(作为主或从设备)。有关自动硬件 ACK 发生器的更多详情,请参见第 26.4.2.2 条。
用于定义硬件识别地址的寄存器为 SMBus 从地址寄存器 (SFR 定义 26.3)和 SMBus 从地址屏蔽寄存器
(SFR 定义 26.4)。单个或多个地址 (包括广播定址 0x00)可使用这两种寄存器指定。两种寄存器最高的
七位用于定义被确认的地址。从地址屏蔽寄存器 SLVM[6:0] 的位位置中的 1 就这些位对接收到的从地址和
硬件的从地址 SLV[6:0] 进行比较。从地址寄存器的位中的 0 表示此位将不进行比较。在这种情况下,在传
入从地址过程中,1 或 0 值都可被接受。此外,如寄存器 SMB0ADR 中的 GC 位设置为 1,则硬件将识别广
播定址 (0x00)。表 26.4 列示了部分示例参数设置以及在该等情况下将被硬件识别的从地址。
189
Rev. 1.0
C8051F80x-83x
表 26.4:硬件地址识别范例 (EHACK = 1)
硬件从地址
SLV[6:0]
从地址屏蔽寄存器
SLVM[6:0]
GC 位
被硬件识别的从地址
0x34
0x34
0x34
0x34
0x70
0x7F
0x7F
0x7E
0x7E
0x73
0
1
0
1
0
0x34
0x34、 0x00 (广播定址)
0x34、 0x35
0x34、 0x35、 0x00 (广播定址)
0x70、 0x74、 0x78、 0x7C
Rev. 1.0
190
C8051F80x-83x
SFR 定义 26.3:SMB0ADR:SMBus 从地址寄存器
位
7
6
5
4
3
2
1
0
名称
SLV[6:0]
GC
类型
R/W
R/W
复位
0
SFR 地址 = 0xD7
位
名称
7:1
SLV[6:0]
0
0
0
0
0
0
0
功能
SMBus 硬件从地址。
定义自动硬件确认的 SMBus 从地址。仅 SLVM[6:0] 中相应的位位置中含有 1 的地
址位会被检查传入的地址。允许识别多个地址。
0
GC
启用广播定址。
当硬件地址识别启用 (EHACK = 1) 时,此位将决定广播定址 (0x00) 是否还被硬件
识别。
0:忽略广播定址。
1:识别广播定址。
SFR 定义 26.4:SMB0ADM:SMBus 从地址屏蔽寄存器
位
7
6
5
4
3
2
1
0
名称
SLVM[6:0]
EHACK
类型
R/W
R/W
复位
1
SFR 地址 = 0xD6
位
名称
7:1
SLVM[6:0]
1
1
1
1
1
1
0
功能
SMBus 从地址屏蔽。
定义寄存器 SMB0ADR 被用作与传入的地址字节比较的位以及被忽略的位。
SLVM[6:0] 中任何设置为 1 的位与 SLV[6:0] 中相应的位比较。设置为 0 的位被忽
略 (在传入的地址中可为 0 或 1)。
0
EHACK
启用硬件确认。
启用从地址和接收到的数据字节的硬件确认。
0:固件须手动确认所有传入的地址和数据字节。
1:从地址自动确认和硬件确认已启用。
191
Rev. 1.0
C8051F80x-83x
26.4.4. 数据寄存器
SMBus 数据寄存器 SMB0DAT 保存要发送的或刚接收到的串行数据字节。SI 标志被设置时,软件可安全地
读或写数据寄存器。当 SMBus 被启用而 SI 标志被清为逻辑 0 时,软件不应访问 SMB0DAT 寄存器,因为
接口可能正在将数据字节移入或移出寄存器。
SMB0DAT 中的数据总是先移出 MSB。在接收到一个字节后,接收数据的第一个位位于 SMB0DAT 的
MSB。在数据被移出的同时,总线上的数据被移入。SMB0DAT 总是含有最后出现在总线上的数据字节。一
旦竞争失败,从主发送器变为从接收器时 SMB0DAT 中的正确数据或地址保持不变。
SFR 定义 26.5:SMB0DAT:SMBus 数据寄存器
位
7
6
5
4
3
名称
SMB0DAT[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xC2
位
名称
7:0 SMB0DAT[7:0] SMBus 数据。
2
1
0
0
0
0
功能
SMB0DAT 寄存器含有要发送到 SMBus 串行接口上的一个数据字节,或刚从
SMBus 串行接口接收到的一个字节。一旦 SI 串行中断标志 (SMB0CN.0) 设置为逻
辑 1, CPU 即可读或写该寄存器。只要 SI 标志被设置,寄存器中的串行数据就保
持稳定。当 SI 标志未被设置,系统可能正在移入/移出数据,此时 CPU 不应访问该
寄存器。
Rev. 1.0
192
C8051F80x-83x
26.5. SMBus 传输模式
SMBus 接口可被配置为在主和/或从模式下操作。在任一时刻,它将在下列四个模式中任意一个下操作:主
发送器、主接收器、从发送器或从接收器。 SMBus 在产生起始条件时进入主模式,并保持在主模式直至其
竞争失败或产生一个停止条件。SMBus 在每个 SMBus 字节帧结束后都产生一个中断。请注意,作为接收器
时 ACK 中断的位置取决于硬件 ACK 发生器的启用状况。作为接收器,ACK 中断在硬件 ACK 发生器禁用的
情况下于 ACK 之前产生,硬件 ACK 发生器启用时则于 ACK 之后产生。作为发送器,不论硬件 ACK 发生
器启用与否,中断都于 ACK 之后产生。
26.5.1. 写入顺序 (主)
就写入顺序而言,SMBus 主设备向从设备写入数据。在地址字节和所有数据字节传输中,主设备为发送器。
SMBus 接口产生起始条件并发送含有目标从设备的地址的第一个字节和数据方向位。此时数据方向位
(R/W) 将为逻辑 0 (写)。然后主设备发送一个或多个串行数据字节。每个字节发送之后,从设备将产生确
认位。当 STO 位被设置且停止条件产生时,传输结束。请注意,如 SMB0DAT 在主发送器中断后未被写入
数据,则接口将切换到主接收器模式。图 26.5 列示了典型的主发送器写入顺序。尽管可传输任意数目的字
节,但仅列示了两个传输的数据字节。须注意,不论硬件 ACK 发生器启用与否,所有“数据字节传输结束”中
断都于此模式下 ACK 周期之后产生。
硬件 ACK 发生器启用 (EHACK = 1) 时中断
S
SLA
W
A
数据字节
A
数据字节
A
硬件 ACK 发生器禁用 (EHACK = 0) 时中断
S = START(开始)
P = STOP(停止)
A = ACK(确认)
W = WRITE(写)
SLA = 从地址
由 SMBus 接口接收
由 SMBus 接口发送
图 26.5. 典型主发送器写入顺序
193
Rev. 1.0
P
C8051F80x-83x
26.5.2. 读取顺序 (主)
就读取顺序而言,SMBus 主设备自从设备读取数据。在地址字节和所有数据字节传输中,主设备为接收器。
SMBus 接口产生起始条件并发送含有目标从设备的地址的第一个字节和数据方向位。此时数据方向位
(R/W) 将为逻辑 1 (读)。然后, SMBus 输出串行时钟的同时,串行数据自 SDA 上的从设备接收。从设备
发送一个或多个串行数据字节。
如禁用硬件 ACK 发生器,则 ACKRQ 设置为 1 且在每收到一个字节后产生一个中断。那时软件必须写 ACK
位,以确认或不确认接收到的字节。
在启用硬件 ACK 发生器的情况下, SMBus 硬件将自动产生 ACK/NACK,然后发出中断。须注意,启用硬
件 ACK 发生器时,在接收字节之前,软件应设置适当的 ACK 或 NACK 值。
向 ACK 位写 1 产生一个 ACK,写 0 则产生一个 NACK。软件应在接收到最后的数据后向 ACK 写 0,以发
送 NACK。接口将在 STO 位被设置且产生停止条件后,退出主接收器模式。如在主接收器模式下执行
SMB0DAT 写操作,接口将切换到主发送器模式。图 26.6 列示了典型的主接收器读取顺序。尽管可接收任
意数目的字节,但仅列示了两个接收的数据字节。须注意, ‘数据字节传输结束’中断发生于顺序中的不同位
置,视乎硬件 ACK 发生器启用情况而定。中断在硬件 ACK 发生器禁用的情况下于 ACK 之前产生,硬件
ACK 发生器启用时则于 ACK 之后产生。
硬件 ACK 发生器启用 (EHACK = 1) 时中断
S
SLA
R
A
数据字节
A
数据字节
N
P
硬件 ACK 发生器禁用 (EHACK = 0) 时中断
S = START(开始)
P = STOP(停止)
A = ACK(确认)
N = NACK(非确认)
R = READ(读)
SLA = 从地址
由 SMBus 接口接收
由 SMBus 接口发送
图 26.6. 典型主接收器读取顺序
Rev. 1.0
194
C8051F80x-83x
26.5.3. 写入顺序 (从)
就写入顺序而言,SMBus 主设备向从设备写入数据。在地址字节和所有数据字节传输中,从设备为接收器。
在从事件被允许的情况下 (INH = 0),当接收到一个起始条件和一个含有从地址和方向位 (此处应为写)的
字节时,接口进入从接收器模式。如硬件 ACK 发生器被禁用,则进入从接收器模式后,将产生一个中断且
ACKRQ 位被设置。软件须用一个 ACK 对接收到的从地址确认,或用一个 NACK 忽略接收到的从地址。如
硬件 ACK 发生器被启用,硬件将对与 SMB0ADR 和 SMB0ADM 设置的标准相符的从地址回复 ACK。ACK
周期之后将产生中断。
如接收到的从地址被(软件或硬件)忽略,从中断将被禁止直至探测到下一个起始条件。如接收到的从地址
被确认,则将收到零或更多数据字节。
如禁用硬件 ACK 发生器,则 ACKRQ 设置为 1 且在每收到一个字节后产生一个中断。那时软件必须写 ACK
位,以确认或不确认接收到的字节。
在启用硬件 ACK 发生器的情况下, SMBus 硬件将自动产生 ACK/NACK,然后发出中断。须注意,启用硬
件 ACK 发生器时,在接收字节之前,软件应设置适当的 ACK 或 NACK 值。
收到一个 STOP 之后,接口退出从接收器模式。请注意,如在从接收器模式下执行 SMB0DAT 写操作,接
口将切换到从发送器模式。图 26.7 列示了典型的从接收器写入顺序。尽管可接收任意数目的字节,但仅列
示了两个接收的数据字节。须注意,“数据字节传输结”中断发生于顺序中的不同位置,视乎硬件 ACK 发生器
启用情况而定。中断在硬件 ACK 发生器禁用的情况下于 ACK 之前产生,硬件 ACK 发生器启用时则于 ACK
之后产生。
硬件 ACK 发生器启用 (EHACK = 1) 时中断
S
SLA
W
A
数据字节
A
数据字节
A
硬件 ACK 发生器禁用 (EHACK = 0) 时中断
S = START(开始)
P = STOP(停止)
A = ACK(确认)
W = WRITE(写)
SLA = 从地址
由 SMBus 接口接收
由 SMBus 接口发送
图 26.7. 典型从接收器写入顺序
195
Rev. 1.0
P
C8051F80x-83x
26.5.4. 读取顺序 (从)
就读取顺序而言, SMBus 主设备自从设备读取数据。在地址字节传输中,从设备为接收器;在所有数据字
节传输中,从设备为发送器。在从事件被允许的情况下 (INH = 0),当接收到一个起始条件和一个含有从地
址和方向位 (此处应为读)的字节时,接口进入从接收器模式 (以接收从地址)。如硬件 ACK 发生器被禁
用,则进入从接收器模式后,将产生一个中断且 ACKRQ 位被设置。软件须用一个 ACK 对接收到的从地址
确认,或用一个 NACK 忽略接收到的从地址。如硬件 ACK 发生器被启用,硬件将对与 SMB0ADR 和
SMB0ADM 设置的标准相符的从地址回复 ACK。 ACK 周期之后将产生中断。
如接收到的从地址被(软件或硬件)忽略,从中断将被禁止直至探测到下一个起始条件。如接收到的从地址
被确认,则将发送零或更多数据字节。如接收到的从地址被确认,则数据应被写入 SMB0DAT 以待发送。接
口进入从发送器模式,且会发送一个或多个数据字节。发送每个字节之后,主设备发出确认位,如确认位为
ACK,则 应 向 SMB0DAT 写 入 下 一 个 数 据 字 节。如 确 认 位 为 NACK,则 在 SI 被 清 除 之 前 不 应 再 写
SMB0DAT (在从发送器模式下,如在收到 NACK 后写 SMB0DAT,可能会产生一个错误条件)。收到一个
STOP 之后,接口退出从发送器模式。请注意,如 SMB0DAT 在从发送器中断后未被写入数据,则接口将切
换到从接收器模式。图 26.8 列示了典型的从发送器读取顺序。尽管可发送任意数目的字节,但仅列示了两
个发送的数据字节。须注意,不论硬件 ACK 发生器启用与否,所有“数据字节传输结束”中断都于此模式下
ACK 周期之后产生。
硬件 ACK 发生器启用 (EHACK = 1) 时中断
S
SLA
R
A
数据字节
A
数据字节
N
P
硬件 ACK 发生器禁用 (EHACK = 0) 时中断
S = START(开始)
P = STOP(停止)
N = NACK(非确认)
R = READ(读)
SLA = 从地址
由 SMBus 接口接收
由 SMBus 接口发送
图 26.8. 典型从发送器读取顺序
26.6. SMBus 状态解码
使用 SMB0CN 寄存器可对 SMBus 当前的状态轻松解码。为响应 SMBus 事件而进行的适当操作视乎硬件
从地址识别和 ACK 发生器的启用状况而定。表 26.5 列出了硬件从地址识别和 ACK 发生器禁用时典型的操
作。表 26.6 列出了硬件从地址识别和 ACK 发生器启用时典型的操作。在下列表中,状态向量指 SMB0CN
的高四位:MASTER、 TXMODE、 STA 和 STO。表中仅列出了典型的响应选项,只要符合 SMBus 规格,
特定应用程序就会被允许。突出显示的响应选项是被硬件允许的,但不符合 SMBus 规格。
Rev. 1.0
196
C8051F80x-83x
ARBLOST
0
0 X 主起始条件已产生。
0
0
SMbus 当前状态
0
0
0 X
1100
1
0 X
1110
0
1 X
—
将下一个数据字节装入
SMB0DAT。
0
0 X
1100
并用停止条件结束数据传输。
0
1 X
—
1
1 X
—
1
0 X
1110
切换至主接收器模式 (清除 SI, 0
不向 SMB0DAT 写新的数据)。
0 X
1000
确认接收字节;读 SMB0DAT。
0
0
1
1000
发送 NACK 表示最后一个字节, 0
并发送停止条件。
1
0
—
发送 NACK 表示最后一个字节, 1
并发送停止条件,然后发送起始
条件。
1
0
1110
发送 ACK 后发送重复起始条件。 1
0
1
1110
发送 NACK 表示最后一个字节, 1
并发送重复起始条件。
0
0
1110
发送 ACK 并切换至主发送器模
式 (清除 SI 前写入
SMB0DAT)。
0
0
1
1100
发送 NACK 并切换至主发送器模 0
式 (清除 SI 前写入
SMB0DAT)。
0
0
1100
将从地址 + R/W 装入
SMB0DAT。
设置 STA,重新启动数据传输。
0 已发送主数据或地址字节;收
到 NACK。
放弃发送。
1100
0
STO
典型响应选项
1 已发送主数据或地址字节;收 用停止条件结束数据传输并开始
到 ACK。
另一次传输。
主接收器
发送重复起始条件。
197
1000
1
0 X 收到主数据字节;请求确认。
ACK
ACKRQ
1110
ACK
状态向量
写入值
STA
主发送器
模式
读取值
下一个状态向量
表 26.5:SMBus 状态解码 (禁用硬件 ACK 发生器)(EHACK = 0)
Rev. 1.0
C8051F80x-83x
STA
STO
0
0
0 从字节已发送;收到 NACK。 无需任何操作 (等待停止条
件)。
0
0 X
0001
0
0
1 从字节已发送;收到 ACK。
将下一个要发送的字节装入
SMB0DAT。
0
0 X
0100
0
1 X 从字节已发送;探测到错误。 无需任何操作 (等待主设备结束
传输)。
0
0 X
0001
0
0 X
—
如写,确认接收到的地址
0
0
1
0000
如读,将数据字节装入
SMB0DAT;确认接收到的地址
0
0
1
0100
不确认接收到的地址。
0
0
0
—
如写,确认接收到的地址
0
0
1
0000
0
0
1
0100
0
0
0
—
1
0
0
1110
SMbus 当前状态
0 X X 从传输过程中探测到非法的停 清除 STO。
止条件或总线错误。
1
0 X 收到从地址 + R/W;请求确
认。
从接收器
0010
1
如读,将数据字节装入
SMB0DAT;确认接收到的地址
1 X 作为主设备竞争失败;收到从
地址 + R/W;请求确认。
不确认接收到的地址。
重新启动失败的传输;不确认接
收到的地址。
0
0 X 作为从发送器或从接收器被寻 清除 STO。
址时探测到停止条件。
0
0 X
—
1
1 X 试图发送停止条件时竞争失
败。
无需任何操作 (传输完成/放
弃)。
0
0
0
—
0000
1
0 X 收到从数据字节;请求确认。
确认接收字节;读 SMB0DAT。
0
0
1
0000
不对接收到的字节进行确认。
0
0
0
—
0010
0
放弃失败的传输。
1 X 试图发送重复起始条件时竞争
失败。
重新启动失败的传输。
0
0 X
—
1
0 X
1110
0001
0
放弃失败的传输。
1 X 由于探测到停止条件,因此在
竞争中失败。
重新启动失败的传输。
0
0 X
—
1
0 X
1110
0000
1
放弃失败的传输。
1 X 作为主设备发送数据字节时竞
争失败。
重新启动失败的传输。
0
0
0
—
1
0
0
1110
0001
总线错误条件
典型响应选项
ACK
ACK
0101
ARBLOST
状态向量
0100
写入值
ACKRQ
从发送器
模式
读取值
下一个状态向量
表 26.5:SMBus 状态解码 (禁用硬件 ACK 发生器)(EHACK = 0) (Continued)
Rev. 1.0
198
C8051F80x-83x
ARBLOST
0 X 主起始条件已产生。
0
0
0
0
0
1000
0
0
典型响应选项
STO
1100
SMbus 当前状态
0
0 X
1100
1
0 X
1110
0
1 X
—
将下一个数据字节装入
SMB0DAT。
0
0 X
1100
并用停止条件结束数据传输。
0
1 X
—
1
1 X
—
1
0 X
1110
切换至主接收器模式 (清除 SI, 0
不向 SMB0DAT 写新的数据)。
将首个数据字节设为 ACK。
0
1
1000
将下一个数据字节设为 ACK;
读 SMB0DAT。
0
0
1
1000
设为 NACK 表示下一个数据字节 0
为最后的数据字节;
1 收到主数据字节;发送 ACK。 读 SMB0DAT。
0
0
1000
将从地址 + R/W 装入
SMB0DAT。
设置 STA,重新启动数据传输。
0 已发送主数据或地址字节;收
到 NACK。
放弃发送。
用停止条件结束数据传输并开始
1 已发送主数据或地址字节;收 另一次传输。
到 ACK。
发送重复起始条件。
启动重复起始条件。
1
0
0
1110
切换至主发送器模式 (清除 SI
前写入 SMB0DAT)。
0
0 X
1100
读 SMB0DAT;发送停止条件。
0
1
0
—
读 SMB0DAT;发送停止条件,
然后发送起始条件。
收到主数据字节;发送
NACK
0
(最后的字节)。
启动重复起始条件。
1
1
0
1110
1
0
0
1110
0
0 X
1100
切换至主发送器模式 (清除 SI
前写入 SMB0DAT)。
199
ACK
ACKRQ
0
ACK
状态向量
1110
0
主接收器
写入值
STA
主发送器
模式
读取值
下一个状态向量
表 26.6:SMBus 状态解码 (启用硬件 ACK 发生器)(EHACK = 1)
Rev. 1.0
C8051F80x-83x
STA
STO
0
0
0 从字节已发送;收到 NACK。 无需任何操作 (等待停止条
件)。
0
0 X
0001
0
0
1 从字节已发送;收到 ACK。
将下一个要发送的字节装入
SMB0DAT。
0
0 X
0100
0
1 X 从字节已发送;探测到错误。 无需任何操作 (等待主设备结束
传输)。
0
0 X
0001
0
0 X
—
如写,将第一个数据字节设为
ACK。
0
0
1
0000
如读,将数据字节装入
SMB0DAT
0
0 X
0100
如写,将第一个数据字节设为
ACK。
0
0
1
0000
0
0 X
0100
1
0 X
1110
SMbus 当前状态
0 X X 从传输过程中探测到非法的停 清除 STO。
止条件或总线错误。
0
0 X 收到从地址 + R/W;发送
ACK。
0010
从接收器
0
1 X 作为主设备竞争失败;收到从 如读,将数据字节装入
地址 + R/W;发送 ACK。
SMB0DAT
重新启动失败的传输
0
0 X 作为从发送器或从接收器被寻 清除 STO。
址时探测到停止条件。
0
0 X
—
0
1 X 试图发送停止条件时竞争失
败。
无需任何操作 (传输完成/放
弃)。
0
0
0
—
将下一个数据字节设为 ACK;
读 SMB0DAT。
0
0
1
0000
将下一个数据字节设为 NACK;
读 SMB0DAT。
0
0
0
0000
0001
总线错误条件
典型响应选项
ACK
ACK
0101
ARBLOST
状态向量
0100
写入值
ACKRQ
从发送器
模式
读取值
下一个状态向量
表 26.6:SMBus 状态解码 (启用硬件 ACK 发生器)(EHACK = 1) (Continued)
0000
0
0 X 收到从字节。
0010
0
放弃失败的传输。
1 X 试图发送重复起始条件时竞争
失败。
重新启动失败的传输。
0
0 X
—
1
0 X
1110
0001
0
放弃失败的传输。
1 X 由于探测到停止条件,因此在
竞争中失败。
重新启动失败的传输。
0
0 X
—
1
0 X
1110
0000
0
放弃失败的传输。
1 X 作为主设备发送数据字节时竞
争失败。
重新启动失败的传输。
0
0 X
—
1
0 X
1110
Rev. 1.0
200
C8051F80x-83x
201
Rev. 1.0
C8051F80x-83x
27. UART0
UART0 是一个异步、全双工串口,提供标准 8051 UART 的模式 1 和 3。 UART0 具有增强型波特率发生器
电路,有多个时钟源可用于产生标准波特率。(详情请参见本页“27.1. 增强型波特率发生器”一条)。接收数
据缓冲机制允许 UART0 在软件完成读取前一个数据字节之前开始接收第二个传入的数据字节。
UART0 有两个相关的 SFR:串行控制寄存器 0 (SCON0) 和串行数据缓冲器 0 (SBUF0)。用同一个 SBUF0
地址可访问发送寄存器和接收寄存器。写 SBUF0 时通常访问发送寄存器。读 SBUF0 时通常访问缓冲的接
收寄存器;不可能从发送寄存器读取数据。
如 UART0 中断被允许,则每次发送完成(SCON0 中的 TI0 被设置)或接收到数据字节(SCON0 中的 RI0
被设置)时会产生一个中断。当 CPU 转向中断服务程序时,硬件不清除 UART0 中断标志。中断标志必须
用软件手动清除,这就允许软件查询 UART0 中断的原因 (发送完成或接收完成)。
SFR 总线
写
SBUF
TB8
SBUF
(TX 移位)
设置
D
Q
TX
CLR
交叉开关
零探测器
停止位
移位
开始
数据
Tx 控制
Tx 时钟
发送
Tx IRQ
SCON
TI
MCE
REN
TB8
RB8
TI
RI
SMODE
UART 波特率
发生器
串行
端口
中断
端口 I/O
RI
Rx IRQ
Rx 时钟
Rx 控制
开始
移位
0x1FF
装载
SBUF
RB8
输入移位寄存器
(9 位)
装载 SBUF
SBUF
(RX 锁存)
读
SBUF
SFR 总线
RX
交叉开关
图 27.1. UART0 结构图
Rev. 1.0
201
C8051F80x-83x
27.1. 增强型波特率发生器
UART0 波特率由定时器 1 在 8 位自动重装载的模式下产生。 TX 时钟由 TL1 产生;RX 时钟由 TL1 的拷贝
寄存器(图 27.2 所示的 RX 定时器)产生,该寄存器不被用户访问。TX 和 RX 定时器溢出信号经过二分频
后用于产生 TX 和 RX 波特率。定时器 1 被启用时,RX 定时器运行并使用相同的重载值 (TH1)。而当 RX 针
脚上探测到起始条件时, RX 定时器被强制重载。这允许在探测到起始条件时开始接收过程,而与 TX 定时
器的状态无关。
定时器 1
TL1
UART
溢出
2
TX 时钟
2
RX 时钟
TH1
探测到
起始位
RX 定时器
溢出
图 27.2. UART0 波特率逻辑
定时器 1 应被配置为模式 2,即 8 位自动重装载模式 (请参见第 210 页“28.1.3. 模式 2:8 位自动重载计数
器/定时器”一条)。定时器 1 的重载值应被设置,以使溢出频率为所期望的 UART 波特率频率的两倍。请注
意,定时器 1 的时钟可在下列六个时钟源中选择:SYSCLK、 SYSCLK/4、 SYSCLK/12、 SYSCLK/48、外
部振荡器时钟/8 或外部输入 T1。就任何给定的定时器 1 时钟源而言, UART0 波特率由方程 27.1-A 和方程
27.1-B 决定。
A)
B)
1
UartBaudRate = --- × T1溢出率
T1_Overflow_Rate
Uart波特率
2
T1 CLK
T1_Overflow_Rate = -------------------------T1溢出率
256 – TH1
方程 27.1:UART0 波特率
其中 T1CLK 是定时器 1 的时钟频率,而 T1H 是定时器 1 的高字节 (重载值)。定时器 1 时钟频率的选择方
法见第 207 页“28. 定时器”一条。表 27.1 至 27.2 载列了典型波特率和系统时钟频率的快速对照表。在外部
振荡器驱动定时器 1 时,内部振荡器仍可产生系统时钟。
202
Rev. 1.0
C8051F80x-83x
27.2. 操作模式
UART0 提供标准的异步、全双工通信。 UART 模式 (8 位或 9 位)通过 S0MODE 位 (SCON0.7) 来选择。
图 27.3 展示了典型的 UART 连接选项。
TX
RS-232
RS-232
电平转换器
C8051xxxx
RX
或
TX
TX
RX
RX
MCU
C8051xxxx
图 27.3. UART 互连图
27.2.1. 8 位 UART
在 8 位 UART 模式下,每个数据字节共使用 10 位:一个起始位、八个数据位 (LSB 在先)和一个停止位。
数据 (LSB 在先)从 TX0 针脚发送,在 RX0 针脚接收。接收时,八个数据位存入 SBUF0,停止位进入
RB80 (SCON0.2)。
当软件向 SBUF0 寄存器写入一个数据字节时,数据传输开始。在数据传输结束时 (停止位开始), TI0 发
送中断标志 (SCON0.1) 被设置。REN0 接收允许位 (SCON0.4) 设置为逻辑 1 之后,数据接收便可开始。收
到停止位后,如满足下列条件,则数据字节将载入 SBUF0 接收寄存器:RI0 须为逻辑 0,如 MCE0 为逻辑
1,则停止位须为逻辑 1。在接收数据溢出的情况下,先接收到的 8 位数据将被锁存到 SBUF0 接收寄存器,
而后面溢出的数据位则被丢弃。
如满足这些条件,则八位数据将被存入 SBUF0,停止位被存入 RB80, RI0 标志被设置。如不满足这些条
件,则不装入 SBUF0 和 RB80, RI0 标志也不会被设置。如中断被允许,则在 TI0 或 RI0 被设置时将产生
一个中断。
MARK
起始位
D0
D1
D2
D3
D4
SPACE
D5
D6
D7
停止位
位时间
位采样
图 27.4. 8 位 UART 定时图
Rev. 1.0
203
C8051F80x-83x
27.2.2. 9 位 UART
在 9 位 UART 模式下,每个数据字节共使用十一位:一个起始位、 8 个数据位 (LSB 在先)、一个可编程
的第九位和一个停止位。第九发送数据位由 TB80 (SCON0.3) 中的值决定,由用户软件赋值。可被赋值为寄
存 器 PSW 中 的 奇 偶 位 P (用 于 错 误 探 测) ,或 用 于 多 处 理 器 通 信。接 收 时,第 九 位 数 据 进 入 RB80
(SCON0.2),停止位被忽略。
当软件向 SBUF0 寄存器写入一个数据字节的指令时,数据传输开始。在数据传输结束时 (停止位开始),
TI0 发送中断标志 (SCON0.1) 被设置。 REN0 接收允许位 (SCON0.4) 设置为 1 之后,数据接收便可开始。
收到停止位后,如满足下列条件,则数据字节将载入 SBUF0 接收寄存器:(1) RI0 须为逻辑 0,(2) 如 MCE0
为逻辑 1,则第九位须为逻辑 1 (MCE0 为逻辑 0 时,第九位数据的状态并不重要)。如满足这些条件,则
八位数据将被存入 SBUF0,第九位被存入 RB80,RI0 标志设置为 1。如不满足这些条件,则不装入 SBUF0
和 RB80,RI0 标志也不会设置为 1。如 UART0 中断被允许,则在 TI0 或 RI0 设置为 1 时将产生一个中断。
MARK
起始位
D0
D1
D2
D3
D4
D5
SPACE
位时间
位采样
图 27.5. 9 位 UART 定时图
204
Rev. 1.0
D6
D7
D8
停止位
C8051F80x-83x
27.3. 多处理器通信
9 位 UART 模式通过第九位数据的特殊使用,支持一个主处理器和一个或多个从处理器之间的多处理器通
信。当主处理器要发送数据至一个或多个从处理器时,首先发送一个用于选择目标的地址字节。地址字节与
数据字节的区别是:地址字节的第九位为逻辑 1;而数据字节的第九位总是设置为逻辑 0。
将从处理器的 MCE0 位 (SCON0.5) 设置为其 UART,以便在收到停止位且仅在第九位为逻辑 1 (RB80 = 1)
(标志着收到地址字节)时,UART 产生一个中断。在 UART 中断处理程序中,软件将接收到的地址与从处
理器自身配备的 8 位地址进行比较。如地址匹配,则从处理器将清除其 MCE0 位,以允许后面接收数据字
节时产生中断。未被寻址的从处理器仍保持其 MCE0 位的设置,在收到后续的数据字节时不产生中断,从
而忽略收到的数据。一旦接收完整消息,被寻址的从处理器复位其 MCE0 位,以忽略所有数据传输,直至
收到下一个地址字节。
可将多个地址分配给一个从处理器,和/或将一个地址分配给多个从处理器,从而允许同时向多个从处理器"
广播"发送。主处理器可被配置为接收所有传输数据,或通过实现某种协议使主/从角色能临时变换,以允许
原来的主处理器和从处理器之间进行半双工通信。
主设备
从设备
从设备
从设备
V+
RX
TX
RX
TX
RX
TX
RX
TX
图 27.6. UART 多处理器模式互连图
Rev. 1.0
205
C8051F80x-83x
SFR 定义 27.1:SCON0:串行端口 0 控制寄存器
位
7
名称
S0MODE
类型
R/W
复位
0
6
5
4
3
2
1
0
MCE0
REN0
TB80
RB80
TI0
RI0
R
R/W
R/W
R/W
R/W
R/W
R/W
1
0
0
0
0
0
0
SFR 地址 = 0x98;可位寻址
位
名称
7
S0MODE 串行端口 0 操作模式。
功能
选择 UART0 操作模式。
0:波特率可变的 8 位 UART。
1:波特率可变的 9 位 UART。
6
5
未使用
MCE0
读 = 1b,写 = 无需在意。
多处理器通信允许。
此位的功能视串行端口 0 操作模式而定:
模式 0:检查有效停止位。
0:停止位的逻辑电平被忽略。
1:仅在停止位为逻辑电平 1 时 RI0 方被激活。
模式 1:多处理器通信允许。
0:第 9 位的逻辑电平被忽略。
1:仅在第 9 位为逻辑 1 时, RI0 才被设置并产生一个中断。
4
REN0
接收允许。
0:UART0 接收禁用。
1:UART0 接收允许。
3
TB80
第 9 传输位。
此位的逻辑电平将作为第 9 传输位并以 9 位 UART 模式 (模式 1)发送。在 8 位模式
中未使用 (模式 0)。
2
RB80
第 9 接收位。
在模式 0 下, RB80 被赋予停止位值;在模式 1 下,被赋予第 9 数据位值。
1
TI0
传输中断标志。
当 UART0 传输一个字节数据后,此位被硬件设置 (在 8 位 UART 模式下,是在传输
第 8 位以后,或在 9 位 UART 模式下,是在停止位开始时)。当 UART0 中断被允许
时,设置此位会导致 CPU 转至 UART0 中断服务程序。此位必须用软件手动清除。
0
RI0
接收中断标志。
当 UART0 接收到一个字节数据时,此位被硬件设置为 1 (设置于停止位采样时)。当
UART0 中断被允许时,将此位设置为 1 会导致 CPU 转至 UART0 中断服务程序。此位
必须用软件手动清除。
206
Rev. 1.0
C8051F80x-83x
SFR 定义 27.2:SBUF0:串行 (UART0) 端口数据缓冲器
位
7
6
5
4
3
名称
SBUF0[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0x99
位
名称
7:0 SBUF0[7:0] 串行数据缓冲器位 7-0 (MSB-LSB)。
2
1
0
0
0
0
功能
SFR 访问两个寄存器;发送移位寄存器和接收锁存寄存器。当数据被写入 SBUF0
时,数据会进入发送移位寄存器,等待串行传输。向 SBUF0 写入一个字节即启动传
输过程。读 SBUF0 时返回接收锁存器的内容。
Rev. 1.0
207
C8051F80x-83x
表 27.1:使用内部 24.5 MHz振荡器进行标准波特率的定时器设置
SYSCLK 源自
内部振荡器
频率:24.5 MHz
目标波特率
(bps)
波特率误差
(%)
振荡器分
频系数
定时器时钟源
230400
–0.32%
106
SYSCLK
115200
–0.32%
212
SYSCLK
XX
1
0x96
57600
0.15%
426
SYSCLK
XX
1
0x2B
28800
–0.32%
848
SYSCLK/4
01
0
0x96
14400
0.15%
1704
SYSCLK/12
00
0
0xB9
9600
–0.32%
2544
SYSCLK/12
00
0
0x96
2400
–0.32%
10176
SYSCLK/48
10
0
0x96
1200
0.15%
20448
SYSCLK/48
10
0
0x2B
SCA1-SCA0
(预分频选择) 1
XX2
T1M1 定时器 1 重
载值 (十六
进制)
1
0xCB
附注:
1. SCA1-SCA0 和 T1M 位的定义见第 28.1 条。
2. X = 无需在意。
表 27.2:使用外部 22.1184 MHz振荡器进行标准波特率的定时器设置
SYSCLK 源自
内部振荡器
SYSCLK 源自
外部振荡器
频率:22.1184 MHz
目标波特率
(bps)
波特率误差
(%)
振荡器分
频系数
定时器时钟
源
(预分频选择) 1
230400
0.00%
96
SYSCLK
XX2
115200
0.00%
192
SYSCLK
XX
1
0xA0
57600
0.00%
384
SYSCLK
XX
1
0x40
28800
0.00%
768
SYSCLK / 12
00
0
0xE0
14400
0.00%
1536
SYSCLK / 12
00
0
0xC0
9600
0.00%
2304
SYSCLK / 12
00
0
0xA0
2400
0.00%
9216
SYSCLK / 48
10
0
0xA0
1200
0.00%
18432
SYSCLK / 48
10
0
0x40
230400
0.00%
96
EXTCLK / 8
11
0
0xFA
115200
0.00%
192
EXTCLK / 8
11
0
0xF4
57600
0.00%
384
EXTCLK / 8
11
0
0xE8
28800
0.00%
768
EXTCLK / 8
11
0
0xD0
14400
0.00%
1536
EXTCLK / 8
11
0
0xA0
9600
0.00%
2304
EXTCLK / 8
11
0
0x70
附注:
1. SCA1-SCA0 和 T1M 位的定义见第 28.1 条。
2. X = 无需在意。
208
Rev. 1.0
SCA1-SCA0
T1M1 定时器 1 重
载值 (十六
进制)
1
0xD0
C8051F80x-83x
28. 定时器
每个 MCU 内部都有三个计数器/定时器:其中两个与标准 8051 中的 16 位计数器/定时器兼容,一个是 16
位自动重载定时器,用于 ADC、 SMBus 或作为通用定时器使用。这些定时器可用于测量时间间隔、对外部
事件计数及生成周期性的中断请求。定时器 0 和定时器 1 几乎完全相同,有四种主要操作模式。定时器 2 具
有 16 位和两个 8 位定时器的功能,并可自动重载。此外,定时器 2 还具有在装置暂停时由外部振荡器定时
的功能,并可用作唤醒源。可借此实现超低能耗系统,包括 RTC 功能。
定时器 0 和定时器 1 模式
13 位计数器/定时器
16 位计数器/定时器
定时器 2 模式
16 位自动重载定时器
8 位自动重载计数器/定时器
两个 8 位计数器/定时器 (仅限定
时器 0)
两个 8 位自动重载定时器
定时器 0 和 1 有五个可选的时钟源,由定时器模式选择位 (T1M- T0M) 和时钟分频位 (SCA1-SCA0) 确定。
时钟分频位定义一个预分频时钟,作为定时器 0 和/或定时器 1 的时钟源 (请参见 SFR 定义 28.1,了解预
分频时钟选择)。
定时器 0/1 可经配置使用此预分频时钟信号或系统时钟。定时器 2 可使用系统时钟、系统时钟/12 或外部振
荡器时钟/8 作为时钟源。
定时器 0 和定时器 1 还可用作计数器。如用作计数器,则每当所选输入针脚(T0 或 T1)出现负跳变时,计
数器/定时器寄存器的值加 1。对事件计数的最大频率可达到系统时钟频率的四分之一。输入信号无需具周期
性,但在给定电平上保持的时间至少应为两个完整系统时钟周期,以确保电平能够被正确采样。
Rev. 1.0
209
C8051F80x-83x
SFR 定义 28.1:CKCON:时钟控制寄存器
位
7
6
名称
5
4
3
2
T2MH
T2ML
T1M
T0M
SCA[1:0]
R/W
类型
R
R
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
SFR 地址 = 0x8E
位
名称
7:6
未使用 读 = 0b;写 = 无需在意
1
0
0
0
功能
5
T2MH
定时器 2 高字节时钟选择。
选择供给定时器 2 高字节的时钟 (仅在两个 8 位定时器模式下)。
0:定时器 2 高字节使用 TMR2CN 中 T2XCLK 位定义的时钟。
1:定时器 2 高字节使用系统时钟。
4
T2ML
定时器 2 低字节时钟选择。
选择供给定时器 2 的时钟。如果定时器 2 被配置为两个 8 位定时器模式,则此位选择供
给低 8 位定时器的时钟。
0:定时器 2 低字节使用 TMR2CN 中 T2XCLK 位定义的时钟。
1:定时器 2 低字节使用系统时钟。
3
T1
定时器 1 时钟选择。
选择供给定时器 1 的时钟源。当 C/T1 被设置为 1 时忽略。
0:定时器 1 使用预分频位 SCA[1:0] 定义的时钟。
1:定时器 1 使用系统时钟。
2
T0
定时器 0 时钟选择。
选择供给定时器 0 的时钟源。当 C/T0 被设置为 1 时忽略。
0:计数器/定时器 0 使用预分频位 SCA[1:0] 定义的时钟。
1:计数器/定时器 0 使用系统时钟。
1:0
210
SCA[1:0] 定时器 0/1 预分频位。
这些位控制定时器 0/1 时钟预分频数:
00:系统时钟/12
01:系统时钟/4
10:系统时钟/48
11:外部时钟/8 (与系统时钟同步)
Rev. 1.0
C8051F80x-83x
28.1. 定时器 0 和定时器 1
每个定时器都用作一个 16 位的寄存器,在被访问时以两个单独字节的形式出现:一个低字节(TL0 或 TL1)
和一个高字节 (TH0 或 TH1),计数器/定时器控制寄存器 (TCON) 用于允许定时器 0 和定时器 1 以及指示
状态。可通过设置 IE 寄存器中的 ET0 位允许定时器 0 中断 (第 104 页“18.2 中断寄存器说明”);通过设
置 IE 寄存器中的 ET1 位允许定时器 1 中断(第 104 页“18.2 中断寄存器说明”). 这两个计数器/定时器都有
四种主要模式,通过设置计数器/定时器模式寄存器 (TMOD) 中的模式选位 T1M1-T0M0 来选择。每个定时
器均可独立配置。下面对每种操作模式进行说明。
28.1.1. 模式 0:13 位计数器/定时器
在模式 0 下,定时器 0 和定时器 1 用作 13 位计数器/定时器。下面介绍了定时器 0 的配置和操作。但由于
这两个定时器在操作上完全相同,定时器 1 的配置方法与定时器 0 一样。
TH0 寄存器保持 13 位计数器/定时器的 8 个 MSB。TL0 在 TL0.4-TL0.0 位位置保持五个 LSB。TL0 的高 3
位 (TL0.7-TL0.5) 是不确定的,在读取时应屏蔽掉或忽略这 3 位。当 13 位定时器寄存器增加并从 0x1FFF
(全 1)溢出到 0x0000 时,会在 TCON 设置定时器溢出标志 TF0,并且如果定时器 0 中断允许,会产生一
个中断。
TMOD 寄存器中的 C/T0 位选择计数器/定时器的时钟源。当 C/T0 被设置为逻辑 1 时,出现在所选定时器 0
输入针脚 (T0) 上的负跳变使定时器寄存器加 1 (请参阅第 142 页“23.3. 优先级交叉开关编码器”,了解关于
选择和配置外部 I/O 针脚的信息)。清除 C/T 将选择由 CKCON 寄存器中 T0M 位定义的时钟。当 T0M 被设
置时,定时器 0 的时钟源为系统时钟; 当 T0M 位被清除时,定时器 0 的时钟源由 CKCON (请参见 SFR
定义 28.1)中的时钟分频位定义。
当 TMOD 寄存器中的 GATE0 为逻辑 0 或输入信号 INT0 有效时 (有效电平由 IT01CF 寄存器中的 IN0PL
位定义,请参见 SFR 定义 18.7),设置 TR0 位 (TCON.4) 将启动定时器。将 GATE0 设置为 1 将允许定时
器受外部输入信号 INT0 的控制 (请参见第 104 页"18.2. 中断寄存器说明"),便于脉冲宽度测量。
TR0
GATE0
INT0
计数器/定时器
0
X
X
禁用
1
0
X
允许
1
1
0
禁用
1
1
1
允许
附注: X = 无需在意
设置 TR0 并不强制定时器复位。应在定时器被允许前将所需要的初值载入定时器寄存器。
TL1 和 TH1 构成定时器 1 的 13 位寄存器的方式与上述的 TL0 和 TH0 相同。定时器 1 的配置和控制方法与
定时器 0 一样,使用对应的 TCON 和 TMOD 位。输入信号 INT1 为定时器 1 所用,INT1 的极性由 IT01CF
寄存器中的 IN1PL 位定义 (请参见 SFR 定义 18.7)。
Rev. 1.0
211
C8051F80x-83x
TMOD
G
A
T
E
1
T0M
预分频时钟
C
/
T
1
T
1
M
1
T
1
M
0
G
A
T
E
0
C
/
T
0
IT01CF
T
0
M
1
T
0
M
0
I
N
1
P
L
I
N
1
S
L
2
I
N
1
S
L
1
I
N
1
S
L
0
I
N
0
P
L
I
N
0
S
L
2
I
N
0
S
L
1
I
N
0
S
L
0
0
0
SYSCLK
1
1
TCLK
TR0
TL0
(5 位)
GATE0
交叉开关
INT0
IN0PL
TH0
(8 位)
TCON
T0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
中断
XOR
图 28.1. T0 模式 0 结构图
28.1.2. 模式 1:16 位计数器/定时器
模式 1 的操作与模式 0 相同,只是计数器/定时器寄存器使用全部 16 位。在模式 1 下允许和控制计数器/定
时器的方法与模式 0 相同。
28.1.3. 模式 2:8 位自动重载计数器/定时器
模式 2 将定时器 0 和定时器 1 配置为具有自动重载初值功能的 8 位计数器/定时器。 TL0 保持计数值,而
TH0 保持重载值。当 TL0 中的计数值从全 1 溢出到 0x00 时, TCON 寄存器中的定时器溢出标志 TF0 被设
置,TH0 中的计数值被重新载入到 TL0。如果定时器 0 中断被允许,在 TF0 标识被设置时将产生一个中断。
TH0 中的重载值保持不变。为了保证第一次计数正确,必须在允许定时器之前将 TL0 初始化为所需初值。
当在模式 2 下时,定时器 1 的操作与定时器 0 完全相同。
在模式 2 下,计数器/定时器的允许和配置方法均与模式 0 一样。当 TMOD 寄存器中的 GATE0 为逻辑 0 或
输入信号 INT0 有效时 (有效电平由 IT01CF 寄存器中的 IN0PL 位定义,请参见第 111 页"18.3. INT0 和
INT1 外部中断",了解外部输入信号 INT0 和 INT1 的详情),设置 TR0 位 (TCON.4) 将允许定时器。
212
Rev. 1.0
C8051F80x-83x
TMOD
G
A
T
E
1
T0M
预分频时钟
C
/
T
1
T
1
M
1
T
1
M
0
G
A
T
E
0
C
/
T
0
IT01CF
T
0
M
1
T
0
M
0
I
N
1
P
L
I
N
1
S
L
2
I
N
1
S
L
1
I
N
1
S
L
0
I
N
0
P
L
I
N
0
S
L
2
I
N
0
S
L
1
I
N
0
S
L
0
0
0
SYSCLK
1
1
T0
TL0
(8 位)
TCON
TCLK
TR0
交叉开关
GATE0
TH0
(8 位)
INT0
IN0PL
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
中断
重载
XOR
图 28.2. T0 模式 2 结构图
28.1.4. 模式 3:两个 8 位计数器/定时器 (仅限定时器 0)
在模式 3 下,定时器 0 被配置两个独立的 8 位定时器/计数器,计数值分别在 TL0 和 TH0 中。 TL0 中的计
数器/定时器通过 TCON 和 TMOD 中定时器 0 的控制/状态位受控:TR0、C/T0、GATE0 和 TF0。TL0 既可
以使用系统时钟也可以使用一个外部输入信号作为时基。TH0 寄存器只能作为定时器使用,以系统时钟或预
分频时钟为时钟源。TH0 通过定时器 1 的运行控制位 TR1 被允许。TH0 在发生溢出时会设置定时器 1 的溢
出标志 TF1,从而控制定时器 1 的中断。
定时器 1 在模式 3 下停止运行。当定时器 0 在模式 3 下操作时,定时器 1 可以在模式 0、1 或 2 下操作,但
不能用外部信号作为时钟源,也不能设置 TF1 标志和产生中断。但是,定时器 1 溢出可以用于为其他外围
设备产生波特率或溢出条件。当定时器 0 在模式 3 下操作时,定时器 1 的运行控制通过其模式设置处理。要
在定时器 0 为模式 3 时运行定时器 1,应将定时器 1 的模式设为 0、 1 或 2。可以通过将定时器 1 的模式配
置为 3,禁用定时器 1。
Rev. 1.0
213
C8051F80x-83x
TMOD
G
A
T
E
1
T0M
预分频时钟
C
/
T
1
T
1
M
1
T
1
M
0
G
A
T
E
0
C
/
T
0
T
0
M
1
T
0
M
0
0
TR1
SYSCLK
TH0
(8 位)
1
TCON
0
1
T0
TL0
(8 位)
TR0
交叉开关
INT0
GATE0
IN0PL
XOR
图 28.3. T0 模式 3 结构图
214
Rev. 1.0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
中断
中断
C8051F80x-83x
SFR 定义 28.2:TCON:定时器控制寄存器
位
7
6
5
4
3
2
1
0
名称
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0x88;可位寻址
位
名称
7
TF1
定时器 1 溢出标志。
功能
当定时器 1 溢出时由硬件设置为 1。该标志可通过软件清除,但当 CPU 转至定时器 1
中断服务程序时,该标志被自动清除。
6
TR1
定时器 1 运行控制。
通过将此位设置为 1 允许定时器 1。
5
TF0
定时器 0 溢出标志。
当定时器 0 溢出时由硬件设置为 1。该标志可通过软件清除,但当 CPU 转至定时器 0
中断服务程序时,该标志被自动清除。
4
TR0
3
IE1
定时器 0 运行控制。
通过将此位设置为 1 允许定时器 0。
外部中断 1。
当检测到一个由 IT1 定义的类型边沿/电平时,该标志由硬件设置。该标志可通过
软件清除,但当在边缘触发模式下 CPU 转至外部中断 1 服务程序时,该标志被自动
清除。
2
IT1
中断 1 类型选择。
此位选择配置 /INT1 中断是边缘触发还是电平触发。可以用 IT01CF 寄存器中的
IN1PL 位将 /INT1 配置为低电平有效或高电平有效 (请参见 SFR 定义 18.7)。
0:/INT1 为电平触发。
1:/INT1 为边缘触发。
1
IE0
外部中断 0。
当检测到一个由 IT1 定义的类型边沿/电平时,该标志由硬件设置。该标志可通过
软件清除,但当在边缘触发模式下 CPU 转至外部中断 0 服务程序时,该标志被自动
清除。
0
IT0
中断 0 类型选择。
此位选择配置 INT0 中断是边缘触发还是电平触发。
可以用 IT01CF 寄存器中的 IN0PL 位将 INT0 配置为低电平有效或高电平有效 (请参
见 SFR 定义 18.7)。
0:INT0 为电平触发。
1:INT0 为边缘触发。
Rev. 1.0
215
C8051F80x-83x
SFR 定义 28.3:TMOD:定时器模式
位
7
6
名称
GATE1
C/T1
类型
R/W
R/W
复位
0
0
SFR 地址 = 0x89
位
名称
7
GATE1
5
4
3
2
T1M[1:0]
GATE0
C/T0
T0M[1:0]
R/W
R/W
R/W
R/W
0
0
0
0
1
0
0
0
功能
定时器 1 门控制。
0:当 TR1 = 1 时定时器 1 允许,与 INT1 的逻辑电平无关。
1:仅当 TR1 = 1 并且 INT1 有效 (有效电平由 IT01CF 寄存器中的 IN1PL 位定义,
请参见 SFR 定义 18.7)时,定时器 1 才被允许。
6
C/T1
计数器/定时器 1 选择。
0:定时器:定时器 1 由 CKCON 寄存器中的 T1M 位定义的时钟加 1。
1:计数器:定时器 1 由外部针脚 (T1) 的负变跳加 1。
5:4
T1M[1:0]
定时器 1 模式选择。
这些位选择定时器 1 的操作模式。
00:模式 0, 13 位计数器/定时器
01:模式 1, 16 位计数器/定时器
10:模式2, 8 位自动重载计数器/定时器
11:模式 3,定时器 1 停止运行
3
GATE0
定时器 0 门控制。
0:当 TR0 = 1 时定时器 0 被允许,与 INT0 的逻辑电平无关。
1:仅当 TR0 = 1 并且 INT0 有效 (有效电平由 IT01CF 寄存器中的 IN0PL 位定义,
请参见 SFR 定义 18.7)时,定时器 0 才被允许。
2
C/T0
计数器/定时器 0 选择。
0:定时器:定时器 0 由 CKCON 寄存器中的 T0M 位定义的时钟加 1。
1:计数器:定时器 0 由外部针脚 (T0) 的负变跳加 1。
1:0
T0M[1:0]
定时器 0 模式选择。
这些位选择定时器 0 的操作模式。
00:模式 0, 13 位计数器/定时器
01:模式 1, 16 位计数器/定时器
10:模式2, 8 位自动重载计数器/定时器
11:模式 3,两个 8 位计数器/定时器
216
Rev. 1.0
C8051F80x-83x
SFR 定义 28.4:TL0:定时器 0 低字节寄存器
位
7
6
5
4
名称
TL0[7:0]
类型
R/W
复位
0
SFR 地址 = 0x8A
位
名称
7:0
TL0[7:0]
0
0
0
3
2
1
0
0
0
0
0
3
2
1
0
0
0
0
0
功能
定时器 0 低字节寄存器。
TL0 寄存器是 16 位定时器 0 的低字节寄存器。
SFR 定义 28.5:TL1:定时器 1 低字节寄存器
位
7
6
5
4
名称
TL1[7:0]
类型
R/W
复位
0
SFR 地址 = 0x8B
位
名称
7:0
TL1[7:0]
0
0
0
功能
定时器 1 低字节寄存器。
TL1 寄存器是 16 位定时器 1 的低字节寄存器。
Rev. 1.0
217
C8051F80x-83x
SFR 定义 28.6:TH0:定时器 0 高字节寄存器
位
7
6
5
4
名称
TH0[7:0]
类型
R/W
复位
0
SFR 地址 = 0x8C
位
名称
7:0
TH0[7:0]
0
0
0
3
2
1
0
0
0
0
0
3
2
1
0
0
0
0
0
功能
定时器 0 高字节寄存器。
TL0 寄存器是 16 位定时器 0 的高字节寄存器。
SFR 定义 28.7:TH1:定时器 1 高字节寄存器
位
7
6
5
4
名称
TH1[7:0]
类型
R/W
复位
0
SFR 地址 = 0x8D
位
名称
7:0
TH1[7:0]
0
0
0
功能
定时器 1 高字节寄存器。
TL1 寄存器是 16 位定时器 1 的高字节寄存器。
218
Rev. 1.0
C8051F80x-83x
28.2. 定时器 2
定时器 2 是一个 16 位定时器,由两个 8 位 SFR 组成:TMR2L (低字节)和 TMR2H (高字节)。定时器
2 可以在 16 位自动重载模式下或(两个)8 位自动重载模式下操作。T2SPLIT 位 (TMR2CN.3) 定义定时器
2 的操作模式。定时器 2 还可被用于捕捉模式,捕捉比较器 0 输出的上升沿。
定时器 2 的时钟源可以是系统时钟、系统时钟/12 或外部振荡源/8。外部时钟模式非常适合实时时钟 (RTC)
功能,其中由内部振荡源驱动系统时钟,而定时器 2 (和/或 PCA)以外部振荡源为时钟源。在所有操作模
式下(暂停模式除外),外部振荡源/8 均与系统时钟同步。当内部振荡源被置为暂停模式时,外部时钟/8 的
信号可以直接驱动定时器。可以使用外部时钟将装置从暂停模式下唤醒。定时器将继续在暂停模式下运行并
计数。当定时器发生溢出时,装置将从暂停模式中醒来,并重新开始执行代码。可在输入暂停前设置定时器
值,从而在所需时间段 (时钟数)溢出以唤醒装置。如果定时器以外的唤醒源将装置从暂停模式中唤醒,则
可能要用 3 个定时器方可读取或写入定时器寄存器。在此期间,OSCICN 寄存器中的 STSYNC 位将被设置
为 1,表明读取或写入定时器寄存器不安全。
28.2.1. 16 位自动重载定时器
当 T2SPLIT (TMR2CN.3) 为 0 时,定时器 2 作为 16 位自动重载定时器操作。定时器 2 可以 SYSCLK、
SYSCLK/12 或外部振荡器时钟源/8 为时钟源。当 16 位定时器寄存器增值并从 0xFFFF 溢出到 0x0000 时,
定时器 2 重载寄存器(TMR2RLH 和 TMR2RLL)中的 16 位值被载入定时器 2 寄存器(如图 28.4 所示),
并且定时器 2 高字节溢出标志 (TMR2CN.7) 被设置。如果定时器 2 中断被允许 (如已设置 IE.5),则每次
定 时 器 2 溢 出 时 均 将 产 生 一 个 中 断。此 外,如 果 定 时 器 2 中 断 被 允 许,并 且 TF2LEN 位 被 设 置
(TMR2CN.5),则每次低 8 位 (TMR2L) 从 0xFF 溢出到 0x00 时将产生一个中断。
CKCON
T2XCLK
SYSCLK / 12
T T T T T T S
3 3 2 2 1 0 C
MMMMMMA
H LH L
1
S
C
A
0
至 ADC、
SMBus
至 SMBus
0
TL2 溢出
0
SYSCLK
TR2
1
TCLK
TMR2L
TMR2H
TMR2CN
外部时钟 / 8
1
TF2H
TF2L
TF2LEN
TF2CEN
T2SPLIT
TR2
中断
T2XCLK
TMR2RLL TMR2RLH
重载
图 28.4. 定时器 2 16 位模式结构图
Rev. 1.0
219
C8051F80x-83x
28.2.2. 8 位自动重载定时器
当 T2SPLIT 被设置时,定时器 2 作为两个 8 位定时器 (TMR2H 及 TMR2L)操作。这两个 8 位定时器都
在自动重载模式下操作(如图 28.5 所示)。TMR2RLL 保持 TMR2L 的重载值,TMR2RLH 保持 TMR2H 的
重载值。 TMR2CN 中的 TR2 位处理 TMR2H 的运行控制。当配置为 8 位模式时, TMR2L 总是处于运行状
态。定时器 2 还可被用于捕捉模式,捕捉比较器 0 输出的上升沿。
每个 8 位定时器都可以被配置为使用 SYSCLK、SYSCLK/12 或外部振荡器时钟源/8 作为其时钟源。定时器
2 时钟选择位(CKCON 中的 T2MH 和 T2ML)选择 SYSCLK 或由定时器 2 外部时钟选择位(TMR2CN 中
的 T2XCLK)定义的时钟,如下所示:
T2MH
T2XCLK
0
0
0
1
1
X
TMR2H 时钟源
TMR2L 时钟源
T2ML
T2XCLK
SYSCLK / 12
0
0
SYSCLK / 12
外部时钟/8
SYSCLK
0
1
1
X
外部时钟/8
SYSCLK
当 TMR2H 从 0xFF 溢出到 0x00 时, TF2H 位被设置;当 TMR2L 从 0xFF 溢出到 0x00 时, TF2L 位被设
置。如果定时器 2 中断被允许 (IE.5),则每次 TMR2H 溢出时都将产生一个中断。如果定时器 2 中断被允许
并且 TF2LEN (TMR2CN.5) 被设置,则每次 TMR2L 或 TMR2H 发生溢出时将产生一个中断。当 TF2LEN 位
被允许时,软件应检查 TF2H 和 TF2L 标志,以确定定时器 2 中断的来源。 TF2H 和 TF2L 中断标志不能由
硬件自动清除,必须通过软件手动清除。
CKCON
T T T T T T S
3 3 2 2 1 0 C
MMMMMM A
H L H L
1
T2XCLK
SYSCLK / 12
0
外部时钟 / 8
1
S
C
A
0
TMR2RLH
重载
至 SMBus
0
TCLK
TR2
TMR2H
TMR2RLL
重载
SYSCLK
TMR2CN
1
TF2H
TF2L
TF2LEN
TF2CEN
T2SPLIT
TR2
T2XCLK
1
TCLK
TMR2L
0
图 28.5. 定时器 2 8 位模式结构图
220
Rev. 1.0
至 ADC 、
SMBus
中断
C8051F80x-83x
28.2.3. 比较器 0 捕捉模式
定时器 2 的捕捉模式允许使用以系统时钟或系统时钟/12 作为时钟源的定时器捕捉比较器 0 上升沿。通过将
TF2CEN 设置为 1 并将 T2SPLIT 设置为 0 允许定时器 2 捕捉模式。
允许捕捉模式后,每个比较器 0 上升沿均会产生一个捕捉事件。当捕捉事件发生时,定时器 2 的内容
(TMR2H:TMR2L) 会载入定时器 2 重载寄存器 (TMR2RLH:TMR2RLL),并且 TF2H 标志将被设置 (如果定
时器 2 中断被允许,则会触发一个中断)。通过记录两个连续定时器捕捉值的差异,可以确定比较器 0 的周
期 (相对于定时器 2 时钟)。为获得精确的读数,定时器 2 时钟必须远快于捕捉时钟。
这种模式允许软件确定连续比较器 0 上升沿间的时间,上升沿可用于检查电容开关的容量变化,或测量低电
平模拟信号的频率。
T2XCLK
SYSCLK / 12
0
外部时钟 / 8
1
CKCON
T T T T T TS
3 3 2 2 1 0C
MMMMMM A
HLHL
1
S
C
A
0
0
TR2
比较器 0 输出
TMR2L
TMR2H
捕捉
1
TF2CEN
TMR2RLL TMR2RLH
TMR2CN
SYSCLK
TCLK
TF2H
TF2L
TF2LEN
TF2CEN
T2SPLIT
TR2
中断
T2XCLK
图 28.6. 定时器 2 捕捉模式结构图
Rev. 1.0
221
C8051F80x-83x
SFR 定义 28.8:TMR2CN:定时器 2 控制寄存器
位
7
6
5
4
3
2
名称
TF2H
TF2L
TF2LEN
TF2CEN
T2SPLIT
TR2
类型
R/W
R/W
R/W
R/W
R/W
R/W
R
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xC8;可位寻址
位
名称
7
TF2H
定时器 2 高字节溢出标志。
1
0
T2XCLK
功能
当定时器 2 高字节从 0xFF 溢出到 0x00 时由硬件设置。在 16 位模式下,当定时器 2
从 0xFFFF 溢出到 0x0000 时发生上述情况。当启用定时器 2 中断时,设置此位会导
致 CPU 转至定时器 2 中断服务程序。此位不能由硬件自动清除。
6
TF2L
定时器 2 低字节溢出标志。
当定时器 2 低字节从 0xFF 溢出到 0x00 时由硬件设置。 TF2L 在低字节溢出时被设
置,与定时器 2 的模式无关。此位不能由硬件自动清除。
5
TF2LEN
定时器 2 低字节中断允许。
当此位被设置为 1 时,允许定时器 2 低字节中断。如同时还允许定时器 2 中断,则当
定时器 2 低字节发生溢出时产生一个中断。
4
TF2CEN
定时器 2 比较器捕捉允许。
当此位被设置为 1 时,允许定时器 2 比较器捕捉模式。如 TF2CEN 被设置于比较器 0
输出的上升沿,则 TMR2H:TMR2L 中的当前 16 位定时器值将被复制到
TMR2RLH:TMR2RLL 中。如定时器 2 中断也被允许,此事件发生时将生产一个
中断。
3
T2SPLIT
定时器 2 双 8 位模式允许。
当此位被设置时,定时器 2 作为两个 8 位自动重载定时器操作。
0:定时器 2 在 16 位自动重载模式下操作。
1:定时器 2 作为两个 8 位自动重载定时器操作。
2
TR2
定时器 2 运行控制。
定时器 2 通过将此位设置为 1 被允许。在 8 位模式下,此位仅允许/禁用 TMR2H;在
双模式下, TMR2L 始终被允许。
1
0
未使用
T2XCLK
读 = 0b;写 = 无需在意。
定时器 2 外部时钟选择。
此位为定时器 2 选择外部时钟源。如果定时器 2 在 8 位模式下,此位为两个定时器字
节选择外部振荡器时钟源。但仍可用定时器 2 时钟选择位 (CKCON 寄存器中的
T2MH 和 T2ML)为任一定时器在外部时钟和系统时钟之间作出选择。
0:系统时钟/12。
1:外部时钟/8 (未暂停时与 SYSCLK 同步)。
222
Rev. 1.0
C8051F80x-83x
SFR 定义 28.9:TMR2RLL:定时器 2 重载寄存器低字节
位
7
6
5
4
3
名称
TMR2RLL[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xCA
位
名称
7:0 TMR2RLL[7:0] 定时器 2 重载寄存器低字节。
2
1
0
0
0
0
2
1
0
0
0
0
功能
TMR2RLL 保持定时器 2 重载值的低字节。
SFR 定义 28.10:TMR2RLH:定时器 2 重载寄存器高字节
位
7
6
5
4
3
名称
TMR2RLH[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xCB
位
名称
7:0 TMR2RLH[7:0] 定时器 2 重载寄存器高字节。
功能
TMR2RLH 保持定时器 2 重载值的高字节。
Rev. 1.0
223
C8051F80x-83x
SFR 定义 28.11:TMR2L:定时器 2 低字节寄存器
位
7
6
5
4
3
名称
TMR2L[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xCC
位
名称
7:0 TMR2L[7:0] 定时器 2 低字节寄存器。
2
1
0
0
0
0
功能
在 16 位模式下, TMR2L 寄存器保持 16 位定时器 2 的低字节。在 8 位模式下,
TMR2L 中保持 8 位低字节定时器值。
SFR 定义 28.12:TMR2H 定时器 2 高字节寄存器
位
7
6
5
4
3
名称
TMR2H[7:0]
类型
R/W
复位
0
0
0
0
SFR 地址 = 0xCD
位
名称
7:0 TMR2H[7:0] 定时器 2 低字节寄存器。
0
2
1
0
0
0
0
功能
在 16 位模式下, TMR2H 寄存器保持 16 位定时器 2 的高字节。在 8 位模式下,
TMR2H 中保持 8 位高字节定时器值。
224
Rev. 1.0
C8051F80x-83x
29. 可编程计数器阵列
可编程计数器阵列 (PCA0) 提供增强型定时器功能,与标准 8051 的计数器/定时器相比,它需要较少的 CPU
干预。 PCA 由一个专用的 16 位计数器/定时器和 3 个 16 位捕捉/比较模块组成。每个捕捉/比较模块都有其
自己相关的 I/O 线 (CEXn),这些 I/O 线在被允许时可通过交叉开关连到端口 I/O。计数器/定时器由一个可编
程的时基驱动,时基可以在六个时钟源中选择:系统时钟、系统时钟/4、系统时钟/12、外部振荡器时钟源
/8、定时器 0 溢出或 ECI 输入针脚上的外部时钟信号。每个捕捉/比较模块均可配置为以六种模式中的一种
独立操作:边沿触发捕捉、软件定时器、高速输出、频率输出、 8 至 15 位 PWM 或 16 位 PWM (请参见第
228 页"29.3. 捕捉/比较模块",了解每种模式的详情)。外部振荡器时钟选项非常适合实时时钟 (RTC) 功能,
这一功能允许 PCA 以精确外部振荡器为时钟源,而由内部振荡器驱动系统时钟。对 PCA 的配置和控制是通
过系统控制器的特殊功能寄存器来实现的。 PCA 的结构图示于图 29.1
重要事项:PCA 模块 2 可被用作看门狗 (WDT),在系统复位后即被允许为此模式。在 WDT 模式被允许时,
对某些 PCA 寄存器的访问受到限制。详见第 29.4 条。
SYSCLK/12
SYSCLK/4
定时器 0 溢出
ECI
PCA
时钟
复用
16 位计数器/定时器
SYSCLK
外部时钟/8
捕捉/比较模块 0
捕捉/比较模块 1
捕捉/比较模块 2 /
WDT
CEX2
CEX1
CEX0
ECI
交叉开关
端口 I/O
图 29.1. PCA 结构图
Rev. 1.0
225
C8051F80x-83x
29.1. PCA 计数器/定时器
16 位的 PCA 计数器/定时器由两个 8 位的 SFR 组成:PCA0L 和 PCA0H。 PCA0H 是 16 位计数器/定时器
的高字节 (MSB),而 PCA0L 是低字节 (LSB)。在读 PCA0L 时,"瞬象"寄存器自动锁存 PCA0H 的值,随后
读 PCA0H 时将访问这个"瞬象"寄存器。先读 PCA0L 寄存器可以保证准确读取整个 16 位 PCA0 计数器。读
PCA0H 或 PCA0L 不影响计数器操作。 PCA0MD 寄存器中的 CPS2-CPS0 位用于选择计数器/定时器的时
基,如表 29.1 所示。
当计数器/定时器从 0xFFFF 溢出到 0x0000 时,PCA0MD 中的计数器溢出标志 (CF) 被设置为逻辑 1 并产生
一个中断请求(如果 CF 中断被允许)。将 PCA0MD 中的 ECF 位设置为逻辑 1 即可允许 CF 标志产生一个
中断请求。当 CPU 转向中断服务程序时,CF 位不能由硬件自动清除,必须用软件清除。清除 PCA0MD 寄
存器中的 CIDL 位将允许 PCA 在 CPU 处于空闲模式时继续正常操作。
表 29.1:PCA 时基输入选项
CPS2
0
0
0
0
1
1
1
CPS1
0
0
1
1
0
0
1
时基
系统时钟/12
系统时钟/4
定时器 0 溢出
ECI 负变跳 (最大速率 = 系统时钟/4)
系统时钟
外部振荡器源/8 (附注)
备用
CPS0
0
1
0
1
0
1
x
附注: 外部振荡器源/8 与系统时钟同步。
IDLE
PCA0MD
C WW
I DD
DT L
L EC
K
C
P
S
2
C
P
S
1
CE
PC
S F
0
PCA0CN
CC
FR
C
C
F
2
C
C
F
1
C
C
F
0
至 SFR 总线
PCA0L
读取
瞬像寄存器
SYSCLK/12
SYSCLK/4
定时器 0 溢出
ECI
SYSCLK
外部时钟/8
000
001
010
0
011
1
PCA0H
溢出
至 PCA 中断系统
CF
100
101
至 PCA 模块
图 29.2. PCA 计数器/定时器结构图
226
PCA0L
Rev. 1.0
C8051F80x-83x
29.2. PCA0 中断源
图 29.3 列示了 PCA 中断树的结构图。共有五个独立事件标志可用于产生 PCA0 中断。分别为:主 PCA 计
数器溢出标志 (CF)(在 PCA0 计数器出现 16 位溢出时被设置)、中级溢出标志 (COVF)(在 PCA0 计数器
从 8 位溢出到 15 位时被设置),以及每个 PCA 通道的独立标志 (CCF0、 CCF1 和 CCF2)(根据该模块
的操作模式设置)。这些事件标志通常在触发条件发生时被设置。通过对应的中断允许标志(CF 对应 ECF,
COVF 对应 ECOV, CCFn 对应 ECCFn)可独立选择每种标志用于产生 PCA0 中断。在处理器识别任何独
立中断源前,必须全局允许 PCA0 中断。可通过将 IE 寄存器中的 EA 位和 EIE1 寄存器中的 EPCA0 位设置
为逻辑 1 全局允许 PCA0 中断。
(如 n = 0 至 2)
PCA0CPMn
P ECCMT P E
WC A A A O WC
MO P P T GMC
1 MP N n n n F
6 n n n
n
n
PCA0CN
CC
FR
CCC
CCC
FF F
2 1 0
PCA0MD
C WW
I DD
DT L
LEC
K
PCA0PWM
CCCE
PPPC
SSSF
2 1 0
AEC
RCO
SOV
EVF
L
ECCC
A L L L
RSSS
1 EEE
6 L L L
2 1 0
PCA 计数器/定时器
8 位到 15 位溢出
设置 8 位到 15 位操作
0
PCA 计数器/定时器
16 位溢出
1
ECCF0
PCA 模块 0
(CCF0)
0
1
EPCA0
EA
0
0
0
1
1
1
中断优先级
编码器
ECCF1
0
PCA 模块 1
(CCF1)
1
ECCF2
PCA 模块 2
(CCF2)
0
1
图 29.3. PCA 中断结构图
Rev. 1.0
227
C8051F80x-83x
29.3. 捕捉/比较模块
每个模块都可被配置为独立操作,有六种操作模式:边沿触发捕捉、软件定时器、高速输出、频率输出、 8
位至 15 位脉冲宽度调制器或 16 位脉冲宽度调制器。每个模块在 CIP-51 系统控制器中都有属于自己的特殊
功能寄存器 (SFR)。这些寄存器用于与模块交换数据和配置模块的操作模式。表 29.2 概述了 PCA0CPMn 和
PCA0PWM 寄存器的位设置情况,这些寄存器用于选择 PCA 捕捉/比较模块的操作模式。请注意,设置为使
用 8 位到 15 位 PWM 模式的所有模块均必须使用同一周期长度 (8-15 位)。设置 PCA0CPMn 寄存器中的
ECCFn 位会允许模块 CCFn 中断。
表 29.2:PCA 捕捉/比较模块的 PCA0CPM 和 PCA0PWM 位设置1,2,3,4,5,6
操作模式
PCA0CPMn
PCA0PWM
位数字 7 6 5 4 3 2 1 0 7 6 5 4 3
2–0
用 CEXn 的正沿触发捕捉
X X 1 0 0 0 0 A 0 X B X X XXX
用 CEXn 的负沿触发捕捉
X X 0 1 0 0 0 A 0 X B X X XXX
用 CEXn 的任一跳变触发捕捉
X X 1 1 0 0 0 A 0 X B X X XXX
软件定时器
X C 0 0 1 0 0 A 0 X B X X XXX
高速输出
X C 0 0 1 1 0 A 0 X B X X XXX
频率输出
X C 0 0 0 1 1 A 0 X B X X XXX
7
0 C 0 0 E 0 1 A 0 X B X X
000
位脉冲宽度调制器7
0 C 0 0 E 0 1 A D X B X X
001
10 位脉冲宽度调制器7
0 C 0 0 E 0 1 A D X B X X
010
7
0 C 0 0 E 0 1 A D X B X X
011
位脉冲宽度调制器7
0 C 0 0 E 0 1 A D X B X X
100
7
13 位脉冲宽度调制器
0 C 0 0 E 0 1 A D X B X X
101
14 位脉冲宽度调制器7
0 C 0 0 E 0 1 A D X B X X
110
位脉冲宽度调制器7
0 C 0 0 E 0 1 A D X B X X
111
8 位脉冲宽度调制器
9
11 位脉冲宽度调制器
12
15
16 位脉冲宽度调制器
1 C 0 0 E 0 1 A 0 X B X 0 XXX
16 位自动重载脉冲宽度调制器
1 C 0 0 E 0 1 A D X B X 1 XXX
附注:
1. X = 无需在意 (无论等于 1 或 0 对于独立模块的功能而言并无差异)。
2. A = 允许此模块中断 (CCFn 被设置为 1 时,触发 PCA 中断)。
3. B = 允许 8 到 15 位溢出中断 (取决于 CLSEL[2:0] 的设置)。
4. C = 当设置为 0 时,数字比较器关闭。对于高速和频率输出模式,相关针脚将不会转换。在任意 PWM 模式
下,这均会产生 0% 负载循环 (输出 = 0)。
5. D = 通过地址 PCA0CPHn 和 PCA0CPLn 评估为相关通道选择捕捉/比较寄存器 (0) 还是自动重载寄存器
(1)。
6. E = 设置时,匹配事件将导致相关通道的 CCFn 标识被设置。
7. 设置为 8 位到 15 位 PWM 模式的所有模块使用同一周期长度设置。
228
Rev. 1.0
C8051F80x-83x
29.3.1. 边缘触发捕捉模式
在该模式下, CEXn 针脚上出现的有效跳变导致 PCA 捕捉 PCA 计数器/定时器的值,并将其载入对应模块
的 16 位捕捉/比较寄存器(PCA0CPLn 和 PCA0CPHn)。PCA0CPMn 寄存器中的 CAPPn 和 CAPNn 位用
于选择触发捕捉的跳变类型:正变跳 (正沿)、负变跳 (负沿)或任意变跳 (正沿或负沿)。当捕捉发生
时, PCA0CN 中的捕捉/比较标志 (CCFn) 被设置为逻辑 1,并且如果该模块的 CCFn 中断被允许,将产生
一个中断请求。当 CPU 转向中断服务程序时, CCFn 位不能由硬件自动清除,必须用软件清除。如果
CAPPn 和 CAPNn 位都被设置为逻辑 1,则可以通过直接读 CEXn 对应端口针脚的状态,来确定捕捉是由
上升沿触发还是由下降沿触发。
PCA 中断
PCA0CPMn
P ECCMT P E
WC A A A O WC
MO P P T G MC
1 MP N n n n F
6 n n n
n
n
0 0 0 x
0
端口 I/O
交叉开关
CEXn
CCC
CCC
FFF
2 1 0
(至 CCFn)
x x
PCA0CN
CC
FR
1
PCA0CPLn
PCA0CPHn
捕捉
0
1
PCA
时基
PCA0L
PCA0H
图 29.4. PCA 捕捉模式图
附注: CEXn 输入信号必须保持高电平或低电平至少两个系统时钟周期,以保证能够被硬件识别。
Rev. 1.0
229
C8051F80x-83x
29.3.2. 软件定时器 (比较)模式
在 软 件 定 时 器 模 式 下, PCA 计 数 器/ 定 时 器 的 值 与 模 块 的 16 位 捕 捉/ 比 较 寄 存 器 (PCA0CPHn 和
PCA0CPLn)进行比较。当发生匹配时, PCA0CN 中的捕捉/比较标志 (CCFn) 被设置为逻辑 1,并且如果
该模块的 CCFn 中断被允许,将产生一个中断请求。当 CPU 转向中断服务程序时, CCFn 位不能由硬件自
动清除,必须用软件清除。设置 PCA0CPMn 寄存器中的 ECOMn 和 MATn 位将允许软件定时器模式。
关于计数器/定时器的重要事项:当向 PCA0 的捕捉/比较寄存器写入一个 16 位数值时,应先写入低字节。向
PCA0CPLn 写入时会将 ECOMn 位清 0;向 PCA0CPHn 写入时会将 ECOMn 位设置为 1。
写入
PCA0CPLn
0
ENB
复位
写入
PCA0CPHn
PCA 中断
ENB
1
PCA0CPMn
PCA0CN
P ECCMT PE
WC A A A O WC
MO P P T GMC
1 MP N n n n F
6 n n n
n
n
x
0 0
PCA0CPLn
PCA0CPHn
CCC
CCC
FFF
2 1 0
0 0 x
允许
16 位比较器
PCA
时基
PCA0L
PCA0H
图 29.5. PCA 软件定时器模式图
230
CC
FR
Rev. 1.0
匹配
0
1
C8051F80x-83x
29.3.3. 高速输出模式
在高速输出模式下,每当 PCA 计数器与模块的 16 位捕捉/比较寄存器 (PCA0CPHn 和 PCA0CPLn)发生
匹配时,模块的相关 CEXn 针脚将发生转换。当发生匹配时, PCA0CN 中的捕捉/比较标志 (CCFn) 被设置
为逻辑 1,并且如果该模块的 CCFn 中断被允许,将产生一个中断请求。当 CPU 转向中断服务程序时,
CCFn 位不能由硬件自动清除,必须用软件清除。设置 PCA0CPMn 寄存器中的 TOGn、 MATn 和 ECOMn
位将允许高速输出模式。如果 ECOMn 被清除,相关针脚将保持其状态,而不会在下次匹配事件时发生转
换。
关于计数器/定时器的重要事项:当向 PCA0 的捕捉/比较寄存器写入一个 16 位数值时,应先写入低字节。向
PCA0CPLn 写入时会将 ECOMn 位清 0;向 PCA0CPHn 写入时会将 ECOMn 位设置为 1。
写入
PCA0CPLn
0
ENB
复位
写入
PCA0CPHn
PCA0CPMn
P ECCMT P E
WC A A A O WC
MO P P T G MC
1 MP N n n n F
6 n n n
n
n
ENB
1
x
0 0
0 x
PCA 中断
PCA0CN
PCA0CPLn
允许
CC
FR
PCA0CPHn
16 位比较器
0
匹配
1
转换
PCA
时基
CCC
CCC
FFF
2 1 0
TOGn
0 CEXn
1
PCA0L
交叉开关
端口 I/O
PCA0H
图 29.6. PCA 高速输出模式图
Rev. 1.0
231
C8051F80x-83x
29.3.4. 频率输出模式
频率输出模式会在模块的相关 CEXn 针脚上产生可编程频率的方波。捕捉/比较模块的高字节保持输出电平
转换前要计的 PCA 时钟数。方波的频率由方程 29.1 定义。
F PCA
F CEXn = ----------------------------------------2 × PCA0CPHn
附注:对于该方程, PCA0CPHn 寄存器中的值为 0x00 时,相当于 256。
方程 29.1:方波频率输出
其中, FPCA 是由 PCA 模式寄存器 PCA0MD 中 CPS2-0 位选择的时钟的频率。捕捉/比较模块的低字节与
PCA 计数器的低字节比较,两者匹配时,CEXn 的电平发生转换,高字节中的偏移值被加到 PCA0CPLn 的
匹配值中。通过设置 PCA0CPMn 寄存器中 ECOMn、 TOGn 和 PWMn 位允许频率输出模式。在这种模式
下,通常应将 MATn 位设置为 0。如果 MATn 位被设置为 1,则当通道的 16 位 PCA0 计数器与 16 位捕捉/
比较寄存器相等时,通道的 CCFn 标志将被设置。
写入
PCA0CPLn
0
ENB
复位
PCA0CPMn
写入
PCA0CPHn
ENB
1
P ECCMT P E
WC A A A O WC
MO P P T G MC
1 MPN n n n F
6 n n n
n
n
x
0 0 0
PCA0CPLn
8 位加法器
PCA0CPHn
启用
加法器
转换
x
允许
PCA 时基
8 位比较器
匹配
TOGn
0 CEXn
1
交叉开关
端口 I/O
PCA0L
图 29.7. PCA 频率输出模式
29.3.5. 8 位至 15 位脉冲宽度调制器模式
每个模块都可以被独立地用于在对应的 CEXn 针脚产生脉冲宽度调制 (PWM) 输出。输出的频率取决于 PCA
计数器/定时器的时基以及 PWM 周期长度的设置(8、9、10、11、12、13、14 或 15 位)。就与其他装置
的 8 位 PWM 模式向后兼容而言,8 位 PWM 模式的操作与 9、10、11、12、13、14 及 15 位 PWM 模式略
有不同。务请注意,为 8 位至 15 位 PWM 模式配置的所有通道均将使用同一周期长度。例如,不能为 8 位
PWM 配置一条通道,而为 11 位模式配置另一条。但其他 PCA 通道可被独立配置用于针脚捕捉、高速输出、
软件定时器、频率输出或 16 位 PWM 模式。
232
Rev. 1.0
C8051F80x-83x
29.3.5.1. 8 位脉冲宽度调制器模式
使用模块的 PCA0CPLn 捕捉/比较寄存器改变 PWM 的输出信号在 8 位 PWM 模式下的负载循环。当 PCA
计数器/ 定时器的低字节 (PCA0L) 值与 PCA0CPLn 中的值相等时, CEXn 针脚上的输出将被设置。当
PCA0L 中的计数值溢出时, CEXn 输出将被复位 (见图 29.8)。而且,当计数器/定时器的低字节 (PCA0L)
从 0xFF 溢 出 到 0x00 时,保 存 在 模 块 计 数 器/ 定 时 器 高 字 节 (PCA0CPHn) 中 的 值 被 自 动 重 载 到
PCA0CPLn,不需软件干预。软件可利用这一同步更新特征异步写入新的 PWM 高电平时间,并在随后的
PWM 期间生效。
可通过设置 PCA0CPMn 寄存器中的 ECOMn 和 PWMn 位和将 PCA0PWM 寄存器中的 CLSEL 位设置为
000b 来允许 8 位脉冲宽度调制器模式。如果 MATn 位被设置为 1,模块的 CCFn 标志将在每次 8 位比较器
发生匹配 (上升沿)时被设置。 PCA0PWM 中的 COVF 标志可被用于探测溢出 (下降沿) ,该溢出将每
256 个 PCA 时钟周期发生一次。 8 位 PWM 模式的负载循环由方程 29.2 给出。
关于计数器/定时器的重要事项:当向 PCA0 的捕捉/比较寄存器写入一个 16 位数值时,应先写入低字节。向
PCA0CPLn 写入时会将 ECOMn 位清 0;向 PCA0CPHn 写入时会将 ECOMn 位设置为 1。
( 256 – PCA0CPHn )
负载循环
Duty
Cycle = --------------------------------------------------256
方程 29.2:8 位 PWM 负载循环
由 方 程 29.2 可 知,最 大 负 载 循 环 为 100% (PCA0CPHn = 0),最 小 负 载 循 环 为 0.39% (PCA0CPHn =
0xFF)。可以通过将 ECOMn 位清 0 产生 0% 负载循环。
写入
PCA0CPLn
0
ENB
复位
PCA0CPHn
写入
PCA0CPHn
ENB
COVF
1
PCA0PWM
PCA0CPMn
AEC
RCO
SOV
EVF
L
ECCC
AL L L
RSSS
1EEE
6 L L L
2 1 0
P ECCMT P E
WC A A A O WC
MO P P T G MC
1 MP N n n n F
6 n n n
n
n
0 x
x 0 0 0
0
0 0 x 0
PCA0CPLn
x
允许
匹配
8 位比较器
S
R
PCA 时基
PCA0L
设置
CLR
Q
CEXn
交叉开关
端口 I/O
Q
溢出
图 29.8. PCA 8 位 PWM 模式图
Rev. 1.0
233
C8051F80x-83x
29.3.5.2. 9 位至 15 位脉冲宽度调制器模式
通过写入一个被双映射至 PCA0CPHn 和 PCA0CPLn 寄存器位置的"自动重载"寄存器改变 PWM 输出信号
在 N 位 (N = 9 至 15) PWM 模式下的负载循环。定义负载循环的写入数据应在寄存器中右对齐。当
PCA0PWM 中的 ARSEL 位被设置为 1 时访问 (读或写)自动重载寄存器。当 ARSEL 被设置为 0 时,访
问捕捉/比较寄存器。
当 PCA0 计数器的最低 N 位与相关模块的捕捉/比较寄存器 (PCA0CPn) 中的值匹配时, CEXn 的输出被置
为高电平。当计数器从第 N 位溢出时, CEXn 被置为低电平 (见图 29.9)。当从第 N 位溢出时, COVF 标志
被设置,保存在模块自动重载寄存器中的值被载入捕捉/比较寄存器。N 的值由 PCA0PWM 寄存器中的 CLSEL
位确定。软件可利用这一同步更新特征异步写入新的 PWM 高电平时间,并在随后的 PWM 期间生效。
可通过设置 PCA0CPMn 寄存器中的 ECOMn 和 PWMn 位选择 9、10、11、12、13、14 及 15 位 PWM 模
式,并将 PCA0PWM 寄存器中的 CLSEL 位设置为所需的周期长度 (8 位除外)。如果 MATn 位被设置为
1,模块的 CCFn 标志将在每次比较器发生匹配 (上升沿)时被设置。 PCA0PWM 中的 COVF 标志可被用
于探测溢出(下降沿),该溢出将每 512(9 位)、1024(10 位)、2048(11 位)、4096(12 位)、8192
(13 位)、 16384 (14 位)或 32768 (15 位)个 PCA 时钟周期发生一次。 N 位 (N = 9 至 15) PWM 模
式的负载循环由方程 29.2 给出,其中 N 为 PWM 循环的位数。可以通过将 ECOMn 位清 0 产生 0% 负载循
环。
关于 PCA0CPHn 和 PCA0CPLn 寄存器的重要事项:当向 PCA0CPn 寄存器写入一个 16 位数值时,应先
写入低字节。向 PCA0CPLn 写入时会将 ECOMn 位清 0;向 PCA0CPHn 写入时会将 ECOMn 位设置为 1。
( 2 N – PCA0CPn )负载循环
Duty
Cycle = ------------------------------------------2N
方程 29.3:N 位 PWM 负载循环 (N = 9 至 15)
写入
PCA0CPLn
0
当 ARSEL =
1 时为 R/W
ENB
复位
写入
PCA0CPHn
(自动重载)
PCA0PWM
PCA0CPH:Ln
AEC
RCO
SOV
EVF
L
(右对齐)
ENB
1
PCA0CPMn
P ECCMT P E
WC A A A O WC
MO P P T GMC
1 MP N n n n F
6 n n n
n
n
0
0 0 x 0
当 ARSEL =
0 时为 R/W
ECCC
AL L L
RSSS
1EEE
6 L L L
2 1 0
x
x
(捕捉/比较)
设置“N”位:
001 = 9 位
010 = 10 位
011 = 11 位
PCA0CPH:Ln
(右对齐)
x
允许
N 位比较器
匹配
S
R
PCA 时基
设置
CLR
Q
Q
PCA0H:L
第 N 位溢出
图 29.9. PCA 9 位至 15 位 PWM 模式图
234
100 = 12 位
101 = 13 位
110 = 14 位
111 = 15 位
Rev. 1.0
CEXn
交叉开关
端口 I/O
C8051F80x-83x
29.3.6. 16 位脉冲宽度调制器模式
PCA 模块可在 16 位 PWM 模式下操作。16 位 PWM 模式独立于其他(8 位至 15 位)PWM 模式。在此模
式下, 16 位捕捉/比较模块定义 PWM 信号低电平时间的 PCA 时钟数。当 PCA 计数器与模块内容匹配时,
CEXn 的输出被置为高电平;当 16 位计数器溢出时, CEXn 被置为低电平。通过设置 PCA0CPMn 寄存器
中 ECOMn、 PWMn 和 PWM16n 位允许 16 位 PWM 模式。
通过写入一个被双映射至 PCA0CPHn 和 PCA0CPLn 寄存器位置的"自动重载"寄存器改变 PWM 输出信号
的负载循环。当 PCA0PWM 中的 ARSEL 位被设置为 1 时,访问 (读或写)自动重载寄存器。当 ARSEL
被设置为 0 时,访问捕捉/比较寄存器。软件可利用这一同步更新特征异步写入新的 PWM 高电平时间,并
在随后的 PWM 期间生效。
就与其他装置的 16 位 PWM 模式向后兼容而言,可在不使用"自动重载"寄存器的情况下修改 PWM 负载循
环。为了在不使用"自动重载"寄存器的情况下输出一个可变负载循环,新值的写入应与 PCA CCFn 匹配中断
同步。应允许匹配中断(ECCFn = 1 并且 MATn = 1),以同步对捕捉/比较寄存器的写操作。如果 MATn 位
被设置为 1,模块的 CCFn 标志将在每次 16 位比较器发生匹配(上升沿)时被设置。PCA0CN 中的 CF 标
志可被用于探测溢出 (下降沿)。 16 位 PWM 模式的负载循环由方程 29.4 给出。
关于计数器/定时器的重要事项:当向 PCA0 的捕捉/比较寄存器写入一个 16 位数值时,应先写入低字节。向
PCA0CPLn 写入时会将 ECOMn 位清 0;向 PCA0CPHn 写入时会将 ECOMn 位设置为 1。
( 65536 – PCA0CPn )
Duty
Cycle = ----------------------------------------------------负载循环
65536
方程 29.4:16 位 PWM 负载循环
由 方 程 29.4 可 知,最 大 负 载 循 环 为 100% (PCA0CPn = 0),最 小 负 载 循 环 为 0.0015% (PCA0CPn =
0xFFFF)。可以通过将 ECOMn 位清 0 产生 0% 负载循环。
写入
P C A 0C P Ln
0
当 ARSEL =
1 时 为 R /W
ENB
复位
P C A 0P W M
(自 动 重 载 )
P C A 0C P H :Ln
写入
P C A 0C P H n
A
R
S
E
L
ENB
1
E
C
O
V
C
O
V
F
E
A
R
1
6
P C A 0C P M n
P E
WC
MO
1 M
6 n
n
C
A
P
P
n
C
A
P
N
n
M
A
T
n
T
O
G
n
P E
WC
MC
n F
n
1
0 0 x 0
x
当 ARSEL =
0 时 为 R /W
x
C
L
S
E
L
2
C
L
S
E
L
1
C
L
S
E
L
0
x x x
(捕 捉 /比 较 )
P C A 0C P H :Ln
允许
匹配
16 位 比 较 器
S
R
PC A 时 基
设置
C LR
Q
CEXn
交叉开关
端 口 I/O
Q
P C A 0H :L
溢出
图 29.10. PCA 16 位 PWM 模式图
Rev. 1.0
235
C8051F80x-83x
29.4. 看门狗模式
通过 PCA 的模块 2 可以实现可编程看门狗 (WDT) 功能。如果两次对 WDT 更新寄存器 (PCA0CPH2) 的写
操作相隔的时间超过规定的极限, WDT 将产生一次复位。可以根据需要用软件配置和允许/禁用 WDT。
当 PCA0MD 寄存器中的 WDTE 位被设置时,模块 2 作为看门狗 (WDT) 操作。模块 2 高字节与 PCA 计数
器的高字节比较;模块 2 低字节保持执行 WDT 更新时要使用的偏移值。在复位后看门狗被启用。在看门狗
被启用时,对某些 PCA 寄存器的写操作受到限制。代码开始执行后 WDT 将很快产生复位。为了避免复位,
必须明确禁用 WDT (如果在系统中使用 WDT,还可选择重新配置和重新允许)。
29.4.1. 看门狗操作
当 WDT 被启用时:

PCA 计数器被强制运行。

不允许写 PCA0L 和 PCA0H。

PCA 时钟源位 (CPS2-CPS0) 被冻结。

PCA 等待控制位 (CIDL) 被冻结。

模块 2 被强制进入软件定时器模式。

对模块 2 模式寄存器 (PCA0CPM2) 的写操作被禁用。
当 WDT 被允许时,写入 CR 位并不改变 PCA 计数器的状态;计数器将一直保持运行状态,直到 WDT 被禁
用。如果 WDT 被启用,但用户软件没有允许 PCA 计数器,则 PCA 计数器运行控制位 (CR) 将读 0。如果
在 WDT 被允许时 PCA0CPH2 和 PCA0H 发生匹配,则系统将被复位。为了防止 WDT 复位,可通过向
PCA0CPH2 写入任意值来更新 WDT。在写入 PCA0CPH2 时,PCA0H 加上 PCA0CPL2 中保存的偏移值后
被载入到 PCA0CPH2 (见图 29.11)。
PCA0MD
C WW
I DD
DT L
L EC
K
CCCE
PPPC
SSSF
2 1 0
PCA0CPH2
允许
PCA0CPL2
写入
PCA0CPH2
8 位加法器
8 位比较器
匹配
PCA0H
启用
加法器
图 29.11. 启用看门狗的 PCA 模块 2
236
Rev. 1.0
复位
PCA0L 溢出
C8051F80x-83x
保存在 PCA0CPH2 中的 8 位偏移值与 16 位 PCA 计数器的高字节进行比较。该偏移值是复位前 PCA0L 的
溢出次数。PCA0L 的第一次溢出周期取决于进行更新操作时 PCA0L 的值,最长可达 256 个 PCA 时钟。总
偏移值 (PCA 时钟数)由方程 29.5 给出,其中 PCA0L 是执行更新操作时 PCA0L 寄存器的值。
Offset
偏移值 = ( 256 × PCA0CPL2 ) + ( 256 – PCA0L )
方程 29.5:看门狗偏移值 (PCA 时钟数)
当 PCA0L 发生溢出并且 PCA0CPH2 和 PCA0H 匹配时, WDT 将产生复位。在启用 WDT 的情况下,软件
可以通过向 CCF2 标志 (PCA0CN.2) 写入 1 来强制产生 WDT 复位。
29.4.2. 看门狗用法
配置 WDT 的步骤如下:
1. 通过向 WDTE 位写 0 禁用 WDT。
2. 选择所需 PCA 时钟源 (用 CPS2-CPS0 位)。
3. 向 PCA0CPL2 载入所需的 WDT 更新偏移值。
4. 配置 PCA 的空闲模式 (如果希望在 CPU 处于空闲模式时 WDT 停止工作,则应设置 CIDL 位)。
5. 通过将 WDTE 位被设置为 1 来启用 WDT。
6. 通过写入 PCA0CPH2 复位 WDT 定时器。
在启用 WDT 时,不能改变所选的 PCA 时钟源和空闲模式。通过设置 PCA0MD 寄存器的 WDTE 或 WDLCK
位 来启用看门狗。如 WDLCK 已被设置,下一次系统复位之前不得禁用 WDT。如果 WDCLK 未被设置,清
除 WDTE 位将禁用 WDT。
WDT 在任何 一次复 位之后 都被设 置为允 许状态。 PCA0 计数 器时钟 默认为 系统时 钟/12, PCA0L 和
PCA0CPL2 的默认为 0x00。根据方程 29.5,WDT 的超时间隔为 256 个 PCA 时钟周期或 3072 个系统时钟
周期。表 29.3 列出了典型系统时钟超时间隔的部分范例。
表 29.3:看门狗超时间隔1
系统时钟 (Hz)
PCA0CPL2
超时间隔 (ms)
24,500,000
255
32.1
24,500,000
128
16.2
24,500,000
32
4.1
3,062,5002
255
257
3,062,5002
128
129.5
3,062,500
32
33.1
32,000
255
24576
32,000
128
12384
32,000
32
3168
2
附注:
1. 假设 PCA 使用 SYSCLK/12 作为时钟源,更新时 PCA0L 的值为
0x00。
2. 内部 SYSCLK 复位频率 = 内部振荡器/8。
29.5. PCA0 寄存器说明
下面对与 PCA 操作有关的特殊功能寄存器进行详细说明。
Rev. 1.0
237
C8051F80x-83x
SFR 定义 29.1:PCA0CN:PCA0 控制寄存器
位
7
6
名称
CF
CR
类型
R/W
R/W
R
R
复位
0
0
0
0
5
4
SFR 地址 = 0xD8;可位寻址
位
名称
7
CF
PCA 计数器/定时器溢出标志。
3
2
1
0
CCF2
CCF1
CCF0
R
R/W
R/W
R/W
0
0
0
0
功能
当 PCA 计数器/定时器从 0xFFFF 溢出到 0x0000 时由硬件设置。当启用计数器/定时器
溢出 (CF) 中断时,设置此位会导致 CPU 转至 PCA 中断服务程序。此位不能由硬件自
动清除,必须用软件清除。
6
CR
PCA 计数器/定时器运行控制。
此位允许/禁用 PCA 计数器/定时器。
0:PCA 计数器/定时器禁用。
1:PCA 计数器/定时器启用。
5:3
2
未使用
CCF2
读 = 000b;写 = 无需在意。
PCA 模块 2 捕捉/比较标志。
当发生匹配或捕捉时,此位由硬件设置。当启用 CCF2 中断时,设置此位会导致 CPU
转至 PCA 中断服务程序。此位不能由硬件自动清除,必须用软件清除。
1
CCF1
PCA 模块 1 捕捉/比较标志。
当发生匹配或捕捉时,此位由硬件设置。当启用 CCF1 中断时,设置此位会导致 CPU
转至 PCA 中断服务程序。此位不能由硬件自动清除,必须用软件清除。
0
CCF0
PCA 模块 0 捕捉/比较标志。
当发生匹配或捕捉时,此位由硬件设置。当启用 CCF0 中断时,设置此位会导致 CPU
转至 PCA 中断服务程序。此位不能由硬件自动清除,必须用软件清除。
238
Rev. 1.0
C8051F80x-83x
SFR 定义 29.2:PCA0MD:PCA0 模式
位
7
6
5
名称
CIDL
WDTE
WDLCK
类型
R/W
R/W
R/W
复位
0
1
0
4
3
2
1
0
CPS2
CPS1
CPS0
ECF
R
R/W
R/W
R/W
R/W
0
0
0
0
0
SFR 地址 = 0xD9
位
名称
7
CIDL
PCA 计数器/定时器等待控制。
功能
设置 CPU 空闲模式下的 PCA 工作方式。
0:当系统控制器处于空闲模式时, PCA 继续正常工作。
1:当系统控制器处于空闲模式时, PCA 停止工作。
6
WDTE
看门狗允许
如果该位被设置, PCA 模块 2 被用作看门狗。
0:看门狗被禁用。
1:PCA 模块 2 被用作看门狗。
5
WDLCK
看门狗锁定。
该位锁定/解锁看门狗允许。如 WDLCK 被设置,下一次系统复位之前不得禁用 WDT。
0:看门狗允许未被锁定。
1:看门狗允许被锁定。
4
3:1
未使用 读 = 0b;写 = 无需在意。
CPS[2:0] PCA 计数器/定时器脉冲选择
这些位选择 PCA 计数器的时基
000:系统时钟/12
001:系统时钟/4
010:定时器 0 溢出
011:ECI 负变跳 (最大速率 = 系统时钟/4)
100:系统时钟
101:外部时钟/8 (与系统时钟同步)
11x:备用
0
ECF
PCA 计数器/定时器溢出中断允许。
该位是 PCA 计数器/定时器溢出 (CF) 中断的屏蔽位。
0:禁用 CF 中断。
1:当 CF (PCA0CN.7) 被设置时,允许 PCA 计数器/定时器溢出中断请求。
附注: 当 WDTE 位设置为 1 时,不能修改 PCA0MD 寄存器其他位的值。若要更改 PCA0MD 寄存器中的内容,必须
先禁用看门狗。
Rev. 1.0
239
C8051F80x-83x
SFR 定义 29.3:PCA0PWM:PCA0 PWM 配置寄存器
位
7
6
5
名称
ARSEL
ECOV
COVF
类型
R/W
R/W
R/W
复位
0
0
0
SFR 地址 = 0xF7
位
名称
7
ARSEL
4
3
2
1
EAR16
CLSEL[1:0]
R
R/W
R/W
0
0
0
0
0
0
功能
自动重载寄存器选择
该位选择是否读写相同 SFR 地址上正常的 PCA 捕捉/比较寄存器 (PCA0CPn),或自
动重载寄存器。此功能用于定义 9 位至 15 位 PWM 模式和 16 位 PWM 模式的重载
值。所有其他模式中,自动重载寄存器都不具备此功能。
0:读/写捕捉/比较寄存器 (PCA0CPHn 和 PCA0CPLn)。
1:读/写自动重载寄存器 (PCA0CPHn 和 PCA0CPLn)。
6
ECOV
周期溢出中断允许。
该位设置周期溢出标志 (COVF) 中断的屏蔽。
0:COVF 不会产生 PCA 中断。
1:COVF 被设置时,将产生 PCA 中断。
5
COVF
周期溢出标志。
该位表明主 PCA 计数器 (PCA0) 第 n (n 为 9 至 15)位溢出。用于该标志的特定位取
决于 CLSEL 位的设置。该位可通过硬件或软件进行设置,但必须通过软件清除。
0:从上次该位被清除后,并无发生溢出。
1:从上次该位被清除后,已发生溢出。
4
3
未使用
EAR16
读 = 0b;写 = 无需在意。
16 位 PWM 自动重载允许。
该位控制 16 位 PWM 模式的自动重载特征,而该模式载入 PCA 计数器 (PCA0) 溢出
上相同 SFR 地址的 PCA0CPn 捕捉/比较寄存器和自动重载寄存器值。该设置影响所
有已经被配置使用 16 位 PWM 模式的 PCA 通道。
0:禁用 16 位 PWM 模式自动重载。该默认设置与其他设备的 16 位 PWM 模式向后
兼容。
1:16 位 PWM 模式自动重载允许。
2:0 CLSEL[2:0] 周期长度选择。
16 位 PWM 模式未被选择时,该等位会选择 PWM 周期的长度,范围介于 8 到 15 位。
这会影响为 PWM (未使用 16 位 PWM 模式)配置的所有通道。就配置给 16 位
PWM 模式的个别通道而言,忽略该位。
000:8 位。
001:9 位。
010:10 位。
240
011:11 位。
100:12 位。
101:13 位。
Rev. 1.0
110:14 位。
111:15 位。
C8051F80x-83x
SFR 定义 29.4:PCA0CPMn:PCA0 捕捉/比较模式寄存器
位
7
6
5
4
3
2
1
0
名称
PWM16n
ECOMn
CAPPn
CAPNn
MATn
TOGn
PWMn
ECCFn
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址:PCA0CPM0 = 0xDA, PCA0CPM1 = 0xDB, PCA0CPM2 = 0xDC
位
名称
功能
7
PWM16n 16 位脉冲宽度调制允许。
当允许脉冲宽度调制模式时,该位选择 16 位模式。
0:选择 8 至 15 位 PWM。
1:选择 16 位 PWM。
6
ECOMn
5
CAPPn
比较器功能允许。
该位设置为 1 时,允许 PCA 模块 n 的比较器功能。
正沿捕捉功能允许。
该位设置为 1 时,允许 PCA 模块 n 的正边沿捕捉。
4
CAPNn
负沿捕捉功能允许。
该位设置为 1 时,允许 PCA 模块 n 的负边沿捕捉。
3
MATn
匹配功能允许。
该位设置为 1 时,允许 PCA 模块 n 的匹配功能。如果允许,当 PCA 计数器与一个模块
的捕捉/比较寄存器匹配时, PCA0MD 寄存器中的 CCFn 位会设置为 1。
2
TOGn
转换功能允许。
该位设置为 1 时,允许 PCA 模块 n 的转换功能。如果允许,当 PCA 计数器与一个模块
的捕捉/比较寄存器匹配时, CEXn 针脚的逻辑电平会进行转换。如果 PWMn 位也设置
为 1,模块将在频率输出模式下运行。
1
PWMn
脉宽调制模式允许。
该位设置为 1 时,允许 PCA 模块 n 的 PWM 功能。当允许时, CEXn 针脚输出脉冲宽
度调制信号。 PWM16n 清除时,使用 8 至 15 位PWM模式, PWM16n 设置为逻辑 1
时,使用 16 位模式。如果TOGn位也设置为逻辑1,则模块在频率输出模式下运行。
0
ECCFn
捕捉/比较标志中断允许。
该位设置捕捉/比较标志 (CCFn) 的中断屏蔽。
0:禁用 CCFn 中断。
1:当 CCFn 位设置为 1 时,允许捕捉/比较标志的中断请求。
附注: 当 WDTE 位设置为 1 时,不得更改 PCA0CPM2 寄存器,而模块 2 将用作看门狗。要更改 PCA0CPM2 寄存
器中的内容或模块 2 的功能,必须禁用看门狗。
Rev. 1.0
241
C8051F80x-83x
SFR 定义 29.5:PCA0L:PCA0 计数器/定时器低字节寄存器
位
7
6
5
4
3
2
1
0
PCA0[7:0]
名称
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xF9
位
名称
7:0 PCA0[7:0] PCA 计数器/定时器低字节。
功能
PCA0L 寄存器保存 16 位 PCA 计数器/定时器的低字节 (LSB)。
附注: WDTE 位设置为 1 时, PCA0L 寄存器不能通过软件修改。若要更改 PCA0L 寄存器中的内容,必须先禁用看
门狗。
SFR 定义 29.6:PCA0H:PCA0 计数器/定时器高字节
位
7
6
5
4
3
2
1
0
PCA0[15:8]
名称
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xFA
位
名称
7:0 PCA0[15:8] PCA 计数器/定时器高字节。
功能
PCA0H 寄存器保存 16 位 PCA 计数器/定时器的高字节 (MSB)。读该寄存器将读取"瞬
象"寄存器的内容,其内容仅在读 PCA0L 的内容时更新 (参阅第 29.1 条)。
附注: WDTE 位设置为 1 时, PCA0H 寄存器不能通过软件修改。若要更改PCA0H 寄存器中的内容,必须先禁用看
门狗。
242
Rev. 1.0
C8051F80x-83x
SFR 定义 29.7:PCA0CPLn:PCA0 捕捉模块低字节寄存器
位
7
6
5
4
3
2
1
0
PCA0CPn[7:0]
名称
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址:PCA0CPL0 = 0xFB, PCA0CPL1 = 0xE9, PCA0CPL2 = 0xEB
位
名称
功能
7:0 PCA0CPn[7:0] PCA 捕捉模块低字节寄存器
PCA0CPLn 寄存器保存 16 位捕捉模块 n 的低字节 (LSB)。该寄存器地址也会允许
读取 9 位至 15 位PWM 模式和 16 位 PWM 模式中相应 PCA 通道自动重载值的低
字节。寄存器 PCA0PWM 中的 ARSEL 位决定会读取哪个寄存器。
附注: 写入该寄存器会将模块的 ECOMn 位清 0。
SFR 定义 29.8:PCA0CPHn:PCA0 捕捉模块高字节寄存器
位
7
6
5
4
3
2
1
0
PCA0CPn[15:8]
名称
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址:PCA0CPH0 = 0xFC, PCA0CPH1 = 0xEA, PCA0CPH2 = 0xEC
位
名称
功能
7:0 PCA0CPn[15:8] PCA 捕捉模块高字节寄存器
PCA0CPHn 寄存器保存 16 位捕捉模块 n 的高字节 (MSB)。该寄存器地址也会允
许读取 9 位至 15 位 PWM 模式和 16 位 PWM 模式中相应 PCA 通道自动重载值的
高字节。寄存器 PCA0PWM 中的 ARSEL 位决定会读取哪个寄存器。
附注: 写入该寄存器会将模块的 ECOMn 位设置为 1。
Rev. 1.0
243
C8051F80x-83x
244
Rev. 1.0
C8051F80x-83x
30. C2 接口
C8051F80x-83x 设备有一个 Silicon Labs 2 线 (C2) 调试接口,支持 闪存编程和使用安装在最终应用程序中
的部件进行系统内调试。 C2 接口使用两个针脚进行运作:一个双向的 C2 数据信号 (C2D) 和一个时钟输入
(C2CK)。有关 C2 协议的详细信息,请参阅 C2 接口规格。
30.1. C2 接口寄存器
下面对通过 C2 接口执行 闪存编程功能所需的 C2 寄存器进行说明。对所有 C2 寄存器的访问都要通过 C2
接口实现 (详见 C2 接口规格)。
C2 寄存器定义 30.1:C2ADD:C2 地址寄存器
位
7
6
5
4
3
名称
C2ADD[7:0]
类型
R/W
复位
0
0
0
0
0
位
名称
7:0 C2ADD[7:0] C2 地址寄存器。
2
1
0
0
0
0
功能
C2ADD 寄存器通过 C2 接口访问,以选择 C2 数据读取和数据写入命令的目标数据寄
存器。
地址
0x00
名称
DEVICEID
说明
0x01
REVID
选择版本 ID 寄存器 (只读)
0x02
FPCTL
选择 C2 闪存编程控制寄存器
0xBF
0xD3
FPDAT
选择 C2 闪存数据寄存器
CRC0AUTO* 选择 CRC0AUTO 寄存器
CRC0CNT*
选择 CRC0CNT 寄存器
0xCE
CRC0CN*
选择 CRC0CN 寄存器
0xD2
选择设备 ID 寄存器 (只读)
0xDE
CRC0DATA*
选择 CRC0DATA 寄存器
0xCF
CRC0FLIP*
选择 CRC0FLIP 寄存器
0xDD
CRC0IN*
选择 CRC0IN 寄存器
*附注: CRC 寄存器和功能说明见第 158 页的第 24 条“循环冗余检验单位 (CRC0)”。
C2 寄存器定义 30.2:DEVICEID:C2 设备 ID
位
7
6
5
4
3
名称
DEVICEID[7:0]
类型
R/W
复位
1
1
1
0
0
Rev. 1.0
2
1
0
0
0
1
244
C8051F80x-83x
C2 地址寄存器:0x00
位
名称
7:0 DEVICEID[7:0] 设备 ID。
功能
该只读寄存器返回 8 位的设备 ID 号:0x23 (C8051F80x-83x)。
C2 寄存器定义 30.3:REVID:C2 版本 ID
位
7
6
5
4
3
名称
REVID[7:0]
类型
R/W
复位
不同
不同
不同
不同
C2 地址寄存器:0x01
位
名称
7:0 REVID[7:0] 版本 ID。
不同
2
1
0
不同
不同
不同
功能
该只读寄存器返回 8 位的版本 ID。例如:0x00 = 版本 A。
245
Rev. 1.0
C8051F80x-83x
C2 寄存器定义 30.4:FPCTL:C2 闪存编程控制寄存器
位
7
6
5
4
3
名称
FPCTL[7:0]
类型
R/W
复位
0
0
0
0
0
C2 地址寄存器:0x02
位
名称
7:0 FPCTL[7:0] C2 闪存编程控制寄存器。
2
1
0
0
0
0
功能
该寄存器用于通过 C2 接口启用闪存编程。欲启用 C2 闪存编程,下列代码须按顺序
写入:0x02、 0x01。一旦启用 C2 闪存编程,须发出系统复位以恢复至正常操作。
C2 寄存器定义 30.5:FPDAT:C2 闪存编程数据寄存器
位
7
6
5
4
3
名称
FPDAT[7:0]
类型
R/W
复位
0
0
0
0
C2 地址寄存器:0xBF
位
名称
7:0 FPDAT[7:0] C2 闪存编程数据寄存器。
0
2
1
0
0
0
0
功能
该寄存器用于在 C2 闪存访问期间传递闪存命令、地址和数据。下列命令为有效命令。
代码
0x06
命令
闪存区块读取
0x07
闪存区块写入
0x08
闪存页面擦除
0x03
设备擦除
Rev. 1.0
246
C8051F80x-83x
30.2. C2CK 针脚共享
C2 协议允许 C2 针脚与用户功能共享,因此,系统调试和闪存编程可执行。此种情况可能发生,因为 C2 通
信通常在设备处于停止模式下时执行,该模式下片上所有外围设备和用户软件都暂停工作。在此停止模式
下, C2 接口可安全地"借用" C2CK (RST) 和 C2D 针脚。在大多数应用中,外部电阻器需将 C2 接口流量从
用户应用中分离出来。典型的分离配置如图 30.1 所示。
C8051Fxxx
RST (a)
C2CK
输入 (b)
C2D
输出 (c)
C2 接口主设备
图 30.1:典型 C2 针脚共享
图 30.1 中的配置以下列各项为条件:
1. 当目标设备处于停止模式时,用户输入 (b) 不得更改模式。
2. 目标设备上的 RST 针脚仅可用作输入。
视乎具体应用的情况,可能需要额外的电阻器。
247
Rev. 1.0
C8051F80x-83x
文件更新一览表
0.2 版更新为 1.0 版
更新后的电气特性表可反映生产特性数据。
增加了写入或擦除闪存所需的最低 SYSCLK 要求。
 增加了在唤醒源活跃状态下进入暂停模式的注意事项 (第 20.3 节)
 将 VDM0CN 复位值更正为 “ 变化 ”。
 删除了输出针脚表中的 IDAC 部分。


Rev. 1.0
248
C8051F80x-83x
附注:
249
Rev. 1.0
Simplicity Studio
One-click access to MCU and
wireless tools, documentation,
software, source code libraries &
more. Available for Windows,
Mac and Linux!
IoT Portfolio
www.silabs.com/IoT
SW/HW
Quality
Support and Community
www.silabs.com/simplicity
www.silabs.com/quality
community.silabs.com
Disclaimer
Silicon Laboratories intends to provide customers with the latest, accurate, and in-depth documentation of all peripherals and modules available for system and software implementers
using or intending to use the Silicon Laboratories products. Characterization data, available modules and peripherals, memory sizes and memory addresses refer to each specific
device, and "Typical" parameters provided can and do vary in different applications. Application examples described herein are for illustrative purposes only. Silicon Laboratories
reserves the right to make changes without further notice and limitation to product information, specifications, and descriptions herein, and does not give warranties as to the accuracy
or completeness of the included information. Silicon Laboratories shall have no liability for the consequences of use of the information supplied herein. This document does not imply
or express copyright licenses granted hereunder to design or fabricate any integrated circuits. The products must not be used within any Life Support System without the specific
written consent of Silicon Laboratories. A "Life Support System" is any product or system intended to support or sustain life and/or health, which, if it fails, can be reasonably expected
to result in significant personal injury or death. Silicon Laboratories products are generally not intended for military applications. Silicon Laboratories products shall under no
circumstances be used in weapons of mass destruction including (but not limited to) nuclear, biological or chemical weapons, or missiles capable of delivering such weapons.
Trademark Information
Silicon Laboratories Inc., Silicon Laboratories, Silicon Labs, SiLabs and the Silicon Labs logo, CMEMS®, EFM, EFM32, EFR, Energy Micro, Energy Micro logo and combinations
thereof, "the world’s most energy friendly microcontrollers", Ember®, EZLink®, EZMac®, EZRadio®, EZRadioPRO®, DSPLL®, ISOmodem ®, Precision32®, ProSLIC®, SiPHY®,
USBXpress® and others are trademarks or registered trademarks of Silicon Laboratories Inc. ARM, CORTEX, Cortex-M3 and THUMB are trademarks or registered trademarks of
ARM Holdings. Keil is a registered trademark of ARM Limited. All other products or brand names mentioned herein are trademarks of their respective holders.
Silicon Laboratories Inc.
400 West Cesar Chavez
Austin, TX 78701
USA
http://www.silabs.com