本章内容8255A的内部结构和引脚8255A的工作方式8255A的编程8255A的应用2并行数据传输方式以计算机的字长,通常是8位、16位或32位为传输单位,一次传送一个字长的数据适合于外部设备与微机之间进行近距离、大量和快速的信息交换例如:微机与并行接口打印机、磁盘驱动器微机系统中最基本的信息交换方法例如:系统板上各部件之间,接口电路板上各部件之间38255A简介包括四个端口——1个控制端口,3个数据端口还包括端口的译码和控制电路、中断控制电路包括三种输入输出工作方式49.1.18255A的内部结构和引脚数据总线缓冲器内部控制线内部数据线D0~D7A组控制A组端口AA组端口C上部B组控制B组端口BB组端口C下部读写控制逻辑PC0~PC3PB0~PB7PC4~PC7PA0~PA7RDWRA0A1CSRESET51.外设数据端口端口A:PA0~PA7A组,支持工作方式0、1、2端口B:PB0~PB7B组,支持工作方式0、1端口C:PC0~PC7仅支持工作方式0A组控制高4位PC4~PC7B组控制低4位PC0~PC3端口A:PA0~PA7常作数据端口,功能最强大端口B:PB0~PB7常作数据端口端口C:PC0~PC7可作数据、状态和控制端口分两个4位,每位可独立操作控制最灵活,最难掌握62.与处理器接口CS*A1A0读操作RD*写操作WR*000001010011读端口A读端口B读端口C非法写端口A写端口B写端口C写控制字79.1.28255A的工作方式方式0:基本输入输出端口A、端口B、端口C高4位和低4位——输入口或输出口适用于无条件传送和查询方式的接口电路方式1:选通输入输出端口A、端口B——输入口或输出口端口C——端口A和端口B的联络信号、输入口或输出口适用于查询和中断方式的接口电路方式2:双向选通输入输出端口A——输入口和输出口端口C——一部分作为端口A的联络信号适用于双向传送数据的外设适用于查询和中断方式的接口电路8初始化过程中:写入方式控制字利用控制端口地址,A1A0=11工作过程中:通过数据端口来读写外设数据:利用端口A、B和C的地址,A1A0依次等于00、01、10通过端口C来读取状态信息:利用端口C的地址,A1A0=10通过控制端口来写入端口C的位控制字:利用控制端口地址,A1A0=11D7=1D7=0方式选择控制字端口C的位控制字共用一个控制端口地址A1A0=119.1.38255A的编程91.写入方式控制字:控制字格式D0D1D2D3D4D5D61B口:0:方式01:方式1B口:1:输入0:输出C口低4位:1:输入0:输出B组C口高4位:1:输入0:输出A口:1:输入0:输出A口:00:方式001:方式11×:方式2A组101.写入方式控制字:示例示例要求:A端口:方式1输入C端口高4位:输出,C口低4位:输入B端口:方式0输出分析:方式控制字为10110001B或B1H初始化的程序段:movDX,FFFFH;设控制端口地址为FFFFHmovAL,B1H;方式控制字outDX,AL;送控制端口112.读写数据端口初始化编程后:当数据端口作为输入接口时,CPU执行IN指令将从输入设备得到外设数据当数据端口作为输出接口时,CPU执行OUT指令将把CPU的数据送给输出设备8255A具有锁存输出数据的能力对输出方式的端口同样可以输入不是读取外设数据读取的是上次CPU给外设的数据122.读写数据端口:示例利用8255A的输出锁存能力,可实现按位输出控制对输出端口B的PB7位置位的程序段:movDX,FFFDH;设B端口地址为FFFDHinAL,DX;读出B端口原输出内容orAL,80H;使PB7=1outDX,AL;输出新的内容133.读写端口C:归纳1C端口被分成两个4位端口,两个端口只能以方式0工作,可分别选择输入或输出在控制上,C端口高4位和A端口编为A组,C端口低4位和B端口编为B组143.读写端口C:归纳2当A和B端口工作在方式1或方式2时,C端口的部分或全部引脚将被征用其余引脚仍可设定工作在方式0153.读写端口C:归纳3对端口C的数据输出有两种办法利用端口C的地址:向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效——字节操作利用控制端口地址:向控制端口写入端口C的位控制字,使C端口的某个引脚输出1或0,或置位复位内部的中断允许触发器——位操作16端口C的位控制字0×××D3D2D1D0D3D2D1位选择000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC7置位/复位选择1:置位0:复位173.读写端口C:归纳4读取的C端口数据有两种情况未被A和B端口征用的引脚:将从定义为输入的部分(上半部或下半部)读到引脚输入信息;将从定义为输出的部分(上半部或下半部)读到输出锁存器中的信息被A和B端口征用作为联络线的引脚:将读到反映8255A状态的状态字(参照表9.4)189.28255A的应用作为通用的并行接口电路芯片,8255A具有广泛的应用应用在IBMPC/XT微机上应用于打印机接口电路连接简易键盘驱动LED数码管……191开关量的检测例:在工业控制过程中,经常需要检测某些开关的状态。例如,在某一系统中,有8个开关K7~K0,要求不断地检测它们的通断状态,并随时在发光二极管上显示。通过8255A的端口A读入开关状态信息,使端口B、端口C连接的发光二极管的状态与端口A开关状态相呼应,并重复执行。假设8255A在系统中端口A、B、C及控制口的地址分别为100H,101H,102H,103H,试设计出硬件电路图,并编写初始化程序。20解:(1)硬件电路AD7~AD0RDWR100H~103HRESET21MOVDX,103H;控制端口地址送给DXMOVAL,10010000B;控制字OUTDX,AL;写入控制字L1:MOVDX,100H;端口A地址送给DXINAL,DX;从端口A读入开关状态MOVDX,101H;端口B地址送给DXOUTDX,AL;从端口B输出,控制LEDXORAL,0FFH;AL←AL取反MOVDX,102H;端口C地址送给DXOUTDX,AL;从端口C输出JMPL1;循环(2)相应的8255A程序为:222LED数码管的驱动发光二极管LED是最简单的显示设备由7段LED就可以组成的LED数码管LED数码管广泛用于单板微型机、微型机控制系统及数字化仪器中LED数码管可以显示内存地址和数据等23(1)LED数码管的工作原理主要部分是7段发光管顺时针分别称为a、b、c、d、e、f、g有的产品还附带有一个小数点h通过7个发光段的不同组合主要显示0~9也可以显示A~F(实现16进制数的显示)还可以显示个别特殊字符,如-、P等24LED数码管hgfedcba25LED数码管的结构共阳极阳极+5Vabcdefgh阴极abcdefgh共阴极26(2)单个LED数码管的显示8255APA0PA1PA2PA3PA4PA5PA6PA7驱动电路abcdefgh显示字形gfedcba段码001111113FH1000011006H210110115BH310011114FH4110011066H511011016DH611111017DH7000011107H811111117FH911011116FH七段数码管显示字形与段码的对照表(共阴极)28单个LED数码管的显示——掌握作业:P295–9.5作业提示:(1)写入方式控制字B口方式0、输入;A口方式0、输出(2)读B口数据根据PB0和PB1的输入数据转向相应的操作PB0和PB1的输入可以组合出如下四种情况:PB1PB0=00转入结束程序PB1PB0=11继续查询PB0PB1PB1PB0=10转入S0按下处理程序,从A口输出0的段码PB1PB0=01转入S1按下处理程序,从A口输出1的段码29作业9.5硬件电路图8255APA0PA1PA7abcdefghbahPB0PB1S0S1+5V303.多个LED数码管的显示——了解8个数码管:用2个8位输出端口控制硬件上用公用的驱动电路来驱动各数码管软件上用扫描方法实现数码显示不考31位控制端口电路D7D6D5D4D3D2D1D0阴极位0位1位2D0~D7位控制反相寄存驱动bitport,IOW32位控制端口作用控制哪个(位)数码管显示共阴极时,当位控制端口的控制码某位为高电平时,经反相驱动,便在相应数码管的阴极加上了低电平,这个数码管就可以显示数据上图中,位控制:Di=1,相应位发光D7D6D5D4D3D2D1D0位7位6位5位4位3位2位1位033段控制端口电路D0D1D2D3D4D5D6D7阴极位0abcdefgh位1位2……D0~D7段控制正相寄存驱动segport,IOW34段控制端口作用控制哪个段显示,决定具体显示什么数码段控制端口送出显示代码到数码管相应段此端口由8个数码管共用上图中,段控制:Di=1,相应段发光D7D6D5D4D3D2D1D0hgfedcba通过位、段控制端口的共同作用才能确定哪个数码管显示什么数码数据段硬件电路为P280图9.18LEDdbdb4dup(0);显示数码缓冲区LEDtabdb3FH,06H,5BH,4FH,db66H,6DH,7DH,07H,db7FH,6FH;LED段码表36主程序movsi,offsetLEDdbcallLEDdisp;调用显示子程序获取显示段码LEDdispprocpushcxpushaxpushdipushdxmovch,08H;指向最左边数码管LED1:moval,[si];取出要显示的数码movah,0movdi,offsetLEDtabadddi,axmoval,[di];取得数码相应段码数码显示movdx,300H;设置段控制端口outdx,al;送出段码moval,ch;取出位码movdx,302H;设置位控制端口outdx,al;送出位码calldelay;实现数码管延时显示