收藏 分享(赏)

中断系统与8259A.ppt

上传人:kpmy5893 文档编号:9129802 上传时间:2019-07-25 格式:PPT 页数:120 大小:3.78MB
下载 相关 举报
中断系统与8259A.ppt_第1页
第1页 / 共120页
中断系统与8259A.ppt_第2页
第2页 / 共120页
中断系统与8259A.ppt_第3页
第3页 / 共120页
中断系统与8259A.ppt_第4页
第4页 / 共120页
中断系统与8259A.ppt_第5页
第5页 / 共120页
点击查看更多>>
资源描述

1、,微型计算机接口技术 第九章 中断系统,9.1 中断的基本概念9.2 80x86的中断指令9.3 中断向量9.4 系统中断的分类9.5 8259A中断控制器9.6 PC/AT的可屏蔽中断9.7 实模式下的定时中断程序设计,第九章 中断系统,9.1 中断的基本概念,复习:CPU与外设交换数据的方式又几种? 以查询方式为例:,当外设的数据未准备好时,CPU必须不断查询外设的状态信息,系统效率低下。,中断的基本概念,1、中断方式输入数据的过程分析,中断的基本概念,2、什么是中断?CPU暂停执行现行程序,转而处理随机事件,处理完毕后再返回被中断的程序继续执行,这一全过程称为中断。,3、中断源能引发CP

2、U中断的信息源。中断源可分为: (1) 外部中断源(硬件中断源) I/O设备 如键盘、显示器、打印机 数据通道 如磁带、磁盘 时钟 如由8254 OUT0引发的中断 故障源 如掉电、存贮器奇偶校验错 (2) 内部中断源(软件中断源) 执行INT软件中断指令 如 INT 21H CPU指令执行时产生的异常 如被0除等,中断的基本概念,4、具有中断请求功能的输入接口,中断的基本概念,4、具有中断请求功能的输入接口,中断的基本概念,5、什么是中断系统?为实现中断功能而采取的硬件和软件的集合。,6、中断系统应具备的基本功能 对于硬件中断,接口电路应具有“屏蔽”和 “开放”功能,这种功能可由程序员通过软

3、件控制; 能实现中断判优(中断排队),当有多个中断源提出请求时,应能优先响应高级别的中断请求; 能实现中断嵌套,即高级别的中断源能够中断正在执行的低级别的中断服务程序; 响应中断后能自动转入中断处理,处理完毕能自动返回断点。,中断的基本概念,中断响应及中断嵌套过程示意图(设B中断的级别高于A),中断的基本概念,第九章 中断系统,9.2 80X86中断指令,1、开中断指令STI功能:使标志寄存器中I标志置1,CPU处于开中断状态;2、关中断指令CLI功能:使标志寄存器中I标志置0,CPU处于关中断状态;3、软件中断指令INT nn为中断类型码,是0255之间的无符号整数。功能:无条件转向n型中断

4、服务子程序。注意:中断类型n必须有定义。,80x86的中断指令,INT n 指令的执行过程CPU响应软件中断的过程 F寄存器栈(为了保存INT n 之前的F状态)使F中的T标志置0禁止单步操作;使F中的I标志置0使CPU处于关中断状态; 断点地址栈先将断点的段地址(CS)栈;再将断点的偏移地址(IP)栈; CPU从存储器4n4n+3单元取出n型中断的服务程序入口地址CS : IP,从而转入n型中断服务程序。,80x86的中断指令,4、中断返回指令IRET 功能:依次从栈顶弹出6个元素IP,CS,F;如果栈顶是INT n的中断入口地址,则执行IRET后,返回断点,否则不能返回断点。,执行INT

5、n后栈顶示意图,执行IRET示意图,SP,IRET是中断服务程序的出口指令,80x86的中断指令,第九章 中断系统,9.3 中断向量,每个中断都指定了一个类型码,也称为中断号。 每一种中断对应有一个中断服务程序(Interrupt Service Program ISP),也可称为中断服务例程(Interrupt Service Routine ISR); ISR本质上就是为特定中断事件服务的代码,中断发生后,在中断系统的控制下,CPU转向ISR执行,为中断事件服务完毕后,再返回被中断程序继续执行。 ISR存放在内存中,每个ISR程序段的起始地址被称为ISR的入口地址。,中断向量,1、什么是中

