1.2 单片机的存储器

我们知道,存储器分为程序存储器和数据存储器两种,顾名思义,程序存储器用来存放程序,数据存储器用来存放数据。那么,什么是程序?什么是数据呢?它们又是怎样存储的呢?

程序就是我们“费九牛二虎之力”编写的代码,需要用通用编程器、下载线、串口线等写到单片机的程序存储器中,写好后,单片机就可以按照要求进行工作了,由于断电后要求程序不能丢失,因此,程序存储器必须采用ROM、EPROM、Flash ROM等类型。

程序写到单片机后,需要通电运行,程序运行过程中,需要产生大量中间数据和运行结果,这些数据放在什么地方呢?就放在数据存储器中,由于这些数据一般不要求进行断电保存,因此,数据存储器大都采用RAM类型。

有些单片机,如STC89C51/52等,内部还有EEPROM数据存储器,这类存储器主要用来存储一些表格、常数、密码等,存储后,即使掉电,数据也不会丢失。但是,由于EEPROM的写入速度相对较慢,必须用几毫秒才能完成1B数据的写操作,如果使用EEPROM存储器替代RAM来存储变量,就会大幅度降低处理器的速度,同时,EEPROM只能经受有限次数(一般在10万次左右)的写操作,所以,EEPROM通常只是为那些在掉电的情况下需要保存的数据预留的,不能用EEPROM代替RAM。另外,平时一提到数据存储器,一般指的就是RAM,而不是EEPROM。

不同的单片机,其存储器的类型及大小有所不同。例如,AT89S51的程序存储器采用的是4KB的Flash ROM,数据存储器采用的是128B的RAM;AT89S52的程序存储器采用的是8KB的Flash ROM,数据存储器采用的是256B的RAM。STC89C51/52内部Flash ROM分别为4KB和8KB,RAM要大一些,均为512B。一般情况下,单片机内部存储器足够使用,如果内部存储器不够时,则可进行扩展,扩展后的单片机系统就具有内部程序存储器、内部数据存储器、外部程序存储器和外部数据存储器四个存储空间,如图1-3给出了AT89S51/52存储器的配置图。

图1-3 AT89S51/52存储器配置图