Mastering the Basics: Programming a PIC Microcontroller

One lesson I’ve gleaned from parenthood is the formidable challenge of imparting knowledge to a child. Despite their keen interest and ample time and resources at hand, if a child isn’t prepared or lacks essential foundational elements, grasping a skill or lesson can prove elusive.

Fortunately, programming a PIC microcontroller unit (MCU) presents a significantly more manageable task. Armed with appropriate programming tools, circuitry, and functional firmware, a programmer can precisely control the behavior of a PIC microcontroller. However, to preempt avoidable complications and frustrations in the future, it remains imperative to follow a few essential steps diligently.

The PIC Microcontroller

Even with the rise of single-board embedded controllers such as Arduino, Raspberry Pi, or BeagleBone, the PIC microcontroller maintains its relevance among electronics engineers. Produced by Microchip, PIC microcontrollers are known for their user-friendly nature, adaptable features, and cost-efficiency. PIC microcontroller programming encompasses a spectrum from basic 8-bit models to advanced 32-bit versions.

The widespread adoption of PIC microcontrollers extends beyond just engineers to include hobbyists. With their diverse range of peripherals, ample memory, and processing capabilities, PIC microcontrollers are suitable for a wide array of applications. It’s not uncommon for programmers to encounter PIC microcontrollers in everyday devices like washing machines or alarm systems.

Tools A Programmer Needs To Program A Microcontroller

Today, programming a PIC microcontroller is notably simpler compared to a decade ago. In the past, certain lower-range PIC microcontrollers necessitated specialized PIC programmer hardware for firmware injection. However, for those beginning with a PIC microcontroller today, downloading firmware into the microcontroller typically entails a straightforward process.

The following are the essential tools required for programming a PIC microcontroller today:


The MPLAB X IDE, developed by Microchip, provides a comprehensive development environment. Utilizing MPLAB X is essential for tasks such as writing firmware, compiling, and building, all prerequisites for programming the PIC microcontroller. Unlike previous expensive IDEs that required payment, MPLAB X IDE is available for free download.

The first step is getting your firmware right.


The PICKIT 4, Microchip’s newest in-circuit debugger for PIC microcontrollers, enables programmers to efficiently download programs to the microcontroller. It represents an advancement over its predecessor, the PICKIT 3, boasting an additional feature: an SD Card slot. This feature allows for convenient on-the-go programming of various firmware. When programming the PIC microcontroller in a laboratory setting, you’ll need to establish a connection between the PICKIT 4 and the USB port of your computer, as well as the programming pin of the microcontroller.

3. Programming Circuit

The datasheet specifies the programming pins for PIC microcontrollers. These microcontrollers offer support for either In-Circuit Serial Programming (ICSP) or In-Circuit Debugging (ICD), with the latter enabling engineers to debug firmware in real-time. It’s crucial to incorporate the necessary circuitry for the programming interface (ICSP or ICD) into the design to facilitate connection with tools like PICKIT 4 or PICKIT 3.

Programming the Microcontroller

Once all programming tools are prepared, whether utilizing ICSP or ICD, and the prototype is assembled, programming the microcontroller becomes almost second nature. Unlike conventional programming tools that necessitate powering up the hardware prior to firmware downloads, PICKIT programmers can be configured to power up the microcontroller provided it remains within its maximum current limit.

There are two methods for loading firmware into the PIC microcontroller. Within the MPLAB X IDE, programmers will discover the options to ‘Run Project’ or ‘Debug Project’. Selecting ‘Run Project’ compiles and builds the firmware in production mode, while the latter generates a debug version of the firmware footprint. It is essential to ensure that the final product is programmed with the production version of the firmware.

Done correctly, your microcontroller will start running after the program is loaded.

Tips for Designing the Programming Circuit on a PCB

The arrangement of programming pins on both PICKIT 3 and PICKIT 4 is similar, with PICKIT 4 featuring two additional reserved pin connections. Firmware is transferred via the PGD and PGC signals, with an /MCLR pin used to place the microcontroller into programming mode.

To minimize signal corruption, it’s essential for the programmer to route both PGD and PGC signals in parallel, ensuring they maintain the same length. Additionally, clear labeling of the programming pins’ orientation on the PCB is crucial to avoid the risk of mistakenly plugging in the PICKIT in reverse, which could potentially damage both the PCB and PICKIT.

Utilizing robust PCB design software such as Altium Designer® can greatly assist in creating programming circuits for PIC microcontrollers that are free from interference.

For further guidance on programming a PIC microcontroller, consult with an expert at Altium Designer.

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us: