单片机原理及应用 教学课件 ppt 作者 张国锋 主编 第10章 单片机高级语言C51程序设计

上传人:E**** 文档编号:89499892 上传时间:2019-05-25 格式:PPT 页数:26 大小:275.50KB
返回 下载 相关 举报
单片机原理及应用 教学课件 ppt 作者 张国锋 主编 第10章 单片机高级语言C51程序设计_第1页
第1页 / 共26页
单片机原理及应用 教学课件 ppt 作者 张国锋 主编 第10章 单片机高级语言C51程序设计_第2页
第2页 / 共26页
单片机原理及应用 教学课件 ppt 作者 张国锋 主编 第10章 单片机高级语言C51程序设计_第3页
第3页 / 共26页
单片机原理及应用 教学课件 ppt 作者 张国锋 主编 第10章 单片机高级语言C51程序设计_第4页
第4页 / 共26页
单片机原理及应用 教学课件 ppt 作者 张国锋 主编 第10章 单片机高级语言C51程序设计_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《单片机原理及应用 教学课件 ppt 作者 张国锋 主编 第10章 单片机高级语言C51程序设计》由会员分享,可在线阅读,更多相关《单片机原理及应用 教学课件 ppt 作者 张国锋 主编 第10章 单片机高级语言C51程序设计(26页珍藏版)》请在金锄头文库上搜索。

1、第十章 单片机高级语言C51程序设计,用汇编语言编写单片机程序虽然执行效率高,但编写较为复杂功能时就较为困难,所以,C语言的使用大大简化了复杂程序的编写。 虽然C语言没有汇编执行效率高,但现在计算机硬件设备的功能有了很大的提高,所以,C语言逐渐成为单片机程序编写的主流。 本章就重点介绍一下C语言如何编写单片机程序。,本章总体要求:,熟练掌握C语言语句的格式、常用的指令 掌握C语言程序设计的步骤和技巧。 熟悉Keil软件的界面及用法 能够独立完成本章作业,本章重点:,C语言程序设计中常用指令的使用 C语言程序设计的步骤 学会用Keil软件编写C程序,本章难点:,C语言程序设计算法的确定 用C语言

2、编写较为复杂的单片机程序,10.1 C语言的特点及其结构,10.1.1 C语言具有以下一些特点 1语言简洁,使用方便灵活。 2可移植性好。 3表达能力强。 4表达方式灵活。 5可进行结构化程序设计。 6可以直接操作计算机硬件。 7生成的目标代码质量高。,10.1.2 Keil软件的用法,1建立一个新工程。 2选择保存路径,输入工程文件的名字,并保存。 3. 选择单片机的型号。 4. 选择保存为扩展名为(.c)的文件。 5. 单击“Add File to Group Source Group 1 ,选中Test.c 。 6输入C语言源程序。 7. 开始调试程序。 8. 下载到单片机芯片中。,10

3、.2 C语言的标识与关键字,C语言的的标识符是用来标识源程序中某个对象名字的。这些对象可以是函数、变量、常量、数组、数据类型、存储方式、语句等。一个标识符由字符串、数字和下划线等组成,第一个字符必须是字母或下划线,通常以下划线开头的标识符是编译系统专用的,因此在编写C语言源程序时一般不要使用以下划线开头的标识符,而将下划线用作分段符。,C51编译器规定标识符最长可达255个字符,但只有前面32个字符在编译时有效,因此在编写源程序时标识符的长度不要超过32个字符,这对于一般应用程序来说已经足够了。前面已经指出,C语言是对大小写字母敏感的,如“max”与“MAX”是两个完全不同的标识符。程序中对于

4、标识符的命名应当简洁明了,含义清晰,便于阅读理解,如用标识符“max”表示最大值,用“TIMER0,表示定时器0等。,关键字是一类具有固定名称和特定含义的特殊标识符,有时又称为保留字。在编写C语言源程序时一般不允许将关键字另作别用,换句话说就是对于标识符的命名不要与关键字相同。与其它计算机语言相比,C语言的关键字是比较少的,ANSI C标准一共规定了32个关键字,表1.1按用途列出了ANSI C标准的关键字。,10.3 C语言的数据类型及运算符,10.3.1 C51的数据类型,表10.1 Franklin C51编译器能够识别的C语言数据类型,10.3.2 C51的运算符,1在语言中,除控制语

