Board logo

标题: 请教中断地址映射问题 [打印本页]

作者: zhudongpo    时间: 2006-12-28 17:24     标题: 请教中断地址映射问题

使用7号实时中断,他默认的系统地址是0x FFF0,我想把它挪到0xEFFO处,看资料上说
使用中断 方法2:在PRM文件中声明
在C代码中写中断服务程序

在PRM 文件中,将中断服务
程序名和中断向量地址对应

我的程序根本不能运行,我映射地址如下
interrupt void seven (void)
{ //7.78ºÁÃë·¢ÉúÒ»´ÎÖжÏ
CRGFLG_RTIF=1;//clear flag
time++;
if (time==200)
{
LED=~LED;
LTCH_EN=0;
LTCH_EN=1;
time=0;
}
}
prm文件
VECTOR ADDRESS 0xEFF0 seven
作者: seuafu2005    时间: 2006-12-29 10:24

对于中断向量系统是默认的,你必须自己写程序跳转。按照你的问题,可以如下操作


在prm文件中
VECTOR ADDRESS 0xFFF0 0xEFF0

在0xEFF0处写
asm jmp seven

一般可以在0xEFF0处开始定义一个数组,把中断向量映射过来
比如vector_map[]@0xEFF0={
asm jmp seven;
asm jmp myProcedure;
asm jmp myProcedure;
...
}

vector_map[]和0xEFF0之间就是带圈圈的at符号,本网站不支持。这种用法在codewarrior里面是支持的。
作者: zhudongpo    时间: 2006-12-29 11:52

还是不太清楚应该怎么做,麻烦版主给提供一个实例。谢谢了
作者: seuafu2005    时间: 2006-12-29 12:55

我就是根据你的要求写的程序,还需要什么实例?
作者: zhudongpo    时间: 2006-12-29 15:30

int vector_map[];

vector_map[] @ 0xEFF0=
{
asm jmp seven;
}

在vector_map[] @ 0xEFF0= 编译通不过,提示
“error C405: Expected : ;”

作者: seuafu2005    时间: 2006-12-29 16:38

恩,那改成定义成函数
void vector_map(void)
{ asm jmp seven;
....

}

然后把函数放在0xEFF0处。
如果你用#pragma CODE_SEG ..的方式把函数固定在0xEFF0的话,要记得定义的段不要和其他段冲突




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