首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

怎样把某个中断向量服务程序起始地址指向另外一个地址??

怎样把某个中断向量服务程序起始地址指向另外一个地址??

在CW中,对于没有用到的中断变量,其中断服务程序,我想把它重新指向一个地址,以避免受到干扰而进入该中断服务程序。比如说程序已屏蔽键盘输入中断,但有了干扰而进入了该中断向量服务程序,现在想把该地址指向main函数中的一个loop记号地址。以前是用汇编,
org $ffe0
fdb loop 即可以实现。
那么请问:用c是怎么实现的呢?
可以按照你其他中断向量一样写入
假定键盘中断是第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编辑过]

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