MPLAB® XC16 C Compiler

Microchip’s latest compiler line, the MPLAB® XC, provides a comprehensive solution for your project’s development software needs and replaces all MPLAB C and HI-TECH compilers. The MPLAB XC16 compiler:

  • Supports all 16-bit PIC® MCUs and dsPIC® DSCs
  • Integrates with MPLAB® X IDE to provide a full graphical front end:
    • Editing errors and breakpoints match the corresponding lines in source code
    • Single step through C source code to inspect variables and structures at critical points
    • Data structures with defined data types, including floating point, display in watch windows
  • Runs on Windows, Linux and Mac OS X
  • Offers different optimization levels to suit your needs with FREE downloads available
xc.png
Click image to enlarge.

 Self-Paced Training

The material in these training modules exists elsewhere on this site in a general reference format. However, the training modules present it in an organized, step-by-step sequence to help you learn the topic from the ground up.

 Frequently Asked Questions

Topic
Will HPA make my support for non-compiler related queries faster?
How do I change the output.hex file name in MPLAB® X IDE?
(XC16) Where can I find the interrupt vector names available for the device?
(XC16) How can I utilize the upper 8-bits of program memory to effectively store constants?
(XC16) What does the error “PSV section '.const' exceeds 32K bytes” mean?
(XC16) How Do I instruct the compiler to divert the output of printf to UART2?
(XC16) Is it possible to have one common Interrupt Service Routine (ISR) for all interrupt vectors on the device?
Why Does It Take So Long To Build My Project?
What could cause glitches on an output port?
What could cause pins in a port to change from values I assign to them?
What could cause corrupted variables or code failure when I am using interrupts?
How do I fix errors relating to 'illegal conversion between pointer types' or 'illegal conversion of integer to pointer'?
Why don't the line numbers in an error message match the problematic line of code?
How do I ensure declarations are consistent across files?
How do I access bits in a RAM variable?
How can I speed up my interrupt service routine?
How do I create an array of pointers in program space (ROM)?
Why are some of my variables shown as not used?
Why are SFRs undefined in my assembly code?
When should I cast an expression?
Where can I find information about compiler messages?
Are administrator rights required to use the compiler in MPLAB® X IDE?
What is HPA (High Priority Access)?
© 2017 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.