文库网
ImageVerifierCode 换一换
首页 文库网 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

【单片机课程设计】第10章 单片机C语言程序设计.ppt

  • 资源ID:20235726       资源大小:856KB        全文页数:114页
  • 资源格式: PPT        下载积分:12.99文币
微信登录下载
快捷下载 游客一键下载
账号登录下载
三方登录下载: QQ登录 微博登录
二维码
扫码关注公众号登录
下载资源需要12.99文币
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

【单片机课程设计】第10章 单片机C语言程序设计.ppt

1、单片机资源的单片机资源的C51C51编程实例编程实例 C51数据的存储类型和存储模式数据的存储类型和存储模式 C51的数据类型与运算的数据类型与运算单片机单片机C语言概述语言概述C51程序基本结构与相关语句程序基本结构与相关语句51515151单片机系统开发常用工具软件单片机系统开发常用工具软件单片机系统开发常用工具软件单片机系统开发常用工具软件keilkeilkeilkeil C51C51C51C51 C51C51的函数的函数第第10章章单片机单片机C语言程序设计语言程序设计单片机单片机C语言概述语言概述C51的数据类型与运算的数据类型与运算C51数据的存储类型和存储模式数据的存储类型和存储

2、模式C51程序基本结构与相关语句程序基本结构与相关语句C51的函数的函数单片机资源的单片机资源的C51编程实例编程实例51单片机系统开发常用工具软件单片机系统开发常用工具软件keilC51本章本章知识点知识点 随着单片机硬件性能的不断提高和应随着单片机硬件性能的不断提高和应用技术的不断发展,开发者越来越注重用技术的不断发展,开发者越来越注重目标系统的开发成效,而开发成效在很目标系统的开发成效,而开发成效在很大程度上取决于程序本身的编写效率。大程度上取决于程序本身的编写效率。为了适应这种要求,出现了单片机高级为了适应这种要求,出现了单片机高级语言语言C语言。语言。10.1单片机单片机C语言概述语

3、言概述10.1.1C语言的特点及程序结构语言的特点及程序结构单片机的单片机的C语言编译器:德国的语言编译器:德国的KEILC51开发平台、加拿开发平台、加拿大大DAVEDUNFIELD的的MICRO-C51、美国、美国Franklin软件公软件公司的司的FranklinC51等。目前最流行的是等。目前最流行的是KeilC51编译器。编译器。一一C语言的特点语言的特点1语言简洁、紧凑,使用方便、灵活。语言简洁、紧凑,使用方便、灵活。2运算符丰富。运算符丰富。3数据结构丰富。具有现代化语言的各种数据结构。数据结构丰富。具有现代化语言的各种数据结构。4可进行结构化程序设计。可进行结构化程序设计。5可

4、以直接对计算机硬件进行操作。可以直接对计算机硬件进行操作。6生成的目标代码质量高,程序执行效率高。生成的目标代码质量高,程序执行效率高。7可移植性好。可移植性好。C语言程序采用函数结构,每个语言程序采用函数结构,每个C语言程序由一个语言程序由一个或多个函数组成,在这些函数中至少应包含一个主函数或多个函数组成,在这些函数中至少应包含一个主函数main(),也可以包含一个,也可以包含一个main()函数和若干个其它的功能函函数和若干个其它的功能函数。不管数。不管main()函数放于何处,程序总是从函数放于何处,程序总是从main()函数函数开始执行,执行到开始执行,执行到main()函数结束则结束

5、。函数结束则结束。二二C语言的程序结构语言的程序结构用用C51语言和汇编语言主要不同之处在于:语言和汇编语言主要不同之处在于:用汇编语言编写用汇编语言编写51单片机程序必须要考虑其存储器单片机程序必须要考虑其存储器结构,尤其必须考虑其片内数据存储器与特殊功能寄存结构,尤其必须考虑其片内数据存储器与特殊功能寄存器的使用以及按实际地址处理端口数据。而用器的使用以及按实际地址处理端口数据。而用C51语言语言编写的编写的51单片机应用程序,则不单片机应用程序,则不用用具体组织、分配存储具体组织、分配存储器资源和处理端口数据。但在器资源和处理端口数据。但在C51语言编程中,对数据语言编程中,对数据类型与

6、变量的定义,必须要与单片机的存储结构相关联,类型与变量的定义,必须要与单片机的存储结构相关联,否则编译器不能正确地映射定位。否则编译器不能正确地映射定位。10.1.2C语言与语言与MCS-51单片机单片机C51语言与标准语言与标准C语言程序语言程序区别区别:(1 1)C51C51中定义的库函数和标准中定义的库函数和标准中定义的库函数和标准中定义的库函数和标准C C语言定义的语言定义的语言定义的语言定义的库函数不同。库函数不同。库函数不同。库函数不同。后者后者后者后者是按通用微型计算机来定义的,是按通用微型计算机来定义的,是按通用微型计算机来定义的,是按通用微型计算机来定义的,而而而而C51C5

