Frequently Asked Questions
Compiler Behavior
- How does the compiler handle converting between bytes and words?
 - How does the compiler determine TRUE and FALSE on expressions?
 - Why does the compiler use the obsolete TRIS?
 - Instead of 800, the compiler calls 0. Why?
 - Instead of A0, the compiler is using register 20. Why?
 - What is the format of floating point numbers?
 - How do I generate code compatible with ICD (or MPLAB® ICD 2, MPLAB® ICD 3, or MPLAB® ICD 4)?
 - How do I make a pointer to a function?
 - Why does the generated code that uses BIT variables look so ugly?
 - How much time do math operations take?
 - How are type conversions handled?
 - How do you change the location of the Reset vector and Interrupt vector so I can develop my own Bootloader?
 - Why does the .LST file look out of order?
 - How do I make a stand-alone HEX file that runs without the debugger?
 - Using Multiple Compilation Units
 - Compiling a Program from an Existing File/Project
 - Creating a Project with the PIC Project Wizard
 
Input/Output
- How does one map a variable to an I/O port?
 - How does the PIC® MCU connect to an I2C device?
 - Why does a program work with standard I/O but not with fast I/O?
 - What is an easy way for two or more PIC® MCUs to communicate?
 - How do I get getc() to timeout after a specified time?
 - How can I pass a variable to functions like OUTPUT_HIGH()?
 - Why isn't PortB, pin 3, working?
 - Why don't I get any signals out of Port A?
 - Why is the RS-232 not working right?
 - Using Multiple RS-232 Ports on a PIC® MCU or PIC® DSC
 - How does the PIC® MCU connect to a PC?
 
Interrupts
- How is the TIMER0 interrupt used to perform an event at some rate?
 - What are the restrictions on function calls from an interrupt function?
 - How can the RB interrupt be used to detect a button press?
 - How can I use a delay_XX() routine in an interrupt without disabling interrupts?
 - Why do I get a 'Interrupts disabled to prevent re-entrancy' warning?
 - Why do the HIGH or FAST interrupts not work? (FAST is saving/restoring registers, or a non HIGH/FAST interrupt is being serviced high priority)
 
Memory
- How do I directly read/write to internal registers?
 - How can a constant data table be placed in ROM?
 - Why does the compiler show less RAM than there really is?
 - How do I write variables to EEPROM that are not a byte?
 - How can I create a custom variable definition that points to an external memory device? (or what is typemod?)
 - How can I force the compiler to place a block of variables into a specific block of RAM?
 - Why do I get an OUT OF ROM error when there seems to be ROM left?
 - What can be done about an OUT OF RAM error?
 
MPLAB® IDE
- How do you view float variables inside MPLAB® IDE?
 - How do I get CCS to work inside MPLAB® 8 IDE?
 - How can I link an MPASM object into my project?
 - How can I use my HEX files with MPLAB® tools to program my target?
 - How can I use MPLAB® ICD 2, MPLAB ® ICD 3, MPLAB ® ICD 4, MPLAB ® PICkit™ 3, MPLAB ® PICkit™ 4 and MPLAB® REAL ICE™ with CCS Compiler?
 - How do I create an MPLAB® X project that uses the CCS C Compiler?
 - How do I fix the issue in MPLAB® X with getting Error#7 Invalid Pre-Processor directive Export requires IDE?
 
In-Circuit Programmers/Debuggers
- Troubleshooting CCS Programmer/Debugger Issues
 - Connecting a CCS Programmer/Debugger to Your Atmel Hardware
 - Connecting a CCS Programmer/Debugger to Your PIC® MCU Hardware
 - Installing CCS Programmer/Debugger USB Drivers
 - Installing Drivers for Windows on Arm® Processors for CCS Programmers/Debuggers
 - Using a CCS Programmer in Linux
 - How much current can a CCS Programmer/Debugger supply?
 
Mach X Programmer/Debugger
- How do I troubleshoot Mach X issues?
 - How do I connect the Mach X to my PIC® MCU hardware?
 - What devices are supported by the Mach X Programmer?
 
ICD-S/U Programmer/Debugger
- How do I troubleshoot ICD-S/U issues?
 - How do I connect the ICD-S/U to my PIC® MCU hardware?
 - How can I find my ICD-S/U revision number?
 - What is the speed difference between popular ICD units?
 
LOAD-n-GO Handheld Programmer/Debugger
Prime8 Production Programmer
Miscellaneous
- How do I do a printf to a string?
 - How can I generate a random number?
 - Jeremy Bentham's TCP/IP Lean code works in v2.xxx, but how do I get it to work in v3.xxx?
 - Why do I get a 'File Version Mismatch'?
 - Why doesn't my chip run with INTRC fuse?
 - How can I load a new calibration constant?
 - How do you program the MCP25050 chips on the CAN Bus Development Kit?
 - Using a USB CDC Device in Linux
 - How do I use the CCS Scenix compiler with the Parallax SX-Key emulator?
 - Timeout error on E3mini prototyping board
 
Registration & Reference Numbers
- How do I register my compiler?
 - Why do you need a specific user name for the compiler? Why not just register it to a company?
 - I installed my new registration files but my files are too old.
 - I just bought software but my reference number is invalid.
 - I bought software six months ago but now my reference number is invalid.
 - I did not receive the registration files you said you e-mailed.
 - May I install my compiler at both work and home?
 - How do I download using a Download Key?
 - What is the difference between a Reference number and a Download Key?
 
Compiler Features & Compatibility
- Do you have a demo of your compiler?
 - Will PCWH work with MPLAB® IDE?
 - How can I use your compiler with MPLAB® IDE?
 - How can I use your compiler with VS Code?
 - Are built-in functions included with the command-line compiler?
 - What is the advantage to using PCW vs. PCM with MPLAB® IDE?
 - Can I simulate my code with PCW or PCWH?
 - Does you compiler come with an assembler?
 - Do you have any compilers that work with Linux OS?
 - What versions of Windows will the compiler run under?
 - I want to use a certain chip. Which compiler do I need?
 - How do I use the CCS C Compiler under MacOS?
 - How can I switch between multiple versions of the CCS compiler?
 
Maintenance & Additional User Licenses
- What are the benefits of purchasing maintenance?
 - I have an IDE compiler. May I buy maintenance for a command-line compiler?
 - How many days of download rights do I get with my software?
 - I need more than one person to use the compiler. What do I do?
 - How do I find my customer number?
 - I cannot view my renewal offers?
 - What is the policy for Additional User Licenses?
 - What is the Software License Agreement?
 
Hardware
- What is the difference between ICD-S40 and ICD-Uxx?
 - Can I use the ICD-Uxx with MPLAB® IDE?
 - Is the CCS compiler compatible with the Tech-Tools device programmer?
 
Billing & Shipping
- May I fax over a purchase order?
 - My account is frozen and I can no longer download updates.
 - Do I have to pay for customs, duties, and taxes on a shipment?
 
Technical Support
- How long will I be able to receive technical support?
 - How does Technical Support work?
 - I found a bug in the compiler.
 
Education & Distribution
- Do you offer an Educational discount?
 - Do you sell through distributors?
 - How do I become a CCS distributor?
 





