代码之家  ›  专栏  ›  技术社区  ›  onaclov2000

图16F684单片机中断处理

  •  4
  • onaclov2000  · 技术社区  · 15 年前

    几周前我刚在大学上完微处理器课,在那里我们只在汇编中编程。我们学到了相当多关于中断的知识。

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

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

    4 回复  |  直到 15 年前
        1
  •  3
  •   mdm Mr. Sajid Shaikh    15 年前

    This FAQ by Microchip 有一些关于在hitech c下使用中断的信息。

        2
  •  3
  •   slebetman    15 年前

    Hitech C扩展了C语言 interrupt 功能类型:

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

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

        3
  •  1
  •   Richard Pennington    15 年前

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

    手册将是你的朋友。

        4
  •  0
  •   kenny    15 年前

    这个 CCS compiler for PICs 对各种中断源的中断处理函数使用int_x编译器指令或“attributes”。