打印

已经玩转51、C8051F340的进

[复制链接]
3415|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
0蛋骗鸡0|  楼主 | 2012-3-14 13:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
遇到一个奇怪的问题,关于中断优先级

C8051F340中、英文资料明确说明,中断优先级IP初始化为#00H时候,定时器0中断的自然优先级高于外部中断1

于是乎,由于程序需要,我发现这一点实现不了,

思路,将单片机正确初始化将,并且MOV IP,#00H
外部中断1初始化、并打开,由按键低电平触发、进入中断后直接LJMP $(以上已经确保单条程序正确)然后打开定时器0初始化,并在主程序里相隔5S进入定时器0并且点亮一盏灯,正常退出,主程序循环(以上程序经过反复检测确保正确)

经过上述设置后,原本的情况应该是:当按键按下,进入外部中断1,执行中断内部的LJMP $,不退出中断、然后看主程序是否能进入定时器0中断,并且点亮灯

结果:灯不亮

分析:这是一个最简洁的测试程序,结果与资料不符合,定时器0没有能成功中断外部中断1

修改:我抱着尝试的心态,将IP修改为MOV IP,#02H(将定时器0中断优先级置高)

结果:按键后,程序进入外部中断的LJMP $,灯点亮,程序正常运行

总结:在我的理解看来:如果默认中断优先级为#00H时,个中断相遇时,按照自然排列高低,也就是说,外部中断1与定时器0中断相遇时,定时器0能得到CPU的响应,并且当外部中断1已经产生中断未且退出时,定时器0也能顺利产生中断,不用特意改变IP的设置、

问题:请高人解释,是我错了,还是芯片资料与芯片本身不符合?
        如果是我错了,那错在哪里、(程序不用怀疑有问题)
        (有条件的可以自己做一下这个实验),如果结果和我得到的结果相反,也麻烦通知一下

相关帖子

沙发
0蛋骗鸡0|  楼主 | 2012-3-14 13:03 | 只看该作者
楼主我在线等答案

使用特权

评论回复
板凳
受不了了| | 2012-3-14 13:23 | 只看该作者
51就两种中断级别,只要默认大家都是同等的,谁也打断不了谁,管你先还是后,排在前面还是后面

使用特权

评论回复
地板
0蛋骗鸡0|  楼主 | 2012-3-14 13:23 | 只看该作者
有没有高手指点!!~:dizzy:

使用特权

评论回复
5
受不了了| | 2012-3-14 13:24 | 只看该作者
你在2楼的口吻有点搞笑哈

使用特权

评论回复
6
0蛋骗鸡0|  楼主 | 2012-3-14 13:26 | 只看该作者
3# 受不了了


那资料上有说过,当优先级相同时,同时触发,CPU响应按照自然优先级、(如果是你的说话,那么自然优先级就没有存在的意义?)

使用特权

评论回复
7
受不了了| | 2012-3-14 13:36 | 只看该作者
同一拨来的排在前面自然先来,如果人家都占到坑了,你后来就只有等到了。比如你有3个中断,定时器0,定时1,外部1,现在定时器1在中断处理时外部中断1来了,一会定时器0也来了,但定时器1还没完,后面两个就在门外等。当定时器1处理完了,这时就外部中断1和定时器0抢那坑,这时才会象你说的定时器0会先抢着,虽然外部中断1比定时器0先来:lol

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
0蛋骗鸡0 + 1 你答对了,我可能理解错了这句话, ...
8
jiemnij| | 2012-3-15 10:37 | 只看该作者
51只有2级中断嵌套的
如果你的IP不设置的话, CPU运行最多只有一个中断在运行,
因为你的IP不设置,相当与所有的中断都是同一个优先级的
书上说的 按照自然排列高低 来说, 指的是7楼的意思,就是中断同时来的时候的,先响应那个(这个时候大家都没进中断)
设置IP,就有本质上的中断优先级,才能进行中断嵌套

使用特权

评论回复
9
ayb_ice| | 2012-3-15 10:55 | 只看该作者
同一级别和中断不能相互中断,但如果同时申请中断,是有自然优先级的

使用特权

评论回复
10
xwj| | 2012-3-15 11:10 | 只看该作者
7、8、9楼正解。

继续7楼的比喻:
如果设置了IP,高中断级的大个子一来,一脚就把原来占坑的那一个踹到一边,自己把坑站了(才不管你占坑的还没完呢)
直到他完了才会让出坑,原来被踹开的那个继续补上...

使用特权

评论回复
11
xwj| | 2012-3-15 11:12 | 只看该作者
同一中断优先级的虽然有先来后到的区别,也有同时到了谁先得区别,但可没有那个踹开同级别的能力,所以还是只能等同级别的完了后让位。

使用特权

评论回复
12
huzaizai007| | 2012-3-15 15:37 | 只看该作者
学习……

使用特权

评论回复
13
触觉的爱| | 2012-3-15 21:53 | 只看该作者
这个占坑比喻实在太形象了

使用特权

评论回复
14
sunhq02| | 2012-3-16 08:43 | 只看该作者
手册说 0比1自然优先级高的意思是说
如果 0和1同时发生, 0先被中断
实际上是因为每次cpu扫描中断的时候, 0的扫描顺序在1前面
所以如果同时发生的话, 0先被中断, 并不是0的优先级比1高, 所以不存在打断的说法
自然优先级这个用词可能引起了你的误解

真正的优先级 51只有2层, 同级的中断无法相互打算

使用特权

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

本版积分规则

0

主题

35

帖子

0

粉丝