微机原理 第七章 8255接口电路_第1页
微机原理 第七章 8255接口电路_第2页
微机原理 第七章 8255接口电路_第3页
微机原理 第七章 8255接口电路_第4页
微机原理 第七章 8255接口电路_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

本章学习的知识点:1)掌握并行接口8255的基本功能2)掌握并行接口8255的三种工作方式的特点和用法3)掌握并行接口8255的硬软件设计方法本章学习的难点:1)掌握8255的3种工作方式的特点和用法2)掌握8255的硬软件设计方法第七章可编程并行接口电路82558255是Intel公司为其8086/8088系列微处理器生产的8位(数据线)通用可编程并行输入输出接口芯片。它具有很强的功能,在使用中可利用软件编程来指定它将要完成的功能。因此,8255获得了广泛的应用。7.1可编程并行接口8255引脚功能和结构1)外部引线8255的外部引线如图所示D0~D7:双向数据信号线RD:读信号线WR:写信号线CS:片选信号线A0、A1:口地址选择信号线RESET:复位输入信号PA0-PA7:A口输入输出信号线PB0-PB7:B口输入输出信号线PC0-PC7:B口输入输出信号线1、8255的外部引线及内部结构图7-18255的外部引线图(1)与外设接口部分有三个8位的输入输出端口:端口A、端口B、端口C,其编号:PA7~PA0、PB7~PB0、PC7~PC0。端口都是8位,都可以作为输入或输出,但功能上各有特色:2)内部结构8255的内部结构框图如图7.2所示,由三部分组成。口A:对应一个8位数据输出锁存和缓冲器;一个8位数据输入锁存器。口B和口C:对应一个8位数据输出锁存和缓冲器;一个8位数据输入缓冲器。注意:口B和口C都没有输入锁存,用于输入方式时不能对数据锁存,即如第一次进来的数据没被取走时,第二次进来的数据把第一次进来的数据淹没。图7.28255的内部结构框图(2)与微处理器接口部分

这部分主要完成数据传送及逻辑控制。有:RD、WR、CS、RESET、D0-D7,8255的各端口地址线A0、A1。(3)内部控制部分

由A、B两组控制电路组成。主要作用是根据CPU送来的控制字用以决定两组端口(A组为A口和C口的高4位,B组为B口和C口的低4位)的工作方式,也可根据控制字的要求对C口按位进行置位或复位。8255四个端口:8255有三个8位的数据输入输出口外,还有一个控制口,其功能是用于对8255的工作方式进行设置。重点掌握和理解的内容:哪个口工作由A0、A1的组合实现选择:A1A0选中的口地址号00选中A口01选中B口10选中C口11选中控制口A1A0RDWRCS完成的操作000010000111000端口A→数据总线端口B→数据总线端口C→数据总线00110101111100000000数据总线→端口A数据总线→端口B数据总线→端口C数据总线→控制口X1XX1XX0XX11100D7~D0数据总线呈高阻状态非法状态D7~D0数据总线呈高阻状态8255四个端口寻址逻辑关系与微处理器接口部分的硬件电路图实例图7-3口C上半部口C下半部口A口BRDWRRESETA1A0A1A0825574LS138G1G2AG2BCBAA5M/IOA6A4A3A2D0~D7CSY0地址译码逻辑关系:G2AG1G2BCB

A0A7A6A5A4A3A2A1

A0110000XXY0=0Y1=0C0H~C3HC0H→A口C1H→B口C2H→C口C3H→控制口C0HC2HC1H&A7

8255有三种工作方式,三种工作方式都可由CPU向8255的控制口写入控制字来决定8255的工作方式。控制字有两种:①方式选择控制字

②C口的按位置位/复位控制字7.28255方式控制字及状态字(重点内容)1、8255的工作方式1)方式选择控制字方式选择控制字用来决定8255A三个数据端口各自的工作方式,它由一个8位的寄存器组成,它的格式如下所示。D7D6D5D4D3D2D1D0特征位A组方式00=方式001=方式11X=方式2A口0=输出1=输入C口C7~C40=输出1=输入B组方式0=方式01=方式1B口0=输出1=输入C口C3~C00=输出1=输入A组控制B组控制D7位为“1”时,为方式选择控制字的标识位。D6、D5位决定A端口的工作方式。D4位决定A端口工作在输入还是输出方式。D3位决定C端口高4位PC7~PC4是作为输入端口,还是作为输出端口。D2位用来选择B端口的工作方式。D1位决定B端口作为输入还是输出端口。D0位决定C端口低4位PC3~PC0作为输入,还是输出。D7D6D5D4D3D2D1D0特征位A组方式00=方式001=方式11X=方式2A口0=输出1=输入C口C7~C40=输出1=输入B组方式0=方式01=方式1B口0=输出1=输入C口C3~C00=输出1=输入A组控制B组控制例:要求A口为输入,B口为输出,C口为输出,A口方式0,B口方式1。根据要求设置方式控制字:94HMOVAL,94HOUT(PORTC),AL;PORTC为控制口地址号

