51单片机,C程序跳转,中断跳主函数某位置

void one();
void two();
void main()

while(1)

one();

two(); // 每次中断响应后程序跳转到这里,并保证非中断情况下该子程序可以跟在子程序

} 跟在one后面运行


void one()


void two()


void timer0() interrupt 1

你想问的是什么,程序只会在one()two()之间来还运行,至于定时器0中断,如果你不初始化设置,是不会执行中断的!
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-12
在two()的开头放一个标号flag:,在中断返回最后一句用一个goto flag即可本回答被提问者和网友采纳
第2个回答  2013-09-12
void timer0() interrupt 1

two();

51单片机中断函数在哪里放置?
中断函数不用在主函数中调用,只要中断事件发生,单片机自己主动会调到中断函数中。两个中断函数指向同一个interrupt的时候,编译就会报错了。

中断服务程序完成后怎样跳到main函数指定位置
你可以在中断中设置一个全局变量,如果中断后,改变这个全局变量,在程序的关键部位检测这个变量是否改变,如果改变了执行“goto +标签;”的跳转指令,就可以让程序到指定位置 但该方式不能中断立即跳转到指定位置,但是因为单片机的运算速度实在太快了,知道你在关键部位写如个检测程序,如if(k==1)goto ...

C51在多级中断中强行跳回主函数的方法
在进入第二级中断的时候,已经保护了两个地方的现场,在退出的时候你想跳过那个低级中断。只能对栈进行操作,这个时候要用。也就是在第二级运行结束后,直接去调用第一级中断所保护的现场(用汇编完成)。这个时候中断不是自动返回,而是你的汇编操作返回,就可以直接进入到主函数中。很复杂的。 :(...

Keil C51用C写单片机程序能不能像汇编那样跳转到任意地方?
当然C语言里面有一条语句,GOTO,它可以跳到你和程序的任何地方,但建议一般不这样用,会打破你的模块化设计结构。如果你非要用,建议只用在子程序里面,而且跳转地址也只在该子程序里。不要在主程序中用此语句。祝你好运

C51单片机的中断操作,与直接在主函数内写入中断服务程序有什么区别?
而你的整个主程序的运行时间是10ms,那么你这个中断操作就延迟了10ms。如果放在中断服务程序中,不论何时发生中断,CPU将会跳到中断服务程序中去处理中断操作。这是单片机的一种并行操作方式。第二个问题:因为P0口是漏极开路的。你去看看P0口的内部结构图,再用一点点的电路知识就能分析出来。

C语言51单片机中断嵌套问题
如果在正常执行过程中,发生中断B,又在中断B处理过程中发生中断A,那么,中断A执行完成后,一定要返回的是中断B,这是由硬件决定的,不是软件决定的,所以,软件没有任何指令可以让中断A执行完成后直接跳过还没有执行完的中断B而直接回到主程序,因为这是硬件决定的,软件做不到,即便你在高级中断A中关闭了中断...

...函数里循环执行,这是怎么回事?当main函数执行结束后,程序就结束...
keil做了下仿真,虽然你的主函数结束了,但是你的计时器仍然在工作,单步下去,总会进入中断函数。但是在protues下你的定时器初值要设置合理,也就是在主函数结束前溢出,中断就能发生。然后一直会有定时中断.挺神奇的 还是烧在板上做吧

请说明51单片机中的中断入口地址的含义?
1,51单片机中的中断入口地址的含义就是去执行中断连接的程序,一般在程序的末尾段。2,若51单片机使用C语言编程,51单片机中断号的排列顺序是按中断向量地址由低到高来排列中断号,不是按中断查询的优先级或者中断服务顺序的优先级来排列中断号的。3,51里面一般有4个 r0 -- r7寄存器,如果终端函数和...

C51单片机的中断操作,与直接在主函数内写入中断服务程序有什么区别?
可通过两种方式决定是否执行中断服务程序:1开中断,此时中断服务程序只能写在中断函数中;2采用查询中断标志位,此时中断服务程序可写在任何地方,当然也可以写在主函数中。P0口当作普通IO口使用时,为漏极开路,必须外接上拉电阻。关于何为漏极开路,请参阅数字电子的集电极开路与非(OC)门。

单片机c51中断后返回主函数开始的程序
中断函数,可以用汇编语言编写。结束返回前:……CLR A PUSH ACC ;压入 00 PUSH ACC ;压入 00 RETI ;返回到 0000H 即可。

相似回答