2022年单片机的C语言编程(1).ppt
《2022年单片机的C语言编程(1).ppt》由会员分享,可在线阅读,更多相关《2022年单片机的C语言编程(1).ppt(91页珍藏版)》请在咨信网上搜索。
第第 5 章章单片机单片机的的C语言编程语言编程第第5章章 单片机的单片机的C语言编程语言编程运算符和表达式运算符和表达式 5.2分支程序设计分支程序设计5.3循环程序设计循环程序设计5.4C及及C51语言概述语言概述 5.1函函 数数5.5数组及指针的使用数组及指针的使用5.6C51的编程规范与技巧的编程规范与技巧5.7第第5章章 单片机的单片机的C语言编程语言编程5.1 C及及C51语言概述语言概述 5.1.1 C及及C51语言的特点语言的特点语言简洁,使用方便灵活。语言简洁,使用方便灵活。可移植性好。可移植性好。表达能力强。表达能力强。表达方式灵活。表达方式灵活。可进行结构化程序设计。可进行结构化程序设计。可以直接操作计算机硬件。可以直接操作计算机硬件。生成的目标代码质量高。生成的目标代码质量高。第第5章章 单片机的单片机的C语言编程语言编程5.1.2 C51的数据类型的数据类型关键字关键字:关关键键字字则则是是编编程程语语言言保保留留的的特特殊殊标标识识符符,它它们们具具有有固固定定名名称称和和含含义义,在在程程序序编编写写中中不不允允许许标标识识符符与与关键字相同。关键字相同。在在C51中中的的关关键键字字除除了了有有ANSI C 标标准准的的32个个关关键键字字外外还还根根据据51单单片片机机的的特特点点扩扩展展了了相相关关的的关关键键字字,见表中的见表中的C51编译器的扩展关键字。编译器的扩展关键字。第第5章章 单片机的单片机的C语言编程语言编程关键字关键字用途用途说明说明bit位标量声明声明一个位标量或位类型的函数声明一个位标量或位类型的函数sbit位标量声明声明一个可位寻址变量声明一个可位寻址变量sfr特殊功能寄存器声明声明一个特殊功能寄存器声明一个特殊功能寄存器sfr16特殊功能寄存器声明声明一个声明一个16位的特殊功能寄存器位的特殊功能寄存器data存储器类型说明直接寻址的内部数据存储器直接寻址的内部数据存储器bdata存储器类型说明可位寻址的内部数据存储器可位寻址的内部数据存储器idata存储器类型说明间接寻址的内部数据存储器间接寻址的内部数据存储器pdata存储器类型说明分页寻址的外部数据存储器分页寻址的外部数据存储器xdata存储器类型说明外部数据存储器外部数据存储器code存储器类型说明程序存储器程序存储器interrupt中断函数说明定义一个中断函数定义一个中断函数reentrant再入函数说明定义一个再入函数定义一个再入函数using寄存器组选择选择单片机的工作寄存器组选择单片机的工作寄存器组_at_绝对地址说明为非位变量指定存储空间绝对地址为非位变量指定存储空间绝对地址small存储模式选择参数及局部变量放入可直接寻址的内部参数及局部变量放入可直接寻址的内部RAMcompact存储模式选择参数及局部变量放入分页外部数据存储区参数及局部变量放入分页外部数据存储区large存储模式选择参数及局部变量放入分页外部数据存储区参数及局部变量放入分页外部数据存储区关键字关键字 :第第5章章 单片机的单片机的C语言编程语言编程数据类型的具体定义:数据类型的具体定义:数据类型数据类型 说明说明长长 度度值值 域域unsigned char无符号字符型无符号字符型单字节单字节 0255 signed char带符号字符型带符号字符型单字节单字节-128+127 unsigned int无符号整型无符号整型双字节双字节 065535 signed int带符号整型带符号整型双字节双字节-32768+32767unsigned long无符号长整型无符号长整型四字节四字节04294967295signed long带符号长整型带符号长整型四字节四字节-2147483648+2147483647float单精度型单精度型四字节四字节 1.175494E-383.402823E+38*指针指针13 字节字节 对象的地址对象的地址bit位变量位变量位位 0 或或 1sfr8位特殊功能寄存器位特殊功能寄存器单字节单字节 0255sfr1616位特殊功能寄存器位特殊功能寄存器双字节双字节 065535sbit可位寻址定义可位寻址定义位位 0 或或 1第第5章章 单片机的单片机的C语言编程语言编程下面详细介绍一下下面详细介绍一下C51编译器中特殊的数据类型:编译器中特殊的数据类型:1bit位标量位标量 bit位标量是位标量是C51编译器的一种扩充数据类型。编译器的一种扩充数据类型。利利用用它它可可定定义义一一个个位位标标量量,但但不不能能定定义义位位指指针针,也也不不能能定义位数组。定义位数组。它的值是一个它的值是一个二进制数二进制数:0或或1。第第5章章 单片机的单片机的C语言编程语言编程2sfr特殊功能寄存器特殊功能寄存器 sfr一种扩充数据类型。一种扩充数据类型。sfr是是定定义义8位位的的特特殊殊功功能能寄寄存存器器,占占用用一一个个内内存存单单元元地地址址,值值域域为为 0255(80HFFH),sfr 并并非非标标准准C 语语言言的的关关键键字字,而是而是Keil 为能直接访问为能直接访问51单片机内部的所有特殊功能寄存器单片机内部的所有特殊功能寄存器。其用法:其用法:sfr 特殊功能寄存器名特殊功能寄存器名=特殊功能寄存器地址常数;特殊功能寄存器地址常数;如如sfr P1=0 x90;/*定义定义P1 I/O口,其地址口,其地址90H*/。如如用用P1=255/*把把FFH送入送入P1中(对中(对P1 端口的所有引脚置高电平)端口的所有引脚置高电平)*/。第第5章章 单片机的单片机的C语言编程语言编程3sfr16为为16位特殊功能寄存器位特殊功能寄存器sfr16则则是是用用来来定定义义16位位特特殊殊功功能能寄寄存存器器,操操作作占占两两个个字字节的寄存器。节的寄存器。其用法其用法:sfr16 特殊功能寄存器名特殊功能寄存器名=特殊功能寄存器地址常数特殊功能寄存器地址常数;如如8052的的T2定时器,可以定义为:定时器,可以定义为:sfr16 T2=0 xCC;/*这这里里定定义义8052定定时时器器2,地地址址为为T2L=CCH,T2H=CDH*/用用sfr16定定义义16位位特特殊殊功功能能寄寄存存器器时时,等等号号后后面面是是它它的的低低位地址,高位地址一定要位于物理低位地址之上。位地址,高位地址一定要位于物理低位地址之上。注意的是不能用于定时器注意的是不能用于定时器0和和1的定义。的定义。第第5章章 单片机的单片机的C语言编程语言编程4sbit可寻址位可寻址位 sbit是是一一种种扩扩充充数数据据类类型型,sbit可可定定义义可可位位寻寻址址对对象象。如如访问特殊功能寄存器中的某位。访问特殊功能寄存器中的某位。sbit 的用法有三种:的用法有三种:(1)sbit 位变量名位变量名=位地址位地址 例如:例如:sbit P1_1=0 x91;(2)sbit 位变量名位变量名=特殊功能寄存器名特殊功能寄存器名 位位置位位置 例如:例如:sft P1=0 x90;sbit P1_1=P1 1;/*P1_1 为为P1中的中的P1.1 引脚引脚*/(3)sbit 位变量名字节地址位变量名字节地址 位位置位位置(位序号位序号)例如:例如:sbit P1_1=0 x90 1;第第5章章 单片机的单片机的C语言编程语言编程5.1.3 C51对内部资源的定义对内部资源的定义MCS-51内内部部资资源源定定义义函函数数是是MCU中中寄寄存存器器的的地地址址映映射射。MCS-51单单片片机机提提供供128字字节节的的SFR寻寻址址区区,地地址址为为80HFFH,51单单片片机机中中,除除了了程程序序计计数数器器PC和和4组组通通用用寄寄存存器器组组之之外外,其他所有的寄存器均为其他所有的寄存器均为SFR,并位于片内特殊寄存器区。,并位于片内特殊寄存器区。这这个个区区域域可可位位寻寻址址、字字节节寻寻址址或或字字寻寻址址,用用来来控控制制定定时时/计数器、计数器、I/O口、串行口等部件。口、串行口等部件。特特殊殊功功能能寄寄存存器器在在C51语语言言中中的的声声明明,由由几几个个关关键键字字来来完完成。成。第第5章章 单片机的单片机的C语言编程语言编程MCS-51单单片片机机所所有有标标准准的的寄寄存存器器的的使使用用都都是是已已经经由由C51头文件定义完成,编程人员可以直接使用符号的定义。头文件定义完成,编程人员可以直接使用符号的定义。在在使使用用C51已已定定义义的的寄寄存存器器符符号号时时,要要用用预预编编译译命命令令#include将有关将有关“头文件头文件”包括到源文件中。包括到源文件中。使使用用MCS-51内内部部资资源源定定义义时时要要用用到到“reg51.h”文文件件,因此源文件开头应有以下预编译命令:因此源文件开头应有以下预编译命令:#include 或或#include”reg51.h”。第第5章章 单片机的单片机的C语言编程语言编程例例5-15-1:利用:利用MCS-51MCS-51单片机的单片机的P1 P1 引脚引脚P1.0 P1.0 引接一只引接一只LED,LED,送送“0”0”点亮点亮,送送“1”1”灭。则要求点亮,程序如下:灭。则要求点亮,程序如下:P1.480518051GNDLED0R07407LED7R77407LED1P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7VCC第第5章章 单片机的单片机的C语言编程语言编程#include“reg51.h”sbitP1_0=P10;voidmain()P1_1=0;例例5-15-1:利用:利用MCS-51MCS-51单片机的单片机的P1 P1 引脚引脚P1.0 P1.0 引接一只引接一只LED,LED,送送“0”0”点亮点亮,送送“1”1”灭。则要求点亮,程序如下:灭。则要求点亮,程序如下:第第5章章 单片机的单片机的C语言编程语言编程p#include代代表表的的是是加加载载头头文文件件,头头文文件件是是C编编译译器器中中带带的的已已经经定定义义的函数的集合或自定义的一个函数的集合。的函数的集合或自定义的一个函数的集合。程程序序中中加加载载一一个个的的文文件件,那那么么打打开开里里边边的的内内容容是是什什么么呢呢?如编码器在如编码器在C盘下盘下C51文件夹内,则文件夹内,则文件的路径是文件的路径是。例如:例如:P1定义为定义为 sfr P1 =0 x90;累加器累加器A定义为定义为 sfr ACC =0 xE0;定时模式定时模式TMOD定义为定义为 sfr TMOD=0 x89;第第5章章 单片机的单片机的C语言编程语言编程pmain()函数函数也称为主函数也称为主函数C语言都是从语言都是从main()函数开始执行的。()函数开始执行的。前面加了一个前面加了一个void 是说明该函数是没有返回值的。是说明该函数是没有返回值的。p如果点量如果点量8个灯,可个灯,可P10 x00对对引引脚脚送送0,则则点点亮亮单单色色灯灯,0 x00对对应应二二进进制制数数值值00000000,所以该条语句是同时点亮了,所以该条语句是同时点亮了8只单色灯。只单色灯。p整个程序用括起来,形成了一个完整的整个程序用括起来,形成了一个完整的C51程序。程序。上上例例中中,符符号号P1(代代表表P1锁锁存存器器)已已经经在在头头文文件件“reg51.h”中中有有定定义义。P1_0表表示示引引脚脚,它它没没有有被被事事先先定定义义好,所以需要使用好,所以需要使用sbit进行定义。进行定义。第第5章章 单片机的单片机的C语言编程语言编程常量与变量常量与变量1、在在程程序序运运行行过过程程中中其其值值不不能能被被改改变变的的量量称称为为常常量量。常常量分为:量分为:数值型常量数值型常量和和字符型常量字符型常量。例例 2:符符号号常常量量的的使使用用,在在P1口口接接有有8个个LED,执执行行下下面面的程序:的程序:#define LIGHT0 0 xfe#include“reg51.h”void main()P1=LIGHT0;第第5章章 单片机的单片机的C语言编程语言编程程程序序中中用用#define LIGHT0 0 xfe 来来定定义义符符号号LIGHT0 等等于于0 xfe,以以后后程程序序中中所所有有出出现现LIGHT0 的地方均会用的地方均会用0 xfe 来替代。来替代。因因此此,这这个个程程序序执执行行结结果果就就是是P1=0 xfe,只只有有接接在的在的LED灯亮引脚上的灯亮引脚上的LED 点亮。点亮。第第5章章 单片机的单片机的C语言编程语言编程2、在在程程序序执执行行过过程程中中其其值值可可以以改改变变的的量量称称为为变变量量。要要在在程程序序中中使使用用变变量量必必须须先先用用标标识识符符作作为为变变量量名名,并并指指出出所所用用的的数据类型数据类型和和存储模式存储模式。如如某某仪仪表表有有4 位位LED数数码码管管,编编程程时时将将3CH3FH 作作为为显显示缓冲区,当要显示一个字串示缓冲区,当要显示一个字串“1234”时,汇编程序如下:时,汇编程序如下:MOV 3CH,#1MOV 3DH,#2MOV 3EH,#3MOV 3FH,#4经经过过显显示示程程序序处处理理后后,在在数数码码管管上上显显示示1234。这这里里的的3CH3FH 就是一个存储单元地址,用变量表示。就是一个存储单元地址,用变量表示。第第5章章 单片机的单片机的C语言编程语言编程定义一个变量的定义一个变量的格式格式如下:如下:存储种类存储种类 数据类型数据类型 存储器类型存储器类型 变量名表。变量名表。在在定定义义格格式式中中除除了了数数据据类类型型和和变变量量名名表表是是必必要要的的,其其它都是可选项。它都是可选项。变量共分四种类型:变量共分四种类型:自动(自动(auto)外部(外部(extern)静态(静态(static)寄存器(寄存器(register)缺省类型为自动缺省类型为自动(auto)。第第5章章 单片机的单片机的C语言编程语言编程存存储储类类型型:说说明明了了一一个个变变量量的的数数据据类类型型后后,还还可可选选择择说说明该变量的存储器类型。明该变量的存储器类型。既既指指定定该该变变量量在在C51硬硬件件系系统统中中所所使使用用的的存存储储区区域域,并并在在编译时准确的定位。编译时准确的定位。表表5-3中是中是C51编译器所能认别的存储器类型。编译器所能认别的存储器类型。第第5章章 单片机的单片机的C语言编程语言编程存储器存储器 类型类型说说 明明地地 址址data直接访问内部数据存储器(128字节),访问速度最快00H7FHbdata可位寻址内部数据存储器(16字节),允许位与字节混合访问20H2FHidata间接访问内部数据存储器(256字节),允许访问全部内部地址00HFFHpdata分页访问外部数据存储器(256字节),用MOVXRi指令访问00HFFHxdata外部数据存储器(64KB),用MOVXDPTR指令访问0000HFFFFHcode程序存储器(64KB),用MOVCA+DPTR指令访问0000HFFFFH表表5-3 5-3 存储器类型存储器类型第第5章章 单片机的单片机的C语言编程语言编程在在 C51存存储储器器类类型型中中提提供供有有一一个个bdata的的存存储储器器类类型型,这这个个是是指指可可位位寻寻址址的的数数据据存存储储器器,位位于于单单片片机机的的可可位位寻寻址址区区中中20H2FH,可以将要求可位寻址的数据定义为,可以将要求可位寻址的数据定义为bdata。如如:unsigned char bdata ib;/*在可位寻址区定义在可位寻址区定义 ucsigned char 类型的变量类型的变量 ib*/int bdata ab2;/*在在可可位位寻寻址址区区定定义义数数组组 ab2,这这些些也也称称为为可可寻寻址址位位对对象象*/第第5章章 单片机的单片机的C语言编程语言编程在在 C51存存储储器器类类型型中中提提供供有有一一个个bdata的的存存储储器器类类型型,这这个个是是指指可可位位寻寻址址的的数数据据存存储储器器,位位于于单单片片机机的的可可位位寻寻址址区区中中20H2FH,可以将要求可位寻址的数据定义为,可以将要求可位寻址的数据定义为bdata。如如:sbit ib7=ib7;/*用用关关键键字字 sbit 定定义义位位变变量量来来独独立立访访问问可可寻寻址址位位对对象象的的其其中一位中一位*/sbit ab12=ab112;/*操操作作符符“”后后面面的的位位位位置置的的最最大大值值取取决决于于指指定定的的基基址址类型,类型,char(0-7),int(0-15),long(0-31)*/第第5章章 单片机的单片机的C语言编程语言编程例例5-3:将将变变量量a的的第第3位位、第第5位位、第第7位位清清零零,其其余余位位不不变。变。char bdata a;sbit D3=a3;sbit D5=a5;sbit D7=a7;void main()D7=0;D5=0;D3=0;第第5章章 单片机的单片机的C语言编程语言编程5.1.5 C51绝对地址访问绝对地址访问1绝对宏:绝对宏:在在程程序序中中,用用“include”即即可可使使用用其其中中定定义义的的宏宏来来访访问问绝绝对对地地址址,包包括括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD具具体体使使用可参看附录中用可参看附录中“absacc.h”内容便知。内容便知。例如:例如:val1=CBYTE0 x0040;/*指指向向程程序序存存贮贮器器的的0040h字字节节地地址址,即即变变量量Val1的的地地址址用的是程存的用的是程存的0040h地址,也叫地址,也叫绝对地址绝对地址。*/第第5章章 单片机的单片机的C语言编程语言编程5.1.5 C51绝对地址访问绝对地址访问1绝对宏:绝对宏:在在程程序序中中,用用“include”即即可可使使用用其其中中定定义义的的宏宏来来访访问问绝绝对对地地址址,包包括括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD具具体体使使用可参看附录中用可参看附录中“absacc.h”内容便知。内容便知。例如:例如:val2=XWORD 0 x0004;/*指向片外指向片外RAM的的0004h字地址。字地址。*/第第5章章 单片机的单片机的C语言编程语言编程2_at_关键字关键字直接在数据定义后加上直接在数据定义后加上_at_ const即可即可.但是注意:绝对变量不能被初使化;但是注意:绝对变量不能被初使化;bit型函数及变量不能用型函数及变量不能用_at_指定。指定。例如:例如:xdata char m110 _at_ 0 x1000;/*指定指定m1数组从数组从1000H开始。开始。*/第第5章章 单片机的单片机的C语言编程语言编程2_at_关键字关键字直接在数据定义后加上直接在数据定义后加上_at_ const即可即可.但是注意:绝对变量不能被初使化;但是注意:绝对变量不能被初使化;bit型函数及变量不能用型函数及变量不能用_at_指定。指定。例如:例如:idata val3 _at_ 0 x40;/*指定指定val3结构从结构从40H开始。开始。*/3连接定位控制连接定位控制此此法法是是利利用用连连接接控控制制指指令令code、xdata、pdata、data、bdata对对“段段”地址进行。地址进行。第第5章章 单片机的单片机的C语言编程语言编程5.2 运算符和表达式运算符和表达式5.2.1 关系运算符与关系表达式关系运算符与关系表达式l 关系运算符关系运算符C51中有中有六种关系六种关系运算符运算符:大于大于 小于小于 大于等于大于等于 小于等于小于等于 等于等于!不等于不等于第第5章章 单片机的单片机的C语言编程语言编程运运算算符符是是有有优优先先级级别别的的,前前四四个个具具有有相相同同的的优优先先级级且且要要高高于于后后2 个个的的,后后两两个个也也具具有有相相同同的的优优先先级级。用用关关系系运运算算符符将将两两个个表表达达式式连连接接起起来来的的式式子子,称称为为关关系系表表达达式式。关关系系运运算算符的运算结果只有符的运算结果只有0 和和1 两种,即逻辑的两种,即逻辑的真与假真与假。表达式表达式1 关系运算符关系运算符 表达式表达式2例例:ab,a+bb+c,(a=3)=(b=5)等等都都是是合合法法的的关系表达式。关系表达式。关关系系表表达达式式的的值值只只有有两两种种可可能能,即即“真真”和和“假假”。结结果果是是“真真”,用用数数值值“1”表表示示,是是“假假”则则用用数数值值“0”表表示。示。第第5章章 单片机的单片机的C语言编程语言编程5.3.2 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式逻逻辑辑运运算算符符则则是是用用于于求求条条件件表表达达式式的的逻逻辑辑值值,用用逻逻辑辑运运算符将关系表达式或逻辑量连接起来就是逻辑表达式了。算符将关系表达式或逻辑量连接起来就是逻辑表达式了。C 语言提供了语言提供了三种三种逻辑运算符:逻辑运算符:“&”(逻辑与):(逻辑与):条件式条件式1&条件式条件式2“|”(逻辑或):(逻辑或):条件式条件式1|条件式条件式2“!”(逻辑非)(逻辑非):!条件式条件式2同同样样逻逻辑辑运运算算符符也也有有优优先先级级别别,!(逻逻辑辑非非)&(逻逻辑与)辑与)|(逻辑或)(逻辑或),逻辑非的优先值最高。逻辑非的优先值最高。第第5章章 单片机的单片机的C语言编程语言编程5.2.3 算术运算符与算术表达式算术运算符与算术表达式算术运算符算术运算符只只有有取取正正值值和和取取负负值值运运算算符符是是单单目目运运算算符符,其其它它则则都都是是双目运算符双目运算符:+加或取正值运算符加或取正值运算符-减或取负值运算符减或取负值运算符*乘运算符乘运算符/除运算符除运算符%取余运算符取余运算符第第5章章 单片机的单片机的C语言编程语言编程5.2.3 算术运算符与算术表达式算术运算符与算术表达式算术表达式算术表达式算术表达式的形式:算术表达式的形式:表达式表达式1 算术运算符算术运算符 表达式表达式2如:如:a+b*(10-a),(x+9)/(y-a)+增量运算符增量运算符-减量运算符减量运算符第第5章章 单片机的单片机的C语言编程语言编程位运算符和复合赋值运算符位运算符和复合赋值运算符1、位位运运算算符符的的作作用用是是按按位位对对变变量量进进行行运运算算,但但是是并并不不改改变参与运算的变量的值。变参与运算的变量的值。如如果果要要求求按按位位改改变变变变量量的的值值,则则利利用用相相应应的的赋赋值值运运算算。C51 中共有中共有6 种位运算符种位运算符。位运算一般的表达形式如下:位运算一般的表达形式如下:变量变量1 位运算符位运算符 变量变量2位位运运算算符符优优先先级级,从从高高到到低低依依次次是是:“”(按按位位取取反反)“”(右右移移)“&”(按按位位与与)“”(按按位位异异或或)“|”(按按位或位或)第第5章章 单片机的单片机的C语言编程语言编程位运算符和复合赋值运算符位运算符和复合赋值运算符例如例如用用P1 口口做做运运算算变变量量,P1.0-P1.7 对对应应P1变变量量的的最最低低位位到到最最高高位位,通通过过连连接接在在P1 口口上上的的LED 我我们们便便可可以以直直观观看看到到每每个个位运算后变量是否有改变或如何改变。位运算后变量是否有改变或如何改变。程序如链接:程序如链接:例例4。第第5章章 单片机的单片机的C语言编程语言编程2、复复合合赋赋值值运运算算符符就就是是在在赋赋值值运运算算符符“=”的的前前面面加加上上其他运算符。其他运算符。以下是以下是C 语言中的复合赋值运算符:语言中的复合赋值运算符:+=加法赋值加法赋值-=减法赋值减法赋值*=乘法赋值乘法赋值/=除法赋值除法赋值%=取模赋值取模赋值 第第5章章 单片机的单片机的C语言编程语言编程2、复复合合赋赋值值运运算算符符就就是是在在赋赋值值运运算算符符“=”的的前前面面加加上上其他运算符。其他运算符。以下是以下是C 语言中的复合赋值运算符:语言中的复合赋值运算符:=右移位赋值右移位赋值&=逻辑与赋值逻辑与赋值|=逻辑或赋值逻辑或赋值=逻辑异或赋值逻辑异或赋值=逻辑非赋值逻辑非赋值=左移位赋值左移位赋值第第5章章 单片机的单片机的C语言编程语言编程条件运算符和指针运算符条件运算符和指针运算符C 语语言言中中有有一一个个三三目目运运算算符符:既既“?:”条条件件运运算算符符,它它要求有三个运算对象。要求有三个运算对象。它可以把三个表达式连接构成一个条件表达式。它可以把三个表达式连接构成一个条件表达式。条件表达式的一般形式如下条件表达式的一般形式如下:逻辑表达式逻辑表达式?表达式表达式1:表达式表达式2第第5章章 单片机的单片机的C语言编程语言编程条件运算符和指针运算符条件运算符和指针运算符条件运算符条件运算符是根据逻辑表达式的值选择使用表达式的值。是根据逻辑表达式的值选择使用表达式的值。逻逻辑辑表表达达式式的的值值为为真真(非非0值值):“整整个个表表达达式式的的值值为为表表达式达式1 的值;的值;逻逻辑辑表表达达式式的的值值为为假假(值值为为0):整整个个表表达达式式的的值值为为表表达达式式2 的值。的值。如有如有a=1,b=2 这这时时我我们们要要求求是是取取a b 两两数数中中的的较较小小的的值值放放入入min 变变量量中中,用条件运算符去构成条件表达式就变得简单明了:用条件运算符去构成条件表达式就变得简单明了:min=(ab)?a:b第第5章章 单片机的单片机的C语言编程语言编程2、指指针针类类型型,是是一一种种存存放放指指向向另另一一个个数数据据的的地地址址的的变变量量类类型型。C 语语言言中中提提供供的的两两个个专专门门用用于于指指针针和和地地址址的的运运算算符符:*取内容、取内容、&取地址。取地址。取内容和地址的一般形式分别为:取内容和地址的一般形式分别为:变量变量=*指针变量,指针变量指针变量,指针变量=&目标变量目标变量l取取内内容容运运算算是是将将指指针针变变量量所所指指向向的的目目标标变变量量的的值值赋赋给给左左边的变量;边的变量;l取地址运算取地址运算是将目标变量的地址赋给左边的变量。是将目标变量的地址赋给左边的变量。要要注注意意的的是是:指指针针变变量量中中只只能能存存放放地地址址(也也就就是是指指针针型型数据)。数据)。第第5章章 单片机的单片机的C语言编程语言编程强制类型转换运算符强制类型转换运算符在在C51中中只只有有char,int,long 及及float 这这几几种种基基本本的的数数据据类型可以被类型可以被隐式转换隐式转换。而其它的数据类型就只能用到显示转换。而其它的数据类型就只能用到显示转换。要使用强制转换运算符应遵循以下的表达形式:要使用强制转换运算符应遵循以下的表达形式:(类型类型)表达式表达式用用显显示示类类型型转转换换来来处处理理不不同同类类型型的的数数据据间间运运算算和和赋赋值值是是十分方便的,特别对指针变量赋值是很有用的。十分方便的,特别对指针变量赋值是很有用的。看下面一段小程序:看下面一段小程序:例例6如链接如链接。第第5章章 单片机的单片机的C语言编程语言编程表达式语句表达式语句而而在在MCS51 单单片片机机的的C 语语言言中中则则是是加加入入分分号号“;”构构成成表达式语句。表达式语句。举例如下:举例如下:b=b*10;Count+;X=A;Y=B;Page=(a+b)/a-1;第第5章章 单片机的单片机的C语言编程语言编程表达式语句表达式语句在在C 语语言言中中有有一一个个特特殊殊的的表表达达式式语语句句,称称为为空空语语句句,由由一个分号一个分号“;”组成。组成。通通常常会会有有以以下下两两种种用用法法:While或或for 构构成成的的循循环环语语句句后后面加一个分号,形成一个不执行其它操作的空循环体。面加一个分号,形成一个不执行其它操作的空循环体。如如 for(;a50000;a+);第第一一个个分分号号也也应应该该算算是是空空语语句句,它它会会使使a 赋赋值值为为0(如如程程序序前前有有a 值值,则则a 的的初初值值为为a 的的当当前前值值),最最后后一一个个分分号号则则使使整整个语句行成一个空循环。个语句行成一个空循环。若此时若此时a=0,那么,那么for(;a50000;a+);就相当于就相当于for(a=0;a0)*y=x;if(x0)*y=x+10;if(x=0)*y=0 x30;第第5章章 单片机的单片机的C语言编程语言编程5.3.2 if 语句语句条条件件语语句句又又被被称称为为分分支支语语句句(判判断断语语句句),其其关关键键字字是是由由if 构构成成,if 语语句句是是用用来来判判定定所所给给定定的的条条件件是是否否满满足足根根据据判判定的结果(真或假)决定执行给出的两种操作之一。定的结果(真或假)决定执行给出的两种操作之一。C51 语言提供了三种形式的语言提供了三种形式的if 语句语句1、if(条件表达式)(条件表达式)语句语句:若表达式的结果为真,则执行语句,否则跳过。若表达式的结果为真,则执行语句,否则跳过。如如 if(a=b)a+;当当a 等等于于b 时时,a 就就加加1,原原则则不不执执行行a+语句。语句。第第5章章 单片机的单片机的C语言编程语言编程5.3.2 if 语句语句条条件件语语句句又又被被称称为为分分支支语语句句(判判断断语语句句),其其关关键键字字是是由由if 构构成成,if 语语句句是是用用来来判判定定所所给给定定的的条条件件是是否否满满足足根根据据判判定的结果(真或假)决定执行给出的两种操作之一。定的结果(真或假)决定执行给出的两种操作之一。C51 语言提供了三种形式的语言提供了三种形式的if 语句语句2、if(条件表达式)(条件表达式)语句语句1 else 语句语句2:若若表表达达式式的的结结果果为为真真,则则执执行行语语句句1,否否则则执执行行语语句句2,如如 if(a=b)a+;elsea-;当当a 等于等于b 时,时,a 加加1,否则,否则a-1。第第5章章 单片机的单片机的C语言编程语言编程5.3.2 if 语句语句C51 语言提供了三种形式的语言提供了三种形式的if 语句:语句:3、if(条件表达式(条件表达式1)语句语句 1else if(表达式(表达式2)语句语句2else if(表达式(表达式3)语句语句3else if(表达式(表达式m)语句语句 melse 语句语句n上述程序中的如下语句:上述程序中的如下语句:if(KeyV|0 xc3)=0 xff)/无键按下无键按下return(0);其它有键按下时,执行后面语句。其它有键按下时,执行后面语句。第第5章章 单片机的单片机的C语言编程语言编程sbit D7=a7;条件运算符和指针运算符(2)sbit 位变量名=特殊功能寄存器名 位位置char inputstring 5;/定义字符形数组,有5 个数据单元当K3 被按下(接地)时,返回值是0 xef(11101111B)当要求没有符合的条件时不做任何处理,则可以不写default 语句。关键字是interrupt,是函数定义时的一个必选项,只要在某个函数定义后面加上这个选项,这个函数就变成了中断服务函数。例如:片内RAM的30H单元存放一个有符号数x,编制程序(设y存放于31H单元)for(i=0;TempCycAb,a+bb+c,(a=3)=(b=5)等都是合法的关系表达式。在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。条件运算符是根据逻辑表达式的值选择使用表达式的值。/*指定val3结构从40H开始。如如果果没没有有键键被被按按下下,则则直直接接返返回回,并并且且Kvalue 的的值值将将变变为为0。如果有键被按下,那么如果有键被按下,那么return(0)将不会被执行。将不会被执行。程序中:程序中:if(Start)灯流动显示的代码灯流动显示的代码 else P1=0 xff;/否则灯全灭否则灯全灭第第5章章 单片机的单片机的C语言编程语言编程下下面面我我们们举举一一例例说说明明。在在上上述述的的键键盘盘处处理理函函数数Key 中中,如如果果没没键键被被按按下下,返返回回值值是是0,如如果果有有键键被被按按下下,经经过过去去键键抖抖的的处处理理,将返回键值,程序中的将返回键值,程序中的“return(KeyV);”即返回键值。即返回键值。当当K1 被按下(被按下(P2.2 接地)时,返回值是接地)时,返回值是0 xfb(11111011B)当当K2 被按下(被按下(P2.3 接地)时,返回值是接地)时,返回值是0 xf7(11110111B)当当K3 被按下(接地)时,返回值是被按下(接地)时,返回值是0 xef(11101111B)当当K4 被按下(被按下(P2.5 接地)时,返回值是接地)时,返回值是0 xdf(11011111B)该值将被赋给主程序中调用键盘程序的变量该值将被赋给主程序中调用键盘程序的变量KValue。程程序序用用了了另另一一种种选选择择结结构构switch 进进行行处处理理,关关于于switch 将将在在稍后介绍。稍后介绍。第第5章章 单片机的单片机的C语言编程语言编程下面用下面用if 语句来改写:语句来改写:if(KValue=0 xfb)Start=1;else if(KValue=0 xf7)Start=0;else if(KValue=0 xef)UpDown=1;else if(KValue=0 xdf)UpDown=0;else/意外处理意外处理如果所有的条件都不满足,那么就去执行如果所有的条件都不满足,那么就去执行else 后面的语句。后面的语句。第第5章章 单片机的单片机的C语言编程语言编程5.3.3 if 语句的嵌套语句的嵌套在在 if 语语句句中中又又包包含含一一个个或或多多个个语语句句称称为为if 语语句句的的嵌嵌套套。一般形式如下一般形式如下if()if()语句语句1else 语句语句2elseif()语句语句3else 语句语句4应应当当注注意意if 与与else 的的配配对对关关系系,else 总总是是与与它它上上面面的的最最近近的的if 配对。配对。第第5章章 单片机的单片机的C语言编程语言编程5.3.4 swich 语句语句当当分分支支较较多多时时,则则嵌嵌套套的的if 语语层层数数多多,程程序序冗冗长长而而且且可可读读性降低。用性降低。用switch 语句可直接处理多分支选择。形式如下:语句可直接处理多分支选择。形式如下:switch(表达式表达式)case 常量表达式常量表达式1:语句语句1;break;case 常量表达式常量表达式2:语句语句2;break;case 常量表达式常量表达式3:语句语句3;break;case 常量表达式常量表达式n:语句语句n;break;default:语句语句第第5章章 单片机的单片机的C语言编程语言编程运运行行中中switch 后后面面的的表表达达式式的的值值将将会会做做为为条条件件,与与case 后面的各个后面的各个常量表达式的值常量表达式的值相对比,相对比,如如果果相相等等时时则则执执行行case 后后面面的的语语句句,再再执执行行break(间间断语句)语句,跳出断语句)语句,跳出switch语句。语句。如如果果case 后后没没有有和和条条件件相相等等的的值值时时就就执执行行default 后后的的语句。语句。当当要要求求没没有有符符合合的的条条件件时时不不做做任任何何处处理理,则则可可以以不不写写default 语句。语句。第第5章章 单片机的单片机的C语言编程语言编程如上述例子中可以这么写:如上述例子中可以这么写:switch(KValue)cas- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 单片机 语言 编程
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文