单片机原理及接口技术 教学课件 ppt 作者 赵佩华 眭碧霞 第4章 单片机的C51程序设计

上传人:E**** 文档编号:89483273 上传时间:2019-05-25 格式:PPT 页数:54 大小:90.50KB
返回 下载 相关 举报
单片机原理及接口技术 教学课件 ppt 作者 赵佩华 眭碧霞 第4章 单片机的C51程序设计_第1页
第1页 / 共54页
单片机原理及接口技术 教学课件 ppt 作者 赵佩华 眭碧霞 第4章 单片机的C51程序设计_第2页
第2页 / 共54页
单片机原理及接口技术 教学课件 ppt 作者 赵佩华 眭碧霞 第4章 单片机的C51程序设计_第3页
第3页 / 共54页
单片机原理及接口技术 教学课件 ppt 作者 赵佩华 眭碧霞 第4章 单片机的C51程序设计_第4页
第4页 / 共54页
单片机原理及接口技术 教学课件 ppt 作者 赵佩华 眭碧霞 第4章 单片机的C51程序设计_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《单片机原理及接口技术 教学课件 ppt 作者 赵佩华 眭碧霞 第4章 单片机的C51程序设计》由会员分享,可在线阅读,更多相关《单片机原理及接口技术 教学课件 ppt 作者 赵佩华 眭碧霞 第4章 单片机的C51程序设计(54页珍藏版)》请在金锄头文库上搜索。

1、第4章 单片机的C51程序设计,机械工业出版社,第4章 单片机的C51程序设计,C51编程概述 C51数据类型及存储类型 C51的基本运算 C51的构造数据类型 C51的函数 汇编语言和C语言的混合编程,4.1 C51编程概述,概述 8051单片机支持四种语言:汇编、PL/M、C和BASIC。,4.1 C51编程概述,KEIL 8051开发工具 KEIL 8051开发工具可用于编译C源程序、汇编源程序,链接和定位目标文件及库, 创建HEX文件以及调试目标程序。,4.1 C51编程概述,C51程序开发过程 Cx51源程序是ASCII文件,可以用任何标准的ASCII文本编辑器来编写。例如记事本,写

2、字板等。,4.1 C51编程概述,C51程序结构 C语言程序的组成结构如下所示: 全局变量说明 /*可被各函数引用*/ main() /*主函数*/ 局部变量说明 /*只在本函数引用*/ 执行语句(包括调用其他函数语句) fun1(形式参数表) /*函数1*/ 形式参数说明 ,4.2 C51数据类型及存储类型,C51的数据类型 C51的数据类型大体可以分为基本数据类型、构造数据类型、指针类型、空类型、位型变量等。,4.2 C51数据类型及存储类型,C51的数据存储类型 C51编译器允许的存储类型主要包括data,bdata、idata、pdata、xdata和code等,它们和单片机的不同存储

3、区相对应。,4.2 C51数据类型及存储类型,C51对单片机主要资源的定义 使用关键字定义SFR 通过头文件访问SFR 对扩展I/O端口或片外RAM的直接访问 定义和使用位变量,4.3 C51的基本运算,C51的基本运算主要包括算数运算、关系运算、逻辑运算、位运算和赋值运算及其表达式等。,4.3 C51的基本运算,C51的算术运算 基本算术运算 自增、自减运算 算术表达式和运算符的优先级与结合性,4.3 C51的基本运算,C51的关系运算 关系运算符: 、 = 、= =、! = 关系表达式:用关系运算符将运算对象连接起来的式子为关系表达式,关系表达式的值为逻辑值,其结果只能取真和假两种值。,4

4、.3 C51的基本运算,C51的逻辑运算 C51提供3种逻辑运算符:& 、| | 、! 逻辑表达式:用逻辑运算符将运算对象连接起来的式子称为逻辑表达式,逻辑表达式的值是逻辑量,即真或假。,4.3 C51的基本运算,C51的位运算 位运算的操作对象是整型和字符型数据,不能是实型数据。 & (按位与)、| (按位或)、 (按位异或) 、 (按位取反)、 (左移)、 (右移),4.3 C51的基本运算,C51的赋值运算 赋值运算符:= 赋值表达式:变量名=表达式 赋值的类型转换规则:赋值运算中,赋值号两侧数据类型不一致时,系统自动将右边表达式值转换成左侧变量的类型,再赋给该变量。 复合赋值运算符:赋

