第6章 串行并行接口_第1页
第6章 串行并行接口_第2页
第6章 串行并行接口_第3页
第6章 串行并行接口_第4页
第6章 串行并行接口_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

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

文档简介

第6章基本I/O接口输入输出设备是计算机的重要组成部分,计算机通过它们与外界交换数据,用户也通过它们来使用计算机。由于外设种类繁多,速度快慢差距很大,工作信号类型多样,所以在计算机系统中通常都是将设备通过接口与系统相连,而不是直接与系统总线相连。本章主要讨论以下问题:①什么是I/O接口,I/O接口的主要作用;②计算机与接口之间的数据传输机制;③

CPU对接口芯片的控制方法(用户如何使用接口);④常用的接口控制芯片的功能作用及编程控制使用。⑤计算机接口发展趋势。本章涉及教材内容:第6章、第7章6.1I/O接口概述计算机工作时,计算机系统必须与外部设备进行交换信息。用户通过输入设备将命令、数据输入计算机,计算机通过输出设备将处理的结果输出计算机。由于外设种类繁多,速度快慢差距很大,工作信号类型多样,所以在计算机系统中通常都是将设备通过I/O接口与计算机系统相连。1.I/O接口接口:接口可以看作是两个系统或两个部件之间的交界部分,它既可以是两种硬件设备之间的连接电路,也可以是两个软件之间的共同逻辑边界。I/O接口:把主机(系统总线)与外围设备或其他外部系统之间的接口逻辑,称为输入/输出接口(简称I/O接口),接口在它所连接的两个部件之间起着转换器的作用。2I/O接口的功能①寻址接口逻辑接收总线送来的寻址信息,经过译码,选择多台外部设备中的一台,或该设备中的某个有关的寄存器。②实现数据缓冲在接口电路中,一般设置一组数据缓冲寄存器,以补偿各设备之间的速度差。③实现数据格式转换、电平变换等预处理。接口与总线之间一般采用并行数据传输,接口与外设之间有并行传输,也有串行传输,数据传输前必须先进行数据格式的转换。设备使用的信号电平与总线使用的信号电平有可能不同,必须进行电平转换。④实现控制逻辑CPU与I/O设备的通信控制是主机通过总线向接口传输命令信息的,接口要予以解释,并产生相应的操作命令发送给设备。接口连接的设备及接口本身的有关信息,通过总线传输给CPU。当采用中断方式控制信息的传输时,接口中应有相应的中断控制逻辑。当采用DMA方式控制信息传输,接口中应有相应的DMA控制逻辑。⑤检错I/O接口负责检错,随后将错误信息报告给CPU。一类错误是设备中的电路故障,另一类错误是数据传输时数据位出错。传输中的错误经常用一些检验码进行检测,如奇偶校验,保证数据无错传输。⑥与主机和设备通信上述功能都必须通过I/O接口与主机或与设备之间的通信来完成。6.1.1I/O指令I/O指令是专门用于计算机与外设交换信息的命令。①CPU不设专门的I/O指令:CPU不设专门的I/O指令,把外设看成存储器对待,外设与主存储器采用统一编址,对外设的操作就等同对内存的操作,输入采用访问存储器的读指令,输出采用访问存储器的写指令。优点是CPU设计简单,缺点是外设占内存空间地址,外部译码电路复杂。②CPU设专门的I/O指令:CPU设专门的I/O指令:输入指令和输出指令。如80X系列的CPU就是采用这种方法。优点是外设不占内存空间地址,外部译码电路简单。缺点是CPU中增加了指令,增加了CPU设计的复杂程度。输入指令INS:将外设数据输入计算机系统格式:INAL(X),DX(端口地址)输出指令OUTS:计算机系统将数据输出到外设。格式:OUTDX(端口地址),AL(X)INAL,P8;从P8端口输入一个字节到ALINAX,P8;从P8端口输入一个字到AXINEAX,P8;从P8端口输入一个双字到EAXINAL,DX;从端口(DX)输入一个字节到ALINAX,DX;从端口(DX)输入一个字到AXINEAX,DX;从端口(DX)输入一个双字到EAX注:P8表示端口地址小于256INSB;从端口(DX)输入一个字节到ES:DI存储单元且DI=DI±1INSW;从端口(DX)输入一个字到ES:DI存储单元且DI=DI±2INSD;从端口(DX)输入一个双字到ES:DI存储单元且DI=DI±4IN指令实现端口数据送累加器(AL、AX、EAX)INS指令实现端口数据送存储器单元ES:DI端口地址存放在DX中或直接使用端口号P8(当端口号小于256时)OUTP8,AL;从AL输出一个字节到P8OUTP8,AX;从AX输出一个字到P8OUTP8,EAX;从EAX输出一个双字节到P8OUTDX,AL;从AL输出一个字节到端口(DX)OUTDX,AX;从AL输出一个字到端口(DX)OUTDX,EAX;从EAL输出一个双字到端口(DX)OUTSB;从存储器DS:SI输出一个字节到端口(DX)且SI=SI±1OUTSW;从存储器DS:SI输出一个字到端口(DX)且SI=SI±2OUTSD从存储器DS:SI输出一个双字到端口(DX)且SI=SI±4OUT指令实现送累加器(AL、AX、EAX)数据送端口OUTS指令实现存储器单元DS:SI数据送端口端口地址存放在DX中或直接使用端口号P8(当端口号小于256时)6.2存储器映象I/O及隔离式I/O所谓存储器映象I/O及隔离式I/O,实际上就是采用何种方式对外设进行编址访问。CPU对外设的操作其实是按址进行访问的,如何分辨是对内存单元进行访问还是对外设进行访问取决于对内存和外设的编址方式。编址方式有两种:独立编址(隔离式I/O)和统一编址(存储器映象I/O)。有的系统喜欢采用独立编址(隔离式I/O),有的系统喜欢采用统一编址(存储器映象I/O)。6.2.1存储器映像式接口编址方式存储器映像式接口编址方式又称统一编址方式,其方法是对每一个外设端口分配一个存储器地址,对端口的输入输出操作完全等同于对内存的操作,都是采用访存指令(MOV指令)。读内存操作相当于输入操作,写内存操作相当于输出操作,端口地址占内存地址。MC6800/MCS51等单片机均采用此方法。为了区别是对内存进行访问还是端口访问,在一开始进行硬件系统设计时就对全部可寻址空间进行分段,一部分分给内存使用另一部分给端口使用。统一编址的优点:是在CPU指令系统中不设置输入输出指令(统一使用MOV指令),简化了CPU的设计。端口数不受限制。统一编址的缺点是:端口占内存地址,使内存实际可使用的地址空间减少,而且在硬件设计时要采用地址译码电路对地址进行译码选择。另外,程序可读性差。6.2.2隔离式I/O接口编址方式隔离式I/O接口编址方式又称独立编址方式,其方法是对每一个外设端口的编址与对存储器的编址时相互独立的,对端口的输入输出操作采用专门的指令(INS、OUTS指令),80X系列CPU采用此种方法。对于同一地址到底是访问端口还是访问存储器完全取决于所执行的指令。IN/OUT指令分别在CPU对应的IOR和IOW引脚上产生有效控制信号。MOV指令分别在CPU对应的MEMR和MEMW引脚上产生有效控制信号。独立编址的优点:是在CPU指令系统中设置专门的输入输出指令(IN/OUT指令),程序的可读写强,另外I/O端口地址不占内存地址空间。独立编址的缺点是:CPU中增加了输入输出指令,增加了CPU的复杂性,在封装上增加了对I/O端口读写操作控制引脚,硬件电路设计较复杂。6.2.3PC机I/O接口地址分配PC采用独立编址,因此内存的地址空间和I/O端口的地址是重叠的,为了区别同一地址是访问内存还是访问I/O端口,在引脚的控制信号上来区别,这些控制信号是:存储器读MEMR(执行MOVReg,存储器单元)存储器写MEMW(执行MOV存储器单元,Reg)I/O读IOR(执行INS指令)I/O写IOW(执行OUTS指令)任何时候只有一个信号有效。PC机对I/O地址空间进行了分段:①0000H~03FFH地址保留给系统和ISA总线;②0400H~FFFFH地址用于用户扩展接口;③Intel80287使用端口地址00F8H~00FFH;④80387~PⅡ协处理器使用端口地址800000F8H~800000FFH。除了保留给系统使用的地址外,其他的端口地址用户都可以自己定义使用。6.3I/O接口地址的译码方法当执行I/O操作时,首先系统要将所寻找的I/O端口地址(二进制)送地址总线(A15~A0)上,I/O端口必须对总线地址进行译码选择,只有被选中的I/O端口才能与系统进行通信。常见的译码有四种①

