存储器属于常见产品,在各类需要存储功能的器件中均存在存储器身影。本文中,小编将对单片机内部的各大存储器:程序存储器、数据存储器、特殊功能寄存器予以介绍。

 


一、程序存储器

程序是控制计算机动作的一系列命令,单片机只认识由“0”和“1”代码构成的机器指令。如前述用助记符编写的命令 MOV A,#20H,换成机器认识的代码 74H、20H:(写成二进制就是 01110100B 和 00100000B)。在单片机处理问题之前必须事先将编好的程序、表格、常数汇编成机器代码后存入单片机的存储器中,该存储器称为程序存储器。程序存储器可以放在片内或片外,亦可片内片外同时设置。由于 PC 程序计数器为 16 位,使得程序存储器可用 16 位二进制地址,因此,内外存储器的地址最大可从 0000H 到 FFFFH。8051 内部有 4k 字节的 ROM,就占用了由 0000H~0FFFH 的最低 4k 个字节,这时片外扩充的程序存储器地址编号应由 1000H 开始,如果将 8051 当作 8031 使用,不想利用片内 4kROM,全用片外存储器,则地址编号仍可由 0000H 开始。不过,这时应使 8051 的第{31}脚(即 EA 脚)保持低电平。当 EA 为高电平时,用户在 0000H 至 0FFFH 范围内使用内部 ROM,大于 0FFFH 后,单片机 CPU 自动访问外部程序存储器。

 


二、数据存储器

单片机的数据存储器由读写存储器 RAM 组成。其最大容量可扩展到 64k,用于存储实时输入的数据。8051 内部有 256 个单元的内部数据存储器,其中 00H~7FH 为内部随机存储器 RAM,80H~FFH 为专用寄存器区。实际使用时应首先充分利用内部存储器,从使用角度讲,搞清内部数据存储器的结构和地址分配是十分重要的。因为将来在学习指令系统和程序设计时会经常用到它们。8051 内部数据存储器地址由 00H 至 FFH 共有 256 个字节的地址空间,该空间被分为两部分,其中内部数据 RAM 的地址为 00H~7FH(即 0~127)。而用做特殊功能寄存器的地址为 80H~FFH。在此 256 个字节中,还开辟有一个所谓“位地址”区,该区域内不但可按字节寻址,还可按“位(bit)”寻址。对于那些需要进行位操作的数据,可以存放到这个区域。从 00H 到 1FH 安排了四组工作寄存器,每组占用 8 个 RAM 字节,记为 R0~R7。究竟选用那一组寄存器,由前述标志寄存器中的 RS1 和 RS0 来选用。在这两位上放入不同的二进制数,即可选用不同的寄存器组。

 

三、特殊功能寄存器

特殊功能寄存器(SFR)的地址范围为 80H~FFH。在 MCS-51 中,除程序计数器 PC 和四个工作寄存器区外,其余 21 个特殊功能寄存器都在这 SFR 块中。其中 5 个是双字节寄存器,它们共占用了 26 个字节。各特殊功能寄存器的符号和地址见附表 2。其中带*号的可位寻址。特殊功能寄存器反映了 8051 的状态,实际上是 8051 的状态字及控制字寄存器。用于 CPU PSW 便是典型一例。这些特殊功能寄存器大体上分为两类,一类与芯片的引脚有关,另一类作片内功能的控制用。与芯片引脚有关的特殊功能寄存器是 P0~P3,它们实际上是 4 个八位锁存器(每个 I/O 口一个),每个锁存器附加有相应的输出驱动器和输入缓冲器就构成了一个并行口。MCS-51 共有 P0~P3 四个这样的并行口,可提供 32 根 I/O 线,每根线都是双向的,并且大都有第二功能。其余用于芯片控制的寄存器中,累加器 A、标志寄存器 PSW、数据指针 DPTR 等的功能前已提及,而另一些寄存器的功能在后面有关部分再作进一步介绍。