第1章 基础知识 1
1.1 计算机的基本认识 1
1.1.1 计算机系统的工作过程及其内部结构 3
1.1.2 指令、指令系统及程序 8
1.2 寻址方式 14
1.3 单片机及其发展概况 14
1.3.1 单片机及其特点 15
1.3.2 单片机技术现状及将来发展趋势 16
习题1 20
第2章 STM8S系列MCU芯片内部结构 21
2.1 STM8S系列MCU性能概述 21
2.2 STM8S系列MCU内部结构 23
2.2.1 STM8内核CPU 24
2.2.2 STM8S系列芯片封装与引脚排列 26
2.3 通用I/O口GPIO(General Purpose I/O Port) 29
2.3.1 I/O引脚结构 30
2.3.2 I/O端口数据寄存器与控制寄存器 30
2.3.3 输入模式 32
2.3.4 输出模式 32
2.3.5 多重复用引脚的选择 33
2.3.6 I/O引脚初始化特例 33
2.3.7 I/O引脚负载能力 34
2.4 STM8S的电源供电及滤波 35
2.5 复位电路 37
2.5.1 复位状态寄存器RST_SR 38
2.5.2 外部复位电路 39
2.6 时钟电路 40
2.6.1 内部高速RC振荡器时钟源HSI 41
2.6.2 内部低速RC振荡器时钟源LSI 42
2.6.3 外部高速时钟源HSE 42
2.6.4 时钟源切换 43
2.6.5 时钟安全系统(CSS) 45
2.6.6 时钟输出 46
2.6.7 时钟初始化过程及特例 46
习题2 47
第3章 存储器系统及访问 48
3.1 存储器结构 48
3.1.1 随机读写RAM存储区 49
3.1.2 Flash ROM存储区 50
3.1.3 数据EEPROM存储区 51
3.1.4 硬件配置选项区 51
3.1.5 通用I/O端口及外设寄存器区 52
3.1.6 唯一ID号存储区 52
3.2 存储器读写保护与控制寄存器 52
3.2.1 存储器读保护(ROP)选择 52
3.2.2 存储器写保护 52
3.2.3 存储器控制寄存器 53
3.3 Flash ROM存储器IAP编程 55
3.3.1 字节编程 55
3.3.2 字编程 60
3.3.3 块编程 66
习题3 69
第4章 STM8内核CPU指令系统 70
4.1 ST汇编语言格式及其伪指令 70
4.1.1 ST汇编常数表示法 70
4.1.2 ST汇编语言格式 71
4.1.3 ST汇编支持的关系运算符 72
4.1.4 ST汇编伪指令(Pseudoinstruction) 73
4.2 STM8寻址方式 79
4.2.1 立即寻址(Immediate) 79
4.2.2 寄存器寻址 80
4.2.3 直接寻址(Direct) 80
4.2.4 寄存器间接寻址(Indirect) 80
4.2.5 变址寻址(Indexed) 80
4.2.6 以存储单元作间址的间接寻址方式 81
4.2.7 复合寻址方式 82
4.2.8 相对寻址(Relative) 83
4.2.9 隐含寻址(Inherent) 83
4.2.10 位寻址(Bit) 83
4.3 STM8指令系统 84
4.3.1 数据传送(Load and Transfer)指令 84
4.3.2 算术运算(Arithmetic operations)指令 92
4.3.3 增量/减量(Increment/Decrement)指令 104
4.3.4 逻辑运算(Logical operations)指令 105
4.3.5 位操作(Bit Operation)指令 108
4.3.6 移位操作(Shift and Rotates)指令 110
4.3.7 比较(Compare)指令 113
4.3.8 正负或零测试(Tests)指令 114
4.3.9 控制及转移(Jump and Branch)指令 114
习题4 121
第5章 汇编语言程序设计 123
5.1 STVD开发环境与STM8汇编语言程序结构 123
5.1.1 STVD开发环境中创建工作站文件 123
5.1.2 STVD自动创建项目文件内容 125
5.1.3 完善STVD自动创建的项目文件内容 128
5.1.4 在项目文件中添加其他文件 132
5.2 STM8汇编程序结构 132
5.2.1 子程序与中断服务程序在主模块内 132
5.2.2 子程序与中断服务程序在各自模块内 134
5.2.3 子程序结构 135
5.3 程序基本结构 136
5.3.1 顺序结构 136
5.3.2 循环结构 140
5.3.3 分支程序结构 140
5.4 并行多任务程序结构及实现 145
5.4.1 串行多任务程序结构与并行多任务程序结构 145
5.4.2 并行多任务程序结构 146
5.5 程序仿真与调试 150
习题5 153
第6章 STM8中断控制系统 154
6.1 CPU与外设通信方式概述 154
6.1.1 查询方式 154
6.1.2 中断通信方式 154
6.2 STM8S中断系统 155
6.2.1 中断源及其优先级 155
6.2.2 中断响应条件与处理过程 159
6.2.3 外中断源及其初始化 160
6.2.4 中断服务程序结构 162
6.2.5 中断服务程序执行时间控制 162
小结 163
习题6 163
第7章 STM8S系列MCU定时器 164
7.1 高级控制定时器TIM1结构 165
7.2 TIM1时基单元 166
7.2.1 16位预分频器TIM1_PSCR 167
7.2.2 16位计数器TIM1_CNTR 167
7.2.3 16位自动装载寄存器TIM1_ARR 168
7.2.4 计数方式 169
7.2.5 重复计数器TIM1_RCR 172
7.2.6 更新事件(UEV)与更新中断(UIF)控制逻辑 172
7.3 TIM1时钟及触发控制 173
7.3.1 主时钟触发信号 174
7.3.2 外部时钟模式1 175
7.3.3 外部时钟模式2 177
7.3.4 触发同步 178
7.4 捕获/比较通道 178
7.4.1 输入模块内部结构 179
7.4.2 输入捕获初始化与操作举例 180
7.4.3 输出比较 181
7.4.4 输出比较初始化举例 185
7.5 定时器中断控制 187
7.6 通用定时器TIM2/TIM3 187
7.6.1 通用定时器TIM2/TIM3结构 188
7.6.2 通用定时器时基单元 188
7.6.3 通用定时器输入捕获/输出比较 189
7.6.4 通用定时器TIM2/TIM3初始化举例 190
7.7 窗口看门狗定时器WWDG 193
7.7.1 窗口看门狗定时器结构及其溢出时间 193
7.7.2 窗口看门狗定时器初始化 194
7.7.3 在Halt状态下WWDG定时器的活动 195
7.8 硬件看门狗定时器IWDG 195
7.8.1 硬件看门狗定时器结构 195
7.8.2 硬件看门狗定时器控制与初始化 196
习题7 198
第8章 STM8S MCU串行通信 199
8.1 串行通信的概念 199
8.1.1 串行通信的种类 200
8.1.2 波特率 201
8.1.3 串行通信数据传输方向 201
8.1.4 串行通信接口的种类 202
8.2 UART串行通信接口 202
8.2.1 UART串行通信波特率设置 205
8.2.2 UART串行通信信息帧格式 205
8.2.3 奇偶校验选择 206
8.2.4 数据发送/接收过程 207
8.2.5 多机通信 212
8.2.6 UART同步模式 215
8.2.7 UART串行通信的初始化步骤 217
8.3 RS232C串行接口标准及应用 218
8.3.1 RS232C的引脚功能 218
8.3.2 RS232C串行接口标准中主信道重要信号的含义 219
8.3.3 电平转换 219
8.3.4 RS232C的连接 220
8.3.5 通信协议及约定 221
8.4 RS422/RS485总线 222
8.4.1 RS422接口标准 223
8.4.2 RS485标准 224
8.4.3 RS422/RS485标准性能指标 224
8.4.4 RS485/RS422标准接口芯片简介 225
8.4.5 RS485/RS422通信接口实际电路 226
8.4.6 避免总线冲突方式 227
8.5 串行外设总线接口(SPI) 229
8.5.1 STM8S系列芯片SPI接口部件结构 230
8.5.2 STM8S系列芯片SPI接口部件功能 230
8.5.3 STM8S系列芯片SPI接口部件的初始化 236
习题8 238
第9章 ADC转换器及其使用 239
9.1 ADC转换器概述 239
9.2 ADC转换器功能选择 240
9.2.1 分辨率与转换精度 240
9.2.2 转换方式选择 241
9.2.3 转换速度设置 244
9.2.4 触发方式 244
9.3 ADC转换器初始化过程举例 244
9.4 提高ADC转换精度与转换的可靠性 245
9.5 软件滤波 246
9.5.1 算术平均滤波法 246
9.5.2 滑动平均滤波法 247
9.5.3 中值法 247
9.5.4 数字滤波 247
习题9 251
第10章 数字信号输入/输出接口电路 252
10.1 开关信号的输入输出方式 252
10.2 I/O资源及扩展 254
10.2.1 STM8S系统扩展I/O引脚资源策略 254
10.2.2 利用串入并出及并入串出芯片扩展I/O口 256
10.2.3 利用MCU扩展I/O 257
10.3 STM8S与总线接口设备的连接 258
10.4 简单显示驱动电路 260
10.4.1 发光二极管 260
10.4.2 驱动电路 261
10.4.3 LED发光二极管显示状态及同步 263
10.5 LED数码管及其显示驱动电路 267
10.5.1 LED数码管 267
10.5.2 LED数码显示器接口电路 268
10.5.3 LED点阵显示器及其接口电路 281
10.6 LCD模块显示驱动电路 286
10.6.1 以T6963C为显示控制芯片的LCD模块接口及时序 287
10.6.2 T6963C操作命令 289
10.6.3 屏幕像点与显示RAM之间的对应关系及模块的初始化 295
10.6.4 应用举例 296
10.7 键盘电路 303
10.7.1 按键结构与按键电压波形 303
10.7.2 键盘电路形式 305
10.7.3 键盘按键编码 307
10.7.4 键盘监控方式 308
10.8 光电耦合器件接口电路 321
10.9 单片机与继电器接口电路 323
10.10 电平转换电路 325
10.10.1 高压器件驱动低压器件接口电路 326
10.10.2 低压器件驱动高压器件接口电路 327
10.10.3 非轨对轨运放构成的比较器驱动数字IC电路 328
习题10 329
第11章 STM8S应用系统设计 330
11.1 硬件设计 330
11.1.1 硬件资源分配 332
11.1.2 硬件可靠性设计 333
11.1.3 元器件选择原则 334
11.1.4 印制电路设计原则 335
11.2 软件设计 337
11.2.1 存储器资源分配 337
11.2.2 程序语言及程序结构选择 338
11.3 STM8芯片提供的可靠性功能 338
11.3.1 提高晶振电路的可靠性 339
11.3.2 使用存储器安全机制保护程序代码不被意外改写 339
11.3.3 硬件看门狗 339
11.4 软件可靠性设计 339
11.4.1 PC“跑飞”及其后果 340
11.4.2 降低PC“跑飞”对系统的影响 341
11.4.3 PC“跑飞”拦截技术 343
11.4.4 检查并消除STM8指令码中不需要的关键字节 349
11.4.5 提高信号输入/输出的可靠性 350
11.4.6 选择合适的判别条件提高软件的可靠性 351
11.4.7 增加芯片硬件自检功能 352
习题11 353
参考文献 354