打印

51单片机中断处理程序中关中断的问题

[复制链接]
2160|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xupengtao7|  楼主 | 2013-1-12 14:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
中断保护现场,是为了你中断子程序执行完以后能够返回到你程序中中断点,即产生中断的地方,使程序能够继续向下执行!!!!
如过你说的不用保护现场的话,那么程序执行完以后就不能够回到现场,那么你的程序将不知道要跳转到那里去了,也就是飞鸟,呵呵……
你说的中断嵌套,也是一样的,两者都要保护现场,不然你也不能够回到现场,程序也会飞的!!!!
而我们保护现场的数据都是放在堆栈中的,因此,你的中断次数也不能够超过堆栈的级数,那样数据也会丢失!!!!
说白了,中断它不同于子程序,子程序是固定好了的,返回的位置也固定了;而中断我们不能够预知它在那里发生中断,因此要保护现场,使中断子程序执行完后返回到中断的地方!!!
呵呵……说的太多了!!!

我知道你说的意思了,但是你要知道,中断现场保护是在中断子程序中进行的,因此当你高一级的中断发生的时候(他们不可能共用一个中断子程序,如果是同一中断,那也不可能,因为51中断中你进入中断子程序后要将禁止该中断再次中断,好象似的,嘿嘿……你可以试试),在高一级的中断子程序中也有现场保护,你的问题就是没有把现场保护放对地方!!!!!
============================================================
它们是把现场保护在同一堆栈中,我跟你打个比方吧,假如说堆栈的地址是80H,低一级的中断要保护的是1,2,3;高一级要保护的现场是4,5,6,那么在低一级的中断发生的时候,现场保护1,2,3将压如堆栈,(顺序书上应该有,这里是个比喻),那我先压入1,堆栈地址加1,压入2,堆栈地址再加1,如果这个时候高一级的中断发生,那么现在就应该跳到高一级中断的子程序,堆栈地址就是82H了,在将4,5,6分别压入堆栈,这样堆栈的地址就是85H,当高一级的中断子程序结束后,返回现场,堆栈的数据要从85H开始弹出,这样现场返回的就是6,5,4,这个时候程序就会跳到中断之前的地方,即底一级的中断那里,将要继续将3保护到堆栈中,在执行低一级的中断子程序.(其中,你要在中断保护现场完了后将中断标志清0啊,不然它始终会中断的,不可能去执行程序去了...)
这样讲解你应该知道它们的过程了吧,呵呵!!!!!!

相关帖子

沙发
dirtwillfly| | 2013-1-12 19:24 | 只看该作者
51单片机的中断处理,楼主说的很好

使用特权

评论回复
板凳
w34880593| | 2013-1-12 20:57 | 只看该作者
嘿嘿,学习了

使用特权

评论回复
地板
icecut| | 2013-1-12 22:50 | 只看该作者
你说的正确...可是问题呢?xxxxxx的问题?

使用特权

评论回复
5
huayuanlu36| | 2013-1-13 11:23 | 只看该作者
xuexile

使用特权

评论回复
6
jlass| | 2013-1-14 08:48 | 只看该作者
楼主是从哪里截了一段过来。

使用特权

评论回复
7
yibanhuiyi| | 2013-1-14 09:04 | 只看该作者
                           学习了。。。。

使用特权

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

本版积分规则

个人签名:[url=http://www.zoopen.com.cn] Microchip(微芯) [/url] http://www.30203.com http://www.tinci.com http://www.jihai-edu.com http://www.zoopen.com.cn http://www.bjaolante.com

3

主题

3

帖子

0

粉丝