5、值符号前加上其他运算符构成复合赋值运算符。,4.4 C51的构造数据类型-数组,C51的构造数据类型有数组、指针和结构等。 在单片机系统中,数组的应用比较广泛,指针次之,结构则用得相对较少。,4.4 C51的构造数据类型-数组,数组 数组是同类型数据的有序集合。 数组用一个名字来标识,称为数组名。 数组中各元素的顺序用下标表示,下标为n的元素可以表示为数组名 n 。 改变 中的下标就可以访问数组中的不同元素。,4.4 C51的构造数据类型-数组,一维数组 由具有一个下标的数组元素组成的数组称为一维数组。 定义一维数组的一般形式如下: 类型说明符 数组名元素个数; 在定义数组时可以对数组进行整体

6、初始化。定义后,若想对数组赋值,则只能对每个元素分别赋值。,4.4 C51的构造数据类型-数组,二维数组 具有两个或两个以上下标的数组称为二维数组或多维数组。 二维数组定义形式如下: 类型说明符 数组名行数 列数 ; 其中,数组名是一个标识符,行数和列数是常量表达式。 二维数组在定义时可以整体初始化,定义后,可单个赋值。,4.4 C51的构造数据类型-数组,字符数组 若数组的元素是字符型的,则该数组是一个字符数组。,4.4 C51的构造数据类型-指针,指针 C51支持“基于存储器”的指针和“一般”指针。 当定义一个指针变量时,若未给出它所指向的对象的存储类型,则该指针变量被认为是一般指针;若给

7、出了它所指对象的存储类型,则该指针被认为是基于存储器的指针。,4.4 C51的构造数据类型-指针,基于存储器的指针 例如: char xdata * px; px指向一个存在片外RAM的字符变量,Px在默认的存储器中,占2字节。 char xdata * data py; py指向一个存在片外RAM的字符变量,py本身在RAM中,占用2字节。,4.4 C51的构造数据类型-指针,一般指针 函数调用过程中,函数的指针参数需要用一般指针。 一般指针的说明形式如下: 数据类型 *指针变量 如:char * pz; pz处于编译模式默认的存储区,长度为3字节。,4.4 C51的构造数据类型-结构,结构

8、类型的定义 struct 结构名 结构成员说明;/和定义基本数据类型相似 例如,定义一个名为date的结构类型: struct date int month; int day; int year; ,4.4 C51的构造数据类型-结构,定义结构的变量 结构变量可以在定义结构时定义,也可以先定义结构类型,在定义该结构的变量。,4.4 C51的构造数据类型-结构,定义结构的变量 先定义结构date,再定义其结构的变量date 1和date2: date datel , date2; struct student int no; char name 20 ; int grade; wangxiao,

9、 liping ; / /定义结构时即定义结构的变量date 1和date2。,4.4 C51的构造数据类型-结构,结构类型变量的引用 使用成员运算符“ . “实现对结构成员的引用。 例如: date. year = 2003; date. month = 12; date. day = 25;,4.5 C51流程控制语句,C51 的选择语句有: if语句 switch/ case语句。,4.5 C51流程控制语句-if,if语句 C51提供3种形式的if语句: if(表达式) 语句; if(表达式)语句 ; else语句2; if(表达式1) 语句1; else if (表达式2) 语句2;

10、 else if (表达式3) 语句3; ,4.5 C51流程控制语句-if,if语句 如果一个if语句中又含有一个或多个if语句,则称为if语句嵌套。 在if语句嵌套中,应注意if与else的对应关系,else总是与它前面最近的一个if语句相对应。,4.5 C51流程控制语句- switch,switch/ case 语句 switch/ case是多分支选择语句,形式如下: switch (表达式) case常量表达式1 :语句1; break; case常量表达式2:语句2; break; case常量表达式n:语句n; break; default :语句n + 1 ; ,4.5 C5

