先贴上代码[mw_shl_code=applescript,true]int main()
{
while(1)
{
函数1()
{
语句1;
语句2;
语句3;
语句4;
语句5;
}
}
}[/mw_shl_code]
假如说,我正在处理函数1,运行到了语句2,这个时候,收到了一个中断的信号,程序跳转到中断中去,处理中断命令,但是处理这个信号的函数2耗时很长,不能放在中断服务函数里去,就只在中断服务函数里放了一个标志位。
但是我想用最快的速度去处理这个中断的标志位,就是去处理函数2,至于函数1的语句345,我就不运行了
我现在的想法是,直接在语句2的的后边放一个判断中断标志位的语句,判断正确,直接return 函数2。
不知道我这个想法可行不,这只是个假设,语句那么多,每一句下边放一个判断和return,也不合适。或者有没有其他更好的方法。
大家有什么指教的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
如果你的程序是基于操作系统的,这个非常好做, 也不会出错,否则这个做好只能调用几个低级的汇编语句来完成,因为中断后,CPU自动会转到中断前没有运行完的哪里继续工作,你可以把你的函数2的函数名,其实就是函数指针,付给PC指针,人为的修改程序的运行路径,但风险很大,当然如果你的程序处理简单,也可以全部放到中断里去做,把耗时很长部分离出来,比如延时,用计数周期来处理,等待用判断标志来决定,这样,你做一个任务变量,每次进入中断后按这个任务变量来决定运行哪一段代码,一般简单的程序,我工程中也经常用这种方法,处理得很好,当然条件是全部变量你都得用全局变量来实现。 你先试着按我说的方法去自已处理,如果不行,我再给你提供参考示例。但我希望你能自行完成,因为能把这个玩转了,你对CPU的低层也了解得差不多了 笑,加油
你的意思是只要发生了中断,就无须执行语句3、4、5吗?
给你写一个参考一下:
int main()
{
初始化语句;
for(;;){
while(1)
{
语句1;
语句2;
if(Flag==1)
{
长时处理数据语句; //可以独立写成一个函数调用
Flag=0; //清中断标志
break;}
语句3;
语句4;
语句5;
}
}
}
一周热门 更多>