5、句和输入输出函数外,其它所有基本操作都作为运算符处理。 (1)五种基本算术运算符: +、-(减法/取负)、*、/、%(求余数) (2) 表达式和算术表达式 1)表达式的概念 2)算术表达式的概念,(3)运算符的优先级与结合性 1)语言规定了运算符的优先级和结合性。 2)表达式求值 (4) 数据类型转换 1)在语言中,整型、实型和字符型数据间可以混合运算 2)除自动转换外,语言也允许强制转换。,2赋值运算与赋值表达式 (1) 赋值运算 赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。 赋值运算符的一般形式为:变量=赋值表达式。 例如,x = 5 y = (float)5 /

6、 2 如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。 思考题:假设变量num的数据类型为float,其值为2.5,则执行“num = (int)num”后,num的值等于多少?,(2) 复合赋值运算,复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。 复合赋值运算的一般格式为: 变量 双目运算符 = 表达式 复合赋值运算符 它等价于:变量 = 变量 双目运算符 (表达式)。 当表达式为简单表达式时,表达式外的一对圆括号才可以缺省,否则可能出错。 例如,x += 3 /* 等价于x=x+3 */

7、y *= x + 6 /* 等价于y=y*(x+6),而不是y=y*x+6 */ C语言规定的10种复合赋值运算符如下: +=,-=,*=,/=,%=; /*复合算术运算符(5个)*/ &=,=,|=,=; /*复合位运算符(5个)*/,(3) 赋值表达式 有赋值运算符或复合赋值运算符,将一个变量和一个表达式连接起来的表达式,称为赋值表达式。 1)一般格式 变量 (复合)赋值运算符 表达式 2)赋值表达式的值 任何一个表达式都有一个值,赋值表达式也不例外。被赋值变量的值,就是赋值表达式的值。 例如,“a = 5”这个赋值表达式,变量a的值“”就是它的值。,3C语言特有的运算和运算符,(1) 自

8、增(+)、自减(-)运算 1)作用 自增运算使单个变量的值增,自减运算使单个变量的值减。 2)用法与运算规则 自增、自减运算符都有两种用法: 前置运算运算符放在变量之前:变量、变量,先使变量的值增(或减),然后再以变化后的值参与其它运算,即先增减、后运算。 后置运算运算符放在变量之后:变量、变量,先参与其它运算,然后再使变量的值增(或减),即先运算、后增减。,4逗号运算符及其表达式,语言提供一种用逗号运算符“,”连接起来的式子,称为逗号表达式。逗号运算符又称顺序求值运算符。 (1)一般形式 表达式, 表达式,表达式n; (2)求解过程 自左至右,依次计算各表达式的值,“表达式n” 的值即为整个

9、逗号表达式的值。例如,逗号表达式“a = 3 * 5, a * 4=60:”先求解a = 3 * 5,得a=15;再求a * 4 = 60,所以逗号表达式的值为60。又例如,逗号表达式“(a = 3 * 5, a * 4), a + 5”的值为20:先求解a = 3 * 5,得a=15;再求a * 4=60;最后求解a + 5=20,所以逗号表达式的值为20。 注意:并不是任何地方出现的逗号,都是逗号运算符。很多情况下,逗号仅用作分隔符。,10.4 C51的流程控制语句,10.4.1 if语句 C语言提供了三种形式的if语句: 1.if(表达式)(语句) 例:if(p1!0) (C20;) 2

10、.if(表达式)语句1; else语句2; 例:if(pl!0) C20; e1se C0;,3if(表达式1)(语句1;) else if(表达式2)语句2; else if(表达式3)语句3; else if(表达式m)语句n; else 语句m; if语句的嵌套与嵌套匹配原则。 if语句允许嵌套。所谓if语句的嵌套是指,在“语句组1”或(和)“语句组2”中,又包含有if语句的情况。 if语句嵌套时,else子句与if的匹配原则:与在它上面、距它最近、且尚未匹配的if配对。为明确匹配关系,避免匹配错误,建议将内嵌的if语句,一律用花括号括起来。,4说明 (1)if后面的“表达式”,除常见的