门电压路译码法(地址:17DH)②

译码器译码法③

比较器译码法由于这三种方法采用的都是小规模的集成电路,电路板的集成度低,目前已淘汰。④可编程逻辑器件译码法前三种译码除了集成度低外,一旦电路设计好了,端口地址也就全部被固定死了,不便修改,容易引起地址冲突(两个以上I/O端口使用同一个端口地址)。为了实现硬件系统的即插即用(系统自动检测设备,并根据系统情况为设备分配I/O端口地址),系统中大都采用可编程器件来完成地址译码。小规模的可以选择GAL来实现,大规模的可以运用EDA(电子线路设计技术)来实现。下面我们通过GAL16V8实例来说明其译码方法:①根据要求选择芯片(假设就选择GAL16V8);②根据芯片分配引脚,然后写出逻辑表达式;③运用专门的开发软件(ABEL)编写源程序;④对源程序进行编译形成JED文件(熔丝文件);⑤在专门的开发器上将熔丝文件下载到GAL16V8芯片中;⑥对该芯片在给定的输入信号下进行实测检测。实现地址译码的的逻辑关系:Y0=A15·A14·A13;Y0·OE=VCCY1=A15·A14·A13;Y1·OE=VCCY2=A15·A14·A13;Y2·OE=VCCY3=A15·A14·A13;Y3·OE=VCCY4=A15·A14·A13;Y4·OE=VCCY5=A15·A14·A13.IOW;Y5·OE=VCC芯片的引脚定义如图实际译码地址范围:Y0=1,地址范围:0000~1FFFHY1=1,地址范围:2000~3FFFHY2=1,地址范围:4000~5FFFHY3=1,地址范围:6000~7FFFHY4=1,地址范围:8000~8FFFHY5=1,地址范围:A000~BFFFH(且IOW=1)或:Y5=0,地址范围:A000~BFFFH(且IOW=0)也就是说I/O端口地址范围:A000~BFFFH/Y0=/A15·/A14·/A13;000xxxxxxxxxxxxx/Y1=/A15·/A14·A13;001xxxxxxxxxxxxx

