您的位置 首页 厂商

MCS-51的存储器

MCS-51的存储器可分为四类:程序存储器一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并

MCS-51存储器可分为四类:

程序存储器
一个微处理器能够聪明地履行某种使命,除了它们强壮的硬件外,还需求它们运转的软件,其实微处理器并不聪明,它们仅仅彻底依照人们预先编写的程序而履行之。那么规划人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。程序适当于给微处理器处理问题的一系列指令。其实程序和数据相同,都是由机器码组成的代码串。仅仅程序代码则存放于程序存储器中。

MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。关于内部无ROM的8031单片机,它的程序存储器有必要外接,空间地址为64kB,此刻单片机的端有必要接地。强制CPU从外部程序存储器读取程序。关于内部有ROM的8051等单片机,正常运转时,则需接高电平,使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内部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具有布尔处理功用,布尔处理的存储空间指的便是这些为寻址区。
表1RAM位寻址区地址表
单元地址 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

特别功用存放器
特别功用存放器(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
PSW.7(CY)进位标志位,此位有两个功用:一是存放履行某写管用运算时,存放进位标志,可被硬件或软件置位或清零。二是在位操作中作累加位运用。

PSW.6(AC)辅佐进位标志位,当进行加、减运算时当有低4位向高4位进位或借位时,AC置位,不然被清零。AC辅佐进位位也常用于十进制调整。

PSW.5(F0)用户标志位,供用户设置的标志位。

PSW.4、PSW.3(RS1和 RS0)存放器组挑选位。可拜见本章的图2界说。

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。

PSW.0(P)奇偶校验位。声明累加器A的奇偶性,每个指令周期都由硬件来置位或清零,若值为1的位数奇数,则P置位,不然清零。


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

MOVXA,@DPTR
MOVX@DPTR,A

在拜访程序存储器时,DPTR可用来作基址存放器,选用基址+变址寻址办法拜访程序存储器,这条指令常用于读取程序存储器内的表格数据。

MOVCA,@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 M1 M0 GATE M1 M0
守时/计数器1 守时/计数器0
串行数据缓冲器(SBUF)
串行数据缓冲器SBUF用来存放需发送和接纳的数据,它由两个独立的存放器组成,一个是发送缓冲器,另一个是接纳缓冲器,要发送和接纳的操作其实都是对串行数据缓冲器进行。

其他操控存放器(TMOD)
除了以上咱们简述的几个专用存放外,还有IP、IE、TCON、SCON和PCON等几个存放器,这几个操控存放器首要用于中止和守时的,咱们将在《MCS-51守时器和中止体系》中具体阐明。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/258018.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部