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.
In this figure, first thing to note is that there is a crystal of 20MHz used with PIC16F84A. 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.
You 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, 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