/Y2=/A15·A14·/A13;010xxxxxxxxxxxxx

/Y3=/A15·A14·A13;011xxxxxxxxxxxxx/Y4=A15·/A14·/A13;100xxxxxxxxxxxxx/Y5=A15·/A14·A13./IOW;101xxxxxxxxxxxxx

6.4可编程并行接口-8255A(教材P255,7.2)8255A是Intel专门为8086CPU设计的可编程外围接口电路(ProgrammablePeripheralInterface),简称PPI。8255A具有三个8位的并行I/O口,并具有三种工作方式,且各口的工作方式可以通过程序进行设定。下面重点讨论8255A的应用6.4.18255A的内部结构及引脚8255A是40引脚双排直立封装,其引脚分三部分:1.与外设接口部分8255A与外设接口是3个并行端分别为A、B、C端口。其端口A引脚为PA7~PA0、端口B引脚为PB7~PB0、端口C引脚为PC7~PC0。这24根引脚都是双向三态的,其中PA、PB具有较大的输出电流。其工作方式可以通过初时化设定。PA、PB可作为一般的输入输出口,PC口可以分成两个4位口,还可以进行位控制。2.与微处理器接口包括两部分:①数据总线接口是8位双向的三态数据缓冲总线接口,D0~D7。所有数据输入输出都是通过该接口完成。②读写控制逻辑及端口选择RESET:复位信号,高电平有效,复位时片内寄存器清0且PA、PB、PC均为输入态。CS:片选信号,低点平有效。A1、A0:分别用来选择内部控制寄存器还是选择PA、PB、PC端口。RD:读控制线,读取由A1、A0选中的端口或内部控制寄存器数据到D7~D0。WR:写控制线,将D7~D0上的数据写入有A1、A0选中的端口或内部控制寄存器。实际使用时CS、A1、A0、RD、WR是配合使用的。这是硬件系统设计时重点考虑的,它涉及到芯片的端口地址及软件编程。这5条控制引脚的信号状态的不同组合表示的操作关系于下表:A1A0RDWRCS工作状态00010PA→D7~D001010PB→D7~D010010PC→D7~D000100D7~D0→PA01100D7~D0→PB10100D7~D0→PC11100D7~D0→控制寄存器XXXX1端口输出为高阻11010非法状态XX110端口输出为高阻D7-D0RDCSPAPBPCPCD7-D0WRCSPAPBA1A0RDWRCS3.工作电压采用单电源5V供电。4.内部控制部分由A、B两组控制电路组成:①A组(端口A和端口C的高4位组成);②B组(端口B和端口C的低4位组成)。A、B组的工作方式由CPU送来的控制字决定:另外根据控制字的要求还可以对端口C进行置位或复位。6.4.28255A的三种工作方式8255A有三种基本工作方式,分别是:①方式0:基本的输入/输出方式;②方式1:选通的输入/输出方式;③方式2:双向选通传送方式。1.工作方式0工作方式0是基本的输入输出方式。在这种方式下三个端口分为A组(端口A和端口C的高4位组成)和B组(端口B和端口C的低4位组成),每个端口都可以通过编程使其工作在输入或输出状态,没有固定的应答信号联络信号。方式0的主要功能:①具有两8位端口(A、B)和两个4位端口(C高低4位);②任何一个端口都可设为输入或输出端口;③输出时数据锁存,输入时不锁存;④只需要用简单的读写指令就可以传输数据。只要WR、RD有效就可以传输数据;INAL,DX(端口地址);产生RD控制信号OUTDX,AL

;产生WR控制信号⑤C口作为8位、4位口也可以按位进行操作。数据总线缓冲器读/写控制逻辑A组端口A(8)A组端口C上半部

B组端口C下半部

B组端口B(8)A组控制B组控制8位内部数据总线内部逻辑外设接口D7-0RDWRA0A1RESETCSI/OPA7-0I/OPC7-4I/OPC3-0I/OPB7-0CPU接口2.工作方式1工作方式1是选通的输入输出方式。在这种方式下A端口B端口用作输入、输出端口,C端口作为A、B端口输入输出选通信号。在这种工作方式下,选通信号与输入/输出数据一起传送,由选通信号对数据口进行选通。工作方式1的基本功能:①三个端口分A组(端口A和C的PC7~PC3高5位控制/状态端口组成)和B组(端口B和C的PC2~PC0低3位状态端口组成);②任何一个端口都可设为输入或输出端口,输入输出都可以锁存;③C口除了指示两组数据端口的状态及选通信号外,其余口线可作基本的I/O口;⑴方式1工作在输入状态在输入状态下C端口的引脚联络信号功能:STB(StroBe):引脚PC4(PC2),选通输入,低电平有效。是外设送来的信号,用来将输入数据送输入A口(B口)锁存器。IBF(InputBufferFull):引脚PC5(PC1)输入缓冲满信号,高电平有效,表示数据已送输入数据锁存器。在STB下降沿置位,在RD上升沿复位。方式1(A口)PA7-0PC4&INTEAINTRAI/OIBFASTBA2PC5PC3PC6、7D7-D0RDPC0方式1:输入端口PC4外设外设RD&INTRB方式1(B口)PB7-0PC2PC1INTEBSTBBIBFBD7-D0CPUCPUPC2INTR(Interrupt

Reruest):中断请求信号,(PC3和PC0)高电平有效。当外部设备要向CPU传送数据或请求服务时,8255就用INTR向CPU发出中断请求。当STB、

