C51的存储结构ppt课件_第1页
C51的存储结构ppt课件_第2页
C51的存储结构ppt课件_第3页
C51的存储结构ppt课件_第4页
C51的存储结构ppt课件_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 C51的存储构造 C51言语是面向51系列单片机及其硬件控制系统的开发言语,因此C51言语和单片机的硬件资源有非常亲密的联络。C51的程序经过编译后将在单片机上进展运转,C51的程序的代码和数据都是按照一定的存储类型,存放在单片机的特定存储区域中,否那么该数据无意义。存储构造是单片机C51言语很重要的一部分内容,也是其特有的内容。C51的存储构造包括存储器构造、存储类型、存储方式以及存储器指针等知识点。下面就分别引见这几部分内容。7.1 单片机的存储器构造 单片机的存储器构造是指单片机内部存储器的硬件组织方式。不同型号单片机的存储器构造会有所不同,但是原理是类似的。本章以最常用的51系

2、列单片机为例,引见其存储器构造。 51系列单片机采用哈佛构造,将程序代码存储器ROM和数据存储器RAM分开,各部分遵照各自的寻址机构和寻址方式。下面概述一下51系列单片机存储器的硬件构成。7.1.1 51系列单片机的存储区域 51系列单片机的存储器被划分成几个不同的区域。为了C51的程序运转时,可以方便地调取数据和程序代码,C51的程序中的数据和程序代码,被分类存放在单片机的不同存储区域内。51系列单片机及其兼容的单片机在物理上,可划分为以下4个不同的存储区: 片内数据存储区片内RAM 片外数据存储区片外RAM 片内程序存储区片内ROM 片外程序存储区片外ROM7.1.2 片内RAM的存储器构

3、造多数单片机均提供片内RAM,片内RAM是指单片机的片内数据存储区。C51程序中的变量普通保管在片内RAM中,由于该存储区的取址速度较快,便于及时调用数据。51系列单片机的片内数据存储区片内RAM可以划分为如下所示的2大区域。片内低128字节RAM区:地址范围为00H7FH。该区域主要采用直接字节地址寻址方式,用来存储数据,也可存放堆栈和存放器。特殊功能存放器区SFR:地址范围为80H0FFH。该区域可位寻址、字节寻址或字寻址,用以控制定时器、计数器、串口、I/O以及其他一些硬件资源。其中,地址范围为00H07FH的低128字节片内RAM区,又可进一步划分为如下所示的3个区域。通用存放器区。地

4、址范围为00H1FH,共由如下所示的4个存放器组构成。7.2 C51的存储类型 存储类型是指程序中数据变量、常量和代码等在8051硬件系统中的存放方式。单片机C51言语中支持code、bdata、idata、pdata、xdata和data型6种不同的存储类型。不同的存储类型对应于不同的存储区域和寻址方式。8051系列单片机的硬件系统中数据的存储类型与对应的存储区的关系,如表所示。存储类型与对应的存储区存储类型对应的存储区和访问方式code程序代码存储区(64KB),由MOVCDPTR访问data直接寻址片内数据存储区,访问速度快(128字节)bdata可位寻址片内数据存储区,允许位与字节混合

5、访问(16字节)idata间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)pdata分页寻址外部数据存储区(256字节)由MOVXR0访问xdata可寻址片外数据存储区(64KB),由MOVXDPTR访问7.2.1 code存储类型 运用code存储类型定义数据时,编译器会将其定义在程序代码储存器ROM或者EPPROM中。该code存储区运用16位寻址,寻址空间可达64KB。普通用来存放可执行的代码段,也可以存放数据。将变量设置为code存储类型的普通方式如下: 标识符 code 变量名 其中,标识符为变量的类型,code为关键字,表示存储类型为code。例如: char c

6、ode string=Good Morning;/在code区定义存储字符串数组7.2.2 data存储类型data区是8051单片机128字节的片内RAM或者8052单片机的前128字节。该区采用直接可寻址,访问速度较快,因此将运用频率大的变量和部分变量储存在data区。将变量设置为data存储类型的普通方式如下:标识符 data 变量名其中,标识符为变量的类型,data为关键字,表示存储类型为data。例如:int data a5;char data str10;float data f;MyType data n1;/自定义的数据类型7.2.3 bdata存储类型bdata区是可位寻址数

