8051的存储结构组成--程序存储空间、数据存储卡空间、特殊功能寄存器、位地址空间

news2024/11/29 2:38:52

AT89S51的存储结构

本文主要涉及8051单片机的存储结构,它的存储结构主要包括四部分,分别是出程序存储空间、数据存储卡空间、特殊功能寄存器、位地址空间四部分,下面将会展开描述。

文章目录

  • AT89S51的存储结构
    • 一、 程序存储空间
    • 二、 数据存储空间
      • 2.1 片内数据存储器
      • 2.2 片外数据存储器
    • 三、特殊功能寄存器
      • 3.1 堆栈指针SP
      • 3.2 寄存器B
      • 3.3 AUXR寄存器
      • 3.4 数据指针DPTR0和DPTR1
      • 3.5 AUXR1寄存器
      • 3.6 看门狗定时器WDT
    • 四、位地址空间

存储器结构特点之一是将 程序存储器和数据存储器分开( 哈佛结构),并有各自的访问指令。【哈佛结构的优势在于同时读取程序和数据,可以提高数据传输带宽。】

存储器空间可分为4类:程序存储器空间数据存储器空间特殊功能寄存器SFR位地址空间

1.程序存储器空间
片内和片外两部分。
片内程序存储器为4KB的Flash存储器,编程和擦除全是电气实现,且速度快。可用通用编程器编程,也可在线编程。
当片内的4KB的Flash存储器不够用时,用户可在片外可扩展程序存储器,最多可扩展至64KB程序存储器。

2.数据存储器空间
片内与片外两部分。
(51)片内有128B RAM(52子系列为256B)。
片内RAM不够用时,在片外可扩展至64KB RAM 。

3.特殊功能寄存器SFR (Special Function Register)
片内各功能部件的控制寄存器状态寄存器。SFR综合反映了整个单片机基本系统内部实际的工作状态及工作方式。

4.位地址空间
共有211个可寻址位,构成了位地址空间。它们位于内部 RAM(共128位)和特殊功能寄存器区(共83位)中。

一、 程序存储空间

存放程序和表格之类的固定常数。片内为4KB的 Flash ,地址为0000H~0FFFH。16位地址线,可外扩的程序存储器空间最大为64KB,地址为0000H~FFFFH。

使用应注意以下问题

(1)分为片内片外两部分,访问片内的还是片外的程序存储器,由EA*引脚电平确定。
EA*=1时,CPU从片内0000H开始取指令,当PC值没有超出0FFFH时,只访问片内Flash 存储器,当PC值超出0FFFH自动转向读片外程序存储器空间1000H~FFFFH 内的程序。
EA*=0时,只能执行片外程序存储器(0000H~FFFFH)中的程序。不理会片内4KB Flash 存储器。

(2)程序存储器某些固定单元用于各中断源中断服务程序入口。
64KB程序存储器空间中有5个特殊单元分别对应于5个中断源的中断入口地址,见表2-3。
在这里插入图片描述

通常这5个中断入口地址处都放一条跳转指令跳向对应的中断服务子程序,而不是直接存放中断服务子程序。

二、 数据存储空间

片内和片外两部分

2.1 片内数据存储器

片内数据存储器(RAM)共128个单元,字节地址为00H~7FH。图2-4为片内数据存储器的结构。
在这里插入图片描述

00H~1FH 的32个单元是4组通用工作寄存器区,每区包含8B,为R7~R0。可通过指令改变RS1、RS0两位来选择。
20H~2FH的16个单元的128位可位寻址,也可字节寻址。
30H~7FH的单元只能字节寻址,用作存数据以及作为堆栈区。

2.2 片外数据存储器

当片内128B的RAM不够用时,需外扩,最多可外扩64KB的RAM。注意,片内RAM与片外RAM两个空间是相互独立的,片内RAM与片外RAM的低128B的地址是相同的,但由于使用的是不同的访问指令,所以不会发生冲突。

三、特殊功能寄存器

