通过 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
|