第七章8255接口电路ppt课件.ppt

上传人:小飞机 文档编号:1429631 上传时间:2022-11-23 格式:PPT 页数:61 大小:887.50KB
返回 下载 相关 举报
第七章8255接口电路ppt课件.ppt_第1页
第1页 / 共61页
第七章8255接口电路ppt课件.ppt_第2页
第2页 / 共61页
第七章8255接口电路ppt课件.ppt_第3页
第3页 / 共61页
第七章8255接口电路ppt课件.ppt_第4页
第4页 / 共61页
第七章8255接口电路ppt课件.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《第七章8255接口电路ppt课件.ppt》由会员分享,可在线阅读,更多相关《第七章8255接口电路ppt课件.ppt(61页珍藏版)》请在三一办公上搜索。

1、本章学习的知识点:1)掌握并行接口8255的基本功能2)掌握并行接口8255的三种工作方式的特点和用法3)掌握并行接口8255的硬软件设计方法本章学习的难点:1)掌握8255的3种工作方式的特点和用法2)掌握8255的硬软件设计方法,第七章 可编程并行接口电路 8255,8255是Intel公司为其8086/8088系列微处理器生产的8位(数据线)通用可编程并行输入输出接口芯片。它具有很强的功能,在使用中可利用软件编程来指定它将要完成的功能。因此,8255获得了广泛的应用。,7.1 可编程并行接口8255引脚功能和结构,1)外部引线8255的外部引线如图所示D0D7:双向数据信号线 RD:读信

2、号线 WR:写信号线 CS:片选信号线 A0、A1:口地址选择信号线 RESET:复位输入信号PA0-PA7:A口输入输出信号线PB0-PB7:B口输入输出信号线 PC0-PC7:B口输入输出信号线,1、8255的外部引线及内部结构,图7-1 8255的外部引线图,(1)与外设接口部分 有三个8位的输入输出端口:端口A、端口B、端口C,其编号:PA7PA0、PB7PB0、PC7PC0。端口都是8位,都可以作为输入或输出,但功能上各有特色:,2) 内部结构 8255的内部结构框图如图7.2所示,由三部分组成。,口A:对应一个8位数据输出锁存和缓冲器;一个8位数据输入锁存器。口B和口C :对应一个

3、8位数据输出锁存和缓冲器;一个8位数据输入缓冲器。注意:口B和口C 都没有输入锁存,用于输入方式时不能对数据锁存,即如第一次进来的数据没被取走时,第二次进来的数据把第一次进来的数据淹没。,图7.2 8255的内部结构框图,(2)与微处理器接口部分 这部分主要完成数据传送及逻辑控制。 有:RD、WR、CS、RESET、D0-D7,8255的各端口地址线A0、A1。,(3)内部控制部分 由A、B两组控制电路组成。 主要作用是根据CPU送来的控制字用以决定两组端口(A组为A口和C口的高4位,B组为B口和C口的低4位)的工作方式,也可根据控制字的要求对C口按位进行置位或复位。,8255四个端口: 82

4、55有三个8位的数据输入输出口外,还有一个控制口,其功能是用于对8255的工作方式进行设置。,重点掌握和理解的内容:,哪个口工作由A0、A1的组合实现选择:A1 A0 选中的口地址号0 0 选中A口0 1 选中B口1 0 选中C口1 1 选中控制口,8255四个端口寻址逻辑关系,与微处理器接口部分的硬件电路图实例 图7-3,8255有三种工作方式,三种工作方式都可由CPU向8255的控制口写入控制字来决定8255的工作方式。控制字有两种:方式选择控制字 C口的按位置位/复位控制字,7.2 8255方式控制字及状态字(重点内容),1、8255的工作方式,1) 方式选择控制字 方式选择控制字用来决

