微型计算机原理与接口技术-第6章_输入输出和中断技术()_第1页
微型计算机原理与接口技术-第6章_输入输出和中断技术()_第2页
微型计算机原理与接口技术-第6章_输入输出和中断技术()_第3页
微型计算机原理与接口技术-第6章_输入输出和中断技术()_第4页
微型计算机原理与接口技术-第6章_输入输出和中断技术()_第5页
已阅读5页,还剩122页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,第6章 输入输出和中断技术,第6章 节 目 录,6.1 输入输出系统概述6.2 简单接口电路6.3 输入输出的控制方式6.4 中断技术6.5 可编程中断控制器8259A,章,第6章作业,6.5 6.76.136.146.156.17,章,6.1 输入输出系统概述,处理器和主存储器之外的部分统称为输入输出系统,它包括输入输出设备、输入输出接口和输入输出软件。,计算机在运行过程中所需要的程序和数据由外设输入,而结果要输出到外设去。,接口,输入输出系统,电源,1、I/O接口要解决的问题,一、I/O接口的基本功能,速度匹配问题 外设与CPU相比,速度差距很大。信号电平和驱动能力问题 CPU的信号电平05V,而外设的电平范围宽,需要驱动功率大。信号形式匹配问题 外设的信号可以是数字量、开关量、模拟量等。信息格式问题 外设可以是串行信号、并行信号等。时序配合问题 外设有自己的时序与控制逻辑,与CPU不一致。,I/O地址译码与设备选择把选中的外设与总线相接,未选中的外设与总线隔离(高阻态),信息的输入与输出通过接口可以向外设输入或输出数据。,信息转换 信息格式变换、电平转换、码制转换、传送管理及联络控制等功能。,命令、数据和状态的缓冲与锁存接口电路有信息缓冲能力。可以解决速度匹配问题,实现CPU与外设之间的同步。,2、I/O接口的功能,串行接口的功能1、发送时将并行数据转 换为串行。2、接收时相反。3、发送时将TTL电平转换为-15V-+15V 。4、接收时相反。5、异步发送与接收。,CPU,计算机,二、I/O接口的编址方式,1、CPU与I/O接口通信是通过一组寄存器实现的。 I/O信息的三种类型:数据、命令、状态。 传送这三类信息的通道分别称为: 数据端口(I、O)、命令端口(O)、状态端口(I),2、不同接口具有的端口数各不相同,计算机中为 每一个端口都赋予一个唯一编号,称为端口 地址(或端口号、接口地址)。,端口有两种编址方式:统一编址和独立编址。,CPU,计算机,每个端口有自己的地址编号, 统一编址 把外设端口与内存统一进行编址。各占据统一地址空间的不同部分。,端口的两种编址方式:统一编址和独立编址,优点: 指令统一,灵活; 访问控制信号统一。 缺点: 内存可用地址空间减小, 独立编址外设地址空间和内存地址空间相互独立。优点:内存地址空间不受I/O编址的影响缺点:需要专用I/O指令,功能较少,应用:Z-80系列和x86系列均采用此方式。,如:存储器读写用MOV指令I/O接口读写用IN或OUT指令,三、8086/8088 I/O端口访问,四、 8086/8088 I/O端口地址的译码,1、根据系统提供的三总线信号为A0A19、D0D7、RD、WR、IO/M等设计译码电路并与系统进行连接。,用于存储器芯片选通,用于I/O芯片选通,I/O接口,节,6.2 简单接口电路,一、 接口电路的基本结构,CPU,外设,数据输入/输出寄存器暂存输入/输出的数据命令寄存器存放控制命令,用来设定接口功能、工作参数和工作方式。状态寄存器保存外设当前状态,以供CPU读取。,1、接口电路中寄存器的作用,数据输入接口 必须具有三态输出能力,以便与总线挂接 外设有数据保持能力时可用三态门实现 外设无数据保持能力时用三态输出的锁存器实现 数据输出接口 常用锁存器实现,2、数据输入/输出接口电路的要求,三态门:高电平、低电平、高阻态通常一个器件中包含8个三态门常用芯片:74LS244应用例子:开关接口,二、简单数据输入接口设计,。,74LS244,I0,I3,。,数据总线,数据总线,地址译码器,三、简单的输入接口举例,接口电路图如下:,83FCH83FFH,译码器,锁存器:由D触发器构成(具有锁存功能)通常一个器件包含8个D触发器常用芯片: 74LS27374LS374,四、简单的输出接口举例,MOV DX,0FFFFHMOV AL,01000001BOUT DX,AL,74LS273可以直接做输出接口,但不能直接做输入接口(不能直接连接CPU总线)。,74LS374既可做输入电路,也可做输出电路。,五、输入/输出接口综合应用例子,根据开关状态在7段数码管上显示数字或符号共阳极7段数码管结构用74LS273作为输出接口,把数据送到7段数码管用74LS244作为输入口,读入开关K0K3的状态当开关的状态分别为00001111时,在7段数码管上对应显示0F,当.gfedcba的值为C0H(11000000)时,显示0,F0H = 0000 0000 1111 0000,F1H = 0000 0000 1111 0001,相应程序段如下:Seg7DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,67H,77H,7CH,39H,5EH,79H,71HLEABX, Seg7;取7段码表基地址MOVAH, 0GO:MOVDX, 0F1H;开关接口的地址为F1HINAL, DX;读入开关状态ANDAL, 0FH;保留低4位MOVSI, AX;作为7段码表的表内位移量MOVAL, BX+SI;取7段码MOVDX, 0F0H;7段数码管接口的地址为F0HOUTDX, ALJMPGO,节,6.3 输入输出的控制方式,无条件传送查询式传送中断方式传送直接存储器存取(DMA, Direct Memory Access),主机与外设之间数据传送的控制方式有以下四种:,一、 无条件传送方式,适用于总是处于准备好状态的外设以下外设可采用无条件传送方式:开关发光器件(如发光二极管、7段数码管、灯泡等)继电器步进电机优点:软件及接口硬件简单缺点:只适用于简单外设,适应范围较窄,二、 查询方式,适用于外设并不总是准备好,而且对传送速率、传送效率要求不高的场合。CPU在与外设交换数据前必须询问外设状态“你准备好没有?”对外设的要求:应提供设备状态信息对接口的要求:需要提供状态端口优点:软件比较简单缺点:CPU效率低,数据传送的实时性差,速度较慢。,CPU,接口,外设,系统总线,状态,数据,控制,图6-13 查询工作方式示意图,三、 中断方式,CPU无需循环查询外设状态,而是外部设备在需要进行数据传送时才中断CPU正在进行的工作,让CPU来为其服务。即CPU在没有外设请求时可以去做更重要的事情,有请求时才去传输数据,从而大大提高了CPU的利用率。优点:CPU效率高,实时性好,速度快。缺点:程序编制较为复杂。,6.3.4 DMA传输,前三种I/O方式都需要CPU作为中介:,1)软件方面:外设与内存之间的数据传送是通过 CPU执行程序来完成的;2)硬件方面:I/O接口和存储器的读写控制信号、地址信号都是由CPU发出的(总线由CPU控制)。,缺点:程序的执行速度限定了传送的最大速度(约为几十KB/秒)。,DMA传输: 外设直接与存储器进行数据交换 ,CPU不再担当数据传输的中介者; 总线由DMA控制器(DMAC)进行控制(CPU要放弃总线控制权),内存/外设的地址和读写控制信号均由DMAC提供。,优点:数据传输由DMA控制器即硬件来控制,数据直接在内存和外设之间交换,可以达到很高的传输速率(可达几MB/秒),DMA传送原理示意图,系统总线,CPU,DMAC,存储器,外设,AEN,IOW,MEMW,MEMR,IOR,MEMW,MEMR,IOW,IOR,AEN,HOLD,HLDA,DRQ,DACK,AEN,IOW,IOR,MEMW,MEMR, 外设发出DMA请求信号DRQ DMAC向CPU申请总线HOLD CPU响应,释放总线控制权,并发出HLDA信号 DMAC得到总线控制权,并向外设发出响应信号DACK 由DMAC发出各种控制信号,控制外设与存储器之 间的数据传送 数据传送完后,DMAC撤销HOLD信号 CPU释放HLDA信号,并重新控制总线,1)当外设准备好,可以进行DMA传送时,外设向DMA控制器发出“DMA传送请求”信号(DRQ);,DMA控制器的工作过程:,4)DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信号DACK;,3)CPU在完成当前总线周期后会立即对HOLD信号进行响应。响应包括两个动作: CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,由此放弃对总线的控制权。 CPU向DMA控制器发出“总线响应”信号(HLDA)。,2)DMA控制器收到请求后,向CPU发出“总线请求”信号HOLD,表示希望占用总线;,5)DMA控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直接数据传送;例如,向I/O接口发出读信号,同时往地址总线上发出存储器的地址和存储器写信号和AEN信号,即可从外设向内存传送一个字节。,6)DMA控制器自动修改地址和字节计数器,并判断是否需要重复传送操作。当规定的数据传送完后,DMA控制器就撤销发往CPU的HOLD信号。CPU检测到HOLD失效后,紧接着撤销HLDA信号,并在下一时钟周期重新开始控制总线。,节,6.4 中断技术,6.4.1 中断的基本概念,中断的定义,CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。,与子程序的区别?,只有执行到CALL时才调用子程序,而中断是随机的。,中断源,引起CPU中断的事件中断源。例如:外设请求输入输出数据,报告故障等事件掉电、硬件故障、软件错误、非法操作、定时时间到等。中断源分为:外部中断、内部中断内部中断:CPU内部执行程序时自身产生的中断(如INT指令、溢出、被0除等)外部中断:CPU以外的设备、部件产生的中断 8086/8088的外部中断信号:INTR、NMIINTR可屏蔽中断请求,高电平有效,受IF标志的控制。IF=1时,执行完当前指令后CPU对它作出响应。 NMI非屏蔽中断请求,上升沿有效,任何时候CPU都要响应此中断请求信号。,为何计算机中要引入中断?,避免了CPU不断检测外设状态的过程,提高了CPU的利用率。 实现对特殊事件的实时响应。如多任务系统操作系统中: 缺页中断 设备中断 各类异常 实时钟,。等,中断过程,五个步骤:中断请求中断判优(有时还要进行中断源识别)中断响应中断服务中断返回以下以外部中断为主介绍这五个步骤。,1)中断请求,外设接口(中断源)发出中断请求信号,送到CPU的INTR或NMI引脚;中断请求信号:边沿请求,电平请求例如,NMI为边沿请求,INTR为电平请求中断请求信号应保持到中断被处理为止;CPU响应中断后,中断请求信号应及时撤销。在8086/8088系统中,外设的中断要经过8259A可编程中断控制器(PIC)的排队判优后向CPU发出。,2)中断判优,多个中断源产生中断,CPU首先为谁服务?中断优先级排队问题。中断优先级控制要处理两种情况:对同时产生的中断:应首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则处理;对非同时产生的中断:低优先级别的中断处理程序允许被高优先级别的中断源所中断即允许中断嵌套。中断优先级的控制方法硬件判优链式判优、并行判优(中断向量法)软件判优顺序查询中断请求,先查询的先服务(即先查询的优先级别高)通常将中断判优与中断源识别合并在一起进行处理。x86系统中,这项任务由PIC和CPU共同完成。,软件判优,中断矢量法:为不同的中断源提供不同的中断类型码(中断向量码),即为每一个中断分配一个编号,CPU根据类型码确定中断源。(8086/8088即采用此种方法),硬件判优,链式判优:将中断源构成一个链。,INTAin,CPUINTAINTR,外设1,外设2,外设接口1,菊花链逻辑电路,外设接口2,外设3,外设接口3,1,菊花链逻辑电路,菊花链逻辑电路,IREQ,IREQ,IREQ,中断确认,链式判优电路原理图(教材图6.20),INTAin,INTAin,中断确认,中断确认,链中越往左,中断源的级别越高。,菊花链逻辑电路,INTAin,IREQ,INTR,&,1,INTAout,DB,三态门,中断向量码,E,外设接口,中断确认,菊花链逻辑电路,3)中断响应,在每条指令的最后一个时钟周期,CPU检测INTR或NMI信号。若以下条件成立,则CPU响应中断: 当前指令执行完。对INTR,还应满足以下条件当前指令是STI和IRET,则下条指令也要执行完。当前指令带有LOCK、REP等指令前缀时,则把它们看成一个整体,要求完整地执行完; 对INTR,CPU应处于开中断状态,即IF=1; 当前没有复位(RESET)和保持(HOLD)信号。 若NMI和 INTR 同时发生,则首先响应NMI。,CPU中断响应时,要做下述三项工作:向中断源发出/INTA中断响应信号;断点保护,包括CS、IP和PSW(FLAGS)。这主要是保证中断结束后能返回被中断的程序。获得中断服务程序首地址(入口地址)。如何得到中断处理程序的首地址?固定入口法中断向量法(8086采用的方法),4)中断处理(中断服务),中断服务子程序特点为“远”过程(类型为FAR)要用IRET指令返回中断服务子程序要做的工作保护现场(PUSH regs) 开中断(STI) 进行中断处理 关中断(CLI)恢复现场(POP regs) 中断返回(IRET),5)中断返回,执行中断返回指令IRETIRET指令将使CPU把堆栈内保存的断点信息弹出到IP、CS和FLAG中,保证被中断的程序从断点处能够继续往下执行。,6.4.2 8088的中断系统,与中断有关的控制线为:NMI、INTR、/INTA 8088系统的中断源 内部中断 除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。 单步中断:类型号1,TF=1时产生(当前指令需执行完) 断点中断:类型号3,这是一个软件中断,即INT 3指令。 溢出中断:类型号4,这是一个软件中断,即INTO指令。 软件中断:即INT n指令,类型号n(0-255)。 外部中断 非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU必须响应它。 可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才能响应。,一、8086/8088中断源类型,8088系统采用中断类型(向量)码来识别不同的中断源,每个中断源都有一个与它相对应的中断类型码 。溢出、断点、除法溢出、单步、非屏蔽中断的类型码为固定值软件中断的类型码由指令给出可屏蔽中断的类型码由PIC给出CPU响应INTR中断时,会产生两个中断响应总线周期,要求PIC在第2个中断响应总线周期把中断类型码放到数据总线上,供CPU读入。,二、中断向量表(IVT),存放各类中断的中断服务程序的入口地址(段和偏移) ;表的地址位于内存的00000H003FFH,共256个入口;每个入口占用4 Bytes,低字为段内偏移,高字为段基址;根据中断类型号获得中断服务程序入口的方法: (n为中断类型号)中断向量在IVT中的存放地址 n4,例如:中断类型码为21H,其中断向量存放在0000H:0084H(21H*4=84H)开始的4个字节单元中。,6-23 中断向量表结构,INT 4AHNOP,三、软中断的执行过程,四、8086/8088 CPU的中断响应过程,内部中断响应过程 无中断响应周期中断类型码固定或由指令(INT n)给出响应过程步骤: 将类型码乘4,计算出中断向量的地址 标志寄存器入栈 清除IF、TF,即屏蔽新的INTR和单步中断 保存断点,将断点处的 CS压栈将断点处的 IP压栈 (I P)=(n*4+1):(n*4+0) (CS)=(n*4+3):(n*4+2) 执行中断服务程序。,中断响应过程(续),外部中断响应过程非屏蔽中断,与内部中断响应过程类似 可屏蔽中断(时序见图6.24) /INTA(1),PIC进行优先级排队判优处理 /INTA(2),PIC把中断类型码放到DB上,由CPU读入 压栈 FLAG 清除 IF、TF CS入栈 IP入栈 (I P)=(n*4+1):(n*4+0) (CS)=(n*4+3):(n*4+2),IRET,;PROGRAM IN EXECUTION,可屏蔽中断的执行过程,8088系统中各中断的优先级,优先级从高到低顺序如下: 内部中断 NMI INTR 单步中断,节,6.5 可编程中断控制器8259A,PIC,Programmable Interrupt Controller可对8个中断源实现优先级控制 可扩展至对64个中断源实现优先级控制 可编程设置不同工作方式根据中断源向x86提供不同中断类型码,可编程芯片:可以用程序设置芯片的工作方式,控制其工作过程。,A0:是8259A内部寄存器的选择信号。它与/WR、/RD、/CS等信号相配合,对不同的内部寄存器进行读写。 使用中,通常接地址总线的A1或A0等。 INT:8259A中断请求输出信号,直接接到CPU的INTR输入端。 /INTA:中断响应输入信号。在中断响应过程中CPU的中断响应信号由此端进入8259A。 CAS0-CAS2:级联控制线。当多片8259A级联工作时,其中一片为主片, 其他均为从片。主片8259A: CAS0-CAS2为输出; 从片8259A: CAS0-CAS2为输入。 当某从片提出中断请求时,主片通过CAS0-CAS2送出相应的编码给从片,使从片的中断被允许。,SPEN:为双功能引线。当8259A工作在缓冲模式时,它为输出,用以控制缓冲器的传送方向:当数据: CPU8259A 时,SP/EN输出为高电平;当数据: 8259ACPU 时,SP/EN输出为低电平。在8259A工作在非缓冲模式时,它为输入,用于指定8259A是主片还是从片:SP1的8259A为主片,SP0的 8259A为从片。只有一 个8259A时,它应接高电平。IR0-IR7:为中断请求输入信号,与外设的中断请求线相连。上升沿或高电平(可通过编程设定)时表示有中断请求到达。,级连电路连接方法,6.5.1 8259A的内部结构,8259A的内部结构 中断请求寄存器IRR保存从IR0IR7来的中断请求信号,某位为1表示对应的IRi有中断请求 。中断服务寄存器ISR 保存所有正在服务的中断源,某位为1表示对应的IRi中断正在被服务 ,可能同时有几位为1。中断屏蔽寄存器IMR存放中断屏蔽字,某位=1表示对应的IRi输入被屏蔽 。中断优先权判别电路,确定是否向CPU发出中断请求,中断响应时确定ISR的哪位应置位及把相应中断的类型码放到数据总线上 。,6.5.2 8259A的工作过程,8259A对外部可屏蔽中断请求的处理过程如下:当某IRi有效时,IRR相应位置1。若有效的IRi未被屏蔽,则向CPU发出中断请求。若CPU处于开中断状态,则在当前指令执行完后,发/INTA。检测到第1个/INTA信号后,置ISRi=1,IRRi=0。检测到第2个/INTA信号后,把ISRi=1中最高优先级的中断类型码放到DB上。若工作在AEOI方式,在第2个/INTA结束时,使ISRi复位;否则由CPU发出EOI命令使ISRi复位。,6.5.3 8259A的工作方式,8259A的工作方式: 中断触发方式 屏蔽中断源的方式 中断优先方式 中断嵌套方式 中断结束处理方式 级联工作方式,一、中断触发方式,边沿触发 IRi出现上升沿表示有中断请求 电平触发 IRi出现高电平表示有中断请求,但应及时撤除高电平,否则可能引起第二次中断。在第1个/INTA结束前,IRi必须保持高电平。,二、屏蔽中断源的方式,普通屏蔽方式:IMR屏蔽字决定了允许或禁止某位IRi所对应的中断: IMi=1 禁止,IMi=0 允许(即正常屏蔽方式)。特殊屏蔽方式:提供了允许较低优先级的中断能够得到响应的特殊手段。原理:假定当前正在处理IR6,先进入特殊屏蔽方式,然后设置IM6=1。这时,除IR6外的所有中断请求均能得到响应。特殊屏蔽方式中只能用SEOI命令结束中断。,三、中断优先方式,中断优先方式 两类优先级控制方式:固定优先级和循环优先级固定优先级方式所有中断请求IRi的中断优先级固定不变优先级排列顺序可通过编程改变加电后8259A的默认方式,默认优先级顺序从高到低为IR0IR7,循环优先级方式 中断源轮流处于最高优先级,即自动中断优先级循环 初始优先级顺序可用编程改变 某中断请求IRi被处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级。,在中断处理过程中允许被更高优先级的事件所中断称为中断嵌套。 8259A有两种中断嵌套方式:普通全嵌套方式(默认方式) 一中断正被处理时,只有更高优先级的事件可以打断当前的中断处理过程而被服务。特殊全嵌套方式 一中断正被处理时,允许同级或更高优先级的事件打断当前的中断处理过程而被服务。,四、中断嵌套方式,仅用于多个8259A级连时的主8259A。,D.,主8259A,IR0IR1IR2IR3IR4IR5IR6IR7,一般嵌套方式:从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应,特殊嵌套方式:因主片不封锁从片的INT,故级别高的IR0-IR2中断可以得到响应。(但IR3-IR7仍被本从片封锁),C.,假定IR3发生中断,并获得服务,一般嵌套方式:IR4的中断被服务时,这些中断将被封锁。,B.,特殊嵌套方式:IR4的中断被服务时,只封锁IR5-IR7。,A.,INT,E.,从8259A,INT,IR0IR1IR2IR3IR4IR5IR6IR7,一般全嵌套方式与特殊全嵌套方式的区别,去CPU,五、中断结束处理方式,当某一IRi中断被服务时,ISR中的相应位ISRi=1。当服务结束后,则必须清零该ISRi位。使ISRi=0是通过向8259A发出中断结束命令(EOI命令)实现的。三种EOI命令自动EOI(AEOI)(自动EOI方式)非指定EOI(NSEOI)(正常EOI方式)指定EOI(SEOI)(特殊EOI方式),AEOI:在第2个/INTA结束时,由8259A使ISRi自动复位;因不保留当前正在服务的中断的状态,故AEOI不能用于中断嵌套方式NSEOI:由CPU发出正常EOI命令,该EOI命令使ISRi=1的位中优先级最高的那一位复位。用于普通全嵌套方式SEOI:由CPU发出一条SEOI命令,该EOI命令中指出了所要复位的ISR的位号。 用于特殊屏蔽方式,特殊全嵌套方式下的EOI处理只有当从8259A的中断全部处理完后,才能向主8259A发EOI命令。,六、级联工作方式,单片8259A可支持8个中断源;采用多片8259A级联,可最多支持64个中断源。 n片8259A可支持8*(n-1)+8-(n-1)=7n+1个中断源;级联时只能有一片8259A为主片,其余的均为从片;涉及到的8259A引脚包括:CAS0 - CAS2SP/ENIRiINT,级连电路连接方法,主片、从片有不同的地址;主片、从片分别进行编程。,6.5.4 8259A的编程使用,8259A的控制命令分为 初始化命令字ICW ICW1ICW4 向8259A写入ICW的过程称为初始化编程 操作命令字OCW OCW1OCW3 向8259A写入OCW的过程称为操作方式编程,8259A内部寄存器的寻址方法,需要/CS、A0、/RD、/WR和D4、D3的配合内部寄存器的访问方法如下表:,8259A的初始化顺序,8259的初始化流程注意次序不可颠倒!,8259A的控制命令字,初始化8259A必须从ICW1开始写ICW1意味着重新初始化8259A写入ICW1后,8259A的状态如下:清除ISR和IMR(全0);将中断优先级设成初始状态:IR0最高,IR7最低;设定为一般屏蔽方式;采用非自动中断结束方式;状态读出逻辑预置为读IRR。,ICW1初始化字,LTIM: 触发方式=1 高电平触发=0 上升沿触发SNGL: 级连控制=1 单片=0 级连IC4: ICW4控制=1 要写ICW4=0 不写ICW4(默认ICW4为全0),A0 D7D6 D5 D4 D3 D2 D1 D0 0 x x x 1 LTIM x SNGL IC4,如要求上升沿触发、单片8259A,写ICW4,则ICW1 = ?,Single ?,Level Triggered Mode ?,00010011B=13H,ICW2中断向量码,T7T3: 中断向量码的高5位T2T0: 最低3位为中断源的序号IRn 000111分别对应IR0IR7 由8259A根据中断源的序号自动填入 例如:若ICW2命令字为48H,则IR0的中断向量码为48H,IR7的中断向量码为4FH,等等。,A0 D7D6 D5 D4 D3 D2 D1 D0 1 T7 T6 T5 T4 T3 x x x,ICW3级连控制字,主片的级联控制字 Si=1 对应IRi线上连接了从片,A0 D7D6 D5 D4 D3 D2 D1 D0 1 S7 S6 S5 S4 S3 S2 S1 S0,从片的级联控制字 ID2ID0 标识码,说明本从片连接到主片的哪个IR引脚上。 000111分别对应IR0IR7。,A0 D7D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 0 ID2 ID1 ID0,ICW3级连控制字(续),ICW3必须与主从片的实际连接关系一致:例如,主片的IR4与唯一从片的INT线连接,则主片的ICW3=10H,从片的ICW3=04H。中断响应时,主片通过级连线CAS2-CAS0送出被允许中断的从片标识码,各从片用自己的ICW3与CAS2-CAS0比较,二者一致的从片才可发送中断向量码。,ICW4中断结束方式字,SFNM: 特殊全嵌套1 特殊全嵌套方式0 一般全嵌套方式AEOI: 自动EOI1 自动EOI方式0 非自动EOI方式,A0 D7D6 D5 D4 D3 D2 D1 D0 1 0 0 0 SFNMBUF M/S AEOI 1,Master / Slave ?,Special Full Nested?,OCW1中断屏蔽字,Mi=1 中断请求线IRi被屏蔽(不允许中断) =0 允许该IRi中断 OCW1将写入IMR寄存器。A0=1时读OCW1可读出设置的IMR内容。,A0 D7D6 D5 D4 D3 D2 D1 D0 1 M7 M6 M5 M4 M3 M2 M1 M0,OCW2中断结束和优先级循环,L2L0: 优先级编码R: 优先级自动循环吗?SL: 指定优先级吗?EOI: 结束中断命令(非AEOI方式) R SL EOI 0 0 1 非指定EOI 命令(NSEOI),全嵌套方式 0 1 1 指定EOI 命令(SEOI),全嵌套方式,按L2-L0编码复位ISR 1 0 1 NSEOI 命令,优先级自动循环 1 0 0 自动EOI,设置优先级自动循环 0 0 0 自动EOI,取消优先级自动循环(固定优先级) 1 1 1 SEOI 命令,按L2-L0编码循环优先级(L2-L0设为最低优先级) 1 1 0 按L2-L0编码循环优先级(L2-L0设为最低优先级),A0 D7D6 D5 D4 D3 D2 D1 D0 0 R SL EOI 0 0 L2 L1 L0,OCW3屏蔽方式和读出控制字,ESMM: 允许使能特殊屏蔽方式SMM: 特殊屏蔽方式ESMM SMM1 1 特殊屏蔽方式置位1 0 特殊屏蔽方式复位0 x 非特殊屏蔽方式P(Polling): =1 查询方式 =0 非查询方式,A0 D7D6 D5 D4 D3 D2 D1 D0 0 0 ESMM SMM 0 1 P RR RIS,RR: 读寄存器RIS: ISR/IRR选择RR RIS1 1 读ISR1 0 读IRR0 x 无效,Enable Special Mask Mode?,Read Register?,Read Interrupt Service register?,查询方式允许8259A不工作于中断方式,而是以查询方式工作。CPU先写一个D2=1的OCW3,再对同一地址读入,即可得到如下状态字节: I x x x x R2 R1 R0 I=1表示有中断请求,最高优先级中断请求号为R2-R0 此查询步骤可反复执行,以响应多个同时发生的中断。 读IRR/ISR:写入此命令后,随后再对同一地址读,即可得到IRR或ISR的内容。,8259A应用,在IR0端输入脉冲,产生中断,查看寄存器AX的内容。,8259A应用举例1,CODE SEGMENTASSUME CS:CODE ORG 100HSTART:MOV DX,3F0H MOV AX,13H;ICW1 OUT DX,AX MOV DX,3F2H MOV AL,80H;ICW2 OUT DX,AX MOV AX,01 OUT DX,AX;ICW4 MOV AX,0 OUT DX,AX;OCW1 ;SET INT ENABLE,MOV AX,0MOV DS,AXMOV SI,200HMOV AX,OFFSET HINTMOV DS:SI,AXADD SI,2MOV DS:SI,0100H MOV AX,0 STIWAITING:CMP AX,55H JNE WAITING NOP JMP START,HINT:MOV AX,55H NOP CLI IRETCODE ENDSEND START,中断服务程序,中断的触发方式 中断向量 IR0的中断入口地址如何得到? 中断服务程序的功能,问题:,8259A应用举例2,编写程序,要求CPU在执行连接到8259A上的IR3中断源的中断服务程序时,能响应比IR3级别低的中断申请。,;IR3中断服务程序;执行IR3中断处理CLI ;关中断MOV DX,04A2HIN AL,DX ;读原来屏蔽字OR AL,08H ;屏蔽IR3OUT DX,AL ;设置OCW1MOV DX,04A0H MOV AL,68H ;设置OCW3OUT DX,AL ;设置特殊屏蔽方式STI ;开中断。 ; 此间可响应比IR3 ;低的中断。,;接上面程序CLIMOV DX,4A0HMOV AL,48HOUT DX,AL ;取消特殊屏蔽方式MOV DX,4A2HIN AL,DXAND AL,0F7HOUT DX,AL ;取消对IR3的屏蔽MOV DX,4A0HMOV AL,20HOUT DX,AL ;发中断结束命令STI ;开中断IRET,8259A编程举例,按以下要求初始化8259A:接口地址为20H和21H;中断为上升沿触发;单片8259A;不写ICW4;与IR0-IR3对应的中断向量码为08H-0BH;IR4-IR7不使用。根据要求,各初始化参数及工作参数如下:ICW1 = 00010010 = 12HICW2 = 08H 中断向量码 OCW1 = 11110000 = 0F0H 中断屏蔽字,INIT8259A:MOVDX,20H;A0=0,写ICW1MOVAL,12H;上升沿触发,单片,不写ICW4OUTDX,ALMOVDX,21H;A0=1,写ICW2,OCW1MOVAL,08H;ICW2OUTDX,ALMOVAL,0F0H;OCW1:屏蔽IR4-IR7OUTDX,AL,初始化程序如下:,IBM PC/XT 中8259A的应用,在IBMPC/XT中使用单片8259A,地址为20H、21H。边沿触发,需要写入ICW4。故ICW1=000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论