第1部分 嵌入式系统入门导引 2
第1章 概述 2
1.1 嵌入式系统的含义与发展历史 2
1.1.1 嵌入式系统与单片机 2
1.1.2 MCU的发展简史 4
1.1.3 MCU在我国的应用与教学概况 5
1.2 嵌入式系统常用术语 6
1.2.1 与硬件相关的术语 6
1.2.2 与通信相关的术语 8
1.2.3 与功能模块相关的术语 8
1.2.4 与嵌入式软件相关的术语 9
1.3 嵌入式系统开发方法导引 10
1.3.1 嵌入式产品的一般构成 10
1.3.2 嵌入式产品的一般开发方法 11
1.4 嵌入式系统的特点与学习建议 13
1.4.1 嵌入式系统的特点 13
1.4.2 嵌入式系统的学习建议 15
练习题 16
第2章 Freescale HC08/S08/RS08 MCU概述 17
2.1 08系列单片机简介 17
2.1.1 Freescale单片机的命名规则 17
2.1.2 08系列单片机资源简介 18
2.2 HC08系列单片机 19
2.2.1 MC908GP32单片机的性能概述 20
2.2.2 内部结构简图与引脚功能 20
2.2.3 GP32最小系统 23
2.2.4 GP32存储器组织 24
2.3 HCS08系列单片机 25
2.3.1 HCS08系列MCU的基本特征 25
2.3.2 MC9S08GB60的内部结构简图与引脚功能 25
2.3.3 GB60存储器组织 28
2.4 RS08系列单片机 29
2.4.1 RS08系列MCU的基本特征 29
2.4.2 MC9RS08KA2的内部结构简图与引脚功能 29
2.4.3 KA2存储器组织 31
2.5 进一步讨论 32
2.5.1 内存大端、小端排序问题 32
2.5.2 嵌入式系统MCU的选择问题 32
练习题 33
第3章 HC08/S08/RS08 CPU 34
3.1 HC08 CPU基本构成 34
3.2 寻址方式 37
3.3 指令系统 40
3.3.1 数据传送类指令 42
3.3.2 算术运算类指令 44
3.3.3 逻辑运算类指令 48
3.3.4 位操作类指令 49
3.3.5 移位类指令 50
3.3.6 程序控制类指令 51
3.3.7 其他指令 54
3.4 HCS08 CPU与HC08 CPU的比较 55
3.5 RS08 CPU简介 56
3.5.1 RS08 CPU和RAM的寄存器 56
3.5.2 RS08分页方案 57
3.5.3 RS08的寻址方式 57
3.5.4 RS08的子程序调用 58
3.5.5 RS08的指令集 59
3.6 08汇编语言基础 60
3.6.1 08汇编源程序格式 60
3.6.2 08伪操作指令 62
练习题 64
第4章 通用I/O接口及第一个汇编工程 66
4.1 通用I/O接口的基本概念及连接方法 66
4.2 MC908GP32的通用I/O 67
4.2.1 A口 68
4.2.2 B口 69
4.2.3 C口、D口和E口 69
4.3 汇编工程文件组织与第一个汇编入门程序 70
4.4 进一步讨论 78
4.4.1 I/O口的输入和输出电流 78
4.4.2 端口上拉问题 79
练习题 81
第5章 08C语言及第一个08C工程 83
5.1 标准C语言的基本语法 83
5.1.1 数据类型 83
5.1.2 运算符 84
5.1.3 流程控制 85
5.1.4 函数 88
5.1.5 指针 89
5.1.6 结构体 91
5.1.7 共用体 92
5.1.8 位域 93
5.1.9 编译预处理 94
5.1.10 用typedef定义类型 95
5.2 08C语言的使用 96
5.2.1 寄存器和I/O口的使用 96
5.2.2 位操作方法 97
5.2.3 中断处理 98
5.2.4 08C的常用库函数 100
5.2.5 08C语言与汇编语言的混合编程 101
5.2.6 08C与标准C的其他不同之处 103
5.3 08C工程文件组织 103
5.4 进一步讨论 110
5.4.1 变量的定义 110
5.4.2 变量存储空间分配 111
5.4.3 数据类型的选用 113
5.4.4 位操作的其他实现方法 114
5.4.5 算法设计问题 115
练习题 116
第2部分 嵌入式系统的基础应用第6章 源程序编译及调试 118
6.1 MT-IDE集成开发套件 118
6.1.1 硬件平台 119
6.1.2 软件概述 122
6.2 MT-IDE集成开发环境的使用 123
6.2.1 运行第一个汇编工程实例 123
6.2.2 编译过程中产生的文件 126
6.2.3 新建一个汇编工程 128
6.2.4 运行第一个C工程实例 129
6.3 CodeWarrior软件简介 131
6.3.1 CodeWarrior的安装 132
6.3.2 新建工程 132
6.3.3 编译、链接与仿真调试 134
6.4 进一步讨论 135
6.4.1 MCU中Flash程序的保密机制 135
6.4.2 验证MCU中程序的正确性 135
练习题 136
第7章 串行通信接口(SCI) 137
7.1 异步串行通信的基础知识 137
7.1.1 基本概念 137
7.1.2 RS-232C总线标准 139
7.2 电平转换电路与SCI通用编程原理 141
7.2.1 SCI的外围硬件电路 141
7.2.2 SCI的基本编程原理 141
7.3 GP32 SCI模块寄存器 142
7.4 串行口初始化与收发编程的基本方法 146
7.5 串行通信通用函数与测试实例 148
7.5.1 串行通信子函数 148
7.5.2 查询方式工程文件 151
7.5.3 中断方式工程文件 152
7.5.4 通过PC方程序调试串行通信 155
7.6 串行通信进一步讨论 155
7.6.1 唤醒功能 156
7.6.2 协议和控制流问题 157
7.6.3 用通用I/O接口模拟SCI接收数据 157
练习题 160
第8章 键盘 161
8.1 键盘基本问题与GP32的键盘中断口 161
8.1.1 键盘模型及接口 161
8.1.2 键盘的基本问题 162
8.1.3 MC908GP32单片机的键盘中断模块 163
8.2 汇编语言键盘中断模块编程实例 165
8.2.1 按键识别与键盘定义子程序 165
8.2.2 键盘中断编程举例 169
8.3 08C语言键盘中断模块编程实例 171
8.3.1 按键识别与键盘定义函数 172
8.3.2 键盘中断编程08C语言举例 174
练习题 176
第9章 LCD与LED编程 177
9.1 数码管编程实例 177
9.1.1 扫描法LED显示编程原理 177
9.1.2 接口实例 178
9.1.3 数码管汇编语言实例 179
9.1.4 数码管08C语言实例 183
9.2 LCD概述 183
9.2.1 LCD的特点 183
9.2.2 LCD的分类 184
9.3 点阵字符型LCD的接口特性 185
9.3.1 点阵字符型液晶显示模块的基本特点 185
9.3.2 HD44780的引脚与时序 186
9.3.3 HD44780的编程结构 187
9.3.4 HD44780的指令集 188
9.4 点阵字符型LCD编程实例 190
9.4.1 LCD汇编编程工程实例 191
9.4.2 LCD 08C编程实例 196
练习题 197
第10章 SPI与模拟量转换 198
10.1 SPI的基本工作原理 198
10.1.1 SPI概述 198
10.1.2 SPI的数据传输 199
10.1.3 SPI模块的时序 199
10.2 GP32的SPI模块编程基础 201
10.2.1 SPI模块的引脚 201
10.2.2 SPI模块的寄存器 202
10.2.3 SPI编程基本方法 204
10.3 A/D和D/A转换的基本问题 205
10.4 MC908GP32内部A/D转换模块 206
10.4.1 GP32 A/D转换模块寄存器 207
10.4.2 A/D转换模块的基本编程方法 208
10.5 GP32 MCU A/D转换编程实例 209
10.5.1 A/D转换08C语言编程实例 209
10.5.2 A/D转换汇编语言编程实例 212
10.6 利用SPI进行高位A/D芯片的扩展 213
10.6.1 A/D芯片TLC2543概述 213
10.6.2 SPI模块与TLC2543的接口扩展 215
10.7 利用SPI进行高位D/A芯片的扩展 218
10.7.1 D/A芯片TLV5608概述 218
10.7.2 SPI模块与TLV5608的接口实现 219
10.7.3 扩展D/A的程序实现 219
10.8 常用传感器及采样电路简介 223
练习题 226
第11章 GB60的IIC模块及其应用 227
11.1 IIC总线概述 227
11.2 IIC总线工作原理 228
11.3 GB60的IIC模块的编程基础 232
11.3.1 GB60 IIC模块寄存器 232
11.3.2 GB60 IIC模块编程 236
11.4 IIC应用实例——GB60与PCF8563时钟芯片通信 242
11.4.1 PCF8563芯片简介 242
11.4.2 MCU使用专门的IIC模块与PCF8563时钟芯片通信 245
练习题 248
第12章 定时接口模块 249
12.1 计数器/定时器的基本工作原理 249
12.1.1 实现计数与定时的基本方法 249
12.1.2 MC908GP32 MCU的定时接口的基本原理概述 250
12.2 定时器模块的编程基础 252
12.2.1 定时器模块的3个基本寄存器 252
12.2.2 定时溢出中断汇编工程实例 254
12.2.3 定时溢出中断08C工程实例 259
12.3 定时器模块的输入捕捉功能 260
12.3.1 输入捕捉的基本含义 260
12.3.2 输入捕捉的寄存器 260
12.3.3 输入捕捉中断编程实例 262
12.4 定时器模块的输出比较功能 266
12.4.1 输出比较的基本含义 266
12.4.2 输出比较寄存器 267
12.4.3 不带缓冲输出比较与带缓冲的输出比较 268
12.5 定时器模块的脉宽调制输出功能 269
12.5.1 脉冲宽度调制器PWM 269
12.5.2 用定时器实现PWM 270
12.5.3 不带缓冲脉宽调制输出与带缓冲脉宽调制输出 270
12.5.4 PWM 08C工程实例 271
12.5.5 PWM汇编工程实例 274
练习题 274
第13章 Flash存储器 276
13.1 Flash存储器概述与编程模式 276
13.1.1 Flash存储器的基本特点与编程模式 277
13.1.2 HC08系列单片机Flash存储器的特点与编程模式 277
13.2 MC908GP32单片机Flash存储器编程方法 279
13.2.1 Flash存储器编程的基本概念 279
13.2.2 Flash存储器的编程寄存器 279
13.2.3 Flash存储器的编程过程 281
13.3 GP32单片机Flash在线编程汇编语言实例 283
13.3.1 Flash存储器的擦除及写入汇编子程序 283
13.3.2 Flash存储器在线编程汇编主程序及PC方程序 288
13.4 GP32单片机Flash在线编程08C语言实例 291
13.5 HCS08系列单片机Flash编程方法 292
13.5.1 Flash存储器的编程寄存器 292
13.5.2 Flash存储器的编程过程 295
13.5.3 Flash存储器的安全性 297
练习题 297
第14章 其他功能模块 299
14.1 CONFIG寄存器 299
14.2 时钟发生模块与锁相环 300
14.2.1 PLL锁相环 301
14.2.2 GP32的CGM结构及外部连接 302
14.2.3 CGM的编程基础 304
14.2.4 PLL参数计算与编程步骤 307
14.2.5 初始化及PLL编程实例 309
14.3 中断 311
14.3.1 中断源与中断向量地址 311
14.3.2 IRQ引脚中断 311
14.3.3 断点模块BRK与软件中断SWI指令 312
14.4 复位与系统集成模块 312
14.4.1 复位 312
14.4.2 系统集成模块 313
14.5 低功耗模式与看门狗功能 314
14.5.1 低功耗模式 314
14.5.2 系统正常操作监视模块 315
练习题 315
第3部分 嵌入式系统应用实例 318
第15章 实际应用系统设计实例 318
15.1 应用系统概要 318
15.1.1 应用系统概要 318
15.1.2 应用系统需求分析 318
15.1.3 应用系统设计分析 319
15.2 硬件设计 321
15.2.1 芯片选型 321
15.2.2 设计框图 322
15.2.3 MCU引脚汇总列表 323
15.2.4 各模块硬件分析与设计 324
15.3 软件设计 327
15.3.1 编写硬件驱动程序注意点 327
15.3.2 各模块头文件 327
15.3.3 各模块子程序的前导注释 329
练习题 331
第16章 JB8的USB 1.1模块与应用实例 332
16.1 USB概述 332
16.2 USB系统基本概念 333
16.2.1 USB主机 333
16.2.2 USB设备 334
16.3 USB物理特性 335
16.3.1 USB接口 335
16.3.2 USB信号 336
16.3.3 检测设备连接和速度 337
16.4 USB的通信协议 338
16.4.1 包 339
16.4.2 信息包格式 340
16.4.3 事务 341
16.4.4 USB传输类型 343
16.4.5 设备列举 344
16.5 JB8 USB模块的编程方法 348
16.5.1 MC68HC908JB8简介 349
16.5.2 USB功能模块 349
16.5.3 USB寄存器 352
16.5.4 USB中断 358
16.5.5 JB8 USB 1.1通信编程 358
16.6 PC方USB 1.1编程实例 365
16.6.1 PC方USB 1.1编程步骤 365
16.6.2 PC方USB 1.1 VB编程实例 370
练习题 372
第17章 GZ60的CAN模块及应用实例 373
17.1 CAN技术规范 373
17.1.1 CAN的基本概念 373
17.1.2 报文传输和帧结构 375
17.1.3 位定时与同步 379
17.2 MSCAN08模块 380
17.2.1 MSCAN08特性 380
17.2.2 外部引脚 380
17.2.3 报文存储结构 381
17.2.4 标识符校验滤波 381
17.2.5 中断 384
17.2.6 协议保护 384
17.3 MSCAN08通信接口硬件电路 385
17.4 MSCAN08模块的编程结构 385
17.4.1 缓冲区结构 386
17.4.2 控制寄存器 388
17.5 CAN通信子函数与测试实例 395
17.5.1 CAN通信子函数 395
17.5.2 CAN总线通信回环工作方式测试工程文件 400
17.5.3 CAN总线接口正常工作方式测试工程文件 402
练习题 405
附录A 寄存器及中断向量表 406
A.1 GP32寄存器及中断向量表 406
A.2 GB60寄存器及中断向量表 410
附录B CPU08按字母索引的指令系统 416
附录C HC08标准头文件实例 426
C.1 GP32汇编语言用头文件 426
C.2 GP32 08C语言用头文件 428
附录D 08C函数库 431
附录E Freescale常用封装形式及实际大小 435
附录F 苏州大学Freescale嵌入式系统实验室已有核心板及评估板 436
附录G 本书配套教学资料目录结构 437
参考文献 438