6、断向量?中断向量是实模式下,中断服务子程序的入口地址。它由两部分组成: 中断服务程序所在代码段的段基址,2字节; 中断服务程序所在代码段的段内偏移地址,2字节; 2、中断向量表中断类型码通过一个地址指针表与中断服务子程序的入口地址相联系。 实模式下,该表被称为中断向量表; 保护模式下,该表被称为中断描述符表;,中断向量,3、中断向量表的设置80x86系统规定,在实模式下,中断向量表需设置在系统RAM最低端1KB单元空间内。即00000H003FFH。 如果每个中断向量占用4字节,共可有256个中断。 RAM最低1KB空间内,并不是全部作为中断向量表。,中断向量,4、中断向量表的表地址与中断类型

7、的关系,例如,对于21H型中断,其中断向量存放在:421H = 84H 421H+3 = 87H单元中。 请问9CH型中断,其中断向量存放在何处?9CH = 10011100B,9CH4 = 1001110000B = 270H所以9CH型中断的中断向量存放在270H273H单元中。,中断向量,5、中断向量的转向作用CPU响应软件中断的过程,中断向量,6、中断向量表的初始化 由BIOS设计的中断服务程序(如INT 16H,INT 10H等)其中断向量在加电时由BIOS负责写入中断向量表; 由DOS设计的中断服务程序(如 INT 21H)其中断向量是在启动DOS时,由DOS负责写入中断向量表;

8、用户开发的中断服务程序,由用户程序写入其中断向量。,中断向量,问题:用户如何向中断向量表中写入中断向量?,中断向量,方法一:用户自己编写程序填写中断向量CLI ;关闭所有中断PUSH DS ;保护原DSMOV AX, 0000HMOV DS, AX ;DS指向内存最低端MOV BX, 4*n ;BX指向入口地址MOV AX, OFFSET SERVICE MOV BX, AX ;先填入口偏移地址MOV AX, SEG SERVICEMOV BX+2, AX ;后填入口段地址POP DS ;恢复原DSSTI ;重新开放中断,中断向量,方法二:使用DOS功能调用读写中断向量 INT 21H的35H

9、子功能功能: 读出n型中断向量入口: AL=中断类型码n出口: ES:BX=n型中断向量 INT 21H的25H子功能功能: 写入n型中断向量入口: DS=中断服务程序所在代码段的段基址DX=中断服务程序入口的偏移地址出口: 无,中断向量,例:把用户程序中名为”TIMER”的中断服务程序的入口地址写入INT 1CH中断向量处。,数据段:OLD1C DD ? 代码段:MOV AH, 35HMOV AL, 1CHINT 21H ; 读入原中断向量MOV WORD PTR OLD1C, BX ; 保存原中断向量MOV WORD PTR OLD1C+2, ESPUSH DS ; 保存原DSMOV AX

10、, CSMOV DS, AX ; 设置DS为ISR的CS,中断向量,例:把用户程序中名为 “TIMER”的中断服务程序的入口地址写入INT 1CH中断向量处。,代码段(续):MOV DX, OFFSET TIMER ; ISR偏移地址DXMOV AH, 25HMOV AL, 1CH ; 设置INT 1CH的中断INT 21H ; 向量,指向TIMERPOP DS ; 恢复原DS,中断向量,第九章 中断系统,9.4 系统中断的分类,系统中断的分类,系统中断分类如下图所示:,系统中断的分类,1、CPU中断CPU中断是指:CPU执行某些操作而引发的中断,这类中断使用了0、1、3、4、6、7中断号。

11、(1)除法错中断 0型中断 (2)单步中断 1型中断 (3)断点中断 3型中断 (4)溢出中断 4型中断,系统中断的分类,2、软件中断执行有定义的INT n指令引发的中断,称为软件中断。软件中断使用05H、10H0FFH中的若干个中断号,具体又可细分为: (1)BIOS中断BIOS中断占用了05H、10H1FH中断号,程序执行相关的软件中断指令(INT n)可调用相应的中断服务程序。例如:INT 05H 屏幕打印;INT 10H 屏幕显示;INT 11H 设备配置检测;,系统中断的分类,INT 12H 测试内存容量;INT 13H 磁盘I/O;INT 14H 串行通信I/O;INT 15H B

12、IOS扩展功能;INT 16H 键盘I/O;INT 17H 打印机I/O;INT 18H 启动PC机上的ROM BASIC(仅老式PC有);INT 19H 重新装入引导程序(重启);INT 1AH 实时时钟(RTC)管理;中断号1DH、1EH、1FH、41H、46H也被BIOS占用了。但是,与这些中断号对应的并不是中断服务程序,而是一些系统配置参数。,系统中断的分类,(2)DOS中断DOS中断,又分为DOS专用中断、DOS保留中断、用户可调用的DOS中断以及保留给用户开发的中断。DOS专用中断 22H型中断:程序正常结束,返回父进程; 23H型中断:程序非正常结束,DOS调用该中断; 24H型

