单片机存储器基础知识

上传人:人*** 文档编号:431493829 上传时间:2022-11-12 格式:DOCX 页数:4 大小:39.02KB
返回 下载 相关 举报
单片机存储器基础知识_第1页
第1页 / 共4页
单片机存储器基础知识_第2页
第2页 / 共4页
单片机存储器基础知识_第3页
第3页 / 共4页
单片机存储器基础知识_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《单片机存储器基础知识》由会员分享,可在线阅读,更多相关《单片机存储器基础知识(4页珍藏版)》请在金锄头文库上搜索。

1、单片机存储器结构原理 存储器是单片机的又一个重要组成部分,图6 给出了一种存储容量为256个单元的存储器结构示意图。其 中每个存储单元对应一个地址,256 个单元共有256 个地址,用两位 16进制数表示,即存储器的地址(0 OHFFH)。存储器中每个存储单元可存放一个八位二进制信息,通常用两位16进制数来表示,这就是 存储器的内容。存储器的存储单元地址和存储单元的内容是不同的两个概念,不能混淆。一、程序存储器程序是控制计算机动作的一系列命令,单片机只认识由“0”和“1”代码构成的机器指令。如前述用助记 符编写的命令MOV A,#20H,换成机器认识的代码74H、20H:(写成二进制就是011

2、10100B和0 0100000B)。在单片机处理问题之前必须事先将编好的程序、表格、常数汇编成机器代码后存入单片机 的存储器中,该存储器称为程序存储器。程序存储器可以放在片内或片外,亦可片内片外同时设置。由于 PC 程序计数器为16 位,使得程序存储器可用16 位二进制地址,因此,内外存储器的地址最大可从000 0H到FFFFH。8051内部有4k字节的ROM,就占用了由0000HOFFFH的最低4k个字节,这时片 外扩充的程序存储器地址编号应由 1000H 开始,如果将8051 当做8031 使用,不想利用片内 4kROM, 全用片外存储器,则地址编号仍可由0000H开始。不过,这时应使8

3、051的第31脚(即EA脚)保持 低电平。当EA为高电平时,用户在0000H至OFFFH范围内使用内部ROM,大于OFFFH后,单片机C PU 自动访问外部程序存储器。二、数据存储器单片机的数据存储器由读写存储器RAM组成。其最大容量可扩展到64k,用于存储实时输入的数据。 8051内部有256个单元的内部数据存储器,其中00H7FH为内部随机存储器RAM,80HFFH为专 用寄存器区。实际使用时应首先充分利用内部存储器,从使用角度讲,搞清内部数据存储器的结构和地址 分配是十分重要的。因为将来在学习指令系统和程序设计时会经常用到它们。 8051 内部数据存储器地址 由00H至FFH共有256个

4、字节的地址空间,该空间被分为两部分,其中内部数据RAM的地址为00H 7FH (即0127)。而用做特殊功能寄存器的地址为80HFFH。在此256个字节中,还开辟有一个所 谓位地址”区,该区域内不但可按字节寻址,还可按位(bit) ”寻址。对于那些需要进行位操作的数据, 可以存放到这个区域。从00H到1FH安排了四组工作寄存器,每组占用8个RAM字节,记为R0R7。 究竟选用那一组寄存器,由前述标志寄存器中的RS1和RS0来选用。在这两位上放入不同的二进制数, 即可选用不同的寄存器组,如附表 1 所示。三、特殊功能寄存器特殊功能寄存器(SFR)的地址范围为80HFFH。在MCS-51中,除程序

5、计数器PC和四个工作 寄存器区外,其余21个特殊功能寄存器都在这SFR块中。其中5个是双字节寄存器,它们共占用了 26 个字节。各特殊功能寄存器的符号和地址见附表2。其中带号的可位寻址。特殊功能寄存器反映了 805 1的状态,实际上是8051的状态字及控制字寄存器。用于CPU PSW便是典型一例。这些特殊功能寄存 器大体上分为两类,一类与芯片的引脚有关,另一类作片内功能的控制用。与芯片引脚有关的特殊功能寄 存器是P0P3,它们实际上是4个八位锁存器(每个I/O 口一个),每个锁存器附加有相应的输出驱动 器和输入缓冲器就构成了一个并行口。MCS-51共有P0P3四个这样的并行口,可提供32根I/

6、O线, 每根线都是双向的,并且大都有第二功能。其余用于芯片控制的寄存器中,累加器A、标志寄存器PSW、 数据指针DPTR等的功能前已提及,而另一些寄存器的功能在后面有关部分再作进一步介绍单片机内部存储结构分析我们来思考一个问题,当我们在编程器中把一条指令写进单片要内部,然后取下单片机,单片机就可以 执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持 这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM (READ ONLY MEMOR Y)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的R

7、OM是一 种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为 ROM。数的本质和物理现象:我们知道,计算机能进行数学运算,这可令我们非常的难以理解,计算机吗,我 们虽不了解它的组成,但它总只是一些电子元器件,怎么能进行数学运算呢?我们做数学题如 37+45是这 样做的,先在纸上写37,然后在下面写 45,然后大脑运算,最后写出结果,运算的原材料:37、45和结 果:82 都是写在纸上的,计算机中又是放在什么地方呢?为了解决这个问题,先让我们做一个实验:这里

8、有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们能用0和1来代替这两种状态,规 定亮为1,不亮为0。现在放上两盏灯,一共有几种状态呢?我们列表来看一下:状态java:rejava:rejava:rejava:resizepic(this)sizepic(this)sizepic(this)sizepic(this)border=0border=0border=0border=0java:rejava:rejava:rejava:resizepic(this)sizepic(this)sizepic(this)sizepic(this)border=0border=0border=0bo

