您的位置 首页 解答

51单片机程序存储器和数据存储器

为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定一条指令的地址。程序计数器PC正是起到了这种作用,所以通常又称其为指令地址

为了确保程序能够接连地履行下去,CPU有必要具有某些手法来确认一条指令的地址。程序计数器PC正是起到了这种效果,所以一般又称其为指令地址计数器。在程序开端履行前,有必要将其开端地址。即程序的第一条指令地点的内存单元地址送入PC。当履行指令时,CPU将主动修正PC的内容,使之总是保存即将履行的下一个条指令的地址。由于大多数都是按次序履行的,所以修正的进程仅仅简略的加1操作。

下面咱们看看8051的存储器体系:(此章十分重要,请细心了解)

8051序列单片机与一般微机的存储器装备方法不相同。一般微机一般只要一个地址空间,ROM和RAM能够随意组织在这一地址规模内不同的空间,即ROM和RAM的地址同在一个行列里分配不同的地址空间。CPU拜访存储器时,一个地址对应仅有的存储单元,能够是ROM也能够是RAM,并用同类拜访指令。此种存储器结构称普林斯顿结构。

 

8051的存储器在物理结构上分程序存储器空间和数据存储器空间。有四个存储空间:片内程序存储器和片外程序存储空间以及片内数据存储器和片外数据存储器。这种程序存储器和数据存储器分隔的结构方法,称为哈佛结构。但从用户运用的视点,8051存储器地址空间分为三类:

1、片内,片外一致编址0000H—FFFFH的64K字节的程序存储器地址空间,用16位地址;

2、64K字节片外数据存储器地址空间,地址也从0000H—FFFFH,用16位地址;

3、256K字节数据存储器地址空间,用8位地址。

上述三个存储空间地址是重迭的,任何差异这三个不同的逻辑空间呢?8051的指令体系规划了不同的数据传送指令符号:CPU拜访片内片外ROM指令用MOVC,拜访片外指令用MOVX,拜访片内RAM指令用MOV。

程序存储器地址空间

8051程序存储器用于存放编好的程序和表格常数。程序存储器经过16位程序计数器PC寻址,寻址才能为64K字节。8051,8751的64程序存储器片内ROM为4K字节,地址为0000H—0FFFH,片外最多可扩至64K字节ROM,地址1000H—FFFFH,片表里是一致编址的。

当引脚EA接高电平时,8051程序计数器PC在0000H—0FFFH规模内,即前4K字节地址履行片内ROM中的程序;当指令地址超越0FFFH后,就主动地转向片外ROM指令。

当引脚EA接低电平时,8051片内ROM不起效果,CPU只能从片外ROMZ中取指令,地址能够从000H开端编址。这种接法特别适用于选用8031单片机的场合,由于8031片内不带ROM,所以运用使有必要使EA=0.以便能够从外部扩展EPROM中取指令。

 

8051从片内程序存储器和片外程序存储器取 值时履行速度相同。程序存储器的某些单元是留给体系运用的。

存储单元0000H-0002H用作8051上电复位后引导程序存放单元。由于8051上电复位后程序计数器PC的内容为0000H,所以CPU总是从0000H开端履行程序。假如在这三个单元中存有搬运指令,那么程序就被引导到搬运指令指定的ROM空间去履行。

0003H—0023H单元均匀地分为五段,用作五个中止服务程序的进口,由于这五个进口之间的距离较小,因而,一般说来这五个进口处都是放的一条跳转指令,而把真实的中止服务程序视状况组织在后边的存储器中。这五个进口别离是:

0003h:

外部中止0的进口地址,当外部中止引脚INT0,即P3.2有用时,引起中止请求,CPU呼应中止后主动将地址0003H装入程序计数器PC,程序就被转换到0003H去履行外部中止0的中止服务程序。

000Bh:

