Autor Tema: Pasar de Secuencias con pulsador, no funciona....  (Leído 2469 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado hernanstafe

  • PIC10
  • *
  • Mensajes: 1
Pasar de Secuencias con pulsador, no funciona....
« en: 01 de Noviembre de 2010, 14:57:01 »
Tras leer varios post en el foro al respecto, sigo sin poder hacer funcionar esto.
Estoy utilizando un pic16f628a. Lo que quiero hacer es que al pulsar un boton en el puerto A0, vaya ejecutando comandos. Por ejemplo:

Apreto el boton 1 vez, enciende 1 led en A0.
Apreto el boton otra vez, enciendo otro led en A1.
Apreto denuevo, enciende otro led en A2.
etc...

Usando un post del foro, llegue a hacer esto

TRISA = %11111111
TRISB = %00000000
Dim boton As Byte
PORTA = 0
PORTB = 0
boton = 0

inicio:
If PORTA.0 = 1 Then Goto botonmas1
Goto inicio

botonmas1:
boton = boton + 1
If boton = 1 Then Goto comando1
If boton = 2 Then Goto comando2
If boton = 3 Then Goto comando3
If boton = 4 Then boton = 0
Goto inicio

comando1:
PORTB.0 = 1
Goto inicio

comando2:
PORTB.2 = 1
Goto inicio

comando3:
PORTB.4 = 1
Goto inicio

End

Pero no funciona, no hace absolutamente nada.
Estoy usando picbasic ide.
Desde ya les agradezco por la ayuda.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Pasar de Secuencias con pulsador, no funciona....
« Respuesta #1 en: 01 de Noviembre de 2010, 22:56:26 »
Prueba esto:

Código: vb.net
  1. Define CONF_WORD = 0x3f50
  2. Define CLOCK_FREQUENCY = 4
  3. AllDigital
  4. TRISA = %11111111
  5. TRISB = %00000000
  6. Dim boton As Byte
  7. 'PORTA = 0
  8. PORTB = 0
  9. boton = 0
  10. main:
  11.  
  12.         If PORTA.0 = 1 Then Gosub botonmas1
  13.  
  14. Goto main
  15. End                                              
  16. 'Subrutinas
  17. botonmas1:
  18.         boton = boton + 1
  19.         WaitMs 1  '200
  20.         If boton = 1 Then Gosub comando1
  21.         If boton = 2 Then Gosub comando2
  22.         If boton = 3 Then Gosub comando3
  23.         If boton >= 4 Then boton = 0
  24. Return                                            
  25. comando1:
  26.         PORTB.0 = 1
  27. Return                                            
  28. comando2:
  29.         PORTB.2 = 1
  30. Return                                            
  31. comando3:
  32.         PORTB.4 = 1
  33. Return                                            
  34. 'End
« Última modificación: 02 de Noviembre de 2010, 07:25:48 por dogflu66 »
Saludos desde Granada, España.

Desconectado marcelo2112

  • PIC12
  • **
  • Mensajes: 64
Re: Pasar de Secuencias con pulsador, no funciona....
« Respuesta #2 en: 03 de Noviembre de 2010, 22:48:19 »
y para que exprese en un lcd el estado del boton?
Algo asi: If boton = 1 Then Gosub comando1 : print_lcd "secuencia uno"

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Pasar de Secuencias con pulsador, no funciona....
« Respuesta #3 en: 04 de Noviembre de 2010, 06:44:01 »
y para que exprese en un lcd el estado del boton?
Algo asi: If boton = 1 Then Gosub comando1 : print_lcd "secuencia uno"

If boton = 1 Then
  Gosub comando1
  Lcdout "secuencia uno"
endif

No aconsejo colocar mas de una sentencia por linea.
« Última modificación: 04 de Noviembre de 2010, 08:03:24 por dogflu66 »
Saludos desde Granada, España.

Desconectado meledu

  • PIC12
  • **
  • Mensajes: 83
Re: Pasar de Secuencias con pulsador, no funciona....
« Respuesta #4 en: 13 de Noviembre de 2010, 12:24:19 »
yo creo que algo muy efectivo seria una un timer como contador de eventos y de esa manera seria mucho mas sencillo a la hora de controlar el estado en el cual se encuentra el programa,tambien ya no habria problemas con los rebotes ni tampoco importaria si presionas el boton muy rapido o muy prolongadamente.