打印

中断程序能使主程序跳到某一个地址处吗?

[复制链接]
6959|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sun520up|  楼主 | 2012-2-14 09:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sun520up 于 2012-2-17 16:21 编辑

在主程序中执行的程序如:
       Main:
             SET    #0, (DATA_PA)
             CALL   Delay100ms
       MainLoop:
             CLR     #0, (DATA_PA)
             CALL    Delay100ms  
             .......

     function1:
             ........
        
        比如在MainLoop处发生定时中断,中断退出时能不从MainLoop处执行,而跳到function1开始执行吗?

相关帖子

沙发
hyhmh| | 2012-2-14 10:25 | 只看该作者
关于中断,不是 这个 概念。

使用特权

评论回复
板凳
ningling_21| | 2012-2-14 10:55 | 只看该作者
中断满足条件就会产生,肯定会打断主程序,不过结束后继续运行主程序...

使用特权

评论回复
地板
sun520up|  楼主 | 2012-2-14 11:06 | 只看该作者
2# hyhmh
所以才能问问  看能不能通过操作地址来实现

使用特权

评论回复
5
zj314995534| | 2012-2-14 11:17 | 只看该作者
程序在主Main下运行,如果这时有中断,那么单片机会把当前的主程序暂停,跳转到中断入口,去执行中断,中断完成后接着主程序继续运行,如果你用汇编,注意在进中断前保存数据,否则会丢失。最好用C去玩单片机,才能玩大。

使用特权

评论回复
6
sun520up|  楼主 | 2012-2-14 11:24 | 只看该作者
5# zj314995534
OK  这个我知道 这些基本的就不要解释了,我只是问问这个问题能不能解决, 不用中断用别的方式也行 :) 谢过了

使用特权

评论回复
7
zj314995534| | 2012-2-14 11:32 | 只看该作者
中断是单片机的灵魂,不用可惜了,我没理解你的意思,麻烦解释下,需要怎么处理?

使用特权

评论回复
8
zj314995534| | 2012-2-14 11:34 | 只看该作者
可以用定时器,如果到一定时间还没退出延时,则单片机软复位。是否这样可以?

使用特权

评论回复
9
sun520up|  楼主 | 2012-2-14 11:48 | 只看该作者
8# zj314995534 这只是个很简单的案子,程序顺序执行就行了,所以中断中只做计时用,后来发现了这个问题就来问的. 下面的办法可以解决

使用特权

评论回复
10
sun520up|  楼主 | 2012-2-14 11:58 | 只看该作者
5# zj314995534
不是不想用C,只是公司的单片机用不了C,下星期辞职的,找个用C的公司

使用特权

评论回复
11
eydj2008| | 2012-2-14 17:51 | 只看该作者
单片机 要想中断占用时间 很长 就用多核  
中断 本意就是有一个小事情 要打断一下 去处理 处理完后 继续前面的事情

就像人手不够 就再请人一样 一个人不可能干很多事情。

使用特权

评论回复
12
jiebin689| | 2012-2-15 10:21 | 只看该作者
如果我没理解错LZ的意思的话。设置标志位,用中断计时,可否?

使用特权

评论回复
13
zj314995534| | 2012-2-15 16:25 | 只看该作者
1、11楼你个小白,你NND用过多核单片机?
2、“就像人手不够 就再请人一样 一个人不可能干很多事情。”你这句全错,
应该是:一个人正忙的时候电话来了,去接了个电话,回来还是要干那么多事,没人帮你。
3、多核是两个人轮流干活,谁空谁干,要不就一起干。
------------------------------------------------------------
4、LZ:成本压的居然C都无法用。NND折磨人的公司啊,不干是对的。

使用特权

评论回复
14
sun520up|  楼主 | 2012-2-15 18:02 | 只看该作者
12# jiebin689
说不清楚了,可能单片机没有这个功能吧,我说的中断只是猜想的一种方法,因为主程序顺序执行的时候,只有中断能跳出去

使用特权

评论回复
15
sun520up|  楼主 | 2012-2-15 18:10 | 只看该作者
13# zj314995534
呵呵,11楼只是说下自己的想法而已,你也太激动了.
我们公司主要还是语音IC的,单片机赚不了几个钱.1K 1.5K的ROM也用不了C, 也没有好的编译器. 稍大点的案子就要为空间不足伤脑筋了.......

使用特权

评论回复
16
wkshengren| | 2012-2-19 14:27 | 只看该作者
能做到,进中断时,会把pc指针存进堆栈,在中断中修改相应堆栈位置的数值为那个函数的地址就行

使用特权

评论回复
17
dengm| | 2012-2-19 18:03 | 只看该作者
可以:
      ;MOV SP, #(STACK-1)
      MOV (STACK), #HIGH(function1)
      MOV (STACK+1), #LOW(function1)
      MOV SP, #(STACK+1)
      RETI

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
sun520up + 1
18
sun520up|  楼主 | 2012-2-20 21:52 | 只看该作者
16# wkshengren
谢谢哦

使用特权

评论回复
19
sun520up|  楼主 | 2012-2-20 21:52 | 只看该作者
17# dengm
谢谢了的哦

使用特权

评论回复
20
sun520up|  楼主 | 2012-2-20 21:57 | 只看该作者
17# dengm
对了,你在程序中会这样用过吗? 我好像没见人用过的,这种结构好吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

162

帖子

1

粉丝