第8章微型计算机常用接口和接口芯片ppt课件_第1页
第8章微型计算机常用接口和接口芯片ppt课件_第2页
第8章微型计算机常用接口和接口芯片ppt课件_第3页
第8章微型计算机常用接口和接口芯片ppt课件_第4页
第8章微型计算机常用接口和接口芯片ppt课件_第5页
已阅读5页,还剩249页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,微机原理与接口技术,作者:徐建平成贵学,.,第8章微型计算机常用接口和接口芯片,计算机接口是实现计算机与外部设备之间信息交换的桥梁,在微机系统的设计和应用过程中起着极其重要的作用。本章从应用角度出发,首先介绍计算机接口的相关知识,然后重点讲述典型微型计算机接口芯片8255A、8251A和8253A的外部引脚、内部结构、工作方式及编程方式。,.,【本章内容提要】,了解计算机接口的功能和结构掌握并行接口技术和串行接口技术的相关知识,以及RS-232C串行接口标准掌握可编程并行接口芯片8255A的结构、工作方式和编程方式掌握可编程串行接口芯片8251A的结构和编程方式掌握可编程定时器/计数器接口芯片8253A的结构、工作方式和编程方式,.,8.1微型计算机接口概述,计算机接口是主机与外部设备的连接部件,是CPU与外部设备进行信息交换的桥梁。任何外部设备都必须通过接口电路与系统总线相连。,.,8.1.1接口的功能与结构,接口的种类很多,有专门用于输入设备的输入接口,有专门用于连接输出设备的输出接口,也有用于连接通信设备的通信接口,等等,如图8-1所示。,.,.,1接口的功能,一般来说,接口都具有以下几方面的功能。,.,(1)数据缓冲功能,CPU的速度很高,而外设的速度相对较慢,为了解决CPU与外设速度不匹配的问题,接口中一般都设置数据寄存器或锁存器,将数据在输入/输出接口中缓存起来,从而起到缓冲、隔离和锁存的作用,避免因速度不一致而丢失数据。,.,(2)设备选择功能,微机系统中一般连有多种外设,每种外设也可能有多台,而CPU在同一时间只能选择一个接口进行数据传送,因此,只有被选中的设备才能与CPU进行数据交换。,.,(3)信息转换功能,由于计算机直接处理的信号形式和数据格式等与外设使用的可能不相同,接口可以在它们之间进行相互转换。例如数字量与模拟量的转换、串行数据与并行数据格式的转换等。,.,(4)I/O端口寻址功能,外设的接口电路中可能包含有若干个可供CPU直接访问的寄存器或功能电路,称为端口,例如数据端口、状态端口等。每个端口都对应一个端口地址,只有被选中的端口才能与CPU进行信息交换。接口电路通过对端口地址进行译码,从而找到相应的端口。,.,(5)与CPU和外设进行联络,CPU与外设进行数据传送时,接口电路:一方面接收和执行CPU送来的命令,实施对外设的控制和管理;另一方面将外设的状态信号或应答信号等工作状况反映给CPU。,.,(6)中断管理功能,在接口中可设置中断控制器,专门处理有关中断事务,使CPU与外设并行工作,以提高CPU的利用率。,.,(7)可编程功能,现在的接口芯片基本上都是可编程的,这样不需要改变硬件,只需修改相应的程序就可以改变接口的工作方式,大大增加了接口的灵活性和可扩充性。,.,2接口的结构,接口电路的内部通常是由数据寄存器、状态寄存器和控制寄存器构成的,如图8-2所示。,.,.,数据寄存器:可以读出可以写入,用来存放CPU与外设之间进行交换的数据信息。状态寄存器:只能读出不能写入,用来存放外设当前的工作状态信息。控制寄存器:只能写入不能读出,用来存放CPU向外设发送的控制命令信息。,.,可编程接口概述一个简单的具有输入功能和输出功能的可编程接口电路如下图:它包括一个输入接口,其组成主要是八位的三态门;一个输出接口,其组成主要是八位的锁存器;另外还有八位的多路转换开关及控制这个开关的寄存器FF。,.,.,8.1.2并行接口技术,按照与外部设备之间数据传输形式的不同,接口可以分为并行接口和串行接口两类。并行接口中有多条数据线,并且数据线的长度必须相同,每次可同时在两个设备之间并行传输多位数据。并行传输方式主要用于实现CPU与并行外设之间的近距离通信。计算机内的总线结构、并行打印机、LED显示器等都是采用并行传输方式。,.,.,并行接口一般具有以下几个特点:,在并行接口中,数据通道的宽度就是传输的位数。微型计算机中最常见的数据通道的宽度为8位,当采用并行接口与外设交换数据时,8位数据是同时传输的,称为8位并行接口。例如打印机的接口有8条数据线,每次可同时传送一个字符的ASCII码。数据通道的宽度也可以为16位、32位或更高。,.,并行接口中除了有数据通道以外,还应有握手联络信号,以实现接口和外设之间的联络。并行数据的传送格式不固定。并行通信的优点是传输速度快、处理简单;但是,当距离较远时,成本会大大增加。,.,8.1.3串行接口技术,计算机与外部信息交换方式有两种:一种是并行通信。并行通信时,数据各位同时传送。另一种是串行通信。串行通信时,数据和控制信息是一位接一位串行地传送下去。这样,虽然速度会慢一些,但传送距离比并行通信长,硬件电路也相应简单些。,.,1串行接口的特点,串行接口中一般只需要一条数据线,在串行通信传输时,数据一位一位按一定顺序进行传送,经过8个时间单位才能传送一个字节的数据。如果是双向串行接口,需要两条数据线,每个方向使用一条,如图8-4所示。,.,.,串行通信的硬件条件,在硬件上,串行通信系统的核心部件是移位寄存器在发端要有一个并入串出移位寄存器,在收端要有一个串入并出移位寄存器。,.,.,在实际传送过程中,发送端按固定的时间间隔依次向数据线发送高低不同的电平,接收端按照与发送端相同的时间间隔识别出相应的数据信息,并通过相应的联络线以保证数据传输的可靠性。,.,串行通信的同步为了可靠的串行通信,同步信号起到至关重要的作用。在理想情况下,同步信号应该在数据信号线上出现有效数据期间的中心点有效,因为这时数据线上的数据是最稳定的。,.,但在典型的串行通信系统中,是不存在同步信号线的!如何实现串行通信的中数据传送的同步呢?系统从软件和硬件两方面采取了后面提到的措施:设置波特率、设置数据的传送格式、设置波特率因子。,.,串行通信的优点是通信线路简单,且只需一对数据线,可以是电话线,这样大大降低了成本,特别适用于远距离通信。串行通信的抗干扰能力十分强。但是,串行通信的传送速度慢,若并行通信所需时间为T,则串行通信的时间至少为NT(其中N为位数)。,.,现在的台式PC机一般至少有两个RS232串行口COM1和COM2,通常COM1使用的是9针D形连接器,而COM2使用的是老式的DB25针连接器。,.,.,2数据传送速率,串行通信中反映数据传送速率主要有数据传输率和波特率两个指标。,.,(1)数据传输率,数据传输率是指单位时间内传输二进制代码的有效位数,其单位为bit/s或bps(位/秒)。数据传输率越高,要求传输通道的频带越宽。例如,在某串行通信中,每秒可以传送600个字符,每传送一个字符需要8位,则数据传输率为:600字符/秒8位/字符4800位/秒。,.,(2)波特率,波特率是指单位时间内信号电平变化的次数,它反映的是数据信号对载波的调制速率。常用的标准波特率为110、300、600、1200、1800、2400、4800、9600和19200。其中,如果数据未进行压缩,由于传送数据时除传送数据信息外,还需传送校验位等信息,故波特率要高于数据传输率;如果数据进行了压缩,则数据传输率要高于波特率。,.,3数据传送方式,串行通信中,数据通常是在两个设备之间进行传送,按照数据传送方式的不同而不同串行通信有单工、半双工和全双工三种传送方式。,.,(1)单工方式,仅使用一条数据线,数据只能沿一个固定的方向传送,这种数据传送方式为单工方式,如图8-5(a)所示。例如计算机与打印机之间只能是计算机向打印机传送数据,故为单工传送方式。,.,(2)半双工方式,可以使用一条或两条数据线,通信双方既可发送数据又可接收数据,但不能同时收发数据,这种数据传送方式为半双工方式,如图8-5(b)所示。在这种方式下,同一时刻只能由一方发送数据,另一方接收数据,并通过收/发开关进行方向转换。,.,(3)全双工方式,通信双方在同一时刻既可以发送数据又可以接收数据,使用两条数据线进行传输,这种数据传送方式为全双工方式,如图8-5(c)所示。在这种方式下,无需转换方向,数据能同时在两个方向上进行传送。,.,.,4通信控制方式,按照收发双方同步的方式,串行通信可分为异步通信和同步通信两类。,.,(1)异步通信,异步通信是指,数据以字符为单位按照约定的波特率进行传送,通信双方不需要专门的同步信号,分别用各自的时钟信号来控制发送和接收。,.,异步通信中数据的格式如图8-6所示,包括以下4个部分:起始位:字符开始的标志,占用一位,发送端开始传送数据时,在要发送的字符前加上低电平。数据位:位数可以是58位,字符编码为7位。奇偶校验位:用来校验所传送数据的正确性。如果是奇校验传输,使数据位和校验位中1的个数为奇数个;如果是偶校验传输,使数据位和校验位中1的个数为偶数个。停止位:字符结束的标志,位数可以是1位、1.5位或2位,发送端在要发送的字符后加上高电平。,.,.,这四部分将构成一个数据帧,它被作为异步通信传送数据时的基本单位。每一个字符以起始位和停止位作为字符开始和结束的标志。传送时,各个字符可以连续传送,也可以随机传送。在一个字符的停止位之后,立即发送下一个字符的起始位,开始一个新字符的传输,称为连续的串行数据传送;一个字符的停止位之后维持数据线的空闲状态,称为断续的串行数据传送。,.,波特率因子在异步通信方式进行通信时,发送端需要用时钟来决定每1位对应的时间长度,接收端也需要用一个时钟来测定每1位的时间长度前一个时钟叫发送时钟,后一个时钟叫接收时钟。这两个时钟的频率可以是波特率的数倍,一般取16倍、32倍或64倍。这个倍数就称为波特率因子。,.,(2)同步通信,在同步通信方式中,去掉异步通信时每个字符的起始位和停止位,在数据块之前加上同步字符,如下图所示。这样,在发送数据信号的同时发送一个时钟信号,使发送端和接收端在约定的波特率下保持同步。,.,.,.,.,5误码率和差错控制,在进行远距离通信时,由于线路本身特性的影响导致的随机噪声、信号衰减或畸变以及各种外界因素,都会造成信号在传输过程中失真,即接收端接收到的二进制数与发送端实际发送的二进制数不一致。,.,在数据通信过程中,一般用误码率(Pe)来衡量信道数据传输的质量。所谓误码率是指,二进制数据在传输过程中出现差错的概率,计算公式为:Pe发生差错的位数传输的总位数,.,串行接口的基本结构主要是异步接收/发送器(UART)它不仅包括并行数据和串行数据之间的相互转换,还有检测串行通信在传送过程中可能发生错误的逻辑部件。,6、异步接收/发送器(UART),.,.,TBE为发送数据缓冲寄存器空标志位,.,由于模拟信号的传输比数字信号传输更为有效,因而可将数字信号调制成模拟信号进行传输;接收时用解调器把接收的模拟信号再转换成数字信号。,7、信号的调制和解调,.,.,8.1.4RS-232C串行接口标准,RS(RecommendedStandard)-232C是目前最常用的一种串行接口标准,由美国电子工业协会EIA和国际电报电话咨询委员会CCITT联合制定。RS-232C中的信号电平与通常并行接口中使用的TTL电平是不同的:规定5V15V为逻辑“1”,5V15V为逻辑“0”。,.,.,.,设有一个微机化仪器,其内部的8086CPU要通过8255A实现与PC的串行通信。设数据的传输格式为1个起始位,8个数据位,1个停止位。要求传送波特率为1200,8255A的地址分布为88H8EH,C口的第0位作为发送数据线TxD,C口的第4位线作为接收数据线RxD。,【例子】,.,每一位所占用的时间。Td=ls/1200=1000ms/1200=0.833ms假设程序库中己有两个重要的延时程序:一个是delay1,其功能是延时0.833ms;另一个是delay2,其功能是延时0.417ms,即大约为delay1延时时间的一半。相应软件分3个程序段:8255A的初始化,串行发送程序段和串行接收程序段。,.,8255A初始化-根据上述要求,C口的低4位为输出,高4位为输入。A口、B口未用,设为方式0的输入方式。8255INITPROCFAR;8255初始化程序段MOVAL,10011010B;8255A方式控制字OUT8EH,ALMOVAL,00000001BOUT8EH,ALRET8255INITENDP,.,送数据程序段-其功能是把DL中的数据按照传输的格式发送出去。具体过程如下:(1)发送起始位;(2)通过寄存器DL右移发送数据位,过程如下:令i=0。发送DL中的第i位。i+1i。重复上两步8次。(3)发送停止位。(4)结束。,.,SIO_SENDPROCFAR;把DL中的数据通过PC0发送PUSHAX;保护现场PUSHCXPUSHDXPUSHFCALLSEND0;送起始位(发送数据0)MOVCX,8;循环送8位SIO_SEND3:SHRDL,1;第i位进CF标志JCSIO_SEND1;判断第i位是否为1CALLSEND0;第i位为0,则发送数据0JMPSIO_SEND2SIO_SENDl:CALLSEND1;第i位为1则发送数据1SIO_SEND2:LOOPSIO_SEND3;循环8次,.,CALLSEND1;送停止位(发送数据1)POPF;恢复现场POPDXPOPCXPOPAXRET;返回SIO_SENDENDP,.,SEND0PROCFARMOVAL,00000000B;发送数据0OUT8EH,AL;复位PC0,PC0=0CALLDELAY1;延时0.833MSRET;返回SEND0ENDPSEND1PROCFAR;发送数据1MOVAL,00000001B;置位PC0,PC0=1OUT8EH,ALCALLDELAY1RETSEND1ENDP,.,接收数据程序段其功能是把接收的数据存入寄存器DL中。这段程序比发送程序要稍微复杂些,它包括检测发送端是否有数据发送过来以及如何实现在数据有效期间的中点对接收信号线进行采样。,.,具体算法如下:(1)检测RxD线上是否是低电平:否,则重复本步骤;是,则执行下一步。(2)延时0.417ms对数据再采样,检测是否是低电平:否,则重复上一步;是,则认为是起始位,执行下一步。(3)通过寄存器DL移位采集数据。(4)判断最后1位是否是停止位(即逻辑1)。若是,表示正确接收数据,置CF有效。注意,步骤(1)、(2)的功能就是启动一次接收数据过程,同时使CPU在数据位的中心点进行采样。,.,;如果正确接收,CF=1,数据放在DL中SIO_REVPROCFARPUSHAXPUSHCXPUSHDXSIO_REV1:INAL,8CHTESTAL,00010000BJNZSIO_REV1CALLDELAY2;延时0.417毫秒INAL,8CH;在数据中心点再取样TESTAL,00010000B;再一次确认是否是起始位JNZSIO_REV1;不是起始位,转移MOVCX,8;置循环次数,开始采集8位数据SIO_REV2:CALLDELAY1;延时0.833毫秒INAL,8CH;采样TESTAL,00010000B;判断数据位是否是0,.,CLC;CF清0JZSIO_REV3;数据位为0,CF=0STC;数据位为1,CF=1SIO_REV3:RCRDL,1;把CF右移到寄存器DLLOOPSIO_REV2;重复采集8次CALLDELAY1;延时0.833毫秒INAL,8CH;取停止数据位TESTAL,00010000BCLCJZSIO_REV4;数据位为0,CF=0,数据不正确STC;数据位为1,CF=1,数据正确SIO_REV4:POPDX;恢复现场POPCXPOPAXRET;返回SIO_REVENDP,.,8.2可编程并行接口芯片8255A,8255A是Intel公司生产的一种高性能可编程输入/输出并行接口芯片,可以通过编程的方法来设定各种功能。由于它通用性强,使用灵活,可以方便地连接在Intel系列的微处理器系统中,所以应用较为普遍。,.,8.2.18255A的引脚及功能,8255A是40引脚的双列直插式芯片,其引脚如图8-10所示。下面分别介绍各个引脚的功能。,.,.,D7D0:三态、双向数据线,与CPU数据总线相连,用于传送数据。CS:片选信号,由CPU输入,低电平有效。该信号有效时,表示8255A被选中,允许与CPU交换信息。RD:读信号,输入,用于控制数据流的读出,低电平有效。该信号有效时,表示允许CPU从8255A端口中读取数据或状态信息。WR:写信号,输入,用于控制数据的写入。该信号有效时,表示允许CPU向8255A中写入数据。,.,A1和A0:端口选择信号,输入信号。8255A有3个独立的8位并行I/O端口A、B、C和一个控制寄存器,具有数据控制和锁存功能,利用该信号可以寻址各端口,如下表所示。,.,RESET:复位信号,输入信号,高电平有效。当该信号有效时,8255A复位,所有控制寄存器内容被清零,所有端口被置为输入方式。PA7PA0:端口A的输入/输出信号。PB7PB0:端口B的输入/输出信号。PC7PC0:端口C的输入/输出信号。,.,8.2.28255A的内部结构,8255A的内部结构如图8-11所示,它由以下四部分组成:,.,.,输入/输出端口:3个8位的并行端口A、B、C,其中,端口A和端口B分别有一个8位数据输出锁存/缓冲器和一个8位数据输入锁存器,端口C有一个8位数据输出锁存/缓冲器和一个8位数据输入缓冲器。端口C被分成高4位和低4位,可作为基本输入/输出端口、状态或控制信息传送端口,分别与端口A和端口B配合工作,.,.,控制寄存器:包括A组控制电路和B组控制电路,用于控制接收来自CPU的控制命令,控制端口A、B、C的工作方式。其中,A组控制电路用来控制端口A和端口C的高4位(PC7PC4),B组控制电路用来控制端口B和端口C的低4位(PC3PC0)。,.,数据总线缓冲器:三态、双向、8位寄存器,用于与系统数据总线相连是8255A与CPU进行信息传送的通道,可用来传送数据、控制命令和状态信息。,.,读/写控制逻辑:包括读出信号RD、写入信号WR、片选信号CS和端口选择信号A1、A0用于控制8255A内部寄存器的读/写操作,如表8-4所示。,.,+,.,8.2.38255A的工作方式,.,1方式0,方式0是8255A的基本输入/输出方式,其特点是无需设置联络信号,8255A就可以直接与外设进行简单的无条件数据传送。方式0适用于无条件数据传送或查询式数据传送。在这种方式下,3个端口都可以设置为输入/输出端口,但不能同时既作为输入又作为输出。其中,端口A和B为8位端口,输入、输出均有锁存能力;端口C可分为两个4位端口(高4位和低4位),仅对输出有锁存能力。,.,.,.,.,例1:8255A工作在方式0,8255A的A口和B口工作在方式0,A口为输入端口,接有四个开关。B口为输出端,接有一个七段发光二极管,连接电路如图所示。试编一程序要求七段发光二班管显示开关所拨通的数字。,.,电路,LED数码管,段码表,.,moval,90h;设置8255方式字movdx,ctrl_portoutdx,almovdx,a_portinal,dx;取键盘信息andal,0fh;屏蔽高4位movbx,offsettab1;取段码表首地址xlat;查表得段码movdx,b_port;输出显示outdx,almovcx,0600hadd2:loopadd2,.,2方式1,方式1是一种选通式输入/输出工作方式,其特点是与外设传送数据时,需要设置联络信号。在这种方式下,端口C的部分位用作选通控制信号,控制端口A和B的数据输入输出。,.,8255A在方式1时的输入信号,A口的选通信号,当其有效时,外设把数据打入A口的输入缓冲器,A口的输入缓冲器“满”信号,当其有效时表示A口的输入缓冲器已暂存一个有效数据。,A口的中断请求信号。当其有效时,8255A的A口向CPU申请中断,要求CPU从A口取数,中断允许信号。,.,.,方式1的输入状态字STB(Strobe选通,闸门);IBF(InputBufferFull);INTR(InterruptRequest);INTE(InterruptEnable);,.,STB:选通信号,由外设输入,低电平有效。当该信号有效时,将外设输入的数据锁存到端口A或B的输入锁存器中。对于端口A来说,由端口C的PC4来接收STB信号;对于端口B来说,由端口C的PC2来接收STB信号。,.,IBF:输入缓冲器满信号,向外设输出,是对STB的响应信号,高电平有效。当该信号有效时,表示由外设输入的数据已送到该端口的输入锁存器中。,.,INTR:中断请求信号,向CPU输出,用于请求以中断方式传送数据,高电平有效。,.,INTE:中断允许信号。由于INTE没有外部引出端,但可通过软件对C口置1或清0实现对中断的控制。若PC41,则端口A的中断允许信号INTE1;若PC40,则端口A的INTE0。如果PC21,则端口B的中断允许信号INTE1;若PC20,则端口B的INTE0。当INTE为1时,表示允许中断;为0时,表示禁止中断。,.,.,例2:8255A的A口和B口分别工作在方式1和方式0;A口为输入端口,接有8个开关;B口为输出端,接有8个发光二极管;连接电路如图所示。现要求用方式1把改变后的键信息输入到CPU并通过B口显示。,.,例题2电路图,.,这个系统的工作过程如下:1、用户通过改变K0K7,产生新的键信息;2、按下开关K,产生选通信号,数据进入A口的缓冲器。此步骤实际上告诉CPU,8255的A口来了一个新数据;3、IBFA有效使LED点亮。这里含有两个信息:一个是8255A通知CPU其A口来了一个新数据;另一个是告诉用户CPU尚未取走这个数据,用户不得再送其他数据;4、CPU取走这个数据,LED熄灭;5、转步骤1。,.,设8255的I/O地址分布为88H8EH,相应的程序段如下:moval,10111001b;设置A口为方式1的输入,Out8eh,alloop1:inal,8ch;取C口的状态线testal,00100000b;测试IBFA信息,即PC5jzloop1;等待用户设定新的键值,PC5=0转loop1movcx,0ffffh;延时,LED灯亮(相对于步骤3)loop2:looploop2inal,88h;取数。LED灯灭(相对于步骤4)out8Ah,al;更新B口的显示jmploop1;重复,.,8255A在方式1时的输出信号,外设回答信号。由外设发出。当其有效时,表示外设已接收数据。,A口的输出缓冲器“满”信号,当其有效时表示A口的输出缓冲器已暂存一个有效数据。,A口的中断请求信号。当其有效时,8255A的A口向CPU申请中断,要求CPU送数给A口,中断允许信号。,.,.,OBF:输出缓冲器满信号,向外设输出,低电平有效。此信号有效时,表示CPU已将数据写入数据端口。PC7用作从端口A输出的OBF信号;PC1用作从端口B输出的OBF信号。,.,ACK:应答信号,由外设输入,是对OBF的响应信号,低电平有效。此信号有效时,表示外设已接收到由8255A输出的数据。,.,INTR:中断请求信号,输出信号,用于请求以中断方式传送数据,高电平有效。,.,INTE:中断允许信号。这里也是通过软件操作改变C口的值来设置INTE。具体来讲,若PC61,则端口A的中断允许信号INTE1;若PC60,则端口A的INTE0。如果PC21,则端口B的中断允许信号INTE1;若PC20,则端口B的INTE0。当INTE为1时,表示允许中断;为0时,表示禁止中断。,.,.,例3:8255A的A口工作在方式1的输出,接有8个发光二极管现要求把内存中的10个数,通过A口发送给发光二极管以二进制的形式供用户抄录。,.,例题3电路图,.,这个系统的工作过程如下:,1、CPU把内存中的一个数据写入A口;2、LED灯亮,告诉用户LED显示的是新数据;3、用户抄录数据;4、用户按下开关K,发ACK信号,告诉CPU数据已取走;5、转第一步。,.,movcx,10;送10个数movbx,offsetxx;数组指针送bxMOVAL,10101001BOUT8EH,ALloop1:moval,bx;取数out88h,al;送数到A口loop2:inal,8ch;取C口状态线andal,80h;测试OBFA,即PC7jzloop2;即OBFA=0时转loop2;用户尚未抄录数据,检测;等待,;此时LED灯亮(对应步骤2)calldelay;用户已抄录数据,LED灯灭(对应步骤4)incbx;准备送下一个数looploop1;循环10次,.,3方式2,方式2是一种双向输入/输出工作方式,即同一端口的信号线既可以输入又可以输出。8255A只允许端口A工作于方式2下,此时端口A作为双向数据端口,既可以发送数据又可以接收数据。,.,外设回答信号。由外设发出。当其有效时,表示外设已接收数据。,A口的输出缓冲器“满”信号,当其有效时表示A口的输出缓冲器已暂存一个有效数据。,A口的中断请求信号。当其有效时,8255A的A口向CPU申请中断,要求CPU访问A口,中断允许信号。,中断允许信号。,A口的输入缓冲器“满”信号,当其有效时表示A口的输入缓冲器已暂存一个有效数据,A口的选通信号,当其有效时,外设把数据打入A口的输入缓冲器,.,.,8.2.48255A的编程方式,在初始化编程时,8255A的A、B、C三个端口的工作方式可以通过向控制端口写入控制字和状态字来设定的。其中,控制字用于设置三个端口的工作方式,状态字用于对端口C进行位操作。,.,1控制字的格式,8255A的控制字的格式如图8-21所示。,.,.,2状态字的格式,8255A的状态字的格式如图8-22所示。,.,.,【例8-1】,编写8255A的初始化程序:设8255A的端口地址为FF80HFF83H,其中端口A工作于方式0,输出数据;端口B工作于方式1,输入数据;端口C中的PC0设置为高电平输出,PC5设置为低电平输出。,.,初始化程序如下:,MOVDX,0FF83H;控制寄存器端口地址为FF83HMOVAL,10000110B;设置端口A和端口B的工作方式OUTDX,AL;将控制字写入控制端口MOVAL,00000001B;PC0设置为高电平输出OUTDX,AL;将控制字写入控制端口MOVAL,00001010B;PC5设置为低电平输出OUTDX,AL;将控制字写入控制端口,.,实训8-1并行打印机接口设计,将8255A的A口连接到一个并行打印机工作在方式1,数据输出采用查询方式设8255A的端口地址为300H303H将内存输出缓冲区BUFFER中的100H个字节数据送打印机输出,.,.,DSEGSEGMENTBUFFERDB100HDUP(?)DSEGENDSCSEGSEGMENTASSUMCS:CSEG,DS:DSEGSTART:MOVAX,DATAMOVDS,AX,.,MOVAL,0A8H;端口A工作于方式1,输出,PC4输入MOVDX,303H;将控制端口地址送入DXOUTDX,AL;将控制字写入控制端口MOVCX,100H;将传送字节数送入CXMOVSI,OFFSETBUFFER;将数据缓冲区首地址送入SI,.,LOP:MOVDX,302H;将端口C地址送入DXINAL,DX;读端口C,查询BUSY信号ANDAL,10H;保留PC4状态,判断BUSY=1?JNZLOP;若BUSY=1,则打印机处于忙状态MOVAL,SI;若BUSY=0,则打印机空闲,可以输出数据MOVDX,300H;将端口A地址送入DXOUTDX,AL;输出数据INCSI;修改数据缓冲区地址LOOPLOP;若数据未传送完毕,继续传送,.,常用的显示称为动态显示,它采用扫描显示技术,可以使硬件开销降低很多。对于一个8位数据显示,它就需要两个输出端口就可以了。其电路如图所示。在两个输出端口中,一个称为段信号通道,它用来输出要显示数据的段码;另一个称为位信号通道,用来决定当前要显示数据的位置。,2、人机交互接口动态显示,.,动态显示电路图,.,显示系统的具体工作步骤如下:,a、设要显示的初始位码i0;b、送第i位的段信号;c、送第i位的位信号;d、延时;e、i1if、如果i小于8,转bg、8位数据显示结束。,.,程序如下:a_portequ80h;定义8255A的四个端口b_portequ82hc_portequ84hctrl_portequ86hdatasegment;定义数据段tab1db3FH,06H,5BH,4FH,;定义段码表dispbuffdb2,0,1,0,0,5,1,8;定义显示缓冲区dataendscodesegmentmoval,10000001boutctrl_port,alloop1:calldisplayjmploop1,.,DISPLAYPROCMOVBX,OFFSETTAB1MOVSI,OFFSETDISBUFF+7MOVCX,8MOVAH,01DISP1:MOVAL,SIXLATOUTA_PORT,ALMOVAL,AHOUTB_PORT,ALCALLDELAY5MSSHLAH,1DECSILOOPDISP1RETDISPLAYEND,.,如下图所示为矩阵式键盘电路,其特点是由按键组成一个矩阵矩阵的行线和列线分别作为两个传输方向相反的I/O接口信号线,比如行线作为输入接口信号线,列线作为输出接口信号线,或反之。,3、人机交互接口键盘扫描,.,键盘扫描电路图,如果这个矩阵很大呢?,.,在翻转法中,行列线交换输入、输出,两步就可获取键位置信息。可见这种方法要比扫描法效率高。,.,翻转法程序流程如下:(1)设定行为输出,列为输入。(2)行输出为0,输入列信号j。(3)检查列信号是否全为1,若是,无键按下,转步骤(2);如果不全为1,表明有键按下,执行下步。(4)延时10ms,消除抖动。(5)逐列检测,找出为0的列信号j。(6)设定列为输出,行为输入。(7)列输出为0,输入行信号i。(8)检查行信号是否全为1,若是,表明按键有错,转错误处理;如果不全为1,表明有键按下,执行下步。(9)逐行检测,找出为0的行信号i。(10)用下式计算键号key_num=4i+j,.,基于翻转法的键盘输入信息的程序段如下:;定义8255A的4个端口地址MOVAL,10001000BOUTCTRL_PORT,ALMOVAL,0OUTC_PORT,ALNO_KEY:INAL,C_PORTANDAL,0F0HCMPAL,0F0HJZNO_KEYCALLDELAY10MS,.,INAL,C_PORTSHRAL,1;把列信号信息移到低4位SHRAL,1SHRAL,1SHRAL,1MOVDL,0;置初始列变量DL为0MOVCX,4LOOP1:SHRAL,1;该循环为步骤(5)JNCLOOP2;CF=0转loop2INCDLLOOPLOOP1,.,LOOP2:MOVAL,10000001B;步骤(6)OUTCTRL_PORT,ALMOVAL,0;步骤(7)OUTC_PORT,ALINAL,C_PORTANDAL,0FHCMPAL,0FH;步骤(8)JZERROR;键盘有错,转错误处理程序MOVDH,0;置初始行变量DH为0MOVCX,4LOOP3:SHRAL,1;该循环为步骤(9)JNCLOOP4INCDHLOOPLOOP3LOOP4:SHLDH,1;步骤CIO)SHLDH,1ADDDH,DL;DH为键号,.,8.3可编程串行接口芯片8251A,8251A是一种可编程的通用串行通信接口芯片,用于CPU与外部设备之间进行串行通信。它具有双缓冲结构的发送器和接收器,可通过编程选择同步方式或异步方式传送,具有奇偶、溢出和帧错误等检测电路。,.,在同步方式下,传送字符可定义为58位,波特率可选择为064kb/s,可自动检测同步字符,从而实现同步;在异步方式下,传送字符可定义为58位波特率可选择为019.2kb/s,时钟频率为通信波特率的1倍、16倍或64倍,可自动产生起始位和停止位。,.,8.3.18251A的引脚及功能,8251A的引脚信号线包括两类,分别是与CPU接口的信号线和与外设或调制解调器接口的信号线,如图8-25所示,各引脚的功能如下。,.,.,D7D0:8位三态、双向数据线,与系统数据总线相连,用于传送数据、控制信息和状态信息。RD:读信号,低电平有效。该信号有效时,CPU从8251A读取数据或状态信息。WR:写信号,低电平有效。该信号有效时,CPU向8251A写入数据或控制信息。CS:片选信号,低电平有效。该信号有效时,表示8251A芯片被选中,通常由CPU的地址信号经译码后得到。,.,C/D:控制/数据信号,用来作为数据端口/控制端口的选择信号。若此信号为高电平,则当前访问的是控制端口;若为低电平,则当前访问的是数据端口。RESET:复位信号,输入,该信号有效时,芯片复位,芯片处于空闲状态,等待命令。CLK:时钟输入信号,为芯片内部电路提供定时信号。,.,TXRDY:发送器准备好信号,输出,高电平有效。该信号有效时,通知CPU该芯片已准备好发送数据。在查询方式下,该信号可用来作为状态信号;在中断方式下,该信号可用来作为中断请求信号。,.,TXE:发送器空信号,输出,高电平有效。该信号有效时,表示发送器中的并行到串行转换器空,发送器中的数据已经发送出去。,.,RXRDY:接收器准备好信号,输出,高电平有效。该信号有效时,表示8251A已经接收到一个数据,可以传送到CPU。在查询方式下,该信号可用来作为状态信号;在中断方式下,该信号可用来作为中断请求信号。,.,SYNDET:同步检测信号,用于同步方式。若其工作于内同步方式时,该引脚作为输出端。当检测到一个或两个同步字符后,该引脚输出高电平,表示8251A已达到同步;当CPU执行一次读状态操作时,该信号复位。若其工作于外同步方式时,该引脚作为输入端,输入一个正跳变信号后,使8251A在下一个RXC的下降沿开始收集数据,并且至少维持一个RXC周期。,.,DTR:数据终端准备好信号,输出,低电平有效。该信号有效时,表示8251A准备就绪。DSR:数据设备准备好信号,输入,低电平有效。该信号有效时,表示外设或调制解调器已经准备好。,.,RTS:请求发送信号,输出,低电平有效。该信号有效时,表示CPU已经准备好发送。CTS:清除发送信号,输入,低电平有效,是对RTS信号的响应。该信号有效时8251A才能发送数据。,.,TXD:发送器数据输出端,由CPU送来的并行数据被转换为串行数据后,通过该引脚送往外设。TXC:发送器时钟输入信号,用来控制发送字符的速度。在同步方式下,TXC的时钟频率等于数据波特率;在异步方式下,TXC的时钟频率等于数据波特率的1倍、16倍或64倍。,.,RXD:接收器数据输入端,用来接收外设送来的串行数据,数据进入8251A后被转换为并行数据。RXC:接收器时钟输入信号,用来控制接收字符的速度。RXC时钟频率与数据波特率的关系同TXC。,.,8.3.28251A的内部结构,8251A是由数据总线缓冲器、发送器、接收器、读/写控制逻辑和调制解调控制逻辑5部分组成的,其内部结构如图8-26所示。,.,.,数据总线缓冲器,包含3个双向、三态的8位缓冲器,分别是状态缓冲器、发送数据/命令缓冲器和接收数据缓冲器它将8251A与系统数据总线相连。在CPU执行输入/输出指令时,CPU通过数据总线缓冲器发送和接收数据,并通过它写入控制字和命令字,以及从中读取执行命令时产生的各种状态信息。,.,发送器,包含发送缓冲器和发送控制电路两部分。当CPU要向外设发送数据时,发送器将要发送的并行数据锁存,并将其转换成串行数据后由TXD引脚发送出去。在异步方式下,发送控制电路自动加上起始位,并根据程序的规定加上适当的奇偶校验位和停止位(1位、1.5位或2位);在同步方式下,发送器在要发送的数据前插入一个或两个同步字符,在数据中,插入奇偶校验位。,.,接收器,包含接收缓冲器和接收控制电路两部分。接收器接收RXD引脚上的串行数据,并按规定的格式将其转换成并行数据存放在数据总线缓冲器中。,.,在异步方式下,当8251A允许接收和准备好接收数据时,接收器开始监视RXD引脚上的电平。无字符传送时,RXD引脚为高电平当检测到RXD上的电平由高变为低时,则认为它是起始位接收器开始进行采样,再经过奇偶校验和去掉停止位后,使串行数据转换成并行数据,并送入接收缓冲器中,同时发出RXRDY信号,告诉CPU已经接收到字符。,.,在同步方式下,接收器要监测RXD上的同步字符每接收到一个数据位就将其与同步字符寄存器的内容进行比较,两者相等时确认达到同步同时置SYNDET信号为高电平,接收器开始从RXD引脚接收串行数据,将其转换成并行数据后送入数据总线缓冲器中同时发出RXRDY信号。,.,读/写控制逻辑,接收CPU发出的各种控制信号并进行译码同时向8251A内部各功能部件发出有关的控制信号,实现对8251A的读/写操作方式如表8-5所示。,.,.,调制解调控制逻辑,使8251A直接与调制解调器相连,从而实现远程串行通信。,.,CPU通过8251与串行外设接口,.,8.3.38251A的编程方式,8251A是一个可编程的多功能串行接口芯片在使用前必须首先对它进行初始化编程,以确定其工作方式、传送的波特率和字符格式等。初始化编程必须在系统复位(RESET)以后,在8251A工作之前进行。8251A初始化编程的流程图如图8-27所示。,.,.,8251A的编程包括两方面的内容,分别是:CPU向8251A发送方式选择字和操作命令字,8251A向CPU发送状态字。,.,编程的过程如下:,先使用方式选择字,如果8251A工作在异步方式下,那么必须紧跟操作命令字,然后才可以进行数据传递。在数据传送过程中,可使用操作命令字重新定义,或只用状态字读取8251A的工作状态。如果要定义新的工作方式,必须使用操作命令字将其返回到方式选择字,使其接受新的方式,从而改变工作方式。,.,1方式选择字,方式控制字用于对8251A的工作方式进行选择,其格式如图8-28所示,。,.,.,【例8-2】,某异步通信中,其数据位为8位,1位起始位,2位停止位,奇校验,波特率系数是16,其初始化程序为:MOVDX,89H;8251A的控制端口MOVAL,0DEH;方式选择字为:;11011110B0DEHOUTDX,AL,.,2操作命令字,操作命令字用于使8251A处于某种规定的工作状态,以便接收或发送数据,其格式如图8-29所示。,.,D0(TXEN):发送允许,D01时允许发送;D00时禁止发送。可作为发送中断屏蔽位。D1(DTR):数据终端准备好,D11时强制DTR发送低电平,表示终端设备已准备好;D10时置DTR无效。D2(RXE):接收允许,D21时允许8251A接收数据;D20时禁止接收数据。可作为接收中断屏蔽位。D3(SBRK):送中止字符,D31时强制TXD处于低电平,发送“0”信号。正常通信过程中,SBRK应保持为0,.,D4(ER):错误标志复位,D4=1时使全部错误标志(PE、OE和FE)复位。D5(RTS):请求发送,D5=1时强制RTS发送低电平,表示请求向外部设备或调制解调器发送数据。D6(IR):内部复位,D6=1时使8251A内部复位,使之回到准备接收方式选择字状态。D7(EH):同步搜索方式,D7=1时启动搜索同步字符。,.,【例8-3】,使8251A内部复位且允许接收和发送数据的初始化程序为:MOVDX,89H;8251A的控制端口MOVAL,40H;置D6=1,操作命令字为;01000000B=40HOUTDX,ALMOVAL,05H;置D2=1,D0=1,操作命令字为;00000101B05HOUTDX,AL,.,3状态字,8251A中设有状态寄存器,CPU通过I/O操作读入状态字从而获得状态信息,用以控制CPU和8251A之间的数据交换。状态字的格式如图8-30所示。,.,D0(TXRDY):发送器准备好,即发送缓冲器空时该位被置1。D1(RXRDY)、D2(TXE)、D6(SYNDET)和D7(DSR):同8251A引脚定义。D3(PE):奇偶错,当检测到奇偶错误时,PE置位。PE有效并不禁止8251A工作,它由操作命令字中的ER复位。,.,D4(OE):溢出错,当下一个字符变为有效时,上一个字符未被CPU取走,则OE置位。OE有效并不禁止8251A工作,但是上一个字符丢失,它由操作命令字中的ER复位。D5(FE):帧错误,接收到的任意字符结尾没有检测到规定的停止位时,则FE置位。FE有效并不禁止8251A工作,它由操作命令字中的ER复位。,.,【例8-4】,查询8251A接收器是否准备好的程序段如下:MOVDX,89H;8251A的状态端口NEXT:INAL,DX;读状态口信息ANDAL,02H;查询D11?,;判断接收器是否准备好JZNEXT;未准备好,程序转移至NEXTMOVDX,88H;8251A的数据端口INAL,DX;已准备好,则读入数据,.,实训8-2两台PC机通过8251A进行串行通信,.,1电路设计,利用8251A通过标准串行接口标准RS-232C实现两台8086PC机之间相互通信的系统连接图如图8-31所示。两台PC机之间采用半双工通信方式,只需要将它们的串行数据发送端同串行数据接收端相连,并把地线连在一起,便可以实现通信。为了使8251A能够满足调制解调器在电平方面的要求,要利用RS-232C标准,将8251A的TXD的TTL电平转换成RS-232C电平进行传送,然后再将它变回TTL电平由另一台PC机的8251A接收。,.,.,设系统采用查询方式控制串行通信的过程,即CPU通过不断地采样串行接口的状态来确定其操作。,.,2程序设计,数据的发送程序和接收程序分开编写,每段程序中都包括8551A的初始化、状态查询和数据输入/输出三部分。,.,(1)数据发送程序,START:MOVDX,49H;控制端口地址MOVAL,7EH;方式选择字为;01111110B7EHOUTDX,ALMOVAL,11H;操作命令字为;00010001B11HOUTDX,AL;允许发送,清除错误标志,.,MOVCX,3CH;传送字节数MOVSI,100H;设置地址指针TXD:MOVDX,49H;状态端口地址INAL,DX;读状态字TESTAL,38H;查询发送器是否有三种错误的任何标志JNZERR;有错,转出错处理ANDAL,01H;查询TXRDY是否有效JZTXD;无效则继续查询MOVDX,48H;数据端口地址MOVAL,SI;读取一个字节数据OUTD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论