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 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:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.