關 閉

        新聞中心

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

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

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

          

          ;按鍵功能入口

          FUNCTION:

           A,KBUF1

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

          ;A,STATE

          ;ADDA,#01H

           A,#01H

          MOV STATE,A

          MOV SDATX,A

          SETBSDF

          CPL A

          MOV P0,A

          RET

          FUN1:

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

          ;MOVA,STATE

          ;ADDA,#02H

          MOV A,#02H

          MOV STATE,A

          MOV SDATX,A

          SETBSDF

          CPL A

          MOV P0,A

          RET

          FUN2:

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

          ;MOVA,STATE

          ;ADDA,#04H

          MOV A,#03H

          MOV STATE,A

          MOV SDATX,A

          SETBSDF

          CPL A

          MOV P0,A

          RET

          FUN3:

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

          ;MOVA,STATE

          ;ADDA,#08H

          MOV A,#04H

          MOV STATE,A

          MOV SDATX,A

          SETBSDF

          CPL A

          MOV P0,A

          RET

          FUN4:

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

          ;MOVA,STATE

          ;ADDA,#10H

          MOV A,#05H

          MOV STATE,A

          MOV SDATX,A

          SETBSDF

          CPL A

          MOV P0,A

          RET

          FUN5:

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

          MOV A,STATE

          ;ADDA,#20H

          XRL A,#08H

          MOV STATE,A

          MOV SDATX,A

          SETBSDF

          CPL A

          MOV P0,A

          RET

          FUN6:

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

          MOV A,STATE

          ADD A,#40H

          MOV STATE,A

          MOV SDATX,A

          SETBSDF

          CPL A

          MOV P0,A

          RET

          FUN7:

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

          MOV A,STATE

          ADD A,#80H

          MOV STATE,A

          MOV SDATX,A

          SETBSDF

          CPL A

          MOV P0,A

          RET

          FUN8:

          RET

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

          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,KEYRD3

          MOV A,KCNT

          CJNEA,#03H,KEYRD1

          RET

          KEYRD1:

          INC A

          INC KCNT

          CJNEA,#03H,KEYRD4

          MOV A,KBUF1

          CJNEA,#0FFH,KEYRD2

          RET

          KEYRD2:

          CALLFUNCTION

          RET

          KEYRD3:

          MOV KBUF1,A

          MOV KCNT,#00H

          KEYRD4:

          RET

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

          INT_X0:

          MOV RSCNT,#00H

          MOV TH0,#00H

          MOV TL0,#00H

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

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

          MOV IE,#82H ;允許定時器0中斷

          RETI

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

          INT_T0:

          PUSH

          PUSHA

          MOV DPTR,#T0_ENTRY

          MOV A,RSCNT

          INC RSCNT

          RLA

          JMP @A+DPTR

          T0_ENTRY:

          AJMPINT_T0N0;

          AJMPINT_T010;響應

          AJMPINT_T0N0

          AJMPINT_T020;標志0

          AJMPINT_T0N0

          AJMPINT_T030;標志1

          AJMPINT_T0N0

          AJMPINT_T0W0

          AJMPINT_T0R0

          AJMPINT_T0W1

          AJMPINT_T0R1

          AJMPINT_T0W2

          AJMPINT_T0R2

          AJMPINT_T0W3

          AJMPINT_T0R3

          AJMPINT_T0W4

          AJMPINT_T0R4

          AJMPINT_T0W5

          AJMPINT_T0R5

          AJMPINT_T0W6

          AJMPINT_T0R6

          AJMPINT_T0W7

          AJMPINT_T0R7

          ;AJMP INT_T0W8

          ;AJMP INT_T0R8

          ;AJMP INT_T0W9

          ;AJMP INT_T0R9

          AJMPINT_T0WE;寫結束位(寫數據)

          AJMPINT_T0RE;讀結束位(讀數據)

          AJMPINT_T0WAL ;寫響應位(讀數據)/終止結束位(寫數據)

          AJMPINT_T0RA;讀響應位(寫數據)寫結束

          AJMPINT_T0WAH ;終止響應位(讀數據)讀結束

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

          INT_T0N0: ;

           A

          

          RETI

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

          INT_T010: ;響應

          ;CLR

          ;CLRTSIO

          MOV P3,#00H

           A

          POP

          RETI

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

          INT_T020: ;標志0

          JBSDF,INT_T021

          CLR RSF ;無數據發送,設置讀標識

          ;SETB

          ;SETB TSIO

          MOV P3,#0FFH

          POP A

          POP PSW

          RETI

          INT_T021:

          SETBRSF ;有數據發送,設置寫標志

          ;CLR

          ;CLRTSIO

          MOV P3,#00H

          POP A

          POP PSW

          RETI

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

          INT_T030: ;標志1

          JBRSF,INT_031

          ;CLRCTPIO

          ;CLRTSIO

          MOV P3,#00H

          POP A

          POP PSW

          RETI

          INT_031 :

          ;SETB CTPIO

          ;SETB TSIO

          MOV P3,#0FFH

          POP A

          POP PSW

          RETI

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

          INT_T0W0:

          JNB RSF,T0W01

          JNB SDATX.0,T0W02 ;寫第一位

          T0W01 :

          ;SETB CTPIO

          ;SETB TSIO

          MOV P3,#0FFH

          POP A

          POP PSW

          RETI

          T0W02 :

          ;CLRCTPIO

          ;CLRTSIO

          MOV P3,#00H

          POP A

          POP PSW

          RETI

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

          INT_T0R0:

          JBRSF,T0R02 ;讀第一位

          JNB CTPIO,T0R01

          SETBRDATX.0

          POP A

          POP PSW

          RETI

          T0R01 :

          CLR RDATX.0

          T0R02 :

          POP A

          POP PSW

          RETI

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

          INT_T0W1:

          JNB RSF,T0W12

          JNB SDATX.1,T0W11

          ;SETB CTPIO

          ;SETB TSIO

          MOV P3,#0FFH

          POP A

          POP PSW

          RETI

          T0W11 :

          ;CLRCTPIO

          ;CLRTSIO

          MOV P3,#00H

          T0W12 :

          POP A

          POP PSW

          RETI

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

          INT_T0R1:

          JBRSF,T0R12

          JNB CTPIO,T0R11

          SETBRDATX.1

          POP A

          POP PSW

          RETI

          T0R11 :

          CLR RDATX.1

          T0R12 :

          POP A

          POP PSW

          RETI

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 个旧市| 昭通市| 昌邑市| 绥中县| 连云港市| 新邵县| 进贤县| 拉萨市| 新平| 新龙县| 香港| 铜陵市| 墨脱县| 灵宝市| 南汇区| 双桥区| 垦利县| 万全县| 荃湾区| 榕江县| 宝清县| 建宁县| 固原市| 苍梧县| 临城县| 县级市| 会昌县| 日喀则市| 台北县| 乌海市| 上犹县| 习水县| 沁源县| 芮城县| 嵊泗县| 芜湖县| 酉阳| 东乌珠穆沁旗| 宜章县| 平度市| 宁城县|