可编程并行接口芯片8255A有哪几种工作方式?每种工作方式有何特点?【解答】方式0:没有固定的用于应答式传送的联络信号线,CPU可以采用无条件传送方式与8255A交换数据。方式1:有专用的中断请求和联络信号线,因此,方式1通常用于查询传送或中断传送方式。方式2:PA口为双向选通输入/输出或叫双向应答式输入/输出。9.28255A的方式选择控制字和C口按位控制字的端口地址是否一样?8255A怎样区分这两种控制字?写出端口A作为基本输入,端口B作为基本输出的初始化程序。【解答】8255A的方式选择控制字和C口按位控制字的端口地址是一样的,通过控制字的最高位D7进行区分:D7=1时,为方式选择控制字;D7=0时,为C口按位控制字。初始化程序段如下:MOVDX,PORT;PORT为端口地址MOVAL,10010000BOUTDX,AL9.3某8255A的端口地址范围为03F8H~03FBH,A组和B组均工作在方式0,A口作为数据输出端口,C口低4位作为状态信号输入口,其它端口未用。试画出该片8255A与系统的连接图,并编写初始化程序。【解答】连接图如下:图9-18255A与系统的连接图程序如下:MOVAL,81HMOVDX,03FBHOUTDX,AL9.4试按以下要求对8255A进行初始化编程:(1)设端口A、端口B和端口C均为基本输入/输出方式,且不允许中断。请分别考虑输入/输出。(2)设端口A为选通输出方式,端口B为基本输入方式,端口C剩余位为输出方式,允许端口A中断。(3)设端口A为双向方式,端口B为选通输出方式,且不允许中断。【解答】(1)端口A、端口B和端口C均为基本输入/输出方式,则为方式0,任何一个口都可用于输入或输出,可出现16种组合,这里只举出2种组合。若端口A、B为数据输入口;C口的低4位为控制信号输出口,高4位为状态信号输入口,程序段如下:MOVAL,10011010BMOVDX,PORT;PORT为端口地址OUTDX,ALMOVAL,00001100B;设PC6为中断信号控制引脚,PC6=0,禁止中断OUTDX,AL若端口A、B为数据输出口;C口的高4位为控制信号输出口,低4位为状态信号输入口,程序段如下:MOVAL,10000000BMOVDX,PORT;PORT为端口地址OUTDX,ALMOVAL,00001100B;设PC6为中断信号控制引脚,PC6=0,禁止中断OUTDX,AL(2)端口A为选通输出方式,方式1;端口B为基本输入方式,程序段如下:MOVAL,10100010BMOVDX,PORT;PORT为端口地址OUTDX,ALMOVAL,00001101B;设PC6为中断信号控制引脚,PC6=1,允许中断OUTDX,AL(3)端口A为双向方式,方式2;端口B为选通输出方式,程序段如下:MOVAL,11000100BMOVDX,PORT;PORT为端口地址OUTDX,ALMOVAL,00001100B;设PC6为中断信号控制引脚,PC6=0,禁止中断OUTDX,AL9.5采用8255A作为两台计算机并行通信的接口电路,请画出查询式输入/输出方式工作的接口电路,并写出查询式输入/输出方式的程序。【解答】甲机的8255A是方式1发送,端口PA为输出,发送数据,而PC7和PC6引脚分别固定作联络线和。乙机的8255A是方式0接收数据,故把端口PA定义为输入,另外,选用引脚PC7和PC3作为联络线。接口电路如图9-2:图9-2查询方式的双机通信查询式输入/输出方式的程序如下:;甲机发送的程序段MOVDX,303H;8255A命令端口MOVAL,l010000B;初始化工作方式字OUTDX,ALMOVAL,0DH;置发送允许INTEA=1OUTDX,ALMOVSI,OFFSETBUFS;设置发送数据区的指针OUTCX,3FFH;发送字节数MOVDX,300H;向端口A写第1个数,产生第1个信号MOVAL,[SI];送给乙机,以便获取乙机的信号OUTDX,ALINCSI;内存地址加1DECCX;传送字节数减1LOP:MOVDX,302H;8255A状态端口(端口C)INAL,DX;查发送中断请求INTRSA=1ANDAL,08H;是否PC3=lJZLOP;若无中断请求则等待;若有向端口A写数MOVDX,300H;8255A端口PA地址MOVAL,[SI];从内存取数OUTDX,AL;通过端口A向乙机发送第2个数据INCSI;内存地址加1DECCX;字节数减1JNZLOP;字节未完,继续MOVAH,4CH;己完,退出INT21H;返回DOSBUFSDB…;定义1024个数据;乙机接收的程序段MOVDX,303H;8255A命令端口MOVAL,l0011000B;初始化工作方式字OUTDX,ALMOVAL,00000111B;置=1(PC3=1)OUTDX,ALMOVDI,OFFSETBUFR;设置接收数据区的指针MOVCX,3FFH;接收字节数L1:MOVDX,302H;8255A端口PCINAL,DX;查甲机的=0?(乙机的PC7=0)ANDAL,80H;查甲机是否有数据发来JNZL1;若无数据发来,则等待;若有数据,则从端口A读数MOVDX,300H;8255A端口PA地址INAL,DX;从端口A读入数据MOV[DI],AL;存入内存MOVDX,303H;产生信号,并发回给甲机MOVDX,00000110B;PC3置“0”OUTDX,ALINCDI;内存地址加1DECCX;字节数减1JNZL1;字节未完,则继续MOVAX,4C00H;己完,退出INT21H;返回DOSBUFRDBl024DUP(?);接收数据缓冲区10.7以图10-10所示的连接形式为例,设系统工作过程中以查询方式发送数据,而以中断方式接收数据,数据位8位,偶校验,2位停止位,波特率为4800HZ,请编写程序段对8250的初始化,并编写相应的中断服务子程序。【解答】时钟频率为1.8432MHz,波特率为4800bps,故除数波特率因子为0018H,8250的初始化如下:;设置波特率MOVAL,10000000B;DLAB=1MOVDX,3FBH;通信控制寄存器地址OUTDX,AL;写入通信控制寄存器MOVAL,18H;置4800波特率除数低位MOVDX,3F8HOUTDX,AL;写入除数锁存器低位MOVAL,00;置4800波特率除数高位MOVDX,3F9HOUTDX,AL;写入除数锁存器的高位;设置字符数据格式MOVAL,00011111B;设置数据格式MOVDX,3F8HOUTDX,AL;写入通信控制寄存器MOVDX,3FCHMOVAL,0BHOUTDX,AL;初始化MODEM寄存器MOVDX,3F9H;初始化中断允许寄存器MOVAL,01H;允许接收数据寄存器满产生中断OUTDX,ALSTI中断服务子程序如下:RECEIVE:PUSHAXPUSHBXPUSHDXPUSHDSMOVDX,3FDHINAL,DXTESTAL,DXTESTAL,IEHJNZERRORMOVDX,3F8HINAL,DXANDAL,7FHMOVBX,OFFSETREVBUFMOV[BX],ALMOVDX,INTRRMOVAL,20H;发中断结束命令EOI给8259OUT0A0H,ALOUT20H,ALJMPQUITERROR:……QUIT:POPDSPOPDXPOPBXPOPAXSTIIRET【解答】目前计算机中使用的键盘分为编码键盘和非编码键盘。PC系列键盘具有两个基本特点:第一是按键均为无触点的电容开关第二是PC系列键盘属于非编码键盘。11.3说明键盘接口电路的种类和基本工作原理,试设计一个键盘中断调用程序,从键盘输入10个连续的字符。【解答】目前PC机上常用的键盘接口有3种,一种是老式的直径13mm的PC键盘接口;第二种是最常用的直径8mm的PS/2键盘接口;第三种是USB接口的键盘。PC系列键盘不是由硬件电路向CPU输出按键所对应的ASCII码值,而是由单片机扫描程序识别按键的当前位置,然后向键盘接口输出该键的扫描码。按键的识别、键值的确定以及键代码存入缓冲区等工作全部由软件完成。设输入的字符存入620H内存单元,键盘中断调用程序如下:MOVCX,10MOVSI,620HNEXT:MOVAH,0INT16HMOV[SI],ALINCSILOOPNEXT11.4与PC键盘发生关联的是哪两类键盘中断程序?它们各自的特点是什么?【解答】计算机系统与键盘发生联系通过硬件中断09H或软件中断16H。特点:硬件中断09H是由按键动作引发的中断。在此中断中对所有键盘进行了扫描码定义。软件中断16H是BIOS中断调用的一个功能。