IBF和INTE都为高电平时,表明数据已写入输入数据缓冲区,使INTR成为高电平。CPU响应中断,在RD信号控制下读出输入数据缓冲区的数据,并且在RD的下降沿使INTR复位,上升沿使IBF复位,为输入下一个数据作准备。INTE(Interruptenable):中断允许信号。其复位/或置位是由PC4(A口)或PC2(B口)的位操作来实现的。其位操作只影响INTE的状态,而不影响PC4或PC2的引脚状态。做输入端口时序图外设送数据到端口并发STB①②③④8255发IBF表示输入缓冲区满,并发INTR申请中断CPU响应中断读数据撤销IBF,准备下次送数PABINTRIBFRDD0~D7INAL,DXSTB⑵方式1工作在输出状态在输出状态下C端口的引脚联络信号功能:OBF(OutputBufferFull):输出缓冲满信号,低电平有效,表示CPU已将数据送输8255A并锁存在相应的端口上。8255A发出的数据选通信号。ACK(Acknowledge):外设应答信号,低电平有效。表示外设已从8255的端口取走CPU送来的数据。方式1(A口)PA7-0PC6&INTEAINTRAI/OOBFAACKA2PC7PC3PC4、5D7-D0WR方式1:输出端口PC6外设WR&INTRB方式1(B口)PB7-0PC2PC1INTEBACKBOBFBD7-D0PC0PC2CPU外设CPUINTR(Interrupt

Reruest):中断请求信号,高电平有效。当外部设备接到数据后,若端口允许中断,即ACK、OBF和INTE都为高电平时,使INTR成为高电平。请求CPU再输出数据,并且在WR的上升清零。INTE(Interruptenable):中断允许信号。其复位/或置位是由PC6(A口)或PC2(B口)的位操作来实现的。其位操作只影响INTE的状态,而不影响PC6或PC2的引脚状态。做输出端口时序图

CPU送数据到数据总线并发写信号①②④③8255发OBF表示输出缓冲区满,并使INTR低电平外设检查到8255的OBF并读取数据,发响应信号ACK8255接到ACK信号,表示外设已经取走了数据,发INTR给CPU申请中断,CPU响应中断再发下一个数据3.工作方式2A口除工作方式0和工作方式1外还可以工作于方式2。在这种方式下,A口是双向的,既可以发送数,也可以接收数据。只有A口具有方式2。工作方式2的基本功能:①A口工作于双向方式,C口的PC7~PC3位作为A口的控制/状态信号端口,PC2~PC0可用于B组;②A口输入输出都可以锁存,在方式2下,A口既可以工作在查询也可工作在中断方式。A口工作在方式2状态下C端口的引脚联络信号功能:STBA(StroBe):引脚PC4,选通输入,低电平有效。是外设送来的信号,用来将输入数据送输入锁存器。IBFA(InputBufferFull):输入缓冲满信号,高电平有效,表示数据已送输入数据锁存器。OBFA(OutputBufferFull):输出缓冲满信号,低电平有效,表示CPU已将数据送A口。PA7-0PC7PC6PC3PC2-0I/OPC3+INTE1&PC4&INTE23方式2:输入输出端口(A口)外设INTRAIBFASTBARDCPUD7-0WROBFACKA输入输出INTRAACKA(Acknowledge):外设应答信号,低电平有效。用来启动A口三态输出缓冲器输出数据。INTRA(Interrupt

Reruest):中断请求信号,高电平有效。输入/输出状态下都可以向CPU发出中断请求。INTE1(Interruptenable1):中断允许信号。是一个与/OBFA相关的中断允许触发器,其复位/或置位是由PC6的位操作来实现的。INTE2(Interruptenable2):中断允许信号。是一个与/IBFA相关的中断允许触发器,其复位/或置位是由PC4的位操作来实现的。6.4.38255A的控制字8255A的所有工作方式都是可编程实现的,一种是通过工作方式控制字来实现,另一种是通过端口C按位进行控制。1.工作方式控制字8255A的三种基本方式是靠输入到控制寄存器中的控制字来实现的。通常把这个过程称为对8255A初时化。工作方式控制字的格式:D7D6D5D4D3D2D1D01A组控制D6~D3D3:C口高位控制0输出1输入D4:A口0输出1输入D6D5:方式选择00方式001方式11×方式2B组控制D2~D0D0:C口低位控制0输出1输入D1:B口0输出1输入D2:方式选择0方式01方式1D7=1表示方式控制标志位工作方式字是在CS=0、A1A0=11时通过数据线D7~D0写入8255工作方式寄存器中MOVAL,控制字OUTDX,AL

