51单片机双CPU系统通信方法

发布者:逍遥游侠最新更新时间:2014-01-22 来源: dqjsw关键字:51单片机  双CPU  系统通信 手机看文章 扫描二维码
随时随地手机看文章

本文介绍一种新颖的方法来实现51系列单片机双CPU系统。该方法灵活地运用了51单片机的ID工作方式,使没有HOLD功能的51单片机能够直接通过片外RAM进行数据通信。不但硬件和软件的实现都比较简单,数据传输速度快,而且不涉及高成本特殊器件。对一般51单片机系统的设计有一定的参考意义。

1 实现双处理器的一般方法

① 使用双口RAM。这种方法方便地实现了CPU之间的通信,在选择CPU接口时具有较大的灵活性;但这种方法会增加电路设计的难度和成本。

② 利用I/O口进行并行通信。这种方法既要用I/O口传送数据,又要用I/O口来进行传送的控制,因此占用较多的I/O口;而且控制过程涉及进行通信的两个CPU,软件设计比较复杂。

③ 利用串口进行通信。使用UART或I2C总线来联系CPU也是常用的方法。这种方法实现简单,只是传输速度较慢。

④共享内存。共享内存实际上又有两种不同实现。第一种如LON网络的Neuron节点芯片,利用不同时序实现共享内存。这种方法必须制成专用芯片,把CPU和RAM封装在一起,一般情况下实现困难。第二种如96系列单片机,使用HOLD线先挂起其中一单片机的总线,以使用其内存。这种方法简单而且传输速度快,在具有HOLD功能的CPU系统中经常使用这种方法实现双CPU。

2 使用共享内存法实现双CPU通信

由于51单片机没有HOLD功能,一般不能使用共享内存法实现双CPU通信。这里介绍一种方法,使一般51单片机能够用共享内存实现双CPU通信。该方法电路简单,软硬件实现容易;数据传输速度快,而且占用系统资源少(不使用I/O口传递数据,而用一部分地址空间作为数据传送的媒体),能充分发挥双CPU的作用。下面具体介绍这种方法。

2.1 基本设计方案

首先,甲机划出一部分片外RAM的地址空间作为数据传输的专门通道(一般可用高端地址空间);同时,把这个地址空间映射到接收数据的乙机端的相同大小片外RAM地址空间(乙机端可以直接访问到)。两边需要传递数据时,甲机就直接向这个地址读写数据。读写数据之前,两边要先联络,做好数据传输前的准备。

两边数据线要用开关门电路隔开,可以用三态门。地址线也按照设计者的安排,甲机端经过开关门电路直接映射到乙机端特定片外RAM地址。因为甲机要在乙机这边读写数据,所以甲机对片外RAM的读写选通信号也要经过开关接到乙机读写端。发送数据前,要打开这些开关门电路。这样,甲机就可以在乙机的片外RAM中读写数据了。

最后,还有一个重要工作。两边的CPU有自己独立的工作,彼此独立地在自己的数据线和地址线运行程序,要共用乙机的RAM来实现通信就必须在传送通信数据期间让乙机交出总线控制权,而51单片机又不具备96单片机的HOLD功能,怎样才能让乙机交出总线控制权?这里要用其它方法。51系列单片机本身有ID工作方式(空闲状态),ID方式可以用中断唤醒。我们可以利用ID工作方式让乙机暂停工作,从而让甲机CPU在乙机这边存取数据。

2.2 具体实现方法

图1是两个51单片机组成的双机系统。我们把左边甲机的普通片外RAM地址寻址空间分为0000H~7FFFH和8000H~0FFFFH两个不同的区域。其中,0000H~7FFFH可作为普通片外RAM空间,8000H~0FFFFH可作为数据传输通道。在这里,我们把8000H~803FH的片外RAM寻址空间映射到右端乙机的0000H~003FH的地址空间。(其实甲机8000H以上的任意地址都会映射到相应的乙机0000H ~003FH空间。这里为简单起见,只用甲机的最高位地址线直接线选,并约定甲机的通信数据都往8000H~803FH中写。)因此,甲机端的低六位地址线通过74ALS373接到乙机端的低六位地址线。同时,读写控制线也接过来。两边的数据线通过74ALS245接起来以进行双向数据传输。不传数据时,乙机的P1.7为高电平,74ALS373处于高阻态,74ALS245也因为没有被甲机的地址线选通而呈高阻态,两边的CPU可以在自己的空间运行程序,保持相对独立。甲单片机P1.0接到乙机的INT0脚,可通知乙单片机做传输数据的相应处理,同时可以通过中断来唤醒处于ID状态的乙机。传数据时,乙机的P1.7为低电平,打开74ALS373,同时乙机的P1.7还接到甲机的INT0口,以通知甲机可以开始送数或取数。甲机最高位地址线A15作为数据选通信号,使甲机端可以读写乙机端0000H~003FH地址空间RAM中的数据。数据传送方向由乙机的P1.6脚进行控制。