5、定8255A三个数据端口各自的工作方式,它由一个8位的寄存器组成,它的格式如下所示。,A组控制,B组控制,D7位为“1”时,为方式选择控制字的标识位。D6、D5位决定A端口的工作方式。D4位决定A端口工作在输入还是输出方式。D3位决定C端口高4位PC7PC4是作为输入端口,还是作为输出端口。D2位用来选择B端口的工作方式。D1位决定B端口作为输入还是输出端口。D0位决定C端口低4位PC3PC0作为输入,还是输出。,A组控制,B组控制,例:要求A口为输入,B口为输出,C口为输出,A口方式0,B口方式1。根据要求设置方式控制字:94HMOV AL,94HOUT (PORTC),AL ; PORTC

6、为控制口地址号,注意:8255在工作过程中如果改变工作方式,则控制口设置的内容全部复位(CPU自动完成),接着要设置新的方式控制字后才能进入新的工作方式。,3种工作方式可用软件编程对控制口设置来指定。三种基本的工作方式为: 方式0基本的输入输出方式 方式1选通输入输出方式 方式2双向传送方式。,7.3 8255的工作方式,1) 工作方式0(基本输入输出方式) 功能:方式0不使用联络信号,也不使用中断,A口和B口可定义为输入或输出口,C口分成两个部分(高四位和低四位),C口的两个部分也可分别定义为输入或输出。在方式0,所有口输出均有锁存,输入只有缓冲,无锁存,C口还具有按位将其各位清0或置1的功

7、能。常用于与外设无条件的数据传送或接收外设的数据。,2) 工作方式1(选通输入输出方式),A口借用C口的一些信号线用作控制和状态信号,组成A组,B口借用C口的一些信号线用作控制和状态信号,组成B组。在方式1下,C口的某些位被占用。,当A口工作于方式1且用作输出口时,C口的PC7线用作输出缓冲器满OBF信号,PC6用作外设收到数据后的响应信号ACK,PC3用作中断请求输出信号线INTR。,方式1的输出:,当B口工作于方式l且用作输出口时,C口的PC1线用作输出缓冲器满OBF信号,PC2用作外设收到数据后的响应信号ACK,PC0用作中断请求输出信号线INTR。,方式1下A口、B口为输出,图7.4

8、方式1下,A、B口均为输出的信号定义,控制字的设置,OBF 为输出缓冲器满信号,低电平有效。8255输出信号,当其有效时,CPU已将数据送到指定的口,用于通知外设可将数据取走。,各个控制位的作用(重点掌握和理解的内容),ACK 为外设响应信号,低电平有效。由外设送来,有效时表明8255的数据已被外设取走。,INTR 为中断请求信号,高电平有效。它是当外设将数据取走并给出应答ACK 信号之后,8255向CPU提出中断请求,让CPU输出一个新的数据。, INTE 中断允许信号,高电平有效。为低时则屏蔽中断请求,即不发出中断请求信号INTR。INTE的状态由通过对C口PC6或PC2置1后A口和B口才

9、允许中断。,INTE1,允许A口或B口向CPU申请中断,INTE0,禁止A口或B口向CPU申请中断。,8255的中断设置方法:,中端允许信号INTE是由软件通过对C口的按位置位复位的控制字来置1或清0的设置的, PC6置1时,A口允许中断, PC2置1时,B口允许中断。,注意:在方式1输出方式时,PC4和PC5的工作状态由控制字决定其为输出还是输入。设置后不影响其它位的作用。,方式1下A口、B口为输入(重点掌握和理解的内容),1)A口工作于方式1且用作输入口时,C口的PC4线用作选通输入信号线STB,PC5用作输入缓冲器满输出信号线IBF,PC3用作中断请求输出信号线INTR。,2)B口工作于

10、方式1且用作输入口时,C口的PC2线用作选通输入信号线STB,PC1用作输入缓冲器满输出信号线IBF,PC0用作中断请求输出信号线INTR。,方式1下A口、B口均为输入,图7.5 方式1下A、B口均为输入时的信号定义,控制字的设置, STB :选通控制,输入信号。当外部设备来的8位数据送入到8255的输入缓冲器中时该位有效。 在时间上,外部设备先把数据送到8255的数据口A或B,然后再送出STB信号,用于把数据锁存到8255的输入数据寄存器,等待CPU取数据。, IBF : 输入缓冲器满信号,输出信号,高电平有效。当8255的输入缓冲器有新数据后,该位有效,为8255给外设的联络信号,告知外设