2.C口按位控制这种控制字专门用于C口使其8位可以按位分别置“1”或清“0”,其目的是使8255A具有位控功能。工作方式控制字的格式:D7D6D5D4D3D2D1D00XXX选择的C口位位D3D2D1D0PC0000D0=0复位D0=1置位PC1001PC2010PC3011PC4100PC5101PC8110PC7111D7D6D5D4D3D2D1D00XXX对C口进行位操作的方法是:①通过CS=0、A1A0=11选择8255控制寄存器;②将选中的C端口的位线(PC7~PC0)中的某一位通过D3~D1编码来设置,置位还是复位通过D0来设置;③将该数据写入到8255控制寄存器中;④每次操作只能完成对一位的控制;⑤该方式只能将C口设置为输出方式。[例6.1]在PC4引脚上输出一正脉冲信号,假设8255A的地址(A、B、C端口和控制寄存器)分别为420~423H(取决与8255A的A1A0与系统地址线的连接)。MOVAL,00001000BMOVDX,423H;选中PC4,并置0OUTDX,ALNOPNOPMOVAL,00001001B;选中PC4,并置1OUTDX,ALNOPNOPMOVAL,00001000B;选中PC4,并置0OUTDX,ALPC40106.4.48255A的应用[例6.2](教材例7.4P261)假设8255芯片端口地址为FF80H~FF83H,端口A工作在方式0,输出;端口B工作在方式1,输入,请写出初始化程序段。解:根据题意,A口地址:FF80H;B口地址:FF81H;C口地址:FF82H;控制字寄存器地址:FF83H。控制字:1000×11×(86H)MOVAL,86HMOVDX,0FF83HOUTDX,AL[例6.3]8255A的A口连接4个开关K0~K3,设定为方式0,输入,B口连接一个共阴极七段LED显示器,设定为方式0,输出。要求将A口的4个开关状态对应的二进制编码0000~1111以16进制0~F送B口显示。电路于图所示。(P262)K3K2K1K0abcdegfdpgnd共阴极LEDabcdefgdpabgndgndfgedcdp七段显示代码共阴极LED组成的七段代码显示代码0123456789ABCDEF3F065B4F666D7D077F6F777C395E7971PB0PB7abcdefbcabdegabcdgbcfgacdfgacdefgabcabcdefgabcdfgabcefgcdefgadefbcdegadefgaefg解:①根据电路确定端口地址:假设没有使用的地址线都选1A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0XXXXXXXXXXX00011111111111/Y0=/CS=0/CSA1A0选择地址000PA口FFE0H001PB口

FFE1H010PC口FFE2H011控制字寄存器FFE3HK3K2K1K0②确定控制字,A端口为输入端口,工作在方式0,B端口为输出端口,工作在方式0。C端口本例中未用,现设置在输出端口,方式0。控制字:90HD7D6D5D4D3D2D1D01001X000X0A组控制方式0PA输入PC输出方式0B组控制PB输出PC输出K3K2K1K00123456789ABCDEF3F065B4F666D7D077F6F777C395E7971画流程图画流程图,参考程序:DATASEGMENT

LISTDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX

MOVAL,90H;置8255控制字

MOVDX,0FFE3HOUTDX,ALLOOP:MOVDX,

0FFE0H;读A口开关状态

INAL,DX

ANDAL,0FH

;将A口高4位屏蔽

MOVBX,OFFSETLIST;查表得到对

ANDAX,00FFH;应的显示码

ADDBX,AXMOVAL,[BX]XLAT

MOVDX,0FFE1H;送显示码到B口

OUTDX,AL;显示相应的字符

CALLDALLY;调延时

JMPLOOPDALLY:......... RET

MOVAH,4CH INT21HCODEENDSENDSTARTK3K2K1K0如果要同时显示多位?[例6.4]设某警报系统电路如图所示。开关K0、K1闭合时报警,红色指示灯HD0、HD1亮。开关打开时系统正常,绿色指示灯LD亮。试设计一程序完成上述任务,并要求系统能连续工作。解:先要看懂图,①根据电路图确定8255的A、B、C端口和控制寄存器地址;②再根据题意确定端口的输入输出方式;③最后根据工作方式确定控制字。K0K1001010011110A9A8A7A6A5A4A3A2A1A0选中的端口1111101000端口ACS=001端口B10端口C11控制寄存器根据电路,选中8255必须使CS=0,译码器的输入信号A9~A2=11111010时Y2=0,地址线A1A0直接与8255A1A0相连来选择端口。A端口地址:3E8H;B端口地址:3E9H;C端口地址:3EAH;控制寄存器地址:3EBH3E从图中可以看出A口为输入口,并且开关打开时输入高电平1,闭合输入低电平0。C口为输出口,且高电平指示灯亮,低电平指示等灭。B口未用(假设为输出口),8255工作在基本的输入输出工作方式(方式0)。控制字寄存器内容设置为:10010000B(90H)判开关:PA0输入开关K0状态,PA7输入开关K1状态。00000001B(01H)表示K0打开的;10000000B(80H)表示K1打开的;10000001B(81H)表示K1K0都打开的;C口控制指示灯,输出高电平指示灯亮,输出低电平指示灯灭。PC7控制绿灯LD

,PC0控制红灯HD0,PC1控制红灯HD1。所以,80H绿灯亮;01H红灯HD0亮;02H红灯HD1亮;03H红灯HD0、HD1亮;画流程图,参考程序:(只有算法、没有段设置)START:MOVAL,90H;置8255控制字

MOVDX,3EBHOUTDX,ALLOOP:MOVCL,00H;CL故障标志寄存器

MOVAL,00H;清C口关灯

MOVDX,3EAH

OUTDX,AL MOVDX,3E8H;读A口开关状态

INAL,DXMOVBL,AL;BL暂存开关状态

ANLAL,01H;检查K0JZDONE0;K0闭合跳HD1:ANLBL,80H;检查K1

JZDONE1;K1闭合跳LD:CMPCL,00HJNZLOOP;CL≠0跳(有故障)

MOVAL,80H;无报警绿灯亮

MOVDX,3EAH流程图

OUTDX,AL JMPLOOPDONE0:ORCL,01H;K0合上HD0亮

