存储器是计算机的重要硬件之一,单片机存储器结构有两种类型:一种是程序存储器和数据存储器统一编址,属于普林斯顿结构,另一种是程序存储器和数据存储器分开编址的哈佛结构。 mcs-51 采用的是哈佛结构。
一、存储器具有的特点
程序存储器和数据存储器截然分开,各有自己的寻址系统,控制信号和特定的功能。程序存储器只存放程序和始终要保留的常数,数据存储器通常用来存放程序运行中所需要的大量数据。
单片机中与存储器有关的名称有:程序存储器和数据存储器、内部存储器和外部存储器、字节地址和位地址。存储器有一定的容量,常把一个 8 位二进制数作基本单位,叫作字节。存储器有很多字节单元,也用二进制数来标识,叫地址。这些存储器空间的地址多数从零开始编址。 8 位地址 00h ~ ffh ,十六位地址 0000h ~ ffffh 。由于每一位十六进制数可直接换成四位二进制数(如 0h—0000b、 9h—1001b、 fh—1111b ,其中 h 代表十六进制数标识符, b 代表二进制数标识符),以后我们也把两位十六进制数说成是 8 位二进制数
工作寄存器以 ram 形式组成, i/o 接口也采用存储器方式工作。工作寄存器、 i/o 口锁存器和数据存储器 ram 在单片机中统一编址。
具有一个功能很强的布尔处理器,可寻址位空间有 256 位。
二、mcs-51 具有的存储器编址空间
mcs-51 单片机寄储器结构如图所示。有六个编址空间,有四个物理存储器空间:
① 即由 pc 作地址指针的片内 4k (0000h-0fffh)程序存储器。
② 片外 4k+60k(0000h-ffffh) 程序存储器。
③ 由数据指针作地址的片外 64k 数据存储器。
④ 片内 8 位地址的 128 字节 ram ( 00h-7fh )和特殊功能寄存器 (80h-ffh) 。
程序存储器,片内 4k 程序存储器空间,其地址为 0000h ~ 0fffh ,外部 eprom 也从 0000h 开始编址。在地址 0000h ~ 0fffh 区间,地址有重叠,由 ea 引脚信号来控制内、外程序存储器的选择。
ea =0 时,不管 pc 值的大小, cpu 总是访问外部程序存储器。对于 8031 芯片,其内部没有程序存储器,必然外接 eprom ,所以 ea 必须接地,即 ea =0 时。外部程序存储器从 0000h 开始编址,寻址范围 64k 。当 ea =1 时,先执行内部 4k 程序,满 4k 后接着执行外部程序。
程序存储器以 16 位的程序计数器 pc 作为地址指针可寻址 64k 字节空间范围, psen 作为程序存储器的读选通信号。
程序存储器也存放程序所需要的常数。单片机以指令形式的不同来区分是访问程序存储器,还是访问数据存储器,凡是从程序存储器的常数表中取数据时,都要用查表指令 movc 形式。