51单片机存储器结构介绍

上传人:宝路 文档编号:23251161 上传时间:2017-11-30 格式:DOC 页数:15 大小:415.01KB
返回 下载 相关 举报
51单片机存储器结构介绍_第1页
第1页 / 共15页
51单片机存储器结构介绍_第2页
第2页 / 共15页
51单片机存储器结构介绍_第3页
第3页 / 共15页
51单片机存储器结构介绍_第4页
第4页 / 共15页
51单片机存储器结构介绍_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《51单片机存储器结构介绍》由会员分享,可在线阅读,更多相关《51单片机存储器结构介绍(15页珍藏版)》请在金锄头文库上搜索。

1、51 单片机存储器结构介绍MCS-51 单片机在物理结构上有四个存储空间: 1、片内程序存储器2、片外程序存储器3、片内数据存储器4、片外数据存储器但在逻辑上,即从用户的角度上,8051 单片机有三个存储空间:1、片内外统一编址的 64K 的程序存储器地址空间(MOVC )2、256B 的片内数据存储器的地址空间(MOV)3、以及 64K 片外数据存储器的地址空间( MOVX)在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号。程序内存 ROM寻址范围:0000H FFFFH 容量 64KBEA = 1,寻址内部 ROM

2、;EA = 0,寻址外部 ROM地址长度:16 位作用: 存放程序及程序运行时所需的常数。七个具有特殊含义的单元是:0000H 系统复位,PC 指向此处;0003H 外部中断 0 入口000BH T0 溢出中断入口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 先从内部的程序存储中读取程

4、序,当 PC 值超过内部 ROM 的容量时,才会转向外部的程序存储器读取程序。当#EA=1 时,程序从片内 ROM 开始执行,当 PC 值超过片内 ROM 容量时会自动转向外部 ROM 空间。当#EA=0 时,程序从外部存储器开始执行,例如前面提到的片内无 ROM 的8031 单片机,在实际应用中就要把 8031 的引脚接为低电平。8051 片内有 4kB 的程序存储单元,其地址为 0000H0FFFH,单片机启动复位后,程序计数器的内容为 0000H,所以系统将从 0000H 单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意:其中一组特殊是 0000H0002H 单元,系

5、统复位后,PC 为 0000H,单片机从0000H 单元开始执行程序,如果程序不是从 0000H 单元开始,则应在这三个单元中存放一条无条件转移指令,让 CPU 直接去执行用户指定的程序。另一组特殊单元是 0003H002AH,这 40 个单元各有用途,它们被均匀地分为五段,它们的定义如下:0003H000AH 外部中断 0 中断地址区。000BH0012H 定时/计数器 0 中断地址区。0013H001AH 外部中断 1 中断地址区。001BH0022H 定时/计数器 1 中断地址区。0023H002AH 串行中断地址区。可见以上的 40 个单元是专门用于存放中断处理程序的地址单元,中断响应

6、后,按中断的类型,自动转到各自的中断区去执行程序。从上面可以看出,每个中断服务程序只有 8 个字节单元,用 8 个字节来存放一个中断服务程序显然是不可能的。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,我们是在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU 读到这条转移指令,便转向其他地方去继续执行中断服务程序。下图是 ROM 的地址分配图:从上图中大家可以看到,0000H-0002H,只有三个存储单元,3 个存储单元在我们的程序存放时是存放不了实际意义的程序的,通常我们在实际编写程序时是

7、在这里安排一条 ORG 指令,通过 ORG 指令跳转到从 0033H 开始的用户 ROM 区域,再来安排我们的程序语言。从 0033 开始的用户 ROM 区域用户可以通过ORG 指令任意安排,但在应用中应注意,不要超过了实际的存储空间,不然程序就会找不到。数据存储器 数据存储器也称为随机存取数据存储器。数据存储器分为内部数据存储和外部数据存储。MCS-51 内部 RAM 有 128 或 256 个字节的用户数据存储(不同的型号有分别),片外最多可扩展 64KB 的 RAM,构成两个地址空间,访问片内 RAM 用“MOV” 指令,访问片外 RAM 用“MOVX” 指令。它们是用于存放执行的中间结

8、果和过程数据的。MCS-51 的数据存储器均可读写,部分单元还可以位寻址。MCS-51 单片机的内部数据存储器在物理上和逻辑上都分为两个地址空间,即:数据存储器空间(低 128 单元);特殊功能寄存器空间(高 128 单元);这两个空间是相连的,从用户角度而言,低 128 单元才是真正的数据存储器。下面我们就来详细的与大家讲解一下:低 128 单元:片内数据存储器为 8 位地址,所以最大可寻址的范围为 256 个单元地址,对片外数据存储器采用间接寻址方式,R0、R1 和 DPTR 都可以做为间接寻址寄存器,R0、R1 是 8 位的寄存器,即 R0、R1 的寻址范围最大为 256 个单元,而 D

