微机原理与接口技术(第3版)课件 第8章 中断技术与可编程中断控制器8259A-part2_第1页
微机原理与接口技术(第3版)课件 第8章 中断技术与可编程中断控制器8259A-part2_第2页
微机原理与接口技术(第3版)课件 第8章 中断技术与可编程中断控制器8259A-part2_第3页
微机原理与接口技术(第3版)课件 第8章 中断技术与可编程中断控制器8259A-part2_第4页
微机原理与接口技术(第3版)课件 第8章 中断技术与可编程中断控制器8259A-part2_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

微机原理与接口技术第8章中断技术与可编程中断控制器8259A目录8.1中断的基本概念及其应用8.2中断系统的功能和中断优先级8.38086/8088的中断操作与响应8.4可编程中断控制器8259A8.58259A的应用举例3主要内容8259A的主要功能结构8259A的工作过程8259A的中断管理8.4可编程中断控制器8259A8259A的编程8259A的主要功能结构48.4可编程中断控制器8259A8259A的主要功能1片8259A可以管理8级中断,且可以多片级联,最多可以用9片构成64级的主从式中断管理。对任何一级中断都可以单独屏蔽。可以通过编程,使8259A工作在不同方式下,使用灵活。能根据编程提供中断源的中断类型码。8259A的主要功能结构58.4可编程中断控制器8259A8259A的引脚及功能中断请求中断响应数据线中断请求输入VCCA0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS28259A28272625242322212019181716151234567891011121314CSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GND8259A的主要功能结构68.4可编程中断控制器8259A8259A的引脚及功能级联信号从设备编程/缓冲器允许引脚内部寄存器选择。A0=0:ICW1,OCW2,OCW3A0=1:ICW2~ICW4,OCW1片选信号读、写信号VCCA0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS28259A28272625242322212019181716151234567891011121314CSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GND8259A的主要功能结构78.4可编程中断控制器8259A8259A的内部结构IR0IR1IR2IR3IR4IR5IR6IR7数据总线缓冲读/写控制逻辑级联缓冲比较控制电路初始化命令寄存器组操作命令寄存器组内部控制逻辑中断服务寄存器(ISR)中断优先级分析器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)D7~D0CAS0CAS1CAS2CSRDWRA0SP/ENINTINTA内部数据总线888位的寄存器,用来接收来自IR0~IR7上的中断请求输入信号,当收到请求信号时就在IRR的相应位置位。外设产生中断请求的方式有两种:一种是边沿触发方式,另一种是电平触发方式。用户可根据需要通过编程来设置。010010018259A的主要功能结构88.4可编程中断控制器8259A8259A的内部结构IR0IR1IR2IR3IR4IR5IR6IR7数据总线缓冲读/写控制逻辑级联缓冲比较控制电路初始化命令寄存器组操作命令寄存器组内部控制逻辑中断服务寄存器(ISR)中断优先级分析器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)D7~D0CAS0CAS1CAS2CSRDWRA0SP/ENINTINTA内部数据总线88存放对中断请求的屏蔽信息。软件编程使得IMR的某位为“1”时,相应IRR中的中断请求被屏蔽;反之允许相应IRR中的中断请求进入中断优先级判别器PR。010010010000000101001000IR6IR38259A的主要功能结构98.4可编程中断控制器8259A8259A的内部结构IR0IR1IR2IR3IR4IR5IR6IR7数据总线缓冲读/写控制逻辑级联缓冲比较控制电路初始化命令寄存器组操作命令寄存器组内部控制逻辑中断服务寄存器(ISR)中断优先级分析器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)D7~D0CAS0CAS1CAS2CSRDWRA0SP/ENINTINTA内部数据总线88存放正在服务的中断源级别,当某个中断被响应后,CPU发出第一个INTA信号,ISR中的相应位置“1”,一直被保存到该中断处理结束。当多重中断时,ISR的多位同时被置1。00000010IR18259A的主要功能结构108.4可编程中断控制器8259A8259A的内部结构IR0IR1IR2IR3IR4IR5IR6IR7数据总线缓冲读/写控制逻辑级联缓冲比较控制电路初始化命令寄存器组操作命令寄存器组内部控制逻辑中断服务寄存器(ISR)中断优先级分析器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)D7~D0CAS0CAS1CAS2CSRDWRA0SP/ENINTINTA内部数据总线88对IRR保持的各中断请求(已屏蔽的除外)进行优先权判别,并在CPU的中断响应周期将其送ISR。在出现多重中断时,由PR判定是否允许所出现的中断去打断正在处理的中断,让优先级更高的中断优先处理。01001000

