微机原理第9章8255及其应用.ppt

上传人:小飞机 文档编号:6284492 上传时间:2023-10-13 格式:PPT 页数:56 大小:891KB
返回 下载 相关 举报
微机原理第9章8255及其应用.ppt_第1页
第1页 / 共56页
微机原理第9章8255及其应用.ppt_第2页
第2页 / 共56页
微机原理第9章8255及其应用.ppt_第3页
第3页 / 共56页
微机原理第9章8255及其应用.ppt_第4页
第4页 / 共56页
微机原理第9章8255及其应用.ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《微机原理第9章8255及其应用.ppt》由会员分享,可在线阅读,更多相关《微机原理第9章8255及其应用.ppt(56页珍藏版)》请在三一办公上搜索。

1、第九章 可编程外围接口芯片,8255A及其应用,8255A 是INTEL系列的并行接口芯片,由于它是一种可编程的外部接口部件,通常作为微机系统总线与外部设备的接口控制部件,可通过软件来设置芯片的工作方式,用8255A连接外部设备时,通常不需要附加外部电路,给使用带来很大的方便。,8255A内部结构8255A引脚说明8255A控制字 8255A工作方式8255A在PC机中的应用8255A接口实例,9.1 8255的工作原理,一、8255A的结构和功能(P325),8255的工作原理,一、8255A的结构和功能,1.数据端口A、B、C,8255有3个8位的I/O端口,设计人员可以用软件使它们分别作

2、为输入端口或输出端口。,端口A:对应了1个8位的数据输入锁存器和1个8位的数据输出锁存/缓冲器。所以口A作为输入或输出时,数据均受到锁存。(PA0PA7),端口B:对应了1个8位的数据输入缓冲器和1个8位的数据输出锁存器/缓冲器。所以口B作为输入端口时,不会对数据进行锁存,而作为输出端口时,数据会受到锁存。(PB0PB7),端口C:与B口一致,对应了一个8位数据输入缓冲器和1个8位的数据输出锁存/缓冲器。所以C口作为输入端口时,对数据不作锁存,而作为输出端口时,对数据进行锁存(PC0PC7),8255的工作原理,一、8255A的结构和功能,2.A组和B组控制逻辑,8255在使用时,常用端口A与

3、端口C的高4位组成一个带控制信号的端口,称为A组。由A组控制逻辑管理;用端口B与端口C的低4位也可以组成一个带控制信号的端口,称为B组。由B组控制逻辑管理。,其中,A组由端口A作为与外设交换数据的输入/输出接口,C口的高4位作为外设连接的控制信号线和状态信号线,以配合A口工作。,同理,B组由端口B作为与外设交换数据的输入/输出接口,C口的低4位作为外设连接的控制信号线和状态信号线,以配合B口工作。,8255的工作原理,一、8255A的结构和功能,3.数据总线缓冲器,8255的数据总线缓冲器是双向三态的8位数据缓冲器,通过它直接与系统的数据总线(D0D7)相连。输入/输出数据、CPU发给8255

4、的控制字都是通过这个缓冲器传送的。,4.读/写控制逻辑电路(P326),读/写控制逻辑电路负责管理8255的数据传输过程。它接收CS及来自系统地址总线A1,A0(8086系统中为A2,A1)和控制总线的输入信号RESET,WR,RD,将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发送给这两个部件,以完成对数据、状态信息和控制信息的传输。(见P327页),8255的工作原理,一、8255A的结构和功能,说明:,(2)端口C又可以分成“上C口”和“下C口”2个部分,可以用作A口和B口的控制信号线,所以把A口+上C口称为A组,B口+下C口称为B组。,(3)A口:输入有锁存器,

5、输出有锁存器和缓冲器,B和C口:输入有缓冲器,输出有锁存器和缓冲器。,8255的工作原理,一、8255A的结构和功能,8255的工作原理,二、8255A的控制字(P327),8255A可通过指令在控制端口中设置控制字来决定它的工作。其控制字可分为两类(个),都写入控制字寄存器(A1A0=11),芯片各端口的工作方式控制字 端口C按位置1/置0控制字,1.方式选择控制字,8255A具有3种基本的工作方式:,方式0:基本输入输出方式(A、B、C口)方式1:选通输入输出方式(A、B口)方式2:双向总线I/O方式(仅A口),(类比8253的地址),8255的工作原理,D7=1,8255的工作原理,它可

6、使端口C中的任何一位进行置位(1)或复位(0)。,D7=0,8255的工作原理,二、8255A的控制字,3.编程举例(只要设定方式控制字即可),设:A、B、C数据口地址分别为80H、82H、84H、控制口端口地址 86H,1)A口方式0,输出、B口方式0,输入,C口高4位输出,C口低4位输入 MOV AL,10000011BOUT 86H,AL,2)PC7置1,PC3置0 MOV DX,86HMOV AL,00001111B;PC7置1OUT DX,ALMOV AL,00000110B;PC3置0OUT DX,AL,8255的工作原理,三、8255A的工作方式,1.工作方式0:基本的输入/输出