7、1中的库函数是按中的库函数是按中的库函数是按中的库函数是按MCS-51MCS-51单片机相应情况来单片机相应情况来单片机相应情况来单片机相应情况来定义的;定义的;定义的;定义的;(2 2)数据类型有一定的区别)数据类型有一定的区别)数据类型有一定的区别)数据类型有一定的区别。在在在在C51C51中增加了中增加了中增加了中增加了几种针对几种针对几种针对几种针对MCS-51MCS-51单片机特有的数据类型;单片机特有的数据类型;单片机特有的数据类型;单片机特有的数据类型;(3 3)C51C51中变量的存储模式与中变量的存储模式与中变量的存储模式与中变量的存储模式与MCS-51MCS-51单片机单片

8、机单片机单片机的存储器紧密相关;的存储器紧密相关;的存储器紧密相关;的存储器紧密相关;(4 4)C51C51中的输入输出是通过中的输入输出是通过中的输入输出是通过中的输入输出是通过MCS-51MCS-51串行口串行口串行口串行口来完成的,输入输出指令执行前必须要对串行口来完成的,输入输出指令执行前必须要对串行口来完成的,输入输出指令执行前必须要对串行口来完成的,输入输出指令执行前必须要对串行口进行初始化;进行初始化;进行初始化;进行初始化;(5 5)C51C51中有专门的中断函数。中有专门的中断函数。中有专门的中断函数。中有专门的中断函数。10.2C51的数据类型与运算的数据类型与运算10.2

9、.1C51的数据类型的数据类型 分为基本数据类型和扩展分为基本数据类型和扩展分为基本数据类型和扩展分为基本数据类型和扩展(组合组合组合组合)数据类型。基本数据类数据类型。基本数据类数据类型。基本数据类数据类型。基本数据类型除了标准型除了标准型除了标准型除了标准C C中的字符型中的字符型中的字符型中的字符型(char)(char)、整型、整型、整型、整型(int)(int)、长整型、长整型、长整型、长整型(long)(long)、单精浮点型、单精浮点型、单精浮点型、单精浮点型(float)(float)、双精浮点型、双精浮点型、双精浮点型、双精浮点型(double)(double)外,还外,还外