MOVAL,CLMOVDX,3EAHOUTDX,AL JMPHD1DONE1:ORCL,02H;K1合上HD1亮

MOVAL,CLMOVDX,3EAHOUTDX,ALJMPLD显示电路流程图通过8255-A接口芯片的应用实例可以归纳以下几点规律:①根据系统设计需要选择具体接口芯片;②熟悉芯片功能和具体控制方法;③画出芯片与系统之间的连线图并设计硬件电路;④根据连线确定芯片的通道地址;⑤根据设计要求确定控制字内容;⑥计算初始化参数值;⑦画流程图;⑧编写源程序并调试源程序⑨联机调试测试硬件电路。6.5可编程计数器/定时器—8253/8254在计算机系统中,很多程序在运行是往往需要系统提供精确的定时信号。如多任务分时系统运用时间变量来实现多任务的切换。另外系统时间日历也需要有时钟源。为此Intel公司专门设计了可编程计数器/定时器—8253/8254。用户可以通过编程来实现定时和计数。6.5.18253/8254的基本功能①三个完全相同的、独立的16位计数器;②每个计数器有六种工作方式,可以按十进制(BCD码)或二进制进行计数,最高计数频率可以达到2.6MHz③可以工作在定时方式,也可以工作在计数方式。6.5.28253/8254的内部结构1.内部结构8253/8254内部包括:数据总线缓冲器、读写控制逻辑、控制字寄存器、计数器0、计数器1、计数器2六个部分。①数据总线缓冲器:8位双向三态缓冲器,是CPU与8253进行数据交换的数据通路,一般直接与系统数据总线相连。②读/写逻辑:接收系统的读写控制信号、片选信号和通路选择信号(RD、WR、CS、A1、A0),完成相应控制操作。③控制字寄存器:用来保存初时化时由CPU写入的8253-4工作方式控制字。该寄存器是只写型的。④计数器0、计数器1、计数器2:三个完全独立的16位定时/计数器。每个计数器都包括:计数初值寄存器;减1计数单元电路;输出锁存单元。2.8253-5引脚功能8253-5采用双排直插24引脚封装,各引脚功能为:①数据线

