51单片机存储结构

news2025/1/17 1:00:04

之前概要介绍了8151微控制器的结构(也就是51单片机)。相比微处理器,微控制器的区别之一是在一个芯片上有程序存储器(RAM)和数据存储器(RAM)。存储区是微控制器非常重要的内容。
本文就介绍一下8051的存储结构。包括存储器的组织、处理器对存储的访问、微控制器访问外部存储的方法。

在介绍存储结构之前,先介绍一下计算机结构。

1. 计算机结构分类

不管是微控制器还是微处理器,大都采用两种结构:冯诺依曼结构和哈佛结构。

冯诺尼曼结构:
在这里插入图片描述
哈佛结构:
在这里插入图片描述
两者的区别比较细微:哈佛结构的数据存储器和程序存储区是分开的,而冯诺依曼机构两者是一体的。

几乎所有的微控制器都使用哈佛结构(也包括51单片机)

个人猜测:哈佛结构的优势之一是可以同时取指令和取数据,提高执行效率。二是程序和数据可以采用不同的技术存储,以尽可能提高控制器的可靠性以及控制成本。

2 8051的内存组织

8051的内存被划分为程序存储器(ROM)和数据存储器(RAM)。就像他们的名字一样,程序存储器用于存储程序(也可以说是指令),数据存储器用于存储数据(可以是运行时需要的变量)。

8051单片机同时具有内部 ROM 和内部 RAM。如果内部存储器不足,可以使用合适的电路添加外部存储器。

2.1 8051的程序存储器(ROM)

程序存储器用于存储待执行的代码。最原始的8051微控制器有一个4kb的程序存储器。

某些8051的变体没有任何的ROM(程序存储器),必须要外挂程序存储器。(比如8031,8032)

几乎所有的现代8051微控制器有8kb的程序存储器,并且使用flash来实现。这使得微控制器可以重复编程。
在这里插入图片描述
对于一个4kb的ROM,地址空间为0000H到0FFFH。如果地址超过这个范围,那么CPU会自动的从外部程序存储器中获取代码。也就是说,外部访问存储器的引脚需要连接在高位。(高地址是外部程序存储器,低地址是内部程序存储器)

https://www.electronicshub.org/wp-content/uploads/2021/04/8051-Internal-and-External-Memory.png

在某些情况下,我们希望只使用外部程序存储区。这时候我们可以把外部地址的引脚连接到GND端,外部ROM的地址就变成0000H到FFFFH了

在这里插入图片描述

2.2 8051的数据存储器(RAM)

8051数据存储器(也可以称之为RAM)保存临时数据、以及运算时产生的中间数据。最原始的8051微控制器有一个128字节的RAM。

不过几乎所有的8051变体有256字节的RAM,在这256字节中,前128个字节用于工作寄存器(他们共同组成寄存器组)、位可寻址区域和通用 RAM (也称为暂存区域)。

我们可以进一步细分RAM的前128字节。前32字节(00H~1FH)分别是32个寄存器,他们被划分成4个寄存器组(register bank),每组8个寄存器。
这四个寄存器组被命名为bank0、bank1、bank2、bank3。每一个组内包含的8个寄存器分别命名为R0~R7。
在这里插入图片描述
每一个寄存器可以通过两种方式寻址:按名称或者按地址。
假如按名称来寻址,首先要选中对应的寄存器组。我们必须要使用PSW中的RS1和RS2来选中对应的组。

假如使用地址来寻址,则不需要选中对应的组。

接下来的16字节(20H~2FH)是按位寻址存储器。16字节也就是128位,如果单独给这些比特编址可以是00H到7FH。举个例子: 32H(比特地址)指向26H(字节地址)的第2个比特。

最后的80字节(30H到7FH)是通用存储区,按字节寻址。

