8251A的应用举例

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

豫ICP备19006514号 网站地图 免责声明:如果侵犯了你的权益,请发邮件至:419017772@qq.com,我们会及时删除侵权内容,谢谢合作!
error: Content is protected !!