10、,还外,还有特殊功能寄存器型有特殊功能寄存器型有特殊功能寄存器型有特殊功能寄存器型(sfr(sfr和和和和sfr16sfr16两种两种两种两种)和位类型和位类型和位类型和位类型(bit(bit和和和和sbitsbit两种两种两种两种)。扩展数据类型包括数组、指针型。扩展数据类型包括数组、指针型。扩展数据类型包括数组、指针型。扩展数据类型包括数组、指针型(*)(*)以及结构以及结构以及结构以及结构(struct)(struct)和联合和联合和联合和联合(union)(union)等。等。等。等。表表10-1 KEILC51编译器支持的基本数据类型编译器支持的基本数据类型基本数据基本数据类型型说明

11、符明符长度度取取值范范围无符号字符型无符号字符型unsignedchar1字节字节0255有符号字符型有符号字符型signedchar1字节字节-128+127无符号整型无符号整型unsignedint2字节字节065535有符号整型有符号整型signedint2字节字节-32768+32767无符号无符号长整型整型unsignedlong4字节字节04294967295有符号有符号长整型整型signedlong4字节字节-2147483648+2147483647单精度浮点型精度浮点型float4字节字节 1.175494E-38 3.402823E+38位位 型型bit1位位0或或1位位

12、型型sbit1位位0或或1特殊功能寄存器型特殊功能寄存器型sfr1字节字节0255特殊功能寄存器型特殊功能寄存器型sfr162字节字节065535一字符型一字符型char signedcharsignedchar:用于定义带符号字节数据,其字节的:用于定义带符号字节数据,其字节的:用于定义带符号字节数据,其字节的:用于定义带符号字节数据,其字节的最高位为符号位,最高位为符号位,最高位为符号位,最高位为符号位,“0”0”表示正数,表示正数,表示正数,表示正数,“1”1”表示负数,补码表示负数,补码表示负数,补码表示负数,补码表示,所能表示的数值范围是表示,所能表示的数值范围是表示,所能表示的数值

13、范围是表示,所能表示的数值范围是-128+127-128+127;unsignedcharunsignedchar:用于定义无符号字节数据或字符,用于定义无符号字节数据或字符,用于定义无符号字节数据或字符,用于定义无符号字节数据或字符,可以存放一个字节的无符号数,可以存放一个字节的无符号数,可以存放一个字节的无符号数,可以存放一个字节的无符号数,也可以存放西文字符,也可以存放西文字符,也可以存放西文字符,也可以存放西文字符,取取取取值范围为值范围为值范围为值范围为02550255。二二int整型整型分分singedint和和unsignedint。默认为。默认为signedint。它们的长度均

14、为两个字节,用于存放一个双字节数据。它们的长度均为两个字节,用于存放一个双字节数据。对于对于signedint,用于存放两字节带符号数,补码表示,用于存放两字节带符号数,补码表示,数的范畴为数的范畴为-32768+32767。对于。对于unsignedint,用于,用于存放两字节无符号数,数的范围为存放两字节无符号数,数的范围为065535。三三long长整型长整型分分singedlong和和unsignedlong。默认为。默认为signedlong。它们的长度均为四个字节,用于存放一个四字节。它们的长度均为四个字节,用于存放一个四字节数据。对于数据。对于signedlong,用于存放四字节

15、带符号数,用于存放四字节带符号数,补码表示,数的范畴为补码表示,数的范畴为-2147483648+2147483647。对于对于unsignedlong,用于存放四字节无符号数,数的,用于存放四字节无符号数,数的范围为范围为04294967295。四四float浮点型浮点型长度为四个字节,包含指数和尾数两部分。最高位长度为四个字节,包含指数和尾数两部分。最高位为符号位,为符号位,“1”表示负数,表示负数,“0”表示正数。单片机中使用表示正数。单片机中使用浮点应注意以下三点:浮点应注意以下三点:由于单片机中没有专门的浮点运算硬件,因此由于单片机中没有专门的浮点运算硬件,因此在运算时会比较慢。在运

16、算时会比较慢。由于由于51单片机本身是单片机本身是8位的,因此在计算中不位的,因此在计算中不可能达到太高的精度。可能达到太高的精度。与单精浮点相比,双精浮点型与单精浮点相比,双精浮点型(double)具有更具有更高的计算精度,但计算时间会更长,速度更慢,高的计算精度,但计算时间会更长,速度更慢,C51不不支持双精浮点型。支持双精浮点型。五特殊功能寄存器型五特殊功能寄存器型分分分分sfrsfr和和和和sfr16sfr16两种类型。两种类型。两种类型。两种类型。sfrsfr:字节型特殊功能寄存器类型,占一个内存单元。字节型特殊功能寄存器类型,占一个内存单元。字节型特殊功能寄存器类型,占一个内存单元

17、。字节型特殊功能寄存器类型,占一个内存单元。利用它可以访问利用它可以访问利用它可以访问利用它可以访问MCS-51MCS-51内部的所有特殊功能寄存器内部的所有特殊功能寄存器内部的所有特殊功能寄存器内部的所有特殊功能寄存器;sfr16sfr16:双字节型特殊功能寄存器类型,占用两个字双字节型特殊功能寄存器类型,占用两个字双字节型特殊功能寄存器类型,占用两个字双字节型特殊功能寄存器类型,占用两个字节单元。利用它可以访问节单元。利用它可以访问节单元。利用它可以访问节单元。利用它可以访问MCS-51MCS-51内部的所有两个字节的内部的所有两个字节的内部的所有两个字节的内部的所有两个字节的特殊功能寄存

18、器,如特殊功能寄存器,如特殊功能寄存器,如特殊功能寄存器,如DPTRDPTR。头文件头文件头文件头文件reg51.hreg51.h:包含了所有特殊功能寄存器和对其包含了所有特殊功能寄存器和对其包含了所有特殊功能寄存器和对其包含了所有特殊功能寄存器和对其相应位的定义,通过在程序开头用相应位的定义,通过在程序开头用相应位的定义,通过在程序开头用相应位的定义,通过在程序开头用#includereg51.h#includereg51.h语语语语句包含头文件可以很容易地进行新的扩展。句包含头文件可以很容易地进行新的扩展。句包含头文件可以很容易地进行新的扩展。句包含头文件可以很容易地进行新的扩展。【例【例

19、10-1】特殊功能寄存器型数据定义。】特殊功能寄存器型数据定义。sfrSCON=0X98;/定义定义SCONsbitSM0=0X9F;/定义定义SCON的各位的各位sbitSM1=0X9E;sbitSM2=0X9D;sbitREN=0 x9C;sbitTB8=0X9B;sbitRB8=0X9A;sbitTI=0X99;sbitRI=0X98;六位类型六位类型功能:功能:用于访问用于访问MCS-51单片机中的可寻址的位单元。单片机中的可寻址的位单元。bit型:型:定义的位变量在定义的位变量在C51编译器编译时,在不同的编译器编译时,在不同的时候位地址是可以变化的。时候位地址是可以变化的。sbit

20、型:型:定义的位变量必须与定义的位变量必须与MCS-51单片机的一个可单片机的一个可以寻址位单元或可位寻址的字节单元中的某一位联系在以寻址位单元或可位寻址的字节单元中的某一位联系在一起。在一起。在C51编译器编译时,其对应的位地址是不可变编译器编译时,其对应的位地址是不可变化的。化的。隐式式转换:出出现在运算中数据在运算中数据类型不一致型不一致时,按下,按下列列转换的的优先先级顺序:序:bitcharintlongfloatsignedunsigned例:当例:当char型与型与int型型进行运算行运算时,先自,先自动对char型型扩展展为int型,然后与型,然后与int型型进行运算,运算行运

21、算,运算结果果为int型。型。强强制制类型型转换符符“()()”:对数据数据类型型进行人行人为的的强强制制转换。10.2.2关于指针型数据关于指针型数据指针指针(*)是一种特殊的数据类型,指向变量的地是一种特殊的数据类型,指向变量的地址,实质上指针就是存储单元的地址。址,实质上指针就是存储单元的地址。在在C51中它的长度一般为中它的长度一般为13个字节。根据所指个字节。根据所指的变量类型不同,可以是字符型指针的变量类型不同,可以是字符型指针(char*)、整型、整型指针指针(int*)、长整型指针、长整型指针(long*)、浮点型指针、浮点型指针(float*)及结构指针及结构指针(struc

22、t*)与联合指针与联合指针(union*)。1.一般指针一般指针一般指针的声明和使用均与标准一般指针的声明和使用均与标准C相同,不过同时还能说明指针的存储类型,例如:相同,不过同时还能说明指针的存储类型,例如:long*state;/为一个指向为一个指向long型整数的指针,型整数的指针,而而state本身则依存储模式存放。本身则依存储模式存放。char*xdataptr;/ptr为一个指向为一个指向char数据的指针数据的指针,而,而ptr本身放于外部本身放于外部RAM区。区。一般指针本身用一般指针本身用3个字节存放,分别为存储器类型、个字节存放,分别为存储器类型、高位偏移量、低位偏移量。高

23、位偏移量、低位偏移量。2.存储器指针存储器指针基于存储器的指针说明时即指基于存储器的指针说明时即指定了存储类型,例如:定了存储类型,例如:chardata*str;/str指向指向data区中区中char型数据。型数据。intxdata*pow;/pow指向外部指向外部RAM的的int型型整数。整数。存放时,只需一个字节或存放时,只需一个字节或2个字节就够了,因个字节就够了,因为只需存放偏移量。为只需存放偏移量。10.2.3C51的运算符的运算符运算符运算符:完成某种特定运算的符号。完成某种特定运算的符号。C51常见的常见的运算符有算术运算符、赋值运算符、关系运算符、运算符有算术运算符、赋值运

24、算符、关系运算符、逻辑运算符、按位运算符和联合逻辑运算符、按位运算符和联合(复合赋值复合赋值)运算符。运算符。除此之外,还有一些用于完成特殊任务的运算符,除此之外,还有一些用于完成特殊任务的运算符,如逗号运算符、条件运算符、指针与地址运算符。如逗号运算符、条件运算符、指针与地址运算符。1.常见的运算符常见的运算符1).算术运算符算术运算符符符 号号意意 义义+加或取正值运算符加或取正值运算符-减或取负值运算符减或取负值运算符*乘运算符乘运算符/除运算符除运算符+变量自加变量自加1 1-变量自减变量自减1 1%取余运算符取余运算符在实际编程中,为了程序的简练,经常使用在实际编程中,为了程序的简练

25、,经常使用i+与与+i这样的语句。这样的语句。i+是先进行运算,再执行是先进行运算,再执行i=i+1的操作的操作;而而+i则是先执行则是先执行i=i+1的操作,的操作,再进行运算。再进行运算。例:例:intx=0,y=0;y=x+;/执行后执行后y的值仍为的值仍为0而而intx=0,y=0;y=+x;/执行后执行后y的值则为的值则为12).赋值运算符赋值运算符“=”功能功能:将一个数据的值赋给一个变量,如将一个数据的值赋给一个变量,如x=10。赋值表达式赋值表达式:利用赋值运算符将一个变量与一个表利用赋值运算符将一个变量与一个表达式连接起来的式子称为赋值表达式。达式连接起来的式子称为赋值表达式