13、中断:系统严重错误时DOS调用该中断; 28H3FH型中断:DOS专用。,系统中断的分类,用户可调用的DOS中断 20H型中断:程序执行INT 20H返回DOS; 21H型中断:DOS系统功能调用; 25H型中断:指定驱动器按扇区读; 26H型中断:指定驱动器按扇区读; 27H型中断:设置中断驻留程序(TSR)。 用户可开发的DOS中断60H66H。 DOS保留中断42H45H、4BH5FH等。,系统中断的分类,第九章 中断系统,9.5 8259A中断控制器,外部硬件中断是由CPU以外的中断请求而引发的。如果有多个中断请求,怎样连接至CPU呢?,8259A中断控制器,1、8259A的内部结构,

14、8259A的内部结构,(1)中断请求寄存器(IRR)寄存引脚IR07上的中断请求信号。IRRi位=1表明对应的IRi引脚上有了中断请求信号。,8259A的内部结构,(2)中断屏蔽寄存器(IMR)寄存程序写入的中断屏蔽字。该寄存器某位为1(IMRi=1)则与其对应的中断请求位(IRRi)就不能申请中断。,8259A的内部结构,中断屏蔽寄存器(IMR)的编程 例1:屏蔽IRR72的中断请求,开放IR1、IR0的中断请求MOV AL, 11111100BOUT IMR端口地址, AL,8259A的内部结构,例2:不改变其它位的屏蔽状态,开放IR3的中断请求MOV AL, IMR端口地址AND AL,

15、 11110111BOUT IMR端口地址, AL,8259A的内部结构,(3)优先权判断电路(排队电路) 比较同时送达优先权电路的中断请求,哪一个 级别最高; 比较CPU正为之服务的中断源和刚进入优先权电路的中断源,哪一个级别更高。,通过判优“选中”其中级别最高的中断源,然后通过中断控制逻辑电路,从INT端向CPU提出中断请求。,8259A的内部结构,(4)中断控制逻辑电路负责处理与中断请求/应答相关的事务。,8259A的内部结构,(4)中断控制逻辑电路 作用: 寄存一组初始化命令字和操作命令字,通过译码产生内部控制信号; 当判优电路选中一个中断源时向CPU提中断请求 (INT); 通过#I

16、NTA接收CPU送来的中断响应信号,中断响应信号是2个连续的负脉冲。,8259A的内部结构,t,中断 响应1,中断 响应2,(5)中断服务寄存器(ISR)ISR为8位寄存器,ISRi位和IRRi位一一对应。,8259A的内部结构,(5)中断服务寄存器(ISR) 作用: 记录CPU正为之服务的是哪一个中断源。怎样记录?如:通过判优电路IRR0位的请求被选中,8259A向CPU发中断请求,通过#INTA收到第一个中断响应信号后,ISR0位置1,IRR0位置0。ISR0位置1,表明CPU正在准备(或正在)执行IR0的服务程序。反之,如果ISR0位由10,表明IR0的中断服务程序已执行完毕。所以ISR

17、的每一位都是响应中断源的中断服务标志位。,8259A的内部结构,(6)数据总线缓冲器 作用: 完成与CPU数据线配接; 接收初始化命令字,操作命令字; 当收到第二个中断响应脉冲时,通过他们向CPU送出被选中的中断源的中断类型码n。在这之后CPU从4n+04n+3单元取出n型中断向量, 从而转入n型中断服务程序。,8259A的内部结构,(7)读/写控制模块 功能: 接收片选信号#CS 、端口选择信号A0和读写控制信号#RD、#WR,并产生相应的控制逻辑。一片8259A在系统中占用两个口地址,用末位地址线A0选择端口,其它地址线通过译码产生8259A的片选信号。(8)级联/缓冲比较器一片8259A

18、可以管理8级中断,二片8259A“级联”可管理15级中断,级连/缓冲比较器是为完成多片8259A级连设置的模块。,8259A的内部结构,8259A的管脚 IR0 IR7 外部中断请求信号输入 INT 输出,指向CPU的INTR端 #INTA 输入,接收CPU发来的中断响应 D0D7 输入/输出,数据总线 #CS 片选信号 A0 地址线A0,用于选择内部端口 #WR/#RD 读/写控制信号 CAS0CAS2 用于8259级联 #SP/EN 用于8259级联,8259A的内部结构,2、8259A的中断过程CPU响应硬件中断的过程 首先,如果外部有有效中断请求输入,则中断请求寄存器将寄存加到引脚IR