11、1流程控制语句- switch,说明 1. switch括号中的表达式的值与某一case后面的常量表达式的值相同时,就执行它后面的语句,遇到break语句则退出switch语句。 2. 若所有的case中的常量表达式的值都没有与表达式的值相匹配时,就执行default后面的语句。,4.5 C51流程控制语句- switch,说明 3. 每一个case的常量表达式必须是互不相同的,否则将出现混乱局面。 4. 各case和default出现的次序,不影响程序的执行结果。,4.5 C51流程控制语句,循环语句 循环程序主要有“当型”循环和“直到型”循环两种,C51对此提供了4种实现方法。,4.5 C

12、51流程控制语句,循环语句 基于if和goto构成的循环 基于while语句构成的循环 基于do-while语句构成的循环 基于for语句构成的循环,4.5 C51流程控制语句,基于if和goto构成的循环 采用if和goto可以构成“当型“循环程序: loop: if(表达式) 语句 goto loop; loop是语句标号,或称为标识符,原则上任何一条语句都可以有标号,标号和语句用 “ :”号分开。,4.5 C51流程控制语句,基于if和goto构成的循环 采用if和goto可以构成“直到型“循环程序: loop: 语句; if(表达式) goto loop; ,4.5 C51流程控制语句

13、,基于while语句构成的循环 while语句用来实现“当型“循环: while (表达式) 语句;/可以是复合语句 while语句首先计算表达式的值;若其值为非0,则执行内嵌语句,若其值为0,则退出while 循环。,4.5 C51流程控制语句,基于do-while语句构成的循环 do-while语句用来实现“直到型“循环: do 语句;/可以是复合语句 while (表达式) ;,4.5 C51流程控制语句,基于do-while语句构成的循环 do-while语句特点:先执行内嵌的语句;再计算表达式,如果表达式的值为非0,则继续执行内嵌的语句,直到表达式的值为0时结束循环。,4.5 C51

14、流程控制语句,基于for语句构成的循环 for语句的一般形式为: for (表达式1 ;表达式2;表达式3) 语句; ,4.5 C51流程控制语句,基于for语句构成的循环 for语句执行过程:首先求解表达式1 ;其次求解表达式2,若其值非0,则执行内嵌语句;否则退出循环;最后求解表达式3,并回到第2步。 在for 语句中,可以没有表达式1、表达式2或表达式3,若三个表达式都没有,则相当于二个死循环。,4.5 C51流程控制语句,C51的中断控制 C51编译器支持在C51源程序中直接开放中断过程或中断函数,但中断函数是由中断系统自动调用的。 用户在主程序或函数中一般不能调用中断函数,否则容易导

15、致混乱。,4.5 C51流程控制语句,C51的中断控制 中断函数定义: 返回值 函数名 interrupt n using r,4.5 C51流程控制语句,C51的中断控制 中断函数中, interrupt和using为关键字。 n为中断源编号。05分别对应外部中断0、定时器/计数器0中断、外部中断1、定时器/计数器1中断、串口中断和定时器/计数器2中断。 r为工作寄存器组,取值范围为03。若选择了寄存器组,则按程序员的安排编译,否则由编译器自动分配。,4.6 C51函数,函数的分类 从C 程序结构上划分:主函数main ( )和普通函数。,4.6 C51函数,函数的分类 普通函数可以分为:标

16、准库函数、用户自定义函数。 标准库函数是由C编译系统提供的库函数。在C编译系统中将一些独立的功能模块编写成公用函数,并将它们集中存放在系统的函数库中,供程序设计时使用,称之为标准库函数。,4.6 C51函数,函数的分类 用户自定义函数是用户根据自己的需要编写的函数。从函数定义的形式上可以将其划分为无参数函数、有参数函数和空函数。,4.6 C51函数,函数的定义 函数定义形式: 返回值类型 函数名(形式参数列表) 函数体; ,4.6 C51函数,说明 1. 返回值可以是基本数据类型或指针类型。 2. 当函数没有返回值时,则使用标识符void进行说明。若没有指定函数的返回值类型,默认返回值则为整型类型。 3. 一个函数只能有一个返回值,该返回值通过函数中的return语句获得。,4.6 C51函数,说明 4. 函数名必须是合法标识符。 5. 形式参数列表包括了函数所需全部参数的定义。形式参数可以是基本数据类型的数据、指

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

最新文档


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

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