a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機多機并行通訊的一種方法

單片機多機并行通訊的一種方法

作者: 時間:2006-12-28 來源:網絡 收藏
1 簡介

  本文介紹的單片機多機并行通訊系統,使用作為主機,多片89C2051作為從機。(89C2051為20腳300MIL,帶有2K FLASH 的單片機,除了少了兩個并口外,具備MCS-51系列單片機所有功能。因為其體積小,功能強,必將在單片機應用領域內廣泛使用)。這種并行通訊方法適用于在多站點,多層次的檢測和控制系統中充當通信控制器的角色;也適合于用作單片機串行口擴充電路。

  

  

  圖1 芯片的邏輯圖及四種工作狀態 

  

      圖2 單片機并行通信原理框圖

  2 三態總線緩沖寄存器74HC646

  在單片機構成的多機并行通訊系統中,總線上的信息交換一般采用PIO(并行接口)和雙端口寄存器等方法,并輔助以總線仲裁電路。通常使用的并行接口芯片有8155,8255等。本文介紹一種簡單的并行接口電路,它既能取代8255等芯片,還能使電路結構更加簡單和緊湊。該電路由一片74HC74和一片74HC646(300MIL窄)構成。

  74HC646是三態總線緩沖寄存器,其實也是一個雙端口共享存儲器,只是共享存儲區很小的,僅有一個數據輸入寄存器與一個數據輸出寄存器,用它作為單字節通信數據的臨時中轉站,每傳送一個字節,主從機間握手一次,把數據取走后再繼續下一字節的通信。74HC646可以將兩條總線的數據分別鎖存,再由芯片內部總線進行數據交換。74HC646具有四種工作狀態,利用對這四種工作狀態的控制,可以實現多個單片機利用數據口進行數據交換,省下其余口線做其他的工作,如驅動LED,控制開關等。74HC646芯片的邏輯圖及四種工作狀態如圖1所示。

  3 單片機并行通信原理

  74HC646對數據進行的鎖存只為完成數據交換作了信息準備工作,單片機多機之間通訊的實現還必須具備通訊聯絡手段,以使單片機了解總線上的工作狀態,避免發生總線沖突。這里采用四線握手聯絡:兩條由發送方送接收方,通知接收方數據已經準備好(如圖2中的TFNE*,RFNE*);兩條由接收方送發送方,通知發送方數據已經收到(如圖2中的TFNF*,RFNF*)通信聯絡信號是由74HC74電路產生。單片機并行通信原理框圖如圖2所示。

  4 多機并行通信協議

  上面的并行通訊的單片機沒有封鎖電路以防止主從機向74HC646同時寫數或同時讀數,因此各單機在雙向傳輸時,必須根據狀態信息來控制自己的下一步操作,即進行聯絡,通過軟件、硬件通訊協議配合才能避免造成錯誤,保證對74HC646不會造成競爭沖突。因此,除了上面所講的聯絡電路之外,在編制軟件時,還必須遵從以下協議:

  . 主機向74HC646發送數據時,必須保證74HC646接收寄存器為空。

  . 主機與從機間的數據傳輸要通過74HC646,協議不允許雙方同時對74HC646進行操作,必須根據狀態信息來控制自己的操作。

  5 通訊協議的格式與執行過程

  5.1 信息格式

  在并行通訊的異步通信傳輸時,也同樣存在幀的類型及格式問題,可以采用串行通訊類似的幀格式:

  特征字

  長度

  數據1

  數據2

  ...

  校驗碼

  5.2 通訊協議的執行過程

  下面以檢測方式為例說明通訊協議的執行過程。

  5.2.1 主機向從機寫數過程:(主機寫, 從機讀)

  主機向74HC646寫數據,然后通知從機有數據來,從機從74HC646中讀取數據。

  ① 主機讀取狀態位,檢測TFNF*位是否為零。

  ②若TFNF*=1,主機暫時等待;若TFNF*=0,主機向74HC646寫數據,使TFNF*=1,同時使TFNE*=0。

  ③ 從機讀取狀態位,檢測TFNE*位是否為零。若TFNE*=1,從機暫時等待;若TFNE*=0,從機從74HC646讀數據,使TFNE*=1,同時使TFNF*=0。

  ④ 主機再次檢測狀態位TFNF*是否為零,若為“0”,說明從機已將數據從74HC646中取走,主機可發送下一數據。

  5.2.2 主機讀從機過程:(從機寫, 主機讀)

  從機向74HC646寫數據,然后通知主機有數據來,主機收到信號后,將數據從74HC646中取走。

  ① 從機讀取狀態位,檢測RFNF*位是否為零。

  ②若RFNF*=1,從機暫時等待;若RFNF*=0,從機向74HC646寫數據,使RFNF*=1,同時使RFNE*=0。

  ③ 主機讀取狀態位,檢測RFNE*位是否為零。若RFNE*=1,主機暫時等待;若RFNE*=0,主機從74HC646讀數據,使RFNE*=1,同時使RFNF*=0。

  ④ 從機再次檢測狀態位RFNF*是否為零,若為“0”,說明從機已將數據從74HC646中取走,主機可發送下一數據。

  6 流程圖(檢測方式)

  采用檢測方式的程序流程如圖3所示。  

  

  圖3 采用檢測方式的程序流程圖

  若使用中斷方式, 只需對執行過程和流程圖稍加修改即可。



關鍵詞: 89C51 封裝 E2PROM

評論


相關推薦

技術專區

關閉