单片机原理与控制技术——双解汇编和C51 第3版 教学课件 ppt 作者 张志良 第5章

上传人:E**** 文档编号:89503287 上传时间:2019-05-26 格式:PPT 页数:52 大小:1.78MB
返回 下载 相关 举报
单片机原理与控制技术——双解汇编和C51 第3版 教学课件 ppt 作者 张志良 第5章_第1页
第1页 / 共52页
单片机原理与控制技术——双解汇编和C51 第3版 教学课件 ppt 作者 张志良 第5章_第2页
第2页 / 共52页
单片机原理与控制技术——双解汇编和C51 第3版 教学课件 ppt 作者 张志良 第5章_第3页
第3页 / 共52页
单片机原理与控制技术——双解汇编和C51 第3版 教学课件 ppt 作者 张志良 第5章_第4页
第4页 / 共52页
单片机原理与控制技术——双解汇编和C51 第3版 教学课件 ppt 作者 张志良 第5章_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《单片机原理与控制技术——双解汇编和C51 第3版 教学课件 ppt 作者 张志良 第5章》由会员分享,可在线阅读,更多相关《单片机原理与控制技术——双解汇编和C51 第3版 教学课件 ppt 作者 张志良 第5章(52页珍藏版)》请在金锄头文库上搜索。

1、第5章 机械工业出版社同名教材 配套电子教案,单片机原理与控制技术,第3版, C语言概述,第5章 C51程序设计,5.1 C51概述,C语言是一种结构化语言,简洁、紧凑,层次清晰,便于按模块化方式编写程序;有丰富的运算符和数据类型,能适应并实现各种复杂的数据处理;能实现位(bit)操作,生成目标代码效率较高,可移植性好,兼有高级语言和低级语言的优点。 因此,C语言应用范围越来越广泛。目前,各种操作系统和单片机,都可以用C语言编程,C语言是一种通用的程序设计语言,在大型、中型、小型和微型计算机上都得到了广泛应用。, Keil C51概述,用于80C51系列单片机编程的C语言,通常称为C51。C5

2、1实际上是一个编译系统,种类很多。其中,德国Keil Software公司推出的Keil C51软件应用最为广泛而方便。, C51编程的特点,与80C51汇编语言相比,主要具有以下特点: 编程相对方便。 便于实现各种复杂的运算和程序。 可方便地调用各已有程序模块。 可读性较好。 实时性较差。,5.2 C51数据与运算,5.2.1 数据与数据类型, 数据类型, 数据长度, 标识符,C语言标识符命名规定: 标识符只能由字母、数字和下划线三种字符组成,且须以字母或下划线开头。 标识符不能与“关键词”同名。关键词是C语言中一种具有固定名称和特定含义的专用标识符,用户不能用它自行定义其他用途。 英文字母

3、区分大小写。即标识符中的英文字母大小写不能通用。 有效长度随编译系统而异,一般多于32个字符,已足够用了。, 常量 :,程序运行过程中,其值不能被改变的量称为常量。, 位型常量(bit) 字符型常量(char) 整型常量(16位int和32位long) 浮点型常量(float) 字符常量 字符串常量 符号常量,5.2.2 变量及其定义方法, 变量概述,变量有两个要素:变量名和变量值。 变量名要求按标识符规则定义; 变量值存储在存储器中。 变量必须先定义,后使用。 程序运行中,通过变量名引用变量值。,80C51单片机主要用于实时控制, 变量一般为8bit无符号格式,16bit较少, 有符号和有小

4、数点的数值计算也很少。 因此,在已知变量长度及变量为正整数的情况下,应尽量采用8bit无符号格式:unsigned char。,C51程序中使用的常量和变量必须定位在80C51不同的存储区域。, 变量的存储区域, 存储器类型,数据定位在80C51不同的存储区域中,其访问方式和速度也就不同。,位变量只能定位在片内RAM位寻址区,使用bdata存储器类型; 常用的数据应定位在片内RAM中,使用data和idata存储器类型; 不太常用的数据可定位在片外RAM中,使用pdata和xdata存储器类型; 常量可采用code存储器类型。, 编译模式,若用户不对变量的存储器类型作出定义, 系统将采用由编译