7、方式。A口、B口、上C口、下C口都可以独立设置作为输入或输出使用。适合用于无条件或查询式传送。方式0的输入不能锁存。,2.工作方式1:应答式输入或输出方式。(P330)A口、B口可以分别作为数据口工作在方式1。需要使用C口中特定的引脚作为选通和应答使用。C口中其余的引脚仍可工作在方式0,定义为输入或输出。适合用于中断式传送和程序查询方式I/O传送。,C口中特定的引脚作为选通和应答使用时,视A口(或B口)为输入还是输出的不同,有两个引脚的含义有所不同。,8255的工作原理,输入缓冲器满信号表示A口已经接收数据(可通过读C口获得该信号),中断请求信号请求CPU接收数据,选通信号,表示外设将数据送到

8、输入缓冲器中,8255的工作原理,同样B口作为选通输入接口时道理是一样的,只不过是这些信号使用的是C口的PC2,PC1和PC0。,当外设数据准备好以后,发出一个负脉冲选通信号STBA,使A口打开输入锁存器接收数据。A口接收到数据以后,发出IBFA数据写完后,STBA撤销即变为无效STBA和IBFA都变为高电平以后,如果INTEA允许,则8255A发出中断请求信号,希望CPU接收数据。CPU读数据的RD信号的下降沿使INTRA 和IBFA恢复低电平。PS:只可以通过对PC4的置位和复位来设置INTEA。,A口选通输入方式过程,在方式1输入下,可以用查询的方式让CPU读数据,也可以用中断的方式。以

9、A口为例,查询:通过读取IBF判断是否有数据可读,如果IBF为高则表示有数据可读,就用in读取。大体步骤:AG:IN AL,C口 TEST AL,00100000B;判断IBF所在的D5 JZ AG;如果没有数据即IBF为低则继续读取判断 IN AL,A口;如已经有数据则读A口数据,在方式1输入下,可以用查询的方式让CPU读数据,也可以用中断的方式。以A口为例,中断:通过设置PC4为1使得INTEA有效,当IBF也有效时INTR就会有效,该信号送给CPU的INTR,表示发生中断,由中断服务程序来读取数据;设置中断向量,指定N号中断的服务程序为INTRADMOV AL,00001001BOUT

10、C口,AL;设置PC4为1,即INTEA有效INTRAD PROC IN AL,A口;一旦有了数据,则发生中断,;就调用服务程序里去读取RETINTRAD ENDP,8255的工作原理,输出缓冲器满信号表示CPU已经将数据输出到8255A指定端口,作为外设的选通信号,中断请求信号请求CPU再次输出数据,外设响应信号,表示外设取走数据,PC7,PC6,PC3,PA7PA0,INTEA,OBFA,INTRA,ACKA,A口选通输出方式,WR,D7D0,8255的工作原理,B口这些信号使用的是C口的PC2,PC1和PC0。,输出缓冲器为空时,发出INTR信号要求CPU输出数据当CPU向端口A输出数据

11、以后,在WR的后沿使OBFA变低,告知外设输出缓冲器有数据,同时也使得INTRA变低外设收到OBFA后,发出一个负脉冲ACKA送给8255A,开启8255的输出锁存器,ACKA使OBFA变为高电平。取走数据后,ACK变高ACKA和OBFA都变为高电平以后,如果INTEA允许,则8255A发出中断请求信号,以便使CPU再次输出数据。,A口选通输出方式过程,PS:可以通过对PC6的置位和复位来设置INTEA。方式1的输出同样可以用查询或中断来实现,8255的工作原理,用PC6设置INTE1,用PC4设置INTE2。,输入和输出中断通过或门输出INTRA信号。,应答输入的状态信号可通过读C口的相应数

12、据位获得。,工作在方式下的控制字,D7:方式字的标志D6,D5:组工作方式D4:口是输入还是输出D3:口高四位输入还是输出D2:口工作方式,D1:口输入还是输出D0:输入还是输出,D7D6D5D4D3D2D1D0,X,X,0,1,X,0,8255的工作原理,三、8255A的工作方式,A1,A1,A0,A0,8位,8088,8255,端口地址:,A1 A0,0 0,0 1,1 0,1 1,X0H,X1H,X2H,X3H,8086,8255,低8位,A2,A1,A1,A0,A2 A1,A0,0 0,0 1,1 0,1 1,0,0,0,0,端口地址:,X0H,X2H,X4H,X6H,9.2 8255

