华东交通大学单片机微机原理及应用基础教程C51语言及其程序设计

上传人:san****glu 文档编号:53494171 上传时间:2018-09-01 格式:PPT 页数:136 大小:3.09MB
返回 下载 相关 举报
华东交通大学单片机微机原理及应用基础教程C51语言及其程序设计_第1页
第1页 / 共136页
华东交通大学单片机微机原理及应用基础教程C51语言及其程序设计_第2页
第2页 / 共136页
华东交通大学单片机微机原理及应用基础教程C51语言及其程序设计_第3页
第3页 / 共136页
华东交通大学单片机微机原理及应用基础教程C51语言及其程序设计_第4页
第4页 / 共136页
华东交通大学单片机微机原理及应用基础教程C51语言及其程序设计_第5页
第5页 / 共136页
点击查看更多>>
资源描述

《华东交通大学单片机微机原理及应用基础教程C51语言及其程序设计》由会员分享,可在线阅读,更多相关《华东交通大学单片机微机原理及应用基础教程C51语言及其程序设计(136页珍藏版)》请在金锄头文库上搜索。

1、第7章 C51语言及其程序设计,熟悉C51语法基础和程序结构 掌握C51结构化程序设计 掌握C51对单片机硬件的访问方法 掌握C51函数定义与调用 了解汇编语言和C51的混和编程,本章教学要求,7.1 C51概述 7.2 C51语法基础7.2.1 标识符和关键字7.2.2 数据类型7.2.3 运算符和表达式7.2.4 程序结构,本章目录,7.3 C51对单片机的访问7.3.1 存储类型7.3.2 存储模式,7.3.4 存储器和并行口的访问7.3.5 位地址访问,7.4 C51函数7.4.1 函数的分类7.4.2 函数的定义7.4.3 函数的调用7.4.4 对被调函数的说明7.4.5 中断函数,

2、7.3.3 特殊功能寄存器的访问,7.5 C51结构化程序设计7.5.1 顺序结构程序7.5.2 选择结构程序,本章目录,7.5.3 循环结构程序7.5.4 查表程序 7.6 C51程序设计实例7.6.1 单片机内/外部资源应用程序设计7.6.2 C51语言和MCS-51汇编语言混合编程7.6.3 编程优化的概念,C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,位操作能力强,适用于各种应用的程序设计。使用C语言进行单片机应用系统开发,具有编程灵活、调试方便、目标代码编译效率高的特点。C语言也是目前使用最广的单片机应用系统编程语言。 C语言编写的单片机应用程序称为单片机C语言程

3、序。MCS-51系列单片机开发系统的编译软件可以对51单片机C语言源程序进行编译,称为C51编译器。在C51编译软件中可进行51单片机C语言程序的调试。,7.1 C51概述,1) 扩展了专门访问MCS-51单片机硬件的数据类型; 2) 存储类型按MCS-51单片机存储空间分类; 3) 存储模式遵循存储空间选定编译器模式; 4) 指针分为通用指针和存储器指针; 5) 函数增加了中断函数和再入函数。,C51编译器针对MCS-51单片机硬件在下列几方面对ANSI C进行了扩展:,7.1 C51概述,使用具有C51编译扩展功能的C语言进行51单片机应用系统的开发编程称为C51编程。C51编程具有以下特

4、点。 1) 可管理内部寄存器和存储器的分配,编程时,无需考虑不同存储器的寻址和数据类型等细节问题; 2) 程序由若干函数组成,具有良好的模块化结构、可移植性好、便于项目维护管理; 3) 有丰富的子程序库可直接引用,从而大大减少用户编程工作量,提高编程效率; 4) 与汇编语言交叉编程。用汇编语言编写与硬件有关的程序,用C51编写与硬件无关的运算程序,充分发挥两种语言的长处,提高开发效率。,7.1 C51概述,C51编程和汇编语言编程过程一样。单片机C语言源程序经过编辑、编译、连接后生成目标程序(.BIN和.HEX)文件,然后运行即可。调试51单片机C语言程序可用Keil C51编译器。 注意:使

