80C51单片机的内部RAM简介

控制/MCU

1814人已加入

描述

80C51内部RAM有256个单元,通常在空间上分为两个区。

低128个单元(00H~7FH)的内部数据RAM区和高128个单元(80H~0FFH)的专用寄存器SFR区。

内部RAM低128单元

80C51低128个单元是真正的内部数据RAM区,是一个多功能复用性数据存储器,其按用途可分为3个区域,如下图所示:

单片机

1)工作寄存器区(00H~1FH)

工作寄存器区也称为通用寄存器,该区域共有4组寄存器,每组由8个寄存器组成,每个单元8位,各组均以R0~R7作为寄存器编号,共32个单元,单元的地址为00H~1FH。

在任一时刻,CPU只能使用其中一组通用寄存器,称为当前通用寄存器组,具体可由程序状态寄存器PSW中的RS1,RS0位的状态组合来确定。

通用寄存器位CPU提供了就近存取数据的便利,提高了工作速度,也为编程提供了方便。

2)位寻址区(20H~2FH)

内部RAM的20H~2FH共16个单元,计16*8=128位,位地址为00H~7FH。

位寻址区既可以作为一般的RAM区进行字节操作,也可以对单元的每一位进行位操作,因此称为位寻址区,是存储空间的一部分。

3)用户RAM区(30H~7FH)

所剩的80个单元即为用户RAM区,单元地址为30H~7FH,这些单元可以作为数据缓冲器使用,在一般应用中把堆栈设置在该区域中,栈顶的位置由堆栈指针SP指示。

对内部RAM低128单元的使用作几点说明:

1>80C51内部RAM 00H~7FH单元可采用直接寻址或间接寻址方式实现数据传送;

2>内部RAM 20H~2FH单元的位地址空间可实现位操作,当前工作寄存器组可通过软件对PSW中的RS1,RS0位的状态设置来选择。

内部RAM高128单元

内部RAM高128单元是供给专用寄存器使用的,因此称为专用寄存器区(也称为特殊功能寄存器区,SFR区),单元地址是80H~0FFH。

80C51共有22个专用寄存器,其中程序计数器在物理上独立的,没有地址,故不可寻址,它不属于SFR区。

其余的21个专用寄存器都属于SFR区,是可寻址的,他们的单元地址离散地分布于80H~0FFH,如下表。

单片机

下面有关专用寄存器功能介绍。

1)程序计数器PC

PC是一个16位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。PC具有自动加1的功能,从而实现程序的顺序执行。

由于PC是不可寻址的,因此用户无法对他进行读/写操作,但可以通过转移,调用,返回等指令改变其内容,以实现程序的转移。PC的寻址范围为64KB,即地址空间为0000~0FFFFH。

2)累加器ACC或A

累加器ACC是8位寄存器,是最常用的专用寄存器,功能强,地位重要。它既可存放操作数,又可以存放运算的中间结果。

80C51系列单片机中许多指令的操作数来自累加器ACC。累加器非常繁忙,是单片机的执行程序瓶颈,制约了单片机工作效率的提高,现在已经有些单片机用寄存器阵列来代替累加器ACC。

3)寄存器B

寄存器B是8位寄存器,主要用于乘除运算。乘法运算时,B中存放乘数,乘法操作后,高8位结果存于B寄存器中。

除法运算时,B中存放除法,除法操作后,余数存于寄存器B中,寄存器B也可作为一般的寄存器用。

4)程序状态字PSW

程序状态字是8位寄存器,用于指示程序运行状态信息。其中有些位是根据程序执行结果由硬件自动设置的,而有些位可由用户通过指令方法设定。

PSW中各标志位名称及定义如下:

单片机

CY:进(借)位标志位,也是位处理器的位累加器C。在加减运算中,若操作结果的最高位有进位或有借位时,CY由硬件自动置1,否则清0。

在位操作时,CY作为累加器C使用,参与进行位传送,位与,位或等位操作。另外,某些控制转移类指令也会影响CY位状态。

AC:辅助进(借)位标志位。在加减运算中,当操作结果的低4位向高4位进位或借位时,此标志位由硬件自动置1,否则清0。

F0:用户标志位,由用户通过软件设定,用以控制程序转向。

RS1,RS0:寄存器组选择位。用于设定当前通用寄存器组的组号。

通用寄存器组共有4组,其对应关系如下表:

单片机

RS1,RS0的状态由软件设置,被选中寄存器组为当前通用寄存器组。

OV:溢出标志位,在带符号数(补码数)的加减运算中,OV=1表示加减运算的结果超出了累加器A的8位符号数表示范围(-128~+127),产生溢出,因此运算结果是错误的。OV=0,表示结果未超出255,结果只存在A中。