D7~D0:双向三态数据总线,用于与系统总线相连,完成与CPU数据传输。②控制线A1、A2:端口选择信号。通过内部译码器选择三个计数器和控制寄存器。RD:读信号线。低电平有效。从选中的计数器读取数据。WR:写信号。低电平有效,将数据写入到选中的计数器或控制寄存器中。CS:片选择信号。低电平有效(选中该芯片)。A1、A0、CS、RD、WR共同作用来完成对某一个计数器或控制寄存器进行读写操作。其逻辑关系:CLK0-CLK2:计数器0~2的输入时钟脉冲信号,工作时每一个脉冲计数器值减1。GATE0~GATE2:计数器0~2门控信号,该信号对计数器的具体控制作用由相应的计数器的工作方式决定。CSA1A0RDWR功能00001读计数器0当前值00101读计数器1当前值01001读计数器2当前值00010设置计数器0的初时值00110设置计数器1的初时值01010设置计数器2的初时值01110设置控制字OUT0~2:计数器0~2的输出信号。当计数器0~2中的计数单元值减1等于0时,对应OUT的输出端产生一输出信号,该信号的波形取决于计数器的工作方式。③工作电压VCC、GND:芯片工作电压,单5V供电。6.5.38253的工作方式8253有六种工作方式,具体工作在何种工作方式有初时化程序通过CPU写入到8253控制字寄存器的控制字内容决定。1.方式0(计数结束中断方式)方式0是典型的计数器工作方式。①当GATE=1时,写入计算初值,计数器开始对CLK脉冲进行计数,期间OUT一直为低电平。每个脉冲计数器的计数单元内容减1,当计数单元等于零时,输出端OUT输出一高电平申请中断。②当GATE=0时停止计数(门控的含义),并且OUT引脚一直输出为低电平。③方式0允许在计数过程中修该计数初值。当写入新的的计数值时,原计数过程终止,但输出OUT仍然保持为低电平。新值写入后再经过一个时钟脉冲,减1计数器按新值开始重新计数。8253内部没有中断控制电路和中断请求引脚,与CPU的联络是通过OUT输出来实现的。计数器计数归零时,OUT的输出端为高电平,CPU可以通过查询该引脚电平或将该信号连接到CPU的中断请求输入端。方式0的特点:①计数过程由软件启动。每写入一次计数初值就启动一次计数器。②GATE的作用是开放计数器和停止计数。③OUT的输出由低电平变高电平表示计数结束,计数脉冲的个数N+1(N为初值)。④方式0主要用于事件计数,OUT可以作为中断申请信号。2.方式1:硬件可重触发单稳态方式在方式1下,CPU写入控制字之后,被选中的OUT输出高电平,CPU写入计数值到计数器后计数器并不立即计数,而是要等到门控GEAT端出现一个上升沿启动之后,下一个CLK时钟脉冲的下降沿使OUT变为低电平,计数器开始减1计数。当计数器归零时,OUT引脚输出高电平。若在OUT输出高电平时,GATE再次输入一个上升沿触发启动,计数器又重新开始计数而不用重新设置计数值。方式1的特点:①方式1下计数器的启动是门控信号GEAT上升沿产生的,且可以多次启动,所以称硬件可重触发单稳方式。②OUT输出为一单稳态负脉冲,脉冲的宽度为计数器初值个CLK时钟脉冲的周期之和。③改变计数器的初值,可以产生不同宽度的脉冲信号(OUT端)。④在计数过程中,重新置入新的计数值,并不立即生效,原计数过程不受影响,直到下一次门控脉冲GATE产生一个上升沿才开始按照新的计数值进行计数。3.方式2:频率发生器(自动重装载)在方式2下,CPU写入控制字之后,被选中的OUT输出高电平,CPU写入计数值到计数器后,经过一个时钟周期计数器开始减1计数。当计数器值减到1时,OUT引脚输出低电平。再经过一个时钟周期,OUT输出恢复为高电平,计数器开始重新计数,不需要重新设定计数初值。在方式2下,GATE=1,计数器正常计数,当GATE=0时,计数器暂停计数,直到GATE恢复为高电平后的下一个CLK脉冲的下降沿,计数器重新以计数初值开始计数。方式2的特点:①方式2下计数器的初值能自动重复地装入到计数器的减1寄存器单元中,无需用软件重新设置,使用非常方便。②只要CLK是连续的,在OUT端就可以输出一连续的分频脉冲信号。③输出的正脉冲宽度等于N-1个CLK之和,负脉冲宽度为1个CLK。N为计数器初值。④计数可以软件启动也可以硬件启动。⑤在计数过程中,置入新的计数值,不受影响正在进行的计数值,直到计数值为1,OUT输出低电平,再经过一个CLK时钟,才开始按照新的计数值进行计数。4.方式3:方波发生器(自动重装载)方式3的操作除OUT端输出的是方波外,其他基本同方式2。CPU写入控制字之后,被选中的OUT输出高电平,CPU写入计数初值到计数器后,经过一个时钟周期计数器开始减1计数。当计数器值减到初值的一半时,OUT引脚输出低电平。计数继续工作直到计数结束后,OUT输出高电平,完成一个周期。该周期结束后计数器开始重新计数,不需要重新设定计数初值,周而复始。在方式3下,GATE=1,计数器正常计数,当GATE=0时,计数器暂停计数,直到GATE恢复为高电平后的下一个CLK脉冲的下降沿,计数器重新以计数初值开始计数。方式3的特点:①方式3下计数器的初值能自动重复地装入到计数器的减1寄存器单元中,无需用软件重新设置,使用非常方便。②只要CLK是连续的,在OUT端就可以输出一连续的方波脉冲信号。可以用作方波发生器或波特率发生器。③输出的正负脉冲宽度等于N/2个CLK周期之和(N为偶数),当N为奇数时,正脉冲宽度等于(N+1)/2,负脉冲宽度为(N-1)/2个CLK周期之和。N为计数器初值。④计数可以软件启动也可以硬件启动。⑤在计数过程中,置入新的计数值,当前输出周期不受影响,直到GATE出现一个上升沿后,再经过一个CLK时钟,才开始按照新的计数值进行计数。⑥改变计数初值,OUT端可以输出不同频率的方波。5.方式4:软件触发选通方式方式4和方式0比较相似,在写入控制字时,OUT变为高电平。写入计数初时值时,当GATE=1时,再经一个时钟周期,计数器开始对CLK脉冲进行计数,期间OUT一直为高电平。每个脉冲计数器的计数单元内容减1,当计数单元等于零时,输出端OUT输出一低电平,该低电平保持一个时钟周期后又自动恢复到高电平。方式4的特点:①计数过程由软件启动。每写入一次计数初值就启动一次计数器。②GATE的作用是开放计数器和停止计数。③OUT的输出由高电平变低电平表示计数结束,低电平维持一个时钟周期宽度,计数脉冲的个数N+1(N为初值)。④在计数过程中允许置入新的计数值,并且计数器重新以新的值开始计数,如果新的值是双字节的,则写入第一个字节停止计数,写入第二个字节后按新值开始计数。6.方式5:硬件触发选通方式在方式5下,CPU写入控制字之后,被选中的OUT输出高电平,CPU写入计数值到计数器后计数器并不立即计数,而是要等到门控GEAT端出现一个上升沿启动之后计数器开始计数。当计数器归零时,OUT输出为低电平,经过一个时钟周期后,OUT又恢复为高电平。计数器归零后,GATE可再次输入一个上升沿触发启动,计数器又重新开始计数而不用重新设置计数值。方式5的特点:①方式5下计数器的启动是门控信号GEAT上升沿产生的,且可以多次启动。②OUT输出为一单稳态负脉冲,脉冲的宽度为一个CLK时钟脉冲的周期。③在计数过程中,重新置入新的计数值,并不立即生效,原计数过程不受影响,直到下一次门控脉冲GATE产生一个上升沿才开始按照新的计数值进行计数,并且OUT一直输出为高电平直到计数器归零才输出一宽度等于一CLK周期的负脉冲。除了OUT输出波形不同外,这六种工作方式可以归纳为三种类型。①软件启动:GATE=1,软件触发,写入计数初值开始计数。;方式0、4。②自动重装载:GATE=1,计数归零后又重新开始计;方式2、3。③硬件触发:GATE上升沿启动计数器计数。方式1、5。方式N与输出波形关系改变计数值0写入计数值N后,经N+1个CLK脉冲,输出变高下一个CLK周期立即有效1单稳负脉冲的宽度为N个CLK外部触发以后有效2每N个CLK脉冲输出一个CLK周期的负脉冲计数到1以后有效3前一半为高电平、后一半为低电平的方波外部触发有效/计数到1有效4写入N后经过N+1个CLK,输出宽度为1个CLK的负脉冲计数到0有效5门控触发后过N+1个CLK,输出宽度为1个CLK的负脉冲外部触发有效计数值N与输出波形的关系

