串行通信接口8251A的应用编程,通过TXD接收一帧异步通信的数据,接收的字符格式包括8位数据,一位奇校验位,二位停止位。若波特率系数K=64。若CPU采用查询方式从8251A接收数据。假定要接收的数据放在5000H开始的数据区,且要接收的数据字节数是180H。8251A数据端口地址为3F8H,控制/状态寄存器端口地址为3F9H。编程完成数据传送(要有初始化)。
时间: 2024-02-11 11:06:52 浏览: 83
以下是8251A串行通信接口的初始化代码,包括设置波特率为9600,数据格式为8位数据、一位奇校验位、二位停止位,以及启用接收中断:
```
MOV AL, 0Bh ; 选择波特率发生器
OUT 3F9H, AL
MOV AL, 0C2h ; 波特率系数 K = 64
OUT 3F8H, AL
MOV AL, 03h ; 选择数据格式,8位数据、一位奇校验位、二位停止位
OUT 3F9H, AL
MOV AL, 0Bh ; 选择控制命令,启用接收中断
OUT 3F8H, AL
```
以下是从8251A接收数据的代码,采用查询方式:
```
MOV CX, 180H ; 待接收的字节数
MOV DI, 5000H ; 数据存储的起始地址
RECEIVE_LOOP:
IN AL, 3F8H ; 读取状态寄存器
TEST AL, 1H ; 测试是否有数据可读
JZ RECEIVE_LOOP ; 若无数据可读,继续轮询
IN AL, 3F8H ; 读取数据
MOV [DI], AL ; 存储数据
INC DI ; 指向下一个存储位置
LOOP RECEIVE_LOOP ; 继续接收下一个字节
```
上述代码实现了从8251A串行通信接口接收一帧异步通信的数据,将其存储在5000H开始的数据区,共180H个字节。需要注意的是,接收数据时应该先轮询状态寄存器,检查是否有数据可读,再读取数据。
阅读全文