IR6IR3

00000010IR1>新的中断请求优先级低,不被响应8259A的主要功能结构118.4可编程中断控制器8259A8259A的内部结构IR0IR1IR2IR3IR4IR5IR6IR7数据总线缓冲读/写控制逻辑级联缓冲比较控制电路初始化命令寄存器组操作命令寄存器组内部控制逻辑中断服务寄存器(ISR)中断优先级分析器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)D7~D0CAS0CAS1CAS2CSRDWRA0SP/ENINTINTA内部数据总线8801001000

IR6IR3

10000000<10001000中断嵌套IR3IR78259A的主要功能结构128.4可编程中断控制器8259A8259A的内部结构ISR寄存器中断屏蔽寄存器IMR中断请求优先级编码器中断请求寄存器IRR比较器B0B1B2A>BA0A1A2ISR编码ISR7ISR6ISR5ISR4ISR3ISR2ISR1ISR0INTD0……D7IR0IR1IR2IR3IR4IR5IR6IR7优先级裁决过程工作原理图10010010100000000001001010110000001011001000000000018259A的主要功能结构138.4可编程中断控制器8259A8259A的内部结构按照编程所设置的工作方式来管理8259A的工作。在IRR中有未被屏蔽的中断请求位时,它输出高电平的INT信号向CPU申请中断。在中断响应期间,它使ISR的相应位置位,并控制向CPU发送相应的中断类型码。在中断服务结束时,它按照编程指定的方式进行结束处理。IR0IR1IR2IR3IR4IR5IR6IR7数据总线缓冲读/写控制逻辑级联缓冲比较控制电路初始化命令寄存器组操作命令寄存器组内部控制逻辑中断服务寄存器(ISR)中断优先级分析器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)D7~D0CAS0CAS1CAS2CSRDWRA0SP/ENINTINTA内部数据总线88中断类型码8259A的主要功能结构148.4可编程中断控制器8259A8259A的内部结构IR0IR1IR2IR3IR4IR5IR6IR7数据总线缓冲读/写控制逻辑级联缓冲比较控制电路初始化命令寄存器组操作命令寄存器组内部控制逻辑中断服务寄存器(ISR)中断优先级分析器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)D7~D0CAS0CAS1CAS2CSRDWRA0SP/ENINTINTA内部数据总线888位的双向三态缓冲器,用作8259A与系统数据总线的接口。用来传输初始化命令字、操作命令字、状态字和中断类型码。8259A的主要功能结构158.4可编程中断控制器8259A8259A的内部结构IR0IR1IR2IR3IR4IR5IR6IR7数据总线缓冲读/写控制逻辑级联缓冲比较控制电路初始化命令寄存器组操作命令寄存器组内部控制逻辑中断服务寄存器(ISR)中断优先级分析器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)D7~D0CAS0CAS1CAS2CSRDWRA0SP/ENINTINTA内部数据总线88

它接收来自CPU的读/写命令,完成规定的操作。具体动作由片选信号CS,地址输入信号A0,以及读(RD)和写(WR)信号共同控制。8259A的主要功能结构168.4可编程中断控制器8259A8259A的内部结构IR0IR1IR2IR3IR4IR5IR6IR7数据总线缓冲读/写控制逻辑级联缓冲比较控制电路初始化命令寄存器组操作命令寄存器组内部控制逻辑中断服务寄存器(ISR)中断优先级分析器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)D7~D0CAS0CAS1CAS2CSRDWRA0SP/ENINTINTA内部数据总线88CAS0~CAS2是8259A相互间连接用的专用总线,用来构成8259A的主−从式级联控制结构。SP/EN:在缓冲方式下产生总线启动信号,以控制总线缓冲器的接收和发送.

