书签 分享 收藏 举报 版权申诉 / 101
上传文档赚钱

类型单片机C语言简介课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3197907
  • 上传时间:2022-08-01
  • 格式:PPT
  • 页数:101
  • 大小:941.55KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《单片机C语言简介课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    单片机 语言 简介 课件
    资源描述:

    1、第第7 7章章 5151单片机单片机C C语言简介语言简介 7.1 7.1 C C语言的基本知识语言的基本知识 7.2 C517.2 C51程序设计的基本语法程序设计的基本语法 7.3 C517.3 C51程序设计程序设计 7.4 7.4 函数函数 7.5 7.5 模块化程序设计模块化程序设计 7.6 C517.6 C51编程实例编程实例 7.1 C7.1 C语言的基本知识语言的基本知识 7.1.1 C语言的特点与程序结构语言的特点与程序结构 以前计算机的系统软件主要是用汇编语言编写的,对于以前计算机的系统软件主要是用汇编语言编写的,对于单片机应用系统来说更是如此。由于汇编语言程序的可读性和单

    2、片机应用系统来说更是如此。由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用系统程序的周可移植性都较差,采用汇编语言编写单片机应用系统程序的周期长,而且调试和排错也比较困难。为了提高编制计算机系统期长,而且调试和排错也比较困难。为了提高编制计算机系统和应用程序的效率,改善程序的可读性和可移植性,最好采用和应用程序的效率,改善程序的可读性和可移植性,最好采用高级语言编程。高级语言编程。C语言既具有一般高级语言的特点,又能直接语言既具有一般高级语言的特点,又能直接对计算机的硬件进行操作,并且采用对计算机的硬件进行操作,并且采用C语言编写的程序能够很语言编写的程序能够很容易地在不同

    3、类型的计算机之间进行移植。与其它计算机高级容易地在不同类型的计算机之间进行移植。与其它计算机高级语言相比,语言相比,C语言具有它自身的特点:语言具有它自身的特点:1语言简洁,使用方便灵活。语言简洁,使用方便灵活。2可移植性好。可移植性好。3表达能力强。表达能力强。4可进行结构化程序设计。可进行结构化程序设计。5可以直接操作计算机硬件。可以直接操作计算机硬件。6生成的目标代码质量高生成的目标代码质量高。尽管尽管C语言具有很多的优点,但和其它任何一种程序设计语言具有很多的优点,但和其它任何一种程序设计语言一样,也有其自身的缺点,如语言一样,也有其自身的缺点,如不能自动检查数组的边界不能自动检查数组

    4、的边界,各种运算符的优先级别太多各种运算符的优先级别太多,某些运算符具有多种用途等。,某些运算符具有多种用途等。C语言程序是由若干个函数单元组成的,每个函数都是语言程序是由若干个函数单元组成的,每个函数都是完成某个特殊任务的子程序段。组成一个程序的若干个函数完成某个特殊任务的子程序段。组成一个程序的若干个函数可以保存在一个源程序文件中,也可以保存语言源程序文件可以保存在一个源程序文件中,也可以保存语言源程序文件的文件名由程序设计人员根据某种俗成规则自己确定,其扩的文件名由程序设计人员根据某种俗成规则自己确定,其扩展名统一为展名统一为“.C”。如。如A1-1.C、A2-1.C。C语言程序的语言程

    5、序的开始部分通常是预处理命令开始部分通常是预处理命令,如程序中通,如程序中通常遇到的常遇到的include命令。这个预处理命令通知编译器在对程命令。这个预处理命令通知编译器在对程序进行编译时,将所需要的头文件读入后再一起进行编译。序进行编译时,将所需要的头文件读入后再一起进行编译。一般在一般在“头文件头文件”中包含有程序在编译时的一些必要的信息,中包含有程序在编译时的一些必要的信息,通常通常C语言编译器都会提供若干个不同用途的头文件。语言编译器都会提供若干个不同用途的头文件。头文件头文件的读入是在对程序进行编译时才完成的的读入是在对程序进行编译时才完成的。名门棋牌官网名门棋牌官网 1PK11P

    6、K1棋牌公社官网棋牌公社官网 编辑整理编辑整理 C语言程序是由函数所组成的。一个完整的语言程序是由函数所组成的。一个完整的C语言程序应语言程序应包含一个包含一个主函数主函数main()()和若干个其它功能的函数。函数之间和若干个其它功能的函数。函数之间可以相互调用可以相互调用,但,但main()函数只能调用其它的功能函数()函数只能调用其它的功能函数,而,而不能被其它函数所调用。功能函数可以是不能被其它函数所调用。功能函数可以是C语言编译器提供的语言编译器提供的库函数,也可以由用户按实际需要自行编写的函数。不管库函数,也可以由用户按实际需要自行编写的函数。不管main()函数处于程序中的什么位

    7、置,()函数处于程序中的什么位置,程序总是从程序总是从main()函数开()函数开始执行始执行。一个函数必须预先定义或声明后才能调用。一个函数必须预先定义或声明后才能调用。函数定义或声明位于源程序的预处理命令之后的开始位置。函数定义或声明位于源程序的预处理命令之后的开始位置。函数定义部分包括有函数的存储类型、返回值数据类型、函数函数定义部分包括有函数的存储类型、返回值数据类型、函数名、形式参数说明等名、形式参数说明等,函数名后面必须跟一个圆括弧(),形,函数名后面必须跟一个圆括弧(),形式参数说明在圆括弧()内进行。函数也可以没有形式参数,式参数说明在圆括弧()内进行。函数也可以没有形式参数,

    8、如如main()。函数的位置比较自由。可以由程序设计人员安排在。函数的位置比较自由。可以由程序设计人员安排在函数定义后的任意位置。函数由函数名和一对花括弧函数定义后的任意位置。函数由函数名和一对花括弧“”组成,组成,在在“”里面的内容就是函数体,如果一个函数有多个里面的内容就是函数体,如果一个函数有多个“”,则最外面的一对则最外面的一对“”为函数体的范围。为函数体的范围。函数体的内容为若干条语句,一般有两类语句,函数体的内容为若干条语句,一般有两类语句,一类为说明语句,用来对函数中将要用到的变量进行一类为说明语句,用来对函数中将要用到的变量进行定义;另一类为执行语句,用来完成一定的功能或算定义

    9、;另一类为执行语句,用来完成一定的功能或算法处理。有的函数体仅有一对法处理。有的函数体仅有一对“”,其中既没有变量,其中既没有变量定义语句,也没有执行语句,这也是合法的,称为定义语句,也没有执行语句,这也是合法的,称为“空函数空函数”。C语言源程序可以采用任何一种编辑器来编写,语言源程序可以采用任何一种编辑器来编写,既可以是既可以是windows环境下的编辑器,如记事本环境下的编辑器,如记事本(NOTEPAD)或写字板()或写字板(WORDPAD),也可以是),也可以是DOS环境下的编辑器,如环境下的编辑器,如EDIT或或PE等。等。C语言程序的语言程序的书写格式十分自由。书写格式十分自由。一

    10、条语句可以写成一行,也可以一条语句可以写成一行,也可以写成几行;还可以在一行内写多条语句;但是需要注写成几行;还可以在一行内写多条语句;但是需要注意的是,每条语句都必须以分号意的是,每条语句都必须以分号“;”作为结束符作为结束符。另外,另外,C语言区分大小写字母语言区分大小写字母,C语言编译器在对程序进语言编译器在对程序进行编译时,对于程序中同一个字母的大小写作为不同的变量行编译时,对于程序中同一个字母的大小写作为不同的变量来处理。虽然来处理。虽然C语言程序不要求具有固定的格式,但我们在语言程序不要求具有固定的格式,但我们在实际编写程序时还是应该遵守一定的规则,一般应按程序的实际编写程序时还是

    11、应该遵守一定的规则,一般应按程序的功能以功能以“缩格缩格”形式来写程序,同时还应在适当的地方加上形式来写程序,同时还应在适当的地方加上必要的注释必要的注释。注释对于比较大的程序来说是十分重要的,这。注释对于比较大的程序来说是十分重要的,这有利于修改与读懂程序。有利于修改与读懂程序。C语言本身没有输入输出功能,语言本身没有输入输出功能,C语言程序的输入和输语言程序的输入和输出是通过函数调用来实现的。出是通过函数调用来实现的。Franklin C51编译器提供的输编译器提供的输入输出库函数入输出库函数 scanf和和 printf是通过是通过 8051单片机的串行口实现单片机的串行口实现的的,在程

    12、序中使用这种输入输出库函数之前必须先对,在程序中使用这种输入输出库函数之前必须先对8051单单片机的串行口进行初始化。但是对于单片机应用系统来说,片机的串行口进行初始化。但是对于单片机应用系统来说,由于具体要求的不同,应用系统的输入输出方式多种多样,由于具体要求的不同,应用系统的输入输出方式多种多样,不可能一律采用串行口作输入和输出。因此应该根据实际需不可能一律采用串行口作输入和输出。因此应该根据实际需要,由要,由应用系统的研制人员自己来编写满足特定需要的输入应用系统的研制人员自己来编写满足特定需要的输入输出函数输出函数,这一点对于单片机应用系统的开发研制人员来说,这一点对于单片机应用系统的开

    13、发研制人员来说是十分重要的。是十分重要的。7.1.2 C语言的标识符和关键字语言的标识符和关键字 C语言的标识符是用来标识源程序中某个对象名字的。语言的标识符是用来标识源程序中某个对象名字的。这些对象可以是函数、变量、常量、数组、数据类型、存储这些对象可以是函数、变量、常量、数组、数据类型、存储方式、语句等。一个标识符由字符串、数字和下划线等组成,方式、语句等。一个标识符由字符串、数字和下划线等组成,第一个字符必须是字母或下划线第一个字符必须是字母或下划线,通常以下划线开头的标识通常以下划线开头的标识符是编译系统专用的符是编译系统专用的,因此在编写,因此在编写C语言源程序时语言源程序时一般不要

    14、一般不要使用以下划线开头的标识符,而将下划线用作分段符使用以下划线开头的标识符,而将下划线用作分段符。C51编译器规定标识符编译器规定标识符最长可达最长可达255个字符个字符,但只有前面,但只有前面32个字个字符在编译时有效,因此在编写源程序时标识符的长度不要超符在编译时有效,因此在编写源程序时标识符的长度不要超过过 32个字符。程序中对于标识符的命名应当简洁明了,含义个字符。程序中对于标识符的命名应当简洁明了,含义清晰,便于阅读理解,如用标识符清晰,便于阅读理解,如用标识符“max”表示最大值,用表示最大值,用“TIMER0”表示定时器表示定时器0等。等。关键字是一类具有固定名称和特定含义的

    15、特殊标识符,关键字是一类具有固定名称和特定含义的特殊标识符,又称为又称为保留字保留字。在编写。在编写C语言源程序时一般不允许将关键字语言源程序时一般不允许将关键字另作别用,换句话说就是另作别用,换句话说就是对于标识符的命名不要与关键字相对于标识符的命名不要与关键字相同同。在。在C语言中,语言中,ANSI C标准一共规定了标准一共规定了32个关键字,表个关键字,表 7.1按用途列出了按用途列出了 ANSI C标准的关键字。标准的关键字。表表 7.1 ANSI C标准的关键字标准的关键字关键字关键字 用用 途途 说说 明明 autobreakcasecharconstcontinue defaul

    16、tdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile存储类说明存储类说明程序语句程序语句程序语句程序语句数据类型说明数据类型说明存储类型说明存储类型说明程序语句程序语句程序语句程序语句程序语句程序语句数据类型说明数据类型说明程序语句程序语句数据类型说明数据类型说明存储种类说明存储种类说明数据类型说明数据类型说明程序语句程序语句程序语句程序语句程序语句程序语句数据类型说明数据类型说明数据类型

    17、说明数据类型说明存储种类说明存储种类说明程序语句程序语句数据类型说明数据类型说明数据类型说明数据类型说明运算符运算符存储种类说明存储种类说明数据类型说明数据类型说明程序语句程序语句数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明程序语句程序语句用以说明局部变量用以说明局部变量退出最内层循环退出最内层循环switch语句中的选择项语句中的选择项单字节整型数或字符型数据单字节整型数或字符型数据在程序执行过程中不可能修改的变量值在程序执行过程中不可能修改的变量值转向下一个循环转向下一个循环switch语句中的失败选择项语句中的失

    18、败选择项构成构成dowhile循环结构循环结构双精度浮点数双精度浮点数构成构成 ifelse选择结构选择结构枚举枚举在其它程序模块中说明了的全局变量在其它程序模块中说明了的全局变量单精度浮点数单精度浮点数构成构成for循环结构循环结构构成构成goto转移结构转移结构构成构成ifelse选择结构选择结构基本整型数基本整型数长整型数长整型数使用使用CPU内部寄存器的变量内部寄存器的变量函数返回函数返回短整型数短整型数有符号数,二进制数据的最高位为符号位有符号数,二进制数据的最高位为符号位计算表达式或数据类型的字节数计算表达式或数据类型的字节数静态变量静态变量结构类型数据结构类型数据构成构成swit

    19、ch选择结构选择结构重新进行数据类型定义重新进行数据类型定义联合数据类型联合数据类型无符号数据无符号数据无符号数据无符号数据说明该变量在程序执行中可被隐含地改变说明该变量在程序执行中可被隐含地改变构成构成while和和dowhile循环结构循环结构 关键字关键字 用用 途途 说说 明明bitsbitsfrsfr16databdataidatapdataxdatacodeinterruptUsingreetrant位标量声明位标量声明位标量声明位标量声明特殊功能寄存器声明特殊功能寄存器声明特殊功能寄存器声明特殊功能寄存器声明存储器类型声明存储器类型声明存储器类型声明存储器类型声明存储器类型说明存

    20、储器类型说明存储器类型说明存储器类型说明存储器类型说明存储器类型说明存储器类型说明存储器类型说明中断函数说明中断函数说明寄存器组定义寄存器组定义再入函数声明再入函数声明声明一个位标量或位类型的函数声明一个位标量或位类型的函数声明一个可位寻址变量声明一个可位寻址变量声明一个特殊功能寄存器(声明一个特殊功能寄存器(8位)位)声明一个声明一个16位的特殊功能寄存器位的特殊功能寄存器直接寻址直接寻址的的8051内部数据存储器内部数据存储器可位寻址可位寻址的的8051内部数据存储器内部数据存储器间接寻址间接寻址的的8051内部数据存储器内部数据存储器“分页分页”寻址的寻址的8051外部数据存储外部数据存

    21、储器器8051外部外部数据存储器数据存储器8051程序存储器程序存储器定义一个中断函数定义一个中断函数定义定义8051工作寄存器组工作寄存器组定义一个再入函数定义一个再入函数C51C51编译器除了支持编译器除了支持ANSI CANSI C标准关键字以外,还扩展了如标准关键字以外,还扩展了如表表7.27.2所示的关键字:所示的关键字:表表7.27.2C51C51编译器的扩展关键字编译器的扩展关键字7.1.3 7.1.3 单片机单片机C51C51程序的编译连接与调试程序的编译连接与调试 Franklin C51交叉编译器是专为交叉编译器是专为8051系列单片机设计的系列单片机设计的C语言编译器,它

    22、能在语言编译器,它能在IBM PC及其兼容机上运行,使用非及其兼容机上运行,使用非常方便。为了保证编译器能正常工作,常方便。为了保证编译器能正常工作,PC机应具有机应具有512K以以上的内存、一个软盘驱动器、一个硬盘,采用上的内存、一个软盘驱动器、一个硬盘,采用MSDOS 3.0以以上版本的操作系统。上版本的操作系统。Franklin C51以软件包的形式提供,软以软件包的形式提供,软件包中主要有件包中主要有C51交叉编译器、交叉编译器、A51交叉汇编器、交叉汇编器、L51连接定连接定位器、位器、OHS51代码转换器和代码转换器和 dScope一一51软件仿真调试器以软件仿真调试器以及其它一些

    23、实用软件程序。如果在及其它一些实用软件程序。如果在PC机的硬盘机的硬盘C:上安装:上安装C51编译器,在安装之前应对编译器,在安装之前应对PC机的配置文件机的配置文件CONFIG.SYS和自动批处理文件和自动批处理文件AUTOEXEC.BAT作如下修改:作如下修改:CONFIG.SYS:FIELS 20 BUFFER 20 AUTOEXEC.BAT:SET C51LIB=C:C51LIB SET C51INC C:CSIINC SET PATH=C:C51BIN 这样修改之后,这样修改之后,C51编译器会当头文件不在当前目录编译器会当头文件不在当前目录时,能从时,能从C:C51INC子目录中找

    24、到头文件;子目录中找到头文件;L51连接连接器会自动为所有的编译模式及算术(尤其是浮点运算)功器会自动为所有的编译模式及算术(尤其是浮点运算)功能从能从C:C51LIB于目录中找到所需要的库文件。于目录中找到所需要的库文件。C51编译器可根据不同的硬件环境由编译器可根据不同的硬件环境由4个文件做出修改。个文件做出修改。下列配置文件包括在下列配置文件包括在C51软件包中:软件包中:STARTUP.A51:C51编译器的启动程序,所有的栈指编译器的启动程序,所有的栈指针和存贮器,只要需要,将被初始化。针和存贮器,只要需要,将被初始化。INT.A51:在文件中已明确初始化了的变量作初始化。:在文件中

    25、已明确初始化了的变量作初始化。如果系统装了如果系统装了“看门狗看门狗”,该文件可包含附加的,该文件可包含附加的“看门狗看门狗”刷新。刷新。PUTCHAR.C:函数:函数“printf”、“puts”等的字符输出等的字符输出核心程序,该程序可根据用户硬件加以修改(如核心程序,该程序可根据用户硬件加以修改(如LCD显显示)。示)。GETKEY.C:函数:函数“getchar”、“scanf”等的字符输入等的字符输入核心程序,该程序可根据硬件加以修改(如矩阵键盘)核心程序,该程序可根据硬件加以修改(如矩阵键盘)所有文件都包含在所有文件都包含在C运行库中,因此,不能在运行库中,因此,不能在连接时指定调

    26、用。如果用户改变一个文件,可将其连接时指定调用。如果用户改变一个文件,可将其编译后与其它目标文件一起连接,因而不必改动运编译后与其它目标文件一起连接,因而不必改动运行库。库中原文件自动忽略。行库。库中原文件自动忽略。例:例:L51 MYMODUL1.OBJ,MYMODUL2.OBJ,STARTUP.OBJ,PUTCHAR.OBJ 上 例 将 用 户 建 立 的上 例 将 用 户 建 立 的 S T A R T U P.O B J 和和PUTCHAR.OBJ连接起来。连接起来。用用C语言编写的程序必须通过编译和连接之后,语言编写的程序必须通过编译和连接之后,才能生成可执行代码。才能生成可执行代码

    27、。C51编译器由命令编译器由命令“C51”启动,启动,例如以例如以EXI2.C为文件名的程序编译命令如下;为文件名的程序编译命令如下;C51 EXI2.C CODE DEBUG(回车)(回车)C51是编译器启动命令,是编译器启动命令,EXI2.C是程序文件名,是程序文件名,CODE和和DEBUG是编译控制指令。输入完命令后是编译控制指令。输入完命令后回车,即可进人编译过程。如果编译过程中未发现回车,即可进人编译过程。如果编译过程中未发现错误,屏幕上会显示出:错误,屏幕上会显示出:C51 COMPILATION COMPILETE,0 WARING(S),),0 ERROR(S)并产生列表文件并

    28、产生列表文件 EXI2.LST和目标文件和目标文件 EXI2.OBJ。如果编译中发现任何错误,则不产生目标文件,而如果编译中发现任何错误,则不产生目标文件,而将所有的错误信息都在列表文件中表示出来。将所有的错误信息都在列表文件中表示出来。编译编译控制指令控制指令CODE使列表文件的后面附加一个汇编语使列表文件的后面附加一个汇编语言文件言文件。编译控制指令。编译控制指令DEBUG使目标文件中包含使目标文件中包含有进行源程序调试时需要的各种符号信息。目标文有进行源程序调试时需要的各种符号信息。目标文件中还包含有可再定位的目标码,以供件中还包含有可再定位的目标码,以供 L51连接器连接器作进一步的处

    29、理。作进一步的处理。C51编译器提供了许多不同控制编译器提供了许多不同控制指令可以完成各种编译控制功能。指令可以完成各种编译控制功能。7.2 C517.2 C51程序设计的基本语法程序设计的基本语法 C语言是一种程序设计语言,采用语言是一种程序设计语言,采用C语言进行语言进行程序设计时,需要遵循一定的语法规则。程序设计时,需要遵循一定的语法规则。7.2.1 C语言的数据类型语言的数据类型 C语言的数据结构是以数据类型出现的,数据类型可语言的数据结构是以数据类型出现的,数据类型可分为基本数据类型和复杂数据类型,复杂数据类型由基本分为基本数据类型和复杂数据类型,复杂数据类型由基本数据类型构造而成。

    30、数据类型构造而成。C语言中的基本数据类型有语言中的基本数据类型有char,int,short,long,float和和double。对于。对于C51编译器来说,编译器来说,short型与型与int型相同,型相同,double型与型与float型相同型相同。分别说明如下:。分别说明如下:1 char 字符类型。有字符类型。有 signed char和和 unsigned char之分,默认值为之分,默认值为 signed char。对于。对于 signed char型数据,其型数据,其字节中的最高位表示该数据的符号,字节中的最高位表示该数据的符号,“0”表示正数,表示正数,“l”表示负数。表示负

    31、数。负数用补码表示负数用补码表示。所能表示的数值范围是。所能表示的数值范围是-128127;unsigned char型数据,是无符号字符型数据,型数据,是无符号字符型数据,其字节中的所有位均用来表示数据的数值,所表示的数值其字节中的所有位均用来表示数据的数值,所表示的数值范围是范围是 0255。2 int 整型。有整型。有signed int和和unsigned nit之分,之分,默认值为默认值为signed int。signed int是有符号整型数,字是有符号整型数,字节中的最高位表示数据的符号,节中的最高位表示数据的符号,“0”表示正数,表示正数,“1”表示负数。所能表示的数值范围是表

    32、示负数。所能表示的数值范围是-32768+32767。unsigned int是无符号整型数,所表示的数是无符号整型数,所表示的数值范围是值范围是065535。3 long 长整型。有长整型。有signed long和和unsigned long之分,默认值为之分,默认值为signed long。它们的长度均为。它们的长度均为四个字节。四个字节。singed long是有符号的长整型数据,字是有符号的长整型数据,字节中的最高位表示数据的符号,节中的最高位表示数据的符号,“0”表示正数,表示正数,“1”表示负数。数值的表示范围是表示负数。数值的表示范围是 2147483648 214748364

    33、7;unsigned long是无符号长整型数据,是无符号长整型数据,数值的表示范围是数值的表示范围是04294967295。4float 浮点型。它是符合浮点型。它是符合IEEE754标准的标准的单精度浮点型数据,在十进制中具有单精度浮点型数据,在十进制中具有7位有效数字。位有效数字。float型数据占用四个字节(型数据占用四个字节(2位二进制数)。位二进制数)。需要需要指出的是,对于浮点型数据除了有正常数值之外,指出的是,对于浮点型数据除了有正常数值之外,还可能出现非正常数值。根据还可能出现非正常数值。根据IEEE标准,当浮点型标准,当浮点型数据取以下数值(数据取以下数值(16进制数)时即

    34、为非正常值:进制数)时即为非正常值:FFFFFFFFH非数(非数(NaN););7F800000H正溢出(正溢出(INF););FF800000H负溢出(负溢出(INF););另外,由于另外,由于8051单片机不包括捕获浮点运算错单片机不包括捕获浮点运算错误的中断向量误的中断向量,因此必须由用户自己根据可能出现,因此必须由用户自己根据可能出现的错误条件用软件来进行适当的处理。的错误条件用软件来进行适当的处理。5*指针型。指针型数据不同于以上四种基指针型。指针型数据不同于以上四种基本数据类型,本数据类型,它本身是一个变量,但在这个变量它本身是一个变量,但在这个变量中存放的不是普通的数据而是指向另

    35、一个数据的中存放的不是普通的数据而是指向另一个数据的地址地址。指针变量也要占据一定的内存单元,在。指针变量也要占据一定的内存单元,在C51中指针变量的长度一般为中指针变量的长度一般为3个字节。指针变量个字节。指针变量也具有类型,其表示方法是在指针符号也具有类型,其表示方法是在指针符号“*”的前的前面冠以数据类型符号。如面冠以数据类型符号。如 char *Pointl;表示;表示 Pointl是一个字符型的指针变量。指针变量的类型是一个字符型的指针变量。指针变量的类型表示该指针所指向地址中数据的类型。使用指针表示该指针所指向地址中数据的类型。使用指针型变量可以方便地型变量可以方便地对对8051单

    36、片机的各部分物理地单片机的各部分物理地址直接进行操作址直接进行操作。6bit 位标量位标量。这是。这是C 51编译器的一种扩充编译器的一种扩充数据类型,利用它可定义一个位标量,但数据类型,利用它可定义一个位标量,但不能定不能定义位指针,也不能定义位数组义位指针,也不能定义位数组。7 7sfr sfr 特殊功能寄存器特殊功能寄存器。这也是。这也是C 51C 51编译器编译器的一种扩充数据类型,利用它的一种扩充数据类型,利用它可以访问可以访问80518051单片机单片机的所有内部特殊功能寄存器的所有内部特殊功能寄存器。sfrsfr型数据占用一个内型数据占用一个内存单元,其取值范围存单元,其取值范围

    37、0 0255255。8 8sfr16 16sfr16 16位特殊功能寄存器位特殊功能寄存器。它占用两个。它占用两个内存单元,取值范围是内存单元,取值范围是0 06553565535。9 9sbit sbit 可寻址可寻址位。这也是位。这也是C51C51编译器的一种编译器的一种扩充数据类型,利用它扩充数据类型,利用它可以访可以访80518051单片机内部单片机内部RAMRAM中中的可寻址位或特殊功能寄存器中的可寻址位的可寻址位或特殊功能寄存器中的可寻址位。在在C C语言程序中的表达式或变量赋值运算中,有语言程序中的表达式或变量赋值运算中,有时会出现时会出现运算对象的数据不一致运算对象的数据不一致

    38、的情况,的情况,C C语言允许语言允许任何标准数据类型之间的任何标准数据类型之间的隐式转换隐式转换。隐式转换按以下。隐式转换按以下优先级别自动进行:优先级别自动进行:bit char int long float signed bit char int long float signed unsignedunsigned 转换时由低向高进行,而不是数据转换时的顺序。转换时由低向高进行,而不是数据转换时的顺序。一般来说,如果有几个不同类型的数据同时参加运算,一般来说,如果有几个不同类型的数据同时参加运算,先将低级别类型的数据转换成高级别类型,再作运算先将低级别类型的数据转换成高级别类型,再作运算

    39、处理,并且运算结果为高级别类型数据。处理,并且运算结果为高级别类型数据。C51C51编译器除了能支持以上这些基本数据之外,编译器除了能支持以上这些基本数据之外,还能支持一些复杂的构造型数据,如结构类型、联合还能支持一些复杂的构造型数据,如结构类型、联合类型等。类型等。7.2.2 7.2.2 常量常量 常量是在程序执行过程中其值不能改变的量。常量的常量是在程序执行过程中其值不能改变的量。常量的数据类型有整型、浮点型、字符型和字符串型等,数据类型有整型、浮点型、字符型和字符串型等,C51C51编编译器还扩充了一种位(译器还扩充了一种位(bitbit)标量。分别说明如下:)标量。分别说明如下:1 1

    40、整型常量整型常量 整型常量就是整型常数,可表示为以下几种形式:十整型常量就是整型常数,可表示为以下几种形式:十进制整数;十六进制整数:以进制整数;十六进制整数:以 0X0X开头的数是十六进制数,开头的数是十六进制数,ANSI CANSI C标准规定十六进制数的数字为标准规定十六进制数的数字为0 09 9,再加字母,再加字母a af f;长整数:在数字后面加一个字母;长整数:在数字后面加一个字母L L就构成了长整数。就构成了长整数。2 2浮点型常量浮点型常量 浮点型常量有十进制表示形式和指数表示形式。浮点型常量有十进制表示形式和指数表示形式。十进制表示形式又称定点表示形式,由数字和小数点十进制表

    41、示形式又称定点表示形式,由数字和小数点组成。如组成。如 0.31410.3141、31.4131.41、314.1314.1及及0.00.0都是十进制数表都是十进制数表示形式的浮点型常量。示形式的浮点型常量。在这种表示形式中,如果整数或小数部分为在这种表示形式中,如果整数或小数部分为0 0可以可以省略不写,但必须有小数点。省略不写,但必须有小数点。指数表示形式为:指数表示形式为:数字数字数字数字e e 数字数字 其中,中的内容为可选项,可有可无,但其余其中,中的内容为可选项,可有可无,但其余部分必须有。部分必须有。3 3字符型常量字符型常量 字符型常量是单引号内的字符,如字符型常量是单引号内的

    42、字符,如aa、bb等。等。对于对于不可显示的控制字符,可以在该字符前面加一个不可显示的控制字符,可以在该字符前面加一个反斜杠字符反斜杠字符“”组成专用转义字符组成专用转义字符。利用转义字符。利用转义字符可以完成一些特殊功能和输出时的格式控制。可以完成一些特殊功能和输出时的格式控制。4 4字符串型常量字符串型常量 字符串型常量由字符串型常量由双引号双引号“”“”内的字符组成内的字符组成。当双。当双引号内的字符个数为引号内的字符个数为0 0时,称为空串常量。需要注意的时,称为空串常量。需要注意的是,字符串常量首尾的双引号是界限符,当需要表示是,字符串常量首尾的双引号是界限符,当需要表示双引号字符串

    43、时,可用转义字符双引号字符串时,可用转义字符来表示为:来表示为:“”。如:如:“I sayI say:“goodbyegoodbye!”字符串为字符串为I sayI say:“goodbyegoodbye!”另外,另外,C C语言将字符串常量作为一个字符类型数组来处理,语言将字符串常量作为一个字符类型数组来处理,在存储字符串常量时,要在字符串的尾部加一个转义字符在存储字符串常量时,要在字符串的尾部加一个转义字符0 0作为该字符串常量的结束符。因此不要将字符常量与字符作为该字符串常量的结束符。因此不要将字符常量与字符串常量混淆。串常量混淆。5 5位标量位标量 这是这是C51C51编译器的一种扩充

    44、数据类型。位标量用关键字编译器的一种扩充数据类型。位标量用关键字“bit”bit”来定义,它的值是一个二进制位。一个函数中可以来定义,它的值是一个二进制位。一个函数中可以包含包含“bit”bit”类型的参数,函数的返回值也可为类型的参数,函数的返回值也可为“bit”bit”型。型。另外,另外,不能定义位指针,也不能定义位数组不能定义位指针,也不能定义位数组。7.2.3 7.2.3 变量及其存储模式变量及其存储模式 和常量相比,变量是另一种量,在程序执行过程中其值和常量相比,变量是另一种量,在程序执行过程中其值能不断变化。每一个变量都必须有一个标识符作为它的变量能不断变化。每一个变量都必须有一个

    45、标识符作为它的变量名。在使用一个变量之前,必须先对该变量进行定义,指出名。在使用一个变量之前,必须先对该变量进行定义,指出它的数据类型和存储模式,以便编译系统为它分配相应的存它的数据类型和存储模式,以便编译系统为它分配相应的存储单元。在储单元。在C51C51中对变量进行定义的格式如下:中对变量进行定义的格式如下:存储种类数据类型存储器类型变量名表;存储种类数据类型存储器类型变量名表;其中,其中,“存储种类存储种类”和和“存储器类型存储器类型”是可选项。变是可选项。变量的存储种类有四种:量的存储种类有四种:自动(自动(autoauto)、外部()、外部(externextern)、)、静态(静态

    46、(staticstatic)和寄存器()和寄存器(registerregister)。在定义一个变量。在定义一个变量时如果省略存储种类选项,则该变量将为自动(时如果省略存储种类选项,则该变量将为自动(autoauto)变)变量。量。定义一个变量时除了需要说明其数据类型之外,定义一个变量时除了需要说明其数据类型之外,C51C51编编译器还允许说明变量的存储器类型。译器还允许说明变量的存储器类型。Franklin C51Franklin C51对于每对于每个变量可以准确地赋予其存储器类型,从而可使之能够在个变量可以准确地赋予其存储器类型,从而可使之能够在单片机系统内准确地定位。单片机系统内准确地定

    47、位。定义变量时如果省略定义变量时如果省略“存储器类型存储器类型”选项,则按编译选项,则按编译模式模式SMALLSMALL、COMPACTCOMPACT或或LARGELARGE所规定的默认存储器类型确定所规定的默认存储器类型确定变量的存储区域,不能位于寄存器中的参数传递变量和过变量的存储区域,不能位于寄存器中的参数传递变量和过程变量也保存在默认的存储器区域。程变量也保存在默认的存储器区域。C51C51编译器的三种存储编译器的三种存储器模式(默认的存储器类型)对变量的影响如下:器模式(默认的存储器类型)对变量的影响如下:1.SMALL 1.SMALL 变量被定义在变量被定义在 80518051单片

    48、机的内部数据存储器单片机的内部数据存储器中中,因此对这种变量的访问速度最快。另外,所有的对象,因此对这种变量的访问速度最快。另外,所有的对象,包括堆栈,都必须嵌入内部数据存储器,而堆栈的长度是很包括堆栈,都必须嵌入内部数据存储器,而堆栈的长度是很重要的,实际栈长取决于不同函数的嵌套深度。重要的,实际栈长取决于不同函数的嵌套深度。2.COMPACT 2.COMPACT 变量被定义在分页外部数据存储器变量被定义在分页外部数据存储器中,外中,外部数据段的长度可达部数据段的长度可达256256字节。这时对变量的访问是通过寄字节。这时对变量的访问是通过寄存器间接寻址(存器间接寻址(MOVX MOVX R

    49、iRi)进行的,堆栈位于)进行的,堆栈位于80518051单片机单片机内部数据存储器中。采用这种编译模式时,变量的高内部数据存储器中。采用这种编译模式时,变量的高 8 8位地位地址由址由 P2P2口确定。因此,在采用这种模式的同时,必须适当口确定。因此,在采用这种模式的同时,必须适当改变启动程序改变启动程序 STARTUPSTARTUPA51A51中的参数:中的参数:PDATASTARTPDATASTART和和PDATALENPDATALEN;用;用L51L51进行连接时还必须采用连接控制命令进行连接时还必须采用连接控制命令PDATAPDATA来对来对P2P2口地址进行定位,这样才能确保口地址

    50、进行定位,这样才能确保P2P2口为所需要的高口为所需要的高8 8位地址。位地址。3.LARGE 3.LARGE 变量被定义在外部数据存储器中变量被定义在外部数据存储器中(最大可达(最大可达64K64K字节),使用数据指针字节),使用数据指针DPTRDPTR来间接访问变量。来间接访问变量。这种访问这种访问数据的方法效率是不高的数据的方法效率是不高的,尤其是对于,尤其是对于2 2个或多个字节的变个或多个字节的变量,用这种数据访问方法相当影响程序的代码长度。另外一量,用这种数据访问方法相当影响程序的代码长度。另外一个不方便之处是这种数据指针不能对称操作。个不方便之处是这种数据指针不能对称操作。需要特

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:单片机C语言简介课件.ppt
    链接地址:https://www.163wenku.com/p-3197907.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库