单片机-第五章:C语言程序设计分解课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机-第五章:C语言程序设计分解课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 第五 语言程序设计 分解 课件
- 资源描述:
-
1、第5章 MCS-51 C语言程序设计5.1 C5.1 C语言与语言与MCS-51MCS-51单片机单片机 C C语言是一种通用的计算机程序设计语言,语言是一种通用的计算机程序设计语言,代码效率高,数据类型和运算符丰富,有良好代码效率高,数据类型和运算符丰富,有良好的程序结构,适用于各种应用系统的程序设计,的程序结构,适用于各种应用系统的程序设计,是目前使用较广的单片机编程语言。是目前使用较广的单片机编程语言。本章重点介绍在单片机上使用本章重点介绍在单片机上使用MCS-51 CMCS-51 C语言语言的特殊数据类型、存储模式、程序的结构、混的特殊数据类型、存储模式、程序的结构、混合编程。合编程。
2、5.1.1 C5.1.1 C语言程序开发过程语言程序开发过程 一般的一般的C C语言开发套件中,包括编译器、连接器和语言开发套件中,包括编译器、连接器和符号转换程序。符号转换程序。编译器将源程序翻译为可重定位的编译器将源程序翻译为可重定位的目标代码文件目标代码文件(也可产生等价的汇编语言程序也可产生等价的汇编语言程序);连接器将目标代码;连接器将目标代码文件连接为文件连接为绝对目标文件绝对目标文件;符号转换程序可将绝对目;符号转换程序可将绝对目标文件转换为标文件转换为Intel Intel HEXHEX格式文件格式文件,编程到程序存储,编程到程序存储器中运行。器中运行。若使用提供了集成开发环境
3、若使用提供了集成开发环境(Integrated(Integrated Development EnvironmentDevelopment Environment,IDE)IDE)的套件,则编辑、的套件,则编辑、编译、连接、符号转换、甚至调试可在一个窗口中完编译、连接、符号转换、甚至调试可在一个窗口中完成。如成。如American AutomationAmerican Automation、AuocetAuocet、BSO/TASKINGBSO/TASKING、DUNFIELD SHAREWAREDUNFIELD SHAREWARE、KEIL/FranklinKEIL/Franklin等。等。
4、5.1.2 C5.1.2 C语言的特点语言的特点 C C语言是一种模块化、结构化程序设计语言,符合语言是一种模块化、结构化程序设计语言,符合ANSI CANSI C标准,可以产生紧凑的目标码,具体优点:标准,可以产生紧凑的目标码,具体优点:(1)(1)不必详细了解单片机的指令系统不必详细了解单片机的指令系统(2)(2)仅要求对仅要求对MCS-51MCS-51存储器结构有初步了解存储器结构有初步了解(3)(3)寄存器分配、不同存储器区域的寻址及数据类型寄存器分配、不同存储器区域的寻址及数据类型等细节由编译程序管理等细节由编译程序管理(4)(4)程序具有规范的结构和固有的模块化思想程序具有规范的结
5、构和固有的模块化思想(5)(5)运算符和关键字用接近于自然语言的方式表示运算符和关键字用接近于自然语言的方式表示(6)(6)提供包含大量标准子程序的函数库,具有较强的提供包含大量标准子程序的函数库,具有较强的数据处理能力数据处理能力(7)(7)在对执行效率要求较高的场合,可以嵌入汇编,在对执行效率要求较高的场合,可以嵌入汇编,也可以与汇编语言协同开发也可以与汇编语言协同开发5.1.3 5.1.3 单片机单片机C C语言的移植语言的移植 C C语言在单片机中的应用移植面临的具体问题:语言在单片机中的应用移植面临的具体问题:(1)MCS-51 (1)MCS-51存储器的哈佛结构,加上内部有位寻址存
6、储器的哈佛结构,加上内部有位寻址空间,对存储器变量的使用提出了挑战。空间,对存储器变量的使用提出了挑战。(2)(2)内部的数据存储器和程序存储器空间相对太小,内部的数据存储器和程序存储器空间相对太小,而外部还可扩展存储容量,编译程序如何根据实际情而外部还可扩展存储容量,编译程序如何根据实际情况合理使用这些空间况合理使用这些空间 (3)(3)内部各功能单元采用特殊功能寄存器集中管理,内部各功能单元采用特殊功能寄存器集中管理,在在C C语言中如何实现寄存器访问语言中如何实现寄存器访问 (4)MCS-51 (4)MCS-51单片机派生种类繁多,硬件配置不统一,单片机派生种类繁多,硬件配置不统一,但是
7、要求必须能够使用但是要求必须能够使用C C语言操控所有硬件资源语言操控所有硬件资源 (5)MCS-51 (5)MCS-51内部只有一个堆栈,且存储空间有限,内部只有一个堆栈,且存储空间有限,传统的利用堆栈传递参数的方法难以奏效传统的利用堆栈传递参数的方法难以奏效5.2 5.2 单片机单片机C C语言的扩充语言的扩充 MCS-51 MCS-51单片机有着与通用单片机有着与通用CPUCPU截然不同的体截然不同的体系结构、硬件资源和运算特性系结构、硬件资源和运算特性 针对单片机独有的一些功能特点,绝大多数针对单片机独有的一些功能特点,绝大多数的的MCS-51MCS-51的的C C语言编译程序对标准语
8、言编译程序对标准C C语言进行了语言进行了一些扩充一些扩充5.2.15.2.1 C C语言运算符语言运算符算术运算符:算术运算符:+,-,+,-,*,/,%,/,%关系运算符:关系运算符:,=,=,=,=,!=逻辑运算符:逻辑运算符:!,&,|!,&,|赋值运算符:赋值运算符:*=、/=/=、%=%=、+=+=、-=-=、=、&=&=、=、=、+、-(位移动、异或、位或位移动、异或、位或)强制运算符强制运算符强制转换表达式中的类型转换算术表达式中的运算转换赋值转换 输出转换 函数调用转换 5.2.15.2.1 C C语言运算符语言运算符intintunsigned unsigned intin
9、tlong long intintdoubledoublefloatfloatchar,shortchar,short存储长度较短存储长度较短存储长度较长存储长度较长总总趋势:趋势:算术表达式中的类型转换算术表达式中的类型转换转换规则转换规则5.2.2 5.2.2 数据类型数据类型数据类型数据类型位数位数字节数字节数范围范围bitbit1 1 0 01 1signed charsigned char8 81 1-128-128+127+127unsigned charunsigned char8 81 10 0255255enumenum枚举变量枚举变量 8/168/161/21/2-128-
10、128+127+127 或或 -32768-32768+32767+32767signed shortsigned short16162 2-32768-32768+32767+32767unsigned shortunsigned short16162 20 06553565535signedsigned intint16162 2-32768-32768+32767+32767unsignedunsigned intint16162 20 06553565535signedsigned longlong32324 4-2 1 4 7 4 8 3 6 4 8-2 1 4 7 4 8 3 6
11、4 8+21473647+21473647unsigned longunsigned long32324 40 042949672954294967295float/doublefloat/double32/6432/644/84/8 1.1 7 5 4 9 4 E-3 81.1 7 5 4 9 4 E-3 8 3.402823E+383.402823E+38sbitsbit1 1 0 01 1sfrsfr8 81 10 0255255sfr16sfr1616162 20 065535655355.2.2 5.2.2 数据类型数据类型例:例:unsignedunsigned charchari
12、n_datain_data;8 8位位unsigned longunsigned longlog_timelog_time;32;32位位bitbitok_flagok_flag;1 1位位5.2.3 5.2.3 存储器类型存储器类型存储器存储器类型类型与硬件存储器空间的对应关系与硬件存储器空间的对应关系codecode程序存储器;使用程序存储器;使用MOVC A+DPTRMOVC A+DPTR指令访问指令访问datadata直接寻址的内部数据存储器;访问速度最快直接寻址的内部数据存储器;访问速度最快(128(128字节字节)idataidata间接访问的内部数据存储器;可以访问所有的内间接访
13、问的内部数据存储器;可以访问所有的内部存储器空间部存储器空间(256(256字节字节)bdatabdata可位寻址的内部数据存储器;可以字节方式也可可位寻址的内部数据存储器;可以字节方式也可以位方式访问以位方式访问(16字节字节)xdataxdata外部数据存储器外部数据存储器(64KB),通过通过MOVX DPTR指指令访问令访问pdatapdata外部数据存储器的一页外部数据存储器的一页(256字节字节),使用,使用MOVX Ri指令访问指令访问5.2.3 5.2.3 存储器类型存储器类型例例 指出以下变量的存储位置指出以下变量的存储位置char datachar datavar1var1
14、;char codechar codetexttext=ENTER PARAMETER;=ENTER PARAMETER;unsigned long unsigned long xdataxdataarray100;array100;float float idataidatax,y,zx,y,z;unsigned unsigned intint pdatapdatadimensiondimension;unsigned char unsigned char xdataxdatavector1044;vector1044;char char bdatabdata flagsflags;5.2.
15、4 5.2.4 存储模式存储模式1.SMALL1.SMALL模式:模式:所有的变量默认存放于内部所有的变量默认存放于内部RAMRAM中,相当于中,相当于定义时使用了定义时使用了datadata类型类型 所有对象所有对象(包括堆栈包括堆栈)必须能够存入内部必须能够存入内部RAMRAM的的128128字节字节5.2.4 5.2.4 存储模式存储模式2.COMPACT2.COMPACT模式:模式:所有变量默认存放于外部所有变量默认存放于外部RAMRAM的一页中,相的一页中,相当于定义时使用了当于定义时使用了pdatapdata类型类型 这种存储模式可以满足最多这种存储模式可以满足最多256256字节
16、的变量字节的变量 对变量的访问必须使用间接寻址方式对变量的访问必须使用间接寻址方式 编译程序产生的机器码使用编译程序产生的机器码使用R0R0和和R1R1作为变作为变量的指令操作数量的指令操作数5.2.4 5.2.4 存储模式存储模式3.LARGE3.LARGE模式:模式:所有变量默认存放于外部所有变量默认存放于外部RAMRAM中,最多可以中,最多可以有有64KB64KB,相当于定义时使用了,相当于定义时使用了xdataxdata类型类型 数据指针数据指针DPTRDPTR用来寻址变量用来寻址变量 这种访问方式效率不高,特别是当变量长度这种访问方式效率不高,特别是当变量长度超过一个字节时超过一个字
17、节时5.2.4 5.2.4 存储模式存储模式 现在常用的现在常用的C C编译程序通常允许使用混合模编译程序通常允许使用混合模式式 不管存储模式如何,把经常使用的变量强制不管存储模式如何,把经常使用的变量强制存放于内部存放于内部RAMRAM。大块数据则存放于外部。大块数据则存放于外部RAMRAM,而将其指针存放于内部而将其指针存放于内部RAMRAM中,可以使用存储中,可以使用存储器类型说明符指定器类型说明符指定5.2.5 5.2.5 硬件资源访问硬件资源访问1.1.特殊功能寄存器:特殊功能寄存器:使用使用sfrsfr、sfr16sfr16和和sbitsbit数据类型访问特殊功数据类型访问特殊功能
18、寄存器能寄存器 特殊功能寄存器中的位特殊功能寄存器中的位 使用使用sbitsbit类型可以定义可位寻址类型可以定义可位寻址SFRSFR中的位中的位 sfrsfrP0P0=0 x80;=0 x80;地址地址 sfrsfrACCACC=0 xE0;=0 xE0;实际地址实际地址 sbitsbitCYCY=0 xD7;=0 xD7;位地址位地址5.2.5 5.2.5 硬件资源访问硬件资源访问2.2.内部内部RAMRAM中的位寻址资源中的位寻址资源 定义一个变量时若指定了定义一个变量时若指定了bdatabdata存储器类型,存储器类型,C C编译程序会在内部编译程序会在内部RAMRAM的位寻址区为其分
19、配存的位寻址区为其分配存储空间储空间 这个变量中的位也可以单独访问,但必须先这个变量中的位也可以单独访问,但必须先行定义行定义 unsigned char unsigned char bdatabdata data8data8;位寻址区变量位寻址区变量 sbitsbitlsblsb=data80=data80;data8;data8的最低位的最低位5.2.5 5.2.5 硬件资源访问硬件资源访问3.3.指定绝对地址的变量指定绝对地址的变量 使用使用_at_at_满足这一要求,其格式如下。满足这一要求,其格式如下。存储器类型存储器类型 变量类型变量类型 变量名变量名 _at_ _at_ 地址常数
20、地址常数;xdataxdataunsigned char unsigned char buffbuff _at_ 0 x2000;_at_ 0 x2000;5.2.5 5.2.5 硬件资源访问硬件资源访问4.4.存储器绝对地址的访问存储器绝对地址的访问 absacc.habsacc.h中包含了一些宏定义,使用这些宏可中包含了一些宏定义,使用这些宏可以显示使用存储器绝对地址,如以显示使用存储器绝对地址,如#define#defineCBYTECBYTE(unsigned char(unsigned char volatile volatile codecode *)0)0)CBYTE CBYTE
展开阅读全文