单片机语言C51程序设计

编辑

锁定

讨论

上传视频

《单片机语言C51程序设计》是2005年10月人民邮电出版社出版的图书,赵文博、刘文涛编著。[1]

书    名

单片机语言C51程序设计

作    者

赵文博,刘文涛编著出版社

人民邮电出版社

出版时间

2005年10月

ISBN

9787115138194

单片机语言C51程序设计内容简介

编辑

本书是《单片机语言C51典型应用设计》的配套图书。本书首先详细介绍了单片机C51语言的基础知识,包括C51程序设计的基本语法、函数、数据结构等内容;然后介绍了单片机调试软件Keil C51的应用及其调试、仿真技巧;最后本书给出大量的应用实例,通过这些实例的学习,读者可以很容易掌握51单片机的程序设计。

本书适合进行51单片机开发的技术人员以及高等学校相关专业师生阅读和参考。

本书的实例源代码,附在随书光盘中。

单片机语言C51程序设计图书目录

编辑

第1章 C51程序设计概述 1

1.1 C51程序特点 1

1.2 Keil C51 2

1.2.1 安装Keil C51软件 2

1.2.2 使用Keil C51软件 4

1.2.3 第1个程序“Hello C51” 7

1.3 C51编程规范以及本书约定 7

1.3.1 注释 8

1.3.2 命名 8

1.3.3 风格 9

1.3.4 本书约定 9

第2章 C51程序设计基础 11

2.1 C51的标识符 11

2.1.1 C51的标识符 11

2.1.2 C51的关键字 12

2.1.3 与ANSI C的差异 14

2.2 数据类型 15

2.2.1 变量与常量 16

2.2.2 整型(int) 16

2.2.3 浮点型(float) 18

2.2.4 字符型(char) 18

2.2.5 指针型(*) 20

2.2.6 无值型(void) 20

2.3 数据类型转换 21

2.4 变量的作用域 21

2.4.1 块结构 21

2.4.2 自动型变量 21

2.4.3 外部型变量 22

2.4.4 静态型变量 23

2.4.5 寄存器型变量 24

2.5 C51的分隔符 24

2.6 运算符 24

2.6.1 运算符 24

2.6.2 运算符的优先级 31

2.7 表达式 32

2.7.1 算术表达式 32

2.7.2 赋值表达式 32

2.7.3 逗号运算符与逗号表达式 33

2.7.4 关系表达式 34

2.7.5 逻辑表达式 34

第3章 C51语句 36

3.1 说明语句 36

3.2 表达式语句 36

3.3 复合语句 37

3.4 条件语句 37

3.5 开关与跳转语句 41

3.5.1 开关语句 41

3.5.2 跳转语句 43

3.6 循环语句 45

3.6.1 for循环 45

3.6.2 while循环 47

3.6.3 do-while 循环 49

3.7 函数调用语句 50

3.8 空语句 51

3.9 C51语句的流程与控制 51

3.9.1 顺序结构(sequence) 51

3.9.2 选择结构(selection) 52

3.9.3 循环结构(repetition) 52

3.9.4 限制使用GOTO语句 53

3.9.5 逐步求精的设计方法 55

第4章 C51函数 57

4.1 函数的定义 57

4.1.1 函数参数和堆栈 58

4.1.2 用寄存器传递参数 58

4.2 main函数 59

4.3 函数的调用和返回 60

4.3.1 函数的简单调用 60

4.3.2 函数参数传递 60

4.3.3 函数的递归调用 64

4.3.4 重入函数 65

4.4 函数作用范围 66

4.5 函数的变量作用域 66

4.6 C51中断函数 67

4.6.1 中断函数的定义 67

4.6.2 内部中断函数的使用 68

4.6.3 外部中断函数的使用 69

4.6.4 扩展外部中断函数的使用 69

4.6.5 使用中断函数要注意的问题 71

4.7 C51库函数 71

4.8 实时任务函数 72

4.9 Keil C51常用功能模块使用说明 72

4.9.1 时钟模块 72

4.9.2 通信模块 75

