目录 1
第1章 嵌入式系统中的C语言编程 1
1.1 简介 1
1.2 什么是“嵌入式系统”? 1
1.3 应选用何种处理器? 2
1.4 应该使用哪种编程语言? 6
1.5 立选用何种操作系统? 8
1.6 怎样开发嵌入式软件? 11
1.7 结论 13
第2章 8051系列微控制器简介 15
2.1 简介 15
2.2 芯片命名的含义是什么? 15
2.3 标准8051芯片的外围接口 16
2.4 复位的要求 18
2.5 时钟频率和性能 19
2.6 存储器的问题 21
2.7 I/O管脚 27
2.8 定时器 27
2.9 中断 28
2.10 串行接口 30
2.11 能耗 30
2.12 结论 32
第3章 你好,嵌入式世界 33
3.1 介绍 33
3.2 安装Keil软件以及装载项目 34
3.3 配置仿真器 35
3.5 运行仿真 38
3.4 创建目标程序 38
3.6 解析程序 42
3.7 其他:建造硬件 54
3.8 结论 55
第4章 读取开关值 57
4.1 介绍 57
4.2 读取端口管脚的基本技巧 58
4.3 举例:字节读写 59
4.4 举例:位读写(简单的版本) 61
4.5 举例:位读写(通用版本) 62
4.6 需要上拉电阻 67
4.7 开关跳变的处理 69
4.8 举例:读开关输入(基本代码) 70
4.9 举例:数山羊 75
4.10 结论 80
第5章 为代码添加结构 81
5.1 介绍 81
5.2 面向对象的C语言编程 82
5.3 页目头文件(Main.H) 88
5.4 端口头文件(Port.H) 93
5.5 举例:重新构造例程“Hello,EmbeddedWorld” 96
5.6 举例:重新构造数山羊的例程 102
5.7 更多例子 111
5.8 结论 111
第6章 满足实时性的限制条件 113
6.1 介绍 113
6.2 利用定时器0和定时器1来创建“硬件延时” 116
6.3 举例:产生50ms的精确延时 120
6.4 举例:创建可移植的硬件延时 124
6.6 “定时溢出”机制的需要 129
6.5 为何不用定时器2? 129
6.7 创建循环定时溢出 130
6.8 举例:测试循环溢出 132
6.9 举例:可靠性较高的开关接口 134
6.10 创建硬件定时溢出 136
6.11 举例:测试硬件定时溢出 139
6.12 结论 142
第7章 创建嵌入式操作系统 143
7.1 介绍 143
7.2 简单嵌入式OS的基础 147
7.3 介绍sEOS 151
7.4 使用定时器0或定时器1 160
7.6 其他系统架构 165
7.5 此七方法可移植吗? 165
7.7 使用sEOS时重要的设计思路 170
7.8 举例:牛奶巴斯德杀菌 172
7.9 结论 184
第8章 多状态系统和函数序列 187
8.1 介绍 187
8.2 实现多状态(时间驱动式)系统 189
8.3 举例:交通灯顺序排列 190
8.4 举例:电动恐龙 196
8.5 实现多状态(输入/时间驱动式)系统 202
8.6 举例:洗衣机的控制器 203
8.7 结论 212
9.2 什么是RS-232? 213
9.1 介绍 213
第9章 使用串行接口 213
9.3 RS-232仍然重要吗? 214
9.4 基本的RS-232协议 214
9.5 异步数据传输以及波特率 215
9.6 数据流控制 215
9.7 软件架构 216
9.8 使用片上UART进行RS-232通信 217
9.9 存储器的要求 220
9.10 举例:在PC机上显示经过的时间 220
9.11 串行菜单架构 232
9.12 举例:数据采集 233
9.13 举例:遥控机器人 247
9.14 结论 248
10.1 介绍 249
第10章 案例分析:入侵者警报系统 249
10.2 软件架构 251
10.3 本例中使用的主要软件组件 251
10.4 运行程序 252
10.5 软件 252
10.6 结论 278
第11章 学习总结 279
11.1 介绍 279
11.2 我们达到目标了吗? 279
11.3 更深入学习的建议 280
11.4 《PattemsforTime-TriggeredEmbeddedSystems》 281
11.5 《EmbeddedOperatingSystems》 282
11.6 结论 282