Autor Tema: Problema con leds y pulsadores  (Leído 2150 veces)

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

Desconectado vintageclub50

  • PIC10
  • *
  • Mensajes: 2
Problema con leds y pulsadores
« en: 25 de Septiembre de 2013, 09:17:08 »
Hola! Primeramente agradezco de antemano su atención y espero que esto no sea un repost,
no hace mucho que empezé a meterle a esto y bueno, me quede trabado  :5] y no encuentro mucha info al respecto.
Resulta que tengo el siguiente problema; estoy programando con microcode en PBP un pic16f628a y quiero activar ocho leds mediante ocho pulsadores, que cada led quede encendido o apagado cada vez que se presiona un pulsador, (a su vez que apague los otros si es que estan encendidos , en fin) pero la unica forma que encontre de usar esto es usando la funciones IF THEN TOOGLE PAUSE, pero tengo dos problemas; el primero es que si mantengo apretado el pulsador por mas del tiempo de PAUSE este comienza a parpadear, segundo si doy mucho tiempo de PAUSE tengo que esperar todo ese tiempo para poder acceder a pulsar otro botón, si no no responde.
Preferiria mas bien que el programa ejecute la operación y espere a que suelte el pulsador para continuar con el programa, es posble esto? este es el programita que arme, con cosas que fui viendo en la web.

;cmcon=7
trisA = 255 'todos como entrada
trisB = 0 'todos como salida

;configuracion de pines
led1 var portb.0  
led2 var portb.1
led3 var portb.2
led4 var portb.3
led5 var portb.4
led6 var portb.5
led7 var portb.6
led8 var portb.7

p1 var porta.0
p2 var porta.1
p3 var porta.2
p4 var porta.3
p5 var porta.4
p6 var porta.5
p7 var porta.6
p8 var porta.7


inicio:
 if P1 then toggle Led1:led2=0:led3=0:led4=0:led5=0:led6=0:led7=0:led8=0:pause 500
 if P2 then toggle Led2:led1=0:led3=0:led4=0:led5=0:led6=0:led7=0:led8=0:pause 500      
 if P3 then toggle Led3:led2=0:led1=0:led4=0:led5=0:led6=0:led7=0:led8=0:pause 500
 if P4 then toggle Led4:led2=0:led3=0:led1=0:led5=0:led6=0:led7=0:led8=0:pause 500
 if P5 then toggle Led5:led1=0:led2=0:led3=0:led4=0:pause 500
 if P6 then toggle Led6:led1=0:led2=0:led3=0:led4=0:pause 500
 if P7 then toggle Led7:led1=0:led2=0:led3=0:led4=0:pause 500
 if P8 then toggle Led8:led1=0:led2=0:led3=0:led4=0:pause 500
 goto inicio


Agradezco nuevamente desde ya todos sus aportes!
« Última modificación: 26 de Septiembre de 2013, 04:58:07 por dogflu66 »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Problema con leds y pulsadores Ayuda!!
« Respuesta #1 en: 25 de Septiembre de 2013, 19:36:13 »
No es tan facil.

Código: [Seleccionar]
AllDigital  'Puerto A como digital
CMCON = 7
TRISA = 255  'Todos como entrada
TRISB = 0  'Todos como salida

'Configuracion de pines
Symbol led1 = PORTB.0
Symbol led2 = PORTB.1
Symbol led3 = PORTB.2
Symbol led4 = PORTB.3
Symbol led5 = PORTB.4
Symbol led6 = PORTB.5
Symbol led7 = PORTB.6
Symbol led8 = PORTB.7

Symbol p1 = PORTA.0
Symbol p2 = PORTA.1
Symbol p3 = PORTA.2
Symbol p4 = PORTA.3
Symbol p5 = PORTA.4
Symbol p6 = PORTA.5
Symbol p7 = PORTA.6
Symbol p8 = PORTA.7

main:
If p1 = 1 Then
Toggle led1
PORTB = PORTB And %00000001
Gosub mientras_tecla_on
Endif
If p2 = 1 Then
Toggle led2
PORTB = PORTB And %00000010
Gosub mientras_tecla_on
Endif
If p3 = 1 Then
Toggle led3
PORTB = PORTB And %00000100
Gosub mientras_tecla_on
Endif
If p4 Then
Toggle led4
PORTB = PORTB And %00001000
Gosub mientras_tecla_on
Endif
If p5 Then
Toggle led5
PORTB = PORTB And %11110000
Gosub mientras_tecla_on
Endif
If p6 Then
Toggle led6
PORTB = PORTB And %11110000
Gosub mientras_tecla_on
Endif
If p7 Then
Toggle led7
PORTB = PORTB And %11110000
Gosub mientras_tecla_on
Endif
If p8 Then
Toggle led8
PORTB = PORTB And %11110000
Gosub mientras_tecla_on
Endif
Goto main
End                                               
mientras_tecla_on:
WaitMs 300
While PORTA > 0
Wend
Return
Saludos desde Granada, España.

Desconectado vintageclub50

  • PIC10
  • *
  • Mensajes: 2
Re: Problema con leds y pulsadores
« Respuesta #2 en: 26 de Septiembre de 2013, 21:29:50 »
Uh, Gracias dogflu66 te cuento que al final se me ocurrio que despues de ejecutar la operacion vaya a un sub prog que genera un loop hasta que el boton se suelte, no se si es muy recomendale hacer eso, pero no encontre otra forma, voy a probar tu programa seguramente funcione mejor!



inicio:
 if P1 then toggle Led1:led2=0:led3=0:led4=0:led5=0:gosub check
 if P2 then toggle Led2:led1=0:led3=0:led4=0:led5=0:gosub check       
 if P3 then toggle Led3:led2=0:led1=0:led4=0:led5=0:gosub check
 if P4 then toggle Led4:led2=0:led3=0:led1=0:led5=0:gosub check
 if P5 then toggle Led5:led1=0:led2=0:led3=0:led4=0:led6=0:led7=0:led8=0:gosub check
 if P6 then toggle Led6:led1=0:led2=0:led3=0:led4=0:led6=0:led7=0:led8=0:gosub check
 if P7 then toggle Led7:led1=0:led2=0:led3=0:led4=0:led6=0:led7=0:led8=0:gosub check
 if P8 then toggle Led8:led1=0:led2=0:led3=0:led4=0:led6=0:led7=0:led8=0:gosub check
 goto inicio
 check:
 pause 100
 if p1=1 then check
 if p2=1 then check
 if p3=1 then check
 if p4=1 then check
 if p5=1 then check
 if p6=1 then check
 if p7=1 then check
 if p8=1 then check
 goto inicio

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Problema con leds y pulsadores
« Respuesta #3 en: 27 de Septiembre de 2013, 07:55:15 »
Eso mismo he puesto en el ejemplo mediante el subprocedimiento o subrutina llamada "mientras_tecla_on:", además de simplificarte el código de los If.
Saludos desde Granada, España.


 

anything