PIC16F84A LED blinking code + Proteus simulation

This post provides the code to make an LED blink using PIC16F84A microcontroller. This code is written in C language using MPLAB with HI-TECH C compiler. This code is intended to be the first step in learning how to use PIC16F84A microcontroller in your projects. You can download this code from the ‘Downloads’ section at the bottom of this page.Following figure shows the minimum circuit required to make an LED blink with PIC16F84A.

PIC16F84A LED blinking code + Proteus simulationIn this figure, first thing to note is that there is a crystal of 20MHz used with PIC16F84A[1]. You can use any crystal from 0 to 20MHz with PIC16F84A. MCLR master reset pin is pulled high to keep PIC16F84A out of reset. RA0 pin is being toggled in the code.

microcontrollers, then you have to include “htc.h” file in the code. After including “htc.h” file, configuration bits are being set in the code shown above. To understand the details of how these configuration bits are being programmed, you can read this post.After the configuration bits, LED pin is being defined as the RA0 pin. You can replace RA0 with any other pin name if you want (e-g RB0 etc). After LED pin definition, CPU frequency is being defined.

PIC16F84A LED blinking code + Proteus simulation SchematicYou have to define _XTAL_FREQ macro, if you want to use built in delay functions like __delay_us() and __delay_ms(). Here CPU frequency is defined to be 20MHz, which is the crystal oscillator frequency attached with PIC16F84A in the circuit.In the main function, firstly RA0 pin direction is set to be an output pin using TRISA0 = 0; statement. Using TRISx register[2], we can set the direction of any pin i-e if it is an input or output. Then LED pin is made low using LED = 0;statement.LED pin is being toggled in the while loop after every half second. In this way you can easily make LED blink using PIC16F84A microcontroller.


For more detail: PIC16F84A LED blinking code + Proteus simulation 

About The Author

Ibrar Ayyub

I am an experienced technical writer with a Master's degree in computer science from BZU Multan University. I have written for various industries, mainly home automation, and engineering. I have a clear and simple writing style and am skilled in using infographics and diagrams. I am a great researcher and is able to present information in a well-organized and logical manner.

Follow Us: