收藏 分享(赏)

《单片机原理及应用》课件02-C51函数.ppt

上传人:bubibi 文档编号:20014228 上传时间:2023-12-02 格式:PPT 页数:30 大小:625.50KB
下载 相关 举报
《单片机原理及应用》课件02-C51函数.ppt_第1页
第1页 / 共30页
《单片机原理及应用》课件02-C51函数.ppt_第2页
第2页 / 共30页
《单片机原理及应用》课件02-C51函数.ppt_第3页
第3页 / 共30页
《单片机原理及应用》课件02-C51函数.ppt_第4页
第4页 / 共30页
《单片机原理及应用》课件02-C51函数.ppt_第5页
第5页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、4.2 C51函数函数 C C 语言程序由函数组成,下面介绍函数的要点语言程序由函数组成,下面介绍函数的要点语言程序由函数组成,下面介绍函数的要点语言程序由函数组成,下面介绍函数的要点一、一、一、一、函数的分类及定义函数的分类及定义函数的分类及定义函数的分类及定义 从用户使用角度划分,函数分为从用户使用角度划分,函数分为从用户使用角度划分,函数分为从用户使用角度划分,函数分为库函数库函数库函数库函数和和和和用户定义函数用户定义函数用户定义函数用户定义函数 库函数库函数库函数库函数是编译系统为用户设计的一系列标准函数是编译系统为用户设计的一系列标准函数是编译系统为用户设计的一系列标准函数是编译系

2、统为用户设计的一系列标准函数 (见见见见本书附录本书附录本书附录本书附录B)B),用户只需调用,而无需自己去编写这些,用户只需调用,而无需自己去编写这些,用户只需调用,而无需自己去编写这些,用户只需调用,而无需自己去编写这些复杂的函数,如前面所用到的头文件复杂的函数,如前面所用到的头文件复杂的函数,如前面所用到的头文件复杂的函数,如前面所用到的头文件reg51.hreg51.h等,有的头等,有的头等,有的头等,有的头文件中包括一系列函数,要使用其中的函数必须先使用文件中包括一系列函数,要使用其中的函数必须先使用文件中包括一系列函数,要使用其中的函数必须先使用文件中包括一系列函数,要使用其中的函

3、数必须先使用#包含语句,然后才能调用。包含语句,然后才能调用。包含语句,然后才能调用。包含语句,然后才能调用。用户自定义函数用户自定义函数用户自定义函数用户自定义函数是用户根据任务编写的函数。是用户根据任务编写的函数。是用户根据任务编写的函数。是用户根据任务编写的函数。.从参从参从参从参数形式上函数分为无参函数和有参函数。数形式上函数分为无参函数和有参函数。数形式上函数分为无参函数和有参函数。数形式上函数分为无参函数和有参函数。l l无参函数无参函数无参函数无参函数:函数中无参数定义。函数中无参数定义。函数中无参数定义。函数中无参数定义。l l有参函数:函数中定义形式参数,在调用时,调用函数用

4、实际参有参函数:函数中定义形式参数,在调用时,调用函数用实际参有参函数:函数中定义形式参数,在调用时,调用函数用实际参有参函数:函数中定义形式参数,在调用时,调用函数用实际参数代替形式参数,调用完返回结果给调用函数。数代替形式参数,调用完返回结果给调用函数。数代替形式参数,调用完返回结果给调用函数。数代替形式参数,调用完返回结果给调用函数。二、函数二、函数二、函数二、函数的定义的定义的定义的定义 l l 无参函数的定义:无参函数的定义:无参函数的定义:无参函数的定义:返回值类型返回值类型返回值类型返回值类型 函数名函数名函数名函数名 ()()函数体语句函数体语句函数体语句函数体语句 如果函数没

5、有返回值,可以将返回值类型设为如果函数没有返回值,可以将返回值类型设为如果函数没有返回值,可以将返回值类型设为如果函数没有返回值,可以将返回值类型设为void void 函数以函数以函数以函数以“”开始,以开始,以开始,以开始,以“”结束,结束,结束,结束,l l 有参函数的定义:有参函数的定义:有参函数的定义:有参函数的定义:返回值类型返回值类型返回值类型返回值类型 函数名函数名函数名函数名 (形式参数表列形式参数表列形式参数表列形式参数表列)形式参数类型说明形式参数类型说明形式参数类型说明形式参数类型说明 函数体语句函数体语句函数体语句函数体语句 return(return(返回形参名返回

6、形参名返回形参名返回形参名)也可以这样定义也可以这样定义也可以这样定义也可以这样定义:返回值类型返回值类型返回值类型返回值类型 函数名函数名函数名函数名 (类型说明形式参数表列类型说明形式参数表列类型说明形式参数表列类型说明形式参数表列)函数体语句函数体语句函数体语句函数体语句 return(return(返回形参名返回形参名返回形参名返回形参名)其中形式参数表列的各项要用其中形式参数表列的各项要用其中形式参数表列的各项要用其中形式参数表列的各项要用 ,隔开,通过隔开,通过隔开,通过隔开,通过returnreturn语句将需返语句将需返语句将需返语句将需返回的值返回给调用函数回的值返回给调用函

7、数回的值返回给调用函数回的值返回给调用函数 。三、三、三、三、函数的调用函数的调用函数的调用函数的调用 l l 函数调用的形式为:函数调用的形式为:函数调用的形式为:函数调用的形式为:函数名函数名函数名函数名 (实际参数表列实际参数表列实际参数表列实际参数表列);对于无参函数当然不存在实际参数表列对于无参函数当然不存在实际参数表列对于无参函数当然不存在实际参数表列对于无参函数当然不存在实际参数表列 实参和形参的数目相等类型一致。实参和形参的数目相等类型一致。实参和形参的数目相等类型一致。实参和形参的数目相等类型一致。函数的调用方式有三种函数的调用方式有三种函数的调用方式有三种函数的调用方式有三

8、种函数调用语句:即把被调函数名作为调用函数的一个语句,如函数调用语句:即把被调函数名作为调用函数的一个语句,如函数调用语句:即把被调函数名作为调用函数的一个语句,如函数调用语句:即把被调函数名作为调用函数的一个语句,如 fun1()fun1();被调函数作为表达式的运算对象被调函数作为表达式的运算对象被调函数作为表达式的运算对象被调函数作为表达式的运算对象 如如如如 rett=2*get(a,b)rett=2*get(a,b);此时拿函数中的此时拿函数中的此时拿函数中的此时拿函数中的 a a,b b 应为实参,其以返回值参予式中的运算。应为实参,其以返回值参予式中的运算。应为实参,其以返回值参

9、予式中的运算。应为实参,其以返回值参予式中的运算。被调函数作为另一个数的实际参数被调函数作为另一个数的实际参数被调函数作为另一个数的实际参数被调函数作为另一个数的实际参数 如如如如 m=max(a,get(a,b)m=max(a,get(a,b);函数函数函数函数 get(a,b)get(a,b)作为作为作为作为max()max()的一个实际参数被调用。的一个实际参数被调用。的一个实际参数被调用。的一个实际参数被调用。四、四、对被调函数的说明对被调函数的说明l l 如果被调函数出现在主调函数之后,在主调函数前应对被调函如果被调函数出现在主调函数之后,在主调函数前应对被调函如果被调函数出现在主调

10、函数之后,在主调函数前应对被调函如果被调函数出现在主调函数之后,在主调函数前应对被调函数作以说明,形式为数作以说明,形式为数作以说明,形式为数作以说明,形式为 返回值类型返回值类型返回值类型返回值类型 被调函数名被调函数名被调函数名被调函数名 (形参表列形参表列形参表列形参表列);如:如:如:如:int fun1(a,b);/*int fun1(a,b);/*函数说明函数说明函数说明函数说明*/main()/*main()/*主函数主函数主函数主函数*/int d,u=3,v=2;int d,u=3,v=2;d=2*fun1(u,v);d=2*fun1(u,v);int fun1(a,b)in

11、t fun1(a,b)int a,b;int a,b;int c;int c;c=a+b;c=a+b;return(c);return(c);上例中被调函数在后、在主调函数前对被调函数进行明上例中被调函数在后、在主调函数前对被调函数进行明上例中被调函数在后、在主调函数前对被调函数进行明上例中被调函数在后、在主调函数前对被调函数进行明l l被调函数出现在主调函数之前,可以不对被调函数说明下面以一被调函数出现在主调函数之前,可以不对被调函数说明下面以一被调函数出现在主调函数之前,可以不对被调函数说明下面以一被调函数出现在主调函数之前,可以不对被调函数说明下面以一个简单例子来说明个简单例子来说明个简

12、单例子来说明个简单例子来说明 int fun1(a,b)int fun1(a,b)int a,b;int a,b;int c;int c;c=a+b;c=a+b;return(c);return(c);main()main()int d,u=3,v=2;int d,u=3,v=2;d=2*fun1(u,v);d=2*fun1(u,v);此例中被调函数在主调函数前,不用说明此例中被调函数在主调函数前,不用说明此例中被调函数在主调函数前,不用说明此例中被调函数在主调函数前,不用说明 五、单片机五、单片机五、单片机五、单片机的的的的 C C 语言编程实例语言编程实例语言编程实例语言编程实例 由于由于

13、由于由于 C51 C51 编译器是针对单片机的,因此编译器是针对单片机的,因此编译器是针对单片机的,因此编译器是针对单片机的,因此 ANSI C ANSI C 中中中中的的的的 scanf scanf 和和和和 printf printf 等对等对等对等对PCPC机的输入输出语句无效机的输入输出语句无效机的输入输出语句无效机的输入输出语句无效,运算运算运算运算的数据可以通过变量置入或取出,的数据可以通过变量置入或取出,的数据可以通过变量置入或取出,的数据可以通过变量置入或取出,C51 C51 会自动安排使用的存贮单元。也可以用户自行通过具体的内会自动安排使用的存贮单元。也可以用户自行通过具体的

14、内会自动安排使用的存贮单元。也可以用户自行通过具体的内会自动安排使用的存贮单元。也可以用户自行通过具体的内存地址置入数据或从特定地址取出数据。存地址置入数据或从特定地址取出数据。存地址置入数据或从特定地址取出数据。存地址置入数据或从特定地址取出数据。C C 语言的上机调试和汇编程序使用同一仿真调试软件。语言的上机调试和汇编程序使用同一仿真调试软件。语言的上机调试和汇编程序使用同一仿真调试软件。语言的上机调试和汇编程序使用同一仿真调试软件。下面是一个下面是一个下面是一个下面是一个C C语言程序编译后生成的机器代码及对应的反汇编语言程序编译后生成的机器代码及对应的反汇编语言程序编译后生成的机器代码

15、及对应的反汇编语言程序编译后生成的机器代码及对应的反汇编程序。程序。程序。程序。C C语言程序的反汇编程序语言程序的反汇编程序语言程序的反汇编程序语言程序的反汇编程序(源代码源代码源代码源代码)例:例:例:例:在在在在2.42.4节曾用汇编语言完成了外部节曾用汇编语言完成了外部节曾用汇编语言完成了外部节曾用汇编语言完成了外部RAMRAM的的的的000EH000EH单元和单元和单元和单元和000FH000FH单元的内容交换,现改用单元的内容交换,现改用单元的内容交换,现改用单元的内容交换,现改用C C语言编语言编语言编语言编 程。程。程。程。C C语言对地址的指语言对地址的指语言对地址的指语言对

16、地址的指示方法可以采用指针变量,也可以引用示方法可以采用指针变量,也可以引用示方法可以采用指针变量,也可以引用示方法可以采用指针变量,也可以引用absacc.habsacc.h头文件作绝对地头文件作绝对地头文件作绝对地头文件作绝对地址访址访址访址访 问,下面采用绝对地址访问方法。问,下面采用绝对地址访问方法。问,下面采用绝对地址访问方法。问,下面采用绝对地址访问方法。#include#include main()main()char c;char c;for(;)for(;)c=XBYTE c=XBYTE1414;XBYTE XBYTE1414=XBYTE=XBYTE1515;XBYTE XB

17、YTE1515=c;=c;程序中为方便反复观察,使用了死循环语句程序中为方便反复观察,使用了死循环语句程序中为方便反复观察,使用了死循环语句程序中为方便反复观察,使用了死循环语句for(;)for(;)只要用只要用只要用只要用Ctrl+CCtrl+C即可退出死即可退出死即可退出死即可退出死循环。循环。循环。循环。上面程序通过编译后机器代码和反汇编程序如下:上面程序通过编译后机器代码和反汇编程序如下:上面程序通过编译后机器代码和反汇编程序如下:上面程序通过编译后机器代码和反汇编程序如下:0000 020014 L JMP 0014H 0000 020014 L JMP 0014H 0003 90

18、000E MOV DPTR 0003 90000E MOV DPTR,#000EH#000EH c=XBYTEc=XBYTE1414;0006 E0 MOVX A 0006 E0 MOVX A,DPTR DPTR 0007 FF MOV R7 0007 FF MOV R7,A A 0008 A3 INC DPTR 0008 A3 INC DPTR 0009 E0 MOVX A 0009 E0 MOVX A,DPTR DPTR 000A 90000E MOV DPTR000A 90000E MOV DPTR,#000EH#000EH XBYTEXBYTE1414=XBYTE=XBYTE 1515

19、;000D F0 MOVX DPTR000D F0 MOVX DPTR,A A 000E A3 INC DPTR 000E A3 INC DPTR XBYTEXBYTE1515=c;=c;000F EF MOV A 000F EF MOV A,R7 R7 0010 F0 MOVX DPTR 0010 F0 MOVX DPTR,A A 0011 80F0 SJMP 0003H 0011 80F0 SJMP 0003H 0013 22 RET 0013 22 RET 0014 787F MOV R0 0014 787F MOV R0,#7FH#7FH 0016 E4 CLR A 0016 E4 C

20、LR A 0017 F6 MOV R00017 F6 MOV R0,A A 0018 D8FD DJNZ R0 0018 D8FD DJNZ R0,0017H0017H001A 758107 MOV SP001A 758107 MOV SP,#07H#07H 001D 020003 LJMP 0003H001D 020003 LJMP 0003H 思路:思路:一进入一进入C C语言程序,首先执行将内部语言程序,首先执行将内部RAMRAM的的0 07FH 1287FH 128个单个单元清零,然后置元清零,然后置SPSP为为07H(07H(视变量视变量 多少不同,多少不同,SPSP置不同值,依程置

21、不同值,依程序而定序而定),因此如果要对内部,因此如果要对内部RAMRAM置初值,一定要在执行了一条置初值,一定要在执行了一条 C C语言语句后进行。语言语句后进行。C C语言程序设定的变量,语言程序设定的变量,C51C51自行安排寄存器或存贮器作参数自行安排寄存器或存贮器作参数传递区,通常在传递区,通常在R0R0R7(R7(一组一组 或两组,视参数多少定或两组,视参数多少定),因此,因此,如果对具体地址置数据,应避开这些如果对具体地址置数据,应避开这些R0R0R7R7的地址。的地址。如果不特别指定变量的存贮类型,通常被安排在内部如果不特别指定变量的存贮类型,通常被安排在内部RAMRAM中。中

22、。顺序程序顺序程序的设计的设计 例:完成例:完成19805245031980524503的编程的编程 分析:两个乘数比较大,其积更大,采用分析:两个乘数比较大,其积更大,采用unsigned longunsigned long类型,设类型,设乘积存放在外部数据存贮乘积存放在外部数据存贮 器器0 0号开始的单元。程序如下:号开始的单元。程序如下:main()main()unsigned long xdata*p;/*unsigned long xdata*p;/*设定指针设定指针p*/p*/unsigned long a=19805;/*unsigned long a=19805;/*设置设置a

23、 a的类型的类型*/unsigned long b=24503,c;/*unsigned long b=24503,c;/*设置设置b b和积和积c c为为 unsigned longunsigned long类型,并赋初值类型,并赋初值*/p=0;/*p=0;/*设地址指向设地址指向0 0号单元号单元*/c=a*b;c=a*b;*p=c;/*p=c;/*积存入外部积存入外部RAM 0RAM 0号单元号单元*/上机通过软件仿真调试,在变量观察窗口看到运算结果上机通过软件仿真调试,在变量观察窗口看到运算结果 c=485281915c=485281915,即为乘积的十进制,即为乘积的十进制 数。观

24、察数。观察XDATAXDATA区区(外部外部RAM)RAM)的的0000H0000H0003H0003H单元分别为单元分别为1C EC D0 7B1C EC D0 7B,即存放的为,即存放的为485281915 485281915 的十六进制数。的十六进制数。观察观察DATADATA区:区:04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1C EC D0 7B 00 00 4D 5D 00 00 5F B71C EC D0 7B 00 00 4D 5D 00 00 5F B7 C C变量(积)变量(

25、积)a a变量变量 b b变量变量 可见定义为可见定义为可见定义为可见定义为unsigned longunsigned long类型,给每个变量分配四个单元,类型,给每个变量分配四个单元,类型,给每个变量分配四个单元,类型,给每个变量分配四个单元,如果定义类型不对,将得不到如果定义类型不对,将得不到如果定义类型不对,将得不到如果定义类型不对,将得不到 正确的结果。正确的结果。正确的结果。正确的结果。如果未定义变量类型,默认为内部如果未定义变量类型,默认为内部如果未定义变量类型,默认为内部如果未定义变量类型,默认为内部 RAMRAM,如,如,如,如a a、b b、c c变量。变量。变量。变量。对

26、于复杂的运算通常采用查表的方法。如同汇编程序设计一对于复杂的运算通常采用查表的方法。如同汇编程序设计一对于复杂的运算通常采用查表的方法。如同汇编程序设计一对于复杂的运算通常采用查表的方法。如同汇编程序设计一样,在程序存贮器建立一张表,样,在程序存贮器建立一张表,样,在程序存贮器建立一张表,样,在程序存贮器建立一张表,在在在在C C语言中表格定义为数组,表语言中表格定义为数组,表语言中表格定义为数组,表语言中表格定义为数组,表内数据内数据内数据内数据(元素元素元素元素)的偏移量表现为下标。数组的使用如同变量一的偏移量表现为下标。数组的使用如同变量一的偏移量表现为下标。数组的使用如同变量一的偏移量

27、表现为下标。数组的使用如同变量一 样,样,样,样,要先进行定义:即说明数组名、维数、数据类型和存贮类型,在要先进行定义:即说明数组名、维数、数据类型和存贮类型,在要先进行定义:即说明数组名、维数、数据类型和存贮类型,在要先进行定义:即说明数组名、维数、数据类型和存贮类型,在定义数组的同时还可以定义数组的同时还可以定义数组的同时还可以定义数组的同时还可以 给数组各元素赋初值。通过下例说明给数组各元素赋初值。通过下例说明给数组各元素赋初值。通过下例说明给数组各元素赋初值。通过下例说明C51C51数组的定义方法和用数组的定义方法和用数组的定义方法和用数组的定义方法和用C C语言编查表程序的方法。语言

28、编查表程序的方法。语言编查表程序的方法。语言编查表程序的方法。例:例:例:例:片内片内片内片内RAM 20HRAM 20H单元存放着一个单元存放着一个单元存放着一个单元存放着一个0 005H05H的数,用查表法,的数,用查表法,的数,用查表法,的数,用查表法,求出该数的平方值放入内部求出该数的平方值放入内部求出该数的平方值放入内部求出该数的平方值放入内部RAM 21HRAM 21H单元单元单元单元 main()main()char x,*p;char x,*p;char code tab char code tab6 6=0,1,4,9,16,25=0,1,4,9,16,25;/*;/*平方表

29、平方表平方表平方表*/p=0 x20;p=0 x20;x=tab x=tab*p p;/*;/*查表查表查表查表*/p+;p+;*p=x;*p=x;循环循环程序的设计程序的设计 C C语言的循环语句有以下几种形式语言的循环语句有以下几种形式语言的循环语句有以下几种形式语言的循环语句有以下几种形式 1.while(1.while(表达式表达式表达式表达式)语句;语句;语句;语句;其中表达式为循环条件,语句为循环体,当表达式值为真其中表达式为循环条件,语句为循环体,当表达式值为真其中表达式为循环条件,语句为循环体,当表达式值为真其中表达式为循环条件,语句为循环体,当表达式值为真(值值值值为为为为1

30、)1),重复执行,重复执行,重复执行,重复执行“语句语句语句语句”。进入进入while表达式为表达式为 真真?循环体语句循环体语句退出循环退出循环执行下条语句执行下条语句表达式为表达式为 真真?进入进入while循环体语句循环体语句表达式为表达式为 真真?执行下条语句执行下条语句l l 3.for(3.for(表达式表达式表达式表达式1 1;表达式;表达式;表达式;表达式2 2;表达式;表达式;表达式;表达式3 3;)语句;语句;语句;语句;执行下条语句执行下条语句循环体语句循环体语句求解表达式求解表达式 1表达式表达式 2为真为真?求解表达式求解表达式3 语句可只一条以语句可只一条以“;”结

31、尾;可以多条组成复合语句,复合语结尾;可以多条组成复合语句,复合语句必须用句必须用括起;也以没有语句,通常用于等待中断,或查询。表括起;也以没有语句,通常用于等待中断,或查询。表达式可省一项,也可全省;但达式可省一项,也可全省;但“;”不可少。不可少。1.1.for(;)语句 为无限循环2.2.for(i=4;i+)语句 为 i 从从 4 开始开始无限循环3.3.for(;i100;)语句 相当于while(i100)语语句句4.4.while(P1&0 x01)=0;语句是如果语句是如果P1.0=0,循环执行空语句,直到循环执行空语句,直到P1.0=1,此语句用于对此语句用于对P1.0 进行

32、检测进行检测例如:例如:例:分析例:分析例:分析例:分析下列程序的执行结果:下列程序的执行结果:下列程序的执行结果:下列程序的执行结果:main()main()int sum=0,i;int sum=0,i;do do sum+=i sum+=i i+i+;while(i =10);while(i =10);本程序完成本程序完成本程序完成本程序完成0+1+2+100+1+2+10的累加,执行后的累加,执行后的累加,执行后的累加,执行后sum=55 sum=55 例:将例:将例:将例:将例例例例2 2改用改用改用改用forfor语句编程语句编程语句编程语句编程 main main int sum

33、=0,i;int sum=0,i;for(i=0;i=10;i+)for(i=0;i=10;i+)sum+=i;sum+=i;分支分支分支分支程序的设计程序的设计程序的设计程序的设计 C C语言的分支选择语句有以下几种形式:语言的分支选择语句有以下几种形式:语言的分支选择语句有以下几种形式:语言的分支选择语句有以下几种形式:1.if(1.if(表达式表达式表达式表达式)语句语句语句语句;句中表达式为真执行语句,否则执行下一条语句。当花括号句中表达式为真执行语句,否则执行下一条语句。当花括号句中表达式为真执行语句,否则执行下一条语句。当花括号句中表达式为真执行语句,否则执行下一条语句。当花括号中

34、的语句不只一条,花括号不能中的语句不只一条,花括号不能中的语句不只一条,花括号不能中的语句不只一条,花括号不能 省。省。省。省。2.if(2.if(表达式表达式表达式表达式)语句语句语句语句1 1;else else 语句语句语句语句2 2;句中表达式为真执行语句句中表达式为真执行语句句中表达式为真执行语句句中表达式为真执行语句1 1,否则执行语句,否则执行语句,否则执行语句,否则执行语句 2 2再执行下一再执行下一再执行下一再执行下一条语句条语句条语句条语句,见下面流程图。见下面流程图。见下面流程图。见下面流程图。if if 语句可以嵌套。语句可以嵌套。语句可以嵌套。语句可以嵌套。表达式为真

35、?表达式为真?语句语句1下条语句下条语句语句语句2NY 表达式为真?表达式为真?语句语句下条语句下条语句NYif 语句流程语句流程if else 语句流程语句流程例例例例.片内片内片内片内RAMRAM的的的的20H20H单元存放一个有符号数单元存放一个有符号数单元存放一个有符号数单元存放一个有符号数 x x,函数,函数,函数,函数y y与与与与x x有如下关有如下关有如下关有如下关系式:系式:系式:系式:(设设设设y y存放于存放于存放于存放于21H21H单元单元单元单元)x x x x0 0 y =20H x=0 y =20H x=0 x+5 x 0 x+5 x 0 ,程序如下,程序如下,程

36、序如下,程序如下:main()main()signed char x,*p,*y;signed char x,*p,*y;p=0 x20;y=0 x21;p=0 x20;y=0 x21;for(;)for(;)x=*p;x=*p;if(x if(x0)*y=x;0)*y=x;if(x 0)*y=x+5;if(x 0)*y=x+5;if(x=0)*y=0 x20;if(x=0)*y=0 x20;程序中为观察不同数的执行结果,采用了死循环语句程序中为观察不同数的执行结果,采用了死循环语句程序中为观察不同数的执行结果,采用了死循环语句程序中为观察不同数的执行结果,采用了死循环语句for(;)for(

37、;),上机调试时退出死循环可用,上机调试时退出死循环可用,上机调试时退出死循环可用,上机调试时退出死循环可用Ctrl+CCtrl+C。3.switch case 3.switch case 语句语句语句语句 该语句常用于多分支转移,格式如下:该语句常用于多分支转移,格式如下:该语句常用于多分支转移,格式如下:该语句常用于多分支转移,格式如下:switch(switch(表达式表达式表达式表达式)case case 常量表达式常量表达式常量表达式常量表达式1 1;语句语句语句语句1 1;break break;case case 常量表达式常量表达式常量表达式常量表达式2 2;语句语句语句语句2

38、 2;break break;case case 常量表达式常量表达式常量表达式常量表达式n n;语句语句语句语句n n;break break;default;(default;(语句语句语句语句n+1;n+1;说明说明说明说明 语句先进行表达式的运算,当表达式的值语句先进行表达式的运算,当表达式的值语句先进行表达式的运算,当表达式的值语句先进行表达式的运算,当表达式的值与某一与某一与某一与某一casecase后面的常量表后面的常量表后面的常量表后面的常量表 达式相等,就执行它后达式相等,就执行它后达式相等,就执行它后达式相等,就执行它后面的语句。面的语句。面的语句。面的语句。当当当当cas

39、ecase语句后有语句后有语句后有语句后有breakbreak语句时,执行完这一语句时,执行完这一语句时,执行完这一语句时,执行完这一casecase语句后,语句后,语句后,语句后,跳出跳出跳出跳出switchswitch语句,当语句,当语句,当语句,当case case 后面无后面无后面无后面无breakbreak语句,程序将执行下一语句,程序将执行下一语句,程序将执行下一语句,程序将执行下一条条条条casecase语句。语句。语句。语句。如果如果如果如果casecase中常量表达式值和表达式的值都不匹配,就执行中常量表达式值和表达式的值都不匹配,就执行中常量表达式值和表达式的值都不匹配,就

40、执行中常量表达式值和表达式的值都不匹配,就执行defaultdefault后面的语句。后面的语句。后面的语句。后面的语句。如果无如果无如果无如果无defaultdefault语句就退出语句就退出语句就退出语句就退出switchswitch语句。语句。语句。语句。defaultdefault的次序不影响执行的结果,也可无此语句。的次序不影响执行的结果,也可无此语句。的次序不影响执行的结果,也可无此语句。的次序不影响执行的结果,也可无此语句。两两两两个数个数个数个数a a和和和和b b,根据,根据,根据,根据R3R3的内容转向不同子程序的内容转向不同子程序的内容转向不同子程序的内容转向不同子程序

41、r3=0r3=0,执行子程序,执行子程序,执行子程序,执行子程序pr0(pr0(完成两数相加完成两数相加完成两数相加完成两数相加)r3=1 r3=1,执行子程序,执行子程序,执行子程序,执行子程序pr1(pr1(完成两数相减完成两数相减完成两数相减完成两数相减)r3=2 r3=2,执行子程序,执行子程序,执行子程序,执行子程序pr2(pr2(完成两数相乘完成两数相乘完成两数相乘完成两数相乘)r3=3 r3=3,执行子程序,执行子程序,执行子程序,执行子程序pr3(pr3(完成两数相除完成两数相除完成两数相除完成两数相除)分析:分析:分析:分析:C C语言中的子程序即为函数,因此需编四个处理函数

42、。语言中的子程序即为函数,因此需编四个处理函数。语言中的子程序即为函数,因此需编四个处理函数。语言中的子程序即为函数,因此需编四个处理函数。在在在在C51C51编译器中通过头文件编译器中通过头文件编译器中通过头文件编译器中通过头文件 reg51.hreg51.h可以识别特殊功能寄可以识别特殊功能寄可以识别特殊功能寄可以识别特殊功能寄存器,但不能识别存器,但不能识别存器,但不能识别存器,但不能识别R0R0R7R7通用寄通用寄通用寄通用寄 存器,因此存器,因此存器,因此存器,因此R0R0R7R7只有通过只有通过只有通过只有通过绝对地址访问识别,程序如下:绝对地址访问识别,程序如下:绝对地址访问识别

43、,程序如下:绝对地址访问识别,程序如下:#include#include#define r3 DBYTE#define r3 DBYTE0 x030 x03 int c,c1,a,b;int c,c1,a,b;Pr0()c=a+b;Pr0()c=a+b;pr1()c=a-b;pr1()c=a-b;pr2()c=a*b;pr2()c=a*b;pr3()c=a/b;pr3()c=a/b;main()main()a=90;b=30;a=90;b=30;for(;)for(;)switch(r3)switch(r3)pr0();break;pr0();break;case 1:case 1:pr1();break;pr1();break;case 2:case 2:pr2();break;pr2();break;case 3:case 3:pr3();break;pr3();break;c1=56;c1=56;case 0:

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

当前位置:首页 > 网络技术 > 前端技术

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报