单片机技术及应用-第九章 c51程序设计及应用

上传人:tia****nde 文档编号:71008594 上传时间:2019-01-19 格式:PPT 页数:87 大小:1.57MB
返回 下载 相关 举报
单片机技术及应用-第九章 c51程序设计及应用_第1页
第1页 / 共87页
单片机技术及应用-第九章 c51程序设计及应用_第2页
第2页 / 共87页
单片机技术及应用-第九章 c51程序设计及应用_第3页
第3页 / 共87页
单片机技术及应用-第九章 c51程序设计及应用_第4页
第4页 / 共87页
单片机技术及应用-第九章 c51程序设计及应用_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《单片机技术及应用-第九章 c51程序设计及应用》由会员分享,可在线阅读,更多相关《单片机技术及应用-第九章 c51程序设计及应用(87页珍藏版)》请在金锄头文库上搜索。

1、单 片 机 技 术 与 应 用 实 践,第9章 C51程序设计及应用,单片机技术与应用实践,教学提示,本章主要介绍了C51程序设计基础知识,包括C语言的数据类型、运算符、各种语句、数组与函数等知识,使大家具有单片机C语言程序设计的能力。,教学目标,了解C51与ASM51的区别。 掌握C51程序设计基础知识。 掌握C51的函数与数组的使用方法。 学会用C语言编写简单单片机程序。,单片机技术与应用实践,9.1 C51程序设计基础知识,9.2 C51的函数与数组,9.3 实践训练,单片机技术与应用实践,9.1 C51程序设计基础知识,9.1.1 C51特点,9.1.2 C51编程的例子,9.1.3

2、C51的标识符和保留字,9.1.4 C51的数据类型,9.1.5 C51的常量,9.1.6 变量,9.1.7 C51的常用运算符,9.1.8 C51的输入输出,9.1.9 C51的基本语句,单片机技术与应用实践,9.1 C51程序设计基础知识,9.1.1 C51特点,(1)对单片机的指令系统不要求了解,仅要求对51系列单片机的存贮器结构有初步了解; (2)寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理; (3)程序有规范的结构,可分成不同的函数,这种方式可使程序结构化; (4)提供的库包含许多标准子程序,具有较强的数据处理能力; (5) 由于具有方便的模块化编程技术,使已编好程序可

3、容易地移植; (6)生成的目标代码的效率略低于汇编语言程序。,C51与ASM51相比,主要具有如下特点:,单片机技术与应用实践,9.1.2 C51编程的例子,【例9-1】 编程使接在P1.0引脚上的LED发光。 #include “reg51.h“ sbit P1_0=P10; void main() P1_0=0; /* P1.0 灯亮*/ ,这个程序的作用是让接在P1.0引脚上的LED点亮,单片机技术与应用实践,1. 编译预处理部分,程序的第一行是一个“文件包含”处理。程序中包含reg51.h文件的目的是为了要使用P1这个符号,即通知C编译器,程序中所写的P1是指80C51单片机的P1端口

4、而不是其他变量。 可根据不同的编程需要选择不同的头文件,一般情况下若只用简单控制,只需要下面3个头文件: #include “reg51.h“ /*寄存器说明头文件*/ #include “stdio.h“ /*输入/输出说明头文件*/ #include “intrins.h“ /*部分特殊指令说明头文件*/,在C语言里,如果直接写P1.0,C编译器并不能识别,而且P1.0也不是一个合法的C语言变量名,所以需给它另起一个名字,这里使用了Keil C的关键字sbit来定义。,2. 说明与定义部分,单片机技术与应用实践,函数是C51程序的基本单位,一个C51程序至少有一个主函数main(),也可以

5、由一个主函数main()和若干个其他函数构成。函数由函数说明部分和函数体两部分构成。 (1) 函数说明部分由函数名、函数类型、函数属性、函数参数(形参)名和形式参数类型组成。 一个函数名后面必须跟一对圆括号,即便没有任何参数也是如此。 (2) 函数体,即函数说明部分下面的大括号“”内的部分。 函数体一般包括: 声明部分:在这部分中定义所用到的变量. 执行部分:由若干个语句组成。 说明: void Delay() /*这是一个空函数,什么也不做,但它是合法的*/,3. 函数,单片机技术与应用实践,(1)每个变量必须先定义后使用。 (2)变量名由英文字母、数字和下划线构成,具体使用细则见9.1.3

