第1章 Freescale单片机概述
1.1 Freescale 8位单片机
1.1.1 MC68HC08系列
1.1.2 MC68HCS08系列
1.1.3 MC9RS08系列
1.2 Freescale 16位单片机
1.2.1 Freescale 16位单片机命名参考规则
1.2.2 MC68HC12系列单片机
1.2.3 MC9S12系列单片机
1.2.4 MC9S12X系列单片机
1.3 Freescale 32位单片机
1.4 Freescale DSC型单片机
1.5 习题
第2章 MC9S12单片机的内核及片上资源
2.1 MC9S12单片机的内部结构及引脚功能
2.1.1 内部结构
2.1.2 引脚分配
2.1.3 CPU12内核结构
2.1.4 指令队列
2.1.5 堆栈
2.1.6 低功耗模式
2.2 MC9S12的存储器
2.2.1 存储空间分配
2.2.2 相关映射寄存器
2.3 寄存器区
2.4 复位、时钟和中断系统
2.4.1 复位模块
2.4.2 振荡器与时钟电路
2.4.3 中断系统
2.5 EEPROM和Flash的擦写操作
2.5.1 EEPROM的擦写操作
2.5.2 Flash的擦写操作
2.6 MC9S12片上外围功能模块简介
2.6.1 串行外设接口(SPI)
2.6.2 串行通信接口(SCI)
2.6.3 I2C总线接口
2.6.4 增强型捕捉定时器(ECT)
2.6.5 模数转换器(ATD)
2.6.6 脉宽调制模块(PWM )
2.6.7 CAN控制器
2.7 MC9S12单片机最小系统的硬件设计
2.7.1 时钟电路
2.7.2 串行口的RS-232驱动电路
2.7.3 BDM接口电路及功能
2.7.4 电源电路
2.7.5 复位电路
2.7.6 LED调试显示
2.8 习题
第3章 MC9S12单片机的指令系统及汇编语言程序设计
3.1 指令格式及寻址方式
3.1.1 隐含寻址
3.1.2 立即数寻址
3.1.3 直接寻址
3.1.4 扩展寻址
3.1.5 相对寻址
3.1.6 变址寻址
3.1.7 累加器变址寻址
3.1.8 带自动加、减的5位偏移量的变址寻址
3.2 指令系统
3.2.1 加载、存储指令
3.2.2 传送、交换指令
3.2.3 MOVE指令
3.2.4 加法、减法指令
3.2.5 二-十进制调整指令
3.2.6 加一、减一指令
3.2.7 比较、测试指令
3.2.8 逻辑运算指令
3.2.9 清零、求补、取反指令
3.2.10 乘法、除法指令
3.2.11 乘加指令
3.2.12 位测试、位操作指令
3.2.13 移位、循环指令
3.2.14 模糊逻辑指令
3.2.15 最大值、最小值指令
3.2.16 查表差值指令
3.2.17 转移指令
3.2.18 循环控制指令
3.2.19 跳转、子程序调用指令
3.2.20 中断指令
3.2.21 堆栈操作指令
3.2.22 其他指令
3.3 汇编语言程序设计
3.3.1 常量的表示
3.3.2 常用汇编伪指令
3.3.3 宏定义
3.3.4 汇编程序设计举例
3.4 习题
第4章 MC9S12单片机开发工具—CodeWarrior软件
4.1 CodeWarrior的安装
4.1.1 系统需求
4.1.2 CodeWarrior的安装与卸载
4.2 CodeWarrior集成开发环境介绍
4.2.1 CodeWarrior的功能特点
4.2.2 集成环境与功能设置
4.3 用CodeWarrior开发MC9S12系列单片机
4.3.1 建立和打开工程
4.3.2 编写程序源代码
4.3.3 编译和链接
4.4 软件仿真调试方法
4.4.1 菜单栏
4.4.2 工具栏
4.4.3 子窗口
4.5 BDM调试方法
4.5.1 BDM的制作
4.5.2 安装BDM的USB驱动程序
4.5.3 BDM接头定义和使用
4.5.4 BDM调试过程
4.6 监控程序调试方法
4.6.1 监控程序的下载
4.6.2 使用监控程序进行调试
4.6.3 认识S格式文件
4.7 GCC调试工具
4.7.1 GCC简介
4.7.2 用GCC开发HCS12单片机程序
4.8 习题
第5章 MC9S12的C语言程序设计及调试
5.1 使用C语言的好处
5.2 C语言编程的常见问题
5.2.1 关于循环次数
5.2.2 赋值与相等
5.2.3 多文件C语言工程的头文件
5.2.4 运算符的优先级及括号的使用
5.2.5 位运算的左移与右移
5.2.6 有争议的goto语句
5.2.7 内部函数和外部函数
5.2.8 空指针null
5.2.9 程序设计风格
5.3 MC9S12的C编程与ANSIC的不同
5.3.1 变量
5.3.2 资源映射
5.3.3 C语言的中断
5.3.4 标准C库
5.3.5 C语言入口
5.3.6 程序的链接与定位
5.3.7 程序举例
5.4 习题
第6章 MC9S12单片机I/O接口和功能模块
6.1 通用I/O接口
6.1.1 I/O接口的功能及设置方法
6.1.2 程序举例
6.2 片内串行总线接口
6.2.1 SPI总线接口
6.2.2 SCI总线接口
6.2.3 I2C总线接口
6.3 增强型捕捉定时器模块
6.3.1 ECT模块的功能描述
6.3.2 ECT模块的寄存器设置
6.3.3 ECT的应用设置
6.3.4 ECT的应用举例
6.4 ATD模块
6.4.1 ATD模块的结构组成及特点
6.4.2 ATD模块的设置
6.4.3 ATD模块的应用设置
6.4.4 ATD模块的中断系统
6.4.5 ATD的应用举例
6.5 PWM模块
6.5.1 PWM模块的功能描述
6.5.2 PWM模块的寄存器设置
6.5.3 PWM模块的应用设置
6.5.4 PWM模块的复位和中断
6.5.5 PWM的应用举例
6.6 MSCAN模块
6.6.1 CAN的基本原理和应用领域
6.6.2 MSCAN的组成与工作过程
6.6.3 MSCAN的寄存器设置
6.6.4 MSCAN模块的功能描述
6.6.5 时间标记
6.6.6 运行模式
6.6.7 低能耗模式
6.6.8 MSCAN的中断
6.6.9 中断的确认
6.6.10 停止和等待模式的恢复
6.6.11 MSCAN的初始化
6.6.12 MSCAN中断接收数据的例子
6.7 习题
第7章 嵌入式实时操作系统μC/OS-Ⅱ
7.1 嵌入式系统和嵌入式操作系统
7.1.1 嵌入式系统的概念
7.1.2 嵌入式系统的基本要素
7.1.3 嵌入式系统体系结构
7.1.4 评价实时系统的指标
7.1.5 嵌入式系统的应用领域
7.2 嵌入式操作系统的几个主要概念
7.2.1 前后台系统
7.2.2 任务
7.2.3 上下文切换
7.2.4 内核
7.2.5 任务优先级
7.2.6 可重入型函数
7.2.7 调度
7.2.8 非占先式内核
7.2.9 占先式内核
7.2.10 代码临界区
7.2.11 时钟节拍
7.2.12 信号量
7.2.13 死锁
7.2.14 消息队列
7.2.15 中断
7.3 μC/OS-Ⅱ简介
7.3.1 公开源代码
7.3.2 占先式内核
7.3.3 基于优先级,不支持时间片轮转
7.3.4 对共享资源提供了保护机制
7.3.5 系统的可靠性
7.3.6 系统的开销
7.3.7 μC/OS-Ⅱ的移植
7.3.8 编译与启动
7.4 μC/OS-Ⅱ的任务
7.4.1 用户任务的结构
7.4.2 任务优先级
7.4.3 任务状态
7.4.4 任务堆栈
7.4.5 任务的数据结构—任务控制块
7.5 μC/OS-Ⅱ的任务调度
7.5.1 任务就绪表
7.5.2 获得就绪任务控制块的指针
7.5.3 任务的切换
7.5.4 调度器的上锁和开锁
7.6 任务操作函数
7.6.1 任务的创建
7.6.2 任务的删除
7.6.3 任务的挂起与“解挂”
7.6.4 改变任务的优先级
7.6.5 任务删除请求
7.6.6 任务堆栈检查
7.6.7 任务的查询
7.7 任务的同步和通信
7.7.1 任务间通信手段
7.7.2 事件控制块ECB
7.7.3 信号量
7.7.4 邮箱
7.7.5 消息队列
7.7.6 互斥量
7.8 事件标志组
7.9 μC/OS-Ⅱ中的时间管理
7.9.1 系统中断
7.9.2 时钟节拍
7.9.3 系统延时处理
7.9.4 系统时钟
7.9.5 时钟节拍函数
7.10 内存管理
7.11 多任务的启动
7.12 空闲任务
7.13 习题
第8章 μC/OS-Ⅱ的移植与使用
8.1 μC/OS-Ⅱ的文件体系结构
8.2 在MC9S12单片机上移植μC/OS-Ⅱ
8.2.1 移植需求
8.2.2 开发工具
8.3 μC/OS-Ⅱ在MC9S12单片机上移植的步骤
8.4 μC/OS-Ⅱ在MC9S12单片机上移植要点
8.4.1 不依赖编译器的数据类型
8.4.2 代码临界区函数OS_ENTER_CRITICAL和OS_EXIT_CRITICAL
8.4.3 定义函数OS_TASK_SW()执行任务切换
8.4.4 任务堆栈的增长方向
8.4.5 定义函数OSCtxSw实现用户级上下文切换,用汇编语言实现
8.4.6 定义函数OSIntCtxSw实现中断级任务切换
8.4.7 定义函数OSTickISR
8.4.8 定义OSTaskStkInit来初始化任务的堆栈
8.5 μC/OS-Ⅱ可裁剪性的实现
8.5.1 与函数相关的可裁剪常量
8.5.2 可裁剪常量的选择与设置
8.6 使用μC/OS-Ⅱ创建并运行任务
8.6.1 创建任务
8.6.2 主程序的编写
8.6.3 使用信号量进行共享资源的管理
8.6.4 使用邮箱进行任务间通信
8.6.5 使用消息队列进行任务间通信
8.7 习题
第9章 综合举例
9.1 MC9S12在直流电动机调速中的应用
9.1.1 直流电动机的速度控制方案
9.1.2 PID控制算法的调节规律
9.1.3 速度的设定以及速度的获取
9.1.4 直流电动机驱动模块
9.1.5 控制软件的编写
9.2 MC9S12单片机在汽油发动机控制中的应用
9.2.1 发动机的怠速控制
9.2.2 发动机的起动控制
9.2.3 发动机的加减速控制
9.2.4 发动机的停机控制
附录
附录A 汇编指令表与指令的机器码组织
附录B CPU12 指令机器码表
附录C 基本实验系统原理图
参考文献