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

请教HC08的CodeWarrior中断函数的含义和书写方式

请教HC08的CodeWarrior中断函数的含义和书写方式

#include #include #pragma DATA_SEG DEFAULT void main(void) { EnableInterrupts; } void interrupt 6 overflow_isr(void) { TSC_TOF = 1; } 上面这段代码是我从例子中缩减出来的,我的疑问仅仅是那个overflow_isr中断函数,interrupt后面的“6”是什么含义?是中断向量号吗?CodeWarrior还有其它的书写中断函数的方式吗?
可以这样,定义中断函数
interrupt void Timer1_ISR(void)
{
    TSC_TOF = 1;
    ...
}

在中断向量表中,把Timer1_ISR写在对应的中断向量中。

在Codewarrior中不必非要按照上面的写法来的。
向量6对应的位置是0xFFF2
向量5对应的位置是0xFFF4
6 对应于中断向量表的第6号中断。
在连接时,overflow_isr这个函数的起始地址会放支中断向量6对应的位置。
好象是0xFFF2
TIMER1 的溢出中断

[此贴子已经被作者于2005-3-30 11:52:18编辑过]





[此贴子已经被作者于2005-3-31 15:38:27编辑过]

建议使用二楼的建议。FREESCALE单片机手册中每款芯片均对应有中断优先级,6就是第六级。
同意二楼
我思故我在---风继续吹
"在中断向量表中,把Timer1_ISR写在对应的中断向量中"
这步如何写,在那个文件中定义
能不用日货,尽量不用日货! 能不用日货,尽量不用日货! 能不用日货,尽量不用日货!
应当是在你的*.prm文件中修改。

在自动生成的*.PRM文件的最后有向量定义,在向量6中加入应当就可以了把
最近比较喜欢开——MOTO
最常用的方法是在prm文件中定义
一般生成的prm文件中,有这样一句
VECTOR 0 _Startup;

假定你的Timer中断编号是第六
那么你可以在上面所写的程序上添加这样一句:
VECTOR 6  Timer1_ISR

在主程序中定义interrupt Timer1_ISR就可以了
如果在函数前面加上 #pragma TRAP_PROC
是不是就不需要修改PRM文件了?
还是需要修改prm的。因为#pragma TRAP_PROC 只是定义了该函数为Interrupt函数,但是代码并不知道是哪个中断。
没错,是中断向量号。
在编译时编译器会识别出interrupt
生成中断服务程序,自动完成寄存器入栈的工作。
函数用IRET指令返回。
在连接时,连接器会把overflow_irs对应的地址写入第6号中断向量表。
哪位大侠有例子啊?我的安装完只有程序文件,好多用法都搞不定啊~~~
热爱电子技术,愿交天下好友
到Freescale的网站上去找,很多的。
返回列表