第1章 单片机基础 (1) 1.1 概述 (1) 1.1.1 计算机发展概况 (1) 1.1.2 计算机分类 (1) 1.1.3 单片机的特点及主要应用领域 (2) 1.2 单片机的发展历史及典型机型 (3) 1.2.1 单片机的发展历史 (3) 1.2.2 常用单片机的机型 (4) 1.3 计算机中的数制及相互转换 (5) 1.3.1 计算机中数的表示方法 (5) 1.3.2 进位计数制 (6) 1.3.3 进位计数制之间的转换 (8) 1.4 二进制数的运算 (10) 1.4.1 二进制数的加法 (10) 1.4.2 二进制数的减法 (11) 1.4.3 二进制数的乘法 (11) 1.4.4 二进制数的除法 (11) 1.5 单片机的组成及工作过程 (12) 1.5.1 单片机的组成 (12) 1.5.2 单片机的工作过程 (12) 习题一 (13)第2章 MCS-51单片机硬件结构 (15) 2.1 概述 (15) 2.2 MCS-51单片机内部硬件组成 (15) 2.2.1 总体结构 (15) 2.2.2 中央处理器CPU (15) 2.2.3 单片机的引脚及其功能 (16) 2.2.4 存储器的结构 (18) 2.3 时钟与复位 (23) 2.3.1 时钟输入 (24) 2.3.2 单片机工作的基本时序 (24) 2.3.3 单片机的复位 (25) 2.4 并行输入/输出接口 (26) 2.4.1 P0口的结构与功能 (27) 2.4.2 P1口的结构与功能 (28) 2.4.3 P2口的结构与功能 (29) 2.4.4 P3口的结构与功能 (30) 2.5 中断系统 (30) 2.5.1 中断技术概述 (30) 2.5.2 中断请求源与中断请求标志 (32) 2.5.3 中断控制与中断响应 (34) 2.5.4 中断处理过程 (36) 2.6 定时器/计数器 (38) 2.6.1 定时器/计数器T0和T1的结构 (39) 2.6.2 定时器/计数器的方式寄存器和控制寄存器 (40) 2.6.3 4种工作方式 (41) 2.7 串行口 (44) 2.7.1 串行口通信的基本概念 (44) 2.7.2 MCS- 51单片机串行通信接口 (46) 2.7.3 串行通信接口工作方式及多机通信 (48) 2.7.4 波特率设置 (51) 习题二 (52)第3章 MCS-51单片机指令系统 (54) 3.1 汇编指令与格式 (54) 3.1.1 汇编指令格式和常用符号 (54) 3.1.2 伪指令 (56) 3.2 寻址方式 (59) 3.2.1 立即寻址 (59) 3.2.2 直接寻址 (60) 3.2.3 寄存器寻址 (60) 3.2.4 寄存器间接寻址 (61) 3.2.5 变址寻址 (61) 3.2.6 相对寻址 (62) 3.2.7 位寻址 (63) 3.3 指令类型 (64) 3.3.1 按字节数分 (64) 3.3.2 按指令的执行时间分 (64) 3.3.3 按指令的功能分 (64) 3.4 数据传送类指令 (64) 3.4.1 内部数据传送指令 (64) 3.4.2 片外数据传送指令 (66) 3.4.3 访问程序存储器的传送指令 (67) 3.4.4 数据交换指令 (67) 3.4.5 堆栈操作指令 (68) 3.5 算术运算类指令 (70) 3.5.1 加法指令 (70) 3.5.2 减法指令 (71) 3.5.3 十进制调整指令 (72) 3.5.4 乘法指令 (73) 3.5.5 除法指令 (73) 3.6 逻辑运算类指令 (74) 3.6.1 累加器A的逻辑操作指令 (74) 3.6.2 逻辑与指令 (76) 3.6.3 逻辑或指令 (76) 3.6.4 逻辑异或指令 (77) 3.7 控制转移类指令 (78) 3.7.1 无条件转移指令 (78) 3.7.2 条件转移指令 (80) 3.7.3 子程序调用和返回指令 (82) 3.8 位操作类指令 (84) 3.8.1 位传送指令 (84) 3.8.2 置位和清0指令 (85) 3.8.3 位逻辑运算指令 (85) 3.8.4 位条件转移指令 (85) 习题三 (87)第4章 MCS-51汇编语言程序设计 (89) 4.1 汇编语言程序设计 (89) 4.1.1 程序设计语言 (89) 4.1.2 汇编语言程序设计步骤 (90) 4.1.3 单片机4大程序结构 (91) 4.2 单片机程序举例 (99) 4.2.1 查表程序 (99) 4.2.2 运算程序 (100) 4.2.3 数值转换程序 (104) 4.2.4 排序程序 (109) 4.3 中断程序结构 (111) 4.4 定时器/计数器程序 (112) 4.4.1 定时器/计数器的应用 (112) 4.4.2 定时器方式0应用 (113) 4.4.3 定时器方式1应用 (114) 4.4.4 定时器方式2应用 (114) 4.5 串行通信程序 (116) 4.5.1 串行口方式0应用 (116) 4.5.2 串行口方式1应用 (117) 4.5.3 串行口方式2、3应用 (119) 习题四 (120)第5章 MCS-51单片机系统的扩展 (121) 5.1 系统总线及总线构建 (121) 5.1.1 系统总线 (121) 5.1.2 构建系统总线 (123) 5.2 外部存储器的扩展 (124) 5.2.1 存储器扩展地址分配 (124) 5.2.2 程序存储器扩展 (128) 5.2.3 数据存储器扩展 (131) 5.3 输入/输出接口的扩展 (134) 5.3.1 简单并行输入口扩展 (135) 5.3.2 简单并行输出口扩展 (136) 5.3.3 可编程I/O并行接口的扩展 (137) 5.4 D/A和A/D接口功能的扩展 (143) 5.4.1 D/A转换器的基本工作原理 (143) 5.4.2 DAC0832的应用 (146) 5.4.3 A/D转换器的基本工作原理 (150) 5.4.4 ADC0809的应用 (152) 5.5 常用串行接口D/A和A/D转换器 (156) 5.5.1 12位串行DAC MAX538的扩展及其应用 (156) 5.5.2 12位串行ADC MAX1247的扩展及其应用 (158) 习题五 (163)第6章 键盘、显示器及功率接口 (165) 6.1 键盘的接口 (165) 6.1.1 键盘输入的抖动问题 (165) 6.1.2 消除按键抖动的措施 (166) 6.1.3 非编码键盘的接口方法 (166) 6.1.4 BCD码拨盘接口 (171) 6.1.5 串行键盘应用 (172) 6.2 LED 7段发光显示器接口 (173) 6.2.1 静态显示接口及编程 (174) 6.2.2 动态显示接口及编程 (176) 6.2.3 8155作为LED显示器接口 (180) 6.3 LCD显示器接口 (182) 6.3.1 点阵式字符LCD (182) 6.3.2 字符型LCD与单片机接口 (182) 6.3.3 软件设计 (184) 6.4 大功率器件接口电路 (185) 6.4.1 继电器型驱动接口及编程 (185) 6.4.2 晶闸管型驱动接口 (189) 6.4.3 功率晶体管型驱动接口及编程 (194) 6.4.4 功率驱动电路应用实例 (195) 习题六 (199)第7章 Keil C51简介及编程 (201) 7.1 Keil C51与标准C语言 (201) 7.1.1 C51程序的结构 (202) 7.1.2 C51扩展关键字 (203) 7.1.3 C51数据的存储类型 (204) 7.2 Keil C51函数 (205) 7.2.1 C51函数的定义 (205) 7.2.2 C51函数的声明 (206) 7.2.3 C51函数的调用 (207) 7.2.4 C51常用库函数 (207) 7.3 C51运算符 (210) 7.4 C51编程举例 (212) 7.4.1 简单I/O口编程举例 (212) 7.4.2 中断程序编写 (214) 7.4.3 定时器/计数器程序编写 (215) 7.4.4 串行通信接口编程 (217) 习题七 (219)第8章 RTX 51实时操作系统 (220) 8.1 RTX51实时操作系统概述 (220) 8.2 基于RTX51 Tiny工作机制 (221) 8.2.1 RTX51程序结构 (222) 8.2.2 任务管理 (223) 8.2.3 RTX51任务调度 (223) 8.2.4 RTX51参数的设置 (224) 8.3 RTX51的参考函数 (225) 8.4 基于RTX51实时操作系统的程序设计 (228) 8.4.1 RTX51实时操作系统程序设计的结构特点 (228) 8.4.2 应用举例 (229) 习题八 (234)第9章 单片机应用系统综合开发应用 (235) 9.1 单片机应用系统设计概述 (235) 9.1.1 单片机应用系统设计的内容 (235) 9.1.2 单片机应用系统设计的方法与步骤 (236) 9.2 单片机程序的仿真与调试 (238) 9.2.1 单片机的开发与开发工具 (238) 9.2.2 单片机开发系统所具有的一般功能 (240) 9.2.3 软件设计方法 (241) 9.2.4 软件调试方法 (243) 9.3 单片机应用系统的硬件设计及调试 (244) 9.3.1 单片机系统总体设计 (244) 9.3.2 硬件设计 (246) 9.3.3 可靠性设计 (248) 9.3.4 硬件调试方法 (249) 习题九 (250)附录A MCS-51单片机指令速查表 (251)参考文献 (255)