小白学单片机 :AT89S51单片机基本硬件结构认识(2)

AT89S51单片机存储器的空间配置及功能结构

AT89S51单片机的存储器在物理结构上可以分为4个不同的存储空间:(1)内部程序存储器;(2)片内数据存储器;(3)片外数据存储器(最大可扩展到64KB);(4)片外程序存储器(最大可扩展到64KB)。

从逻辑上分,即从用户使用的角度看,AT89S51单片机可以分为3个逻辑空间:(1)片内外统一编址程序存储器空间;(2)256B的内部数据存储器;(3)外部数据存储器。

小白学单片机 :AT89S51单片机基本硬件结构认识(2)

这三种不同的存储器在物理结构上是相互独立的,它们有各自的寻址系统、控制信号,三种存储空间的编址虽然有重叠,但是CPU是通过不同的指令来访问或操作这些存储器。

一、程序存储器(ROM)

程序存储器用于存放程序及表格常数。AT89S51单片机片内驻留有4 KB的Flash ROM,外部可用16位地址线扩展到最大64 KB的ROM空间。片内ROM和外部扩展ROM是统一编址的。当芯片引脚EA为高电平时,AT89S51单片机的程序计数器PC在0000H~0FFFH范围内(即前4 KB地址),CPU执行片内ROM中的程序。当PC内容在1000H~FFFFH范围内(超过4 KB地址)时,CPU自动转向外部ROM执行程序。如果为EA低电平时(接地),则所有取指令操作均在外部程序存储器中进行,这时外部扩展的ROM可从0000H开始编址。

在程序存储器中,某些特定的单元是给系统使用的。0000H单元是复位入口,单片机复位后,CPU总是从0000H单元开始执行程序。通常在0000H~0002H单元安排一条无条件转移指令,使之转向主程序的入口地址;0003H~002AH是专用单元,被保留用于5个中断服务程序或中断入口,一般情况下用户不能用来存放其他程序。

二、

数据存储器(RAM)

AT89S51单片机的数据存储器,分为片外RAM和片内RAM两大部分。

(1)外部数据存储器。在应用系统中,如果需要较大的数据存储器,而片内RAM又不能满足要求,那么就需要外接RAM芯片来扩展数据存储器。外部数据存储器的空间最大可扩展为64 KB,编址为0000H~FFFFH。如果应用系统需要超过64 KB的大容量数据存储器,可将外部RAM分组,每组地址空间重叠而且都为64 KB,由部分I/O线来选择当前外部RAM工作组。当系统需要扩展I/O口时,I/O地址空间就要占用一部分外部数据存储器地址空间。

(2)内部数据存储器。AT89S51单片机内部有128 B的RAM空间,分成工作寄存器区、位寻址区、通用RAM(数据缓冲)区三部分。

基本型单片机片内RAM地址范围是00H~7FH。增强型单片机(如AT89S52)片内除地址范围在00H~7FH的128 B的RAM外,又增加了80H~FFH的高128 B的RAM。增加的这一部分RAM仅能采用间接寻址方式访问(以与特殊功能寄存器SFR的访问相区别)。

① 工作寄存器区

。AT89S51单片机片内RAM低端的00H~1FH共32 个字节单元分成4个工作寄存器组,每组占8个字节单元。

寄存器0组:地址00H~07H;

寄存器1组:地址08H~0FH;

寄存器2组:地址10H~17H;

寄存器3组:地址18H~1FH。

每个工作寄存器组都有8个寄存器,分别称为R0,R1,…,R7。程序运行时,只能有一个工作寄存器组作为当前工作寄存器组。

小白学单片机 :AT89S51单片机基本硬件结构认识(2)

当前工作寄存器组的选择由特殊功能寄存器中的程序状态字寄存器PSW的RSl、RS0位来决定。可以对这两位进行编程,以选择不同的工作寄存器组。工作寄存器组与RSl、RS0的关系及地址如表所示。

② 位寻址区。内部RAM的20H~2FH共16 个字节单元是位寻址区。其128位的地址范围是00H~7FH。对被寻址的位可进行位操作。人们常将程序状态标志和位控制变量设在位寻址区内。对于该区未用到的单元也可以作为通用RAM使用。位地址与字节地址的关系如表所示。

