收藏 分销(赏)

第5讲-单片机C语言程序设计(3).ppt

上传人:精**** 文档编号:12238340 上传时间:2025-09-28 格式:PPT 页数:26 大小:663.54KB 下载积分:10 金币
下载 相关 举报
第5讲-单片机C语言程序设计(3).ppt_第1页
第1页 / 共26页
第5讲-单片机C语言程序设计(3).ppt_第2页
第2页 / 共26页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单片机原理与应用,Single Chip Computer Principle and Application,滁州学院,计算机与信息工程学院,于红利,1,2,一、,C51,语言的基本运算与流程控制语句,二、,C51,语言的构造函数类型,三、,C51,语言设计的其他问题,第五讲 单片机,C,语言程序设计(,3,),3,教 学 目 标,掌握:,C51,语言的基本运算与流程控制语句,理解:,C51,语言的基本结构与构造数据类型,了解:,C51,语言程序设计的其他问题,4,1、,C51,的基本运算,一、,C51,语言的基本运算与控制语句,与标准C语言类似,C51的基本运算包括算术运算、关系运算、,逻辑运算、位运算和幅值运算及表达式等。,(1)算术运算符,C51,中支持的算术运算符有:,运算符号,功能,+,加或取正值运算符,-,减或取负值运算符,*,乘运算符,/,除运算符,%,取余运算符,+,自增加运算符,-,自减运算符,注:,若相除两个数为浮点数,则结果也为浮点数,若相除的两个数为整数,则结果也为整数。如,25.0/20.0,=,1.25,,而,25/20,=,1,。,对于取余运算,则要求参加运算的两个数必须为整数,如:,5%3,=2。,5,关系运算用于比较两个数的大小,关系表达式的值为逻辑值0,1之一。,运算符号,功能,小于,大于,=,大于等于,=,等于,!=,不等于,(2),关系运算符,C51,中有,6,种关系运算符:,C51,有,3,种逻辑运算符:,|,(逻辑或)、,&,(逻辑与)、!(逻辑非),(3),逻辑运算符,逻辑运算符则用于求条件式的逻辑值,用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。,注:,C51,中位运算符只能对整和字符型数据操作,不能对浮点数进行操作。,位运算是按位对变量进行运算,并不改变参与运算的变量的值。,(4)位运算符,运算符号,功能,&,按位与,|,按位或,按位异或,!,按位取反,位右移,【例,1,】,计算半径为,r,的圆面积、球体积。,#include,#define PI 3.1415926,Void main(),float r,s,v;,scanf(“%f”,S=PI*r*r;,V=4.0/3.0*r*r*r;,Printf(“,圆面积,:%f”,s);,Printf(“,球体积,:%f”,v);,10,分支结构可使程序根据不同的情况,选择执行不同的分支,在选择结构中,程序先都对一个条件进行判断。当条件成立,即条件语句为“真”时,执行一个分支,当条件不成立时,即条件语句为“假”时,执行另一个分支,如图,4.4,。分支结构语句有if和switch两种。,(2)分支结构,条件,P,语句,A,语句,B,成立,不成立,在,C51,中,实现选择结构的语句为,if/else,,,if/else if,语句。另外在,C51,中还支持多分支结构,多分支结构既可以通过,if,和,else if,语句嵌套实现,可用,swith/case,语句实现。,if 语句,if 语句的几种形式:,if,形式、,ifelse,形式、多选择,if,语句形式。,(,1,)if(表达式)语句;若表达式为真,则运行,if,语句,否则,接着执行。,(,2,)if(表达式)语句,1,;,else,语句,2,;,例如:输入一个整数,判断是奇数还是偶数。,(,3,)if(表达式)语句,1,;,else if,语句,2,;,例,2,计算如下分段函数。,#include,int main(void),double x,y;,printf(Enter x:);,scanf(%lf,printf(f(%.2f)=%.2fn,x,y);,return 0;,switch 语句,switch(,表达式,),case,常量表达式,1,:语句段,1;,case,常量表达式,2,:语句段,2;,.,case,常量表达式,n,:语句段,n;,default,:语句段,n+1;,14,在程序处理过程中,有时需要某一段程序重复执行多次,这时就需要循环结构来实现,循环结构就是能够使程序段重复执行的结构。循环结构又分为两种:当(,while,)型循环结构和直到(,do.while,)型循环结构。,(,1,)当型循环结构,当型循环结构如右图,当条件,P,成立,(,“真”,),时,重复执行语句,A,,当条件不成立,(,“假”,),时才停止重复,执行后面的程序。,(3)循环结构,条件,P,语句,A,成立,不成立,当型循环结构,15,(,2,)直到型循环结构,直到型循环结构如右图,先执行语句,A,,再判断条件,P,,当条件成立(为“真”)时,再重复执行语句,A,,直到条件不成立(为“假”)时才停止重复,执行后面的程序。,条件,P,语句,A,成立,不成立,直到型循环结构,此外,循环结构的语句还有:,for,、,goto,等。,【例,3,】,编程序用,dowhile,语句,求,2+4+6+100,的和。,#include,Void main(),int k=2,s=0;,do ,s=s+k;,k=k+2;,while(k=100);,printf(“2+4+100=%d”,s);,17,2.C51,构造数据类型,1,数组,一一维数组,一维数组只有一个下标,定义的形式如下:,数据类型说明符 数组名,常量表达式,=,初值,初值,数组中各元素类型,数组的标识符,数组长度,元素个数,给数组元素赋初值,例如:下面是定义数组的两个例子。,unsigned char x5;,unsigned int y3=1,2,3;,定义了一个无符号字符数组,数组名为,x,,数组中的元素个数为,5,。,定义了一个无符号整型数组,数组名为,y,,数组中元素个数为,3,,定义的同时给数组中的三个元素赋初值,赋初值分别为,1,、,2,、,3,。,注意:,C51,语言中数组的下标是从,0,开始的,,的,5,个元素分别是:,x0,x4,。,的,3,个元素分别是:,y0=1,;,y1=2,;,y2=3,。,C51,规定在引用数组时,只能逐个引用数组中的各个元素,而不能一次引用整个数组。但如果是字符数组则可以一次引用整个数组。,18,Fibonacci,数列在数学和计算机算法中十分有用。,Fibonacci,数列是这样的一组数:第一个数字为,0,,第二个数字为,1,,之后每一个数字都是前两个数字之和。设计时通过数组存放,Fibonacci,数列,从第三项开始可通过累加的方法计算得到。,程序如下:,#include /,包含特殊功能寄存器库,#include /,包含,I/O,函数库,main(),int fib20,i;,fib0=0;,fib1=1;,for(i=2;i20;i+)fibi=fibi-2+fibi-1;,for(i=0;i20;i+),例,4,用数组计算并输出,Fibonacci,数列的前,20,项。,19,if(i%5=0)printf(,“,n”);,printf(“%6d”,fibi);,while(1);,程序执行结果:,0,1 1 2 3,5 8 13 21 34,55 89 144 233 377,610987 15972584 4148,20,例如:,char string110;,char string220;,上面定义了两个字符数组,分别定义了,10,个元素和,20,个元素。,用来存放字符数据的数组称为字符数组,是一种常用的数组。在,C51,语言中,字符数组用于存放一组字符或字符串,字符串以“,0”,作为结束符,只存放一般字符的字符数组的赋值与使用和一般的数组完全相同,2,字符数组,21,3,指针变量的定义,指针变量的定义与一般变量的定义类似,定义的一般形式为:,数据类型说明符,存储器类型,*,指针变量名;,下面是几个指针变量定义的例子:,int *p1,;/,*,定义一个指向整型变量的指针变量,p1*/,char *p2;,/,*,定义一个指向字符变量的指针变量,p2*/,char data *p3;,/,*,定义一个指向字符变量的指针变量,p3,,该指针访问的数据在片内数据存储器中,该指针在内存中占一个字节*,/,float xdata *p4;,/,*,定义一个指向字符变量的指针变量,p4,,该指针访问的数据在片外数据存储器中,该指针在内存中占两个字节*,/,指针变量所指向的变量类型,可选项,是,C5l,编译器的一种扩展。若带此选项,指针被定义为基于存储器的指针。否则定义为一般指针,这两种指针的区别在于它们占的存储字节不同。,22,4,指针变量的引用,指针变量是存放另一变量地址的特殊变量,指针变量只能存放地址。指针变量使用时注意两个运算符:,&,和*。其中:“,&”,是取地址运算符,“*”是指针运算符。通过“,&”,取地址运算符可以把一个变量的地址送给指针变量,使指针变量指向该变量;通过“*”指针运算符可以实现通过指针变量访问它所指向的变量的值。,指针变量经过定义之后可以象其他基本类型变量一样引用。例如:,int x,,*,px,,*,py,;,/*,变量及指针变量定义*,/,px=&x,;,/*,将变量,x,的地址赋给指针变量,px,,使,px,指向变量,x*/,*px=5,;,/*,等价于,x=5*/,py=px,;,/*,将指针变量,px,中的地址赋给指针变量,py,,使,py,也指向,x*/,23,#include /,包含特殊功能寄存器库,#include /,包含,I/O,函数库,extern serial_initial();,main(),int x,y;,int *p,*p1,*p2;,serial_initial();,printf(“input x and y:n”);,scanf(“%d%d”,p1=,if(xy)p=p1;p1=p2;p2=p;,printf(“max=%d,min=%dn”,*p1,*p2);,while(1);,程序执行结果:,input x and y:,4 8,max=8,min=4,例,5,输入两个整数,x,与,y,,经比较后按大小顺序输出。,几类重要的库函数,专用寄存器包文件,reg51.h(reg52.h):,绝对地址包含文件,absacc.h:,动态内存分配函数,位于,stdlib.h,文件中。,缓冲区处理函数,位于,string.h,文件中,包括复制、移动、比较,等函数,这样便于对缓冲区进行处理。,输入,/,输出流函数,位于,stdio.h,文件中,流函数通过,51,单片机的,串口或用户定义的,I/O,读写数据,默认为,51,单片机的串口。,三、,C51,语言设计的其他问题,小 结,25,C51,语言设计的其他问题,C51,语言的构造函数类型,C51,语言的基本运算与流程控制语句,C,语 言 程 序 设 计,作业,思考题及练习:,1.C51,在标准,C,的基础上,扩展了哪几种数据类型?,2.C51,有哪几种数据存储类型?其中数据类型“,idata,code,xdata.,pdata,”各对应,AT89C51,单片机的哪些存储空间?,3.,说明,3,中数据存储模式的区别,,SMALL,模式、,COMPACT,模式、,LARGE,模式。,4.,编写,C51,程序,将片外,2000H,为首地址的连续,10,个单元的内,容,读入到片内,40H,到,49H,单元中。,5.do-while,构成的循环与,while,循环有什么区别?,6.,使用,C51,语言,编写代码将,8,个流水灯依次点亮,再依次熄灭。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服