历史上的今天
返回首页

历史上的今天

今天是:2025年12月14日(星期日)

2022年12月14日 | 51单片机——存储器(一)

2022-12-14 来源:zhihu

1.存储器概述

存储器是许多存储单元的集合,存储器单元实际上是时序逻辑电路(锁存器)的一种,按单元号顺序排列。每个单元由若干二进制位构成,以表示存储单元中存放的数值,这种结构和数组的结构非常相似。按存储器的使用类型可分为只读存储器(ROM)和随机存取存储器(RAM)。


1.1 存储单位

位(bit):它是计算机中最小的数据单位。由于计算机采用二进制数,所以1位二进制数称作1bit,例如101011为6bit。

字节(Byte,单位简写为B):8位二进制数称为一个字节,1B=8bit。

字(Word):两个字节构成一个字,即2Byte=1Word。

在单片机中还有一个常用术语:字长。所谓字长是指单片机一次能处理的二进制数的位数。51单片机一次能处理8位二进制数,所以51单片机的字长为8位。

1.2 存储器编址

如下图所示是一个容量为256字节的存储器,内部有256个存储单元,每个存储单元可以存放8位二进制数,为了存取数据方便,需要对每个存储单元进行编号,也即对存储单元编址,编址采用二进制数,对256个存储单元全部编址至少要用到8位二进制数,第1个存储单元编址为00000000,编写程序时为了方便,一般用十六进制数表示,二进制数00000000用十六进制表示就是00H,H表示十六制数,第二个存储单元编址为01H,第256个存储单元编址为FFH(也可以写成0FFH)。

图1 存储器结构

1.3存储器数据读写说明

要对256字节存储器的每个存储单元进行读写,需要8根地址线和8根数据线,先送8位地址选中某个存储单元,再根据读控制或写控制,将选中的存储单元的8位数据从8根数据线送出,或通过8根数据线将8位数据存入选中的存储单元中。以图1 存储器结构为例,当地址总线A7~A0将8位地址00011111(1FH)送入存储器时,会选中内部编址为1FH的存储单元,这时再从读控制线送入一个读控制信号,1FH 存储单元中的数据00010111从8根数据总线D7~D0送出。


1.4 存储器的地址空间说明

MCS-51单片机采用哈佛结构,即程序空间(ROM)和数据空间(RAM)分开编址,它们有各自的地址空间,互不重叠,因此ROM和RAM可以有相同的地址编码。为区分同一地址的变量是来自ROM还是RAM,要求编程时定义的任何变量都必须以一定的存储器类型的方式定位在MCS-51单片机的某一存储区中。使用C51编程时,只需用关键字就可定义变量的存储器类型。C51变量的存储器类型见下表所示。

从物理地址空间看,MCS-51单片机的存储器有4个地址空间,分别是4KB的片内ROM、64KB的片外ROM、256B的片内RAM、64KB的片外RAM。


2.ROM(程序存储器)

ROM(程序存储器)存放程序、表格和始终要保留的常数,相当于计算机系统的硬盘;


2.1 片内外ROM(程序存储器)

8051单片机内部有4KB的程序存储器,如果内部程序存储器不够用(或无内部程序存储器),可以外接程序存储器。8051单片机最大可以外接容量为64KB的程序存储器(ROM),它与片内4KB程序存储器统一编址。


当单片机的

端接高电平(接电源正极)时,片内、片外程序存储器都可以使用,片内4KB 程序存储器的编址为0000H~0FFFH,片外64KB 程序存储器的编址为1000H~FFFFH,片外程序存储器低4KB存储空间无法使用,如下图所示。

当单片机的

动图封面

端接低电平(接地)时,只能使用片外程序存储器,其编址为0000H~FFFFH,片内4KB程序存储器无法使用,如下图所示。

2.2 片内外ROM(程序存储器)说明

(1)无论是使用片内ROM还是使用片外ROM,程序的起始地址都是从ROM的0000H单元开始的。

(2)尽管单片机可以同时具备内、外ROM,但是在一般情况下,都需要通过

的设定来选择其一。

(3)如果

=1,当程序超过片内ROM容量(4KB:0000H~0FFFH)时,单片机就会自动转向片外ROM,并且从1000H单元开始执行程序(无法使用片外ROM的低4KB空间)。目前,一般单片机的片内ROM容量都够,因此,很少或没必要扩展片外ROM。


ROM空间一般可以根据用户需要任意安排使用,但ROM中的某些地址被中断程序的入口地址占用,具体如下表所示。


版权声明:本文为CSDN博主「胡豆24」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。版权归原作者所有,如有侵权,请联系删除。


推荐阅读

史海拾趣

DESCO公司的发展小趣事

DESCO公司成立于XX年代初,创始人[XXXXX]先生凭借其深厚的电子工程背景和敏锐的市场洞察力,决定投身于防静电产品的研发与生产。在创业初期,公司面临资金紧张、技术壁垒高等诸多困难,但[XXXXX]先生坚持技术创新,带领团队攻克了一个又一个技术难关,成功研发出首款高性能防静电垫,为公司的后续发展奠定了坚实基础。

ECS公司的发展小趣事

面对云计算技术的不断发展和市场竞争的加剧,ECS公司制定了面向未来的战略布局。他们将继续加大在研发方面的投入,推动ECS服务的不断升级和创新;同时,他们还将积极探索新的业务领域和市场机会,为客户提供更加全面、丰富的服务。此外,ECS公司还注重可持续发展和社会责任。他们致力于降低能耗和排放、推动绿色计算等方面的工作;同时,他们还积极参与社会公益事业和慈善活动,回馈社会。这些举措使得ECS公司不仅成为了一家领先的云服务提供商,还成为了一家具有社会责任感的企业。

