打印

中断中断!~~~~~~~~~~

[复制链接]
1675|11
手机看帖
扫描二维码
随时随地手机跟帖
沙发
yczhang| | 2009-9-17 15:34 | 只看该作者
应该是看中断向量的位置在哪儿了:
例如你的中断是外部中断0,在地址0003处进入,而你还开了定时器0中断,写了中断程序,它就会执行完定时器0中断后返回;如果你没开其他的中断,这就会执行若干NOP或者MOV R7,A后走到在程序存储器中,中断入口地址后最靠前的那段程序了

使用特权

评论回复
板凳
zhlp8877| | 2009-9-17 16:35 | 只看该作者
举个例子,你正按部就班的在路上,突然有个电话让你去个地方,当你到达那个地方的时候却看到只有个路标树在那里,其他没任何路,不过你还得走,那你只能是硬着头皮顺着路标走下去,具体后面怎么样,是平坦还是泥坑、还是大山、还是河流,你一无所知。
就是这个道理。

使用特权

评论回复
地板
ZRL700424| | 2009-9-17 16:43 | 只看该作者
3楼的例子不完整:电话内容是去接一个人(具体什么人不清楚,可能是中共1号首长?),并且见不到这个人不能回去,实际是根本没有这个人,你就一直找啊找。。。。。最后惨死在温都尔汗了(临死前还是没找到1号首长)

使用特权

评论回复
5
wkatt1002|  楼主 | 2009-9-20 22:28 | 只看该作者
。。。。。谢谢大家,不过那个准确呢

使用特权

评论回复
6
lyjian| | 2009-9-21 08:00 | 只看该作者
会出现意想不到的结果

使用特权

评论回复
7
arm_fan168| | 2009-9-21 09:23 | 只看该作者
不同种类的单片机的结果不同。反正结果肯定不会是正常的。

使用特权

评论回复
8
inter_zhou| | 2009-9-21 12:28 | 只看该作者
程序会从中断入口点开始执行,知道遇到一条RETI才会返回。

使用特权

评论回复
9
zgl7903| | 2009-9-21 13:54 | 只看该作者
从中断入口处看汇编代码,不同的编译器产生不同的结果

使用特权

评论回复
10
xymxym| | 2009-9-21 14:10 | 只看该作者
为了好描述,我们用51的汇编做例。用汇编写51时,习惯在程序的最开头放个LJMP 100H,就是从100H地址开始执行主程序,而中断向量最低地址是000BH(具体是不是不重要,假如这个中断向量地址是INT0的),如果开了中断,发生INT0时,跳到000BH了,但那个地方往下走的路没有RETI这个语句,那程序就会一直往下跑,跑到100H后。。。。具体应该可以想像了。当然不同的单片机,其中断向量地址会不同,产生的后果会不同。说白了,就是没有RETI语句的中断函数所会出现的现象。

使用特权

评论回复
11
arm_fan168| | 2009-9-21 14:26 | 只看该作者
由于没有写中断服务程序,中断向量处的指令很可能是0xFFFF,或者一些常量表什么的,这样,处理器就有可能不认识这个指令,读取到这样的指令,有的MCU会复位,例如AVR, 而ARM则会进入“未定义指令异常”。

使用特权

评论回复
12
wkatt1002|  楼主 | 2009-9-28 14:26 | 只看该作者
谢谢大家

使用特权

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

本版积分规则

6

主题

57

帖子

0

粉丝