Buscando un posible comando de Visual Basic

Hola amigos, mi problema es el siguiente, estoy haciendo una maqueta y uso un motor para subir y bajar una persiana, y a la hora de programar la placa (picaxe 28x1) me ha surgido un pequeño problema:

Uso un LDR para que lea el valor de la luz exterior, cuando este valor es más pequeño o más grande de 150 las persianas bajan o suben respectivamente, el problema es cuando por ejemplo las persianas ya están subidas y al volver a leer el LDR vuelven a subir.

Mi pregunta es si existe algún tipo de comando que haga algo parecido al "if b0>XXX then XXX" como podria ser "si la salida 1 esta high (recibe corriente) entonces xxx" que me permitiría "saltarme" el paso de subir o bajar persianas en caso de que las luces ya estuviesen apagadas o encendidas. En caso de no existir como resolveríais el problema?

Código:
main:
gosub luces
gosub persiana
goto main

luces:
readadc 0,b0
if b0>=150 then apagar
if b0<150 then encender

apagar:
low 1
return
encender:
high 1
return

persiana:
readadc 0,b0
if b0>=150 then subir
if b0<150 then bajar

subir:
high 4
pause 50
low 4
pause 100
high 4
pause 50
low 4
pause 100
high 4
pause 50
low 4
pause 100
return 

bajar:
high 5
pause 50
low 5
pause 100
high 5
pause 50
low 5
pause 100
high 5
pause 50
low 5
pause 100
return

Gracias y saludos!
 
Hola Dgmot

Y si al finalizar la rutina de subir pones una bandera en Alto

Flag = 1
Cuando vuelva a querer subir la persiana se encuentra con que Flag = 1 y se sale de ella.

En la rutina de bajar la persiana borra esa bandera: Flag = 0.
Cuando vuelva a querer bajar la Persiana se encuentra con Flag = 0 y se sale de ella.

saludos
a sus ordenes
 
Gracias por la respuesta, pero me avergüenza decir que cometí un error en el título, me refería a al lenguaje Basic normal y no al visual basic, pero me deje llevar por la costumbre. Aún así encontré un comando interesante que supongo sera parecido aunque lo desconozco, Setintflags pero no entiendo como funciona, si no es molestia podrias explicarme las nociones básicas?

Gracias y saludos!
 
Hola Dgmot

Bueno el hecho de haber dicho Flag = 1 es solo como ejemplo.
Pude haber dicho Arriba = 1; así cuando tu programa quiera subir la persiana no lo hace porque ya está arriba.

If Arriba = 1 Then Return.

Lo del enlace que anotaste en tu mensaje es para manejar las interrupciones.

saludos
a sus ordenes
 
Atrás
Arriba