9、PTR是 16 位地址指针,寻址范围就可达到 64KB。也就是说在寻址片外数据存储器时,寻址范围超过了 256B,就不能用 R0、R1 做为间接寻址寄存器,而必须用DPTR 寄存器做为间接寻址寄存器。从上图中我们可以看到,8051 单片机片内 RAM 共有 256 个单元(00H-FFH),这 256 个单元共分为两部分。其一是地址从 00H7FH 单元(共 128 个字节)为用户数据 RAM。从 80HFFH 地址单元(也是 128 个字节)为特殊寄存器(SFR )单元。从下图中可清楚地看出它们的结构分布。1、通用寄存器区(00H-1FH)在 00H1FH 共 32 个单元中被均匀地分为四块

10、,如下图,每块包含八个 8 位寄存器,均以 R0R7 来命名,我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为 R0R7,那么在程序中怎么区分和使用它们呢?聪明的 INTEL 工程师们又安排了一个寄存器 程序状态字寄存器( PSW)来管理它们,CPU 只要定义这个寄存的 PSW 的 D3 和 D4 位(RS0 和 RS1),即可选中这四组通用寄存器。对应的编码关系如下表所示。惹程序中并不需要用 4 组,那么其余的可用做一般的数据缓冲器,CPU 在复位后,选中第 0 组工作寄存器。2、位寻址区(20H-2FH)片内 RAM 的 20H2FH 单元为位寻址区,既可作为一般单元用字节寻址,也可

11、对它们的位进行寻址。位寻址区共有 16 个字节,128 个位,位地址为 00H7FH。位地址分配如下表所示:CPU 能直接寻址这些位,执行例如置“ 1”、清“0” 、求“反”、转移,传送和逻辑等操作。我们常称 MCS-51 具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。3、用户 RAM 区(30H-7FH)在片内 RAM 低 128 单元中,通用寄存器占去 32 个单元,位寻址区占去 16 个单元,剩下的 80 个单元就是供用户使用的一般 RAM 区了,地址单元为 30H-7FH。对这部份区域的使用不作任何规定和限制,但应说明的是,堆栈一般开辟在这个区域。高 128 单元:(80H

12、-FFH)21 个特殊功能寄存器不连续地分布在 128 个字节的 SFR 存储空间中,地址空间为 80H-FFH,在这片 SFR 空间中,包含有 128 个位地址空间,地址也是 80H-FFH,但只有 83 个有效位地址,可对 11 个特殊功能寄存器的某些位作位寻址操作.在 51 单片机内部有一个 CPU 用来运算、控制,有四个并行 I/O 口,分别是P0、 P1、P2、P3,有 ROM,用来存放程序,有 RAM,用来存放中间结果,此外还有定时/计数器,串行 I/O 口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样

13、的特殊功能寄存器 51 单片机共有 21 个并且都是可寻址的列表如下:符号 地址 功能介绍B F0H B 寄存器ACC E0H 累加器PSW D0H 程序状态字IP B8H 中断优先级控制寄存器P3 B0H P3 口锁存器IE A8H 中断允许控制寄存器P2 A0H P2 口锁存器SBUF 99H 串行口锁存器SCON 98H 串行口控制寄存器P1 90H P1 口锁存器TH1 8DH 定时器/计数器 1(高 8 位)TH0 8CH 定时器/计数器 1(低 8 位)TL1 8BH 定时器/计数器 0(高 8 位)TL0 8AH 定时器/计数器 0(低 8 位)TMOD 89H 定时器/计数器方

14、式控制寄存器TCON 88H 定时器/计数器控制寄存器DPH 83H 数据地址指针(高 8 位)DPL 82H 数据地址指针(低 8 位)SP 81H 堆栈指针P0 80H P0 口锁存器PCON 87H 电源控制寄存器分别说明如下:1、ACC-是累加器,通常用 A 表示。这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在 ACC 中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若 A0 则 Z1 ;若 A0则 z0。该标志

15、常用作程序分枝转移的判断条件。2、B- 一个寄存器。在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。3、PSW-程序状态字。这是一个很重要的东西,里面放了 CPU 工作时的很多状态,借此,我们可以了解 CPU 的当前状态,并作出相应的处理。它的各位功能请看下表:D7 D6 D5 D4 D3 D2 D1 D0CY AC F0 RS1 RS0 OV P下面我们逐一介绍各位的用途CY:进位标志。8051 中的运算器是一种 8 位的运算器,我们知道,8 位运算器只能表示到 0-255,如果做加法的话,两数相加可能会超过 255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样

16、就没事了。有进、借位,CY1;无进、借位, CY0例:78H+97H(01111000+10010111)AC:辅助进、借位(高半字节与低半字节间的进、借位)。 例:57H+3AH(01010111+00111010)F0:用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。RS1、RS0:工作寄存器组选择位。这个我们已知了。0V:溢出标志位。运算结果按补码运算理解。有溢出,OV=1;无溢出,OV 0。什么是溢出我们后面的章节会讲到。P:奇偶校验位:它用来表示 ALU 运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则 P=1,否则为 0。运算结果有奇数个 1,P1;运算结果有偶数个1,P 0。例:某运算结果是 78H(01111000),显然 1 的个数为偶数,所以 P=0。4、DPTR(DPH、

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号