目前,很多单片机一般都会在内部集成一定数量的程序存储器和数据存储器,而且根据程序量的大小,都可以在一个系列里找到相应的型号,所以通常都不再需要像以前的8031那样扩展外部程序存储器,下面以AT89C51为例来看看存储器的结构,如图2-5所示。
图2-5 AT89C51存储器的结构
就程序存储器而言,AT89C51已经集成了4KB,一般的应用已经足够。但是,如果在外部扩展到64KB的话,那么其分布就如图2-5左边所表示的一样。如果EA=0,那么程序的执行全部在外部空间,反之如果EA=1,那么当程序小于4KB的时候,程序执行在内部空间,而大于4KB时,超出部分就会到外部空间。总之,程序存储器有部分重叠。
数据存储器也分成内外两种,由于采用不同的方法访问,所以不存在重叠的现象。一般如果不是设计得比较复杂的数据采集系统,扩展外部RAM的可能性也比较小,所以比较重要的是内部的RAM空间,说它重要其实还有另外一个原因:特殊功能寄存器都分布在这里。
内部RAM分成两大部分,即普通RAM和特殊功能寄存器,其地址范围分别为00H~7FH和80H~F0H。普通RAM的具体分类如图2-6所示,特殊功能寄存器的示意图如图2-7所示。(www.xing528.com)
图2-6 普通RAM区结构
虽然出于功能区分,这些RAM被分成很多类别,但它们在本质上是一样的,不过是个“内容可以修改的地址”而已,所以很多时候,对上述的通用寄存器区和特殊功能寄存器,除了可以用特殊的名字,例如P0进行访问之外,也完全可以用其地址80H进行直接访问。这里还有一个很特殊的RAM区,即可位寻址RAM区,其特点是一个字节中的每个bit都是可以单独访问的,这些数据对应了C51语言里的一种扩展的数据类型bdata,在以后的程序设计中,肯定会用到。
图2-7 特殊功能寄存器结构
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。