单片机C语言函数外跳转 单片机c语言跳转指令

单片机C语言中如何从子程序1某一行跳转到子程序2某一行?C语言有一个叫做setjmp.h单片机C语言函数外跳转的标准库提供单片机C语言函数外跳转了两个函数,可以进行跨函数跳转,不过C51支持不支持就不清楚了 。。。如果你想这么做,可以混用汇编,使用JMP指令,不过不建议在子函数之间跳转,有可能会出错,JMP是没有现成保护的纯跳转,你应该注意你程序碰见ret指令返回时的位置 。。。
最简单的一个事就是比如函数1的返回值是个2字节的数,函数2的返回值是个4字节的数,当你从第一个子程序跳到第二个,其实主函数是没有调用函数2,当函数2返回时 , 单片机C语言函数外跳转他会认为函数返回值仍然是2字节,这个时候就出错了 , 不同的函数的参数表也是不同的,这也一样会导致程序出错 。。。所以这种跳转只是蹩脚适合无参数无返回值的纯过程 。。。。
c语言如何实现从一个函数跳转到另一个函数,像汇编的LJMP指令一样【单片机C语言函数外跳转 单片机c语言跳转指令】你写过C代码吗?
那是c最基本的功能呀 。。。
感觉你应该说的再具体些 。
//从上面跳到下面 。
funone(mun...);//函数1
funtwo(mun...);//函数2
switch(跳转表达式)//任意跳转
{
case 0:funmun(mun...)//函数
.
.
.
.
}
还有goto
递归 。。
for,while ,  。。。
单片机C语言实现函数跳转//外部中断函数1置flag1=1
//外部中断函数2置flag2=1
void main( void )
{
while( 1 )
{
if( flag1 == 1 ) acquire1( );
if( flag2 == 1 ) acquire2( );
}
}
void acquire1( void )
{
//初始化1
while( 1 )
{
//采集1
if( flag2 == 1 ) break;// 退出循环而返回
}
}
void acquire2( void )
{
//初始化2
while( 1 )
{
//采集2
if( flag1 == 1 ) break;// 退出循环而返回
}
}
单片机C语言函数外跳转的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于单片机c语言跳转指令、单片机C语言函数外跳转的信息别忘了在本站进行查找喔 。

    推荐阅读