【单片机】2.4 AT89S52的存储器结构
- 存储器的结构特点之一是将程序存储器和数据存储器分开 (哈佛结构),并有各自的访问指令。
- 存储器空间可分为4类。
存储器空间的4种分类
1.程序存储器空间 (Flash ROM)
- 片内和片外两部分。
- 片内8KB Flash ,编程和擦除完全是电气实现。可用通用编程器对其编程,也可在线编程。
- 当片内8KB Flash 存储器不够用时,可片外扩展,最多可扩展至64KB程序存储器。
2.数据存储器空间 (RAM)
- 片内与片外两部分。
- 片内有256B RAM。
- 片内RAM 不够用时,在片外可扩展至64KB RAM 。
3.特殊功能寄存器SFR (Special Function Register)
- 片内各功能部件的控制寄存器及状态寄存器。综合反映了整个单片机基本系统内部实际的工作状态及工作方式。
4.位地址空间
- 共有219个可寻址位,构成了位地址空间。位于片RAM区字节地址20H~2FH(共128位)和特殊功能寄存器区(片内RAM区字节地址80H~FFH区间内,共定义了91个可寻址位)。
2.4.1 程序存储器空间 (Flash ROM)
- 存放程序和表格之类的固定常数。片内为 8 KB(2^13B)的 Flash ,地址为0000H~1FFFH。16位地址线,可外扩的程序存储器空间最大为64KB(2^16B),地址为0000H~FFFFH。
- 使用时应注意以下问题:
- (1)分为片内和片外两部分,访问片内的还是片外的程序存储器,由EA*引脚电平确定。
- EA = 1*时,CPU从片内0000H开始取指令,当PC值没有超出0FFFH时,只访问片内Flash 存储器,当PC值超出1FFFH自动转向读片外程序存储器空间2000H~FFFFH 内的程序。
- EA = 0*时,只能执行片外程序存储器(0000H~FFFFH)中的程序。不理会片内4KB Flash 存储器。
- (2)程序存储器某些固定单元用于各中断源中断服务程序入口。
64KB程序存储器空间中有6个特殊单元分别对应于6个中断源的中断入口地址,见表2-3。- 通常这6个中断入口地址处都放一条跳转指令跳向对应的中断服务子程序,而不是直接存放中断服务子程序。
- 表2-3中最后一行,即第6个中断入口地址002BH,是AT89S52在AT89S51单片机基础上新增加的T2对应的中断入口地址。
使用汇编语言编程时,通常在这些中断入口地址处存放1条跳转指令跳向对应的中断服务子程序,而不是直接存放中断服务子程序。这是因为两个中断入口间隔仅有8个单元,如果这8个单元存放中断服务子程序,有时是不够用的。 - AT89S52复位后,PC的内容为0000H,从程序存储器地址0000H处开始执行程序。由于外部中断0的中断服务程序入口地址为0003H,为使主程序不与外部中断0的中断服务程序发生冲突,一般在0000H单元存放一条跳转指令,转向主程序的入口地址。
- 通常这6个中断入口地址处都放一条跳转指令跳向对应的中断服务子程序,而不是直接存放中断服务子程序。
2.4.2 数据存储器空间
- 片内与片外两部分。
1.片内数据存储器(内部RAM)
AT89S52的片内数据存储器(RAM)共有256个单元,字节地址为00H~FFH。图2-6为AT89S52片内RAM的结构。地址为80H~FFH为特殊功能寄存器区,与片内的高128B的RAM单元统一编址,但它是另一专用空间区域,将在后面介绍。
00H~1FH 的32个单元是4组通用工作寄存器区,每区包含8B,为R7~R0。可通过指令改变RS1、RS0两位来选择。
20H~2FH的16个单元的128位可位寻址,也可字节寻址。
30H~FFH的单元只能字节寻址,用作存数据以及作为堆栈区。
AT89S52与AT89S51片内数据存储器相比,片内数据存储器RAM增加了128B,对应的字节地址为80H~FFH。这高128B的RAM单元地址与特殊功能寄存器区的字节地址重合,但它们是两个不同的物理区域。
对这两个具有相同地址区域进行访问时,是由不同的指令寻址方式(将在指令系统一章中介绍)来区分,对地址为80H~FFH的RAM区,只能采用间接寻址方式访问,而对地址为80H~FFH的特殊功能寄存器区访问只能采用直接寻址方式。但是对于低128B(地址00H~7FH)的RAM区,即可采用直接寻址方式也可采用间接寻址方式来访问。
2.片外数据存储器
- 当片内256B的RAM不够用时,需外扩,最多可外扩64KB的RAM。注意,片内RAM与片外RAM两个空间是相互独立的,片内RAM与片外RAM的低256B的地址是相同的,但由于使用的是不同的访问指令,所以不会发生冲突。
2.4.3 特殊功能寄存器
- 特殊功能寄存器映射在片内RAM的 80H~FFH 区域中,共32个。表2-4 SFR的名称及其分布。有些还可位寻址,位地址见表2-4。
- 与AT89S51相比,新增加了6个特殊功能寄存器:T2CON、T2MOD、RCAP2L、RCAP2H、TL2和TH2,已在表2-4中标出。
- 凡是可位寻址的SFR,字节地址末位只能是0H或8H。另外,若读/写未定义单元,将得到一个不确定的随机数。
- 下面介绍某些SFR,余下的SFR将在后面介绍。
1.堆栈指针SP
- 堆栈只能设在片内的RAM区, SP指示堆栈顶部在内部RAM块中的位置。
- 堆栈结构—向上生长型。单片机复位后,SP为07H,使得堆栈实际上从08H单元开始,由于08H~1FH单元分别是属于1~3组的工作寄存器区,最好在复位后把SP值改置为60H或更大的值,避免堆栈与工作寄存器冲突。
- 堆栈是为子程序调用和中断操作而设,用来保护断点和现场。
- (1)保护断点。无论是子程序调用操作还是中断服务子程序调用,最终都要返回主程序。应预先把主程序的断点在堆栈中保护起来,为程序正确返回做准备。
- (2)现场保护。执行子程序或中断服务子程序时,要用到一些寄存器单元,会破坏原有内容。要把有关寄存器单元的内容保存起来,送入堆栈,这就是所谓的“现场保护”。
两种操作:**数据压入(PUSH)**堆栈,**数据弹出(POP)**堆栈。数据压入堆栈,SP自动加1;数据弹出堆栈,SP自动减1。
2.寄存器B
- 为执行乘法和除法而设。在不执行乘、除法操作的情况下,可把它当作一个普通寄存器来使用。
- 乘法,两乘数分别在A、B中,执行乘法指令后,乘积在BA中。A * B = BA
- 除法,被除数取自A,除数取自B,商存放在A中,余数存B中。A ÷ B = A ……B
3.AUXR寄存器
- AUXR是辅助寄存器,其格式如图2-7所示:
- 其中:
- DISALE:ALE的禁止/允许位。
0:ALE有效,发出脉冲;
1:ALE仅在执行MOVC和MOVX类指令时有效,不访问外部存储器时,ALE不输出脉冲信号。 - DISRTO:禁止/允许WDT溢出时的复位输出。
0:WDT溢出时,在RST引脚输出一个高电平脉冲;
1:RST引脚仅为输入脚。 - WDIDLE:WDT在空闲模式下的禁止/允许位。
0: WDT在空闲模式下继续计数;
1: WDT在空闲模式下暂停计数。
4. 数据指针DPTR0和DPTR1
- 双数据指针寄存器,便于访问数据存储器。
- DPTR0:AT89C51单片机原有的数据指针;
- DPTR1:新增加的数据指针。
- AUXR1的DPS位用于选择两个数据指针。当DPS=0时,选用DPTR0;当DPS=1时,选用DPTR1。
- 数据指针可作为一个16位寄存器来用,也可作为两个独立的8位寄存器DP0H(或DP1H)和DP0L(或DP1L)来用。
5. AUXR1寄存器
- AUXR1是辅助寄存器,格式如图2-8所示:
- DPS:数据指针寄存器选择位。
- 0:选择数据指针寄存器DPTR0;
- 1:选择数据指针寄存器DPTR1。
6. 看门狗定时器WDT
- WDT包含一个14位计数器和看门狗定时器复位寄存器——(WDTRST)。
- 当CPU由于干扰,程序陷入死循环或跑飞状态时,WDT提供了一种使程序恢复正常运行的有效手段。
- 有关WDT在抗干扰设计中的应用以及低功耗模式下运行的状态,将在本章的2.9节中介绍。
2.4.4 位地址空间
- 219个寻址位的位地址,位地址范围为 00H~FFH,其中 00H~7FH 这128位处于片内RAM 字节地址 20H~2FH 单元中,如表2-5所示。
- 其余的91个可寻址位分布在特殊功能寄存器SFR中,见表2-6。
- 从表2-6中可发现一个规律,凡是可位寻址的特殊功能寄存器,其最低的位地址等于其字节地址,且其字节地址的末位都为0H或8H。
2.4.5 存储器结构总结
- 作为对AT89S52存储器结构的总结,图2-9为各类存储器结构图。从图中可清楚看出各类存储器在存储器空间的位置。
【单片机】2.4 AT89S52的存储器结构相关推荐
- 8051单片机的存储器结构
MCS-51单片机在物理结构上有四个存储空间: 1.片内程序存储器 2.片外程序存储器 3.片内数据存储器 4.片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1.片内外 ...
- stm32的存储器结构
https://blog.csdn.net/qq_33114231/article/details/78658465 首页 博客 学院 下载 图文课 论坛 APP CSDNCSDN学院 问答 商城 V ...
- DDR3内存详解,存储器结构+时序+初始化过程
转载 DDR3内存详解,存储器结构+时序+初始化过程 2017-06-17 16:10:33 a_chinese_man 阅读数 23423更多 分类专栏: 硬件开发基础 转自:http://www. ...
- MCS-51单片机存储器结构-特殊功能寄存器 :堆栈指针SP(Stack Pointer)
堆栈指针SP(Stack Pointer) 堆栈是一种数据结构,它是一个8位寄存器,它指示堆栈顶部在内部RAM中的位置.系统复位后,SP的初始值为07H,使得堆栈实际上是从08H开始的.但我们从RAM ...
- 单片机概述+AT89S51片内硬件结构
文章目录 一.什么是单片机 MCS-51系列与AT89S51X系列单片机 二. AT89S51片内硬件结构 AT89S51单片机片内结构 引脚及功能 一.什么是单片机 单片机就是在一片半导体硅片上,集 ...
- PIC单片机入门_框架与存储器
1.PIC16F877A单片机框架 1.1 为何性能如此之高? PIC单片机之所以有很高的性能是因为其具备如下特性: 内部为哈佛结构.寄存器文档.大多数单指令周期.指令流水线操作.长字型指令.指令数很 ...
- 计算机系统中三级存储器结构,计算机三级存储体系(1)
,四小组第二次讨论报告,计算机三级存储体系,first,,Introduction:,一级缓存都内置在CPU内部并与CPU同速运行,可以有效的提高CPU的运行效率.一级缓存越大,CPU的运行效率越高, ...
- C51 - 存储器结构
STC89C516RD+存储器 1> 冯诺依曼 与 哈佛结构 1.1> 冯诺伊曼结构 1.2> 哈佛结构 2> AT89C51内部结构 3> STC89C51RC/RD+ ...
- AVR 单片机与GCC 编程之存储器操作
AVR 系列单片机内部有三种类型的被独立编址的存储器,它们分别为:Flash 程序存储器.内部SRAM 数据存储器和EEPROM 数据存储器. Flash 存储器为1K-128K 字节,支持并行编程和 ...
- 0x18 大容量存储器结构
一.磁盘结构和管理 磁盘结构 盘片是存储数据的介质,正反两面可以存储数据: 磁头可以读写数据,沿磁盘半径移动,有多少盘面就有多少磁头: 主轴由马达驱动,使盘片以固定速度旋转. 磁盘和计算机之间有接口, ...
最新文章
- R构建lasso回归模型并获得最佳正则化系数
- 片(Slice)结构
- 我的Java开发学习之旅------gt;Base64的编码思想以及Java实现
- 【论文解读】NLP重铸篇之Word2vec
- python爬虫爬微信红包_python 微信红包
- 将一段区间的偶数分解为两个素数相加(Java)
- 微信小程序父子组件通信
- 资源放送丨《Oracle数据库之Object的Access方法和结合方法》PPT视频
- 【Kafka】Kafka topic 的消费组 出现 CURRENT_OFFSET 为 unknown
- Python 基于sympy模块求极值 导数 偏导
- 总结jquery-seat-charts插件使用方法
- 中国象棋马走日(要求打印每一种走法) — 递归
- linux虚拟网卡卸载,virbr0虚拟网卡如何卸载?virbr0虚拟网卡的卸载方法
- Keil MDK5工程文件不可修改(文件符号上带一个黄色的钥匙)
- 如何创建一个微信公众号(手把手、超详细)
- 记一次天地图https无法访问
- 初识Matlab以及Matlab一般性教程
- shell du命令
- 交换机loopback口
- 污染源动态管控系统 污染源动态管理系统
热门文章
- 解决 The file will have its original line endings in your working directory
- caxa齿轮零件图_CAXA软件如何快速地画一个齿轮?
- 蔡学镛:写SOP(标准作业程序)就是写程序
- pyecharts(9)-动态可视化-树形图-思维导图
- JS基础知识思维导图
- 工具分享: 一键保存网页为PDF文件
- 使用Py-OpenCV(SIFT关键点)实现自然图像中的logo商标识别和定位
- java图片转换pdf_Java将图片转化为PDF的方法(1)
- Caffe框架的基本操作和分析
- MongoDb学习(五)--Gridfs--上传下载