购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 MCS-51单片机存储器结构

存储器是组成计算机的主要部件之一。存储器的功能是存储信息,即程序和数据。若能事先将设计好的程序及相关数据存入存储器中,在计算机运行中再由存储器提供存储信息并进行处理,从而使计算机能快速地、自动地进行复杂而烦琐的运算。

单片机中存储器的组成结构与典型微机不尽相同,如MCS-51单片机的存储器结构是由程序存储器和数据存储器的存储空间组成的,它有4个物理上相互独立的存储器空间:即片内、外程序存储器和片内、外数据存储器。

2.2.1 MCS-51单片机的存储地址结构

从逻辑上看有三个存储空间:片内外统一编址的64KB的程序存储器地址空间(包括片内ROM和外部ROM):64KB的外部数据存储器地址空间;256B的片内数据存储地址空间(包括128B的内部RAM和特殊功能寄存器的地址空间)。在对这三个不同的存储空间进行数据传送时,必须分别采用三种不同形式的指令。图2-3表示了8051的存储地址空间结构。

2.2.2 程序存储器

MCS-51的程序存储器用于存放编好的应用程序和固定的表格及常数。MCS-5l将片内ROM和片外ROM按统一的地址编址,最大容量为64KB。而且这64KB地址空间是连续的、统一的,即从0000H~FFFFH。

①对于8051,它的片内ROM地址为0000H至0FFFH(4KB),它的片外ROM最大容量可为0000H至FFFFH。片内与片外ROM在低4KB地址出现重叠,这种重叠的区分由8051的引脚EA进行控制。

图2-3 8051存储器地址空间

当EA=1时,8051的程序计数器PC在0000H~0FFFH地址范围内(即前4KB地址)执行片内ROM中的程序:如PC在1000H~FFFFH地址范围内,则自动执行片外程序存储器中的程序。而无须用户干预。

当EA=0时,不论有无片内ROM,内部的4KB ROM失去作用,则只能寻址外部程序存储器,片外存储器可以从0000H开始编址。即所有的指令都从片外ROM读入。

②程序存储器的某些特定单元被保留用于特定的程序入口地址。这些保留的存储单元0000H~0002H是一组特殊单元。系统复位后,(PC)=0000H,单片机从0000H单元开始取指令执行程序。如果程序不从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,以便直接转去执行指定的程序。

0003H~002AH是一组特殊单元,共40个单元。这40个单元被均匀地分为5段,作为5个中断源的中断入口地址区,如图2-4所示。

中断响应后,按中断种类,自动转到各中断区的首地址去执行程序,因此在中断地址区中理应存放中断服务程序。但通常情况下,8个单元难以存下一个完整的中断服务程序,因此通常也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过冲断地址区,再转到中断服务程序的实际入口地址。

图2-4 中断源的中断地址区

2.2.3 数据存储器

数据存储器是用于存放运算中间结果,做好暂存和数据缓冲,以及设置特征标志等。它由随机读写存储器RAM组成,8051数据存储器分为内部和外部两个独立的地址空间。

对于8051单片机,其片内有256个单元的数据存储器地址空间,可将它们的物理地址空间按照用途划分为不同的区域。低128单元(地址空间为00H~7FH)为片内数据存储器区,高128单元(地址空间为80H~FFH)为特殊功能寄存器区SFR。

1.片内数据存储器低128单元

表2-2 RAM低128单元配置

低128单元是单片机的真正RAM存储器,按其用途划分为寄存器区、位寻址区和用户RAM区等3个区域。单元的配置见表2-2所示。

(1)工作寄存器区

片内RAM中的00H~1FH单元地址,共32B单元为工作寄存器区,共分4组,每组有8个8位工作寄存器R0~R7编号。寄存器常用于存放操作数及中间结果等。由于它们的功能及使用不做预先规定,因此称之为通用寄存器,有时也叫工作寄存器。通用寄存器为CPU提供了就近存储数据的便利,有利于提高单片机的运算速度。

在任一时刻,CPU只能使用其中的一组寄存器,并且将正在使用的那组寄存器称为当前寄存器组。到底是哪一组,由程序状态字寄存器PSW中RS1、RS0位的状态组合来决定。CPU复位后,总是选中第0组工作寄存器。如果实际应用中并不需要4组工作寄存器时,那么剩下的工作寄存器组所对应的单元可作为一般的数据存储器使用。

(2)位寻址区

表2-3为片内RAM位寻址区的位地址表。内部RAM的20H~2FH单元,可以对单元中每一位进行位操作,可由程序对它们直接进行清零、置位、取反和测试等操作。因此将该区称为位寻址区。位寻址区共有16个RAM单元、128位,每一位都有一个位地址,从00H~7FH。同样,位寻址区的RAM单元也可按字节寻址,作为一般的数据存储器使用。

表2-3 片内RAM位寻址区的位地址

MCS-51具有布尔处理机功能,这个位寻址区可以构成布尔处理机的存储空间。这种位寻址能力是MCS-51的一个重要特点。

(3)数据缓冲区

在内部RAM低128单元中,通用寄存器占去了32个单元,位寻址区占去了16个单元,剩下80个单元,就是供用户使用的一般RAM区,其单元地址为30H~7FH。

对用户RAM区的使用没有任何规定或限制,但在一般应用中常将堆栈开辟在此区中。

2.内部数据存储器高128单元

如表2-4所示,内部RAM的高128单元中有21个专用寄存器(Special Function Regis-ter)。它们离散地分布在80H~FFH单元地址的RAM空间中。因这些寄存器的功能己做专门规定,故称之为专用寄存器(SFR),也可称为特殊功能寄存器。

表2-4 MCS-51专用寄存器地址表

(1)部分专用寄存器简介

