单片机问答题:比较中断服务子程序与普通子程序的异同

有什么相同和不同

相同:都是子程序
不同:普通子程序 按程序执行顺序一步步执行 到他了 他才运行 不到他 他老实的等着
中断服务子程序 可以根据中断请求快速执行,比如外部下降沿中断,单片机在检测到他的管脚突然由高电平变成低电平的时候就会放弃现在正在执行的普通子程序,调用你的中断服务程序。检测和调用过程都是单片机自动完成的,你只要给他初始化了然后写好中断后要调用的子程序就不用你管了。

再举个简单的例子。
比如你们的单片机老师在给你们讲课,讲课的内容可以是第一节 第二节,这就是一个个的子程序,普通子程序。突然地震了,就要执行应急程序,指挥你们撤离,你老师就得放弃现在正在执行的这些普通子程序去执行撤离这个级别比较高的中断服务程序。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-17
答:
中断是单片机的一个重要功能,中断子程序专为执行中断功能,它是在发生中断后,自动执行的,不需要主程序调用;普通子函数要主程序调用才能执行。

汇编里的区别:
普通子函数用RET返回;中断子程序用RETI返回,RETI返回时要清除中断标志的;
普通子函数调用时直接进入函数入口地址,中断函数在中断发生时先进中断入口
03H、08H、13H、18H、23H后随即写一个跳转指令,再跳转到相应语句。

C语言区别:
普通子函数用的是C语言里的主函数调用子函数的方法,子函数可以有参数,有返回值;中断函数没有参数,没有返回值;
中断函数的写法也不一样,以80c51为例:
void INT0() interrupt 0 using 1
{

}

interrupt 0不是是外部中断0引发的中断,必须写; using 1
表示在中断函数里用第一组寄存器R0-R7.这个可以省略。

要进一步了解,参考:
http://z.baidu.com/question/84264993.html

http://z.baidu.com/question/100717950.html

http://z.baidu.com/question/81735469.html?fr=qrl&cid=865&index=5本回答被提问者采纳
第2个回答  2010-01-17
中断服务子程序是一旦检测到有中断请求则单片机响应中断,转入中断服务子程序,执行完后再返回主程序。
普通服务子程序是等待主程序当中的调用,执行完后再返回。
两者没什么本质的区别
第3个回答  2010-01-18
前几位说的都很好 我也说说
普通子程序:必须在主程序中以call 的形式调用,才会执行到他。
中断服务子程序:想执行一般有很多条件,但这些条件一旦具备,cpu就会义无反顾的去执行中断服务子程序(当然,要先把正在执行的一条指令执行完毕以后才过去)

中断服务子程序和普通子程序有什么区别
1、程序是否提前安排好:中断服务程序是随机的,而普通子程序是预先安排好的。2、结束程序不同:中断服务子程序以RETI结束,而一般子程序以RET结束。3、结束动作不同:中断服务子程序RETI除将断点弹回PC动作外,还要清除对应的中断优先标志位,以便新的中断请求能被响应。一般子程序则无此项操作。

中断服务程序与普通子程序有哪些相同和不同之处???
不同点:一、执行方式不同 1、中断服务程序:中断函数是发生中断后,自动执行的,不需要主函数调用,是否执行,取决于相应的中断事件是否发生。2、普通子程序:普通子函数要主函数调用才能执行。二、使用情况不同 1、中断服务程序:中断函数在中断发生时,先进入中断入口地址,再通过中断入口地址处放置的...

单片机终端子程序和一般子程序有什么区别
中断程序一般是靠硬件来触发的,普通子程序是要靠主程序调用才能执行的;中断程序的优先级比普通子程序高,一般会优先执行中断程序的。

单片机调用中断服务子程序和调用子程序的区别是什么
中断服务子程序入口地址相对某一中断是固定的,调用子程序的偏移地址是随机的,基本过程差不多,返回时,中断服务子程序用的是reti 调用子程序是ret 调用中断服务子程序和调用子程序都会把当前偏移地址的下一地址压栈,但调用子程序的返回指令ret不影响标志位,reti从中断程序返回,并会清除内部相应的中断...

在单片机中子程序与中断服务程序的异同点。
相似点:⑴ 都是中断当前正在执行的程序,都要通过执行返回指令,返回到原来的程序。⑵ 都是由硬件自动地把断点地址压入堆栈;当执行到返回指令时,自动弹出断点地址以便返回原来的程序。⑶都要通过软件完成现场保护和现场恢复。⑷ 都可以实现嵌套。

单片机中子程序和中断服务程序有何异同?为什么子程序返回指令RET和中断...
子程序是一段程序代码,是独立的一个执行部分,你主程序调用就执行,不调用就不执行;而中断服务程序也是是一段程序代码,是独立的一个执行部分;但是只在你主程序开了中断,并且有中断条件(不如中断口接收到低电平,定时时间到了)才会去执行,并且中断服务程序会将你主程序运行时的PC指针寄存器,A...

...服务程序的返回指令和子程序的返回指令有什么区别?是多少?
RET用于一般程序的返回 RETI用于中断函数的返回 以上是一般单片机书籍简绍的,然而在实际应用中,我发现,在程序返回中一样可以使用RETI,而在中断返回中却无法使用RET,究其原因是因为RETI比RET多做一件事情就是将“优先级生效”触发器清零 原来在8051构架中--中断系统中含有两个不可寻址的“优先级生效...

中断服务子程序和中断请求子程序有什么区别?
1、方式不同 当某一中断源响应后,单片机中的RETI将会自动置位,用于阻止比它低级或同级的中断触发。RETI可以清除“优先级激活触发器”(即flag寄存器),以保证后续中断源的及时响应。所以,当把RETI替换为RET后,该程序在第一次运行时可能不会出错,但在第二次运行时就会出错了。2、过程不同 RET是从...

有没有单片机的考试样卷啊
11.中断服务子程序与普通子程序有哪些相同和不同之处?答:RETI指令在返回时,同时清除中断系统中相应的优先级触发器,以允许下次中断,而RET指令则没有这个操作。除了这一点两条指令不同外,其他操作都相同。12.中断响应的条件是什么?答:总中断允许开关接通EA=1;该中断源发出中断请求;该中断源的中断允许位=1;五...

中断和函数调用的区别
51单片机中断服务函数与其他函数的差异性:1,中断函数与普通函数相比要注意在入口屏蔽一些中断,在出口恢复,防止中断函数在处理重要工作中,又被中断重入,导致处理异常。2,中断函数还要注意在入口保存重要的寄存器状态,特别是函数中用到的寄存器,在出口恢复,防止中断函数结束后给正常程序带来异常。3,...

相似回答