Attention !!! We are shipping orders now but due to Covid-19 situation it can take 1-2 days for your orders to be shipped from our Nashik warehouse. If you have any queries feel free to contact us. Thank you for your support and understanding.
  • 8412906903

Product categories

Have You Seen

Samsung 18650 2600mah Li-ion Battery

Samsung 18650 2600mah Li-ion Battery

Samsung ICR18650-26J 2.6Ah BatteryOriginal Samsung 18650 2600 mah Lithium-ion BatteryThis is or..

Rs.247.80 (inc GST)
Rs.210.00 + GST

SKU: 1183 | DAB424
Stock: 0
Arduino Mega 2560 Pro Mini

Arduino Mega 2560 Pro Mini

Mega Pro 2560 Development Board Mega 2560 Pro a  Atmega2560 based compact Arduino MegaThis..

Rs.889.72 (inc GST)
Rs.754.00 + GST

SKU: 2058 | DAB079
Stock: 25

Timer Interrupt Based LED Blinking Program

Here is a simple code for Blinking a LED. The LED is connected to P2.0 & 12MHz crystal is used. The Anode of the LED is given to Vcc through a resistor & the cathode is connected to the microcontroller pin. Please check this link to see how to interface LED to Microcontroller. The LED is ON for One Second & OFF for ONE Second.

Here we will be using Timer 0 in 16 bit INTERRUPT mode to generate One second delay. We load TH0 & TL0 with a specific value & on every clock cycle TH0 & TL0 increments by 1 and when the TIMER overflows from FFFF to 0000 a Timer0 overflow flag is set & interrupt is generated.  The maximum delay that can be generated using TIMER 0 in any mode is 65535 clock cycles & since we are using 12MHz crystal the maximum delay is 65.535ms. But we require 1second delay. So we generate 50ms delay using TIMER 0 & when 20 such delays have been generated we come to know that one second has elapsed. So basically 0.05ms X 20 =1 second. So we use a RAM location “multiplier” load it with 20 and whenever the timer overflows the ram location multiplier is decremented by one. Thus when multiplier becomes zero we come to know that one second has elapsed & we toggle the LED.



BIT       P2.0


EQU      30h




ORG 0000h

ajmp main

ORG 000bh

jmp timer0_interrupt

// Jump To Interrupt Subroutine


setb EA

//Enable Interrupt

setb ET0

//Enable timer 0 Interrupt

mov multiplier,#MULTIPLIER_DEFAULT

mov TMOD,#01h

// Timer 0 Mode 1(16 bit mode)

mov TH0,#3ch

//0.05 sec

mov TL0,#0B0H

setb TR0

//Start Timer 0

clr led1


ajmp loop


push acc

push b

push psw

push dph

push dpl

clr TF0

clr TR0

//Stop Timer

mov TH0,#3ch

//0.05 sec

mov TL0,#0B8H

//Reload Timer

djnz multiplier,c1_timer0_interrupt

mov multiplier,#MULTIPLIER_DEFAULT

cpl led1


setb TR0

//Start Timer 0

pop dpl

pop dph

pop psw

pop b

pop acc




Written by Administrator