第1章 单片机C语言概述 1
1.1 C语言简介 1
1.1.1 C语言的产生与发展 1
1.1.2 C语言的特点 1
1.2 C语言的入门知识 3
1.2.1简单的C程序介绍 3
1.2.2 C程序特性分析 8
第2章 单片机C语言开发环境的建立 10
2.1 Keil软件简介 10
2.2 Keil软件的安装 11
2.3 Keil软件的使用 12
2.3.1源文件的建立 13
2.3.2工程的建立 14
2.3.3工程的设置 16
2.3.4编译、链接 20
2.4实验仿真板简介与使用 21
2.4.1实验仿真板的安装 22
2.4.2实验仿真板的使用 22
2.4.3实验仿真板的资源 23
2.5硬件实验环境的建立 26
2.5.1使用STC89C52单片机制作实验电路板 26
2.5.2让实验电路板具有仿真功能 29
2.5.3认识和使用成品实验板 32
第3章 C语言数据的类型、运算符与表达式 38
3.1数据类型概述 38
3.2常量与变量 38
3.2.1常量 39
3.2.2变量 40
3.3整型数据 41
3.3.1整型常量 41
3.3.2整型变量 42
3.4字符型数据 43
3.4.1字符型常量 43
3.4.2字符型变量 44
3.5数的溢出 45
3.6实型数据 47
3.6.1实型常量 47
3.6.2实型变量 47
3.7 Keil特有的数据类型 51
3.7.1位型数据 51
3.7.2 sfr型数据 51
3.8 80C51中数据的存储位置 52
3.8.1程序存储器 52
3.8.2内部数据存储器 53
3.8.3外部数据存储器 57
3.9变量赋初值 60
3.10 C运算符和表达式 61
3.10.1 C运算符简介 61
3.10.2算术运算符和算术表达式 61
3.10.3各类数值型数据间的混合运算 62
3.10.4赋值运算符和赋值表达式 63
3.10.5逗号运算符和逗号表达式 67
3.10.6位操作运算符及其表达式 67
3.10.7自增减运算符、复合运算符及其表达式 69
第4章 C51流程与控制 70
4.1顺序结构程序 70
4.2选择结构程序 70
4.2.1通过实例了解选择结构 70
4.2.2关系运算符和关系表达式 72
4.2.3逻辑运算符和逻辑表达式 74
4.2.4 if语句 74
4.2.5 if语句的嵌套 77
4.2.6条件运算符 78
4.2.7 switch/case语句 79
4.3循环结构程序 81
4.3.1循环程序简介 81
4.3.2 while循环语句 82
4.3.3 do-while循环语句 83
4.3.4 for循环语句 84
4.3.5 break语句 85
4.3.6 continue语句 87
4.4仿真型实验板的使用 88
4.4.1仿真型实验板与计算机的连接 88
4.4.2程序的调试 92
第5章 单片机内部资源的编程 94
5.1中断编程 94
5.1.1 80C51的中断请求源 94
5.1.2中断源的自然优先级与中断服务程序入口地址 95
5.1.3 80C51的中断控制 96
5.1.4中断程序的编写 97
5.1.5寄存器组的切换 99
5.2定时器/计数器 99
5.2.1定时器/计数器的基本结构及工作原理 99
5.2.2定时器/计数器的控制字 100
5.2.3定时器/计数器的4种工作方式 101
5.2.4定时器/计数器的定时/计数方式下初值的计算 103
5.2.5定时器/计数器的编程 104
5.3串行口编程 109
5.3.1串行口控制寄存器 110
5.3.2串行口工作方式 111
5.3.3硬件练习 116
第6章 C51构造数据类型 118
6.1数组 118
6.1.1概述 118
6.1.2一维数组 119
6.1.3二维数组 121
6.1.4字符数组 122
6.1.5数组与存储空间 123
6.2结构 124
6.2.1结构的定义和引用 125
6.2.2结构数组 128
6.3共用体 129
6.4枚举 131
6.4.1枚举的定义和说明 131
6.4.2枚举变量的取值 132
6.5用typedef定义类型 134
第7章 函数 136
7.1概述 136
7.2函数的定义 138
7.3函数参数和函数的值 140
7.4函数的调用 142
7.4.1函数调用的一般形式 142
7.4.2函数调用的方式 143
7.4.3调用函数的声明和函数原型 143
7.4.4函数的嵌套调用 146
7.4.5函数的递归调用 146
7.4.6 C51函数的重入 148
7.5数组作为函数参数 149
7.6局部变量和全局变量 150
7.6.1局部变量 151
7.6.2全局变量 151
7.7变量的存储类别 154
7.7.1动态与静态存储方式 154
7.7.2 atuo变量 154
7.7.3 static变量 155
7.7.4用extern声明外部变量 155
第8章 指针 158
8.1指针的基本概念 158
8.2指针变量的定义 159
8.3指针变量的引用 162
8.4 Keil C51的指针类型 166
8.5用函数指针变量调用函数 168
第9章 预处理命令 173
9.1宏定义 173
9.1.1不带参数的宏定义 173
9.1.2带参数的宏定义 175
9.1.3预定义宏常量 176
9.2“文件包含”处理 177
9.2.1编译器对“文件包含”的处理方法 177
9.2.2 Keil提供的头文件 179
9.3条件编译 181
第10章 单片机接口的C语言编程 186
10.1 LED数码管 186
10.1.1静态显示接口 186
10.1.2动态显示接口 189
10.2键盘 192
10.2.1键盘工作原理 192
10.2.2键盘与单片机的连接 193
10.3 I2 C总线及24系列EEPROM的使用 195
10.3.1 12 C总线接口 195
10.3.2 24系列EEPROM的结构及特性 196
10.3.3 24系列EEPROM的使用 198
10.4 SPI总线及X5045的使用 202
10.4.1 SPI总线简介 202
10.4.2 X5045的结构和特性 202
10.4.3 X5045的使用 204
10.5模/数转换接口 209
10.6数/模转换接口 211
10.7液晶显示器接口 213
10.7.1字符型液晶显示器的基础知识 213
10.7.2字符型液晶显示器的使用 214
10.7.3点阵型液晶显示器的基础知识 218
10.7.4字模的产生 221
10.7.5点阵型液晶显示器的使用 225
第11章 应用设计举例 232
11.1秒表 232
11.2可预置的倒计时钟 235
11.3 AT24C01 A的综合应用 239
11.3.1功能描述 240
11.3.2实例分析 240
11.3.3实例应用 244
11.4 X5045的综合应用 244
11.4.1功能描述 244
11.4.2实例分析 245
11.4.3实例应用 251
11.5模块化编程实例 252
第12章 RTOS简介 260
12.1 RTOS基本知识 260
12.2 Rtx51 Tiny入门 261
12.2.1用Rtx51 Tiny实现LED闪烁 261
12.2.2对RTOS工作过程的初步认识 264
12.3 Rtx51 Tiny的工作过程及其函数 265
12.3.1键控流水灯程序 266
12.3.2 Rtx51 Tiny的工作过程 268
12.3.3 Rtx51 Tiny的事件和信号 269
12.3.4 Rtx51 Tiny的函数 269
12.4 Rtx51 Tiny应用实例 274
12.4.1百分秒表的实现 274
12.4.2 Rtx51 Tiny中的信号 278
12.5使用Rtx51 Tiny操作系统程序的调试 278
第13章 C51库函数 280
13.1 C51库函数的测试方法 280
13.2使用math·h头文件的函数 284
13.3使用ctype·h头文件的函数 286
13.4使用stdlib·h头文件的函数 288
13.5使用initrins·h头文件的函数 291
13.6使用string·h头文件的函数 292
13.7使用assert·h头文件的函数 295
13.8使用setjmp·h头文件的函数 296
13.9使用stddef·h头文件的函数 296
13.10使用stdio·h头文件的函数 298
附录A C语言的关键字 303
A.1标准C语言中的关键字 303
A.2 Keil C新增的关键字 304
附录B ISD技术在线调试技术 305
B.1 ISD51的软件和硬件配置 305
B.2 ISD51的相关功能函数 306
B.3 ISD51在线调试实例 306
B.4 ISD技术的特点 310
附录C 配套光盘内容说明 311
C.1文件夹的说明 311
C.2安装及使用说明 311
参考文献 312