现实竞争激烈,学透才能在职场做个风云人物,单片机存储器篇

接着上一期内容我们继续来认识一下单片机存储器,学习一些相关知识。

片内的ROM和片外的ROM有两种组合方案,第一个方案是51单片机内部的ROM一共有4K,4K是它的存储容量,它的存储空间分布地址分布式从0000H到0FFFH,大家要理解什么叫做存储容量,什么叫做地址分布,比如说一个空间里面可以容纳4085个人,这4085个人指这个空间的容量是4085个人,把十进制的4085转换成这个二进制转换成二进制的这种方式称之为4K,也就是按照二进制进行编码,一共会占到12个1,就是2的平方乘以2的10次方,这样的话它的地址空间就是从0000H到0FFFH,也就相当于是这个空间一共是4096个座位,每个座位上可以做一个8位的二进制数,这个座位我们不按十进制进行编码,而是按照二进制进行编码,需要多少个多少位的二进制呢?需要12位的二进制,这样的话这12位的二进制,它的范围就是从12个0到12个1,我们按照16进制来表示,那这个地址空间的分布就是从0000H到0FFFH,大家一定要能够理解这个空间和地址分布的一个概念就是地址实际上是对每一个单元的一个编码,只不过是按照二进制进行编码,以16进制的方式呈现,这个和空间的概念把它深刻地领会一下。

现实竞争激烈,学透才能在职场做个风云人物,单片机存储器篇_第1张图片

51单片机内部的ROM一共是4K,也就是存储空间是4K,同时如果说你的单片机内部ROM不够用,也可以使用外部room,这个时候我们有两种方案可以配置,这两种方案的配置是由什么来决定?是由这个我们单片机当中有一个引脚,叫做EA引脚,这个上一篇文章,单片机引脚的时候提到过引脚,当EA引脚如果说结成高电平的时候,我们使用的是内部ROM,这个时候就相当于我们用的是这个方案一,如果说是内部ROM的话,比如说写了一个程序写了8K,内部ROM只有4K,这个时候你必然要做外部的扩展,就是外部会扩展4k,比如说外部扩展了4K,这样的话加上内部的4K一共是8K。

这个程序如果说把EA引脚接成高电平,它这个程序应该怎么走呢?那就是说在程序存储的时候,它是刚开始肯定是先存在内部ROM,当内部ROM4k存满了之后,它会自动的跳到外部的入幕当中进行存储,也就是跳到外部扩展的那4K进行存储,那这个是EA接成高电平的时候,如果说EA接成低电平的时候采用方案二,这个时候内部ROM就没有用了,这个时候我们程序存储的时候是从外部ROM开始存储,这个时候外部ROM,比如说就要扩一个8K的外部ROM,这个程序就是只存在外部ROM当中,就不会再烧到内部ROM当中,这个大家要注意的这两种方案,我们目前常用的方案都是直接把EA引脚接成高电平,使用内部的ROM,因为我们现在集成电路的发展速度很快的吧,ROM空间已经可以全部做到内部去了,它最大可以做到多少呢?最大不能超过64K,这个的原因主要是由我们51单片机它的地址总线决定的,它的地址总线是16位的,所以它的最大的空间是2的16次方,也就是不能超过64K,它的寻址的一个地址范围已经确定了,就是说它不能超过64k,原来可以使用内部ROM的方案,也可以使用外部ROM的方案。

现实竞争激烈,学透才能在职场做个风云人物,单片机存储器篇_第2张图片

如果使用内部ROM方案可以不可以扩展外部?也可以扩展外部的,当内部用完的时候会自动跳到外部去,但是如果我们使用的是外部ROM这种方案,把一些接通了的电平,这样的话,如果说外部没有扩展ROM,这个芯片就用不了,必须要快扩展外部ROM,也就是说当接成高电平的时候,可以同时使用片内和片外,如果接成低电平的时候,你仅能使用片外的ROM,片外的ROM就不可以缺少了,这个大家注意,片内片外它是采取统一编制的,所以可以把它看作一个逻辑存储空间,这样的话实际上我们51单片机四个存储空间,相当于三个逻辑存储空间,因为我们的ROM就是说ROM这相当于是一个逻辑空间,因为它的片内和片外采取的是统一编制的办法,虽然它物理上是两个,但实际上在逻辑上我们是一个,所以我们51单片机有四个物理存储空间,但是相当于是三个逻辑存储空间,它们最大的扩展容量都不能超过64K,这个是由它的地址总线决定的,这个大家一定要理解。

现实竞争激烈,学透才能在职场做个风云人物,单片机存储器篇_第3张图片

接下来看ROM当中的几个特殊的单元,在ROM当中,它实际上还有几个比较重要的或者是叫特殊的单元,从0000H这个地址,这个地址要注意,这个地址是单片机上电的时候,PC指针指向的一个首地址,所以单片机上电的时候,永远都是指向这,当单片机指向这的时候第一条指令这个地方是主程序的跳转指令。

