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

有什么相同和不同

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

再举个简单的例子。
比如你们的单片机老师在给你们讲课,讲课的内容可以是第一节 第二节,这就是一个个的子程序,普通子程序。突然地震了,就要执行应急程序,指挥你们撤离,你老师就得放弃现在正在执行的这些普通子程序去执行撤离这个级别比较高的中断服务程序。
温馨提示:答案为网友推荐,仅供参考
第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.这个可以省略。

要进一步了解,参考:




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

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网