微信扫一扫,移动浏览光盘
简介
随着嵌入式领域的不断发展,以及C语言在嵌入式应用中的不断普及,嵌入式系统的开发者掌握单片机C语言(C51)已经成为不可逆转的趋势。KEIL公司的IDE C51开发环境μVision2是8051系列单片机的开发工具。由于其功能强大,方便易用,目前已经成为单片机C语言开发者最常用的工具之一。本书的主要目的在于:
1. 简单而清晰地介绍单片机的原理、功能及使用方法,使读者具备C51编程时所必需的硬件知识,对于实际工作中的一般应用不必再去查找其他资料。
2. 根据作者在长期的实际开发中的经验,通过专门编写的通用、模块化实例来介绍C51语言,使读者尽快了解其语法语义,并在实际工作中只需要对本书中的实例稍加修改,就能够在实际工作中使用。
3. 通过实例对μVision2开发环境和仿真环境进行介绍,使读者逐渐了解嵌入式系统软件开发的流程。
通过上述三点的综合,使读者了解完整的嵌入式系统的C语言开发,并对硬件有一定的了解。本书突破了传统的将单片机的软硬件的学习截然割裂的做法,相信对读者会有所帮助。
总之,对于C51编程的人员来说,本书将是不可多得的助手,而对于需要进行其他类型的嵌入式C语言开发人员来说,本书亦极具参考价值,是一本很好的参考书。
目录
第1章 引言 1
1.1 8位单片机在嵌入式系统中的应用 1
1.2 c语言在嵌入式系统开发中的应用 1
1.2.1 c语言与汇编语言的优势对比 2
1.2.2 c51与ansi-c的主要区别 3
1.2.3 编写高效的c51程序及优化程序 3
第2章 windows集成开发环境μvision2 6
2.1 启动μvision2 6
2.2 创建程序 7
2.2.1 创建项目 8
2.2.2 项目目标和文件组 13
2.2.3 在project window中查看文件和组的属性 14
2.2.4 target对话框简介 14
2.2.5 地址复用技术 -- code banking 14
2.2.6 μvision2功能 15
2.2.7 代码优化 21
2.2.8 一些技巧 24
2.3 cpu仿真 26
2.3.1 μvision2调试器 26
2.3.2 调试命令 35
.2.3.3 存储器空间 37
2.3.4 表述(expressions) 38
2.3.5 μvision2和c的不同 49
2.3.6 一些技巧 49
2.4 调试函数 51
2.4.1 创建函数 51
2.4.2 激活函数 52
2.4.3 函数分类 53
2.4.4 调试函数和c的不同 60
第3章 c语言基础 62
3.1 基本概念 62
3.1.1 入门 62
3.1.2 变量与算术表达式 65
3.1.3 for语句 70
3.1.4 符号常量 72
3.2 数据类型、运算符和表达式 73
3.2.1 c语言的数据类型 73
3.2.2 常量与变量 74
3.2.3 整型数据 75
3.2.4 实型数据 77
3.2.5 字符型数据 78
3.2.6 运算符 83
3.2.7 表达式 88
3.3 程序控制语句 91
3.3.1 程序的3种基本结构 91
3.3.2 条件控制语句 91
3.3.3 程序应用举例 99
3.4 循环控制语句 100
3.4.1 while语句 100
3.4.2 do...while语句 103
3.4.3 for语句 104
3.4.4 break与continue语句 106
3.4.5 程序应用举例 108
3.5 函数与程序结构 110
3.5.1 函数的基本知识 111
3.5.2 返回非整数值的函数 115
3.5.3 外部变量 117
3.5.4 作用域规则 118
3.5.5 头文件 119
3.5.6 静态变量 119
3.5.7 寄存器变量 120
3.5.8 分程序结构 120
3.5.9 初始化 121
3.5.10 递归 122
3.6 数组 124
3.6.1 一维数组 124
3.6.2 二维数组 127
3.6.3 多维数组 131
3.6.4 数组的初始化 132
3.7 指针 134
3.7.1 指针与指针变量 134
3.7.2 指针变量的定义与引用 134
3.7.3 指针运算符与指针表达式 136
3.7.4 指针与数组 139
3.7.5 指针的地址分配 154
3.7.6 指针数组 156
3.7.7 指向指针的指针 163
3.8 结构体与共用体 167
3.8.1 结构体类型变量的定义和引用 167
3.8.2 结构体数组的定义和引用 171
3.8.3 结构体指针的定义和引用 178
3.8.4 共用体 182
3.9 小结 186
第4章 使用c语言对at89c51编程 187
4.1 使用89c51芯片硬件资源的例程序 187
4.1.1 cpu结构 188
4.1.2 存储器、特殊功能寄存器及位地址空间 196
4.1.3 中断系统 200
4.1.4 输入/输出(i/o)口的使用 212
4.1.5 定时/计数器的使用 216
4.1.6 串口通信程序的编制 222
4.1.7 节电工作方式的程序 234
4.1.8 单步的程序 235
4.2 含51核的系列微处理器简介 236
4.2.1 at89c51 236
4.2.2 ds80c320 237
4.2.3 其他芯片 238
4.3 一个完整的使用多种资源的例程序 239
4.3.1 项目需求 239
4.3.2 步进电机背景知识 239
4.3.3 解决方案 242
第5章 预处理器 262
5.1 宏定义 262
5.1.1 不带参数的宏定义 262
5.1.2 带参数的宏定义 263
5.2 文件包含 263
5.3 条件编译 264
5.4 其他预处理命令 266
5.4.1 字符串化的操作 266
5.4.2 连接符 267
5.4.3 预定义好的常量 267
第6章 c51编译器 269
6.1 c51编译器控制指令详解 272
6.1.1 源控制指令 272
6.1.2 列表控制指令 276
6.1.3 目标控制指令 282
6.2 c51扩展的关键字 296
6.2.1 内存区域 296
6.2.2 数据变量分类 297
6.2.3 存储模式分类 300
6.2.4 变量定位到绝对地址 301
6.2.5 指针 302
6.2.6 函数 313
6.3 c51与其他语言的混合编程 325
6.3.1 c51编译器格式规范 325
6.3.2 c51与汇编语言的混合编程 330
6.4 c51的高级配置文件 336
6.4.1 startup.a51 336
6.4.2 start751.a51 344
6.4.3 init.a51 346
6.4.4 init751.a51 356
6.5 c51的库函数 360
6.5.1 字符函数ctype.h 360
6.5.2 一般i/o函数stdio.h 368
6.5.3 字符串函数string.h 377
6.5.4 标准函数stdlib.h 385
6.5.5 数学函数math.h 388
6.5.6 绝对地址访问absacc.h 390
6.5.7 内部函数intrins.h 390
6.5.8 变量参数表stdarg.h 392
6.5.9 全程跳转setjmp.h 393
6.5.10 访问sfr和sfr_bit地址regxxx.h 395
第7章 目标文件的连接定位与转换 396
7.1 连接定位器 396
7.2 连接/定位控制指令 397
7.3 μvision2中连接定位器的使用 398
第8章 硬件仿真 408
8.1 伟福仿真器系统及使用方法 408
8.1.1 安装伟福仿真调试系统 408
8.1.2 使用伟福系列仿真器系统 409
8.2 万利medwin仿真系统简介 420
8.2.1 medwin仿真系统的安装 420
8.2.2 medwin仿真系统的使用 421
8.2.3 medwin仿真系统的特点 422
8.3 一个简单程序调试的例子 423
8.3.1 单片机电路图 423
8.3.2 测试程序源代码 424
8.3.3 运行 425
8.4 小结 426
第9章 c51的工程开发案例与技巧 427
9.1 c51应用程序设计的基本方法 427
9.1.1 简介 427
9.1.2 c51编译器 427
9.2 c51系统设计所需要的一些知识 429
9.2.1 硬件以及电路的知识 429
9.2.2 软件以及编程语言的知识 432
9.3 c51系统设计所需要的一些设备 433
9.4 c51系统设计所需要注意的一些问题 434
9.4.1 单片机资源的分配 434
9.4.2 单片机的寻址 435
9.4.3 c51函数的返回值 435
9.4.4 单片机的看门狗功能 435
9.4.5 单片机的外设 435
9.4.6 单片机的功耗 436
9.5 有关c51的一些问题 436
9.6 应用案例1 -- 外部rom的实现 439
9.6.1 简单的电路 439
9.6.2 电路设计的背景及功能 439
9.6.3 电路的设计 440
9.6.4 电路的c51程序代码 441
9.7 应用案例2 -- 键盘和发光数码管显示 441
9.7.1 电路设计的背景及功能 441
9.7.2 电路的设计 442
9.7.3 键盘扫描电路的c51程序代码 443
9.7.4 电路的改进 -- 键盘的消抖动程序 446
9.7.5 电路的显示部分 -- led数码管电路 451
9.8 应用案例3 -- 秒表程序的实现 455
9.8.1 电路设计的背景及功能 455
9.8.2 电路的设计 455
9.8.3 电路的c51程序代码 456
9.9 应用案例4 -- 24小时时钟的实现 462
9.9.1 电路设计的背景及功能 462
9.9.2 电路的设计 462
9.9.3 电路的c51程序代码 463
9.10 应用案例5 -- 多机串行通信的实现 470
9.10.1 电路设计的背景及功能 470
9.10.2 主机端电路的设计 470
9.10.3 主机端电路的c51程序代码 471
9.10.4 从机端电路的设计 477
9.10.5 从机端电路的c51程序代码 478
9.11 应用案例6 -- a/d、d/a转换器使用 478
9.11.1 电路设计的背景及功能 478
9.11.2 电路的设计 479
9.11.3 电路的c51程序代码 481
9.12 应用案例7 -- 与计算机的互连 485
9.12.1 电路设计的背景及功能 485
9.12.2 电路的设计 485
9.12.3 电路的c51程序代码 486
9.12.4 计算机端的visual c++程序代码 487
1.1 8位单片机在嵌入式系统中的应用 1
1.2 c语言在嵌入式系统开发中的应用 1
1.2.1 c语言与汇编语言的优势对比 2
1.2.2 c51与ansi-c的主要区别 3
1.2.3 编写高效的c51程序及优化程序 3
第2章 windows集成开发环境μvision2 6
2.1 启动μvision2 6
2.2 创建程序 7
2.2.1 创建项目 8
2.2.2 项目目标和文件组 13
2.2.3 在project window中查看文件和组的属性 14
2.2.4 target对话框简介 14
2.2.5 地址复用技术 -- code banking 14
2.2.6 μvision2功能 15
2.2.7 代码优化 21
2.2.8 一些技巧 24
2.3 cpu仿真 26
2.3.1 μvision2调试器 26
2.3.2 调试命令 35
.2.3.3 存储器空间 37
2.3.4 表述(expressions) 38
2.3.5 μvision2和c的不同 49
2.3.6 一些技巧 49
2.4 调试函数 51
2.4.1 创建函数 51
2.4.2 激活函数 52
2.4.3 函数分类 53
2.4.4 调试函数和c的不同 60
第3章 c语言基础 62
3.1 基本概念 62
3.1.1 入门 62
3.1.2 变量与算术表达式 65
3.1.3 for语句 70
3.1.4 符号常量 72
3.2 数据类型、运算符和表达式 73
3.2.1 c语言的数据类型 73
3.2.2 常量与变量 74
3.2.3 整型数据 75
3.2.4 实型数据 77
3.2.5 字符型数据 78
3.2.6 运算符 83
3.2.7 表达式 88
3.3 程序控制语句 91
3.3.1 程序的3种基本结构 91
3.3.2 条件控制语句 91
3.3.3 程序应用举例 99
3.4 循环控制语句 100
3.4.1 while语句 100
3.4.2 do...while语句 103
3.4.3 for语句 104
3.4.4 break与continue语句 106
3.4.5 程序应用举例 108
3.5 函数与程序结构 110
3.5.1 函数的基本知识 111
3.5.2 返回非整数值的函数 115
3.5.3 外部变量 117
3.5.4 作用域规则 118
3.5.5 头文件 119
3.5.6 静态变量 119
3.5.7 寄存器变量 120
3.5.8 分程序结构 120
3.5.9 初始化 121
3.5.10 递归 122
3.6 数组 124
3.6.1 一维数组 124
3.6.2 二维数组 127
3.6.3 多维数组 131
3.6.4 数组的初始化 132
3.7 指针 134
3.7.1 指针与指针变量 134
3.7.2 指针变量的定义与引用 134
3.7.3 指针运算符与指针表达式 136
3.7.4 指针与数组 139
3.7.5 指针的地址分配 154
3.7.6 指针数组 156
3.7.7 指向指针的指针 163
3.8 结构体与共用体 167
3.8.1 结构体类型变量的定义和引用 167
3.8.2 结构体数组的定义和引用 171
3.8.3 结构体指针的定义和引用 178
3.8.4 共用体 182
3.9 小结 186
第4章 使用c语言对at89c51编程 187
4.1 使用89c51芯片硬件资源的例程序 187
4.1.1 cpu结构 188
4.1.2 存储器、特殊功能寄存器及位地址空间 196
4.1.3 中断系统 200
4.1.4 输入/输出(i/o)口的使用 212
4.1.5 定时/计数器的使用 216
4.1.6 串口通信程序的编制 222
4.1.7 节电工作方式的程序 234
4.1.8 单步的程序 235
4.2 含51核的系列微处理器简介 236
4.2.1 at89c51 236
4.2.2 ds80c320 237
4.2.3 其他芯片 238
4.3 一个完整的使用多种资源的例程序 239
4.3.1 项目需求 239
4.3.2 步进电机背景知识 239
4.3.3 解决方案 242
第5章 预处理器 262
5.1 宏定义 262
5.1.1 不带参数的宏定义 262
5.1.2 带参数的宏定义 263
5.2 文件包含 263
5.3 条件编译 264
5.4 其他预处理命令 266
5.4.1 字符串化的操作 266
5.4.2 连接符 267
5.4.3 预定义好的常量 267
第6章 c51编译器 269
6.1 c51编译器控制指令详解 272
6.1.1 源控制指令 272
6.1.2 列表控制指令 276
6.1.3 目标控制指令 282
6.2 c51扩展的关键字 296
6.2.1 内存区域 296
6.2.2 数据变量分类 297
6.2.3 存储模式分类 300
6.2.4 变量定位到绝对地址 301
6.2.5 指针 302
6.2.6 函数 313
6.3 c51与其他语言的混合编程 325
6.3.1 c51编译器格式规范 325
6.3.2 c51与汇编语言的混合编程 330
6.4 c51的高级配置文件 336
6.4.1 startup.a51 336
6.4.2 start751.a51 344
6.4.3 init.a51 346
6.4.4 init751.a51 356
6.5 c51的库函数 360
6.5.1 字符函数ctype.h 360
6.5.2 一般i/o函数stdio.h 368
6.5.3 字符串函数string.h 377
6.5.4 标准函数stdlib.h 385
6.5.5 数学函数math.h 388
6.5.6 绝对地址访问absacc.h 390
6.5.7 内部函数intrins.h 390
6.5.8 变量参数表stdarg.h 392
6.5.9 全程跳转setjmp.h 393
6.5.10 访问sfr和sfr_bit地址regxxx.h 395
第7章 目标文件的连接定位与转换 396
7.1 连接定位器 396
7.2 连接/定位控制指令 397
7.3 μvision2中连接定位器的使用 398
第8章 硬件仿真 408
8.1 伟福仿真器系统及使用方法 408
8.1.1 安装伟福仿真调试系统 408
8.1.2 使用伟福系列仿真器系统 409
8.2 万利medwin仿真系统简介 420
8.2.1 medwin仿真系统的安装 420
8.2.2 medwin仿真系统的使用 421
8.2.3 medwin仿真系统的特点 422
8.3 一个简单程序调试的例子 423
8.3.1 单片机电路图 423
8.3.2 测试程序源代码 424
8.3.3 运行 425
8.4 小结 426
第9章 c51的工程开发案例与技巧 427
9.1 c51应用程序设计的基本方法 427
9.1.1 简介 427
9.1.2 c51编译器 427
9.2 c51系统设计所需要的一些知识 429
9.2.1 硬件以及电路的知识 429
9.2.2 软件以及编程语言的知识 432
9.3 c51系统设计所需要的一些设备 433
9.4 c51系统设计所需要注意的一些问题 434
9.4.1 单片机资源的分配 434
9.4.2 单片机的寻址 435
9.4.3 c51函数的返回值 435
9.4.4 单片机的看门狗功能 435
9.4.5 单片机的外设 435
9.4.6 单片机的功耗 436
9.5 有关c51的一些问题 436
9.6 应用案例1 -- 外部rom的实现 439
9.6.1 简单的电路 439
9.6.2 电路设计的背景及功能 439
9.6.3 电路的设计 440
9.6.4 电路的c51程序代码 441
9.7 应用案例2 -- 键盘和发光数码管显示 441
9.7.1 电路设计的背景及功能 441
9.7.2 电路的设计 442
9.7.3 键盘扫描电路的c51程序代码 443
9.7.4 电路的改进 -- 键盘的消抖动程序 446
9.7.5 电路的显示部分 -- led数码管电路 451
9.8 应用案例3 -- 秒表程序的实现 455
9.8.1 电路设计的背景及功能 455
9.8.2 电路的设计 455
9.8.3 电路的c51程序代码 456
9.9 应用案例4 -- 24小时时钟的实现 462
9.9.1 电路设计的背景及功能 462
9.9.2 电路的设计 462
9.9.3 电路的c51程序代码 463
9.10 应用案例5 -- 多机串行通信的实现 470
9.10.1 电路设计的背景及功能 470
9.10.2 主机端电路的设计 470
9.10.3 主机端电路的c51程序代码 471
9.10.4 从机端电路的设计 477
9.10.5 从机端电路的c51程序代码 478
9.11 应用案例6 -- a/d、d/a转换器使用 478
9.11.1 电路设计的背景及功能 478
9.11.2 电路的设计 479
9.11.3 电路的c51程序代码 481
9.12 应用案例7 -- 与计算机的互连 485
9.12.1 电路设计的背景及功能 485
9.12.2 电路的设计 485
9.12.3 电路的c51程序代码 486
9.12.4 计算机端的visual c++程序代码 487
单片机C程序设计及应用实例
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×