西安航天民芯公司的发展小趣事

随着公司业务的不断拓展和市场规模的逐步扩大,西安航天民芯吸引了众多投资者的关注。多家知名投资机构纷纷入股公司,为公司的发展提供了强大的资本支持。这些资金的注入不仅加速了公司的技术研发和市场拓展步伐,也为公司的持续发展注入了新的活力。

这五个故事展示了西安航天民芯公司在电子行业中的发展历程和取得的成就。通过不断地技术创新和市场拓展,西安航天民芯已经逐渐成为了电子行业中的领军企业之一,为行业的发展做出了积极的贡献。

Herrmann Kg公司的发展小趣事

Herrmann Kg自成立以来,始终致力于超声波焊接技术的创新。在1960年代初,由Walter Herrmann创立的这家公司,通过引入基于发电机原理的机器发生器,成功替代了当时不稳定的超声波管发生器,这一技术创新极大地提升了超声波焊接的稳定性和效率。随着技术的不断迭代,Herrmann Kg开发出了包括ULTRAPLAST、ULTRAPACK和ULTRABOND在内的多条产品线,这些产品不仅满足了市场对高效、可靠焊接技术的需求,还推动了超声波焊接技术在电子制造领域的广泛应用。

国芯佳品公司的发展小趣事

Herrmann Kg深知不同客户对超声波焊接个性化需求,因此推出了模块化系统解决方案。这些模块化组件可以很容易地集成到现有的生产流程中,确保成功的焊接过程和出色的结果。无论是电子制造、汽车工业还是其他行业,Herrmann Kg都能根据客户的具体需求提供定制化的焊接解决方案。这种灵活性和定制化服务使得Herrmann Kg在市场上具有独特的竞争优势。

Cambridge Electronic Industries Ltd公司的发展小趣事

CEI的发展历程中,技术创新一直是其核心竞争力。公司不断投入研发资源,探索新的电子技术和应用领域。在某一时期,CEI成功研发出了一款具有革命性的电子产品,该产品在性能、稳定性和成本方面均达到了行业领先水平。这一产品的推出,不仅为CEI带来了可观的经济效益,更重要的是,它为公司树立了技术创新和产品质量的标杆,进一步巩固了CEI在电子行业中的地位。

问答坊 | AI 解惑

参数化串口发送程序

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --LIBRARY ALTERA; --USE ALTERA.MAXPLUS2.ALL; LIBRARY LPM; USE LPM.LPM_COMPONENTS.ALL; -- *************************** ...…

查看全部问答>

机柜操作台图片展示

核心提示:   监控操作台、机柜的技术规范 1、 监控操作台为上下分体,左右二组整体拼装结构。 2、 监控操作台采用钢木结合或全钢材料制作,配缝不大于1.0毫米,立面板可按所安装设备尺寸开孔,整体美观、 监控操作台、机柜的技术规范 1、&n ...…

查看全部问答>

刚装的ev4.0 运行程序提示 Cannot Execute Program

今天上午刚安装的evc4.0     安装过程是    ActiveSync->eVC4->eVC4 sp4->smartphone SDK->crosoft Pocket PC 2003 SDK->Windows Mobile 2003 Second Edition Emulator Images for Pocket PC - CHS;   &nbs ...…

查看全部问答>

请问wince 扫描仪驱动的一些问题

   最近需要开发一个扫描仪在wince下的驱动程序,但是没有一点头绪,希望做过的兄弟帮忙给点提示。 我用的板子是2440+wince5.0,扫描仪还没确定。    要做这样一个驱动需要做些什么准备?怎么开始?如果有具体流程就更好了, ...…

查看全部问答>

关于wince程序最小化的问题

各位好!请问如何能将一个wince的程序最小化呢?发现showwindow(SW_MINIMIZE)并不起作用。和windowmobile差别很大呀!谢谢大家…

查看全部问答>

AD转换软件写入方式怎么有延迟,谁能帮我看看到底错在哪里

没有错误,AD转换是500Hz,转换出来才200Hz左右,错在哪里啊,感觉是while(AD0INT==0); 浪费时间了,高手来帮帮忙 //----------------------------------------------------------------------------- void PORTb_Init (void) { //  &nbs ...…

查看全部问答>

新手求教,关于学习驱动开发!

新手求教,关于学习驱动开发! 对于驱动开发本人是菜鸟一个,由于工作需要,要求必须掌握驱动程序开发,主要是针对windows内核的(不涉及到硬件的驱动)。由于本人对这方面的知识掌握得很少,所以在这里请教各位驱动前辈我应该从哪里入手,该掌握 ...…

查看全部问答>

wince5.0工程调试步骤,在线等,

我现在想调试串口程序,在串口上外接一个设备时,会不停有个对话提示:USB CONNE未联接,请问这是问题大概是串口的哪个程序有问题啊? 我想用WINCE5.0编译生成修改后的NK文件。请问要怎样编译,才最快呀?…

查看全部问答>

关于CCS安装的问题,小女子急!没分了,真抱歉啊,5555~

CCS 2.2版本,同一个软件我在公司的机子上安装没有出现任何问题,在自己的机子上安装,装了好几次都出现同样的问题,每次open一个新的工程,就出现no build tools were found.两台机子都同是xp的系统. 请高手指点,拜托了!…

查看全部问答>