第2章C程序设计语言.ppt
《第2章C程序设计语言.ppt》由会员分享,可在线阅读,更多相关《第2章C程序设计语言.ppt(117页珍藏版)》请在冰豆网上搜索。
第第4章章51单片机的软件基础单片机的软件基础C51C51C51C51程序设计语言基础程序设计语言基础程序设计语言基础程序设计语言基础C51C51程序设计语言程序设计语言程序设计语言程序设计语言C51C51的运算符和表达式的运算符和表达式的运算符和表达式的运算符和表达式C51的头文件与库函数的头文件与库函数C51C51程序设计及应用程序设计及应用程序设计及应用程序设计及应用C51的应用技巧的应用技巧第第4章章51单片机的软件基础单片机的软件基础随着随着80C5180C51单片机硬件性能的提升,尤其是片内程单片机硬件性能的提升,尤其是片内程序存储器容量的增大和时钟工作频率的提高,已基本序存储器容量的增大和时钟工作频率的提高,已基本克服了高级语言产生代码长、运行速度慢、不适合单克服了高级语言产生代码长、运行速度慢、不适合单片机使用的致命缺点。
由此片机使用的致命缺点。
由此C51C51已经得到广泛的推广和已经得到广泛的推广和应用。
应用。
采用采用C51C51程序设计语言,程序设计语言,编程者只需了解变量和常编程者只需了解变量和常量的存储类型与量的存储类型与80C5180C51单片机存储空间的对应关系,而单片机存储空间的对应关系,而不必深入了解单片机的硬件和接口不必深入了解单片机的硬件和接口。
C51C51编译器会自动编译器会自动完成变量的存储单元的分配。
完成变量的存储单元的分配。
C51C51程序设计语言程序设计语言C51语言概述语言概述第第4章章51单片机的软件基础单片机的软件基础成于大气信达天下C51C51语语言言的的特特点点C提供了很多提供了很多数学函数数学函数并支持并支持浮点运浮点运算算,开发效率高,故可缩短开发时间,开发效率高,故可缩短开发时间,增加程序可读性和可维护性增加程序可读性和可维护性C语言程序本身语言程序本身不依赖于机器硬件系统不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单基本上不作修改就可将程序从不同的单片机中移植过来片机中移植过来C语言作为一种非常语言作为一种非常方便方便的语言而得的语言而得到广泛的支持,国内最通用的是到广泛的支持,国内最通用的是KeilC51第第4章章51单片机的软件基础单片机的软件基础#include/*文件包含,文件包含,51寄存器说明寄存器说明*/main()/*主函数主函数*/intx,y,z;/*变量定义变量定义(变量类型)(变量类型)*/if(xy)z=x;/*运算符,基本语句运算符,基本语句*/elsez=y;C51程序示例:
程序示例:
第第4章章51单片机的软件基础单片机的软件基础C51C51的程序结构的程序结构与一般与一般C语言的结构相同,以语言的结构相同,以main()函数为程序入口,程函数为程序入口,程序体中包含若干语句还可以包含若干函数。
序体中包含若干语句还可以包含若干函数。
C51函数的一般格式函数的一般格式类型类型函数名(参数表)函数名(参数表)数据说明部分数据说明部分语句执行部分语句执行部分第第4章章51单片机的软件基础单片机的软件基础程程序序由由函函数数组组成成(一一个个主主函函数数,或或一个主函数和若干自定义函数);一个主函数和若干自定义函数);利利用用预预处处理理命命令令对对变变量量或或函函数数进进行行集中定义或说明;集中定义或说明;函函数数和和变变量量都都需需遵遵循循先先定定义义后后使使用用的基本原则;的基本原则;主主函函数数中中的的所所有有语语句句执执行行完完毕毕,则则程程序结束。
序结束。
C51与标准与标准C程序程序结构完全相同结构完全相同第第4章章51单片机的软件基础单片机的软件基础举例:
举例:
LED闪烁控制功能闪烁控制功能第第4章章51单片机的软件基础单片机的软件基础预预处处理理命命令令-函函数数说说明明-全局变量定义全局变量定义-主主函函数数-调调用用函函数数-局局部部变变量量定定义义-程序体程序体程程序序体体-第第4章章51单片机的软件基础单片机的软件基础成于大气信达天下一、一、C51C51中常用的头文件中常用的头文件Reg52.h(定义单片机的特殊功能寄(定义单片机的特殊功能寄存器和端口)存器和端口)Stdio.h(标准输入输出函数库)(标准输入输出函数库)Math.h(标准数学函数库)(标准数学函数库)Absacc.h(外部绝对地址访问函数库)(外部绝对地址访问函数库)Ctype.h(字符函数库)(字符函数库)Stdlib.h(数学函数库)(数学函数库)第第4章章51单片机的软件基础单片机的软件基础其它部分头文件:
其它部分头文件:
(1)头文件)头文件ctype.h字符处理函数字符处理函数本本类类别别函函数数用用于于对对单单个个字字符符进进行行处处理理,包包括括字字符符的的类类别别测测试试和字符的大小写转换和字符的大小写转换
(2)头文件)头文件local.h地区化地区化本类别的函数用于处理不同国家的语言差异。
本类别的函数用于处理不同国家的语言差异。
(3)头文件)头文件math.h函数列表函数列表函数类别函数类别函数用途函数用途详细说明详细说明,如三角函数,如三角函数反余弦反余弦acos反正弦反正弦asin第第4章章51单片机的软件基础单片机的软件基础C51常用头文件:
常用头文件:
(4)头文件)头文件signal.h信号处理信号处理该分类函数用于处理那些在程序执行过程中发生例外的情况该分类函数用于处理那些在程序执行过程中发生例外的情况(5)头文件)头文件stdio.h输入输出函数输入输出函数该该分分类类用用于于处处理理包包括括文文件件、控控制制台台等等各各种种输输入入输输出出设设备备,各各种函数以种函数以“流流”的方式实现的方式实现如如:
打打开开文文件件fopen格格式式化化输输入入与与输输出出函函数数格格式式输输出出fprintf格式输入格式输入fscanf格式输出(控制台)格式输出(控制台)printf格式输入(控制台)格式输入(控制台)scanf第第4章章51单片机的软件基础单片机的软件基础宏定义宏定义在在语语言言源源程程序序中中允允许许用用一一个个标标识识符符来来表表示示一一个个字字符符串串,称称为为“宏宏”。
被被定定义义为为“宏宏”的的标标识识符符称称为为“宏宏名名”。
在在编编译译预预处处理理时时,对对程程序序中中所所有有出出现现的的“宏宏名名”,都都用用宏宏定定义义中中的字符串去代换的字符串去代换,这称为,这称为“宏代换宏代换”或或“宏展开宏展开”。
宏宏定定义义是是由由源源程程序序中中的的宏宏定定义义命命令令完完成成的的。
宏宏代代换换是是由预处理程序自动完成的。
由预处理程序自动完成的。
宏定义的一般形式为:
宏定义的一般形式为:
#define标识符标识符字符串字符串“define”为为宏宏定定义义命命令令。
“标标识识符符”为为所所定定义义的的宏宏名名。
“字字符符串串”可可以以是是常常数数、表表达达式式、或或含含有有参参数数的的表表达达式式、格式串等。
格式串等。
在在程程序序中中多多次次使使用用宏宏,可可以以简简化化源源程程序序的的输输入入。
与与使使用函数相比,会占用较多内存,但执行速度快用函数相比,会占用较多内存,但执行速度快。
例如例如:
#defineM(y*y+3*y)第第4章章51单片机的软件基础单片机的软件基础文件包含命令文件包含命令文文件件包包含含是是C预预处处理理程程序序的的另另一一个个重重要要功功能能。
文文件件包包含含是是用用指指定定文文件件的的全全部部内内容容替替换换该该预预处处理理命命令令行行。
即即一一个个程程序序文件将另一个指定文件的内容完全包含进来。
文件将另一个指定文件的内容完全包含进来。
在在程程序序设设计计中中,文文件件包包含含是是很很有有用用的的。
一一个个大大的的程程序序可可以以分分为为多多个个模模块块,由由多多个个程程序序员员分分别别编编程程。
有有些些公公用用的的符符号号常常量量或或宏宏定定义义等等可可单单独独组组成成一一个个文文件件,在在其其它它文文件件的的开开头头用用包包含含命命令令包包含含该该文文件件即即可可使使用用。
这这样样,可可避避免免在在每每个个文文件件开开头都去书写那些公用量,从而节省时间,并减少出错。
头都去书写那些公用量,从而节省时间,并减少出错。
#include文件名文件名或:
或:
#include。
文文件件包包含含的的对对象象最最为为常常见见的的是是头头文文件件(扩扩展展名名.h)。
在在前前面面我我们们已已多多次次用用此此命命令令包包含含过过库库函函数数的的头头文文件件。
文文件件包包含含命令行的一般形式为:
命令行的一般形式为:
第第4章章51单片机的软件基础单片机的软件基础二、二、C51的标识符、常量和关键字的标识符、常量和关键字标标识识符符用用来来标标识识源源程程序序中中某某个个对对象象的的名名字字,这这些些对对象象可以是语句、数据类型、函数、变量、数组等。
可以是语句、数据类型、函数、变量、数组等。
标识符标识符区分大小写区分大小写,第一个字符必须是字母第一个字符必须是字母或下划线。
或下划线。
C51中中有有些些库库函函数数的的标标识识符符是是以以下下划划线线开开头头的的,所所以以一般不要以下划线开头命名标识符一般不要以下划线开头命名标识符。
常常量量:
凡凡以以数数字字0开开头头的的数数字字序序列列,一一律律作作为为八八进进制制数数处处理理;凡凡以以0x开开头头,后后面面跟跟若若干干数数字字的的,一一律律作作为为十十六六进进制数制数处理;其它作为处理;其它作为十进制数十进制数处理。
处理。
关关键键字字:
ANSIC标标准准关关键键字字和和C51编编译译器器的的扩扩展展关关键键字字第第4章章51单片机的软件基础单片机的软件基础C51扩展的若干关键字一览表扩展的若干关键字一览表变量名不得使用标准变量名不得使用标准C语言和语言和C51语言的关键字。
语言的关键字。
第第4章章51单片机的软件基础单片机的软件基础uC51的变量的变量在程序执行过程中,数值可以发生改变的量称为在程序执行过程中,数值可以发生改变的量称为变量变量。
变变量量名名与与存存储储单单元元地地址址相相对对应应,变变量量值值与存储单元的内容相对应。
与存储单元的内容相对应。
例例如如在哈佛结构的存储空间中如何建立变量概念?
在哈佛结构的存储空间中如何建立变量概念?
第第4章章51单片机的软件基础单片机的软件基础【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名(标准(标准C)(标准(标准C)*括号项括号项可以缺省(但需有缺省值)可以缺省(但需有缺省值)C51变量定义的四要素变量定义的四要素:
(C51特有)特有)(标准(标准C+C51)第第4章章51单片机的软件基础单片机的软件基础【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名共有四个说明符:
共有四个说明符:
1、auto(自自动动型型)变变量量的的作作用用范范围围在在定定义义它它的的函函数数体体或或语句块内。
执行结束后,变量所占内存即被释放。
语句块内。
执行结束后,变量所占内存即被释放。
2、extern(外外部部型型)在在一一个个源源文文件件中中被被定定义义为为外外部部型型的的变量,在其它源文件中需要通过变量,在其它源文件中需要通过extern说明方可使用。
说明方可使用。
3、static(静静态态型型)利利用用static可可使使变变量量定定义义所所在在的的函函数数或语句块执行结束后,其分配的内存单元继续保留。
或语句块执行结束后,其分配的内存单元继续保留。
4、register(寄寄存存器器型型)将将变变量量对对应应的的储储存存单单元元指指定定为为通用寄存器,以提高程序运行速度。
通用寄存器,以提高程序运行速度。
缺省存储种类为缺省存储种类为auto(自动自动)型变量型变量第第4章章51单片机的软件基础单片机的软件基础数据的不同格式叫做数据类型数据的不同格式叫做数据类型*有符号数类型可以忽略有符号数类型可以忽略signed标识符标识符标标准准C语语言言的的数数据据类类型型【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量