第1章 单片机基础知识 1
1.1 单片机的基本概念 1
1.2 单片机的一般结构 2
1.2.1 单片机引脚定义与功能 2
1.2.2 寄存器 4
1.2.3 存储器 5
1.2.4 串并口电路 6
1.3 单片机中的数据表示 6
1.4 单片机中二进制数的运算 7
1.4.1 算术运算 7
1.4.2 逻辑运算 9
1.5 单片机中的码制与编码 10
1.5.1 有符号数与无符号数 10
1.5.2 其他编码 12
思考题 14
第2章 飞思卡尔8位单片机基础知识 15
2.1 飞思卡尔8位单片机系列简介 15
2.1.1 飞思卡尔HC08系列8位单片机 15
2.1.2 飞思卡尔RS08系列8位单片机 16
2.1.3 飞思卡尔HCS08系列8位单片机 16
2.2 飞思卡尔单片机命名规则与单片机选择 17
2.2.1 飞思卡尔单片机命名规则 17
2.2.2 飞思卡尔8位单片机的选择 18
2.3 MC9S08QG8硬件结构 20
2.3.1 MC9S08QG8的基本组成 20
2.3.2 MC9S08QG8单片机引脚及功能 21
思考题 25
第3章 单片机最小系统设计 26
3.1 电源电路设计 26
3.2 时钟电路设计 26
3.2.1 内部时钟源 27
3.2.2 外部时钟电路设计 33
3.3 复位电路设计 33
3.3.1 复位的功能、复位源及相关寄存器 33
3.3.2 计算机正常运行(COP)看门狗 35
3.3.3 低电压监测系统(LVD) 36
3.3.4 外部复位电路 36
3.4 下载调试电路设计 36
3.4.1 调试技术选择 36
3.4.2 后台调试模式(BDM) 37
3.5 单片机最小系统原理图 38
思考题 38
第4章 寄存器与片内存储器 39
4.1 存储器配置及寄存器 39
4.1.1 MC9S08QG8存储器配置 39
4.1.2 RAM(0x0060~0x025F) 40
4.1.3 Flash存储器(Flash ROM) 40
4.1.4 寄存器 41
4.2 输入/输出控制寄存器 41
4.2.1 端口数据寄存器和方向寄存器 41
4.2.2 端口控制寄存器 42
4.3 一些高页面寄存器介绍 43
4.3.1 系统功耗管理和控制寄存器 43
4.3.2 系统选项寄存器 45
4.3.3 系统器件识别寄存器(SDIDH、SDIDL) 46
4.3.4 与Flash操作相关的寄存器 47
思考题 51
第5章 指令系统与汇编程序设计 52
5.1 HCS08 CPU简介 52
5.2 汇编指令系统 55
5.2.1 指令分类 55
5.2.2 其他指令 61
5.2.3 寻址模式 63
5.3 S08汇编语言程序设计 66
5.3.1 编程步骤 67
5.3.2 汇编源程序的格式 67
5.3.3 伪指令 68
5.3.4 汇编语言程序设计举例 70
5.4 汇编输出 72
5.4.1 汇编列表 72
5.4.2 S记录 72
思考题 74
第6章 中断系统 75
6.1 导言 75
6.1.1 输入/输出方式 75
6.1.2 无条件传送方式 75
6.1.3 查询传送方式 75
6.1.4 直接存储器存取(DMA)方式 76
6.1.5 中断的概念 76
6.2 中断机制 76
6.2.1 中断处理过程 77
6.2.2 中断识别和中断优先级 79
6.2.3 中断源概述 83
6.2.4 外部中断 83
6.2.5 内部中断 84
6.2.6 执行中断服务程序过程 85
6.3 键盘中断 86
6.3.1 导言 86
6.3.2 运行状态和外部信号描述 87
6.3.3 寄存器描述和功能描述 87
6.3.4 键盘中断程序举例分析 89
6.4 其他中断举例 94
思考题 98
第7章 定时器和比较器模块 99
7.1 8位定时器模块MTIM的使用 100
7.1.1 8位定时器模块的结构 100
7.1.2 8位定时器模块中的寄存器 100
7.1.3 8位定时器模块的使用 102
7.2 16位定时器模块TPM的使用 102
7.2.1 16位定时器模块的结构 102
7.2.2 16位定时器模块中的寄存器 103
7.2.3 16位定时器模块的功能模式 106
7.2.4 16位定时器模块的中断 109
7.3 模拟比较器模块的使用 109
7.3.1 模拟比较器模块的结构 109
7.3.2 模拟比较器模块的状态与控制寄存器 110
7.3.3 模拟比较器模块应用实例 111
思考题 112
第8章 异步串行通信 114
8.1 导言 114
8.1.1 操作模式 115
8.1.2 基础知识 115
8.2 SCI寄存器 116
8.2.1 SCI波特率寄存器(SCIBDH、SCIBDL) 116
8.2.2 SCI控制寄存器1(SCIC1) 117
8.2.3 SCI控制寄存器2(SCIC2) 118
8.2.4 SCI状态寄存器1(SCIS1) 118
8.2.5 SCI状态寄存器2(SCIS2) 119
8.2.6 SCI控制寄存器3(SCIC3) 120
8.2.7 SCI状态寄存器(SCID) 120
8.3 功能描述 121
8.3.1 波特率的产生 121
8.3.2 SCI发送器 121
8.3.3 SCI接收器 122
8.4 附加的SCI功能 123
8.4.1 循环模式 123
8.4.2 单线操作 124
8.5 软件开发方法 124
思考题 126
第9章 串行外围接口 127
9.1 导言 127
9.1.1 SPI模块的特点 128
9.1.2 SPI系统结构和模块结构 128
9.1.3 SPI波特率产生 129
9.2 外部信号描述 130
9.2.1 SPSCK——SPI串行时钟 130
9.2.2 MOSI——主机数据输出、从机数据输入 130
9.2.3 MISO——主机数据输入、从机数据输出 130
9.2.4 SS——从模式选择 130
9.3 寄存器定义 130
9.3.1 控制寄存器SPIC1 130
9.3.2 控制寄存器SPIC2 131
9.3.3 SPI波特率寄存器SPIBR 132
9.3.4 状态寄存器SPIS 133
9.3.5 SPI数据寄存器SPID 134
9.4 功能描述 134
9.4.1 SPI时钟格式 135
9.4.2 SPI中断 137
9.4.3 模式故障检测 137
9.5 SPI通信程序举例 137
9.5.1 主机通信 137
9.5.2 从机通信 139
思考题 140
第10章 内部集成电路 142
10.1 导言 142
10.1.1 模块配置 142
10.1.2 外部信号描述 143
10.2 寄存器描述 143
10.3 功能描述 147
10.3.1 IIC协议 147
10.3.2 中断 150
10.4 软件开发 151
10.4.1 主机发送、从机接收 151
10.4.2 从机发送、主机接收 155
思考题 158
第11章 模/数转换 159
11.1 模/数转换基本概念 159
11.2 MC9S08QG8单片机ADC结构及特点 162
11.2.1 ADC电路结构 162
11.2.2 飞思卡尔MC9S08QG8 ADC模块特点 163
11.3 ADC模块中寄存器的定义 163
11.3.1 寄存器简述 163
11.3.2 配置寄存器——ADCCFG 163
11.3.3 引脚使能控制寄存器1——APCTL1 164
11.3.4 状态控制寄存器——ADCSC1 165
11.3.5 状态和控制寄存器——ADCSC2 166
11.3.6 数据结果高位寄存器ADCRH和数据结果低位寄存器ADCRL 167
11.3.7 比较值高位寄存器ADCCVH和比较值低位寄存器ADCCVL 168
11.4 ADC模块工作状态解析 168
11.4.1 ADC电源及功耗 168
11.4.2 ADC工作过程 168
11.4.3 时钟选择和分频控制 169
11.4.4 引脚使能控制 169
11.4.5 硬件触发 170
11.4.6 总的转换时间 170
11.5 应用实例 171
思考题 176
第12章 S08系列单片机C语言编程 177
12.1 新建C语言工程 177
12.1.1 利用向导自动建立项目 177
12.1.2 项目包含文件分析 179
12.1.3 为主函数添加功能 182
12.2 编译器特性及参数设置 183
12.2.1 编译器的输入/输出文件 184
12.2.2 编译器前端 184
12.2.3 编译器后端 189
12.2.4 C语言的#pragma预编译指令 192
12.3 C语言与汇编语言的混合编程 197
12.3.1 C语言程序访问汇编语言常量、变量 198
12.3.2 在汇编语言程序中访问C语言定义的常量、变量 198
12.3.3 C语言程序调用汇编语言子程序 198
12.4 HC08的高效C程序设计 199
12.4.1 基本数据类型 200
12.4.2 局部变量与全局变量 201
12.4.3 直接寻址页变量 201
12.4.4 循环 202
12.4.5 数据结构 203
12.4.6 编程实例 203
思考题 206
附录A 207
附录B 211