MPLAB XPRESS – a cloud based IDE for 8-bit PIC microcontrollers


Recently Microchip has unveiled the MPLAB Xpress IDE, a simplified, cloud-based alternative to the more sophisticated MPLAB X. This new tool is focused primarily on the beginners in PIC programming: “no downloads, no machine configuration, and no waiting to get started on your system development” [1].

This article is more than two years old and might contain obsolete information; it is still kept here for informational purposes.

I did work for some long time with the old MPLAB, and when Microchip switched to MPLAB X I found the new interface a bit cumbersome, and it took me some time to adjust to it. Things were worst for beginners: at a first contact MPLAB X is quite intimidating, and new users tend to spend more time learning how to use the IDE rather than focusing on code writing. In many ways the PIC programming world was never welcoming for the newcomers.

As opposed to this, we have the Arduino world: even from its early days Arduino was designed to be a tool for beginners, “one that anyone could use – even a child – to create what they like by following the instructions available online” [2]. From the start Arduino IDE had a very simple interface, and was oriented towards the coding community: everyone was encouraged to share its code, and with an ever growing community it’s no wonder today Arduino is one of the most successful programming environments.

Now Microchip makes a bold movement into the Arduino territory: the MPLAB Xpress is like a stripped-down version of the more powerful MPLAB X IDE, keeping only the bare necessary. It runs in the cloud, with only a few components that have to be downloaded locally, and, more important, it’s designed to facilitate code sharing. With this also comes a new piece of hardware: the PIC16F18855 Xpress board, a low cost development board that’s also focused to the very beginners: it’s detected by the computer as a mass storage device, and all you have to do is to drag the hex file onto this storage device – much like you do with an USB stick.

For those a bit more advanced there’s support for the PICkit3 programmer and the Curiosity board via a locally-run, Java based USB bridge software.

If you just want to see what MPLAB Xpress can do, all you have to do is browse to and run the code examples – all this can be done in guest mode, including compiling and downloading of the resulting .hex file. You will notice that all examples are for 8 bit PIC microcontrollers – momentarily only the XC8 compiler is available, support for 16-bit and 32-bit microcontrollers will be added during 2016.

However, if you wish to unlock the full potential of MPLAB Xpress IDE you will need a myMicrochip account. If you already have a myMicrochip account than you’re good to go – it will work with MPLAB Xpress too. And if you don’t have an account it’s so easy to set it up: just click on the myMicrochip Login link on the top bar of the page, then go to register now and enter your required data. It only takes a minute or so.

Once you have logged in you can access all MPLAB Xpress features, including the Microchip Code Configurator for a hassle-free configuration of your PIC device. All I have to say here is that MCC runs locally, also using Java. It’s also interesting to point out that MCC supports a limited range of microcontrollers – check the release notes of the current version of MCC for a list of the supported devices.

Just to give you an idea of what to expect, below are some screen shots of the menu system:

We notice in the File menu the presence of functions to import existing projects, and to package existing projects to export to MPLAB X. Nice.

I noticed that often PIC programmers are guarding their code like it’s the Crown Jewels and many are reluctant of keeping their code in the cloud. No problem here: once you have a perfectly working project you can export it to MPLAB X and store it locally. It also pays off to remember Linus Torwalds quote “Only wimps use tape backup. REAL men just upload their important stuff on ftp and let the rest of the world mirror it” [3].

MPLAB Xpress: a workflow example

Before writing my own code I was curious to find which examples are provided by Microchip. So, in the top-right bar I clicked on EXAMPLES. A warning opens saying “You will now be navigated away from IDE. All your saved files will stay saved with your project. Only unsaved changes will be lost“. If you have unsaved work this is your last chance to click on Cancel and save your precious code. Then, come back and press OK.

After pressing OK we are taken away from the IDE and sent to the MPLAB Xpress examples web page. Only 12 code examples are available, all for the PIC16F18855 microcontroller on the Xpress demo board. Until I’ll manage to get one of those boards in my hands, I will stick with the MPLAB Xpress simulator.

MPLAB Xpress Examples page

MPLAB Xpress Examples page

As a code example and MPLAB Xpress walkthrough I will choose the Hello World example, that code that lights an LED and it’s generally the first code example to be taught. So, I click on Open and… initially it looks that nothing happens. But, after 25 seconds or so of inactivity I find myself back into MPLAB Xpress IDE, with the Hello World project loaded and ready to go.

Mplab Xpress Hello World Example

Mplab Xpress Hello World Example

Everything is where it it supposed to be, all I have to do is to compile the code by selecting the Build option from the Run menu.

Compiling the Hello World code example in MPLAB Xpress

Compiling the Hello World code example in MPLAB Xpress

