单片机C语言程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机C语言程序设计课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 语言程序设计 课件
- 资源描述:
-
1、第第5 5章章 单片机单片机C51C51程序设计基础程序设计基础5.1 C语言与MCS-51单片机5.1.1 C5.1.1 C语言的特点及程序结构语言的特点及程序结构一一C C语言的特点语言的特点1 1语言简洁、紧凑,使用方便、灵活。语言简洁、紧凑,使用方便、灵活。2 2运算符丰富。运算符丰富。3 3数据结构丰富。具有现代化语言的各种数据结构。数据结构丰富。具有现代化语言的各种数据结构。4 4可进行结构化程序设计。可进行结构化程序设计。5 5可以直接对计算机硬件进行操作。可以直接对计算机硬件进行操作。6 6生成的目标代码质量高,程序执行效率高。生成的目标代码质量高,程序执行效率高。7 7可移植
2、性好。可移植性好。二二C C语言的程序结构语言的程序结构 C语言程序采用函数结构,每个C语言程序由一个或多个函数组成,在这些函数中至少应包含一个主函数main(),也可以包含一个main()函数和若干个其它的功能函数。不管main()函数放于何处,程序总是从main()函数开始执行,执行到main()函数结束则结束。在main()函数中调用其它函数,其它函数也可以相互调用,但main()函数只能调用其它的功能函数,而不能被其它的函数所调用。功能函数可以是C语言编译器提供的库函数,也可以是由用户定义的自定义函数。在编制C程序时,程序的开始部分一般是预处理命令、函数说明和变量定义等。第四章 单片机
3、C语言程序设计C语言程序结构一般如下:预处理命令预处理命令 include 函数说明函数说明 long fun1();float fun2();变量定义变量定义 int x,y;float z;功能函功能函数数主函数主函数功能函数功能函数fun1()fun1()函数体函数体 main()main()主函数体主函数体 fun2()fun2()函数体函数体 函数函数:由由“函数定义函数定义”和和“函数体函数体”两个部分组成。两个部分组成。函数定义函数定义:包括有函数类型、函数名、形式参数说包括有函数类型、函数名、形式参数说明等,函数名后面必须跟一个圆括号(),形式明等,函数名后面必须跟一个圆括号(
4、),形式参数在()内定义。参数在()内定义。函数体函数体:由一对花括号由一对花括号“”组成,在组成,在“”的内容的内容就是函数体。函数体内包含若干语句,一般由两就是函数体。函数体内包含若干语句,一般由两部分组成:声明语句和执行语句。部分组成:声明语句和执行语句。声明语句声明语句:用于对函数中用到的变量进行定义。用于对函数中用到的变量进行定义。执行语句执行语句:由若干语句组成,用来完成一定功能。由若干语句组成,用来完成一定功能。5.1.2 C515.1.2 C51与汇编和标准与汇编和标准C C的区别的区别一、一、C51与汇编的区别二、二、C51与标准C的区别一、C51与汇编的区别*用汇编语言编写
5、MCS51单片机程序必须要考虑其存储器结构,考虑其片内数据存储器与特殊功能寄存器的使用等。*用C语言编写的MCS51单片机应用程序,不用像汇编语言那样须具体组织、分配存储器资源和处理端口数据,但对数据类型与变量的定义,必须要与单片机的存储结构相关联,否则编译器不能正确地映射定位。二、C51与标准C的区别 C语言编写单片机应用程序时,需根据单片机存储结构及内部资源定义相应的数据类型和变量,而标准的C语言程序不需要考虑这些问题。Note:Note:现在支持现在支持MCS-51MCS-51系列单片机的系列单片机的C C语言编译器有很多种,如语言编译器有很多种,如American Automation
6、American Automation、AvocetAvocet、BSO/TASKINGBSO/TASKING、DUNFIELD SHAREWAREDUNFIELD SHAREWARE、KEILKEIL/Franklin/Franklin等。各种编译器的基本情况相同,但具体处理时有一定的等。各种编译器的基本情况相同,但具体处理时有一定的区别,其中区别,其中KEIL/FranklinKEIL/Franklin以它的代码紧凑和使用方便等特点优于其它编以它的代码紧凑和使用方便等特点优于其它编译器,现在使用特别广泛。本课程以译器,现在使用特别广泛。本课程以KEIL/FranklinKEIL/Frank
7、lin编译器介绍编译器介绍MCS-51MCS-51单片机单片机C C语言程序设计。语言程序设计。C51C51的语法规定、程序结构及程序设计方法都与标准的的语法规定、程序结构及程序设计方法都与标准的C C语言语言程序设计相同,但程序设计相同,但C51C51程序与标准的程序与标准的C C程序在以下几个方面不一程序在以下几个方面不一样:样:(1 1)C51C51中定义的库函数和标准中定义的库函数和标准C C语言定义的语言定义的库函数不同库函数不同。标。标准的准的C C语言定义的库函数是按通用微型计算机来定义的,而语言定义的库函数是按通用微型计算机来定义的,而C51C51中的库函数是按中的库函数是按M
8、CS-51MCS-51单片机相应情况来定义的;单片机相应情况来定义的;(2 2)C51C51中的数据类型与标准中的数据类型与标准C C的的数据类型也有一定的区别数据类型也有一定的区别,在在C51C51中还增加了几种针对中还增加了几种针对MCS-51MCS-51单片机特有的数据类型;单片机特有的数据类型;(3 3)C51C51变量的存储模式与标准变量的存储模式与标准C C中变量的中变量的存储模式不一样存储模式不一样,C51C51中变量的存储模式是与中变量的存储模式是与MCS-51MCS-51单片机的存储器紧密相关;单片机的存储器紧密相关;(4 4)C51C51与标准与标准C C的的输入输出处理不
9、一样输入输出处理不一样,C51C51中的输入输出中的输入输出是通过是通过MCS-51MCS-51串行口来完成的,输入输出指令执行前必须要对串行口来完成的,输入输出指令执行前必须要对串行口进行初始化;串行口进行初始化;(5 5)C51C51与标准与标准C C在在函数使用函数使用方面也有一定的区别,方面也有一定的区别,C51C51中有中有专门的中断函数。专门的中断函数。基本数据类型基本数据类型长度长度取值范围取值范围unsigned char1字节字节0255signed char1字节字节-128+127unsigned int2字节字节065535signed int2字节字节-32768+3
10、2767unsigned long4字节字节04294967295signed long4字节字节-2147483648+2147483647float4字节字节 1.175494E-38 3.402823E+38bit1位位0或或1(位变量位变量)Sbit1位位0或或1(从字节中声明的位变量从字节中声明的位变量)sfr1字节字节0255(特殊功能寄存器,特殊功能寄存器,8位位)sfr162字节字节065535(特殊功能寄存器,特殊功能寄存器,16位位)5.2 C515.2 C51的数据类型的数据类型在C51语言程序中,有可能会出现在运算中数据类型不一致的情况。C51允许任何标准数据类型的隐式
11、转换,隐式转换的优先级顺序如下:bitcharintlongfloatsignedunsigned当char型与int型进行运算时,先自动对char型扩展为int型,然后与int型进行运算,运算结果为int型。C51除了支持隐式类型转换外,还可以通过强制类型转换符“()”对数据类型进行人为的强制转换。5.3 C515.3 C51的运算量的运算量5.3.1 5.3.1 常量常量常量是指在程序执行过程中其值不能改变的量。在常量是指在程序执行过程中其值不能改变的量。在C51C51中支持整型常量、中支持整型常量、浮点型常量、字符型常量和字符串型常量。浮点型常量、字符型常量和字符串型常量。一整型常量一整
12、型常量 整型常量也就是整型常数,根据其值范围在计算机中分配不同整型常量也就是整型常数,根据其值范围在计算机中分配不同的字节数来存放。在的字节数来存放。在C51C51中它可以表示成以下几种形式:中它可以表示成以下几种形式:十进制整数十进制整数。如。如234234、-56-56、0 0等。等。十六进制整数十六进制整数。以。以0 x0 x开头表示,如开头表示,如0 x120 x12表示十六进制数表示十六进制数12H12H。长整数。在长整数。在C51C51中当一个整数的值达到长整型的范围,则该数中当一个整数的值达到长整型的范围,则该数按长整型存放,在存储器中占四个字节,另外,如一个整数后面加按长整型存
13、放,在存储器中占四个字节,另外,如一个整数后面加一个字母一个字母L L,这个数在存储器中也按长整型存放。如,这个数在存储器中也按长整型存放。如123L123L在存储器中在存储器中占四个字节。占四个字节。二浮点型常量二浮点型常量 浮点型常量也就是实型常数。有十进制表示形式和指数表示形式。十进制表示形式又称定点表示形式,由数字和小数点组成。如0.123、34.645等都是十进制数表示形式的浮点型常量。指数表示形式为:数字.数字 e 数字 例如:123.456e-3、-3.123e2等都是指数形式的浮点型常量。转义字符含 义ASCII码(十六进制数)0空字符(nu ll)00H n换行符(LF)0A
14、H r回车符(CR)0DH t水平制表符(HT)09H b退格符(BS)08H f换页符(FF)0CH 单引号27H”双引号22H 反斜杠5CH三字符型常量三字符型常量 字符型常量是用单引号引起的字符,如a、1、F等。可以是可显示的ASCII字符,也可以是不可显示的控制字符。对不可显示的控制字符须在前面加上反斜杠“”组成转义字符。利用它可以完成一些特殊功能和输出时的格式控制。常用的转义字符如下表所示。第四章 单片机C语言程序设计 四字符串型常量四字符串型常量 字符串型常量由双引号“”括起的字符组成。如“D”、“1234”、“ABCD”等。注意字符串注意字符串常量与字符常量是不一样常量与字符常量
15、是不一样,一个字符常量在计算机内只用一个字节存放,而一个字符串常量在内存中存放时不仅双引号内的字符一个占一个字节,而且系统会自动的在后面加一个转义字符“0”作为字符串结束符。因此不要将字符常量和字符串常量混淆,如字符常量A和字符串常量“A”是不一样的。5.3.2 变量 变量是在程序运行过程中其值可以改变的量。一个变量由两部分组成:变量名和变量值。在C51中,变量在使用前必须对变量进行定义,指出变量的数据类型和存储模式。以便编译系统为它分配相应的存储单元。定义的格式如下:存储种类存储种类 数据类型说明符数据类型说明符 存储类型存储类型 变变量名量名1=1=初值初值,变量名,变量名22初值初值;一
16、数据类型说明符一数据类型说明符 在定义变量时,必须通过数据类型说明符指明变量的数据类型。在C51中,为了增加程序的可读性,允许用户为系统固有的数据类型说明符用typedef起别名,格式如下:typedef c51固有的数据类型说明符 别名;【例【例1 1】typedef的使用。typedef unsigned int WORD;typedef unsigned char BYTE;BYTE a1=0 x12;WORD a2=0 x1234;二变量名二变量名 变量名是C51区分不同变量,为不同变量取的名称。在C51中规定变量名可以由字母、数字和下划线三种字符组成,且第一个字母必须为字母或下划线。
17、变量名有两种:普通变量名和指针变量名。它们的区别是指针变量名前面要带“*”号。第四章 单片机C语言程序设计 三存储种类三存储种类 存储种类是指变量在程序执行过程中的作用范围。存储种类是指变量在程序执行过程中的作用范围。C51C51变量的存储种类有四种,分别是自动变量的存储种类有四种,分别是自动(auto)(auto)、外部外部(extern)(extern)、静态、静态(static)(static)和寄存器和寄存器(register)(register)。1 1autoauto:使用auto定义的变量称为自动变量,其作用范围在定义它的函数体或复合语句内部,当定义它的函数体或复合语句执行时,C
18、51才为该变量分配内存空间,结束时占用的内存空间释放。自动变量一般分配在内存的堆栈空间中。定义变量时,如果省略存储种类,则该变量默认为自动(auto)变量。2 2externextern:使用extern定义的变量称为外部变量。在一个函数体内,要使用一个已在该函数体外或别的程序中定义过的外部变量时,该变量在该函数体内要用extern说明。外部变量被定义后分配固定的内存空间,在程序整个执行时间内都有效,直到程序结束才释放。3 3staticstatic:使用static定义的变量称为静态变量。它又分为内部静态变量和外部静态变量。在函数体内部定义的静态变量为内部静态变量,它在对应的函数体内有效 ,
19、一直存在,但在函数体外不可见,这样不仅使变量在定义它的函数体外被保护,还可以实现当离开函数时值不被改变。外部静态变量是在函数外部定义的静态变量。它在程序中一直存在,但在定义的范围之外是不可见的。如在多文件或多模块处理中,外部静态变量只在文件内部或模块内部有效。4 4registerregister:使用register定义的变量称为寄存器变量。它定义的变量存放在CPU内部的寄存器中,处理速度快,但数目少。C51编译器编译时能自动识别程序中使用频率最高的变量,并自动将其作为寄存器变量,用户可以无需专门声明。四存储类型四存储类型存储类型是用于指明变量所处的单片机的存储器区域情存储类型是用于指明变量
20、所处的单片机的存储器区域情况况。存储类型与存储种类完全不同。存储类型与存储种类完全不同。C51C51编译器能识别的存编译器能识别的存储类型有以下几种,见表所示。储类型有以下几种,见表所示。存储类型存储类型关键字关键字存储区存储区描述描述dataDATA单片机内部单片机内部RAM空间的低空间的低128字节,可在一个周期内字节,可在一个周期内直接寻址。直接寻址。bdataBDATADATA区中可以字节、位混合寻址的区中可以字节、位混合寻址的16字节区。字节区。idataIDATARAM区高区高128字节,必须采用间接寻址。字节,必须采用间接寻址。xdataXDATA外部存储区,地址范围外部存储区,
21、地址范围0000HFFFFH,使用,使用DPTR间间接寻址。接寻址。pdataPDATA外部存储区的外部存储区的256字节,可通过字节,可通过P0口的地址对其寻址。口的地址对其寻址。codeCODE程序存储区,内容只读,使用程序存储区,内容只读,使用DPTR寻址。寻址。【例【例2 2】变量定义存储种类和存储类型相关情况。char data varl;/*在片内RAM低128B定义用直 接寻址方式访问的字符型变量var1*/int idata var2;/*在片内RAM256B定义用间接寻址方 式访问的整型变量var2*/auto unsigned long data var3;/*在片内RAM
22、128B定义用直接寻址方式访 问的自动无符号长整型变量var3*/extern float xdata var4;/*在片外RAM64KB空间定义用间接寻址方 式访问的外部浮点型变量var4*/int code var5;/*在ROM空间定义整型变量var5*/unsign char bdata var6;/*在片内RAM位寻址区20H2FH单元定义可 字节处理和位处理的无符号字符型变量var6*/五特殊功能寄存器变量五特殊功能寄存器变量 MCS-51系列单片机片内有许多特殊功能寄存器,通过这些特殊功能寄存器可以控制MCS-51系列单片机的定时器、计数器、串口、定时器、计数器、串口、I/OI/
23、O及其它功及其它功能部件能部件,每一个特殊功能寄存器在片内RAM中都对应于一个字节单元或两个字节单元。在在C51C51中,允许用户对这些特殊功能寄存器进中,允许用户对这些特殊功能寄存器进行访问,访问时须通过行访问,访问时须通过sfrsfr或或sfr16sfr16类型说明符进行类型说明符进行定义,定义时须指明它们所对应的片内定义,定义时须指明它们所对应的片内RAMRAM单元单元的地址。格式如下:的地址。格式如下:sfrsfr或或sfr16 sfr16 特殊功能寄存器名特殊功能寄存器名 =地址;地址;第四章 单片机C语言程序设计 sfrsfr用于对用于对MCS-51MCS-51单片机中单字节的特殊
24、功能寄存器进行单片机中单字节的特殊功能寄存器进行定义,定义,sfr16sfr16用于对双字节特殊功能寄存器进行定义。特殊用于对双字节特殊功能寄存器进行定义。特殊功能寄存器名一般用大写字母表示。地址一般用直接地址功能寄存器名一般用大写字母表示。地址一般用直接地址形式,具体特殊功能寄存器地址见前面内容。形式,具体特殊功能寄存器地址见前面内容。【例【例3 3】特殊功能寄存器的定义。】特殊功能寄存器的定义。sfr PSW=0 xd0sfr PSW=0 xd0;sfr SCON=0 x98sfr SCON=0 x98;sfr TMOD=0 x89sfr TMOD=0 x89;sfr P1=0 x90sf
25、r P1=0 x90;sfr16 DPTR=0 x82sfr16 DPTR=0 x82;sfr16 T1=0X8Asfr16 T1=0X8A;六位变量六位变量 在在C51C51中,允许用户通过位类型符定义位变量。中,允许用户通过位类型符定义位变量。位类型位类型符有两个:符有两个:bitbit和和sbitsbit。可以定义两种位变量。可以定义两种位变量。bitbit位类型符用于定义一般的可位处理位变量。它的格位类型符用于定义一般的可位处理位变量。它的格式如下:式如下:bit bit 位变量名位变量名;在格式中可以加上各种修饰,但注意存储器类型只能在格式中可以加上各种修饰,但注意存储器类型只能是是
展开阅读全文