小白学单片机 :AT89S51单片机基本硬件结构认识(2)

③ 通用RAM(数据缓冲)区。位寻址区之后的30H~7FH共80 个字节单元为通用RAM区。这些单元可以作为数据缓冲器使用。这一区域的操作指令非常丰富,数据处理方便灵活。

在实际应用中,常需在RAM区设置堆栈。AT89S51的堆栈一般设在30H~7FH的范围内。栈顶的位置由堆栈指针SP指示。复位时SP的初值为07H,在系统初始化时可以重新设置。

三、特殊功能寄存器(SFR)

在AT89S51中设置了与片内RAM统一编址的21个特殊功能寄存器(SFR),它们离散地分布在80H~FFH的地址空间中。字节地址能被8整除的(即十六进制的地址码尾数为0或8的)单元是具有位地址的寄存器。在SFR地址空间中,有效的位地址共有83个,如表所示。

小白学单片机 :AT89S51单片机基本硬件结构认识(2)

特殊功能寄存器(SFR)的每一位的定义和作用与单片机各部件直接相关。这里先概要说明一下,详细用法在以后进行说明。

(1) 与运算相关的寄存器(3个)

累加器ACC为8位寄存器,它是AT89S51单片机中最繁忙的寄存器,用于向ALU提供操作数,许多运算的结果也存放在累加器中。

寄存器B为8位寄存器,主要用于乘、除法运算,也可以作为RAM的一个单元使用。

程序状态字寄存器PSW为8位寄存器,且这8位都有特殊的定义和作用,用来反映指令执行后累加器A的状态信息,供程序查询或判断使用,起一定的标志作用。PSW中的CY、AC、OV、P的状态是根据指令的执行结果由硬件自动生成的,F0、F1、RSl、RS0的状态由用户根据需要用软件方法进行设定。其各位含义为:

CY:进位、借位标志。有进位、借位时CY=1,否则CY=0。

AC:辅助进位、借位标志(高半字节与低半字节间的进位或借位)。

F0、F1:用户标志位,由用户自己定义。

RSl、RS0:当前工作寄存器组选择位。

OV:溢出标志位。有溢出时OV=1否则OV=0。

P:奇偶标志位。存于累加器中的运算结果有奇数个1时P=1否则P=0。

(2) 指针类寄存器(3个)

堆栈指针SP为8位寄存器,它总是指向栈顶。80C51单片机的堆栈常设在30H~7FH这一段RAM中。堆栈操作遵循“后进先出”的原则,入栈操作时,SP先加1,数据再压入SP指向的单元。出栈操作时,先将SP指向的单元的数据弹出,然后SP再减1,这时SP指向的单元是新的栈顶。由此可见,80C51单片机的堆栈区是向地址增大的方向生成的(这与常用的80×86微机不同)。

数据指针DPTR为16位寄存器,用来存放16位的地址,它由两个8位的寄存器DPH和DPL组成。间接寻址或变址寻址可对片外的64 KB范围的RAM或ROM数据进行操作。

程序计数器PC为16位寄存器。用于指出程序的地址,因此也叫地址指针。CPU每从ROM中读出一个字节,PC自动加1。当执行转移指令时,PC会根据该指令修改下一次读ROM的新地址。

(3) 与并行口相关的寄存器(7个)

并行I/O接口P0、P1、P2、P3,均为8位。通过对这4个寄存器的读/写,可以实现数据从相应接口的输入/输出。

串行接口数据缓冲器SBUF;

串行接口控制寄存器SCON;

串行通信波特率倍增寄存器PCON(一些位还与电源控制相关,所以又称为电源控制寄存器)。

(4) 与中断相关的寄存器(2个)

中断允许控制寄存器IE;

中断优先级控制寄存器IP。

(5) 与定时/计数器相关的寄存器(6个)

定时/计数器T0的两个8位计数初值寄存器TH0、TL0,它们可以构成16位的计数器,TH0存放高8位,TL0存放低8位;

定时/计数器T1的两个8位计数初值寄存器TH1、TL1,它们可以构成16位的计数器,TH1存放高8位,TL1存放低8位;

定时/计数器的工作方式寄存器TMOD;

定时/计数器的控制寄存器TCON。


分享到:


相關文章: