C51程序设计入门*C51的基本数据类型*C51数据的存储类型*C51的运算符*数组*C51的程序的结构*程序的流程控制C-51简介C语言特点:本身不依赖于机器硬件系统;基本上不作修改就可互相移植;提供数学函数、支持浮点运算;增加程序可读性和可维护性。MCS-51单片机的C语言要采用C51编译器,目前最常用的是KeilC51。C源程序C51编译器L51(或BL51)连接/定位生成.HEX目标程序流程((55)具有方便的模块化编程技术,)具有方便的模块化编程技术,使程序很容易移植。使程序很容易移植。C51优点((11)对指令系统不必深入了解,)对指令系统不必深入了解,但对存贮器空间结构需深入了解;但对存贮器空间结构需深入了解;((22)寄存器分配、不同存贮器的寻址等细节)寄存器分配、不同存贮器的寻址等细节可由编译器管理;可由编译器管理;((33)程序有规范的结构,可分解成各种子函数,)程序有规范的结构,可分解成各种子函数,有利于程序的结构化;有利于程序的结构化;((44)库文件中包含许多标准函数,)库文件中包含许多标准函数,具有较强的数据处理能力;具有较强的数据处理能力;类型符号关键字所占位数数的表示范围整型有(signed)int16-32768~32767有(signed)longint32-2147483648~2147483647无unsignedint160~65535有unsignedlongint320~4294967295实型有float323.4e-38~3.4e38无double641.7e-308~1.7e308字符型有char8-128~127无unsignedchar80~255位型无bit10或11C51的基本数据类型2C51数据的存储类型数组型指针型名存储空间位置位数范围说明data直接寻址片内RAM80~127片内RAM00-7FH的128个字节,访问速度最快bdata可位寻址片内RAM10/1位寻址片内RAM20~2FH,位与字节可混合访问idata间接寻址片内RAM80~25500-FFH的128个片内RAM,及52子系列的高128字节内部RAM。访问方式:MOVA,@Ripdata片外页RAM80~255寻址片外RAM低256字节,由MOVXA,@Ri访问xdata片外RAM160~65535片外RAM全部64KB,由MOVXA,@DPTR访问code程序ROM160~65535ROM区全部64KB,由MOVCA,@A+DPTR访问存储模式说明SMALL默认data,参数及局部变量放入可直接寻址片内RAM的用户区中(最大128字节)。另外所有对象(包括堆栈),都必须嵌入片内RAM。COMPACT默认pdata,参数及局部变量放入分页的外部数据存储区,通过@R0或@R1间接访问,栈空间位于片内数据存储区中。LARGE默认xdata,参数及局部变量直接放入片外数据存储区,使用数据指针DPTR来进行寻址。用此数据指针进行访问效率较低,尤其对两个或多个字节的变量,这种数据类型的访问机制直接影响代码的长度。建议首先选用SMALLC51数据的存储模式(编译模式)>><<(位右移位左移)&|(按位与按位或)^~(按位异或按位取反)+-*/(加减乘除)>>=<<=(大于大于等于小于小于等于)==!=(测试等于测试不等于)&&||!(逻辑与逻辑或逻辑非)3C51的运算符自增、自减运算符++自增运算符;--自减运算符。j++表示先取值,后加1。相当于j=j+1;J--表示先取值,后减1。相当于j=j-1;复合运算符a+=b;等价于a=a+bx*=a+b;等价于x=x*(a+b)a&=b;等价于a=a&b相当于第1个变量的值等于把等号去掉的运算。4数组一维数组的定义数据类型数组名[常量表达式];例:unsitnedinta[10];它表示定义一个无符号整形数组名为a,此数组有10个元素。说明:1)数组名后是用方括弧括起来的常量表达式,不能用圆括弧。下面用法不对:inta(10);2)常量表达式表示元素的个数,即数组长度。例,在a[10]中,10表示a数组有10个元素,下标从0开始,a[0],a[1],……a[9]。注意不能使用数组元素a[10];3)常量表达式中可以包括常量和符号常量,不能包含变量。也就是说,C51不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例:unsignedchari;unsignedchari=10;a[i];错误定义a[i];正确定义一维数组的初始化对数组元素的初始化可以用以下方法实现:1)在定义数组时对数组元素赋以初值。例:inta[10]={0,1,2,3,4,5,6,7,8,9};2)可以只给一部分元素赋值。例:inta[10]={0,1,2,3,4};定义a数组有10个元素,但花括弧内只提供5个初值,这表示只给前面5个元素赋初值,后...