MCS-51单片机存储器结构

发布者:xinyi9008最新更新时间:2015-12-22 来源: eefocus关键字:MCS-51  单片机  存储器结构 手机看文章 扫描二维码
随时随地手机看文章
MCS-51的存储器可分为四类:

    MCS-51单片机存储器结构 程序存储器
    一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样,都是由机器码组成的代码串。只是程序代码则存放于程序存储器中。

    MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的MCS-51单片机存储器结构端必须接地。强制CPU从外部程序存储器读取程序。对于内部有ROM的8051等单片机,正常运行时,MCS-51单片机存储器结构则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。

    8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意:

    其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。

    另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:

     0003H—000AH  外部中断0中断地址区。

     000BH—0012H  定时/计数器0中断地址区。

     0013H—001AH  外部中断1中断地址区。

     001BH—0022H  定时/计数器1中断地址区。

     0023H—002AH  串行中断地址区。

    可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,每段只有8个地址单元是不能存下完整的中断服务程序的,因而一般也在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU读到这条转移指令,便转向其他地方去继续执行中断服务程序。

    MCS-51单片机存储器结构 数据存储器
    数据存储器也称为随机存取数据存储器。MCS-51单片机的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外部数据存储区。MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。
    8051内部RAM共有256个单元,这256个单元共分为两部分。其一是地址从00H—7FH单元(共128个字节)为用户数据RAM。从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。从图1中可清楚地看出它们的结构分布。

    在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为R0—R7,那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器——程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的第3和第4位(RS0和RS1),即可选中这四组通用寄存器。对应的编码关系如图2所示。
 
内部数据存储器的配置
内部数据存储器的配置     内部RAM的20H—2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00H—7FH。位地址分配如表1所示,CPU能直接寻址这些位,执行例如置“1”、清“0”、求“反”、转移,传送和逻辑等操作。我们常称MCS-51具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。
 
表1  RAM位寻址区地址表
单元地址 MSB        位地址        LSB
2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H
2EH 77H 76H 75H 74H 73H 72H 71H 70H
2DH 6FH 6EH 6DH 6CH 6BH 6AH 69H 68H
2CH 67H 66H 65H 64H 63H 62H 61H 60H
2BH 5FH 5EH 5DH 5CH 5BH 5AH 59H 58H
2AH 57H 56H 55H 54H 53H 52H 51H 50H
29H 4FH 4EH 4DH 4CH 4BH 4AH 49H 48H
28H 47H 46H 45H 44H 43H 42H 41H 40H
27H 3FH 3EH 3DH 3CH 3BH 3AH 39H 38H
26H 37H 36H 35H 34H 33H 32H 31H 30H
25H 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H
24H 27H 26H 25H 24H 23H 22H 21H 20H
23H 1FH 1EH 1DH 1CH 1BH 1AH 19H 18H
22H 17H 16H 15H 14H 13H 12H 11H 10H
21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H
20H 07H 06H 05H 04H 03H 02H 01H 00H

    MCS-51单片机存储器结构 特殊功能寄存器
    特殊功能寄存器(SFR)也称为专用寄存器,特殊功能寄存器反映了MCS-51单片机的运行状态。很多功能也通过特殊功能寄存器来定义和控制程序的执行。

    MCS-51有21个特殊功能寄存器,它们被离散地分布在内部RAM的80H—FFH地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。表2是特殊功能寄存器分布一览表,我们对其主要的寄存器作一些简单的介绍。
 
    程序计数器PC(program Counter)
    程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。

    累加器ACC(Accumulator)
    累加器A是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。加、减、乘、除法运算的指令,运算结果都存放于累加器A或AB累加器对中。大部分的数据操作都会通过累加器A进行,它形象于一个交通要道,在程序比较复杂的运算中,累加器成了制约软件效率的“瓶颈”,它的功能较多,地位也十分重要。以至于后来发展的单片机,有的集成了多累加器结构,或者使用寄存器阵列来代替累加器,即赋予更多寄存器以累加器的功能,目的是解决累加器的“交通堵塞”问题。提高单片机的软件效率。
 