4.9.3 键盘扫描模块 78

第5章 C51数据结构 80

5.1 C51结构 80

5.1.1 结构说明和结构变量定义 80

5.1.2 结构变量的使用 81

5.1.3 结构变量的初始化 82

5.2 数组 84

5.2.1 一维数组 84

5.2.2 一维数组初始化 87

5.2.3 一维字符串数组 89

5.2.4 二维数组 90

5.2.5 结构数组 94

5.3 联合与枚举 94

5.3.1 联合(union) 94

5.3.2 枚举(enum) 96

5.4 类型说明 98

5.5 指针 99

5.5.1 指针和地址 100

5.5.2 地址运算 104

5.5.3 指向数组元素的指针 104

5.5.4 指向二维数组的指针 105

5.5.5 指向一个由n个元素所组成的数组指针 106

5.5.6 数组与指针的关系 107

5.5.7 字符指针 109

5.5.8 指针数组 110

5.5.9 避免使用浮点指针 111

第6章 C51存储结构 113

6.1 8051存储单元与C51存储类型 113

6.1.1 8051存储单元 113

6.1.2 特殊功能寄存器 117

6.1.3 存储器模式 117

6.2 动态存储分配 119

6.3 位操作与字段结构 122

6.4 绝对地址定位 123

6.5 基于C51存储器的指针 126

6.5.1 通用指针 126

6.5.2 指定存储器指针 127

6.5.3 绝对指针 127

6.5.4 指针转化 129

6.6 结构的内存分配 131

6.6.1 直接由结构定义一个结构指针变量实现内存分配 131

6.6.2 用typedef定义新结构类型 132

6.7 Keil C51程序开机执行代码 132

第7章 预处理 133

7.1 预处理命令 133

7.1.1 文件包含指令 134

7.1.2 宏定义指令#define 134

7.1.3 #if、#else、#endif指令 136

7.1.4 #undef指令 137

7.1.5 const修饰符 137

7.2 C51编译的控制参数 138

7.3 C51头文件 140

7.3.1 C51常用的头文件 140

7.3.2 REG51.H 141

第8章 C51编译 143

8.1 Keil的编译环境mVision3 143

8.1.1 mVision3窗口与菜单 145

8.1.2 编译检查工具PC-Lint 152

8.1.3 开发工具选项 152

8.1.4 调试工具选项 157

8.2 编译过程 158

8.2.1 A51宏汇编器 159

8.2.2 映像文件 160

8.2.3 LIB51库管理器 161

8.2.4 OC51分段目标文件转换器 161

8.2.5 OH51目标代码到HEX文件的转换器 161

8.3 Keil C51编译器的控制指令 161

8.3.1 源文件控制类 162

8.3.2 目标文件(Object)控制类 162

8.3.3 列表文件(listing)控制类 162

8.4 代码优化 162

8.4.1 代码优化 162

8.4.2 对8051的特殊优化 163

8.4.3 代码生成选项 163

8.5 混合编译 163

8.5.1 项目目标和文件组 163

8.5.2 浏览项目窗口中的文件和文件组的属性 164

8.5.3 用户上电初始化程序STARTUP.A51简介 164

8.5.4 与汇编语言的接口 167

8.5.5 和PL/M-51的接口 173

8.6 mVision3其他功能 174

8.6.1 多个文件中查找 174

8.6.2 资源浏览器 174

8.7 出错信息 175

第9章 Keil C51的调试与仿真 176

9.1 mVision3调试器的几项功能 176

9.1.1 执行代码 176

9.1.2 完备的分析器 177

9.1.3 代码覆盖分析 177

9.2 断点 178

9.2.1 简单断点 178

9.2.2 复杂断点 179

9.2.3 观察断点 179

9.3 仿真 180

9.3.1 A/D仿真 180

9.3.2 D/A仿真 182

9.3.3 FLASH/EEPROM仿真 183

9.3.4 中断仿真 187

9.3.5 可编程计数器阵列PCA/CAPCOM仿真 188

9.3.6 I/O端口输入/输出仿真 188

