微机原理与接口技术(楼顺天第二版)习题解答第10章 并行接口芯片8255A 应用设计10.1答:方式0是基本的输入/输出,端口A 、B 、C 都可以作为输入输出端口。
适用于CPU 与非智能I/O 设备的数据传输;方式1是有联络信号的输入/输出,端口A 、B 都可以设定成该方式,此时三个端口的信号线分成了A 、B 两组,74~PC PC 用作A 组的联络信号,30~PC PC 用作B 组的联络信号。
适用于高速CPU 与低速I/O 设备的数据传输;方式2是双向传输,只有A 组端口可以设定成该方式,PC 6~PC 7用作输出的联络信号,PC 4~PC 5用作输入的联络信号,PC 3用作中断请求信号。
适用于双机之间数据的并行传送。
10.2 答:(1)PC 6~PC 7用作输出的联络信号,PC 4~PC 5用作输入的联络信号,PC 3用作中断请求信号,PC 0~PC 2用作基本I/O 。
(2)PC 4~PC 5用作输入的联络信号,PC 3用作中断请求信号,PC 1~PC 2用作输入的联络信号,PC 0用作中断请求信号。
PC 6~PC 7用作基本I/O 。
(3)PC 6~PC 7用作输出的联络信号,PC 4~PC 5用作输入的联络信号,PC 3用作中断请求信号,PC 1~PC 2用作输入的联络信号,PC 0用作中断请求信号。
(4)STB :由外设(输入设备)提供的选题脉冲,表示将外设送来的数据锁存到端口寄存器;IBF :是8255A 向外设STB 信号的响应,表示端口寄存器已经收到数据,但尚未被CPU 取走(CPU 通过读命令从端口寄存器取走数据后,IBF 自动变为0);OBF :由8255A 向外设(输出设备)发出的数据准备好信号,表示CPU 已经将数据写入端口寄存器;ACK :外设向8255A 发回的响应,其有效表示外设已经将数据从端口寄存器取走,该信号使得8255A 的OBF 变高,CPU 可以再一次向8255A 发送数据;INTE :是8255A 内的中断允许触发器,可以通过对C 口的PC 6,PC 4,PC 2通过按位置位/复位命令字设定;INTR :是8255A 进行选通输入输出时的中断请求信号,A 口的选通输入输出用PC 3,B 口的选通输入输出用PC 0。
10.3 答:8255A 工作在方式1输入或输出时,中断请求信号从C 口的PC 3引出;输入中断由INTEA (PC 4通过按位置位/复位命令字设定)和IBF 相与产生,输出中断由INTEA (PC 6通过按位置位/复位命令字设定)和OBF 相与产生;中断屏蔽由PC 6,PC 4通过按位置位/复位命令字设定。
10.4 答:1, 1, 110.5 答:A 口+ PC 3~PC 7;B 口+ PC 0~PC 2。
10.6 答:110.7 答:010.8 答:PC3~PC710.9 答:1~310.10 答:中断允许触发器,PC6,PC410.11 答:(1)D (2)A,D (3)D (4)D (5)A (6)A (7)B10.12 答:MOV DX,303HMOV AL,10000011BOUT DX,ALMOV DX,302HIN AL,DXMOV CL,4SHL AL,CLOUT DX,AL10.13 答:(1)根据题目给出的端口地址,在8086最小方式系统下,8255A与K15~K0以及4个发光二极管的连接图如下所示。
(2) 编写程序段实现连续检测并显示开关量中“1”的个数。
开关量中“1”的个数以二进制形式显示。
MOV DX,8F07HMOV AL,10010010B ;端口A、B方式0输入,端口C方式0输出OUT DX,ALNEXT:MOV DX,8F03H ;从端口B读取高8位开关量IN AL,DXXCHG AL,AHMOV DX,8F01H ;从端口A读取低8位开关量IN AL,DXMOV BX,AXXOR AL,ALMOV CX,16CLCL2:SHL BX,1JNC L1INC ALL1:LOOP L2MOV DX,8F05H ;从端口C送出OUT DX,ALJMP NEXT ;进行下一次检测10.14 答:8255A与IBM PC机总线的连接框图如下:可将8255A的端口A作为要产生的信号的输出端口,设定为方式0输出,端口B和端口C 不做使用,均设定为方式0输出。
程序段如下:MOV DX,263H ;设定8255A的工作方式MOV AL,10000000BOUT DX,ALMOV DX,260H ;产生指定信号XOR AL,ALOUT DX,ALREP:MOV AL,80HMOV CX,7REP1:OUT DX,ALSAR AL,1LOOP REP1MOV CX,8REP2:SHL AL,1OUT DX,ALLOOP REP2JMP REP10.15 答:由于开关量是16为数据,故可以将8255A的PA端口与PB端口设定为方式0,分别读取开关量的低八位和高八位,以PC端口的低三位控制八选一电路的输出依次从X0到X7,使用PC端口的高四位输出最大开关量的序号(该序号为1~8),控制发光二极管的亮灭以指示序号。
连接图如下:(下面电路中,当八选一输出Y有效时,能选通1组16位开关量数据)程序段如下:MOV DX,263HMOV AL,10010010B ;设定工作方式,PA,PB均工作于方式0,PA、PB为;输入,PC为输出OUT DX,ALMOV CX,8XOR BX,BXMOV SI,0 ;SI表示输入开关量的序号ST1:MOV DX,262HMOV AL,SIOUT DX,ALMOV DX,260H ;将开关量数据的低八位读入ALIN AL,DXMOV AH,ALMOV DX,261H ;将开关量数据的高八位读入ALIN AL,DXXCHG AH,ALCMP BX,AXJA NEXTMOV BX,AX ;将当前最大值保存在BX中MOV DI, SI ;将当前最大值的序号保存到DI中NEXT:INC SILOOP ST1MOV AX, DIMOV CL,4ROL AL,CL ;将最大值的序号(4位)移至AL的高四位MOV DX,262HOUT DX,AL ;PC的高四位输出最大值序号10.16 答:根据题图,8255A的端口地址为3F0H~3F6H中的4个偶地址端口。
中断向量表设置和8255A初始化程序段如下:;设置A口的中断向量PUSH DSMOV AX,0MOV DS,AXMOV SI,4AHSHL SI,1SHL SI,1MOV [SI],OFFSET SERV ;中断服务程序偏移地址存入向量表ADD SI,2MOV AX,CSMOV [SI],AX ;中断服务程序的段地址存入向量表POP DS;设置8255A的工作方式MOV DX,3F6HMOV AL,10111001B ;A口方式1,输入;B口方式0,输出;C口输入OUT DX,AL;设置INTEA=1MOV AL,00001001B ;PC4置位OUT DX,AL10.17 答:根据题图,8255A的端口地址为180H~187H。
PC0输出,PC5和PC6输入。
A口输出,所以A口方式0,输出;B口方式0,输出;C口高半部输入,C口低半部输出。
方式命令字为10001000B。
程序段为:;设置8255A的工作方式MOV DX,186H ;控制字口地址送DXMOV AL,10001000B ;A口方式0,输出;B口方式0,输出;;C口高半部输入,C口低半部输出OUT DX,AL;查询C口PC5、PC6MOV DX,184H ;C口地址送DXCHECK:IN AL,DXTEST AL,01100000BJNZ CHECK;输出CHAR变量数据,数据送到8255A的A端口寄存器MOV AL,CHAR ;输出数据送ALMOV DX,180H ;A口地址送DXOUT DX,AL;向打印机发选通信号,一个低电平的脉冲,先置位PC0,再复位PC0;然后延时,再置位PC0MOV DX,186HMOV AL,00000001BOUT DX,AL ;置位PC0MOV AL,00000000BOUT DX,AL ;复位PC0CALL DELAY ;延时MOV AL,00000001BOUT DX,AL ;置位PC0HLTDELAY: MOV CX,0FFFHDELAY1: NOPLOOP DELAY1RET10.18 答:根据题图,8255A的端口地址为38H~3EH中的偶地址。
A口方式0输出,B口方式0输入,C口低半部输入,高半部输出。
程序段为:;设置8255A的工作方式MOV DX,03EH ;控制字口地址送DXMOV AL,10000011B ;A口方式0,输出;B口方式0,输入;;C口高半部输出,C口低半部输入OUT DX,ALMOV CX,100;启动输入机,通过置位/复位实现一个高电平脉冲SETSTART:MOV DX,03EHMOV AL,00001100BOUT DX,AL ;复位PC6MOV AL,00001101BOUT DX,AL ;置位PC6CALL DELAY ;延时MOV AL,00001100BOUT DX,AL ;复位PC6;查询C口PC1MOV DX,03CH ;C口地址送DXCHECK:IN AL,DXTEST AL,00000010BJZ CHECK;输入数据MOV DX,03AH ;B口地址送DXIN AL,DXMOV CHARS,AL ;将输入字符存入CHARS变量中;查询C口PC0MOV DX,03CH ;C口地址送DXCHECK1:IN AL,DXTEST AL,00000001BJZ CHECK1;输出CHAR变量数据,数据送到8255A的A端口寄存器MOV AL,CHARS ;输出数据送ALMOV DX,038H ;A口地址送DXOUT DX,AL;向打印机发选通信号,一个低电平的脉冲,先置位PC0,再复位PC0;然后延时,再置位PC0MOV DX,03EHMOV AL,00001110BOUT DX,AL ;复位PC7MOV AL,00001111BOUT DX,AL ;置位PC7CALL DELAY ;延时MOV AL,00001110BOUT DX,AL ;复位PC7LOOP SETSTARTHLTDELAY: PUSH CXMOV CX,0FFFHDELAY1: NOPLOOP DELAY1POP CXRET10.19 答:根据题图,8255A的一组端口地址为8000H~8006H,8259A的一组端口地址为8020H和8022H。
8255A的B口工作在方式1,输出。
中断向量为97H。