注意:8255在工作过程中如果改变工作方式,则控制口设置的内容全部复位(CPU自动完成),接着要设置新的方式控制字后才能进入新的工作方式。3种工作方式可用软件编程对控制口设置来指定。三种基本的工作方式为:方式0-基本的输入输出方式方式1-选通输入输出方式方式2-双向传送方式。7.38255的工作方式

1)工作方式0(基本输入输出方式)功能:方式0不使用联络信号,也不使用中断,A口和B口可定义为输入或输出口,C口分成两个部分(高四位和低四位),C口的两个部分也可分别定义为输入或输出。在方式0,所有口输出均有锁存,输入只有缓冲,无锁存,C口还具有按位将其各位清0或置1的功能。常用于与外设无条件的数据传送或接收外设的数据。

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方式1下,A、B口均为输出的信号定义控制字的设置D7D6D5D4D3D2D1D00A组方式01=方式1A口0=输出C口I/OB组方式1=方式1B口0=输出C口I/O①OBF为输出缓冲器满信号,低电平有效。8255输出信号,当其有效时,CPU已将数据送到指定的口,用于通知外设可将数据取走。各个控制位的作用(重点掌握和理解的内容)

②ACK为外设响应信号,低电平有效。由外设送来,有效时表明8255的数据已被外设取走。③INTR为中断请求信号,高电平有效。它是当外设将数据取走并给出应答ACK信号之后,8255向CPU提出中断请求,让CPU输出一个新的数据。④INTE中断允许信号,高电平有效。为低时则屏蔽中断请求,即不发出中断请求信号INTR。INTE的状态由通过对C口PC6或PC2置1后A口和B口才允许中断。INTE=1,允许A口或B口向CPU申请中断,INTE=0,禁止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口工作于方式1且用作输入口时,C口的PC2线用作选通输入信号线STB,PC1用作输入缓冲器满输出信号线IBF,PC0用作中断请求输出信号线INTR。

方式1下A口、B口均为输入图7.5方式1下A、B口均为输入时的信号定义D7D6D5D4D3D2D1D00A组方式01=方式1A口1=输入C口I/OB组方式1=方式1B口1=输入C口I/O控制字的设置①STB:选通控制,输入信号。当外部设备来的8位数据送入到8255的输入缓冲器中时该位有效。在时间上,外部设备先把数据送到8255的数据口A或B,然后再送出STB信号,用于把数据锁存到8255的输入数据寄存器,等待CPU取数据。②IBF:输入缓冲器满信号,输出信号,高电平有效。当8255的输入缓冲器有新数据后,该位有效,为8255给外设的联络信号,告知外设输入的数据已被接收到,但还没被CPU取走,不能再送新的数据。该信号在STB变为低后,300NS时间内变为高电平(自动完成)。在CPU读取了数据后,RD信号撤消后的300NS时间内IBF信号才撤消,变为低电平,告知外设可输入新的数据。③INTR:为中断请求信号,高电平有效。中端请求的条件:STB变高后300ns内,并IBF信号也为高。(要等数据全部进入到输入缓冲器后才发出中断请求)④INTE:中断允许信号,高电平有效。为低时则屏蔽中断请求。INTE的状态由通过对C口PC4或PC2置1后A口和B口才允许中断。(与INTR完全不同,是无条件的,由软件对C口PC4或PC2置1即可实现中断)3)工作方式2(双向输入输出方式)功能:方式2是A组独有的工作方式。外设既能在A口的8条引线上发送数据,又能接收数据。此方式也是借用C口的5条信号线作控制和状态线,A口的输入和输出均带有锁存。理解内容:

