C语言中断正在执行的子程序
展开全部
在子程序中用While(一个全局变量){这里执行子程序的操作}
要中断时把这个变量设为0,
则那个子程序就退出了.
这里假设你的子程序是个重复反复执行的操作.如果不是,那么你的需求本身就是错的做法你需要重新评估你的设计合理性.
要中断时把这个变量设为0,
则那个子程序就退出了.
这里假设你的子程序是个重复反复执行的操作.如果不是,那么你的需求本身就是错的做法你需要重新评估你的设计合理性.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
中断是单片机的一个重要功能,中断子程序专为执行中断功能,它是在发生中断后,自动执行的,不需要主程序调用;普通子函数要主程序调用才能执行。
汇编里的区别:
普通子函数用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.这个可以省略。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询