26、。赋值语句赋值语句:在赋值表达式的后面加一个分号在赋值表达式的后面加一个分号“;”就就构成了赋值语句。一个赋值语句的格式如下:构成了赋值语句。一个赋值语句的格式如下:变量变量=表达式表达式;执行时先计算出右边表达式的值,然后赋给左执行时先计算出右边表达式的值,然后赋给左边的变量。例如:边的变量。例如:x=8+9x=8+9;/将将8+98+9的值赋绐变量的值赋绐变量x x x=y=5 x=y=5;/将常数将常数5 5同时赋给变量同时赋给变量x x和和y y 在在C51C51中,中,允许在一个语句中同时给多个变量赋值允许在一个语句中同时给多个变量赋值,赋值赋值顺序自右向左。顺序自右向左。符符号号意

27、意义大于大于=大于等于大于等于3,结果为真,结果为真(1),而,而10=100,结果为假,结果为假(0)。注意:注意:关系运算符等于关系运算符等于“=”是由两个是由两个“=”组成。组成。4).逻辑运算符逻辑运算符C51有有3种逻辑运算符:种逻辑运算符:|逻辑或逻辑或&逻辑与逻辑与!逻辑非逻辑非关系运算符用于反关系运算符用于反映两个表达式之间的大映两个表达式之间的大小关系,逻辑运算符则小关系,逻辑运算符则用于求条件式的逻辑值,用于求条件式的逻辑值,用逻辑运算符将关系表用逻辑运算符将关系表达式或逻辑量连接起来达式或逻辑量连接起来的式子就是逻辑表达式。的式子就是逻辑表达式。逻辑与逻辑与,格式:,格式