RAM的低128字节可以间接寻址或者直接寻址,高128字节(80H到FFH)被分配给特殊功能寄存器(SRF),包括 I/O 端口寄存器(P0、 P1、 P2和 P3)、 PSW (程序状态字)、 A (累加器)、 IE (中断启用)、 PCON (电源控制)等。

在这里插入图片描述
SRF的地址仅可直接寻址。即使从80H到FFH的这段存储区中某些位置没有被用作SFR,他们可不能被用作RAM。

在某些微控制器中,会有128字节的额外RAM,他们与SFR共享存储地址。不过这些附加的RAM块仅可使用间接寻址。

3 8051与外部存储器的接口

仅靠内部的RAM/ROM很可能不够用,8051微控制器可以扩展存储。

如下是一种扩展方案:
在这里插入图片描述注意,端口0(P0)不能用作IO端口,因为它将用于多路复用地址和数据总线(A0 - A7和D0 - D7)。一般而言,端口2可以用作地址总线的较高字节(不过有时也有例外)。

  • 内容参考:https://www.electronicshub.org/8051-microcontroller-memory-organization/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/162104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VTK-Tessellator Subdivision

前言:本博文主要研究Tessellator 的Subdivision,对vtk中的所有相关接口进行研究,并找出最优的解决方法。 GeometricObjects中vtkTessellatorFilter的应用实例 待研究对当前的Subdivision进行优化。 vtkTessellatorFilter 位置:…

Docker容器数据卷与数据卷容器

文章目录什么是容器数据卷使用数据卷使用 docker 安装 mysql匿名和具名挂载数据卷容器什么是容器数据卷 Docker理念回顾 将应用和运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对于数据的要求,是希望能够 持久化的! 就…

【寒假每日一题】DAY.6 有序序列的合并

牛客网例题:点我做题 描述 输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。数据范围: 1 ≤ n,m ≤ 1000,序列中的值满足0≤val≤30000输入描述: 输入包含三行,第一行包含两个正整…

微信小程序开发起步

一、小程序与普通网页开发的区别 1)运行环境不同。网页运行在浏览器环境中,小程序运行在微信环境中。 2)API不同。由于运行环境不同,所以小程序中无法调用DOM和BOM的API,但是小程序可以调用微信环境提供的各种API&am…

zabbix的安装部署,一看就会

