Home   |  Schematics |  Products |  Tutorials  |  Datasheets  |  Robotics   |   Download    |   Link Exchange


Direct Current
Alternating Current
Digital Electronics
PC Architecture
Electronics Dictionary
Resources

Experiment
Calculator/Converters
Radio
Newsletter
Associations and Societies
Component Manufacturers

 

Electronics Symentics


Microcontroller Intermediate Kit - Using Switches as Inputs

Up until now, all the microcontroller projects have just done what they were programmed to do without any input from us.  You have probably already thought that it would be nice to have the microcontroller do something based on inputs it receives from the real world.  This tutorial shows how to use a switch as an input so that you can control what the microcontroller is doing.

In this tutorial, we will use the 7 segment display as we connected it in the previous tutorial (Using a 7 segment display). The switch will be used to change what is shown on the display.

The type of switch we will be using is called a normally open switch. This is often abbreviated as NO switch where NO stands for Normally Open.  The switch has 2 legs (connectors).  Normally Open means that the connectors are not connected (forming an open circuit) unless you press the switch.  When you press the switch, a connection is made between the two connectors, creating a short circuit (or closed circuit).  You can also get Normally Closed switches (NC) which means that they are closed, forming a short circuit, unless you are pressing the button.

Our switch is really a button rather than a switch because you have to hold it down to maintain the connection between the two points.  These types are more useful with microcontrollers than a true switch.  A true switch lets you flip between open and closed without having to hold down the button.

Inputs to the Microcontroller

To use one of the input/output pins of the 8051 microcontroller as an input, you must write a '1' to that pin.

Then in the software, you can check to see if the input is a '0' or a '1' and do different operations based on that input.

Use the same hardware configuration that you have after the 7 segement display tutorial.  Add in the switch by connecting one wire to Pin 2 of the 2051 (that is Port 3, Bit 0) and connecting the other wire to ground.  Now when the button is not pressed, pin 2 will be left unconnected to anything and when the software checks (reads) pin 2, it will see the '1' that we wrote there to make it an input pin.  When the button is pressed, pin 2 will be connected to ground and when the software checks pin 2, it will see a '0'.

Software

Our first program will constantly check the input to see if the input (P3.0) is a '0' or a '1'.  This is called polling.

We will use the command JB (Jump if Bit is set) to check if pin 2 is a '1' or a '0'.  (If pin 2 is '1' then we say that the bit is set. In this case the bit is P3.0 so we would say P3.0 is set.)  Below is the little bit of assembly code we will use to monitor the input and change the display. 

   SETB P3.0                           ;This is required to use P3.0 as an input
LOOP:
   JB P3.0, NOT_PRESSED         ; If the button is not pressed, skip the next line
   ACALL DISPLAY_0          ;Display '0' on the 7 segment display
   AJMP LOOP                      ;Jump back up to LOOP:
NOT_PRESSED:
   ACALL DISPLAY_1         ;Display '1' on the 7 segment display
   AJMP LOOP                      ;go to LOOP(always jump back to point labeled LOOP)

The first line sets up pin 2 as an input by writing a '1' to P3.0.  Then "JB P3.0, NOT_PRESSED" checks to see if P3.0 is a '1' which means the button is not pressed.  If the button is not pressed, it jumps to that label (NOT_PRESSED) and calls the routine to make a '1' on the display.  If the button is pressed, it will not jump but instead will go to the next line which calls the routine to make a '0' on the display.  So the display will show the value of P3.0.

Note: Another command you may want to use is JNB (Jump if Not Bit set) which is the opposite of JB.

The program is switch.asm.

Compile the program using TASM and load the hex file into the 2051. Put the 2051 into the circuit and connect the power. The display should say '1' until you press the button and then should say '0' while the button is being pressed.





Home  Products  Tutorials   Schematics   Robotics   Resources   Radio Stuff    Career    Download   Link Exchange

HTML Sitemap   XML Sitemap


Terms & Conditions  Privacy Policy and Disclaimer