‘壹’ 单片机的存储器结构
通过上面的实验我们已经知道:一盏灯亮或者说一根线的电平的高低,能代表两种状态:0和1。实际上这就是一个二进制位,因此我们就把一根线称之为一“位”,用BIT表示。
什么是字节:
一根线能表于0和1,两根线能表达00,01,10,11四种状态,也就是能表于0到3,而三根能表达0-7,计算机中常常用8根线放在一起,同时计数,就能表过到0-255一共256种状态。这8根线或者8位就称之为一个字节(BYTE)。不要问我为什么是8根而不是其它数,因为我也不知道。(计算机世界是一本人造的世界,不是自然界,很多事情你无法问为什么,只能说:它是一种规定,大家在以后的学习过程中也要注意这个问题)
存储器的工作原理:
1、存储器构造
存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低,而不是我们所习惯认为的1234这样的数字,这样,我们的一个谜团就解开了,计算机也没什么神秘的吗。
图2
图3
让我们看图2。单片机里面都有这样的存储器,这是一个存储器的示意图:一个存储器就象一个个的小抽屉,一个小抽屉里有八个小格子,每个小格子就是用来存放“电荷”的,电荷通过与它相连的电线传进来或释放掉,至于电荷在小格子里是怎样存的,就不用我们操心了,你能把电线想象成水管,小格子里的电荷就象是水,那就好理解了。存储器中的每个小抽屉就是一个放数据的地方,我们称之为一个“单元”。
有了这么一个构造,我们就能开始存放数据了,想要放进一个数据12,也就是00001100,我们只要把第二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了(看图3)。可是问题出来了,看图2,一个存储器有好多单元,线是并联的,在放入电荷的时候,会将电荷放入所有的单元中,而释放电荷的时候,会把每个单元中的电荷都放掉,这样的话,不管存储器有多少个单元,都只能放同一个数,这当然不是我们所希望的,因此,要在结构上稍作变化,看图2,在每个单元上有个控制线,我想要把数据放进哪个单元,就给一个信号这个单元的控制线,这个控制线就把开关打开,这样电荷就能自由流动了,而其它单元控制线上没有信号,所以开关不打开,不会受到影响,这样,只要控制不一样单元的控制线,就能向各单元写入不一样的数据了,同样,如果要某个单元中取数据,也只要打开对应的控制开关就行了。
2、存储器译码
那么,我们怎样来控制各个单元的控制线呢?这个还不简单,把每个单元元的控制线都引到集成电路的外面不就行了吗?事情可没那么简单,一片27512存储器中有65536个单元,把每根线都引出来,这个集成电路就得有6万多个脚?不行,怎么办?要想法减少线的数量。我们有一种办法称这为译码,简单介绍一下:一根线能代表2种状态,2根线能代表4种状态,3根线能代表几种,256种状态又需要几根线代表?8种,8根线,所以65536种状态我们只需要16根线就能代表了。
(图4)
3、存储器的选片及总线的概念
至此,译码的问题解决了,让我们再来关注另外一个问题。送入每个单元的八根线是用从什么地方来的呢?它就是从计算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器件,如图4所示。这样问题就出来了,这八根线既然不是存储器和计算机之间专用的,如果总是将某个单元接在这八根线上,就不好了,比如这个存储器单元中的数值是0FFH另一个存储器的单元是00H,那么这根线到底是处于高电平,还是低电平?岂非要打架看谁历害了?所以我们要让它们分离。办法当然很简单,当外面的线接到集成电路的管脚进来后,不直接接到各单元去,中间再加一组开关(参考图4 )就行了。平时我们让开关关闭着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。这组开关由三根引线选择:读控制端、写控制端和片选端。要将数据写入片中,先选中该片,然后发出写信号,开关就合上了,并将传过来的数据(电荷)写入片中。如果要读,先选中该片,然后发出读信号,开关合上,数据就被送出去了。注意图4,读和写信号同时还接入到另一个存储器,但是由于片选端不一样,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误会”而开门,造成冲突。那么会不一样时选中两片芯片呢?只要是设计好的系统就不会,因为它是由计算控制的,而不是我们人来控制的,如果真的出现同时出现选中两片的情况,那就是电路出了故障了,这不在我们的讨论之列。
‘贰’ 单片机存储器分为哪几类,各有哪些特点和用
单片机存储器分为:程序存储器和数据存储器。
数据存储器又分为:内部数据存储器和外部数据存储器。
内部数据存储器又分为:
1、工作寄存器,共4组,地址范围00H~1FH
2、位址空间,地址范围20H~2FH
3、用户寄存器,地址范围30H~7FH(FFH)
4、特殊功能寄存器,地址范围80H~FFH
‘叁’ 单片机存储器分为哪几类各有哪些特点和用途
大的方面分为两个:RAM和ROM。RAM用于存储一些变量相当于草稿纸,ROM用于存储程序。
RAM分为:内部RAM和外部扩展RAM
内部RAM又包括:
R0~R7工作寄存器(共4个工作区)地址00~1FH
位寄存器,地址20~2FH
用户寄存器30~7FH(有的是30~FFH)
特殊功能寄存器80~FFH
‘肆’ 8051单片机的主要存储空间是什么
8051的通用寄存器(r0-r7)通过PSW映射在IRAM的0x00开始到0x20结束,共4组,每组8字节。
至于累加器(ACC),辅助寄存器(B)和数据指针寄存器(DPTR)是编址在IRAM中的。8051其实类似堆栈机模型,而且CPU和IRAM的关联度非常高,不像现代的计算机结构一样容易分离。不过如果将IRAM看待为一个大型REGISTER FILE,就更好分析8051系统了。你可以认为IRAM就是个巨大的寄存器组,CPU直接访问IRAM的效率和寄存器的效率差别不大。
并且8051背负的历史包袱太严重。原本IRAM的0x00-0x7f作为RAM使用,0x80-0xff作为SFR使用。而后8052这款芯片将0x80-0xff这段IRAM的作用增多:指针访问做RAM,直接访问做SFR。这样直接导致了8051访存效率的降低以及初学者经常拎不清楚的问题出现。同样,外部的XRAM和ROM的访问必须依赖DPTR等指针访问,这迫使不少增强型8051单片机生产商推出了双DPTR的设计。
这样的比较混乱,略微复杂,靠着专利过期成功商业化的单片机结构即将迎来它的末日。建议题主改学ARMv7/LC2K/MIPS/RISC-V/AVR这类简洁而高效的架构
‘伍’ 单片机内部主要储存资源是什么
单片机内部主要储存资源是程序存储器(如多少K*位数),RAM(多少字节),还有的带EEPROM(多少字节)。
‘陆’ 单片机的存储器可以分为几种
单片机的存储器可分为程序存储器(ROM)和数据存储器(RAM)。
程序存储器是专门用来存放程序和常数的。
数据存储器是程序在运行中存放临时数据的,掉电后数据即丢失,现在有些型号的单片机提供了EEPROM,可用来存储掉电后需要保存的关键数据,如系统的一些设置参数。
‘柒’ 单片机的片内和片外存储器的功能各是什么
单片机的存储器的按功能分为RAM和ROM,RAM常用作寄存器和数据存储器,ROM都用作程序存储器,片内和片外没什么差别,往往是片内不够用,片外扩充,当然,单片机的特殊寄存器(用作运算或设置单片机功能)一定在片内,而且也是不能扩充的。