5、用C51编程可以取代繁琐的汇编语言编程,但仍需要了解51单片机的硬件结构。所以对于单片机系统的开发应采用汇编语言与C51混合编程的方法更为有效。,7.1 C51概述,标识符用来标识源程序中某个对象的名字,这些对象可以是语句、数据类型、函数、变量、数组等。 标识符由字符串、数字和下划线等组成,应该注意的是第一个字符必须是字母或下划线,不能用数字开头,如“1_a”是错误的,编译时会有错误提示。在C51编译器中,只支持标识符的前32位为有效标识。,7.2 C51语法基础,7.2.1 标识符和关键字,1. 标识符,C51语言是区分大小写的一种高级语言,如“a_1”和“A_1”是两个完全不同的标识符。

6、C51中有些库函数的标识符是以下划线开头的,所以一般不要以下划线开头命名用户自定义标识符。标识符在命名时应当简单,含义清晰,这样有助于阅读理解程序。,7.2.1 标识符和关键字,1. 标识符,关键字是编程语言保留的特殊标识符,它们具有固定的名称和含义,在程序编写中不允许将关键字另做他用。C51中的关键字除了有ANSI C标准的32个关键字外,还根据MCS-51单片机的特点扩展了相关的关键字。C51关键字如表5-1所示。 在C51的文本编辑器中编写C程序,系统可以把保留关键字以不同颜色显示,例如int关键字的默认颜色为天蓝色。,7.2 C51语法基础,7.2.1 标识符和关键字,2. 关键字,C

7、51关键字列表,7.2.1 标识符和关键字,C51关键字列表(续1),7.2.1 标识符和关键字,C51关键字列表(续2),7.2.1 标识符和关键字,C51具有ANSI C的所有标准数据类型。基本数据类型包括:char、int、short、long、float和double。对C51编译器来说,short类型和int类型相同,double类型和float类型相同。 除此之外,为了更加有利地利用MCS-51的结构,C51还增加了一些特殊的数据类型,包括bit、sbit、sfr、sfr16。数据类型如下表所示。,7.2.2 数据类型,C51的数据类型列表,7.2.2 数据类型,char类型的长度

8、是1B,通常用于定义处理字符数据的变量或常量。 unsigned char类型用字节中所有的位表示数值,可以表达的数值范围是0255。 signed char类型用字节中最高位表示数据的符号,0表示正数,1表示负数,负数用补码表示,能表示的数值范围是-128+127。unsigned char常用于处理ASCII字符或用于处理小于或等于255的整型数。,1. char字符类型,7.2.2 数据类型,int整型长度为2B,用于存放一个双字节数据。signed int表示的数值范围是-32768+32767,字节中最高位表示数据的符号,0表示正数,1表示负数。unsigned int表示的数值范围

9、是065535。,2. int整型类型,7.2.2 数据类型,long长整型长度为4B,用于存放一个四字节数据。 分有符号long长整型signed long和无符号long长整型unsigned long,默认值为signed long类型。signed long表示的数值范围是-2147483648+2147483647,字节中最高位表示数据的符号,0表示正数,1表示负数。unsigned long表示的数值范围是04294967295。,3. long长整型类型,float浮点型在十进制中有7位有效数字,是符合IEEE-754标准(32)的单精度浮点型数据,占用4B。具有24位精度。,4

10、. float浮点型类型,7.2.2 数据类型,指针型本身是一个变量,在这个变量中存放着指向另一个数据的地址。这个指针变量要占据一定的内存单元,对不同的处理器长度也不尽相同,在C51中它的长度一般为13个字节。,5. *指针型类型,bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量。它的值是一个二进制位,不是0,就是1,类似一些高级语言中的boolean型数据的True和False。,6. bit位标量类型,sfr类型是一种C51扩充数据类型,占用一个内存单元,值域为0255。利用它可以访问MCS-51单片机内部的所有特殊功能寄存器。 如用sfr P1 = 0x90定义一个特

