ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:21.87KB ,
资源ID:7225065      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7225065.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MCS51的存储器可分为四类51单片机存储器详解.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MCS51的存储器可分为四类51单片机存储器详解.docx

1、MCS51的存储器可分为四类51单片机存储器详解MCS-51 的存储器可分为四类,51 单片机存储器详解MCS-51 的存储器可分为四类:程序存储器一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。那幺设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样,都是由机器码组成的代码串。只是程序代码则存放于程序存储器中。MCS-51 具有 64kB 程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。对于内部无

2、 ROM 的 8031 单片机,它的程序存储器必须外接,空间地址为 64kB,此时单片机的端必须接地。强制 CPU 从外部程序存储器读取程序。对于内部有 ROM 的 8051 等单片机,正常运行时,则需接高电平,使 CPU 先从内部的程序存储中读取程序,当 PC 值超过内部 ROM 的容量时,才会转向外部的程序存储器读取程序。8051 片内有 4kB 的程序存储单元,其地址为 0000H0FFFH,单片机启动复位后,程序计数器的内容为 0000H,所以系统将从 0000H 单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意:其中一组特殊是 0000H0002H 单元,系统复位

3、后,PC 为 0000H,单片机从0000H 单元开始执行程序,如果程序不是从 0000H 单元开始,则应在这三个单元中存放一条无条件转移指令,让 CPU 直接去执行用户指定的程序。另一组特殊单元是 0003H002AH,这 40 个单元各有用途,它们被均匀地分为五段,它们的定义如下:0003H000AH 外部中断 0 中断地址区。000BH0012H 定时/计数器 0 中断地址区。0013H001AH 外部中断 1 中断地址区。001BH0022H 定时/计数器 1 中断地址区。0023H002AH 串行中断地址区。可见以上的 40 个单元是专门用于存放中断处理程序的地址单元,中断响应后,按

4、中断的类型,自动转到各自的中断区去执行程序。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,每段只有 8 个地址单元是不能存下完整的中断服务程序的,因而一般也在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU 读到这条转移指令,便转向其他地方去继续执行中断服务程序。数据存储器数据存储器也称为随机存取数据存储器。MCS-51 单片机的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外部数据存储区。MCS-51 内部 RAM 有 128 或 256 个字节的用户数据存储(不

5、同的型号有分别),它们是用于存放执行的中间结果和过程数据的。MCS-51 的数据存储器均可读写,部分单元还可以位寻址。8051 内部 RAM 共有 256 个单元,这 256 个单元共分为两部分。其一是地址从 00H7FH 单元(共 128 个字节)为用户数据 RAM。从 80HFFH 地址单元(也是 128 个字节)为特殊寄存器(SFR)单元。从图 1 中可清楚地看出它们的结构分布。在 00H1FH 共 32 个单元中被均匀地分为四块,每块包含八个 8 位寄存器,均以 R0R7 来命名,我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为 R0R7,那幺在程序中怎幺区分和使用它们呢?聪明的

6、 INTEL 工程师们又安排了一个寄存器程序状态字寄存器(PSW)来管理它们,CPU 只要定义这个寄存的 PSW 的第 3 和第 4 位(RS0 和 RS1),即可选中这四组通用寄存器。对应的编码关系如图 2 所示。内部数据存储器的配置内部数据存储器的配置 内部 RAM 的 20H2FH 单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有 16 个字节,128 个位,位地址为 00H7FH。位地址分配如表 1 所示,CPU 能直接寻址这些位,执行例如置 1、清 0、求反、转移,传送和逻辑等操作。我们常称MCS-51 具有布尔处理功能,布尔处理的存储空间指的就是这些

7、为寻址区。表 1 RAM 位寻址区地址表特殊功能寄存器特殊功能寄存器(SFR)也称为专用寄存器,特殊功能寄存器反映了 MCS-51单片机的运行状态。很多功能也通过特殊功能寄存器来定义和控制程序的执行。MCS-51 有 21 个特殊功能寄存器,它们被离散地分布在内部 RAM 的80HFFH 地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。表 2 是特殊功能寄存器分布一览表,我们对其主要的寄存器作一些简单的介绍。程序计数器 PC(program Counter)程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。PC 是一个 16 位的计数器,用于存放一条要执行的指令地址,寻址

8、范围为 64kB,PC 有自动加 1 功能,即完成了一条指令的执行后,其内容自动加 1。PC 本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。累加器 ACC(Accumulator)累加器 A 是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。加、减、乘、除法运算的指令,运算结果都存放于累加器 A 或 AB 累加器对中。大部分的数据操作都会通过累加器 A 进行,它形象于一个交通要道,在程序比较复杂的运算中,累加器成了制约软件效率的瓶颈,它的功能较多,地位也

