4

几周前,我刚刚完成了大学的微处理器课程,在那里我们只用汇编编程。我们学到了很多关于中断的知识(恕我直言)。

这是我的问题:我正在使用 16F684 的 HiTech 编译器用 C 语言编程,在讨论中断的数据表部分(PIC 16F684 数据表第 12.4 节)中,它说程序将转到中断向量 0x0004。使用我的微处理器类中的程序集,我们只需设置一个指向该地址的 .org 语句并在下面编写所需的程序集,以便在发生中断时跳转到那里并运行。我可以在汇编中弄清楚这一点,但是当我在 CI 中编程时,我不相信我可以控制程序片段在内存中的位置,这会带来问题。我不知道如何在 C 中的中断处放置命令。

如果我需要澄清,请告诉我!

4

4 回答 4

3

interruptHiTech C 用函数类型扩展了 C 语言:

void interrupt my_interrupt_handler (void) {
    handle_interrupts_here();
}

你真的应该得到编译器的手册。我相信 Pic-lite 的手册可以免费下载,至少是在 2001 年的某个时候我下载了我的副本。

于 2010-01-06T15:40:01.953 回答
3

Microchip 的这个常见问题解答包含有关在 HiTech C 下使用中断的一些信息。

于 2010-01-06T15:48:04.327 回答
1

您必须深入研究 HiTech 文档,但编译器通常有特殊的关键字来定义中断函数。编译器或运行时系统必须专门处理由中断调用的函数:除了设置向量之外,编译器(或运行时系统)还必须保留所有寄存器。对于正常的、非中断的功能,它可能不必这样做。

手册将成为您的朋友。

于 2010-01-06T15:38:03.250 回答
0

PIC的CCS 编译器对各种中断源的中断处理函数使用 #INT_* 编译器指令或“属性”。

于 2010-01-23T17:12:42.393 回答