11、殊功能寄存器变量“P1”,0x90是指51单片机的P1端口地址90H,变量P1即指51单片机的P1端口。在后面的语句中可以用P1=255(对P1端口的所有引脚置高电平)之类的语句操作特殊功能寄存器。,7. sfr特殊功能寄存器类型,7.2.2 数据类型,sfr16类型也是一种C51扩充数据类型,用于定义存在于MCS-51单片机内部RAM的16位特殊功能寄存器。例如,定时器T0和T1。sfr16型数据占用2个内存单元,取值范围为065535。,8. sfr16 16位特殊功能寄存器类型,7.2.2 数据类型,sbit类型也是一种C51扩充数据类型,利用它可以访问芯片内部RAM中的可寻址位或特殊功

12、能寄存器中的可寻址位。定义方法有如下三种: (1)sbit 位变量名 = 位地址 将位的绝对地址赋给位变量,位地址必须位于80HFFH(特殊功能寄存器的位地址)之间。 (2)sbit 位变量名 = 特殊功能寄存器名位位置 当可寻址位位于特殊功能寄存器中时,可采用这种方法。位位置是一个07之间的常数。 (3)sbit 位变量名 = 字节地址位位置 这种方法是以一个常数(字节地址)作为基地址,该常数必须在80HFFH(特殊功能寄存器的字节地址)之间。位位置是一个07之间的常数。,9. sbit可寻址位类型,关于数据类型的说明,sbit定义特殊功能寄存器中的可寻址位;而bit则定义了一个普通的位变量

13、,一个函数中可包含bit类型的参数,函数返回值也可为bit类型。 另外,bit还可访问MCS-51单片机片内20H2FH范围内的位对象。C51编译器提供了一个bdata存储器类型,允许将具有bdata类型的对象放入MCS-51单片机片内可位寻址区。,sbit和bit的区别,51单片机中的特殊功能寄存器及其可寻址位,已被预先定义放在文件reg51.h中,在程序的开头只需加上#include或#include即可。,关于reg51.h文件的说明,C51算术运算符有五种:+ 加法运算符或正号- 减法运算符或负号* 乘法运算符/ 除法运算符% 模(求余)运算符,模运算即求余数,如7%3,结果是7除以3

14、所得余数1。 优先级:先乘除,后加减,先括号内,再括号外。 结合性:自左至右方向。,1. C51的算术运算符,7.2.3 运算符和表达式,C51关系运算符有6种。关系表达式的结果是逻辑值“真”或“假”,C51中以“1”代表真,“0”代表假。大于= 大于等于= = 相等! = 不相等 优先级:前四个高,后两个“= =”和“! =”级别低。 结合性:自左至右方向。,2. C51的关系运算符,7.2.3 运算符和表达式,C51逻辑运算符有3种。运算符的两边为关系表达式。逻辑表达式和关系表达式的值相同,以“0”代表假,以“1”代表真。& 逻辑与| 逻辑或! 逻辑非 优先级:逻辑非“!”最高。 结合性:

15、“&”和“|”自左至右方向。“!”自右至左方向。,3. C51的逻辑运算符,7.2.3 运算符和表达式,C51按位操作运算符有6种。& 按位与| 按位或 按位异或 位取反 位右移 注意:移位操作为补零移位。位运算符只能对整形和字符型运算,不能对实型数据运算。如:char a = 0x0f;表达式a = a值为0xf0。如:char a = 0x22;表达式a= &= = |=例如:a+=b相当于a=a+b。a=b相当于a=ab。,7. 复合赋值运算符,注意&与*的用法意义如下: 1)“&”与按位与运算符的差别。如果“&”为“与”运算,&运算符的两边必须为变量或常量,如a=c&b。“&”是取地址运算时,如a=&b。 2)“*”与指针定义时指针前的“*”的差别。如char *pt,这里的“*”只表示pt为指针变量,不代表间址取内容的运算。而c=*b,是将以b的内容为地址的单元内容送c变量。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号