第1章 深入理解嵌入式C 1
1. 1概述 1
1.1.1特性 1
1.1.2引脚排列与描述 2
1. 1. 3特殊功能寄存器 4
1. 2单片机最小系统与开发工具 5
1. 2. 1 Tiny51核心模块 5
1. 2. 2复位电路 5
1. 2. 3晶体振荡电路 7
1.2.4单片机在线仿真与编程 7
1. 3 SDCC扩展 9
1. 3. 1 SDCC简介 9
1. 3. 2应用示例 10
1.3.3关键字与数据类型 14
1. 4存储器类语言 15
1.4.1存储类型 15
1.4.2存储模式 17
1.4.3特殊功能寄存器数据类型 18
1.4.4位数据类型 18
1.4.5存储器绝对寻址 18
1.4.6指针 19
1. 5函数 21
1.5.1函数参数和局部变量 21
1.5. 2覆盖 22
1.5. 3使用专用寄存器组 23
1. 6深入理解嵌入式C 23
1. 6. 1概述 23
1. 6. 2方法 24
1.6.3函数调用与参数传递 24
1. 6. 4函数返回 29
l.6. 5局部变量存储 31
1. 7经典范例程序设计 35
1. 7. 1 LED流水灯范例 35
1.7.2蜂鸣器驱动范例 38
1.7.3数码管动态扫描显示驱动范例 38
1.7.4键盘动态扫描驱动范例 49
第2章 特殊功能部件与外设 55
2. 1中断系统 5
2.1.1中断概念 5
2. 1. 2 80C51的中断结构 56
2.1.3相关寄存器 57
2. 1. 4中断向量 58
2.1.5中断操作 58
2. 1. 6使能和禁止中断 63
2. 2定时/计数器 64
2. 2. 1相关寄存器 66
2.2. 2定时/计数器模式 68
2.2.3定时器查询延时 72
2. 2.4定时器中断延时 75
2.2.5无源蜂鸣器驱动程序 78
2. 2. 6数码管动态扫描演示程序 82
2. 2. 7测量负脉冲 83
2. 3看门狗 85
2. 3. 1看门狗的作用 85
2.3.2看门狗的工作原理 85
2.3. 3看门狗定时器的结构 87
2. 3.4寄存器描述 88
2.3. 5看门狗周期值设置 88
2. 3. 6应用示例 89
2. 4 I2C总线及其驱动程序 91
2. 4. 1I2C简介 91
2.4.2决策 91
2. 4. 3软件接口 92
2.4.4基本时序代码 94
2. 4. 5外部接口代码 99
2. 4. 6 E2PROM读/写范例 103
2.4.7 CAT1024驱动程序 105
2.4. 8温度的测量 108
2. 5串行口及其驱动程序 110
2.5.1硬件基础 110
2.5.2决策 115
2.5. 3软件接口 116
2. 5. 4初始化 117
2.5.5发送数据 119
2.5.6接收数据 121
2. 5. 7测试用例 123
第3章 数据结构与计算方法初步 126
3. 1简单阈值控制算法 126
3. 1. 1算法原理 127
3.1.2应用实例 129
3. 2循环队列 130
3.2. 1队列的逻辑结构和基本运算 130
3. 2. 2队列的存储结构 131
3. 2. 3循环队列的运算 133
3. 3常用检错算法 134
3. 3. 1奇偶校验 134
3. 3. 2和校验 135
3. 3. 3循环冗余校验 136
3.4应用实例 140
3. 4. 1 Hex文件 140
3.4. 2通信编程 141
第4章 保险箱密码锁控制器(方案一) 147
4. 1概述 147
4.1.1保险箱 147
4. 1. 2锁芯机械结构 147
4. 1. 3密码锁控制器 148
4.1.4密码锁工作原理 149
4.2准备工作 149
4. 2. 1概述 149
4. 2. 2使用说明 149
4. 2. 3硬件概要设计 150
4. 2. 4软件概要设计 151
4.3硬件驱动设计 152
4.3. 1延时驱动 152
4.3.2锁驱动 155
4.3. 3可复用的硬件驱动 157
4.4虚拟驱动设计 157
4.4. 1虚拟锁驱动 157
4.4. 2虚拟键盘驱动 159
4. 4. 3虚拟蜂鸣器驱动 164
4.4.4虚拟显示器驱动 166
4.4. 5虚拟存储器驱动 166
4. 5主程序设计 168
4. 5. 1准备工作 168
4.5.2编写代码 170
4.6直流电机及其功率接口 175
4. 6. 1概述 175
4.6.2直流电机的工作原理 176
4.6.3直流电机的单向驱动 176
4. 6.4直流电机的双向驱动 179
第5章TinyOS51嵌入式操作系统微小内核 185
5. 1基础知识 185
5.1.1概述 185
5. 1. 2 ﹤setjmph>头文件 189
5. 1. 3变量命名规则 192
5. 1. 4范例分析 193
5.1.5 setjmp与longjmp的实现 195
5. 2最简单的多任务模型 199
5. 2. 1双任务切换模型 199
5.2.2待解决的问题 200
5.2.3 setTaskJmp()的实现 201
5.2.4任务切换模型范例分析 202
5. 3协作式多任务操作系统 205
5. 3. 1整体规划 205
5. 3. 2任务控制块 208
5. 3. 3内部变量初始化 209
5. 3. 4创建任务 210
5. 3. 5启动多任务环境 212
5.3. 6任务切换 212
5. 3. 7删除任务 214
5. 3.8小结 214
5.4时间片轮询多任务操作系统 215
5.4. 1概述 215
5. 4. 2整体规划 216
5.4. 3任务控制块 218
5.4.4内部变量初始化 218
5. 4. 5创建任务 218
5.4. 6启动多任务环境 220
5.4.7任务调度 220
5.4.8时钟节拍中断 221
5. 4. 9 Ionjmplnlsr() 222
5.4.10任务延时 223
5. 4. 11删除任务 224
5. 5信号量 225
5. 5. 1概述 225
5. 5. 2整体规划 226
5.5.3任务控制块 228
5. 5. 4内部变量初始化 230
5. 5. 5信号量定义 230
5. 5. 6创建信号量 230
5. 5. 7获得信号量 232
5. 5.8发送信号量 234
5. 5. 9删除任务 235
5. 6消息邮箱 236
5. 6. 1概述 236
5. 6. 2整体规划 236
5. 6. 3任务标志与消息邮箱 239
5. 6.4创建消息邮箱 239
5. 6. 5获得消息 240
5. 6. 6发送消息 242
第6章 程序设计基础 245
6. 1任务设计 245
6. 1. 1任务的分类 245
6. 1. 2任务的划分 247
6. 2系统函数使用概述 247
6. 2. 1系统函数总览 247
6. 2. 2中断服务程序调用函数的限制 248
6. 2. 3系统函数的分类 248
6.3系统函数的使用场合 248
6. 3. 1时间管理 248
6. 3. 2资源同步 250
6.3.3行为同步 250
6. 4时间管理 251
6. 5临界区 253
6. 6信号量 254
6. 6. 1简介 254
6. 6. 2信号量的工作方式 255
6.6. 3任务同步中断服务程序 256
6. 6. 4任务间同步 257
6. 6. 5资源同步 259
6. 7消息邮箱 260
6.7.1简介 260
6. 7. 2消息邮箱的工作方式 261
6.7.3中断服务程序与任务通信 261
6. 7.4任务间数据通信 263
第7章 保险箱密码锁控制器(方案二) 266
7. 1软件开发流程 266
7. 2决策 267
7. 2. 1概述 267
7. 2. 2总体目标 267
7.2.3使用说明 267
7.2.4限制条件 267
7. 2. 5具体开发目标 268
7. 2. 6其他决策内容 268
7. 3模块划分 269
7.3. 1概述 269
7. 3. 2硬件层 269
7. 3. 3设备驱动层 269
7. 3.4虚拟设备层 270
7. 3. 5应用层 270
7. 4接口定义 270
7.4. 1密码的输出、存储与显示 270
7.4.2应用层接口 270
7. 4. 3虚拟设备层接口 271
7. 4.4设备驱动层接口 272
7. 5编写代码 272
7. 5. 1概述 272
7. 5. 2可复用的驱动 273
7. 5. 3 12 C驱动 273
7.5.4 CAT1024驱动 274
7. 5. 5虚拟键盘驱动 275
7. 5. 6虚拟蜂鸣器驱动 278
7. 5. 7人机交互程序 280
7. 5. 8主程序 284
7. 6测试、验收与小结 286
参考文献 287