OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8117|回复: 28

【51中断程序执行完后有没有办法不返回断点】

[复制链接]

42

主题

141

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2015-5-26
在线时间
49 小时
发表于 2015-8-30 23:13:10 | 显示全部楼层 |阅读模式
5金钱
大家晚上好,请问51中断执行完之后,能通过什么办法使得程序不返回断点,或者能使中断完之后,返回主函数某一个指定的地方?谢谢

最佳答案

查看完整内容[请看2#楼]

回复【3楼】fanghuiopenedv: --------------------------------- goto不行啊 用另外一个方法,长跳转,兴许可以 学习下setjmp和longjmp的用法吧,不过不知道51行不行,stm32是可以的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-8-30 23:13:11 | 显示全部楼层
回复【3楼】fanghuiopenedv:
---------------------------------
goto不行啊
用另外一个方法,长跳转,兴许可以
学习下setjmp和longjmp的用法吧,不过不知道51行不行,stm32是可以的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-8-30 23:38:28 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2015-8-31 20:17:43 | 显示全部楼层
用goto啊。goto想去那里去那里。不过有危险不安全容易跑飞的哟。^_^
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2015-9-1 09:25:34 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
51上好像没有setjmp和longjmp这两货额。
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-9-1 22:13:04 | 显示全部楼层
回复【5楼】fanghuiopenedv:
---------------------------------
试试吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2015-9-5
在线时间
1 小时
发表于 2015-9-5 11:42:09 | 显示全部楼层
可以在进入中断后,在中断的程序里面修改堆栈栈顶的数据,令中断结束的时候跳转到你想要的地方。具体请你自己研究下入栈和出栈的过程。
回复

使用道具 举报

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2015-4-21
在线时间
21 小时
发表于 2015-11-4 14:46:39 | 显示全部楼层
这个问题有挑战性 好像汇编才能跳转吧 
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2015-11-4 19:39:29 | 显示全部楼层
我感觉楼主想解决的问题是这个吧:主程序正在执行,中断来了,退出后应该执行一个处理函数,而不是返回中断点继续执行本函数???
30年众生牛马,60年诸佛龙象!
回复

使用道具 举报

6

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-6-30
在线时间
30 小时
发表于 2015-11-4 20:53:39 | 显示全部楼层
你就等着程序崩溃吧,丝毫不考虑程序以前的调用呀,这样很容易导致堆栈出错的,不如在中断中使用一个标志变量,主程序WHILE该变量,并时不时的判断一下比较好
回复

使用道具 举报

6

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-6-30
在线时间
30 小时
发表于 2015-11-4 20:57:29 | 显示全部楼层
毕竟堆栈空间有限,压栈次数也要注意呀,
回复

使用道具 举报

6

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-6-30
在线时间
30 小时
发表于 2015-11-4 21:00:41 | 显示全部楼层
如果只有一个中断的话,也许跳转的方式可以,但多了就容易出问题
回复

使用道具 举报

42

主题

141

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2015-5-26
在线时间
49 小时
 楼主| 发表于 2015-11-12 13:47:29 | 显示全部楼层
回复【7楼】Heather Mo:
---------------------------------
谢谢你
回复

使用道具 举报

42

主题

141

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2015-5-26
在线时间
49 小时
 楼主| 发表于 2015-11-12 13:48:35 | 显示全部楼层
回复【8楼】大循环:
-------------------------------
我查到的方法也是说用汇编去实现,或者是有操作系统的单片机可以在操作系统的帮助下完成
回复

使用道具 举报

42

主题

141

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2015-5-26
在线时间
49 小时
 楼主| 发表于 2015-11-12 13:49:30 | 显示全部楼层
回复【9楼】无痕幽雨:
---------------------------------
可以这样理解,就像寻求看看有没有这样一种方法。我觉得是可以的,但没用过,学校老师也说不知道
回复

使用道具 举报

42

主题

141

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2015-5-26
在线时间
49 小时
 楼主| 发表于 2015-11-12 13:49:51 | 显示全部楼层
回复【10楼】donqy:
---------------------------------
人家不想程序崩溃哦
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2015-11-12 15:25:13 | 显示全部楼层
回复【15楼】林春霞:
---------------------------------
有这种方法,看看就可以,肯定不能这么用。编程规范禁用goto,更别说这种函数间跳转的!http://blog.csdn.net/wuhenyouyuyouyu/article/details/49779679 这个帖子看看就可以了!
30年众生牛马,60年诸佛龙象!
回复

使用道具 举报

42

主题

141

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2015-5-26
在线时间
49 小时
 楼主| 发表于 2015-11-12 18:35:42 | 显示全部楼层
回复【17楼】无痕幽雨:
---------------------------------
嗯,谢谢你
回复

使用道具 举报

1

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2015-5-23
在线时间
3 小时
发表于 2015-11-12 19:29:21 | 显示全部楼层
看错了,以为林青霞。
回复

使用道具 举报

42

主题

141

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2015-5-26
在线时间
49 小时
 楼主| 发表于 2015-11-12 20:57:24 | 显示全部楼层
回复【19楼】中国微电脑网:
---------------------------------
我要是林青霞我还学什么单片机啊,苦逼的很呢T-T
回复

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2015-11-12 23:19:52 | 显示全部楼层
回复【5楼】fanghuiopenedv:
长跳转是C的标准库函数,51也有,其实楼主说的有一个很常用的地方,就是51的多任务切换,那个就是定时间中断,换出栈地址,返回来实现任务调度的。
回复

使用道具 举报

1

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2015-5-23
在线时间
3 小时
发表于 2015-11-13 05:25:29 | 显示全部楼层
回复【20楼】林春霞:
---------------------------------
差不多,成家成名都要经过煎熬的。
回复

使用道具 举报

1

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2015-5-23
在线时间
3 小时
发表于 2015-11-13 05:32:26 | 显示全部楼层
不知道你要达到什么功能,有的时候不能拘泥于一定使用哪一种指令,主要是实现什么样的功能。
如果中断以后使程序根据变量的变化跳转到某个段落,也可以使用散转指令来实现。
switch
case 1:
case 2:
case 3:
........
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6661
金钱
6661
注册时间
2016-5-29
在线时间
909 小时
发表于 2016-5-30 00:42:42 | 显示全部楼层
楼主应该是想实现多线程.51单片机可以实现.只是内存(RAM)不够.扩展RAM,可以做多线程的代码.切换栈指针.指向另一个线程.返回的时候就执行到别的程序了.
回复

使用道具 举报

42

主题

141

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2015-5-26
在线时间
49 小时
 楼主| 发表于 2016-6-2 23:23:17 | 显示全部楼层
操作系统 发表于 2016-5-30 00:42
楼主应该是想实现多线程.51单片机可以实现.只是内存(RAM)不够.扩展RAM,可以做多线程的代码.切换栈指针.指向 ...

谢谢回复,祝工作生活愉快
回复

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2016-8-18 20:15:27 | 显示全部楼层
利用指针,配合SP改变堆栈里的内容
回复

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2016-8-19 10:30:50 | 显示全部楼层
fanghuiopenedv 发表于 2015-8-31 20:17
用goto啊。goto想去那里去那里。不过有危险不安全容易跑飞的哟。^_^

goto的作用域只在函数之内
回复

使用道具 举报

5

主题

168

帖子

0

精华

高级会员

Rank: 4

积分
780
金钱
780
注册时间
2016-5-28
在线时间
64 小时
发表于 2016-8-19 19:28:10 | 显示全部楼层
应该需要修改堆栈的吧,
回复

使用道具 举报

22

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2016-8-20
在线时间
91 小时
发表于 2016-8-20 14:09:08 | 显示全部楼层
没试过,又学了一招
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 17:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表