4个回答
展开全部
相同:都是子程序
不同:普通子程序 按程序执行顺序一步步执行 到他了 他才运行 不到他 他老实的等着
中断服务子程序 可以根据中断请求快速执行,比如外部下降沿中断,单片机在检测到他的管脚突然由高电平变成低电平的时候就会放弃现在正在执行的普通子程序,调用你的中断服务程序。检测和调用过程都是单片机自动完成的,你只要给他初始化了然后写好中断后要调用的子程序就不用你管了。
再举个简单的例子。
比如你们的单片机老师在给你们讲课,讲课的内容可以是第一节 第二节,这就是一个个的子程序,普通子程序。突然地震了,就要执行应急程序,指挥你们撤离,你老师就得放弃现在正在执行的这些普通子程序去执行撤离这个级别比较高的中断服务程序。
不同:普通子程序 按程序执行顺序一步步执行 到他了 他才运行 不到他 他老实的等着
中断服务子程序 可以根据中断请求快速执行,比如外部下降沿中断,单片机在检测到他的管脚突然由高电平变成低电平的时候就会放弃现在正在执行的普通子程序,调用你的中断服务程序。检测和调用过程都是单片机自动完成的,你只要给他初始化了然后写好中断后要调用的子程序就不用你管了。
再举个简单的例子。
比如你们的单片机老师在给你们讲课,讲课的内容可以是第一节 第二节,这就是一个个的子程序,普通子程序。突然地震了,就要执行应急程序,指挥你们撤离,你老师就得放弃现在正在执行的这些普通子程序去执行撤离这个级别比较高的中断服务程序。
展开全部
答:
中断是单片机的一个重要功能,中断子程序专为执行中断功能,它是在发生中断后,自动执行的,不需要主程序调用;普通子函数要主程序调用才能执行。
汇编里的区别:
普通子函数用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
中断是单片机的一个重要功能,中断子程序专为执行中断功能,它是在发生中断后,自动执行的,不需要主程序调用;普通子函数要主程序调用才能执行。
汇编里的区别:
普通子函数用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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
中断服务子程序是一旦检测到有中断请求则单片机响应中断,转入中断服务子程序,执行完后再返回主程序。
普通服务子程序是等待主程序当中的调用,执行完后再返回。
两者没什么本质的区别
普通服务子程序是等待主程序当中的调用,执行完后再返回。
两者没什么本质的区别
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前几位说的都很好 我也说说
普通子程序:必须在主程序中以call 的形式调用,才会执行到他。
中断服务子程序:想执行一般有很多条件,但这些条件一旦具备,cpu就会义无反顾的去执行中断服务子程序(当然,要先把正在执行的一条指令执行完毕以后才过去)
普通子程序:必须在主程序中以call 的形式调用,才会执行到他。
中断服务子程序:想执行一般有很多条件,但这些条件一旦具备,cpu就会义无反顾的去执行中断服务子程序(当然,要先把正在执行的一条指令执行完毕以后才过去)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询