第5讲单片机C语言程序设计(3)解析_第1页
第5讲单片机C语言程序设计(3)解析_第2页
第5讲单片机C语言程序设计(3)解析_第3页
第5讲单片机C语言程序设计(3)解析_第4页
第5讲单片机C语言程序设计(3)解析_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2Chuzhou University.Ar)hui,ChinaHTTP:/HTTP:/第五讲 单片机c语皆程序设计(3)单片机原理与应用Single Chip Conuter Principle and AlicaticMi滁州学院计算机与信息工程学院 于红利Chuzhou Universityr)hui,China一、C51语言的基本运算与流程控制语句二、C51语言的构造函数类型三、C51语言设计的其他问J教学目标掌握:C51语言的基本运算与流程控制语句理解:C51语言的基本结构与构造数据类型了解:C51语言程序设计的其他问题Chuzhou UniversityAnhui,ChinaHTT

2、P:/3仁C51的基本运算一.C51语言的基本运算与控制语句,C51的基本运算包括算术运算.关系运算.逻辑运算、位运算和幅值运并及表达式等。(1)算术运算符C51中支持的算术运算符有:4Chuzhou UniversityAnhui,ChinaHTTP:/运算符号功能+加或取正值运算符减或取负值运算符乘运算符/除运算符%取余运算符+自增加运算符 自减运算符注:若相除两个数为浮点数,则结果 也为浮点数,若相除的两个数为整数,则 结果也为整数。如25.0/20.0=1.25.而 25/20=1 o时丁取余运算,则要求参加运算的两 个数必须为整数,如:5%3=2o(2)关系运算符C51中有6种关系运

3、算符:Chuzhou Univer引ty“Anhui,ChinaHTTP:/运算符号大于=大于等于=I等于!=不等于(3)逻辑运算符关系运算用于比较两个数的人小,关系衷达式的值为逻辑值0,1之一。HTTP:/工力C51有3种逻辑运算符:|(逻辑或)、龈(逻辑与)、!(逻辑非)逻辑运算符则用于求条件式的逻辑值,用逻辑运算符将关系表达式或逻辑量连接起来的式了就是逻辑农达式。(4)位运算符运算符号功能&按位与I按位或A按位异或!按位取反位左移位右移位运算是按位对变 量进行运算,并不改变 参与运算的变量的值。注:C51中位运篦符只能对幣和字符熨数据操作,不能对浮点数进行操作。;:(5)赋值运算符将一个

4、数据的值赋给一个变疑。*在C51中,赋值运算符“才变量二表达式;执行时先计笄出右边农达式的值,然后赋给左边的变量。例如:x=8+9;广将8+9的值赋绐变量汐赋值符号前加上其他运算符构成符合运算符号,如卜:Z+= 加法赋值-+减法赋值*=乘法赋值/=除法赋值%= 取模赋值&=逻辑与赋值|= 逻辑或赋值八=逻辑异或赋值=逻辑非赋值=右移位賦值=左移位赋值丿赋值运算中,若“二”两侧数据类型不一致,系统自动络右侧表达式换成左侧类型.HTTP:/Chuzhou UniversitynhuiXnaC51程序基本结构与构造函数类型C51的基本结构(1)顺序结构顺序结构是最基本、最简单 的结构,在这种结构中,

5、程序由 低地址到高地址依次执行,如图 给出顺序结构流程图,程序先执 行A操作,然后再执行B操作。顺庁结构流程图8Chuzhou UniversitynhuiXnaHTTP:/【例1】计算半径为r的岡面积、球体积。# include # define PI 3.1415926Void main()float r,sfv; scanf(“f,&r); S=PI*r*r;V=4.0/3.0*r*r*r;PrintfC 圆面积:%f,s);Printf(“ 球体积:f:v); HTTP:/Chuzhou University“Anhui,China在C51中,实现选择结构的语句为if/else, if

6、/else if语句。另外在C51中 还支持多分支结构,多分支结构既可以通过if和else if语句嵌套实现,可用 swith/case语句实现。个分支,如图4.4。分支结构语句有if和switch两种。/ if语句(1) if(2) if(表达式)语句仁else语句2例如:输入一个整数,判断是奇数还是偶数。# include int main(void)(3) if (衣达式)语句else if语句2;int number;tot o vt*vKo* ft*Chuzhou University,AnhuiChinaHTTP:www.chzu.eckj.tn例2计算如下分段函数。# inclu

7、de int main(void)04x2.5x- 10.5x 5double x, y; printf(ftEnter x:M);scanf(M%ir &x);if(xO)y = O;else if(X = 15) v = 4 * x / 3; else y = 2.5 * x - 10.5;printf(Mf(%.2f) = %.2fnf x, y); return 0;if语句的几种形式:if形式.if.else形式.多选择if语句形式。(表达式)语句;若表达式为真,则运行if语句,否则,接着执行。/ switch 语句switch(表达式)case常量表达式1:语句段1:case常量表

8、达式2:语句段2: case常量农达式n:语句段n;default:语句段n+114Chuzhou University,Anhui,ChinaHTTP:/Chuzhou University,Anhui,ChinaHTTP:/3)循环结构当型循环结构在程序处理过程中,有时需 要某一段程序壷复执行多次,这 时就需要循环结构来实现,循环 结构就是能够使程序段重复执行 的结构。循环结构又分为两种 当(while)型循环结构和直到(do.while)型循环结构。(1)当型循环结构当型循环结构如右图,当条 件P成立(“真”)时,重复执行语 句A,当条件不成立(“假”)时才 停止直复,执行后面的程序。H

