《C51程序设计入门.ppt》由会员分享,可在线阅读,更多相关《C51程序设计入门.ppt(30页珍藏版)》请在优知文库上搜索。
1、第第9章章 C51程序程序设计设计入入门门主要内容主要内容C51的基本数据类型及存储类型的基本数据类型及存储类型C51中的函数中的函数C51程序设计方法程序设计方法9.1 C51程序的基本构成includelong fun1( );float fun2( );int x,y;float z;fun1( )函数体 main( )主函数体 fun2( )函数体预处理命令函数说明函数说明变量定义变量定义功能函数功能函数1主函数主函数功能函数功能函数29.2 C51的数据结构C51中的基本数据类型中的基本数据类型1. 字符型char 字符型变量分为字符型变量分为有符号有符号和和无符号无符号两种,它们的
2、长度为两种,它们的长度为8 8位,占用位,占用1 1个字节。个字节。n有符号型用有符号型用charchar(或(或signed charsigned char)表示。)表示。n无符号型用无符号型用unsigned charunsigned char表示。表示。2. 整型int 整型变量也分为整型变量也分为有符号有符号和和无符号无符号两种,它们的长度两种,它们的长度1616位,位,占用占用2 2个字节。个字节。n有符号整型用有符号整型用singed intsinged int表示。表示。n无符号整型用无符号整型用unsigned intunsigned int表示表示。C51中的基本数据类型中的
3、基本数据类型4. 浮点型float nfloatfloat型数据变量为型数据变量为3232位,占位,占4 4个字节。格式符合个字节。格式符合IEEE-754IEEE-754标标准的准的单精度浮点型单精度浮点型数据,精度为数据,精度为2424位,尾数的高位始终为位,尾数的高位始终为“1 1”,因而不保存。最高位为符号位,因而不保存。最高位为符号位,“1 1”表示负数,表示负数,“0 0”表示正数,其次的表示正数,其次的8 8位为阶码,最后的位为阶码,最后的2323位为尾数。位为尾数。9.2 C51的数据结构C51中的基本数据类型中的基本数据类型5. 指针型指针型* 指针型指针型*本身就是一个变量
4、,在这个变量中存放着指向另本身就是一个变量,在这个变量中存放着指向另一个数据的地址。在一个数据的地址。在C51中它的长度一般为中它的长度一般为13个字节。个字节。6. 特殊功能寄存器特殊功能寄存器sfr AT89S51系列单片机内部定义了系列单片机内部定义了26个特殊功能寄存器个特殊功能寄存器(SFR),它们不连续地分布在片内),它们不连续地分布在片内RAM的高的高128字节字节中,地址为中,地址为80HFFH。 sfr P0=0 x80;/定义P0口地址为0 x809.2 C51的数据结构C51中的基本数据类型中的基本数据类型7. 16位特殊功能寄存器位特殊功能寄存器sfr16 sfr16和
5、和sfr一样用于定义特殊功能寄存器,所不同的是一样用于定义特殊功能寄存器,所不同的是它用于定义占它用于定义占2字节的寄存器。字节的寄存器。8. 位类型位类型bit9. 可寻址位可寻址位sbitsfr16 DPTR=0 x82;sbit P1_1=P11;/定义P1_1为P1中的P1.1引脚9.2 C51的数据结构数数 据据 类类 型型长长 度度值值 域域unsigned char单字节0255signed char单字节128+127unsigned int双字节065 535signed int双字节32 768+32 767unsigned long四字节04 294 967 295sig
6、ned long四字节2 147 483 648+2 147 483 647float四字节1.175494E-383.402823E+38*13字节对象的地址bit位0或1sfr单字节0255sfr16双字节065 535sbit位0或19.2 C51的数据结构9.2.3 C51的变量与存储类型的变量与存储类型C51的变量定义的变量定义 存储类型存储类型 类型说明符类型说明符 存储器类型存储器类型 变量名变量名 类型说明符类型说明符用于在定义变量时指明变量的数据类型。用于在定义变量时指明变量的数据类型。 变量名变量名可以由字母、数字和下划线三种字符组成,且第可以由字母、数字和下划线三种字符组
7、成,且第一个字母必须为字母或下划线。一个字母必须为字母或下划线。 存储类型存储类型是用于指定变量在程序执行过程中的有效作用范围。是用于指定变量在程序执行过程中的有效作用范围。 存储器类型存储器类型是用于定义是用于定义C51C51程序中数据存储的位置。程序中数据存储的位置。 存储类型 (1)auto:使用使用auto定义的变量称为自动变量,其定义的变量称为自动变量,其作用范围在定义它的函数体或复合语句内部,作用范围在定义它的函数体或复合语句内部, (2)extern:使用使用extern定义的变量称为外部变量。定义的变量称为外部变量。在一个函数体内,要使用一个已在该函数体外或别在一个函数体内,要
8、使用一个已在该函数体外或别的程序中定义过的外部变量时用。的程序中定义过的外部变量时用。(3)static:使用使用static定义的变量称为静态变量。定义的变量称为静态变量。它分为内部静态变量和外部静态变量。它分为内部静态变量和外部静态变量。(4)register:使用使用register定义的变量称为寄存器定义的变量称为寄存器变量。它定义的变量存放在变量。它定义的变量存放在CPU内部的寄存器中,内部的寄存器中,处理速度快,但数目少。处理速度快,但数目少。 存储器类型存储器类型存储器类型描描 述述data直接寻址的片内RAM低128B,访问速度快bdata片内RAM的可位寻址区(20H2FH)
9、,允许字节和位混合访问idata间接寻址访问的片内RAM,允许访问全部片内RAMpdata用Ri间接访问的片外RAM的低256Bxdata用DPTR间接访问的片外RAM,允许访问全部64k片外RAMcode程序存储器ROM64k空间 存储器模式 存储器模式存储器模式描描 述述SMALL变量放入直接寻址的片内数据存储器(默认存储器类型为DATA)COMPACT变量放入分页寻址的片外数据存储器(默认存储器类型为PDATA)LARGE变量放入片外数据存储器(默认存储器类型为XDATA)9.3 C51的运算符9.3 C51的运算符1. 赋值运算符赋值运算符2. 算术运算符及表达式算术运算符及表达式a=
10、0 x86;/将常数将常数0 x86赋值给变量赋值给变量a+加法或正值符号加法或正值符号减法或负值符号减法或负值符号*乘法乘法/除法除法%模(求余)模(求余)3. 关系运算符及表达式关系运算符及表达式9.3 C51的运算符 小于小于 大于大于 =小于等于小于等于 =大于等于大于等于=等于等于 =不等于不等于4. 逻辑运算符及表达式逻辑运算符及表达式&逻辑逻辑“与与”|逻辑逻辑“或或”!逻辑逻辑“非非”9.3 C51的运算符5. 位运算符及表达式位运算符及表达式&按位与按位与|按位或按位或按位异或按位异或按位取反按位取反位左移位左移位右移位右移6.自增减运算符及表达式自增减运算符及表达式 + +
11、自增自增自减自减9.4 C51的函数函数定义的一般形式:函数定义的一般形式:函数类型函数类型函数名(形式参数表)函数名(形式参数表)形式参数说明形式参数说明 局部变量定义局部变量定义函数体语句函数体语句 函数的说明与调用函数的说明与调用 对函数进行说明的一般形式为:对函数进行说明的一般形式为:类型标识符类型标识符被调用的函数名(形式参数表);被调用的函数名(形式参数表);调用的一般形式为:调用的一般形式为:函数名函数名(实际参数表)(实际参数表) C51中的特殊函数中的特殊函数 1. 再入函数再入函数格式:格式:函数类型函数类型 函数名(形式参数表)函数名(形式参数表)reentrant2.
12、中断服务函数中断服务函数格式:格式:函数类型函数类型 函数名(形式参数表)函数名(形式参数表)interrupt m using nC51的常用控制语句的常用控制语句 1. 选择语句选择语句if在这种结构中,如果括号中的表达式成立(为在这种结构中,如果括号中的表达式成立(为真),则程序执行花括号中的语句;否则程序将真),则程序执行花括号中的语句;否则程序将跳过花括号中的语句部分,执行下面的其他语句。跳过花括号中的语句部分,执行下面的其他语句。 if语句的基本结构是if(表达式)语句;三种形式的if语句2. 循环语句循环语句C51的常用控制语句的常用控制语句 (1)while语句语句while(
13、表达式)循环体例:while(P1&0 x10)=0)i+;2. 循环语句循环语句C51的常用控制语句的常用控制语句 (2)do while语句语句do循环体while(表达式)例:doi+; while(P10= =0);2. 循环语句循环语句C51的常用控制语句的常用控制语句 (3)for语句语句for(表达式1;表达式2;表达式3)循环体例:for(sum=0,i=0;i=100;i+)sum=sum+i;9.5 C51的编译预处理C51的的编译预处理命令类似于汇编语言中的伪指令编译预处理命令类似于汇编语言中的伪指令。编译器在对整个程序进行编译之前,先对程序的编编译器在对整个程序进行编译
14、之前,先对程序的编译控制行进行预处理,然后再将处理结果和源程序译控制行进行预处理,然后再将处理结果和源程序一起进行编译。一起进行编译。 常用的预处理命令有:常用的预处理命令有:宏定义、文件包含和条件编宏定义、文件包含和条件编译命令译命令。这些命令都是以。这些命令都是以“#”开头,以与源程序开头,以与源程序中的一般语句行和说明行相区别。中的一般语句行和说明行相区别。 9.5.1 宏定义宏定义1. 不带参数的宏定义不带参数的宏定义格式:格式:#define 宏符号名宏符号名常量表达式常量表达式2. 带参数的宏定义带参数的宏定义格式:格式:#define 宏符号名(参数表)宏符号名(参数表)表达式表达式9.5.2 文件包含文件包含格式为:格式为:#include“文件名”9.5.3 条件编译条件编译1. 格式一格式一#ifdef标识符标识符程序段程序段1#else程序段程序段2#endif2. 格式二格式二#ifndef 标识符标识符程序段程序段1#else程序段程序段2#endif3. 格式三格式三#if 表达式表达式1程序段程序段1#elif 表达式表达式2程序段程序段2#else程序段程序段n#endif本章本章结结束束