TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: seranko en 16 de Septiembre de 2006, 22:10:26
-
Hola a todos, finalmente encontre el foro que buscaba esta super bueno...
Estoy en el proceso de aprendizaje de PicBasic Pro y necesito algo de ayuda. El proyecto que tengo en mente va a tener 2 push buttons (los de tipo push-to-make), uno va a ser RUN/SET y el otro MODES.
La idea es hacer que el equipo cuando se prenda este en modo SET, pase a modo RUN cuando presiono el boton RUN/SET una vez, pase a modo SET cuando presiono el boton RUN/SET otra vez y asi sucesivamente. Cuando esta en modo SET se permite cambiar los MODES (de los que pienso tener 4 diferentes), cuando esta en modo RUN no hay cambios de MODES.
Como hago el algoritmo para hacer esto, tanto el RUN/SET como el cambio de los MODES teniendo en cuenta que son 2 push buttoms y que estos regresan a su estado inicial "0" cada vez que lo suelto ???
Les agradezco mucho la ayuda que me puedan brindar y gracias de antemano...
-
Haber, por lo que entiendo, el programa va a tener 2 opciones y varios modos, un botón controla si está en opcion RUN o en opción SET, y que cuando comienze a trabajar este en opción run.
Si esto es así, entonces despues de que definas variables y todo lo relacionado, deberás poner una linea que es:
GOTO RUN (Para que valla a la opción RUN donde:)
RUN:
Aquí vendría el código de lo que hace esta opción.
Tambien debe ir una linea que revisa el botón si se ha presionado o no, por ej sería algo como:
IF PORTA.0 = 0 THEN
PAUSE 500 (Que se detenga durante medio segundo para que se alcanze a soltar el suiche y no vaya y alcanze a regresar
GOTO SET
ENDIF (Aquí revisa el estado del botón, recuerda que el suiche, debe ir conectado a GND y al PORTA.0, a su vez debe llevar una resistencia de 10K (de pull up) entre el PORTA.0 y el VDD)
SET:
Aquí viene el código de esta opción y debe llevar la misma linea que revisa el estado del boton así:
IF PORTA.0 = 0 THEN
PAUSE 500
GOTO RUN
ENDIF
Ten en cuenta que lo anterior trabajará sí y solo sí cada opción es un bucle (que se repita el proceso de manera infinita), osea que al final de cada opción debe llevar un GOTO SET o GOTO RUN dependiendo de en cual esté, osea:
SET:
Código
Revisar botón
GOTO SET
Lo mismo para run. ademas si quieres cambiar los modes necesitas poner el otro suiche con las mismas conexiónes y dentro del set que es el que cambia modes pones lo siguiente:
SET:
Código
Revisar botón
IF PORTA.1 = 0 THEN
IF MODE = N THEN (Donde N es reemplazado por el MODE mas alto que haya osea un 5 un 7, todo depende de tu programa)
MODE = 0
ENDIF
MODE = MODE + 1 (Mode es una variable)
ENDIF
IF MODE = 1 THEN
Código del Mode 1
ENDIF
IF MODE = 2 THEN
Código del Mode 2
ENDIF
IF MODE = N THEN
Código del Mode N (Donde N es el MODE máximo que hay)
ENDIF
GOTO SET
Espero que te sea de ayuda, cualquier duda al respecto no dudes en formularla.
-
Alvaro, super tu ayuda. Ya lo tengo listo y funcionando.
En la forma como tienes planteado el algoritmo para los MODES el va a mostrarlos todos en forma secuancial a penas se presione el boton de PORTA.1. Para que pare MODE por MODE hice lo siguiente, de pronto le sirve a alguien...
Nuevamente gracias por ayudarme
SET
IF PORTA.1=0 THEN
IF MODE = N THEN
MODE = 0
ENDIF
endif
' MODE 0
IF MODE = 0 and PORTA.1=1 THEN
El codigo
MODEMENU = MODEMENU + 1
ENDIF
' MODE 1
IF MODE = 1 and PORTA.1=1 THEN
El codigo
MODEMENU = MODEMENU + 1
ENDIF
' MODE 2
IF MODE = 2 and PORTA.1=1 THEN
El codigo
MODEMENU = MODEMENU + 1
ENDIF
' MODE N
IF MODE = N and PORTA.1=1 THEN
El codigo
MODEMENU = MODEMENU + 1
ENDIF
GOTO SET
-
De manera secuencial, talvez sucede por el hecho que faltó un pause.
IF PORTA.1 = 0 THEN
PAUSE 500 (Este pause para que diera tiempo a soltar el botón)
IF MODE = N THEN
MODE = MO....
Eso talvez hacia que lo mostrara de manera secuencial, o lo mostraría de manera secuencial si:
El suiche no es un pulsador.
El suiche es un pulsador pero normalmente cerrado.