【精品】单片机C语言及程序设计精品ppt课件.ppt
《【精品】单片机C语言及程序设计精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】单片机C语言及程序设计精品ppt课件.ppt(76页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机C语言及程序设计单片机单片机C语言及程序设计语言及程序设计1.C51概述概述2.C51数据类型及存储数据类型及存储3.C51变量的定义及数据变量的定义及数据存储区域存储区域 C51位变量的定义位变量的定义5.C51特殊功能寄存器的特殊功能寄存器的定义定义 6.C51指令的定义指令的定义 7.C51的输入的输入/输出输出 8.C51函数的定义函数的定义 9.C51与汇编语言与汇编语言混合编程混合编程10.C51集成开发软集成开发软件件Keil C第三部分第三部分 单片机单片机C语言及程序设计语言及程序设计 认为读者已经学习过C语言,具有C语言的基本知识,本章内容完全是结合单片机来讲解,补充
2、C语言在单片机方面的概念、数据定义和函数定义等。通过本章学习,使你能够比较顺利地编写C51程序。1.C51概述概述主要内容主要内容1 C语言编程的优势语言编程的优势2 C51与与ANSI C的区别的区别3 C51扩展的关键字扩展的关键字1.C51概述概述学习单片机C语言的必要性随着单片机性能的不断提高,C语言编译调试工具的不断完善,以及现在对单片机产品辅助功能的要求、对开发周期不断缩短的要求,使得越来越多的单片机编程人员转向使用C语言,因此有必要在单片机课程中讲授“单片机C语言”。“C51”概念:为了与ANSI C区别,把“单片机C语言”称为“C51”,也称为“Keil C”。C语言与语言与A
3、NSI 的区别的区别用用C51编写单片机程序,与用编写单片机程序,与用ANSI C编写程序的编写程序的不同不同之处是之处是:需要根据单片机存储器结构及内部资源,需要根据单片机存储器结构及内部资源,定义相应的数据类型和变量定义相应的数据类型和变量。其它的语法规定、程序结构及程序设计方法,都与其它的语法规定、程序结构及程序设计方法,都与 ANSI C相同。相同。本章主要介绍本章主要介绍C51各种变量的定义、指针各种变量的定义、指针 定义、函数定义和混合编程定义、函数定义和混合编程。3 C51扩展的关键字扩展的关键字由于单片机在结构及编程上的特殊要求,由于单片机在结构及编程上的特殊要求,C51有自己
4、的有自己的特殊关键字,称之为特殊关键字,称之为C51扩展的关键字扩展的关键字,下面给出常用的,下面给出常用的C51扩展的关键字扩展的关键字:_at_bdatabit codedataidatainterruptpdatareentrant sbitsfrsfr16usingvolatilexdata 这些关键字在后面会陆续接触到,此处先不给出它这些关键字在后面会陆续接触到,此处先不给出它们的含义。们的含义。2.C51数据类型及存储数据类型及存储主要内容主要内容1 C51的数据类型的数据类型2 C51数据的存储数据的存储2.1 C51的数据类型的数据类型表表4-1 C51数据类型、长度和数值范围
5、数据类型、长度和数值范围数据类型数据类型表示方法表示方法长长 度度数数 值值 范范 围围无符号字符型unsigned char1字节 0255有符号字符型signed char1字节-128127无符号整型unsigned int2字节 065535有符号整型signed int2字节-3276832767无符号长整型unsigned long4字节 04294967295有符号长整型signed long4字节-21474836482147483647浮点型float4字节 1.1755E-383.40E+38特殊功能寄存器型sfrsfr161字节2字节0255065535位类型bit、sb
6、it1位0或12.1 C51的数据类型的数据类型数据类型转换数据类型转换1)自动转换)自动转换 转换规则是向高精度数据类型转换、向有符号转换规则是向高精度数据类型转换、向有符号数据类型转换数据类型转换。如字符型变量与整型变量相加时,。如字符型变量与整型变量相加时,则位变量先转换字符型或整型数据,然后相加。则位变量先转换字符型或整型数据,然后相加。2)强制转换)强制转换像像ANSI C一样,一样,通过强制类型转换的方式进行通过强制类型转换的方式进行转换转换。如:。如:unsignedintb;floatc;b=(int)c;2.2 C51数据的存储数据的存储MCS-51单片机只有单片机只有bit
7、和和unsigned char两种数据类型两种数据类型支持机器指令支持机器指令,而其它类型的数据都需要转换成,而其它类型的数据都需要转换成bit或或unsigned char型进行存储。型进行存储。为了减少单片机的存储空间和提高运行速度,要尽可为了减少单片机的存储空间和提高运行速度,要尽可能地使用能地使用unsigned char型数据。型数据。一、位变量的存储一、位变量的存储bit和和sbit型位变量,直接存于型位变量,直接存于RAM的位的位寻址空间,包括低寻址空间,包括低128位和特殊功能寄存器位和特殊功能寄存器位。位。2.2 C51数据的存储数据的存储二、字符变量的存储二、字符变量的存储
8、字符变量字符变量(char):无论是无论是unsigned char数据还是数据还是signed char数据,均为数据,均为1个字节,能够被直接存个字节,能够被直接存储在储在RAM中,可以存储在中,可以存储在00 x7f区域,也可以存区域,也可以存储在储在0 x800 xff区域,与变量的定义有关。区域,与变量的定义有关。unsigned char数:数:可直接被可直接被MSC-51接受接受signed char数据:数据:用补码表示。用补码表示。需要额外的操作需要额外的操作来来测试、处理符号位,使用的是两种库函数,代码量测试、处理符号位,使用的是两种库函数,代码量大,运算速度降低。大,运算
9、速度降低。2.2 C51数据的存储数据的存储三、整型变量的存储三、整型变量的存储整型变量整型变量(int):不管是不管是unsigned int数据还是数据还是signed int数据,均为数据,均为2个字节,个字节,其其存储方法是高位字节保存在低存储方法是高位字节保存在低地址地址(在前面),(在前面),低位字节保存低位字节保存在高地址在高地址(在后面)(在后面)。例例:整型变量的值为整型变量的值为0 x1234,在内存中的存放如右,在内存中的存放如右图所示。图所示。signed int数据用补码表示。数据用补码表示。地址地址低低高高:1234:2.2 C51数据的存储数据的存储四、长整型变量
10、的存储四、长整型变量的存储长整型变量(长整型变量(long)为)为4个字节,其个字节,其存储方法与整型数据一样,是存储方法与整型数据一样,是最高最高位字节保存的地址最低位字节保存的地址最低(在最前面)(在最前面),最低位字节保存的地址最高最低位字节保存的地址最高(在(在最后面)。最后面)。如如:长整型变量的值为长整型变量的值为0 x12345678,在内存中,在内存中的存放方法如右图所示。不管是的存放方法如右图所示。不管是unsigned long数据还是数据还是signed long数据。数据。地址地址低低高高:12345678:2.2 C51数据的存储数据的存储五、浮点型变量的存储五、浮点
11、型变量的存储浮点型变量浮点型变量(fload)占)占4个字节,个字节,用指数方式表示用指数方式表示,其具体格式与编译器有关。其具体格式与编译器有关。对于对于Keil C,采用的是,采用的是IEEE-754标准标准,具有,具有24位精度,位精度,尾数的最高位始终为尾数的最高位始终为1,因而不保存。,因而不保存。具体分布为:具体分布为:1位符位符号位,号位,8位阶码位,位阶码位,23位尾数,如下图所示。位尾数,如下图所示。字节地址字节地址0123浮点数浮点数内容内容SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM符号和阶码符号和阶码尾数高位尾数高位尾数低位尾数低位2.2 C51数据
12、的存储数据的存储符号位符号位S:1表示负数,表示负数,0表示正数。表示正数。阶码:阶码:用移码表示。用移码表示。如,实际阶码如,实际阶码-126用用1表示,实际阶码表示,实际阶码0用用127表示,表示,即实际阶码数加上即实际阶码数加上127得到阶码的表达数得到阶码的表达数。阶码数值范围:阶码数值范围:-126+128。2.2 C51数据的存储数据的存储例如例如:浮点数浮点数-12.5符号位为符号位为1,12.5的二进制数的二进制数1100.1=1.1001E+0011,阶码数值为阶码数值为3+127=130=10000010B,尾数为尾数为1001。因此,其十六进制数为因此,其十六进制数为0
13、xC1480000,则存储结构如右图所示。则存储结构如右图所示。地址地址低低高高:C1480000:3.C51变量的定义及数据存储区域变量的定义及数据存储区域主要内容主要内容3.1 C51变量的定义变量的定义3.2 C51变量的存储类型变量的存储类型3.3 C51变量的存储区域变量的存储区域3.4 C51变量定义举例变量定义举例3.5 C51变量的存储模式变量的存储模式3.6 C51变量的绝对定位变量的绝对定位3.1 C51变量的定义变量的定义C51变量定义的一般格式为:变量定义的一般格式为:存储类型存储类型 数据类型数据类型 存储区存储区变量名变量名1=初值初值,变量名变量名2=初值初值,或
14、或存储类型存储类型 存储区存储区 数据类型数据类型 变量名变量名1=初值初值,变量名变量名2=初值初值,变量变量(非位变量)(非位变量)的定义由的定义由4部分组成部分组成,即在变量定义时,指,即在变量定义时,指定变量定变量4种属性。种属性。数据类型:数据类型:在前面的在前面的2中已经叙述过,对于变量名也无须多说,中已经叙述过,对于变量名也无须多说,下面主要解释下面主要解释“存储类型存储类型”和和“存储区存储区”等概念等概念。3.2 C51变量的存储类型变量的存储类型存储类型这个属性我们仍沿用存储类型这个属性我们仍沿用ANSI C的的说法说法,尽量不改变原来的含义。,尽量不改变原来的含义。按照按
15、照ANSI C,C语言的变量有语言的变量有4种存储类种存储类型型:动态存储(动态存储(auto)静态存储(静态存储(static)全局存储(全局存储(extern)寄存器存储(寄存器存储(register)3.2 C51变量的存储类型变量的存储类型一、动态存储一、动态存储动态(存储)变量:动态(存储)变量:用用auto定义的为动态变量,定义的为动态变量,也叫自动变量也叫自动变量。作用范围:作用范围:函数内或复合语句内部。函数内或复合语句内部。当定义它的函数或复合语句执行时,当定义它的函数或复合语句执行时,C51才为才为变量分配存储空间,结束时所占用的存储空间释放。变量分配存储空间,结束时所占用
16、的存储空间释放。定义变量时,定义变量时,auto可以省略可以省略,或者说如果省,或者说如果省略了存储类型项,则认为是动态变量。略了存储类型项,则认为是动态变量。动态变量一动态变量一般分配使用寄存器或堆栈般分配使用寄存器或堆栈。3.2 C51变量的存储类型变量的存储类型二、静态存储二、静态存储静态(存储)变量:静态(存储)变量:用用static定义的为静态变定义的为静态变量量。分为内部静态和外部静态变量。分为内部静态和外部静态变量。内部静态变量:内部静态变量:在函数体内定义的为内部静态在函数体内定义的为内部静态变量变量。在函数内可以任意使用和修改,函数运在函数内可以任意使用和修改,函数运行结束后
17、会一直存在,但在函数外不可见,即在函行结束后会一直存在,但在函数外不可见,即在函数体外得到保护。数体外得到保护。外部静态变量:外部静态变量:在函数体外部定义的为外部静在函数体外部定义的为外部静态变量态变量。在定义的文件内可以任意使用和修改,外。在定义的文件内可以任意使用和修改,外部静态变量会一直存在,但在文件外不可见,即在部静态变量会一直存在,但在文件外不可见,即在文件外得到保护。文件外得到保护。3.2 C51变量的存储类型变量的存储类型三、外部存储三、外部存储外部(存储)变量:外部(存储)变量:用用extern声明声明的变的变量为外部变量量为外部变量,是在其它文件定义过的全局,是在其它文件定
18、义过的全局变量。变量。用用extern声明后,便可以在所声明声明后,便可以在所声明的文件中使用。的文件中使用。需要注意的是:需要注意的是:在定义变量时,即便是在定义变量时,即便是全局变量,也不能使用全局变量,也不能使用extern定义定义。3.2 C51变量的存储类型变量的存储类型四、寄存器存储四、寄存器存储寄存器(存储)变量:寄存器(存储)变量:用用register定义的定义的变量为寄存器变量变量为寄存器变量。寄存器变量存放在寄存器变量存放在CPU的寄存器中的寄存器中,这,这种变量处理速度快,但数目少。种变量处理速度快,但数目少。C51中的寄存器变量:中的寄存器变量:C51的编译器在的编译器
19、在编译时,能够自动识别程序中使用编译时,能够自动识别程序中使用频率高的频率高的变量变量,并将其,并将其安排为寄存器变量安排为寄存器变量,用户不用,用户不用专门声明。专门声明。3.3 C51变量的存储区域变量的存储区域 变量的存储区属性变量的存储区属性是单片机扩展的概念是单片机扩展的概念,非常,非常重要,重要,它涉及到它涉及到7个新的关键字个新的关键字。MCS-51单片机有四个存储空间单片机有四个存储空间,分成三类,分成三类,它们是片内数据存储空间、片外数据存储空间和程它们是片内数据存储空间、片外数据存储空间和程序存储空间。序存储空间。MCS-51单片机有更多的存储区域:单片机有更多的存储区域:
20、由于片内由于片内数据存储器和片外数据存储器又分成不同的区域,数据存储器和片外数据存储器又分成不同的区域,所以所以单片机的变量有更多的存储区域单片机的变量有更多的存储区域。在定义变量时,必须明确指出是存放在哪个区在定义变量时,必须明确指出是存放在哪个区域域。3.3 C51变量的存储区域变量的存储区域表表4-2 C51存储区与存储空间的对应关系存储区与存储空间的对应关系关键字关键字对应的存储空间及范围对应的存储空间及范围codeROM空间,空间,64KB全空间全空间data片内片内RAM,直接寻址,低,直接寻址,低128字节字节bdata片内片内RAM,位寻址区,位寻址区0 x200 x2f,可字
21、节访问,可字节访问idata 片内片内RAM,间接寻址,间接寻址,256字节,与字节,与 Ri 对应对应pdata片外片外RAM,分页寻址的,分页寻址的256字节字节(P2不变不变),P2改变可寻址改变可寻址64KB全空间,与全空间,与MOVX Ri 对应对应xdata片外片外RAM,64KB全空间全空间bit片内片内RAM位寻找区,位地址位寻找区,位地址0 x000 x7f,128位位3.4 C51变量定义举例变量定义举例1)定义存储在定义存储在data区域的动态区域的动态unsigned char变量:变量:unsigned char data sec=0,min=0,hou=0;2)定义
22、存储在定义存储在data区域的静态区域的静态unsigned char变量:变量:static unsigned char data scan_code=0 xfe;3)定义存储在定义存储在data区域的静态区域的静态unsigned int变量:变量:static unsigned int data dd;3.4 C51变量定义举例变量定义举例4)定义存储在定义存储在bdata区域的动态区域的动态unsigned char变量:变量:unsigned char bdata operate,operate1;/定义指示操作的可位寻址的变量定义指示操作的可位寻址的变量5)定义存储在定义存储在id
23、ata区域的动态区域的动态unsigned char数组:数组:unsigned char idata temp20;6)定义在定义在pdata区域的动态有符号区域的动态有符号int数组:数组:int pdata send_data30;/定义存放发送数据的数组定义存放发送数据的数组 3.4 C51变量定义举例变量定义举例7)定义存储在)定义存储在xdata区域的动态区域的动态unsigned int数组:数组:unsigned int xdata receiv_buf50;/定义存放接受数据的数组定义存放接受数据的数组8)定义存储在)定义存储在code区域的区域的unsigned char数
24、组:数组:unsigned char code dis_code10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/定义共阴极数码管段码数组定义共阴极数码管段码数组3.5 C51变量的存储模式变量的存储模式存储模式:如果在定义变量时缺省了存储区属性,则编译器会自动选择默认的存储区域,也就是存储模式。变量的存储模式也就是程序(或函数)的编译模式。编译模式分为三种:小模式(small)、紧凑模式(compact)和大模式(large)。编译模式由编译控制命令决定。存储模式(编译模式)决定了变量的默认存储区域和参数的传递方法
25、。3.5 C51变量的存储模式变量的存储模式一、一、small模式模式在在small模式下,变量的默认存储区域是模式下,变量的默认存储区域是“data”、“idata”,即未指出存储区域的变量保存,即未指出存储区域的变量保存到片内数据存储器中,并且到片内数据存储器中,并且堆栈也安排在该区域中堆栈也安排在该区域中。small模式的特点:模式的特点:存储容量小,但速度快。存储容量小,但速度快。small模式参数的传递:模式参数的传递:通过寄存器、堆栈或片内数通过寄存器、堆栈或片内数据存储区完成的。据存储区完成的。3.5 C51变量的存储模式变量的存储模式二、二、compact模式模式 在在comp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 单片机 语言 程序设计 ppt 课件
限制150内