第十章并行输入输出接口芯片8255A一、8255A简介(1)有24可用于与外设相连接的I/O引脚,这24条引脚分属于A,B,C三个端口(2)有三种主要工作方式:方式0,方式1,方式2二、8255A内部结构A组端口AA组端口C高四位B组端口C低四位B组端口BPA7~PA0PC7~PC4PC3~PC0PB7~PB0A组控制逻辑B组控制逻辑数据总线缓冲器读/写逻辑控制D7-D0RDWRA1A0RESETCS三、引脚基本操作A1A0RDWRCS操作00010端口A数据总线01010端口B数据总线10010端口C数据总线00100数据总线端口A01100数据总线端口B10100数据总线端口C11100数据总线控制字寄存器XXXXX数据总线三态11010非法状态XX110数据总线三态四、8255A控制字可以由CPU向8255A的控制字寄存器输出一个控制字来选择,D7位恒为1。控制字D7D6D5D4D3D2D1D0I/OI/OI/OI/O端口A1A1A0=11A组B组C上C下端口B五、方式选择1、方式0(基本输入输出)基本功能:(1)输出有锁存而输入无锁存(2)8255A具有两个8位端口(端口A和B)以及两个4位的端口,均可作为输入输出方式0时序:(1)输入时序:(2)输出时序:2、方式1(选通的输入/输出方式)基本功能:(1)拥有两个数据端口,每个端口都可以用作输入或者输出(2)每个端口包含8位的数据端口和三条控制线(3)若仅端口A工作于方式1,则余下的13位可工作于方式0。若仅端口B工作于方式1,端口A可工作于方式2或方式0控制字与C口引脚(输入):控制字与C口引脚(输出):3、方式2(选通的双向I/O方式)基本功能:(1)仅适用于端口A,作为双向的数据总线(2)端口C有5条引脚用作为端口A的握手信号线和中断请求线(3)输入和输出是锁存的控制字与C口引脚:六、按位置位/复位操作控制字格式:按位置位/复位操作特点:(1)D7必须是0(2)D3,D2,D1为位选择(3)最低位D0表示该操作是置位(D0=1)或复位(D0=0)七、中断控制功能应用环境:当8255A工作于方式1或方式2时,数据传送可在中断控制I/O方式下实现条件:INTE(端口的中断允许触发器)必须是“1”八、从端口C读状态当8255A工作于方式1或方式2时,端口C的内容还反映了端口A或B以及相应外部设备的状态,称为方式1或方式2的状态字。一次正常的读端口C的操作,便可读出状态信息。显然若由程序控制的I/O进行数据传送,则必须首先查询状态字的内容,才能和有关端口进行数据交换。九、8255A应用举例以8255A为接口的数模/模数转换电路图:设计思路:(1)A口用作输出,B口用作输入(2)利用作为与D/A转换器的连接信号,启动D/A转换(3)设计程序以循环的方式检测IBFB的值。如果IBFB=1,表示8255A已经将数据输入到B口的输入锁存器,CPU可以从B口取出数据存到内存(4)循环方式检测的值,当=1时,表示输出缓冲器为空,可以将数据写入A口OBF参考程序:设8255A的地址从FF00H开始,实现上述功能的程序如下:DATASEGMENTSTRINGDB100DUP(?);存储采样点的值COUNTEQU$-STRING;采样的次数DATAENDSSTACKSEGMENTPARASTACK‘STACK’DB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTARTPROCFARBEGIN:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXMOVCX,COUNTLEADI,STRINGCLIAGAIN:MOVDX,0FF03HMOVAL,0A6HOUTDX,0AL;初始化8255AMOVAL,0DHMOVDX,0FF03HOUTDX,AL;置PC6=1MOVAL,0CHMOVDX,0FF03HOUTDX,ALMOVDX,0FF02HAGAIN1:INAL,DXTESTAL,02HJZAGAIN1MOVDX,0FF01HINAL,DX;锁存器MOV[DI],ALPUSHCXMOVCX,1000HAGAIN2:LOOPAGAIN2;软件延时CHECK:MOVDX,0FF02HINAL,DXTESTAL,10000000B;PC7是否为1JZCHECKMOVAL,[DI]MOVDX,0FF00HOUTDX,AL;从A口输出INCDIPOPCXDECCXJNZAGAINSTIDONE:RETSTARTENDPCODEENDSENDBEGIN