通過 8251A 實現相距較遠的兩臺微型計算機相互通信的系統連接簡化框圖如下。
利用兩片 8251A 通過標準串行接口 RS-232C 實現兩臺 微機之間的串行通信,可采用異步工作方式。
程序: D8251 EQU 460H ;2號機改為464H Z8251 EQU 462H ;2號機改為466H DATA SEGMENT MESS DB '按下!后返回DOS.',0DH,0AH,'$' DATA ENDS STACK SEGMENT STA DW 32DUP(?) TOP DW ? STACK ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX NOP ;INIT 8251 START LEA DX,MESS MOV AH,09H INT 21H MOV CX,100 LOOP $ MOV DX,Z8251 ;送00 MOV AL,00H OUT DX,AL MOV CX,100 LOOP $ MOV DX,Z8251 ;送00 MOV AL,00H OUT DX,AL MOV CX,100 LOOP $ MOV DX,Z8251 ;送00 MOV AL,00H OUT DX,AL MOV CX,100 LOOP $ MOV DX,Z8251 ;初始化8251 MOV AL,40H OUT DX,AL MOV CX,100 LOOP $ MOV AL,0CEH ;設置為8個數據位,兩個停止位波特率因子為16 OUT DX,AL ;無奇偶校驗位 MOV CX,100 LOOP $ MOV AL,25H ;設為請求發送,允許發送,允許接收狀態 OUT DX,AL MOV CX,100 LOOP $ NOP ;INIT 8251 END REC: MOV DX,Z8251 MOV AH,02H WAIT9: IN AL,DX ;有數據送到嗎? AND AL,AH JZ SEND ;沒有數據送到則跳轉至發送 MOV DX,D8251 ;有數據送到則從數據緩沖區讀入 IN AL,DX MOV DL,AL MOV AH,02H ;顯示在屏幕上 INT 21H CMP AL,'!' JE ED ;接收到結束符則返回DOS JMP REC ;不是結束符則繼續接收 ED: MOV AX,4C00H INT 21H SEND: MOV CX,10 LOOP $ MOV DX,Z8251 MOV AH,01H WAIT8: IN AL,DX AND AL,AH JZ WAIT8 ;發送緩沖器不空則等待 MOV DL,0FFH MOV AH,06H INT 21H JZ REC ;無鍵按下則跳回"接收"處 MOV DX,D8251 ;有鍵按下則發送相應字符 OUT DX,AL CMP AL,'!' ;是結束字符則返回DOS JE ED1 JMP REC ;不是結束字符則跳回"接收"處 ED1: MOV AX,4C00H INT 21H MAIN ENDP CODE ENDS END START
|