Quote Originally Posted by Acetronics
Hi, Malc

try this:
Thanks, and yes it compiles OK and in tests works as required approx 70% (ie 7 out of 10) of the time. On three attepts LED2 remained lit, but its a lot better than my 0% success rate


And now try to understand WHY !!!
OK I'll have a go...


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
Sets up the PIC and the varibles

Main:

if SW1=0 then
'If switch is LOW (Grounded) then

IF swset5 =1 THEN

swset1 = 0
swset2 = 0
swset5 = 0
If pin is grounded then check to see if varible bit swset5 is set high, and if so then swset 1,2 and 3 are all set low

loop: IF sw1=0 then loop 'wait for button release ... Yessss !!!
constantly loop round checking pin sw1 to see if grounded


GOTO jump

ENDIF
and if so, goto the section of the code labled jump....


Jump:

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 the varibles swset 1 is high then turn on its corresponding LED, if low then turn off the LED, same thing for swset2

If swset1=1 and swset2=1 then
toggle swset5
endif

Goto Main
If swset1 and swset2 are both high then change the state of swset5 to high, which iwhen checked by the line above

IF swset5 =1 THEN

swset1 = 0
swset2 = 0
swset5 = 0

resets swset1, swset2 and swset5 back to 0, and conversly all LEDs are turned off


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


End
Checks sw2 and changes the state of swset2 (and thus LED2)


Well how did I do ??