MCS-51单片机的访问超大容量存储器的实现
MCS-51单片机的访问超大容量存储器的实现
MCS-51系列单片机有着优越的性价比,因此应用面宽,使用量也非常大;然而它只有16位地址线,最大能访问的存储空间为64k,且扩展接口与存储器统一编址,扩展接口会占用大量的地址空间,致使该系列单片机在数据量大的数据采集系统中,存储空间明显不足,本文列出了解决办法之一,使用本方法可轻易地为MCS-51单片机扩展大容量的数据存储器,这对于数据量大的数据采集系统有着非常大的意义。
具体办法如下:
1使用大容量存储器的原理
= 1 \* GB3 ①由于MCS-51单片机的扩展接口与存储器统一编址,采用常规的方法扩展接口时会占用大量的地址空间,而多数应用系统均会要求扩展接口(本例有七段LED的段输出口、位输出口、键盘口各一个),为此,使扩展接口不占用单片机的存储地址空间对于要求大容量数据存储其的系统是必要的。
如图1,用P1口的一位,只要确保写数据到显示的段口时,使用一空余(或专门预留)的地址(如0000H),即可使扩展接口不占用单片机的存储地址空间且不会相互干扰、发生冲突,同时还可保证有足够的响应速度。
图1
表1
= 2 \* GB3 ②外部数据存储器采用大容量存贮芯片分段使用,如图2,MCS-51的16位地址线作为存储芯片的低位地址,可访问64K的存储空间(作为一段);再用P1口的D1、D0位作为存储芯片的高位地址(段地址),则可把存储器分为4段,最大访问能力可达256K(见表2),若使用更多的位,则访问能力更大。编程时只要确保高位地址(A16~A19)在访问存储芯片的指令执行前确定,即可实现存储芯片的全部空间的访问。
图2
表2
2编程实现
= 1 \* GB3 ①访问扩展接口
CLR P1.7
MOV DPTR,#0000H ;专门预留的一个地址
MOV A,#DATA1
MOVX @DPTR,A ;数据输出到显示的段口
SETB P1.7
MOV A,#DATA2
MOVX @DPTR,A ;数据输出到现实的位口
SETB P1.7
MOV DPTR,#0000H ;专门预留的一个单元地址
MOVX A,@DPTR ;读键盘口数据到ACC
= 2 \* GB3 ②访问存储器
程序中要访问存储器时,只需按如下顺序编写程序即可:
设定片选(CLR P1.7);
设定存储器的段位置;
用MOVX读写存储器。
例:
CLR P3.0 ;使存储器芯片的片选有效
CLR P1.0
CLR P1.1 ;选取0FFFFH~00000H存储区间
MO DPTR,#ADDR1
MOV A,#DATA1 ;数据写到ADDR1单元
MOVX @DPTR,A
MOV DPTR,#ADDR2
MOVX A,@DPTR ;读ADDR2单元的数据到A
MCS-51单片机的访问超大容量存储器的实现.doc