在非缓冲方式下,控制主片(高)和从片(低)8259A的主要功能结构178.4可编程中断控制器8259A8259A的内部结构若要CPU不响应可屏蔽中断,可以通过CPU的

寄存器中的

来实现。还可以通过设置中断控制器中的

寄存器来实现。当希望系统中有的可屏蔽中断被响应,有的不被响应,只能通过设置

来实现。8259A中断请求触发器(IRRi)IRi中断屏蔽触发器(IMRi)CPU中断逻辑开/关中断IF(中断允许触发器)101IF=1开中断可屏蔽中断IRi能被响应8259A的主要功能结构188.4可编程中断控制器8259A8259A的内部结构若要CPU不响应可屏蔽中断,可以通过CPU的

寄存器中的

来实现。还可以通过设置中断控制器中的

寄存器来实现。当希望系统中有的可屏蔽中断被响应,有的不被响应,只能通过设置

来实现。8259A中断请求触发器(IRRi)IRi中断屏蔽触发器(IMRi)CPU中断逻辑开/关中断IF(中断允许触发器)101IF=0关中断所有可屏蔽中断请求均被屏蔽8259A的主要功能结构198.4可编程中断控制器8259A8259A的内部结构若要CPU不响应可屏蔽中断,可以通过CPU的

寄存器中的

来实现。还可以通过设置中断控制器中的

寄存器来实现。当希望系统中有的可屏蔽中断被响应,有的不被响应,只能通过设置

来实现。8259A中断请求触发器(IRRi)IRi中断屏蔽触发器(IMRi)CPU中断逻辑开/关中断IF(中断允许触发器)110IF=1开中断中断请求IRi被屏蔽标志IF位IMRIMR8259A的主要功能结构208.4可编程中断控制器8259A8259A的内部结构若要CPU不响应可屏蔽中断,可以通过CPU的

寄存器中的

来实现。还可以通过设置中断控制器中的

寄存器来实现。当希望系统中有的可屏蔽中断被响应,有的不被响应,只能通过设置

来实现。标志IF位IMRIMR标志寄存器的IF位相当于一个总开关,控制着所有可屏蔽中断是开放(IF=1)还是屏蔽(IF=0)IMR寄存器的每一位相当于一个分开关,独立控制单个可屏蔽中断是开放(IMRi=0)还是屏蔽(IMRi=1)。使用中断控制器的系统中,某个可屏蔽中断如果要被响应,两级“开关”都要开放中断。21主要内容8259A的主要功能结构8259A的工作过程8259A的中断管理8.4可编程中断控制器8259A8259A的编程8259A的工作过程228.4可编程中断控制器8259A单片8259A的工作过程IR7IR6IR5IR4IR3IR2IR1IR0中断服务寄存器(ISR)中断优先级分析器(PR)D7~D0高位地址线IOWA0INTINTA8中断请求寄存器(IRR)D7~D0A0WRIORRDCSINTAINTR中断屏蔽寄存器(IMR)总线初始化命令寄存器组操作命令寄存器组8259A注:8086此为A1,8086的A0=0。8259A的工作过程238.4可编程中断控制器8259A单片8259A的工作过程IR7IR6IR5IR4IR3IR2IR1IR0中断服务寄存器(ISR)中断优先级分析器(PR)D7~D0高位地址线IOWA0INTINTA8中断请求寄存器(IRR)D7~D0A0WRIORRDCSINTAINTR中断屏蔽寄存器(IMR)初始化命令寄存器组操作命令寄存器组(1)中断源通过IR0~IR7向8259A发中断请求,使得IRR的相应位置位。01000010总线8259A8259A的工作过程248.4可编程中断控制器8259A单片8259A的工作过程IR7IR6IR5IR4IR3IR2IR1IR0中断服务寄存器(ISR)中断优先级分析器(PR)D7~D0IOWA0INTINTA8中断请求寄存器(IRR)D7~D0A0WRIORRDCSINTAINTR中断屏蔽寄存器(IMR)总线初始化命令寄存器组操作命令寄存器组8259A(2)若此时IMR中的相应位为0,即该中断请求没有被屏蔽,则进入优先级排队。8259A分析这些请求,若条件满足,则通过INT向CPU发中断请求010000100100000000000000高位地址线当前无中断服务程序在执行。000000108259A的工作过程8.4可编程中断控制器8259A单片8259A的工作过程IR7IR6IR5IR4IR3IR2IR1IR0中断服务寄存器(ISR)中断优先级分析器(PR)D7~D0IOWA0INTINTA8中断请求寄存器(IRR)D7~D0A0WRIORRDCSINTAINTR中断屏蔽寄存器(IMR)总线初始化命令寄存器组操作命令寄存器组8259A(3)

