标题:
请教中断地址映射问题
[打印本页]
作者:
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