采用特殊功能寄存器集中控制各功能部件。特殊功能寄存器映射在片内RAM的 80H~FFH 区域中,共26个。表2-4是SFR的名称及其分布。有些还可位寻址,位地址见表2-4。
与AT89C51相比,新增5个SFR:DP1L、DP1H、AUXR、AUXR1和WDTRST,已在表2-4中标出。
凡是可位寻址的SFR,字节地址末位只能是0H或8H。另外,若读/写未定义单元,将得到一个不确定的随机数。
在这里插入图片描述

在这里插入图片描述

3.1 堆栈指针SP

指示堆栈顶部在内部RAM块中的位置。

堆栈结构–向上生长型

"向上生长型"是指在堆栈结构中,堆栈的内存空间是从低地址向高地址增长的。在这种情况下,堆栈的栈底位于较低的内存地址,而栈顶则位于较高的内存地址。当新的数据被推入堆栈时,堆栈指针向高地址方向移动;当数据被弹出堆栈时,堆栈指针向低地址方向移动。

单片机复位后,SP为07H,使得堆栈实际上从08H单元开始,由于08H~1FH单元分别是属于1~3组的工作寄存器区,最好在复位后把SP值改置为60H或更大的值,避免堆栈与工作寄存器冲突。

堆栈主要是为子程序调用和中断操作而设。保护断点和现场

  • (1)保护断点。无论是子程序调用操作还是中断服务子程序调用,最终都要返回主程序。应预先把主程序的断点在堆栈中保护起来,为程序正确返回做准备。
  • (2)现场保护。执行子程序或中断服务子程序时,要用到一些寄存器单元,会破坏原有内容。要把有关寄存器单元的内容保存起来,送入堆栈,这就是所谓的“现场保护”。

两种操作:数据压入(PUSH)堆栈,数据弹出(POP)堆栈。数据压入堆栈,SP自动加1;数据弹出堆栈,SP自动减1。

3.2 寄存器B

为执行乘法和除法而设。在不执行乘、除法操作的情况下,可把它当作一个普通寄存器来使用。
乘法,两乘数分别在A、B中,执行乘法指令后,乘积在BA中,[高八位在B中,低八位在A中]
除法,被除数取自A,除数取自B,商存放在A中,余数存B中。

3.3 AUXR寄存器

AUXR是辅助寄存器,其格式如图2-5:
在这里插入图片描述

DISALE:ALE的禁止/允许位。

  • 0:ALE有效,发出脉冲;
  • 1:ALE仅在执行MOVC和MOVX类指令时有效,不访问外部存储器时,ALE不输出脉冲信号;

DISRTO:禁止/允许WDT溢出时的复位输出。

  • 0:WDT溢出时,在RST引脚输出一个高电平脉冲;
  • 1:RST引脚仅为输入脚。

WDIDLE:WDT在空闲模式下的禁止/允许位。

  • 0: WDT在空闲模式下继续计数;
  • 1: WDT在空闲模式下暂停计数。。

3.4 数据指针DPTR0和DPTR1

双数据指针寄存器,便于访问数据存储器-片外RAM。
DPTR0:AT89C51单片机原有的数据指针,
DPTR1:新增加的数据指针。
AUXR1的DPS位用于选择两个数据指针。
当DPS=0时,选用DPTR0;当DPS=1时,选用DPTR1。

数据指针可作为一个16位寄存器来用,也可作为两个独立的8位寄存器DP0H(或DP1H)和DP0L(或DP1L)来用。

3.5 AUXR1寄存器

AUXR1是辅助寄存器,格式如图2-6:
在这里插入图片描述

DPS:数据指针寄存器选择位。

  • 0:选择数据指针寄存器DPTR0;
  • 1:选择数据指针寄存器DPTR1。

3.6 看门狗定时器WDT

包含1个14位计数器看门狗定时器复位寄存器(WDTRST)。
用于当CPU由于干扰,程序陷入死循环跑飞状态时,WDT提供了一种使程序恢复正常运行的有效手段。