CPU接收到中断请求信号后,如果满足条件,则进入中断响应,通过INTA引脚发出两个连续负脉冲。010000100100000000000000高位地址线000000108259A的工作过程8.4可编程中断控制器8259A单片8259A的工作过程26IR7IR6IR5IR4IR3IR2IR1IR0中断服务寄存器(ISR)中断优先级分析器(PR)D7~D0IOWA0INTINTA8中断请求寄存器(IRR)D7~D0A0WRIORRDCSINTAINTR中断屏蔽寄存器(IMR)总线初始化命令寄存器组操作命令寄存器组8259A(3)8259A收到第一个INTA时,做如下动作:010000100100000000000000①使IRR的锁存功能失效,到第二个INTA时再有效。第一个高位地址线000000108259A的工作过程8.4可编程中断控制器8259A单片8259A的工作过程27IR7IR6IR5IR4IR3IR2IR1IR0中断服务寄存器(ISR)中断优先级分析器(PR)D7~D0IOWA0INTINTA8中断请求寄存器(IRR)D7~D0A0WRIORRDCSINTAINTR中断屏蔽寄存器(IMR)总线初始化命令寄存器组操作命令寄存器组8259A010000100100000000000000②使ISR的相应位置位,表示已为该中断请求服务。00000010第一个高位地址线00000010(3)8259A收到第一个INTA时,做如下动作:8259A的工作过程8.4可编程中断控制器8259A单片8259A的工作过程28IR7IR6IR5IR4IR3IR2IR1IR0中断服务寄存器(ISR)中断优先级分析器(PR)D7~D0IOWA0INTINTA8中断请求寄存器(IRR)D7~D0A0WRIORRDCSINTAINTR中断屏蔽寄存器(IMR)总线初始化命令寄存器组操作命令寄存器组8259A0100001001000000③使IRR相应位清0,表明对应的中断请求被响应。0000001001000000第一个高位地址线(3)8259A收到第一个INTA时,做如下动作:8259A的工作过程8.4可编程中断控制器8259A单片8259A的工作过程29IR7IR6IR5IR4IR3IR2IR1IR0中断服务寄存器(ISR)中断优先级分析器(PR)D7~D0IOWA0INTINTA8中断请求寄存器(IRR)D7~D0A0WRIORRDCSINTAINTR中断屏蔽寄存器(IMR)总线初始化命令寄存器组操作命令寄存器组8259A(3)8259A收到第二个INTA时,做如下动作:01000000①把中断类型码送往数据总线。0000001001000000第二个中断类型码高位地址线8259A的工作过程8.4可编程中断控制器8259A单片8259A的工作过程30IR7IR6IR5IR4IR3IR2IR1IR0中断服务寄存器(ISR)中断优先级分析器(PR)D7~D0IOWA0INTINTA8中断请求寄存器(IRR)D7~D0A0WRIORRDCSINTAINTR中断屏蔽寄存器(IMR)总线初始化命令寄存器组操作命令寄存器组8259A01000000②如果8259A工作在中断自动结束方式,此时将清零ISR的相应位。0000001001000000第二个00000000高位地址线(3)8259A收到第二个INTA时,做如下动作:8259A的工作过程8.4可编程中断控制器8259A单片8259A的工作过程31IR7IR6IR5IR4IR3IR2IR1IR0中断服务寄存器(ISR)中断优先级分析器(PR)D7~D0IOWA0INTINTA8中断请求寄存器(IRR)D7~D0A0WRIORRDCSINTAINTR中断屏蔽寄存器(IMR)总线初始化命令寄存器组操作命令寄存器组8259A01000000③如果8259A工作在非中断自动结束方式,此时不清零ISR的任何位,只有在中断服务结束时发出中断结束命令才会使ISR中的相应位清零。0000001001000000第二个高位地址线(3)8259A收到第二个INTA时,做如下动作:8259A的工作过程8.4可编程中断控制器8259A单片8259A的工作过程32中断类型码n第一响应周期第二响应周期T1T2T3T4T1T2T3T4CLKALEINTAD7-D0初始化接口IRR锁存失效,不接收新的请求当前最高的ISR置位(响应中断)IRR相应位清零接口送出nCPU读入nIRR锁存有效,接收新的请求ICW2→D7~D0(中断类型码)若ICW4D1=1(中断自动结束方式),则相应ISR位自动清0。硬件中断时序8259A的工作过程8.4可编程中断控制器8259A级联使用时:示例:一个由3片8259A组成的级联系统至少要2片8259A(1片主片,1片从片),可管理15级外部中断。最多允许9片8259A级联(其中1片为主片,8片从片),可管理64级中断。

