Newbie - 16F628A and switch latching


Results 1 to 40 of 46

Threaded View

  1. #12
    malc-c's Avatar
    malc-c Guest


    Did you find this post helpful? Yes | No

    Default lets get this back on topic before I need a cold shower !

    I'm hoping that you guys and Miss whippy, sorry Mel can tell me why the following code won't work correctly.

    Having managed to sort out the delay for the debounce I had each LED bing turned on, latched and turned off by activation of the corresponding reed switch - Great !

    However I now want to evolve the code so that the following happens. The siding has the buffer at the left, and trains enter from the right. A reed switch (sw1) is placed at the start of the siding (on the right), a train enters the siding and activated sw1 and LED1 is lit. The train continues to the end of the siding where it activates the second reed switch (sw2) and thus LED2 is lit, and the operator shuts off the power. So far so good.

    Now the operator can re-arrange the train and place the loco at the other end ready to go back on the main layout. When it does sw1 is then activated again, but this time I need it to clear both LED1 and LED2. Ok I thought, lets simply have a new varible (swset5) that is toggled only when swset1 and swset2 are high.. but it won't work. activating sw1, then sw2, then sw1 again just turns off LED1, LED2 remains lit

    Here is my code (I've yet to try the BUTTON command, but maybe that will happen when I come to tidy up the code ??)

    Code:
    @INTRC_OSC_NOCLKOUT
    @WDT_ON
    @PWRT_ON
    @MCLR_OFF
    @BOD_ON
    @LVP_OFF
    @CPD_OFF
    @PROTECT_OFF
    
    CMCON=7
    TRISB=%00000011         'set RB0 & 1 as input and the rest output
    
    SW1 var PORTB.0          'switch input pin 6 (RB0)
    SW2 var PORTB.1          'switch input pin 7 (RB1)
    
    
    LED1 var  PORTB.4       'LED1 on pin 10 (RB4)
    LED2 var  PORTB.5       'LED1 on pin 11 (RB5)
    
    Swset1 var bit
    Swset2 var bit
    
    Swset5 var bit
    
    low led1
    low led2 
                    
    Swset1=0 
    Swset2=0
    
    swset5=0                'Var swset is set low
    
    Main:
    if SW1=0 then            'If switch is LOW (Grounded) then
    Toggle Swset1            'change swset1 from 0 to 1
    pause 500                'debounce delay
    endif
    
    if SW2=0 then            'If switch is LOW (Grounded) then
    Toggle Swset2            'change swset2 from 0 to 1
    pause 500                'debounce delay
    endif
    
    If Swset1=1 then         'if swset1 is 1
    high led1                'then turn on RB4 (and hence the LED)
    else
    low led1                 'else, LED is off
    endif
    
    If Swset2=1 then         'if swset2 is 1
    high led2                'then turn on RB5 (and hence the LED)
    else
    low led2                 'else, LED is off
    endif
    
    If swset1=1 and swset2=1 then
    toggle swset5
    endif
    if swset5=1 and sw1=0 then
    low led1
    low led2
    else 
    high led1
    high led2
    endif
    
    End
    I have even tried removing the "else" part at the end of the code so it reads
    Code:
    If swset1=1 and swset2=1 then
    toggle swset5
    endif
    if swset5=1 and sw1=0 then
    low led1
    low led2
    endif
    But that still fails to work correctly.

    Any advice guys and gals ??
    Last edited by malc-c; - 15th May 2006 at 13:35.

Similar Threads

  1. 16F628A - Stops if release power switch.
    By dene12 in forum General
    Replies: 16
    Last Post: - 14th February 2009, 07:57
  2. Addressing with Dip Switch or ???
    By tazntex in forum mel PIC BASIC Pro
    Replies: 10
    Last Post: - 16th September 2008, 12:19
  3. 16f628a wont wake up
    By Peter1960 in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 25th August 2008, 14:22
  4. SLEEP mode 16F628A
    By Michael in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 25th April 2006, 17:26
  5. 16F628A using PORTA.4, and it works, but...
    By zx81 in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 17th August 2005, 08:45

Members who have read this thread : 0

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