13、的应用(P337),例1:电路如图示。由8个LED实时显示8个开关的状态,开关断开,相应的LED亮,开关闭合,相应的LED熄灭。,8255的应用,由图知,A口输入,8个开关K7K0分别接PA7PA0。B口输出,8个LED7LED0分别接PB7PB0,(1)8255A各端口地址:,(2)方式控制字:,只用端口A、B。,端口A、B均工作在方式0。A口输入,B口输出。,方式控制字:,9.2 8255的应用,(3)编程:,CCODESEGMENTASSUME CS:CCODESTART:MOV DX,0F6HMOV AL,98HOUT DX,ALTEST_IT:MOV DX,0F0HINAL,DXMO

14、V DX,0F2HOUT DX,ALJMP TEST_ITCCODEENDSEND START,+5V,10k,PA3,8255A,PA4,PA7,PA6,10k,PB7,PB6,PB4,PB5,PB3,PB2,PB0,PB1,例:电路如图,二、键盘接口,PA0,PA1,PA5,PA2,例:8X8=64的键盘A口做输出B口做输入,0,5,6,7,28,2D,2E,2F,30,35,35,37,9.2 8255的应用,扫描键盘步骤:(P340),(1)检测所有按键是否全都松开了,直到所有键松开。,(5)检测确认该键是否释放:,(2)检测是否有键按下,直到有键按下。,(3)检测确认有键按下。(消除

15、键抖动,20ms),(4)检测确认是否只有一个键按下:,否:转第(1)步是:确认哪个键被按下,否:继续确认是:转第(2)步,(汇编语言程序见教材P 340 P 342),判断是否有键按下,对所有行(即A口所有位)都输出0(称作“拉低”),然后读所有列(读B口),如果B口八位数据中有0出现,则有键按下,判断哪个键被按下,确定行列号便可依次把PA0PA7拉低,读列值,看是否全为1(与FFH比较),如不全为1,则该行有键按下,记下当前向A口输出的值即为行号,读取当前B口的值即为列号,9.2 8255的应用,例:电路如图示。由16个按键开关组成的键盘。,+5V,10k,PA0,8255A,PA1,PA

16、3,PA2,10k,PB7,PB6,PB4,PB5,PB3,PB2,PB0,PB1,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,A口用作输出,B口用作输入,二、键盘接口(P339),二、键盘接口(P339),此处PA0PA3(行号)连接到PB 4PB7,所以读B口时,所得的低四位为列号,高四位为行号。即一次获取了行列号。对每个键确定其行列号的值,在数据段中先存放键与行列号的对应表。那么,在读取到所按下键的行列号时,通过查表即可得到所读键的名称。程序见书后面的内容不讲,9.2 8255的应用,打印机并行接口标准,打印机并行接口通常采用Centronics并行接口标准,共有36

17、个引脚信号。其说明见表1。,五、打印机并行接口(了解),在系统连接时,打印机一端是36芯D型插座,主机一端是25芯D型插座。主机与打印电缆之间的连线见表2。,表1 Centronics并行打印接口标准,表1 Centronics并行打印接口标准(续1),表1 Centronics并行打印接口标准(续2),表2 主机与打印机接口信号连线表,表2 主机与打印机接口信号连线表(续),打印机适配器端口直接编程查询方式中断方式BIOS功能调用在BIOS系统中提供了打印机管理程序,用户可使用INT 17H功能调用,完成字符打印。DOS功能调用用户可调用INT 21H的5号子功能,完成字符打印功能。,打印机

18、接口编程实例,查询方式,例:8255A作为连接打印机的接口,工作在方式0,输出。,8086,8255A,打印机,D7D0,PA,PC6,PC2,STB,BUSY,查询式打印机接口示意图,解:,A口:方式0、输出数据下C口:方式0、PC2输入状态信号上C口:方式0、PC6输出选通信号,方式控制字为:10000001B。,为增强驱动能力,可加门电路驱动,设端口地址是:0D0H0D6H,要打印的字符放在BL中。程序如下:Setup:MOVAL,81H;设置工作方式OUT0D6H,ALMOV AL,0DH;PC6置1,0DH=0000,1101BOUT0D6H,ALReady:IN AL,0D2H;读

19、PC口TESTAL,04H;打印机忙否(PC2=BUSY=?)JNZReady;PC2=1,打印机忙,等待MOVAL,CL;打印的字符送AL中OUT0D0H,AL;BL中的字符送PA口MOV AL,0CH;置PC6为0;00001100=0CHOUT0D6H,AL;置PC6=0,即=0;INC AL;置PC6为1;00001101=0DHOUT0D6H,AL;置PC6=1,即=1,,中断方式,例:8255A作为连接打印机的接口,工作在方式0,输出。,与查询方式不同的是CPU通过8255A发送一个字符给打印机,打印机取走数据后,利用中断信号通知CPU已取走刚刚送出的字符,打印机已准备好接收数下一

