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

在单片机c51中如果一个中断服务子程序并在mai.c(主函数在其中)文件中而在另一个c文件中,那么这个中断服务子程序需要在头文件中进行声明吗?
以上的表述可能不明确,先另行表述:
我想问的问题是中断服务子程序与其他子程序的区别。主要是:当中断服务子程序与主函数不在同一个文件中时,中断服务子程序是否需要在主函数所在的文件中进行声明。

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

汇编里的区别:
普通子函数用RET返回;中断子程序用RETI返回,RETI返回时要清除中断标志的;
普通子函数调用时直接进入函数入口地址,中断函数在中断发生时先进中断入口
03H、08H、13H、18H、23H后随即写一个跳转指令,再跳转到相应语句。

C语言区别:
普通子函数用的是C语言里的主函数调用子函数的方法,子函数可以有参数,有返回值;中断函数没有参数,没有返回值;
中断函数的写法也不一样,以80c51为例:
void INT0() interrupt 0 using 1
{

}

interrupt 0不是是外部中断0引发的中断,必须写; using 1
表示在中断函数里用第一组寄存器R0-R7.这个可以省略。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-13
“并在mai.c(主函数在其中)文件中而在另一个c文件中 ” 完全无法理解你这句话啥意思

最好是声明。 这种语法要求跟你怎么用这个函数完全没关系的, 无论是什么函数只要你用到了最好就是先声明本回答被提问者采纳
第2个回答  2009-07-24
中断服务子程序只需添加关键字 interrupt 0/1/2/3/4/5,且不能有返回参数及输入参数,其他使用方法同普通子程序一样.
第3个回答  2009-07-19
要, #include" "这相当于文件包含 只需头文件

中断服务子程序和中断请求子程序有什么区别?
2、过程不同 RET是从子程序返回,返回到LCALL或ACALL指令下一条指令处继续执行程序。RETI是从中断服务子程序返回,返回到中断时的断点处继续执行程序,断点未知。

主函数中,没有调用中断子程序,中断子程序为什么能被执行?何时执行?_百...
1.子程序调用是预先安排好的,程序中断是随机发生的;2.调用子程序,是为主程序服务的,而中断程序与主程序的程序毫无关系;3.子程序是由调用指令给出目标地址,中断是通过隐指令获得中断服务程序的入口地址 看到这个,大概意思应该是:中断程序不同于子程序,不需要主函数main调用就能执行。中断服务程序...

在单片机中子程序与中断服务程序的异同点。
差别:⑴ 中断请求信号可以由外部设备发出,是随机的;子程序调用却是由软件编排好的。⑵ 中断响应后由固定的矢量地址转入中断服务程序,而子程序地址由软件设定。⑶ 中断响应是受控的,其响应时间会受一些因素影响;子程序响应时间是固定的。

reti和ret有什么区别?
RET与RETI在编程语言中体现为不同指令,如在汇编语言中,RET为POP指令用于从栈顶弹出数据并执行,RETI为POP后再执行中断服务程序的下一条指令。在高级编程语言如C语言中,通常通过函数调用与返回实现类似功能,而中断处理则由操作系统或硬件特定API提供。理解RET与RETI的区别对于编写高效、可靠的程序至关重...

单片机C语言程序,看不懂,求讲解
P1_0这个符号在前面的头文件 t89c51cc02.h 中有定义。至于“为什么是这个引脚”,是由硬件设计及本程序共同确定的。P1_0(不是你写的p1_0,C语言要区分大小写哦)代表P1口的第0管脚,在头文件中通过sbit定义。“为什么T0中断服务程序和主程序中都有T0的初值,设置还是一样,他们有什么关系?”主...

单片机汇编指令中RETI和RET的区别
在单片机汇编指令中,RETI和RET有着显著的区别。首先,它们的作用和触发条件不同。RETI,即中断返回指令,当一个中断发生后,会自动清零优先级,确保其他中断可以正常响应。而RETI替换为RET可能导致问题,因为RET是用于子程序返回,返回到上一级调用指令的后续位置,而非中断点。这就意味着,初次运行可能不...

μC\/OS 中,中断服务子程序为何要用汇编语言来写
为了安全,因为C语言不是原子性语言会出错

用c语言写interrupt类型函数出现error C2061错误
vc6.0不支持,interrupt 不是标准的关键字,它用来指明一个中断服务子程序也就是(ISR);使用它的时候,注意两点,中断服务子程序,不能返回值;中断服务子程序,不能传递参数。所以,你写的返回值,和参数都才是void.主要用于嵌入式系统开发。你换个tc,试试。VC6.0是不支持的。

疑惑…单片机进入中断后不能执行调延时程序?中断服务程序里已写延时程序...
通常在中断子程序中是不调用延时子程序的,这样会增加中断处理时间,如果有其它低级中断了,就会延误响应中断了。所以,中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如果中断一次有很多任务需要执行完全,可以在中断子程序中设置一个标志位,在主...

c语言中断怎么恢复原来状态
1、首先,进行初始化设置,设置中断服务例程后,通信事件发生时,会立即跳入中断子程序中执行。2、其次,将有关的寄存器内容和标志位状态推入堆栈保留下来,这称为保护现场,由用户自己编程完成,完毕之后即可恢复状态。

相似回答