图7.6方式2下的信号定义OBF:输出缓冲器满,输出,低有效。这是8255A送给外设的控制信号,有效时表示数据已送入到A口输出锁存器中,用该信号通知外设将数据取走。ACK:应答,输入,低有效。这是外设送来的信号,有效时表示外设已经从A口输出线上将数据取走。STB:选通信号,输入,低有效。这是由外设送来的信号,有效时将由外设送来的位于A口引线的8位数据锁存到A口的输入锁存器中。INTR:中断请求,输出,高有效。这是8255A送给CPU的中断请求信号。无论是输入操作还是输出操作,当一个操作完成,要进行下一个操作时8255A都通过该引脚向CPU发中断请求信号。方式2的A口输入和输出传送各自作为一个中断源,两个中断请求信号在8255A内部相或,只产生一个中断请求通过PC3发给CPU。IBF:输入缓冲器满,输出,高有效。这是8255A送给外设的响应信号,有效时表示数据已送入到输入锁存器中,CPU可以取走。INTE1:中断允许1。它是由内部的中断控制触发器发出的允许中断或屏蔽中断的信号。INTE=l,允许A口在输出缓冲器变空(数据已被外设取走)时向CPU申请中断,让CPU输出一个新的数据;INTE=0,则屏蔽了输出中断请求,这样,即使A口的输出缓冲器已经变空了,也不能在INTR上产生中断请求信号。INTE1为0还是为1是由软件通过对PC6复位/置位来完成的,PC6=0使INTE1为0,PC6=l使INTE1为1。(由软件置1实现中断)INTE2:中断允许2。它也是由内部的中断控制触发器发出的允许中断或屏蔽中断的信号。INTE2=1,允许A口在输入数据就绪时向CPU申请中断,让CPU将数据取走;INTE2=0,则屏蔽了输入中断请求。INTE2为0还是为1是由软件通过对PC4复位/置位来完成的,PC4=0使INTE2为0,PC4=1使INTE2为1。(由软件置1实现中断)

8255A和CPU传输数据的过程中,经常将C端口的某几位作为控制位或状态位来使用,从而配合A端口或B端口的工作。7.4C口按位置位/复位控制字

控制字D7=0在8255A芯片初始化时,C端口置1/置0控制字可以单独设置C端口的某一位为0或某一位为1。控制字的D7位为“0”时,是C端口置1/置0控制字中的标识位,这个控制字只对C口起作用,任何一位都可以通过按位置位/复位控制字来设置。注意:对C口的置位/复位控制不是把控制字送到C口,而是由控制口决定各位的状态,是把控制字送到控制口图7.7C口的按位操作控制字格式D0位的状态决定了是对由D3-D1选中位是复位还是置位,每设置一次只能对其中的一位实现设置!D7位必须为0D7D6D5D4D3D2D1D0C口置位识别位D0=0任意值选中位置1/置0选择D0=0:置0,D0=1:置1000:PC0001:PC1010:PC2011:PC3100:PC4101:PC5110:PC6111:PC7C口位选择例:设置C7=1,C5=1,C3=0MOVAL,0FHOUT(PORTC),AL;C7=1MOVAL,0BHOUT(PORTC),AL;C5=1MOVAL,06HOUT(PORTC),AL;C3=0每位需两条指令完成设置PORTC为控制口的地址号7.68255应用设计举例例1、8255与打印机连接的硬软件设计查询式,用C口的一些位做工作状态(灵活应用!)图7.88255与打印机的连接

