基于51单片机P0口的片外数据存储器扩展

发布者:温暖微笑最新更新时间:2011-11-26 关键字:51单片机  片外数据存储器 手机看文章 扫描二维码
随时随地手机看文章

    随着单片机运算速度和处理能力的不断提高,其在各个领域得到更广泛的应用。然而。随着其应用领域的不断扩大及集成化的不断提高,其内部资源已不能满足实际需求,往往需要对其内部资源进行扩展。经典的扩展方法主要是通过地址总线、数据总线即P0、P2口,以及控制线ALE、*****等来进行数据或程序存储器的扩展,最大寻址空间可达64KB,但这种方法占用端口较多,在有些情况下不能满足需求。这里以MCS-8051系列单片机为例,介绍一种新的片外数据存储器扩展方法,仅用单片机的P0口、P1.6及P1.7共10个端口便可实现256 KB数据存储器的扩展。

1 总体设计思路
    MCS-8051单片机片内部存储空间为256 B,有P0、P1、P2、P3 4个I/O端口。实际应用中,其内部存储空间往往不能满足需求,常常会在片外进行扩展。有别于经典的扩展方法,这里并没有用到P2口,仅用P0口和各个存储器的地址线、数据线连接,组成地址总线和数据总线。同时将PO口的P0.0、P0.1和P0.2这3个端口引到译码器件的输入端,译码后作为数据存储器件的片选择控制线,与单片机的其他控制端口一起形成控制总线。从而通过数据总线、地址总线和控制总线这3个总线实现单片机片外256 KB数据存储器的扩展。
    单片机的PO口具备地址总线、数据总线及控制线的功能。由软件来分时传送地址信号、数据信号和片选择控制信号。

2 硬件接口电路设计
    MCS-805l单片机与多片62256数据存储器的扩展电路主要由8片62256型数据存储器、3片74IS373锁存器和1片74LS138译码器件组成。62 256数据存储器为32 KB静态随机存取存储器,为片选信号输入线,为写选通信号输入线,为读选通信号输人线,A0~A14为地址输入线,D0~D7为双向三态数据线。该存储器件在不同操作方式下控制引脚电平的状态如表1所示。74LS373是带三态缓冲输出的8D触发器,OE为使能端,G为控制端。其功能如表2所示。


    图l是MCS-8051单片机与多片62256数据存储器的硬件连接电路。单片机的P0口与译码器741S138、锁存器74LS373-0和74LS373-l的输入端口相连,用来传输地址信息和控制信息。同时,P0口还与数据存储器的数据线相连接,用来传输数据信息。P1.6接到锁存器74LS373-2的控制端G,P1.7接到锁存器74LS373-1的控制端G,ALE接到锁存器74LS373-0的控制端上。由此,在P1.6、P1.7和ALE 3个端口共同作用下,使可实现地址信息和数据信息的分时传送。T0~T7是8片62256数据存储器,组成片外256 KB存储空间。



3 软件设计
3.1 数据存储器扩展的软件设计

    MCS-8051单片机片外256 KB数据存储器扩展,其软件设计的主要思路是如何在MCS-805l单片机与要访问的片外存储单元之间建立联系,实现两者的信息传递。MOVX指令执行时,将地址信息同时进行锁存,然后开始传送数据,其读、写周期很短,但占用端口较多。为了节约端口资源,可将地址信息分时传送,图2是单片机读、写片外数据存储器的过程。与MOVX指令不同,单片机在访问片外存储单元时,首先是分时将片外存储单元的地址信息送入锁存器并锁存起来,然后再对片外数据存储单元进行读、写操作,这是2个完全独立的过程,这一特点大大节约了端口资源,但读、写周期较长。[page]