表2   特殊功能寄存器
标识符号 地址 寄存器名称
ACC 0E0H 累加器
B 0F0H B寄存器
PSW 0D0H 程序状态字
SP 81H 堆栈指针
DPTR 82H、83H 数据指针(16位)含DPL和DPH
IE 0A8H 中断允许控制寄存器
IP 0B8H 中断优先控制寄存器
P0 80H I/O口0寄存器
P1 90H I/O口1寄存器
P2 0A0H I/O口2寄存器
P3 0B0H I/O口3寄存器
PCON 87H 电源控制及波特率选择寄存器
SCON 98H 串行口控制寄存器
SBUF 99H 串行数据缓冲寄存器
TCON 88H 定时控制寄存器
TMOD 89H 定时器方式选择寄存器
TL0 8AH 定时器0低8位
TH0 8CH 定时器0高8位
TL1 8BH 定时器1低8位
TH1 8DH 定时器1高8位
     寄存器B
    在乘除法指令中,乘法指令中的两个操作数分别取自累加器A和寄存器B,其结果存放于AB寄存器对中。除法指令中,被除数取自累加器A,除数取自寄存器B,结果商存放于累加器A,余数存放于寄存器B中。

     程序状态字(Program Status Word)
    程序状态字是一个8位寄存器,用于存放程序运行的状态信息,这个寄存器的一些位可由软件设置,有些位则由硬件运行时自动设置的。寄存器的各位定义如下,其中PSW.1是保留位,未使用。下表是它的功能说明,并对各个位的定义介绍如下:
 
表3   程序状态字
位序 PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0
位标志 CY AC F0 RS1 RS0 OV - P
      MCS-51单片机存储器结构 PSW.7(CY) 进位标志位,此位有两个功能:一是存放执行某写算数运算时,存放进位标志,可被硬件或软件置位或清零。二是在位操作中作累加位使用。

    MCS-51单片机存储器结构 PSW.6(AC) 辅助进位标志位,当进行加、减运算时当有低4位向高4位进位或借位时,AC置位,否则被清零。AC辅助进位位也常用于十进制调整。

    MCS-51单片机存储器结构 PSW.5(F0) 用户标志位,供用户设置的标志位。

    MCS-51单片机存储器结构 PSW.4、PSW.3(RS1和 RS0) 寄存器组选择位。可参见本章的图2定义。

    MCS-51单片机存储器结构 PSW.2(OV) 溢出标志。带符号加减运算中,超出了累加器A所能表示的符号数有效范围(-128—+127)时,即产生溢出,OV=1。表明运算运算结果错误。如果OV=0,表明运算结果正确。
    执行加法指令ADD时,当位6向位7进位,而位7不向C进位时,OV=1。或者位6不向位7进位,而位7向C进位时,同样OV=1。
    除法指令,乘积超过255时,OV=1。表面乘积在AB寄存器对中。若OV=0,则说明乘积没有超过255,乘积只在累加器A中。
    除法指令,OV=1,表示除数为0,运算不被执行。否则OV=0。

    MCS-51单片机存储器结构 PSW.0(P) 奇偶校验位。声明累加器A的奇偶性,每个指令周期都由硬件来置位或清零,若值为1的位数奇数,则P置位,否则清零。

     数据指针(DPTR)
    数据指针为16位寄存器,编程时,既可以按16位寄存器来使用,也可以按两个8位寄存器来使用,即高位字节寄存器DPH和低位字节DPL。
    DPTR主要是用来保存16位地址,当对64kB外部数据存储器寻址时,可作为间址寄存器使用,此时,使用如下两条指令:

            MOVX    A, @DPTR
            MOVX    @DPTR, A

    在访问程序存储器时,DPTR可用来作基址寄存器,采用基址+变址寻址方式访问程序存储器,这条指令常用于读取程序存储器内的表格数据。

            MOVC    A, @A+@DPTR

     堆栈指针SP(Stack Pointer)
    堆栈是一种数据结构,它是一个8位寄存器,它指示堆栈顶部在内部RAM中的位置。系统复位后,SP的初始值为07H,使得堆栈实际上是从08H开始的。但我们从RAM的结构分布中可知,08H—1FH隶属1—3工作寄存器区,若编程时需要用到这些数据单元,必须对堆栈指针SP进行初始化,原则上设在任何一个区域均可,但一般设在30H—1FH之间较为适宜。
    数据的写入堆栈我们称为入栈(PUSH,有些文献也称作插入运算或压入),从堆栈中取出数据称为出栈(POP,也称为删除运算或弹出),堆栈的最主要特征是“后进先出”规则,也即最先入栈的数据放在堆栈的最底部,而最后入栈的数据放在栈的顶部,因此,最后入栈的数据出栈时则是最先的。这和我们往一个箱里存放书本一样,需将最先放入箱底部的书取出,必须先取走最上层的书籍。这个道理非常相似。

    那么堆栈有何用途呢?堆栈的设立是为了中断操作和子程序的调用而用于保存数据的,即常说的断点保护和现场保护。微处理器无论是在转入子程序和中断服务程序的执行,执行完后,还是要回到主程序中来,在转入子程序和中断服务程序前,必须先将现场的数据进行保存起来,否则返回时,CPU并不知道原来的程序执行到哪一步,原来的中间结果如何?所以在转入执行其它子程序前,先将需要保存的数据压入堆栈中保存。以备返回时,再复原当时的数据。供主程序继续执行。
堆栈结构图
    转入中断服务程序或子程序时,需要保存的数据可能有若干个,都需要一一地保留。如果微处理器进行多重子程序或中断服务程序嵌套,那么需保存的数据就更多,这要求堆栈还需要有相当的容量。否则会造成堆栈溢出,丢失应备份的数据。轻者使运算和执行结果错误,重则使整个程序紊乱。

    MCS-51的堆栈是在RAM中开辟的,即堆栈要占据一定的RAM存储单元。同时MCS-51的堆栈可以由用户设置,SP的初始值不同,堆栈的位置则不一定,不同的设计人员,使用的堆栈区则不同,不同的应用要求,堆栈要求的容量也有所不同。堆栈的操作只有两种,即进栈和出栈,但不管是向堆栈写入数据还是从堆栈中读出数据,都是对栈顶单元进行的,SP就是即时指示出栈顶的位置(即地址)。在子程序调用和中断服务程序响应的开始和结束期间,CPU都是根据SP指示的地址与相应的RAM存储单元交换数据。

    堆栈的操作有两种方法:其一是自动方式,即在中断服务程序响应或子程序调用时,返回地址自动进栈。当需要返回执行主程序时,返回的地址自动交给PC,以保证程序从断点处继续执行,这种方式是不需要编程人员干预的。第二种方式是人工指令方式,使用专有的堆栈操作指令进行进出栈操作,也只有两条指令:进栈为PUSH指令,在中断服务程序或子程序调用时作为现场保护。出栈操作POP指令,用于子程序完成时,为主程序恢复现场。

    I/O口专用寄存器(P0、P1、P2、P3)
    I/O口寄存器P0、P1、P2和P3分别是MCS-51单片机的四组I/O口锁存器。MCS-51单片机并没有专门的I/O口操作指令,而是把I/O口也当作一般的寄存器来使用,数据传送都统一使用MOV指令来进行,这样的好处在于,四组I/O口还可以当作寄存器直接寻址方式参与其他操作。

     定时/计数器(TL0、TH0、TL1和TH1)
    MCS-51单片机中有两个16位的定时/计数器T0和T1,它们由四个8位寄存器组成的,两个16位定时/计数器却是完全独立的。我们可以单独对这四个寄存器进行寻址,但不能把T0和T1当作16位寄存来使用。

    定时/计数器方式选择寄存器(TMOD)
    TMOD寄存器是一个专用寄存器,用于控制两个定时计数器的工作方式,TMOD可以用字节传送指令设置其内容,但不能位寻址,各位的定义如下,更详细的内容,我们将在《MCS-51定时器和中断系统》章节中叙述。
 
表4   定时/计数器工作方式控制寄存器 TMOD
位序 D7 D6 D5 D4 D3 D2 D1 D0
位标志 GATE MCS-51单片机存储器结构 M1 M0 GATE MCS-51单片机存储器结构 M1 M0
  定时/计数器1 定时/计数器0
 
   串行数据缓冲器(SBUF)
    串行数据缓冲器SBUF用来存放需发送和接收的数据,它由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器,要发送和接收的操作其实都是对串行数据缓冲器进行。

   其他控制寄存器(TMOD)
    除了以上我们简述的几个专用寄存外,还有IP、IE、TCON、SCON和PCON等几个寄存器,这几个控制寄存器主要用于中断和定时的,我们将在《MCS-51定时器和中断系统》中详细说明。

关键字:MCS-51  单片机  存储器结构 引用地址:MCS-51单片机存储器结构

上一篇:MCS-51单片机试题及答案
下一篇:51单片机绝对地址访问的两种方法

推荐阅读最新更新时间:2024-03-16 14:41

STC单片机串口硬件电路的设计
51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。 方案一 分立元件 方案二 集成芯片
[单片机]
基于ISD1420的高响度语音电路设计
1系统构成     语音电路组成框图如图1所示。由PLC发布RS232电平信号,经电平转换后,为单片机AT89C51所接收。一方面控制语音芯片ISD1420放音,同时控制高亮度数码显示牌给出倒计时信号,为被训练人员提供提示。看门狗则保证该电路正常运行。  2语音信号控制 2.1语音电路构成     根据训练要求,语音电路在起跑前10秒发出“长提示音”一声,然后每隔一秒发“短提示音”一声,计时回零时发“发令枪声”(发声规律可调)。     语音部分电路设计见图2。“提示音”与“起跑枪声”由语音存储/再生芯片ISD1420分段存储,ISD1420输出的音频信号经电容耦合到两片集成功率放大器TDA2003构成的BT
[嵌入式]
ROHM旗下LAPIS开发出16bit低功耗微控制器系列
保持低功耗(Halt电流450nA),进一步实现多功能化、高性能化,最适用于电池驱动设备和工业设备。 【ROHM半导体(上海)有限公司 11月10日上海讯】ROHM集团旗下的LAPIS Semiconductor开发出通用型16bit低功耗微控制器系列“ML620500系列”,最适用于以要求高速处理且低功耗的工业设备和住宅设备为首的电池驱动设备和消费电子设备。 “ML620500(ML620Q503/Q504/Q506)系列”是16bit低功耗微控制器开发的先行产品,搭载了LAPIS Semiconductor独有的高效16bit低功耗CPU内核,内置可重写闪存,支持ISP(在系统编程),支持on-board
[单片机]
ROHM旗下LAPIS开发出16bit低功耗<font color='red'>微控制器</font>系列
基于AVR单片机的船载中小型信息监控终端的设计方案
目前,随着信息产业的迅猛发展,各类船舶亟需配备更多质优价廉的中小型信息监控终端,用于监控气象状况、获取导航信息以便保证航行安全。以ARM、MIPS等领衔的32位处理器在信息监控终端应用中,显示出极大优势,但是一般以32位处理器构建的嵌入式系统往往需要配置外部FLASH和SDRAM,这样就使得开发和维护整个系统的成本较高,本设计采用高性能低功耗的AVR单片机和LCD液晶模块来设计信息监控终端,具有价格低廉、性能稳定、显示清晰、人机界面良好等优点,能够满足船舶对中小型信息监控终端的需求。 1 总体设计 信息监控终端主要由显示控制板、键盘、通信接口和液晶显示模块构成,具有数据收发、数据显示、人机交互和屏幕亮度调整等功能,其组
[单片机]
基于AVR<font color='red'>单片机</font>的船载中小型信息监控终端的设计方案
51单片机的状态迁移与复位操作
   1 单片机的工作状态及其状态迁移   80C51单片机的各种活动,可以描述成多个不同的工作状态或工作模式。这里利用笔者构思的一个单片机工作状态迁移图(如图1所示)来说明。不过,这里重点关注的是复位状态。 500)this.width=500" border=0> 图1 单片机工作状态迁移图   经过仔细分析之后,从图1中可以看出:   ① 把单片机经历的所有生存状态归纳和描绘成5个状态——1个非工作状态(即无电状态)和4个工作状态。   ② 只有复位状态是一个暂态,其他均为稳态;并且每次单片机进入正常运行状态时,都要经历一次复位状态。   ③ 只有在正常运行状态(这里记作NORMAL)下,单片机才按照程序存储器中固
[单片机]
51<font color='red'>单片机</font>的状态迁移与复位操作
MCU控制系统电路原理图
MCU控制系统电路原理图如下图所示:
[模拟电子]
<font color='red'>MCU</font>控制系统电路原理图
优化面向超低功耗设计的微控制器功效
不论是消费、工业还是医疗应用,功耗优化一般都是通过缩短有效处理时间以及延长处理器睡眠模式时间来实现的。不过,随着超低功率应用的出现,这种方法已然无法满足要求。单电池工作、接近电池阈值的充放电,电机和/或高亮LED的控制需求,以及减小器件外形尺寸并降低成本,种种趋势已经改变了开发人员的功耗优化方式。 对于电动牙刷、PMP、遥控器、无线传感器以及其它便携和手持式设备来说,必须将功率管理贯穿于系统的各个层面。通过高效单电池 电压转换 优化功耗、利用多种电流模式、引入智能电池管理、在应用级采用节能技术,便可以在整个系统范围实现功耗调节。 高效的电压转换 许多超低功率应用都在向单电池架构方向发展,以降低器件成本,减小尺寸和
[工业控制]
优化面向超低功耗设计的<font color='red'>微控制器</font>功效
为提高单片机开发系统稳定性和可扩展性的C8051F 单片机实验系统设计
为进一步简化电路结构, 提出一种C8051F 单片机实验系统设计方案,该方案采用FPGA 实现单片机各种外设接口。FPGA 作为一种可编程逻辑器件凭借其优越的可扩展性能受到设计者的青睐,逐渐成为分立元件的替代者。通过对FPGA 编程,实现任何数字元件的逻辑功能,设计者可以通过原理图输入或硬件描述语言, 方便地设计一个数字系统,这使得单片机外围电路的设计简单、灵活、可靠。 本系统是为单片机实践教学而开发的,因此要求单片机的功能齐全,满足教学中各种实验的要求。一般的实验板的功能有:模拟数字信号转换实验、通信接口实验、存储器实验、各种显示实验,人机交互实验等等。除此之外,还要考虑由于是非商业性质的开发, 对一些功能的精度要求不是很高
[单片机]
为提高<font color='red'>单片机</font>开发系统稳定性和可扩展性的C8051F <font color='red'>单片机</font>实验系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved