双机并口双工通信的设计与实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:flash_chen
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:并行数据传输是以计算机字长为单位的,适合微机与外部设备或微机与微机之间高速、近距离的通信。并行接口芯片8255A具有通用性强且使用灵活的特点,CPU可通过该芯片直接与外设相连接。该文从硬件设计与软件设计两方面进行了详细的阐述,主要利用并行接口芯片8255A设计了两台微机之间的双工通信接口电路,同时设计了双机的通信程序,实现了双机通过并口的双工通信。
  关键词:双机并口通信;双工;8255A
  中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)06-0069-03
  Abstract: The parallel data transmission is based on the computer word as a unit, suitable for high speed and short distance communication between the computer and the external device or computer with computer.The parallel interface chip 8255A has the characteristics of high universality and flexibility, and CPU can be connected directly with the peripheral devices. This paper gives a detailed exposition from two aspects of hardware design and software design, the main use of the parallel interface chip 8255A duplex communication interface circuit between two computer design, while the design of machine communication procedures, realizes the double duplex communication through parallel port.
  Key words: dual parallel communication; duplex; 8255A
  隨着时代的发展与科技的进步,微型计算机的使用日益普及,愈来愈多的人使用微机来工作或者学习。在我们的日常工作或学习之中,计算机设备间的信息交换是必不可缺的。计算机系统的信息交换方式有并行数据传输方式和串行数据传输方式这两种。其中,并行数据传输通常是以计算机的字长(常见有8位、16位或32位)为传输单位的,在一次传输过程中传输的数据长度为一个字长,因为多位数据一起传输,所以并行具有传输速度快的优点。8255A是与因特尔公司的微处理器配套的通用可编程并行接口芯片,因8255A具有通用性强、使用灵活的特点,具有广泛的应用。本文主要利用并行接口芯片8255A设计了两台微机之间的双工通信接口电路,并在接口电路的基础之上,设计了双机的通信程序,实现了双机通过并口的双工通信。
  1 双机通信基本设计功能
  使用两台微机通过两片并行接口芯片8255A进行双机通讯。将需要进行通信的两台微机分别规定为甲机与乙机。在进行通信时,甲机在键盘上输入信息后发送给乙机,乙机接收甲机发来的信息并将其显示在屏幕上,相同的,乙机也可以输入信息后发送给甲机,甲机接收乙机发来的信息后将其显示在屏幕上。甲机在发送状态下,可输入事先选定的控制字符切换到接收状态,乙机接收到甲机发来的控制字符后,转为发送状态;当乙机在发送状态时,也可输入控制字符切换到接收状态,甲机接收到乙机发来的控制字符后,转为发送状态;以此来实现双机收发的转换,完成半双工模式下的双机通讯。当按下ESC键时,结束通讯退出程序。
  2 并行接口芯片8255A功能介绍
  并行接口芯片8255A是一种常用的芯片,本文主要围绕该芯片进行接口电路设计,下面简单介绍该芯片的基本功能以及工作方式:
  1)8255A接口芯片是具有40个引脚的双列直插式组件,有3个8位并行输入输入端口,可编程设置每个端口是输入还是输出。
  2)8255A接口芯片可以适应CPU与输入输出接口之间多种数据传送方式的要求。例如无条件传送、查询方式传送、中断方式传送。和不同的传送方式相对应,芯片有方式0、方式1和方式2三种工作方式。在工作方式1和方式2下,8255A的C口比较特殊,它的部分信号线被用作专门的联络应答信号。
  3)8255A接口芯片共有以下三种工作方式:
  ①方式0:基本输入输出方式。在方式0下不使用联络信号与中断,A口和B口都可作为输入或输出口,C口分成高四位与低四位,两个部分也都可分别作为为输入或输出口。在方式0下,每个口输出有锁存,输入只有缓冲,无锁存。方式0常用于与外设无条件地传送数据或外设数据的接收。
  ②方式1:选通输入输出方式。在方式1下,C口的某些位被占用,用作控制或状态信号线。当A口工作于方式1且用作输出口时,C口的PC7线用作输出缓冲器满信号OBF,PC6线用作外设收到数据后的响应信号ACK,PC3线用作中断请求输出信号INTR。当B口工作于方式1且用作输出口时,C口的PC1线用作输出缓冲器满OBF信号,PC2线用作外设收到数据后的响应信号ACK,PC0线用作中断请求输出信号INTR。
  ③方式2:双向选通传送方式。方式2是A口特有的工作方式。在该方式下,A口既可以发送数据,也可以接收数据。C口的5条信号线用作控制和状态信号线。
  3 硬件设计
  对于“并口双机通讯”,我们很自然地想到使用两台微机通过两片并行接口芯片8255A的连接来完成。当甲机发送乙机接收时,两机采用端口A的8根数据线来传输数据,甲机一侧的8255端口A采用方式1工作,乙机一侧的8255端口A采用方式0工作。当乙机发送甲机接收时,两机采用端口B的8根数据线来传输数据,乙机一侧的8255端口B采用方式1工作,甲机一侧的8255端口B采用方式0工作。   在通讯中,接口电路不仅需要数据端口,还需要状态端口。端口A在方式1输出时,用PC7和PC6分别固定作为联络线OBF和ACK,此时乙机8255的A口是方式0输入工作,我们选用引脚PC4和PC3作为联络线。虽然两侧的8255都设置了C口的某些引脚作为联络线,但是有本质上的差别。甲机的A口工作在方式1,其联络线是固定的不可替换的,而乙机的A口工作在方式0,其联络线是不固定的可选择的。当乙机8255的端口B在方式1输出时,用PC2和PC1作为联络线OBF和ACK,此时甲机8255的B口是方式0输入工作,我们选用引脚PC4和PC2作为联络线。
  C口各联络信号的功能如下:
  OBF—输出缓冲器满信号,低电平有效。当信号有效时,表示CPU已把数据输出给A口,数据等待被取走。它由输出信号WR的上升沿置成有效,由ACK的有效信号恢复为高电平。
  ACK—响应信号,低电平有效。这是接收方的8255A给出的应答信号,通知发送方8255A端口的数据已经被接收。
  INTR—中断请求信号,高电平有效。当接收方接收数据后,发送方的8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据。当ACK为高,OBF为高,INTE为高(允许中断)时,使其有效,而写信号WR的下降沿使其复位。
  INTE—中断允许位,由PC6的置位/复位信号控制。
  4 程序设计
  4.1 程序设计思路
  在两台微机某一次通信的过程中,可以把一台微机视为发送方,而另一台微机视为接收方,在这次通信结束后,可以进行发送方与接收方的切换,使得刚才接收数据的微机可以发送数据,刚才发送数据的微机可以接收数据,实现双机的半双工通信。
  发送方基本工作过程:8255A的初始化并把相应的控制位置位,读取从键盘输入的数据;将读入的第一个数据经8255的A口发送给接收端;检测接收端是否已接收数据,若未接收则循环检测;若已接收则按前面的方式继续发送数据。当发送端输入切换收发状态的控制字符时,发送端发送这个字符后进入接收状态。当发送端发送ESC键时,双方一起退出运行状态。
  接收方基本工作過程:8255A的初始化并把相应的控制位置位;检测发送端是否有数据发送过来,若没有数据则循环检测,若有数据则向发送方发送已接收数据的信号,然后把相关的控制位置1,通过8255的A口读入数据并在显示器上显示出来;此时如果接收端接收到发送端发送的切换收发状态的控制字符,则进入发送状态。如果接收端接收到发送端的结束字符,则也相应地退出。
  4.2 初始化程序
  本次设计中8255片选地址为288H~28BH
  1)甲机初始化8255:A口方式1输出、B口方式0输入
  mov dx,28BH
  mov al,0AAH
  out dx,al
  2)乙机初始化8255:A口方式0输入、B口方式1输出
  mov dx,28Bh
  mov al,9CH
  out dx,al
  4.3 C口联络信号控制
  对于C口上作为联络线的引脚电平,必须在程序中按照时序予以准确的设置,对接收到的信号进行正确的分析,判断接收端与发送端的状态,在程序中安排正确的跳转。若对于C口引脚信号没有清楚的理解认识,是无法顺利完成双机的通讯。在本次设计中,这是非常重要的一点。
  下面以甲机为例说明:
  1)在开始发送前,对ACK信号(引脚PC6)置1:
  mov dx,28BH
  mov al,0dh
  out dx,al
  2)在开始接收前,对ACK信号(引脚PC5)置1:
  mov dx,28bh
  mov al,05h
  out dx,al
  3)检查接收端是否准备好:
  mov dx,28Ah
  in al,dx
  and al,40h ;检查对方发来的信息PC3→PC6是否为0
  jnz send ;若接收端准备好接收,则至转发送段
  4)检查是否有要接收的数据:
  mov dx,28Ah
  in al,dx
  and al,10h ;检查PC4
  jnz Lr ;若PC4=1重复检查
  (5)接收到数据后发送回答信号:
  mov dx,28Bh ;发送回答信号ACK
  mov al,00000100b ;PC5置0
  out dx,al
  nop
  nop
  mov al,00000101b ;PC5置1
  out dx,al
  此处使用nop是为了延时,使所产生的有效ACK信号(低电平)延续。
  4.4 发送与接收字符
  1)从键盘读取要发送的字符:
  mov ah,0bh ;本机是否有任意键按下
  int 21h
  cmp al,0
  je l ;若无键按下,则等待
  mov ah,01 ;若有按键,回显至屏幕
  int 21h
  mov bl,al ;将按键字符保存至bl
  send:mov dx,288h ;发送按键字符
  mov al,bl
  out dx,al
  2)从数据端口读取字符,并显示在屏幕上:
  mov dx,288h ;A口输入
其他文献
针对目前市场上老年人使用的拐杖结构简单、功能单一,无法实现实时监控、即使求救等功能,我们设计了一款以单片机89C51为主要控制,具有独立APP、"北斗"全球定位系统、SOS一键
摘要:监视器在安控系统领域以及航空装备领域应用十分广泛,特别是在航空装备领域具有十分重要的意义。行扫描电路作为监视器的重要组成部分,在监视器的图像显示过程中扮演着重要角色。基于行扫描电路在监视器图像显示过程中引起的图像故障,首先对行扫描电路的组成和作用进行了介绍,其次对行扫描电路引起的图像故障进行了研究。利用信号测量工具,在电路分析的基础上,采用对比分析的方法,对行扫描电路各相关组成部分逐层展开分
摘要:学生就业管理系统可以通过页面采集就業信息,可以对数据进行选择、初始化和转换,最终利用关联规则的A_pIiori算法进行数据挖掘,从而得到有价值的信息,為学生管理工作和教学方案的修订提供参考。  关键词:关联规则;数据挖掘;Apriori算法