版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
输入输出和中断控制
6.1微型计算机和外设之间的数据传输
在微机系统中,内存可以直接与系统总线相连,外部设备则不能,外部设备必须通过接口才能与系统总线相连,如下图所示。主要原因是内存速度快且种类较少,而外部设备种类繁多且工作速度相差很大。
外部设备通过I/O接口与系统总线连接。每个接口包含一组寄存器,分别是数据寄存器、状态寄存器、控制寄存器等,如下图所示,CPU通过访问这些寄存器和外设交换信息。为了能访问到这些寄存器,一般像给内存单元编址一样给这些寄存器编址,根据具体情况,可以是一个寄存器编一个地址,也可以是多个寄存器编一个地址,相应的寄存器或寄存器组被称为I/O端口,相应的地址被称为I/O端口地址或I/O端口号
(下图中数据输入寄存器和数据输出寄存器就可以作为一个端口编一个地址)。每一个I/O端口对应一个唯一的I/O端口地址,有的计算机内存和I/O端口是统一编址的,有的计算机内存和I/O端口则是分开编址的,分开编址的I/O端口的特点是有一个与主存储器地址空间完全独立的I/O地址空间。
这种独立的编址方式要求CPU有专用的I/O指令(IN和OUT指令),用于CPU与I/O端口之间的数据传输。80x86微机系统通常都采用独立的I/O编址方式,因此,都设有IN和OUT指令。
在80x86微机的I/O指令中,I/O端口号可以是8位,也可以是16位,8位端口号可寻址256个端口,16位可寻址65536个端口。由于微机系统中一般只有十几个外设,实际上只用了其中很少一部分端口号。对于不同型号的微机系统,I/O端口号可能有所不同,表6-1列出了IBMPC机的部分I/O端口号。为了方便本章叙述,在一些简单接口电路中假设一些端口号,只是便于读者理解,并无实际意义。表6-1IBMPC机部分端口地址00H--0FHDMA控制器320H--32FH软盘控制器20H--21H中断控制器378H--37AH2号并行口(打印机适配器)40H--43H计数器/定时器3B0H--3BFH单色显示及1号并行口60H--63H可编程外围接口芯片3D0H--3DFH彩色/图形适配器200--20FH游戏适配器3F0H--3F7H硬盘控制器2F8H--2FEHCOM23F8H--3FEHCOM16.1.1程序控制方式
1.无条件传送方式无条件传送方式的特点是当程序执行到I/O指令时,无条件地立即执行I/O指令相应的操作。微机系统中的一些简单的外设,如开关、继电器、数码管、发光二极管等,在它们工作时,可以认为输入设备已随时准备好向CPU提供数据,而输出设备也随时准备好接收CPU送来的数据,
因此,在CPU需要同外设交换信息时,就能够用IN或OUT指令直接对这些外设进行输入输出操作。在这种方式下,CPU无需考虑外设的状态,故称之为无条件传送方式。采用无条件传送方式的简单接口电路如下图所示。
当执行输入指令进行输入时,CPU经控制总线使无条件传送方式接口电路的M/=0,同时将数据口地址通过地址总线传到接口的地址译码器输入端,地址译码器工作使输出端有效,CPU经控制总线使接口电路读信号()有效选种门&2,打开输入缓存器,来自输入设备的数据到达数据总线,传送给CPU。
显然,CPU在执行输入指令时,要求外设的数据已经准备好,否则就会出错。由于数据保持时间比CPU的处理时间长,输入端用输入缓冲器与数据总线相连。
当执行输出指令进行输出时,CPU经控制总线使无条件传送方式接口电路的M/=0,同时将数据口地址通过地址总线传到接口的地址译码器输入端,地址译码器工作使输出端有效,CPU将数据传到数据总线上,CPU经控制总线使接口电路写信号()有效选种门&1,将数据锁到输出锁存器中,直到外设取走该数据。。显然,CPU在执行输出指令时,必须保证锁存器是空闲的。由于外设速度较慢,要求输出寄存器有锁存功能,即CPU送给外设的数据应该在接口的输出寄存器中保持一段时间。若系统为该接口电路分配的端口地址为54H,即输入缓存器和输出锁存器共用一个端口地址INAL,54HOUT54H,AL【例6.1】微机扬声器发声程序
扬声器可以认为是一种简单的外部设备,扬声器通过并行接口与系统总线相连,扬声器的发声是由接口中的一个寄存器的两位进行控制的,端口地址为61H。扬声器发声有两种方式:一种是直接对该寄存器的D1位交替输出0或1,使扬声器交替地通与断,推动扬声器发声;另一种是控制该寄存器的D0位通过定时器驱动扬声器发出声音。若发声程序不使用定时器,端口61H的D0位清0,本例采用前一种方式。控制扬声器工作的接口中的寄存器如下图所示。
图6.4控制扬声器工作的接口中的寄存器
程序如下:CODESEGMENTASSUMECS:CODESTART:MOVDX,1000H;开关次数INAL,61H ;取端口61H的内容
PUSHAX ;入栈保存,以便退出时恢复ANDAL,11111100B ;将第0、1位置0SOUND:XOR AL,2 ;D1位取反OUT 61H,AL ;输出到端口61HMOV CX,2000H ;设置延时空循环的次数DELAY:LOOP DELAY ;空循环,延时(此延时只适用于80486/66)DEC DX ;共1000H次JNZ SOUNDPOP AX ;从堆栈中弹出原AX内容OUT 61H,AL ;恢复原61H端口内容
MOV AH,4CHINT 21H ;返回DOSCODEENDSEND START
程序中的第4条指令INAL,61H的功能是取得接口中寄存器的值,因为它的值不但控制扬声器而且控制其它设备,所以有些位的值最好不要变动。由第6条指令AND将第0位和第1位置零,2~7位保持不变;由XOR指令将第1位置为1,然后把这个开关量输出到61H端口以控制接通扬声器。在第2次循环执行XOR指令时,第1位又由1变为0,也就是关闭了扬声器,这样在脉冲电流的驱动下,扬声器就发出了声音。另外两条指令:MOVCX,2000HDELAY:LOOPDELAY是用来控制脉冲门开关时间的。这个时间值要根据PC机的主频进行调整,主频越快的机器,这个值就应该越大,否则听到的发声会十分短促或无声。因此,有时为了增大延时时间需编双重或多重循环延时程序:MOVBX,1FffHWAIT:MOVCX,1FFfHDELAY:LOOPDELAYDECBXJNZWAIT2.查询方式
查询式传送也称条件传送,是指在执行输入指令(IN)或输出指令(OUT)前,要先查询相应外部设备的状态,当输入设备处于准备好,输出设备处于空闲状态时,CPU才能执行输入输出指令与外设交换信息,否则,CPU循环查询,直到外设准备就绪为止。所以,查询方式比无条件传送方式可靠性高。(1) 查询式输入
下图所示为查询式输入的接口电路,该电路有两个寄存器,即状态寄存器和数据寄存器(数据缓存器)。当输入设备准备好数据之后,发出选通信号。它一方面把输入数据锁存到锁存器中;另一方面使状态寄存器相应位置1(如第一位D1=1)。CPU先读状态寄存器信息,查询D1是否为1,若D1=1,表示输入数据已经准备好,再读数据寄存器取走输入数据,同时使状态寄存器复位(D1=0);若D1=0则继续查询。若系统为接口分配两个端口地址,状态端口地址为54H,数据端口地址为52H。则查询输入的程序段如下:
SCAN:INAL,54HTESTAL,02HJZSCANINAL,52H(2) 查询式输出下图所示为查询式输出接口电路。该电路有两个寄存器,即状态寄存器和数据锁存器。CPU在输出数据之前,先读取状态寄存器中的状态信息,状态寄存器中忙闲标志位D0=0时,表示输出设备空闲,当输出设备空闲时,CPU执行输出指令,将数据传到数据锁存器中,否则,继续查询。执行输出指令时,一方面,给数据锁存器一个锁存信号把输出数据锁入锁存器中;另一方面,使状态标志位D0置1,表示忙,同时通知输出设备取数据。当输出设备取走当前数据后,向接口发出确认信号,使状态寄存器的D0位清0,输出设备空闲,可以输出下一个数据。若系统为接口分配两个端口地址,状态端口地址为54H,数据端口地址为52H。
查询输出的程序段如下:SCAN:INAL,54H;取状态信息TESTAL,01H;测忙闲标志JNZSCAN;忙,转移MOVAL,20;20为要输出的数据OUT52,AL;空闲,输出数据6.1.2中断传送方式
查询传送方式的主要优点是能保证主机与外设之间协调工作,硬件线路比较简单,程序也容易实现。但是,在这种方式下,CPU花费了很多时间来查询外设是否准备就绪,在这些时间里CPU不能进行其他的操作;此外,在实时控制系统中,若采用查询传送方式,由于一个外设的输入输出操作未处理完毕就不能处理下一个外设的输入输出,故不能达到实时处理的要求;另外,不论是无条件传送方式还是查询传送方式,都不能发现和处理预先无法估计的错误和异常情况。为了提高CPU的效率、增强系统的实时性,并且能对随机出现的各种异常情况做出及时反应,通常采用中断传送方式。中断传送方式即中断控制输入输出方式。当外部输入设备准备好或输出设备空闲时,主动向CPU发出中断请求,使CPU中断原来执行的程序,转去执行为外设服务的输入输出操作程序,服务完毕后CPU再继续执行原来的程序。中断是计算机的一项较为重要的技术,引入中断的最初目的是为了提高系统的输入输出性能。
当输入设备准备好后,发出选通信号,该信号把数据锁入锁存器,同时使D触发器置1,若中断屏蔽寄存器的相应屏蔽位是开放的,门&2打开INTR为高电平,向CPU发出中断请求。CPU接到中断请求信号后,若标志寄存器的IF位为1,则在现行指令执行完后,暂停正在执行的程序,向接口脚发出中断响应信号。接口接到中断响应信号后将中断类型码传到数据总线上,:CPU将该类型码读到内部暂存器中。PSW堆栈,IF、TF清0,断点入栈,根据中断类型码查中断向量表,查出中断子程序入口地址,转去执行中断子程序。中断子程序中含有输入指令INAL,52H,执行改指令完成数据读取,同时清除中断请求信号。INAL,52H指令执行过程为执行INAL,52H指令,CPU将地址52H通过地址脚经8282锁到地址总线上,同时M/为低电平,地址总线上的端口地址传到接口的地址译码器输入端,经译码使译码输出线有效,CPU将读信号通过脚经控制总线送到接口的脚上,打开门&1,给数据寄存器一个信号,数据寄存器内容流到数据总线上,CPU将数据接到AL中,同时给D触发器一个复位信号使D触发器复位,封锁门&2,清除中断请求信号。中断处理完毕后,CPU返回被中断的程序继续执行。6.1.3DMA传送方式
采用中断方式,信息的传送是依靠CPU执行中断服务程序来完成的,所以每进行一次输入输出操作,都需要CPU暂停当前程序进行中断响应,把控制转移到优先权最高的中断服务程序。执行中断服务程序时,需要有保护现场和恢复现场的操作,这些工作都是由CPU来完成的;另外,当存储器和外设交换数据时,需要经过CPU的累加器。因此每次I/O操作都需要几十甚至几百微秒,对于一些高速外设,中断控制方式往往满足不了它们的需要,DMA传送方式的产生解决了这方面的问题。在DMA传送方式下,I/O接口与存储器之间传送数据时不需CPU的干预,而是在专用硬件电路的控制下直接传送。这种方法称为直接存储器访问(DirectMemoryAccess,缩写为DMA)。为实现这种工作方式而设计的专用接口电路称为DMA控制器(DMAC)。例如,Intel公司的8237A,Motorola公司的MC6844等,都是能实现DMA方式的可编程DMAC芯片。
DMA的工作过程如下:① 当外设准备好可以进行DMA传送时,外设通过接口向DMA控制器发出DMA请求信号(DRQ)。②DMA控制器收到请求后,向CPU发出总线请求信号(HOLD),申请占用总线。③若允许,CPU在完成当前总线周期后会立即进行响应,CPU向DMA控制器发出总线响应信号(HLDA),然后CPU将数据引脚、地址引脚和相应的控制信号脚均置为高阻断状态,由此放弃对总线的控制权。④DMA控制器收到HLDA信号后就开始控制总线,DMA控制器送出地址到内存。⑤向外设接口发出DMA响应信号(DACK)。⑥DMA控制器送出相应的控制信号实现外设与内存或内存与内存之间的直接数据传送。例如,向存储器发出写信号(MEMW),同时向外设发出读信号(IOR),即可从外设向内存传送一个字节。DMA控制器自动修改地址寄存器。DMA控制器自动修改字节计数器。判断字节计数器是否回0,若不为0转回④,否则向下执行。⑩规定的数据传送完后,DMA控制器就撤消发往CPU的HOLD信号。CPU检测到HOLD失效后,紧接着撤消HLDA信号,并在下一总线周期重新开始控制总线,继续执行原来的程序。DMA方式传数据前需要CPU对其进行初始化,初始化需要向DMA控制器写入相关信息,简单DMA控制器的编程结构如图所示。其中寄存器都为8位。DMA控制器初始化主要做如下几方面工作:①指定数据的传送方向。即数据在外设和存储器之间的传送方向,需要向控制寄存器中写控制信息。②指定地址初值。即给出内存中用于DMA传送的数据区的首地址。需要向地址寄存器中写地址信息。指定计数初值。即明确有多少字节数据需要传送。需要向计数器中写计数值。
若系统为字节计数器端口分配的地址为02H,为地址寄存器端口分配的地址为04H,为控制寄存器和状态寄存器端口分配的地址为06H,计数初值为55H,地址初值为88H。则初始化程序如下:初始化程序MOVAL,88H ;设置地址初值OUT04H,ALMOVAL,55H ;设置计数初值OUT02H,ALMOVAL,49H ;设置方向为输入、块传输、启动DMAOUT06H,AL ;置DMA控制字6.1.4I/O通道和I/O处理机方式简介
通道不是一般概念的I/O通路,它是一个专用的名称。通道能独立地执行用通道命令编写的输入输出控制程序,并产生相应的控制信号送给由它管辖的设备,继而完成复杂的输入输出过程。通道是一种通用性和综合性都较强的输入输出方式。6.2中断控制技术
中断是一种使CPU中止正在执行的程序而转去处理特殊事件(如溢出、掉电、外设请求服务等)的操作。计算机正在执行某程序时,如果突然发生了某些特殊事件,CPU会暂停当前正在运行的程序,转去执行为处理该特殊事件而编写的程序,并在处理完毕后返回断点处继续执行被暂停的程序。中断过程如图所示。
6.2.18086微机系统中断源
8086的中断源如图所示。它们可能是来自外设的中断请求,也可能是计算机的一些异常事故或其他内部原因。8086的中断源可分为外部中断和内部中断两大类:1.内部中断
内部中断又称软中断,是CPU根据程序中的某条指令、运算状态或者用指令对标志寄存器中某个标志位进行设置而产生的,从软件中断的产生过程来看,完全和硬件电路无关。
引起内部中断的原因有三种:(1) 通过中断指令设置的中断(INTN)程序设计时,可以用INTn指令来产生软件中断,中断指令的操作数n给出了中断类型号,CPU执行INTn指令后,会立即产生一个类型号为n的中断,转入相应的中断处理程序来完成中断功能。(2)由计算机运算出错引起的中断①除数为0中断(中断类型号为0)在8086/8088CPU执行除法指令(DIV/IDIV)时,若发现除数为0,则立即产生一个类型号为0的内部中断,CPU转去执行除法错中断处理程序。②溢出中断INTO(中断类型号为4)CPU进行带符号数的算术运算时,若发生了溢出,则标志位OF=1,执行INTO指令,会产生溢出中断,打印出一个错误信息,把控制权交给操作系统;若不发生溢出,OF=0,则不产生中断,CPU继续执行下一条指令。INTO指令通常安排在算术指令之后,以便在溢出时能及时处理。例如:ADDAX,BXINTO ;测试加法的溢出(3)为调试程序而设置的中断①单步中断单步中断(中断类型号为1)。当TF=1时,每执行一条指令,CPU会自动产生一个单步中断。单步中断可一条一条指令地跟踪程序流程,观察各个寄存器及存储单元内容的变化,帮助分析程序错误的原因,主要用于程序调试。②断点中断断点中断(中断类型号为3)。调试程序时可以在一些关键性的地方设置断点,它相当于把一条INT3指令插入到程序中,CPU每执行到断点处,INT3指令便产生一个中断,使CPU转向相应的中断服务程序。2.外部中断
来自处理器外部的中断称为外部中断,又称为硬件中断。①可屏蔽中断一般外设发出的中断都是可屏蔽中断。外设准备好和CPU交换数据时,会通过接口向CPU发中断请求,当CPU收到可屏蔽中断请求信号时,如果标志寄存器的IF位为1,CPU会在执行完当前指令后响应这一中断请求;若IF位为0,则不响应,即屏蔽此中断请求。②非屏蔽中断当发生异常情况时(如掉电)产生非屏蔽中断请求,非屏蔽中断不受标志位影响,必须立即给予响应。6.2.28086中断向量表
80X86中断系统能处理256种类型的中断,系统为每种类型的中断分配一个号码称为中断类型码或中断类型号,中断类型码的范围为0~FFH。每种类型的中断都由相应的中断处理程序来处理。
例如:假设在中断向量表中地址为0034H的内存单元存储内容为50H,0035H中的内容为12H,0036H中的内容为00H,0037H中的内容为30H,则INT13的中断服务程序的入口地址。IP←[4×13+1,4×13]=1250HCS←[4×13+3,4×13+2]=3000H中断优先级与中断嵌套
在系统工作时,如只有一个中断源提出中断请求,若它是非屏蔽中断源,那么CPU就会立即响应它的请求;若它是可屏蔽中断源,只要状态寄存器的IF=1,CPU也会响应它的请求。但是,如果在同一时刻有几个中断源同时提出中断请求,CPU只能先响应1个中断源,那么究竟响应哪个中断源,这就引出了中断优先级问题。如果CPU响应了一个中断源的中断请求后,在执行中断处理程序的时候,又有一个新的中断源提出中断请求,CPU是否响应这个新的中断请求,也会涉及到中断优先级。通常情况下,不同优先级的多个中断源同时发出中断请求,按优先级由高到低依次处理。低优先级中断正在处理时,出现高优先级请求,应转去处理高优先级请求,服务结束后再返回原优先级较低的中断服务程序继续执行;高优先级中断正在处理,出现低优先级请求,可暂不响应。中断处理时,出现同级别请求,应在当前中断处理结束以后再处理新的请求。IBM-PC规定中断的优先级次序为:优先级高内中断(除单步中断)非屏蔽中断(NMI)可屏蔽中断(INTR)
低单步中断
6.2.4中断请求与中断响应
中断请求是中断源向CPU发出的请求中断的要求。软件中断源是在CPU内部由中断指令或程序出错直接引发中断;而硬件中断源必须通过专门的电路将中断请求信号传送给CPU,CPU也有专门的引脚接收中断请求信号。例如,8086CPU用INTR引脚(可屏蔽中断请求)和NMI引脚(非屏蔽中断请求)接收硬件中断请求信号。一般外设发出的都是可屏蔽中断请求。向8086CPU的NMI引脚(边沿触发)请求的中断称为非屏蔽中断。它是不被IF禁止的中断。非屏蔽中断被响应时,其中断矢量号不由外部中断源提供,而是由系统固定分配。80X86系统中,非屏蔽中断的矢量号为2,它的优先级别高于可屏蔽中断,非屏蔽中断通常用来处理应急事件,如总线奇偶错、电源故障或电网掉电等。6.2.5中断服务子程序
中断处理程序的结构模式如下:①进一步保护现场;将CPU内部相关寄存器的内容依次压入堆栈(若不需要可省略)。②开放中断(STI),允许级别较高的中断进入。③中断处理程序的具体内容,这是中断处理程序的主要部分。④恢复现场,将所保存在堆栈中的寄存器内容弹出堆栈。⑤中断返回(IRET)。6.3中断控制器8259A
8259A是可编程中断控制器芯片,用于管理和控制80x86的外部中断请求,单片8259A可管理8级中断,若采用级联方式,可以用9片8259A构成两级中断机构,管理64级中断,当然,外部中断源较少时也可以组成少于9片的两级中断机构,如图6.16所示。8259A是可编程器件,它具有多种工作方式,其中大多数工作方式可以通过指令在用户编程时进行改变。
6.3.18259A引脚的含义
8259A为28脚双列直插式封装器件,管脚分配如图6.17所示。①D0~D7:数据线,双向,用来与CPU交换数据。②INT:中断请求,输出,由8259A传给CPU,或由从8259A传给主8259A。中断响应,输入,来自CPU。④IR0~IR7:中断请求,输入,由外设传给8259A。⑤CAS0~CAS2:级联信号。在多片8259A级联的情况下,主片和所有从片的CAS0~CAS2对应连接在一起。对于主片,CAS0~CAS2是输出信号,根据它们的不同组合000~111,分别确定选中哪个从片。对于从片,CAS0~CAS2是输入信号,以此判别本从片是否被选中。
⑥16脚:主设备与从设备的选择控制信号,双向。在缓冲方式中(即8259A通过一个数据总线收发器与系统总线相连),该引脚被用作输出,控制收发器的接收或发送;在非缓冲方式中,该引脚作为输入线,当16脚=1时,该8259A作为主片;当16脚=0时,该8259A作为从片。⑦A0:内部寄存器选择控制信号,输入。8259A规定,当A0=0时,对应的寄存器为ICW1、OCW2和OCW3;当A0=1时,对应的寄存器为ICW2~ICW4和OCW1。⑧:片选信号,输入,一般来自地址译码器的输出,有效时选中本片。⑨:写信号,输入,通知8259A接收CPU传到数据总线上的命令字。⑩:读信号,输入,控制读取8259A中某些寄存器的内容(如IMR、ISR或IRR)。6.3.28259A的编程结构和工作原理
图为8259A的编程结构图。主要包含中断服务寄存器、中断优先级裁决器、中断请求寄存器、初始化命令字寄存器、操作命令字寄存器等。①中断请求寄存器IRR:IRR是一个8位寄存器,用来接收来自IR0~IR7上的中断请求信号,并将IRR相应位置1。②中断服务寄存器ISR:ISR是一个8位寄存器,用来标识当前正在处理的中断请求。在中断嵌套方式下,可以将其内容与新进入的中断请求进行优先级比较,从而决定是否进行嵌套。③初始化命令字寄存器组(ICW1~ICW4):用来存放初始化命令字,初始化命令字往往是计算机系统启动时由初始化程序设置,一旦设定,一般在工作过程中不再更改。④操作命令字寄存器组(OCW1~OCW3):操作命令字由应用程序设定,用来对中断处理过程作动态控制,在工作过程中可被多次设置。⑤中断优先级裁决器PR:可以根据优先级的高低和IMR的内容,把新进入的中断请求和正在处理的中断进行优先级比较,从而决定是否为新进入的中断服务。
第一个负脉冲到来时,8259A完成下列动作:① 不再接收IR7~IR0线上的中断请求信号。直到第二个负脉冲到来时才重新接收。这样就避免了中断响应过程被中断。② 使当前中断服务寄存器ISR中的相应位置1,以便为中断优先级裁决器以后的工作提供判断依据。③ 使IRR寄存器中接收中断请求时设置的位清0。第二个负脉冲到来时,8259A完成下列动作:① 将中断类型寄存器ICW2中内容送数据总线的D7~D0,CPU将此作为中断类型号。② 如ICW4中的中断自动结束位为1,则将当前中断服务寄存器ISR的相应位清0。6.3.38259A的工作方式
8259A具有非常灵活的中断管理方式,可满足用户各种不同要求,并且这些工作方式都可以通过编程来设置。但是,由于工作方式多,使用户感到8259A的编程和使用不太容易掌握。为此,在讲述8259A的编程之前,我们先对8259A的工作方式分类进行介绍。1.设置优先级的方式(1)全嵌套方式全嵌套方式是8259A最常用的工作方式。该方式下中断优先级是固定的,即IR0优先级最高,IR7优先级最低。当CPU响应中断时,8259A就把申请中断的优先级最高的中断源在ISR中的相应位置“1”,而且把它的中断类型码送到数据总线上。(2)特殊全嵌套方式特殊全嵌套方式和全嵌套方式只有一点不同,在特殊全嵌套方式下,当处理某一级中断时,如果有同级的中断请求,那么也会给予响应,从而实现一种对同级中断请求的特殊嵌套。特殊全嵌套方式一般用在8259A级联系统中。在这种情况下,主片8259A编程为特殊全嵌套方式。(3)优先级自动循环方式在实际应用中,中断源的优先级情况是比较复杂的,不一定有明显的等级,而且优先级还可能改变。所以,不能总是规定IR0优先级最高,IR7优先级最低,而要根据实际情况来处理,故8259A设计了改变优先级的方法。在优先级自动循环方式中,优先级是在动态变化的。一(4)优先级特殊循环方式优先级特殊循环方式与优先级自动循环方式只有一点不同,在优先级特殊循环方式中,初始最低优先级是通过指令写OCW2来指定的。例如,指定IR5为最低优先级,那么当前的优先级顺序为IR6、IR7、IR0、IR1、IR2、IR3、IR4、IR5。而优先级自动循环方式一开始默认IR7为最低优先级,不需要设置。2.结束中断处理方式
(1)中断自动结束方式若采用该方式,则在中断响应的第二个负脉冲后沿,8259A将自动把中断服务寄存器ISR中的相应位清除。这样,尽管系统正在为该中断服务,但对8259A来说,中断服务寄存器中却没有相应位作指示,所以,就好像已经结束了该中断服务一样。这种最简单的中断结束方式一般为初学者设置。(2)一般中断结束方式这种结束方式用在全嵌套方式下。当CPU用指令向8259A发出一般中断结束命令时,8259A就会把ISR中已置位的最高位复位,因为在全嵌套方式下,置1的最高ISR位对应着已响应的中断中优先级最高的中断,也就是当前正在处理的中断,所以,最高的ISR位复位相当于结束了当前正在处理的中断。(3)特殊中断结束方式在非全嵌套方式下,由于中断优先级是动态变化的,置1的最高ISR位对应的中断,优先级不一定是最高的,这时就要采用特殊中断结束方式。就要用指令发一条特殊中断结束命令,在这个命令中指出了要清除哪个ISR位。3.屏蔽中断源的方式
(1)普通屏蔽方式普通屏蔽方式中,通过指令将IMR的某位置“1”,则该位对应的中断源就被屏蔽,从而使这个中断请求不能从8259A送到CPU。如果该位清“0”,则允许该中断通过。(2)特殊屏蔽方式有些情况下,希望一个中断服务程序能动态地改变系统的优先级结构。例如,在执行中断服务程序某一部分时,希望禁止较低级的中断请求;但在执行中断服务程序的另一部分时,又希望能够对优先级低的中断开放。为达到这样的目的,必须将8259A设置成特殊屏蔽方式,并用指令使IMR的对应位置位。4.连接系统总线的方式
设置成特殊屏蔽方式时,会使ISR的对应位复位。这样,就会真正开放了级别较低的中断,当然未被屏蔽的更高级中断也可以得到响应。(1)缓冲方式8259A通过一个数据总线收发器与数据总线相连就是缓冲方式,在缓冲方式中,/引脚被用作输出,控制收发器的接收或发送。(2)非缓冲方式8259A直接和数据总线相连就是非缓冲方式,在非缓冲方式中,/引脚作为输入线,当该8259A作为主片时,/引脚接高电平;当该8259A作为从片时,/引脚接地。5.引入中断请求的方式
(1) 边沿触发方式在边沿触发方式下,8259A的引脚IR7~IR0上出现上升沿,表示有中断请求,高电平不表示有中断请求。(2) 电平触发方式在电平触发方式下,8259A的引脚IR7~IR0上出现高电平,表示有中断请求。这种方式下,应注意及时撤除高电平,否则可能引起不应有的第二次中断。(3)中断查询方式8259A也可以用软件查询方式来检查中断请求。当CPU关中断时,即PSW的IF=0,8259A不使用INT中断信号向CPU发中断请求,那么处理中断请求的方法是通过软件查询来实现。CPU先通过指令写OCW3,让OCW3中P=1,8259A接到查询命令后,立即组织查询字,等待CPU读取,CPU执行下一条输入指令时,便可读得如下格式的查询字,
6.3.48259A的初始化命令字和初始化
1.ICW1的格式及含义ICW1称为芯片控制初始化命令字。ICW1的各位定义如下:① D7、D6、D5、D2在16位和32位系统中不用,可为1,也可为0。它们在8位机8080/8085系统中使用。②D4=1和A0=0是ICW1的标志,D4用于区分ICW1、OCW2和OCW3。也就是只有当A0=0和D4=1时才能将命令字写入ICW1中,当A0=0时,D4=0表示写操作控制字OCW2或OCW3。③D3(LTIM)用来设定中断请求信号的形式。如果LTIM=0,则表示中断请求为边沿触发方式;如果LTIM=1,则表示中断请求为电平触发方式。④D1(SNGL)用来指出本片8259A是否与其他8259A处于级联状态。当系统中只有一片8259A时,SNGL为1;当系统中有多个8259A时,SNGL为0。⑤D0(IC4)用来指出初始化过程中是否设置ICW4。若IC4为0,表示不设置ICW4;若IC4为1,表示设置ICW4。2.ICW2中断类型码字ICW2为设置中断类型码的初始化命令字。ICW2的各位意义如下:ICW2命令字用来设置中断类型号基值。所谓中断类型号基值是指IR0中断源所对应的中断类型号,例如,在PC/XT中,从IR0、IR1、IR2、…、IR7上引入的各中断请求,其相应的中断类型号为08H、09H、0AH、0BH、0CH、0DH、0EH和0FH。则ICW2应被设置为08H,它一定是个可被8整除的正整数,当8259A接收到CPU发回的中断响应信号后,便通过数据总线向CPU送中断类型号。该字节的高5位即为ICW2的高5位,低3位根据当前CPU响应的中断是IR7~IR0中的哪一个而定,分别对应111~000。3.ICW3(级联控制字)的格式及含义
ICW3是主片/从片初始化命令字。只有在一个系统中包含多片8259A时,ICW3才有意义。如果本片为主片,ICW3的各位意义如下:从上面格式可见,如果本片为主片,则D7~D0对应于IR7~IR0引脚上的连接情况。如果某一引脚上连有从片,则D7~D0相应位为1;如果未连从片,则相应位为0。例如,当ICW3=80H(10000000)时,表示IR7引脚上接有从片,而IR6~IR0引脚上没有从片。如果本片是从片,则ICW3的格式如下:4.ICW4(方式控制字)的格式及含义。ICW4为方式控制初始化命令字。只有在ICW1的D0位为1时,才设置ICW4,否则不设置。ICW4的格式如下:① D7~D5:D7~D5位总是为0,用来作为ICW4的标识码。② D4(SFNM):若D4为1,则为特殊的全嵌套方式。在采用特殊全嵌套方式的系统中,一般都使用了多片8259A。③ D3(BUF):若D3为1,则为缓冲方式。在缓冲方式下,8259A通过总线驱动器和数据总线相连。如果8259A不通过总线驱动器和数据总线相连,则为非缓冲方式,D3应设置为0。④D2(M/S):D2在缓冲方式下用来表示本片为从片还是主片。即BUF=1时,如果M/S=1,则表示本片为主片;如果M/S=0,则表示本片为从片。当BUF=0时,则M/S不起作用,可为0也可为1。⑤D1(AEOI):D1指定是否为中断自动结束方式。AEOI=1,则将8259A设置成中断自动结束方式;AEOI=0时,非自动中断结束方式,这时必须在中断服务程序中使用EOI,使ISR中最高优先级位复位。⑥D0(uPM):D0指定微处理器的类型。uPM=0时,表示8259A工作于8080/8085系统中;uPM=1时,表示8259A工作于8086/8088系统中。MOVAL,13HOUT80H,AL ;设置ICW1MOVAL,18HOUT82H,AL ;设置ICW2MOVAL,0DHOUT82H,AL ;设置ICW4
6.3.58259A的操作命令字
1.OCW1(屏蔽控制字)OCW1称为中断屏蔽操作命令字。其格式如下:
在写入OCW1时,直接对中断屏蔽寄存器IMR的相应屏蔽位进行置位或复位操作。M7~M0代表8个屏蔽位,用来控制IR7~IR0输入的中断请求信号。如果某一位M=1,它就屏蔽对应的IR7~IR0输入(如:M0=1屏蔽IR0,M1=1屏蔽IR1等等),禁止它产生中断输出信号INT。2.OCW2(中断结束和优先级循环控制字)OCW2用来设置优先级循环方式和中断结束方式。其格式如下:①R是优先级循环控制位。R=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 县政府出台内部审计制度
- 厨房绩效考核制度范本
- 大学科研经费审计制度
- 医院小组绩效考核制度
- 地产中介培训教育制度
- 中国石化绩效考核制度
- 中餐厨师绩效考核制度
- 审计局文印管理制度
- 北京内部审计制度
- 企业安全审计制度
- 中国精神心理疾病正念治疗指南(2025版)
- 深圳市公务员考核制度
- (2026春新版)教科版三年级科学下册全册教案
- 2025耳念珠菌医院感染预防与控制专家共识课件
- 心血管-肾脏-代谢综合征(CKM)综合管理中国专家共识2025解读课件
- 手部卫生要讲究学会洗手剪指甲一年级综合实践活动课件
- DL-T5024-2020电力工程地基处理技术规程
- DZ∕T 0153-2014 物化探工程测量规范(正式版)
- 开荒保洁合同保洁开荒合同范本
- 地震应急演练实施方案村委会
- 铃儿响叮当的变迁合唱简谱
评论
0/150
提交评论