单片机C语言简介课件.ppt
- 【下载声明】
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运行库中,因此,不能在运行库中,因此,不能在连接时指定调
展开阅读全文