守时器0溢出中止的进口地址,当守时器T0发生溢出时,引起中止请求,CPU呼应中止后主动将地址000BH装入程序计数器PC, 程序就被搬运到000BH去履行守时器0的中止服务程序。

0013h:

外部中止1的进口地址,当外部中止引脚INT1,即P3.3有用时,引起中止请求,CPU呼应中止后主动将地址0013H装入程序计数器PC, 程序就被搬运到0013H去履行外部中止1的中止服务程序。

001Bh:

守时器1溢出中止的进口地址,当守时器T1发生溢出时,引起中止请求,CPU呼应中止后主动将地址001BH装入程序计数器PC, 程序就被转3移到0003H去履行守时器1的中止服务程序。

0023h:

串行接口中止的进口地址,当串行接口接纳或发送完一个数据后,引起中止请求,CPU呼应中止后主动将地址0023H装入程序计数器PC,程序就被搬运到0023H去串行接口中止服务程序。

 

二.数据存储器地址空间。

数据存储器RAM用于存放运算中的中心成果,数据暂存,缓冲,标志位等。数据存储器空间也分为片内和片外两部分,即片内RAM和片外RAM。

8051片外数据存储器空间为64K,从0000H—FFFFH;片内存储器空间为256字节,地址从0000H—00FFH。

(一)片外RAM

片外数据存储器与片内数据存储器空间低地址0000H—00FFH是重迭的,怎么区别片内,片外RAM空间呢?8051有MOV和MOVX两种指令,用于区别片内片外RAM空间。片内RAM运用MOV指令,片外64KRAM空间专门为MOVX指令运用。

 

(二)片内RAM数据存储器最大可寻址256个单元,它们又分为两个部分:

低128字节,00H—7KH,是真实的RAM区。高128字节,80H—FFH,为特别功用存放器区。

低128字节RAM ,00H—1FH地址组织为四组存放器区,每组有八个作业存放器,即R0-R7,,共占32个单元。经过对程序状况字PSW中RS1,RS0两位的设置,每组存放器可选作CPU的当时作业存放器组。若程序中并不需要四组,那么其他可用作一般RAN单元。CPU复位后,选中第0组作业存放器。

作业存放器区后的16字节单元,即20H—2FH,能够位寻址方法拜访其各位,这128个位的地址为00H—7FH。低128字节RAM单元地址规模也是00H—7FH,8051选用不同寻址方法加以区别,即拜访128个位地址用位寻址方法。拜访低128字节单元用直接寻址或直接寻址,这样就能够区别隔00H—7FH是位地址仍是字节地址,寻址方法今后再讲。经过履行指令可直接对某一位操作,如置1,请0或判1,判0等,可用作软件标志位或用于位处理。

高128字节RAM,特别功用存放器,8051片内高128字节RAM中,除程序计数器PC外,有21专用存放器,也称特别功用存放器,它们离散地散布在80H—FFH的RAM空间中。在21个特别功用存放器中,有11个特别功用存放器具有位寻址才能,它们的字节地址正好能被8整除,下面介绍部分特别功用存放器,其他将在后边叙述:

(1)累加器ACC

累加器ACC是8051最常见,最繁忙的八位特别功用存放器,许多指令的操作数取自于ACC,许多运算成果也存放于ACC中。在指令体系中选用A作为累加器ACC的助记符。

(2)存放器B

在乘,除指令中,用到了8位B存放器。乘法指令的两个操作数别离来自A和B,乘积存放于B,A两个8位存放器中。除法指令中,A中存放被除数,B中放除数,商存放于A中,B中存放余数。在其他指令中,B可作为一般通用存放器或一个RAM单元运用。

 

(3)程序状况存放器PSW

PSW是一个8位特别功用存放器,它的各位包含了程序履行后的状况信息,供程序查询或判别之用。各位的含义及其格局如下:

PSW除有确认的字节地址DOH外,每一位均有位地址。

