mcs51存储器配置解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章 MCS-51存储器配置
• 存储器的两种结构: • 普林斯顿结构:ROM和RAM统一编址,即在同
一个空间队列内寻址 • 哈佛结构:ROM和RAM分别编址,在物理空间
上相互独立。51单片机的存储器是哈佛结构。
• 物理上,MCS-51有4个存储器空间:
片内程序存储器和片外程序存储器; 片内数据存储器和片外数据存储器;
• 片内RAM中有128个可按位寻址的位。
位地址:00H—7FH
பைடு நூலகம்
2FH 7F 7E 7D 7C 7B 7A 79 78
FFFFH
片外ROM
64K 字节
1000H
4K字节
0FFFH片内ROM
0000H EA=1
0FFFH
片外ROM
0000H EA=0
8051/8751程序存储器配置图
FFFFH
片外ROM
64K 字节
2000H
8K字节
1FFFH 片内ROM
0000H EA=1
1FFFH
片外ROM
0000H EA=0
• 除0000H单元外,其它6个特殊单元分别对应于6种中断源 的中断服务子程序的入口地址。通常在这些入口地址处都 安放一条绝对跳转指令,而真正的中断服务子程序从转移 地址开始安放。
程序存储器中的几个特殊单元
地址 0000H 0003H 000BH 0013H 001BH 0023H 002BH
用途 复位地址 外部中断0入口地址 定时器0中断入口地址 外部中断1入口地址 定时器1中断入口地址 串行口中断入口地址 定时器2溢出或T2EX(P1.1)端负跳变
R3
02H
R2
工 作 寄 存 器 区
01H
R1
00H
R0
0
• MCS-51内部数据存储器中可以设置堆栈,但是其位置不 固定。可以通过一个专用寄存器SP(栈指针)来确定栈 顶的地址。堆栈深度可达128b,但是以不超出内部RAM 空间为限。
• 内部RAM块中的20H~2FH(32~47)单元和SFR块中的 12个单元构成了布尔处理机的存储器空间,这28单元的 221位(28×8减去3个未定义位)各自都有专门的位地址, 可以被直接寻址。
• 在51子系列中,只有低128b的RAM块和128b的专用寄存 器块,后者占有80H~FFH(128~255)地址空间,两块 地址空间是相连的;
• 而在52子系列中,高128字节RAM块与SFR块的地址是重 合的,究竟访问哪一块是通过不同的寻址方式加以区分的。 访问高地址字节RAM时采用寄存器间接寻址方式,访问 SFR块则采用直接寻址方式。而访问低128字节RAM时, 两种寻址方式都可以采用。

2.2 内部数据存储器
• 数据存储器在物理上和逻辑上都分为两个地址空间,一个 内部和一个外部数据存储器空间。访问内部数据存储器用 MOV指令;访问外部数据存储器用MOVX指令。
• 内部数据存储器在物理上又可以区分为3个不同的块: 00H~7FH(0~127)单元组成的低128字节的RAM块; 80H~FFH(128~255)单元组成的高128字节的RAM块 (8052单片机有这一块); 128b的专用寄存器(SFR)块;
8052/8752程序存储器配置图
• 对程序存储器可以采用立即寻址和基址+变址寻址方式 • 64kb程序存储器中有7个单元具有特殊功能 • 0000H单元 MCS-51复位后程序计数器PC的内容为
0000H,所以系统必须从0000H单元开始取指,执行程序。 该单元是系统的启动地址,一般在该单元中存放一条绝对 跳转指令,而用户设计的主程序从跳转地址开始安放。
• 从用户使用的角度,即逻辑上,MCS-51有3个存 储器空间:
片内外统一的64kb的程序存储器地址空间; 256b或384b的内部数据存储器地址空间; 64kb的外部数据存储器地址空间;
访问这3个不同逻辑空间时应采用不同形式的指令
2.1 程序存储器
• 程序存储器用于存放编好的程序和表格常数。 • 在MCS-51中,64kb程序存储器的地址空间是统一的。对于
有内部ROM的单片机,在正常运行时,应把~EA引脚接高 电平,使程序从内部ROM开始执行,当PC值超出内部ROM 的容量时,会自动转向外部程序存储器空间;对这类芯片, 若把~EA引脚接低电平,可用于调试状态,把调试程序放置 在与内部ROM空间重叠的外部存储器内。对于无内部ROM 的芯片,~EA引脚应始终接低电平,迫使系统从外部程序存 储器取指。
• 片内RAM 低128字节(00H—7FH)
89C51 128字节
FFH
52子系列才有 的RAM区
80H 7FH
普通RAM区
30H
2FH 20H
位寻址区
1FH 00H
工作寄存器区
FFH SFR分布在 80H-FFH
其中92个位 可位寻址
80H
所有的RAM区(包括位 寻址区、工作寄存器 区)都可以用于存放 数据,故也称为数据 缓存寄存器
• 注意:128b的SFR块中只有26个字节是有定义的,若访问 这一块中没有定义的单元,将得到一个不确定的随机数
FFFFH
片外RAM
FFH 80H 7FH 00H
专用寄存器 内部RAM
内部数据存储器
0000H 外部数据存储器
8051/8751数据存储器配置图
FFH
80H 7FH 内部RAM 00H
• 片内RAM前32个单元是工作寄存器区 (00H—1FH)
FFH
52子系列才有 的RAM区
80H 7FH
普通RAM区
30H
2FH 20H
位寻址区
1FH 00H
工作寄存器区
1FH 18H
工作寄存器区3
17H 10H
工作寄存器区2
0FH 08H
工作寄存器区1
07H
R7
06H
R6
05H
R5
04H
R4
03H
专用寄存器
内部数据存储器
FFFFH
片外RAM
0000H 外部数据存储器
8052/8752数据存储器配置图
• 内部数据存储器的00H~1FH(0~31)单元共32b是4个通 用寄存器区,每个区有8个8位寄存器,编号为R0~R7。 在专用寄存器PSW(程序状态字)中有2位(RS0、RS1) 可以用来确定采用哪一个工作寄存器区。可以通过两种方 法改变这两位的值:1)对PSW寻址,通过改变PSW的值 来间接改变这2位的值;2)直接对RS0、RS1寻址,改变 它们的值。例如, RS0=0、RS1=1选择的是区1,而 RS0=0、RS1=0选择区0
相关文档
最新文档