《第5章 并行接口技术 8255A课件.ppt》由会员分享,可在线阅读,更多相关《第5章 并行接口技术 8255A课件.ppt(82页珍藏版)》请在三一办公上搜索。
1、1,上章作业:P772题、13题、14题 补充作业:在8086系统中接有一片8259A,8259A的8位端口地址分别为60H、62H,画出接口电路图。,2,第5章 并行接口技术 5.1 概述,并行通信是把一个数据的各个数位用几条线同时进行传输,具有传输速度快,信息率高的特点。但它比串行通信所用的电缆多,因此,并行通信常用在传输距离较短(几米至几十米)和数据传输率较高的场合。,3,实现并行通信的接口就是并行接口。一个并行接口可设计为只作为输出接口;还可设计为只作为输入接口。另外,还可以设计成既作为输入又作为输出的接口。它可以用两种方法实现,一种是利用同一个接口中的两个通路,一个作输入通路,一个作
2、输出通路;另一种是用一个双向通路,既作为输入又作为输出。,2022/12/20,4,典型的并行接口和外部设备连接如图所示。图中的并行接口用一个通道和输入设备相连,用另一个通道和输出设备相连,每个通道中除数据线外均配有一定的控制线和状态线。,5,从图1中看到,并行接口中应该有一个控制寄存器用来接收CPU对它的控制命令,有一个状态寄存器提供各种状态位供CPU查询。为了实现输入和输出,并行接口中还必定有相应的输入缓冲寄存器和输出缓冲寄存器。,6,硬件:对外设的要求:应提供设备状态信息 对接口的要求:需要提供状态口,RD,输入设备,锁存器,三态缓冲器(8位),选通,三态缓冲器(1位),D,+5V,CP
3、,Q,&,8086及其配置,地址译码,&,M/IO,数据口,状态口,DB,查询输入接口电路原理图,Di,状态信息,R触发器,数据,AB,C,查询传送方式,7,1. 并行接口在输入过程中的作用外部设备首先将数据送给接口,并使状态线“数据输入准备好”成为高电平。接口把数据接收到数据输入缓冲寄存器的同时,使“数据输入回答”线变为高电平,作为对外部设备的响应。外部设备接到此信号,便撤除数据和“数据输入准备好”信号。数据到达接口中后,接口会在状态寄存器中设置“输入准备好”状态位,以便CPU对其进行查询,接口也可以在此时向CPU发一个中断请求。,8,所以,CPU既可以用软件查询方式,也可以用中断方式来设法
4、读取接口中的数据。CPU从并行接口中读取数据后,接口会自动清除状态寄存器中的“输入准备好”状态位,并且使数据总线处于高阻状态。此后,又可以开始下一个输入过程。,9,2. 并行接口在输出过程中的作用每当外部设备从接口取走一个数据之后,接口就会将状态寄存器中的“输出准备好”状态位置“1”,以表示CPU当前可以往接口中输出数据,这个状态位可供CPU进行查询。此时,接口也可以向CPU发一个中断请求。所以,CPU既可以用软件查询方式,也可以用中断方式设法往接口中输出一个数据。,10,当CPU输出的数据到达接口的输出缓冲寄存器中后,接口会自动清除“输出准备好”状态位,并且将数据送往外部设备,同时,接口往外
5、部设备发送一个“驱动信号”来启动外部设备接收数据。外部设备被启动后,开始接收数据,并往接口发一个“数据输出回答”信号。接口收到此信号,便将状态寄存器中的“输出准备好”状态位重新置“1”,以便CPU输出下一个数据。,11,5.2 可编程并行接口芯片8255A,8255A是Intel86系列微处理机的配套并行接口芯片,它可为86系列CPU与外部设备之间提供并行输入/输出的通道。由于它是可编程的,可以通过软件来设置芯片的工作方式,所以,用8255A连接外部设备时,通常不用再附加外部电路,使用时很方便。,12,5.2.1、8255A芯片内部结构,13,14,1. 并行输入/输出端口A,B,C8255A
6、芯片内部包含3个8位端口,这三个端口均可作为独立的8位端口使用,实现数据的输入/输出。必要时端口C可分成两个4位端口,分别与端口A和端口B配合工作,通常将端口A和端口B定义为输入/输出的数据端口,而端口C可作为状态或控制信息的传送端口。,15,2. A组和B组控制部件端口A与端口C的高4位(PC7PC4)构成A组,由A组控制部件实现控制功能,端口B与端口C的低4位(PC3PC0)构成B组,由B组控制部件实现控制功能。它们各有一个控制单元,可接收来自读/写控制部件的命令和CPU通过数据总线(D7D0)送来的控制字,并根据它们来定义各个端口的操作方式。,16,3. 数据总线缓冲存储器这是一个三态双
7、向8位数据缓冲存储器,它是8255A与8086/8088CPU之间的数据接口。CPU执行输出指令时,可将控制字或数据通过数据总线缓冲存储器传送给8255A。CPU执行输入指令时,8255A可将状态信息或数据通过总线缓冲存储器向CPU输入。因此它是CPU与8255A之间交换信息的必经之路。,17,4. 读/写控制部件这是8255A内部完成读/写控制功能的部件,它能接收CPU的控制命令,并根据它们向片内各功能部件发出操作命令。有关引脚如下:(1) CS片选信号。由CPU输入,通常由端口的高位地址码译码得到。(2) RD,WR读、写控制信号。由CPU发出,表示CPU本次操作的类型。,18,(3) R
8、ESET复位信号。由CPU输入。RESET有效时,清除8255A中所有控制字寄存器内容,并将各端口置成输入方式。(4) A1和A0端口选择信号。当A1A0 00,选择端口A;当A1A0 01,选择端口B;当A1A0 10,选择端口C;当A1A0 11,选择控制字寄存器。,19,20,5.2.3 8255A芯片的控制字,定义工作方式控制字 通过方式定义控制字可以设置8255各端口的工作方式。如图所示:,21,2 置位/复位控制字只对端口C有效,格式如图所示。,格式如图所示,当将端口A定义为方式1或方式2或将端口B定义为方式1时,要求使用端口C的某些位作控制用,这时需要使用一个专门的置位/复位控制
9、字来对控制端口C的各位分别进行置位/复位操作。,22,23,5.2.4 工作方式,8255A各端口共有3种工作方式: 方式0基本输入/输出方式; 方式1选通输入/输出方式; 方式2双向传送方式。端口A有3种工作方式(方式0,方式1和方式2),端口B只可处于两种方式(方式0和方式1),端口C常被分成高4位和低4位两部分,可分别用来传送数据或控制信息。,24,工作方式0基本输入/输出方式,这是8255A中各端口的基本输入/输出方式。它只完成简单的并行输入/输出操作,CPU可从指定端口输入信息,也可向指定端口输出信息。如果3个端口均处于工作方式0,则可由工作方式控制字定义16种工作方式的组合,这种情
10、况下,工作方式控制字的具体格式应如下图所示。,25,26,(2)工作方式1 选通输入/输出方式选通输入方式,数据输入操作要在选通信号控制下完成。需要使用的控制信号如下: STB选通信号。由外部输入,低电平有效。STB有效时,将外部输入的数据锁存到所选端口的输入锁存器中。对A组来说,指定端口C的第4位(PC4)用来接收向端口A输入的STB信号;对B组来说,指定端口C的第2位(PC2)用来接收向端口B输入的STB信号。,27, IBF输入缓冲存储器满信号。向外部输出,高电平有效。IBF有效时,表示由输入设备输入的数据已占用该端口的输入锁存器,它实际上是对STB信号的回答信号,待CPU执行IN指令时
11、,RD有效,将输入数据读入CPU,其后沿把IBF置“0”,表示输入缓冲存储器已空,外部设备可继续输入后续数据。对A组来说,指定端口C的第5位(PC5)作为从端口A输出的IBF信号;对B组来说,指定端口的第一位(PC1)作为从端口B输出的IBF信号。,28, INTR中断请求信号。向CPU输出,高电平有效。对A组来说,指定端口C的第3位(PC3)作为从端口A输出的INTR信号;对B组来说,指定端口的第0位(PC0)作为从端口B输出的INTR信号。在A组和B组控制电路中分别设置一个内部中断触发器INTEA和INTEB,前者由STBA(PC4)控制置位,后者由STBB(PC2)控制置位。,29,当任
12、一组中的STB有效,则把IBF置“1”,表示当前输入缓冲存储器已满,并由STB后沿置“1”各组的INTE,于是输出INTR有效,向CPU发出中断请求信号。待CPU响应这一中断请求,可在中断服务程序中安排IN指令读取数据后,将IBF置“0”,外部设备才可继续输入后续数据。8255A中的端口A和端口B均可工作于方式1完成输入操作功能,这种情况下工作方式控制字的具体格式如图所示。,2022/12/20,30,2022/12/20,31,32,从图中可看出,当端口A和端口B同时被定义为工作方式1完成输入操作时,端口C的PC5PC0被用作控制信号,只有PC7和PC6位可完成数据输入或输出操作,因此这实际
13、上可构成两种组合状态:它们是端口A,B输入,PC7,PC6输入和端口A,B输入,PC7,PC6输出。,33,工作方式1选通输出方式,方式1也可完成输出操作,使用的控制信号有: OBF输出缓冲存储器满信号。向外部输出,低电平有效。OBF有效时,表示CPU已将数据写入该端口正等待输出。当CPU执行OUT指令,WR有效时,表示将数据锁存到数据输出缓冲存储器,由WR的上升沿将OBF置为有效。对于A组,系统规定端口C的第7位(PC7)用作从端口A输出的OBF信号,对于B组,规定端口C的第1位(PC1)用作从端口B输出的OBF信号。,34, ACK 外部应答信号。由外部输入,低电平有效。ACK有效,表示外
14、部设备已收到由8255A输出的八位数据,它实际上是对OBF信号的回答信号。对于A组,指定端口C的第6位(PC6)用来接收向端口A输入的ACK信号;对于B组,指定端口C的第2位(PC2)用来接收向端口B输入的ACK信号。,35, INTR中断请求信号。向CPU输出,高电平有效。对于端口A,内部中断触发器INTEA由PC6(ACKA)置位,对于端口B,INTEB由PC2(ACKB)置位。当ACK有效时,OBF被复位为高电平,并将相应端口的INTE置“1”,于是INTR输出高电平,向CPU发出输出中断请求,待CPU响应该中断请求,可在中断服务程序中安排OUT指令继续输出后续字节。对于A组,指定端口C
15、的第3位(PC3)作为由端口A发出的INTR信号;对于B组,指定端口C的第0位(PC0)作为由端口B发出的INTR信号。,36,如果将8255A中的端口A和端口B均定义为工作方式1的输出方式,则工作方式控制字的具体格式如下图所示。,2022/12/20,37,经这样定义的端口状态如下图所示。,图 10,38,从图中可看出,当端口A和端口B同时被定义为工作方式1完成输出操作时,端口C的PC6,7和PC3PC0被用作控制信号,只有PC4,5两位可完成数据输入或输出操作。因此可构成两种组合状态: 端口A,B输出,PC4,5输入; 端口A,B输出,PC4,5输出。,2022/12/20,39,图 11
16、,采用工作方式1,也可将端口A和端口B分别定义为输入和输出端口。将端口A定义为方式1输入,将端口B定义为方式1输出,其方式控制字格式如图所示。,2022/12/20,40,经定义的端口状态如图所示。,图 12,41,(3) 工作方式2带选通的双向传送方式。,8255A中只允许端口A处于工作方式2,可用来在CPU与外设之间实现双向并行通信。其有关的控制信号由端口C提供,并可向CPU发出中断请求信号。当端口A工作于方式2时,允许端口B工作方式0或方式1完成输入/输出功能,其方式控制字格式如下图所示。,2022/12/20,42,图 12,43,端口C的使用:在方式0,其为基本的I/O端口;若有端口
17、工作于其他方式,则读取端口C为状态数据。,44,1、计算机系统有一并行接口芯片8255A,初始化时将8255A的A口设置成方式1的输出,这时8255A与外设的联络信号为: A) IBF、STB B) RDY、STB C) OBF、ACKD) INTR、ACK2、有一并行接口芯片8255A,初始化时将其设置成方式1的输出,其中断输出引脚连接至8259的IR2,这时系统对该中断源的屏蔽分 级。 A) 1 B) 2 C) 3D) 4,45,MOVAL,90H ;初始化OUT63H,ALLP:IN AL,60HXORAL,0FFHOUT 61H,ALJMPLP,【例1】从A口输入开关状态,利用LED显
18、示: 开关断开,相应LED点亮;开关闭合,相应LED点亮。 8255端口地址:60H63H,LED0LED1LED7,46,【例2】在PC/XT系统中接有一个打印机,8255A作为输出接口,工作在选通方式,试编程将内存某缓冲区BUF内的200H个字节的ASCII码送打印机打印,其接口电路如图。,设8255A的端口地址:A口、 B口、 C口、控制字寄存器: 210H,211H,212H,213H,PA7PA0 PC6(ACKA) PC0 PC7 PC3,D7D0ACKSTB,8255A,打印机,8259A,IRQ2,OBF,47,主程序CLIMOV AL,0A0H ;8255A方式控制字MOV
19、DX,213HOUT DX,AL MOV AL,0DH ;置位PC6 ,使A口中断允许OUT DX,AL PUSH DS ;保存DS MOV AX,SEG PRINT_INT;中断服务程序PRINT段址送DS MOV DS,AX LEA DX, PRINT_INT ;PRINT偏址送DX MOV AL,0AH ;中断类型码送AL MOV AH,25H ;功能号送AH INT 21H ;调用DOS设中断向量功能 IN AL,21H ;读中断屏蔽寄存器IMR内容 AND AL,0FBHOUT 21H,AL ;开放IR2中断 POP DS ;恢复DS,48,MOVDX,213HMOVAL,01HOU
20、TDX,ALMOVSI,OFFSET BUFMOVAL,SIINCSIMOVBUFPT,SIMOVCX,NUM-1MOVDX,210HOUTDX,AL,STIMOVDX,213HMOVAL,00OUTDX,ALINCALNOPOUTDX,ALNEXT:HLT ;等待中断 LOOPNEXTINAL,21HORAL04HOUT21H,AL,49,中断处理子程序PRINT_INTPROC MOVSI,BUFPTMOVAL,SIINCBUFPTMOVDX,210HOUTDX,ALMOVDX,213HMOVAL,00HOUTDX,ALNOPINCALOUTDX,ALP_END: MOVAL,20HOUT
21、20H,AL IRETPRINT ENDP,50,【例3】将开关的通断状态用七段LED数码管显示。 例如,K8闭合,其余3个断开,则七段LED显示器 显示数字7。,51,52,53,工作原理分析,同相驱动器,A口工作于输入方式,PA3PA0与4个开关相连,B口工作于输出方式,PB7PB0经同相驱动器与七段LED显示器相连(B口输出的是TTL电平信号,要使LED显示器发光,必须加上驱动电路,才能提供足够大的电流)。 开关合上后,PA接地,输入“0”电平;开关断开时,PA经一电阻接5V,输入“1”电平。CPU从8255读入A口的状态,根据转换码表查表转换为相应的七段码,输出相应信号到B口。PB端经
22、同相驱动器接七段LED显示器,其电平为“0”时相应的LED灭;电平为“1”时相应的LED亮。,54,; 0 1 2 3 4 5 6 7 8TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH 9 A b C d E F DB 6FH,77H,7CH,39H,5EH,79H,71H PORTA EQU 0F0H ;A口地址 PORTB EQU 0F2H ;B口地址 PORTCTL EQU 0F6H ;控制寄存器地址 MOV AL,10010000BOUT PORTCTL,AL ;写方式控制字 IN AL,PORTA ;读A口开关状态AND AL,0FH ; 高
23、4位清0LEA BX,TABLE XLAT ;利用换码表转换为七段码值OUT PORTB,AL ;从B口输出,驱动LED发光JMP LP,LP:,55,【例4】 键盘及显示,56,OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口IN_KEY equ 08001h ; 键盘读入口data segmentLEDBuf db 6 dup(?) ; 显示缓冲Num db 1 dup(?) ; 显示的数据DelayT db 1 dup(?)LEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
24、db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hKeyTable: ; 键码定义 db 16h, 15h, 14h, 0ffh,13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah,0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h,00h, 01h, 04h, 07hdata ends,57,code segment assume cs:code, ds:dataDelay proc near push ax ; 延时子程序 push cx mov al, 0 mov cx,ax loop $ pop
25、 cx pop ax retDelay endp,58,DisplayLED proc near mov bx, offset LEDBuf mov cl, 6 ; 共6个八段管 mov ah, 00100000b ; 从左边开始显示DLoop: mov dx, OUTBIT mov al, 0 out dx,al ; 关所有八段管 mov al, bx mov dx, OUTSEG out dx,al mov dx, OUTBIT mov al, ah out dx, al ; 显示一位八段管,ush ax mov ah, 1 call Delay pop ax shr ah, 1 inc
26、bx dec cl jnz DLoop mov dx, OUTSEG mov al, 0 out dx,al ; 关所有八段管 retDisplayLED endp,59,TestKey proc near mov dx, OUTBIT mov al, 0 out dx, al ; 输出线置为0 mov dx, IN_KEY in al, dx ; 读入键状态 not al and al, 0fh ; 高四位不用 retTestKey endp,60,GetKey proc near mov ch, 00100000b mov cl, 6KLoop: mov dx, OUTBIT mov al
27、, ch ; 找出键所在列 not al out dx, al shr ch, 1 mov dx, IN_KEY in al, dx not al and al, 0fh jne Goon_ ; 该列有键入 dec cl jnz KLoop,mov cl, 0ffh ; 没有键按下, 返回 0ffh jmp Exit1Goon_: dec cl shl cl, 2 ; 键值 = 列 X 4 + 行 mov ch, 4LoopC: test al, 1 jnz Exit1 shr al, 1 inc cl dec ch jnz LoopC,61,Exit1: mov dx, OUTBIT mov
28、 al, 0 out dx, al mov ch, 0 mov bx, offset KeyTable add bx, cx mov al, bx ; 取出键码 mov bl, al,WaitRelease: mov dx, OUTBIT mov al, 0 out dx, al ; 等键释放 mov ah, 10 call Delay call TestKey jne WaitRelease mov al, bl retGetKey endp,62,Start proc near mov ax, data mov ds, ax mov LEDBuf, 0ffh ; 显示 8.8.8.8. m
29、ov LEDBuf+1, 0ffh mov LEDBuf+2, 0ffh mov LEDBuf+3, 0ffh mov LEDBuf+4, 0 mov LEDBuf+5, 0,MLoop: call DisplayLED ; 显示 call TestKey ; 有键入? jz MLoop ; 无键入, 继续显示 call GetKey ; 读入键码 and al, 0fh ; 显示键码 mov ah, 0 mov bx, offset LEDMAP add bx, ax mov al, bx mov LEDBuf+5, al jmp MLoopStart endpcode ends end s
30、tart,63,【例5】 8255A与A/D芯片配合构成数据采集系统。A/D转换器的原理框图以及主要工作时序如下图所示。编写程序完成8255A的初始化以及启动A/D变换的程序。设8255A的端口地址范围为300303H。,BUSY,BUSY,64,PA7PA0 PC7 PC0 PC4 PC3,D7D0,8255A,A/D转换器,65,MOVAL,0B0H;8255A方式控制字MOVDX,303HOUT DX,AL MOVDX,303HMOVAL,0FHOUTDX,ALDECALOUTDX,ALMOVDX,302HAGAIN:INAL,DX;读取C口状态ANDAL,10H JZAGAIN;否,继
31、续查询MOVDX,300HINAL,DX ;读取A口数据,66,8253内部结构框图,67,8253外部引脚,68,计数器内部结构,69,计数器工作过程,70,计数器工作过程,71,计数器工作过程,72,计数器工作过程,73,计数器工作过程,74,计数器工作过程,75,8253控制字格式,76,方式0时序波形,CLK,WR,GATE,OUT,n=4,4,3,2,1,0,INTR,n=5,5,4,3,2,n=3,3,2,1,0,INTR,GATE=1 正常计数,计数过程GATE=0 暂停计数,计数过程重写新的初值,77,方式1时序波形,CLK,WR,GATE,OUT,n=3,3,2,1,0,3,
32、2,3,2,n=4,GATE上升沿触发 正常计数,重触发,单脉冲宽度增加,计数过程重写新的初值,单脉冲宽度 3tC,1,0,单脉冲 宽度 5tC,4,3,2,单脉冲,78,方式2时序波形,CLK,WR,GATE,OUT,n=4,4,3,2,1,0,4,GATE=1 正常计数 周期性的负脉冲信号,计数过程GATE=0 暂停计数,计数过程重写新的初值,4,3,2,1,0,3,4,重复周期 ntc,1,0,n=5,4,3,2,1,0,5,4,79,方式3时序波形,CLK,WR,GATE,OUT,n=4,4,2,0,0,4,n为偶数 GATE=1 正常计数,4,2,0,4,n=5,2,4,0,2,2,
33、0,4,2,0,方波信号,4,2,0,4,2,0,4,2,0,n为奇数 GATE=1 正常计数,近似方波信号,80,方式3时序波形,CLK,WR,GATE,OUT,n=4,4,2,0,0,4,4,2,0,4,2,4,0,2,2,2,0,2,4,计数过程GATE=0 暂停计数,2,2,81,方式4时序波形,CLK,WR,GATE,OUT,n=4,4,3,2,1,0,n=4,4,3,4,3,n=3,3,2,1,0,GATE=1 正常计数,计数过程GATE=0 暂停计数,计数过程重写新的初值,软件触发(第1次),软件触发(第2次),2,选通脉冲,82,方式5时序波形,CLK,WR,GATE,OUT,n=3,3,2,1,0,n=5,3,2,1,0,GATE上升沿触发 正常计数,重触发,计数过程重写新的初值,5,4,3,硬件触发(第1次),硬件触发(第2次),