19、0IR7上的中断请求; 在中断屏蔽寄存器的过滤下,没有被屏蔽的中断请求被送到优先权电路判优; 优先权电路选中当前级别最高的中断源,然后从引脚INT向CPU发出中断请求信号; 如果CPU满足响应中断的条件,则CPU向8259A发出2个中断响应信号(2个连续的负脉冲,由#INTA引脚送出)。,8259A的中断过程,2、8259A的中断过程CPU响应硬件中断的过程 8259A从引脚#INTA收到第1个中断响应信号之后,立即使中断服务寄存器中与被选中的中断源对应的那一位置1,同时把中断请求寄存器中的相应位清0; 从引脚#INTA收到第2个中断响应信号后,8259A把选中的中断源类型码n,通过数据线送往

20、CPU; 在实模式下,CPU从4n4n+3单元取出该中断源的中断向量IP、CS,从而引导CPU执行该中断源的中断服务程序。,8259A的中断过程,3、8259A的中断管理方式,8259A 中断管理 方式,8259A的中断管理方式,8259A的中断触发方式边沿触发 IRi出现上升沿表示有中断请求。 电平触发 IRi出现高电平表示有中断请求。在第一个#INTA结束前,IRi必须保持高电平。 在中断服务结束,清零对应ISRi前, IRi高电平必须撤消,否则会引起第二次中断。,8259A的中断管理方式,8259A屏蔽中断源的方式 常规屏蔽方式MR屏蔽字决定了允许或禁止某位IRi所对应的中断:IMi=1

21、 禁止, IMi=0 允许。 特殊屏蔽方式 提供允许较低优先级的中断能够得到响应的特殊手段; 原理:假定当前正在处理IR6,先进入特殊屏蔽方式,然后设置IM6=1。这时除IR6外的所有中断请求均能得到响应; 特殊屏蔽方式中只能用SEOI命令结束中断。,8259A的中断管理方式,8259A中断优先级管理方式 两类优先级控制方式:固定优先级和循环优先级固定优先级方式 所有中断请求IRi的中断优先级固定不变; 优先级排列顺序可编程改变; 加电后8259A的默认方式,默认优先级顺序从高到低为IR0IR7 。,8259A的中断管理方式,循环优先级方式 中断源轮流处于最高优先级,即自动中断优先级循环; 初

22、始优先级顺序可用编程改变; 某中断请求IRi被处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级。,8259A的中断管理方式,中断嵌套方式 在中断处理过程中允许被更高优先级的事件所中断称为中断嵌套。8259A有两种中断嵌套方式:普通全嵌套方式(默认方式) 一中断正被处理时,只有更高优先级的事件可以打断当前的中断处理过程而被服务。特殊全嵌套方式 一中断正被处理时,允许同级或更高优先级的事件可以打断当前的中断处理过程而被服务。 注:特殊全嵌套仅用于多个8259A级连时的主8259A,而不能用于从属8259A或单8259A系统。,8259A的中断管理方式,中断结束处理方式当某一IRi中

23、断被服务时,ISR中的相应位ISRi=1。当服务结束后,则必须清零该ISRi位。使ISRi=0是通过向8259A发出中断结束命令(EOI命令)实现的。三种EOI命令自动EOI(AEOI)(自动EOI方式);非指定EOI(NSEOI)(正常EOI方式);指定EOI(SEOI)(特殊EOI方式)。 三种带优先级循环的EOI命令,8259A的中断管理方式,AEOI(自动EOI)在第2个#INTA结束时,由8259A使ISRi自动复位;因不保留当前正在服务的中断的状态,故AEOI不能用于中断嵌套方式; SEOI (特殊EOI,指定EOI)由CPU发出一条SEOI命令,该EOI命令中指出了所要复位的IS

24、R的位号; 该方式可用于特殊屏蔽方式; NSEOI (正常EOI)由CPU发出正常EOI命令,该EOI命令使ISRi=1的位中优先级最高的那一位复位(正在服务完成的中断);该方式用于普通全嵌套方式。,8259A的中断管理方式,4、8259A的编程8259A的控制命令分为:初始化命令字ICWICW寄存器共4个,分别为ICW1ICW4;向8259A写入ICW的过程称为初始化编程;操作命令字OCW OCW寄存器共3个,分别为OCW1OCW3;向8259A写入OCW的过程称为操作方式编程。根据8258A的具体应用情况不同,有些命令字可能不需要设置。OCW在初始化完成后,根据操作过程情况写入。,8259

25、A的中断管理方式,8259A初始化编程流程图,8259A的编程,单片8259A, 不需要写入ICW3;非8086/8088系统, 不需要写入ICW4,8259A内部寄存器的寻址方法 需要#CS、A0、#RD、#WR和D4、D3的配合; 内部寄存器的访问方法如下表:,8259A的编程,(1)8259A初始化命令字初始化命令字ICW(Initialization Command Word)通常是系统开机时,由初始化程序填写,且在整个系统工作过程中保持不变。初始化命令字必须按规定的顺序填写。 ICW1(A0=0),8259A的编程,D4=1 ICW1标志, ICW2(A0=1) 设置中断类型码,注:

26、T7T3 中断向量类型码高位,由编程决定低三位 自动设置为 IR0 IR7的类型编码(000 111),8259A传送的中断类型码,8259A的编程, ICW3(主控制器,A0=1) 设置从控制器接入位置,ICW3(从控制器,A0=1) 设置接入主控制器的位置,8259A的编程, ICW4(A0=1),8259A的编程,(2)8259A操作命令字由CPU向8259A送三个字节的操作命令字 OCW(Operation Command Word),用以规定8259A的工作方式,如: 中断屏蔽 结束中断 优先权循环 中断状态 等。操作命令字是在应用程序中设置的,设置时,顺序上没有严格的要求。,825

27、9A的编程, OCW1(A0=1)OCW1是中断屏蔽命令字,命令格式如图。命令字中的M7M0对应IMR的各位。Mi=1表示该中断被屏蔽,Mi=0表示该中断开放。,8259A的编程, OCW2(A0=0)中断结束命令字,命令格式如图。 R、SL、EOI的不同组合决定了8259A的几种工作方式; L2L0 这几位确定当SL=1时指定的特殊结束或特殊循环时的中断优先级。最常用的常规EOI命令字为20H。,8259A的编程, OCW3(A0=0)用于控制8259A的运行方式,命令格式如图。,8259A的编程,8259A编程举例 按以下要求初始化8259A: 端口地址为200H和201H; 中断为上升沿

28、触发;单片8259A;不写ICW4; 与IR0-IR3对应的中断向量码为08H-0BH; IR4-IR7不使用。 根据要求,各初始化参数及工作参数如下: ICW1 = 00010010 = 12H ICW2 = 08H 中断向量码 OCW1 = 11110000 = 0F0H 中断屏蔽字,8259A的编程,初始化程序如下: INIT8259A:MOV DX,200H ;A0=0,写ICW1MOV AL,12H ;上升沿触发,单片,不写ICW4OUT DX,ALMOV DX,201H ;A0=1,写ICW2,OCW1MOV AL,08H ;ICW2OUT DX,ALMOV AL,0F0H ;OC

29、W1:屏蔽IR4-IR7OUT DX,AL,8259A的编程,5、 286以上微机8259A的中断管理方式 系统加电后由BIOS对8259A初始化编程,设定中断管理方式: 系统8259A,中断触发方式为边沿(上升沿)触发; 中断屏蔽方式采用常规屏蔽方式即应用时,向8259A中断屏蔽寄存器写入适当屏蔽字即可屏蔽/开放某一级中断; 中断源为固定优先级即IR0中断请求级别最高,IR7中断请求级别最低; 采用常规中断结束方式即在中断服务子程序结束之前向8259送中断结束命令。,286以上微机8259A的中断管理方式,6、286以上微机对8259A的编程 对8259A编程分两步进行: 对8259A进行初

30、始化编程系统加电后,由BIOS完成; 对8259A进行应用编程编写中断程序时完成,有2项内容: 需要时,向8259A中断屏蔽寄存器写入屏蔽字; 每一个硬件中断服务程序结束前必须向8259A送中断命令字,通知8259A本次中断结束,否则8259A不能响应同一中断源的下次中断。 8259A收到中断结束命令后,把ISR中的置1位清0。,286以上微机对8259A的编程,第九章 中断系统,9.4 PC/AT可屏蔽中断,1、概述硬件中断分类可屏蔽中断和非屏蔽中断。可屏蔽中断:输入到INTR引脚的中断请求信号引发的中断;非屏蔽中断:输入到NMI引脚的中断请求信号引发的中断。,PC/AT可屏蔽中断,硬件中断

31、的级别DMA请求 高于 非屏蔽中断 高于 可屏蔽中断。响应可屏蔽中断的条件 有可屏蔽中断请求、没有DMA请求、没有非屏蔽中断请求; CPU一条指令执行完毕; CPU处于开中断状态(I 标志=1)。响应非屏蔽中断的条件 有非屏蔽中断请求、没有DMA请求; 一条指令执行完毕。,PC/AT可屏蔽中断,2、可屏蔽中断的硬件结构,PC/AT可屏蔽中断,主、从8259中断请求信号设置,PC/AT可屏蔽中断,PC/AT使用2片8259级连,共可管理15级中断,中断源与中断类型对应关系如下:,PC/AT可屏蔽中断,硬件可屏蔽中断的中断级别,PC/AT可屏蔽中断,系统分配的8259口地址,PC/AT可屏蔽中断,

32、中断结束命令 中断结束命令字 = 20H 接入主8259 IR0IR7的中断源,其中断服务程序结束要向主8259送中断结束命令字:MOV AL,20H OUT 20H,AL恢复现场IRET,PC/AT可屏蔽中断,中断结束命令 接入从8259的中断源,其服务程序结束应分别向主、从8259各送一个中断结束命令字。MOV AL, 20HOUT 20H, ALOUT 0A0H, AL恢复现场IRET,PC/AT可屏蔽中断,3、硬件中断和软件中断的区别 中断的引发方式不同;连接到INTR或NMI引脚的信号引发 / 执行INT n引发。 CPU获取中断类型码的方式不同;8259A提供 / 按中断号取自中断

33、向量表。 CPU响应的条件不同;硬件中断只有在开中断情况下才能响应 / 软件中断不受此限制。 中断处理程序的结束方式不同;硬件中断结束前要做两件事:一是向8259A送中断结束命令,以使8259A在ISR中清除标志位,结束中断;二是执行IRET指令,中断返回 / 软件中断只需直接执行IRET指令。,PC/AT可屏蔽中断,4、硬件可屏蔽中断举例 (1)日时钟中断 中断源:系统8254 0#计数器,每55ms有一次中断请求; 中断类型:8型; 日时钟中断的处理流程: 开中断,保护现场(DS压栈); 40HDS,对“日时钟计数器”加1; 测算软驱马达关闭时间; 执行INT 1CH(即在INT 08H的

34、ISR中执行软件中断INT 1CH,INT 1CH结束时IRET返回INT 08H的ISR); 向主8259送中断结束命令; 恢复现场,IRET。,PC/AT可屏蔽中断,什么是“日时钟计数器”BIOS系统规定:40H:6CH40H:6FH这4个单元(共32位)为日时钟计数器,每55ms加1次,计数到001800B0H,为24小时,其计数值供系统软件使用。 系统启动时CPU执行BIOS中的一段程序,读取CMOS实时时钟电路的时间值计数值40:6CH40:6FH做为日时钟计数器的计数初值。 关于1CH中断服务程序INT 08H的ISR,每隔55ms在DS=40H的前提下,调用一次INT 1CH服务

