51单片机C语言简介81.ppt
《51单片机C语言简介81.ppt》由会员分享,可在线阅读,更多相关《51单片机C语言简介81.ppt(102页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7 7章章 51 51单片机单片机C C语言简介语言简介 7.1 C 7.1 C语言的根本知识语言的根本知识 7.2 C51 7.2 C51程序设计的根本语法程序设计的根本语法 7.3 C51 7.3 C51程序设计程序设计 7.4 7.4 函数函数 7.5 7.5 模块化程序设计模块化程序设计 7.6 C51 7.6 C51编程实例编程实例 7.1 C7.1 C语言的根本知识语言的根本知识 7.1.1C语言的特点与程序结构语言的特点与程序结构以以前前计计算算机机的的系系统统软软件件主主要要是是用用汇汇编编语语言言编编写写的的,对对于于单单片片机机应应用用系系统统来来说说更更是是如如此此。
2、由由于于汇汇编编语语言言程程序序的的可可读读性性和和可可移移植植性性都都较较差差,采采用用汇汇编编语语言言编编写写单单片片机机应应用用系系统统程程序序的的周周期期长长,而而且且调调试试和和排排错错也也比比较较困困难难。为为了了提提高高编编制制计计算算机机系系统统和和应应用用程程序序的的效效率率,改改善善程程序序的的可可读读性性和和可可移移植植性性,最最好好采采用用高高级级语语言言编编程程。C语语言言既既具具有有一一般般高高级级语语言言的的特特点点,又又能能直直接接对对计计算算机机的的硬硬件件进进行行操操作作,并并且且采采用用C语语言言编编写写的的程程序序能能够够很很容容易易地地在在不不同同类类
3、型型的的计计算算机机之之间间进进行行移移植植。与与其其它它计计算算机机高高级级语语言相比,言相比,C语言具有它自身的特点:语言具有它自身的特点:1语言简洁,使用方便灵活。语言简洁,使用方便灵活。2可移植性好。可移植性好。3表达能力强。表达能力强。4可进行结构化程序设计。可进行结构化程序设计。5可以直接操作计算机硬件。可以直接操作计算机硬件。6生成的目标代码质量高生成的目标代码质量高。尽管尽管C语言具有很多的优点,但和其它任何一种程序设计语言具有很多的优点,但和其它任何一种程序设计语言一样,也有其自身的缺点,如不能自动检查数组的边界,语言一样,也有其自身的缺点,如不能自动检查数组的边界,各种运算
4、符的优先级别太多,某些运算符具有多种用途等。各种运算符的优先级别太多,某些运算符具有多种用途等。C语言程序是由假设干个函数单元组成的,每个函数都是语言程序是由假设干个函数单元组成的,每个函数都是完成某个特殊任务的子程序段。组成一个程序的假设干个函数完成某个特殊任务的子程序段。组成一个程序的假设干个函数可以保存在一个源程序文件中,也可以保存语言源程序文件的可以保存在一个源程序文件中,也可以保存语言源程序文件的文件名由程序设计人员根据某种俗成规那么自己确定,其扩展文件名由程序设计人员根据某种俗成规那么自己确定,其扩展名统一为名统一为“.C。如。如A11.C、A21.C。C语言程序的开始局部通常是预
5、处理命令,如程序中通常语言程序的开始局部通常是预处理命令,如程序中通常遇到的遇到的include命令。这个预处理命令通知编译器在对程序命令。这个预处理命令通知编译器在对程序进行编译时,将所需要的头文件读入后再一起进行编译。一般进行编译时,将所需要的头文件读入后再一起进行编译。一般在在“头文件中包含有程序在编译时的一些必要的信息,通常头文件中包含有程序在编译时的一些必要的信息,通常C语言编译器都会提供假设干个不同用途的头文件。头文件的语言编译器都会提供假设干个不同用途的头文件。头文件的读入是在对程序进行编译时才完成的。读入是在对程序进行编译时才完成的。C语语言言程程序序是是由由函函数数所所组组成
6、成的的。一一个个完完整整的的C语语言言程程序序应应包包含含一一个个主主函函数数main和和假假设设干干个个其其它它功功能能的的函函数数。函函数数之之间间可可以以相相互互调调用用,但但main函函数数只只能能调调用用其其它它的的功功能能函函数数,而而不不能能被被其其它它函函数数所所调调用用。功功能能函函数数可可以以是是C语语言言编编译译器器提提供供的的库库函函数数,也也可可以以由由用用户户按按实实际际需需要要自自行行编编写写的的函函数数。不不管管main函函数数处处于于程程序序中中的的什什么么位位置置,程程序序总总是是从从main函函数开始执行。一个函数必须预先定义或声明后才能调用。数开始执行。
7、一个函数必须预先定义或声明后才能调用。函函数数定定义义或或声声明明位位于于源源程程序序的的预预处处理理命命令令之之后后的的开开始始位位置置。函函数数定定义义局局部部包包括括有有函函数数的的存存储储类类型型、返返回回值值数数据据类类型型、函函数数名名、形形式式参参数数说说明明等等,函函数数名名后后面面必必须须跟跟一一个个圆圆括括弧弧,形形式式参参数数说说明明在在圆圆括括弧弧内内进进行行。函函数数也也可可以以没没有有形形式式参参数数,如如main()。函函数数的的位位置置比比较较自自由由。可可以以由由程程序序设设计计人人员员安安排排在在函函数数定定义义后后的的任任意意位位置置。函函数数由由函函数数
8、名名和和一一对对花花括括弧弧“组组成成,在在“里里面面的的内内容容就就是是函函数数体体,如如果果一一个个函函数数有有多多个个“,那么最外面的一对,那么最外面的一对“为函数体的范围。为函数体的范围。函函数数体体的的内内容容为为假假设设干干条条语语句句,一一般般有有两两类类语语句句,一一类类为为说说明明语语句句,用用来来对对函函数数中中将将要要用用到到的的变变量量进进行行定定义义;另另一一类类为为执执行行语语句句,用用来来完完成成一一定定的的功功能能或或算算法法处处理理。有有的的函函数数体体仅仅有有一一对对“,其其中中既既没没有有变变量量定定义义语语句句,也也没没有有执执行行语语句句,这这也也是是
9、合合法法的的,称称为为“空函数。空函数。C语语言言源源程程序序可可以以采采用用任任何何一一种种编编辑辑器器来来编编写写,既既可可以以是是windows环环境境下下的的编编辑辑器器,如如记记事事本本NOTEPAD或或写写字字板板WORDPAD,也也可可以以是是DOS环环境境下下的的编编辑辑器器,如如EDIT或或PE等等。C语语言言程程序序的的书书写写格格式式十十分分自自由由。一一条条语语句句可可以以写写成成一一行行,也也可可以以写写成成几几行行;还还可可以以在在一一行行内内写写多多条条语语句句;但但是是需需要要注注意的是,每条语句都必须以分号意的是,每条语句都必须以分号“;作为结束符。;作为结束
10、符。另另外外,C语语言言区区分分大大小小写写字字母母,C语语言言编编译译器器在在对对程程序序进进行行编编译译时时,对对于于程程序序中中同同一一个个字字母母的的大大小小写写作作为为不不同同的的变变量量来来处处理理。虽虽然然C语语言言程程序序不不要要求求具具有有固固定定的的格格式式,但但我我们们在在实实际际编编写写程程序序时时还还是是应应该该遵遵守守一一定定的的规规那那么么,一一般般应应按按程程序序的的功功能能以以“缩缩格格形形式式来来写写程程序序,同同时时还还应应在在适适当当的的地地方方加加上上必必要要的的注注释释。注注释释对对于于比比较较大大的的程程序序来来说说是是十十分分重重要要的的,这这有
11、利于修改与读懂程序。有利于修改与读懂程序。C语语言言本本身身没没有有输输入入输输出出功功能能,C语语言言程程序序的的输输入入和和输输出出是是通通过过函函数数调调用用来来实实现现的的。FranklinC51编编译译器器提提供供的的输输入入输输出出库库函函数数scanf和和printf是是通通过过8051单单片片机机的的串串行行口口实实现现的的,在在程程序序中中使使用用这这种种输输入入输输出出库库函函数数之之前前必必须须先先对对8051单单片片机机的的串串行行口口进进行行初初始始化化。但但是是对对于于单单片片机机应应用用系系统统来来说说,由由于于具具体体要要求求的的不不同同,应应用用系系统统的的输
12、输入入输输出出方方式式多多种种多多样样,不不可可能能一一律律采采用用串串行行口口作作输输入入和和输输出出。因因此此应应该该根根据据实实际际需需要要,由由应应用用系系统统的的研研制制人人员员自自己己来来编编写写满满足足特特定定需需要要的的输输入入输输出出函函数数,这这一一点点对对于于单单片片机机应应用用系系统统的的开开发发研研制制人人员员来来说说是是十十分重要的。分重要的。7.1.2C语言的标识符和关键字语言的标识符和关键字C语语言言的的标标识识符符是是用用来来标标识识源源程程序序中中某某个个对对象象名名字字的的。这这些些对对象象可可以以是是函函数数、变变量量、常常量量、数数组组、数数据据类类型
13、型、存存储储方方式式、语语句句等等。一一个个标标识识符符由由字字符符串串、数数字字和和下下划划线线等等组组成成,第第一一个个字字符符必必须须是是字字母母或或下下划划线线,通通常常以以下下划划线线开开头头的的标标识识符符是是编编译译系系统统专专用用的的,因因此此在在编编写写C语语言言源源程程序序时时一一般般不不要要使使用用以以下下划划线线开开头头的的标标识识符符,而而将将下下划划线线用用作作分分段段符符。C51编编译译器器规规定定标标识识符符最最长长可可达达255个个字字符符,但但只只有有前前面面32个个字字符符在在编编译译时时有有效效,因因此此在在编编写写源源程程序序时时标标识识符符的的长长度
14、度不不要要超超过过32个个字字符符。程程序序中中对对于于标标识识符符的的命命名名应应当当简简洁洁明明了了,含含义义清清晰晰,便便于于阅阅读读理理解解,如如用用标标识识符符“max表表示示最最大大值值,用用“TIMER0表示定时器表示定时器0等。等。关关键键字字是是一一类类具具有有固固定定名名称称和和特特定定含含义义的的特特殊殊标标识识符符,又又称称为为保保存存字字。在在编编写写C语语言言源源程程序序时时一一般般不不允允许许将将关关键键字字另另作作别别用用,换换句句话话说说就就是是对对于于标标识识符符的的命命名名不不要要与与关关键键字字相相同同。在在C语语言言中中,ANSIC标标准准一一共共规规
15、定定了了32个个关关键键字字,表表7.1按用途列出了按用途列出了ANSIC标准的关键字。标准的关键字。表表7.1ANSIC标准的关键字标准的关键字关键字关键字用用途途说说明明autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile存储类说明存储类说明程序语句程序语句程序语句程序语句数据类型说明数据类型说明存储类型说明存储类
16、型说明程序语句程序语句程序语句程序语句程序语句程序语句数据类型说明数据类型说明程序语句程序语句数据类型说明数据类型说明存储种类说明存储种类说明数据类型说明数据类型说明程序语句程序语句程序语句程序语句程序语句程序语句数据类型说明数据类型说明数据类型说明数据类型说明存储种类说明存储种类说明程序语句程序语句数据类型说明数据类型说明数据类型说明数据类型说明运算符运算符存储种类说明存储种类说明数据类型说明数据类型说明程序语句程序语句数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明数据类型说明程序语句程序语句用以说明局部变量用以说明局部变量退出最
17、内层循环退出最内层循环switch语句中的选择项语句中的选择项单字节整型数或字符型数据单字节整型数或字符型数据在程序执行过程中不可能修改的变量值在程序执行过程中不可能修改的变量值转向下一个循环转向下一个循环switch语句中的失败选择项语句中的失败选择项构成构成dowhile循环结构循环结构双精度浮点数双精度浮点数构成构成ifelse选择结构选择结构枚举枚举在其它程序模块中说明了的全局变量在其它程序模块中说明了的全局变量单精度浮点数单精度浮点数构成构成for循环结构循环结构构成构成goto转移结构转移结构构成构成ifelse选择结构选择结构基本整型数基本整型数长整型数长整型数使用使用CPU内部
18、寄存器的变量内部寄存器的变量函数返回函数返回短整型数短整型数有符号数,二进制数据的最高位为符号位有符号数,二进制数据的最高位为符号位计算表达式或数据类型的字节数计算表达式或数据类型的字节数静态变量静态变量结构类型数据结构类型数据构成构成switch选择结构选择结构重新进行数据类型定义重新进行数据类型定义联合数据类型联合数据类型无符号数据无符号数据无符号数据无符号数据说明该变量在程序执行中可被隐含地改变说明该变量在程序执行中可被隐含地改变构成构成while和和dowhile循环结构循环结构关键字关键字用用 途途说说 明明bitsbitsfrsfr16databdataidatapdataxdat
19、acodeinterruptUsingreetrant位标量声明位标量声明位标量声明位标量声明特殊功能寄存器声明特殊功能寄存器声明特殊功能寄存器声明特殊功能寄存器声明存储器类型声明存储器类型声明存储器类型声明存储器类型声明存储器类型说明存储器类型说明存储器类型说明存储器类型说明存储器类型说明存储器类型说明存储器类型说明存储器类型说明中断函数说明中断函数说明寄存器组定义寄存器组定义再入函数声明再入函数声明声明一个位标量或位类型的函数声明一个位标量或位类型的函数声明一个可位寻址变量声明一个可位寻址变量声明一个特殊功能寄存器(声明一个特殊功能寄存器(8位)位)声明一个声明一个16位的特殊功能寄存器位
20、的特殊功能寄存器直接寻址直接寻址的的8051内部数据存储器内部数据存储器可位寻址可位寻址的的8051内部数据存储器内部数据存储器间接寻址间接寻址的的8051内部数据存储器内部数据存储器“分分页页”寻寻址址的的8051外外部部数数据据存存储储器器8051外部外部数据存储器数据存储器8051程序存储器程序存储器定义一个中断函数定义一个中断函数定义定义8051工作寄存器组工作寄存器组定义一个再入函数定义一个再入函数C51C51编编译译器器除除了了支支持持ANSI ANSI C C标标准准关关键键字字以以外外,还还扩扩展展了了如如表表7.27.2所示的关键字:所示的关键字:表表7.27.2C51C51
21、编译器的扩展关键字编译器的扩展关键字7.1.3 7.1.3 单片机单片机C51C51程序的编译连接与调试程序的编译连接与调试 FranklinC51交交叉叉编编译译器器是是专专为为8051系系列列单单片片机机设设计计的的C语语言言编编译译器器,它它能能在在IBMPC及及其其兼兼容容机机上上运运行行,使使用用非非常常方方便便。为为了了保保证证编编译译器器能能正正常常工工作作,PC机机应应具具有有512K以以上上的的内内存存、一一个个软软盘盘驱驱动动器器、一一个个硬硬盘盘,采采用用MSDOS3.0以以上上版版本本的的操操作作系系统统。FranklinC51以以软软件件包包的的形形式式提提供供,软软
22、件件包包中中主主要要有有C51交交叉叉编编译译器器、A51交交叉叉汇汇编编器器、L51连连接接定定位位器器、OHS51代代码码转转换换器器和和dScope一一51软软件件仿仿真真调调试试器器以以及及其其它它一一些些实实用用软软件件程程序序。如如果果在在PC机机的的硬硬盘盘C:上上安安装装C51编编译译器器,在在安安装装之之前前应应对对PC机机的的配配置置文文件件CONFIG.SYS和自动批处理文件和自动批处理文件AUTOEXEC.BAT作如下修改:作如下修改:CONFIG.SYS:FIELS20BUFFER20AUTOEXEC.BAT:SETC51LIB=C:C51LIBSETC51INCC:
23、CSIINCSETPATH=C:C51BIN这这样样修修改改之之后后,C51编编译译器器会会当当头头文文件件不不在在当当前前目目录录时时,能能从从C:C51INC子子目目录录中中找找到到头头文文件件;L51连连接接器器会会自自动动为为所所有有的的编编译译模模式式及及算算术术尤尤其其是是浮浮点点运运算算功功能能从从C:C51LIB于目录中找到所需要的库文件。于目录中找到所需要的库文件。C51编编译译器器可可根根据据不不同同的的硬硬件件环环境境由由4个个文文件件做做出出修修改。以下配置文件包括在改。以下配置文件包括在C51软件包中:软件包中:STARTUP.A51:C51编编译译器器的的启启动动程
24、程序序,所所有有的的栈栈指针和存贮器,只要需要,将被初始化。指针和存贮器,只要需要,将被初始化。INT.A51:在在文文件件中中已已明明确确初初始始化化了了的的变变量量作作初初始始化化。如如果果系系统统装装了了“看看门门狗狗,该该文文件件可可包包含含附附加加的的“看看门门狗狗刷新。刷新。PUTCHAR.C:函函数数“printf、“puts等等的的字字符符输输出出核核心心程程序序,该该程程序序可可根根据据用用户户硬硬件件加加以以修修改改如如LCD显示。显示。GETKEY.C:函函数数“getchar、“scanf等等的的字字符符输输入入核核心心程程序序,该该程程序序可可根根据据硬硬件件加加以以
25、修修改改如如矩矩阵阵键键盘盘所有文件都包含在所有文件都包含在C运行库中,因此,不能在连运行库中,因此,不能在连接时指定调用。如果用户改变一个文件,可将其编译接时指定调用。如果用户改变一个文件,可将其编译后与其它目标文件一起连接,因而不必改动运行库。后与其它目标文件一起连接,因而不必改动运行库。库中原文件自动忽略。库中原文件自动忽略。例:例:L51MYMODUL1.OBJ,MYMODUL2.OBJ,STARTUP.OBJ,PUTCHAR.OBJ上例将用户建立的上例将用户建立的STARTUP.OBJ和和PUTCHAR.OBJ连接起来。连接起来。用用C语言编写的程序必须通过编译和连接之后,语言编写的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 语言 简介 81
限制150内