9、TTP:/15【例3】(2)直到型循环结构 直到型循环结构如右图, 先执行语句A,再判断条件P, 当条件成立(为“真”)时, 再贞复执行语句A,直到条件 不成立(为“假”)时才停 止重复,执行后面的程序。直到型循环结构此外,循环结构的语句还有:for、goto等。编程序用do.while语句,求2+4+6.+100的和。# include Void main()int k=2s=0;do s=s+k;k=k+2;while (k=100);printf(2 +4+.+100=%d;s); Chuzhou Univer引ty“Anhui,ChinaHTTP:/数组中各:胳 1数组兀索类空2C51

10、构造数据类型标识符元索个数数组的数组长度,给数组兀维数组E数组只有一个下弗定义的形:I下:数据类型说明符 勉组名常量表达式=初值,前值)1素赋初直Chuzhou UniversityAnhuiXnsHTTP:/注意:C51语言中数组的下标是从0开始的,T、 的5个元素分别是:刈0刈4。的3个元素分 别是:y0=1; y1=2: y2=3oC51规定在引用数组时,只能逐个引用数组中 的各个元素,而不能次引用整个数组。但如Chuzhou Univer引ty“Anhui,ChindHTTP:/例4用数组计算并输出Fibonacci数列的前20项。例如:下面是定义数组疝 unsigned char x

11、5; unsigned int y3= 定义了一个无符号字 定义了一个无符号整义的同时给数组中的三很孕是字符数组则可以次引用整个数组。-Fibonacci数列在数学和计算机算法中十分有用。Fibonacci数列是这样的 组数:第一个数字为0,第二个数字为仁之后每个数字都是前两个数字之和。设计时通过数组存放Fibonacci数列,从第三项开始町通过累加的方 法计算得到。程序如下:#include 包含特殊功能寄存器库#include 包含I/O函数库main()int fib20,i;fibO=O;fib1=1;for (l=2;i20;i+) fibi=fibi-2+fibi-1;for (i

12、=0;i20;i+)if (i%5= =0) printf(lnM);printf(“6d:fibi);while(1);程序执行结果:0112358132134558914423337761098715972584414819Chuzhou UniversiAnhui,HTTP:/字符数组用來存放字符数据的数组称为字符数组,是一种常用的数组。在C51语 言中,字符数组用于存放一组字符或字符串,字符串以“0作为结束符,只 存放一般字符的字符数组的赋值与使用和一般的数组完全相同 例如:char string110;char string220;上面定义了两个字符数组,分别定义了 10个元素和20

13、个元索。20Chuzhou Universitynhui,ChinaHTTP:/3.指针变量的定义指针变量所指 向的变量类型指针变量的定义与一粵箏匍$义类似,定义的一般形式为:数据类型说劇1存储器类型.指针变量名;23Chuzhou Universitynhui,ChinaHTTP:/可选项,是C5I编译器的一种扩展。若带此选项,指针被定义为基 于存储器的指针。否则定义为一般指针,这两种扌旨针的区別在于它 们占的存储字节不同。下面是儿个指针变量定义的例子:int *p1;广定义一个指向整型变量的指针变p17char *p2;广定义一个指向字符变量的指针变p27char data * p3;广定

14、义一个指向字符变量的指针变量p3,该指针访问 的数据在片内数据存储器中,该指针在内存中占一个字节/float xdata * p4;广定义一个指向字符变量的指针变量p4,该指针访问的数据在片外数据存储器中,该指针在内存中占两个字节/变量使用时注恵两个运算符:&和J其中:“&是取地址运算符,是指针运算符。通过取地址运算符可以把一个变量的地址送给指针变量,使抬针变量指向该变量;通过“指针运算符可以实现通过指针变量访问它所指向的变量的值。指针变量经过定义之后町以彖其他基本类型变量样引用。例如:int x, * px, * py;广变量及指针变量定义*/px=&x:厂将变量x的地址赋给指针变Mpx,使

15、px指向变虽:x*/* px=5;广等价于x=57py=px;广将指针变量px中的地址赋给指针变量py,使py也指向x*/例5输入两个整数x与y,经比较后按大小顺庁输出。include 包含特殊功能寄存器库#include 包含I/O函数库 extern serialjnitial();main()int x,y;int * p,* p1,* p2;serial_initial();pintf(uinput x and y:nn);sea nf(u%d%d,&x, & y);p1=&x;p2=&y;if (xy) p=p1;p1=p2;p2=p; printf(umax=%d1min=%dn,

16、*p1t*p2);while(1);程序执行结果:input x and y:4 8max=8,min=423Chuzhou University,Anhui,ChinaHTTP:/三、C51语言设计的其他问题;1 :几类垂要的库函数 专用寄存器包文件reg51. h(reg52. h): 绝对地址包含文件absacc. h: 动态内存分配函数,位于stdlib.h文件中。 缓冲区处理函数,位于string, h文件中,包括复制、移动、比较 等函数,这样便于对缓冲区进行处理。 输入/输出流函数,位于stdio.h文件中,流函数通过51单片机的 串口或用户定义的I/O读写数据,默认为51单片机的串口。Chuzhou University,Anhui,ChinaHTTP:/ sb* - 2!AiuIE9Hk9io语言程序设计C51语言的基本运算与流程控制语句C51语言的构造函数类型1C51语言设计的其他问题HTTP:/作业Chuzhou Universitynhui

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论