门控信号GATE的作用方式GATE低电平或变低电平上升沿高电平0禁止计数-允许计数1-启动计数,下一个CLK脉冲使输出为低-2禁止计数,立即使输出为高重新装入计数值,启动计数允许计数3禁止计数,立即使输出为高重新装入计数值,启动计数允许计数4禁止计数-允许计数5-启动计数-6.5.48253/4的控制字8253是可编程的定时器/计数器,编程时应先对其初时化,通过控制字来设定控制方式。1.设定控制字方式同8255一样,控制字的设定,主要将控制写入到8253内部控制字寄存器中就可以了。8253控制字是8位的。各位的具体作用:D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCD初时值采用的计数制0二进制1十进制(BCD)M2M1M0工作方式000工作方式0001工作方式1010工作方式2011工作方式3100工作方式4101工作方式5D0:D3D2D1:D5D4:D7D6:RL1RL0操作方式00计数器锁存操作(供CPU)01读/写计数器低8位10读/写计数器高8位11先读/写低8位,后读/写高8位SC1SC0计数器00CNT001CNT110CNT211不用2.设定计数初值计数初值的设定按照控制字中的D0定义设定。D0=0:二进制计数。计数范围0000~FFFFH。其中0000H最大,表示65536。D0=1:十进制BCD码计数。计数范围0000~9999。其中0000最大,表示10000。6.5.58253-5的应用【例6.4补充】:若用8253的计数通道1,工作在方式0,按8位二进制计数,初值为128,试编写初始化程序,设端口地址为48H-4BH。解:控制字为01010000=50H,8位计数初值为80H。

MOVAL,50H ;设置通道1控制字

OUT4BH,ALMOVAL,80H;写通道1计数初值,只写低8位

OUT49H,AL【例6.5补充】:若用8253通道1,工作在方式1,按二-十进制计数,计数初值为2010,口地址(48H-4BH),试编写初始化程序。解:通道控制字为01110011=73H。计数初值高8位为20,低8位为10(注意:实际编程时要写20H和10H,如果写20,编译器会直接编译成14H,反而成了14的BCD码了。)

MOV AL,73H ;写通道1控制字

OUT 4BH,AL MOV AL,10H

;写通道1计数初值低8位

OUT 49H,AL MOV AL,20H

;写通道1计数初值高8位

OUT 49H,AL 当执行完上述程序后,8253通道1工作于方式1。经GATE上升沿触发后,输出OUT1产生一宽度为2010个CLK周期的负脉冲。【例6.6P296】

如图7.19,在IBMPC系列计算机中,用8253的3个计数器进行时钟计时(通道0)、DRAM刷新定时(通道1)和控制扬声器发声声调(通道2),8253的端口地址分别为40H(通道0)、41H(通道1)、42H(通道2)和43H(控制字),输入时钟都为1.193MHz。在PC机中,8255A的端口地址为:A口地址:60H、B口地址:61H、C地址62H、控制字寄存器地址:63H。1.193MHz1.计数器0产生基本时钟(BIOS中的初始化程序)

MOV AL, 36H ;计数器0的控制字为00110110 OUT 43H, AL;43H为控制字地址

MOV AL, 0 OUT 40H,AL ;计数器0的初值为0000 OUT 40H,AL由上面初始化程序可见,计数器0工作在方式3下,产生方波;初值为0、二进制计数,也就是最大的65536,则其方波的输出频率为1.193MHz/65536=18.2。DOS系统利用定时器0,通过08号中断服务程序,实现时钟计时功能。每18次中断为1秒钟。2.计数器1控制DRAM刷新在PCXT机中,要求在2ms内对DRAM进行128次刷新,也就是刷新的间隔为2ms/128=15.6us。计数器1输出间隔15us的负脉冲,计数器1的初始化程序:MOVAL,54H ;计数器1的控制字为01010100OUT 43H,ALMOVAL,18

;计数器1的初值为18OUT 41H,AL1.193MHz由上面初始化程序可见,计数器1工作在方式2(分频器)下,只读写低位,初值为18。由此可知,计数器1的输出频率为:1.193MHz/18=66.278KHz,负脉冲的时间间隔为1/66.278KHz=15us。负脉冲的时间间隔为:18×(1/f)=18/(1.193×1000000)=15.1注意计数初值的计算方法:初值=定时值÷时钟CLK周期

=定时值×时钟CLK频率所以:15us×1.193MHz=183.计数器2控制扬声器(工作在方式3)在PCXT机中,利用计数器2输出控制扬声器的发声音调,作为机器的报警信号。从图中可以看出扬声器工作,8255A的PB1、PB0必须同时为1。计数器2发声驱动程序:BEEPPROCFARMOVAL,0B6H ;计数器2的控制字为10110110OUT 43H,ALMOVAX,1190 ;计数器2输出频率=1.193/1190=1kHzOUT 42H,AL;先低后高MOVAL,AHOUT 42H,AL1.193MHz111Khz的方波IN AL,61H ;读8255PB口,MOVAH,AL ;保存PB口状态在AH中OR AL,

03H

温馨提示

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

评论

0/150

提交评论