第1章 单片机概述 1
1.1 单片机简介 1
1.2 单片机的广泛应用 1
1.3 单片机的发展历史 3
1.4 从门电路到单片机 3
1.4.1 半导体晶体管的开关特性 3
1.4.2 组合逻辑电路 4
1.4.3 时序逻辑电路 8
1.4.4 单片机的硬件构成 9
1.5 数制转换 10
1.6 飞思卡尔16位单片机 12
1.6.1 Freescale 16位单片机命名参考规则 12
1.6.2 MC9S12X系列单片机 12
第2章 S12XS单片机的内部结构分析 15
2.1 MC9S12XS单片机的性能 15
2.1.1 MC9S12XS内部模块 15
2.1.2 MC9S12XS单片机的引脚及功能 16
2.2 CPU的构成 19
2.2.1 算术逻辑单元(ALU) 19
2.2.2 控制单元 20
2.2.3 核心寄存器组 21
2.3 存储器 22
2.3.1 基本存储空间 22
2.3.2 扩展地址空间 23
2.3.3 全局存储器映射 23
2.3.4 MC9S12XS128全局存储器映射 25
2.4 并行I/O口 26
2.4.1 A、B、E和K口 27
2.4.2 T、S、M、P、H和J口 28
2.4.3 AD口 29
2.5 时钟与复位模块 29
2.5.1 时钟模块 29
2.5.2 锁相环应用范例 33
2.5.3 复位 35
第3章 单片机最小系统与软件运行环境 36
3.1 硬件电路设计 36
3.1.1 单片机电源电路设计 36
3.1.2 S12单片机时钟电路设计 37
3.1.3 复位电路设计 38
3.1.4 BDM接口电路设计 38
3.2 Code Warrior V5.1软件使用指南 39
3.2.1 软件安装 39
3.2.2 关于BDM驱动 40
3.2.3 创建一个新的工程 40
3.3 并口输出范例 43
3.3.1 编写简单的应用程序 44
3.3.2 LED闪动程序 45
3.3.3 复位自检程序 45
3.3.4 流水灯程序 46
第4章 指令系统 48
4.1 S12汇编指令集 48
4.2 指令的分类 48
4.2.1 数据传送类指令 48
4.2.2 算术运算类指令 50
4.2.3 逻辑运算类指令 52
4.2.4 程序控制指令 55
4.3 寻址方式 57
4.4 汇编语言程序设计 59
4.4.1 汇编管理指令 59
4.4.2 汇编语言程序设计举例 60
第5章 中断系统 61
5.1 中断的概念 61
5.2 中断源 61
5.3 S12XS单片机的中断响应和中断返回 64
5.4 优先权排队 65
5.5 中断嵌套 65
5.6 中断服务子程序设计 66
5.6.1 IRQ使用范例 66
5.6.2 XIRQ使用范例 68
第6章 串行口 71
6.1 串行通信概述 71
6.1.1 串行通信的两种基本方式 71
6.1.2 发送时钟和接收时钟 72
6.1.3 串行通信标准 73
6.2 同步外设接口SPI模块 75
6.2.1 SPI模块概述 75
6.2.2 SPI寄存器 76
6.2.3 SPI应用范例 80
6.3 SCI模块 82
6.3.1 SCI模块的结构及功能 82
6.3.2 SCI模块寄存器 84
6.3.3 SCI应用范例 87
第7章 定时器相关模块 101
7.1 定时器/计数器概述 101
7.2 TIM模块 101
7.2.1 TIM模块的结构及功能 102
7.2.2 TIM模块寄存器 103
7.2.3 TIM模块应用范例 108
7.3 PIT模块 114
7.3.1 PIT模块的结构及功能 115
7.3.2 PIT模块寄存器 116
7.3.3 PIT模块应用范例 118
7.4 PWM模块 124
7.4.1 PWM功能 124
7.4.2 PWM模块寄存器 124
7.4.3 PWM模块应用范例 128
第8章 A-D转换模块 134
8.1 A-D转换模块概述 134
8.1.1 A-D转换原理 134
8.1.2 S12XS系列MCU内置A-D转换模块 135
8.2 A-D转换寄存器 136
8.2.1 A-D输入使能寄存器 136
8.2.2 A-D控制寄存器 136
8.2.3 A-D比较寄存器 140
8.2.4 A-D转换状态寄存器 140
8.2.5 A-D结果寄存器 141
8.3 A-D转换应用范例 141
8.3.1 应用注意事项 141
8.3.2 应用范例 142
第9章 嵌入式实时操作系统使用范例 144
9.1 嵌入式实时操作系统 144
9.1.1 嵌入式实时操作系统简介 144
9.1.2 嵌入式实时操作系统μC/OS-Ⅱ 144
9.2 移植μC/OS-Ⅱ 145
9.2.1 重新定义内核的大小和功能 147
9.2.2 OS_CPU.H 150
9.2.3 编写与硬件相关的代码 152
9.2.4 中断服务子程序OSTickISR() 152
9.2.5 任务堆栈初始化函数OSTask-StkInit() 153
9.2.6 让优先级最高的就绪态任务开始运行函数OSStartHighRdy() 155
9.2.7 任务级任务切换函数OSCtxSw() 155
9.2.8 中断级任务切换函数OSIntCtxSw() 157
9.2.9 相关接口函数 158
9.3 应用范例 159
9.3.1 相关声明 159
9.3.2 主函数main() 160
9.3.3 系统任务函数AppStartTask() 161
9.3.4 用户任务1 AppTask1() 162
9.3.5 用户任务2 AppTask2() 164
9.3.6 用户任务3 AppTask3() 165
9.3.7 链接与程序定位 167
第10章 单片机测控系统设计 168
10.1 微机测控系统的组成 168
10.1.1 微机测控系统硬件 168
10.1.2 微机测控系统软件 169
10.2 微机测控系统的常用器件 169
10.2.1 集成运算放大器及其应用 169
10.2.2 电压比较器 173
10.2.3 隔离放大器 174
10.2.4 光耦合器 176
10.2.5 固态继电器 178
10.3 键盘、显示接口 179
10.3.1 键盘 179
10.3.2 7段LED显示 180
10.3.3 键盘显示接口范例 181
第11章 飞思卡尔智能车设计范例 185
11.1 关于飞思卡尔智能车大赛 185
11.2 光电智能车设计技术 186
11.2.1 机械结构及安装工艺 186
11.2.2 硬件电路设计 190
11.2.3 算法实现 197
11.2.4 系统调试 199
11.3 CCD摄像头智能车设计技术 209
11.3.1 系统方案 209
11.3.2 机械结构的设计与实现 209
11.3.3 硬件电路设计 210
11.3.4 软件系统的设计与实现 212
附录 260
附录A S12X CPU汇编指令表 260
附录B 最小系统板和扩展板的PCB元器件布置图 304
参考文献 306