精华内容
下载资源
问答
  • 中断服务程序设计实验

    千次阅读 2014-04-27 19:54:28
    中断服务程序设计实验 2.7.1 实验目的 1、 熟悉中断的概念、中断响应过程、中断向量表以及系统是如何根据中断类型号在中断向量表中得到该中断对应的中断服务程序的入口地址等内容。 2、 掌握中断服务程序的...

    中断服务程序设计实验

    2.7.1 实验目的

    1、 熟悉中断的概念、中断响应过程、中断向量表以及系统是如何根据中断类型号在中断向量表中得到该中断对应的中断服务程序的入口地址等内容。

    2、 掌握中断服务程序的设计方法。

    2.7.2 实验预习要求

    1、 复习中断的有关内容。

    2、 复习中断服务程序设计方法。

    3、 读懂“2.7.4 实验内容”中给出的源程序,以便上机调试。

    4、 从“2.7.5 实验习题”中任选一道题目,编写源程序,以便上机调试。

    2.7.3 中断服务程序设计方法简介

    由2.6节中的中断向量表可以看出,PC中断系统中中断类型可分为三类:

    磁盘操作系统DOS提供的中断服务程序,中断类型号从20H到2FH;

    系统主板BIOS芯片提供的BIOS中断服务程序,包括系统内部中断,中断类型号从00H到07H;系统8级外部中断,中断类型号从08H到0FH,它们对应于接在可编程中断控制器8259A的8个中断请求输入端IR0IR7的8个外部中断,其中IR2(中断类型号0AH)为系统保留,用户可通过该引脚实现对用户所需的外部硬件中断的管理;设备驱动程序,中断类型号从10H到1FH等;

    用户定义的中断,中断类型号从60H到7FH、F1H到FFH。用户可根据实际需要将某些通用性强的子程序功能通过中断服务程序来实现。一旦设置好了这样的中断服务程序,在其他应用程序中就可以调用这些中断服务程序。

    设计中断服务程序的步骤如下:

    1、 选择一个中断类型号

    如果采用硬件中断,则要使用硬件决定的中断类型号。在PC机系统中,使用了一片可编程中断控制器8259A来对外部硬件中断进行管理,具体内容参见教材264页“8259A应用举例”,可以看出IR2为系统保留,其中断类型号为0AH。若用户需要,可将用户所需的外部中断源发来的中断请求信号接到IR2,编写该中断所需的中断服务程序,并将该中断服务程序的入口地址写到中断向量表0AH4AH4+3四个单元中,这样,当接在IR2上的外部中断源发来中断请求信号时,系统就会根据得到的类型号(0AH)到中断向量表中找出其入口地址,并转去执行该中断服务程序。

    如果采用软件中断,即利用执行int n指令的方式执行中断服务程序,则可从系统预留给用户的中断类型号60H7FH、F1HFFH中选择一个。

    2、 将中断服务程序的入口地址置入中断向量表的相应的四个存储单元中

    确定了中断类型号,还要把中断服务程序入口地址置入中断向量表,以保证在中断响应时CPU能自动转入与该类型号相对应的中断服务程序。下面介绍两种将中断服务程序入口地址置入中断向量表的方法。

    (1) 直接装入法

    用传送指令直接将中断服务程序首地址置入矢量表中。设中断类型号为60H(此类型号对应的矢量表地址为从00180H开始的四个连续存储单元)。

    PUSH DS

    XOR AX,AX

    MOV DS,AX ;将数据段寄存器清零

    MOV AX,OFFSET INT60 ;将中断服务程序INT60所在段内的偏移地址送AX

    MOV DS:[0180H],AX ;将中断服务程序偏移地址送中断向量表00180H和00181单元

    MOV AX,SEG INT60 ;将中断服务程序INT60所在段的段地址送AX

    MOV DS:[0180H+2],AX ;将中断服务程序所在代码段的段地址送00182H和00183单元

    POP DS

    (2) DOS系统功能调用法

    功能号(AH)=25H;

    入口参数:(AL)=中断类型号,

    (DS)=中断服务程序入口地址的段地址

    (DX)=中断服务程序入口地址的偏移地址

    下面程序段完成中断类型号为60H的入口地址置入。

    PUSH DS ;保护DS

    MOV DX,OFFSET INT60 ;取服务程序偏移地址

    MOV AX,SEG INT60 ;取服务程序段地址

    MOV DS,AX

    MOV AH,25H ;送功能号

    MOV AL,60H ;送中断类型号

    INT 21H ;DOS功能调用

    POP DS ;恢复DS

    3、 使中断服务程序驻留内存,以便其他应用程序调用

    实现这一步骤的必要性在于:一旦中断服务程序驻留内存后,一般程序员使用这一新增的中断调用就如同调用DOS或BIOS的中断子程序一样,只要了解其入口要求和返回参数就可调用。程序驻留在内存后,它占用的存储区就不会被其他软件覆盖。使程序驻留内存,要求该程序以 .COM形式运行,这种种结构的程序要求入口定位于100H,并且数据和代码均在同一个段内,这样,.COM程序就被定位于低地址区,DOS常在低地址区增加驻留程序,而 .EXE程序被定位于高地址区。

    可采用DOS系统功能调用的方法实现程序驻留内存。

    功能号: (AH)=31H;

    入口参数: (DX)=驻留程序字节数

    该功能使当前程序的DX个字节驻留内存并返回DOS。

    2.7.4 实验内容

    编写一中断服务程序完成(AX)+(BX)结果放在(AX)中。要求中断类型号取60H;使用DOS系统功能调用将中断服务程序AX_BX60的入口地址装入中断向量表;使用INT 60H调用该中断服务程序并用DEBUG观察运行结果是否正确。

    程序框架

    CODE SEGMENT

    ASSUME CS: CODE

    START:

    MOV AX, 01H

    MOV BX, 02H

    INT 60H ;通过软中断指令调用中断服务程序实现(AX)+(BX)

    MOV AH, 4CH

    INT 21H ;返回DOS

    AX_BX60 PROC FAR ;中断服务程序

    ADD AX, BX

    IRET

    AX_BX60 ENDP

    CODE ENDS

    END START

    对上述源程序汇编连接生成*.EXE文件,使用TD观察运行结果,如图所示,执行完INT 60H后,AX寄存器的内容为0003H,结果正确。

    展开全文
  • 中断事件的异常处理通常被称作中断服务程序(ISR)。 除此之外,M0处理器还支持许多系统异常,他们主要用于操作系统和错误处理。 中断服务程序 中断是嵌入式系统中重要的组成部分,但是在标准 C 中不包含中断。...

    M0内核支持的资源

    Cortex-M0处理器最多支持32个外部中断(通常称作 IRQ ),还有一个被称作不可屏蔽中断的特殊中断。
    中断事件的异常处理通常被称作中断服务程序(ISR)。
    除此之外,M0处理器还支持许多系统异常,他们主要用于操作系统和错误处理。

    中断服务程序

    中断是嵌入式系统中重要的组成部分,但是在标准 C 中不包含中断。许多编译开发商在标准 C 上增加了对中断的支持,提供新的关键字用于标示中断服务程序(ISR),类似于__interrupt、#program interrupt 等。当一个函数被定义为 ISR 的时候,编译器会自动为该函数增加中断服务程序所需要的中断现场入栈和出栈代码。中断服务程序需要满足如下要求:
    (1)不能返回值;
    (2)不能向 ISR 传递参数;
    (3) ISR 应该尽可能的短小精悍;
    (4) printf(char * lpFormatString,…)函数会带来重入和性能问题,不能在 ISR 中采用。


    中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。
    __interrupt double compute_area (double radius)
    {
    double area = PI * radius * radius;
    printf(" Area = %f", area);
    return area;
    }
    1). ISR 不能返回一个值。
    2). ISR 不能传递参数。
    3). 在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。
    4). 与第三点一脉相承,printf()经常有重入和性能上的问题。

    展开全文
  • 中断服务程序

    2009-12-14 17:42:00
    中断服务程序 avr-gcc 为中断提供缺省的入口例程,这些例程的名字已固定,用户可通过重写这些例程来处理中断。如果中断没有被用户重写,说明正常情况下不会产生该中断,缺省的中断。Avr-gcc 为重写中断例程提供两个...

    中断服务程序
         avr-gcc 为中断提供缺省的入口例程,这些例程的名字已固定,用户可通过重写这些例程来处理中断。如果中断没有被用户重写,说明正常情况下不会产生该中断,缺省的中断。

    Avr-gcc 为重写中断例程提供两个宏来解决细节的问题,它们是 SIGNAL(signame)和INTERRUPT(signame)。参数signame 为中断名称,它的定义在io.h 中包含。表4-1 列出了ATMega8 的signame 定义,其它器件的signame 定义可查阅相应的ioxxxx.h 文件。
    中断表: ATMega8 中断名称定义


    以下是个外部中断 0 的重写示例:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <avr/signal.h>
    SIGNAL(SIG_INTERRUPT0)
    {
        //中断处理程序
    }
    宏 INTERRUPT 的用法与SIGNAL 类似,区别在于SIGNAL 执行时全局中断触发位被
    清除、其他中断被禁止,INTERRUPT 执行时全局中断触发位被置位、其他中断可嵌套执
    行。
    另外 avr-libc 提供两个API 函数用于置位和清零全局中断触发位,它们分别是:
    void sei(void) 和 void cli(void)。它们是经常用到的。

    展开全文
  • 嵌入式中的中断服务程序

    千次阅读 2018-05-05 16:07:13
    嵌入式中的中断服务程序中断是嵌入式系统中重要的组成部分,但是在标准 C 中不包含中断。许多编译开发商在标准 C 上增加了对中断的支持,提供新的关键字用于标示中断服务程序(ISR),类似于__interrupt、#program ...
                嵌入式中的中断服务程序
    中断是嵌入式系统中重要的组成部分,但是在标准 C 中不包含中断。许多编译开发商在标准 C 上增加了对中断的支持,提供新的关键字用于标示中断服务程序(ISR),类似于__interrupt、#program interrupt 等。当一个函数被定义为 ISR 的时候,编译器会自动为该函数增加中断服务程序所需要的中断现场入栈和出栈代码。
    中断服务程序需要满足如下要求:
    (1)不能返回值;
    (2)不能向 ISR 传递参数;
    (3) ISR 应该尽可能的短小精悍;
    (4) printf(char * lpFormatString,…)函数会带来重入和性能问题,不能在 ISR 中采用。
    展开全文
  • vxworks中断服务程序

    千次阅读 2008-02-01 20:34:00
    vxworks中断服务程序 中断服务程序用来处理来自硬件的中断,是设备驱动程序的重要组成部分。为及时响应外部中断,防止中断丢失.中断服务程序应该尽量的小,只把最必要的任务放在中断服务程序里面执行。一般在系统...
  • TinyThread源码分析之中断 转载请注明来源:cuixiaolei的技术博客 ... TinyThread 是基于Cortex-... IPSR(中断程序状态寄存器),IPSR包含了当前正在执行的中断服务程序编号,用于识别当前中断。  Cortex-M0处理器...
  •  ... 中断处理流程:关中断->保存断电保护现场->判断中断源转到相应的中断服务->开中断->执行相应的中断服务程序(ISR)->关中断->恢复现场恢复断点->开中断->返回断点  中断服务程序的限制
  • 第五章 中断中断服务程序

    千次阅读 2012-12-26 14:07:48
    第五章 中断中断服务程序 一,处理器与外围设备进行通信有两种方式:  1,轮询(效率低下)  2,中断 二,中断原理  当我们在敲击键盘的时候,键盘控制器会发送一个中断给处理器,告诉OS有中断产生,...
  • 中断服务程序的编写

    千次阅读 2007-09-10 10:51:00
    中断服务程序的编写
  • 中断服务程序

    千次阅读 2014-10-14 11:41:48
    包括中断服务程序的入口地址。 中断服务程序:处理器处理“急件”,可理解为是一种服务,是通过执行事先编好的某个特定的程序来完成的,这种处理“急件”的程序被称为——中断服务程序。 当中央处理器正在...
  • ISR:中断服务程序

    千次阅读 2011-02-27 22:36:00
    中断服务程序(Interrupt Service Routines,ISR) ISR:当前中断服务寄存器(In Service Register) 该寄存器用于存放正在被服务的所有中断级,包括尚未服务完而中途被别的中断打断了的中断级。...
  • 中断服务程序的要求

    千次阅读 2009-11-04 18:58:00
    许多编译开发商在标准C上增加了对中断的支持,提供新的关键字用于标示中断服务程序 (ISR),类似于__interrupt、#program interrupt等。当一个函数被定义为ISR的时候,编译器会自动为该函数增加中断服务程序所需要的...
  • 中断处理流程:关中断->保存断电保护现场->判断中断源转到相应的中断服务->开中断->执行相应的中断服务程序(ISR)->关中断->恢复现场恢复断点->开中断->返回断点  中断服务程序的限制 (1)ISR 没有参数并且返回...
  • 系统要想能够应对各种不同的中断信号,总的来看就是需要知道每种信号应该由哪个中断服务程序负责以及这些中断服务程序具体是如何工作的。系统只有事前对这两件事都知道得很清楚,才能正确地响应各种中断信号和异常。...
  • 中断服务程序(ISR)

    千次阅读 2012-08-13 22:23:56
    中断服务程序 关键词:软中断中断向量、中断向量表、TSR内存驻留、DOS重入、中断请求、段地址、偏移量、寄存器、BIOS、DOS、setvect ( )、getvect ( )、keep ( )、disable ( )、enable ( )、geninterrupt ( )、...
  • 中断服务程序的注意点

    千次阅读 2015-11-17 14:40:46
    1. 不能有返回值 2. 不能带入参 3. 不能有重入性和影响性能的...编译开发商在标准C中增加了对中断的支持,提供新的关键字用于表示中断服务程序(ISR),不同的开发商支持不同的关键字,有__interrupt, #program in
  • 这是书上I/O中断部分“单重中断和多重中断服务程序的流程”,我的疑问是: 1、保护现场包括 :a.保护程序断点;b.保存各寄存器内容。书上说: a由中断隐指令完成,b由中断服务程序完成 我理解为:ab都属于保护现场...
  • 中断嵌入 https://blog.csdn.net/yusiguyuan/article/details/23701519   ... 下面的代码使用了__interrupt关键字取定义一个中断服务程序(ISR),请评论下这段代码的问题。 __interrupt double ...
  • 许多编译开发商在标准C上增加了对中断的支持,提供新的关键字用于标示中断服务程序 (ISR),类似于__interrupt、#program interrupt等。当一个函数被定义为ISR的时候,编译器会自动为该函数增加中断服务程序所需要的...
  • windows驱动注册中断服务程序

    千次阅读 2011-08-17 21:11:48
    一个驱动程序的标准中断服务例程的必要功能和建立一个ISR的需求。 8.1 ISR需求 8.1.1 ISR性能 8.1.2 附加的需求的驱动程序例程 8.1.3 建立一个ISR 8.2 ISR基本功能 8.3 ISR重叠I/O操作功能 1.1 ISR需求 一...
  • 在开始写中断函数之前,我们来一起回顾一下,单片机的中断系统。  中断的意思(学习过微机原理与接口技术的同学,没学过单片机,也应该知道),我们在这里就不讲了,首先来回忆下中断系统涉及到哪些问题。  (1)...
  • 关于中断一个完整的中断过程由中断请求、中断判优及屏蔽、中断响应、中断处理及中断返回五个部分组成。在8086/8088微机系统中,中断源的优先权由高到低的顺序依次为:除零数、INT n、INT o、NMI(非屏蔽中断)、INTR...
  •  中断处理流程:关中断->保存断电保护现场->判断中断源转到相应的中断服务->开中断->执行相应的中断服务程序(ISR)->关中断->恢复现场恢复断点->开中断->返回断点 中断服务程序的限制(1)ISR 没有参数并且返回...
  • 在开始写中断函数之前,我们来一起回顾一下,单片机的中断系统。  中断的意思(学习过微机原理与接口技术的同学,没学过单片机,也应该知道),我们在这里就不讲了,首先来回忆下中断系统涉及到哪些问题。  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 367,911
精华内容 147,164
热门标签
关键字:

中断服务程序一般包括