5、模式默认的存储器类型, 局部变量和全局变量, 局部变量,C51程序在一个函数开始运行时, 才对该函数的局部变量分配存储单元, 函数运行结束,即释放该存储单元。, 全局变量,全局变量定义在函数外部, 但始终占用一个固定的存储单元, 可供各函数共用。,降低了函数的通用性;,应尽量减少全局变量的使用,能不用就尽量不用。,降低了内部存储单元的利用率;,可大大提高内部存储单元的利用率。, 变量的定义方式,存储种类 数据类型 存储器类型 变量名表,变量定义应集中放在函数的开头; 可单个定义,也可多个一起定义(必须是同类型); 定义时,可赋值,也可不赋值; 变量定义语句必须以“;”结束。, 80C51特殊功

6、能寄存器定义方式,C51对80C51片内21个特殊功能寄存器和部分可寻址位 按MCS-51中取的名字(必须大写)全部作了定义, 只需在程序开头的头文件部分 写一条预处理命令:#include , 即可直接引用。,但对ACC、B、P0、P1和P2的可寻址位, 因位定义名不符C51标识符要求,仍需重新定义。,5.2.3 运算符和表达式, 赋值运算符,变量表达式, 算术运算符,i和i:变量先加(减)1,后使用; i和i:变量先使用,后加(减)1。,除法运算的结果与参与运算数据的类型有关。 若两个数据都是整数,运算结果也为整数,余数舍去。,求余运算时要求参与运算的数据都是整型, 运算结果为两数相除的余

7、数。, 关系运算符,用于两个数据之间进行比较判断 。,运算的结果只能有两种: 条件满足,运算结果为1(真); 条件不满足,运算结果为0(假)。,注意:不要混淆关系运算符“”与赋值运算符“”的区别。, 逻辑运算符,用于求条件表达式整体之间逻辑运算的逻辑值。 条件表达式的值只有两种:1(非0或真)或0(假)。 运算结果也只有两种:1(真)或0(假)。, 位逻辑运算符,用于变量数据本身按位(化为二进制数)进行逻辑运算。 变量数据的值可以是任意整常数。 运算结果也可以是任意整常数。, 复合赋值运算符,由运算符和赋值运算符叠加组合,5.3 C51基本语句,5.3.1 语句基本概念,主要有表达式语句、复合

8、语句、选择语句和循环语句等。, 表达式语句,在表达式后面加上“;”就构成表达式语句。, 复合语句,由若干条单语句组合而成的语句称为复合语句。,5.3.2 选择语句,根据给定的条件是否成立选择相应的操作。,具有一定的逻辑分析能力和选择决策能力, 按结构可分为单分支选择结构和多分支选择结构, 主要有if语句和switch语句。, if语句,分为3种形式:, 条件成立就选择,否则就不选择。,if (条件表达式) 内嵌语句;, 不论条件成立与否,总要选择一个。,if (条件表达式) 内嵌语句1; else 内嵌语句2;, 串行多分支结构。,if (条件表达式1 ) 内嵌语句1; else if (条件

9、表达式2 ) 内嵌语句2; else if (条件表达式n ) 内嵌语句n; else 内嵌语句(n+1);,条件运算符“?:”,表达式1?表达式2:表达式3;,首先计算表达式1的值, 若为非0(真),则将表达式2的值作为整个条件表达式的值; 若为0(假),则将表达式3的值作为整个条件表达式的值。,例如:,max = (xy) ? x : y; /若xy,max= x;否则,max= y,【例5-7】 已知电路如图5-6所示,要求实现: S0、S1均未按下,VD0亮,其余灯灭; S0单独按下,VD1亮,其余灯灭; S1单独按下,VD2亮,其余灯灭; S0、S1均按下,VD3亮,其余灯灭。,Ke

10、il C51软件调试: 编译链接并进入调试状态后, 打开P1口,依次设置P1.6、P1.7四种状态, 并观察程序运行后P1.3P1.0的状态变化。,Proteus虚拟仿真调试: 装入Hex文件后, 全速运行, 点击S0、S1按钮, 设置4种不同状态, 可看到VD0VD3 相应亮暗状态。, switch语句,switch (表达式) case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; case 常量表达式n: 语句n; break; default: 语句(n+1);,类似于汇编中散转程序,【例5-9】 电路和要求同例5-7 ,试用switch语句