7、据存储器,可以将要求可位寻址的数据定义为bdata。该区中可以声明变量和位变量。将变量设置为bdata存储类型的普通方式如下:标识符 bdata 变量名其中,标识符为变量的类型,bdata为关键字,表示存储类型为bdata。例如:char bdata bet;/在位寻址区定义字符变量betint bdata n10;/在位寻址区定义整型数组n10sbit bet5=bet3;/用关键字sbit定义位变量来可寻址对象其中一位sbit n8=n16;7.2.4 idata存储类型 8051系列的一些单片机包含附加的128字节的片内RAM区,位于地址开场于80H的存储空间中,该存储区称为idata区

8、。将变量设置为idata存储类型的普通方式如下: 标识符 idata 变量名 其中,标识符为变量的类型,idata为关键字,表示存储类型为idata。例如: extern float idata t;/在idata区定义浮点型变量t7.2.5 pdata存储类型 pdata类型存储在分页寻址的外部数据存储区的一页内,共256字节。将变量设置为pdata存储类型的普通方式如下: 标识符 pdata 变量名 其中,标识符为变量的类型,pdata为关键字,表示存储类型为pdata。例如: unsigned charpdata pn;/在pdata区定义字符变量pn7.2.6 xdata存储类型xda

9、ta区为可寻址的片外数据存储区,大小可达64KB,共65536字节单元。对xdata区寻址,须装入16位地址,因此尽量将外部数据存放在xdata区。将变量设置为xdata存储类型的普通方式如下:标识符 xdata 变量名其中,标识符为变量的类型,xdata为关键字,表示存储类型为xdata。xdata存储类型的程序例如如下:#include /头文件#include /头文件unsigned char xdata RXData1; /声明xdata变量unsigned char xdata RXData2; /声明xdata变量void main()/主函数while(1)RXData1=P3

10、;/赋值RXData2=P1;/赋值 7.3 C51的扩展数据类型 扩展数据类型不属于ANSIC规范数据类型,是8051单片机和C51编译器所特有的数据类型。这些类型的数据可以对8051的特殊功能存放器进展操作,但是不能用指针对其进展存取。扩展数据类型如表所示。扩展数据类型扩展数据类型位数字节数取值的范围含义sfr810255用于字节寻址,定义8位特殊功能寄存器。sfr16162065535用于字寻址,定义16位特殊功能寄存器,且该16位必须低位在低字节,高位在紧跟在高字节。sbit1-01用于位寻址,从位寻址字节中定义位变量。bit1-01定义位变量,其值为0或者1。7.3.1 sfr和sf

11、r16型变量sfr和sfr16主要用于定义8051的特殊功能存放器。其中sfr用来定义8位特殊功能存放器,sfr16用来定义16位特殊功能存放器。其普通方式为下:sfr 特殊功能存放器名=特殊功能存放器地址常数;sfr16 特殊功能存放器名=特殊功能存放器地址常数;其中,sfr和sfr16为关键字。特殊功能存放器的定义例如如下:sfr P2=0 xA0;/定义P2的I/O端口,其地址为A0H sfr P1=0 x90;/定义P1的I/O端口,其地址为90H 该语句用于定义存放器P2的I/O端口,其地址为A0H;定义存放器P1的I/O端口,其地址为90H。sfr16 T2=0 xCC;/定义定时

12、器/计数器2,其地址T2L=CCH,T2H=CDH7.3.2 sbit型变量 sbit用于定义可位寻址对象,用于位寻址,从位寻址字节中定义位变量。例如,定义特殊功能存放器某位为位变量。在C51言语中,有3种方式定义位变量: sbit 位变量名=位地址。 sbit 位变量名=特殊功能存放器名位位置。 sbit 位变量名=字节地址位位置。该语句和第二种方法是一样的,只是将特殊功能存放器名用位地址常数直接表示。7.3.3 bit型变量bit型变量即位变量,可用于变量类型、函数声明、函数前往值等场所。位变量在C言语里是外部变量,但编译系统不对其进展初始化,因此必需在程序中初始化位变量。其定义的普通方式

