第8章常用可编程接口芯片微机系统中多采用大规模集成接口芯片作为接口电路;实现微机与外设间的数据传送主要介绍并行通信接口8255A串行通信的基本概念其他内容不做课程要求数据通信问题•通过接口传送的数据一般都由若干二进制位组成(如“字符”包括8位二进制代码)•有两种传送方式接口电路芯片CPUI/O外设并行通信:把一个字符的n个数位,用n条线同时传输特点:传输速度快、效率高但所需电缆数量多;适用于传输速率要求高,且传输距离短的场合串行通信:把一个字符的n个数位,用1条线逐位传输特别提示:“并行”指的是接口与I/O设备一侧的数据线是并行的“串行”指的是接口与I/O设备一侧的数据线是串行的接口与总线一侧的连接总是并行的8255A的基本性能•可编程通用并行输入/输出接口电路•通用性强,使用灵活,通过它CPU可直接与外设相连–具有40个引脚–具有三个相互独立的输入/输出端口•A端口、B端口、C端口–三个端口可单独使用,也可组合使用;可传送数据信号,也可传送状态信号–端口有多种工作方式可供选择•A口有三种工作方式:方式0、1、2•B口有二种工作方式:方式0、方式18255A的内部结构8255A有ABC三个8位数据端口;三个端口各有8条数据引线通常,A口和B口作为独立的输入端口或输出端口,与外设实现数据通信;C口被分成两个4位端口:●分别作为数据的输入/输出端口●或者作为A口和B口的控制口或状态口▲8255A可将三个端口分成AB两组进行管理和控制▲其中:A组控制电路控制A口和C口的高4位PC7-PC4B组控制电路控制B口和C口的低4位PC3-PC0读/写控制逻辑电路中的引脚信号来自系统的地址信号A0、A1和CS以及控制信号RD、WR、RESET,并把这些信号进行逻辑组合,形成相应的控制操作命令,发送到A组、B组的控制电路,以控制数据和状态信息的正常传输片选信号,有效时8255A被选中,才能启动CPU和8255A之间的通信读选通信号,有效时,8255A通过数据线把数据或状态信息传给CPU写选通信号,有效时,CPU可以把数据或控制字写到8255A8255A复位信号,有效时,清除所有8255A内部寄存器,并把三个数据端口都设为输入方式端口片内地址信号;用于寻址8255A的三个端口和一个控制字寄存器(也称为控制口)8255A的信号组合与基本操作8255A是40根引脚,双列直插式引脚可分成:(1)与外设连接的引脚PA0~PA7:A口数据线PB0~PB7:B口数据线PC0~PC7:C口数据线(2)与CPU连接的引脚D7~D0、A0、A1、CS、RD、WR、RESET8255A的外部引脚8255A与CPU地址线的连接问题如8255数据线与8086相连,必须与低8位数据线相连,需使用偶地址访问此时,则需要将8255的A0和A1分别与CPU的A1和A2相连,即使用连续的四个偶数地址寻址8255四个端口8255A的编程与控制字8255A可通过控制字编程;控制字分为两类:均写入控制口(A0=1、A1=1)一类是各数据端口的工作方式选择控制字特征位D7=1;放在程序的开始部分一类是C口的位控(置位/复位)控制字特征位D7=0;放在初始化程序以后的任何地方工作方式选择控制字▲方式选择控制字用于设置各数据端口的工作方式▲8255A有三种基本的工作方式,即:▲方式0基本的输入/输出方式▲方式1选通的输入/输出方式▲方式2双向传输方式三个数据口工作方式的约定•三个数据端口的工作方式的限制与选择:–A口可以工作在任意一种工作方式;–B口只能工作在方式0或方式1;–C口只能工作在方式0;•在方式1或2时,C口通常配合A口或B口工作,为A口、B口的数据传输提供对外设的控制信号和外设的状态信号;而剩余的位仍可以在方式0下工作C口低4位I/O0=输出1=输入B口I/O0=输出1=输入B口方式选择0=方式01=方式1C口高4位I/O0=输出1=输入A口I/O0=输出1=输入=方式标志位1=有效D0D1D2D3D4D5D6D7A口方式选择00=方式001=方式11×=方式2工作方式选择控制字的使用例▲例,一个8088系统通过一个8255A接口芯片和外设交换信息。假设地址线A1和A0直接与8255A的A1和A0连接,该芯片经片选后的A端口地址(称为芯片的端口基地址)为234H,即四个端口地址分别为:A口——234HB口——235HC口——236H控制字寄存器——237H▲如果设定8255A的端口处于如下工作方式:A口方式0,输入B口方式1,输出PC7-PC4输出,PC3-PC0输入工作方式控制字应为:10010001B=95H10101001D0D1D2D3D4D5D6D7方式选择标志位A口工作在方式0A口用于输入PC7~PC4用于输出B口工作在方式1B口用于输出PC3~PC0用于输入工作方式选择控制字的使用例▲8255A的初始化过程就是往它的控制字寄存器中写入控制字的过程具体到本例可以采用如下几条指令来实现:MOVAL,95HMOVDX,237HOUTDX,AL8255A初始化问题C口位置位/复位控制字▲C口作为数据口时,可以用输入、输出指令来实现数据的传送▲但更多的情况下,C口通常用作A口和B口输入/输出的控制位或状态位▲此时,需要对“位”进行置1或置0操作,表示不同的状态信息或操作信号▲任何一位的置位或复位,并不影响其它位的状态▲位控控制字同方式选择控制字一样,也将被送往控制字寄存器,区别在于标志位D7的不同C口位控控制字的格式C口位控控制字的例例;如要使C口的PC5置位,那么控制字应为多少?00001011B=0BH▲假设8255A的控制端口地址为0F3H,要对PC5进行置位,需要进行如下操作:MOVAL,0BHOUT0F3H,AL▲同样,若要对PC2进行复位,那么控制字应为00000100B=04H,需要进行如下操作:MOVAL,04HOUT0F3H,AL▲复位PC2时,并不影响前面已经置位的PC5和其他各位C口位控控制字的例8255A的工作方式△8255A共有三种工作方式,每种工作方式都有其自身的功能和工作特点△重点介绍方式0和方式1△可通过编程,确定8255A的工作方式▲方式0也称基本输入输出方式▲在这种方式下,参加数据传输的有A和B两个8位端口和C的两个4位端口;均可独立地由方式选择控制字规定为输入口或输出口▲均不需要固定的联络信号,传输的数据只需要通过规定的端口写入或读取即可▲只要传送数据就一定能成功工作方式0典型应用举例•8255的A口接8个发光二极管,PC7连接一个开关–开关接通高电平时,8管全亮(点亮时为1)–接通低电平时,8管循环点亮–假设端口地址为60H—63H•问题分析–二极管永远就绪,A口可选择工作方式0,设置为输出口–C口的上半部为输入口(用于输入开关的高或低电平数据)–B口和C口的下半部不用(方式字可取0)–方式字为:10001000=88H程序代码8255A方式0示例设8255A端口地址端口A218H端口B219H端口C21AH控制端口21BHMOVDX,21BHOUTDX,10000010BMOVDX,219HINAL,DXMOVDX,21AHOUTDX,AL端口B接8个开关端口C接8位LED要求:开关闭合(=0)时,灯亮(=0)8255A方式0示例A口为输入,方式0B口为输出,方式0C口不用方式控制字为:10010000程序段:MOVAL,10010000BMOVDX,038BHOUTDX,ALMOVDX,0388HINAL,DXMOVDX,0389HOUTDX,ALA口地址为:0388HB口地址为:0389H控制口地址为:038BH基本操作:从A口读入开关闭合数据,通过B口输出到灯点亮;由于反向驱动器,无需再取反方式0的应用特点•方式0的典型特点是:不提供也不需要提供专门的状态信息和控制信息的端口数据线,各端口均可独立使用•方式0的典型是:无条件传送方式下的数据传送;直接执行IN指令或OUT指令•也适用于查询传送方式下的数据传送(不做考试要求)–首先查询外设是否“就绪”–可选择C口的某些位,作为外设的状态信息位和对外设的选通控制位(但不是专用的,可任意选择)–当“就绪”后,再执行IN指令或OUT指令首先从C口读取状态信息字,测试PC7或PC6“就绪”后,用PC1或PC0选通外设从A口输出;从B口输入用于查询方式传送的图示10××××××10001010工作方式字为:状态信息字端口A端口BPC1PC7PC6PC08255A输出设备输入设备方式0下的查询传送例•图为一个并行打印机的接口电路示意;要求采用查询方式,通过8255A接口把数据缓冲区中的ASCII码字符打印出来按照打印机接口标准定义,其最基本的信号线包括:8根数据线1根控制线STB1根状态线ACK/BUSY1根公共地线PA口作为数据口,输出8位打印数据,工作方式设置为方式0;PC6作为控制信号,产生负脉冲作为打印机的数据选通信号STB;PC1作为状态信号,用来接收打印机的“忙”信号A-PORTEQU8030H;定义端口地址B-PORTEQU8032HC-PORTEQU8034HCTRL-PORTEQU8035HMOVDX,CTRL-PORT;8255A控制端口MOVAL,10000001B;方式控制字OUTDX,ALMOVAL,00001101B;PC6置高(STB=1)OUTDX,ALMOVSI,OFFSETBUF;数据缓冲区首地址MOVCX,NUMBER;待打印的字符个数按照题意,传送数据的过程如下:(1)CPU首先查询ACK/BUSY信号,如果ACK/BUSY=0,表示不“忙”,启动数据传送(2)待打印的数据传输到8255A后,发送STB=0信号,打印机开始读取数据到自己的数据锁存器中(3)打印机接收到数据后并打印中,回送“忙”信号(ACK/BUSY=1)(4)打印机处理完数据后,发送ACK/BUSY=0信号,再次表示不“忙”,同时完成一个字符的打印操作工作方式1▲方式1也称为选通输入/输出方式▲A口和B口可以工作在方式1▲A口和B口都可以分别作为数据端口传送数据▲A口和B口都可以作为输入口或输出口▲方式1工作的端口可以是两个,也可以只设一个;其余的输入输出端口,还可以工作在其它方式下工作方式1方式1的典型特点是:固定了接口与外设的联络信号线;AB两端口分别被固定了C口的3位联络线AB两端口接口组态是固定的,用户不能更改方式1的典型应用是:中断方式的数据传送,也适用于查询方式下的数据传送工作在方式1时输入A端口的信号剩余的PC6和PC7可做它用;输出或输入;由D3位的0/1确定IBFASTB是外设数据输入选通信号,低电平有效;由外设送给8255A;STB与PC4相连;有效时,外设“通知”端口并开始送入数据到数据缓冲器INTRA是8255A送往CPU的中断请求信号,高电平有效。当端口数据就绪后,如果中断允许,8255A将把INTRA送出请求CPU的中断服务;A口的中断请求从PC3送出IBF是端口数据输入缓冲器“满”的状态信号,高电平有效。A口的IBF信号由PC5输出。有效时,表示端口“就绪”INTEA是对中断请求屏蔽或允许的内部控制信号;只能通过对PC4的置位/复位实现控制★PC4置1,A口处于中断允许状态,又当IBF=1时,INTR便有效,向CPU申请中断★PC4复位为0,则A口被置于中断屏蔽状态方式1的输入工作过程及时序④取走数据后,RD=1,同时将IBF复位,表示数据缓冲区已空,可进行下一次的数据传送①④③②初始①STB=0,外设数据开始进入A端口;待“满”后,输出IBF=1,数据就绪;STB=1撤消②通过PC4置位,使INTE=1,产生INTR信号,送CPU请求中断③CPU如响应,则RD为低电平,并将INTR复位阅读时序注意:控制逻辑电路都有不同的响应时间,故对不同的脉冲信号的保持时间的要求也不同初始时,STB=1(未开始传),IBF=0(已空),RD=1(未选通读),INTR=0(无请求)工作在方式1时输入B端口的信号注意与A口的异同基本信号交换和工作原