11、编程实现。 解:C51程序如下,Keil C51软件调试和Proteus ISIS虚拟仿真调试同例5-7。, while循环语句,5.3.3 循环语句,根据判断语句在流程中执行的先后可分为: while循环(也称为当型)和do-while循环(也称为直到型)。, while循环,while (条件表达式) 循环体语句;, do-while循环,do 循环体语句; while(条件表达式);,【例5-11】 用while(1)无限循环语句改编例5-7程序。 解:编程如下:,Keil C51软件调试和Proteus ISIS虚拟仿真调试同例5-7。,while循环(当型),do-while循环(直

12、到型),Keil C51软件调试:编译链接并进入调试状态后,全速运行, 可看到:n=101,sum=5050 。, for循环语句,for (表达式1;表达式2;表达式3) 循环体语句;, 首先对循环变量赋初值(表达式1); 判断表达式2是否满足给定的循环条件, 若满足循环条件(值为非0),则执行循环体语句; 若不满足循环条件(值为0),则结束循环; 在满足循环条件(值为非0)的前提下,执行循环体语句; 计算表达式3,更新循环变量; 返回判断表达式2,重复及以下操作,直至跳出for循环语句。,【例5-13】 用for循环语句改编例5-10程序。 解:本题程序与例5-10程序基本相同, 但第46

13、行用2行for循环替代:,Keil C51软件调试:编译链接并进入调试状态后,全速运行, 可看到:n=101,sum=5050 。,5.4 C51构造类型数据,构造类型数据,主要有数组、指针、结构、共用体和枚举等。,5.4.1 数组,数组是一组具有相同类型数据的有序集合。 每一数组用一个标识符表示,称为数组名, 数组名同时代表数组的首地址; 数组内数据有序排列的序号称为数组下标,放在方括号内, 根据数组下标可访问组成数组的每一个数组元素。,数组可分为一维和多维,常用的是一维数组。, 一维数组,数据类型 存储器类型 数组名元素个数, 定义格式, 引用格式,数组名下标,注意:数组下标是从0开始编号

14、的, 因此,数组下标最大编号比元素个数小1。, 数组赋值,一般在数组初始化时(即数组定义时)赋值。,【例5-18】 试将16个单字节无符号数从大到小排列。 解:编制C51程序如下:,Keil C51软件调试参阅例9-5。,5.4.2 指针,指针就是地址; 存放指针(地址)的变量称为指针变量,, 指针和指针变量, 指针变量定义方式,数据类型 数据存储器类型 *指针存储器类型 指针变量名, 取地址运算符和指针运算符,&:取地址运算符 *:指针运算符(或称为间接访问运算符、取指针内容运算符),【例5-21】 已知一维数组a10,试将其按顺序输出。 解:该题目有3种解法,C51程序分别如下:,Keil

15、 C51软件调试: 编译链接 并进入调试状态后, 打开Serial #1窗口, 全速运行, 可看到 Serial #1窗口 输出程序运行结果: 1,2,3,4,5,6,7,8,9,10,5.5 C51函数,函数是C程序的基本单位,即C51程序主要是由函数构成的。,5.5.1 函数概述, 函数的分类,C51函数可分为主函数main( )和普通函数两种:,一个C51源程序必须有也只能有一个main函数, 而且是整个程序执行的起始点。,普通函数是被主函数调用的子函数, 普通函数又可分为标准库函数和自定义函数。,标准库函数是由C51编译系统的函数库提供的,,自定义函数就是用户根据自己的需要编写的函数。

16、, 函数的定义方式,返回值类型 函数名(形式参数列表) 编译属性 中断属性 寄存器组属性 局部变量说明 函数体语句,返回值类型是指本函数返回值的数据类型, 若无返回值,则成为无类型,用void表示; 若该项要素缺省,则C51编译系统默认为int类型。,函数名除了main函数有固定名称外, 其他函数由用户按标识符的规则自行命名。,形式参数用变量名(标识符)表示,没有具体数值; 可以是一个,或多个(中间用逗号“,”分隔),或没有形式参数。,编译属性是指定该函数采用的存储器编译模式, 有Small、Compact和Large 3种选择,缺省时,默认Small模式。,中断属性是指明该函数是否中断函数; 寄存器组属性是指明该函数被调用时准备采用哪组工作寄存器。,局部变量是仅应用于本函数内

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

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

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