Now I have two options: I can click on the “Make and Program device” icon, or I can go to the Debug Program and simulate the code on the PC. Let’s see what happens in each case:

First, by choosing the “Make and Program device” option the program is compiled and the corresponding .hex file is downloaded on the PC. Since I don’t own as Xpress demo board there’s nothing I can do further at this stage.

The second option is to use the Debug Program option. As the code example comes with the Simulator / Xpress board already set as debug tool, I can go with simulation of the code. A short look at the code shows that the LED is connected to pin RA1, so from Window – Simulator – IO Pin I will put a watch on pin RA1. Then, from the debugger I can reset the microcontroller and then run the program step by step, noticing that the RA1 pin will change its state to 1 (LED ON).

MPLAB Xpress Hello World Simulation

MPLAB Xpress Hello World Simulation

MPLAB Xpress vs others

There are a lot of development tools on the market, why should we switch to MPLAB Xpress? And more important, how it will compare against some of those tools:

MPLAB Xpress vs Arduino

It’s like comparing apples and oranges. Arduino is on market for many years, and from its very beginning was focused towards beginners and the maker community. Add to this several years of evolution, a strong community and it seems Arduino is the thing. The shield form factor was quickly adopted by many third-party manufacturers, and now we have a huge amount or Arduino and Arduino-compatible hardware available. Add also the huge wealth of user-contributed code and you’ll find out that Arduino is hard to beat.

And speaking of the hardware, you might notice how limited the Arduino hardware is: a dozen or so supported microcontrollers, and only in some specific system clock configuration. In MPLAB Xpress we can program all 8 bit microcontrollers manufactured by Microchip.

On the other hand, free XC8 code is sublime in its absence. It will take a lot of time to have decent libraries of code shared on MPLAB Xpress, Only time will tell what will happen, but it depends largely on how the coding community will adopt MPLAB Xpress. As for the hardware, I like the idea of having one mikroBUS socket on the Xpress demo board, as I already have many click boards that I use on projects posted on this blog.

As for the code itself, I do prefer the Arduino approach: “sacrificing (when necessary) elegance of implementation for ease-of-use” [4]. I always try to write clean code, with lots of comments, so if someone tries to replicate my projects will have no issues to understand what I did. I think this will be a good approach for posting XC8 code too, and there’s a lot to be learned from the Arduino community.

MPLAB Xpress vs MikroC

I do post a lot of code written in MikroC Pro for PIC. I absolutely love that compiler, as it does almost everything I need it to do, it comes with a lot of software libraries and I can take full advantage from the code examples available on I will continue to use it, and in the future I plan to post even more code written in MikroC.

However, from time to time I receive some comments on the contact form asking me why I do use such an expensive compiler. Most of those comments come from students who are working on their final year project, and once the finish they don’t plan to use the compiler anymore.

Considering this, I had in my mind to start posting some code in XC8, using my already available MikroElektronika hardware. The release of MPLAB Xpress is just another incentive to start posting XC8 code.

Preliminary conclusions

From the first looks the new MPLAB Xpress is well suited for those making the first steps into PIC programming, with an intuitive interface, free XC8 compiler and a development board with an easier programming process, Definitely a good tool for learning,

Also for the given moment the web-based IDE looks OK. It remains to see what will happen when a few thousand students will try to access the IDE at the same time.

Will it make any difference? Again, only time will tell. For now Microchip has given us a new tool, it’s up to us to use it and to bring our own contributions. The success or the failure of the MPLAB Xpress IDE depends whether the community will adopt or reject it, and on the volume and quality of community contributed code. Regarding this issue it will be nice to see what will happen with the community contributed code. Will there be any option to remove shitty/buggy code?

A nice thing is that I can buy a XC8 PRO subscription on a per-needed basis, on 30$/month. That’s an interesting option, as I can play in FREE (optimized) mode for as long as I want, and when I have a project that requires optimization I can buy the XC8 Pro subscription only for as long at that project requires. This could be also an interesting option for MPLAB X users, which are able now to write the code on MPLAB X desktop application then move to MPLAB Xpress and compile in Pro mode at a fraction of the cost of a full XC8 Pro license.

As for the Xpress demo board, as soon as I will get one a more thorough review will follow.





  1. Avatar

    I am using PIC18F67K40 with MikroC. I referred to the Clicker2 EVM and designed a custom board with PIC18F67K40. The custom is being detected but not working according to programmed code. Can provide some suggestions?

    • Teodor Costachioiu
      Teodor Costachioiu on

      Are you using a bootloader, or are you uploading the code directly with PICkit3 or a similar programmer?
      If using the bootloader, be sure to have the same oscillator frequency as in the Clicker2 board, and configure the microcontroller as in the Clicker2 examples.