C51介绍 (2).ppt
《C51介绍 (2).ppt》由会员分享,可在线阅读,更多相关《C51介绍 (2).ppt(68页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、本章共六节,主要介绍:0.2 C51的数据类型与运算的数据类型与运算 0.1 单片机的单片机的C语言语言 0.3 C51流程控制语句流程控制语句 0.4 C51的指针类型的指针类型 0.5 C51的函数的函数 0.6 C51编程实例编程实例 0.1.1 0.1.1 C51程序开发概述程序开发概述 一、采用C51的优点 编译器能自动完成变量的存储单元的分配,编程者可编译器能自动完成变量的存储单元的分配,编程者可以专注于应用软件的设计,可以对常用的接口芯片编制通以专注于应用软件的设计,可以对常用的接口芯片编制通用的驱动函数,对常用的功能模块和算法编制相应的函数,用的驱动函数,对常用的功能模块和算法
2、编制相应的函数,可以方便地进行信号处理算法和程序的移植,从而加快单可以方便地进行信号处理算法和程序的移植,从而加快单片机应用系统的开发速度。片机应用系统的开发速度。当代码长度超过当代码长度超过4KB以上时,以上时,C51比汇编语言更具有比汇编语言更具有明显的优势。明显的优势。0.1 单片机的单片机的C语言语言 二、二、C51程序开发过程程序开发过程0.1.2 0.1.2 C51程序结构程序结构 预处理命令预处理命令全局变量说明;全局变量说明;函数函数1说明;说明;函数函数n说明;说明;main()()局部变量说明;局部变量说明;执行语句;执行语句;函数调用(实际参数表);函数调用(实际参数表)
3、;函数函数1(形式参数说明)(形式参数说明)局部变量说明;局部变量说明;执行语句;执行语句;函数调用(实际参数表);函数调用(实际参数表);函数函数n(形式参数说明)(形式参数说明)局部变量说明;局部变量说明;执行语句;执行语句;函数调用(实际参数表);函数调用(实际参数表);Keil Cx51 扩展关键字0.2 C51的数据类型与运算的数据类型与运算 0.2.1 0.2.1 C51的数据类型的数据类型 数据数据类类型型长长度度(位位)取取值值范范围围字符型字符型signed char8-128127unsigned char80255整整 型型signed int16-3276832767u
4、nsigned int16065535长长整型整型signed long32-2147488364821474883647unsigned long3204294967295浮点型浮点型float321.75494E-383.402823E+38位位 型型bit10,1sbit 10,1访问访问SFRsfr 80255sfr1616065535说明说明:Float:浮点型Sfr:可以定义8051单片机的所有内部8位特殊功能寄存器Sfr16:可以定义8051单片机内部16位特殊功能寄存器bit:可以定义位量sbit:可以定义8051内部RAM中的可寻址位或特殊功能寄存器中的可寻址位.常量与变量常
5、量与变量常量整型常量:1234,-5678,0 x1a,345L浮点型常量:2.3465,123e4字符型常量:a,b字符串型常量:“1a2b3c”常量定义#define const 60变量变量格式 存储种类 数据类型 存储器类型 变量名表AutoStaticExternRegisterDataBDataIDataPDataXDataCodeUnsigned CharSigned CharUnsigned IntSigned intUnsigned longSigned longFloatBitSfrSfr16sbit0.2.2 0.2.2 C51的数据的数据的存储器类型的存储器类型 应用程
6、序中使用的任何数据(变量和常量)必须以应用程序中使用的任何数据(变量和常量)必须以一定的存储器类型定位于单片机的相应的存储区域中。一定的存储器类型定位于单片机的相应的存储区域中。存存储储器器类类型型长长度(位)度(位)对应单对应单片机存片机存储储器器bdata1片内片内RAM(20H-2FH),位,位寻寻址区,共址区,共128位。(亦能字位。(亦能字节访问节访问)data8片内片内RAM(00H-7FH),直接,直接寻寻址,共址,共128字字节节。idata8片内片内RAM(00H-FFH),间间接接寻寻址,共址,共256字字节节。pdata8片外片外RAM,分,分页间页间址,共址,共256字
7、字节节。(。(MOVX Ri)xdata16片外片外RAM(0000-FFFFH),间间接接寻寻址,共址,共64k字字节节。(MOVX DPTR)code16ROM区域区域(0000-FFFFH),间间接接寻寻址,共址,共64k字字节节。(MOVC DPTR)访问片内访问片内RAM比访问片外比访问片外RAM的速度要的速度要快得多,所以对于经常使用的变量应该置于片快得多,所以对于经常使用的变量应该置于片内内RAM中,即用中,即用bdata、data、idata来定义;来定义;对于不经常使用的变量或规模较大的变量应该对于不经常使用的变量或规模较大的变量应该置于片外置于片外RAM中,即用中,即用pd
8、ata、xdata来定义。来定义。例如:例如:bit bdata flags;/*位变量位变量flags定位在片内定位在片内RAM的位寻址区的位寻址区*/char data var;/*字符变量字符变量var定位在片内定位在片内RAM区区*/float idata x,y,z;/*实型变量实型变量x,y,z定位在片内间址定位在片内间址RAM区区*/sfr P1=0 x90;/*定义定义P1口地址为口地址为90H*/如果用户不对变量的存储器类型进行定义,如果用户不对变量的存储器类型进行定义,C51编译器采编译器采用默认的存储器类型。默认的存储器类型由编译控制命令中用默认的存储器类型。默认的存储器
9、类型由编译控制命令中的存储模式指令限制。例如:的存储模式指令限制。例如:char var;/*在在SMALL模式时,模式时,var定位定位data存储区存储区*/*在在COMPACT模式时,模式时,var定位定位pdata存储区存储区*/*在在LARGE模式时,模式时,var定位定位xdata存储区存储区*/存存储储模式模式默默认认存存储类储类型型特特 点点SMALLdata 直接直接访问访问片内片内RAM;栈栈在片内在片内RAM中。中。COMPACTpdata用用R0和和R1间间址片外分址片外分页页RAM;栈栈在片内在片内RAM中。中。LARGExdata用用DPTR间间址片外址片外RAM,
10、代,代码长码长,效率低。,效率低。0.2.3 80C51硬件结构的硬件结构的C51定义定义 一、特殊功能寄存器的定义一、特殊功能寄存器的定义 80C51单片机内部有单片机内部有21个特殊功能寄存器,为了对它们能个特殊功能寄存器,为了对它们能够进行直接访问,够进行直接访问,C51编译器利用扩充的关键字编译器利用扩充的关键字sfr和和sfr16对这对这些特殊功能寄存器进行定义。些特殊功能寄存器进行定义。sfr的定义方法为:的定义方法为:sfr 特殊功能寄存器名特殊功能寄存器名=地址常数;地址常数;例如:例如:sfr SCON=0 x90;/*定义串行口控制寄存器,地址为定义串行口控制寄存器,地址为
11、0 x90*/sfr P0=0 x80;/*定义定义P0口,地址为口,地址为0 x80*/sfr16 T2=0 xCC;/*定义定义80C52的的T2L地址为地址为0 xCC,T2H地址为地址为0 xCD*/二、特殊功能寄存器中特定位的定义二、特殊功能寄存器中特定位的定义在在C51中利用关键字中利用关键字sbit定义可独立寻址访问的位变定义可独立寻址访问的位变量,如定义量,如定义80C51单片机单片机SFR中的一些特定位。定义中的一些特定位。定义方法分别为:方法分别为:1、sbit 位变量名位变量名=特殊功能寄存器名特殊功能寄存器名位的位的位置(位置(0707)如:如:sfr PSW=0 xD
12、0;/*定义定义PSW寄存器地址为寄存器地址为0 xD0*/sbit OV=PSW2;/*定义定义OV位为位为PSW.2,地址为,地址为0 xD2*/sbit CY=PSW7;/*定义定义CY位为位为PSW.7,地址为,地址为0 xD7*/2、sbit 位变量名位变量名=字节地址字节地址位的位置(位的位置(07),如:),如:sbit OV=0 xD02;/*定义定义OV位地址为位地址为0 xD2*/sbit CY=0 xD07;/*定义定义CY位地址为位地址为0 xD7*/注:字节地址作为基地址,必须位于注:字节地址作为基地址,必须位于0 x800 xFF之之间。间。3、sbit 位变量名位
13、变量名=位地址,如:位地址,如:sbit OV=0 xD2;/*定义定义OV位地址为位地址为0 xD2*/sbit CY=0 xD7;/*定义定义CY位地址为位地址为0 xD7*/注:位地址必须位于注:位地址必须位于0 x800 xFF之间。之间。三、内部三、内部RAM中可位寻址对象的定义中可位寻址对象的定义 当位对象位于当位对象位于80C51单片机内部单片机内部RAM的的20H2FH单元时,可以利用单元时,可以利用C51编译器提供的编译器提供的bdata存储器类型进行访问,带有存储器类型进行访问,带有bdata类型的变量可以进类型的变量可以进行字或字节寻址,用行字或字节寻址,用sbit指定指
14、定bdata变量的相应位后变量的相应位后就可以进行位寻址。就可以进行位寻址。例如,先定义变量的数据类型和存储类型为:例如,先定义变量的数据类型和存储类型为:int bdata ibase;/*在位寻址区定义一个整形变量在位寻址区定义一个整形变量ibase */char bdata array4;/*在位寻址区定义一个字符数组在位寻址区定义一个字符数组array4 */然后,利用然后,利用sbit定义可独立寻址访问的对象定义可独立寻址访问的对象位:位:sbit mybit0=ibase0;/*mybit0定义为定义为ibase的第的第0位位 */sbit mybit15=ibase15;/*my
15、bit15定义为定义为ibase的第的第15位位 */sbit ary07=array07;/*ary07定义为定义为ary0的第的第7位位 */sbit ary37=array37;/*ary37定义为定义为ary3的第的第7位位 */访问示例:访问示例:ibase=-1;/*字寻址字寻址*/array2=a;/*字节寻址字节寻址*/ary07=0;/*位寻址位寻址*/用关键字用关键字bit定义普通位变量时定义普通位变量时C51编译器会自编译器会自行安排该位变量于可位寻址的行安排该位变量于可位寻址的bdata区。例如,区。例如,bit mybit。应注意的是,不能定义应注意的是,不能定义bi
16、t类型指针,也不能类型指针,也不能定义定义bit类型数组。类型数组。一、算术运算符和算术表达式一、算术运算符和算术表达式1、基本算术运算符、基本算术运算符+加法运算符;加法运算符;-减法(取负)运算符;减法(取负)运算符;*乘法运算符;乘法运算符;/除法运算符;除法运算符;%取余(模)运算符。取余(模)运算符。0.2.4 C51的运算符和表达式的运算符和表达式 在这些运算符中,加、减和乘法符合一般的算术在这些运算符中,加、减和乘法符合一般的算术运算规则。除法运算时,如果是两个整数相除,其结运算规则。除法运算时,如果是两个整数相除,其结果为整数,舍去小数部分;如果是两个浮点数相除,果为整数,舍去
17、小数部分;如果是两个浮点数相除,其结果为浮点数。而对于取余运算,则要求两个运算其结果为浮点数。而对于取余运算,则要求两个运算对象均为整型数据。对象均为整型数据。求一个算术运算表达式的值时,要依运算符的优求一个算术运算表达式的值时,要依运算符的优先级进行。算术运算符中取负运算优先级最高,其次先级进行。算术运算符中取负运算优先级最高,其次为乘法、除法和取余,加法和减法优先级最低。也可为乘法、除法和取余,加法和减法优先级最低。也可以根据需要,在算术表达式中采用括号来改变运算符以根据需要,在算术表达式中采用括号来改变运算符的优先级。的优先级。2、自增、自减运算符、自增、自减运算符+自增运算符;自增运算
18、符;-自减运算符。自减运算符。+和和-运算符只能用于变量,不能用于常运算符只能用于变量,不能用于常量和表达式。如,量和表达式。如,+j表示先加表示先加1,再取值;,再取值;j+表示先取值,再加表示先取值,再加1。自减运算类同。自减运算类同。3、类型转换、类型转换运算符两侧的数据类型不同时,要转换成同种运算符两侧的数据类型不同时,要转换成同种类型。转换方式有两种情况:类型。转换方式有两种情况:一是自动转换,是指编译器在编译时自一是自动转换,是指编译器在编译时自动进行的类型转换。顺序为:动进行的类型转换。顺序为:bitcharintlongfloat,signedunsigned。二是强制类型转换
19、,如:(二是强制类型转换,如:(double)a,将将a 强制转换为强制转换为double类型。类型。二、关系运算符和关系表达式二、关系运算符和关系表达式1、关系运算符、关系运算符 小于;小于;大于;大于;=大于等于;大于等于;=等于;等于;!=不等于。不等于。关系运算即比较运算。其优先级低于关系运算即比较运算。其优先级低于算术运算,高于赋值运算。在以上算术运算,高于赋值运算。在以上6种关系种关系运算中,前运算中,前4种优先级相同,处于高优先级;种优先级相同,处于高优先级;后后2种优先级相同,处于低优先级。种优先级相同,处于低优先级。2、关系表达式、关系表达式关系表达式的值为逻辑值:真和假。关
20、系表达式的值为逻辑值:真和假。C51中中用用0表示假,用表示假,用1表示真。表示真。三、逻辑运算符和逻辑表达式三、逻辑运算符和逻辑表达式1、逻辑运算符、逻辑运算符&逻辑与;逻辑与;|逻辑或;逻辑或;!逻辑非。逻辑非。在三种逻辑运算中,逻辑非的优先级最高,且在三种逻辑运算中,逻辑非的优先级最高,且高于算术运算符;逻辑或的优先级最低,低于关系高于算术运算符;逻辑或的优先级最低,低于关系运算符,但高于赋值运算符。运算符,但高于赋值运算符。2、逻辑表达式、逻辑表达式逻辑表达式的值也为逻辑值:真和假。逻辑表达式的值也为逻辑值:真和假。四、位运算符四、位运算符C51提供提供6种位运算符:种位运算符:&位与
21、;位与;|位或;位或;位异或;位异或;位取反;位取反;右移。右移。位运算的优先级顺序为:位取反、左移和右位运算的优先级顺序为:位取反、左移和右移、位与、位异或、位或。移、位与、位异或、位或。五、赋值和复合赋值运算符五、赋值和复合赋值运算符 符号符号“=”称为赋值运算符,其作用是将一个称为赋值运算符,其作用是将一个数据的值赋给一个变量。赋值表达式的值就是被赋数据的值赋给一个变量。赋值表达式的值就是被赋值变量的值。值变量的值。在赋值运算符的前面加上其它运算符可以构成在赋值运算符的前面加上其它运算符可以构成复合赋值运算符。在复合赋值运算符。在C51中共有中共有10种复合运算符:种复合运算符:+=加法
22、赋值;加法赋值;-=减法赋值;减法赋值;*=乘法赋值;乘法赋值;/=除法赋值;除法赋值;%=取模赋值;取模赋值;=右移位赋值;右移位赋值;&=逻辑与赋值;逻辑与赋值;|=逻辑或赋值;逻辑或赋值;=逻辑异或赋值;逻辑异或赋值;=逻辑非赋值。逻辑非赋值。六、六、逗号运算符逗号运算符一、条件语句一、条件语句条件语句由关键字条件语句由关键字if构成。有构成。有3种条件语句:种条件语句:1、if(条件表达式)语句(条件表达式)语句若条件表达式的结果为真(非若条件表达式的结果为真(非0值),则执行后面的值),则执行后面的语句;反之若条件表达式的结果为假(语句;反之若条件表达式的结果为假(0值),则不值),
23、则不执行后面的语句。执行后面的语句。例如:例如:if(p1!=0)c=20;0.3 C51流程控制语句流程控制语句 0.3.1 0.3.1 C51选择语句选择语句 2、if(条件表达式)语句(条件表达式)语句1 else 语句语句2若条件表达式的结果为真(非若条件表达式的结果为真(非0值),则执行值),则执行语句语句1;反之若条件表达式的结果为假(;反之若条件表达式的结果为假(0值),值),则执行语句则执行语句2。例如:例如:if(p1!=0)c=20;else c=0;3、if(条件表达式(条件表达式1)语句)语句1 else if(条件表达式(条件表达式2)语句)语句2else if(条件
24、表达式(条件表达式3)语句)语句3 else if(条件表达式(条件表达式n)语句)语句nelse 语句语句n+1 此种形式的条件语句常用于实现多方此种形式的条件语句常用于实现多方向条件分支。向条件分支。例如:例如:if(a=1)c=10;else if a=2)c=20;else if a=3)c=30;else if a=4)c=40;else c=0;二、开关语句二、开关语句开关语句主要用于多分支的场合。一般形式为:开关语句主要用于多分支的场合。一般形式为:switch(表达式)(表达式)case 常量表达式常量表达式1:语句:语句1;break;case 常量表达式常量表达式2:语句:
25、语句2;break;case 常量表达式常量表达式n:语句:语句n;break;default:语句:语句n+1;开关语句执行时,将开关语句执行时,将switch后面表达式的值与后面表达式的值与case后面各后面各个常量表达式的值逐个进行比较,若匹配则执行相应个常量表达式的值逐个进行比较,若匹配则执行相应case后后面的语句,然后执行面的语句,然后执行break语句。语句。break语句的功能是中止当语句的功能是中止当前语句的执行,使程序跳出前语句的执行,使程序跳出switch语句。若没有匹配的情况,语句。若没有匹配的情况,则执行语句则执行语句n+1。一、一、while语句语句一般形式为:一般
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51介绍 2 C51 介绍
限制150内