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

關 閉

新聞中心

EEPW首頁 > 安全與國防 > 設計應用 > 基于AT89C51的單線雙機通信協議

基于AT89C51的單線雙機通信協議

作者: 時間:2008-03-07 來源:網絡 收藏

  一、緒言

  因工作需要,設計一單線雙向通訊協議。要求主機通過其所帶的鍵盤能控制主機和從機的顯示,從機也能通過所帶的鍵盤控制主機和從機的顯示,主機和從機鍵盤所起的控制作用完全一致,顯示也完全一致。

  另外,從機可以隨時脫離主機。當從機從脫機狀態連上主機時,要求從機能立即顯示主機的鍵盤信息,即顯示一致。

  二、設計概況

  1.整體時序:

  2.主機接收數據從機發送數據的時序:

  3.主機發送數據從機接收數據的時序:

  4.

  S :開始位

  A :響應位

  E :結束位

  R :讀端口

  W :寫端口

  Dx:數據

  5.主從機同步原理:

  由圖可知,主從機的讀寫是互不沖突的,任意時刻只允許一個寫,但允許兩個都處于讀狀態。從整體上講,數據是按幀傳輸的,但從定時器中斷方面來說,數據是按位傳輸的,因為一次定時器中斷只傳送一個位,而不是完整的一幀數據。在數據未開始傳輸前,從機IO口處于邊沿中斷接收狀態,其定時器中斷是關閉的。主機永遠處于定時中斷狀態。當主機發出開始位之后,若存在從機,則從機會發出一個低電平響應;否則表示通訊失敗,幾個時鐘周期之后,主機會接著發起下一次數據傳輸的開始位。在通訊過程中,任意一個響應位不成立均宣告通訊失敗,同時此次通訊結束。

  綜上所述,在數據傳輸開始時,靠“外部邊沿中斷”同步,在數據傳輸開始之后,靠“定時器中斷”同步。

  6.協議的穩健性

  (1)速度問題:

  以單放機、CD機等的現控為例,由于處理器的主要任務為信號處理,所以要求通訊占用的時間越少越好,而且通訊數據量也不大,該協議正是基于該類設計的。由于每次只發送一位數據,故占用的MCU時間非常少.

  (2)可靠性問題:

  在該協議中,存在兩個響應位、一個結束位,還有標志位,這些為數據的合法性的檢測提供了依據。另外,由于主從通訊只需傳輸單放機、CD機等的“按鍵”或“工作狀態”數據,故數據量根本用不著8位,多余的位可用于校驗,例如采用奇偶校驗、漢明碼等。

  (3)效果檢測

  通過由兩塊AT89C51組成的試驗,該協議工作完全正常,并具備即插即用功能,即在主機工作時,從機可以隨時拔下插上而不會影響主從機工作狀態及其顯示。該協議已于國內某知名企業的單放機的大批量生產中采用。

  1.主機源程序

  ;主機程序

  KBUF0 EQU 24H ;鍵值臨時緩沖

  KBUF1 EQU 25H ;鍵值緩沖

  KCNTEQU 26H ;鍵盤重復計數

  DLYD0 EQU 27H ;延遲變量

  DLYD1 EQU 28H ;延遲變量

  DLYD2 EQU 29H ;延遲變量

  

  RSCNT EQU 2AH

  

  RSI BIT 00H ;收發開始標志

  RSF BIT 01H ;收/發標志

  RSF0BIT 02H ;收發標志0

  RSF1BIT 03H ;收發標志1

  ;SDFBIT 04H ;有數據發送標志

  RDF BIT 05H ;有接收數據標志

  

  STATE EQU 2BH

  SDATX EQU 22H

  RDATX EQU 23H

  

  

   BIT 0B2H

  TSIOBIT 0B3H

  

  ORG 00H

  AJMPMAIN

  

  ORG 0BH

  AJMPINT_T0

  

  ORG 100H

  MAIN:

   SP,#50H

   KBUF0,#00H

   KBUF1,#00H

  MOV KCNT,#00H

  MOV STATE,#00H

  MOV SDATX,#00H

  MOV RDATX,#00H

  MOV RSCNT,#00H

  MOV 20H,#00H

  MOV P0,#00H

  CLR RSF

  MOV TH0,#00H

  MOV TL0,#00H

  MOV TMOD,#02H ;工作模式為定時方式2

  MOV TCON,#10H ;允許定時器0工作

  MOV IE,#82H

  LOOPX:

  CALLKEYREAD ;讀鍵盤

  CALLDLY2MS;延遲2ms

  JMP LOOPX

  ;按鍵功能入口

  FUNCTION:

  MOV A,KBUF1

  CJNEA,#07FH,FUN1;+1

  ;MOVA,STATE

  ;ADDA,#01H

  MOV A,#01H

  MOV STATE,A

  CPL A

  MOV P0,A

  ;SETB SDF

  JMP LOOPX

  FUN1:

  CJNEA,#0F7H,FUN2;+2

  ;MOVA,STATE

  ;ADDA,#02H

  MOV A,#02H

  MOV STATE,A

  CPL A

  MOV P0,A

  ;SETB SDF

  JMP LOOPX

  FUN2:

  CJNEA,#0BFH,FUN3;+4

  ;MOVA,STATE

  ;ADDA,#04H

  MOV A,#03H

  MOV STATE,A

  CPL A

  MOV P0,A

  ;SETB SDF

  JMP LOOPX

  FUN3:

  CJNEA,#0FBH,FUN4;+8

  ;MOVA,STATE

  ;ADDA,#08H

  MOV A,#04H

  MOV STATE,A

  CPL A

  MOV P0,A

  ;SETB SDF

  JMP LOOPX

  FUN4:

  CJNEA,#0DFH,FUN5;+16

  ;MOVA,STATE

  ;ADDA,#10H

  MOV A,#05H

  MOV STATE,A

  CPL A

  MOV P0,A

  ;SETB SDF

  JMP LOOPX

  FUN5:

  CJNEA,#0FDH,FUN6;+32

  MOV A,STATE

  ;ADDA,#20H

  XRL A,#08H

  MOV STATE,A

  CPL A

  MOV P0,A

  ;SETB SDF

  JMP LOOPX

  FUN6:

  CJNEA,#0EFH,FUN7;+64

  MOV A,STATE

  ADD A,#40H

  MOV STATE,A

  CPL A

  MOV P0,A

  ;SETB SDF

  JMP LOOPX

  FUN7:

  CJNEA,#0FEH,FUN8;+128

  MOV A,STATE

  ADD A,#80H

  MOV STATE,A

  CPL A

  MOV P0,A

  ;SETB SDF

  JMP LOOPX

  FUN8:

  JMP LOOPX

  ;==================================================================

  KEYREAD:

  CLR P2.7

  SETBP2.6

  MOV A,P2

  ANL A,#0FH

  MOV KBUF0,A

  SETBP2.7

  CLR P2.6

  MOV A,P2

  ANL A,#0FH

  SWAPA

  ORL A,KBUF0

  MOV KBUF0,A

  CJNEA,KBUF1,KEYRD4

  MOV A,KCNT

  CJNEA,#03H,KEYRD1

  RET

  KEYRD1:

  INC A

  INC KCNT

  CJNEA,#03H,KEYRD5

  MOV A,KBUF1

  CJNEA,#0FFH,KEYRD2

  RET

  KEYRD2:

   A

   A

  ;MOVP0,A

  KEYRD3:

  JMP FUNCTION

  KEYRD4:

  MOV KBUF1,A


上一頁 1 2 3 4 5 6 下一頁

評論


相關推薦

技術專區

關閉