9、rder=0表达0 00 11 01 1请大家自已写上 3 盏灯的情况 000 001 010 011 100 101 110 111我们来看,这个 000,001,101 不就是我们学过的的二进制数吗?本来,灯的亮和灭只是一种物理现象, 可当我们把它们按一按的次序排更好后,灯的亮和灭就代表了数字了。让我们再抽象一步,灯为什么会亮 呢?看电路 1,是因为输出电路输出高电平,给灯通了电。因此,灯亮和灭就能用电路的输出是高电平还 是低电平来替代了。这样,数字就和电平的高、低联系上了。(请想一下,我们还看到过什么样的类似的 例程呢?(海军之)灯语、旗语,电报,甚至红、绿灯)什么是位:通过上面的实验我

10、们已经知道:一盏灯亮或者说一根线的电平的高低,能代表两种状态:0和 1。实际上 这就是一个二进制位,因此我们就把一根线称之为一“位”,用 BIT 表示。什么是字节:一根线能表于 0和1,两根线能表达 00,01,10,11四种状态,也就是能表于 0到3,而三根能表达 0- 7,计算机中常常用8 根线放在一起,同时计数,就能表过到0-255 一共256种状态。这8根线或者8位就 称之为一个字节(BYTE)。不要问我为什么是8根而不是其它数,因为我也不知道。(计算机世界是一本 人造的世界,不是自然界,很多事情你无法问为什么,只能说:它是一种规定,大家在以后的学习过程中 也要注意这个问题)存储器的工

11、作原理: 1、存储器构造存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电 平的高、低,而不是我们所习惯认为的1234 这样的数字,这样,我们的一个谜团就解开了,计算机也没什 么神秘的吗。崔控制绞r /java:resizepic(this) border=0图 2存储器构 造java:resizepic(this) border=0图 3存储 器构造让我们看图 2。单片机里面都有这样的存储器,这是一个存储器的示意图:一个存储器就象一个个的小 抽屉,一个小抽屉里有八个小格子,每个小格子就是用来存放“电荷”的,电荷通过与它相连的电线传进 来或释放掉,至于电

12、荷在小格子里是怎样存的,就不用我们操心了,你能把电线想象成水管,小格子里的 电荷就象是水,那就好理解了。存储器中的每个小抽屉就是一个放数据的地方,我们称之为一个“单元”。有了这么一个构造,我们就能开始存放数据了,想要放进一个数据12,也就是00001100,我们只要把第 二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了(看图 3)。可是问题出来了,看 图 2,一个存储器有好多单元,线是并联的,在放入电荷的时候,会将电荷放入所有的单元中,而释放电 荷的时候,会把每个单元中的电荷都放掉,这样的话,不管存储器有多少个单元,都只能放同一个数,这 当然不是我们所希望的,因此,要在结构上稍作

13、变化,看图 2,在每个单元上有个控制线,我想要把数据 放进哪个单元,就给一个信号这个单元的控制线,这个控制线就把开关打开,这样电荷就能自由流动了, 而其它单元控制线上没有信号,所以开关不打开,不会受到影响,这样,只要控制不一样单元的控制线, 就能向各单元写入不一样的数据了,同样,如果要某个单元中取数据,也只要打开对应的控制开关就行了。2、存储器译码那么,我们怎样来控制各个单元的控制线呢?这个还不简单,把每个单元元的控制线都引到集成电路的 外面不就行了吗?事情可没那么简单,一片27512存储器中有65536个单元,把每根线都引出来,这个集 成电路就得有6 万多个脚?不行,怎么办?要想法减少线的数

14、量。我们有一种办法称这为译码,简单介绍 一下:一根线能代表 2 种状态,2 根线能代表 4 种状态,3 根线能代表几种,256 种状态又需要几根线代表? 8种,8根线,所以65536种状态我们只需要 16根线就能代表了。3、存储器的选片及总线的概念至此,译码的问题解决了,让我们再来关注另外一个问题。送入每个单元的八根线是用从什么地方来的 呢?它就是从计算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器件,如图 4 所示。这样问题就出来了,这八根线既然不是存储器和计算机之间专用的,如果总是将某个单元接在这八 根线上,就不好了,比如这个存储器单元中的数值是0FFH另一个存储器的单

15、元是00H,那么这根线到底是 处于高电平,还是低电平?岂非要打架看谁历害了?所以我们要让它们分离。办法当然很简单,当外面的 线接到集成电路的管脚进来后,不直接接到各单元去,中间再加一组开关(参考图 4)就行了。平时我们 让开关打开着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。 这组开关由三根引线选择:读控制端、写控制端和片选端。要将数据写入片中,先选中该片,然后发出写 信号,开关就合上了,并将传过来的数据(电荷)写入片中。如果要读,先选中该片,然后发出读信号, 开关合上,数据就被送出去了。注意图4,读和写信号同时还接入到另一个存储器,但是由于片选端不一 样

16、,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误会”而开门,造成冲突。那么会 不一样时选中两片芯片呢?只要是设计好的系统就不会,因为它是由计算控制的,而不是我们人来控制的, 如果真的出现同时出现选中两片的情况,那就是电路出了故障了,这不在我们的讨论之列。从上面的介绍中我们已经看到,用来传递数据的八根线并不是专用的,而是很多器件大家共用的,所以 我们称之为数据总线,总线英文名为BUS,总即公交车道,谁者能走。而十六根地址线也是连在一起的, 称之为地址总线。半导体存储器的分类按功能能分为只读和随机存取存储器两大类。所谓只读,从字面上理解就是只能从里面读,不能写进去, 它类似于我们的书本,发到我们手

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

当前位置:首页 > 学术论文 > 其它学术论文

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