9.3.7 低功耗模式仿真 189

9.3.8 串行口的输入/输出仿真 189

9.3.9 定时器/计数器仿真 190

9.3.10 看门狗仿真 191

9.4 mVision3调试命令 192

9.4.1 存储器命令 192

9.4.2 程序命令 192

9.4.3 断点命令 193

9.4.4 通用命令 193

9.5 RTX-51实时操作系统 193

9.5.1 概述 194

9.5.2 RTX-51 Tiny的例程TRAFFIC.C 198

第10章 高级编程技术 208

10.1 定制文件 208

10.1.1 STARTUP.A51 208

10.1.2 INIT.A51 209

10.1.3 XBANKING.A51 210

10.1.4 基本的I/O函数 211

10.1.5 存储区分配函数 211

10.2 优化器 212

10.2.1 8051特定优化 212

10.2.2 生成代码选项 212

10.3 段名转换 213

10.3.1 数据目标 213

10.3.2 程序目标 214

10.4 8051派生系列 215

10.4.1 模拟器件微转换器B2系列 215

10.4.2 Atmel 89x8252和变种 215

10.4.3 Dallas 80C320、420、520和530 216

10.4.4 Dallas 80C390、80C400、5240和变种 216

10.4.5 算术累加器 217

10.4.6 Infineon C517、C517A、C509和变种 217

10.4.7 数据指针 217

10.4.8 高速运算 217

10.4.9 库函数 217

10.4.10 Philips 8xC750、8xC751和8xC752 218

10.4.11 Philips 80C51MX结构 218

10.4.12 Philips 和Atmel WM 双DPTR 218

第11章 C51资源文件 220

11.1 固有程序 220

11.1.1 库文件 220

11.1.2 标准类型 221

11.1.3 绝对存储区访问宏 221

11.2 程序分类 223

11.2.1 缓冲区操作 223

11.2.2 字符转换和分类 224

11.2.3 数据转换 224

11.2.4 数学程序 225

11.2.5 存储区分配程序 226

11.2.6 流输入和输出程序 226

11.2.7 字符串操作程序 227

11.2.8 可变长度参数列表程序 228

11.2.9 其他程序 229

11.3 包含文件 229

11.3.1 8051特殊功能寄存器包含文件 229

11.3.2 80C517.H 229

11.4 参考 231

第12章 使用Keil C51编程实例 288

12.1 键盘扫描程序 288

12.1.1 实例概述 288

12.1.2 程序框图及代码 288

12.1.3 用Keil C51编译与调试 294

12.2 P1口控制直流电动机实例 297

12.2.1 实例概述 298

12.2.2 程序框图及代码 298

12.2.3 用Keil C51编译与调试 300

12.3 A/D转换实例 303

12.3.1 实例概述 303

12.3.2 程序框图及代码 303

12.3.3 用Keil C51编译与调试 309

12.4 LCD显示实例 311

12.4.1 实例概述 311

12.4.2 程序框图及代码 312

12.4.3 用Keil C51编译与调试 322

12.5 主从机串口通信实例 325

12.5.1 实例概述 325

12.5.2 程序框图及代码 325

12.5.3 用Keil C51编译与调试 333

附录A 致命错误信息 336

附录B 语法和语义错误信息 339

附录C 警告信息 351

附录D L51连接定位器使用错误提示 354

附录E mVision3调试命令 362

词条图册

更多图册