3.2 数据存储器扩展的软件实例分析
    分析对数据存储器扩展软件设计可知,单片机通过P1口读、写片外数据存储单元时,软件设计具有重要作用。下面通过一实例介绍单片机访问片外数据存储单元的过程。
    以下程序段首先是将片外存储器000000H单元中的内容读到片内存储器30H单元中,然后再将片内存储器30H单元中的内容写到片外存储器077FFFH单元中。在程序中,首先将片内存储单元20H、21H和22H定义为地址信息存储单元,20H是高8位地址信息存储单元,仅低3位有效;21H是中8位地址信息存储单元,低7位有效;22H是低8位地址信息存储单元,8位全有效。所以,其寻址空间为000000H~007FFFH、010000H~017FFFH、020000H~027FFFH、030000H~037FFFH、040000H~047FFFH、050000H~057FFFH、060OOOH~067FFFH和070000H~077FFFH,共256 KB。MOVR和MOVW分别读、写子程序。
   
   
    从程序中分析可知,能够仅用P0口及其他几个很少的控制端口便可实现片外大容量数据存储器的扩展,主要是因为PO口具备地址线、数据线及片选择控制线的功能,而这一功能是通过软件方式实现的,即分时传送地址信息,数据信息和控制信息。从MOVR和MOVW 2个子程序可以看出数据的具体传送过程。此外,在编程过程中,每次读、写外部存储器内容时,只要将地址信息写到DPHH、DPTRH和DPTRL3个单元中,然后调用子程序MOVR和MOVW便可实现对片外数据存储器的读、写操作。

4 结论
    介绍MCS-8051单片机片外256 KB数据存储器的扩展方法,其特点主要是扩展的存储空间大,占用的端口少,数据传送采用并行传送方式。在外围设备较多的情况下,有限的端口无法满足要求,或是存储空间难以满足要求时,完全可采用该扩展方法。此外,如果将单片机与数据存储器件的硬件连接部分稍作改动,便可直接访问片外256 KB,2种访问方式可完全独立。如果256 KB的存储空间还不能满足实际需求,不妨将高位地址存储单元的8位全部进行译码。可得到256个片选择控制端口,那么原来的8片数据存储器便可增加到256片。这样,片外存储空间就可以达到8 MB。完全满足需求。而且,按此原理,还可以将原来的3个地址存储单元改为4个地址存储单元或更多,以增加其存储空间。但这样其读、写周期也将更长。因此需根据实际情况,综合考虑,最终使单片机的硬件与软件达到最优化。

 

 

关键字:51单片机  片外数据存储器 引用地址:基于51单片机P0口的片外数据存储器扩展

上一篇:一种音频信号发生器的设计
下一篇:基于51单片机的FIash存储器坏块自动检测

推荐阅读最新更新时间:2024-03-16 12:47

MAX813L工作原理及其在51单片机系统抗干扰中的应用
  近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标。   本文在分析MAX813L工作原理的基础上,结合实践给出了其在51单片机系统中的具体抗干扰应用实例。详细介绍了硬件电路的工作原理和相应的系统程序抗干扰编程方法。 1 MAX813L芯片及其工作原理 1.1 芯片特点       ·加电、掉电以及供电电压下降情况下的复位输出,复位脉冲宽度典型值