在使用中打印机的很多控制线中只使用少数的几个控制信号就可以满足正确打印的要求,其它信号线可以不要。8255PA0PA1PA7PC6PC1系统总线D0D1D7BUSYSTROBE打印机STROBE:告诉打印机是否能发数据。BUSY:=1,数据被打印机取走,=0,数据被打印机取走。打印程序如下:INIT55:MOVDX,0383H;控制口地址MOVAL,13H;A方式0、输出、B方式0,输入OUTDX,AL;C7-4输出、C3-0输入MOVAL,0DH;C6置1OUTDX,AL;给打印机一个接受数据信号PRINT:MOVAL,BLAK;BLAK为要打印的数据长度MOVCL,AL;数据长度送到CL保存MOVSI,OFFSETDATA1:取打印数据存放地址GOON:MOVDX,0382H;设C口地址PWAIT:INAL,DX;取回C口的内容ANDAL,02H;判断C1位,打印是否准备好JNZPWAIT;C1=0ZF=0则转去继续查询等待MOVAL,[SI];准备好,取一个字符MOVDX,0380H;送打印字给A口OUTDX,AL;送数据MOVDX,0383HMOVAL,0CH:C6置0,使该位有跳变OUTDX,AL;按位置位控制字MOVAL,0DH;C6置1,给打印机一个接受数据信号OUTDX,AL;送脉冲INCSI;打印数据区地址移到下一个数据位置DECCL;数据长度减1JNZGOON;全部数据打印完吗?没完返回继续打印RET;全部数据打印完,返回主程序在此例中,为了保证打印机正确的接收到数据,先给出一个查询信号STROBE,在打印机接到这个信号后并且处在“闲”状态时,就回答给出BUSY=1,CPU就可以将要打印的数据送到A口,同时发出STROBE信号,告诉打印机,要发送下一个数据。例2:设计两个8255,要求8255(1)地址为80H-83H,8255(2)地址为84H-87H地址译码:G1G2BG2ACBAA1A0A7M/IOA5+A6A4A3A2A1A0100000001000000110000010100000118255(1)Y0=0A口80HB口81HC口82H控制口83H100001001000010110000110100001118255(2)Y1=0A口84HB口85HC口86H控制口87H与CPU的硬件电路D0-7Y0Y1D0-7M/IOA7A6A5+A4A3A2ABCG2AG2BG1A1A0A1A0CSD0-7A1A0CSWRRDWRRDWRRDRESETRESETRESETA口B口A口B口C口C口对8255(1)的工作方式要求:A方式0、输入,B方式1、输出,C7-4输出,C3-0输入控制字为95H,初始化程序:MOVAL,95HOUT(83H),AL对8255(2)的工作方式要求:A方式1、输出、B方式1,输入,C7-4输入,C3-0输出控制字为AEH,初始化程序:MOVAL,AEHOUT(87H),AL要分别对两个8255进行初始化设置1、当K全闭合时,8支灯亮;当有一个以上K断开时,8支灯灭。例3:8255A的PA0~PA7端接有开关K0~K7,PB0~PB7接有8支LED发光管。端口A、B均工作在方式0下,根据开关状态控制LED灯的显示。设计任务:2、测试开关状态,控制相应的灯亮或灭。CSA1A0WRRDPA0PA7PB0PB1PB73:8CBAG1G2AG2BWRA7A6A5A4A3A2A1A0Y4…..+5V+5V…..M/IORDK0K7D0~D7地址:90H,91H,92H,93H方式控制字:10010000=90HWRRDPB7WRY4…..+5V+5V…..RDK0K7D0~D7CSA1A074LS138CBAG1G2AG2BA7A6A5A4A3A2A1A0PA0PA7M/IO到CPU数据总线PB0PB1L0L1L7任务1编程:START:MOVAL,90H;8255初始化设置 OUT93H,ALSTATES:INAL,90H,读A口ANDAL,0FFH,判断K0-K7全闭合JZHIGH ;当K全闭合时,8支灯亮;MOVAL,0FFH ;有一个以上K断开,OUT91H,AL ;8支灯灭;JMPDONEHIGH:MOVAL,00H;8支灯亮(注意电路的非门)OUT91H,ALDONE:JMPSTATESSTART:MOVAL,90H OUT93H,ALAGAIN:INAL,90HOUT91H,ALJMPAGAIN任务2编程:例4用8255作为小键盘接口的设计

