1 / 24
文档名称:

第7章C51的存储结构.ppt

格式:ppt   大小:447KB   页数:24页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第7章C51的存储结构.ppt

上传人:yuzonghong1 2018/7/29 文件大小:447 KB

下载得到文件列表

第7章C51的存储结构.ppt

相关文档

文档介绍

文档介绍:第7章 C51的存储结构
C51语言是面向51系列单片机及其硬件控制系统的开发语言,因此C51语言和单片机的硬件资源有非常密切的联系。C51的程序经过编译后将在单片机上进行运行,C51的程序的代码和数据都是按照一定的存储类型,存放在单片机的特定存储区域中,否则该数据无意义。存储结构是单片机C51语言很重要的一部分内容,也是其特有的内容。C51的存储结构包括存储器结构、存储类型、存储模式以及存储器指针等知识点。下面就分别介绍这几部分内容。
单片机的存储器结构
单片机的存储器结构是指单片机内部存储器的硬件组织形式。不同型号单片机的存储器结构会有所不同,但是原理是相似的。本章以最常用的51系列单片机为例,介绍其存储器结构。
51系列单片机采用哈佛结构,将程序代码存储器(ROM)和数据存储器(RAM)分开,各部分遵循各自的寻址机构和寻址方式。下面概述一下51系列单片机存储器的硬件构成。
51系列单片机的存储区域
51系列单片机的存储器被划分成几个不同的区域。为了C51的程序运行时,可以方便地调取数据和程序代码,C51的程序中的数据和程序代码,被分类存放在单片机的不同存储区域内。51系列单片机及其兼容的单片机在物理上,可划分为以下4个不同的存储区:
片内数据存储区(片内RAM)
片外数据存储区(片外RAM)
片内程序存储区(片内ROM)
片外程序存储区(片外ROM)
片内RAM的存储器结构
多数单片机均提供片内RAM,片内RAM是指单片机的片内数据存储区。C51程序中的变量一般保存在片内RAM中,因为该存储区的取址速度较快,便于及时调用数据。51系列单片机的片内数据存储区(片内RAM)可以划分为如下所示的2大区域。
片内低128字节RAM区:地址范围为00H~7FH。该区域主要采用直接字节地址寻址方式,用来存储数据,也可存放堆栈和寄存器。
特殊功能寄存器区(SFR):地址范围为80H~0FFH。该区域可位寻址、字节寻址或字寻址,用以控制定时器、计数器、串口、I/O以及其他一些硬件资源。
其中,地址范围为00H~07FH的低128字节片内RAM区,又可进一步划分为如下所示的3个区域。
通用寄存器区。地址范围为00H~1FH,共由如下所示的4个寄存器组构成。
C51的存储类型
存储类型是指程序中数据(变量、常量和代码等)在8051硬件系统中的存放方式。单片机C51语言中支持code、bdata、idata、pdata、xdata和data型6种不同的存储类型。不同的存储类型对应于不同的存储区域和寻址方式。8051系列单片机的硬件系统中数据的存储类型与对应的存储区的关系,如表所示。
存储类型与对应的存储区
存储类型
对应的存储区和访问方式
code
程序代码存储区(64KB),由******@DPTR访问
data
直接寻址片内数据存储区,访问速度快(128字节)
bdata
可位寻址片内数据存储区,允许位与字节混合访问(16字节)
idata
间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)
pdata
分页寻址外部数据存储区(256字节)由******@R0访问
xdata
可寻址片外数据存储区(64KB),由******@DPTR访问
code存储类型
使用code存储类型定义数据时,编译器会将其定义在程序代码储存器(ROM或者EPPROM)中。该code存储区使用16位寻址,寻址空间可达64KB。一般用来存放可执行的代码段,也可以存放数据。将变量设置为code存储类型的一般形式如下:
标识符 code 变量名
其中,标识符为变量的类型,code为关键字,表示存储类型为code。例如:
char code string[]=”Good Morning”; //在code区定义存储字符串数组
idata存储类型
8051系列的一些单片机包含附加的128字节的片内RAM区,位于地址开始于80H的存储空间中,该存储区称为idata区。将变量设置为idata存储类型的一般形式如下:
标识符 idata 变量名
其中,标识符为变量的类型,idata为关键字,表示存储类型为idata。例如:
extern float idata t; //在idata区定义浮点型变量t
pdata存储类型
pdata类型存储在分页寻址的外部数据存储区的一页内,共256字节。将变量设置为pdata存储类型的一般形式如下:
标识符 pdata 变量名
其中,标识符为变量的类型,pdata为关键字,表示存储类型为pdata。例如:
unsigned char pdata pn; //在pdata区定义字符变量pn