Switch Debouncing Program
Written by Amol Shah, on May-2008
Views 496

Switch Interfacing & Debouncing

 

Over here we consider ONE Switch & TWO LED connected to a microcontroller. Please check the SWITCH INTERFACING and the LED INTERFACING article to see how to connect Switches & LED’s to a microcontroller.

Here is a program that will TURN ON A LED1 if a switch is debounced properly & will TOGGLE LED2 if there is some error in switch debouncing. LED1 will be ON until the switch is pressed & will turn OFF as soon as it’s released. We have taken the debounce period as 20ms. So once a LOW signal has been received from the switch the controller will again check the switch status after 20ms & if at that time the switch is high LED2 will be toggled and if the switch is LOW LED1 will be turned ON.

 

led1                                       bit                           P2.0

led2                                       bit                           P2.1

switch1                                 bit                           P1.0


ORG 0000h

                setb switch1       //initialize switch 1 as input

                setb led1             //Turn OFF LED1

                setb led2             //Turn OFF LED2

               

wait:

                jb switch1,wait   // Wait till switch1 has been pressed

                call debounce_delay

                jb switch1,c1_wait

//switch low even after debouncing period

//switch has been succesfully debounced

                clr led1                  //Turn ON LED1

                jnb switch1,$                     //wait till switch has been released

                setb led1                             //Turn OFF LED1

                ajmp wait

 

c1_wait:

//Switch PIN high after debounce period so error in debouncing

                cpl led2

                ajmp wait

  

debounce_delay:            //Subroutine for generating 20ms delay

                mov r7,#245

l1_debounce_delay:

                mov r6,#40

                djnz r6,$

                djnz r7,l1_debounce_delay

                ret

 

END



Add this page to your favorite Social Bookmarking websites
Reddit! Del.icio.us! JoomlaVote! Google! Live! Facebook! StumbleUpon! Yahoo! Free social bookmarking plugins and extensions for Joomla! websites!
Quote this article in website Favoured Print Send to friend Related articles Save this to del.icio.us

Users' Comments (0) RSS feed comment

No comment posted

Add your comment



mXcomment 1.0.5 © 2007-2008 - visualclinic.fr
License Creative Commons - Some rights reserved
 
< Prev   Next >
Home arrow Code Library arrow Switch Debouncing Program