第5章 mcs-51单片机c51程序设计_第1页
第5章 mcs-51单片机c51程序设计_第2页
第5章 mcs-51单片机c51程序设计_第3页
第5章 mcs-51单片机c51程序设计_第4页
第5章 mcs-51单片机c51程序设计_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

张兴忠制作: 返回目录单片机单片机 原理与接口技术原理与接口技术太原理工大学电子工业出版社第 5章 MCS-51单片机C51程序设计制作 张兴忠 修审 牛昱光Date 1张兴忠制作: 返回目录n 熟悉 C51语法基础和程序结构;n 掌握 C51结构化程序设计;n 掌握 C51对单片机硬件的访问方法;n 掌握 C51函数定义与调用;n 了解汇编语言和 C51的混和编程。本章教学要求 第 5章 MCS-51单片机 C51程序设计Date 2张兴忠制作: 返回目录5.1 C51概述5.2 C51语法基础5.2.1 标识符和关键字5.2.2 数据类型5.2.3 运算符和表达式5.2.4 程序结构第 5章 MCS-51单片机 C51程序设计本章目录本章目录5.3 C51对对 MCS-51单片机的访问单片机的访问5.3.1 存储类型存储类型5.3.2 存储模式存储模式5.3.3 对特殊功能寄存器的访问对特殊功能寄存器的访问5.3.4 对存储器和并行口的访问对存储器和并行口的访问5.3.5 位地址访问位地址访问Date 3张兴忠制作: 返回目录5.4 C51函数5.4.1 函数的分类5.4.2 函数的定义5.4.3 函数的调用5.4.4 对被调函数的说明5.4.5 中断函数5.5 C51结构化程序设计5.5.1 顺序结构程序5.5.2 选择结构程序第 5章 MCS-51单片机 C51程序设计本章目录本章目录5.5.3 循环结构程序循环结构程序5.5.4 查表程序查表程序5.6 C51程序设计实例程序设计实例5.6.1 单片机内单片机内 /外部资源应用外部资源应用程序设计程序设计5.6.2 C51语言和语言和 MCS-51汇编语汇编语言混合编程言混合编程5.6.3 编程优化的概念编程优化的概念习题与思考题习题与思考题Date 4张兴忠制作: 返回目录5.1 C51概述C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,位操作能力强,适用于各种应用的程序设计。使用 C语言进行单片机应用系统开发,具有编程灵活、调试方便、目标代码编译效率高的特点。 C语言也是目前使用最广的单片机应用系统编程语言。由 C语言编程的单片机应用程序,称为单片机 C语言程序。 MCS-51系列单片机开发系统的编译软件可以对 51单片机 C语言源程序进行编译,称为C51编译器。在 C51编译软件中可进行 51单片机 C语言程序的调试。- C51编译器Date 5张兴忠制作: 返回目录1) 扩展了专门访问 MCS-51单片机硬件的数据类型;2) 存储类型按 MCS-51单片机存储空间分类;3) 存储模式遵循存储空间选定编译器模式;4) 指针分为通用指针和存储器指针;5) 函数增加了中断函数和再入函数。5.1 C51概述 - C51特点C51编译器针对编译器针对 MCS-51单片机硬件在下列几方面单片机硬件在下列几方面对对 ANSI C进行了扩展。进行了扩展。Date 6张兴忠制作: 返回目录使用具有 C51编译扩展功能的 C语言进行 MCS-51单片机应用系统的开发编程,简称 C51编程。 C51编程具有以下特点。1) 可管理内部寄存器和存储器的分配,编程时,无需考虑不同存储器的寻址和数据类型等细节问题;2) 程序由若干函数组成,具有良好的模块化结构、可移植性好、便于项目维护管理;3) 有丰富的子程序库可直接引用,从而大大减少用户编程工作量,提高编程效率;4) 与汇编语言交叉编程。用汇编语言编写与硬件有关的程序,用 C51编写与硬件无关的运算程序,充分发挥两种语言的长处,提高开发效率。5.1 C51概述 - C51特点Date 7张兴忠制作: 返回目录C51编程和汇编语言编程过程一样。单片机 C语言源程序经过编辑、编译、连接后生成目标程序( .BIN和 .HEX) 文件,然后运行即可。调试 51单片机 C语言程序可用 Keil C51编译器。注意,使用 C51编程可以取代繁琐的汇编语言编程,但仍需要了解 MCS-51单片机的硬件结构。所以对于单片机系统的开发应采用汇编语言与 C51混合编程的方法更为有效。5.1 C51概述 - C51特点Date 8张兴忠制作: 返回目录5.2 C51 语法基础标识符用来标识源程序中某个对象的名字,这些对象可以是语句、数据类型、函数、变量、数组等。标识符由字符串、数字和下划线等组成,应该注意的是第一个字符必须是字母或下划线,不能用数字开头,如 “ 1_a” 是错误的,编译时会有错误提示。在 C51编译器中,只支持标识符的前 32位为有效标识。C51语言是区分大小写的一种高级语言,如“ a_1” 和 “ A_1” 是两个完全不同的标识符。5.2.1 标识符和关键字标识符和关键字-标识符Date 9张兴忠制作: 返回目录C51中有些库函数的标识符是以下划线开头的,所以一般不要以下划线开头命名用户自定义标识符。标识符在命名时应当简单,含义清晰,这样有助于阅读理解程序。关键字则是编程语言保留的特殊标识符,它们具有固定的名称和含义,在程序编写中不允许将关键字另做他用。 C51中的关键字除了有 ANSI C标准的 32个关键字外,还根据 MCS-51单片机的特点扩展了相关的关键字。 C51关键字如表 5-1所示。在 C51的文本编辑器中编写 C程序,系统可以把保留关键字以不同颜色显示,如 int关键字的默认颜色为天蓝色。5.2.1 标识符和关键字标识符和关键字 -关键字Date 10张兴忠制作: 返回目录5.2.1 标识符和关键字标识符和关键字 -关键字列表Date 11张兴忠制作: 返回目录5.2.1 标识符和关键字标识符和关键字 -关键字列表Date 12张兴忠制作: 返回目录5.2.1 标识符和关键字标识符和关键字 -关键字列表Date 13张兴忠制作: 返回目录5.2.2 数据类型n C51具有 ANSI C的所有标准数据类型。n 其基本数据类型包括: char、 int、short、 long、 float和 double。 n 对 C51编译器来说, short类型和 int类型相同, double类型和 float类型相同。-C51的数据类型Date 14张兴忠制作: 返回目录除此之外,为了更加有利地利用除此之外,为了更加有利地利用 MCS-51的结构,的结构, C51还增还增加了一些特殊的数据类型,包括加了一些特殊的数据类型,包括 bit、 sbit、 sfr、 sfr16。数据类型如表数据类型如表 5-2所示。所示。5.2.2 数据类型 -C51的数据类型Date 15张兴忠制作: 返回目录char类型的长度是 1B, 通常用于定义处理字符数据的变量或常量。unsigned char类型用字节中所有的位表示数值,可以表达的数值范围是 0255。signed char类型用字节中最高位表示数据的符号, 0表示正数, 1表示负数,负数用补码表示,能表示的数值范围是 -128+127。 unsigned char常用于处理 ASCII字符或用于处理小于或等于 255的整型数。1 char字符类型字符类型5.2.2 数据类型 -char字符类型Date 16张兴忠制作: 返回目录2 int整型int整型长度为 2B, 用于存放一个双字节数据。signed int表示的数值范围是 -32768+32767,字节中最高位表示数据的符号, 0表示正数, 1表示负数。unsigned int表示的数值范围是 0 65535。5.2.2 数据类型 -int整型Date 17张兴忠制作: 返回目录long长整型长度为 4B, 用于存放一个四字节数据。分有符号 long长整型 signed long和无符号 long长整型 unsigned long, 默认值为 signed long类型。signed int表示的数值范围是 -2147483648+2147483647,字节中最高位表示数据的符号, 0表示正数, 1表示负数。unsigned long表示的数值范围是 0 4294967295。3 long长整型长整型5.2.2 数据类型 -long长整型Date 18张兴忠制作: 返回目录4 float浮点型float浮点型在十进制中具有 7位有效数字,是符合 IEEE-754标准( 32)的单精度浮点型数据,占用 4B。 具有 24位精度。5.2.2 数据类型 -float浮点型Date 19张兴忠制作: 返回目录5 *指针型指针型本身就是一个变量,在这个变量中存放着指向另一个数据的地址。这个指针变量要占据一定的内存单元,对不同的处理器长度也不尽相同,在 C51中它的长度一般为 1 3个字节。5.2.2 数据类型 -*指针型Date 20张兴忠制作: 返回目录bit位标量是 C51编译器的一种扩充数据类型,利用它可定义一个位标量。它的值是一个二进制位,不是 0,就是 1,类似一些高级语言中的 boolean型数据的 True和 False。6 bit位标量位标量5.2.2 数据类型 -bit位标量Date 21张兴忠制作: 返回目录7 sfr特殊功能寄存器sfr是一种 C51扩充数据类型,占用一个内存单元,值域为 0 255。利用它可以访问 MCS-51单片机内部的所有特殊功能寄存器。如用 sfr P1 = 0x90定义一个特殊功能寄存器变量 “ P1” , 0x90是指 51单片机的 P1端口地址 90H, 变量 P1即指 51单片机的 P1端口。在后面的语句中可以用 P1 = 255(对 P1端口的所有引脚置高电平)之类的语句操作特殊功能寄存器。5.2.2 数据类型 -sfr特殊功能寄存器Date 22张兴忠制作: 返回目录8.sfr16 16位特殊功能寄存器sfr16也是一种 C51扩充数据类型,用于定义存在于 MCS-51单片机内部 RAM的 16位特殊功能寄存器,如定时器 T0和 T1。sfr16型数据占用 2个内存单元,取值范围为 0 65535。5.2.2 数据类型 -16位特殊功能寄存器Date 23张兴忠制作: 返回目录sbit也是一种 C51扩充数据类型,利用它可以访问芯片内部 RAM中的可寻址位或特殊功能寄存器中的可寻址位。定义方法有如下三种:( 1) sbit 位变量名 = 位地址将位的绝对地址赋给位变量,位地址必须位于 80HFFH( 特殊功能寄存器的位地址)之间。9 sbit可寻址位可寻址位5.2.2 数据类型 -sbit可寻址位Date 24张兴忠制作: 返回目录( 2) sbit 位变量名 = 特殊功能寄存器名 位位置当可寻址位位于特殊功能寄存器中时,可采用这种方法。位位置是一个 0 7之间的常数。( 3) sbit 位变量名 = 字节地址 位位置这种方法是以一个常数(字节地址)作为基地址,该常数必须在 80H FFH(特殊功能寄存器的字节地址)之间。位位置是一个 0 7之间的常数。9 sbit可寻址位可寻址位5.2.2 数据类型 -sbit可寻址位Date 25张兴忠制作: 返回目录MCS-51单片机中的特殊功能寄存器及其可寻址位,已被预先定义放在文件 reg51.h中,在程序的开头只需加上 #include或#include即可。另外, bit还可访问 MCS-51单片机片内 20H 2FH范围内的位对象。 C51编译器提供了一个 bdata存储器类型,允许将具有 bdata类型的对象放入 MCS-51单片机片内可位寻址区。5.2.2 数据类型 -reg51.hDate 26张兴忠制作: 返回目录sbit和 bit的区别: sbit定义特殊功能寄存器中的可寻址位;而 bit则定义了一个普通的位变量,一个函数中可包含bit类型的参数,函数返回值也可为 bit类型。5.2.2 数据类型 -sbit和 bitDate 27张兴忠制作: 返回目录5.2.3 运算符和表达式C51算术运算符有五种。+ 加法运算符或正号- 减法运算符或负号* 乘法运算符/ 除法运算符% 模(求余)运算符优先级:先乘除,后加减,先括号内,再括号外。结合性:自左至右方向。模运算即求余数,如 7%3,结果是 7除以 3所得余数 1。1 C51的算术运算符的算术运算符-算术运算符Date 28张兴忠制作: 返回目录C51关系运算符有六种。大于= 大于等于= = 相等! = 不相等优先级:前四个高,后两个 “ = =” 和 “ ! =” 级别低。结合性:自左至右方向。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论