(1)按原理图连接好电路,其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。
(2)编程: 从键盘输入一个字符,将其封装成为数据帧后发送出去,并进行差错检测及奇偶校验,再接收回来在屏幕上显示,实现自发自收。
### 微机原理与接口技术综合实验报告
#### 实验目的
本次实验旨在通过实际操作进一步理解串行通信的基本原理,掌握串行接口芯片8251的工作原理及其编程方法,并深入了解RS-232串行通信的数据格式及交换协议。
#### 设备与环境
- **实验设备**:计算机、实验台
- **实验环境**:本实验在计算机接口实验室进行,使用的硬件包括计算机和专门的实验台,以确保能够准确地完成电路连接和软件编程。
#### 实验内容详解
##### 电路连接
按照给定的原理图连接电路:
- **8254计数器**:用于产生8251的发送和接收时钟信号。这一步至关重要,因为定时信号决定了数据传输的同步性。
- **TXD和RXD连接**:TXD(发送数据线)和RXD(接收数据线)被连接在一起,以便实现自发自收的功能。
##### 编程实现
- **键盘输入字符**:程序会提示用户从键盘输入一个字符。这个字符将被封装成数据帧。
- **数据帧封装**:数据帧包括起始位、序列号、数据位、奇偶校验位以及结束位。这样的封装确保了数据传输过程中的完整性和可靠性。
- **差错检测与奇偶校验**:在数据帧中加入了奇偶校验位,用于检测传输过程中可能出现的错误。如果检测到错误,则会发送出错帧。
- **数据发送与接收**:封装好的数据帧被发送出去,随后程序等待接收到的数据帧。接收到的数据帧会被解析并与原始数据进行比较,以验证传输是否成功。
#### 数据帧格式
- **发送帧**:包括起始位、序列号、数据位、奇偶校验位和结束位。例如,发送的字符ASCII码为`30H`,校验位为`50H`。
- **确认帧**:用于确认接收到了正确的数据。它包括起始位、序列号和结束位。例如,确认帧中的序列号ASCII码为`60H`。
- **出错帧**:当检测到错误时发送,包括起始位、序列号和结束位。例如,出错帧中的序列号ASCII码为`70H`。
#### 实验程序分析
该实验采用汇编语言编写程序,具体实现包括:
- **8253计数器配置**:设置8253计数器0的工作模式,并送入初值`52`,用于产生定时脉冲信号。
- **8251初始化**:初始化8251串行通信接口芯片,配置其为1个停止位、8个数据位、波特率因子为16,并允许发送和接收。
- **程序流程**:
- 显示提示信息。
- 等待用户从键盘输入一个字符。
- 将字符封装成数据帧并发送。
- 接收数据帧,并进行差错检测。
- 如果正确则发送确认帧;如果有误,则发送出错帧。
- 重复以上步骤,直至用户按下ESC键结束程序。
#### 结论
通过对微机原理与接口技术的学习和实践,学生不仅能够深入理解串行通信的基本原理,还能熟练掌握8251等关键器件的工作机制及其编程方法。此外,通过设计自定义的数据帧格式和通信协议,能够更好地应对实际工程中可能出现的各种复杂情况,提高问题解决的能力。