Microchip PIC18F452 LED's Blinking Code Using ' C ' Language

PIC18F452 LED's Blinking Code

Microchip PIC18F452 LED's Blinking Code Using ' C ' Language:

Blinking LED Time Delay Code:


// PIC 18F452 fuse configuration:
// Config word 1 (Oscillator configuration)
// 40Mhz crystal input
// Config word 2
// Config word 3
// Config word 4
// Config word 5, 6 and 7 (protection configuration)

#define _XTAL_FREQ 40000000                   //MHz

void delay_sec(unsigned char seconds)     // This function provides delay in terms of seconds
    unsigned char i,j;


void main()
    RB0 = 0;              // Make RB0 zero
    TRISB0 = 0;       // Make RB0 output

        RB0 = 1;                   // Make RB0 one
        delay_sec(1);         // delay of one second

        RB0 = 0;              // Make RB0 zero
        delay_sec(1);    // delay of one second


Note: The code was compiled in MPLAB X IDE Version 2.35 with Compiler HI-TECH C for PIC18 Version 9.8 and simulation was made in Proteus version 8.0

Description & Working Procedure:                                         

In this circuit a crystal of 10MHz is used with PIC18F452. This crystal frequency is fed into PLL of PIC18F452, which boosts it to 40MHz. As we know that any PIC microcontroller has an architecture which executes an instruction in 4 CPU cycles, hence this 10Mhz crystal + PLL [Phase Locked Loop] makes this PIC run at 10MIPS (Million of instructions per second). The code for this circuit is shown above.

The header file htc.h is always required whenever you are compiling the code in MPLAB using HI-TECH C compiler. After the header file, configuration word is being programmed. That crystal frequency is being defined as 40Mhz [ which is basically the output of Phase Locked Loop PLL ]. This definition of crystal frequency is used in the built in function of __delay_ms [ used in delay_sec function [ 'delay_sec' function provides the delay in seconds. For example for one second delay just write delay_sec(1).

In the main function, RB0 pin is defined to be an output using the TRISB0 = 0 statement. In the while loop RB0 is toggled continuously. RB0 is attached to the LED's as can be seen in the animated circuit above. Hence we have a blinking LED's.

Features of PIC18F452, 40-pin High Performance, Enhanced FLASH Microcontrollers with 10-Bit Analog to Digital Convertor:

High Performance RISC CPU:
  • C compiler optimized architecture/instruction set
    • Source code compatible with the PIC16 and PIC17 instruction sets
  • Linear program memory addressing to 32 Kbytes
  • Linear data memory addressing to 1.5 Kbytes 
  • Up to 10 MIPs operation:
    • DC - 40 MHz osc./clock input
    • 4 MHz - 10 MHz osc./clock input with PLL active
  • 16-bit wide instructions, 8-bit wide data path
  • Priority levels for interrupts
  • 8 x 8 Single Cycle Hardware Multiplier
  • FLASH 32 Kbytes
  • 16384 single word instructions
  • 1536 bytes On-chip RAM
  • 256 bytes data EEPROM
Peripheral Features:
  • High current sink/source 25 mA/25 mA
  • Three external interrupt pins
  • Timer0 module: 8-bit/16-bit timer/counter with 8-bit programmable prescaler
  • Timer1 module: 16-bit timer/counter
  • Timer2 module: 8-bit timer/counter with 8-bit period register (time-base for PWM)
  • Timer3 module: 16-bit timer/counter
  • Secondary oscillator clock option - Timer1/Timer3
  • Two Capture/Compare/PWM (CCP) modules. CCP pins that can be configured as:
    • Capture input: capture is 16-bit, max. resolution 6.25 ns (TCY/16)
    • Compare is 16-bit, max. resolution 100 ns (TCY)
    • PWM output: PWM resolution is 1- to 10-bit, max. PWM freq. @: 8-bit resolution = 156 kHz 10-bit resolution = 39 kHz
  • Master Synchronous Serial Port (MSSP) module, Two modes of operation:
    • 3-wire SPI™ (supports all 4 SPI modes)
    • I2C™ Master and Slave mode
  • Addressable USART module:
    • Supports RS-485 and RS-232
    • Parallel Slave Port (PSP) module
Analog Features:
  •  Compatible 10-bit Analog-to-Digital Converter module (A/D) with:
    • Fast sampling rate
    • Conversion available during SLEEP
    • Linearity ≤ 1 LSb
  • Programmable Low Voltage Detection (PLVD)
    • Supports interrupt on-Low Voltage Detection
  • Programmable Brown-out Reset (BOR)
Special Microcontroller Features:
  • 100,000 erase/write cycle Enhanced FLASH program memory typical
  • 1,000,000 erase/write cycle Data EEPROM memory
  • FLASH/Data EEPROM Retention: > 40 years
  • Self-reprogrammable under software control
  • Power-on Reset (POR), Power-up Timer (PWRT) and Oscillator Start-up Timer (OST)
  • Watchdog Timer (WDT) with its own On-Chip RC Oscillator for reliable operation
  • Programmable code protection
  • Power saving SLEEP mode
  • Selectable oscillator options including:
    • 4X Phase Lock Loop (of primary oscillator)
    • Secondary Oscillator (32 kHz) clock input
  • Single supply 5V In-Circuit Serial Programming™ (ICSP™) via two pins
  • In-Circuit Debug (ICD) via two pins
CMOS Technology:
  • Low power, high speed FLASH/EEPROM technology
  • Fully static design
  • Wide operating voltage range (2.0V to 5.5V)
  • Industrial and Extended temperature ranges
  • Low power consumption:
    • < 1.6 mA typical @ 5V, 4 MHz
    • 25 μA typical @ 3V, 32 kHz
    • < 0.2 μA typical standby current



More From Iamtechnical.com