除法时,OV=1,表示除数为0。OV=0,表示除数不为0。

P:奇偶标志位,执行结果中含1的奇偶状态,即是奇数个1,还是偶数个1。

5)数据指针DPTR

数据指针DPTR为16位寄存器,它是80C51中唯一的一个16位寄存器。编程时,既可以按16位寄存器使用,也可以作为两个8位寄存器分开使用。

DPH为DPTR的高8位寄存器,DPL为DPTR的低8位寄存器。DPTR通常在访问外部数据存储器或I/O接口时作为地址指针使用,寻址范围为64KB。

6)堆栈指针SP

在微型计算机的内存中,都需要设置一个对数据实行后进先出操作的区域,这个区域称为堆栈。

堆栈通常是存储器的一部分,为了保证栈区的数据能按后进先出的规则来操作,专门设置一个地址寄存器来管理,这个地址寄存器称为堆栈指针SP,用于指示栈顶单元地址。

51系列单片机中堆栈指针SP为8位寄存器。

在51系列单片机中,当数据存入堆栈中,堆栈指针将自动加1并将数据存入堆栈指针所指的存储单元,当需要从堆栈中取出数据时,首先将堆栈指针所指的存储单元中的数据读出,然后自动将堆栈指针减1。

所以堆栈指针始终指向堆栈中最后存入数据的那个单元,故称该单元为堆栈顶栈。由于数据存入堆栈时堆栈指针自动加1(地址增大),所以称为向上生长型堆栈。

操作规程时:进栈操作,先将SP加1,后写入数据;出栈操作,先读出数据,后将SP减1。

51系列单片机中,堆栈规定设在单片机的内部RAM中,同时在特殊功能寄存器中将81H设置为堆栈指针,即SP=81H,81H的内容指示了栈顶地址。

堆栈的主要功能是保护断点和保护现场。51系列单片机系统复位时,SP=07H。

由于89C51片内RAM区有限,所以栈顶越小,堆栈深度就越深。为便于通用4组寄存器组都能使用,一般在系统初始化时使用MOV SP, #30H将栈顶设置在30H位置处。

堆栈的使用方式有两种,一种是自动方式,在调用子程序或中断时,返回地址自动进栈。程序返回时,断点再自动弹回PC。这种方式无须用户操作。

另一种指令模式,进栈指令是PUSH,出栈指令是POP。

7)电源控制及波特率选择控制寄存器PCON

PCON为8位寄存器,主要用于控制单片机工作于低功耗模式。80C51单片机的低功耗方式有待机方式和掉电保护方式两种。

待机方式和掉电保护方式都由专用寄存器PCON的有关位来控制。PCON寄存器不可位寻址,只能字节寻址。

单片机

PD:掉电保护位,为1时进入掉电保护方式;

IDL:待机方式位,为1时进入待机方式。

8)并行I/O端口P0~P3

专用寄存器P0,P1,P2,P3分别是并行I/O口P0~P3的数据锁存器。在80C51系列单片机中,没有专门的I/O口操作指令,而采用同一的MOV指令操作,把I/O口当做一般的专用寄存器使用。

9)串行数据缓冲器SBUF

串行数据缓冲器SBUF是串行口的一个专用寄存器,由一个发送缓冲器和一个接收缓冲器组成。两个缓冲器在物理上独立,但公用一个地址(99H)。SBUF用来存放要发送的或已接收的数据。

10)定时/计数器的专用寄存器

80C51系列单片机中有两个16位的定时/计数器T0和T1,它们分别由两个独立的8位计数器组成,T0由专用寄存器TH0,TL0组成。T1由专用寄存器TH1,TL1组成。

11)控制类专用寄存器

IE,IP,TMOD,TCON,SCON寄存器是中断系统,定时/计数器,串行口的控制寄存器,包含控制位和状态位。控制位是编程写入的控制操作位。

对专用寄存器的字节寻址作如下几点说明:

1>21个可字节寻址的专用寄存器离散分散在内部RAM的高128单元,其余的空闲单元为保留区,无定义,用户不能使用。

2>程序计数器PC是唯一不能寻址的专用寄存器,PC不占用内部RAM单元,它在物理上是独立的。

3>对专用寄存器只能使用直接寻址方式,在指令中可写成寄存器符号或单元地址形式。

在21个可寻址的专用寄存器中,有11个寄存器它们的字节地址都能被8整除,可以进行位寻址,即可对这些专用寄存器单元的每一位进行位操作,每一位都有固定的位地址。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分