甲机要把数据传到乙机时,先通过P1.0输出一个下降沿脉冲到乙机的INT0口通知乙单片机,乙机中断服务程序判断是甲机要送数据过来,用指令

   MOV DPTR, #003FH
   MOV A, #0FFH
   MOVX @DPTR 0FFH

把地址线置为003FH,P0口置为FFH。为什么要做这个工作呢?因为乙机把地址线置为003FH后,进入ID状态,地址线会保持这种状态,甲机就可以控制乙机的低六位地址线;同时乙机的高十位地址线保持为"0",这样就确保了甲机的数据映射到乙机的0000H~003FH的地址空间。乙机向数据线上写FFH,是保证把P0口都置?quot;1",进入ID工作方式后,P0口(即数据线)也会保持这种状态,以保证甲机端数据顺利写入。然后,乙机P1.6脚输出高电平,置数据传送方向为甲机到乙机。最后,乙机在P1.7脚发一个下降沿脉冲,以中断通知甲机可以送数据,同时保持低电平,打开74ALS373,再执行

   ORL PCON.0,#00000001B

进入ID状态。甲机的INT0中断服务程序把数据从8000H~803FH送过来。送完后,通过甲机P1.0再给乙单片机的INT0端发一个下降沿脉冲唤醒乙机,乙机INT0中断服务程序判断数据已经传送完,进行接收数据处理。

同理,乙机要送数据到甲机时,先把数据写到0000H~003FH,最后是向003FH写FFH,以完成正确置位地址线和数据线。还要把P1.6脚置为低电平,控制数据从乙机传向甲机。再在乙机P1.7发下降沿脉冲触发甲机INT0中断,同时P1.7保持低电平,打开三态门,然后进入ID状态。甲机INT0中断服务程序判断乙机要送数据过来,并且已经做好准备,就把数据从8000H~803FH取过来(当然,803FH中数据无效)。取完后,甲机再通过P1.0给乙单片机的INT0端发一个"1"下降沿脉冲唤醒乙机,让乙机继续运行程序。

乙机的INT0中断服务程序要处理几个不同事务,有几个分支。如果是乙机向甲机传数据,乙机INT0不用做实质工作,退出中断继续运行主程序即可;如果是甲机向乙机传数据,在传数据之前,乙机INT0要为传数据做好准备,并置乙机为ID状态。传数据之后,乙机INT0处理数据。这里要设置数据传送方向和数据传送状态两个标志,用以引导程序正确运行。甲机的INT0根据传数据方向标志传数据或读数据即可。这里不再写具体程序。

关键字:51单片机  双CPU  系统通信 引用地址:51单片机双CPU系统通信方法

上一篇:自动判别小功率三极管管脚管型的电路设计
下一篇:基于STC单片机的交通信号指示灯的设计

推荐阅读最新更新时间:2024-03-16 13:34

