找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2045|回复: 0
打印 上一主题 下一主题
收起左侧

8251A 通过标准串行接口 RS-232C 实现两台 微机之间的串行通信

[复制链接]
跳转到指定楼层
楼主
ID:233859 发表于 2017-9-18 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过 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


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表