35、程序,之后又返回INT 08H的ISR。所以1CH中断是日时钟的外扩中断,用户可开发新的1CH中断(完成每55ms一次的定时操作)取代原来的中断服务子程序。,PC/AT可屏蔽中断,(2)用户中断 中断源:系统总线插槽B4端引入的用户设计的硬件中断请求信号; 用户中断请求的途径:,PC/AT可屏蔽中断,用户中断请求从ISA总线B4端子(IRQ9)引入,经过主8259,从8259二级中断管理,最后由 主8259向CPU提中断;只有从8259 IMR1置0,主8259 IMR2置0,其中断请求方能送到CPU。实现用户中断必须对主、从8259应用编程,保证中断申请由8259中断控制器提向CPU:IN

36、AL, 0A1HAND AL, 11111101BOUT 0A1H, AL ;开放用户中断IN AL, 21HAND AL, 11111011BOUT 21H, AL ;开放从8259中断,PC/AT可屏蔽中断,用户中断的中断类型CPU响应用户中断后,自动转向71H型中断服务程序。 BIOS为71H型中断设计的服务程序如下:PUSH AXMOV AL, 20HOUT 0A0H, AL ;结束从8259的中断POP AXINT 0AH ; 用户开发的ISR终端类型为0AH,PC/AT可屏蔽中断,用户定义的中断服务程序有两个设计方法 定义用户中断服务程序为71H型中断程序的准备工作:置换71H型中

