PIC C Compiler: How to Quickly Use the MikroC Compiler to create a hex file from C Source code.

This pic c compiler tutorial shows you how to re-compile C source code using the MikroC compiler. These are the main steps that you use when re-compiling code that you can download from this site. The MikroC interface is a large one and there are many features that tend to confuse you when first using the software. These simple steps below will ensure you don't get distracted and can just got on with the simple task of compilation so you can produce a new hex file ready for programming into the PIC chip.

Note: For projects that are pre-version 6.4.0 ( .ppc extension. ) use the Project->"Import Project" menu and follow the instructions in the windows that follow to convert to Version 6.4.0 usage. Note that you have to manually copy over the .h files to the new project directory as this is not done for you.

To obtain the Free MikroC Compiler visit this link. (Note just download the C Compiler and you can use it fo output <2kHex.

Re-compilation is only needed to examine (see the .lst file produced to see the assembler code along with the C source code) or change the code as the ZIP files found on this site already contain the hex file for programming the chip.

 MikroC V6.0.4 main screen

MikroC has quite a few controls but for this compiler tutorial you only need to consider a few of them.

Re-compiling the source files

Download the ZIP file and extract its contents to your directory e.g. create the directory c:\Projects\a-project\.

In this directory you will have files with extensions .c, .h ,.hex ,.mcppi - the .mcppi file is the main project file that you select from mikroC using the Open project button:

Open Project

Opening a project file.


Project-->"Open Project..."


open project mikroC

Navigate to your stored files and select the .mcppi extension to load the project.

Edit Project

If you want to change the project settings e.g. the chip type, oscillator frequency or other chip parameters then hit the 'Edit Project' button :


Project-->"Edit Project..."


edit project mikroC


Next hit the compile button:




compiling mikroc C source


When the MikroC PIC C Compiler has completed its compilation the messages box at the bottom will show the compilation status (any errors in compilation are shown in red).

When the compile finishes (and if successful) you should see something similar to the following:

mikroc compiler success

Now there should now be a lot more files in the original directory and the hex file will have been updated.

Some Tips for MikroC PIC C Compiler


MikroC is unusual in that it has a set of built-in libraries that you can use for many different peripherals. I tend to create the code myself as I like to know exactly how something works and this also has the advantage that:

  1. You can use the code for a similar peripheral device.
  2. You can get rid of bugs if you have any.

However, if you are pushed for time, then the built in libraries provide a convenient way of speeding up the design process and include code support many different devices/concepts.

To find the libraries Use the Menu:

View-->"Library Manager"

Examples of available libraries:

  • Conversions
  • LCD
  • GLCD
  • RS485
  • Trigonometry (integer operation)

Note: Double click the library to bring up help for that library component.

Warning: If you use the library you will be locked into using the tool and it will be difficult to change over to a different pic c compiler should you wish to do so. Also, sometimes MikroC likes to change things around and that breaks your existing code examples from this site are that they re-labelled UART functions as USART1 and USART2 and they don't provide a simple definition that would have stopped code breaking - you have to go away and figure it out which is a pain.

The good bit about the Built-in Libraries

Library code is ready to use to operate multiple hardware devices and some of these are complex such as compact flash, ethernet, CAN interface and there are specific device supported ranging from port expanders to graphical LCDs. Note however you do not get access to the source code for these libraries.

Since MikroC uses standard libraries the functions contained in ANSI libraries are the same so the library viewer lets you easily see what functions are defined in which libraries - otherwise if you are not too familiar with ANSIC you have to go and look up what function is contained in which library so you can put the correct include header into the c source.

For instance where is the function memcpy defined? -its easy to look up = string.h

The bad bit about the Built-in Libraries

MikroC PIC C Compiler Library Linking Errors

The main reason for bringing up the subject of libraries is that for a normal project as some point you will be asked if you want to include all libraries (slows compilation a bit - I think). If you do not then you need to go in a specifically click checkboxes in the library manager to include standard libraries.

This is totally non-standard behaviour - other compilers will include the libraries asked for in the source file - especially standard ones such as stdlib.h and string.h.

If you don't click the checkboxes you will get errors in the message output and the message will not indicate why it is there.

Example: If you turn off the C_Stdlib and compile the 7segment counter timer code the following error appears:

"Line 0      ErrNo.=360     Unresolved extern 'ldiv'"

The reason is that somwhere in the code a long divide operation is occuring and stdlib happens to be the place that this (assembler) library function is located - but the compiler wont' tell you that so you have to go through your code and check all libraries that are "included" by your code are matched by the checkboxes in the library manager. Some errors are more obvious e.g. LCD_Init and not checking the lcd library.

#include oddities

The other slightly wrong thing with libraries is that you can use them without declaring the include directive e.g. for the LCD frequency counter code it does not have the following line

#include "lcd.h"

Also the above line causes a warning anyway!

There are two issues with this:

  1. The code itself does not indicate what library is included.
  2. It locks you into that compiler.

When you look at the code alone, you can not tell that it relies on a library that is built into the MikroC compiler.

A library is included only by the external environment i.e. by the MikroC compiler - that is Ok if you only ever use that environment but not if you want to move to a different compiler. Also it is just non-standard bad practice and allows you to get away with code that should have an include directive in it.

New! Comments

Have your say about what you just read! Leave me a comment in the box below.

Jump from PIC C compiler to
Best-Microcontroller-Projects Home Page

Privacy Policy | Contact | About Me

Site Map | Terms of Use

Visit our Facebook Page:

   Click Here

Recent Articles

  1. The TP4056: Lithium Ion/polymer Battery Charger IC

    Learn how to use the TP4056 properly. There's a right way, and a wrong way, to use it to safely charge Lithium Ion batteries.

    Read more

  2. How to use the MCP4728, a versatile four channel DAC with built in voltage reference.

    The MCP4728 chip is a four channel 12 bit DAC, with memory that outputs voltage that you can use for calibration, anywhere you want a fixed voltage.

    Read more

  3. Secrets of the Hitachi HD44780 LCD: How to display text and bargraphs.

    Find out how to connect the Hitachi HD44780 and use it to display text and graphics in any of your projects.

    Read more

  4. INA219: A voltage and current sensing chip using I2C

    INA219: How to use the INA210 for maximum accuracy in current and power measurements

    Read more

  5. Arduino Oversampling: How to Get More ADC Bits with No Extra Hardware!

    Arduino oversampling is a technique to increase ADC resolution by reading more samples then decimating. It really does work!

    Read more

  6. How to use the ADS1115

    A tutorial on using the ADS1115 precision 16 bit ADC for low power use.

    Read more

Readers Comments

"I wanted to thank
you so so so much
for all the information
you have provided in
your site it's


- Ranish Pottath

"This site really is
the best and my favorite.
I find here many useful
projects and tips."

- Milan


"Awesome site,
very, very easy and nice
to navigate!"

- Matt

Learn Microcontrollers

"Interested in

Sign up for The
Free 7 day guide:


"I am a newbie to PIC
and I wanted to say
 how great your
site has been for me."

- Dave


"Your site is a great
and perfect work.

- Suresh


"I couldn't find the correct
words to define
yourweb site.

Very useful, uncovered,
honest and clear.

Thanks so much for
your time and works.

- Anon

Back to Top