28、:条件式条件式1&条件式条件式2当条件式当条件式1与条件式与条件式2都为真时都为真时结果为真(非结果为真(非0值),否则为假(值),否则为假(0值)。值)。逻辑或逻辑或,格式:,格式:条件式条件式1|条件式条件式2当条件式当条件式1与条件式与条件式2都为假时都为假时结果为假(结果为假(0值),否则为真(非值),否则为真(非0值)。值)。逻辑非逻辑非,格式:,格式:!条件式!条件式当条件式原来为真(非当条件式原来为真(非0值),值),逻辑非后结果为假(逻辑非后结果为假(0值)。当条值)。当条件式原来为假(件式原来为假(0值),逻辑非后值),逻辑非后结果为真(非结果为真(非0值)。值)。例如:若例

29、如:若a=8,b=3,c=0,则!,则!a为假,为假,a&b为真,为真,b&c为假。为假。5).位运算符位运算符位运算是按位对变量进行运算,但并不改位运算是按位对变量进行运算,但并不改变参与运算的变量的值。如果要求按位改变变参与运算的变量的值。如果要求按位改变变量的值,则要利用相应的赋值运算。变量的值,则要利用相应的赋值运算。C51中位运算符只能对整数进行操作,不能对浮中位运算符只能对整数进行操作,不能对浮点数进行操作。点数进行操作。C51中的位运算符有:中的位运算符有:符符号号意意义&按位与按位与|按位或按位或按位取反按位取反按位异或按位异或右移右移【例【例10-1】设】设a=0 x78=0

30、1111000B,b=0 x0f=00001111B,则,则a&b、a|b、ab、a、a2分别为多少?分别为多少?a&b=00001000b=0 x08;a|b=01111111B=0 x7f;ab=01110111B=0 x77;a=10000111B=0 x87;a2=00000011B=0 x03;6).联合联合(复合赋值复合赋值)运算符运算符C51语言中支持在赋值运算符语言中支持在赋值运算符“=”的前面加上其的前面加上其它运算符,组成联合它运算符,组成联合(复合赋值复合赋值)。+=加法加法赋值-=减法减法赋值*=乘法乘法赋值/=除法除法赋值%=取模取模赋值&=逻辑与与赋值|=逻辑或或赋

31、值=逻辑异或异或赋值=逻辑非非赋值=右移位右移位赋值b)?a:b的执行结果是的执行结果是将将a和和b中较大的数赋值给变量中较大的数赋值给变量max。9).指针与地址运算符指针与地址运算符变量的指针就是该变量的地址,还可以定义变量的指针就是该变量的地址,还可以定义一个专门指向某个变量的地址的指针变量。一个专门指向某个变量的地址的指针变量。C51中提供了两个专门的运算符:中提供了两个专门的运算符:*指针运算符指针运算符&取地址运算符取地址运算符2.C51的运算量的运算量1).).常量常量常量是指在程序常量是指在程序执行行过程中其程中其值不能改不能改变的量。的量。C51支持整型常量、浮点型常量、字符

32、型常量和字符串型常量。支持整型常量、浮点型常量、字符型常量和字符串型常量。整型常量整型常量整型常量也就是整型常数,根据其整型常量也就是整型常数,根据其值范范围在在计算机中算机中分配不同的字分配不同的字节数来存放。数来存放。十十进制整数制整数。如。如234、-56、0等。等。十六进制整数十六进制整数。以。以0 x开头表示,如开头表示,如0 x12表示十六进制表示十六进制数数12H。长整数长整数。在存储器中占四个字节,另外,如一个整数。在存储器中占四个字节,另外,如一个整数后面加一个字母后面加一个字母L,这个数在存储器中也按长整型存放。,这个数在存储器中也按长整型存放。如如123L在存储器中占四个

33、字节。在存储器中占四个字节。浮点型常量浮点型常量浮点型常量也就是实型常数。有十进制表示形式浮点型常量也就是实型常数。有十进制表示形式和指数表示形式。和指数表示形式。十进制表示形式又称定点表示形式,由数字和小十进制表示形式又称定点表示形式,由数字和小数点组成。如数点组成。如0.123、38.645等都是十进制数表示形等都是十进制数表示形式的浮点型常量。式的浮点型常量。指数表示形式为:指数表示形式为:数字数字.数字数字e数字数字例如:例如:123.456e-3、-3.123e2等都是指数形式等都是指数形式的浮点型常量。的浮点型常量。字符型常量字符型常量字符型常量是用单引号引起的字符,如字符型常量是

