第七章可编程接口芯片

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第七章可编程接口芯片可编程接口概术可编程并行输入/输出接口芯片8255A可编程定时/计数器接口芯片8253可编程接口概术一个简单的具有输入功能和输出功能的可编程接口电路如下图,它包括一个输入接口,其组成主要是八位的三态门;一个输出接口,其组成主要是八位的锁存器;另外还有八位的多路转换开关及控制这个开关的寄存器FF。输入接口输出接口寄存器FF多路转换开关I/O线数据总线8888用户对寄存器FF写入的内容称为命令字或方式控制字,而寄存器FF称为命令寄存器,相应的端口称为命令端口或控制端口,对可编程芯片初始化过程实际上就是对芯片的控制端口写入各种命令字的操作过程。目前常用的可编程芯片有如下几种:8255A并行I/O接口8253计数器/定时器8251串行I/O8259A中断控制器7.1可编程并行输入/输出接口芯片8255A一、功能8255A是一种通用的可编程并行I/O接口芯片,广泛用于几乎所有系列的微型机系统中,如8086、MCS51、Z80CPU系统等。8255A具有3个带锁存或缓冲的数据端口,可与外设并行进行数据交换。用户可用程序来选择多种操作方式,通用性强。使用灵活,可为CPU与外设之间提供并行输入/输出通道。二、8255A的内部结构A口B口C口二、8255A的内部结构并行输入/输出端口A组和B组控制数据总线缓冲器读/写控制电路三、8255A的管脚分配1、与外设连接的管脚我们已经知道8255A有三个数据端口,每个端口是8位的,由此可推算与外设相连接的管脚共有24位。其中A口有PA7—PA0八个I/O引脚,B口有PB7—PB0八个I/O引脚,C口有PC7—PC0八个I/O引脚。特别地对于PC7—PC0,其中可有若干根复用线可用于“联络”信号或状态信号,其具体定义与端口的工作方式有关。PA0…PA7PB0…PB7PC0…PC72、与CPU连接的管脚包括数据线D7—D0,读写控制线和,复位线RESET,以及和CPU地址线相连接的片选信号、端口地址控制线A0和A1。D0…D7A0A1/CS/WR/RDRESET3、电源线和地线8255A的电源引脚为VCC和GND。VCC为电源线,一般取+5V。GND为电源地线。四、8255与8086CPU的接口连接方法同RAM相似,取M/IO=0举例设计接口,使8255地址为0300H五、8255A的工作方式及编程1、8255A的工作方式8255A有三种工作方式,它们是:①方式0——基本输入/输出方式;②方式1——选通输入/输出方式;⑨方式2—一双向传送方式。2、8255A编程所谓8255A编程,就是用户在使用8255前,用户可用软件来定义端口的工作方式,选择所需要的功能。8255A复位时,A、B、C三端口工作在方式0的输入状态。1.方式控制字这是一个八位的控制字,代表的信息非常丰富。上面提到8255A内部的3个端口分为A、B两组,因此方式控制字也就相应地分成两个部分,分别控制A组和B组,其格式如下:1D6D5D4D3D2D1D0方式选择控制字标识位A组方式选择00方式001方式11x方式2端口A1输入0输出PC3~PC0:1输入(方式0时)0输出端口B:1输入0输出B组方式选择:0方式01方式1PC7~PC4:1输入(方式0时)0输出2.C口置“1”/清“0”控制字置“1”又称为置位操作,而清“0”称为复位操作。0D6D5D4D3D2D1D0xxx无关1:置10:置000001111端口C按位置1/置0控制字标识位位选择PC0PC1PC2PC3PC4PC5PC6PC700110011010101013.读入状态字当8255A由程序设定在方式1或方式2工作时,C口就根据不同的情况,产生或接收“联络”信号。如果这时我们对C口进行读操作,则读出的内容就包含两部分内容,一部分是那些作为I/O线上的内容,另一部分是与“联络”状态有关的内容。方式1的输入状态字六、8255A的三种工作方式1、8255A工作在方式0方式0也叫基本输入/输出方式。在这种方式下,端口A和端口B可以通过方式选择控制字规定为输入口或者输出口;端口C分为高4位(PC7~PC4)和低4位(PC3~PC0)两个4位端口,这两个4位端口也可由方式选择控制字分别规定为输入口或输出口。这四个并行口共可构成16种不同的使用组态。利用8255A的方式0进行数据传输时,由于没有规定专门的应答信号,所以这种方式常用于与简单外设之间的数据传送,如向LED显示器的输出,从二进制开关装置的输入等。8255工作过程1、8255编程(初始化)2、程序对端口的访问例:8255A的A口和B口工作在方式0,A口为输入端口,接有四个开关。B口为输出端,接有一个七段发光二极管,连接电路如图所示。试编一程序要求七段发光二班管显示开关所拨通的数字。agDPfedbc电路LED数码管段码表……moval,90h;设置8255方式字movdx,ctrl_portoutdx,almovdx,a_portinal,dx;取键盘信息andal,0fh;屏蔽高4位movbx,offsettab1;取段码表首地址xlat;查表得段码movdx,b_port;输出显示outdx,al2、8255A工作在方式1——输入以A口为例,控制字1011xxxxBA口的选通信号,当其有效时,外设把数据打入A口的输入缓冲器A口的输入缓冲器“满”信号,当其有效时表示A口的输入缓冲器已暂存一个有效数据。A口的中断请求信号。当其有效时,8255A的A口向CPU申请中断,要求CPU从A口取数中断允许信号。C口特点1、C3-5作为A口的联络线,C4-/STB;C4-IBF;C5-INTR2、C6-7可工作在基本的I/O3、C0-2由B组决定8255A工作在方式1(输入)时序图12341、/STB有效,外设数据-A口锁存器2、IBF有效,告诉外设数据未被CPU取走3、INTA有效,申请中断(告诉CPUA口有新数据)4、CPU从A口取数,清除IBF和INTA,使之无效8255A工作在方式1(输入)当A口已接受外设数据后,有两种方式通知CPU取数:其一用条件查询方式,通过查询缓冲器是否“满”,即IBFA是否为高电平来取数。其二用中断方式。在条件传送中,一般要有所谓的“握手”信号来协调数据的传送。“握手”信号至少要有两位信号线,其中一位是由接口电路发给外设,功能是向外设提供接口电路的信息。另一位是由外设发给接口,功能是向接口提供外设的信息。显然在8255A的选通输入方式中STBA和IBFA是一对“握手”信号。例:8255A的A口和B口分别工作在方式1和方式0,A口为输入端口,接有8个开关。B口为输出端,接有8个发光二极管,连接电路如图所示。现要求用方式1把改变后的键信息输入到CPU并通过B口显示。例题电路图8255AKK7K0PA0PA7……PC4PB0PB7PC5LED0LED7LED……STBAIBFA这个系统的工作过程如下:1、用户通过改变K0~K7,产生新的键信息;2、按下开关K,产生选通信号,数据进入A口的缓冲器,此步骤实际上告诉CPU,8255的A口来了一个新数据;3、IBFA有效使LED点亮。这里含有两个信息,一个是8255A通知CPU其A口来了一个新数据,另一个是告诉用户CPU尚未取走这个这个数据,用户不得再送其他数据;4、CPU取走这个数据,LED熄灭;5、转步骤1。设8255的I/O地址分布为88H—8EH,相应的程序段如下:moval,10111001b;设置A口为方式1的输入,loop1:inal,8ch;取C口的状态线testal,00100000b;测试IBFA信息jzloop1;等待用户设定新的键值inal,80h;取数。LED灯灭(相对于步骤4)out82h,al;更新B口的显示jmploop1;重复3、8255A工作在方式1——输出以A口为例,控制字1010xxxxB外设回答信号。由外设发出。当其有效时,表示外设已接收数据。A口的输出缓冲器“满”信号,当其有效时表示A口的输出缓冲器已暂存一个有效数据。A口的中断请求信号。当其有效时,8255A的A口向CPU申请中断,要求CPU送数给A口中断允许信号。C口特点1、C3,C6,C7作为A口的联络线,C3-/INTR;C7-/ACK;C5-/OBF2、C4-5可工作在基本的I/O3、C0-2由B组决定8255A工作在方式1(输出)时序图12341、CPU对A口写数据,/OBF有效,表示A口锁存器中有新数据;2、外设取走新数据,向8255发/ACK信号,告诉8255A口数据取走;3、A口的/OBF无效,表示A口数据锁存器为空4、INTA有效,发中断信号给CPU,请求新数据1当A口已接受外设数据后,有两种方式通知CPU取数:其一用条件查询方式,通过查询缓冲器是否“满”,即IBFA是否为高电平来取数。其二用中断方式。在这种方式下,OBFA和ACKA是一对“握手”信号。OBFA是8255A产生,当其有效时,告诉外设A口已有一个新数据。ACKA是外设产生,当其有效时,通知A口外设已把数据取走。例:8255A的A口工作在方式1的输出,接有8个发光二极管,现要求把内存中的10个数,通过A口发送给发光二极管以二进制的形式供用户抄录。例题电路图8255AKPC7PA0PA7PC6LED0LED7LED……+5VACKAOBFA这个系统的工作过程如下:1、CPU把内存中的一个数据写入A口;2、LED灯亮,告诉用户LED显示的是新数据;3、用户抄录数据;4、用户按下开关K,发ACK信号,告诉CPU数据已取走;5、转第一步。movcx,10;送10个数movbx,offsetxx;数组指针送bxloop1:moval,[bx];取数out88h,al;送数到A口loop2:inal,8ch;取C口状态线anlal,80h;测试IBOAjnzloop2;用户尚未抄录数据,检测;等待,;此时;LED灯亮(对应步骤2)calldelay;用户已抄录数据,LED灯灭(对;应步骤4)incbx;准备送下一个数looploop1;循环10次4、8255A工作在方式2——双向外设回答信号。由外设发出。当其有效时,表示外设已接收数据。A口的输出缓冲器“满”信号,当其有效时表示A口的输出缓冲器已暂存一个有效数据。A口的中断请求信号。当其有效时,8255A的A口向CPU申请中断,要求CPU访问A口中断允许信号。中断允许信号。A口的输入缓冲器“满”信号,当其有效时表示A口的输入缓冲器已暂存一个有效数据A口的选通信号,当其有效时,外设把数据打入A口的输入缓冲器如果设定某个8255A的A口和B口分别工作在方式2和方式1下,则这个8255A的C口的I/O功能将不在存在。当然如果B口是工作在方式0下,则C口还有3根线可作I/O线用。七、8255应用举例1、与打印机接口例:在某一8086系统中接有一个打印机,8255A作为输出接口。工作在方式0,试编一程序将缓冲区BUFF内的400H个字节的ACK码送打印机打印。总线式接口的缺点8255接口的优点DATASTROBEBUSY打印机具体工作过程如下:1、数据线D7—D0出现有效数据;2、STB有效,通知打印机,接口给打印机一个数据,数据从数据线进入打印机;3、BUSY有效,告诉接口,打印机正在打印数据。打印完毕,BUSY变为无效,表示打印结束。8255APA0PA7……打印机D0D7PC0PC4STBBUSY123print_dataproc;打印子程序,入口在dl中print1:inal,c_port;无条件读C口数据testal,00010000b;测试busy线jnzprint1;busy有效,循环测试moval,dlouta_port,al;打印数据进入A口moval,00000000b;发选通信号outctrl_port,almoval,00000001boutctrl_port,alret;返回主程序print_datAendp2、人机交互接口——动态显示例:常用的显示称为动态显示,

1 / 113
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功