学习情境八 并行通信与串行通信.docx
《学习情境八 并行通信与串行通信.docx》由会员分享,可在线阅读,更多相关《学习情境八 并行通信与串行通信.docx(37页珍藏版)》请在冰豆网上搜索。
学习情境八并行通信与串行通信
学习情境八并行通信与串行通信
情境导入:
串并口是输入、输出接线插座的俗称,如图9-0所示,它位于主板上。
连接打印机可用并行输出口,与其他电脑实施通讯都要用串行输入输出口。
并口多为25孔阴插座,串口是9针或25针阳插座。
串口的出现是在1980年前后,数据传输率是115kbps~230kbps,串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备,目前部分新主板已开始取消该接口。
并口的数据传输率比串口快8倍,标准并口的数据传输率为1Mbps,一般用来连接打印机、扫描仪等。
所以并口又被称为打印口。
并口采用25针的双排插口,除最普遍的应用于打印机以外,还可用于连接扫描仪、ZIP驱动器甚至外置网卡、磁带机以及某些扩展硬盘等设备。
图9-0串并口
学习导航:
本章主要介绍并行通信、串行通信的基本概念、相关知识,并详细介绍常用并行接口芯片8255和串行通信接口芯片8251的编程结构及编程特点。
单元一并行通信与并行接口
知识目标:
掌握并行通信的基本概念,掌握可编程并行接口芯片8255A的编程结构、工作方式、引脚信号和控制字格式及用法。
技能目标:
能分析和设计由8255A组成的简单实用电路,包括硬件逻辑和软件编程。
一、并行通信
计算机与外部设备之间或计算机与计算机之间的信息交换被为通信。
CPU与外设的基本通信方式有并行通信和串行通信两种。
并行通信是指数据以字节或字为单位在多根传输线上同时进行传输,即n位数据用n条线同时传输的机制。
串行通信是指数据在一根传输线上一位一位地顺序传输的机制。
和串行通信相比,并行通信具有传输速度快、可靠性高的特点,但在进行远距离传输时,线路的投资大。
因此,并行通信常用于速度要求高、传输距离短的场合,如PC系统总线、高速外设I/O总线、芯片内部总线等。
而串行传输可大大降低通信线路的成本,但传输速率较低、可靠性较差,主要用于远距离传输和通信,比如各种网络通信、无线通信等。
二、并行接口
并行接口就是能够进行并行数据传输、位于CPU和外部设备之间、起到数据缓冲和匹配作用的接口电路。
并行通信接口与外设之间的数据传输是并行的,它与系统总线之间的数据传输也是并行的。
一个通用的并行通信接口可以设计为输入接口,也可以设计为输出接口,还可以设计为输入输出双向接口。
例如,在计算机系统中连接卡片读入机的接口是单向输入接口,连接打印机的接口是单向输出接口,连接磁盘驱动器的接口就是双向接口。
既作为输入又作为输出的接口可以用两种方法实现,一种是利用同一个接口中的两个通路,一个作输入通路,—个作输出退路;另一种是用一个双向通路,既作为输入又作为输出。
图9-1并行接口与外设连接的示意图
一个典型的并行接口和外设连接的示意图如图9-1所示。
从图中可以看出,在并行接口内部跟所有的接口一样,包含三类信息,即数据信息、状态信息和控制信息。
这些信息分别放在不同端口的寄存器中。
1.并行接口的组成
一个并行接口电路通常由输入缓冲寄存器、输出缓冲寄存器、状态寄存器和控制寄存器组成。
(1)输入缓冲寄存器输入缓冲寄存器主要负责接收外设送来的数据以供CPU读取,CPU通过读操作指令IN执行读操作。
(2)输出缓冲寄存器输出缓冲寄存器负责接收从CPU送来的数据,如果外设处于空闲状态,则从输出缓冲寄存器取走数据,接口通知CPU进行下一次输出操作。
(3)控制寄存器负责接收从CPU送来的各类控制命令,以控制外设的运行。
(4)状态寄存器用来存放外设运行的状态供CPU查询,进而控制外设的工作。
2.并行接口的工作原理
在输入过程中,外设首先把数据送到外设与接口的数据输入线上,并使“数据输入准备好”状态线成为高电平。
接口把数据接收到数据输入缓冲寄存器的同时,使“数据输入应答”线变为高电平,作为对外设的响应。
外设接到此信号,撤销数据和“数据输入准备好”信号。
数据到达接口中后,接口会在状态寄存器中设置“输入准备好”状态位,以便CPU对其进行查询,也可以在此时向CPU发出—个中断请求。
所以,CPU既可以用软件查询方式,也可以用中断方式来设法读取接口中的数据。
CPU从并行接口中读取数据后,接口会自动清除状态寄存器中的“输入准备好”状态位,并且使数据总线处于高阻状态,以便外设输入下一个数据。
在输出过程中,当外设从接口取走一个数据后,接口会将状态寄存器中的“输出准备好”状态位置1,表示CPU当前可以往接口输出数据,此时,接口也可以向CPU发一个中断请求。
所以,CPU既可以用软件查询方式,也可以用中断方式设法往接口中输出一个数据。
当CPU输出的数据到达接口的输出缓冲寄存器中后,接口会自动清除“输出准备好”状态位,并且将数据送往外设,同时,接口往外设发送一个“启动信号”来启动外设接收数据。
外设被启动后,开始接收数据,并往接口发一个“数据输出回答”信号。
接口收到此信号,便将状态寄存器中的“输出准备好”状态位重新置1,以便则输出下一个数据。
三、可编程并行接口芯片8255A
8255A是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O接口,具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
其各接口功能可由软件选择,使用灵活、通用性强。
8255A可作为单片机与多种外设连接时的中间接口电路。
(一)8255A的内部结构
8255A的内部结构如图9—2所示.主要包括以下几个部分:
1.三个数据端口A,B,C
这三个端口均可看作是I/O口,但它们的结构和功能也稍有不同。
A口:
独立的8位I/O口,它的内部有对数据输入/输出的锁存功能。
B口:
独立的8位I/O口,仅对输出数据的锁存功能。
C口:
可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。
也是仅对输出数据进行锁存。
图9-28255A的编程结构
2.A组和B组的控制电路
这是两组根据CPU命令控制8255A工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255A的工作方式,也可以根据编程命令来对C口的指定位进行置/复位的操作。
A组控制电路用来控制A口及C口的高4位;
B组控制电路用来控制B口及C口的低4位。
3.数据总线缓冲器
8位的双向的三态缓冲器。
作为8255A与系统总线连接的界面,输入/输出的数据,CPU的编程命令以及外设通过8255A传送的工作状态等信息,都是通过它来传输的。
4.读/写控制逻辑
读/写控制逻辑电路负责管理8255A的数据传输过程。
它接收片选信号
及系统读信号
、写信号
、复位信号RESET,还有来自系统地址总线的口地址选择信号A0和A1。
(二)8255A的引脚功能
8255A的引脚信号可以分为两组:
一组是面向CPU的信号,一组是面向外设的信号。
如图9-3所示。
图9-38255A的外部引脚
1.面向CPU的引脚信号及功能
D0-D7:
8位双向三态数据线,用来与系统数据总线相连。
RESET:
复位输入信号,高电平有效,用来清除8255A的内部寄存器,并置A口,B口,C口均为输入方式。
:
片选,输入,用来决定芯片是否被选中。
:
读信号,输入,控制8255A将数据或状态信息送给CPU。
:
写信号,输入,控制CPU将数据或控制信息送到8255A。
A1,AO:
内部端口地址的选择,输入。
这两个引脚上的信号组合决定对8255A内部的哪一个口或寄存器进行操作。
8255A内部共有4个端口:
A口,B口,C口和控制口。
,
,
,A1,A0这几个信号的组合决定了8255A的所有具体操作,如表9-1所示。
表9-18255A的操作功能表
A1A0
操作
数据传送方式
00100
读A口
A口数据→数据总线
00101
读B口
B口数据→数据总线
00110
读C口
C口数据→数据总线
01000
写A口
数据总线数据→A口
01001
写B口
数据总线数据→B口
01010
写C口
数据总线数据→C口
01011
写控制口
数据总线数据→控制口
2.面向外设的引脚信号及功能
PA0~PA7:
A组数据信号,用来连接外设进行并行数据传送。
PB0~PB7:
B组数据信号,用来连接外设进行并行数据传送。
PC0~PC7:
C组数据信号,用来连接外设或者作为A口、B口的控制信号。
(三)8255A的工作方式
8255A有三种工作方式,用户可以通过编程来设置。
方式0简单输入/输出,查询方式;A,B,C三个端口均可。
方式1选通输入/输出,中断方式;A,B,两个端口均可。
图9-48255A三个I/O端口的排列示意图
方式2双向输入/输出,中断方式。
只有A端口才有。
工作方式的选择可通过向控制端口写入控制字来实现。
在不同的工作方式下,8255A三个输入/输出端口的排列示意图如图9-4所示。
1.方式0
方式0是一种简单的输入/输出方式,不需要应答联络信号,可用A,B,C三个口的任一位充当查询信号,其余I/O口仍可作为独立的端口和外设相连。
工作方式0又称为基本输人/输出方式。
在此方式下,8255的3个接口(A、B和C口)24条线全部规定为数据的输入/输出线。
A接口的8条线(PA0—PA7)、B接口的8条线(PB0—PB7)、C接口的高4位(PC4一PC7)和C接口的低4位(PC0—PC3)可用程序分别规定它们的输入/输出方向。
当以工作方式0输入时,外设先将数据送到8255A的某个端口,CPU执行一条输入指令,读有效,将该端口的数据送入CPU。
当以工作方式0输出时,CPU执行一条输出指令,写有效,将数据送到8255A的某个端口,然后由外设取走。
工作方式0适合于数据的无条件传送,也可以人为指定某些位作为状态信息线,进行查询式传送。
2.方式1
方式1是一种选通I/O方式,A口和B口仍作为两个独立的8位I/O数据通道,可单独连接外设,通过编程分别设置它们为输入或输出。
而C口则要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余2位仍可工作在方式0,可通过编程设置为输入或输出。
(1)方式1的输入组态和应答信号的功能
图9-5给出了8255A的A口和B口方式1的输入组态。
图9-5方式1输入组态
C口的PC3—PC5用作A口的应答联络线,PC0—PC2则作用B口的应答联络线,PC6—PC7则可作为方式0使用。
应答联络线的功能如下:
:
数据输入选通信号,低电平有效,它是内外设送给8255A的。
该信号有效表示外设已将输入数据准备好,并放入8255A的输入数据缓冲器中。
IBF:
输入缓冲器满信号。
高电平有效,它是8255A输出的一个状态信号。
IBF有效时表示8255A的相应端口已经接收到输入数据,但尚未被CPU取走,输入缓冲器已满。
该信号一力面可供CPU查询用,只一方面送给外设,阻止外设发送新的数据。
IBF由
信号置位,由读信号的后沿将其复位。
即当CPU已读取数据,输入缓冲器变空时,
输出低电平。
INTR:
中断请求信号,高电平有效。
它是8255A的一个输出信号,用于向CPU发出中断请求。
只有当
为1、1BF为1且INTE也为1(中断允许)时,INTR才有效。
也就是说,当选通信号结束(
=1),已将一个数据送进输入缓冲器(IBF=1),并且处于中断允许状态(INTE=1)时,8255A才向CPU发出中断请求信号。
当CPU响应中断并读取输入缓冲器中的数据时,由读信号的下降沿将INTR置为低电平。
INTE:
中断允许信号,没有外部引脚,它是控制中断允许或中断屏蔽的信号。
通过软件对端口C相应位置1或置0,实现对端口A或端口B中断请求信号的控制。
具体地说,当PC4被置1或置0时,端口A的中断请求被允许或屏蔽,PC2被置1或置0时,端口B的中断请求被允许或屏蔽。
(2)方式1的输出组态和应答信号功能
图9-3方式1的输出组态
C口的PC3、PC6、PC7用作A口的应答联络线,PC0-PC2则作用B口的应答联络线,PC4~PC5则可作为方式0使用。
应答联络线的功能如下:
:
输出缓冲器满信号,低电平有效。
利用该信号通知外设,
有效时,表示CPU已向指定的端口输出一个有效数据,外设可从此接口获取此数据。
:
外设响应信号,低电平有效,由外设输出给8255A。
作为对
的响应信号,表示外设已将数据从8255A的输出缓冲器中取走,它同时清除8255A的输出缓冲区满信号并使中断请求信号INTR有效。
CPU获知输出缓冲区满信号无效时可以输出下一个数据给8255A的A口或B口。
INTR:
中断请求信号。
INTR置位的条件是ACK为高且OBF为高且INTE为高。
INTE:
中断允许。
对A口来讲,由PC6的置位来实现,对B口仍是由PC2的置位来实现。
在方式l输出情况下,若所设位控字使PC6=1,则INTEA=l;若位控字使PC2=1,则INTEB=1。
3.方式2
方式2为双向选通I/O方式,只有A口才有此方式。
这时,C口有5根线用作A口的应答联络信号,其余3根线可用作方式0,也可用作B口方式1的应答联络线。
方式2就是方式1的输入与输出方式的组合,各应答信号的功能也相同。
而C口余下的PC0~PC2正好可以充当B口方式1的应答线,若B口不用或工作于方式0,则这三条线也可工作于方式0。
方式2类似于A口在方式1下输入和输出的组合。
因此,各引脚的定义也与方式1的相同,只不过INTR信号既可在输入时向CPU请求中断,也可在输出时向CPU请求中断。
各控制信号定义如图9-4所示。
(1)INTEl:
输出中断允许信号。
INTEl为1时,8255A输出缓冲器空,通过INTRA向CPU发出输出中断请求信号;INTEl为0时,屏蔽该中断请求。
(2)INTE2:
输入中断允许信号。
INTE2为1时,8255A输入缓冲器满,通过INTRA向CPU发出输入中断请求信号;INTE2为0时,屏蔽该中断请求。
(3)INTRA:
中断请求信号,高电平有效。
不管是输入还是输出,当—个动作完成而要进入下一个动作时,8255A都通过这一引脚向CPU发出中断请求信号。
图9-4端口A的方式2组态
(4)
:
外设提供给8255A的选通信号,低电平有效。
此信号将外没送到此信号将外没送到8255A的数据送入输入锁存器。
(5)IBFA:
8255A送往CPU的状态信息,表示当前已有一个新的数据送到输入缓冲器中,等待CPU取走。
IBFA可作为供CPU查询的信号。
(6)
:
输出缓冲器满信号,它是一个由8255A送给外设的状态信号,低电平有效。
当
有效时,表示CPU已经将一个数据写入8255A的端口A,通知外设将数据取走。
(7)
:
外设对
信号的响应信号,低电平有效。
它使8255A端口A的输出缓冲器开启,送出数据。
否则,输出缓冲器处于高阻状态。
(四)8255A的编程
1.8255A的编程控制字
对8255A的编程涉及到两个内容:
⑴写控制字设置工作方式等信息。
⑵使C口的指定位置位/复位的功能。
注:
均写入控制端口
8255A可工作在3种工作方式下,其工作方式的设定可通过对8255A编程来实现。
8255A有两种控制字:
方式选择控制字和C口按位置位/复位控制字。
(1)方式选择控制字
方式选择控制字要写入8255A的控制口,写入控制字之后,8255A才能按指定的工作方式工作。
8255A的方式选择控制字格式与各位的功能如图9-5所示。
图9-58255A的方式选择控制字格式
方式选择控制字可以分别选择端口A、端口B和端口C上下两部分的工作方式。
端口A有方式0、方式1和方式2三种工作方式,端口B只能工作于方式0和方式l,而端口C仅工作于方式0。
可以分别设定A口、B口的输入输出方向。
方式选择控制字的最高位D7为特征位,必须为1。
例9.1某系统要求使用8255A的A口方式0输入,B口方式0输出,C口高4位方式0输出,C口低4位方式0输入。
则控制字为:
10010001B即91H
初始化程序为:
MOVAL,91H
OUTCTRL_PORT,AL
(2)C口的置位/复位控制字
只有C口才有,它是通过向控制口写入按指定位置位/复位的控制字来实现的。
C口的这个功能可用于设置方式1的中断允许,可以设置外设的启/停等。
按位置位/复位的控制字格式如图9-6所示。
图9-68255A的置位/复位控制字格式
例9.2A口方式2,要求发两个中断允许,即PC4和PC6均需置位。
B口方式1要求使PC2置位来开放中断。
初始化程序可补充完整如下。
MOVAL,0C4H
OUTCTRL_PORT,AL;设置工作方式
MOVAL,09H
OUTCTRL_PORT,AL;PC4置位,A口输入允许中断
MOVAL,ODH
OUTCTRL_PORT,AL;PC6置位,A口输出允许中断
MOVAL,05H
OUTCTRL_PORT,AL;PC2置位;B口输出允许中断
2.8255A编程应用举例
学习案例:
利用8255A的A口方式0与微型打印机相连,将内存缓冲区BUFF中的字符打印输出。
试完成相应的软硬件设计(CPU为8088)。
微型打印机和主机之间的接口采用并行接口,采用Centronics标准引脚信号,Centronics标准引脚信号如表9-2所示。
案例分析:
首先我们分析一下打印机的工作。
微型打印机和主机之间的接口采用并行接口。
图9-7打印机数据传输时序
它的工作流程:
主机将要打印的数据送上数据线,然后发选通信号。
打印机将数据读入,同时使BUSY线为高,通知主机停止送数。
这时,打印机内部对读入的数据进行处理。
处理完以后使
有效,同时使BUSY失效,通知主机
可以发下一个数据。
硬件连线如图9-8所示:
图9-8打印机接口示意图
表9-2Centronics标准引脚信号
引脚
名称
方向
功能
1
STROBE
入
数据选通,有效时接收数据
2-9
DATA1-DATA8
入
数据线
10
ACKNLG
出
响应信号,有效时准备接收数据
11
BUSY
出
忙信号,有效时不能接收数据
12
PE
出
纸用完
13
SLCT
出
选择联机,指出打印机不能工作
14
AUTOLF
入
自动换行
31
INIT
入
打印机复位
32
ERROR
出
出错
36
SLCTIN
入
有效时打印机不能工作
说明:
由PC0充当打印机的选通信号,通过对PC0的置位/复位来产生选通。
同时,由PC7来接收打印机发出的“BUSY”信号作为能否输出的查询。
8255A的控制字为:
10001000即88H
A口方式0,输出;C口高位方式0输入,低位方式0输出
PC0置位:
00000001即01H
PC0复位:
00000000即00H
8255A的4个口地址分别为:
00H,01H,02H,03H。
完整的控制程序如下:
DADASEGMENT
BUFFDB'Thisisaprintprogram!
','$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETBUFF
MOVAL,88H;8255A初始化,A口方式0,输出
OUT03H,AL;C口高位方式0输入,低位方式0输出
MOVAL,01H;
OUT03H,AL;使PC0置位,即使选通无效
WAIT:
INAL,02H
TESTAL,80H;检测PC7是否为1即是否忙
JNZWAIT;为忙则等待
MOVAL,[SI]
CMPAL,'$';是否结束符
JZDONE;是则输出回车
OUT00H,AL;不是结束符,则从A口输出
MOVAL,00H
OUT03H,AL
MOVAL,01H
OUT03H,AL;产生选通信号
INCSI;修改指针,指向下一个字符
JMPWAIT
DONE:
MOVAL,0DH
OUT00H,AL;输出回车符
MOVAL,00H
OUT03H,AL
MOVAL,01H
OUT03H,AL;产生选通
WAIT1:
INAL,02H
TESTAL,80H;检测PC7是否为1即是否忙
JNZWAIT1;为忙则等待
MOVAL,0AH
OUT00H,AL;输出换行符
MOVAL,00H
OUT03H,AL
MOVAL,01H
OUT03H,AL;产生选通
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
学习案例:
将上例中8255A的工作方式改为方式1,采用中断方式将BUFF开始的缓冲区中的100个字符从打印机输出。
(假设打印机接口仍采用Centronics标准)。
案例分析:
仍用PC0作为打印机的选通,打印机的
作为8255A的A口,
8255A的中断请求信号(PC3)接至系统中断控制器8259A的IR3,其它硬件连线同上例,如图9-9所示。
图9-9中断方式硬件连线
8255A的控制字为:
1010XXX0
PC0置位:
00000001即01H
PC0复位:
00000000即00H
PC6置位:
00001101即0DH,允许8255A的A口输出中断
由硬件连线可以分析出,8255A的4个口地址分别为:
00H,01H,02H,03H。
假设8259A初始化时送ICW2为08H,则8255AA口的中断类型码是0BH,此中断类型码对应的中断向量应放到中断向量表从2CH开始的4个单元中。
主程序:
MAIN:
MOVAL,0A0H
OUT03H,AL;设置8255A的控制字
MOVAL,01H;使选通无效
OUT03H,AL
XORAX,AX
MOVDS,AX
MOVAX,OFFSETROUTINTR
MOVWORDPTR[002CH],AX
MOVAX,SEGROUTINTR
MOVWORDPTR[002EH],AX;送中断向量
MOVAL,0DH
OUT03H,AL;使8255AA口输出允许中断
MOVDI,OFFSETBUFF;设置地址指针
MOVCX,99;设置计数器初值
MOVAL,[DI]
OUT00H,AL;输出一个字符
INCDI
MOVAL,00H
OUT03H,AL;产生选通
INCAL
OUT03H,AL;撤消选通
STI;开中断
NEXT:
HLT;等待中断
LOOPNEXT;修改计数器的值,指向下一个要输出的字符
HLT
中断服务子程序如下:
ROUTINTR:
MOVAL,[DI]
OUT00H,AL:
从A口输出一个字符
MOVAL,00H
OUT03H,AL:
产生选通
INCAL
MOV03H,AL;撤消选通
INCDI:
修改地址指针
IRET:
中断返回
单元二串行接口与串行通信概述
知识目标:
了解串行通信的通信方式,了解信号的调制和解调,掌握串行接口芯片8251A主要功能、编程