turning leds on and off


Closed Thread
Results 1 to 3 of 3
  1. #1
    mertkon's Avatar
    mertkon Guest

    Default turning leds on and off

    hi i have just started to picbasic. i tried to control led by button but i could not be successful.
    i wrote a code like this
    DEFINE OSC 48
    DEFINE RESET_ORG 800h
    TRISB.3 = 0
    TRISB.7 = 1

    low portb.3

    buttons:
    if portb.7 = 0 then 'if button is pressed
    high portb.3 'turn on led
    endif
    if portb.7 = 1 then
    low portb.3
    endif
    goto button
    end

    but at this code only while i am pressing the button led turns on and when i pull my finger back from the button it turns off. but i want led to turn on up to next pressing of button. what should i do. thanks for help and sorry for my english

  2. #2
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Read your code! It's doing exactly what you tell it to do!
    ----------------assume the button is pressed to start with
    low portb.3 ----- starts off LED off
    buttons:
    if portb.7 = 0 then 'the button is pressed, light the LED
    high portb.3
    endif
    if portb.7 = 1 then 'the button is pressed, so don't light the LED
    low portb.3
    endif
    goto button

    Now the other way around...assume the button is not pushed...........

    low portb.3 ----- starts off LED off
    buttons:
    if portb.7 = 0 then 'the button is not pushed, so this if/then does not execute
    high portb.3
    endif
    if portb.7 = 1 then 'the button is pressed, so light the LED
    low portb.3
    endif
    goto button

    And besides all that, at the end, don't you want to 'GOTO BUTTONS' instead of 'BUTTON'???


    What you probably want is something like this:
    DEFINE OSC 48
    TRISB.3 = 0 : TRISB.7 = 1 : state var bit : state = 0 : portb.3 = state

    buttons:
    portb.3 = state 'turn the led on or off according to the state bit
    if portb.7 = 1 then 'if button is not pressed, don't do anything
    goto buttons
    endif

    if portb.7 = 0 then 'if the button is pressed
    if state = 0 then 'if the LED was off last time...turn it on...
    state = 1
    else
    state = 0 'otherwise turn it off (since it was on last time)
    endif
    endif
    portb.3 = state 'turn the led on or off according to the state bit
    pause 100
    waitforrelease:
    if portb.7 = 0 then
    goto waitforrelease 'wait for the button to be released before checking it again
    endif
    goto buttons
    end

    Think about it for a bit...

  3. #3
    Join Date
    Jan 2006
    Location
    Istanbul
    Posts
    1,185


    Did you find this post helpful? Yes | No

    Default

    Try this, too.

    Code:
    
    <font color="#000000"><b>.
    ..
    ...
    
    </b><font color="#0000FF"><b>LED </b></font><font color="#000080"><b>VAR </b></font><font color="#0000FF"><b>PORTB</b></font><b>.</b><font color="#FF0000"><b>3
    </b></font><font color="#0000FF"><b>Btn </b></font><font color="#000080"><b>VAR </b></font><font color="#0000FF"><b>PORTB</b></font><b>.</b><font color="#FF0000"><b>7
    
    </b></font><font color="#0000FF"><b>LED </b></font><b>= </b><font color="#FF0000"><b>0
    
    </b></font><font color="#0000FF"><b>Start</b></font><b>:
    
    </b><font color="#000080"><b>IF </b></font><font color="#0000FF"><b>Btn </b></font><b>= </b><font color="#FF0000"><b>0 </b></font><font color="#000080"><b>THEN 
       WHILE </b></font><font color="#0000FF"><b>Btn </b></font><b>= </b><font color="#FF0000"><b>0 </b></font><b>: </b><font color="#000080"><b>WEND
       TOGGLE </b></font><font color="#0000FF"><b>LED
    </b></font><font color="#000080"><b>ENDIF
    
    GOTO </b></font><font color="#0000FF"><b>Start
    </b></font>
    "If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts