关闭

关闭

封号提示

内容

首页 MCS-51单片机存储器结构.doc

MCS-51单片机存储器结构.doc

MCS-51单片机存储器结构.doc

上传者: 胡哥008 2012-08-12 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《MCS-51单片机存储器结构doc》,可适用于工程科技领域,主题内容包含MCS单片机存储器结构MCS的存储器可分为四类:    INCLUDEPICTURE"LocalSettingsTempCyberArticlefi符等。

MCS单片机存储器结构MCS的存储器可分为四类:    INCLUDEPICTURE"LocalSettingsTempCyberArticlefilestitlebdgif"*MERGEFORMAT 程序存储器    一个微处理器能够聪明地执行某种任务除了它们强大的硬件外还需要它们运行的软件其实微处理器并不聪明它们只是完全按照人们预先编写的程序而执行之。那么设计人员编写的程序就存放在微处理器的程序存储器中俗称只读程序存储器(ROM)。程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样都是由机器码组成的代码串。只是程序代码则存放于程序存储器中。    MCS具有kB程序存储器寻址空间它是用于存放用户程序、数据和表格等信息。对于内部无ROM的单片机它的程序存储器必须外接空间地址为kB此时单片机的端必须接地。强制CPU从外部程序存储器读取程序。对于内部有ROM的等单片机正常运行时则需接高电平使CPU先从内部的程序存储中读取程序当PC值超过内部ROM的容量时才会转向外部的程序存储器读取程序。    片内有kB的程序存储单元其地址为HFFFH单片机启动复位后程序计数器的内容为H所以系统将从H单元开始执行程序。但在程序存储中有些特殊的单元这在使用中应加以注意:    其中一组特殊是HH单元系统复位后PC为H单片机从H单元开始执行程序如果程序不是从H单元开始则应在这三个单元中存放一条无条件转移指令让CPU直接去执行用户指定的程序。    另一组特殊单元是HAH这个单元各有用途它们被均匀地分为五段它们的定义如下:     HAH  外部中断中断地址区。     BHH  定时计数器中断地址区。     HAH  外部中断中断地址区。     BHH  定时计数器中断地址区。     HAH  串行中断地址区。    可见以上的个单元是专门用于存放中断处理程序的地址单元中断响应后按中断的类型自动转到各自的中断区去执行程序。因此以上地址单元不能用于存放程序的其他内容只能存放中断服务程序。但是通常情况下每段只有个地址单元是不能存下完整的中断服务程序的因而一般也在中断响应的地址区安放一条无条件转移指令指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后CPU读到这条转移指令便转向其他地方去继续执行中断服务程序。     数据存储器    数据存储器也称为随机存取数据存储器。MCS单片机的数据存储器在物理上和逻辑上都分为两个地址空间一个是内部数据存储区和一个外部数据存储区。MCS内部RAM有或个字节的用户数据存储(不同的型号有分别)它们是用于存放执行的中间结果和过程数据的。MCS的数据存储器均可读写部分单元还可以位寻址。    内部RAM共有个单元这个单元共分为两部分。其一是地址从HFH单元(共个字节)为用户数据RAM。从HFFH地址单元(也是个字节)为特殊寄存器(SFR)单元。从图中可清楚地看出它们的结构分布。    在HFH共个单元中被均匀地分为四块每块包含八个位寄存器均以RR来命名我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为RR那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器程序状态字寄存器(PSW)来管理它们CPU只要定义这个寄存的PSW的第和第位(RS和RS)即可选中这四组通用寄存器。对应的编码关系如图所示。    内部RAM的HFH单元为位寻址区既可作为一般单元用字节寻址也可对它们的位进行寻址。位寻址区共有个字节个位位地址为HFH。位地址分配如表所示CPU能直接寻址这些位执行例如置“”、清“”、求“反”、转移传送和逻辑等操作。我们常称MCS具有布尔处理功能布尔处理的存储空间指的就是这些为寻址区。表  RAM位寻址区地址表单元地址MSB        位地址        LSBFHFHEHDHCHBHAHHHEHHHHHHHHHDHFHEHDHCHBHAHHHCHHHHHHHHHBHFHEHDHCHBHAHHHAHHHHHHHHHHFHEHDHCHBHAHHHHHHHHHHHHHFHEHDHCHBHAHHHHHHHHHHHHHFHEHDHCHBHAHHHHHHHHHHHHHFHEHDHCHBHAHHHHHHHHHHHHHFHEHDHCHBHAHHHHHHHHHHHH     特殊功能寄存器    特殊功能寄存器(SFR)也称为专用寄存器特殊功能寄存器反映了MCS单片机的运行状态。很多功能也通过特殊功能寄存器来定义和控制程序的执行。    MCS有个特殊功能寄存器它们被离散地分布在内部RAM的HFFH地址中这些寄存的功能已作了专门的规定用户不能修改其结构。表是特殊功能寄存器分布一览表我们对其主要的寄存器作一些简单的介绍。    程序计数器PC(programCounter)    程序计数器在物理上是独立的它不属于特殊内部数据存储器块中。PC是一个位的计数器用于存放一条要执行的指令地址寻址范围为kBPC有自动加功能即完成了一条指令的执行后其内容自动加。PC本身并没有地址因而不可寻址用户无法对它进行读写但是可以通过转移、调用、返回等指令改变其内容以控制程序按我们的要求去执行。    累加器ACC(Accumulator)    累加器A是一个最常用的专用寄存器大部分单操作指令的一个操作数取自累加器很多双操作数指令中的一个操作数也取自累加器。加、减、乘、除法运算的指令运算结果都存放于累加器A或AB累加器对中。大部分的数据操作都会通过累加器A进行它形象于一个交通要道在程序比较复杂的运算中累加器成了制约软件效率的“瓶颈”它的功能较多地位也十分重要。以至于后来发展的单片机有的集成了多累加器结构或者使用寄存器阵列来代替累加器即赋予更多寄存器以累加器的功能目的是解决累加器的“交通堵塞”问题。提高单片机的软件效率。表   特殊功能寄存器标识符号地址寄存器名称ACCEH累加器BFHB寄存器PSWDH程序状态字SPH堆栈指针DPTRH、H数据指针(位)含DPL和DPHIEAH中断允许控制寄存器IPBH中断优先控制寄存器PHIO口寄存器PHIO口寄存器PAHIO口寄存器PBHIO口寄存器PCONH电源控制及波特率选择寄存器SCONH串行口控制寄存器SBUFH串行数据缓冲寄存器TCONH定时控制寄存器TMODH定时器方式选择寄存器TLAH定时器低位THCH定时器高位TLBH定时器低位THDH定时器高位     寄存器B    在乘除法指令中乘法指令中的两个操作数分别取自累加器A和寄存器B其结果存放于AB寄存器对中。除法指令中被除数取自累加器A除数取自寄存器B结果商存放于累加器A余数存放于寄存器B中。     程序状态字(ProgramStatusWord)    程序状态字是一个位寄存器用于存放程序运行的状态信息这个寄存器的一些位可由软件设置有些位则由硬件运行时自动设置的。寄存器的各位定义如下其中PSW是保留位未使用。下表是它的功能说明并对各个位的定义介绍如下:表   程序状态字位序PSWPSWPSWPSWPSWPSWPSWPSW位标志CYACFRSRSOVP     PSW(CY) 进位标志位此位有两个功能:一是存放执行某写算数运算时存放进位标志可被硬件或软件置位或清零。二是在位操作中作累加位使用。     PSW(AC) 辅助进位标志位当进行加、减运算时当有低位向高位进位或借位时AC置位否则被清零。AC辅助进位位也常用于十进制调整。     PSW(F) 用户标志位供用户设置的标志位。     PSW、PSW(RS和RS) 寄存器组选择位。可参见本章的图定义。     PSW(OV) 溢出标志。带符号加减运算中超出了累加器A所能表示的符号数有效范围()时即产生溢出OV=。表明运算运算结果错误。如果OV=表明运算结果正确。    执行加法指令ADD时当位向位进位而位不向C进位时OV=。或者位不向位进位而位向C进位时同样OV=。    除法指令乘积超过时OV=。表面乘积在AB寄存器对中。若OV=则说明乘积没有超过乘积只在累加器A中。    除法指令OV=表示除数为运算不被执行。否则OV=。     PSW(P) 奇偶校验位。声明累加器A的奇偶性每个指令周期都由硬件来置位或清零若值为的位数奇数则P置位否则清零。     数据指针(DPTR)    数据指针为位寄存器编程时既可以按位寄存器来使用也可以按两个位寄存器来使用即高位字节寄存器DPH和低位字节DPL。    DPTR主要是用来保存位地址当对kB外部数据存储器寻址时可作为间址寄存器使用此时使用如下两条指令:            MOVX    A, DPTR            MOVX    DPTR, A    在访问程序存储器时DPTR可用来作基址寄存器采用基址变址寻址方式访问程序存储器这条指令常用于读取程序存储器内的表格数据。            MOVC    A, ADPTR     堆栈指针SP(StackPointer)    堆栈是一种数据结构它是一个位寄存器它指示堆栈顶部在内部RAM中的位置。系统复位后SP的初始值为H使得堆栈实际上是从H开始的。但我们从RAM的结构分布中可知HFH隶属工作寄存器区若编程时需要用到这些数据单元必须对堆栈指针SP进行初始化原则上设在任何一个区域均可但一般设在HFH之间较为适宜。    数据的写入堆栈我们称为入栈(PUSH有些文献也称作插入运算或压入)从堆栈中取出数据称为出栈(POP也称为删除运算或弹出)堆栈的最主要特征是“后进先出”规则也即最先入栈的数据放在堆栈的最底部而最后入栈的数据放在栈的顶部因此最后入栈的数据出栈时则是最先的。这和我们往一个箱里存放书本一样需将最先放入箱底部的书取出必须先取走最上层的书籍。这个道理非常相似。    那么堆栈有何用途呢?堆栈的设立是为了中断操作和子程序的调用而用于保存数据的即常说的断点保护和现场保护。微处理器无论是在转入子程序和中断服务程序的执行执行完后还是要回到主程序中来在转入子程序和中断服务程序前必须先将现场的数据进行保存起来否则返回时CPU并不知道原来的程序执行到哪一步原来的中间结果如何?所以在转入执行其它子程序前先将需要保存的数据压入堆栈中保存。以备返回时再复原当时的数据。供主程序继续执行。    转入中断服务程序或子程序时需要保存的数据可能有若干个都需要一一地保留。如果微处理器进行多重子程序或中断服务程序嵌套那么需保存的数据就更多这要求堆栈还需要有相当的容量。否则会造成堆栈溢出丢失应备份的数据。轻者使运算和执行结果错误重则使整个程序紊乱。    MCS的堆栈是在RAM中开辟的即堆栈要占据一定的RAM存储单元。同时MCS的堆栈可以由用户设置SP的初始值不同堆栈的位置则不一定不同的设计人员使用的堆栈区则不同不同的应用要求堆栈要求的容量也有所不同。堆栈的操作只有两种即进栈和出栈但不管是向堆栈写入数据还是从堆栈中读出数据都是对栈顶单元进行的SP就是即时指示出栈顶的位置(即地址)。在子程序调用和中断服务程序响应的开始和结束期间CPU都是根据SP指示的地址与相应的RAM存储单元交换数据。    堆栈的操作有两种方法:其一是自动方式即在中断服务程序响应或子程序调用时返回地址自动进栈。当需要返回执行主程序时返回的地址自动交给PC以保证程序从断点处继续执行这种方式是不需要编程人员干预的。第二种方式是人工指令方式使用专有的堆栈操作指令进行进出栈操作也只有两条指令:进栈为PUSH指令在中断服务程序或子程序调用时作为现场保护。出栈操作POP指令用于子程序完成时为主程序恢复现场。    IO口专用寄存器(P、P、P、P)    IO口寄存器P、P、P和P分别是MCS单片机的四组IO口锁存器。MCS单片机并没有专门的IO口操作指令而是把IO口也当作一般的寄存器来使用数据传送都统一使用MOV指令来进行这样的好处在于四组IO口还可以当作寄存器直接寻址方式参与其他操作。     定时计数器(TL、TH、TL和TH)    MCS单片机中有两个位的定时计数器T和T它们由四个位寄存器组成的两个位定时计数器却是完全独立的。我们可以单独对这四个寄存器进行寻址但不能把T和T当作位寄存来使用。    定时计数器方式选择寄存器(TMOD)    TMOD寄存器是一个专用寄存器用于控制两个定时计数器的工作方式TMOD可以用字节传送指令设置其内容但不能位寻址各位的定义如下更详细的内容我们将在《MCS定时器和中断系统》章节中叙述。表   定时计数器工作方式控制寄存器 TMOD位序DDDDDDDD位标志GATEMMGATEMM 定时计数器定时计数器   串行数据缓冲器(SBUF)    串行数据缓冲器SBUF用来存放需发送和接收的数据它由两个独立的寄存器组成一个是发送缓冲器另一个是接收缓冲器要发送和接收的操作其实都是对串行数据缓冲器进行。   其他控制寄存器(TMOD)    除了以上我们简述的几个专用寄存外还有IP、IE、TCON、SCON和PCON等几个寄存器这几个控制寄存器主要用于中断和定时的我们将在《MCS定时器和中断系统》中详细说明。

职业精品

精彩专题

上传我的资料

热门资料

资料评价:

/ 6
所需积分:2 立即下载

意见
反馈

返回
顶部

Q