欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第6章单片机C语言.ppt

    • 资源ID:5935980       资源大小:248.04KB        全文页数:40页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第6章单片机C语言.ppt

    第6章 单片机C语言程序设计基础,前面一章介绍了汇编语言的单片机程序。在单片机的开发与应用中,除了汇编语言,也可以采用其他高级语言,如C语言。单片机C语言既有汇编语言的操作底层硬件的能力,又具有高级语言的许多优点。因此,在现代的单片机程序设计中广泛采用单片机C语言。本章主要介绍了单片机C语言程序设计的基础知识,包括标识符、关键字、数据类型、表达式和运算符等。熟练掌握这些知识,将为下面学习C51的函数和语句打好基础。,6.1 单片机C语言概述,对比现有的程序设计语言,C语言以其功能强大、结构清晰等优点获得广泛应用。对于学过C语言的读者来说,再学其他语言就显得轻而易举了。而在单片机程序设计中,同样有应用于单片机的C语言,有时简称为C51语言。C51语言继承了C语言的结构上的优点,便于学习,又有汇编语言操作硬件的能力,因此被广泛使用于单片机程序设计中。,6.1.1 单片机C语言和汇编语言对比,汇编语言是一种面向机器的程序语言,其可以直接控制硬件,指令执行速度快,且指令的执行时间固定,因此汇编语言的执行效率很高。但其语言格式比较晦涩、可读性差、难于编写和调试,也不便于移植,影响了程序代码的共享。与汇编语言相比,单片机C语言在结构上更易理解、可读性强,且开发速度快、可靠性好、便于移植。因此,使用单片机C语言进行单片机系统的开发,可以缩短开发周期、降低开发成本。随着单片机硬件系统的发展和产品更新速度的提升,单片机的开发越来越着重于程序本身的开发效率,以便快速占领市场。因此,单片机C语言已成为目前最流行的单片机开发语言。,6.1.2 C51语言的主要特点,单片机的C51语言特点很多,总结起来主要的有以下几点:单片机C51语言兼备高级语言与低级语言的优点,语法结构和标准C语言基本一致。其规模适中,语言简洁,便于学习。同C语言一样,单片机C51语言提供了完备的数据类型、运算符以及函数供使用。C51语言借鉴了ALGOL的分程序结构,是一种结构化程序设计语言。其使用一对花括号“”将一系列语句组合成一个复合语句,程序结构简单明了。C51语言的可移植性好。对于兼容的8051系列单片机,只要将一个硬件型号下的程序稍加修改,甚至不加改变,就可移植到另一个不同的硬件型号开发环境中使用。C51语言生成的代码执行效率高,且比汇编语言的程序易于理解和共享使用。,6.2 单片机C语言在Keil Vison3中应用实例,单片机C语言(即C51语言)是运行在单片机上的程序语言,和C语言的语法结构是基本一致的。这里通过一个实例,来讲解如何在Keil Vison3集成开发环境下进行单片机C语言的程序设计。,6.2.1 创建项目,双击启动Keil Vison3集成开发环境,首先开始创建项目,操作步骤如下。,6.2.2 创建源文件,当一个单片机项目建立完毕后,现在开始进行核心的源文件的设计。具体的操作步骤如下。,6.2.3 编译项目,项目及源文件建立完毕后便可以编译项目了。选择“Project”“Build target”命令,即可编译,如果程序无误,则在输出窗口中显示编译结果,如图所示。,6.2.4 仿真调试,当一个单片机项目建立并编译通过后,在下载到单片机硬件中之前,为了确保程序的执行完全符合要求,一般需要进行仿真调试。Vison3的集成开发环境提供了完善的项目仿真和调试工具,下面就介绍如何使用Vison3来进行单片机C语言程序的仿真调试。项目仿真调试之前需要确保该项目完全通过编译。仿真调试的步骤如下:,6.3 C51的标识符与关键字,同标准的C语言一样,单片机的C51程序语言也包含特定的标识符和关键字。因此,在进行C51程序设计时必须符合其使用的规则。,6.3.1 标识符,标识符是用来标识源程序中某个对象名称的符号。其中的对象可以是常量、变量、语句标号、数据类型、自定义函数名以及数组名等。C51的标识符的定义不是随意的,需要符合以下定义规则。C51的标识符可以由字母、数字(09)和下划线“_”组成。C51的标识符区分大小写,例如“num5”和“NUM5”代表两个不同的标识符。C51的标识符第一个字符必须是小写字母(az)、大写字母(AZ)或者下划线“_”。例如“count1”、“C_1”等,都是正确的。而“5num”则是错误的标识符,在编译时系统会出现错误提示。另外,有些编译系统专用的标识符是以下划线开头,为了程序的兼容性和可移植性,所以建议一般不要以下划线开头来命名标识符。C51的标识符定义不能使用C51的关键字,也不能和用户已使用的函数名或C51库函数同名。例如“int”是不正确的标识符,“int”是关键字,所以它不能作为标识符。C51的标识符最多可支持32个字符,不过,为了使用和理解方便,尽量不要使用过长的标识符。,6.3.2 关键字,关键字是被C51编译器已定义保留的专用特殊标识符。关键字是C51语言的一部分,如if、for、do、case等。这些关键字有固定的名称和含义,用户在C51源程序中自定义的标识符不允许与关键字相同,否则程序将无法编译运行。单片机C51程序语言采用了ANSI C标准定义的32个关键字。(详细内容请参照本书),6.4 C51的数据类型,C51的数据类型是C51语言中变量以及常量的类型。每个变量在使用之前必须定义其数据类型。C51除了继承了标准C语言中基本的数据类型int、char、short、long、float和double等外,又有自己的特点。例如在C51语言中int和short、float和double具有相同的取值范围和含义。在C51中有以下几种基本数据类型:整型(int)、浮点型(float)、字符型(char)、无值型(void)。此外,C51语言还提供了几种聚合类型(aggregate types),包括数组、指针、结构、联合(共用体)、枚举和位域。关于几种聚合类型将在下一章中进行详细介绍。本章主要介绍几种基本类型。C51语言中基本数据类型的字长和取值范围,如表所示。,6.4.1 常量与变量,常量就是在程序执行过程中不改变值的数据量,变量就是在程序运行过程中可以改变值的数据量。常量和变量是计算机程序处理的数据对象。1常量常量在程序中是不接受程序修改的固定值,C51中的常量可为任意数据类型。2变量变量在程序中是可以被程序修改的数据量。一个完整的变量应该有类型说明符以及变量标识符。C51编译器在单片机内存中单独划分一定的存储单元,用来存放该变量的值。,6.4.2 整型数据,整型数据是整数类型的数据。整型数据是最常用的数据类型,下面就介绍整型数据的说明、整型变量的定义以及整型常量的表示。1整型数据说明2整型变量定义定义整型变量的一般格式是“类型说明符 变量标识符,变量标识符”。示例如下。inta,b;/定义a、b为有符号短整型变量unsigned longc,d;/定义c、d为无符号长整型变量3整型常量表示整型常量及整型常数可以表示十进制、八进制、十六进制的整数值。按不同的进制区分,整型常数有三种表示方法。,6.4.3 浮点型数据,浮点型数据是用于表示包含小数点的数据类型。下面分别介绍在C51语言中浮点型数据的说明、浮点型数据的定义以及浮点型常量的表示。1浮点型数据说明:C51中支持如下三种类型的浮点数,即float类型、double类型和long double类型。只不过,在C51语言中不具体区分这三种类型,都被当作float类型对待。因此,这三种浮点类型有相同的精度和取值范围。浮点类型的变量字长为4个字节共32位二进制数,取值范围为3.4x10-383.4x10+38。另外,在C51语言中,浮点型数据均为有符号浮点数,而没有无符号浮点数。2浮点型变量定义:浮点型变量的一般定义格式是“类型说明符 变量标识符,变量标识符”。同整型数据一样,浮点型变量也可以同时定义多个。3浮点型常量表示:浮点型常量通常称为实型常量,其值可以表示为十进制。浮点型常量的值由整数部分、尾数部分和指数部分组成。一般情况下,在不加说明的情况下,浮点型常量为正值。如果表示负值,需要在常量前使用负号。例如28.57、-57.63、-7.2e-16、8.265。,6.4.4 字符型数据,字符型变量是用来存放字符的变量类型。字符型变量只能存放一个字符。在信息的传递中,字符、文字等是经常用到的。下面介绍C51中的字符型数据的定义和使用等。1字符型变量定义:在C51语言中,可以定义两种类型的字符型变量:有符号字符变量和无符号字符变量。字符型变量的定义格式示例如下:char a:/定义a为有符号字符变量unsigned char b;/定义b为无符号字符变量2字符常量表示:字符常量是指用一对单引号括起来的一个字符。其中单引号只起定界作用,并不表示字符本身,例如F,7,!等。在C51语言中,字符常量单引号中的字符不能是单引号()和反斜杠()。如果需要使用这两个字符,则需要采用转义字符来表示,这将在后面介绍。3转义字符:转义字符用于表示ASCII码字符集中不可打印的控制字符和特定功能的字符。转义字符是C51语言中表示字符的一种特殊形式。,6.4.5 指针型数据,指针型数据是指向变量所存放地址的数据类型。指针型数据是一种特殊的数据类型,根据所指的变量类型不同,可以分为整型指针、浮点型指针、字符型指针、结构型指针和联合指针。在C51语言中,指针型变量的定义格式如下:int*i;/定义整型指针变量float*f;/定义浮点型指针变量char*c;/定义字符型指针变量struct*stu;/定义结构型指针变量union*uni;/定义联合指针变量,6.4.6 无值型数据,无值型数据是一个特殊的类型,其字节长度为0。在C51语言中,无值型主要有两个用途:定义一个同一类型指针,该指针可根据需要动态分配内存。在定义和使用函数时,明确地表示这个函数不返回任何值。无值型数据的声明示例如下:void*buf;/buf被定义为无值型指针,6.5 C51的变量作用域,变量作用域是在程序中变量起作用的范围。C51语言中,使用变量前需要首先声明该变量。由于C51程序中可以包含多个函数和程序文件,因此使用变量时,需要注意变量有效作用范围的问题,即变量的作用域。,6.5.1 基本规则,在C51语言中规定,在块结构中进行定义的变量,其有效使用范围只在该块结构内。其中,块结构是任何以花括号括起来的一段程序,通常称为复合语句。在C51程序中,一些函数和语句是以一对花括号“”和“”来构成的,这也是块结构的一种,示例如下:#include/头文件void main()/主函数int i;/定义整型变量i=23;/变量赋值if(i%2=0)/判断是否是偶数,如果是执行下面的语句int j;/定义整型变量j=2;/变量赋值printf(i=%d,i);/输出变量i,正确printf(j=%d,j);/输出变量j,错误,6.5.2 自动变量,自动变量是以关键字auto标识的变量类型。其声明格式为“auto 类型说明符 变量标识符,变量标识符”。自动型变量可以在如下两种情况下使用。在函数的内部进行定义,其作用域的范围为该函数的内部,在该函数之外变量无效。在程序块中声明,其作用域的范围为该程序块。在编译C51程序时,自动型变量根据变量类型动态分配存储空间。动态分配的过程是,在程序执行到该函数时,为其自动分配存储空间,当该函数执行完毕后,立即结束该变量的存储空间,即该自动型变量消失。这便是为什么在函数内部定义的变量,不能在函数外引用的原因。,6.5.3 外部变量,外部变量一般定义在所有函数的外部,即整个程序文件的最前面,也称为全局变量。外部变量的作用域是整个程序文件,其可以被该程序文件中的任何函数使用。在编译C51程序时,外部变量根据变量类型被静态地分配适当的存储空间。在整个程序运行过程中,该变量一旦分配空间,便不会消失。这也是外部变量对整个程序文件有效的原因。,6.5.4 静态变量,静态变量以关键字static声明,声明格式为“static 类型说明符 变量标识符,变量标识符”。在C51语言中,根据声明的位置不同,静态变量可以分为如下两种:内部静态变量,在函数内部定义;外部静态变量,在函数外部定义。在编译C51程序时,根据数据类型静态地给静态变量分配合适的存储空间,并在程序运行过程中始终占有该存储空间。另外,C51语言允许将函数定义为静态型的。这样,只有同一文件中的其他函数才能调用这个静态型函数,同一工程项目中的其他文件不能调用访问,这样,可以既有利于程序的模块化设计,又可以防止和其他文件中的函数有重名的情况。,6.5.5 寄存器变量,寄存器变量以关键字register声明,声明格式为“register 类型说明符 变量标识符,变量标识符”。示例如下:register char ch;register double db;寄存器变量常用于某一变量名频繁使用的情况,这样做可以提高系统的运算速度。因为普通的变量一般存储在内存中,而寄存器变量被存储在CPU的寄存器中。在C51语言中,只允许同时定义两个寄存器变量,如果多于两个,程序在编译时会自动地将两个之外的寄存器变量当作非寄存器变量来处理。,6.6 分隔符与const修饰符,分隔符和修饰符是计算机语言中最重要的组成部分,这里介绍C51语言中的分隔符和const修饰符。,6.6.1 C51分隔符,分隔符在C51程序语言中起辅助标识和分界的作用。一般分为两种,简单分隔符和复合分隔符。简单分隔符是除字母、数字、下划线以外的单个ASCII字符,如:+、-、*、/、!、|、=、.、,、:、;、#等。复合分隔符是特定字符的某种组合,例如=、(、)等。分隔符常用于数组、语句等情况,下面举出常用的分隔符示例。用“;”进行隔离语句,例如int r;用“”对数组说明,例如char ch=Hello Word!;用“()”进行隔离,例如s=area(r);用“,”进行隔离,例如char ch1,ch2,ch3;用“”进行隔离复合语句,例如for i=0;i100;i+;用“*”做指针,例如char*ponter;用“#”做预处理伪指令,例如#define PI 3.1415926;用“”标识特殊寄存器的位,例如sbit P00=P00。,6.6.2 const修饰符,const修饰符主要用来定义常量或变量。其定义格式为“const=;”。示例如下:const double PI=3.1415926;在C51语言中,用关键字const修饰的是一类特殊的常量,一般称为符号常量或const变量。从编译的角度看,程序在编译时,将视const变量为一个常量,系统不为其分配内存。在程序中遇到该const变量时,将用定义时的初值来代替。这里需要注意的是,使用const修饰的变量不能在程序中修改其值,这样一方面可以防止程序运行时该值被意外修改,另一方面也可以对于程序中经常使用的值做统一修改,便于调试程序。,6.7 运算符,运算符是一个表示特定的算术或逻辑操作的符号,也称为操作符。例如“+”号,表示了一个相加运算;“&”号表示了一个逻辑与的运算。在C51语言中,由运算符把需要进行运算的各个量(常量或变量)连接起来组成一个表达式。C51语言中的运算符很丰富,主要有三大类运算符:算术运算符、关系与逻辑运算符、位操作运算符。另外,还有一些用于完成复杂功能的特殊运算符。,6.7.1 算术运算符,算术运算符是用来进行算术运算的操作符。C51语言中允许的算术运算符,如表所示。C51语言中的运算符“+”、“”、“*”和“/”的用法与大多数计算机语言相同,几乎可用于所有C51语言内定义的数据类型。,6.7.2 逻辑运算符和关系运算符,逻辑运算符中的“逻辑”描述了操作数的逻辑关系,而关系运算符中的“关系”描述了一个操作数与另一个操作数之间的比较关系。关系运算符和逻辑运算符通常在一起使用,所以这里将它们放在一起进行讲解。,6.7.3 位运算符,位运算是对字节或字中的二进制位(bit)进行测试、置位、移位或逻辑处理的运算符。这里字节或字是针对C标准中的char和int数据类型而言的,位操作不能用于float、double、long double、void或其他复杂类型。支持全部的位运算符(Bitwise Operators)是C51语言与其他高级语言最大的不同,即具有汇编语言所具有的运算能力。因此C51既具有高级语言的特点,也具有低级语言的功能。C51语言中的位运算符,如表所示。位运算中的AND、OR和NOT(1的补码)的真值表与逻辑运算等价,唯一不同的是位操作是逐位进行运算的。下面分别介绍各个位运算符的用法。,6.7.4 特殊运算符,除了前面几节介绍的几种运算符外,在C51语言中还有一些特殊运算符,用于一些复杂的运算,可以起到简化程序的作用。1“,”运算符:“,”运算符是把几个表达式串在一起,按照顺序从左向右计算的运算符。“,”运算符左侧的表达式不返回值,只有最右边的表达式的值作为整个表达式的返回值。2“?”运算符:“?”运算符是三目操作符,其一般形式为:EXP1?EXE2:EXP3;3地址操作运算符:地址操作运算符主要有两种:“*”和“&”。4联合操作:联合操作主要用来简化一些特殊的赋值语句,这类赋值语句的一般形式为:=5“sizeof”运算符:“sizeof”运算符是单目操作符,其返回变量所占的字节或类型长度字节。6类型转换运算符:类型转换运算符用于强使某一表达式变为特定类型,其为一目运算符,并且同其他一目操作符的优先级相同。,6.7.5 运算符优先级和结合性,在C51语言中,当一个表达式中有多个运算符参与运算时,要按照运算符的优先级别进行运算。在一个复杂的表达式中,常常有许多运算符和变量,除了要判断优先级还要考虑结合性(或者关联性)这个因素。例如:-5+7;这里的表达式需要用结合性来判断,因为运算符“-”和“+”相对于运算的操作数来说是“左”结合的,所以实际参与计算的是“-5”和“+7”,运算的结果为2。,6.8 表达式,表达式是由运算符把需要进行运算的各个量连接起来而构成的一个整体。表达式主要由操作数和运算符组成。操作数一般包括常量和变量,有时甚至可以包括函数和表达式等。同运算符一样,表达式也是C51语言中的基本组成部分。,6.8.1 算术表达式,算术表达式是指用算术运算符和括号将操作数连接起来,并且符合C51语法规则的式子。例如:a+(b-c)*2-b,这是一个正确的算术表达式。算术表达式比较简单,主要应该注意算术运算符的计算顺序。这里仅举一个例子,来演示算术表达式的应用,程序示例如下。#include/头文件void main()/主函数 int i,j,x,y;/声明变量i=23;j=12;x=i+j;/算术运算y=i-j;/算术运算 printf(i+j=%dni-j=%dn,x,y);/输出结果,6.8.2 赋值表达式,赋值表达式是指由赋值运算符将一个变量和一个表达式连接起来的式子,其一般形式为:例如“x=15”就是一个简单的赋值表达式,表示将15赋值给变量x。赋值表达式的求解过程是将赋值运算符右边的表达式的值赋给左边的变量。赋值表达式在程序中的应用示例如下:#include/头文件void main()/主函数 int i,j;/声明变量char a,b;a=c;/变量赋值 b=d;i=15+a;/赋值 j=b-D+a;printf(i=%dnj=%dn,i,j);/输出结果,6.8.3 逗号表达式,逗号表达式是用逗号运算符将两个表达式连接起来的式子。其一般形式为:表达式1,表达式2,表达式3,表达式n逗号表达式的应用示例如下:#include/头文件void main()/主函数 int a,b;/声明变量 b=(a=3*10,a*8);/逗号表达式 printf(a=%dnb=%dn,a,b);/输出结果,6.8.4 关系和逻辑表达式,关系和逻辑表达式是采用关系运算符以及逻辑运算符来构成的式子。关系和逻辑表达式常用于程序控制语句中控制流程运算。关系表达式和逻辑表达式通常是结合在一起使用。1关系表达式关系表达式是指用关系运算符将两个表达式连接起来的式子。关系运算又称为“比较运算”。示例如下:x5)=02逻辑表达式逻辑表达式是指用逻辑运算符将两个表达式连接起来的式子。逻辑表达式中的运算对象可以是任何类型的数据,如字符型、整型或指针型等。3在控制流程语句中的应用,6.9 小结,单片机C语言是现在单片机系统设计所广泛采用的程序语言。本章首先介绍了单片机C语言(C51语言)的特点,然后分别介绍了C51语言的标识符、关键字、数据类型、运算符和表达式等,并对每一个知识点都提供了完整详细的实例分析。这一章是单片机C51语言的基础,熟练掌握本章,对以后章节的学习有很大的帮助。,

    注意事项

    本文(第6章单片机C语言.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开