关 闭

新闻中心

EEPW首页 > 安全与国防 > 设计应用 > 基于AT89C51的单线双机通信协议

基于AT89C51的单线双机通信协议

作者: 时间:2008-03-07 来源:网络 收藏
3,#0FFH

   A

  

  RETI

  T0W51 :

  ;CLR

  ;CLRTSIO

   P3,#00H

  T0W52 :

   A

  POP

  RETI

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

  INT_T0R5:

  JBRSF,T0R52

  JNB ,T0R51

  SETBRDATX.5

  POP A

  POP

  RETI

  T0R51 :

  CLR RDATX.5

  T0R52 :

  POP A

  POP PSW

  RETI

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

  INT_T0W6:

  JNB RSF,T0W62

  JNB SDATX.6,T0W61

  ;SETB

  ;SETB TSIO

   P3,#0FFH

  POP A

  POP PSW

  RETI

  T0W61 :

  ;CLRCTPIO

  ;CLRTSIO

   P3,#00H

  T0W62 :

  POP A

  POP PSW

  RETI

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

  INT_T0R6:

  JBRSF,T0R62

  JNB CTPIO,T0R61

  SETBRDATX.6

  POP A

  POP PSW

  RETI

  T0R61 :

  CLR RDATX.6

  T0R62 :

  POP A

  POP PSW

  RETI

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

  INT_T0W7:

  JNB RSF,T0W72

  JNB SDATX.7,T0W71

  ;SETB CTPIO

  ;SETB TSIO

  MOV P3,#0FFH

  POP A

  POP PSW

  RETI

  T0W71 :

  ;CLRCTPIO

  ;CLRTSIO

  MOV P3,#00H

  T0W72 :

  POP A

  POP PSW

  RETI

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

  INT_T0R7:

  JBRSF,T0R72

  JNB CTPIO,T0R71

  SETBRDATX.7

  POP A

  POP PSW

  RETI

  T0R71 :

  CLR RDATX.7

  T0R72 :

  POP A

  POP PSW

  RETI

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

  INT_T0WE: ;写结束位(写数据)

  JNB RSF,T0WE1

  ;CLRCTPIO

  ;CLRTSIO

  MOV P3,#00H

  T0WE1 :

  POP A

  POP PSW

  RETI

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

  INT_T0RE: ;读结束位(读数据)

  JBRSF,T0RE1

  JNB CTPIO,T0RE1

  JMP ERROR4

  T0RE1 :

  POP A

  POP PSW

  RETI

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

  INT_T0WAL:;写响应位(读数据)/终止结束位(写数据)

  JNB RSF,T0WAL1

  ;SETB CTPIO ;终止结束位(写数据)

  ;SETB TSIO

  MOV P3,#0FFH

  POP A

  POP PSW

  RETI

  T0WAL1:

  ;CLRCTPIO ;写响应位(读数据)

  ;CLRTSIO

  MOV P3,#00H

  POP A

  POP PSW

  RETI

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

  INT_T0RA: ;读响应位(写数据)写结束

  JNB RSF,T0RA2

  JNB CTPIO,T0RA1

  JMP ERROR5

  T0RA1 :

  CLR RSI ;设置收发结束标志

  ;CLRSDF ;设置数据已发送标志

  MOV SDATX,STATE

  ;MOVSDATX,#00H

  T0RA2 :

  POP A

  POP PSW

  RETI

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

  INT_T0WAH:;终止响应(读数据)读结束

  JNB RSF,T0WAH1

  JMP ERROR6

  T0WAH1:

  ;SETB CTPIO

  ;SETB TSIO

  MOV P3,#0FFH

  SETBRDF ;设置有新接收数据标志

  CLR RSI ;设置收发结束标志

  MOV A,RDATX ;处理数据

  MOV STATE,A

  CPL A

  MOV P0,A

  CLR RDF ;数据已处理,清标志

  POP A

  POP PSW

  RETI

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

  ERROR1:

  CLR RSI

  ;SETB CTPIO

  ;SETB TSIO

  MOV P3,#0FFH

  ;MOVP0,#0FEH

  POP A

  POP PSW

  RETI

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

  ERROR2:

  CLR RSI

  ;SETB CTPIO

  ;SETB TSIO

  MOV P3,#0FFH

  ;MOVP0,#0FCH

  POP A

  POP PSW

  RETI

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

  ERROR3:

  CLR RSI

  ;SETB CTPIO

  ;SETB TSIO

  MOV P3,#0FFH

  ;MOVP0,#0F8H

  POP A

  POP PSW

  RETI

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

  ERROR4:

  CLR RSI

  ;SETB CTPIO

  ;SETB TSIO

  MOV P3,#0FFH

  ;MOVP0,#0F0H

  POP A

  POP PSW

  RETI

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

  ERROR5:

  CLR RSI

  ;SETB CTPIO

  ;SETB TSIO

  MOV P3,#0FFH

  ;MOVP0,#0E0H

  POP A

  POP PSW

  RETI

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

  ERROR6:

  CLR RSI

  ;SETB CTPIO

  ;SETB TSIO

  MOV P3,#0FFH

  ;MOVP0,#0C0H

  POP A

  POP PSW

  RETI

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

  DLY2MS:

  MOV DLYD0,#02H

  DLY2MS1:

  MOV DLYD1,#0FFH

  DLY2MS2:

  DJNZDLYD1,DLY2MS2

  DJNZDLYD0,DLY2MS1

  RET

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

  2.从机源程序

  ;子机程序

  KBUF0 EQU 24H ;键值临时缓冲

  KBUF1 EQU 25H ;键值缓冲

  KCNTEQU 26H ;键盘重复计数

  DLYD0 EQU 27H ;延迟变量

  DLYD1 EQU 28H ;延迟变量

  DLYD2 EQU 29H ;延迟变量

  

  RDATX EQU 22H

  SDATX EQU 23H

  

  STATE EQU 2AH

  

  RSCNT EQU 29H

  

  CTPIO BIT 0B2H

  TSIOBIT 0B3H

  SDF BIT 00H ;有数据发送标志

  RDF BIT 01H ;有接收数据标志

  RSF BIT 02H ;数据收发选择位

  

  ORG 00H

  AJMPMAIN

  

  ORG 03H

  AJMPINT_X0

  

  ORG 0BH

  AJMPINT_T0

  

  ORG 100H

  MAIN:

  MOV SP,#50H

  MOV SDATX,#00H

  MOV RDATX,#00H

  MOV KBUF0,#00H

  MOV KBUF1,#00H

  MOV KCNT,#00H

  MOV RSCNT,#00H

  MOV 20H,#00H

  MOV TCON,#01H ;下降沿中断

  MOV P0,#00H

  MOV IE,#81H ;开0

  LOOPX:

  CALLKEYREAD ;读键盘

  CALLDLY2MS;延迟2ms

  JMP LOOP



评论


相关推荐

技术专区

关闭