8251A的应用举例
利用8251A实现相距较近(不超过15m)的两台微机相互通信,其硬件连接如图6.35所示。由于是近距离通信,因此不需使用MODEM,两台微机直接通过RS-232C电缆相连即可,且通信双方均作为DTE(数据终端设备):由于采用EIARS-232C接口标准,所以需要EIA/TTL电平转换电路;另外,通信时均认为对方已准备就绪,因此可不使用DTR,DSR,RTS和CTS联络信号,仅使8251A的CTS接地即可。
甲、乙两机可进行半双工或全双工通信。CPU与接口之间可按查询方式或中断方式进行数据传送。本例采用半双工通信,查询方式,异步传送。下面给出发送端与接收端的初始化及控制程序。
发送端初始化及控制程序如下所示:
START:MOV DX,8251A控制端口号
MOV AL,40H
OUT DX,AL:复位
MOV AL,7AH;方式选择字,异步方式,7位数据,1位停止位
OUT DX,AL:偶校验,波特率系数为16
MOV AL,11H:操作命令字,发送器允许,错误标志复位
OUT DX,AL
MOV SL,发送数据块首地址
MOV CX,发送数据块字节数
NEXT:MOV DX,8251A控制端口号
IN AL,DX;读状态字
TEST AL,01H;查询状态位TxRDY是否为“1”
JZ NEXT:发送未准备好,则继续查询
MOV DX,8251A;数据端口号
MOV AL,[SI]:发送准备好,则从发送区取一字节数据发送
OUT DX,AL
INC SI:修改地址指针
LOOP NEXT:未发送完,继续
HLT
接收端初始化及控制程序如下所示:
BEGIN: MOV DX,8251A控制端口号
MOV AL,40H:
OUT DX,AL:复位
MOV AL,7AH;方式选择字
OUT DX,AL
MOV AL,14H;操作命令字
OUT DX,AL
MOV DI,接收数据块首地址
MOV CX,接收数据块字节数
L1:MOV DX,8251A控制端口号
IN AL,DX:读状态字。
TEST AL,02H;查状态位RxRDY是否为“I”
JZ LI:接收未准备好,则继续查询
TEST AL,08H:检测是否有奇偶校验错
JZ ERR;若有,则转出错处理
MOV DX,8251A数据端口号
IN AL,DX;接收准备好,则接收一字节
MOV [DI],AL;存入接收数据区
INC DI;修改地址指针
LOOP Ll;未接收完,继续
HLT