第七课-C51语言的结构和特点课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第七课-C51语言的结构和特点课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七 C51 语言 结构 特点 课件
- 资源描述:
-
1、单片机单片机C51语言语言C51特点nC语言作为一种非常方便的结构化语言而得到广泛语言作为一种非常方便的结构化语言而得到广泛的支持,国内最通用的是的支持,国内最通用的是Keil C51。nC语言程序本身不依赖于机器硬件系统,基本上不语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。作修改就可将程序从不同的单片机中移植过来。nC提供了丰富的数据类型、很多数学函数并支持浮提供了丰富的数据类型、很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。程序可读性和可维护性。n与与汇编语言相比,汇编语
2、言相比,C语言的优点如下:语言的优点如下:对单片机的指令系统不要求了解,仅要求对对单片机的指令系统不要求了解,仅要求对8051 的的存贮器结构有初步了解;存贮器结构有初步了解;寄存器分配、不同存贮器的寻址及数据类型等细节可寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;由编译器管理;程序有规范的结构,可分成不同的函数,这种方式可程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;使程序结构化;具有将可变的选择与特殊操作组合在一起的能力,改具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;善了程序的可读性;提供的库包含许多标准子程序,具有较强的数据处理能力;提供
3、的库包含许多标准子程序,具有较强的数据处理能力;由于具有方便的模块化编程技术,使已编好程序可容由于具有方便的模块化编程技术,使已编好程序可容易地移植。易地移植。C51-1:C51基本结构基本结构n怎样学习C51?n/功能:控制八个信号灯闪烁程序功能:控制八个信号灯闪烁程序n#include/定义了定义了MCS-52单片机的特殊功能寄存器单片机的特殊功能寄存器nvoid delay(unsigned char i);/延时函数声明延时函数声明nvoid main()/主函数主函数nn while(1)n P1=0 x00;/点亮八个点亮八个LEDn delay(200);/延时延时n P1=0
4、xff;/熄灭八个熄灭八个LEDn delay(200);/延时延时n nn/函数名:函数名:delayn/函数功能:实现软件延时函数功能:实现软件延时n/形式参数:形式参数:unsigned char i;nvoid delay(unsigned char i)/延时函延时函数,无符号字符型变量数,无符号字符型变量i为形式参数为形式参数nn unsigned char j,k;/定义无符号字符型变量定义无符号字符型变量j和和kn for(k=0;ki;k+)/双重双重for循环语句实现软件延时循环语句实现软件延时n for(j=0;j255;j+);n头文件(一个或若干个)头文件(一个或若干
5、个)主函数主函数n 程序的入口程序的入口 函数名固定,且与书写的位置无关函数名固定,且与书写的位置无关n 有且仅有一个有且仅有一个函数声明或定义函数声明或定义n 库函数或用户自定义的函数库函数或用户自定义的函数n 可以有若干个可以有若干个C51程序大体上是程序大体上是若干函数的集合若干函数的集合C程序基本结构程序基本结构n一个一个C语言源程序是由一个或若干个函数语言源程序是由一个或若干个函数组成,每一个函数完成相对独立的功能。组成,每一个函数完成相对独立的功能。n每个每个C程序都必须有(且仅有)一个主函程序都必须有(且仅有)一个主函数数main(),程序的执行总是从主函数开,程序的执行总是从主
6、函数开始,调用其他函数后返回主函数始,调用其他函数后返回主函数main(),不管函数的排列顺序如何,最后在主函不管函数的排列顺序如何,最后在主函数中结束整个程序。数中结束整个程序。C51编程要点编程要点nC语言程序中可以有预处理命令,语言程序中可以有预处理命令,预处理命令通常放在源程序的最前预处理命令通常放在源程序的最前面。面。nC语言程序使用语言程序使用“;”作为语句的作为语句的结束符,一条语句可以多行书写,结束符,一条语句可以多行书写,也可以一行书写多条语句。也可以一行书写多条语句。nC语言区分大小写。语言区分大小写。n用用/*/或或/注释。注释。Main主函数名;主函数名;void函数类
7、型,空类型函数类型,空类型无返回值;()内为形参,无返回值;()内为形参,内为函内为函数体数体 C语言编程的三大要素语言编程的三大要素n 数据数据数据类型、数据结构、存储类型数据类型、数据结构、存储类型n运算运算算术运算、关系运算、逻辑运算、位操作算术运算、关系运算、逻辑运算、位操作n 控制控制顺序结构、选择结构、循环结构、函数顺序结构、选择结构、循环结构、函数C语言标识符 nC语言中语言中由由字母字母、数字数字和和下划线下划线组成的字符序列组成的字符序列称为称为-标识符标识符。n用于在程序中给变量、符号常量、数组、函数、用于在程序中给变量、符号常量、数组、函数、数据类型等操作对象数据类型等操
8、作对象“起名起名”。C语言对标识符的规定 n用户自定义标识符:用户自定义标识符:由由字母字母、数字数字和和下划线下划线构成,但必须以构成,但必须以字母字母或或下划线下划线“_”_”开头开头,不能以数字开头,不能以数字开头不能含有除字母、数字和下划线不能含有除字母、数字和下划线“_”_”外的其他外的其他字符如:字符如:!、&、*等。等。标识符中大小写字母含义不同标识符中大小写字母含义不同 如:如:abcabc和和AbcAbc为不同的标识符为不同的标识符n关键字关键字:必须用小写字母。不允许使用关键必须用小写字母。不允许使用关键字为变量、数组、函数等操作对象命名。字为变量、数组、函数等操作对象命名
9、。n预定义标识符预定义标识符:允许用户对它们重新定义,允许用户对它们重新定义,当重新定义后将改变它们原来的含义。当重新定义后将改变它们原来的含义。正确区分标识符n正确区分哪些是正确区分哪些是合法标识符合法标识符,哪些是,哪些是不合不合法标识符法标识符。n合法标识符中哪些是合法标识符中哪些是关键字关键字,哪些是,哪些是预定预定义标识符义标识符,哪些是,哪些是用户自定义标识符用户自定义标识符。Abc P1_0 2x P1.0 studentm+y a#b-4 _1 Whileint let x%y LED do w tm Ctrl switch include C51-2 数据类型数据类型1.关键
10、字关键字 是是C51语言规定的一批标识符,在语言规定的一批标识符,在源程序中代表固定的含义,不能另作它用。源程序中代表固定的含义,不能另作它用。C51语言除了支持语言除了支持ANSI标准标准C语言中的语言中的关键字关键字(见见)外,还根据外,还根据51系列单片机的系列单片机的结构特点扩展部分关键字,见结构特点扩展部分关键字,见。2.预定义标识符预定义标识符 是指是指C51语言提供的系统语言提供的系统函数的名字函数的名字(如如printf、scanf)和预编译处理和预编译处理命令命令(如如define、include)等。等。C51语言语法允许用户把这类标识符另语言语法允许用户把这类标识符另作它
11、用,但将使这些标识符失去系统规定的作它用,但将使这些标识符失去系统规定的原意。因此,为了避免误解,建议用户不要原意。因此,为了避免误解,建议用户不要把预定义标识符另作它用。把预定义标识符另作它用。数据类型数据类型长度长度值域值域 bit1 bit0,1 unsigned char8 bit0 255 (signed)char8 bit-128 127 unsigned int16 bit0 65535 (signed)int16 bit-32768 32767 unsigned long32 bit0 4294967295 (signed)long32 bit-2147483648214748
12、3647 float32 bit1.7e-38 3.40e+38 (6位)double64 bit1.7e-38 3.40e+38 (10位)*(一般指针)13字节存储空间地址C51语言的数据类型 C51数据类型数组类型数组类型结构体类型结构体类型(struct)共用体类型共用体类型(union)枚举类型枚举类型(enum)指针类型指针类型(*)构造类型构造类型n1char 字符类型字符类型char类型的长度是一个字节,通类型的长度是一个字节,通常用于定义处理字符数据的变量或常用于定义处理字符数据的变量或常量。常量。分无符号字符类型分无符号字符类型unsigned char和有符号字符类型和有
13、符号字符类型signed char,默认值为默认值为signed char类型。类型。n字符型变量分为:字符型变量分为:signed char和和 unsigned charn编译系统为其分配编译系统为其分配 1 Byte 1 Byte(字节)的存储空间(字节)的存储空间(Turbo CTurbo C、VC+6.0VC+6.0和和KeilKeil中均分配中均分配1B1B的存储空间)的存储空间)n表示的数值范围:表示的数值范围:signed char:-128127 unsigned char:0255n字符型变量字符型变量定义形式:定义形式:char 字符变量名字符变量名=初值初值;例如:例如
14、:char ch1,c1;unsigned char c2=a,c3=A,c4=307;例如例如:int a,b;(指定变量、为(指定变量、为整型整型)char x,y;(指定变量指定变量x x、y y为为字符型字符型)unsigned w,u;(指定变量指定变量w w、u u为为无符号整型无符号整型)unsigned char c,d;(指定变量、为(指定变量、为无符号无符号字符型字符型)n2int 整型整型int整型长度为两个字节,用于存放一个双整型长度为两个字节,用于存放一个双字节数据。字节数据。分有符号分有符号int整型数整型数signed int和无符号整和无符号整型数型数unsig
15、ned int,默认值为,默认值为signed int类类型型n 根据值大小默认类型。根据值大小默认类型。n 整型常量后面加整型常量后面加l或或L,则认为是,则认为是 long int型型 如:如:123L、0L、432l、0 x100ln 整型常量后面加整型常量后面加u或或U,则认为是,则认为是 unsigned int型型如:如:0 xF8A5U、0745u、-244u、-98U等等n3long 长整型长整型long长整型长度为四个字节,用于存放一个四字节长整型长度为四个字节,用于存放一个四字节数据。分有符号数据。分有符号long长整型长整型signed long和无符号和无符号长整型长整
16、型unsigned long,默认值为,默认值为signed long类型。类型。n 4float 浮点型浮点型float浮点型在十进制中具有浮点型在十进制中具有7位有效数字,是符合位有效数字,是符合IEEE754标准的单精度浮点型数据,占用四个字标准的单精度浮点型数据,占用四个字节节。n5指针型指针型指针型本身就是一个变量,在这个变量中存放的是指针型本身就是一个变量,在这个变量中存放的是另一个数据的地址。这个指针变量要占据一定的内另一个数据的地址。这个指针变量要占据一定的内存单元,对不同的处理器长度也不尽相同。存单元,对不同的处理器长度也不尽相同。n6bit 位变量位变量 bit类型-定义1
17、个位变量,值为0或1.其存储器类型只能是bdata、data、idata,严格讲只能是:bdata 所有的所有的bit变量都放在变量都放在80C51内部存储内部存储区的可位寻址区,而该区域只有区的可位寻址区,而该区域只有16字节长,字节长,所以在某个范围内只能声明最多所以在某个范围内只能声明最多128个位变个位变量。量。nbit flag;/定义一个位变量定义一个位变量flagnbit flag=1;/定义一个位变量定义一个位变量flag并赋初值并赋初值17 sfr类型类型-用于定义用于定义1个个8位的特殊功能寄位的特殊功能寄存器存器定义形式:定义形式:sfr 标识符标识符=8位特殊功能寄存器
18、在内部位特殊功能寄存器在内部RAM中的中的实际实际地址;地址;标识符可为汇编语言中的特殊功能寄存器标识符可为汇编语言中的特殊功能寄存器名或自己任意命名名或自己任意命名 如:如:sfr P0=0 x80;sfr PSW=0 xd0;sfr TMOD=0X89;8 sfr16类型类型-用于定义用于定义1个个16位的特殊功能寄存器位的特殊功能寄存器定义形式:定义形式:sfr16 标识符标识符=16位特殊功能寄存器的位特殊功能寄存器的低字节地址低字节地址;51子系列中只有子系列中只有DPTR为为16位的特殊功能寄存器:位的特殊功能寄存器:由由DPH和和DPL组成,其地址分别为组成,其地址分别为0 x8
19、2和和0 x83,地地址连续址连续。sfr16 DPTR=0 x82;/*地址为低字节单元的地址地址为低字节单元的地址*/52子系列中子系列中T2可定义如下:可定义如下:sfr16 T2=0 xCC;T0和和T1不能用不能用sfr16进行定义:进行定义:sfr16 T0=0 x8A;/*错误,错误,TL0和和TH0地址不连续地址不连续*/sfr16 T1=0 x8B;/*错误,错误,TL1和和TH1地址不连续地址不连续*/n9sbit 可寻址位可寻址位 sbit是是C51中的一种扩充数据类型,利用它可中的一种扩充数据类型,利用它可以访问芯片内部的以访问芯片内部的RAM中的可寻址位或特殊功能寄中
20、的可寻址位或特殊功能寄存器中的可寻址位。存器中的可寻址位。sbit类型类型-定义定义bdata区或可位寻址特殊功能寄存器(字节地区或可位寻址特殊功能寄存器(字节地址的末位为址的末位为0或或8)中的位,值也为)中的位,值也为0或或1.如:如:sfr P1=0 x90;sbit P1_0=P10;或或sbit P1_0=0 x900;或或sbit P1_0=0 x90;sbit EA=0 xAF;sbit IT0=0 x88;sbit P=0 xD0;注:安装注:安装Keil软件后,在文件夹软件后,在文件夹“C:keilc51inc”中有一些头中有一些头文件包含了有关特殊功能寄存器和相应位的定义。
21、文件包含了有关特殊功能寄存器和相应位的定义。reg51.h头文件内容:/*BYTE Register */sfr P0 =0 x80;sfr P1 =0 x90;sfr P2 =0 xA0;sfr P3 =0 xB0;sfr PSW =0 xD0;sfr ACC =0 xE0;sfr B =0 xF0;sfr SP =0 x81;sfr DPL =0 x82;sfr DPH =0 x83;sfr PCON=0 x87;sfr TCON=0 x88;sfr TMOD=0 x89;sfr TL0 =0 x8A;sfr TL1 =0 x8B;sfr TH0 =0 x8C;sfr TH1 =0 x8D
22、;Reg51.h头文件内容(续)/*IP */sbit PS =0 xBC;sbit PT1 =0 xBB;sbit PX1 =0 xBA;sbit PT0 =0 xB9;sbit PX0 =0 xB8;/*P3 */sbit RD =0 xB7;sbit WR =0 xB6;sbit T1 =0 xB5;sbit T0 =0 xB4;sbit INT1=0 xB3;sbit INT0=0 xB2;sbit TXD =0 xB1;sbit RXD =0 xB0;总结:总结:n在编程时,如果只强调程序的运算速度而在编程时,如果只强调程序的运算速度而又不进行负数运算,最好采用无符号格式。又不进行负
23、数运算,最好采用无符号格式。n无论何时,应尽可能地使用无论何时,应尽可能地使用unsgned char、Bit类型,它们能被类型,它们能被8051直接接受。直接接受。C51-3 常量和变量常量和变量符号常量用大写,变量用小写符号常量用大写,变量用小写n1 1、常量、常量 又称为标量,常量的值在程序又称为标量,常量的值在程序执行过程中不能改变,一般用一个标识符执行过程中不能改变,一般用一个标识符号代表一个常量,称为符号常量。号代表一个常量,称为符号常量。符号常量符号常量的作用域:的作用域:定义这个符定义这个符号常量的整号常量的整个个C C文件文件 (1)整型常量又称为整数(可直接使用不用整型常量
24、又称为整数(可直接使用不用定义)。定义)。在在C51语言中,整数可以用十进制、八进制语言中,整数可以用十进制、八进制和十六进制形式来表示。但和十六进制形式来表示。但C51中数据的输出形中数据的输出形式只有十进制和十六进制两种。式只有十进制和十六进制两种。(2)在在C51语言中,还可以用一个语言中,还可以用一个“特别指特别指定定”的标识符来代替一个常量,称为符号常量。的标识符来代替一个常量,称为符号常量。必须必须define先定义再使用先定义再使用例:例:#define PI 3.14159 /定义符号常量定义符号常量PI=3.14159 使用符号常量的好处:使用符号常量的好处:n含义清楚、含义
展开阅读全文