13、为:bit 变量名采用bit定义的位变量将存放于内部RAM20H2FH。bit型变量的定义,例如如下:extern bit ch;/定义外部bit型位变量ch再例如:bit flag;flag=1;7.3.4 51单片机存放器的定义 头文件“reg51.h中定义了51单片机常用的特殊功能存放器。假设需求运用单片机的硬件资源,必需在C51源程序的开场处包含这个文件。该头文件中对存放器用以上引见的sfr和sbit扩展数据类型进展了定义。7.4 C51变量的存储方式存储方式是指编译环境中默许的变量的存储类型。普通来说,假设在定义变量时缺省存储类型,编译系统将按照存储方式所规定的默许存储区来指定变量、

14、函数参数等的存储区域。Keil Vision3编译系统支持的8051系列单片机存储方式有Small方式、Compact方式和Large方式3种。存储方式普通是在C51编译器选项中进展选择,也可以在程序中指定。在Keil Vision3编译系统中存储器方式的选择,如图7.1所示。图中所示,“Memory Model的下拉列表用来从中选择默许的存储方式。Keil Vision3中存储器方式的选择 7.4.1 Small方式 Small方式用于将一切未指明存储区的变量均保管在单片机内部数据存储器,即片内RAM中。该方式与采用data存储类型方式一样。采用Small方式的优点是访问速度快、效率高;缺陷

15、是由于片内RAM存储空间有限,需求节约运用存储空间,因此Small方式只适用于规模较小的程序。 由于内部数据存储器也可以存放堆栈,但是一切存放的数据和堆栈的大小都必需适宜。尤其是堆栈,堆栈空间的大小是由函数的嵌套深度所决议的。通常假设衔接/定位器将变量都设置在片内RAM中时,采用Small方式是最适宜的。7.4.2 Compact方式 Compact方式用于将一切未指明存储区的变量均保管在单片机外部数据存储器一页中,即片外RAM的256字节内。该方式与采用pdata存储类型方式一样。采用Compact方式的优点是存储空间较Small方式宽裕,缺陷是访问速度要慢些,但相对于Large方式访问速度

16、要快,是一种介于两种方式之间的中间形状。 Compact方式适用于变量不超越256字节,此限制是由其寻址方式所决议的。可以经过P2口指定地址的高字节,编译器没有对该口进展设置。7.4.3 Large方式 Large方式用于将一切未指明存储区的变量存放在单片机外部数据存储器中,即空间多达64KB的外部RAM区内。该方式与采用xdata存储类型方式一样。采用Large方式的优点是空间大,可存变量多,缺陷是访问速度较慢。 Large方式运用数据指针DPTR来对变量进展寻址。经过数据指针访问外部数据存储器的效率较低。当数据的大小为2字节或更多字节时,采用Large方式进展数据访问,将会产生比Small

17、方式和Compact方式更多的代码。7.5 C51的存储器指针 在C51言语中可以定义普通指针和存储器指针。对变量进展声明时可以指定变量的存储类型,在对于指针变量声明的时候,也同样可以指定其存储类型。下面分别进展引见。 7.5.1 普通指针关于普通指针的定义,在数据构造一章指针一节曾经作过详细的引见。例如:char *pc;/pc为一个指向char数据的指针,按默许存储方式存放long * pl;/pl为指向long型整数的指针,按默许存储方式存放普通指针可存放于任何存储器中,普通用3个字节进展存放。第一个字节为存储器类型,第二个字节为偏移量的高位,第三个字节为偏移量的低位。运用普通指针可以访问存放在存储器任何位置的数据而不用思索其存储器类型,因此运用非常方便。7.5.2 存储器指针存储器指针是指在声明指针时明确指定其存储类型,即声明该指针指向特定的存储区的变量类型。1存储器指针声明在定义普通指针的同时阐明指针的存储类型。其普通方式如下:标识符 关键字 *指针变量名2指针存储类型与指针所指向的数据的存储类型在运用存储器指针时,要留意指针存储类型与指针所指向的数据的存储类型是两个不同的概念。例如:uchar xdata t10;/数组t在xdata存储

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论