This content is for an older version of the MPLAB® XC8 Compiler. Section 5.8.1 of the current MPLAB XC8 C Compiler User Guide for PIC MCUs details the proper way to write interrupt routines today. The User Guide may be downloaded from the MPLAB XC Compilers page of our main website.
The content on this page is in the process of being rewritten to reflect the changes.
In MPLAB® XC8 C source code, a function can be written to act as the Interrupt Service Routine (ISR) by using the interrupt qualifier. Most baseline PIC® devices do not implement interrupts at all; mid-range devices utilize a single interrupt vector. PIC18 devices implement two separate interrupt vector locations and use a simple priority scheme to declare a function qualified with the interrupt keyword and the compiler will place it in the right place and take care of saving any used registers and its restoration.
An interrupt function must be declared as a type void interrupt and cannot have parameters. On PIC18 devices, interrupt functions default to being a high priority. To create a low-priority interrupt function, use the qualifier low_priority in addition to interrupt in the function definition.
Here's an example of a program for a mid-range PIC MCU that uses interrupts:
For an enhanced 8-bit MCU that uses interrupts (Using High and Low priority):