How do I write interrupt routines in XC8?

In MPLAB® XC8 C source code, a function can be written to act as the interrupt service routine by using the interrupt qualifier. Most baseline PIC® devices do not implement interrupts at all; mid-range devices utilize a single interrupt vector, and PIC18 devices implement two separate interrupt vector locations and use a simple priority scheme 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 type void interrupt and cannot have parameters. On PIC18 devices, interrupt functions default to being 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):

© 2016 Microchip Technology, Inc.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.