多片8259A级联的工作过程8259A的工作过程8.4可编程中断控制器8259A主IR0~IR2>从A的IR0~IR7>主IR4~IR5>从B的IR0~IR7>主IR78259A从片ACSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0…………GND8259A从片BCSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0…………GND8259A主控制器CSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0……3VCC地址总线译码译码译码控制总线数据总线中断申请(输出)62154id:011id:110多片8259A级联的工作过程8259A的工作过程8.4可编程中断控制器8259A级联时,从片上中断源的请求与响应过程:从片上的中断源通过IR0~IR7向从8259A发中断请求,使得IRR的相应位置位。IRR00000001多片8259A级联的工作过程8259A的工作过程8.4可编程中断控制器8259A多片8259A级联的工作过程若此时IMR中的相应位为0,即该中断请求没有被屏蔽,则进入优先级排队。8259A分析这些请求,若条件满足,则通过INT向主8259A发中断请求。IRR00000001IRR00001000IMRxxxxxxx08259A的工作过程8.4可编程中断控制器8259A多片8259A级联的工作过程

主8259A收到请求后若满足条件则通过INT向CPU发中断请求。8259A的工作过程8.4可编程中断控制器8259A多片8259A级联的工作过程

CPU接收到中断请求信号后,如果满足条件,则进入中断响应,通过INTA引脚发出两个连续负脉冲,该INTA信号送给所有的8259A。8259A的工作过程8.4可编程中断控制器8259A多片8259A级联的工作过程在各8259A收到第一个INTA时,使各自的IRR的锁存功能失效(目的是防止此时再来中断导致中断响应的错误),到第二个INTA时再有效。8259A的工作过程8.4可编程中断控制器8259A多片8259A级联的工作过程主片收到第一个INTA后使对应的ISR位置,并通过CAS0~CAS2输出当前被响应的中断源所属从片的设备代码ID。8259A从片ACSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0…………GND8259A从片BCSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0…………GND8259A主控制器CSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0……3VCC地址总线译码译码译码控制总线数据总线中断申请(输出)62154011BISR000010008259A的工作过程8.4可编程中断控制器8259A多片8259A级联的工作过程

每个从片均收到这一设备代码并和自身的代码进行比较。8259A从片ACSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0…………GND8259A从片BCSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0…………GND8259A主控制器CSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0……3VCC地址总线译码译码译码控制总线数据总线中断申请(输出)62154011B8259A的工作过程8.4可编程中断控制器8259A多片8259A级联的工作过程8259A从片ACSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0…………GND8259A从片BCSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0…………GND8259A主控制器CSSP/ENINTAINTCAS0CAS1CAS2A0IR7IR0IR7IR0……3VCC地址总线译码译码译码控制总线数据总线中断申请(输出)62154011B与主片送出的代码一致的从片则清零被响应的中断源的IRR位,置位被响应的中断源的ISR位,并做好把自身被响应的中断源的类型码送到数据总线的准备。IRR0000000100000000ISR00000001中断类型码n8259A的工作过程8.4可编程中断控制器8259A多片8259A级联的工作过程在第二个INTA脉冲有效期间,由被选中的从8259A将中断类型码送上数据总线。CPU在中断响应周期的第二周期读取类型码,并生成中断向量表的地址,然后从向量表中读出中断向量转入相应的中断服务程序。中断类型码n8259A的工作过程8.4可编程中断控制器8259A多片8259A级联的工作过程中断类型码n第一响应周期第二响应周期T1T2T3T4T1T2T3T4CLKALEINTAD7-D0初始化接口IRR锁存失效,不接收新的请求当前最高的ISR置位(响应中断)IRR相应位清零级联CAS2~0主片→从片接口送出nCPU读入nIRR锁存有效,接收新的请求ICW2→D7~D0(主片,从片)若ICW4

