Autor Tema: Subrutinas con leds  (Leído 2768 veces)

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

Desconectado lorelei

  • PIC10
  • *
  • Mensajes: 16
Subrutinas con leds
« en: 27 de Agosto de 2013, 10:22:51 »
Hola, leyendo encontre que puedo usar subrutinas ymire muchos ejemplos pero no entiendo como utilizarlas, si alguien me puede ayudar le estaria muy agradecida.
Lo que quiero hacer son varias rutinas de leds y poder ejecutarlas sin tener que repetir todo el codigo, por ejemplo

Estoy haciendo una baliza con leds y quisiera hacer subrutinas y llamarlas para ir definiendo como deben prender

esa seria la rutina 1
PORTB = %10000001
PORTB = %01000010
PORTB = %00100100
PORTB = %00011000
PORTB = %00000000

esta seria la rutina 2
PORTB = %11000000
PORTB = %01100000
PORTB = %00110000
PORTB = %00011000
PORTB = %00001100
PORTB = %00000110
PORTB = %00000011

y asi ir agregando mas rutinas, lo que no entiendo es como hago para elegir una rutina ( la que yo quiera) y despues elegir otra rutina que yo quiera e ir eligiendo diferentes rutinas en el orden que yo quiera.

Gracias a todos por leer mi mensaje
Lorena

Desconectado RockLee_89

  • PIC16
  • ***
  • Mensajes: 140
Re: Subrutinas con leds
« Respuesta #1 en: 27 de Agosto de 2013, 23:42:32 »
hola que tal hay muchas formas de entrar a una subrutina una puede ser llamándola mediante un pulsador o al terminar la primer rutina o al pasar cierto tiempo etc el uso y los llamados de cada subrutina dependen del programador y el uso que le quiera dar cada uno te dejo un ejemplo que me encontré de un pequeño programa con subrutina espero y te sirva y te de una buena idea de como usarlas

Código: [Seleccionar]


TRISB = 0x00
PORTB = %00000011
goleft:
WAITMS 250
PORTB = SHIFTLEFT(PORTB, 1)
IF PORTB = %11000000 THEN GOTO goright
GOTO goleft
goright:
WAITMS 250
PORTB = SHIFTRIGHT(PORTB, 1)
IF PORTB = %00000011 THEN GOTO goleft
GOTO goright


Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Subrutinas con leds
« Respuesta #2 en: 28 de Agosto de 2013, 10:35:09 »
No te recomiendo que uses los gotos en el código, estos solo se usan en los libros que tienen más de 30años.

El uso de sub-rutinas que se llaman con Gosub/Return están tambien anticuadas pero te facilitan posteriormente el cambio de sub-rutinas a funciones.

Dejo un pequeño código:

Código: [Seleccionar]
AllDigital
TRISB = %00000011
main:  'Sbrutina principal
Dim x As Bit

While x = x  'Bucle infinito
If RB0 = 1 Then Gosub sb1  'Salta a la sbrutina llamada sb1 y cuando la termina retorna a la línea siguiente
If RB1 = 1 Then Gosub sb2  'Salta a la sbrutina llamada sb2 y cuando la termina retorna a la línea siguietne
Wend
End                                              
'Esta es la rutina 1
sb1:
PORTB = %10000001
PORTB = %01000010
PORTB = %00100100
PORTB = %00011000
PORTB = %00000000
Return                                            
'Esta es la rutina 2
sb2:
PORTB = %11000000
PORTB = %01100000
PORTB = %00110000
PORTB = %00011000
PORTB = %00001100
PORTB = %00000110
PORTB = %00000011
Return
« Última modificación: 28 de Agosto de 2013, 10:40:29 por dogflu66 »
Saludos desde Granada, España.

Desconectado RockLee_89

  • PIC16
  • ***
  • Mensajes: 140
Re: Subrutinas con leds
« Respuesta #3 en: 28 de Agosto de 2013, 23:30:00 »
solo lo puse como un pequeño ejemplo que encontré en una mirada rápida amigo dogflu66 en el manual del compilador para que se diera una idea el compañero  lorelei
saludos

Desconectado lorelei

  • PIC10
  • *
  • Mensajes: 16
Re: Subrutinas con leds
« Respuesta #4 en: 03 de Septiembre de 2013, 10:12:53 »
Gracias a los dos, me sirvieron muchisimo los 2 ejemplos...

Otra consulta

ya tengo las rutinas funcionando, va cambiando de rutina en rutina, si quisiera que el cambio de rutina fuera presionando un boton, como hago la seleccion de la rutina que deberia ser la correspondiente?

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Subrutinas con leds
« Respuesta #5 en: 14 de Septiembre de 2013, 09:45:48 »
Si te he entendido bien, ya lo tienes en las siguientes líneas del ejemplo anterior:

      If RB0 = 1 Then Gosub sb1  'Salta a la sbrutina llamada sb1 y cuando la termina retorna a la línea siguiente
      If RB1 = 1 Then Gosub sb2  'Salta a la sbrutina llamada sb2 y cuando la termina retorna a la línea siguietne

RB0 y RB1 son pin de entrada, donde supuestamente se conectarian las teclas.
Saludos desde Granada, España.

Desconectado lorelei

  • PIC10
  • *
  • Mensajes: 16
Re: Subrutinas con leds
« Respuesta #6 en: 30 de Septiembre de 2013, 12:20:59 »
gracias!!!!! funciono a la perfeccion


 

anything