①累加器(Accumulator,ACC)。累加器为8位寄存器,是最常用的专用寄存器,其功能较多,地位重要。MCS-51单片机中大部分操作数指令的操作数就取自累加器,它既可用来存放操作数,也可用来存放运算的中间结果。

②B寄存器。B寄存器是一个8位寄存器,主要用于乘/除运算。进行乘法运算时,B赋值乘数;乘法操作后,乘积的高8位存于B中。进行除法运算时,B赋值除数;除法操作后,余数存于B中。此外,B寄存器也可作为一般数据寄存器使用。

③程序状态字(Program Status Word,PSW)。程序状态字是一个8位寄存器,它用于存放程序运行中的各种状态信息。其中有些位的状态是根据程序执行结果,由硬件自动设置的,而有些位的状态则由软件方法设定。PSW的位状态可以用专门指令进行测试,也可以用指令读出。一些条件转移指令将根据PSW某些位的状态进行程序转移。PSW除PSW.1位保留未用外,其余各位的定义及使用如下:

·CY(PSW.7)进位标志位:CY 是 PSW 中最常用的标志位,其功能有二个:一是存放算术运算的进位标志,在进行加或减运算时,如果操作结果的最高位有进位或借位,由硬件使CY=1,否则CY=0;二是半数以上的位操作类指令都与CY有关,它起着“位累加器”的作用。位传送、位与位或等位操作,操作位之一固定是进位标志位。

·AC(PSW.6)辅助进位标志位:在进行加或减运算中,若低4位向高4位进位或借位,由硬件如AC=l,否则CY=0。在BCD码调整中也要用到AC位状态。

表2-5 寄存器组选择

·P0(PSW.5)用户标志位:这是一个供用户定义的标志位,可通过软件方法置位或复位,在编程时通常用来控制程序的转向。

·RS1 和 RS0(PSW.4,PSW.3):寄存器组选择位。可用软件置位或清零,用于CPU选择当前使用的是哪一组通用寄存器组。但当单片机上电或复位后,RS1和RS0均为0。通用寄存器共有4组,其对应关系如表2-5所示。

·OV(PSW.2)溢出标志位:在带符号数加减运算中,OV=1表示加减运算超出了累加器A所能表示的符号数有效范围(−128~+127),即产生了溢出,因此运算结果是错误的;0V=0表示运算正确,即无溢出产生。

在乘法运算中,OV=1表示乘积超过255,即乘积分别在B与A中;OV=0表示乘积只在A中。

在除法运算中,OV=l表示除数为0,除法不能进行;OV=0表示除数不为0,除法可正常进行。

·P(PSW.0)奇偶标志位:每执行一条指令,单片机都能根据A中“1”的个数的奇偶自动令 P 置位或清零。“1”的个数为奇数,则 P=1;若“1”的个数为偶数,则P=0。凡是改变累加器A中内容的指令均会影响P标志位。

此标志位对串行通信中的数据传输有重要的意义,因为在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。

④数据指针(DPTR):DPTR为16位寄存器。由高位字节DPH和低位字节DPL组成,用来存放16位数据存储器的地址,以便对片外64KB的数据RAM区进行读/写操作。编程时,也可以按两个8位寄存器分开使用,即:

DPH DPTR高位字节

DPL DPTR低位字节

⑤堆栈指针(Stack Pointer,SP):用来指示堆栈的起始地址。堆栈是一个特殊的存储区,用来暂存数据和地址,它是按“先进后出”的原则存取数据的。堆栈共有两种操作:进栈和出栈。

MCS-51单片机的堆栈设在内部RAM中,系统复位后,SP的内容为07H,使得堆栈实际使用时是从08H单元开始的。但08H~1FH单元分别属于工作寄存器1~3区,如程序要用到这些区。最好将SP值改为1FH或更大的值。一般在内部RAM的30H~7FH单元中开辟堆栈。SP的内容一经确定,堆栈的位置也就跟着确定下来。由于SP可被初始化为不同值,因此堆栈位置是浮动的。

⑥程序计数器(Program Counter,PC)。用于存放下一条将要执行指令的地址。PC是一个16位的计数器,寻址范围达64KB。当一条指令按PC所指向的地址从程序存储器中取出之后,PC的值会自动加1,即指向下一条指令,从而可实现程序的顺序执行。它在物理上是独立的,因为 PC 没有地址,是不可寻址的,也不在 SFR(专用寄存器)之内,用户无法对它进行读/写,所以一般不用做专用寄存器。但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。

以上讲述了6个专用寄存器,其余的专用寄存器(如TCON、TMOD、IE、IP、SCON、PCON、SBUF等)将在以后章节中陆续介绍。

(2)专用寄存器中的字节寻址和位地址

MCS-51系列单片机有21个可寻址的专用寄存器,在这21个SFR中有11个专用寄存器是可以位寻址的。下面将各寄存器的字节地址及位地址一并列于表2-4中。

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

①21个可字节寻址的专用寄存器是不连续地分散在内部RAM高128单元之中的,尽管还余有许多空闲地址,但用户并不能使用。

②对专用寄存器只能使用直接寻址方式,书写时既可使用寄存器符号,也可使用寄存器单元地址。

③表2-4中,凡字节地址不带括号的寄存器都是可以进行位寻址,带括号的寄存器是不可以进行位寻址的。

④全部专用寄存器可寻址的位共83位,这些位都具有专门的定义和用途。加上位寻址区的128位,在MCS-51的内部RAM中共有211(即128+83)个可寻址位。 xVGIueSXVvnZHMI8GpyqCf1IDthu3E0WFtS9c4nNsem5al3LOqWc9PvhcvXz0hYJ

点击中间区域
呼出菜单
上一章
目录
下一章
×