异步串行通信接口实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机系统的通信实验
一.目的:了解计算机间的数据通信的基本技术;
了解RS─232C的结构及使用方法。RS----232C 9芯连接器插针定义如下:
二.使用设备:带有RS─232C通信接口的微型计算器及一根多芯电缆。
三.8250异步串行接口:
IBM PC系统可选的串行异步通信接口板上用的UART是一片INS8250,以它为核心,附加一些辅助电路,如I / O地址译码电路电平变换电路等,组成了RS232C接口,所以,对RS232C编程实际上是对8250的编程。8250的逻辑框图如下:
(一)8250的编程模型
8250异步串行接口是用于IBM PC串行通讯的接口芯片,8250内含比特率分频器,无须外接,所以用它构成接口非常简单。有两个串口,每个串口上有10个寄存器,IBM PC系统只为这10个寄存器分配了连续的7个端口地址,其端口地址分配如下:
分配的端口地址输入还是输出相应寄存器
3F8H/2F8H*输出发送数据寄存器
3F8H/2F8H*输入接收数据寄存器
3F8H/2F8H+输出波特率分频器L(数据传输速度)3F9H/2F9H+输出波特率分频器H
3F9H/2F9H*输出中断允许寄存器
3FAH/2FAH 输入中断标识寄存器
3FBH/2FBH 输出线控制寄存器
3FCH/2FCH 输出Modem控制寄存器
3FDH/2FDH 输入线狀态寄存器
3FEH/2FEH 输入Modem狀态寄存器
注:标有*寄存器地址是线控制存器7位为0时的寄存器地址,标有+寄存器地址是线控制存器7位为1时的寄存器地址。
从功能上分,这10个寄存器可分为两组:一组用于工作方式,通信参数的控置和设置。如数据格式有关参数的设置,是否允许中断方式的设置以及是否使用RTS,DTR等联络控制信号等,属于这一组的有5个寄存器:波特率分频器L(低位)和H(高位)
线控制寄存器,Moden控制寄存器,中断允许寄存器。这5个寄存器都是在8250初始化时用OUT指令向其中置入初值的。另一组寄存器用于实现通信传输,有5个寄存器,
它包括:输入和输出的缓冲寄存器——接收数据寄存器和发送保持寄存器,
记忆当前状态的寄存器——线状态寄存器,
Moden状态寄存器和中断标识寄存器。
(二)8250的初始化:
1.波特率的设置:(波特率分频器L和H)是用OUT指令向地址为3F8H和3F9H的两个波特率分频器置入合适的值实现的。
在初始化时,将线控寄存器最高为置1,然后写3F8H,3F9H便可对串行传送速率进行初始化。波特率分频器确定串行传送的速率(每秒传送的位数)如下:
波特率分频器H 分频器L
50 09H 00H
75 06H 00H
110 04H 17H
134.5 03H 59H
150 03H 00H
300 01H 80H
600 00H C0H
1200 00H 60H
1800 00H 40H
2000 00H 3AH
2400 00H 30H
3600 00H 20H
4800 00H 18H
7200 00H 10H
9600 00H 0CH
19200 00H 06H
2.对线控制寄存器初始化:(线控制寄存器: 3FBH/2FBH)
写线控制寄存器可以设置串行数据的格式和选择是否设置波特率,其各位定义如下:
D7 D6 D5 D4 D3 D2 D1 D0
数据定位
0 0 5位
0 1 6位
1 0 7位
1 1 8位
停止位
0 1位
1 1. 5位(D1 D0=00)
1 2位(D1 D0≠00)
校验
X 0 无校验位
0 1 形成奇校验位
1 1 形成偶校验位
是否为不变校验位0
1 否
0 校验位永为1(D4 D3=01)
0 校验位永为0(D4 D3=11)
0 永无校验位(D3=0)
是否置段点电平0
0 否
1 是,强迫在送数据线上输出0
1 置波特率
0 其它
3. 对MODEM控制寄存器初始化:(MODEM控制寄存器: 3FCH/2FCH)
MODEM控制寄存器各位意义如下:
0 0 0 D4 D3 D2 D1 D0
1 使DTR输出有效准备好
1 使RTS输出有效
1 使OUT1输出有效(没利用)0
1使OUT2输出有效(用于开放和禁止中断)0(这节课)
1使SOUT与SIN内部接通0
4.中断允许寄存器初始化:(中断允许寄存器:3F9H/2F9H)
8250具有形成和发出中断请求信号的功能(见逻辑框图的INTRPT),在IBM PC的RS232C接口板上,这个信号从插头上输出,在接口板插入系统总线插槽时,这个信号接点与系统总线的IRQ4相接,是否利用中断功能,可以由编程设定。对IBM PC而言,只有在置MODEN控制寄存器第3位OUT2为1时,才能允许下图所示的各种中断,中断允许寄存器各位意义如下:
0 0 0 0 D3 D2 D1 D0
1 允许接收数据寄存器满发中断
1允许发送数据寄存器空发中断
1 允许接收字符出错或收到断点发中断
1 允许MODEM状态改变发中断
(三)收发通信编程:
在8250初始化之后就可以通信了。
接收的基本操作是对接收数据寄存器(地址为3F8H)执行IN指令:MOV DX,3F8H
IN AL,DX 发送的基本操作是对发送保持寄存器(地址为3F8H)执行OUT指令:MOV DX,3F8H
OUT DX,AL 为了在发送和接收过程中不丢失信息,除上述基本操作外,还有许多问题需要解决。在通信技术术语中,解决串行通信过程中在接口丢失信息的问题,称为流量控制(Flow Control)。流量控制有两种方法:一种是完全用程序控制,另一种是程序借助接口硬件实现。
1.完全用程序实现流量控制,如果计算机的RS232C接口与一个输出设备相接,这时要求设备具有向计算机发XOFF和XON代码的功能,而计算机用程序与之相配合实现流量控制。同样,如果与计算机的RS232C接口相接的是输入设备,要求它具有对XOFF和XON代码有合适的响应能力:当计算机来不及处理接收的数据时,向输入设备发XOFF代码,输入设备的响应应该是暂停向计算机发字符代码;计算机希望输入设备恢复发来代码时,向输入设备发XON代码,输入设备的响应应该是恢复向计算机发送数据,有些外部设备与计算机之间是双向传送的,这要根据这种外设是否有发出和响应XOFF和XON的功能,来决定是否能用程序进行流量控制。
2.借助接口硬件实现流量控制。借助接口硬件实现流量控制,必须依靠接口中的状态信息和控制功能。这实际上是把Moden状态寄存器,线状态寄存器提供的信息利用起来,并通过Moden控制寄存器实施控制。
在用IN指令输入代码前,必须先测试状态信息的位0是否已经为1,在对接收数据寄存器执行IN指令时,将使线状态寄存器的位0置0,表示数据已取走。在发送数据时,要先测试位5是否为1。向发送保持寄存器发送新的代码后,使状态位5置0。
(a).线状态寄存器: 3FDH/2FDH
读线状态寄存器可以了解线路传输状态,其各位定义如下:
0 D6 D5 D4 D3 D2 D1 D0
1 接收数据寄存器满(接收准备好)
1 数据重迭错
1 奇偶出错
1 数据格式出错
1 检出断点
1 发送数据寄存器空(发送准备好)
1 发送移位寄存器空
发送数据寄存器空,表示CPU送给8250的数据已从发送数据寄存发送移位寄存器。此时8250又可以接收CPU的新数据,也就是发送准备好,写发送数据寄存器将使本位复位。
发送移位寄存器空,表示发送移位寄存器已将从发送数据寄存器收到的数据移位输出完备。此时又可从发送数据寄存器接收新数据。
接收数据寄存器满,表示已经接收完一个数据,放在接收数据寄存器中,此时CPU可已从8250读入数据,也就是接收准备好,读接收数据寄存器将使本位复位。
数据重迭错,表示接收数据寄存器满时,CPU尚未取走这个数据,又一个新接收到的串行数据又收完,