1. 项目背景与核心需求
在嵌入式系统和微机原理的教学与实验中,8086微处理器作为经典架构始终占据重要地位。双机通信实验不仅能帮助学生理解串行通信的基本原理,更是掌握中断控制、端口编程等核心技术的绝佳实践场景。本项目通过Proteus仿真环境,实现了两台8086微机之间的数据互发功能,完整模拟了从硬件连接到软件协议的全过程。
传统教学中,学生往往只能通过理论图示理解通信过程,而本设计的价值在于:
- 可视化呈现数据传输的完整时序
- 可灵活修改波特率等关键参数观察通信效果
- 无需物理设备即可验证自定义通信协议
- 支持单步调试观察寄存器状态变化
2. 硬件架构设计
2.1 核心器件选型
在Proteus中搭建系统时,关键器件包括:
- 8086 CPU:工作频率设置为5MHz,采用最小模式配置
- 8251A USART:作为通信控制器,连接在8086的地址总线低8位
- MAX232:完成TTL与RS232电平转换(仿真中可省略物理器件)
- 虚拟终端:用于显示收发数据内容
- 示波器:监测数据传输波形
注意:Proteus中的COMPIM组件可直接模拟串口通信,避免电平转换电路的复杂性,特别适合教学演示。
2.2 地址译码电路设计
为8251A分配端口地址时,采用74LS138译码器实现:
- A0接8251的C/D#引脚,区分控制/数据端口
- 地址范围设为0x40-0x41(可自由配置)
- 片选信号由地址线A5-A7经译码产生
典型连接方式:
code复制8086地址线A0 → 8251A C/D#
8086地址线A1-A4 → 未使用
8086地址线A5-A7 → 74LS138输入
74LS138输出Y0 → 8251A CS#
3. 软件协议实现
3.1 初始化流程详解
8251A的初始化需要严格遵循以下步骤:
- 复位操作:向控制端口连续写入3个0x00
- 模式字设置:8位数据/无校验/1停止位/波特率因子16
assembly复制MOV DX, 40h ; 控制端口地址 MOV AL, 01001110b ; 模式字 OUT DX, AL - 命令字设置:允许发送/接收、错误标志复位
assembly复制MOV AL, 00010101b ; 命令字 OUT DX, AL
3.2 中断服务程序设计
采用中断方式处理通信时需配置:
- 8259A中断控制器(IRQ4接8251A的RxRDY)
- 中断向量表设置
- 状态查询与错误处理
典型接收中断服务程序:
assembly复制RECV_ISR:
PUSH AX
PUSH DX
MOV DX, 40h
IN AL, DX ; 读取状态字
TEST AL, 02h ; 检查RxRDY
JZ EXIT_ISR
MOV DX, 41h
IN AL, DX ; 读取数据
MOV [BUFFER], AL
EXIT_ISR:
POP DX
POP AX
IRET
4. Proteus仿真技巧
4.1 参数调试要点
-
波特率匹配:
- 双方8251A的波特率因子必须相同
- 虚拟终端属性需设置对应波特率
- 典型教学使用9600bps
-
时序观测:
- 添加逻辑分析仪捕捉TXD/RXD信号
- 示波器观察起始位/停止位时序
- 使用调试模式单步执行程序
4.2 常见故障排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 数据乱码 | 波特率不匹配 | 检查双方初始化参数 |
| 接收不到数据 | 中断未正确配置 | 验证8259A初始化 |
| 发送超时 | 8251A未就绪 | 添加状态查询延时 |
| 数据丢失 | 缓冲区溢出 | 优化中断响应速度 |
5. 教学扩展实践
基于该基础框架,可开展以下进阶实验:
- 自定义协议设计:在数据包中添加帧头、校验和等字段
- 流量控制实现:通过XON/XOFF协议管理数据传输
- 多机通信实验:扩展为RS485总线网络
- 性能优化:比较查询与中断方式的CPU利用率
一个实用的数据包封装示例:
assembly复制; 数据包结构
HEADER DB 0AAh, 55h ; 同步头
LENGTH DB 08h ; 数据长度
DATA DB '8086COM' ; 有效载荷
CHECKSUM DB ? ; 校验和
在Proteus中调试时,建议采用以下工作流程:
- 先单独测试每台机器的自发自收
- 使用环回模式验证硬件连接
- 逐步增加通信距离(仿真中修改传输延迟参数)
- 最后进行全双工双向通信测试
通过这个项目,学生不仅能掌握8086汇编编程和串口通信技术,更能深入理解工业标准通信接口的实现原理。实际教学中,可要求学生自行设计通信协议,实现诸如文件传输、远程控制等扩展功能,从而全面提升嵌入式系统开发能力。