现实竞争激烈,学透才能在职场做个风云人物,单片机存储器篇_第4张图片

所以通过这个图你就可以了解我们单片机的一个执行过程,比如说你写了一段代码,这段代码从什么地方开始存呢?从0030H开始存,也就是说我们之前文章写流水灯的代码,从这个地方开始顺序往上存,那单片机上电的时候,它怎么样来找到这段代码来执行的呢?是因为我们在0000这个H当中做了一条跳转指令,也就是PC指针附列复位的时候,永远指向这,有了这条跳转指令上面之后,就会立马跳到这个位置去顺序执行我们的代码,在执行代码的过程当中,如果说发生了中断,这几块就发挥了作用,那你可以发现从0003H到0023H这几个字节,是我们的中断向量的入口地址,那这一块儿主要适用于程序的引导,是比较特殊的单元,我们存放代码的时候尽量的是不要存放在这个位置,当然了,我们用C语言或者用Kail编写51单片机的程序,就是编C语言的程序,我们的编译器会帮我们做处理,所以大家大概了解一下程序存储的过程,就是我们程序的控制是靠PC指针,PC指针上面的时候指向我们放一条跳转指令,为什么放跳转呢?因为我们的主程序真正的存放是从这开始存的,那为什么不存在这一块呢,因为这一块儿是我们的中断向量的入口地址是中断的,这个我们到时候讲中断的时候再给大家具体来分析,先记住有五个中断,有五个中断源,所以有五个中断向量的入口地址,每一个中断向量入口地址占了是8个字节的存储空间,所以可以发现,从0003到从03到这个地方,000一共只有三个字节用于存放跳转指令,所以这边一般是不足以存放一段代码,只能存跳转指令,具体的这个程序的执行,我们讲中断的时候再给大家分析,但是你要先记住这几个关键的单元,这个关于我们叫做中断向量的入口地址,这个0000H是主程序的入口地址,中断的话,我们后面再给大家具体来讲。

现实竞争激烈,学透才能在职场做个风云人物,单片机存储器篇_第5张图片

接着看片内的数据存储器,数据存储器主要是用来存放程序运行的中间结果,8051单片机,它的RAM片内的数据存储器RAM一共是由两部分组成的,一个是低于128个字节,第128个字节也就相当于这个空间有128个座位,按照十进制进行编码的话,是从0到127的把它按照二进制进行编码,就是从00H到7FH,这个是低128个字节的用户RAM,接着还有一个高128个字节的RAM,但是需要注意的是我们用户能够使用的是128个字节,高128个字节,我们叫做特殊功能寄存器区,是我们单片机特殊的一些单元,我们叫特殊功能寄存器,SFR那些单元全部在,高128个字节里面,所以我们通常讲51单片机的内部的RAM是多大,我们通常指的是128个字节,而没有讲是256个字节,但实际上它内部是256个字节,只不过这高128个字节是我们的特殊功能寄存器区,这个大家要把它理解清楚,就是低128个字节是我们的普通RAM区,高128个字节是特殊功能寄存器区。

现实竞争激烈,学透才能在职场做个风云人物,单片机存储器篇_第6张图片

低128个字节同时它又画了好几个区域,低128个字节主要分为三个区域,第一个区域也就是从00H到1FH,这个地方一共分了四组,每组八个,一共占了32个字节,我们叫做工作寄存器区从20H到2FH,我们叫做位寻址区,在位寻址区里面,我们对每一个位又进行了编码,进行了位的地址编码,大家可以发现,从20H到2FH一共占了16个字节,一个字节是八位,正好是128个位,那这128个位我们又给它做了一个啊,地址的一个啊定义,那就是说我们重新对这128个为,每一个未进行一个地址编码,相当于是我们这个空间可以坐128个人,但这个时候这128个人不再是128个字结束了,而是什么呢?而是一个位,就是一个比特,这128个位,我们还是把它按照地址的方法进行编码,按照二进制进行编码,那正好还是00到7FH地址空间,这个叫做位地址,这个大家要和字节地址区分开,大家可以发现这个RAM的字节地址也是从0到7F,那这个位地址它也是从0到7F,但是它里面做的数不一样。

对文章内容感兴趣的朋友可以进入我的主页翻看一下以往的相关内容,喜欢的帮忙收藏点个赞哦,以上文章内容仅代表个人观点,不喜勿喷,谢谢大家的支持与鼓励!

想学单片机的朋友,可以私信我,我可以发一些资料给大家作为参考学习的内容,有问题的朋友也可以在评论区评论,或者私信我,尽量帮大家解决朋友们提出的问题,谢谢大家,最后祝看帖的各位朋友身体健康,万事顺利


​​​​​​​

你可能感兴趣的:(嵌入式,单片机入门,C语言,单片机,stm32,嵌入式硬件,物联网,c语言)