《51单片机存储器内部结构24415.pdf》由会员分享,可在线阅读,更多相关《51单片机存储器内部结构24415.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-.z.MCS-51 单片机在物理构造上有四个存储空间:1、片内程序存储器 2、片外程序存储器 3、片内数据存储器 4、片外数据存储器 但在逻辑上,即从用户的角度上,8051 单片机有三个存储空间:1、片内外统一编址的 64K 的程序存储器地址空间MOVC 2、256B 的片内数据存储器的地址空间MOV 3、以及 64K 片外数据存储器的地址空间MOV*在三个不同的逻辑空间时,应采用不同形式的指令 具体我们在后面的指令系统学习时将会讲解,以产生不同的存储器空间的选通信号。程序内存 ROM 寻址范围:0000H FFFFH 容量 64KB EA=1,寻址内部 ROM;EA=0,寻址外部 ROM
2、地址长度:16 位 作用:存放程序及程序运行时所需的常数。七个具有特殊含义的单元是:0000H 系统复位,PC 指向此处;0003H 外部中断 0 入口 000BH T0 溢出中断入口-.z.0013H 外中断 1 入口 001BH T1 溢出中断入口 0023H 串口中断入口 002BH T2 溢出中断入口 内部数据存储器 RAM 物理上分为两大区:00H 7FH 即 128B 内 RAM 和 SFR 区。作用:作数据缓冲器用。以下图是 8051 单片机存储器的空间构造图 程序存储器 一个微处理器能够聪明地执行*种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只
3、是完全按照人们预先编写的程序而执行之。则设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器ROM。程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样,都是由机器码组成的代码串。只是程序代码则存放于程序存储器中。MCS-51 具有 64kB 程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。对于内部无 ROM 的 8031 单片机,它的程序存储器必须外接,空间地址为 64kB,此时单片机的端必须接地。强制 CPU 从外部程序存储器读取程序。对于内部有 ROM 的 8051 等单片机,正常运行时,则需接高电平,使 CPU先从内部的程序存储中读取程序,当 PC
4、值超过内部 ROM 的容量时,才会转向-.z.外部的程序存储器读取程序。当=1 时,程序从片内 ROM 开场执行,当 PC 值超过片内 ROM 容量时会自动转向外部 ROM 空间。当=0 时,程序从外部存储器开场执行,例如前面提到的片内无 ROM 的8031 单片机,在实际应用中就要把 8031 的引脚接为低电平。8051 片内有 4kB 的程序存储单元,其地址为 0000H0FFFH,单片机启动复位后,程序计数器的内容为 0000H,所以系统将从 0000H 单元开场执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意:其中一组特殊是 0000H0002H 单元,系统复位后,PC 为
5、 0000H,单片机从 0000H 单元开场执行程序,如果程序不是从 0000H 单元开场,则应在这三个单元中存放一条无条件转移指令,让 CPU 直接去执行用户指定的程序。另一组特殊单元是 0003H002AH,这 40 个单元各有用途,它们被均匀地分为五段,它们的定义如下:0003H000AH 外部中断 0 中断地址区。000BH0012H 定时/计数器 0 中断地址区。0013H001AH 外部中断 1 中断地址区。001BH0022H 定时/计数器 1 中断地址区。0023H002AH 串行中断地址区。可见以上的 40 个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型
6、,自动转到各自的中断区去执行程序。从上面可以看出,每个中断效劳程序只有 8 个字节单元,用 8 个字节来存放一个中断效劳程序显然是不可能的。因此以上地址单元不能用于存放程序的其他内容,只能存放中断-.z.效劳程序。但是通常情况下,我们是在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断效劳程序的空间去执行,这样中断响应后,CPU 读到这条转移指令,便转向其他地方去继续执行中断效劳程序。以下图是 ROM 的地址分配图:从上图中大家可以看到,0000H-0002H,只有三个存储单元,3 个存储单元在我们的程序存放时是存放不了实际意义的程序的,通常我们在实际编写程序时是在这里
7、安排一条 ORG 指令,通过 ORG 指令跳转到从 0033H 开场的用户ROM 区域,再来安排我们的程序语言。从 0033 开场的用户 ROM 区域用户可以通过 ORG 指令任意安排,但在应用中应注意,不要超过了实际的存储空间,不然程序就会找不到。数据存储器 数据存储器也称为随机存取数据存储器。数据存储器分为内部数据存储和外部数据存储。MCS-51 内部 RAM 有 128 或 256 个字节的用户数据存储不同的型号有分别,片外最多可扩展 64KB 的 RAM,构成两个地址空间,片内RAM 用“MOV指令,片外 RAM 用“MOV*指令。它们是用于存放执行的中间结果和过程数据的。MCS-51
8、 的数据存储器均可读写,局部单元还可以位寻址。MCS-51 单片机的内部数据存储器在物理上和逻辑上都分为两个地址空间,即:数据存储器空间低 128 单元;-.z.特殊功能存放器空间高 128 单元;这两个空间是相连的,从用户角度而言,低128 单元才是真正的数据存储器。下面我们就来详细的与大家讲解一下:低 128 单元:片内数据存储器为 8 位地址,所以最大可寻址的范围为 256 个单元地址,对片外数据存储器采用间接寻址方式,R0、R1 和 DPTR 都可以做为间接寻址存放器,R0、R1 是 8 位的存放器,即 R0、R1 的寻址范围最大为 256 个单元,而DPTR 是 16 位地址指针,寻
9、址范围就可到达 64KB。也就是说在寻址片外数据存储器时,寻址范围超过了 256B,就不能用 R0、R1 做为间接寻址存放器,而必须用 DPTR 存放器做为间接寻址存放器。从上图中我们可以看到,8051 单片机片内 RAM 共有 256 个单元00H-FFH,这 256 个单元共分为两局部。其一是地址从 00H7FH 单元共 128 个字节为用户数据RAM。从80HFFH地址单元 也是128个字节 为特殊存放器 SFR单元。从图 1 中可清楚地看出它们的构造分布。1、通用存放器区00H-1FH 在 00H1FH 共 32 个单元中被均匀地分为四块,每块包含八个 8 位存放器,均以 R0R7 来
10、命名,我们常称这些存放器为通用存放器。这四块中的存放器都称为 R0R7,则在程序中怎么区分和使用它们呢?聪明的 INTEL 工程师们又安排了一个存放器程序状态字存放器PSW来管理它们,CPU 只要定义这个存放的 PSW 的 D3 和 D4 位RS0 和 RS1,即可选中这四组通用存放-.z.器。对应的编码关系如下表所示。惹程序中并不需要用 4 组,则其余的可用做一般的数据缓冲器,CPU 在复位后,选中第 0 组工作存放器。2、位寻址区20H-2FH 片内 RAM 的 20H2FH 单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进展寻址。位寻址区共有 16 个字节,128 个位,位地
11、址为 00H7FH。位地址分配如下表所示:+CPU 能直接寻址这些位,执行例如置“1”、清“0”、求“反、转移,传送和逻辑等操作。我们常称 MCS-51 具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。3、用户 RAM 区30H-7FH 在片内 RAM 低 128 单元中,通用存放器占去 32 个单元,位寻址区占去 16 个单元,剩下的 80 个单元就是供用户使用的一般 RAM 区了,地址单元为 30H-7FH。对这部份区域的使用不作任何规定和限制,但应说明的是,堆栈一般开辟在这个区域。高 128 单元:80H-FFH 前面提到,在片内的 RAM 中,高 128 位是专用存放器区,因这节比较重要,所以我们单独的安排一节课跟大家介绍。下节课我们就重点介绍 51 单片机片内RAM 的高 128 位,即专用存放器区。-.z.片外数据存储器在这里我们就先在介绍,在后面关于数据存储器扩展的章节中我们再详细介绍