量子加密视频通信系统日本问世
纵观通信发展史,通信系统一直伴随着窃密与保密 技术 之间的较量在成长,保密技术一直被认为是通信系统的生命,特别是涉及到个人、公司和国家安全方面,更是如此。因此世界各国都不惜耗巨资,全力进行通信安全方面的研发工作。 近日,ICT领跑者日本再次先行一步,将量子密码技术应用于电视会议系统,并实现了每秒10万比特的世界上最快的密钥生成速度。 量子加密系统日本首秀 2010年10月14日,日本独立行政法人信息通信研究机构(NICT)的量子ICT集团,受NICT的委托,与日本电气株式会社(NEC)、三菱电机株式会社(三菱电机)、日本 电信 电话株式会社(NTT),共同在NICT的JGN2plus超高速宽带网络上,采用量子密码技术开
[安防电子]
工控机在无线通信系统硬件终端行业中的应用
一、无线通信系统介绍 科技的发展,会到达一个信息高度发达,软硬件高度智能化的时代,一切事物的完成都通过智能化系统来进行,而此时的认知无线电更是在一个高度智能的机器上进行设计,更加充分的利用人工智能技术,通过智能感知,智能组网,智能通信来实现频谱感知、数据和多媒体的通信,进而达到真正意义上的有效利用频谱和高度可靠通信。 二、基于工控机的主体硬件架构为平台,在其上加入各种专业的模块(如认知、通信、射频模块),进而达到所要求的智能感知和通信功能。 在智能硬件平台(其中包含工控机操作系统、传感器控制系统、输入输出控制系统、智能显示交互界面等)的作用下,加上专业的智能认知通信射频系统,就可以完全智能化的实现自动感知频谱、组网、
[嵌入式]
第三节 趣讲51单片机之P1P2P3口深入讲解
一、P1口 P1口是4组Parallel Ports中最简单的。其结构图如下: 与P0口的区别是:由于没有端口复用功能,所以,P0口的V1变成了一个上拉电阻。 由于内部就有上拉电阻,所以,作为GPIO时,P1口不需要接上拉电阻,当然,您接了也没关系啦,就相当于两个上拉电阻并联嘛。 读端口、读引脚、写功能在P0中已经讲得非常详细了,此处略个一万字。 二、P2口 P2口的原理图如下图: 咋一看,和P0口有点像,都有控制信号,选择作为 地址/数据 总线还是作为GPIO;又和P0口有些不同,P2口没有推挽式输出的结构,即没有V1 MOS管。 我们说过,P0在作为 地址/数据 总线时
[单片机]
第三节 趣讲<font color='red'>51单片机</font>之P1P2P3口深入讲解
基于51单片机的 点阵+音乐=祝你生日快乐程序
//----------------------------------------------------- // 12*12点阵+音乐产生 // MCU:89C51 晶振:12M #include REG51.H #define uchar unsigned char #define uint unsigned int uint a=0,a1=0,a2=0; uint miusfla,miust,mius=64536; uint disfla1,sta=0; char flag=0,mdflag=0; sbit k1=P3^2; sbit k2=P3^3; sbit YY=P3^1; uchar code tabfas
[单片机]
TMS320C31和80C196CPU构成的高速实时控制系统
    摘要: 介绍了采用TMS320C31和80C196双CPU构成的高速实时控制系统的基本构成,给出了TMS320C31、80C196与双口RAM IDT7140之间的接口电路,IDT公司双口RAM系列的中断逻辑设计以及DPS与80C196之间采用双口RAM进行高速数据通信的软件实现。该控制系统可应用于对实时性要求很高的系统中。     关键词: DSP 双口RAM 高速实时 中断 DSP也称数字信号处理器。TMS320C31是TI公司的第三DSP芯片,它的基本结构包括:(1)程序文凭间与数据空间分开的总线结构,可以对程序存储器和数据存储器这两个独立的存储器进行独立编址、独立访问;(2)流水线结
[应用]
51单片机【四】蜂鸣器 晶振 单片机频率
莫名想起小时候电脑开机自检时的声音 当然平时洗衣机空调什么的也有 蜂鸣器原理就是两个铁片让其中一个的一端正负极不停的变换从而拍击另一个产生声音 蜂鸣器分有源和无源蜂鸣器 有源指的是外部只需要供电即可响 无源指的是外部必须给一个变化的供电 ULN2003D 是类似于74HC573的一个放大器 蜂鸣器的BZ接在它的OUT5上 而CPU一端接在P15 因此使用P15控制 void BuzzerOnOff(void) { gBuz = 1; delay1ms(); gBuz = 0; delay1ms(); } 文末有晶振很具体的原理介绍,简要来说就是利用石英给它外部电压它能向表一样来计时给处理器参考
[单片机]
<font color='red'>51单片机</font>【四】蜂鸣器 晶振 单片机频率
51单片机驱动16X16点阵(上移左移闪烁显示)
仿真文件里面有 电路图 下载地址: http://www.51hei.com/bbs/dpj-20402-1.html ,大家可以用protues直接看到效果 下面是源代码: /*本次16X16点阵显示各种方式的显示程序全部由本人编写,由于本人学习C语言并不是太深,正好借此机会让各位老师学习学习。*/ /*本次显示程序的设计分三个阶断 第一阶段:左移显示方式的设计 第二阶段:上移显示方式的设计 第三阶段:闪烁显示方式的设计 */ #include reg52.h #define uchar unsigned char #define uint unsigned int uchar table1 ={ 0xE0,0x
[单片机]
<font color='red'>51单片机</font>驱动16X16点阵(上移左移闪烁显示)
80C51单片机的引脚及其功能介绍
首先我们来连接一下单片机的引脚图,如果,具体功能在下面都有介绍。 单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。 ⒈ 电源: ⑴ VCC - 芯片电源,接+5V; ⑵ VSS - 接地端; ⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 ⒊ 控制线:控制线共有4根, ⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ① ALE功能:用来锁存P0口送出的低8位地址 ② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 ⑵ PSEN:外ROM读选通信号。 ⑶ RST/VPD:复位/备用电源。 ① RST(Reset)功能:复位信号输入端。 ② VP
[单片机]
80C<font color='red'>51单片机</font>的引脚及其功能介绍
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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