第4章单片机的C语言编程.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第4章单片机的C语言编程.ppt》由会员分享,可在线阅读,更多相关《第4章单片机的C语言编程.ppt(119页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章单片机的C语言编程 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望 BASIC BASIC语言适用于简单编程而对编程效率、运行速度要求不高语言适用于简单编程而对编程效率、运行速度要求不高的场合,的场合,80528052单片机内固化有单片机内固化有BASICBASIC语言解释器。语言解释器。PL/MPL/M是一种结构化的语言,很象是一种结构化的语言,很象PASCALPASCAL,PL/MPL/M编译器好象汇编编译器好象汇编器一样产生紧凑的机器代码,可以说是高级
2、汇编语言,但它不支持器一样产生紧凑的机器代码,可以说是高级汇编语言,但它不支持复杂的算术运算,无丰富库函数支持,学习复杂的算术运算,无丰富库函数支持,学习PL/MPL/M无异于学习一种新无异于学习一种新的语言。的语言。C C语言是一种通用的程序设计语言,其语言是一种通用的程序设计语言,其代码率高代码率高,数据类型及,数据类型及运算符丰富,并具有良好的运算符丰富,并具有良好的程序结构程序结构,适用于各种应用的程序设计,适用于各种应用的程序设计,是目前使用最广的单片机编程语言。是目前使用最广的单片机编程语言。C C语言作为一种非常方便的语言而得到广泛的支持,很多硬件语言作为一种非常方便的语言而得到
3、广泛的支持,很多硬件开发都用开发都用C C语言编程,如:各种单片机、语言编程,如:各种单片机、DSPDSP、ARMARM等。等。C C语言程序本身不依赖于机器硬件系统语言程序本身不依赖于机器硬件系统,基本上不作修改或仅,基本上不作修改或仅做简单修改就可将程序从不同的单片机中做简单修改就可将程序从不同的单片机中移植移植过来直接使用。过来直接使用。C C语言提供了很多数学函数并支持浮点运算,开发效率高,故语言提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可缩短开发时间,增加程序可读性可读性和和可维护性可维护性。单片机的单片机的C C语言编程称为语言编程称为C51C51编程
4、编程,应用,应用C51C51编程具有以下优点:编程具有以下优点:(1 1)C51C51编译器编译器管理内部寄存器和存贮器的分配,编程时,无需管理内部寄存器和存贮器的分配,编程时,无需考虑不同存储器的寻址和数据类型等细节问题考虑不同存储器的寻址和数据类型等细节问题;(2 2)程序有规范的结构,可分成不同的函数,这种方式具有良)程序有规范的结构,可分成不同的函数,这种方式具有良好的好的模块化结构,使已编好程序容易移植模块化结构,使已编好程序容易移植;(3 3)有丰富的)有丰富的子程序库子程序库可直接引用,可直接引用,具有较强的数据处理能力具有较强的数据处理能力,从而大大减少用户编程的工作量;从而大
5、大减少用户编程的工作量;(4 4)C C语言和汇编语言可以交叉使用语言和汇编语言可以交叉使用。汇编语言程序代码短、运行速度快、但复杂运算编程耗汇编语言程序代码短、运行速度快、但复杂运算编程耗 时。时。用汇编语言编写与硬件有关的部分程序用汇编语言编写与硬件有关的部分程序,用用C C语言编写与硬件无关语言编写与硬件无关的运算部分程序的运算部分程序,充分发挥两种语言的长处,提高开发效率。,充分发挥两种语言的长处,提高开发效率。C51C51编译器(编译器(Keil CKeil C)与标准)与标准ANSI CANSI C编译器的主要区别编译器的主要区别 单片机单片机C C编译器之所以与编译器之所以与AN
6、SI CANSI C有所不同,主要是由于它们所有所不同,主要是由于它们所针对的针对的硬件系统硬件系统有其各自不同的特点。有其各自不同的特点。C51C51的特点和功能主要是的特点和功能主要是80C5180C51单片机自身特点引起的。单片机自身特点引起的。(1 1)头文件头文件:5151单片机有不同的厂家和系列,不同单片机的主单片机有不同的厂家和系列,不同单片机的主要区别在于内部资源,为了实现内部资源功能,只需将相应的功能要区别在于内部资源,为了实现内部资源功能,只需将相应的功能寄存器的头文件加载在程序中,就可实现指定的功能。寄存器的头文件加载在程序中,就可实现指定的功能。因此,因此,C51C51
7、系列头文件集中体现了各系列芯片的不同功能。系列头文件集中体现了各系列芯片的不同功能。(2 2)数据类型数据类型:由于由于5151系列器件包含了位操作空间和丰富的位系列器件包含了位操作空间和丰富的位操作指令,因此操作指令,因此 C51C51比比ANSI CANSI C多一种多一种位类型位类型。(3 3)数据存储类型数据存储类型:5151系列单片机有程序存储器和数据存储器。系列单片机有程序存储器和数据存储器。数据存储器又分片内和片外数据存储器。片内数据存储器还分直接数据存储器又分片内和片外数据存储器。片内数据存储器还分直接寻址区和间接寻址区,分别对应寻址区和间接寻址区,分别对应codecode、d
8、atadata、idataidata、xdataxdata以及根以及根据据80C5180C51系列特点而设定的系列特点而设定的pdatapdata类型。类型。(4 4)数据运算操作和程序控制数据运算操作和程序控制:从数据运算操作和程序控制语从数据运算操作和程序控制语句以及函数的使用上来讲,它们几乎没有什么明显的区别。只是在句以及函数的使用上来讲,它们几乎没有什么明显的区别。只是在函数的使用上,函数的使用上,由于单片机系统的资源有限,它的编译系统不允许由于单片机系统的资源有限,它的编译系统不允许太多的程序嵌套太多的程序嵌套。由于由于5151系列单片机是系列单片机是8 8位机,所以位机,所以扩展扩
9、展1616位字符位字符UnicodeUnicode不被不被C51C51支持。支持。ANSI C ANSI C所具备的所具备的递归特性不被递归特性不被C51C51支持支持,所以在,所以在C51C51中如果要使中如果要使用递归特性,必须用用递归特性,必须用REETRANTREETRANT关键字声明。关键字声明。(5 5)C51C51与标准与标准ANSI CANSI C库函数库函数:部分库函数不适合单片机处理部分库函数不适合单片机处理系统,因此被排除在外,如字符屏幕和图形函数。系统,因此被排除在外,如字符屏幕和图形函数。也有一些库函数继续使用,但这些库函数是厂家针对硬件特点也有一些库函数继续使用,但
10、这些库函数是厂家针对硬件特点相应开发的,与相应开发的,与ANSI CANSI C的构成和用法有很大的区别,如的构成和用法有很大的区别,如printfprintf和和scanfscanf。在。在ANSI CANSI C中,这两个函数通常用作中,这两个函数通常用作屏幕打印屏幕打印和和接收字符接收字符,而在而在C51C51中,主要用于中,主要用于串口数据的发送和接收串口数据的发送和接收。4.1 C514.1 C51程序结构特点程序结构特点同标准同标准C C一样,一样,C51C51的程序是由函数组成。的程序是由函数组成。C C语言的函数以语言的函数以“”“”开始,以开始,以“”“”结束。结束。其中必须
11、有一个其中必须有一个主函数主函数mainmain()(),程序的执行从主函数,程序的执行从主函数main()main()开始,调用其开始,调用其他函数后返回主函数他函数后返回主函数main()main(),最后,最后在主函数中结束整个程序在主函数中结束整个程序,而不管函数的排列而不管函数的排列顺序如何。顺序如何。C C语言的语句规则:语言的语句规则:1.1.每个变量必须先说明后引用。每个变量必须先说明后引用。2.C 2.C语言程序一行可以书写多条语句,但每个语句必须以语言程序一行可以书写多条语句,但每个语句必须以“;”结尾,一个语句也可以多行书写。结尾,一个语句也可以多行书写。3.C 3.C语
12、言的注释用语言的注释用/*/*/表示。表示。4.“”4.“”花括号必须成对花括号必须成对,位置随意,多个花括号可同行书写,位置随意,多个花括号可同行书写,也可逐行书写也可逐行书写。为层次分明,增加可读性,同一层的为层次分明,增加可读性,同一层的“”花括对齐,采用花括对齐,采用逐层缩进逐层缩进方式书写。方式书写。C C语言程序的组成结构:语言程序的组成结构:全局变量全局变量说明说明 /*/*可被各函数引用可被各函数引用*/mainmain()/*()/*主函数主函数*/局部变量局部变量说明说明 /*/*只在本函数引用只在本函数引用*/执行语句执行语句(包括函数调用语句包括函数调用语句););fu
13、n1fun1(形式参数表形式参数表)/*)/*函数函数1*/1*/形式参数说明形式参数说明 局部变量说明局部变量说明 执行语句执行语句(包括调用其他函数语句包括调用其他函数语句)funnfunn(形式参数表形式参数表)/*)/*函数函数n*/n*/形式参数说明形式参数说明 局部变量说明局部变量说明 执行语句执行语句 标识符标识符用来标识源程序中某个对象的名字,这些对象可以是语用来标识源程序中某个对象的名字,这些对象可以是语句、数据类型、函数、变量、数组等。句、数据类型、函数、变量、数组等。标识符区分大小写,第一个标识符区分大小写,第一个字符必须是字母或下划线。字符必须是字母或下划线。C51C5
14、1中有些库函数的标识符是以下划线开头的,所以中有些库函数的标识符是以下划线开头的,所以一般不要以一般不要以下划线开头命名标识符下划线开头命名标识符。C51C51编译器规定标识符最长可达编译器规定标识符最长可达255255个字符,但只有前面个字符,但只有前面3232个字个字符在编译时有效符在编译时有效,因此在编写源程序时标识符的长度不要超过,因此在编写源程序时标识符的长度不要超过3232个个字符,这对于一般应用程序来说已经足够了字符,这对于一般应用程序来说已经足够了。关键字关键字是编程语言保留的特殊标识符,有时又称为是编程语言保留的特殊标识符,有时又称为保留字保留字,它,它们具有固定名称和含义,
15、们具有固定名称和含义,在在C C语言的程序编写中不允许标识符与关语言的程序编写中不允许标识符与关键字相同键字相同。与其他计算机语言相比,与其他计算机语言相比,C C语言的关键字较少,语言的关键字较少,ANSI CANSI C标准一共标准一共规定了规定了3232个关键字。个关键字。Keil C51 Keil C51编译器的关键字除了有编译器的关键字除了有ANSI CANSI C标准的标准的3232个关键字外还个关键字外还根据根据5151单片机的特点单片机的特点扩展了相关的关键字扩展了相关的关键字。在。在Keil C51Keil C51开发环境的开发环境的文本编辑器中编写文本编辑器中编写C C程序
16、,系统可以把保留字以不同颜色显示,程序,系统可以把保留字以不同颜色显示,缺缺省颜色为蓝色省颜色为蓝色。4.2 4.2 C51C51的标识符和关键字的标识符和关键字关键字用途说明auto存储种类说明用以说明局部变量,缺省值为此break程序语句退出最内层循环体case程序语句switch语句中的选择项char数据类型说明单字节整型数或字符型数据const存储类型说明在程序执行过程中不可更改的常量值continue程序语句转向下一次循环default程序语句switch语句中的失败选择项do程序语句构成dowhile循环结构double数据类型说明双精度浮点数else程序语句构成ifelse选择结
17、构enum数据类型说明枚举extern存储种类说明在其他程序模块中说明了的全局变量float数据类型说明单精度浮点数for程序语句构成for循环结构goto程序语句构成goto转移结构if程序语句构成ifelse选择结构ANSI CANSI C标准关键字(标准关键字(1 1)ANSI CANSI C标准关键字(标准关键字(2 2)关键字用途说明int数据类型说明基本整型数long数据类型说明长整型数register存储种类说明使用CPU内部寄存的变量return程序语句函数返回short数据类型说明短整型数signed数据类型说明有符号数,二进制数据的最高位为符号位sizeof运算符计算表达式
18、或数据类型的字节数static存储种类说明静态变量struct数据类型说明结构类型数据switch程序语句构成switch选择结构typedef数据类型说明重新进行数据类型定义union数据类型说明联合类型数据unsigned数据类型说明无符号数据void数据类型说明无类型数据volatile数据类型说明该变量在程序执行中可被隐含地改变while程序语句构成while和dowhile循环结构Keil C51Keil C51编译器扩展的关键字编译器扩展的关键字(1 1)关键字用途说明_at_地址定位为变量定义存储空间绝对地址alien函数特性说明声明与PL/M51兼容的函数bdata存储器类型说
19、明可位寻址的内部RAMbit位标量声明声明一个位标量或位类型的函数code存储器类型说明程序存储器空间compact存储器模式使用外部分页RAM的存储模式data存储器类型说明直接寻址的8051内部数据存储器idata存储器类型说明间接寻址的8051内部数据存储器interrupt中断函数声明定义一个中断函数large存储器模式使用外部RAM的存储模式pdata存储器类型说明“分页”寻址的8051外部数据存储器_priority_多任务优先声明RTX51的任务优先级reentrant再入函数声明定义一个再入函数sbit位变量声明声明一个可位寻址变量sfr特殊功能寄存器声明声明一个特殊功能寄存器
20、(8位)Keil C51Keil C51编译器扩展的关键字编译器扩展的关键字(2 2)关键字用途说明sfr16特殊功能寄存器声明声明一个16位的特殊功能寄存器small存储器模式内部RAM的存储模式_task_任务声明定义实时多任务函数using寄存器组定义定义8051的工作寄存器组xdata存储器类型说明8051外部数据存储器4.3 C514.3 C51的数据类型的数据类型C51C51的数据有常量和变量之分。的数据有常量和变量之分。常量常量 在程序运行中在程序运行中其值不变其值不变的量。的量。数值型常量数值型常量:可以为十进制数、:可以为十进制数、十六进制数十六进制数(用用0 x0 x表示表
21、示)和字和字符(符(括号括起)。括号括起)。符号型常量符号型常量:用符号表示常量,此符号需用宏定义指令:用符号表示常量,此符号需用宏定义指令(#define)(#define)对其进行对其进行 定义定义(相当于汇编的相当于汇编的“EQU”EQU”伪指令伪指令)。变量变量 在程序运行中其值可以改变的量。在程序运行中其值可以改变的量。定义一个变量,编译系统就会自动为它安排一个存贮区,具体定义一个变量,编译系统就会自动为它安排一个存贮区,具体的地址值的地址值 ,用户不必在意。,用户不必在意。一个变量由一个变量由变量名变量名和和变量值变量值构成构成.变量名:存贮单元地址的符号表示。变量名:存贮单元地址
22、的符号表示。变量的值:变量所在地址单元存放的内容。变量的值:变量所在地址单元存放的内容。数据类型:数据的长度。数据类型:数据的长度。C51C51编译器支持数据类型编译器支持数据类型数数 据据 类类 型型长长 度度值值 域域位位型型bit1Bit0或或1字字符符型型signedchar1Byte-128+127unsignedchar1Byte0255整整形形signedint2Byte-32768+32767unsignedint2Byte065535signedlong4Byte-2147483648+2147483647unsignedlong4Byte04294967295实型实型Flo
23、at4Byte1.176E-383.40E+38指针型指针型data/idata/pdata1Byte1字节地址字节地址code/xdata2Byte2字节地址字节地址通用指针通用指针3Byte其中其中1字节为储存器类型编码,字节为储存器类型编码,2,3字节为地字节为地址偏移量址偏移量访问访问SFR的数据类的数据类型型sbit1Bit0或或1sfr1Byte0255sfr162Byte065535 1 1、在、在C51C51语语言程序中,有可能会出言程序中,有可能会出现现在运算中数据在运算中数据类类型不一致型不一致的情况。的情况。C51C51允允许许任何任何标标准数据准数据类类型的型的隐隐式式
24、转换转换,隐隐式式转换转换的的优优先先级顺级顺序如下:序如下:bitbitcharcharintintlonglongfloatfloatsignedsignedunsignedunsigned 2 2、也就是、也就是说说,当,当charchar型与型与intint型型进进行运算行运算时时,先自,先自动对动对charchar型型扩扩展展为为intint型,然后与型,然后与intint型型进进行运算,运算行运算,运算结结果果为为intint型。型。C51C51除了除了支持支持隐隐式式类类型型转换转换外,外,还还可以通可以通过过强强制制类类型型转换转换符符“()()”对对数据数据类类型型进进行人行
25、人为为的的强强制制转换转换。3 3、字符型、字符型(char)(char)、整型、整型(int)(int)和长整型和长整型(long)(long)均有符号型均有符号型(signed)(signed)和无符号型和无符号型(unsigned)(unsigned)两种,如果不是必须,两种,如果不是必须,尽可能选择尽可能选择unsignedunsigned型型,这将会使编译器省却符号位的检测,使生成的程序代,这将会使编译器省却符号位的检测,使生成的程序代码比码比signedsigned类型短得多。类型短得多。C5l C5l编译器除了能支持以上这些基本数据类型之外,还能支持一编译器除了能支持以上这些基本
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 语言 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内