8251a有几个端口地址_对8251a进行初始化及流程

电子说

1.3w人已加入

描述

  8251a内部结构框图

  8251A是一种可编程的通用同步/异步接收发送器,通常作为串行通信接口使用,被广泛应用Intel80X86为CPU的微型计算机中。

发送器

  8251a有几个端口地址

  8251a有两个连续的端口地址,数据输入端口和数据输出端口合用同一个偶地址,而状态端口和控制端口合用同一个奇地址。

  8251A初始化编程流程及程序

发送器

  例:8251A工作于异步方式,方式选择控制字为11111011B,工作命令控制字为00010001B。其初始化程序为:

  …

  MOV AL,0FBH ;8251A方式选择字

  OUT CONTR,AL

  MOV AL,11H ;8251A操作命令字

  OUT CONTR,AL

  …

  8251A的应用举例

  例:微机系统中两台微机之间进行双机串行通信的硬件连接和软件编程。

  (1)要求

  在甲乙两台微机之间进行串行通信,甲机发送,乙机接收。要求把甲机上开发的应用程序(其长度为2DH)传送到乙机中去。双方采用起止式异步方式,通信的数据格式为,字符长度为8位,2位停止位,波特率因子为64,无校验,波特率为4800。 CPU与8251A之间用查询方式交换数据,8251A的端口地址分配是:309H为命令/状态口,308H为 数据口。

  (2)分析

  由于是近距离传输,因此可以不设 MODEM,两台微机之间直接通过RS-232标准接口连接即可。同时是采用查询 I/O方式,故收/发程序中只需检查发/收准备好的状态是否置位,即可收发 l个字节。

  (3)设计

  ①硬件连接

  根据以上分析,把两台微机都当作 DTE(数据终端设备),采用最简单的发送线TxD、接收线 RxD和 地线GND三 根线连接就能进行通信。采用8251A作为接口的主芯片再配置少量附加电路,如波特率发生器、 RS—232C 与TTL电平转换电路、地址译码电路等就可构成一个串行通信接口。

发送器

  ②软件编程

  由题意可知,接收和发送程序应分别编写,每个程序段中包括8251A初始化、状态查询和输入/输出几部分。 对接收/发送方的8251A初始化时,首先要确定其方式选择控制字和工作命令控制字。根据题中的要求可有:

  发送方的方式选择控制字为11001111B=CFH,工作命令控制字为00111110B=37H

  接收方的方式选择控制字为11001111B=CFH,工作命令控制字为00010100B=14H

  发送端的发送程序(略去 STACK和 DATA段)

  CSEG SEGMENT

  ASSUME CS:CSEG

  TRA PROC FAR

  START: MOV DX,309H ;控制口

  MOV AL.00H ;空操作

  OUT DX,AL

  MOV AL,40H ;内部复位

  OUT DX,AL

  NOP

  MOV AL,0CFH ;方式字(异步,2位停止位,字符长度为8位,无校验,波特率因子为64)

  OUT DX, AL

  MOV AL,37H ;命令字(RTS、ER、RxE、DTR和 TxEN均置 1)

  OUT DX, AL

  MOV CX,2DH ;传送字节数

  MOV SI,300H ;发送区首址

  L1: MOV DX,309H ;状态口

  IN AL, DX ;查状态位 D。(TxRDY)=1?

  TEST AL,38H ;查错误

  JNZ ERR ;转出错处理

  AND AL,01H

  JZ L1 ;发送未准备好,则等待

  MOV DX,308H ;数据口

  MOV AL,[SI] ;发送准备好,则从发送区取1字节发送

  OUT DX, AL

  INC SI ;修改内存地址

  DEC CX ;字节数减 1

  JNZ L1 ; 未发送完,继续

  ERR: (略)

  MOV AX,4C00H ;已送完,回 DOS

  INT 21H

  TRA ENDP

  CSEG ENDS

  END START

  接收方接收程序(略去 STACK和 DATA段)

  SCEG SEGMENT

  ASSUME CS:REC

  REC PROC FAR

  BEGIN: MOV DX,309H ;控制口

  MOV AL,0AAH ;空操作

  OUT DX, AL

  MOV AL,50H ;内部复位

  OUT DX, AL

  NOP MOV AL,0CFH ;方式字

  OUT DX, AL

  MOV AL,14H ;命令字(ER、RxE置1)

  OUT DX, AL

  MOV CX,2DH ;传送字节数

  MOV DI,400H ;接收区首址

  L2: MOV DX,309H ;状态口

  IN AL, DX ;查状态位 D2(RxRDY)=17

  TEST AL,38H ;查错误

  JNZ ERR ;转出错处理 .

  AND AL, 02H

  JZ L2 ;接收未准备好,则等待

  MOV DX,308H ;数据口

  IN AL, DX ;接收准备好,则接收1字节

  MOV [DI], AL ;并存入接收区

  INC DI ;修改内存

  LOOP L2 ;未接收完,继续

  ERR: (略)

  MOV AX,4C00H ;已接收完,程序结束,退出

  INT 21H ;返回 DOS

  REC ENDP

  CSEG ENDS

  END BEGIN


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分