6、小节。 (3)C语言书写的格式自由,可以在一行写多个语句,也可以把一个语句写在多行。没有行号(但可以有标号),对书写的缩进没有要求。但是建议读者自己按一定的规范来写,可以给自己带来方便。 (4)每个语句的最后必须有一个分号“;”,分号是C语句的必要组成部分,此点尤其要注意与汇编语言区分。空语句可以只用一个分号表示,在分号前什么也不写,最好用花括号把分号括起来,即;,表示什么也不做但要耗费一定的时间,作用类似于汇编语言中的空操作指令NOP。,4. 语句组成规则,单片机技术与应用实践,可以用/*/的形式为C程序的任何一部分做注释,在“/*”开始后,一直到“*/”为止的中间的任何内容都被认为是注释。

7、 注意:Keil C也支持C+风格的注释,就是用“/”引导的后面的语句是注释. 例: P1_0=!P1_0; /取反P1.0 这种风格的注释只对本行有效,而且书写比较方便,所以在只需要一行注释时,往往采用这种格式。,5.C51的注释,单片机技术与应用实践,C51程序结构如下:,译预处理部分 #include #define 标识符 字符串说明与定义部分 sbit P1_0=P10; /*变量定义*/ void delay(void); /*函数声明*/ void main() /*主函数说明*/ 声明部分 执行部分 void delay(int a) /*子函数说明*/ 声明部分 执行部分 ,

8、单片机技术与应用实践,9.1.3 C51的标识符和保留字,标识符用于标识语句、数据类型、函数、变量、数组、存储方式等对象,也就是这些对象的名字。在C语言中,标识符严格区分大小写。在C51编译器中,支持标识符的前32位为有效标识,如果超长,则超长部分被舍弃。 注意:变量名只能由字母、数字、下划线组成,且只能由字母和下划线开头。变量不能是C语言的保留字(或称关键字),即不能使用C语言系统已经有固定含义的单词。,单片机技术与应用实践,表9-1 C语言32个保留字,表9-2 C51扩展13个保留字,单片机技术与应用实践,9.1.4 C51的数据类型,数据在计算机内存中的存放情况由数据结构决定。C语言的

9、数据结构是由数据类型决定的,C51的数据类型分为基本数据类型和组合数据类型,组合数据类型是由基本数据类型构造而成的。情况与标准C中的数据类型基本相同,标准C语言中基本的数据类型为char、int、short、long、float和double。组合数据类型有数组类型、结构体类型、共同体类型、枚举类型、指针类型和空类型。 注意:在C51编译器中int和short相同,float和double相同。另外,C51中还有专门针对MCS-51单片机的特殊功能寄存器类型和位类型。,单片机技术与应用实践,表9-3 C51基本数据类型,单片机技术与应用实践,1字符型char,长度为一个字节,用于存放一个单字节

10、的数据。可以分为以下两种: (1) signed char:用于定义带符号字节数据,其字节的最高位为符号位,“0”表示正数,“1”表示负数,用补码表示,所能表示的数值范围是-128+127。 (2) unsigned char:用于定义无符号字节数据或字符,可以存放一个字节的无符号数,其取值范围为0255。可以用来存放无符号数,也可以存放西文字符,一个西文字符占一个字节,在计算机内部用ASCII码存放。 默认为signed char。,单片机技术与应用实践,2int整型,长度均为两个字节,用于存放一个双字节数据。可分两种: (1) signed int:用于存放两字节带符号数,用补码表示,数的

11、范围为-32768+32767。 (2) unsigned int:用于存放两字节无符号数,数的范围为065535。 默认为signed int。,3long长整型,长度均为4字节,用于存放一个4字节数据。可分以下两种: (1) signed long:用于存放4字节带符号数,用补码表示,数的范围为-2147483648 +2147483647。 (2) unsigned long:用于存放4字节无符号数,数的范围为04294967295。 默认为signed long。,单片机技术与应用实践,4 float浮点型,float型数据的长度为4字节,格式符合IEEE754标准的单精度浮点型数据,

12、包含指数和尾数两部分,最高位为符号位,“1”表示负数,“0”表示正数,其次的8位为阶码,最后的23位为尾数的有效数位,由于尾数的整数部分隐含为“1”,所以尾数的精度为24位。,5* 指针型,指针变量本身也是一个变量,在这个变量中存放的是指向另一个数据的地址。这个指针变量要占用一定的内存单元,对不同的处理器其长度不一样,在C51中它的长度一般为13个字节。,单片机技术与应用实践,6特殊功能寄存器型,C51提供的一种扩展数据类型,用于访问MCS-51单片机中的特殊功能寄存器数据,在C51中对特殊功能寄存器的访问必须先用sfr或sfr16进行声明。可以分为以下两种: (1) sfr:sfr为字节型特

13、殊功能寄存器类型,占一个内存单元,利用它可以访问MCS-51内部的所有特殊功能寄存器。 (2) sfr16:sfr16为双字节型特殊功能寄存器类型,占用两个字节单元,利用它可以访问MCS-51内部的所有两个字节的特殊功能寄存器。,单片机技术与应用实践,7位类型,位类型也是C51提供的扩展数据类型,用于访问MCS-51单片机中的可寻址的位单元,但不能定义位指针也不能定义位数组。它们在内存中都只占一个二进制位,其值可以是“1”或“0”。支持以下两种位类型: (1) bit型:定义的位变量在C51编译器编译时,在不同时间位地址是可以变化的。使用它可以定义一个位变量,但不能定义位指针,也不能定义位数组

14、。 (2) sbit型:定义的位变量必须与MCS-51单片机的一个可以寻址位单元或可位寻址的字节单元中的某一位(C51内部的RAM及特殊功能寄存器中可位寻址空间)联系在一起,在C51编译器编译时,其对应的位地址是不可变化的。,单片机技术与应用实践,说明:,在C51语言程序中,有可能会出现在运算中数据类型不一致的情况。C51允许任何标准数据类型的自动转换,除自动转换外,还可以通过强制类型转换符“()”对数据类型进行人为的强制转换,例:1/2=0,而(float)1/2=0.5,此知识点在编程时尤其需要注意。 以上所述的数据类型中只有bit与unsigned char两种数据类型可以直接转换成机器

15、指令。所以C语言中使用的其他数据类型,虽然语句上很简单,但都要C51编译器用一系列机器指令处理这些数据类型。特别是对浮点数,处理起来更加复杂,将明显增加程序的长度与执行时间。因此应该避免使用复杂的数据类型。在编制C51程序时,应该尽可能使用无符号字符变量和位变量。,单片机技术与应用实践,9.1.5 C51的常量,整型常量也就是整型常数,根据其值范围在计算机中分配不同的字节数来存放。在C51中它可以表示成以下几种形式: (1) 十进制数。如123、-45、0等。 (2) 十六进制数。以0x开头表示,如0x12、-0x3B等。 (3) 长整型。在C51中当一个整数的值达到长整型的范围,则该数按长整

16、型存放,在存储器中占4字节。另外,如一个整数后面加一个字母L,这个数在存储器中也按长整型存放,如12L在存储器中占4个字节。,常量是指在程序执行过程中其值不能改变的量。在C51中支持整型常量、浮点型常量、字符型常量和字符串型常量。,1整型常量,单片机技术与应用实践,2浮点型常量,字符型常量是用单引号括起的字符,如2、A、n等。可以是可显示的ASCII字符,也可以是不可显示的控制字符。对不可显示的控制字符须在前面加上反斜杠“”组成转义字符。利用它可以完成一些特殊功能和输出时的格式控制。,浮点型常量也就是实型常数。有十进制表示形式和指数表示形式。 十进制表示形式又称定点表示形式,由数字和小数点组成,如3.14159、0.36。 指数表示又称科学记数法,常用于表示较大、较小的实型常量,指数形式为: 数字 .数字 e 整数 如:6.021023,可表示成:6.02e+23或6.02e23。 -1.610-19,可表示成:-1.6e-19

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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