11、关系表达式或逻辑表达式外,也允许是其它类型的数据,如整型、实型、字符型等。 (2)if语句允许嵌套,但嵌套的层数不宜太多。在实际编程时,应适当控制嵌套层数(23层)。 (3)“语句组1”和“语句组2”,可以只包含一个简单语句,也可以是复合语句。 注意:不管是简单语句,还是复合语句中的各个语句,每个语句后面的分号必不可少。 例如: if (num1num2) max=num1; else max=num2; if行后面的赋值语句“max=num1;”分号不能省略。但不要误认为if和else是2个独立的语句,它们都属于if语句中的一部分,else是if语句的子句。,10.4.2条件运算符,1一般格

12、式: 表达式1?表达式2:表达式3 条件表达式中的“表达式1”、“表达式2”、“表达式3”的类型,可以各不相同。 2运算规则 如果“表达式1”的值为非0(即逻辑真), 则运算结果等于“表达式2”的值;否则,运算结果等于“表达式3”的值。 3运算符的优先级与结合性 条件运算符的优先级,高于赋值运算符,但低于关系运算符和算术运算符。其结合性为“从右到左”(即右结合性)。,10.5 C51的函数,10.5.1标准库函数 标准库函数是由C编译系统的函数库提供的,早在C编译系统设计过程中,系统的设计者事先将一些独立的功能模块编写成公用函数,并将它们集中存放在系统的函数库中,供系统的使用者在设计应用程序时

13、使用。故把这种函数称为库函数或标准库函数。C语言系统一般都具有功能强大、资源丰富的标准函数库。因此,作为系统的使用者,在进行程序设计时,应该善于充分利用这些功能强大,内容丰富的标准库函数资源,以提高效率,节省时间。,10.5.2用户自定义函数 从函数定义的形式上划分,函数可以有以下三种形式:无参数函数、有参数函数、空函数。 无参数函数:此种函数在被调用时,既无参数输入,也不返回结果给调用函数。它是为完成某种操作而编写的。 有参数函数:在调用此种函数时,必须提供实际的输入参数,此种函数在被调用时,必须说明与实际参数一一对应的形式参数,并在函数结束时返回结果供调用它的函数使用。 空函数:此种函数体

14、内无语句,是空白的。,10.6 C51程序设计举例,【例10.7】 编写一段程序,使其不断从串口输出“Hello World!”字符。 #include #include void main(void) SCON = 0x50; /串口方式1,允许接收 TMOD = 0x20; /定时器1 定时方式2 TCON = 0x40; /设定时器1 开始计数 TH1 = 0xE8; /11.0592MHz 1200 波特率 TL1 = 0xE8; TI = 1; TR1 = 1; /启动定时器 while(1) printf (“Hello World!n“); /显示Hello World ,【例1

15、0.8】 写出下列程序的运行结果。,#include #include void main(void) char xdata * XROM; char a; int Aa = 0xFB1C; long Ba = 0x893B7832; float Ca = 3.4534; SCON = 0x50; /串口方式1,允许接收 TMOD = 0x20; /定时器1 定时方式2 TH1 = 0xE8; /11.0592MHz 1200 波特率 TL1 = 0xE8; TI = 1; TR1 = 1; /启动定时器 XROM=(char xdata *) 0xB012; /给指针变量赋XROM 初值 *

16、XROM = R; /给XROM 指向的绝对地址赋值 a = *(char xdata *) 0xB012); /等同于a = *XROM printf (“%bx %x %d %c n”,(char) Aa, (int) Ba,(int)Ca, a);/转换类型并输出 while(1); 程序运行结果:1c 7832 3 R,小 结,C语言中的数据都属于一定的类型。不同类型的数据在计算机中占的内存空间大小和存储方式是不同的。其中:整数以其二进制补码形式存储;字符型数据以其ASCII码形式存储;实数以指数形式存储。 在程序中,数据的表现形式有:常量和变量。常量有字面常量和符号常量两种形式。符号常量与变量不同,它不占存储空间、不能对其指定类型、不能给它赋值,它只是一个字符串,可用来代替一个已知的常量。 标识符用来标识

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

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

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