9、十分重要。以至于后来发展的单片机,有的集成了多累加器结构,或者使用寄存器阵列来代替累加器,即赋予更多寄存器以累加器的功能,目的是解决累加器的交通堵塞问题。提高单片机的软件效率。表 2 特殊功能寄存器寄存器 B在乘除法指令中,乘法指令中的两个操作数分别取自累加器 A 和寄存器B,其结果存放于 AB 寄存器对中。除法指令中,被除数取自累加器 A,除数取自寄存器 B,结果商存放于累加器 A,余数存放于寄存器 B 中。程序状态字(Program Status Word)程序状态字是一个 8 位寄存器,用于存放程序运行的状态信息,这个寄存器的一些位可由软件设置,有些位则由硬件运行时自动设置的。寄存器的各

10、位定义如下,其中 PSW.1 是保留位,未使用。下表是它的功能说明,并对各个位的定义介绍如下:表 3 程序状态字PSW.7(CY) 进位标志位,此位有两个功能:一是存放执行某写算数运算时,存放进位标志,可被硬件或软件置位或清零。二是在位操作中作累加位使用。PSW.6(AC) 辅助进位标志位,当进行加、减运算时当有低 4 位向高 4 位进位或借位时,AC 置位,否则被清零。AC 辅助进位位也常用于十进制调整。PSW.5(F0) 用户标志位,供用户设置的标志位。PSW.4、PSW.3(RS1 和 RS0) 寄存器组选择位。可参见本章的图 2 定义。PSW.2(OV) 溢出标志。带符号加减运算中,超

11、出了累加器 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。PSW.0(P) 奇偶校验位。声明累加器 A 的奇偶性,每个指令周期都由硬件来置位或清零,若值

12、为 1 的位数奇数,则 P 置位,否则清零。数据指针(DPTR)数据指针为 16 位寄存器,编程时,既可以按 16 位寄存器来使用,也可以按两个 8 位寄存器来使用,即高位字节寄存器 DPH 和低位字节 DPL。DPTR 主要是用来保存 16 位地址,当对 64kB 外部数据存储器寻址时,可作为间址寄存器使用,此时,使用如下两条指令:MOVX A, DPTRMOVX DPTR, A在访问程序存储器时,DPTR 可用来作基址寄存器,采用基址+变址寻址方式访问程序存储器,这条指令常用于读取程序存储器内的表格数据。MOVC A, A+DPTR堆栈指针 SP(Stack Pointer)堆栈是一种数据

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

14、时则是最先的。这和我们往一个箱里存放书本一样,需将最先放入箱底部的书取出,必须先取走最上层的书籍。这个道理非常相似。那幺堆栈有何用途呢?堆栈的设立是为了中断操作和子程序的调用而用于保存数据的,即常说的断点保护和现场保护。微处理器无论是在转入子程序和中断服务程序的执行,执行完后,还是要回到主程序中来,在转入子程序和中断服务程序前,必须先将现场的数据进行保存起来,否则返回时,CPU 并不知道原来的程序执行到哪一步,原来的中间结果如何?所以在转入执行其它子程序前,先将需要保存的数据压入堆栈中保存。以备返回时,再复原当时的数据。供主程序继续执行。转入中断服务程序或子程序时,需要保存的数据可能有若干个,

15、都需要一一地保留。如果微处理器进行多重子程序或中断服务程序嵌套,那幺需保存的数据就更多,这要求堆栈还需要有相当的容量。否则会造成堆栈溢出,丢失应备份的数据。轻者使运算和执行结果错误,重则使整个程序紊乱。MCS-51 的堆栈是在 RAM 中开辟的,即堆栈要占据一定的 RAM 存储单元。同时 MCS-51 的堆栈可以由用户设置,SP 的初始值不同,堆栈的位置则不一定,不同的设计人员,使用的堆栈区则不同,不同的应用要求,堆栈要求的容量也有所不同。堆栈的操作只有两种,即进栈和出栈,但不管是向堆栈写入数据还是从堆栈中读出数据,都是对栈顶单元进行的,SP 就是即时指示出栈顶的位置(即地址)。在子程序调用和

16、中断服务程序响应的开始和结束期间,CPU 都是根据 SP 指示的地址与相应的 RAM 存储单元交换数据。堆栈的操作有两种方法:其一是自动方式,即在中断服务程序响应或子程序调用时,返回地址自动进栈。当需要返回执行主程序时,返回的地址自动交给 PC,以保证程序从断点处继续执行,这种方式是不需要编程人员干预的。第二种方式是人工指令方式,使用专有的堆栈操作指令进行进出栈操作,也只有两条指令:进栈为 PUSH 指令,在中断服务程序或子程序调用时作为现场保护。出栈操作 POP 指令,用于子程序完成时,为主程序恢复现场。I/O 口专用寄存器(P0、P1、P2、P3)I/O 口寄存器 P0、P1、P2 和 P

17、3 分别是 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 定时器和中断系统章节中叙述。串行数据缓冲器 SBUF 用来存放需发送和接收的数据,它由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器,要发送和接收的操作其实都是对串行数据缓冲器进行。其他控制寄存器(TMOD)除了以上我们简述的几个专用寄存外,还有 IP、IE、TCON、SCON 和PCON 等几个寄存器,这几个控制寄存器主要用于中断和定时的,我们将在MCS-51 定时器和中断系统中详细说明。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1