Please update your Flash Player to view content.

                  FOLLOW  US





 
 
Timer Based Led Blinking Program
Code Library - 8051 Assembly

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 mode to generate One second delay. The maximum delay that can be generated using TIMER 0 in any mode is 65535 clock cycles & since we are using 12MHz crystal 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.

 

led1                                     BIT                          P2.0

multiplier                              EQU                       30h                      //RAM Location               

 

MULTIPLIER_DEFAULT           DATA                     20                        //20 x 0.05 = 1 sec

 

ORG 0000h

                mov multiplier,#MULTIPLIER_DEFAULT

                mov TMOD,#01h                                                        // Timer 0 Mode 1(16 bit mode)

                mov TH0,#3ch                                                           //0.05 sec           

                mov TL0,#0B8H

                setb TR0                                                                  //Start Timer 0

 

loop:

                clr led1                                                                    //TURN ON LED

                call check_timer                                                       //wait for 1 second

                setb led1                                                               //TURN OFF LED

                call check_timer                                                      //wait for 1 second

                ajmp loop                                           

  

check_timer:

                jnb TF0,$                                                              //wait for timer to over flow

                clr TF0                                                                 //clear TIMER 0 flag

                clr TR0                                                                //Stop Timer 0

                mov TH0,#3ch                                                    //0.05 sec, Reload timer 0

                mov TL0,#0B8H 

                setb TR0                                                            //Start Timer 0

                djnz multiplier,check_timer                                  //Decrement multiplier by 1 & check if its 0

                mov multiplier,#MULTIPLIER_DEFAULT                

                ret

end

 

Add comment


Security code
Refresh

 

Featured Products

 

Random Products



Rs130.00



Rs35.00



Rs75.00





Latest Video

Random Articles

Search Products

User Login






 
 
.
 TUTORIALS
.
  8051 Tutorial
 
  Power Supply
 
CODE LIBRARY
.

  8051 Assembly
 
  C Code Library

.
 PROJECTS
.
  Project List
 
  Synopsis and Abstract
 
DOWNLOADS
.

  Datasheets
 
  Download

.
 POPULAR
.
  About Us
 
  DNA Shop
 
  Totorial
 
  Code Library
 
  Download
 

.
 CONTACT US
.

Mr. Amol Shah

DNA Technology Nashik,

Maharashtra 422009 India

Phone : 0253-3023939

Mobile : 09225145135

Email : contact@dnatechindia.com