37、断向量,即把用户中断的中断向量471H471H+3单元; 定义用户中断服务程序为0AH型中断程序的准备工作:置换0AH型中断向量,即把用户中断的中断向量40AH40AH+3单元 ; 用户中断服务程序结束 若用户中断定义为0AH型服务程序结束前只向主8259送结束命令; 若用户中断定义为71H型服务程序结束前,向主从8259各送一中断结束命令。,PC/AT可屏蔽中断,(3)键盘中断,PC/AT可屏蔽中断,中断源:主板键盘接口电路; 中断类型:9; 键盘中断全过程:,键盘接口分为两部分:键盘电路 安装在键盘盒内;键盘接口电路 安装在主板上,两部分电路通过PS2接口相连。,PC/AT可屏蔽中断,键盘

38、电路以单片机为核心,加电后固化在单片机内部的键盘扫描程序,不断扫描每一个按健,一旦有键闭合,就把闭合键的扫描码(位置码) 键盘接口电路。,PC/AT可屏蔽中断,键盘接口电路的功能: 把串行扫描码通过移位寄存器转换成并行扫描码口地址为60H的端口寄存器; 串并转换完毕,向主8259发送中断请求; CPU响应后,转9型服务程序。,PC/AT可屏蔽中断,键盘中断处理流程 开中断,保护现场(DS压栈); 40HDS; 从60H口地址寄存器取并行扫描码分析,处理转换成2字节的按键代码存入键盘缓冲区; 向8259发中断结束命令; 恢复现场IRET。,PC/AT可屏蔽中断,键盘缓冲区BIOS规定:系统RAM