20、个数据。,8086,8255A,打印机,D7D0,PA,PC0,PC6,STB,ACK,中断式打印机接口示意图,解:,A口:方式1、输出数据 PC6输入外设响应信号 下C口:方式0、PC0输出选通信号,PC3,IR3,INTR,INTA,8259A,方式控制字为:10100000B。,设端口地址是:0C0H0C6H,用DI指示字符在缓冲区的位置。程序如下:1、中断服务程序:(假设开始位置是2000H:1000H)PRNDRV:MOVAL,DI;打印的字符送AL中OUT0C0H,ALINC DIMOV AL,00;置PC0为0OUT0C6H,ALMOV AL,1;置PC0为1OUT0C6H,AL

21、MOV AL,20H;向8259A发EOI命令OUT 20H,ALIRET;该程序做了简化处理。,2、主程序INIT8259A:MOV AL,13H;初始化8259A OUT 20H,AL MOV AL,8 OUT 21H,AL MOV AL,9 OUT 21H,ALINIT8255A:MOV AL,0A0H;设置8255A工作方式 OUT 0C6H,AL MOV AL,01;置PC2为1 OUT 0C6H,AL,INSTDRV:MOV AX,0;安装中断向量MOV DS,AX;IR3的中断类型是0BHMOV Word Ptr 0BH*4,1000HMOV Word Ptr 0BH*4+2,2

22、000HSETUPIF:MOV AL,0DH;设置8255A的INTEAOUT0C6H,ALIN AL,21H;设置8259A的IMR,允许IR3AND AL,0FBHOUT 21H,ALSTI;开中断,3、打印驱动程序假设字符缓冲区从3000H:0000H处开始存放,在3000H:1000H处存放一个字,表示打印字符数。PRINT:MOV AX,3000HMOV DS,AXMOV DI,0000HINT 0BH;第一次中断,可以软件;触发LOOP1:CMPDI,1000HJB LOOP1MOV AL,0CH;关闭INTEAOUT 0D3H,AL说明:打印结束也可以在中断服务程序中进行判断。,

23、例4 设计一个PC/XT机与打印机的接口电路,采用中断控制,画出硬件逻辑图并设计相应的驱动程序。设8255口地址为280H286H,选A组方式1输出组态。,工作过程:,参考程序:,LPT_OUT SEGMENTASSUME CS:LPT_OUT,DS:LPT_OUTASSUME ES:LPT_OUT,SS:LPT_OUTORG 100HSTA PROCJMP INITUF_BEG DB 4096 DUP(20)POINTDW?BUF_LEG EQU 4096,LPT_INT PROCSTIPUSH AXPUSH BXPUSH CXPUSH DXPUSH DSPUSH ESPUSH CSPOP

24、DS,MOV BX,POINTMOV AL,BXCMP AL,1AHJE LPT_INT2MOV DX,284HOUT DX,ALINC BXMOV POINT,BXCMP BX,OFFSET POINTJNE LPT_INT1移动文件读指针读文件至缓冲区初始化缓冲区指针,LPT_INT1:POP ES POP DS POP DX POP CX POP BX MOV AL,20H OUT 20H,AL POP AX IRET,LPT_INT2:MOV DX,287H MOV AL,0CH OUT DX,AL MOV AL,00H OUT DX,AL PUSH CS POP ES MOV AH,

25、49H INT 21H JMP LPT_INT1LPT_INT ENDP,INIT:STI IN AL,21HAND AL,0F7HOUT 21H,ALMOV DX,OFFSET LPT_INTMOV AX,250BHINT 21H,MOV DX,287HMOV AL,0A2HOUT DX,ALMOV AL,0BHOUT DX,ALMOV AL,0AHOUT DX,ALMOV AL,01HOUT DX,ALMOV DX,285HIN AL,DXAND AL,7JE L1否,打印机出错提示,L1:读文件至内存缓冲区,初始化缓冲区指针MOV DX,287HMOV AL,0DHOUT DX,ALMOV DX,284HMOV BX,POINTMOV AL,BXINC BXMOV POINT,BXOUT DX,ALMOV DX,OFFSET INITINT 27HINT 20HSTA ENDPLPT_OUT ENDS END STA,习题,当8255A工作在方式1和方式2时,哪些引脚是联络线?这些联络信号有效时代表什么物理意义?当CPU用查询方式和8255A交换信息时,应查询哪些信号?用中断方式和8255A交换信息时,利用哪些端口提出中断请求?8255A的方式选择控制字和口C置0/置1控制字都是写入控制端口的,8255A是怎样识别的?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号