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

请教中断地址映射问题

请教中断地址映射问题

使用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
对于中断向量系统是默认的,你必须自己写程序跳转。按照你的问题,可以如下操作


在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里面是支持的。
还是不太清楚应该怎么做,麻烦版主给提供一个实例。谢谢了
我就是根据你的要求写的程序,还需要什么实例?
int vector_map[];

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

在vector_map[] @ 0xEFF0= 编译通不过,提示
“error C405: Expected : ;”
恩,那改成定义成函数
void vector_map(void)
{ asm jmp seven;
....

}

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