Hold down switch to make led light up.
Hi
When you push down on pin [noparse][[/noparse]23], it runs the program (pub Right), and repeats it over and over, till you let go of the switch.
Is there A way that I can program it, so when you hold down the switch, it will run to the end of the (pub Right), and stop with all
the (outa[noparse][[/noparse]0..19] := %11111111111111111111) On. Then when you let go of the pin [noparse][[/noparse]23], it will go to off. (outa[noparse][[/noparse]0..19] := %00000000000000000000).
So what I am shooting for. The same way the brake works.
pin held down (22 ON) = All Pin's are on ( outa[noparse][[/noparse]0..19] := %11111111111111111111)
pin (22 off) = ( outa[noparse][[/noparse]0..19] := %0000000000000000)
Thank you.
Post Edited (Tony11) : 5/13/2010 1:05:05 AM GMT
When you push down on pin [noparse][[/noparse]23], it runs the program (pub Right), and repeats it over and over, till you let go of the switch.
Is there A way that I can program it, so when you hold down the switch, it will run to the end of the (pub Right), and stop with all
the (outa[noparse][[/noparse]0..19] := %11111111111111111111) On. Then when you let go of the pin [noparse][[/noparse]23], it will go to off. (outa[noparse][[/noparse]0..19] := %00000000000000000000).
So what I am shooting for. The same way the brake works.
pin held down (22 ON) = All Pin's are on ( outa[noparse][[/noparse]0..19] := %11111111111111111111)
pin (22 off) = ( outa[noparse][[/noparse]0..19] := %0000000000000000)
Thank you.
con
_clkmode = xtal1 + pll16x
_xinfreq = 0_500_000
pub Kid
repeat
if ina [noparse][[/noparse]22]
brake
if ina [noparse][[/noparse]23]
right
pub right
dira[noparse][[/noparse]0..19] := %11111111111111111111
outa[noparse][[/noparse]0..19] := %00000000000000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %00000000000000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %10000000000000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11000000000000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11100000000000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11110000000000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111000000000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111100000000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111110000000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111000000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111100000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111110000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111111000000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111111100000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111111110000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111111111000000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111111111100000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111111111110000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111111111111000
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111111111111100
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111111111111110
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %11111111111111111111
pub brake
dira[noparse][[/noparse]0..19] := %11111111111111111111
outa[noparse][[/noparse]0..19] := %11111111111111111111
waitcnt(clkfreq/4 + cnt)
outa[noparse][[/noparse]0..19] := %00000000000000000000
Post Edited (Tony11) : 5/13/2010 1:05:05 AM GMT
Comments
REPEAT WHILE ina[noparse][[/noparse]23] == 1
and it will stay there until you let go of the button.
1. a loop
2. a variable which has the least significant bit set to 1
3. shift the bit with each iteration
4. write the bit to the outa
Of course you have to find the right order ;o) .. and the right operation to 'write' it to the outa ...
And then compare the longs needed in your first version and in the loop version.
By the way ... dira is only needed once, as long as you run the code in the same COG. So, I'd move it to the main program in your case and remove it from both functions.
Post Edited (MagIO2) : 5/13/2010 12:34:47 PM GMT