相同点:都是从主函数转到子函数,子函数执行完后又返回主函数。
不同点:
一、执行方式不同
1、中断服务程序:中断函数是发生中断后,自动执行的,不需要主函数调用,是否执行,取决于相应的中断事件是否发生。
二、使用情况不同
1、中断服务程序:中断函数在中断发生时,先进入中断入口地址,再通过中断入口地址处放置的一条无条件转移指令,使程序执行转向中断服务程序入口。
2、普通子程序:普通子函数调用时,直接进入函数入口地址。
三、定义方式不同
1、中断服务程序:中断服务程序用interrupt关键字来定义。
2、普通子程序:是一个大型程序中的某部分代码,由一个或多个语句块组成。
一、主体不同
1、中断服务子程序:是一种服务,是通过执行事先编好的某个特定的程序来完成的。
2、普通子程序:是一个大型程序中的某部份代码,由一个或多个语句块组成。
二、功能不同
1、中断服务子程序:外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作。
2、普通子程序:负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。
三、特点不同
1、中断服务子程序:为了在中断处理结束后能够使进程准确地返回到中断点,系统必须保存当前处理机程序状态字PSW和程序计数器PC等的值。
2、普通子程序:常被使用在汇编语言层级上。子程序的主体是一个代码区块,当被调用时就会进入运行。
参考资料来源:百度百科-子程序
参考资料来源:百度百科-中断服务程序
中断程序其实是子程序中的特殊的一种。两则都是程序调用,区别在于子程序是和PLC的扫描时间挂钩,如同你理解的那样。但是中断程序和PLC的扫描时间无关,可以随时触发调用。因为它们是调用1MS单位的时间继电器来触发中断,时间一到,不管主程序扫描到哪,立即调用执行中断程序,能最大限度的保证所处理的中断程序的时间的准确性,一般用于PID,编码器等对处理时间要求很严格的事件。所以,如果中断事件对时间要求不高,也可以当成子程序来调用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)