Autor Tema: demostracion del comando BUTTON  (Leído 8297 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: demostracion del comando BUTTON
« Respuesta #15 en: 18 de Marzo de 2005, 22:00:00 »
Lager, no pienses que no leí tu post por haber pasado tanto tiempo sin responder. Lo que sucede es que lo leí un poco apurado en su momento y pensé que no tenía solución y no lo mire mas.

Pero ahora que lo releo (estoy haciendo esa parte del código del teclado) me doy cuenta de que creo que nuevamente no nos entendemos...
El tema de los alias (llamar a un puerto de 2, 3 o 4 maneras) tiene otra razón que voy a volver a explicar de otra manera (a ver si ahora se me entiende).
Yo quiero hacer algo parecido a lo que hace INKEY pero sin estar limitado a 16 botones, entonces, vamos a hacer de cuenta que quiero sensar 2 botones nada mas para hacerla más facil.
Supongamos que tengo 2 botones que se conectan de la siguiente manera:

PORTC.0.............SW1..............PORTB.1................SW2..................PORTC.1
O---------------------/ ------------------O------------------- --------------------0

O sea que los 2 switchs tienen una pata en común con RB1 y los otros dos extremos se conectan a RC0 y RC1.
Ahora, para sensar los 2 botones hago:

HIGH PORTC.0
IF PORTB.0 = 1 THEN
  HIGH LED1
ENDIF

HIGH PORTC.1
IF PORTB.0 = 1 THEN
  HIGH LED2
ENDIF

Eso sería un multiplexaje para leer switchs. Eso mismo quiero hacer con el PORTC y el PORTB (8*8 =64)
Entonces pensé: que tal si uso BUTTON para esto?
El problema es que no ví ningún ejemplo con un PORTB.0 con 4 estados posibles!!!
PORTB.0 = 0 cuando PORTC.0 = 1
PORTB.0 = 1 cuando PORTC.0 = 1
PORTB.0 = 0 cuando PORTC.1 = 1
PORTB.0 = 1 cuando PORTC.1 = 1 (los 4 estados)

Como BUTTON va en un loop y como a medida que el loop avanza el estado del PORTC cambia no me puedo guiar por el valor del pin a secas porque al cambiar el boton sensado BUTTON se piensa que estoy leyendo el mismo pin que antes y lo toma como rebotes o pulsaciones sucesivas.
Entonces:

SYMBOL BOTON1 = PORTB.0
SYMBOL BOTON2 = PORTB.0

LOOP:
LOW PORTC

HIGH PORTC.0
BUTTON BOTON1, X, X, X, X, X, ETIQUETA1
LOW PORTC

HIGH PORTC.1
BUTTON BOTON2, X, X, X, X, X, ETIQUETA2
LOW PORTC

GOTO LOOP

Con esto pretendo conseguir engañar a BUTTON para que en boton1 no pierda la cuenta del antirrebote de boton1 al cambiar a boton2 y viceversa. Quiero que los trate como 2 pines distintos por esta razón.

Muchas gracias por tu tiempo...
(y espero tu respuesta... je je!)

Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
RE: demostracion del comando BUTTON
« Respuesta #16 en: 19 de Marzo de 2005, 18:05:00 »
Jjajajajaja, pana ya ni me acordaba Sonrisa
Bueno, leyendo tu post, y viendo los codigos(con if y con button) , sigo considerando lo mismo,... es lo mismo para mi!,.. y hasta cierto punto mejor con el primer codigo.. ya que uno tiene control del tiempo EXACTO que estara censando el MISMO boton... con condiciones diferentes..... no es por no quere usar el comando button, simplemente creo que el comando esta sobrado, o es solo una forma mas de hacer lo que se quiere hacer(en este caso lo que tu deseas hacer) tomando en cuenta que el condicionante if va a ocuparme  de 2 a 3 ciclos de instruccion(dependiendo si es valido o no)  preferiria la primer opcion con un detalle adicional por supuesto.. poniendo en la entrada a el brinco o etiqueta o llamada o funcion... un antirebote chekando que se dejo de oprimir el boton.. no olvidemos que se oprimira el mismo solo va a cambiar el momento en que se oprime(y el momento depende del estado en que este en ese momento y en el ejemplo que posteaste el boton c...).. pero como te comente una ves, si gustas usar el comando button tan bien es correcta esa opcion.. solo que a veces prefiero tener el control preciso de cada funcion,llamada,etc.. que dejarla a cargo de un comando que de ante mano nunca sera idual de preciso , claro esto tomando en cuenta la comparacion del if(que es un btfss) con el comando button(que aun no e visto lo que genera... pero me imagino.. jejejeje) .
Si tienes el codigo ya completo con los comandos buttons, estaria bien que lo postearas como ejemplo de uso de este comando que en general trabaja muy bien Rebotado

Un gran abrazo pana Sonrisa


 

anything