2010-01-06 121 views
4

几个星期前,我刚在大学完成了我的微处理器课程,那里只有程序集编程。我们学到了一个相当数量的(恕我直言)关于中断。PIC 16F684微控制器中断处理

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

请让我知道如果我需要澄清!

回答

3

This FAQ by Microchip有关于使用高科技型下C.中断

+0

看起来你给的链接也是一个很好的例子。谢谢 – onaclov2000 2010-01-06 15:51:08

+0

我使用了你提供的链接并进行了一个测试,(只是在中断被打中时打开一个LED)。谢谢! – onaclov2000 2010-01-07 03:07:26

1

你必须深入到高科技型的文件,但往往编译器有特殊的关键字来定义中断函数。编译器或运行时系统必须专门处理由中断调用的函数:除了设置向量外,编译器(或运行时系统)必须保留所有寄存器。它可能不需要为正常的,不中断的功能做到这一点。

该手册将成为你的朋友。

+0

谢谢你提醒我一下说明书,由于某种原因,我并没有考虑,因为这将是手册中简单的东西...... LOL – onaclov2000 2010-01-07 03:07:58

3

高科技型Ç延伸与interrupt功能型C语言:

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

你真的应该让编译器的手册。相信对于PIC-精简版的手册是免费下载的,至少它是当我下载我的副本一段时间在2001年

+0

我得给一个尝试。这个说法是即插即用的,如果我有一个叫做handle_interrupts_here的函数,我可以处理它们,或者“中断”是否被一种中断本身所取代? – onaclov2000 2010-01-06 15:45:00

+0

PIC16只有1个'类型'的中断。您需要检查寄存器(HiTech将它们定义为全局变量,查看头文件)以查明发生了什么。 – slebetman 2010-01-06 15:46:36

0

CCS compiler for PICs用途的一些信息#INT_ *针对各种中断源的中断处理函数的编译器指令或“属性”。