的D1=1(中断自动结束方式),则相应ISR位自动清0。硬件中断时序8259A的工作过程8.4可编程中断控制器8259A若有40个外部中断请求信号,至少需要

片8259A中断控制器来管理。85+(85)1

=43个(6片)从片主片84+(84)1

=36个(5片)从片主片6典型题:已知8259A片数,求在级联方式下最多管理几级中断。已知中断源个数,求最少需要多少片8259A来管理。主要内容8259A的主要功能结构8259A的工作过程8259A的中断管理8.4可编程中断控制器8259A8259A的编程难点8259A的中断管理8.4可编程中断控制器8259A中断优先级管理1中断结束管理2中断嵌套管理3中断屏蔽管理4中断优先级管理8.4.38259A的中断管理固定优先级方式8259A复位后自动处于固定优先级方式,8个中断源的优先级别是固定的,依次为IR0>IR1>IR2>IR3>IR4>IR5>IR6>IR7。循环优先级方式设置为此方式后瞬时优先级为IR0>IR1>IR2>IR3>IR4>IR5>IR6>IR7,一旦某中断源的请求被响应后它就变成最低优先级,它的下一级上升为最高优先级。当前正在服务IR2被响应后,优先级顺序为:IR3>IR4>IR5>IR6>IR7>IR0>IR1>IR2

中断优先级管理8.4.38259A的中断管理特殊循环优先级方式在设置8259A为循环优先级的同时,还指明循环起始时的最低优先级。查询排序优先级方式一般用于中断级数多于64级的场合。由程序读取8259A的查询字来判断该8259A的中断源是否有请求。指明IR4优先级最低后,优先级顺序为:IR5>IR6>IR7>IR0>IR1>IR2>IR3>IR4新的中断请求IR2被响应后,优先级顺序为:IR3>IR4>IR5>IR6>IR7>IR0>IR1>IR2

8259A的中断管理8.4可编程中断控制器8259A中断优先级管理1中断结束管理2中断嵌套管理3中断屏蔽管理4中断结束管理8.4.38259A的中断管理自动结束方式一般结束方式由CPU向8259A的偶地址(A0=0)写入一个一般的EOI命令来实现,一旦写入该命令字,ISR中为1的位中的最高优先权的ISR位就被清零,从而结束了本级中断服务。在中断响应的第2周期中的INTA的后沿就自动清零ISR中的最高优先级位。这种结束方式不能用于中断嵌套管理。为什么?p196一般在中断服务程序结束之前发出EOI命令。特殊结束方式通过向8259A的偶地址写入一个特殊的EOI命令来实现,这个命令字特殊在清零指定的ISR位,而不是象一般的EOI命令直接清零ISR中的最高优先权的ISR为1的位。用于非完全嵌套方式。中断结束管理8.4.38259A的中断管理三种方式对比不同点自动结束方式一般结束方式特殊结束方式清零的时机在中断响应周期的第二个INTA下降沿中断服务程序结束之前中断服务程序结束之前清零的ISR位优先级最高的优先级最高的指定位8259A的中断管理8.4可编程中断控制器8259A中断优先级管理1中断结束管理2中断嵌套管理3中断屏蔽管理4中断嵌套管理8.4.38259A的中断管理完全嵌套方式8259A复位后自动处于这种方式,8259A按默认优先级管理中断,即优先级为IR0>IR1>……>IR7;在该方式下,高级中断可以中断低级中断,低级或同级中断不能被响应。当一个服务结束时必须通过中断结束命令(用一般的EOI命令即可)清零该中断源所对应的在服务寄存器的ISR位。高级中断可打断正在处理的低级中断,优先处理更高级的中断。中断嵌套管理8.4.38259A的中断管理例:

设某系统只用了1片8259A,初始化时设置为完全嵌套,一般结束方式,并设当前所有的ISR和IMR均为零。假设系统在执行主程序时,首先在IR2和IR4引脚上同时出现中断请求。然后IR1引脚上又有中断请求。56主程序初始化STIIR2,IR4有请求ISR2=1IR2中断处理程序

IR1有请求,开中断后才能被响应

STIIR1中断处理程序(嵌套)

STI

ISR1=1中断结束命令ISR1被清零IRET返回IR2中断处理程序中断结束命令ISR2被清零ISR4=1IR4中断处理程序(嵌套)STI中断结束命令IRET返回IR2中断处理程序

IRETISR4被清零返回主程序IRR00000000ISR000000000001010000000100000100000001001000000110000100000000010000000000000100000000000000000000为什么低优先级的IR4可以打断高优先级的IR2的执行?提前发出了中断结束命令中断嵌套管理8.4.38259A的中断管理结论进入中断处理程序后,只有执行STI指令,才能允许其他可屏蔽中断处理程序进行嵌套。进入中断处理程序后,如果STI指令使IF为1,但未用OCW2清零对应的ISR位,这种情况下,会允许比本中断优先级高的中断进入,形成符合优先级规则的嵌套。如果在STI指令之后,接着用OCW2命令清零了相应的ISR位,但中断处理过程并没有结束,这种情况下,中断嵌套就未必按优先级规则进行了。IR4的响应②要在正确的位置使用中断结束命令,且不能使用中断自动结束方式。要实现中断嵌套:①必须在中断服务程序中开中断。IR1的响应中断嵌套管理8.4.38259A的中断管理●在主程序中如允许响应可屏蔽中断,必须执行开中断指令使IF为1。●每当进入一个中断处理程序时,系统会自动关中断,所以只有在中断处理程序中再次开放中断,才有可能被较高级的可屏蔽中断嵌套。注意

每个中断处理程序结束时,必须执行中断结束命令,清零对应的ISR位,才能返回断点。否则,将阻止同级和低级中断被响应。59主程序初始化STIIR2,IR4有请求ISR2=1IR2中断处理程序

IR1有请求,开中断后才能被响应

STIIR1中断处理程序(嵌套)

STI

ISR1=1中断结束命令ISR1被清零IRET返回IR2中断处理程序中断结束命令ISR2被清零ISR4=1IR4中断处理程序STI中断结束命令IRET返回主程序

IRETISR4被清零返回主程序中断结束命令放在中断服务程序结束处正确的执行顺序中断嵌套管理8.4.38259A的中断管理特殊全嵌套方式用于级联方式下主片的管理。

例:某计算机系统由2片8259A构成主从式中断管理系统,主片IR4端接有1个从片,若从片上有1个中断源(IR6)的中断正在被CPU处理,则主片的ISR4=1,从片的ISR6=1。在处理从片的IR6中断时,该从片上又有高级别的中断源IR0请求服务。中断嵌套管理8.4.38259A的中断管理方案A:完全嵌套方式级联情况下的中断管理。00000000从片(完全嵌套方式)IRR00000010ISRIR0IR1IR2IR3IR4IR5IR6IR7优先级排队电路INTIR40000000主片(完全嵌套方式)IRR00001000ISR优先级排队电路INT去CPU的INTR0从片的IR6被服务的情况中断嵌套管理8.4.38259A的中断管理00000000从片(完全嵌套方式)IRR00000010ISRIR0IR1IR2IR3IR4IR5IR6IR7优先级排队电路INTIR40000000主片(完全嵌套方式)IRR00001000ISR优先级排队电路INT去CPU的INTR0从片的IR6被服务时又有IR0请求的情况1对于主片而言,该请求属于同级中断,按全

温馨提示

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

评论

0/150

提交评论