39、 40:1EH40:3DH为键盘缓冲区,共32个单元,实际使用30个单元,存放15个键的键代码。键盘缓冲区以“先进先出”的规则存取;键盘缓冲区由9型服务程序写入按键代码,用户程序使用INT 16H访问键盘缓冲区,键盘缓冲区是9型硬中断和INT 16H软中断之间交换信息的缓冲区 。,PC/AT可屏蔽中断,第九章 中断系统,9.5 实模式下定时中断 程序设计,实模式下的定时中断程序设计,应用背景在许多应用中,需要每隔一定时间完成一次预定的操作 定时操作。如定时数据采集、定时显示、定时键盘扫描等,而采用定时中断技术实现这种操作具有实时性好、占用CPU资源较少的特点。,一 、定时中断程序的设计方法 1

40、、定时中断源的选择 系统8254 0#计数器,系统8254作为定时中断源(日时钟),实模式下的定时中断程序设计, 外扩8254作为定时中断源,外扩8254作为定时中断源, 其它外扩定时中断源,实模式下的定时中断程序设计,2、确定中断服务程序的类型 中断类型由定时中断源接入8259A的中断引脚IRx有关: 如果中断源是外扩定时器,由从8259A的IR1引脚引入,则服务程序应定义为0AH或71H型; 如果中断源是系统8254的0#计数器,并且定时周期是55ms的整数倍,则定义用户服务程序为1CH型,取代系统的1CH型服务程序; 如果中断源是系统8254的0计数器,但定时周期55ms的整数倍,则应重

41、新对8254 0#计数器进行初始化,并保证原1CH中断仍能按55ms周期运行,因此此时可定义用户服务程序为08H型。,实模式下的定时中断程序设计,定时中断周期不为55ms整数倍的处理框图,X是N和55ms的最大公约数 N是定时周期,实模式下的定时中断程序设计,3、置换中断向量服务程序的类型确定之后,应置换相应的中断向量(使用 INT 21H的25H和35H子功能); 4、开放8259A中断 从系统硬件中断的结构图可知: 用户中断要经过从8259A、主8259A两级中断控制器的管理,为了使用户中断请求送到CPU,应将从8259A的IMR的D1位置0,主8259A的IMR的D2位置0,从而打通用户

42、中断请求的通道;一般说,各种型号的主机板对日时钟中断都是开放的,用户不必再采取措施。,实模式下的定时中断程序设计,5、避免DOS重入,实模式下的定时中断程序设计,6、关于中断服务程序的执行时间ISR的执行时间必须远远小于定时中断的时间间隔。,7、中断结束向8259A发中断结束命令,实模式下的定时中断程序设计,二、定时中断程序结构 1、ISR直接进行定时操作,实模式下的定时中断程序设计,2、ISR设置定时时间到标志,通过信号量完成定时控制,“时间到”标志可利用数据段某单元或某个空闲寄存器,实模式下的定时中断程序设计,三、定时中断程序实例 【例】INT 1CH型定时中断的应用假设微机系统外扩了共阴

