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