第7章中断控制器(改版)资料课件

上传人:仙*** 文档编号:241679571 上传时间:2024-07-15 格式:PPT 页数:54 大小:1.22MB
返回 下载 相关 举报
第7章中断控制器(改版)资料课件_第1页
第1页 / 共54页
第7章中断控制器(改版)资料课件_第2页
第2页 / 共54页
第7章中断控制器(改版)资料课件_第3页
第3页 / 共54页
点击查看更多>>
资源描述
第第7章章 中断控制器中断控制器 2024/7/1527.1中断基本概念 一、中断和中断源一、中断和中断源2024/7/1537.1中断基本概念中断 CPU接到请求,暂停正在执行的程序而转向请求的处理程序,处理结束后又回到被中止的程序继续执行,这一过程称中断;中断源的分类;内部中断:由处理器内部产生的中断;外部中断:外部设备在中断申请引脚上产生的中断;可屏蔽中断与不可屏蔽中断 可屏蔽中断:能被处理器屏蔽掉而不被响应的中断(INTR)。不可屏蔽中断:不能被处理器屏蔽掉的中断(NMI)。n n二、中断的处理过程二、中断的处理过程2024/7/1547.1中断基本概念中断请求 在INTR上外设给出高电平,1)持续到被CPU响应;2)CPU响应后及时撤消。中断承认(中断响应的条件)满足下列条件进入中断响应周期:a,INTR有中断请求;b,IF=1开中断;c,无RESET、HOLD和NMI或更高级的中断;d,一条指令执行结束。l l 中断响应中断响应2024/7/1557.1中断基本概念(1)关中断:CPU硬件自动清IF(关中断,禁止其它中断)。(2)断点保护:CPU硬件自动将PSW、CS、IP依次压栈,以便中断结束能 够返回断点。(3)中断源识别:1)软件查询(软件做)2)中断向量表(硬件自动做)软件查询方法:CPU收到INTR 读入D0D7 测试哪一位 确 定中断源 对其中断服务。2024/7/1567.1中断基本概念中断响应 (1)保护现场:断点保护未保护的&主程序用的&中断服务也用的 寄存器 堆栈 (2)开中断(指令STI):采用软件查询方法的中断源识别。(3)中断服务:对中断事件的处理。(4)关中断(指令CTI)(5)现场恢复:保护现场的逆过程,堆栈 寄存器 (6)开中断(指令STI):允许新的中断。(7)中断返回(指令IRET):从堆栈中依次弹出IP、CS、PSW,返回 原断点处,断点保护逆过程。2024/7/1577.1中断基本概念多个中断源同时请求中断,先响应中断优先级高的中断优先级 根据各中断源的重要性确定其响应的优先次序。中断优先级控制原则:(1)多个同时请求,先响应高优先级,再响应低优先级;(2)当CPU执行某中断服务程序时,出现新的高优先级请求 中断,则:暂停低 处理高,高服务结束返回低,继续 低服务。n n三、中断优先级及中断嵌套三、中断优先级及中断嵌套三、中断优先级及中断嵌套三、中断优先级及中断嵌套2024/7/1587.28086/8088的中断系统n n 一、中断源2024/7/1597.28086/8088的中断系统n二、中断优先级l除法错、INT n、INTO优先级最高lNMI次之lINTR较低l单步最低n 三、中断源识别l中断类型码 每一中断都有一个表示中断源编号的8位二进制数称中断类 型码(号),从0255,共256个。2024/7/15107.28086/8088的中断系统l中断向量 每一中断类型码对应一个中断向量,该中断向量指明了该类型码所对应的中断服务程序的入口地址l中断向量表 8086/8088系统将内存前1024个单元作为中断向量表,存放256个中断向量,每一中断向量占4个单元,前二字节是中断服务程序入口地址的偏移地址,后二字节是段地址。l中断向量表地址:4*中断类型码n。l中断向量表的中断源识别方法 (1)CPU收到中断请求 获取中断类型码 查中断向量表 得到该中断源的中断服务子程序入口地址 转向服务子程序进行中断服务2024/7/15117.28086/8088的中断系统 (2)查表方法:中断类型码n*4(左移2位)得到表地址从表地址所指单元连续取4个字节数据得到IP、CS该CS:IP即为该中断源的中断服务子程序入口地址2024/7/15127.28086/8088的中断系统【例【例7.2】设用户自定义中断的类型号为24H,已编好的中断服务子程序为ISUB,试完成中断向量表初始化。解:中断向量表存放首地址为24H4,中断服务子程序段地址为SEGISUB,偏移地址为OFFSETISUB。所以中断向量表初始化程序段如下。MOVAX,00HMOVDS,AX;向量表段地址置0000HMOVBX,24HSHLBXSHLBX;向量表存放首址MOVAX,OFFSETISUB;中断服务程序入口偏移MOVBX,AX;偏移地址存入向量表MOVAX,SEGISUB;中断服务子程序MOVBX+2,AX;段地址存入向量表2024/7/15137.28086/8088的中断系统n n 四、中断响应过程l不可屏蔽中断NMI(1)上升沿提出中断请求。(2)不受IF=0的影响。(3)不要中断响应总线周期,自动进入中断类型2。(4)其它同INTR。l内部中断(1)中断类型号或是指令码给出,或由硬件决定,都不要中断响应总线周期。(2)不受IF控制,但单步中断受TF控制。(3)其它同INTR,但要考虑优先级2024/7/15147.28086/8088的中断系统n 五、中断与中断返回指令l中断指令 INTO 测试OF,若OF=1执行中断,否则不操作。INT n 执行中断类型号为n的中断,n=00HFFH。(1)断点保护:SP-2 SP,PSW SP+1:SP;清PSW的 IF与TF;SP-2 SP,CS SP+1:SP;SP-2 SP,IP SP+1:SP。(2)中断源识别与跳转:n*4+1:n*4 IP;n*4+3:n*4+2 CS;程序将自动跳转到CS:IP处执行该中断服务子程序l中断返回指令:IRET 执行中断返回时,CPU自动做恢复断点:SP+1:SP IP,SP+2 SP;SP+1:SP CS,SP+2 SP;SP+1:SP PSW,SP+2 SP2024/7/15157.3可编程中断控制器8259An n 一、外部引线和内部结构l 引脚:D0D7:双向数据线 /WR、/RD:写读控制信号,/CS片选 A0:地址线,选择内部寄存器 INT:中断请求输出 /INTA:中断响应输入线 IR0IR7:是外接中断源输入线。CAS0CAS2:级联时用。SP/EN:作输入是/SP,控制8259作 主片或从 片,1主0从。用作输出是/EN,控制三态门,大系统中用。2024/7/15167.3可编程中断控制器8259Al结构框图中断请求寄存器IRR:存放IR0 IR7中断请求 服务寄存器ISR:存放IR0 IR7中正在服务的源 中断屏蔽寄存器IMR(interrupt mask)4个8位初始化命令字ICW 3个8位操作命令字OCW2024/7/15177.3可编程中断控制器8259An n 二、中断处理过程(1)中断外设在IR0IR7上产生n条中断请求8259,8259将相应的IRR位置1;(2)IRR中断请求+设定的IMR屏蔽 优先级分析器,最高优先级的请求送到INT CPU;(3)CPU收到INT响应:发送连续二个总线周期的/INTA;8259在第一个/INTA,该中断源对应的IRR位复位,ISR位置位,从而禁止较低优先级的中断。8259在第二个/INTA:送出8位的中断类型码 D0D7。(4)8259中断结束 自动结束方式:第二个/INTA结束时ISR复位相应位;非自动方式:收到EOI命令才复位,以开放低级中断申请(5)CPU读取中断类型码查中断向量表转服务子程序2024/7/15187.3可编程中断控制器8259An n 三、中断优先级管理方式l优先级管理(1)固定优先级(完全嵌套排序方式):IR0 IR1 IR7 (2)自动循环优先级(等优先级方式):优先级循环,刚服务过的最低,下一个变为最高。如5级刚服务过,6级变为最高,7级次之。(3)特殊循环优先级:优先级循环,通过命令字指定最低优先级。l屏蔽方式(1)一般屏蔽方式:一个中断请求被响应 8259禁止所有同级、低级的请求 (2)特殊屏蔽方式:解除这种禁止,允许同级、低级的请求,即 IRi被响应 ISR、IMR设置的位对应的IR禁止请求,其他所有级别的IR允许请求2024/7/15197.3可编程中断控制器8259Al中断结束方式(1)非自动EOI:软件发EOI命令字结束 普通EOI:清除ISR中已置位的优先级最高的位,适用于固定优 先级、自动循环优先级;特殊EOI:清除命令字指定的ISR位,适用于所有优先级方式,特别是特殊循环优先级(2)自动EOI:硬件自动EOI CPU响应中断请求后,向8259发连续2个/INTA周期,在第二个 /INTA结束时8259自动执行普通EOI的工作(复位ISRi).l中断触发方式(1)电平触发方式 (2)边沿触发方式2024/7/15207.3可编程中断控制器8259A四、初始化命令字ICWl l 初始化命令字初始化命令字ICW1ICW12024/7/15217.3可编程中断控制器8259A【例例7.3】某8086系统中,使用单片8259A,中断请求信号为高电平触发,需要设置ICW4,8259A端口地址为20H、21H,写出初始化命令字ICW1以及设置ICW1的命令。解:高电平触发、单片8259A以及需要设置ICW4,初始化命令字为00011011B=1BH。写ICW1的命令如下。MOVAL,1BHOUT20H,AL;写ICW1用偶地址2024/7/15微机原理227.3可编程中断控制器8259Al l 初始化命令字初始化命令字ICW2ICW2【例【例7.4】某PC机中有8个可屏蔽中断(IR0IR7),其中IR0的中断类型号为18H,8259A端口地址为20H、21H,请问ICW2是怎样设置的?用指令设置ICW2。解:由于IR0的中断类型号是18H,所以ICW2的内容是00011000B=18H。写ICW2的命令如下。MOVAL,18HOUT21H,AL;写ICW2用奇地址2024/7/15237.3可编程中断控制器8259Al l 初始化命令字初始化命令字ICW3ICW32024/7/15247.3可编程中断控制器8259Al l 初始化命令字初始化命令字ICW4ICW42024/7/15257.3可编程中断控制器8259Al l 初始化命令字的设置过程初始化命令字的设置过程2024/7/15267.3可编程中断控制器8259A【例【例7.5】IBMPC机的ROMBIOS关于8259A的初始化程序段如下。INTA00 EQU20H;8259A偶地址INTA01 EQU21H;8259A奇地址MOVAL,13H;单片8259A,边沿触发,需要ICW4OUTINTA00,ALMOVAL,08H;中断类型号8HOUTINTA01,ALMOVAL,09H;8086/8088,缓冲,从片8259A,非自动结束,正常全嵌套OUTINTA01,AL2024/7/15277.3可编程中断控制器8259A【例例7.6】某微机系统中有8259A,满足下列条件:工作在8086系统,单片8259A,中断请求信号为电平触发。中断类型码为40H47H。中断优先级采用普通全嵌套方式,中断结束采用自动EOI方式,系统中未使用数据缓冲器。系统分配给8259A的端口地址为20H和21H,试对该8259A进行初始化。解:初始化程序如下所示。MOVAL,00011011B;写ICW1OUT20H,ALMOVAL,01000000B;写ICW2OUT21H,ALMOVAL,00000011B;写ICW4OUT21H,AL2024/7/15287.3可编程中断控制器8259A五、操作命令字OCWl l 操作命令字操作命令字OCW1OCW12024/7/15297.3可编程中断控制器8259A五、操作命令字OCW【例例7.7】某微机系统中有8259A,如果要将IR1、IR6两个引脚上的中断请求屏蔽,请问应如何设置OCW1?并用命令写入OCW1。假设地址为20H、21H。解:由于IR1和IR6上的中断请求被屏蔽,所以OCW1的第0位和第6位应该置“1”。OCW1为01000010B。写入程序如下所示。MOVAL,01000010BOUT21H,AL2024/7/15307.3可编程中断控制器8259Al l 操作命令字操作命令字OCW2OCW22024/7/15317.3可编程中断控制器8259A【例例7.8】非自动EOI下用OCW2发布结束命令撤销ISR中断标志结束中断。假设地址为20H,21H。解:程序如下所示。MOVAL,20H;20H是命令字,EOI=1OUT20H,AL;A0=0,20H是OCW2地址2024/7/15327.3可编程中断控制器8259A【例例7.9】如果8086系统中的8259A的优先级顺序为IR4、IR5、IR6、IR7、IR0、IR1、IR2、IR3,设8259A的偶地址为20H,试用程序实现之。解:要实现题目中的优先级,应先确定OCW2,然后写入偶地址。OCW2=11000011B。程序如下所示。MOVAL,11000011BOUT20H,AL2024/7/15337.3可编程中断控制器8259Al l 操作命令字操作命令字OCW3OCW32024/7/15347.3可编程中断控制器8259A【例例7.10】设8259A的IR3输入引脚上有中断请求,但此时8086CPU的IF=0,8086CPU如何才能知道8259A的IR3上有中断请求?设偶地址为20H。解:可用中断查询命令来解决这个问题,先发查询命令OCW3,然后读偶地址,就可以知道IR3是否有中断申请。OCW3应该取00001100B。程序如下所示。MOVAL,00001100B;P=1,查询命令OUT20H,AL;输出查询命令INAL,20H;读8259A的查询字读到的信息如下:0表示IR3上没有中断请求。1011表示IR3上有中断请求。2024/7/15357.3可编程中断控制器8259A【例例7.11】编写一段程序,将8086系统中8259A的IRR、ISR、IMR3个寄存器的内容读到后,写入存储器从0090H开始的数组中,设8259A的端口地址为20H和21H。MOVAL,00001010B;指出读IRR,OCW3=00001010BOUT20H,ALINAL,20H;读IRR的内容MOV0090H,AL;将IRR的内容写入数组中MOVAL,0BHOUT20H,AL;指出读ISR,OCW3=00001011BINAL,20HMOV0091H,AL;将ISR的内容写入数组中INAL,21H;直接从奇地址端口读取IMR的内容MOV0092H,AL;将IMR的内容写入数组中2024/7/15367.3可编程中断控制器8259An六六8259寄存器的访问控制:寄存器的访问控制:n8259的的9个寄存器只占个寄存器只占2个地址个地址(只有只有A0地址线地址线),如何区分如何区分?2024/7/15377.3可编程中断控制器8259An n七七中断系统的应用方法n(1)分配合适的中断级;n(2)设计中断请求逻辑:n(3)对8259A初始化n(4)编写中断服务子程序n(5)中断向量表初始化2024/7/15387.48259的应用n一、一、8259与系统总线的连接与系统总线的连接8259A的 偶 地 址:A1=0,地 址 为 0FF00H、0FF01H、0FF04H、0FF05H中的任意一个。8259A的 奇 地 址:A1=1,地 址 为 0FF02H、0FF03H、0FF06H、0FF07H中的任意一个2024/7/15397.48259的应用n二、初始化及操作控制二、初始化及操作控制nSET59A:MOVDX,0FF00H;A0=0nMOVAL,00010011B;ICW1:D3=LTIM=0沿触发沿触发,D1=1单片,单片,D0=1要要ICW4nOUTDX,ALnMOVDX,0FF02H;A0=1nMOVAL,00011000B;ICW2:中断类型码中断类型码nIR0IR7类型码类型码18H1FHnOUTDX,ALnMOVAL,00000011B;ICW4:8086/8088,n自动自动EOI,非缓冲非缓冲,正常全嵌套正常全嵌套nOUTDX,AL2024/7/15407.48259的应用在某些情况下,如果不希望看到某些中断发生,我们可以通过操作命令字OCW1的设置来屏蔽那些中断。同时也可以检查对某些中断的屏蔽是否成功。程序如下。MOVDX,0FF02HMOVAL,0;OCW1为00H,没有屏蔽中断OUTDX,ALINAL,DX;读IMRORAL,AL;检查是否屏蔽?JNZIMERR;不为0出错MOVAL,0FFH;OCW1为FFH,全部屏蔽OUTDX,ALINAL,DX;读IMRADDAL,1;检查是否有屏蔽?JNZIMERR;不为全1出错2024/7/15417.48259的应用8259A连接到CPU上,通过数据总线可以读取ISR、IRR的内容,命令如下。MOVDX,0FF00H;OCW3用偶地址MOVAL,00001011B;OCW3的P=0,设置读ISROUTDX,ALINAL,DX;读出ISRMOVAL,00001010B;OCW3的P=0,设置读IRROUTDX,ALINAL,DX;读出IRR2024/7/15427.5小型案例实训n案例案例1-8259实现电子钟实现电子钟n利利用用20ms一一次次的的定定时时中中断断服服务务程序,建立时、分、秒电子钟程序,建立时、分、秒电子钟n(1)编写)编写20ms中断服务程序中断服务程序n每次中断(每次中断(20ms)n1=n1+1nn150中断返回;中断返回;nn1=50second=second+1,n1=0nsecond60中断返回;中断返回;nsecond=60minute=minute+1,second=0nminute60中断返回;中断返回;nminute=60hour=hour+1,minute=0nhour24中断返回;中断返回;nhour=24hour=02024/7/15437.5小型案例分析电子钟n中断服务子程序:中断服务子程序:nCLOCKPROC FARnPUSHDSnPUSHAX;现场保护;现场保护nPUSHSInMOVAX,SEGTIMER;中断服务;中断服务nMOVDS,AXnMOVSI,OFFSETTIMERnMOVAL,SInINCAL;n1+1nMOVSI,AL保存保存新新n1nCMPAL,50;1秒到秒到?nJNZTRNEDnMOVAL,0;1秒到秒到则则n1=0nMOVSI,AL2024/7/15447.5小型案例分析电子钟nMOVAL,SI+1nADDAL,1;second+1nDAAnMOVSI+1,AL;保存;保存新新secondnCMPAL,60H;一分钟到?;一分钟到?nJNZTRNEDnMOVAL,0nMOVSI+1,ALnMOVAL,SI+2nADDAL,1nDAAnMOVSI+2,ALnCMPAL,60H;一小时到?;一小时到?nJNZTRNED2024/7/15457.5小型案例分析电子钟nMOVAL,0nMOVSI+2,ALnMOVAL,SI+3nADDAL,1nDAAnMOVSI+3,ALnCMPAL,24H;24小时到?小时到?nJNZTRNEDnMOVAL,0nMOVSI+3,ALnTRNED:POPSI;现场恢复;现场恢复nPOPAXnPOPDSnSTI;开中断;开中断nIRET;中断返回;中断返回nCLOCKENDP2024/7/15467.5小型案例分析电子钟n n(2)(2)确定中断类型码,初始化确定中断类型码,初始化确定中断类型码,初始化确定中断类型码,初始化82598259IR0IR0中断类型码为中断类型码为中断类型码为中断类型码为18H18H,初始化程序同前,初始化程序同前,初始化程序同前,初始化程序同前SET59ASET59A。SET8259A:MOVDX,0FF00H;偶地址MOVAL,00010011B;ICW1,D3的LTIM=0边沿触发,D1=1;单片,D0=1要ICW4OUTDX,ALMOVDX,0FF01H;奇地址MOVAL,00011000B;ICW2:中断源IR0IR7类型码18H1FHOUTDX,ALMOVAL,00000011B;ICW4:8086/8088,自动EOI,非缓冲,正常;全嵌套OUTDX,AL2024/7/15477.5小型案例分析电子钟n(3)初始化中断向量表:初始化中断向量表:nINITB:MOVAX,0nMOVDS,AXnMOVSI,18HnSHLSI,1;中断类型码;中断类型码*4nSHLSI,1nMOVDX,OFFSETCLOCKnMOVSI,DXnMOVDX,SEGCLOCKnMOVSI+2,DXn2024/7/15487.5小型案例分析电子钟n n(4)(4)完整的程序:完整的程序:完整的程序:完整的程序:DATA SEGMENTTIMER DB4DUP(0)DATAENDSSTACKSEGMENTPARASTACKSTACKDB100DUP(0)STACKENDSCODESEGMENTASSUMEDS:CODE,DS:DATA,SS:STACKSTART:MOVAX,0;主程序初始化中断向量表程序段MOVDS,AX;初始化中断向量表程序段MOVSI,18HSHLSI,1SHLSI,12024/7/15497.5小型案例分析电子钟MOVDX,OFFSETCLOCK MOVSI,DX MOVDX,SEGCLOCK MOVSI+2,DX MOVDX,0FF00H;初始化8259A程序段MOVAL,00010011B OUTDX,ALMOVDX,0FF01HMOVAL,00011000BOUTDX,ALMOVAL,00000011B OUTDX,AL2024/7/15507.5小型案例分析电子钟STI;开中断WAIT:HLT;等待20ms中断请求JMPWAITCLOCKPROCFAR;中断服务子程序PUSHAXPUSHSIMOVAX,SEGTIMERMOVDS,AXMOVSI,OFFSETTIMERMOVAL,SIINCALMOVSI,ALCMPAL,50JNZTRNEDMOVAL,0MOVSI,AL MOVAL,SI+12024/7/15517.5小型案例分析电子钟ADDAL,1DAAMOVSI+1,ALCMPAL,60HJNZTRNEDMOVAL,0MOVSI+1,ALMOVAL,SI+2ADDAL,1DAAMOVSI+2,ALCMPAL,60HJNZTRNEDMOVAL,0MOVSI+2,ALMOVAL,SI+32024/7/15527.5小型案例分析电子钟ADDAL,1DAAMOVSI+3,ALCMPAL,24HJNZTRNEDMOVAL,0MOVSI+3,ALTRNED:POPSIPOPAXSTIIRETCLOCK ENDPCODEENDSENDSTART人有了知识,就会具备各种分析能力,明辨是非的能力。所以我们要勤恳读书,广泛阅读,古人说“书中自有黄金屋。”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;通过阅读文学作品,我们能提高文学鉴赏水平,培养文学情趣;通过阅读报刊,我们能增长见识,扩大自己的知识面。有许多书籍还能培养我们的道德情操,给我们巨大的精神力量,鼓舞我们前进。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!