11、输入的数据已被接收到,但还没被CPU取走,不能再送新的数据。该信号在STB变为低后,300NS时间内变为高电平(自动完成)。,在CPU读取了数据后,RD信号撤消后的300NS时间内IBF信号才撤消,变为低电平,告知外设可输入新的数据。, INTR :为中断请求信号,高电平有效。中端请求的条件:STB变高后300ns内,并IBF信号也为高。(要等数据全部进入到输入缓冲器后才发出中断请求), INTE :中断允许信号,高电平有效。为低时则屏蔽中断请求。INTE的状态由通过对C口PC4或PC2置1后A口和B口才允许中断。(与INTR完全不同,是无条件的,由软件对C口PC4或PC2置1即可实现中断 )

12、,3) 工作方式2 (双向输入输出方式),功能:方式2是A组独有的工作方式。外设既能在A口的8条引线上发送数据,又能接收数据。此方式也是借用C口的5条信号线作控制和状态线,A口的输入和输出均带有锁存。,理解内容:,图7.6 方式2下的信号定义,OBF:输出缓冲器满,输出,低有效。这是8255A送给外设的控制信号,有效时表示数据已送入到A口输出锁存器中,用该信号通知外设将数据取走。,ACK :应答,输入,低有效。这是外设送来的信号,有效时表示外设已经从A口输出线上将数据取走。,STB :选通信号,输入,低有效。这是由外设送来的信号,有效时将由外设送来的位于A口引线的8位数据锁存到A口的输入锁存器

13、中。,INTR:中断请求,输出,高有效。这是8255A送给CPU的中断请求信号。 无论是输入操作还是输出操作,当一个操作完成,要进行下一个操作时8255A都通过该引脚向CPU发中断请求信号。 方式2的A口输入和输出传送各自作为一个中断源,两个中断请求信号在8255A内部相或,只产生一个中断请求通过PC3发给CPU。,IBF:输入缓冲器满,输出,高有效。这是8255A送给外设的响应信号,有效时表示数据已送入到输入锁存器中,CPU可以取走。,INTE1:中断允许1。它是由内部的中断控制触发器发出的允许中断或屏蔽中断的信号。INTEl,允许A口在输出缓冲器变空(数据已被外设取走)时向 CPU申请中断

14、,让CPU输出一个新的数据;INTE0,则屏蔽了输出中断请求,这样,即使A口的输出缓冲器已经变空了,也不能在INTR上产生中断请求信号。INTE1为0还是为1是由软件通过对PC6复位置位来完成的,PC60使INTE1为0,PC6l使INTE1为1。 (由软件置1实现中断),INTE2:中断允许2。它也是由内部的中断控制触发器发出的允许中断或屏蔽中断的信号。INTE21,允许A口在输入数据就绪时向CPU申请中断,让CPU将数据取走;INTE20,则屏蔽了输入中断请求。INTE2为0还是为1是由软件通过对PC4复位置位来完成的,PC40使INTE2为0,PC41使INTE2为1。(由软件置1实现中

15、断),8255A和CPU传输数据的过程中,经常将C端口的某几位作为控制位或状态位来使用,从而配合A端口或B端口的工作。,7.4 C口按位置位/复位控制字 控制字D7=0,在8255A芯片初始化时,C端口置1/置0控制字可以单独设置C端口的某一位为0或某一位为1。控制字的D7位为“0”时,是C端口置1/置0控制字中的标识位,这个控制字只对C口起作用,任何一位都可以通过按位置位/复位控制字来设置。,注意:对C口的置位/复位控制不是把控制字送到C口,而是由控制口决定各位的状态,是把控制字送到控制口,图7.7 C口的按位操作控制字格式,D0位的状态决定了是对由D3-D1选中位是复位还是置位,每设置一次