34、用单引号引起的字符,如a a、1 1、F F等。可以是可显示的等。可以是可显示的ASCIIASCII字符,也字符,也可以是不可显示的控制字符。对不可显示的控制字可以是不可显示的控制字符。对不可显示的控制字符须在前面加上反斜杠符须在前面加上反斜杠“”组成转义字符。利用组成转义字符。利用它可以完成一些特殊功能和输出时的格式控制。常它可以完成一些特殊功能和输出时的格式控制。常用的转义字符如表用的转义字符如表10-210-2所示。所示。转义字符字符 含含义ASCII码(十六(十六进制数)制数)o空字符(空字符(null)00Hn换行符(行符(LF)0AHr回回车符(符(CR)0DHt水平制表符(水平制

35、表符(HT)09Hb退格符(退格符(BS)08Hf换页符(符(FF)0CH单引号引号27H”双引号双引号22H反斜杠反斜杠5CH字符串型常量字符串型常量字符串型常量由双引号字符串型常量由双引号“”括起的字符组成。如括起的字符组成。如“D”、“1234”、“ABCD”等。一个字符串常量在等。一个字符串常量在内存中存放时不仅双引号内的字符一个占一个字节,内存中存放时不仅双引号内的字符一个占一个字节,而且系统会自动的在后面加一个转义字符而且系统会自动的在后面加一个转义字符“o”作为作为字符串结束符。不要将字符常量和字符串常量混淆,字符串结束符。不要将字符常量和字符串常量混淆,如字符常量如字符常量A和

36、字符串常量和字符串常量“A”是不一样的。是不一样的。2).变量变量变量变量定义的格式如下:定义的格式如下:存储种类存储种类数据类型说明符数据类型说明符存储器类型存储器类型变量名变量名1=初值初值,变量名,变量名2初值初值;变量名由字母、数字和下划线三种字符组成,且变量名由字母、数字和下划线三种字符组成,且第一个字母必须为字母或下划线。第一个字母必须为字母或下划线。变量名有两种:普通变量名和指针变量名。它们变量名有两种:普通变量名和指针变量名。它们的区别是指针变量名前面要带的区别是指针变量名前面要带“*”号。号。另外,在另外,在C51中,为了增加程序的可读性,允许用中,为了增加程序的可读性,允许

37、用户为系统固有的数据类型说明符用户为系统固有的数据类型说明符用typedef起别名,格起别名,格式如下:式如下:typedefc51固有的数据类型说明符固有的数据类型说明符别名别名;定义别名后,就可以用别名代替数据类型说明符对定义别名后,就可以用别名代替数据类型说明符对变量进行定义。别名可以用大写,也可以用小写,为变量进行定义。别名可以用大写,也可以用小写,为了区别一般用大写字母表示。了区别一般用大写字母表示。【例【例10-2】typedef的使用。的使用。typedefunsignedintWORD;typedefunsignedcharBYTE;BYTEa1=0 x12;WORDa2=0

38、x1234;变量的存储种类是指变量在程序执行过程中的作用变量的存储种类是指变量在程序执行过程中的作用范围。范围。C51变量的存储种类有四种,分别是变量的存储种类有四种,分别是自动自动(auto)、外部外部(extern)、静态、静态(static)和寄存器和寄存器(register)。auto使用使用auto定义的变量称为自动变量,其作用范围定义的变量称为自动变量,其作用范围在定义它的函数体或复合语句内部,自动变量一般分在定义它的函数体或复合语句内部,自动变量一般分配在内存的堆栈空间中。定义变量时,如果省略存储配在内存的堆栈空间中。定义变量时,如果省略存储种类,则该变量默认为自动种类,则该变量

39、默认为自动(auto)变量。变量。extern extern使用使用externextern定义的变量称为外部变量。在一个函数体内,定义的变量称为外部变量。在一个函数体内,要使用一个已在该函数体外或别的程序中定义过的外部变量时,要使用一个已在该函数体外或别的程序中定义过的外部变量时,该变量在该函数体内要用该变量在该函数体内要用externextern说明。外部变量被定义后分配说明。外部变量被定义后分配固定的内存空间,在程序整个执行时间内都有效,直到程序结固定的内存空间,在程序整个执行时间内都有效,直到程序结束才释放。束才释放。static static使用使用staticstatic定义的变量

40、称为静态变量。它又分为内部静定义的变量称为静态变量。它又分为内部静态变量和外部静态变量。在函数体内部定义的静态变量为内部态变量和外部静态变量。在函数体内部定义的静态变量为内部静态变量,它在对应的函数体内有效静态变量,它在对应的函数体内有效;外部静态变量是在函数外外部静态变量是在函数外部定义的静态变量。部定义的静态变量。register使用使用register定义的变量称为寄存器变量。它定义的定义的变量称为寄存器变量。它定义的变量存放在变量存放在CPU内部的寄存器中,处理速度快,但数目少。内部的寄存器中,处理速度快,但数目少。C51编译器编译时能自动识别程序中使用频率最高的变量,编译器编译时能自

41、动识别程序中使用频率最高的变量,并自动将其作为寄存器变量,用户可以无需专门声明。并自动将其作为寄存器变量,用户可以无需专门声明。3).位变量位变量在在C51中,允许用户通过位类型符定义位变量。位类中,允许用户通过位类型符定义位变量。位类型符有两个:型符有两个:bit和和sbit。可以定义两种位变量。可以定义两种位变量。bit位类型符用于定义一般的可位处理位变量。它的格位类型符用于定义一般的可位处理位变量。它的格式如下:式如下:bit位变量名位变量名;sbit位类型符用于定义在可位寻址字节或特殊功位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时须指明其位地址,可以是能寄存器中的位,定

42、义时须指明其位地址,可以是位直接地址,也可以是可位寻址变量带位号,还可位直接地址,也可以是可位寻址变量带位号,还可以是特殊功能寄存器名带位号。格式如下:以是特殊功能寄存器名带位号。格式如下:格式一格式一:sbit位变量名位变量名=特殊功能寄存器名带位特殊功能寄存器名带位号号;例如:例如:sbitOV=PSW2;/定义定义OV位为位为PSW.2,地址为,地址为D2HsbitCY=PSW7;/定义定义CY位为位为PSW.7,地,地址为址为D7H格式二格式二:sbit位变量名位变量名=寄存器的字节地址带位号寄存器的字节地址带位号;例如:例如:sbitOV=0XD02;/定义定义OV位地址是位地址是D

43、0H字节中的字节中的第第2位位sbitCY=0XD07;/定义定义CY位地址是位地址是D0H字节中的字节中的第第7位位格式三格式三:sbit位变量名位变量名=寻址位的绝对位地址寻址位的绝对位地址;例如:例如:sbitOV=0XD2;/定义定义OV位地址为位地址为D2HsbitCY=0XD7;/定义定义CY位地址为位地址为D7H特殊功能位代表了一个独立的定义类,不能与其它位特殊功能位代表了一个独立的定义类,不能与其它位定义和位域互换。定义和位域互换。4).4).特殊功能寄存器变量特殊功能寄存器变量C51定义特殊功能寄存器变量的一般语法格式如下:定义特殊功能寄存器变量的一般语法格式如下:sfr/s

44、fr16sfr-name=intconstant;或写为:或写为:sfr(或或sfr16)特殊功能寄存器名特殊功能寄存器名=地址地址(整型常数整型常数);sfr16用于对双字节特殊功能寄存器进行定义,特用于对双字节特殊功能寄存器进行定义,特殊功能寄存器名一般用大写字母表示。地址一般用直殊功能寄存器名一般用大写字母表示。地址一般用直接地址形式,以整型常数表示,范围必须在接地址形式,以整型常数表示,范围必须在SFR地址地址范围内,位于范围内,位于0 x800 xFF,不允许带有运算符的表达,不允许带有运算符的表达式。式。【例【例10-3】特殊功能寄存器的定义举例。】特殊功能寄存器的定义举例。sfr

45、SCON=0 x98;/串口控制寄存器地串口控制寄存器地址址98HsfrTMOD=0 x89;/定时器定时器/计数器方计数器方式控制寄存器地址式控制寄存器地址89HsfrP1=0 x90;/P1口的地址口的地址90Hsfr16DPTR=0 x82;/数据指针数据指针DPTR的地的地址址82H10.3.1数据的存储类型数据的存储类型定义变量类型时,还必须定义它的存储类型,变定义变量类型时,还必须定义它的存储类型,变量的存储类型是用于指明变量所处的单片机的存量的存储类型是用于指明变量所处的单片机的存储器区域情况。储器区域情况。C51编译器能识别的存储类型有编译器能识别的存储类型有以下几种,如表以下

46、几种,如表10-3所示。所示。10.3数据的存储类型和存储模式数据的存储类型和存储模式表表10-3C51的变量的存储类型及其数据长度和值域的变量的存储类型及其数据长度和值域存储存储类型类型长度长度(位位)值域范围值域范围描描 述述data800FFH直接寻址的片内RAM低128B,访问速度快bdata字节访问:8位访问:1202FH007FH片内RAM的20H2FH单元,允许字节和位混合访问idata800FFH间接寻址访问的片内RAM,允许访问全部片内RAMpdata800FFH用Ri间接访问的片外RAM的低256Bxdata160000FFFFH用DPTR间接访问的64k片外RAMcode

47、160000FFFFH程序存储器ROM 64k空间带存储类型的变量的定义的一般格式为带存储类型的变量的定义的一般格式为:数据类型数据类型存储类型存储类型变量名变量名访问内部数据存储器访问内部数据存储器(idata)比访问外部数据存储比访问外部数据存储器器(xdata)相对要快一些。因此,可将经常使用的变相对要快一些。因此,可将经常使用的变量置于内部数据存储器中,而将较大及很少使用的数量置于内部数据存储器中,而将较大及很少使用的数据变量置于外部数据存储器中。例如定义变量据变量置于外部数据存储器中。例如定义变量x语句:语句:datacharx(等价于等价于chardatax)。【例【例10-4】变

48、量定义过程中存储种类和存储器类型举例。】变量定义过程中存储种类和存储器类型举例。chardatavarl;/在片内在片内RAM低低128B定义用直接定义用直接寻址方式访问的字符型变量寻址方式访问的字符型变量var1intidatavar2;/在片内在片内RAM256B定义用间接寻定义用间接寻址方式访问的整型变量址方式访问的整型变量var2unsignedintpdatasion;/在片外在片外RAM的低的低256B定定义无符号整型变量义无符号整型变量sion【例【例10-5】带存储类型的带存储类型的bit型变量的定义。型变量的定义。bitdataa1;/正确正确bitbdataa2;/正确正确

49、bitpdataa3;/错误错误bitxdataa4;/错误错误10.3.2存储模式存储模式1.SMALL模式模式:SMALL模式称为小编译模式。模式称为小编译模式。在在SMALL模式下,编译时参数及局部变量放入可直模式下,编译时参数及局部变量放入可直接寻址片内接寻址片内RAM的用户区中的用户区中(最大最大128字节字节)。一般来。一般来说,如果系统所需要的内存数小于内部说,如果系统所需要的内存数小于内部RAM数时都数时都应以小存储模式进行编译。应以小存储模式进行编译。优优点:点:存取速度很快存取速度很快缺点缺点:供用户使用的存储空间小。供用户使用的存储空间小。2.COMPACT2.COMPA

50、CT模式模式:COMPACT COMPACT模式称为紧凑编译模模式称为紧凑编译模式。在式。在COMPACTCOMPACT模式下,编译时函数参数及局部变量模式下,编译时函数参数及局部变量被放在片外被放在片外RAMRAM的低的低256256字节空间,通过字节空间,通过R0R0或或R1R1间间接访问,存储器类型为接访问,存储器类型为pdatapdata。3.LARGE3.LARGE模式模式:LARGELARGE模式称为大编译模式。在模式称为大编译模式。在LARGELARGE模式下,编译时函数参数和局部变量被默认在模式下,编译时函数参数和局部变量被默认在片外片外RAMRAM的的64K64K字节空间,使


注意事项

本文(【单片机课程设计】第10章 单片机C语言程序设计.ppt)为本站会员(鼎天工程图书馆)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(点击联系客服),我们立即给予删除!




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

文库网用户QQ群:731843829  微博官方号:文库网官方   知乎号:文库网

Copyright© 2025 文库网 wenkunet.com 网站版权所有世界地图

经营许可证编号:粤ICP备2021046453号   营业执照商标

1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png