上面介绍的特殊功能寄存器,除了前两个SP和B以外,其余的均为AT89S51在AT89C51基础上新增加的SFR

四、位地址空间

211个寻址位的位地址,位地址范围为 00H~FFH,其中 00H~7FH128位处于片内RAM 字节地址 20H~2FH 单元中,如表2-5所示。在这里插入图片描述

其余的83个可寻址位分布在特殊功能寄存器SFR中,如表2-6。在这里插入图片描述

可被位寻址的特殊寄存器有11个,共有位地址88个,5个位未用,其余83个位的位地址离散地分布于片内数据存储器区字节地址为80H~FFH的范围内,其最低的位地址等于其字节地址,且其字节地址的末位都为0H或8H。

在这里插入图片描述

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

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

相关文章

总结|哪些平台有大模型知识库的Web API服务

截止2023/12/6 笔者个人的调研,有三家有大模型知识库的web api服务: 平台类型文档数量文档上传并解析的结构api情况返回页码文心一言插件版多文档有问答api,文档上传是通过网页进行上传有,而且是具体的chunk id,需要设…

CentOS服务器网页版Rstudio-server及R包批量安装最佳实践

CentOS服务器安装网页版Rstudio-server及R包批量安装 以下为CentOS 7/8的Rstudio-server安装、配置和R包安装操作 1. 软件包安装 Centos 7安装 # 下载安装包,大小115.14 MB wget -c https://download2.rstudio.org/server/centos7/x86_64/rstudio-server-rhel-…

【工厂方法】设计模式项目实践

前言 以采集数据处理逻辑为例,数据采集分为不同种类如:MQTT、MODBUS、HTTP等,不同的采集数据有不同的解析处理逻辑。但总体解析处理步骤是固定的。可以使用工厂方法设计模式简化代码,让代码变得更加优雅。 代码实践 抽象类 总体…

每天五分钟计算机视觉:通过残差块搭建卷积残差神经网络Resnet

本文重点 随着深度神经网络的层数的增加,神经网络会变得越来越难以训练,之所以这样就是因为存在梯度消失和梯度爆炸问题。本节课程我们将学习跳跃连接方式,它可以从某一网络层获取激活a,然后迅速反馈给另外一层,甚至是神经网络的更深层,从而解决梯度消失的问题。 传统的…

SMART PLC求余指令

SMART PLC求余功能块在伪随机数发生器上的应用请查看下面文章链接: https://rxxw-control.blog.csdn.net/article/details/123793176https://rxxw-control.blog.csdn.net/article/details/123793176待续....

Qt之QGraphicsView —— 笔记1.2:将QGraphicsView放置主窗口上,绘制简单图元(附完整源码)

效果 相关类介绍 QGraphicsView类提供了一个小部件,用于显示QGraphicsScene的内容。QGraphicsView在可滚动视口中可视化。QGraphicsView将滚动其视口,以确保该点在视图中居中。 QGraphicsScene类 提供了一个用于管理大量二维图形项的场景。请注意,QGraphicsScene没有自己的视…

Nginx配置反向代理与负载均衡

Nginx配置反向代理与负载均衡 一、代理服务1.正向代理2.反向代理 二、实战场景-反向代理1.修改nginx配置 -> nginx.conf文件2.修改前端路径 三、实战场景-负载均衡1.热备2.轮询3.加权轮询4.ip_hash ​ Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,…

ubuntu22 安装 cuda12.0

本文是先安装显卡驱动后进行的操作 查看显卡驱动支持CUDA的最新版本12.0 nvidia-smi 检查gcc版本 gcc -v 查看系统支持的gcc版本 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html 选择对应的安装cuda命令 https://developer.nvidia.com/cuda-too…

居民最低生活保障人数数据,2020-2022年数据,shp矢量及表格数据均有!

居民最低生活保障,是国家对共同生活的家庭成员人均收入低于当地最低生活保障标准,且符合当地最低生活保障家庭财产状况规定的家庭,给予最低生活保障。 基本信息. 数据名称: 居民最低生活保障人数数据 数据格式: shpexcel 数据几何类型: 面…