目录 1、系统组成 2、采集模式 3、监控类型 4、相关术语 5、安装部署 1、系统组成 2、采集模式 监控系统数据采集的工作模式可以分为 被动模式(从服务器端到客户端采集数据,对应的英文单词是pull) 主动模式 (客户端主动上报…

java基于springboot的新生报到系统app新生报到安卓app新生入学报到小程序加论文

简介 本项目主要是新生报到系统,包含的新生入学流程的功能:新生可以在app里提交预报到日期确认报到,查看自己的学费缴费记录,更改自己的银行卡号,查看课表,查看寝室,查看自己的专业班级等个人信…

CubeMX配置:定时器中断及串口配置

本文通过CubeMX配置F103RCT6的定时器中断和串口。 文章目录1 引入2 配置过程2.1 配置时钟过程2.2 配置串口过程2.3 定时器中断配置3 生成工程代码4 测试串口及定时器中断周期5 总结1 引入 拿到一个STM32控制器,在啥也没有的情况下从零开始写软件,博主习…

Java K 个一组翻转链表

K 个一组翻转链表困难给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的…

电视为何降价至200元依然没人买?爱奇艺给出了答案

近日爱奇艺提高降低会员的服务内容,消费者要享受到将内容投放到电视就要买更贵的会员服务,引发热议,此举或许能解释国内消费者为何如今不买电视了。2022年电视行业可谓是一个相当惨淡的行业,量价齐跌,随着2022年底的到…

计算机视觉OpenCv学习系列:第二部分、图像操作

第二部分、图像操作第一节、图像读取与显示1.图像理解2.图像读取与显示3.代码练习与测试第二节、图像色彩空间转换1.图像色彩空间2.函数说明与解释3.代码练习与测试第三节、图像对象的创建与赋值1.图像对象属性2.图像对象创建与赋值3.代码练习与测试第四节、图像像素的读写操作…

SpringBoot——关于controller参数校验

参数校验主要使用两个标签Validated和Valid; Valid是Hibernate的注解校验,Validated是spring的,是Valid的增强;这两个标签也有一些不同之处,Valid可以标注在成员属性上也可以嵌套校验,而Validated不行&…

Node.js 操作MySQL数据库

在讲Node.js中引入mysql模块之前先讲一下关于MySQL数据库,首先是关于MySQL数据库的安装和mysql服务以及对mysql命令和可视化工具的一个基本使用;那么在这里已经准备好了关于MySQL数据库的内容了: MySQL 数据库安装详细 : MySQL数…

redis主从复制,一主多仆启动流程

文章目录一、安装redis二、复制修改配置文件三、添加conf配置文件四、开启主从复制五、薪火相传六、反客为主7、哨兵模式一、安装redis redis安装笔记 https://blog.csdn.net/G_GUi/article/details/128361131 二、复制修改配置文件 把redis.conf复制到一个新建文件夹里面&a…

安卓手机还有这么多神仙玩法,关键只有少数人知道

随着“智能手机”的快速更新迭代,手机系统逐渐融入了许多实用功能;今年Android手机市场竞争相当激烈,各大手机品牌都争先恐后地向消费者展示自己的新机型。今天我就来给大家分享几个只有安卓手机才有的隐藏黑科技功能,每个功能都非…

cocos creator新手教程:第003节3D模型的基本概念

3.1 计算机如何制作一个3D模型 讲述这个问题之前,我们先来看下现实生活中我们要做一个模型,应该如何做呢?首先我们要把模型的形状给雕刻构建出来,现实生活中的物体都是由分子组成的连续的表面,计算机是离散的无法做到这…

【jQuery】常用API——尺寸、位置操作

一、jQuery 尺寸 以上参数为空&#xff0c;则是获取相应值&#xff0c;返回的是数字型。如果参数为数字&#xff0c;则是修改相应值。参数可以不必写单位。 <style>div {width: 200px;height: 200px;background-color: pink;padding: 10px;border: 15px solid red;margin…

在Windows中安装Mysql数据库(shawn安装成功记录)

一、下载安装包 首先去官网下载mysql安装包 下载网址:https://dev.mysql.com/downloads/mysql/ 下载Windows系统版本,如下图 注意版本必须是8.xx, 5开头的版本不适合本教程   点击下载,选择自己的文件路径,C盘非C盘都可以(我没有放C盘),路径中不要出现中文…

【蓝桥杯简单篇】Python组刷题日寄Part08

刷题日记&#xff1f;刷题日寄&#xff01; 萌新备战蓝桥杯python组 &#x1f339; 发现有需要纠正的地方&#xff0c;烦请指正&#xff01; &#x1f680; 欢迎小伙伴们的三连关注&#xff01; 往期系列&#xff1a; 【蓝桥杯简单篇】Python组刷题日寄Part01 【蓝桥杯简单篇】…

SCRM开源营销平台MarketGo-创建员工活码

一、背景介绍 客户需求&#xff1a;企业在做营销活动的时候&#xff0c;会有大量的客户需要添加企业微信的联系方式。这样就有两个问题&#xff1a; 一个企业微信账号添加太多会受到企业微信的限制&#xff1b;如果有多个企业微信的账号&#xff0c;添加的客户的数量也不平均…

如何给PPT文件添加水印?

我们在制作PPT的时候&#xff0c;有时候需要在幻灯片上加入logo&#xff0c;或者特定的大小、颜色等一致的文字标题&#xff0c;而幻灯片通常都是很多页数的&#xff0c;如果一张张幻灯片来添加&#xff0c;那就很费功夫。 这种情况&#xff0c;我们就可以选择通过“幻灯片母版…