立即咨詢
您當前的位置:職稱驛站 > 論文 > 科技論文 > 通信論文職稱驛站24小時論文發表咨詢熱線:400-680-0558

雙機并口雙工通信的設計與實現

職稱驛站所屬分類:通信論文發布時間:2019-06-06 10:00:18瀏覽:1

 并行數據傳輸是以計算機字長為單位的,適合微機與外部設備或微機與微機之間高速、近距離的通信。并行接口芯片8255A具有通用性強且使用靈活的特點,CPU可通過該芯片直接與外設相連接。該文從硬件設計與軟件設計兩方面進行了詳細的闡述,主要利用并行接口芯片8255A設計了兩臺微機之間的雙工通信接口電路,同時設計了雙機的通信程序,實現了雙機通過并口的雙工通信。

   并行數據傳輸是以計算機字長為單位的,適合微機與外部設備或微機與微機之間高速、近距離的通信。并行接口芯片8255A具有通用性強且使用靈活的特點,CPU可通過該芯片直接與外設相連接。該文從硬件設計與軟件設計兩方面進行了詳細的闡述,主要利用并行接口芯片8255A設計了兩臺微機之間的雙工通信接口電路,同時設計了雙機的通信程序,實現了雙機通過并口的雙工通信。

通信對抗

  《通信對抗》是由中國電子科技集團公司第三十六研究所、通信系統信息控制技術國家級重點實驗室聯合主辦的以通信電子戰為主,面向整個電子戰/信息戰領域的綜合性學術刊物,創刊于1980年。

  隨著時代的發展與科技的進步,微型計算機的使用日益普及,愈來愈多的人使用微機來工作或者學習。在我們的日常工作或學習之中,計算機設備間的信息交換是必不可缺的。計算機系統的信息交換方式有并行數據傳輸方式和串行數據傳輸方式這兩種。其中,并行數據傳輸通常是以計算機的字長(常見有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口輸入

  in al,dx

  mov dl,al

  mov ah,02h ;顯示1個字符

  int 21h

  4.5 收發狀態轉換

  當甲機為發送方,乙機為接收方,雙方需要進行收發的轉換時:

  1)甲機發送“!”字符,由發送變為接收:

  mov dx,288h ;發送按鍵字符

  mov al,bl

  out dx,al

  cmp al,21h ;字符是否是轉換方式字符

  jz receive ;若是則進入接收

  2)在轉換時一定要加延時,此處加入一個較大的延時來保證轉換成功;同時需要往A口寫入一個其他的字符碼,否則之后的轉換乙機會出現問題:

  receive:

  ddelay:mov cx,65535

  lopp: loop lopp

  mov dx,288h

  mov al,0

  out dx,al

  3)乙機收到控制字符,由接收變為發送:

  mov dx,288h ;A口輸入

  in al,dx

  cmp al,1bh ;若是ESC鍵?則退出

  jz over

  cmp al,21H ;是否轉發送

  jz ssee

  5 調試結果

  在完成軟硬件的設計后,開始進行調試工作。分別在兩臺微機上同時運行通信程序,開始時先設甲機為發送端,乙機為接收端。此時,甲機屏幕上顯示“ Please input char: ”,提示用戶鍵入信息;乙機屏幕上顯示:”Now receiving ,please wait... ”,提示正在等待接收信息。在甲機鍵盤上輸入字符,被鍵入的字符會同時顯示在乙機的屏幕上。若甲機發送完畢,則鍵入預先設置的狀態切換字符 ”!” ,甲乙兩機切換發送接收狀態。此時乙機屏幕上顯示:“ Now input char: ”,甲機屏幕上顯示:”Now receiving char... ”。在乙機鍵盤上輸入字符,字符可同時顯示在甲機的屏幕上。若向乙機輸入預先設置的切換狀態字符 ”@” ,則兩機再次切換收發狀態。按下ECS則退出程序,結束通訊。

  運行結果符合預期,通過簡單的人機交互,實現了雙機通信的功能,達到了滿意的效果。

  參考文獻:

  [1] 郭蘭英, 趙祥模. 微機原理與接口技術[M]. 2版. 北京:清華大學出版社, 2006.

  [2] 錢曉捷, 陳濤. 16/32位微機原理與接口技術[M]. 北京:機械工業出版社, 2005.

  [3] 陳益飛, 周鋒. 微機原理與接口技術[M]. 北京:國防工業出版社, 2013.

《雙機并口雙工通信的設計與實現》

本文由職稱驛站首發,一個權威專業的職稱論文發表網

文章名稱:雙機并口雙工通信的設計與實現

文章地址:http://www.agbxwg.tw/lunwen/keji/tongxin/38901.html

'); })(); 河南快3走势图表500期