单片机goto语句C语言的goto语句可以用来跳出中断程序么?

21ic官方微信-->
请问用C语言如何退出中断
初级技术员, 积分 64, 距离下一级还需 36 积分
初级技术员, 积分 64, 距离下一级还需 36 积分
初级技术员, 积分 64, 距离下一级还需 36 积分
初级技术员, 积分 64, 距离下一级还需 36 积分
请问用C语言如何退出中断
技术总监, 积分 49054, 距离下一级还需 946 积分
技术总监, 积分 49054, 距离下一级还需 946 积分
技术总监, 积分 49054, 距离下一级还需 946 积分
技术总监, 积分 49054, 距离下一级还需 946 积分
取决于何种MCU
直接return
初级工程师, 积分 2362, 距离下一级还需 638 积分
初级工程师, 积分 2362, 距离下一级还需 638 积分
初级工程师, 积分 2362, 距离下一级还需 638 积分
初级工程师, 积分 2362, 距离下一级还需 638 积分
当用一个函数用interrupt定义后...
当用一个函数用interrupt定义后,退出中断就不需要特别处理了。当需要提前退出时可用return来直接退出。实际是C编译器把把函数最后的}或函数中的return处理为RETI(可能还有出站)
高级工程师, 积分 5327, 距离下一级还需 2673 积分
高级工程师, 积分 5327, 距离下一级还需 2673 积分
高级工程师, 积分 5327, 距离下一级还需 2673 积分
高级工程师, 积分 5327, 距离下一级还需 2673 积分
函数体结束了,就退出中断了
如果要特定条件可以用return来退出,别用goto就行,当然,用goto到该函数的结尾那凑合了
用goto当然也可以,为啥不能用goto了?
资深工程师, 积分 11781, 距离下一级还需 8219 积分
资深工程师, 积分 11781, 距离下一级还需 8219 积分
资深工程师, 积分 11781, 距离下一级还需 8219 积分
资深工程师, 积分 11781, 距离下一级还需 8219 积分
GOTO 能回到 中断前的程序里吗~~~
goto到函数的结尾处就可以了。
资深工程师, 积分 11482, 距离下一级还需 8518 积分
资深工程师, 积分 11482, 距离下一级还需 8518 积分
资深工程师, 积分 11482, 距离下一级还需 8518 积分
资深工程师, 积分 11482, 距离下一级还需 8518 积分
圈圈是什么贴都回噢,呵呵,,不过俺从不用goto,
助理工程师, 积分 1951, 距离下一级还需 49 积分
助理工程师, 积分 1951, 距离下一级还需 49 积分
助理工程师, 积分 1951, 距离下一级还需 49 积分
助理工程师, 积分 1951, 距离下一级还需 49 积分
如果大侠都在用调侃的语气教小弟,小弟们估计以后真要用GOTO到函数的末尾了........
高级技术员, 积分 964, 距离下一级还需 36 积分
高级技术员, 积分 964, 距离下一级还需 36 积分
高级技术员, 积分 964, 距离下一级还需 36 积分
高级技术员, 积分 964, 距离下一级还需 36 积分
通常不用GOTO
正常状况下运行到末尾&}&处自动返回,如程序中间用return(C)&or&RETI(asm).个人建议是有判断或分支结构应返回主程序去作.中断尽量短小精悍简洁.
初级技术员, 积分 3665, 距离下一级还需 -3565 积分
初级技术员, 积分 3665, 距离下一级还需 -3565 积分
初级技术员, 积分 3665, 距离下一级还需 -3565 积分
初级技术员, 积分 3665, 距离下一级还需 -3565 积分
请问:computer00&&在中断里,中断里有return用这种用法吗?
有。为什么没有?
goto在紧急关头还是可以用的嘛
不用一步步跳出来一下就跳出来了
棋崖山棋崖洞主
资深工程师, 积分 16453, 距离下一级还需 3547 积分
资深工程师, 积分 16453, 距离下一级还需 3547 积分
棋崖山棋崖洞主
资深工程师, 积分 16453, 距离下一级还需 3547 积分
资深工程师, 积分 16453, 距离下一级还需 3547 积分
要看是何种处理器,何种编译器
资深技术员, 积分 472, 距离下一级还需 28 积分
资深技术员, 积分 472, 距离下一级还需 28 积分
资深技术员, 积分 472, 距离下一级还需 28 积分
资深技术员, 积分 472, 距离下一级还需 28 积分
goto 的疑惑
本人现在用的是汇编,C不算熟,如果中断中用GOTO的话,要小心退出中断地时候没有使到系统自动开启总中断,因为这样好像没有经过中断返回指令.不知道我的解释对不对,谢谢指点.
高级工程师, 积分 7396, 距离下一级还需 604 积分
高级工程师, 积分 7396, 距离下一级还需 604 积分
高级工程师, 积分 7396, 距离下一级还需 604 积分
高级工程师, 积分 7396, 距离下一级还需 604 积分
C语言函数返回不都是用return吗?
只要不GOTO到外面去就是了。
资深技术员, 积分 317, 距离下一级还需 183 积分
资深技术员, 积分 317, 距离下一级还需 183 积分
资深技术员, 积分 317, 距离下一级还需 183 积分
资深技术员, 积分 317, 距离下一级还需 183 积分
return可以用
return可以用,但是return&不能返回一个数据&&
资深技术员, 积分 308, 距离下一级还需 192 积分
资深技术员, 积分 308, 距离下一级还需 192 积分
资深技术员, 积分 308, 距离下一级还需 192 积分
资深技术员, 积分 308, 距离下一级还需 192 积分
直接用return
直接用return,c编译器会自动加入恢复现场并使用reti返回
扫描二维码,随时随地手机跟帖
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
永恒之光奖章
等级类勋章
技术导师奖章
人才类勋章
时间类勋章
核心会员奖章
等级类勋章
时间类勋章
技术高手奖章
人才类勋章
沉静之湖泊
发帖类勋章
时间类勋章
技术奇才奖章
人才类勋章
希望之星奖章
等级类勋章
涓涓之细流
发帖类勋章
甘甜之泉水
发帖类勋章
突出贡献奖章
等级类勋章
时间类勋章
终身成就奖章
等级类勋章
您需要登录后才可以回帖
热门推荐 /402-1602-1602-1602-1602-1602-1602-1602-1602-1602-16最新范文01-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-01大侠 help me 单片机编程,我用goto语句,问啥goto前面的程序都不运行了?_百度知道
大侠 help me 单片机编程,我用goto语句,问啥goto前面的程序都不运行了?
我有更好的答案
goto是方便,但尽量不要用,因为如果对于程序运行没清楚掌握的话会乱的,因为有些子程序需要返回主程序的特定语句因为你用了goto会导致单片机的堆栈乱了
采纳率:66%
来自团队:
需要实现什么功能,为什么要用goto
他卡死在一个循环里了,我要跳出去
那也不需要用goto
把程序贴出来看看
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。无条件跳转语句goto
本文所属图书&>&
本书由浅入深、全面、系统地介绍了51单片机C语言开发技术。本书提供了大量实例,供读者实战演练。另外,作者专门为每一章的内容设置了练习题,用来加深、巩固对每一章知识的理解,有些章节设置了扩展式的练习,留...&&
上一节我们给大家讲解了循环语句while和do & while,本节引入另外一种类型的语句&&跳转语句goto。goto语句是一种无条件跳转语句,当程序执行到goto语句时就会强制跳转到指定的位置继续执行。goto语句的语法格式如下:
goto&&语句标号;
..代码段1&
&&& 代码段2
其中,&语句标号&是一个自定义的标识符,这个标识符后面加上一个冒号&:&出现在当前程序的某一行。当程序执行&goto& 语句标号; &后,就跳转到&语句标号:&的位置,并执行后面的语句。无条件跳转语句goto的流程图如图5.9所示。
下面举一个简单的例子让大家了解一下goto语句是怎么使用的。
【例5.10】假设有一个机器人预计向x、y两个方向各前进65 535步,行走途中只要任意方向遇到障碍就停止行动。
unsigned int& x_remain, y_&//定义x、y方向剩下的脚步
bit& x_block, y_&//定义x、y方向障碍标志,0代表无障碍,1代表遇到障碍
//预设x,y方向各65535步
x_ remain = 0
y_ remain = 0
//预设x,y方向无障碍
x_block = 0;
y_block = 0;
while ( x_remain & 0 && y_remain & 0)&//如果两个方向都没走完
&x_remain - -;
&y_remain - -;
&//如果任意一个方向遇到障碍,则跳出
&if ( x_block || y_block )
&&goto stop_
stop_walking:
其他处理代码 &
本例将x方向和y方向的步数都预设为65 535步(十六进制0xffff),并假设两个方向一开始都没有遇到障碍,于是程序顺利进入while循环内部执行,每执行一次两个方向各减少一步。
如果行进过程中一直没有遇到障碍,那么x_block和y_block的值都为假,机器人会一直走完65 535步,然后跳出循环。如果其中某一个方向遇到障碍,那么x_block和y_block中就会有一个值为1,那么条件语句if的值就为真:
//如果任意一个方向遇到障碍,则跳出
if ( x_block || y_block )
&&goto stop_
这时程序会执行条件语句if里面的语句&goto stop_ &,然后跳到指定的标号stop_walking执行后面的程序:
stop_walking:
其他处理代码 &
需要注意的是,无条件跳转语句只能从内层循环跳到外层循环,而不允许从外层循环跳到内层循环。因为goto语句会破坏程序的层次结构,过多使用会造成程序结构不清,因此在的过程中使用的频率不是很高。goto语句对于从循环或多重嵌套中跳出的情况而言,是很有用的。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
文章下载读书单片机C语言中如何从子程序1某一行跳转到子程序2某一行?_百度知道
单片机C语言中如何从子程序1某一行跳转到子程序2某一行?
这样怎么错了:void state1(void){
语句。。。;}void state2(void){end:语句。。。}
我有更好的答案
C语言有一个叫做setjmp.h的标准库提供了两个函数,可以进行跨函数跳转,不过C51支持不支持就不清楚了。。。如果你想这么做,可以混用汇编,使用JMP指令,不过不建议在子函数之间跳转,有可能会出错,JMP是没有现成保护的纯跳转,你应该注意你程序碰见ret指令返回时的位置。。。
最简单的一个事就是比如函数1的返回值是个2字节的数,函数2的返回值是个4字节的数,当你从第一个子程序跳到第二个,其实主函数是没有调用函数2,当函数2返回时,他会认为函数返回值仍然是2字节,这个时候就出错了,不同的函数的参数表也是不同的,这也一样会导致程序出错。。。所以这种跳转只是蹩脚适合无参数无返回值的纯过程。。。。
采纳率:56%
有提到了奥地利一点点,虽然并不
goto语句只能用到同一个函数中,不能跳函数的不只是在单片机上,我在电脑上都不行
为您推荐:
其他类似问题
您可能关注的内容
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 单片机中断实验 的文章

 

随机推荐