CC5X C compiler for PICmicro

CC5X red_ball.gif (129 bytes)

- math library
- installation
- supported chips



Version 3.7

Copyright (c) B Knudsen Data, Norway, 1992 - 2018.

Supports midrange PICmicro devices:

  • 14 bits core : PIC16, PIC12
  • 12 bits core : PIC16, PIC12, PIC10

Long experience: Used by professionals since 1992.

==>   CC5X supports the Enhanced 14 bit core and the Enhanced 12 bit core.

==>   MPLAB X support is available with new dedicated plugin.

A FREE edition of CC5X is available, without code size limitations.

CC5X supports the new PIC16F18857 and PIC16F18877 with 4k RAM (also supported by the free edition).

The PIC18 devices are supported by CC8E.

The SETCC Utility Tool

This new tool allows generating device header files with selectable bit format and other options. This utility can also be used to manage device configuration settings and write the user settings to a source/header file for compilation. The tool can also compile the project with selectable options. More information is found in SETCC.TXT.


Math library support. Fixed and floating point math is available. Floating point math (16, 24 and 32 bit) includes functions like log(), exp(), sin(), cos(), sqrt(). The libraries are compact and significant space can be saved compared to the assembly floating point libraries from Microchip.

Linker support: C and assembly modules can be linked together using MPLINK.

Standard C strings and constant data. The type modifier 'const' allows constant data and strings to be stored in program memory using standard C syntax. Pointers to 'const' data is supported. Pointers of 8 and 16 bit can be used in the same application.

Are you waiting for coming features?  The included 12 months update agreement ensures that you get free updates on your license during the following 12 months after purchase (see prices page).

Free updates can be downloaded on the same page that contains the initial installation program for your license. The link to this page is found in the mail containing the license file and download instructions.

Multitasking support using state machines is available. Many highly reliable and complex systems are built using state machines, for instance in telecommunications. A normal RTOS can impose unpredictable response delays. State machines are predictable, fast and allows the maximum delay to be calculated. So, try state machines and discover how you can use PICmicros for complex real time control jobs.

Compact code and efficient RAM usage are the outstanding features of CC5X. The compiler has been and is still leading in generating compact code. Variables up to 32 bit is supported, including bit variables and bit functions. CC5X is suited for real-time applications requiring strong control of the generated code. The code can be inspected in the comprehensive assembly file produced.

Code savings of 20-30% compared to other C compilers have been reported. For example, the ping.c program found on the Microchip Internet site was reduced from 2170 to 1699 instructions when porting it to CC5X. That is a saving of 471 instructions.

CC5X was designed to enable very efficient usage of the limited code and RAM space, with the ease of C programming instead of assembly.

CC5X is the right choise if you want to write high performance applications with similar or better compactness than assembly. Unfortunately CC5X is not up to the ANSI C level, so you must be prepared to simplify complex expressions into statements that can be compiled to efficient code. But that is a minor price to pay compared to all the benefits.

Surprising code size reductions

The purpose of this story is to show the code savings experienced during redesign of a real system using the CC5X compiler. The application is a data acquisition system with many advanced and complex features like: programmable multi-channel data sampling, 128 kB RAM for storage using dynamic memory allocation, data compression, 32 bit calculations and more.

The original application filled 22 - 32 kB of code on a 8051, generated by a well known C compiler. The renewed and upward compatible system consisted of 5.5 kB code only (3220 instructions), using a PIC16C73. The code size difference is very large. The original 8051 code contained many low level modules written in assembly. The CC5X compiler allowed all code to be written in C.

Feedback from a professional user in Germany: "I really like this (CC5X) compiler, actually im using the HI-TECH-Compiler for an PIC17C756 and im not happy about the generated code. For all other PIC16Cxxx i use the CC5X."

And from England: "As most of my coding relies on your compiler, which I've used for well over 100 commercial projects, I look forward to seeing the results of your efforts. Keep up the good work."

A new user from Australia: "The reports I have is the product is very solid and this is a major reason for choosing this compiler"

Feedback from a developer who have evaluated several compilers: "Wonderfull ! I'm a professional PIC & Windows programmer and I'm sure this is the BEST C compiler for PIC (12 & 14-bit) in the world ! I've been searching for a PIC compiler for about three months and analized thoroughly all available like MPC, MPLAB-C, MPLAB-C17, MPLAB-C18, C2C (Baranov), PICC (Hi-Tech), PCB-PCM-PCW (CCS) & others. Go on the same way (I mean PIC18 support & IO library) and you'll be the unconditional leaders !"

A downloader and RT-monitor is available for the FLASH PIC16F87X devices. The code size for the downloader is as low as 420 instructions. It downloads INHX8M hex files, even from long distance. It can be used during debugging or for preparing the application firmware for future upgrades. (DOWNLOAD page, view TXT file).

Separate compiler products:

  • A special CC5X edition supports custom ASIC's using DxPIC cores from Digital Core Design.
  • CC8E: 16 bit core : PIC18  (free compiler available)
  • CC7A: 16 bit core : PIC17 (demo compiler available)

Old beta compilers:

  • CC1B: 12 bit core : Ubicom SX (demo compiler available)
  • CC6H: 14-16 bit core : Holtek HT (demo compiler available)

End line