16、只能对其中的一位实现设置!,例:设置C7=1,C5=1,C3=0 MOV AL,0FH OUT (PORTC),AL ;C7=1 MOV AL,0BH OUT (PORTC),AL ;C5=1 MOV AL,06H OUT (PORTC),AL ;C3=0每位需两条指令完成设置PORTC为控制口的地址号,7.6 8255应用设计举例例1、8255与打印机连接的硬软件设计查询式,用C口的一些位做工作状态(灵活应用!),图7.8 8255与打印机的连接,在使用中打印机的很多控制线中只使用少数的几个控制信号就可以满足正确打印的要求,其它信号线可以不要。,STROBE:告诉打印机是否能发数据。BUSY

17、:=1,数据被打印机取走,=0,数据被打印机取走。,打印程序如下: INIT55:MOV DX,0383H;控制口地址 MOV AL,13H ;A方式0、输出、B方式0,输入 OUT DX,AL ;C7-4输出、C3-0输入 MOV AL,0DH ;C6置1 OUT DX,AL ;给打印机一个接受数据信号 PRINT:MOV AL,BLAK ;BLAK为要打印的数据长度 MOV CL,AL;数据长度送到CL保存 MOV SI,OFFSETDATA1 :取打印数据存放地址 GOON:MOV DX,0382H ;设C口地址 PWAIT:IN AL,DX ;取回C口的内容 AND AL,02H;判断

18、C1位,打印是否准备好 JNZ PWAIT ;C1=0 ZF=0 则转去继续查询等待 MOV AL,SI ;准备好,取一个字符 MOV DX,0380H;送打印字给A口 OUT DX,AL ;送数据,MOV DX,0383H MOV AL,0CH : C6置0,使该位有跳变 OUT DX,AL ;按位置位控制字 MOV AL,0DH ; C6置1,给打印机一个接受数据信号 OUT DX,AL ;送脉冲 INC SI ;打印数据区地址移到下一个数据位置 DEC CL ;数据长度减1 JNZ GOON ;全部数据打印完吗?没完返回继续打印 RET ;全部数据打印完,返回主程序,在此例中,为了保证打

19、印机正确的接收到数据,先给出一个查询信号STROBE,在打印机接到这个信号后并且处在“闲”状态时,就回答给出BUSY=1,CPU就可以将要打印的数据送到A口,同时发出STROBE信号,告诉打印机,要发送下一个数据。,例2:设计两个8255,要求8255(1)地址为80H-83H,8255(2)地址为84H-87H地址译码:,与CPU的硬件电路,对8255(1)的工作方式要求: A方式0、输入,B方式1、输出,C7-4输出, C3-0输入控制字为95H,初始化程序: MOV AL,95H OUT (83H),AL对8255(2)的工作方式要求: A方式1、输出、B方式1,输入,C7-4输入, C

20、3-0输出控制字为AEH,初始化程序: MOV AL,AEH OUT (87H),AL要分别对两个8255进行初始化设置,1、当K全闭合时,8支灯亮;当有一个以上K断开时,8支灯灭。,例3: 8255A的PA0PA7端接有开关K0 K7, PB0 PB7接有8支LED发光管。端口A、B均工作在方式0下,根据开关状态控制LED灯的显示。,设计任务:,2、测试开关状态,控制相应的灯亮或灭。,+5V,M/IORD,地址:90H,91H,92H,93H方式控制字:10010000=90H,任务1编程:,START: MOV AL,90H ;8255初始化设置 OUT 93H,ALSTATES:IN A