[单片机]
51单片机实验——跑马灯实验
1.题目要求: 编写跑马灯程序,用P0演示跑马灯的效果,效果自定。 2.KEIL代码 #include reg52.h #include intrins.h typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; void Delay100ms() //100ms { unsigned char i, j, k; _nop_();_nop_(); i = 5;j = 52;k = 195; do{do{while (--k);} while (--j);} while (--i); } void main(
[单片机]
<font color='red'>51单片机</font>实验——跑马灯实验
基于89C51单片机和CAN控制器实现老旧住宅供暖计量系统的改造设计
1、引言 CAN总线技术诞生于汽车控制领域,随着其技术的不断完善,应用领域也不断扩展。 CAN总线技术进入我国以来,在经历了引进、使用阶段后,自2000年以来,国内许多相关厂商对该总线技术进行了不懈的研究与开发,取得了一定的成果,目前,国内CAN总线技术已经在汽车控制、数控机床、医疗器械和楼宇自动化等众多领域得到了应用,是受到广泛关注的总线技术之一。 CAN总线具有现场总线的特点,适合于分布式系统的应用。目前,国内已具有一定的 CAN总线产品的开发能力,其应用成本也随之降低,所以,在传统控制系统的改造中 CAN总线技术得到了比较广泛的应用。随着热能商品化和供暖计费制度的改革,国内居民住宅供暖体制也将发生变化,其中最为重要的也是
[单片机]
基于89C<font color='red'>51单片机</font>和CAN控制器实现老旧住宅供暖计量系统的改造设计
51单片机-无源蜂鸣器+LED
1.联系生活 我们已经学会控制无源蜂鸣器鸣叫的时间,那么作为本章最后一讲,联合我们学过的LED章节知识,写一个用开发板实现一个生活常见现象的代码,比如常见机器报警时,灯亮的时候蜂鸣器就响,灯灭的时候就不响,时间上表现为灯亮的时候蜂鸣器马上响,亮的时间和鸣叫的时间都为1秒,然后灯灭与鸣叫停止也持续1秒,循环往复就形成报警信号了。 #include reg52.h sbit BEEP = P1^6; sbit LED2 = P0^0; sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit ENLED = P1^4; sbit ADDR3 = P1^3;
[单片机]
c51单片机外扩 62256 静态RAM
学习汇编语言寻址方式时 理论的知道 但是想知道地址总线物理的连接 所以自己就买了一个62256芯片(32K 静态RAM)进行连接,然后写程序测试。 上面原理图中 有个问题 62256芯片A0-A7没有接 需要用 74HC573 74HC573的链接图 然后网上又找到一张图 C51单片机中有ALE引脚,这个引脚会控制P0脚输出的是地址还是数据 使用原件 AT89S51 62256 74HC573 C51单片机建议买STC公司生产的40脚双列直插的 可以自己制作串口下载线
[单片机]
c<font color='red'>51单片机</font>外扩 62256 静态RAM
51单片机模拟I2C总线程序
#include stdio.h #include absacc.h sbit led=P1^0; sbit led2=P1^1; sbit scl=P3^5; //24c02 SCL sbit sda=P3^4; //24c02 SDA sbit DOG=P1^7; //狗 uchar x24c02_read(uchar address); //从24c02的地址address中读取一个字节数据 void x24c02_write(uchar address,uchar info); //向24c02的address地址中写入一字节数据info void x24c02_init(); //24c02初始化子程序 void
[单片机]
51单片机做的电子时钟
程序如下: #include reg52.h unsigned char code table1 ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x76};//字码表0-9,最后一个是一横 - unsigned int i,a,b,c,d,flag,flag1; unsigned int sec,min,h,nm,nh,nz; unsigned int w,day,mon,year; int miao1,miao2,miao3; sbit keyled=P1^0; sbit key2=P1^1; sbit keyinc=P1^2; sbit keymood
[单片机]
51单片机普通IO口模拟串行口之查询方式
论坛新老朋友们。祝大家新年快乐。在新的一年开始的时候,给大家一点小小的玩意。工程师经常碰到需要多个串口通信的时候,而低端单片机大多只有一个串行口,甚至没有串口。这时候无论是选择高端芯片,还是更改系统设计都是比较麻烦的事。我把以前搞的用普通I/O口模拟串行口通讯的程序拿出来,供大家参考,希望各位兄弟轻点拍砖。基本原理:我们模拟的是串行口方式1.就是最普通的方式。一个起始位、8个数据位、一个停止位。模拟串行口最关键的就是要计算出每个位的时间。以波特率9600为例,每秒发9600个位,每个位就是1/9600秒,约104个微秒。我们需要做一个精确的延时,延时时间+对IO口置位的时间=104微秒。起始位是低状态,再延时一个位的时间。停止位是
[单片机]
<font color='red'>51单片机</font>普通IO口模拟串行口之查询方式
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved