第11章 并行I 第11章 并行I/O接口微机系统的信息交换有两种方式:并行通信方式和串行通信方式并行通信是以微机的字长,通常是8位、16位或32位为传输单位,一次传送一个字长的数据,适合于外部设备与微机之间进展近距离、大量和快速的信息交换实现并行通信的接口称之为并行接口一个并行接口可设计为只作为输入或输出接口,还可设计为既作为输入又作为输出接口,即双向输入/输出接口8255A是Intel86系列微处理机的配套并行接口芯片,它可为86系列CPU与外部设备 之间供应并行输入/输出通道由于它是可编程的,可以通过软件来设置芯片的工作方式,因此,用8255A连接外部设备时,通常不用再附加外部电路,运用较为便利本章首先介 绍可编程并行I/O接口芯片8255A的构造和根本工作方式,然后以8255A与打印机、键盘、LED数码管等外设的接口为例,说明8255A详细应用 11.1 可编程并行I/O接口芯片8255A11.1.1 8255A的根本功能和内部构造8255A的内部构造和引脚图分别如图11.1和图11.2所示由图11.1可见,8255A由以下几局部组成:1. 并行输入/输出端口A,B,C图11.1 8255A的内部构造8255A芯片具有24个可编程输入输出引脚,分成3个8位端口。
其中:端口A包含一个8位数据输出锁存/缓冲存放器和一个8位数据输入锁存器;端口B包含一个8位数据输入/输出、锁存/缓冲存放器和一个8位数据输入缓冲存放器;端口C包含一个输出锁存/缓冲存放器和一个输入缓冲存放器必要时端口C可分成两个4位端口,分别与端口A与端口B协作工作通常将端口A和端口B定义为输入/输出的数据端口,而端口C可作为状态或限制信息的传送端口 图11.2 8255A的芯片引脚信号2.A组和B组限制部件端口A与端口C的高4位(PC7~PC4)构成A组,由A组限制部件实现限制功能,端口B与端口C的低4位〔PC3~PC0〕构成B组,由B组限制部件实现限制功能它们各有一个限制单元,可接收来自读/写限制部件的吩咐和CPU通过数据总线〔D7~D0〕送来的限制字,并依据它们来定义各个端口的操作方式3. 数据总线缓冲器这是一个三态双向8位数据缓冲器,它是8255A与8086CPU之间的数据接口,CPU输入输出的数据,CPU输出的限制字以及外设的状态信息都是通过这个缓冲器进展传送4.读/写限制部件这是8255A内部完成读/写限制功能的部件,它与CPU的地址总线及有关的限制信号相连,接收CPU的限制吩咐,并依据它们向片内各功能部件发出操作吩咐。
可接收的限制信号如下:〔1〕CS: 片选信号由CPU输入,CS有效,表示该8255A被选中〔2〕RD,WR:读、写限制信号由CPU输入,RD有效,表示CPU读8255A,应由8255A向CPU传送数据或状态信息WR有效,表示CPU写8255A,应由CPU将限制字或数据写入8255A〔3〕RESET:复位信号RESET有效时,去除8255A中全部限制字存放器内容,并将各端口置成输入方式〔4〕A1、A0:端口选择信号当A1A0=00,选择端口A; 当A1A0=01,选择端口B; 当A1A0=10,选择端口C;当A1A0=11,选择限制字存放器由端口地址A1A0和相应限制信号组合起来可定义各端口的操作方式如表11.1所示表11.1 8255A的读写操作限制 11.1.2 8255A的限制字及其工作方式8255A各端口共有3种根本工作方式:方式0——根本输入/输出方式;方式1——选通输入/输出方式;方式2——双向传送方式端口A可处于3种工作方式〔方式0,方式1或方式2〕,端口B只可处于两种方式〔方式0或方式1〕,端口C时时被分成高4位和低4位两局部,可分别用来传送数据或限制信息用户通过设置限制字来定义3个端口的工作方式,可运用的限制字有工作方式限制字和置位/复位限制字,它们共用同一个端口地址。
1. 限制字〔1〕工作方式限制字:格式如图11.3所示通过定义工作方式限制字可将3个端口定义为各种不同方式的组合 图11.3 8255A工作方式限制字格式〔2〕置位/复位限制字:只对端口C有效端口C的任一位,可用这个限制字来置位或复位,而其他位不变,运用格式如图11.4所示2. 工作方式 图11.4 8255A置位/复位限制字格式〔1〕工作方式0:这是8255A中各端口的根本输入/输出方式它只完成简洁的并行输入/输出操作,CPU可从指定端口输入信息,也可向指定端口输出信息假如3个端口均处于工作方式0,那么可由工作方式限制字定义16种工作方式的组合工作方式0限制字的详细格式如图11.5所示 图11.5 8255A工作方式0限制字格式 由限制字中D4D3D1D0 等4位的不同取值可定义方式0的16种工作方式的组合,如表11.2所示方式0中,端口C被分成两个4位端口,它们可被定义为输入或输出端口,CPU与3个端口之间交换数据可干脆由CPU执行IN和OUT指令来完成 〔2〕工作方式1:被称作选通输入/输出方式,在这种工作方式下,数据输入/输出操作要在选通信号限制下完成。
采纳工作方式1进展输入操作时,须要运用的限制信号如下:① STB——选通信号由外设输入,低电平有效STB有效时,将外设输入的数据锁存到所选端口的输入锁存器中对A组来说,指定端口C的PC4用来接收向端口A输入的STB信号;对B组来说,指定端口C的PC2用来接收向端口B输入的STB信号② IBF——输入缓冲存储器满信号向外设输出,高电平有效 IBF有效时,表示由输入设备输入的数据已占用该端口的输入锁存器,它事实上是对STB信号的答复信号,待CPU执行IN指令时,RD有效,将输入数据读入CPU,其后沿将 IBF置“0”,表示输入缓冲存储器已空,外部设备可接着输入后续数据对A组来说,指定端口C的PC5作为从端口A输出的IBF信号;对B组来说,指定端口的PC1作为从端口B输出的IBF信号③ INTR——中断恳求信号,高电平有效INTR在STB、IBF均为高时被置为高电平,也就是说,中选通信号完毕、已将一个数据送进输入缓冲存储器中,并且输入缓冲区满信号已为高电平常,8255A向CPU发出中断恳求信号,即将INTR端置为高电平在CPU响应中断读取输入缓冲存储器中的数据时,由RD的下降沿将INTR置为低电平。
④ INTE——中断允许信号,事实上,它是一个限制中断允许或中断屏蔽的信号INTE没有外部引出端,它通过对端口C的置1或清0指令来实现对中断的限制详细讲,对PC4置1,那么使端口A处于中断允许状态;对PC4清0,那么使端口A处于中断屏蔽状态与此类似,对PC2置1,那么使端口B处于中断允许状态;对PC2清0,那么使端口B处于中断屏蔽状态当然,假如要运用中断功能,应当用软件使相应的端口处于中断允许状态表11.2 方式0的工作状态组合 明显,8255A中的端口A和端口B均可工作于方式1输入模式,其工作方式限制字格式如图11.6所示,端口状态如图11.7所示 PUSH AX ;爱护存放器 PUSH BX PUSH CX PUSH DXMOV DX, 0FFFEH ;设定A口为选通输出方式 MOV AL, 0A0H OUT DX, AL MOV AL,0CH ;使INTEA〔PC6〕为0,制止中断 OUT DX, AL MOV CX, M ;打印字节数送CX MOV BX, OFFSET BUF ;取缓冲区首址送BX PRINT1: MOV AL,[BX] ;取一个数据 MOV DX, 0FFF8H OUT DX,AL ;从A口输出 MOV DX, 0FFFCH PRINT2: IN AL,DX ;读C口 TEST AL,80H ;检测OBFA〔PC7〕为1否? JZ PRINT2 ;为0,那么接着检测 INC BX ;为1,说明数据已输出 LOOP PRINT1 ;打算取下一个数据输出 POP DX ;打印完毕,复原存放器 POP CX POP BX POP AX RET ;返回PRINT ENDP 本例与上例的主要区分是:在上例中,由软件对PC7复位和置位来产生打印机的选通信号,而本例中,8255A工作在选通方式,当执行输出指令时,自动由硬件从PC7 〔OBFA〕输出负脉冲选通信号。
当打印机ACK变为有效时,自动将PC7置为高电平 11.2.2 8255A与键盘接口键盘是微机系统中最常用的外部设备,数据、内存地址、吩咐及指令地址等都可以通过键盘输入到系统中1 键盘的工作原理最简洁的键盘如图11.14(a)所示,其中每个键对应I/O端口的一位没有键闭合时,各位均处于高电平;当有一个键按下时,就使对应位接地而成为低电平,而其它位仍为高电平这样,图11.14 键盘的构造 CPU只要检测到某一位为0,便可判别出对应键已按下但是,用图11.14(a)的构造设计键盘有一个很大的缺点这就是当键盘上的键较多时,引线太多,占用的I/O端口也太多所以,这种简洁构造只用在只有几个键的小键盘中通常运用的键盘是矩阵构造的对于8×8=64个键的键盘,采纳矩阵方式只要用16条引线和2个8位端口便完成键盘的连接以3×3=9个键为例,如图11.14(b),这个矩阵分为3行3列,假如键5按下,那么第1行和第2列线接通而形成通路假如第1行线接低电平,那么键5的闭合,会使第2列线也输出低电平矩阵式键盘工作时,就是按行线和列线的电平来识别闭合键的2 键的识别为了识别键盘上的闭合键,通常可以采纳两种方式:行扫描法和行反转法。
1)行扫描法 图11.15是一个8行8列组成的键盘行扫描法识别按键的原理如下:先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合这是通过检查列线电位来实现的,即在第0行接低电平常,看是否有哪条列线变成低电平假如有某列线变为低电平,那么表示第0行和此列线相交位置上的键被按下;假如没有任何一条列线为低电平,那么说明第0行没有任何键被按下此后,再将第1行接低电平,检测是否有变为低电平的列线如图11.15 键盘接口电路此重复地扫描,直到最终一行在扫描过程中,当发觉某一行有键闭合时,也就是列线输入中有一位为0时,便退出扫描,通过组合行线和列线即可识别此刻按下的是哪一键实际应用中,一般先快速检查键盘中是否有键按下,然后再确定按键的详细位置为此,先使全部行线为低,然后检查列线这时假如列线有一位为0,那么说明必有键被按下, 采纳扫描法可进一步确定按键的详细位置图11.15中将行线与8255A端口B相连,端。