AT89S51单片机存储器的空间配置及功能结构

AT89S51单片机的存储器在物理结构上可以分为4个不同的存储空间:(1)内部程序存储器;(2)片内数据存储器;(3)片外数据存储器(最大可扩展到64KB);(4)片外程序存储器(最大可扩展到64KB)。

从逻辑上分,即从用户使用的角度看,AT89S51单片机可以分为3个逻辑空间:(1)片内外统一编址程序存储器空间;(2)256B的内部数据存储器;(3)外部数据存储器。

这三种不同的存储器在物理结构上是相互独立的,它们有各自的寻址系统、控制信号,三种存储空间的编址虽然有重叠,但是CPU是通过不同的指令来访问或操作这些存储器。

一、程序存储器(ROM)

程序存储器用于存放程序及表格常数。AT89S51单片机片内驻留有4 KB的Flash ROM,外部可用16位地址线扩展到最大64 KB的ROM空间。片内ROM和外部扩展ROM是统一编址的。当芯片引脚EA为高电平时,AT89S51单片机的程序计数器PC在0000H~0FFFH范围内(即前4 KB地址),CPU执行片内ROM中的程序。当PC内容在1000H~FFFFH范围内(超过4 KB地址)时,CPU自动转向外部ROM执行程序。如果为EA低电平时(接地),则所有取指令操作均在外部程序存储器中进行,这时外部扩展的ROM可从0000H开始编址。

在程序存储器中,某些特定的单元是给系统使用的。0000H单元是复位入口,单片机复位后,CPU总是从0000H单元开始执行程序。通常在0000H~0002H单元安排一条无条件转移指令,使之转向主程序的入口地址;0003H~002AH是专用单元,被保留用于5个中断服务程序或中断入口,一般情况下用户不能用来存放其他程序。

二、数据存储器(RAM)

AT89S51单片机的数据存储器,分为片外RAM和片内RAM两大部分。

(1)外部数据存储器。在应用系统中,如果需要较大的数据存储器,而片内RAM又不能满足要求,那么就需要外接RAM芯片来扩展数据存储器。外部数据存储器的空间最大可扩展为64 KB,编址为0000H~FFFFH。如果应用系统需要超过64 KB的大容量数据存储器,可将外部RAM分组,每组地址空间重叠而且都为64 KB,由部分I/O线来选择当前外部RAM工作组。当系统需要扩展I/O口时,I/O地址空间就要占用一部分外部数据存储器地址空间。

(2)内部数据存储器。AT89S51单片机内部有128 B的RAM空间,分成工作寄存器区、位寻址区、通用RAM(数据缓冲)区三部分。

基本型单片机片内RAM地址范围是00H~7FH。增强型单片机(如AT89S52)片内除地址范围在00H~7FH的128 B的RAM外,又增加了80H~FFH的高128 B的RAM。增加的这一部分RAM仅能采用间接寻址方式访问(以与特殊功能寄存器SFR的访问相区别)。

① 工作寄存器区。AT89S51单片机片内RAM低端的00H~1FH共32 个字节单元分成4个工作寄存器组,每组占8个字节单元。

寄存器0组:地址00H~07H;

寄存器1组:地址08H~0FH;

寄存器2组:地址10H~17H;

寄存器3组:地址18H~1FH。

每个工作寄存器组都有8个寄存器,分别称为R0,R1,…,R7。程序运行时,只能有一个工作寄存器组作为当前工作寄存器组。

当前工作寄存器组的选择由特殊功能寄存器中的程序状态字寄存器PSW的RSl、RS0位来决定。可以对这两位进行编程,以选择不同的工作寄存器组。工作寄存器组与RSl、RS0的关系及地址如表所示。

② 位寻址区。内部RAM的20H~2FH共16 个字节单元是位寻址区。其128位的地址范围是00H~7FH。对被寻址的位可进行位操作。人们常将程序状态标志和位控制变量设在位寻址区内。对于该区未用到的单元也可以作为通用RAM使用。位地址与字节地址的关系如表所示。

③ 通用RAM(数据缓冲)区。位寻址区之后的30H~7FH共80 个字节单元为通用RAM区。这些单元可以作为数据缓冲器使用。这一区域的操作指令非常丰富,数据处理方便灵活。

在实际应用中,常需在RAM区设置堆栈。AT89S51的堆栈一般设在30H~7FH的范围内。栈顶的位置由堆栈指针SP指示。复位时SP的初值为07H,在系统初始化时可以重新设置。

三、特殊功能寄存器(SFR)

在AT89S51中设置了与片内RAM统一编址的21个特殊功能寄存器(SFR),它们离散地分布在80H~FFH的地址空间中。字节地址能被8整除的(即十六进制的地址码尾数为0或8的)单元是具有位地址的寄存器。在SFR地址空间中,有效的位地址共有83个,如表所示。

特殊功能寄存器(SFR)的每一位的定义和作用与单片机各部件直接相关。这里先概要说明一下,详细用法在以后进行说明。

(1) 与运算相关的寄存器(3个)

累加器ACC为8位寄存器,它是AT89S51单片机中最繁忙的寄存器,用于向ALU提供操作数,许多运算的结果也存放在累加器中。

寄存器B为8位寄存器,主要用于乘、除法运算,也可以作为RAM的一个单元使用。

程序状态字寄存器PSW为8位寄存器,且这8位都有特殊的定义和作用,用来反映指令执行后累加器A的状态信息,供程序查询或判断使用,起一定的标志作用。PSW中的CY、AC、OV、P的状态是根据指令的执行结果由硬件自动生成的,F0、F1、RSl、RS0的状态由用户根据需要用软件方法进行设定。其各位含义为:

CY:进位、借位标志。有进位、借位时CY=1,否则CY=0。

AC:辅助进位、借位标志(高半字节与低半字节间的进位或借位)。

F0、F1:用户标志位,由用户自己定义。

RSl、RS0:当前工作寄存器组选择位。

OV:溢出标志位。有溢出时OV=1否则OV=0。

P:奇偶标志位。存于累加器中的运算结果有奇数个1时P=1否则P=0。

(2) 指针类寄存器(3个)

堆栈指针SP为8位寄存器,它总是指向栈顶。80C51单片机的堆栈常设在30H~7FH这一段RAM中。堆栈操作遵循“后进先出”的原则,入栈操作时,SP先加1,数据再压入SP指向的单元。出栈操作时,先将SP指向的单元的数据弹出,然后SP再减1,这时SP指向的单元是新的栈顶。由此可见,80C51单片机的堆栈区是向地址增大的方向生成的(这与常用的80×86微机不同)。

数据指针DPTR为16位寄存器,用来存放16位的地址,它由两个8位的寄存器DPH和DPL组成。间接寻址或变址寻址可对片外的64 KB范围的RAM或ROM数据进行操作。

程序计数器PC为16位寄存器。用于指出程序的地址,因此也叫地址指针。CPU每从ROM中读出一个字节,PC自动加1。当执行转移指令时,PC会根据该指令修改下一次读ROM的新地址。

(3) 与并行口相关的寄存器(7个)

并行I/O接口P0、P1、P2、P3,均为8位。通过对这4个寄存器的读/写,可以实现数据从相应接口的输入/输出。

串行接口数据缓冲器SBUF;

串行接口控制寄存器SCON;

串行通信波特率倍增寄存器PCON(一些位还与电源控制相关,所以又称为电源控制寄存器)。

(4) 与中断相关的寄存器(2个)

中断允许控制寄存器IE;

中断优先级控制寄存器IP。

(5) 与定时/计数器相关的寄存器(6个)

定时/计数器T0的两个8位计数初值寄存器TH0、TL0,它们可以构成16位的计数器,TH0存放高8位,TL0存放低8位;

定时/计数器T1的两个8位计数初值寄存器TH1、TL1,它们可以构成16位的计数器,TH1存放高8位,TL1存放低8位;

定时/计数器的工作方式寄存器TMOD;

定时/计数器的控制寄存器TCON。

单片机中存储器扩展位地址线怎么算_小白学单片机 :AT89S51单片机基本硬件结构认识(2)...相关推荐

  1. 单片机中存储器扩展位地址线怎么算_单片机外部扩展存储器时,分时复用做数据线和低8位地址线的是( )。 (2.0分)_学小易找答案...

    [判断题]数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程() [单选题]单片机的P1口的功能是( ). (2.0分) [单选题]当52单片机应用系统需要扩展外部存储器或其他接口芯片时, ...

  2. 单片机中存储器扩展位地址线怎么算_关于单片机外扩存储器的编址方法

    进行存储器扩展时,可供使用的编址方法有两种,即:线选法和译码法. -------线选法 所谓线选法,就是直接以系统的地址作为存储芯片的片选信号,为此只需把高位地址线与存储芯片的片选信号直接连接即可.特 ...

  3. 单片机中存储器扩展位地址线怎么算_51单片机外部扩展存储器时,分时复用做数据线和低8位地址线的是( )...

    [单选题]AT89C51单片机的P3.4脚功特殊能( ) [简答题] [判断题]读风玫瑰图时,它的f风向中心吹向外缘. [简答题](16.0分) [判断题]项目建议书仅是项目建设轮廓的一个初步研究,批 ...

  4. 单片机中存储器扩展位地址线怎么算_51单片机CPU结构各部件的原理详细分析

    一. 51单片机串行口工作原理 MCS-51系列单片机片内有一个串行I/O端口,通过引脚RXD(P3.0)和TXD(P3.1)可与外设电路进行全双工的串行异步通信. 1.串行端口的基本特点 8031单 ...

  5. 单片机中存储器扩展位地址线怎么算_51单片机存储器小结

    存储器分为程序存储器(ROM)和数据存储器(RAM),两种又都可以分为片内和片外,片外即需要自己在单片机外部扩展. 8051单片机的片内程序存储器有4K,片内数据存储器有256个字节,其中又分为高12 ...

  6. 单片机概述+AT89S51片内硬件结构

    文章目录 一.什么是单片机 MCS-51系列与AT89S51X系列单片机 二. AT89S51片内硬件结构 AT89S51单片机片内结构 引脚及功能 一.什么是单片机 单片机就是在一片半导体硅片上,集 ...

  7. 单片机反相器_小白学单片机 :AT89S51单片机基本硬件结构认识(3)

    AT89S51 单片机I/O端口及工作原理 AT89S51单片机有4个8位的并行I/O端口P0.P1.P2和P3.每个端口均由锁存器.输出驱动器和输入缓冲器组成.各端口除可以作为字节输入/输出外,它们 ...

  8. hc05与单片机连接图_小白学单片机:单片机烧写器及烧写软件的使用

    一.为什么叫烧写 早期一般是将调试好的单片机程序写入到ROM.EPROM中,这种操作就像刻制光盘一样,实在高电压方式下写入,PROM是一次性写入,存储内部发生变化,有些线路或元件就被烧断,不可再恢复, ...

  9. python异或运算怎么算_小强学Python+OpenCV之-1.4.4掩膜mask及位运算(与、或、非、异或)...

    问题引入 在小强学Python+OpenCV之-1.4.2裁剪一节,我们使用的是numpy数组切片功能实现图片区域的裁剪. 那么,如果我们想要裁剪图像中任意形状的区域时,应该怎么办呢? 答案是,使用掩 ...

最新文章

  1. jQuery版AJAX简易封装
  2. 打造云上金融!网易云信入选「2021 数字化转型最佳案例 Top10」
  3. LeetCode 90. 子集 II(回溯+剪枝)
  4. linux编写复制脚本程,常用的Shell脚本
  5. 啊这,C++现在学还来的及吗?
  6. win7桌面便签。自带的
  7. PHP防注入安全代码
  8. word度量单位无效_ABBYY FineReader 12的具体使用方法和word排版设置
  9. SNMP 模拟器 vxsnmpsimulator 使用方法
  10. [华为19实习面试]语言能力优秀的我,是怎么拿下勇敢星实习offer的?华为硬件类面试经历经验分享(大三已拿offer)
  11. Excel函数所有公式汇总
  12. LU列主元法解线性方程组
  13. 移动硬盘备份linux系统盘,Ubuntu 系统备份到移动硬盘(tar) 还原到另一台电脑
  14. 我们为什么要做接口管理平台 YApi
  15. MailServer配置Foxmail
  16. Windows资源管理器已停止工作的两种解决方法
  17. .net core借助sendCloud实现邮件验证码发送
  18. ChatGPT搞砸了~,如何使用VBA导出Word文档中的图片
  19. xilinx FPGA IOB约束使用以及注意事项
  20. 【游戏】2048及各种变种大集合汇总【更新ing~新版Floppy2048 - 恒星聚变版 - 恶搞改数据】...

热门文章

  1. centos7 升级openssh7.4之后 报错
  2. 如何用Splunk建立可疑DNS报警系统
  3. 【Java面试题】37 说出ArrayList,Vector, LinkedList的存储性能和特性
  4. Python之操作RabbitMQ
  5. iOS 打电话回到当前应用
  6. 网络编程中的关键问题总结
  7. Java开发者必读的10篇精选优秀技术文章
  8. 目标跟踪之粒子滤波---Opencv实现粒子滤波算法
  9. 【Vegas原创】outlook连接exchange需要密码的解决方法
  10. [翻译]使用HtmlAgilityPack更好的HTML分析和验证