单片机C51语言基础.ppt_第1页
单片机C51语言基础.ppt_第2页
单片机C51语言基础.ppt_第3页
单片机C51语言基础.ppt_第4页
单片机C51语言基础.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

21天学51单片机开发,第四讲:单片机C51语言基础,课程安排,单片机C51语言概述标识符和关键字数据类型分隔符const修饰符变量作用域运算符表达式,单片机C51语言概述,单片机C51语言是由C语言继承而来的。和C语言不同的是,C51语言运行于单片机平台,而C语言则运行于普通的桌面平台。C51语言具有C语言结构清晰的优点,便于学习,同时具有汇编语言的硬件操作能力。对于具有C语言编程基础的读者,能够轻松地掌握单片机C51语言的程序设计。,单片机C51语言的主要特点,单片机C51语言兼备高级语言与低级语言的优点。语法结构和标准C语言基本一致,语言简洁,便于学习。运行于单片机平台,支持的微处理器种类繁多,可移植性好。对于兼容的8051系列单片机,只要将一个硬件型号下的程序稍加修改,甚至不加改变,就可移植到另一个不同型号的单片机中运行。具有高级语言的特点,尽量减少底层硬件寄存器的操作。单片机C51语言提供了完备的数据类型、运算符及函数供使用。C51语言是一种结构化程序设计语言,可以使用一对花括号“”将一系列语句组合成一个复合语句,程序结构清晰明了。C51语言代码执行的效率方面十分接近汇编语言,且比汇编语言的程序易于理解,便于代码共享。,“Helloworld”程序,1#include/头文件2#include3voidmain(void)/主函数45while(1)/主循环67printf(Helloworld!rn);/字符串输出89,良好的编程规范,完备和详尽的程序注释用“/”符号开头来注释一行,如“/变量声明”。用“/*”符号开头,并以“*/”符号结束。采用这种方法,可以对C51源程序中的任何部分进行注释,如“/*声明整型变量count*/”。整齐的代码书写格式if、do、while等块结构语句中的“”和“”要配对对齐,这样便于理解该结构的起始点和结束点。为了程序理解的方便,最好将每个语句单独写在一行,并加以注释。如果相连的语句具有相近的功能,则可以放置在一行。代码书写时,可以通过适当的空格以及Tab键来实现代码对齐,这样代码整齐美观,便于阅读。对于源程序文件不同结构部分之间要留有空行来区分。例如,头文件声明、自定义函数声明、main()函数以及自定义函数之间均要空一行。简洁清晰的命名,标识符和关键字,标识符是用来表示源程序中自定义对象名称的符号。其中的自定义对象可以是常量、变量、数组、结构、语句标号以及函数等。在C51语言中,标识符可以由字母(az,AZ)、数字(09)和下划线“_”组成,最多可支持32个字符。C51标识符的定义不是随意的,需要符合一定的规则。标识符的第一个字符必须是字母或者下划线,不能为数字。C51的标识符区分大小写,例如“ch1”和“Ch1”表示两个不同的标识符。用户自定义的标识符不能与系统保留的关键字重复。,关键字,关键字是C51编译器保留的一些特殊标识符,具有特定的含义和用法。单片机C51程序语言继承了ANSIC标准定义的32个关键字,同时又结合单片机硬件的特点扩展了一些关键字。详细的C51关键字可以参阅书中列表。,数据类型,在C51语言中,每个变量或者常量在使用前都必须指明数据类型。,变量和常量,变量和常量都是用户自定义使用的数据,不同的是,变量在程序执行过程中可以更改数值,而常量则不可以。C51常量可以直接使用,但对于变量,则需要首先进行声明。变量声明后,C51编译器在单片机内存中单独划分一定的存储单元,用来存放该变量的值。,chara、n、3/字符型常量int45、123、-110/整型常量unsignedint10010、457、7/无符号整型常量longint35510、-78/长整型常量float115.23、3.14e-3/浮点型常量,常量,inti,j;/整型变量charch;/字符型变量shortintshi;/短整型变量unsignedintut;/无符号整型变量floatfset,st;/浮点型变量,变量,整型数据,整型常量也称为整型常数,可以在程序中直接使用。C51语言支持整型常量的十进制、八进制和十六进制表示。十进制整型常量,以非0开始的数字来表示,例如124、-34等。八进制整型常量,以0开始的数字来表示,例如07、012等。十六进制整型常量,以0 x或者0X开始的数字和字母(AF,af),例如0 x1A、0 xFF、0XC0等。在C51语言中,整型变量按修饰符的不同,可以分为如下几种:unsignedshortint:无符号短整型,简写为unsignedint,字长为2字节共16位二进制数,数据的范围是065535。signedshortint:有符号短整型,简写为short或int,字长为2字节共16位二进制数,数据的范围是-3276832767。unsignedlongint:无符号长整型,简写为unsignedlong,字长为4字节共32位二进制数,数据的范围是04294967295。signedlongint:有符号长整型,简写为long,字长为4字节共32位二进制数,数据的范围是-21474836482147483647。,字符型数据,字符型数据用于表示单个字符。在C51中进一步可以细分为字符型常量、转义字符和字符型变量。字符型常量是指用一对单引号括起来的单个字符。其中单引号只起定界作用,并不表示字符本身,例如A、5、!等。字符型常量可以在程序中直接使用。在单片机内部,字符是以ASCII码的形式保存的。因此,也可以使用ASCII码值来表示字符,例如0 x41表示字符A、0 x35表示字符5、0 x21表示字符!等。,转义字符,转义字符是一种比较特殊的字符,用于表示不可打印或者某些特殊的字符。转义字符用反斜杠“”后面跟一个字符或一个八进制或十六进制数表示。,使用转义字符时的注意事项,转义字符中只能使用小写字母来表示,例如“T”是错误的转义字符。在C51语言中,每个转义字符只能看作一个字符。不可打印字符必须用转义字符来表示,例如响铃、换行等。“v”垂直制表和“f”换页符在屏幕显示时没有任何影响,但是在打印机输出时,会影响到打印机的操作。使用转义字符“ddd”可以表示任意字符。其中,“ddd”为斜杠后面跟字符所对应的三位八进制ASCII码值。使用转义字符“xhh”可以表示任意字符。其中,“x”后面跟字符所对应的两位十六进制ASCII码值。,字符型变量,字符型变量是保存字符的变量类型。在C51语言中,可以定义两种类型的字符型变量:有符号字符变量(char):有符号字符型变量的取值范围为-128127。无符号字符变量(unsignedchar):无符号字符型变量的取值范围是0255。在单片机中,立即寻址方式的寻址空间是程序存储器,也就是说立即寻址方式所操作的立即数是存储在指令字节中的。在程序中,字符型变量通常和字符型常量一起使用。字符型常量和字符型变量也可以根据其ASCII码值来按照整型数据进行操作。,浮点型数据,浮点型数据是用于表示包含小数点的非整型数据类型。在C51中进一步可以细分为浮点型常量和浮点型变量。浮点型常量由整数部分、尾数部分和指数部分组成,其值表示为十进制形式。例如13.5、1.2e5、-4.5E-2等等。一般来说,所有的浮点型常量均默认为float型。在浮点型常量的指数部分,字母E或e之前必须有数字,表示形式为“数字e数字”。另外,浮点型常量中E或e后面指数必须为整数,例如“e2.1”、“e3”等都是不合法的指数形式。在C51语言中,如果浮点型常量的绝对值小于1,则其小数点前面的零可以省略。例如,0.15可以简写为.15,-0.026e-2可以简写为-.026e-2。,浮点型变量,浮点型变量用于保存浮点型数据。C51语言中支持float、double和longdouble类型的变量。由于单片机的资源不同于PC机,因此,C51语言中不具体区分这三种类型。也就是说,这三种浮点类型有相同的精度和取值范围,都将按照float类型对待。浮点型变量字长为4个字节,共32位二进制数,浮点型变量的取值范围为3.4x10-383.4x10+38。,分隔符,分隔符用于区分或者定界C51程序中不同的数据对象。分隔符广泛应用于各种语句中,可以细分为单分隔符和组合分隔符。单分隔符是指除字母、数字、下画线以外的单个ASCII字符,如+、-、*、/、!、|、=、.、,、:、;、#等。典型的单分隔符的使用示例如下:用“;”进行隔离语句,例如inti,j,k;用“,”进行隔离,例如charch1,ch2;用“*”做指针,例如char*pter;用“#”做预处理伪指令,例如#definePI3.1415926;用“”标识特殊寄存器的位,例如sbitP10=P10。,组合分隔符,组合分隔符是由两个或者两个以上特定字符组合而使用,例如=、(、)等。典型的组合分隔符的使用示例如下:用“”对数组说明,例如charch=Thisisanewstring!;用“()”进行隔离,例如s=Fun(r);用“”进行隔离复合语句,例如fori=0;i”运算符:用于判断左边的操作数是否大于右边的操作数。“=”运算符:用于判断左边的操作数是否大于等于右边的操作数。“”运算符:用于对操作数进行右移运算。“(1+12)计算的结果是一样的。在关系或逻辑表达式中可以使用括号来修改原计算的优先级顺序。,运算符的优先级,运算符的结合性,运算符的结合性分为左结合性和右结合性两种。左结合性是指变量(或常量)与左边的运算符结合右结合性是指变量(或常量)与右边的运算符结合在C51语言中,一般来说,对于双目运算符均为左结合性,而对于单目运算符和双目运算符则均为右结合性。,表达式,表达式就是用于执行计算的式子。表达式一般采用运算符将各个变量或者常量连接起来,有的时候参与运算的还可以是函数的返回值。在C51语言中,按照其中运算符的不同可以分为如下几种:算术表达式赋值表达式逗号表达式关系和逻辑表达式,算术表达式,算术表达式是一类最常用的表达式类型,主要用于执行加(+)、减(-)、乘(*)、除(/)以及取模(%)运算。算术表达式中可以使用各种算术运算符以及括号,参与运算的可以为变量、常量、函数或者其他表达式。,01#include/头文件02voidmain()/主函数0304inti,j,x,y,z;/声明变量05i=23;06j=12;07x=i+j;/算术运算08y=i-j;/算术运算09z=(i+1)/j)%2;/复杂的算术运算10printf(x=%dny=%dnz=%dn,x,y,z);/输出结果11,赋值表达式,赋值表达式其实在前面的例子中都已经用到,其是由赋值运算符将一个变量和一个表达式连接起来的式子。这里的赋值运算符就是“=”,表达式可以是任意类型的表达式,再赋值的时候唯一需要注意的便是类型转换的问题。,01#include/头文件02voidmain()/主函数0304inti,j;/声明变量05floatf,k;06i=15;07j=2;/赋值08k=i*j;09printf(k=%fn,k);/在赋值的时候自动将整型变为浮点型10f=i/2;/i/2为整型,只保留了整数部分11printf(f=%fn,f);/输出结果12f=i/2.0;/此时,i/2.0=7.513printf(f=%fn,f);/输出结果14,逗号表达式,逗号表达式其实就是采用了“,”运算符的表达式,其中还采用了括号将整个表达式括起来。逗号表达式的一般形式为(表达式1,表达式2,表达式3,表达式n),01#include/头文件02voidmain()/主函数0304charch1,ch2;/声明变量05ch2=(ch1=A+1,ch1+1);/逗号表达式06printf(ch1=%cnch2=%cn,ch1,ch2);/输出结果07,关系和逻辑表达式,关系和逻辑表达式是采用关系运算符及逻辑运算符来构成的表达式。关系表达式和逻辑表达式通常在一起使用。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论