PY,PSW.7,进位标志位。在履行加法或减法运算指令时,假如运算成果最高位即位7,向前有进位或借位,CY位由硬件置1,如运算成果最高位无进位或借位,则CY清0。CY也是8051在进行位操作时的累加器。

AC,PSW.6半符号位,也称辅佐进位标志。当履行加法或减法操作时,其运算成果发生由低半字节,即位3向高半字节有半进位或借位时AC位将被硬件主动置1,不然AC被主动清0。

PSW.5,用户标志位。用户能够依据自己的需要对FO位赋予必定含义,由用户置位,复位,体系没有规则它的含义。

RSO,和RS1,PSW.4,和PSW.5,作业存放器组挑选操控位。这两位的值决议挑选哪一组作业存放器为当时作业存放器组。由用户用软件改动RS1和RS0值的组合,以切换当时选用的作业存放器组。

当RS1=0,RS0=0时,作业存放器组定位在00到07单元,即此刻R0便是00,R1便是01,R2便是02,R3便是03,R4便是04,R5便是05,R6便是06,R7便是07。

当RS1=0,RS0=1时,作业存放器组定位在08到0F单元;

当RS1=1,RS0=0时,作业存放器组定位在10到17单元;

当RS1=1,RS0=1时,作业存放器组定位在18到1F单元;

8051上电复位后, RS1=0,RS0=0,作业存放器组定位在00到07单元;

依据需要,可利用传送指令对PSW整字节操作或用位操作指令改动RS1和RS0的状况,以切换当时作业存放器组。这样的设置对程序中维护现场供给了便利。

OV,PSW.2,溢出标志位。当进行补码运算时,如有溢出,即当运算成果超出-128到+127的规模时,OV位由硬件主动置1;无溢出时,OV=0,

PSW.1,为保存位,8051未用,8052为F1用户标志位。P, PSW.0,奇偶查验标志位。每条指令履行后,该位一直盯梢指示累加器A中1的个数。如成果A中有奇数个1,则置P=1,不然P=0.常用于校验串行通讯中的数据传送是否犯错。

 

(4)仓库指针SP

仓库指针SP为8位特别功用存放器,SP的内容即仓库指针可指向8051片内00H—7FH RAM的任何单元。体系复位后,SP初始化为07H,即指向07H的RAM单元。下面介绍一下仓库的概念。

8051同一般微机处理器相同,设有仓库。在片内RAM中专门拓荒出一个区域,数据的存取是以“后进先出”的结构方法处理的。这种数据结构方法关于中止,调用子程序都十分便利。仓库的操作有两种:

一种叫数据压入,即PUSH;另一种叫数据弹出,即POP。栈顶由仓库指针SP主动办理。每次进行压入或弹出操作今后,仓库指针便主动调整以坚持指示仓库顶部的方位。在运用仓库之前,先给SP赋值,以规则仓库的开端方位,称为栈 底。

当数据压入仓库后SP主动加1以指出当时栈顶方位。8051的仓库指针SP是一个双向计数器。在压栈时SP内容主动增值,出栈时主动减值,存取信号有必要依照“后进先出”的准则。

 

(5)数据指针DPTR

DPTR是一个16位的特别功用存放器,其高位字节存放器用DPH表明,地址83H,低位字节存放器用DPL表明,地址82H。DPTR既能够作为一个16位存放器来处理,也能够作为一个16存放器来处理,也能够作为两个独立的8位存放器DPH和DPL运用。

 

(6)IO端口PO,P1,P2,P3.

PO,P1,P2,P3.为四个8位特别功用存放器,别离是四个并行IO端口的锁存器。它们都是有字节地址,每一个锁存器还有位地址,所以每一个IO线独登时作输入或输出时,数据能够锁存,作输出时数据能够缓冲。8051的中止源包含:守时计数器0,守时计数器1,外中止0,外中止1,串口中止,除上述资源外8051还有40条引脚(关于这40条引脚,请检查相关材料)。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部