图中8255A的A口工作于方式0输出,B口工作于方式0输入。0#8255APA0CPU总线行0+5VPA1PA2PA3PB0PB1PB2PB312#1#13#2#14#3#15#行1行2行3列0列1列2列31)CPU扫描8255的各行(使输出逐位依此为0),读回输入,检查是否有键按下(是否有某位为0)。设计思想:2)有键按下时,与之对应的行和列短接,使其为0,查键值。3)根据输出行为0的顺序,确定行值,然后根据输入列为0的位,找到对应的键值。工作原理:使全部输出线为0,读回输入线的数据,如有键被按下,则肯定有一条线的数据(有一位)为0。键盘工作过程:首先进行第1次键盘扫描(判断是否有键按下)。0#8255APA0CPU总线行0+5VPA1PA2PA3PB0PB1PB2PB312#1#13#2#14#3#15#行1行2行3列0列1列2列3工作原理:使全部输出线为0,读回输入线的数据,如有键被按下,则肯定有一条线的数据(有一位)为0。键盘工作过程:首先进行第1次键盘扫描(判断是否有键按下)。①使A口PA3PA0输出均为0,然后读入B口的值,查看PB3PB0是否有低电平,若没有低电平,则说明没有键按下,继续进行扫描(重复过程①)。0#8255APA0CPU总线行0+5VPA1PA2PA3PB0PB1PB2PB312#1#13#2#14#3#15#行1行2行3列0列1列2列3若PB3PB0中有一位为低电平,使用软件延时1020ms以消除抖动,若低电平消失,则说明低电平是由干扰或按键的抖动引起的,必须再次扫描,否则,则确认有键按下,接着进行第2次扫描(行扫描,判断所按键的位置)。②通过A口输出使PA0=0,PA1=1,PA2=1,PA3=1(逐位为0)对第0行进行扫描,此时,读入B口的值,判断PB3PB0中是否有某一位为低电平,若有低电平,则说明第0行某一列上有键按下。0#8255APA0CPU总线行0+5VPA1PA2PA3PB0PB1PB2PB312#1#13#2#14#3#15#行1行2行3列0列1列2列3如果没有低电平,接着使A口输出PA0=1,PA1=0,PA2=1,PA3=1对第1行进行扫描。按上述方法判断,直到找到被按下的键,并识别出其在矩阵中的位置,从而可根据键号去执行该键对应的处理程序。设8255A的A口、B口和控制寄存器的地址分别为80H、81H和83H。MOVAL,82H;A口方式0输出,B口方式0输入OUT83H,AL;将工作方式控制字送控制寄存器MOVAL,00H OUT80H,AL;使PA3=PA2=PA1=PA0=0LOOA:INAL,81H;读B口,判断PB30是否有一位为低电平ANDAL,0FH;只考虑低四位的值 CMPAL,0FH;有键闭合吗?JZLOOA ;无键被按下,转LOOA等待CALLLD20ms;有键被按下,PB3PB0有一位为低,调延;时20ms子程序,消除抖动引起的误动作。INAL,81H;再次读入B口值。程序设计:ANDAL,0FH ;有键按下,在检查是否真的按下。CMP AL,0FH ;如果延时后PB3PB0中低电平不再存在,JZ LOOA ;说明是由干扰或抖动引起的,则转LOOA继续扫描,延时后仍有某位为0,说明有键被按下,查键值。

下段程序为判断哪一个键按下

START:MOVBL,4 ;行数送BL(共四行) MOV BH,4 ;列数送BH(共四列) MOV AL,0FEH ;准备扫描0行,使D0位=0。 MOV CL,0FH ;键盘屏蔽码送CL(只要低四位) MOV CH,00H ;CH中存放起始键号LOP1:OUT 80H,AL ;A口输出,扫描一行(D0=0) ROL AL,1 ;行值左移一位,修改扫描码,准;备扫描下一行。 MOV AH,AL ;暂时保存行线值 IN AL,81H ;读B口,以便确定所按键的列值ANDAL,CL;比较是低四位,只保留低四位 CMPAL,CL ;检查该列线是否为0, JNZLOP2;有列线为0,转LOP2,找列值ADDCH,BH;无键按下,修改键号,检查下一行 MOVAL,AH ;恢复扫描码 DECBL ;行数减1 JNZ LOP1 ;行未扫描完转LOP1,扫描下一行MOVCX,16;16个键,要找最多16次LOP2:MOVSI,TABLE;取键码表值CMPAX,[SI];查找该键值JZLOP3;找到该值,到键处理子程序INCSIINCSILOOPLOP2键值表:

ORG1000HTABLE:DWFE0E;0键DWFD0E;1键DWFB0E;2键DWF70E;3键DWFE0D;4键DWFE0D;5键DWFD0D;6键DWFB0D;7键DWF70D;8键DWFE0D;9键;;键处理子程序:LOP3:MOVAX,SI;AL中的内容就为该键值::

例5采用8255A进行双机并行通信的接口要求在甲乙两台微机之间并行传送1K字节数据。两机的CPU与接口之间都采用查询方式交换数据。1.甲机发送,1方式,PA口为输出,PC7和PC6引脚分别固定作联络线OBF和ACK2.乙机接收。0方式,PA口为输入,PC4和PC0作联络线。虽然,两侧的8255A都设置了联络线,但有本质的差别:甲机8255A是1方式,其联络线是固定的不可替换;乙机的8255A是0方式,其联络线是不固定的可选择,比如可选择PC4和PC1或PC3、PC2等任意组合。双机并行传送接口电路框图

甲机发送程序:MOVDX,0303H;8255A命令口MOVAL,10100000B;初始化工作方式字OUTDX,ALMOVAL,0DH;置发送中断允许INTEA=1OUTDX,AL;PC6=1MOVAX,0030H;发送数据内存首址MOVES,AXMOVBX,00H;MOVCX,0400H;发送字节数MOVDX,0300H;向A口写第一个数,产生第一个OBF信号分别对两个系统进行程序设计MOVAL,ES:[BX];送给对方,以便获取对

温馨提示

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

评论

0/150

提交评论