精华内容
下载资源
问答
  • 1.子程序调用是预先安排好的,程序中断是随机发生的; 2.调用子程序,是为主程序服务的,而中断程序与主程序的程序毫无关系; 3.子程序是由调用指令给出目标地址,中断是通过...中断服务程序 调用子程 序随机产生的

    1.子程序调用是预先安排好的,程序中断是随机发生的;

    2.调用子程序,是为主程序服务的,而中断程序与主程序的程序毫无关系;

    3.子程序是由调用指令给出目标地址,中断是通过隐指令获得中断服务程序的入口地址

     

     

    中断服务程序                                           调用子程

    序随机产生的                                     程序中事先安排好的

    保护断点、保护现场                             只保护断点

    为外设服务和处理各种事件                 为主程序服务

     

     

    http://www.eetimes.com/design/embedded

     

    Embedded Systems Programming      Jones, Nigel

    展开全文
  • 程序中断和调用子程序有何区别

    万次阅读 多人点赞 2015-12-01 00:57:31
    两者的根本区别表现在服务时间服务对象上不一样。 1)调用子程序发生的时间是已知的固定的,即在主程序的调用指令(CALL)执行时发生主程序调用...也可以说,调用子程序是程序设计者事先安排好的,而执行中断服务

    两者的根本区别表现在服务时间和服务对象上不一样。

    1)调用子程序发生的时间是已知的和固定的,即在主程序的调用指令(CALL)执行时发生主程序调用子程序过程,调用指令所在位置是已知的和固定的;而中断过程发生的时间一般是随机的,CPU在执行某一主程序时受到中断源提出的中断申请,就发生中断过程,而中断申请一般由硬件电路产生,申请时间是随机的。也可以说,调用子程序是程序设计者事先安排好的,而执行中断服务程序是由系统工作环境随机决定的。

    2)子程序完全为主程序服务,两者属于主从关系。主程序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。而中断服务程序与主程序二者一般是无关的,两者是平行关系。

    3)主程序调用子程序的过程完全属于软件处理过程,不需要专门的硬件电路,而中断处理系统是一个软、硬件结合的系统,需要专门的硬件电路才能完成中断处理的过程。

    4)子程序嵌套可以实现若干级,嵌套的最多级数受计算机内存开辟的堆栈大小限制;而中断嵌套级数主要由中断优先级来决定,一般优先级不会很大。


    从宏观上看,虽然程序中断方式克服了程序查询方式中CPU"踏步"现象,实现了CPU与IO并行工作,提高了CPU的资源利用率,但从微观操作分析,CPU在处理中断程序时,仍需暂停原程序的正常运行,尤其是当高速I/O设备或辅助存储器频繁地、成批地与主存交换信息时,需不断打断CPU执行现行程序,而执行中断服务程序。

    展开全文
  • 这样对PIC来说,无论发生何种中断程序 将自动转移执行04H处程序语句,为了区分到底是哪种中断发生就必须在中断服务程序中通过判断中断标志位来确定并转移到相应中断服务 程序中。在发生中断时,断点地址被首先压...
  • 中断服务函数与函数调用的区别

    千次阅读 2019-12-23 17:02:06
    51单片机为例),中断过程既是教学难点又是教学重点,它与主程序调用子程序过程有一定相似性,但又有很大区别,调用子程序过程相对比较容易掌握,通过把两过程结合起来,采用比较教学方法,能收到了很好教学效果。...

    在《微机原理》和《计算机组成》等课程[1-4]教学中(本文以MCS-51单片机为例),中断过程既是教学难点又是教学重点,它与主程序调用子程序过程有一定相似性,但又有很大区别,调用子程序过程相对比较容易掌握,通过把两过程结合起来,采用比较教学方法,能收到了很好的教学效果。

    1、两过程定义与作用

    子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。
    
    子程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。一般微机首先执行主程序,碰到调用指令就转去执行子程序,子程序执行完后,返回指令就返回主程序断点(即调用指令的下一条指令),继续执行没有处理完的主程序,这一过程叫做(主程序)调用子程序过程。
    

    子程序结构可简化程序,防止重复书写错误,并可节省内存空间。计算机中经常把常用的各种通用的程序段编成子程序,提供给用户使用。用户在自己编写的程序中,只要会调用这些子程序,就可大大简化用户编程的困难。

    中断是计算机中央处理单元CPU与外设I/O交换数据的一种方式,除此方式外,还有无条件、条件(查询)、存贮器直接存取DMA和I/O通道等四种方式。由于无条件不可靠,条件效率低,DMA和I/O通道两方式硬件复杂,而中断方式CPU效率高,因此一般大多采用中断方式。
    

    中断概念是当计算机正在执行某一(主)程序时,收到一中断请求,如果中断响应条件成立,计算机就把正在执行的程序暂停一下,去响应处理这一请求,执行中断服务程序,处理完服务程序后,中断返回指令使计算机返回原来还没有执行完的程序断点处继续执行,这一过程称为中断过程。有了中断,计算机才能具有并行处理,实时处理和故障处理等重要功能。

    2、两过程的联系与区别

    2.1联系

    中断与调用子程序两过程属于完全不同的概念,但它们也有不少相似之处。两者都需要保护断点(即下一条指令地址)、跳至子程序或中断服务程序、保护现场、子程序或中断处理、恢复现场、恢复断点(即返回主程序)。两者都可实现嵌套,即正在执行的子程序再调另一子程序或正在处理的中断程序又被另一新中断请求所中断,嵌套可为多级。
    

    正是由于这些表面上的相似处,很容易使学生把两者混淆起来,特别是把中断也看为子程序,这就大错特错了。

    2.2区别

    中断过程与调用子程序过程相似点是表面的,从本质上讲两者是完全不一样的。
    

    两者的根本区别主要表现在服务时间与服务对象不一样上。首先,调用子程序过程发生的时间是已知和固定的,即在主程序中的调用指令(CALL)执行时发生主程序调用子程序,调用指令所在位置是已知和固定的。而中断过程发生的时间一般的随机的,CPU在执行某一主程序时收到中断源提出的中断申请时,就发生中断过程,而中断申请一般由硬件电路产生,申请提出时间是随机的(软中断发生时间是固定的),也可以说,调用子程序是程序设计者事先安排的,而执行中断服务程序是由系统工作环境随机决定的;其次,子程序完全为主程序服务的,两者属于主从关系,主程序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。而中断服务程序与主程序两者一般是无关的,不存在谁为谁服务的问题,两者是平行关系;第三,主程序调用子程序过程完全属于软件处理过程,不需要专门的硬件电路,而中断处理系统是一个软、硬件结合系统,需要专门的硬件电路才能完成中断处理的过程;第四,子程序嵌套可实现若干级,嵌套的最多级数由计算机内存开辟的堆栈大小限制,而中断嵌套级数主要由中断优先级数来决定,一般优先级数不会很大。


    中断是嵌入式系统中重要的组成部分,但是在标准C中不包含中断。许多编译开发商在标准C上增加了对中断的支持,提供新的关键字用于标示中断服务程序 (ISR),类似于__interrupt、#program interrupt等。当一个函数被定义为ISR的时候,编译器会自动为该函数增加中断服务程序所需要的中断现场入栈和出栈代码。

    中断服务程序需要满足如下要求:

    (1)不能返回值;

    (2)不能向ISR传递参数;

    (3) ISR应该尽可能的短小精悍;

    (4) printf(char * lpFormatString,…)函数会带来重入和性能问题,不能在ISR中采用。

    参阅网上资料和个人的一些理解

    a.为什么不能有返回值?

    中断服务函数的调用是硬件级别的,当中断产生,pc指针强制跳转到对应的中断服务函数入口,进入中断具有随机性,并不是某段代码对其进行调用,那么如果有返回值它的返回值返回给谁?显然这个返回值毫无意义,如果有返回值,它必定需要进行压栈操作,这样一来何时出栈怎么出栈将变得无法解决。

    b.不能向ISR传递参数?

    同理,也是由于这样会破坏栈的原因,因为函数传递参数必定会要求压栈出栈操作,由于进入中断服务函数的随机行,谁给它传递参数都成问题

    c.ISR应尽可能的短小精悍?

    如果某个中断频繁产生,而它对应的ISR相当的耗时,那么对中断的响应就会无限的延迟,会丢掉很多的中断请求

    d.printf(char * lpFormatString,…)函数会带来重入和性能问题,不能在ISR中采用。

    这就涉及到一个中断嵌套问题,由于printf之类的glibc函数采用的是缓冲机制,这个缓冲区是共享的,相当于一个全局变量,第一层中断来时,它向缓冲里面写入一些部分内容,恰好这时来了个优先级更高的中断,它同样调用了printf,也向缓冲里面写入一些内容,这样缓冲区的内容就错乱了。
    http://www.cnblogs.com/thammer/p/5017329.html

    展开全文
  • 在《微机原理》《计算机组成》等课程[1-4]教学中(本文以MCS-51单片机为例),中断过程既是教学难点又是教学重点,它与主程序调用子程序过程有一定相似性,但又有很大区别,调用子程序过程相对比较容易掌握,通过...
    
    

    在《微机原理》和《计算机组成》等课程[1-4]教学中(本文以MCS-51单片机为例),中断过程既是教学难点又是教学重点,它与主程序调用子程序过程有一定相似性,但又有很大区别,调用子程序过程相对比较容易掌握,通过把两过程结合起来,采用比较教学方法,能收到了很好的教学效果。 
    1、两过程定义与作用
        子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。
        子程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。一般微机首先执行主程序,碰到调用指令就转去执行子程序,子程序执行完后,返回指令就返回主程序断点(即调用指令的下一条指令),继续执行没有处理完的主程序,这一过程叫做(主程序)调用子程序过程。
    子程序结构可简化程序,防止重复书写错误,并可节省内存空间。计算机中经常把常用的各种通用的程序段编成子程序,提供给用户使用。用户在自己编写的程序中,只要会调用这些子程序,就可大大简化用户编程的困难。 
        中断是计算机中央处理单元CPU与外设I/O交换数据的一种方式,除此方式外,还有无条件、条件(查询)、存贮器直接存取DMA和I/O通道等四种方式。由于无条件不可靠,条件效率低,DMA和I/O通道两方式硬件复杂,而中断方式CPU效率高,因此一般大多采用中断方式。
    中断概念是当计算机正在执行某一(主)程序时,收到一中断请求,如果中断响应条件成立,计算机就把正在执行的程序暂停一下,去响应处理这一请求,执行中断服务程序,处理完服务程序后,中断返回指令使计算机返回原来还没有执行完的程序断点处继续执行,这一过程称为中断过程。有了中断,计算机才能具有并行处理,实时处理和故障处理等重要功能。 
    2、两过程的联系与区别
    2.1联系
        中断与调用子程序两过程属于完全不同的概念,但它们也有不少相似之处。两者都需要保护断点(即下一条指令地址)、跳至子程序或中断服务程序、保护现场、子程序或中断处理、恢复现场、恢复断点(即返回主程序)。两者都可实现嵌套,即正在执行的子程序再调另一子程序或正在处理的中断程序又被另一新中断请求所中断,嵌套可为多级。
    正是由于这些表面上的相似处,很容易使学生把两者混淆起来,特别是把中断也看为子程序,这就大错特错了。
    2.2区别
        中断过程与调用子程序过程相似点是表面的,从本质上讲两者是完全不一样的。
    两者的根本区别主要表现在服务时间与服务对象不一样上。首先,调用子程序过程发生的时间是已知和固定的,即在主程序中的调用指令(CALL)执行时发生主程序调用子程序,调用指令所在位置是已知和固定的。而中断过程发生的时间一般的随机的,CPU在执行某一主程序时收到中断源提出的中断申请时,就发生中断过程,而中断申请一般由硬件电路产生,申请提出时间是随机的(软中断发生时间是固定的),也可以说,调用子程序是程序设计者事先安排的,而执行中断服务程序是由系统工作环境随机决定的;其次,子程序完全为主程序服务的,两者属于主从关系,主程序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。而中断服务程序与主程序两者一般是无关的,不存在谁为谁服务的问题,两者是平行关系;第三,主程序调用子程序过程完全属于软件处理过程,不需要专门的硬件电路,而中断处理系统是一个软、硬件结合系统,需要专门的硬件电路才能完成中断处理的过程;第四,子程序嵌套可实现若干级,嵌套的最多级数由计算机内存开辟的堆栈大小限制,而中断嵌套级数主要由中断优先级数来决定,一般优先级数不会很大。
    http://blog.csdn.net/douyuhua0918/article/details/7473254

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

     

      参阅网上资料和个人的一些理解

      a.为什么不能有返回值?

        中断服务函数的调用是硬件级别的,当中断产生,pc指针强制跳转到对应的中断服务函数入口,进入中断具有随机性,并不是某段代码对其进行调用,那么如果有返回值它的返回值返回给谁?显然这个返回值毫无意义,如果有返回值,它必定需要进行压栈操作,这样一来何时出栈怎么出栈将变得无法解决。

      b.不能向ISR传递参数?

        同理,也是由于这样会破坏栈的原因,因为函数传递参数必定会要求压栈出栈操作,由于进入中断服务函数的随机行,谁给它传递参数都成问题

      c.ISR应尽可能的短小精悍?

        如果某个中断频繁产生,而它对应的ISR相当的耗时,那么对中断的响应就会无限的延迟,会丢掉很多的中断请求

      d.printf(char * lpFormatString,…)函数会带来重入和性能问题,不能在ISR中采用。

        这就涉及到一个中断嵌套问题,由于printf之类的glibc函数采用的是缓冲机制,这个缓冲区是共享的,相当于一个全局变量,第一层中断来时,它向缓冲里面写入一些部分内容,恰好这时来了个优先级更高的中断,它同样调用了printf,也向缓冲里面写入一些内容,这样缓冲区的内容就错乱了。

    http://www.cnblogs.com/thammer/p/5017329.html





    展开全文
  • 目录 IO结构功能: 查询、中断、DMA方式。 查询方式 中断方式 ...在裸机中中断,在某一时刻中断发生,执行中断服务程序中断服务程序执行完成后,返回中断发生处继续执行其它程序。(保护现场)。
  • 中断调用子程序的那点破事2.1联系2.2区别3.常见题型   今天来学习记录下中断服务函数(ISR)。关于中断,其实大家或多或少都会了解过,那么,在笔试&面试中,关于中断服务子函数,我们又需要知道那些知识点...
  • 单片机汇编指令中RETIRET的区别

    千次阅读 2015-06-28 11:40:50
    通常情况下,在普通的汇编子程序中用RET做返回,在中断服务子程序中用RETI起中断返回作用。两条指令都能从堆栈中弹出断点地址并装入PC中,使CPU回到原来主程序的断点处继续运行。 然而,RETRETI有本质的区别:...
  • 【STM32F0系列学习】之—中断事件1、什么是“中断...CPU执行程序时,由于发生了某种随机事件(外部或内部),引起CPU暂时中断正在运行程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事
  • 中断描述符放在中断描述符表里(IDT),也是这个IDT将中断向量和中断服务程序联系起来,他们之间关系如下图:  那中断向量怎么来得呢,其实每一种中断(异常)都会对应一个中断向量号,具体有哪些中断
  • 中断服务程序和标准过程最大区别是 汇编程序可以有任意个过程,中断服务子程序最多有256个过程、 INT指令共有四中不同格式: 《1》 int n  n是中断号,这就允许用户程序调用256个中断服务子程序...
  • 理解变量的存储种类存储类型理解中断服务程序与调用子程序的区别 ?熟悉C51程序设计及应用技巧了解C语言与汇编语言混合编程的方法; 1C51程序结构 汇编语言虽然有执行效率高的优点但其可读性和可移植性差编程效率低...
  • 中断服务程序和标准过程最大区别是 汇编程序可以有任意个过程,中断服务子程序最多有256个过程、 INT指令共有四中不同格式: 《1》 int n  n是中断号,这就允许用户程序调用256个中断...
  • int指令的最终功能call指令类似,都是调用一段...1)调用子程序发生的时间是已知的固定的,即在主程序的调用指令(CALL)执行时发生主程序调用子程序过程,调用指令所在位置是已知的固定的;而中断过程发生的时间
  • volatile 也是个单词嘛,解释是易变,不稳定,也就是定义为volatile变量可能会被意想不到地改变,这样,编译器就不会去假设这...2)一种中断服务子程序中会访问到底额非自动变量。 3)多线程应用中被几个任务共
  • 从狭义上来说:是一段程序的执行过程 从广义上来说:进程是一个具有独立功能的程序关于某个数据集的一次运行活动,它是操作系统动态执行的基本单元 线程 线程可以理解为进程中独立运行的任务,作为独立运行...
  • 疯狂内核之——进程管理系统

    热门讨论 2011-05-30 23:31:24
    2.5.4 中断服务例程 115 2.5.5 IRQ线动态分配 116 2.6 下半部分 117 2.6.1 软中断 118 2.6.2 tasklet 121 2.6.3 工作队列 122 2.7定时器中断 124 2.7.1 时钟与定时器 124 2.7.2 定时器中断相关数据结构 127 ...
  • 本书配光盘,书中实例源程序和相关资料可在对应章节文件夹中找到。 本书是从事串口及网络通信技术人员和学习者极佳参考资料,也可以作为数据通信课程辅助教材。 作者简介 龚建伟,工学博士,目前在北京...
  • 常见例:子中断服务子程序修改一个指向一个buffer指针时,必须用volatile来修饰这个指针。 说明:指针是一种普通变量,从访问上没有什么不同于其他变量特性。其保存数值是个整型数据,整型变量不同是...
  • 本书配光盘,书中实例源程序和相关资料可在对应章节文件夹中找到。 本书是从事串口及网络通信技术人员和学习者极佳参考资料,也可以作为数据通信课程辅助教材。 作者简介 龚建伟,工学博士,目前在北京...
  • 1、中断过程与子程序调用的区别 答:两者的根本区别主要表现在服务时间与服务对象不一样上。首先,调用子程序过程发生的时间是已知固定的,即在主程序中的调用指令(CALL)执行时发生主程序调用子程序,调用指令...
  • IIS6.0 IIS,互联网信息服务

    热门讨论 2010-08-23 21:20:55
     一、IIS添加 请进入“控制面板”,依次选“添加/删除程序→添加/删除Windows组件”,将“Internet信息服务(IIS)”前小钩去掉(如有),重新勾选中后按提示操作即可完成IIS组件添加。用这种方法添加IIS...
  • 中断及中断服务程序。定时中断服务及时钟节拍服务函数OSTimTick()作用 CPU相应中断条件:1至少有一个中断源向CPU 发出信号 2系统允许信号且未对此信号屏蔽。 钟节拍服务函数OSTimTick()作用:1把用来记录...
  • del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下所有目录文件。同时使用参数/Q 可取消删除操作时系统确认就直接删除。(二个命令作用相同) move 盘符路径要移动文件名 存放移动文件路径...
  • 块、信号周期测量模块、定时器中断服务模块、浮点数格式化模块、浮点数算 术运算模块、浮点数到BCD 码转换模块。 由于数据处理、脉冲计数/定时、逻辑控制显示译码都是在单片机里完成 ,所以我们可以把系统分为...
  • 昆山工业技术研究院着眼于为委托用户质检机构搭建良好沟通桥梁,免去目前市场业务中企业用户需要实地地并频繁地与检测机构沟通,从而提出自己委托乃至下委托单、等待检测报告等,设计并研发了市场上首款提供...
  • 单片机期末考试题目及答案详解

    热门讨论 2009-06-23 10:30:30
    对于由8031构成的单片机应用系统,EA脚应接 ,中断响应并自动生成长调用指令LCALL后,应转向 去执行中断服务程序。 单选题: 1.80C51与8031的区别在于 内部ROM的容量不同 内部RAM的容量不同 内部ROM的类型不同 80C...
  • 疯狂程序员

    热门讨论 2012-07-18 18:05:32
    室里一个人――不一样,这间寝室有个不属于这个班人――他叫王江。 王江他特别,不仅因为他不是这班,还因为他吹牛皮很特别。 大一晚上谈什么?当然是谈高考。 于是王江就叹息:哎呀,差一分呐。 土匪...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

中断服务程序和子程序的区别