第1章 单片机基础知识 1
1.1 主流MCU及原始厂商 1
1.1.1 51单片机 1
1.1.2 MSP430单片机 2
1.1.3 TMS单片机 3
1.1.4 STM32单片机 4
1.1.5 PIC单片机 4
1.1.6 AVR单片机 5
1.1.7 STC单片机 6
1.1.8 NXP单片机 7
1.1.9 瑞萨单片机 8
1.2 单片机选型原则 8
1.2.1 性能 8
1.2.2 存储器 8
1.2.3 运行速度 9
1.2.4 I/O口 9
1.2.5 定时/计数器 9
1.2.6 串行接口 10
1.2.7 模拟电路功能 10
1.2.8 工作电压、功耗 10
1.2.9 封装形式 11
1.2.10 抗干扰性能、保密性 11
1.2.11 单片机的可开发性 11
1.2.12 其他方面 12
1.3 51单片机在国内的发展 12
1.4 单片机学习思路 14
1.4.1 C51编程必备基础知识 14
1.4.2 单片机硬件必备基础知识 14
第2章 按键处理 16
2.1 按键识别处理 16
2.1.1 按键识别 16
2.1.2 按键处理流程 18
2.2 独立按键扫描程序 20
2.3 键盘的消抖处理程序 23
2.4 矩阵键盘的处理 25
2.5 旋转编码开关的处理 26
2.5.1 旋转编码开关的工作原理 26
2.5.2 旋转编码开关的使用 27
2.5.3 旋转编码开关的识别程序 27
第3章 单片机模块化编程 29
3.1 模块化程序编程概述 29
3.1.1 模块化的方法 29
3.1.2 模块化程序设计的基本原则 30
3.1.3 模块化程序设计的优缺点 31
3.1.4 模块的功能划分 31
3.2 单片机模块化编程 31
3.2.1 建立头文件步骤 33
3.2.2 建立自己的工程模板 34
3.2.3 模块化编程方法 35
3.3 模块化编程的实例 38
3.4 模块化程序的建议 53
3.5 分层编程的思想 55
3.5.1 单片机的资源分层 55
3.5.2 单片机程序分层设计 56
第4章 单片机程序架构 59
4.1 主函数顺序调用 59
4.1.1 主函数顺序调用的一般结构 60
4.1.2 主函数顺序调用结构的特点 61
4.2 “界面函数”结构 62
4.2.1 界面函数一般结构 63
4.2.2 系统结构 65
4.3 定时器分配任务 67
4.3.1 界面函数构成程序的基础框架 67
4.3.2 结合定时器编程分析 69
4.3.3 任务分割 71
4.3.4 定时器分配任务程序结构总结 73
4.4 占用式与非占用式程序结构 75
4.4.1 占用式程序 75
4.4.2 占用式程序的缺点及改造 76
4.4.3 改造的本质 79
4.4.4 非占用式程序结构的优势 80
4.4.5 非占用式程序的一般结构 81
4.5 定时器执行任务 82
4.5.1 定时器执行任务的程序结构 82
4.5.2 定时器中任务函数的特点 84
4.5.3 过程任务的定时器化 85
4.5.4 定时器执行任务程序结构总结 92
4.6 最终目标 92
4.7 操作系统调度架构 93
第5章 单片机的实时系统 97
5.1 单片机实时性特点 97
5.2 多个实时性任务调度方法 99
5.2.1 单个任务的时间划分 99
5.2.2 程序实时性 100
5.3 单片机实时性规划 102
5.3.1 从释放CPU开始 102
5.3.2 多任务规划 105
第6章 51单片机操作系统开发 117
6.1 51单片机操作系统开发问题 117
6.2 51单片机操作系统开发思路 118
6.3 51单片机操作系统示例 120
第7章 C/C+编程规范 128
7.1 程序的版式 128
7.2 注释 131
7.3 标识符命名规则 135
7.4 可读性 137
7.5 变量和结构 139
7.6 函数和过程 143
7.7 程序效率 149
7.8 质量保证 152
7.9 代码编辑、编译、审查 158
7.10 代码测试、维护 159
7.11 宏 160
第8章 单片机项目开发流程 162
8.1 项目评估论证阶段 162
8.1.1 产品需求调研 162
8.1.2 项目方案选择 162
8.1.3 项目方案论证 165
8.2 项目实施阶段 165
8.2.1 项目方案设计 166
8.2.2 项目设计实施 169
8.3 项目维护阶段 171
8.3.1 硬件文档 171
8.3.2 软件文档 172
附录1 完整的时钟温度计程序 173
附录2 C51的模板化编程 201
2.1 通用编程模板 201
2.2 STC单片机常用函数模板 205
附录3 Keil C51编译器错误 225
3.1 致命错误 225
3.2 语法及语义错误 227
3.3 L51连接定位器使用错误提示 237
3.3.1 L51警告 237
3.3.2 L51错误 238
3.3.3 L51致命错误 240
3.3.4 异常信息 243
3.4 Keil C51的极限值 243
参考文献 244