Board logo

标题: 怎样把某个中断向量服务程序起始地址指向另外一个地址?? [打印本页]

作者: anhei98    时间: 2005-10-23 18:12     标题: 怎样把某个中断向量服务程序起始地址指向另外一个地址??

在CW中,对于没有用到的中断变量,其中断服务程序,我想把它重新指向一个地址,以避免受到干扰而进入该中断服务程序。比如说程序已屏蔽键盘输入中断,但有了干扰而进入了该中断向量服务程序,现在想把该地址指向main函数中的一个loop记号地址。以前是用汇编,
org $ffe0
fdb loop 即可以实现。
那么请问:用c是怎么实现的呢?
作者: seuafu2005    时间: 2005-10-24 09:53

可以按照你其他中断向量一样写入
假定键盘中断是第10个中断,如果loop是个函数,你可以在在main文件中声明extern,然后在prm文件中定义
VECTOR 10 Loop

如果Loop是个标号,好像不易实现。我觉得如果你要防止误跳入中断,你可以做一个Dummy_ISR()函数
interrupt void Dummy_ISR(void)
{
  asm nop;
}

VECTOR 10 Dummy_ISR
这样即使发生中断也不会有什么动作,不影响程序的运行。

[此贴子已经被作者于2005-10-24 9:53:16编辑过]


作者: anhei98    时间: 2005-10-25 12:05

loop是个标号。
按照你提供的方法,试了下,可行。
谢谢!!




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0