?? 雙機通訊實驗(發送程序).txt
字號:
NAME T13F ;雙機通訊實驗(發送程序)
CSEG AT 0000H
LJMP START
CSEG AT 4100H
PORT EQU 0CFE8H
START: MOV DPTR,#PORT+1 ;8279命令字
MOV A,#0D1H ;清除
MOVX @DPTR,A
WAIT: MOVX A,@DPTR
JB ACC.7,WAIT ;等待清除完畢
MOV TMOD,#20H
MOV TH1,#0F2H
MOV TL1,#0F2H
SETB TR1
MOV SCON,#50H
MOV 87H,#80H
MOV 50H,#00H
MOV 51H,#00H
MOV 52H,#00H
MOV 53H,#00H
MOV 54H,#00H
MOV 55H,#00H
LOOP1: MOVX A,@DPTR
ANL A,#0FH
JZ LOOP1 ;有鍵按下?
MOV A,#0A0H ;顯示消隱命令
MOVX @DPTR,A
MOV DPTR,#PORT ;讀鍵值
MOVX A,@DPTR
ANL A,#3FH
MOV R7,A ;狀態保存
MOV 50H,51H
MOV 51H,52H
MOV 52H,53H
MOV 53H,54H
MOV 54H,55H
LOP: MOV A,R7
MOV DPTR,#TAB1
MOVC A,@A+DPTR ;查取數字鍵的字型碼
MOV 55H,A
mov 40h,a
SUBB A,#80H
JZ ERROR ;非數字鍵則跳轉
ACALL DISP
SJMP TXACK
DISP: MOV DPTR,#PORT+1
MOV A,#90H
MOVX @DPTR,A
MOV R6,#06H
MOV R1,#50H
MOV DPTR,#PORT
DL0: MOV A,@R1
MOVX @DPTR,A
INC R1
DJNZ R6,DL0
RET
TXACK: MOV A,#06H ;發呼叫信號"06"
MOV SBUF,A
WAIT1: JBC TI,RXYES ;等待發送完一個字節
SJMP WAIT1
RXYES: JBC RI,NEXT1 ;等待乙機回答
SJMP RXYES
NEXT1: MOV A,SBUF ;判斷乙機是否同意接收,不同意繼續呼叫
CJNE A,#00H,TXACK
MOV A,40H
MOV SBUF,A
WAIT2: JBC TI,TXNEWS
SJMP WAIT2
TXNEWS: JBC RI,IF0DDH
SJMP TXNEWS
IF0DDH: MOV A,SBUF
CJNE A,#0FH,TXACK ;判斷乙機是否接收正確,不正確繼續呼叫
MOV DPTR,#0CFE9H
LJMP LOOP1
ERROR: MOV 50H,#79H
MOV 51H,#31H
MOV 52H,#31H
MOV 53H,#5CH
MOV 54H,#31H
MOV 55H,#80H
LCALL DISP
DD: MOV DPTR,#PORT+1
MOVX A,@DPTR
ANL A,#0FH
JZ DD ;有鍵按下?
MOV A,#0A0H ;顯示消隱命令
MOVX @DPTR,A
MOV DPTR,#0CFE8H ;讀鍵值
MOVX A,@DPTR
ANL A,#3FH
MOV R7,A ;狀態保存
MOV 50H,#00H
MOV 51H,#00H
MOV 52H,#00H
MOV 53H,#00H
MOV 54H,#00H
LJMP LOP
TAB1: DB 3FH,06H,5BH,4FH,80H,80H ;鍵值字型碼表
DB 66H,6DH,7DH,07H,80H,80H
DB 7FH,6FH,77H,7CH,80H,80H
DB 39H,5EH,79H,71H,80H,80H
DB 80H,80H,80H,80H
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -