c语言中中断服务子程序与其他子程序的区别

c语言中中断服务子程序与其他子程序的区别,第1张

中断是单片机的一个重要功能,中断子程序专为执行中断功能,它是在发生中断后,自动执行的,不需要主程序调用;普通子函数要主程序调用才能执行。

汇编里的区别

普通子函数用RET返回;中断子程序用RETI返回,RETI返回时要清除中断标志的;

普通子函数调用时直接进入函数入口地址,中断函数在中断发生时先进中断入口

03H、08H、13H、18H、23H后随即写一个跳转指令,再跳转到相应语句。

C语言区别:

普通子函数用的是C语言里的主函数调用子函数的方法,子函数可以有参数,有返回值;中断函数没有参数,没有返回值;

中断函数的写法也不一样,以80c51为例:

void

INT0()

interrupt

0

using

1

{

}

interrupt

0不是是外部中断0引发的中断,必须写;

using

1

表示在中断函数里用第一组寄存器R0-R7这个可以省略。

中断程序其实是子程序中的特殊的一种。两则都是程序调用,区别在于子程序是和PLC的扫描时间挂钩,如同你理解的那样。但是中断程序和PLC的扫描时间无关,可以随时触发调用。因为它们是调用1MS单位的时间继电器来触发中断,时间一到,不管主程序扫描到哪,立即调用执行中断程序,能最大限度的保证所处理的中断程序的时间的准确性,一般用于PID,编码器等对处理时间要求很严格的事件。

所以,如果中断事件对时间要求不高,也可以当成子程序来调用。

差别:

⑴ 中断请求信号可以由外部设备发出,是随机的;子程序调用却是由软件编排好的。

⑵ 中断响应后由固定的矢量地址转入中断服务程序,而子程序地址由软件设定。

⑶ 中断响应是受控的,其响应时间会受一些因素影响;子程序响应时间是固定的。

以上就是关于c语言中中断服务子程序与其他子程序的区别全部的内容,包括:c语言中中断服务子程序与其他子程序的区别、plc指令中“ 子程序调用”“ 中断”的区别、在单片机中子程序与中断服务程序的异同点。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9827913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存