由于采用改进型哈佛架构,51单片机具备独立的程序存储器ROM、数据存储器RAM,两者地址空间独立,且独立编址,如下是单片机的存储器结构图。
数据存储器分为RAM和外部RAM,两者地址空间独立,且独立编址。以子系列52为例,由于具备256B寻址能力,编址空间为0x00~0xFF。RAM除了临时存储用户数据外,还用于CPU通用寄存器,位寻址区,堆栈等。可以使用MOV指令对RAM进读写访问。外部RAM具备64kB寻址能力,用于用户临时数据存放,但是需要用户外部扩展。可以使用MOVX指令访问外部RAM,外部RAM访问由地址总线触发,数据总线读写,P0、P2用于生成16地址,P0还时分复用兼用于数据总线。
程序存储器ROM,用于存储用户代码,由于程序计数器PC是16位的,因此系统具备64kB寻址能力,地址空间为0x0000 ~ 0xFFFF,厂商在单片机内部实现一部分程序存储器,例如4kB、8kB,剩余的根据用户需要可以外部扩展。访问程序存储器使用MOVC A, @A + DPTR,MOVC A, @A + PC指令,只能进行读取访问,无法写入。
文章相对比较长,字数比较多,大家可以先打开头像关注我,之后慢慢看,///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像左下角黑色字体加我也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///
论电脑中存储器的速度,最慢的是电脑的硬盘,即使是现在的固态硬盘,速度在电脑的存储中依然是最慢的,然后是内存,也就是内存条,它属于动态RAM,再然后是缓存,缓存说的是CPU的L1,L2缓存,它是静态RAM。
最快的当属寄存器,和CPU的速度几乎是同步的,这些都位于CPU内部,它之所以是最快主要有三个原因。
第一个原因是它由CPU直接存取,没有中间步骤。
第二个原因是它位于CPU内部,走线非常短。
第三个原因是它的结构。
接下来我们就来说一说寄存器的作用,还有就是它的结构,寄存器是CPU用来暂存指令、数据和地址的电脑存储器,暂存是重点,它是短时间内存储数据的地方,比如它可以存储计算产生的中间结果。
而如果没有寄存器的话,中间数据则需要发给L1缓存,L1缓存再发给L2缓存,最后才能存储内存条里面,CPU与内存条进行存取数据则要经过好几个指令,然后还要这样读出来,这样速度上就会慢很多,而对于这样的中间数据,直接存储到寄存器是最优选择,这里寄存器充当的是累加器的作用。
这是一个4位寄存器的逻辑图,它由4个边沿触发器构成,要弄懂这个寄存器,我们只需要了解这个边沿触发器就行了,因为寄存器就是几个触发器的集合。
这是一个边缘触发器的内部逻辑图,你看它有两级RS触发器组成,首先说一下RS触发器,当我们给S输入1,R输入0时,Q才输出一,Q非输出零,然后再给它加两个与门,这样只有时钟信号为1时,它才能生效。
然后再来看边沿触发器,就简单很多了,时钟信号是震荡器发过来的,它的波形速度很快,一秒钟变换上亿次,当时钟信号为0时,D点信号也为0,这个RS触发器处于失效模式,由于这个非门的存在,此时它的输出是1,第一级触发器处于工作模式。
我们给数据端输入1,这是它此时的输出情况,过一小段时间,时钟信号就变成了高电平,经过非门之后输出0,这时候第一级触发器就会处于失效模式,但是它会保存之前的输出,因为时钟信号是高电平,第二级触发器被激活。
第一级触发器的输出信息是第二级的输入,第二级RS触发器会立马输出相应的值,最后的输出是1,因为我们最开始的数据写的就是1,所以最后输出的也是1,还有就是它的结果在时钟信号由低变高的一瞬间就会改变,后面我们再给它写数据,它的结果也不会改变了。
因为第一级RS触发器此时处于失效模式,要想把下一个数据写进去,只能等下一个上升沿到来,只需要一个周期,寄存器就能存取一次数据,所以它的速度很快,接近CPU,再来看寄存器是不是简单多了,无非就是写的数据更多罢了。
对于学过单片机的小伙伴们来说,和计算机打交道应该是很多的,因为单片机编程都是围绕着寄存器来的,举一个简单的例子,就是对单片机配置引脚的输入模式,还有这四种输入模式,但是具体是用哪一种呢?这就需要我们通过编程实现了编程,最终也是对寄存器进行编程。
我们可以把寄存器看作是开关,我们需要用到哪个输入模式,就闭合哪个开关,也就是对寄存器的某一位协议,比如我们要把单片机设置为模拟输入模式,就需要把寄存器的这一位协议,其它的写零,这个开关就闭合了,单片机就能被设置为模拟输入模式,这就是计算器的一些简单的应用。
对单片机感兴趣的朋友可以找我,我录制了一些关于单片机的入门教程,有需要的童鞋找我拿就行,免费的,私信我“林老师”就可以拿~点击打开我的头像就能领取
好了,文章到这里就结束了,如果这个知识对你有帮助,别忘了帮我一键三连哦。