在上一个关于8051微控制器的教程中,我们看到了8051微控制器简介以及基础知识,销图,引脚描述和体系结构概述。在本教程中,我们将通过了解8051微控制器内存组织,程序内存(ROM),数据存储器(RAM),外部内存来继续探索8051微控制器。
当上一个教程中提到微处理器和微控制器之间的差异时,可以将主要差异表示为片上存储器,即微控制器在同一芯片(IC)上同时具有程序存储器(ROM)和数据存储器(ROM),而微处理器必须与内存模块进行外部接口。
因此,很明显,内存是8051微控制器体系结构的重要组成部分(因此,任何微控制器)。因此,对我们而言,重要的是要了解8051微控制器内存组织,即记忆的组织方式,处理器如何访问每个内存以及如何与8051 MicroController接口外部存储器。
在进行8051 MicroController内存组织的详细信息之前,我们将首先看到有关计算机体系结构的一点,然后继续进行8051 MicroController的内存组织。
也可以阅读8051微控制器体系结构概述。
计算机架构类型
基本上,根据两种类型的计算机体系结构对微处理器或微控制器进行分类:von Neumann Architecture和Harvard Architecture。
冯·诺伊曼建筑
von Neumann体系结构或普林斯顿体系结构是计算机架构,即程序和数据存储在单个内存中。
由于指令内存和数据存储器相同,因此处理器或CPU无法同时访问指令和数据,因为它们使用了单个总线。
这种类型的体系结构对系统的性能有严重的限制,因为它在访问内存时会产生瓶颈。
哈佛建筑
与冯·诺伊曼(Von Neumann)体系结构相比,哈佛建筑使用单独的内存进行指导(程序)和数据。由于指令记忆和数据存储器在哈佛体系结构中是分开的,因此它们的信号路径,即总线也不同,因此CPU可以同时访问指令和数据。
几乎所有的微控制器,包括8051微控制器实施哈佛架构。
8051微控制器内存组织
8051微控制器内存在程序内存(ROM)和数据存储器(RAM)中分开。8051微控制器的程序内存用于存储要执行的程序,即指令。另一方面,数据存储器用于存储临时变量数据和中间结果。
8051微控制器具有内部ROM和内部RAM。如果内部内存不足,则可以使用合适的电路添加外部内存。
阅读此有趣的帖子:8051工程专业学生的微控制器项目。
8051微控制器的程序内存(ROM)
在8051 MicroController中,要执行的代码或指令存储在程序内存中,该记忆也称为MicroController的ROM。英特尔最初的8051微控制器具有4KB的内部ROM。
8051的某些变体(例如8031和8032系列)没有任何内部ROM(程序存储器),必须与外部程序内存连接,其中加载了指令。
几乎所有现代的8051微控制器(例如8052系列)都以闪存(ROM)的形式具有8KB的内部程序内存(ROM),并提供了重新编程内存的选项。
如果是4KB的内部ROM,则地址空间为0000H至0FFFH。如果地址空间,即程序地址超过此值,则CPU将自动从外部程序内存中获取代码。
为此,必须将外部访问引脚(EA PIN)拉高,即当EA引脚高时,CPU首先在0000H的地址范围内从内部程序内存中获取指令至0FFFFFH,并且内存地址超过限制。,然后将指令从1000H的地址范围内从外部ROC中获取到FFFFH。
还有另一种获取指令的方法:忽略内部ROM,仅从外部程序内存(外部ROM)中获取所有指令。对于这种情况,必须将EA PIN连接到GND。在这种情况下,外部ROM的内存地址将从0000H到FFFFH。
8051微控制器的数据存储器(RAM)
8051微控制器的数据存储器或RAM存储临时数据和中间结果,这些结果在微控制器的正常操作过程中生成和使用。原始英特尔的8051微控制器具有128B的内部RAM。
但是,8051微控制器的几乎所有现代变体都有256b的RAM。在这256b中,第一个128b即,从00h到7fh的内存地址分为工作寄存器(组织为注册库),位 - 可寻址区域和通用RAM(也称为ScratchPad区域)。
在第一个128b的RAM(从00h到7FH)中,前32B,即,从地址00h到1FH的内存由32个工作登记册组成,这些寄存器由4个银行组织,每个银行中有8个寄存器。
这4个银行被命名为Bank0,Bank1,Bank2和Bank3。每个银行由8个名为R0 - R7的寄存器组成。每个寄存器可以通过两种方式解决:按名称或地址。
要按名称解决寄存器,首先必须选择相应的银行。为了选择银行,我们必须使用程序状态字(PSW)寄存器的RS0和RS1位(RS0和RS1是PSW寄存器中的第三和第4位)。
当使用其地址(即12H)处理寄存器时,相应的银行可能会选择也可能不会选择。(12H对应于bank2中的R2)。
RAM的下一个16B,即20H至2FH是位 - 可寻址内存位置。总共可以使用00h到7fh单独解决128位,或者整个字节可以以20小时至2FH的速度解决。
例如,32H是内部RAM位置26H的位2。
内部RAM的最后80b即30h至7fh的地址是可寻址的通用RAM区域。
这些较低的128B RAM可以直接或间接解决。
RAM的上部128b即,分配了从80h到FFH的内存地址,用于特殊功能寄存器(SFRS)。SFRS控制8051微控制器的特定功能。一些SFR是I/O端口寄存器(P0,P1,P2和P3),PSW(程序状态词),A(累加器),IE(中断启用),PCON(POWER CONTROL),ETC。
SRFS内存地址仅是直接地址。即使在80h和FFH之间的某些地址未分配给任何SFR,也不能用作其他RAM区域。
在某些微控制器中,还有一个额外的128B RAM,它们与SFR共享内存地址,即80H到FFH。但是,仅通过间接地址才能访问此额外的RAM块。
将外部内存与8051微控制器接口
无论是在内存,IO还是其他任何东西方面,都有一个选择扩展微控制器功能的选择总是一件好事。这种扩展对于避免设计节流将是有用的。我们已经看到,典型的8051微控制器具有4KB的ROM和128B RAM(最现代的8051微控制器变体具有8K ROM和256B RAM)。
基于8051微控制器系统的设计人员不限于8051微控制器中存在的内部RAM和ROM。有连接外部RAM和ROM的规定,即数据存储器和程序。
接口外部程序内存或ROM的原因是,以高级别的语言编写的复杂程序通常往往更大,并且占据更多的内存。
另一个重要原因是,没有任何内部ROM的8031或8032之类的芯片必须与外部ROM连接。
最多64KB的程序内存(ROM)和数据存储器(RAM)可以与8051微控制器接口。
下图显示了与8051微控制器的外部RAM的64KB接口的框图。
当将外部内存与8051微控制器连接时要记住的一个重要点是,端口0(P0)不能用作IO端口,因为它将用于多路复用地址和数据总线(A0 - A7和D0 - D7)。并非总是如此,但是端口2可以用作地址总线的较高字节。
在本教程中,我们看到了8051 MicroController内存组织,程序内存,数据存储器,内部ROM和RAM,以及如何与8051 MicroController接口外部内存(ROM和RAM)。
9个回应
一个做得很好的解释,我真的很努力地了解8051的内部记忆,这使一切都很清楚,谢谢。
哪个指令用于从外部ROM获取代码
使用DPTR访问外部内存。
我可以在8051中获得有关各种中断及其编程的解释
非常好和乐于助人
movc和地址位置要获取
非常有帮助...谢谢您。
哪个指令用于从外部RAM获取代码
您好,非常好的演示文稿,我是一个Qust,在Adress Ram,即000FH,对HexadeCimal的指导?
所有RAM Adresses是否均以4位格式?