MCS-51单片机访问超大容量存储器的实现
1 引言
MCS-51系列单片机有着优越的性价比,因此应用面宽,使用量也非常大;然而它只有16位地址线,最大能访问的存储空间为塑封电感器64K,且扩展接口与存储器统一编址,扩展接口会占用大量的地址空间,致使该系列单片机在数据量大的数据采集系统中,存储空间明显不足。
笔者最近在开发一数据采集系统时,经分析贴片电感、探索,找到了解决的办法。
2 使用大容量存储器的原理
2.1 使扩展接口不占用单片机的存储地址空间
由于MCS-51单片机的扩展接口与存储器统一编址,采用常规的方法扩展接口时会占用大量的地址空间,而多数应用系统均会要求扩展接口(本例有七段LED的段输出口昆山电感厂、位输出口、键盘口各一个),为此,使扩展接口不占用单片机的存储地址空间对于要求大容量数据存储器的系统是必要的。
如图1,用P1口的一位,只要确保写数据到显示的段口时,使用一空余(或专门预留)的地址(如0000H),即可使扩展接口不占用单片机的存储地址空间且不会相互干扰、发生冲突,同时还可保证有足够的电感生产响应速度。
2.2 外部数据存储采用大容量存贮芯片,分段使用
如图示,MCS-51的16位地址线作为存储芯片的低位地址,可访问64K的存储空间(作为一段);再用P1口的D1、D0位作为存储芯片的高位地址(段地址),则可把存储器分为4段,最大访问能力可达256K(见下表),若使用更多的位,则访问能力可更大。编程时只要确保高位地址(A16~A19)在访问存储芯片的指令执行前确定,即可实现存储芯片全部空间的访问。
3 编程实现
3.1 访问扩展接口
CLR P1.7
MOV DPTR,#0000H ;专门预留的一个地址MOV A, #DATA1
MOVX @DPTR,A ;数据输出到显示的段口SETB P1.7
MOV A,#DATA2MOVX@DPTR,A ;数据输出到显示的位口
SETB P1.7
MOV DPTR,#0000H ;专门预留的一个单 元地址
MOVX A,@DPTR ;读键盘口数据到ACC
3.2 访问存储器
程序中要访问存储器时,只需按如下顺序编写程序即可:设定片选(CLR P1.7);设定存储器的段位置;用MOVX读写存储器
例:
CLR P3.0 ;使存储功率电感芯片的片选有效CLR P1.0
CLR P1.1 ;选取0FFFFH~00000H存储区间MO DPTR,#ADDR1
MOV A,#DATA1 ;数据写到ADDR1单元MOVX@DPTR,AMOV DPTR,#ADDR2
MOVX A,@DPTR ;读ADDR2单元的数据到A
4 结束语
使用本方法可轻易地为MCS-51单片机扩展大容量的数据存储器,这对于数据量大的数据采集系统有着非常大的意义。
参 考 文 献
1 胡汉才.单片机原理及接口技术.北京:北京航空航天大学出版社
2 白驹珩,雷晓平.单片计算机及其应用.成都:电子科技大学出版社
卫星电源DC/DC模块输入滤波器的设计作为卫星的“心脏”,电源的可靠性要求很高。卫星电源系统中的DC/DC模块主要负责将输出的42V直流电压转换成其他等级的直流电压,以满足不同设备的用电需求。DC/DC模块输入滤波器有两个主要功能:一是阻
[开关电源]关于VIPER12A的使用如图所示,我有这样一个VIPER12A的电源电路,方案是ST公司的,他输出是15V电压。 我想修改成输出10V,把D9这个15V的稳压二极管换成10V的稳压管行不行?我看到说输出电压低于15V貌似电路上要有修改,不知道要怎么个改法,各位前辈有方案么,输出10V的满意回复+20oldzhang 查看完整内容直接把VIPER12换成DK112、DK124,去掉D13,D9取10v的可以那得
高频开关电源双闭环反馈并联系统1.前言高频开关电源在二十世纪八十年代进入我国后,由于其具有体积小.重量轻.效率高.噪音低等优点,大量地进入我国邮电通讯.电力部门及其它领域,其发展迅速,市场潜力巨大,取代了许多传统的中小功率可控硅整