单片机原理及应用系统设计第2章-Keil-C51程序设计基础课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机原理及应用系统设计第2章-Keil-C51程序设计基础课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 系统 设计 Keil C51 程序设计 基础 课件
- 资源描述:
-
1、第2章 Keil C51程序设计基础单片机原理及应用系统设计1、Keil C51系统概述系统概述2、Keil C51软件开发结构软件开发结构3、Keil C51与标准与标准C4、运算符与表达式、运算符与表达式5、C51程序的基本语句程序的基本语句6、Keil C51指针指针7、Keil C51函数函数8、C51代码优化及库函数代码优化及库函数9、C51程序结构及应用要点程序结构及应用要点10、Keil C51高级编程高级编程 Keil C51是一种专门为是一种专门为8051核的单片机设计的高级语核的单片机设计的高级语言言C编译器,支持符合编译器,支持符合ANSI标准的标准的C语言,并针对语言,
2、并针对8051核核单片机作了一些特殊扩展。本章主要介绍单片机作了一些特殊扩展。本章主要介绍C51的基本知识,的基本知识,希望读者能尽快掌握希望读者能尽快掌握C51的编程技术。的编程技术。Keil Keil C51介绍介绍 Keil Keil C51C51是美国是美国Keil SoftwareKeil Software公司出品的公司出品的5151系列兼容单片机系列兼容单片机C C语言软件开发系统,与汇编相比,语言软件开发系统,与汇编相比,C C语言在语言在功能上、结构性、功能上、结构性、可读性、可维护性上可读性、可维护性上有明显的优势,因而易学易用。用过汇有明显的优势,因而易学易用。用过汇编语言
3、后再使用编语言后再使用C C来开发,体会更加深刻来开发,体会更加深刻。Keil Keil C51C51软件提供丰富的库函数和功能强大的集成开发调软件提供丰富的库函数和功能强大的集成开发调试工具,全试工具,全WindowsWindows界面。另外重要的一点,只要看一下编界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到译后生成的汇编代码,就能体会到Keil C51Keil C51生成的目标代码生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。在开发大型软件时更能体现高级语
4、言的优势。2.1 Keil C51系统概述系统概述图2-1 Keil C51软件开发结构框图uVision与与Ishell分别是分别是C51 for Windows和和for Dos的的集成开发环境集成开发环境(IDE),可以完成编辑、编译、连接、调试、,可以完成编辑、编译、连接、调试、仿真等整个开发流程(开发人员可用仿真等整个开发流程(开发人员可用IDE本身或其它编辑器本身或其它编辑器编辑编辑C或汇编源文件)。或汇编源文件)。然后分别由然后分别由C51及及A51编译器编译生成目标文件编译器编译生成目标文件(OBJ)。目标文件可由目标文件可由LIB51创建生成库文件,也可以与库文创建生成库文件
5、,也可以与库文件一起经件一起经L51连接定位生成绝对目标文件连接定位生成绝对目标文件(ABS)。ABS文件由文件由OH51转换成标准的转换成标准的Hex文件,以供调试文件,以供调试器器dScope51或或tScope51使用进行源代码级调试,也可由仿真使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器器使用直接对目标板进行调试,也可以直接写入程序存贮器如如EPROM中。中。(1)C51编译器编译器 Keil C51编译器是一个针对编译器是一个针对80C51系列系列MCU的基于的基于ANSI C标准的标准的C编译器,生成的可执行代码快速、紧凑,在运编译器,生成的
6、可执行代码快速、紧凑,在运行效率和速度上可以和汇编程序得到的代码相媲美。行效率和速度上可以和汇编程序得到的代码相媲美。(2)A51宏汇编器宏汇编器 A51宏汇编器是一个宏汇编器是一个8051核的系列核的系列MCU的宏汇编器,支持的宏汇编器,支持8051及其派生系列的全部指令集。它把汇编语言汇编成机器及其派生系列的全部指令集。它把汇编语言汇编成机器代码。该汇编器允许定义程序中的每一个指令,在需要极快代码。该汇编器允许定义程序中的每一个指令,在需要极快的运行速度,很小代码空间及精确的硬件控制等场合时使用。的运行速度,很小代码空间及精确的硬件控制等场合时使用。A51宏汇编器的宏特性让公共代码只需要开
7、发一次,节约了开宏汇编器的宏特性让公共代码只需要开发一次,节约了开发和维护的时间。发和维护的时间。A51汇编器将源程序汇编成可重定位的目标汇编器将源程序汇编成可重定位的目标代码,并产生一个列表文件。其中可以包含也可以不包含字代码,并产生一个列表文件。其中可以包含也可以不包含字符表及交叉信息。符表及交叉信息。(3)BL51连接连接/定位器定位器BL51连接连接/定位器是具有代码分段功能的连接定位器是具有代码分段功能的连接/定位器,利用从定位器,利用从库中提取的目标模块和由编译器或汇编器生成的一个或多个目库中提取的目标模块和由编译器或汇编器生成的一个或多个目标模块处理外部和全局数据,并将可重定位的
8、段分配到固定的标模块处理外部和全局数据,并将可重定位的段分配到固定的地址上。所产生的一个绝对地址目标模块或文件包含不可重定地址上。所产生的一个绝对地址目标模块或文件包含不可重定位的代码和数据,所有的代码和数据被安置在固定的存储器单位的代码和数据,所有的代码和数据被安置在固定的存储器单元中。该绝对地址目标文件可以:元中。该绝对地址目标文件可以:写入写入EPROM或其他存储器件。或其他存储器件。由由Vision5调试器使用来模拟和调试。调试器使用来模拟和调试。由仿真器用来测试程序。由仿真器用来测试程序。(4)LIB51库管理器库管理器 LIB51库管理器让你建立和维护库文件。库文件是格式化的目库管
9、理器让你建立和维护库文件。库文件是格式化的目标模块(由编译器或汇编器产生)的集合。库文件提供了一标模块(由编译器或汇编器产生)的集合。库文件提供了一个方便的方法来组合及使用大量的连接程序可能用到的目标个方便的方法来组合及使用大量的连接程序可能用到的目标模块。模块。C51编译器与编译器与ANSIC相比,扩展的内容包括数据类型、存储器相比,扩展的内容包括数据类型、存储器类型、存储模式、指针及函数(包括定义函数的重入性、指类型、存储模式、指针及函数(包括定义函数的重入性、指定函数的寄存器组、指定函数的存储模式及定义定函数的寄存器组、指定函数的存储模式及定义中断服务程中断服务程序)。序)。深入理解并应
10、用深入理解并应用C51C51对标准对标准ANSICANSIC的扩展是学习的扩展是学习C51C51的关键之一。的关键之一。因为大多数扩展功能都是直接针对因为大多数扩展功能都是直接针对80518051内核的系列内核的系列CPUCPU硬件。硬件。大致有以下大致有以下8 8类:类:80518051存储类型及存储区域存储类型及存储区域 存储模式存储模式 存储器类型声明存储器类型声明 变量类型声明变量类型声明 位变量与位寻址位变量与位寻址 特殊功能寄存器特殊功能寄存器(SFR)(SFR)C51C51指针指针 函数属性函数属性_at_ _task_ data bdata idataxdata pdata s
11、fr sfr16 alien interrupt small compact large code bit sbit using reentrant 1.程序区域 由由CodeCode说明可有多达说明可有多达64kBytes64kBytes的程序存储器。的程序存储器。2.内部数据存储 内部数据存储器可用以下关键字说明内部数据存储器可用以下关键字说明:datadata:直接寻址区:直接寻址区(00H00H7FH7FH),为内部,为内部RAMRAM的低的低128128字节字节。idataidata:间接寻址区:间接寻址区(00H00HFFHFFH),包括整个内部,包括整个内部RAMRAM区区。bd
12、atabdata:可位寻址区:可位寻址区(20H20H2FH2FH)3.外部数据存储外部外部RAM视使用情况可由以下关键字标识:视使用情况可由以下关键字标识:xdata:可指定多达可指定多达64KB的外部直接寻址区,地址范围的外部直接寻址区,地址范围0000H 0FFFFH pdata:能访问能访问1页页(25bBytes)的外部的外部RAM,主要用于紧凑模,主要用于紧凑模式式(Compact Model)。)。4.特殊功能寄存器存储特殊功能寄存器存储 8051提供提供128Bytes的的SFR寻址区,这区域可位寻址、字节寻址寻址区,这区域可位寻址、字节寻址或或 字寻址,用以控制定时器、计数器
13、、串口、字寻址,用以控制定时器、计数器、串口、I/O及其它部及其它部件,可由以下几种关键字说明:件,可由以下几种关键字说明:sfr:字节寻址字节寻址 比如比如 sfr P0=0 x80;为;为PO口地址为口地址为80H,“”后后HFFH之间的常数。之间的常数。sfr16:字寻址,如字寻址,如sfr16 T2=0 xcc;指定;指定Timer2口地址口地址T2L=0 xcc T2H=0 xCD sbit:位寻址,如位寻址,如sbit EA=0 xAF;指定第指定第0 xAF位为位为EA即中即中断允许。断允许。还可以有如下定义方法:还可以有如下定义方法:sbit OV=PSW2;(定义定义0V为为
14、PSW的第的第2位位)sbit OV0XDO2;(同上同上)或或bit OV-0 xD2。(同上同上)存储模式指定了默认的存储器类型存储模式指定了默认的存储器类型,该类型应用于函,该类型应用于函数参数、局部变量和定义时未包含存储器类型的变量数参数、局部变量和定义时未包含存储器类型的变量。存存储模式决定了没有明确指定存储类型的变量,函数参数等储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域,共三种的缺省存储区域,共三种:1.1.Small模式模式 在此在此模式下所有缺省变量参数均装入内部模式下所有缺省变量参数均装入内部RAM,优点是访,优点是访问速度快,缺点是空间有限,只适用于小
15、程序。问速度快,缺点是空间有限,只适用于小程序。2.2.Compact模式模式 所有所有缺省变量均位于外部缺省变量均位于外部RAM区的一页区的一页(256Bytes)s),具体,具体哪一页可由哪一页可由P2口指定,在口指定,在STARTUP.A51 1文件中说明,也可用文件中说明,也可用pdata指定,优点是空间较指定,优点是空间较Small l为宽裕速度较为宽裕速度较Small慢,较慢,较large要快,是一种中间状态。要快,是一种中间状态。3.3.large模式模式 所有所有缺省变量可放在多达缺省变量可放在多达64KB的外部的外部RAMM区,优点是空区,优点是空间大,可存变量多,缺点是速度
16、较慢。该模式采用数据指针间大,可存变量多,缺点是速度较慢。该模式采用数据指针DPTR来寻址,访问的效率很低。来寻址,访问的效率很低。【备注】(【备注】(1 1)存储模式在)存储模式在C51编译器选项中选择;编译器选项中选择;(2 2)尽可能使用小模式,它产生速度快、效率高的代)尽可能使用小模式,它产生速度快、效率高的代码。码。变量或参数的存储类型可由存储模式指定缺省类型,也变量或参数的存储类型可由存储模式指定缺省类型,也可由关键字直接声明指定可由关键字直接声明指定。各类型分别用:各类型分别用:code,data,idata,xdata,pdata说明说明。例:例:data uar1 char
17、code array“hello!”;unsigned char xdata arr1044;C51提供以下几种扩展数据类型:提供以下几种扩展数据类型:(1)特殊功能寄存器)特殊功能寄存器sfr sfr用于声明字节型(用于声明字节型(8位)特殊功能寄存器;位)特殊功能寄存器;sfr16用于声明字型(用于声明字型(16位)特殊功能寄存器。位)特殊功能寄存器。sfr是是sfr字节地址,其取值范围是字节地址,其取值范围是0255。sfr16是是sfr字地址,其取值范围是字地址,其取值范围是065535。(2)位型)位型bit和和sbit bit是定义位变量数据类型,其取值为是定义位变量数据类型,其取
18、值为0或或1。用于定。用于定义定位在内部义定位在内部RAM的的20H2FH单元的位变量,位地址范围单元的位变量,位地址范围是是007FH,编译器对位地址进行自动分配。,编译器对位地址进行自动分配。sbit是声明位变量的数量类型,其取值为是声明位变量的数量类型,其取值为0或或1。用于。用于声明定位在声明定位在sfr区域的位变量(或位寻址区变量的某确定区域的位变量(或位寻址区变量的某确定位),编译器不自动分配位地址。位),编译器不自动分配位地址。使用时需要注意二者的区别,例如:使用时需要注意二者的区别,例如:bit flag=0;/定义定义flag,位地址由编译器,位地址由编译器007FH范范围分
19、配,并赋初始值围分配,并赋初始值0 sbit var=0 xe6;/声明位变量声明位变量var的位地址为的位地址为0 xe6,“=”含义是声明,不表示赋值。含义是声明,不表示赋值。其余数据类型如:其余数据类型如:char,short,int,long,float等与等与ANSI C相同,如表相同,如表2-1所示。所示。数据类型位数取值范围标准C数据类型字符型signed8-128 127unsigned80 255整型signed16-32768 32767unsigned160 65535长整型signed32-21474883648 21474883647unsigned320 42949
20、67295浮点型float321.75494E-38 3.402823E+38C51扩展数据类型SFR型sfr80 255sfr16160 65535位型bit10,1sbit10,1 1.bit型变量型变量 bit型变量可用变量类型,函数声明、函数返回值等,存贮于型变量可用变量类型,函数声明、函数返回值等,存贮于内部内部RAM的的20H2FH。注意注意:(1)用用pragma disable说明函数和用说明函数和用“usign”指定的函数,不指定的函数,不 能返回能返回bit值值。(2)一个一个bit变量不能声明为指针,如变量不能声明为指针,如bit*ptr;错误;错误。(3)不能有不能有b
21、it数组如:数组如:bit arr5;错误错误。2.可位寻址区说明可位寻址区说明20H2FH可作如下定义可作如下定义:int bdata i;char bdata arr3;然后然后:sbit bit15=I15;sbit arr07=arr07;sbit arr15=arri7;Keil C51对数据有极强的表达能力,具有十分丰富对数据有极强的表达能力,具有十分丰富的运算符,运算符就完成某种特定运算的符号,表达式的运算符,运算符就完成某种特定运算的符号,表达式则是由运算符及运算对象所组成的具有特定含义的一个则是由运算符及运算对象所组成的具有特定含义的一个式子。式子。在任意一个表达式的后面加一
22、个分号在任意一个表达式的后面加一个分号“:”就构成就构成了一个表达式语句了一个表达式语句。由运算符和表达式可以组成。由运算符和表达式可以组成C51程程序的各种语句。序的各种语句。运算符按其在表达式中所起的作用运算符按其在表达式中所起的作用,可分为赋值运,可分为赋值运算符、算术运算符、增量与减量运算符、关系运算符、算符、算术运算符、增量与减量运算符、关系运算符、逻辑运算符、位运算符、复合赋值运算符、逗号运算符、逻辑运算符、位运算符、复合赋值运算符、逗号运算符、条件运算符、指针和地址运算符、强制类型转换运算符。条件运算符、指针和地址运算符、强制类型转换运算符。在在C语言程序中,符号语言程序中,符号
23、“=”称为赋值运算符,它的作用是将称为赋值运算符,它的作用是将一个数据的值赋给一个变量,利用赋值运算符将一个变量与一个数据的值赋给一个变量,利用赋值运算符将一个变量与一个表达式连接起来的式子称为赋值表达式,在赋值表达式一个表达式连接起来的式子称为赋值表达式,在赋值表达式的后面加一个分号的后面加一个分号“;”便构成了赋值语句,赋值语句的格式便构成了赋值语句,赋值语句的格式如下:如下:变量变量=表达式表达式;该语句的意义是先计算出右边的表达式的值,然后将该值赋该语句的意义是先计算出右边的表达式的值,然后将该值赋给左边的变量给左边的变量。上式中的。上式中的“表达式表达式”还可以是一个赋值表达式,还可
24、以是一个赋值表达式,即即C语言允许进行多重赋值。语言允许进行多重赋值。例如例如:x=9;/*将常数将常数9赋给变量赋给变量x*/x=y=8;/*将常数将常数8同时赋给变量同时赋给变量x和和y*/在使用赋值运算符在使用赋值运算符“=”应注意不要与关系运算符应注意不要与关系运算符“=”相混淆相混淆。C语言中的算术运算符有:语言中的算术运算符有:+(加或取正值)运算符、(加或取正值)运算符、(减或取负值)运算符减或取负值)运算符、*(乘)运算符、乘)运算符、/(除)运算符、(除)运算符、%(取余)运算符(取余)运算符。这些运算符中对于加、减和乘法符合一般的运算规则,除这些运算符中对于加、减和乘法符合
25、一般的运算规则,除法有所不同法有所不同:如果是两个整数相除,其结果为整数,舍去小数部分如果是两个整数相除,其结果为整数,舍去小数部分;如如果两个浮点数相除,其结果为浮点数果两个浮点数相除,其结果为浮点数。取余运算要求两个取余运算要求两个运算对象均为整型数据运算对象均为整型数据。算术运算符将运算对象连接起来的式子即为算术表达式算术运算符将运算对象连接起来的式子即为算术表达式。算术运算的一般形式为算术运算的一般形式为:表达式表达式1 算术运算符算术运算符 表达式表达式2例如:例如:x+y/(a-b),(a+b)*(x-y)都是合法的算术表达式都是合法的算术表达式。在求一个算术表达式的值时,要按运算
展开阅读全文