两台8086电脑通过两片8251进行串口通信 ,电脑A和电脑B的8251起始地址为均为 2B8H,使用异步通信,A向B发送数据。请 分别写出两片8
时间: 2024-10-13 11:03:06 浏览: 0
在两台8086计算机通过8251串行接口进行异步通信的情况下,每个8251作为UART(通用异步收发器)模块,需要配置基本的硬件设置和软件控制。
首先,对于电脑A(发送端):
1. **初始化8251**: 确保8251的寄存器设置正确,如波特率、数据位、停止位和奇偶校验等。比如设置为9600bps,8位数据,1位停止位,无校验,通常使用控制字(Ctrl Register)来配置这些参数。
- 对于8251A的数据端口地址通常是2B8H+0 (TXD) 和 2B8H+1 (RXD)。
- 对于8251的控制寄存器地址通常是2B8H。
```c
// A端初始化
Out(0x2B8, 0x81); // 设置模式1(8数据位,1停止位,无校验)
Out(0x2BA, (PortVal & ~0x7F) | 0x03); // 波特率为9600,数据位数为8
// 发送数据
for (int i = 0; i < strlen(data); i++) {
Out(0x2B8, data[i]); // 将数据写入TXD
}
```
对于电脑B(接收端):
2. **监听接收数据**: 同样地,B端需要配置好8251,监听从A传来的数据。当RXD有新数据时,会触发中断处理程序。
- 初始化8251并开启中断:
```c
Out(0x2B8, 0x81); // ...(继续配置同上)
In(0x2BB, 0x01); // 开启接收中断
```
- 当收到中断时,读取RXD的数据并处理:
```c
while (!In(0x2B8) & 0x80); // 检查是否接收到数据
char received_data = In(0x2B8); // 读取接收到的数据
// 执行相应的处理...
```