c51语言 二维数组,单片机语言C51程序设计相关推荐

  1. C语言 | 二维数组作为函数参数

    1024G 嵌入式资源大放送!包括但不限于C/C++.单片机.Linux等.关注微信公众号[嵌入式大杂烩],回复1024,即可免费获取! 偶然间发现C语言二维数组作为函数的参数是个比较容易出错的问题. ...

  2. c语言程序设计歌手大奖赛,C语言二维数组怎么做:设计青年歌手参加歌曲大奖赛计分系统: 共...,怎样用c语言程序设计? 青年歌手参加歌曲大奖赛,有10个评委...

    导航:网站首页 > C语言二维数组怎么做:设计青年歌手参加歌曲大奖赛计分系统: 共...,怎样用c语言程序设计? 青年歌手参加歌曲大奖赛,有10个评委 C语言二维数组怎么做:设计青年歌手参加歌曲 ...

  3. C语言二维数组元素的多种表示方法小结

    C语言二维数组元素的多种表示方法小结 昨天,一个小可爱问我,为何函数中,数组可以改变主函数中的值,比如b[i],就可以改原来数组中的值.其实b[i] 等价于 *(b + i)也是通过地址间接更改的,小 ...

  4. C语言 | 二维数组

    C语言二维数组的定义 一般形式 类型说明符 数组名[常量表达式][常量表达式]int a[10][6],b[3][4]; 用矩阵形式表示二维数组,是逻辑上的概念,能形象地表示出行列关系,而在内存中,各 ...

  5. C语言 二维数组遍历 - C语言零基础入门教程

    目录 一.计算一维数组长度 二.计算二维数组长度 1.二维数组行数 2.二维数组列数 3.二维数组的元素个数 = 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C ...

  6. C语言 二维数组行数和列数计算 - C语言零基础入门教程

    目录 一.计算一维数组长度 二.计算二维数组长度 1.二维数组行数 2.二维数组列数 3.二维数组的元素个数 = 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C ...

  7. C语言 二维数组定义和使用 - C语言零基础入门教程

    目录 一.二维数组简介 二.定义二维数组并初始化 1.定义二维数组 2.初始化二维数组 三.访问二维数组 四.修改二维数组 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 & ...

  8. c语言中文刷屏,c语言二维数组刷屏练习.doc

    c语言二维数组刷屏练习 // 二维数组的刷屏综合练习 编制于2012.9.23 #include #include #include #include #define WIDTH 22//宏定义 /* ...

  9. c语言 二维数组 文库,c语言二维数组练习题

    c语言二维数组练习题 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 完成下列程序代码完成下列程序代码1. 将二维数组(5 行 5 ...

  10. C语言——二维数组转置

    C语言--二维数组转置 问题描述: 输入一个二行三列的数组,把它转置成三行二列的数组. 代码: # include <stdio.h>int main() {int a[2][3];int ...

最新文章

  1. 二 IOC之PropertyPlaceholderConfigurer
  2. 文本文件写java_Java 读/写文件文本文件的示例
  3. TMS320DM642学习----第一篇(硬件连接)
  4. php iis redis,iis windows phpstudy安装redis扩展
  5. houdini 做选点效果
  6. Drupal 7.17 发布,专业的 CMS 内容管理系统
  7. 设计模式 六大法则
  8. 数资 | 已知现期量如何求出增长量?
  9. linux 安装SopCast实现在线直播
  10. 天天向上的力量python代码解释_天天向上的力量 B
  11. html 的scor属性,scrollheight属性
  12. Python 实现用GUI设计有界面的词云生成器
  13. Qt 之 QLineEdit
  14. 英文字体设计标志需要注意什么?
  15. 使用Selenium获取银行账户余额
  16. 解决jest处理es模块
  17. 用word打开摄像头
  18. 上海交大牵手淘宝成立媒体计算实验室:推动视频超分等关键技术发展
  19. php .accdb,PHP:调试与Access数据库(.accdb)的PDO连接
  20. 机器学习储备(12):二项分布的例子解析

热门文章

  1. 阿里云华北1235、华东1、华东2和华南1分别对应哪些城市?地域节点物理数据中心在哪?... 1
  2. Mongodb之Chunk研究
  3. Android rom开发:recovery取消校验Vbmeta version和framework matrix
  4. 3D-GIS地理信息系统项目实施及目标
  5. Greenplum数据库配置管理-参数配置管理和常用参数优化建议
  6. SpringMVC的基本使用+原理,一篇囊括
  7. ubuntu 14.04全攻略
  8. OOC 面向对象C语言编程实践
  9. ArcGISPro通视分析之视线分析
  10. python数独解题器_python 数独解