43、极数码管电路(见下页),要求使用系统定时源并采用中断方式每隔一秒完成一次8字左移,循环往复,直到主机键盘按下任意键时停止。,实模式下的定时中断程序设计,系统电路图,输出位选码,输出段选码,实模式下的定时中断程序设计,数码管显示原理使用段选码和位选码进行控制。 段选码:控制显示什么字符。8个数码管的同名段互相连接,即D0A、D1B、D6G;D7H 。显示字符“8”的段选码是7FH。 位选码:选择被点亮的LED。点亮右边第1个LED,位选码为10000000B点亮右边第2个LED,位选码为01000000B:点亮左边第1个LED,位选码为00000001B,实模式下的定时中断程序设计,程序设计思路

44、主要解决四个问题:(1)字符“8”的显示控制问题,包括段选码和位选码;(2)定时时间间隔1秒钟如何实现;(3)每隔一秒钟“8”如何左移一位显示;(4)显示过程如何结束。,MOV DX, 201H MOV AL, 7FH ;段码 OUT DX, AL MOV DX, 200H MOV AL, Origin ;位码 OUT DX, AL,SHR Origin,1 :,SCAN: MOV AH, 1 INT 16HJZ SCAN结束准备,实模式下的定时中断程序设计,定时程序由主程序和1CH型 ISR共同构成,SCAN: MOV AH,1INT 16HJZ SCAN,CALL Reset MOV AH

45、, 4CH INT 21H,实模式下的定时中断程序设计,定时程序由主程序和1CH型 ISR共同构成,实模式下的定时中断程序设计,;程序清单 ;Filename : SH8.ASM.486 DATA SEGMENT USE16 ;数据段定义OLD1C DD ?ICOUNT DB 18 ;中断计数初值ORIGIN DB 80H ;数码管位选初值 DATA ENDS CODE SEGMENT USE16 ;代码段ASSUME CS:CODE, DS:DATA START:MOV AX, DATA ;DS段赋值MOV DS, AXCLI ;关中断CALL READ1C ;保存原1CH型中断向量CALL

46、 WRITE1C ;设置新1CH型中断向量,指向用户ISR,实模式下的定时中断程序设计,MOV DX, 201HMOV AL, 7FHOUT DX, AL ;输出“8”的字型码MOV DX, 200HMOV AL, ORIGINOUT DX, AL ;定位显示STI ;开中断 SCAN: MOV AH, 1INT 16H ;有键入?JZ SCAN ;否,转移CALL RESETMOV AH, 4CH ;返回DOSINT 21H,实模式下的定时中断程序设计,;- 以下为用户ISR - SERVICE PROC PUSHA ;保护现场PUSH DSMOV AX, DATA ;注意:重新给DS赋值。

47、MOV DS, AXDEC ICOUNT ;中断计数JNZ EXIT ;不满18次转移MOV ICOUNT, 18 ;满18次,重新赋计数初值SHR ORIGIN, 1JNC NEXT ;没有显示到最左端,转移MOV ORIGIN, 80H ;已显示到最左端,重新赋初值 NEXT: MOV AL, ORIGINMOV DX, 200HOUT DX, AL ;“8”字左移一位 EXIT: POP DSPOPA ;注意:不需给8259A送中断结束命令。IRET ;返回系统8型中断服务程序 SERVICE ENDP,实模式下的定时中断程序设计,;- READ1C PROC ;转移系统1CH型中断向量

48、MOV AX, 351CHINT 21HMOV WORD PTR OLD1C, BX MOV WORD PTR OLD1C+2,ESRET READ1C ENDP ;- WRITE1C PROC ;写入用户1CH型中断向量PUSH DSMOV AX, CODEMOV DS, AXMOV DX, OFFSET SERVICEMOV AX, 251CHINT 21HPOP DSRET WRITE1C ENDP,实模式下的定时中断程序设计,;- RESET PROC ;恢复系统1CH型中断向量;注意:下面给DX和DS赋值的顺序不能颠倒MOV DX, WORD PTR OLD1CMOV DS, WORD PTR OLD1C+2MOV AX, 251CHINT 21HRET RESET ENDPCODE ENDSEND START,实模式下的定时中断程序设计,本章要点,1、中断基本概念(中断、中断源、中断系统及其功能、中断指令、中断向量、中断向量表及其作用); 2、PC系统中断分类 (CPU中断、软件中断及响应过程、硬件中断(可屏蔽与非屏蔽中断的概念与区别、响应条件); 3、系统响应可屏蔽中断的过程; 4、PC/AT系统的可屏蔽中断结构(几个重要的中断源、中断类型码和中断响应过程); 5、中断类程序的设计。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报