第1章 应用程序的设计步骤 1
1.1 设计任务书的编写 1
1.2 硬件电路设计 2
1.3 软件任务分析 3
1.4 数据类型和数据结构的规划 4
1.5 资源分配 4
1.6 编程及调试 5
1.7 编程语言与开发环境的选择 6
第2章 程序流程图与子程序设计 8
2.1 程序流程图 8
2.1.1 程序流程图的画法 9
2.1.2 从程序流程图到程序 11
2.2 子程序设计 13
2.2.1 结构化的程序设计风格 13
2.2.2 参数的使用 15
2.2.3 算法的合理性和可靠性 16
2.2.4 子程序的透明性设计 16
2.2.5 子程序的相容性设计 17
2.2.6 子程序的容错性设计 19
第3章 系统监控程序设计 20
3.1 监控程序的任务 20
3.2 监控程序的结构 21
3.2.1 作业顺序调度型 21
3.2.2 作业优先调度型 21
3.2.3 键码分析作业调度型 22
3.3 普通监控程序的设计方法 24
3.3.1 系统状态分析 25
3.3.2 状态转移分析 26
3.3.3 状态顺序编码型监控程序的设计方法 31
3.3.4 状态特征编码型监控程序的设计方法 36
3.3.5 监控程序的4种设计风格 41
3.4 菜单驱动的监控程序设计方法 42
3.4.1 系统功能分析和菜单结构设计 43
3.4.2 画面设计 43
3.4.3 监控程序设计方法 44
第4章 常用功能模块的设计 47
4.1 软件时钟 47
4.1.1 时钟系统的建立 47
4.1.2 时钟的校对 52
4.1.3 定时任务的触发与撤除 53
4.1.4 相对时钟(闹钟) 56
4.2 键盘 60
4.2.1 软件去抖动处理 60
4.2.2 连击的处理 60
4.2.3 复合键的处理 64
4.2.4 键盘编码 65
4.3 数码显示 66
4.3.1 显示模块在系统软件中的安排 66
4.3.2 显示配置与输出驱动 67
4.3.3 灭零处理 69
4.3.4 闪烁处理 70
4.3.5 模拟串行显示 71
4.4 无字库液晶显示屏 71
4.4.1 图文混合显示的基本原理 72
4.4.2 字符的显示 73
4.4.3 图形的显示 76
4.4.4 汉字的显示 83
4.4.5 汉字的排版及其画面的输出 86
4.5 有字库液晶显示屏 90
4.5.1 液晶屏的硬件接口 90
4.5.2 最底层驱动子程序 90
4.5.3 常用子程序 92
4.5.4 画面显示 99
4.6 触摸屏 102
4.6.1 触摸信息的获取 102
4.6.2 触摸位置的计算 103
4.6.3 按钮编号查询方法 105
4.6.4 触摸屏校准 107
第5章 抗干扰设计 110
5.1 干扰的作用机制及后果 110
5.2 抗干扰的硬件措施 111
5.2.1 抗串模干扰的措施 112
5.2.2 抗共模干扰的措施 113
5.3 数字信号输入/输出中的软件抗干扰措施 114
5.3.1 数字信号的输入方法 114
5.3.2 数字信号的输出方法 116
5.4 数字滤波 117
5.4.1 程序判断滤波 117
5.4.2 中值滤波 118
5.4.3 算术平均滤波 119
5.4.4 去极值平均滤波 119
5.4.5 加权平均滤波 122
5.4.6 滑动平均滤波 123
5.4.7 低通滤波 124
5.5 CPU抗干扰技术 125
5.5.1 人工复位 125
5.5.2 掉电保护 126
5.5.3 睡眠抗干扰 127
5.5.4 指令冗余 128
5.5.5 软件陷阱 129
5.5.6 看门狗系统 131
5.6 系统的恢复 133
5.6.1 系统复位 134
5.6.2 热启动过程 136
5.6.3 重要信息的恢复 136
5.6.4 系统状态的重入 139
第6章 容错设计 143
6.1 硬件故障的自诊断技术 144
6.1.1 CPU的诊断 144
6.1.2 程序存储器的诊断 150
6.1.3 RAM的诊断 151
6.1.4 A/D通道的诊断与校正 152
6.1.5 D/A通道的诊断 154
6.1.6 数字I/O通道的诊断 156
6.1.7 硬件自诊断模块 161
6.2 人机界面的容错设计 162
6.2.1 输入提示功能的设计 163
6.2.2 数据输入的容错设计 164
6.2.3 命令输入的容错设计 171
6.2.4 输入界面的安全性设计 173
6.2.5 输出界面的容错设计 178
6.3 软件的一般容错设计 179
6.3.1 堆栈溢出的预防 179
6.3.2 中断中的资源冲突及其预防 181
6.3.3 状态转移的条件审查 183
6.3.4 重要模块的安全措施 183
6.3.5 运算软件的容错设计 184
6.3.6 软件标志的使用 191
6.3.7 子程序的使用 193
6.4 互斥型输出的硬件容错设计 195
第7章 程序测试 199
7.1 程序测试的心理准备 199
7.1.1 程序测试的正确定义 199
7.1.2 程序测试结果的正确评价 200
7.1.3 培养正常的测试心理状态 201
7.2 程序测试方法 202
7.2.1 程序会审和口头宣讲 202
7.2.2 白盒测试法 203
7.2.3 黑盒测试法 205
7.2.4 自顶向下测试法 208
7.2.5 自底向上测试法 209
7.3 程序纠错 209
7.3.1 程序跟踪法 210
7.3.2 分析推理法 210
7.3.3 纠错原则 210
附录A 完整的应用程序样本 212
A.1 状态顺序编码,监控程序在主程序中(汇编语言) 212
A.2 状态特征编码,监控程序在定时中断中(汇编语言) 223
A.3 状态顺序编码,监控程序在主程序中(C51语言) 233
A.4 状态特征编码,监控程序在定时中断子程序中(C51语言) 239
附录B MCS-51单片机实用子程序库 246
B.1 MCS-51定点运算子程序库及其使用说明 246
B.2 MCS-51浮点运算子程序库及其使用说明 271
B.3 MCS-51高精度浮点运算子程序库及其使用说明 307
参考文献 354