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

有什么相同和不同... 有什么相同和不同 展开
 我来答
waiting320
2010-01-17 · 超过12用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:27.4万
展开全部
相同:都是子程序
不同:普通子程序 按程序执行顺序一步步执行 到他了 他才运行 不到他 他老实的等着
中断服务子程序 可以根据中断请求快速执行,比如外部下降沿中断,单片机在检测到他的管脚突然由高电平变成低电平的时候就会放弃现在正在执行的普通子程序,调用你的中断服务程序。检测和调用过程都是单片机自动完成的,你只要给他初始化了然后写好中断后要调用的子程序就不用你管了。

再举个简单的例子。
比如你们的单片机老师在给你们讲课,讲课的内容可以是第一节 第二节,这就是一个个的子程序,普通子程序。突然地震了,就要执行应急程序,指挥你们撤离,你老师就得放弃现在正在执行的这些普通子程序去执行撤离这个级别比较高的中断服务程序。
hychyc_2008
2010-01-17 · TA获得超过9741个赞
知道大有可为答主
回答量:1099
采纳率:100%
帮助的人:682万
展开全部
答:
中断是单片机的一个重要功能,中断子程序专为执行中断功能,它是在发生中断后,自动执行的,不需要主程序调用;普通子函数要主程序调用才能执行。

汇编里的区别:
普通子函数用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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
霂璇尹凝伪9x
2010-01-17 · TA获得超过195个赞
知道答主
回答量:180
采纳率:0%
帮助的人:102万
展开全部
中断服务子程序是一旦检测到有中断请求则单片机响应中断,转入中断服务子程序,执行完后再返回主程序。
普通服务子程序是等待主程序当中的调用,执行完后再返回。
两者没什么本质的区别
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuzhimin9514
2010-01-18 · TA获得超过355个赞
知道答主
回答量:215
采纳率:0%
帮助的人:174万
展开全部
前几位说的都很好 我也说说
普通子程序:必须在主程序中以call 的形式调用,才会执行到他。
中断服务子程序:想执行一般有很多条件,但这些条件一旦具备,cpu就会义无反顾的去执行中断服务子程序(当然,要先把正在执行的一条指令执行完毕以后才过去)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式