1、1,第六章 串并行通信和接口技术,6.1 概述,6.3 可编程串行通信接口8251A,6.4 并行通信和并行接口,6.5 可编程并行通信接口8255A,6.2 串行接口和串行通信,2,第六章 串并行通信和接口技术,本章重点:1、计算机与外设的通信方式2、8251A的编程结构和功能结构3、8251A的初始化和应用4、8255A的编程结构5、8255A的工作方式6、8255A的初始化和应用,3,计算机与外设的通信方式,1、并行方式,2、串行方式,用的传输线多,用的传输线少,速率高,速率低,适于近距离传输,适于远距离传输,目录,6.1 概述,4,6.2 串行接口和串行通信,一、串行接口,1、适用场合
2、:外设和计算机按串行方式进行通信。,目录,可编程串行接口的典型结构,保存传输状态,CPU给接口的控制信息,保存CPU送外设的数据,保存外设送CPU的数据,6,二、串行通信数据传送方式,(1)单工方式,只允许数据按一个固定方向传输。,1、按数据传输时发送过程和接收过程的关系划分,7,二、串行通信数据传送方式,(2)半双工方式,输入输出使用同一通路,需分时传输。,8,二、串行通信数据传送方式,(3)全双工方式,接收和发送采用不同的通路,A、B可同时发送和接收,两方资源完全独立。,9,(1)同步通信,1)概念:将要传输的数据组成一信息块(帧),每信息块开头加上同步字符,在约定的波特率下,使数据一个接
3、一个的从发送端到接收端。,2、按时钟对通信过程的定时方式划分,二、串行通信数据传送方式,2)基本特点,(2)数据流中字符与字符间和字符内的各位间都同步;,(3)发送端和接收端须用同一时钟信号同步。,3)优点,4)缺点:硬件电路复杂。,(2)适于传大量的数据,同步要求每个数据内各位都按预定频率传送,数据间不允许有间隙,若有用同步字符填充,收发时钟严格同步。,12,(2)异步通信,1)概念将要传输的数据分成小段,发送端在约定的波特率下发送数据,接收端按约定的波特率接收,不需发同步信号。,2)基本特点,(2)串行异步通信以字符为单位进行传输,其通信协议是起止 式异步通信协议。,(1)字符之间异步,字
4、符内各位基本同步。,二、串行通信数据传送方式,13,标准(起止式)异步通信协议格式,起始位每个字符开始传送的标志,起始位采用逻辑0电平。,数据位数据位紧跟着起始位传送。由58个二进制位组成,低位先传送。,校验位用于校验是否传送正确;可选择奇检验、偶校验或不传送校验位。,停止位表示该字符传送结束。停止位采用逻辑1电平,可选择1、1.5或2位。,空闲位传送字符之间的逻辑1电平,表示没有进行传送。,标识态,3)优点,4)缺点,对时钟同步要求不严格。接收到起始位后,只要在一个字符传输时间内收发器保持同步就能正确接收。,传送效率低。控制信息至少占总信息的20。,注:通信时,收发双方必须遵守共同的通信协议
5、(通信规程),才能解决传送速率、信息格式、位同步、字符同步、数据校验等问题。,15,三、串行通信的传输率,1、概念,1)传输率:每秒钟传输的二进制数据的位数,又称波特率。,2)发送时钟:异步方式通信时,发送端需用时钟决定每一位 对应的时间长度,该时钟称发送时钟。,国际上规定的标准波特率:110、300、600、1200、1800、 2400、 4800、9600、19200。,4)波特率因子:接收时钟或发送时钟频率与位传输率的比。,注:接收时钟或发送时钟频率可以是位传输率的16、32或64倍。,3)接收时钟:异步方式通信时,接收端需用时钟测定每一位 的时间长度,该时钟称接收时钟。,例1、在一串
6、行通信系统中,传送速率为960字符每秒,每个字符是10位,则波特率为多少?,960109600bit/s(bps),2、例,例2、异步传输过程:设每个字符对应1个起始位、7个信息位、1个奇偶校验位和1个停止位,如果波特率为1200bps,那么,每秒钟能传输的最大字符数为多少个?,1200/(1711)120个。,例3、同步传输: 设每个字符包含7个信息位,波特率为1200bps,用4个同步字符作为信息帧头部,但不用奇偶校验,每个信息帧包含100个字符,每秒钟能传输的字符数最大可达到多少个?,传输100个字符所用的时间:7(100+4)/12000.6067s。 则每秒钟能传输的字符数可达到:1
7、00/0.6067165个。,结论:在同样的传输率下,同步传输时实际字符传输率要比 异步传输时高。,18,四、串行接口标准RS-232C,RS-232C标准(协议)是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在020000bits范围内的通信。现在的台式PC机一般有两个RS-232串行口COM1和COM2,通常COM1使用的是9针D形连接器,而COM2使用的是25针连接器。,19,1、 RS-232C的电气特性,注:负逻辑规定电平,信号电平标准,20,2、 RS-232C标准与TTL标准之间的转换,标准TTL电平,目录,21,6.3 可
8、编程串行通信接口8251A,一、8251A的基本性能,1、通过编程,可工作于同步方式和异步方式。,同步方式,目录,22,一、8251A的基本性能,异步方式,23,一、8251A的基本性能,2、完全双工工作,具有双缓冲的发送器和接收器。,4、输入输出电路为TTL电平。,3、具有奇偶校验、溢出和帧错误检测等功能电路。,注:8251A接口电平与EIA RS-232-C所要求的电平不同,所以互相连接时,必须增加驱动级和接收电路。,24,二、8251A的基本原理,1、 8251A 编程 结构,25,2、8251A的功能结构,双向三态的8位数据缓冲器。与系统数据总线相连。,配合数据总线缓冲器工作,接收来自
9、系统控制总线的信号。,1) :片选信号。 2) :控制/数据信号。 3) :写控制信号。 4) :读控制信号。 5)CLK:内部定时信号。 6)RESET:复位信号。,提供了一组通用控制信号,使8251可直接与调制解调器连接。,接收串行数据,并进行串并转换。,配合接收缓冲器工作,管理有关接收的所有功能。 1)异步方式,芯片复位后,先检查输入信号中有效的“1”, 检测到后,搜索有效的低电平来确定起始位; 2)消除假启动干扰; 3)对接收到的信号奇偶校验,根据校验结果设置状态位; 4)异步方式下,检测停止位,根据检测结果设置状态位。,把并行数据加上相应的控制信息,转换成串行数据输出。,配合发送缓冲
10、器工作,控制和管理所有和发送有关的功能。 (1)异步方式下,为数据加上起始位、校验位和停止位; (2)同步方式下,插入同步字符,在数据中插入校验位。,31,3、8251A的发送和接收,(1)检测起始位,1)异步接收方式,设数据接收时钟频率是数据传输频率的16倍。,起始检测,确定已检测到起始位,采样数据,每隔一字符传输时间,对RxD进行一次采样,数据送移位寄存器移位,并进行奇偶校验和去掉停止位,得到并行数据。,(2)8251A进行常规采样并进行字符装配,(3)通知CPU接收数据并行数据经过内部数据总线送接收数据缓冲器,并置RxRDY有效,通知CPU已收到一个数据,可以取用。,33,8251A异步
11、接收数据传输格式,注:对于少于8位的数据,8251A将高位补0。,34,2)8251A异步发送方式,(2)8251A由TxD线把串行数据送出 。8251A从CPU接收到一个数据,移位形成串行数据,再加上起始位、奇偶校验位以及停止位,由TxD把数据送出。,注:数据及起始位、校验位、停止位总是在发送时钟TxC的下降沿从8251A发出,数据传输的波特率为发送时钟频率的1、1/16或者1/64,具体决定于编程时给出的波特率因子。,35,8251A异步发送数据传输格式,注:对于少于8位的数据,8251A将高位补0。,36,3)8251A的同步接收方式,(1)搜索同步字符,双同步字符检测到第一个同步字符后
12、,再继续检测此后输入的移位寄存器的内容是否与第二个同步字符寄存器的内容相同,不同重新比较第一个同步字符;相同,则认为同步已经实现。,(b)外同步,通过在同步输入端SYNDET加一高电位实现同步。当SYNDET端出现一个高电平,并且维持一时钟接收周期,8251A认为已经完成同步。,(2)数据的同步传输,接收器利用时钟信号对RxD采样,把收到的数据送移位寄存器。当收到的数据位达到规定的一个字符位数时,将移位寄存器的内容送输入缓冲寄存器,且发出RxRDY信号,表示收到一数据。,38,8251A同步接收数据传输格式,39,4)8251A的同步发送方式,(2)发送同步字符 根据编程要求,发送器先发送一个
13、或两个同步字符。,注:如发送数据时,CPU来不及提供新数据,8251A发送器会自动插入同步字符,由TxD送出。,(3)发送数据块 发送数据块时,发送器根据要求对数据块中的数据加上奇偶校验位或不加。,40,8251A同步发送数据传输格式,41,三、8251A的对外连接信号,8251A对外连接信号,8251A与CPU之间的信号,8251A与外设之间的信号。,42,1、8251A与CPU之间的信号,1)数据信号 D7D0:双向数据线,与系统总线相连,传输数据、 编程命令及状态信息。,43,1、8251A与CPU之间的信号,3)读/写控制信号,44,1、8251A与CPU之间的信号,4)收发联络信号,
14、(1)TxRDY:发送器准备好。,45,(2)TxE:发送器空信号。,8251A无字符发送时,TxE为高,实际上指示了一次发送动作的结束。当8251A收到CPU发来的字符时,TxE变为低。注:在同步发送时,如CPU没及时往8251A送字符,TxE会变成高电平,发送器在输出线上插入同步字符,以填补空隙。,1、8251A与CPU之间的信号,46,(3)RxRDY:接收器准备好。,表示8251A已经从外设接收到一个数据,等待CPU来读取。CPU从8251A读取数据后,RxRDY变为低电平。 可作为中断请求信号,也可作为查询方式的联络信号。,1、8251A与CPU之间的信号,(4)SYNDET:同步检
15、测信号,仅用于同步方式。,8251A内同步:输出信号。单同步字符: 检测到同步字符,变为高电平;双同步字符: 检测到第二个同步字符的最后一位后,在该位的中间变为高电平,表示已达到同步。,8251A外同步:输入信号。如果从SYNDET端输入一个正跳变的信号,并且维持一时钟接收周期,8251A认为已经完成同步,8251A在RXC的下一个下降沿开始装配字符。,注:复位:SYNDET变为低电平;内同步:CPU执行一次读操作后,变为低电平;外同步:其电平状况决定于外部信号。,48,2、8251A与外设之间的信号,1)数据信号,(1)TxD:发送器数据信号端。,CPU送往8251A的并行数据被转化为串行数
16、据后,通过TxD端发送给外设。,(2)RxD:接收器数据信号端。,接收外设送来的串行数据,经转换为并行数据后由CPU接收。,49,2)收发联络信号,2、8251A与外设之间的信号,50,2、8251A与外设之间的信号,51,3、其它信号,1)时钟信号,(1)CLK:产生8251A内部定时信号。,(2)TxC:发送时钟。,控制发送字符的速率。 同步传送时,TxC频率等于字符传输的波特率; 异步传送时,TxC频率是字符波特率的1、16或64倍。,(3)RxC:接收时钟。,控制接收字符的速率。 同步传送时,RxC频率等于字符传输的波特率; 异步传送时,RxC频率是字符波特率的1、16或64倍。,52
17、,3、其它信号,2)电源信号,(1)Vcc:5V,(2)GND:地线。,53,四、8251A的编程,1、8位接口芯片和16位数据总线的连接问题,解决 方法,54,2、8251A的初始化,1)8251A初始化的约定,(1)芯片复位后,第一次用奇地址端口写入的值作为方式字进入方式寄存器;(2)如果方式字中规定8251A工作在同步方式,CPU接着往奇地址输出的1或2个字节就是同步字符,写入同步寄存器。(3)随后,只要不是复位命令,不管同步还是异步,CPU用奇地址端口写入的值作为控制字送控制寄存器,用偶地址端口写入的值作为数据送数据输出缓冲寄存器。,2)8251A,的初始化流程,56,3、8251A模
18、式寄存器格式,1)异步方式下模式寄存器格式,时钟频率波特率波特率因子,例如:方式指令D1D011,接收数据的波特率为1200bps。接收时钟RxC的频率?,RxC的频率12006476.8KHz,2)同步方式下模式寄存器格式,同步方式波特率时钟频率,58,4、控制寄存器格式,注:D71,在内同步方式中,8251A开始搜索同步字符。,发送 允许。 0:禁止 1:允许,接收允许。 0:禁止 1:允许,复位错误标志。 1 :使PE、OE、FE复位(清除出错指示位),内部复位。 1:使8251A复位,返回方式指令,发送空 白字符。 1:强迫TxD为0,发送空白字符,请求发送。 1:强迫 RTS为0,数
19、据终端准备好。 1:强迫 DTR为0,搜索同步字符。 1:启动搜索,TxEN,DTR,RxE,SBPK,ER,RTS,IR,EH,D0,D1,D2,D3,D4,D5,D6,D7,5、状态寄存器格式,2)D11,接口中已收到一个数据,可由CPU来读取。 当CPU读走一个字符后,该位自动清0。,3)D21,表示发送器刚发送一个字符,现为空,等待CPU发 下一个。,60,五、8251A应用举例,例1、异步方式下初始化编程,编写8251A的初始化程序,使之工作于异步模式,1个偶校验位,2个停止位,数据位7位,波特率因子16;清除出错标志,请求信号有效,使发送、接收启动,CPU准备就绪。8251A端口地
20、址:50H,52H,1 0,1 0,1 1,1 1,解:1)确定8251A的模式字 异步模式,1个偶校验位,2个停止位,数据位7位,波特率因子16。,2)确定8251A的控制字:清除出错标志,请求信号有效,使发送、接收启动,CPU准备就绪。,发送 允许。 0:禁止 1:允许,接收 允许。 0:禁止 1:允许,复位错误标志。 1:使PE、OE、FE复位(清除出错指示位),内部复位。 1:使8251复位,返回方式指令,发送空白字符 1:强迫TxD为0,发送空白字符,请求发送。 1:强迫 RTS为0,数据终端准备好。 1:强迫 DTR为0,搜索同步字符 1:启动搜索,TxEN,DTR,RxE,SBP
21、K,ER,RTS,IR,EH,D0,D1,D2,D3,D4,D5,D6,D7,0,0,1,1,0,1,1,1,63,MOV AL,0FAH ;11111010B OUT 52H,AL ; 设置模式字 MOV AL,37H ;00110111B OUT 52H,AL ;设置控制字,64,例2、同步方式下初始化编程,编写8251A的初始化程序,使之工作于同步方式,同步字符1个,内同步,数据位7位,偶校验。一个同步字符为2AH。搜索同步字符,复位出错标志,启动接收器和发送器,CPU准备好发送,请求信号有效。8251A 端口地址:50H,52H。,MOV AL, 0B8H ; 10111000B OU
22、T 52H,AL ;写方式字 MOV AL,2AH OUT 52H,AL ;写同步字符 MOV AL,0B7H ;10110111B OUT 52H,AL ;写控制字,65,例3、通过检测状态字实现数据接收功能,编程实现CPU接收80个字符,字符输入后放在BUFFER所指的内存缓冲区。8251A工作于异步方式,波特率因子为16,7个数据位,偶校验,2个停止位。8251A 端口地址:50H,52H。,MOV AL,0FAH;11111010B OUT 52H,AL ;设置模式字 MOV AL,35H ;00110101B OUT 52H,AL ;设置控制字 MOV DI,0 ;变址寄存器初始化
23、MOV CX,80 ;计数器初始化,BEGIN: IN AL,52HTEST AL,02HJZ BEGIN ;读状态字并测试,RXRDY=0转IN AL,50H ;读取字符MOV BX,OFFSET BUFFERMOV BX+DI,AL ;传输字符INC DI ;修改缓冲区指针IN AL,52H ;读取状态字TEST AL,38H ;测试有无错误JNZ ERROR LOOP BEGIN ;如没有错,则接收下1个字符JMP EXIT ;如满80个字符,则结束 ERROR: CALL ERR_OUT ;调用出错处理程序 EXIT: ,67,例4、8251A作为CRT接口的例子,8251A工作于异步
24、模式,波特率因子为16,8位数据,1位停止位,无校验位。8253计数器2输出方波信号作为8251A的接收时钟TxC和发送时钟RxC,编程实现往CRT输出一个字符,要输出的字符事先放在堆栈中。 8251A 端口地址:00D8H,00DAH。,8251A的初始化程序段:,INIT:MOV AL,00H ;AL清零MOV CX,0003 OUT1: MOV DX,00DAHOUT DX,ALLOOP OUT1 ;往控制端口送3个0MOV AL,40H OUT DX, AL ;送40H复位MOV AL,4EH ;01001110OUT DX, AL ;设模式字MOV AL,27H ;00100111B
25、 OUT DX, AL ;设命令字启动 .,注:8251A的复位约定: 往奇地址端口先送3个00H,再送一个40H。,往CRT输出一个字符的程序段:,CHAROUT:MOV DX,00DAH STATE: IN AL,DX ;输入状态字TEST AL,01 JZ STATE ;不断测试状态位, TXRDY=0转MOV DX,00D8H ;数据端口地址送DXPOP AX ;AX中为要输出的字符OUT DX,AL ;往端口中输出一个字符,8251A的初始化程序段:,INIT:XOR AX,AX ;AX清零MOV CX,0003MOV DX,00DAH OUT1:CALL KKKLOOP OUT1
26、;往控制端口送3个0MOV AL,40H CALL KKK ;送40H复位MOV AL,4EH ;01001110CALL KKK ;设模式字MOV AL,27H ;00100111B CALL KKK ;设命令字启动 . KKK:OUT DX,AL ;数据输出PUSH CXMOV CX,0002 ABC:LOOP ABC ;等待输出动作完成POP CXRET,72,习题,1、串行通信的类型有哪几种?简述各自的特点。,2、什么是波特率因子?什么是波特率?设波特率因子为64,波特率为1200bps,则时钟频率为多少? 3、写出标准异步通信数据格式。 4、对8251A编程时,必须遵守哪些约定?,5
27、、利用状态字进行检测,异步发送256个数据。8251A工作于异步模式,波特率因子为16,7位数据,2位停止位,奇检验。清除出错标志,请求信号有效,使发送、接收启动,CPU准备就绪。设待发送的字符放在BUFFER标号所指的内存缓冲区。 8251A 端口地址:80H,82H。,1 0,1 0,0 1,1 1,解:1)确定8251A的模式字(0DAH) 异步模式,1个奇校验位,2个停止位,数据位7位,波特率因子16。,2)确定8251A的控制字(37H) 清除出错标志,请求信号有效,发送、接收启动,CPU准备就绪。,0,0,1,1,0,1,1,1,参考答案:MOV AL,0DAH ;11011010
28、BOUT 82H,AL ; 设置模式字MOV AL,37H ;00110111BOUT 82H,AL ;设置控制字LEA BX,BUFFER MOV CX,100H AGAIN:IN AL,82H ;取状态字TEST AL,01H ;测试状态位JZ AGAIN ;TXRDY=0转MOV AL,BX ;取一字符OUT 80H,AL ;发送字符INC BX ;修改地址指针LOOP AGAIN ;重复100H次,6、完成8251A的初始化程序,使8251A以内同步方式传送数据,同步字符有2个,分别为16H,2AH,数据位为8位,采用偶校验。使8251A对同步字符进行搜索,复位状态寄存器中的出错标志,启动接收和发送,CPU准备好数据传送。8251A的地址为60H和62H。,MOV AL , 3CH ;00111100B OUT 62H , AL ;设置工作模式 MOV AL , 16H OUT 62H , AL MOV AL , 2AH OUT 62H , AL ;写同步字符 MOV AL , 97H ;10010111B OUT 62H , AL ;写控制字,