c语言中中断服务子程序与其他子程序的区别
在单片机c51中如果一个中断服务子程序并在mai.c(主函数在其中)文件中而在另一个c文件中,那么这个中断服务子程序需要在头文件中进行声明吗?以上的表述可能不明确,先另行...
在单片机c51中如果一个中断服务子程序并在mai.c(主函数在其中)文件中而在另一个c文件中,那么这个中断服务子程序需要在头文件中进行声明吗?
以上的表述可能不明确,先另行表述:
我想问的问题是中断服务子程序与其他子程序的区别。主要是:当中断服务子程序与主函数不在同一个文件中时,中断服务子程序是否需要在主函数所在的文件中进行声明。 展开
以上的表述可能不明确,先另行表述:
我想问的问题是中断服务子程序与其他子程序的区别。主要是:当中断服务子程序与主函数不在同一个文件中时,中断服务子程序是否需要在主函数所在的文件中进行声明。 展开
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.这个可以省略。
汇编里的区别:
普通子函数用RET返回;中断子程序用RETI返回,RETI返回时要清除中断标志的;
普通子函数调用时直接进入函数入口地址,中断函数在中断发生时先进中断入口
03H、08H、13H、18H、23H后随即写一个跳转指令,再跳转到相应语句。
C语言区别:
普通子函数用的是C语言里的主函数调用子函数的方法,子函数可以有参数,有返回值;中断函数没有参数,没有返回值;
中断函数的写法也不一样,以80c51为例:
void INT0() interrupt 0 using 1
{
}
interrupt 0不是是外部中断0引发的中断,必须写; using 1
表示在中断函数里用第一组寄存器R0-R7.这个可以省略。
展开全部
“并在mai.c(主函数在其中)文件中而在另一个c文件中 ” 完全无法理解你这句话啥意思
最好是声明。 这种语法要求跟你怎么用这个函数完全没关系的, 无论是什么函数只要你用到了最好就是先声明
最好是声明。 这种语法要求跟你怎么用这个函数完全没关系的, 无论是什么函数只要你用到了最好就是先声明
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
中断服务子程序只需添加关键字 interrupt 0/1/2/3/4/5,且不能有返回参数及输入参数,其他使用方法同普通子程序一样.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要, #include" "这相当于文件包含 只需头文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询