C51程序设计语言.ppt
《C51程序设计语言.ppt》由会员分享,可在线阅读,更多相关《C51程序设计语言.ppt(118页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 51单片机的软件基础单片机的软件基础随着随着80C5180C51单片机硬件性能的提升,尤其是片内程单片机硬件性能的提升,尤其是片内程序存储器容量的增大和时钟工作频率的提高,已基本序存储器容量的增大和时钟工作频率的提高,已基本克服了高级语言产生代码长、运行速度慢、不适合单克服了高级语言产生代码长、运行速度慢、不适合单片机使用的致命缺点。由此片机使用的致命缺点。由此C51C51已经得到广泛的推广和已经得到广泛的推广和应用。应用。采用采用C51C51程序设计语言,程序设计语言,编程者只需了解变量和常编程者只需了解变量和常量的存储类型与量的存储类型与80C5180C51单片机存储空间的对应
2、关系,而单片机存储空间的对应关系,而不必深入了解单片机的硬件和接口不必深入了解单片机的硬件和接口。C51C51编译器会自动编译器会自动完成变量的存储单元的分配。完成变量的存储单元的分配。 C51语言概述语言概述第第4章章 51单片机的软件基础单片机的软件基础C51 C51 语语 言言 的的 特特 点点C提供了很多提供了很多数学函数数学函数并支持并支持浮点运浮点运算算,开发效率高,故可缩短开发时间,开发效率高,故可缩短开发时间,增加程序可读性和可维护性增加程序可读性和可维护性C语言程序本身语言程序本身不依赖于机器硬件系统不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单基本上不作修改就可将
3、程序从不同的单片机中移植过来片机中移植过来C语言作为一种非常语言作为一种非常方便方便的语言而得的语言而得到广泛的支持,国内最通用的是到广泛的支持,国内最通用的是Keil C51第第4章章 51单片机的软件基础单片机的软件基础#include /*文件包含,文件包含,51寄存器说明寄存器说明 */main ( ) /* 主函数主函数 */ int x,y,z;/* 变量定义变量定义 (变量类型)(变量类型)*/ if(xy) z=x;/* 运算符,基本语句运算符,基本语句*/ else z=y;C51程序示例:程序示例:第第4章章 51单片机的软件基础单片机的软件基础C51C51的程序结构的程序
4、结构与一般与一般C语言的结构相同,以语言的结构相同,以main()函数为程序入口,程函数为程序入口,程序体中包含若干语句还可以包含若干函数。序体中包含若干语句还可以包含若干函数。C51函数的一般格式函数的一般格式 类型类型 函数名(参数表)函数名(参数表) 数据说明部分数据说明部分 语句执行部分语句执行部分 第第4章章 51单片机的软件基础单片机的软件基础 程序由函数组成(一个主函数,或程序由函数组成(一个主函数,或一个主函数和若干自定义函数);一个主函数和若干自定义函数); 利用预处理命令对变量或函数进行利用预处理命令对变量或函数进行集中定义或说明;集中定义或说明; 函数和变量都需遵循先定义
5、后使用函数和变量都需遵循先定义后使用的基本原则;的基本原则; 主函数中的所有语句执行完毕主函数中的所有语句执行完毕,则程则程序结束。序结束。 C51与标准与标准C程序程序结构完全相同结构完全相同第第4章章 51单片机的软件基础单片机的软件基础举例:举例:LED闪烁控制功能闪烁控制功能第第4章章 51单片机的软件基础单片机的软件基础预处理命令预处理命令-函数说明函数说明-全局变量定义全局变量定义- 主函数主函数-调用函数调用函数-局部变量定义局部变量定义- 程序体程序体 程序体程序体-第第4章章 51单片机的软件基础单片机的软件基础C51简单例题简单例题 #include AT89X51.H /
6、包含头文件包含头文件 void main(void) / 主程序主程序 while(1) /无限循环无限循环 P2_0=0; /亮灯亮灯 P2_0=1; /灭灯灭灯 第第4章章 51单片机的软件基础单片机的软件基础一、一、C51C51中常用的头文件中常用的头文件Reg52.h(定义单片机的特殊功能寄(定义单片机的特殊功能寄 存器和端口)存器和端口)Stdio.h (标准输入输出函数库)(标准输入输出函数库)Math.h(标准数学函数库)(标准数学函数库)Absacc.h (外部绝对地址访问函数库)(外部绝对地址访问函数库)Ctype.h(字符函数库)(字符函数库)Stdlib.h(数学函数库)
7、(数学函数库)第第4章章 51单片机的软件基础单片机的软件基础其它部分头文件:其它部分头文件:(1)头文件)头文件 ctype.h 字符处理函数字符处理函数 本类别函数用于对单个字符进行处理,包括字符的类别测试本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换和字符的大小写转换(2)头文件)头文件 local.h 地区化地区化 本类别的函数用于处理不同国家的语言差异。本类别的函数用于处理不同国家的语言差异。(3)头文件)头文件 math.h函数列表函数列表 函数类别函数类别 函数用途函数用途 详细说明详细说明 ,如三角函数,如三角函数 反余弦反余弦 acos 反正弦反正弦
8、asin 第第4章章 51单片机的软件基础单片机的软件基础C51常用头文件:常用头文件:(4)头文件)头文件 signal.h 信号处理信号处理 该分类函数用于处理那些在程序执行过程中发生例外的情况该分类函数用于处理那些在程序执行过程中发生例外的情况(5)头文件)头文件 stdio.h 输入输出函数输入输出函数 该分类用于处理包括文件、控制台等各种输入输出设备,各该分类用于处理包括文件、控制台等各种输入输出设备,各种函数以种函数以“流流”的方式实现的方式实现如:如: 打开文件打开文件 fopen 格式化输入与输出函数格式化输入与输出函数 格式输出格式输出 fprintf 格式输入格式输入 fs
9、canf 格式输出(控制台)格式输出(控制台) printf 格式输入(控制台)格式输入(控制台) scanf 第第4章章 51单片机的软件基础单片机的软件基础宏定义宏定义 在语言源程序中允许在语言源程序中允许用一个标识符来表示一个字符串,用一个标识符来表示一个字符串,称为称为“宏宏”。被定义为。被定义为“宏宏”的标识符称为的标识符称为“宏名宏名”。在编。在编译预处理时,译预处理时,对程序中所有出现的对程序中所有出现的“宏名宏名”,都用宏定义中,都用宏定义中的字符串去代换的字符串去代换,这称为,这称为“宏代换宏代换”或或“宏展开宏展开”。 宏定义是由源程序中的宏定义是由源程序中的宏定义命令宏定
10、义命令完成的。宏代换是完成的。宏代换是由预处理程序自动完成的。由预处理程序自动完成的。宏定义的一般形式为:宏定义的一般形式为: #define 标识符标识符 字符串字符串“define”为宏定义命令。为宏定义命令。“标识符标识符”为所定义的宏名。为所定义的宏名。“字符串字符串”可以是常数、表达式、或含有参数的表达式、可以是常数、表达式、或含有参数的表达式、格式串等。格式串等。在程序中多次使用宏,可以简化源程序的输入。与使在程序中多次使用宏,可以简化源程序的输入。与使用函数相比,会占用较多内存,但执行速度快用函数相比,会占用较多内存,但执行速度快。例如例如: #define M (y*y+3*y
11、)第第4章章 51单片机的软件基础单片机的软件基础 文件包含命令文件包含命令 文件包含是文件包含是C预处理程序的另一个重要功能。预处理程序的另一个重要功能。文件包含文件包含是用指定文件的全部内容替换该预处理命令行是用指定文件的全部内容替换该预处理命令行。即一个程。即一个程序文件将另一个指定文件的内容完全包含进来。序文件将另一个指定文件的内容完全包含进来。在程序设计中,文件包含是很有用的。一个大的程序可在程序设计中,文件包含是很有用的。一个大的程序可以分为多个模块,由多个程序员分别编程。有些公用的符号以分为多个模块,由多个程序员分别编程。有些公用的符号常量或宏定义等可单独组成一个文件,在其它文件
12、的开头用常量或宏定义等可单独组成一个文件,在其它文件的开头用包含命令包含该文件即可使用。这样,可避免在每个文件开包含命令包含该文件即可使用。这样,可避免在每个文件开头都去书写那些公用量,从而节省时间,并减少出错。头都去书写那些公用量,从而节省时间,并减少出错。 #include 文件名文件名 或:或: #include 。 文件包含的对象最为常见的是头文件(扩展名文件包含的对象最为常见的是头文件(扩展名 .h)。在)。在前面我们已多次用此命令包含过库函数的头文件。文件包前面我们已多次用此命令包含过库函数的头文件。文件包含命令行的一般形式为:含命令行的一般形式为:第第4章章 51单片机的软件基础
13、单片机的软件基础二、二、C51的标识符、常量和关键字的标识符、常量和关键字标识符标识符用来标识源程序中某个对象的名字,这些对象用来标识源程序中某个对象的名字,这些对象可以是语句、数据类型、函数、变量、数组等。可以是语句、数据类型、函数、变量、数组等。标识符标识符区分大小写区分大小写,第一个字符必须是字母第一个字符必须是字母或下划线。或下划线。C51中有些库函数的标识符是以下划线开头的,所以中有些库函数的标识符是以下划线开头的,所以一般不要以下划线开头命名标识符一般不要以下划线开头命名标识符。常量常量:凡以数字:凡以数字0开头的数字序列,一律作为开头的数字序列,一律作为八进制数八进制数处理;凡处
14、理;凡以以0 x开头开头,后面跟若干数字的,一律作为,后面跟若干数字的,一律作为十六进十六进制数制数处理;其它作为处理;其它作为十进制数十进制数处理。处理。 关键字关键字:ANSI C标准关键字和标准关键字和C51编译器的扩展关键编译器的扩展关键字字第第4章章 51单片机的软件基础单片机的软件基础C51扩展的若干关键字一览表扩展的若干关键字一览表 变量名不得使用标准变量名不得使用标准C语言和语言和C51语言的关键字。语言的关键字。第第4章章 51单片机的软件基础单片机的软件基础u C51的变量的变量 在程序执行过程中,数值可以发生改变的量称为在程序执行过程中,数值可以发生改变的量称为变量变量。
15、 变量名与存储单元地址相对应,变量值变量名与存储单元地址相对应,变量值与存储单元的内容相对应。与存储单元的内容相对应。例例如如在哈佛结构的存储空间中如何建立变量概念?在哈佛结构的存储空间中如何建立变量概念? 第第4章章 51单片机的软件基础单片机的软件基础【存储种类存储种类】数据类型数据类型【存储类型存储类型】 变量名变量名(标准(标准C)(标准(标准C)* 括号项括号项可以缺省(但需有缺省值)可以缺省(但需有缺省值)C51变量定义的四要素变量定义的四要素:(C51特有)特有)(标准(标准C+C51)第第4章章 51单片机的软件基础单片机的软件基础【存储种类存储种类】数据类型数据类型【存储类型
16、存储类型】变量名变量名共有四个说明符:共有四个说明符:1、auto(自动型)(自动型)变量的作用范围在定义它的函数体或变量的作用范围在定义它的函数体或语句块内。执行结束后,变量所占内存即被释放。语句块内。执行结束后,变量所占内存即被释放。2、extern(外部型)(外部型) 在一个源文件中被定义为外部型在一个源文件中被定义为外部型的变量,在其它源文件中需要通过的变量,在其它源文件中需要通过extern说明方可使用。说明方可使用。3、static(静态型)(静态型) 利用利用static可使变量定义所在的函数可使变量定义所在的函数或语句块执行结束后,其分配的内存单元继续保留。或语句块执行结束后,
17、其分配的内存单元继续保留。4、register(寄存器型)(寄存器型) 将变量对应的储存单元指定为将变量对应的储存单元指定为通用寄存器,以提高程序运行速度。通用寄存器,以提高程序运行速度。缺省存储种类为缺省存储种类为auto (自动自动)型变量型变量第第4章章 51单片机的软件基础单片机的软件基础C51C51中数据声明的格式中数据声明的格式 类型说明符类型说明符修饰符修饰符 标识符标识符=初值初值unsigned char code Flag = 0 x0f ;类型说明类型说明符符修饰符修饰符标识标识符符初初值值这个定义给出的内容是:定义一个无符号的字符型变这个定义给出的内容是:定义一个无符号
18、的字符型变量,该变量的名字是量,该变量的名字是Flag,初值为,初值为0 x0f,该变量存放,该变量存放在在ROM空间中。空间中。说明:说明:如果在一个定义中,没有修饰符,即没有说明如果在一个定义中,没有修饰符,即没有说明存放的位置,则默认存放在片内存放的位置,则默认存放在片内RAM中,即是一个中,即是一个data类型的变量。类型的变量。第第4章章 51单片机的软件基础单片机的软件基础例如:例如:unsigned char code Flag = 0 x0f;就是声明一个无符号的就是声明一个无符号的char型变量型变量Flag,并给他赋初值,并给他赋初值为为0 x0f;并且声明他所在的存储空间
19、在片内统一编址的;并且声明他所在的存储空间在片内统一编址的ROM中。中。 声明中,如果没有修饰符,则数据默认的存储空间为声明中,如果没有修饰符,则数据默认的存储空间为data型,也就是在片内型,也就是在片内RAM中。中。C51的数据声明的一般格式如下的数据声明的一般格式如下类型说明符类型说明符修饰符修饰符 标识符标识符=初值初值C51C51的数据类型的数据类型第第4章章 51单片机的软件基础单片机的软件基础数据的不同格式叫做数据类型数据的不同格式叫做数据类型 * 有符号数类型可以忽略有符号数类型可以忽略signed标识符标识符标准标准C语言的数据类语言的数据类型型【存储种类存储种类】数据类型数
20、据类型 【存储类型存储类型】变量名变量名第第4章章 51单片机的软件基础单片机的软件基础C51C51中的数据类型中的数据类型类型类型符号符号关关 键键 字字所占位数所占位数数据表示范围数据表示范围整整型型有有(signed) int16-3276832767( signed )short int16-3276832767( signed )long int32-21474836482147483647无无unsigned int16065535unsigned short int16065535unsigned long int3204294967295实型实型有有float32-3.4e-3
21、83.4e+38有有double32-1.7e-3081.7e+308字字符符型型有有char8-128127无无unsigned char80255第第4章章 51单片机的软件基础单片机的软件基础C C语言中的数据类型语言中的数据类型类型类型符号符号关关 键键 字字所占位数所占位数数据表示范围数据表示范围整整型型有有(signed) int16-3276832767( signed )short int16-3276832767( signed )long int32-21474836482147483647无无unsigned int16065535unsigned short int16
22、065535unsigned long int3204294967295实型实型有有float32-3.4e-383.4e+38有有double32-1.7e-3081.7e+308字字符符型型有有char8-128127无无unsigned char80255从上面两个表可以看出,从上面两个表可以看出,C51中的数据类型和中的数据类型和C语言中的语言中的数据类型完全一样。数据类型完全一样。第第4章章 51单片机的软件基础单片机的软件基础C51扩充扩充数据类型:数据类型:bit、sfr或或sfr16、sbit bit 型型关键词关键词bit用于定义一用于定义一个位变量个位变量,语法规则:,语法
23、规则:bit bit_name = 0或或1;例如:例如:bit door = 0 ; /定义一个叫定义一个叫door的位变量且初值为的位变量且初值为0标准标准C的变量定义举例:的变量定义举例: int a = 5 ; /定义一个初值为定义一个初值为5的整形变量的整形变量a 语法规则:语法规则:int int_name = 常数常数; 注意注意:上述变量的物理地址是由编译器分配的:上述变量的物理地址是由编译器分配的 第第4章章 51单片机的软件基础单片机的软件基础sfr或或sfr16型型关键词关键词sfr或或sfr16用于定义用于定义SFR字节地址变量字节地址变量,语法规则:,语法规则: sf
24、r 或或 sfr16 sfr_name = 字节地址字节地址常数常数;51MCU中有中有21个个SFR,如何定义与这些单元相关的变量?,如何定义与这些单元相关的变量?第第4章章 51单片机的软件基础单片机的软件基础例如,例如,sfr P0 = 0 x80; /定义定义P0口地址口地址80Hsfr PCON = 0 x87; /定义定义PCON地址地址87H sfr16 DPTR=0 x82; /定义定义DPTR的低端地址的低端地址82H注意注意:SFR字节地址变量的物理地址是由字节地址变量的物理地址是由MCU资源决定的资源决定的第第4章章 51单片机的软件基础单片机的软件基础sbit型型部分部
25、分SFR具有位地址,如何定义与这些位地址相关的变量?具有位地址,如何定义与这些位地址相关的变量?CYCYACACF0F0RS1RS1RS0RS0OVOVF1F1P PCYCYACACF0F0RS1RS1RS0RS0OVOVF1F1P PCYCYACACF0F0RS1RS1RS0RS0OVOVF1F1P PCYCYACACF0F0RS1RS1RS0RS0OVOVF1F1P PD07D07D7HD7HD6HD6HD5HD5HD4HD4HD3HD3HD2HD2HD1HD1HD0HD0HD0HD0HPSWPSWD06D06D05D05D04D04D03D03D02D02D01D01D00D00绝对位地
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 程序设计语言
限制150内