<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 安全與國防 > 設(shè)計應(yīng)用 > 基于AT89C51的單線雙機通信協(xié)議

          基于AT89C51的單線雙機通信協(xié)議

          作者: 時間:2008-03-07 來源:網(wǎng)絡(luò) 收藏

            一、緒言

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

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

            二、設(shè)計概況

            1.整體時序:

            2.主機接收數(shù)據(jù)從機發(fā)送數(shù)據(jù)的時序:

            3.主機發(fā)送數(shù)據(jù)從機接收數(shù)據(jù)的時序:

            4.

            S :開始位

            A :響應(yīng)位

            E :結(jié)束位

            R :讀端口

            W :寫端口

            Dx:數(shù)據(jù)

            5.主從機同步原理:

            由圖可知,主從機的讀寫是互不沖突的,任意時刻只允許一個寫,但允許兩個都處于讀狀態(tài)。從整體上講,數(shù)據(jù)是按幀傳輸?shù)?,但從定時器中斷方面來說,數(shù)據(jù)是按位傳輸?shù)模驗橐淮味〞r器中斷只傳送一個位,而不是完整的一幀數(shù)據(jù)。在數(shù)據(jù)未開始傳輸前,從機IO口處于邊沿中斷接收狀態(tài),其定時器中斷是關(guān)閉的。主機永遠處于定時中斷狀態(tài)。當(dāng)主機發(fā)出開始位之后,若存在從機,則從機會發(fā)出一個低電平響應(yīng);否則表示通訊失敗,幾個時鐘周期之后,主機會接著發(fā)起下一次數(shù)據(jù)傳輸?shù)拈_始位。在通訊過程中,任意一個響應(yīng)位不成立均宣告通訊失敗,同時此次通訊結(jié)束。

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

            6.協(xié)議的穩(wěn)健性

            (1)速度問題:

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

           ?。?)可靠性問題:

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

           ?。?)效果檢測

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

            1.主機源程序

            ;主機程序

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

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

            KCNTEQU 26H ;鍵盤重復(fù)計數(shù)

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

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

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

            

            RSCNT EQU 2AH

            

            RSI BIT 00H ;收發(fā)開始標(biāo)志

            RSF BIT 01H ;收/發(fā)標(biāo)志

            RSF0BIT 02H ;收發(fā)標(biāo)志0

            RSF1BIT 03H ;收發(fā)標(biāo)志1

            ;SDFBIT 04H ;有數(shù)據(jù)發(fā)送標(biāo)志

            RDF BIT 05H ;有接收數(shù)據(jù)標(biāo)志

            

            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 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();