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" "这相当于文件包含 只需头文件

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网