C练习题13

单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 1.结构化程序由三种基本结构组成、三种基本结构组成的算法是() A.可以完成任何复杂的任务 B. 只能完成部分复杂的任务 C. 只能完…

Fabric:链码的部署及执行

Hyperledger Fabric:V2.5.4 写在最前 使用Fabric搭建自定义网络参考:https://blog.csdn.net/yeshang_lady/article/details/134113296 使用Fabric创建应用通道参考:https://blog.csdn.net/yeshang_lady/article/details/134668458 接下来将介绍如何在自…

配置BFD多跳检测示例

BFD简介 定义 双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。 目的 为了减小设备故障对业务的影响,提高网络的可靠性,网…

CSS属性 display和visibility的区别

在CSS中&#xff0c;有两种让元素隐藏的方式&#xff0c;分别是display和visibility&#xff0c;他们有什么区别呢&#xff1f; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport"…

数据结构 | 查漏补缺之ASL、线索二叉树、哈夫曼树、大根堆、邻接表邻接矩阵

目录 ASL 情形之一&#xff1a;二分查找 线索二叉树 参考博文 哈夫曼树 参考博文 大根堆 参考博文 邻接表&邻接矩阵 参考博文1 参考博文2 ASL 参考博文 关于ASL(平均查找长度)的简单总结_平均查找长度asl-CSDN博客 情形之一&#xff1a;二分查找 线索二叉树 …

记录 | python向上取整和向下取整

python 向上取整和向下取整 向上取整 使用 ceil()&#xff1a; import mathx 0.55 x0 math.ceil(x)向下取整 使用 floor()&#xff1a; import mathx 0.55 x1 math.floor(x)如下&#xff1a;

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《计及管网选型与潮流约束的区域综合能源系统分期协同规划》

这个标题涉及到区域综合能源系统的规划&#xff0c;其中考虑了两个关键因素&#xff1a;管网选型和潮流约束。下面对标题中的关键术语进行解读&#xff1a; 区域综合能源系统&#xff1a; 这指的是一个综合考虑多种能源形式&#xff08;比如电力、热能、气体等&#xff09;的系…

Jenkins+Maven+Gitlab+Tomcat 自动化构建打包,部署

环境准备Jenkins工具、环境、插件配置全局变量配置安装插件Deploy to containerMaven Integration plugin配置国内mvn源 创建maven项目 环境准备 1、安装服务 Jenkins工具、环境、插件配置 全局变量配置 Manage Jenkins>tools>JDK 安装 安装插件 Deploy to contai…

网站导航栏下滑隐藏,上滑显示,效果杠杆,兼容性强

前言 导航栏是网站必不可少的一部分&#xff0c;那么&#xff0c;导航栏应该怎么样子实现&#xff0c;可以高效自定义兼容开发呢&#xff1f;当然&#xff0c;不仅要实现&#xff0c;而且还要实现导航栏顶部固定位置&#xff0c;下拉隐藏&#xff0c;稍微往上滑动就会出现&…

Android View的 getHeight 和 getMeasuredHeight 的区别

前言 先简单复习一下Android View 的 绘制顺序&#xff1a; 1、onMeasure&#xff08;测量&#xff09;&#xff0c;先根据构造器传进来的LayoutParams&#xff08;布局参数&#xff09;&#xff0c;测量view宽高。 2、onLayout&#xff08;布局&#xff09;&#xff0c;再根…

鸿蒙HarmonyOS4.0开发应用学习笔记

黑马程序员鸿蒙4.0视频学习笔记&#xff0c;供自己回顾使用。1.安装开发工具DevEco Studio 鸿蒙harmony开发文档指南 DevEco Studio下载地址 选择或者安装环境 选择和下载SDK 安装总览 编辑器界面 2.TypeScript语法 2.1变量声明 //string 、number、boolean、any、u…