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

片内的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进制的方式呈现,这个和空间的概念把它深刻地领会一下。

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的方案。

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

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

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

接着看片内的数据存储器,数据存储器主要是用来存放程序运行的中间结果,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个字节是特殊功能寄存器区。

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

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

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

​​​​​​​

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

  1. 【子桓说】过生日的徐峥:要学会在职场做个“技术派”

    你好,我是那个试图让你少走弯路的五脚兽.今天的是山争哥哥的生日,作者对他的表演还是挺喜欢的,给我带来了很多欢乐,相信你也是.从<春光灿烂猪八戒>.<李卫当官>等电视剧,到后来的 ...

  2. 荐号 | 技术人如何在职场竞争中处于优势地位

    工欲善其事,必先利其器.对于软件开发.架构设计和系统维护人员来说,在技术日新月异发展的时代,必须及时补充新的知识,储备技能,才能在职场竞争中处于优势地位.今天给大家推荐几个公众号,相信在未来驰骋职场中 ...

  3. 在职场中如何保持新鲜感

    如何在职场中保持新鲜感,这是一个有意思的话题,也是一个有挑战的话题,想要回答的比较完美着实困难.我权且根据自己的经验和思考,试着跟大家讨论一下. 我认为要想在职场中保持新鲜感,主要有五个方面: 一.项 ...

  4. 一篇文章学透Java八大基本类型

    什么叫基本类型 此事说来话长,但凡是被称为基本的,那都是有两把刷子的! 比如<易经・系辞上>:"一阴一阳之谓道",好家伙,一句话把国人研究了几千年的东西给下了一个定论. ...

  5. 一个35岁腾讯产品经理的忠告:在职场,这件事越早做越好

    最近后台又收到很多粉丝工作不顺.压力山大的苦水: ▎入行两年,薪资8K,涨薪太难...... ▎天天和各种人撕逼,真的不想干了...... ▎公司裁员,产品经理成了第一批...... 今天我们不妨换个 ...

  6. 怎么判断第几范式例题_学完就忘、做题就懵!初级会计怎么备考才能更高效?...

    备考初级会计之路真是艰辛,目前官方政策初级会计职称是一年一考,早早开始学吧,又有惰性,总觉得时间还很多,报完名再开始学吧,又总是搞不透彻知识点,一个知识点需要一天甚至更多才能消化...... 很多时候 ...

  7. 人在职场,和钱相关的这四件事,千万不要做!

    开门再见山,不磨叽不废话,不玩娓娓道来的套路,不整故弄玄虚的把戏,亮本文观点先--人在职场,和钱相关,打死也不要做的四件事: 问薪资待遇 开口借钱 给理财建议 号召捐款 如果你一点就嘎嘎通透,后面的正 ...

  8. 单片机要学多久才能自己开发?学单片机以后做什么?

    大家好,我是无际单片机编程的徐工. 要说学多久才能自己开发,不妨我给大家分享一下我的单片机学习之路. 我学习单片机一方面是因为大一的时候进入了学校电子大赛实验室,另一方面是因为我从中学开始就对电子比较 ...

  9. 你在职场可能犯下的最大错误

    按部就班地工作,不考虑自我的更新迭代. 这是你在职场可能犯下的最大的错误了.而这种错误的影响,往往要等到你面临失业或者跳槽时才能真正体会到. 很多企业往往会因为一个产品(服务)做得好而在市场上站稳脚跟 ...

  10. 工作 5 年观察:快速在职场崛起,拼这 10 个认知

    转自:http://app.myzaker.com/news/article.php?pk=5cce592432ce40dc68000044 工作 5 年观察:快速在职场崛起,拼这 10 个认知 05 ...

最新文章

  1. python pycharm 包 安装问题
  2. Windows 家族的十二种常用密码破解法
  3. yolo v3制作自己的数据_小白也能弄懂的目标检测之YOLO系列 第一期
  4. c4android 免root,C4Android中4.1.0版本不支持new命令,哪个版本支
  5. Web前端开发学习资料分享
  6. ios 开发证书导出p12文件_开发者在上传企业签名的应用到后,做到如下几点
  7. surging 微服务引擎 1.0 正式发布
  8. Lilishop开源商城系统 / lilishop
  9. 那些不能遗忘的知识点回顾——C/C++系列(笔试面试高频题)
  10. linux运行h3c校园网,H3C Lite轻量级校园网认证Linux客户端(For SHNU)
  11. Android高德地图导航or语音播报
  12. Jeff Atwood:Google的头号UI问题
  13. Itest(爱测试),最懂测试人的开源测试管理, 开源BUG跟踪管理软件隆重发布
  14. Cmder | 一款命令行增强工具
  15. 什么是横向扩展、纵向扩展?
  16. Python编程——Python基础知识之列表(-)
  17. 023_接口类,抽象类,多态,鸭子类型,封装
  18. 并行,串行,流水线,线程和进程傻傻分不清楚
  19. 【教程】完美解决windows10磁盘占用100%并出现卡顿、假死现象
  20. FOC电动车控制器代码 原理图 pcb 无刷电机FOC控制量产方案,原理图,PCB,源代码

热门文章

  1. 【LeetCode】Combination Sum(组合总和)
  2. iOS-各种报错,各种error
  3. C++11中thread库join和detach的区别
  4. 计算机网络网络层之链路状态路由算法
  5. 三十二 、K8s审计
  6. HCIE Security Anti-DDos系统组成 备考笔记(幕布)
  7. OSI七层参考模型、TCP/IP参考模型、数据封装与解封装、TCP三次握手四次挥手及面试题
  8. HDOJ--1599--find the mincost route(floyd+最小环)
  9. NYOJ--1A+B Problem(练手题)
  10. Visual Paradigm 教程[UML]:如何在UML中绘制组件图?