21、L,90H ,读A口 AND AL,0FFH ,判断K0-K7全闭合 JZ HIGH;当K全闭合时,8支灯亮; MOV AL,0FFH;有一个以上K断开, OUT 91H,AL; 8支灯灭; JMP DONE HIGH: MOV AL,00H ;8支灯亮(注意电路的非门) OUT 91H,AL DONE: JMP STATES,START:MOV AL,90H OUT 93H,ALAGAIN:IN AL,90H OUT 91H,AL JMP AGAIN,任务2编程:,例4 用8255作为小键盘接口的设计,图中8255A的A口工作于方式0输出,B口工作于方式0输入。,1)CPU扫描8255的各行

22、(使输出逐位依此为0),读回输入,检查是否有键按下(是否有某位为0)。,设计思想:,2)有键按下时,与之对应的行和列短接,使其为0,查键值。,3)根据输出行为0的顺序,确定行值,然后根据输入列为0的位,找到对应的键值。,工作原理:使全部输出线为0,读回输入线的数据,如有键被按下,则肯定有一条线的数据(有一位)为0。键盘工作过程:首先进行第1次键盘扫描(判断是否有键按下)。,工作原理:使全部输出线为0,读回输入线的数据,如有键被按下,则肯定有一条线的数据(有一位)为0。键盘工作过程:首先进行第1次键盘扫描(判断是否有键按下)。,使A口PA3PA0输出均为0,然后读入B口的值,查看PB3PB0是否

23、有低电平,若没有低电平,则说明没有键按下,继续进行扫描(重复过程 )。,若PB3PB0中有一位为低电平,使用软件延时1020 ms以消除抖动,若低电平消失,则说明低电平是由干扰或按键的抖动引起的,必须再次扫描,否则,则确认有键按下,接着进行第2次扫描(行扫描,判断所按键的位置)。,通过A口输出使PA0=0,PA1=1,PA2=1,PA3=1(逐位为0)对第0行进行扫描,此时,读入B口的值,判断PB3PB0中是否有某一位为低电平,若有低电平,则说明第0行某一列上有键按下。,如果没有低电平,接着使A口输出PA0=1,PA1=0,PA2=1,PA3=1对第1行进行扫描。,按上述方法判断,直到找到被按

24、下的键,并识别出其在矩阵中的位置,从而可根据键号去执行该键对应的处理程序。,设8255A的A口、B口和控制寄存器的地址分别为80H、81H和83H。 MOV AL,82H ;A口方式0输出,B口方式0输入 OUT 83H,AL ;将工作方式控制字送控制寄存器 MOV AL,00H OUT 80H,AL ;使PA3=PA2=PA1=PA0=0 LOOA:IN AL,81H ;读B口,判断PB30是否有一位为低电平 AND AL,0FH ;只考虑低四位的值 CMP AL,0FH ;有键闭合吗? JZ LOOA;无键被按下,转LOOA等待 CALL LD20ms;有键被按下,PB3PB0有一位为低,

25、调延 ;时20 ms子程序,消除抖动引起的误动作。 IN AL,81H ;再次读入B口值。,程序设计:,AND AL,0FH;有键按下,在检查是否真的按下。CMP AL,0FH;如果延时后PB3PB0中低电平不再存在,JZ LOOA;说明是由干扰或抖动引起的,则转LOOA继续扫描,延时后仍有某位为0,说明有键被按下,查键值。 下段程序为判断哪一个键按下 START:MOV BL,4 ;行数送BL(共四行) MOVBH,4;列数送BH(共四列) MOVAL,0FEH;准备扫描0行,使D0位=0。 MOVCL,0FH;键盘屏蔽码送CL(只要低四位) MOVCH,00H;CH中存放起始键号LOP1:

26、 OUT80H,AL;A口输出,扫描一行(D0=0) ROLAL,1;行值左移一位,修改扫描码,准 ;备扫描下一行。 MOVAH,AL;暂时保存行线值 INAL,81H;读B口,以便确定所按键的列值,AND AL,CL ;比较是低四位,只保留低四位 CMP AL,CL ;检查该列线是否为0, JNZ LOP2 ;有列线为0,转LOP2,找列值 ADD CH,BH ;无键按下,修改键号,检查下一行MOV AL,AH ;恢复扫描码DEC BL ;行数减1JNZLOP1 ;行未扫描完转LOP1,扫描下一行 MOV CX,16 ;16个键,要找最多16次LOP2:MOV SI,TABLE ;取键码表值

27、 CMP AX,SI ;查找该键值 JZ LOP3 ;找到该值,到键处理子程序 INC SI INC SI LOOP LOP2,键值表: ORG 1000HTABLE:DW FE0E ;0键 DW FD0E ;1键 DW FB0E ;2键 DW F70E ;3键 DW FE0D ;4键 DW FE0D ;5键 DW FD0D ;6键 DW FB0D ;7键 DW F70D ;8键 DW FE0D ;9键 ; ;,键处理子程序:LOP3:MOV AX,SI ;AL中的内容就为该键值 : :,例5采用8255A进行双机并行通信的接口,要求在甲乙两台微机之间并行传送1K字节数据。两机的CPU与接口之

28、间都采用查询方式交换数据。1. 甲机发送, 1方式, PA口为输出, PC7和 PC6引脚分别固定作联络线OBF和ACK2.乙机接收。0方式,PA口为输入,PC4和 PC0作联络线。,虽然,两侧的8255A都设置了联络线,但有本质的差别:甲机8255A是1方式,其联络线是固定的不可替换;乙机的8255A是0方式,其联络线是不固定的可选择,比如可选择PC4和PC1或PC3、PC2等任意组合。,双机并行传送接口电路框图,甲机发送程序: MOV DX,0303H ;8255A命令口 MOV AL,10100000B ;初始化工作方式字 OUT DX,AL MOV AL,0DH ;置发送中断允许INT

29、EA=1 OUT DX,AL ;PC6=1 MOV AX,0030H ;发送数据内存首址 MOV ES,AX MOV BX,00H ; MOV CX,0400H ;发送字节数 MOV DX,0300H ;向A口写第一个数,产生第一个OBF信号,分别对两个系统进行程序设计,MOV AL,ES:BX ;送给对方,以便获取对 ;方的ACK信号 OUT DX,AL INC BX ;内存加1 DEC CX ;字节数减1L:MOV DX,0302H ;8255A状态口 IN AL,DX ;查发送中断请求 INTRA=1? AND AL, 08H ;PC3= 1? JZ L ;若无中断请求,则等待;有中断请

30、 ;求,则向A口写数。 MOV DX,0300H ;8255A PA口地址 MOV AL, ES:BX ;从内存取数 OUT DX, AL ;通过A口向乙机发送第二个数据,INC BX ;内存地址加 1DEC CX ;字节数减1JNZ L ;字节未完,继续MOV AX, 4C00H ;已完,退出RET在上述发送程序中,是查状态字的中断请求 INTR位(PC3),实际上,也可以查发送缓冲器满OBF(PC7)的状态, 只有当发送缓冲器空时CPU才能送下一个数据。,乙机接收程序: MOV DX,0303H ;8255A命令口 MOV AL,10011000B ;初始化工作方式字 OUT DX,AL

31、MOV AL,00000001B ;置ACK=1(PC0=1) OUT DX, AL MOV AX,0040H ;接收数据内存首址 MOV ES, AX MOV BX, 0000H MOV CX, 0400H ;接收字节数L1:MOV DX, 302H ;8255A PC口 IN AL,DX ;查甲机的OBF=0?(PC4=0) AND AL,10H;即查甲机是否有数据发来,JNZ L1 ;若无数据发来,则等待;若有数据,则从A口读数MOV DX, 300H ;8255A PA口地址IN AL,DX ;从A口读入数据MOV ES:BX,AL ;存入内存MOV DX,303H ;产生ACK信号并发回给甲机MOV AL,00000000B ;PC0置“0”OUT DX, AL NOPMOV AL, 00000001B ;PC0置“1”OUT DX,AL ;INC BX ;内存地址加1,DEC CX ;字节数减1JNZ L1 ;字节未完,则继续MOV AX,4C00H ;已完,退出RET,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号