【单片机课程设计】第10章 单片机C语言程序设计.ppt
《【单片机课程设计】第10章 单片机C语言程序设计.ppt》由会员分享,可在线阅读,更多相关《【单片机课程设计】第10章 单片机C语言程序设计.ppt(114页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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位
12、位0或或1位位 型型sbit1位位0或或1特殊功能寄存器型特殊功能寄存器型sfr1字节字节0255特殊功能寄存器型特殊功能寄存器型sfr162字节字节065535一字符型一字符型char signedcharsignedchar:用于定义带符号字节数据,其字节的:用于定义带符号字节数据,其字节的:用于定义带符号字节数据,其字节的:用于定义带符号字节数据,其字节的最高位为符号位,最高位为符号位,最高位为符号位,最高位为符号位,“0”0”表示正数,表示正数,表示正数,表示正数,“1”1”表示负数,补码表示负数,补码表示负数,补码表示负数,补码表示,所能表示的数值范围是表示,所能表示的数值范围是表示
13、,所能表示的数值范围是表示,所能表示的数值范围是-128+127-128+127;unsignedcharunsignedchar:用于定义无符号字节数据或字符,用于定义无符号字节数据或字符,用于定义无符号字节数据或字符,用于定义无符号字节数据或字符,可以存放一个字节的无符号数,可以存放一个字节的无符号数,可以存放一个字节的无符号数,可以存放一个字节的无符号数,也可以存放西文字符,也可以存放西文字符,也可以存放西文字符,也可以存放西文字符,取取取取值范围为值范围为值范围为值范围为02550255。二二int整型整型分分singedint和和unsignedint。默认为。默认为signedin
14、t。它们的长度均为两个字节,用于存放一个双字节数据。它们的长度均为两个字节,用于存放一个双字节数据。对于对于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编译器编译时,在不同的编译器编译时,在不同的时候位地址是可以变化的。时候位地址是可以
20、变化的。sbit型:型:定义的位变量必须与定义的位变量必须与MCS-51单片机的一个可单片机的一个可以寻址位单元或可位寻址的字节单元中的某一位联系在以寻址位单元或可位寻址的字节单元中的某一位联系在一起。在一起。在C51编译器编译时,其对应的位地址是不可变编译器编译时,其对应的位地址是不可变化的。化的。隐隐式式转换转换:出出现现在运算中数据在运算中数据类类型不一致型不一致时时,按下,按下列列转换转换的的优优先先级顺级顺序:序:bitcharintlongfloatsignedunsigned例:当例:当char型与型与int型型进进行运算行运算时时,先自,先自动对动对char型型扩扩展展为为in
21、t型,然后与型,然后与int型型进进行运算,运算行运算,运算结结果果为为int型。型。强强制制类类型型转换转换符符“()()”:对对数据数据类类型型进进行人行人为为的的强强制制转换转换。10.2.2关于指针型数据关于指针型数据指针指针(*)是一种特殊的数据类型,指向变量的地是一种特殊的数据类型,指向变量的地址,实质上指针就是存储单元的地址。址,实质上指针就是存储单元的地址。在在C51中它的长度一般为中它的长度一般为13个字节。根据所指个字节。根据所指的变量类型不同,可以是字符型指针的变量类型不同,可以是字符型指针(char*)、整型、整型指针指针(int*)、长整型指针、长整型指针(long*
22、)、浮点型指针、浮点型指针(float*)及结构指针及结构指针(struct*)与联合指针与联合指针(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。赋值表达式赋值表达式:利用赋值运算符将一个变量与一个表利用赋值运算符将一个变量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计 【单片机课程设计】第10章 单片机C语言程序设计 单片机 课程设计 10 语言程序设计
限制150内