当前位置:文档之家› 异步串行通信接口实验

异步串行通信接口实验

计算机系统的通信实验一.目的:了解计算机间的数据通信的基本技术;了解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+输出波特率分频器H3F9H/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 分频器L50 09H 00H75 06H 00H110 04H 17H134.5 03H 59H150 03H 00H300 01H 80H600 00H C0H1200 00H 60H1800 00H 40H2000 00H 3AH2400 00H 30H3600 00H 20H4800 00H 18H7200 00H 10H9600 00H 0CH19200 00H 06H2.对线控制寄存器初始化:(线控制寄存器: 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 形成偶校验位是否为不变校验位01 否0 校验位永为1(D4 D3=01)0 校验位永为0(D4 D3=11)0 永无校验位(D3=0)是否置段点电平00 否1 是,强迫在送数据线上输出01 置波特率0 其它3. 对MODEM控制寄存器初始化:(MODEM控制寄存器: 3FCH/2FCH)MODEM控制寄存器各位意义如下:0 0 0 D4 D3 D2 D1 D01 使DTR输出有效准备好1 使RTS输出有效1 使OUT1输出有效(没利用)01使OUT2输出有效(用于开放和禁止中断)0(这节课)1使SOUT与SIN内部接通04.中断允许寄存器初始化:(中断允许寄存器:3F9H/2F9H)8250具有形成和发出中断请求信号的功能(见逻辑框图的INTRPT),在IBM PC的RS232C接口板上,这个信号从插头上输出,在接口板插入系统总线插槽时,这个信号接点与系统总线的IRQ4相接,是否利用中断功能,可以由编程设定。

对IBM PC而言,只有在置MODEN控制寄存器第3位OUT2为1时,才能允许下图所示的各种中断,中断允许寄存器各位意义如下:0 0 0 0 D3 D2 D1 D01 允许接收数据寄存器满发中断1允许发送数据寄存器空发中断1 允许接收字符出错或收到断点发中断1 允许MODEM状态改变发中断(三)收发通信编程:在8250初始化之后就可以通信了。

接收的基本操作是对接收数据寄存器(地址为3F8H)执行IN指令:MOV DX,3F8HIN AL,DX 发送的基本操作是对发送保持寄存器(地址为3F8H)执行OUT指令:MOV DX,3F8HOUT 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 D01 接收数据寄存器满(接收准备好)1 数据重迭错1 奇偶出错1 数据格式出错1 检出断点1 发送数据寄存器空(发送准备好)1 发送移位寄存器空发送数据寄存器空,表示CPU送给8250的数据已从发送数据寄存发送移位寄存器。

此时8250又可以接收CPU的新数据,也就是发送准备好,写发送数据寄存器将使本位复位。

发送移位寄存器空,表示发送移位寄存器已将从发送数据寄存器收到的数据移位输出完备。

此时又可从发送数据寄存器接收新数据。

接收数据寄存器满,表示已经接收完一个数据,放在接收数据寄存器中,此时CPU可已从8250读入数据,也就是接收准备好,读接收数据寄存器将使本位复位。

数据重迭错,表示接收数据寄存器满时,CPU尚未取走这个数据,又一个新接收到的串行数据又收完,并送入接收数据寄存器。

这样,原来的数据就被冲掉。

这就称为重迭错,或溢出错。

数据格式出错,8250接收一个串行数据,经过起始位,数据位和奇偶校验位后应收到停止位“1”。

如果此时仍收到“0”,则发生格式错。

检出断点,表示8250收到“0”电平的持续时间超过从起始位到停止位的总时间,注意检出断点和收到全0字节是完全不同的。

读线状态寄存器将使D1——D4位复位。

(b).MODEM状态寄存器: 3FEH/2FEHMODEM状态寄存器各位意义如下:D7 D6 D5 D4 D3 D2 D1 D01 CTS上的信号改变过1 DSR上的信号改变过1 RI上信号改变过1 DCD上的信号改变过CTS状态DST状态RI 状态D CD状态表示接口对方当前状态的信息有四位:位4—位7CTS:对方通知本方可以向对方发送信息DSR:对方通知本方对方已可以工作RI:对方来的铃响信号指示DCD:对方通知本方已检测到线路有载波要正确进行通信操作,只有这4位状态信息是不够的,还要根据Moden状态寄存器低4位提供的信息来进行通信操作。

每次对这个状态寄存器执行IN指令都将使低4位清0,只有相应的状态信号线上的有效信号重新到来,才能使低4位内相应位置1。

其中,低4位所谓信号改变过是指从上次读MODEM状态寄存器以来信号改变过。

(c).对上述两个状态寄存器状态的测试,可以决定是否用指令输入或输出字符代码。

Moden控制寄存器的控制字节可以用来向对方提供状态信息。

Moden控制寄存器的位0和位1分别控制发出DTR和RTS信号:DTR信号表示本方接口是否正常工作RTS是向对方表示是否将向对方发送代码,对方可以判别这两个信号,决定自己的操作。

综上所述,借助硬件实现流量控制的过程就是,无论读入字符还是发送字符前,要先测试线路状态和对方(Moden)的状态,根据测试结果再决定下面操作,另一方面,向对方提供自己的状态,使对方也能根据对本方状态的测试决定如何操作。

3.发送数据寄存器:(3F8H/2F8H)它寄存CPU送给8250的8位并行数据,8250内部电路再将它送到移位寄存器,变成串行数据输出。

4.接收数据寄存器:( 3F8H/2F8H)它寄存8250将要送给CPU的8位并行数据,8250收到串行数据通过移位寄存器变成并行数据,然后存入接收数据寄存器中。

(四).中断功能的实现用编程的方法可以使8250具有发出中断请求的能力。

IBM PC系统的串行接口板的中断请求信号是通过系统总线的IRQ4端加入的。

中断服务程序的入口地址应该在中断向量地址表的0000:0030H开始的4个单元内。

8250内对中断起作用的是Moden控制寄存器位3(OUT2), 中断允许寄存器和中断标识寄存器。

Moden 控制寄存器位3在初始化时必须设置为1,8250内的中断管理机构才起作用。

1.中断允许寄存器中断允许寄存器的位0—位3分别管理4种中断源,初始化时,将中断允许寄存器的位0—位3的一位或几位置1,就能在对应的条件出现时发出中断请求。

相关主题