Autor Tema: duda sobre branch  (Leído 2756 veces)

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

Desconectado liminix

  • PIC12
  • **
  • Mensajes: 58
duda sobre branch
« en: 02 de Noviembre de 2006, 23:38:23 »
hola mis queridos amigos tengo  una  duda aserca  del  manejo  de la instruccion  branch  aver si  alguien  de  da  un  ejemplito  de como usarla

Desconectado doppel

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1534
Re: duda sobre branch
« Respuesta #1 en: 03 de Noviembre de 2006, 00:43:57 »
Hola

Branch como su nombre lo indica se usa para armar estructuras o ramas

Sintaxis

BRANCH Index, [Label1 {,...Labeln }]

.....................................................................................................................

El index puede ser una variable, constante o expresion que indica la dirección adonde se dirige el BRANCH

Label  son etiquetas a las cuales especificar donde ramificar puede haber hasta 255 etiquetas

Un ejemplo que viene en el manual (protón, PBP simil) y está mas que claro.-


Código: FreeBasic
  1. DEVICE 16F84
  2.   DIM INDEX as BYTE  'defino INDEX como byte
  3.  
  4.   INDEX = 2            ' asigna a index el valor 2
  5. Start:  
  6.   BRANCH INDEX,[Lab_0, Lab_1, Lab_2]  '  primero salta a la etiqueta 2 (Lab_2)
  7.                         '     porque INDEX = 2 luego observar
  8.                         '      como va cambiando el valor
  9. Lab_0:  INDEX = 2      ' ahora INDEX es igual a 2
  10.   GOTO Start
  11. Lab_1:  INDEX = 0      ' ahora INDEX es igual a 0
  12.   GOTO Start
  13. Lab_2:  INDEX = 1      ' ahora INDEX es igual a 1
  14.   GOTO Start


saludos
espero te sirva
« Última modificación: 03 de Noviembre de 2006, 00:57:35 por doppel »
" Para ser exitoso no tienes que hacer cosas extraordinarias. Haz cosas ordinarias, extraordinariamente bien "

Desconectado liminix

  • PIC12
  • **
  • Mensajes: 58
Re: duda sobre branch
« Respuesta #2 en: 05 de Noviembre de 2006, 13:14:45 »
Aver si entiendo la instrucción  va  mas o menos por aquí:

X var  byte
Inicio:
If  porta.2=1 then
x=x+1
if x =3 then
x=0

Branco x, [primero, segundo, tercero]
Pirimero:
High portb.0
Low portb.1
Low portb.2
Pause 500
Segundo:
Low portb.0
High portb.1
Low portb.2
Tercero:
Low portb.0
Low portb.1
High portb.2
Goto inicio
aver estaria bien  asdi si quisiera hacerlo de esa  manera


Desconectado doppel

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1534
Re: duda sobre branch
« Respuesta #3 en: 05 de Noviembre de 2006, 17:07:07 »
Hola

Viendo el código funcionaria de esa forma, solo que en cada label PRIMERO, SEGUNDO etc te falta el GOTO INICIO por que de la forma que lo tienes implementado siempre hará todo, me explico? osea pasará por todos los label, de todas formas sería interesante que contaras que es lo que quieres hacer con el código exactamente.-

Pd: no te olvides de cerrar los endif
« Última modificación: 05 de Noviembre de 2006, 17:20:28 por doppel »
" Para ser exitoso no tienes que hacer cosas extraordinarias. Haz cosas ordinarias, extraordinariamente bien "

Desconectado liminix

  • PIC12
  • **
  • Mensajes: 58
Re: duda sobre branch
« Respuesta #4 en: 09 de Noviembre de 2006, 13:01:24 »
lo que  quiero hacer es que me seleccione enque etiqueta se debe quedar osea una ves que pulse me se pase a esa etiqueta y se que alli ysi pulso otra ves siga ala otra etiqueta,asi  :-) :-)

Desconectado doppel

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1534
Re: duda sobre branch
« Respuesta #5 en: 10 de Noviembre de 2006, 21:52:30 »
Hola liminix

Tu código está bien orientado, solo le faltan algunos detalles como mencioné en el mensaje anterior.-
Te pego un código basado en el tuyo con las correcciones correspondientes y el circuito práctico de la aplicación.-


Código: FreeBasic
  1. x var byte           'definimos x como byte que es el tipo de variable
  2. PORTB =0           ' ponemos todo el puerto B a cero para que inicier apagado            
  3. x=0                    ' comenzamos con x en cero
  4.  
  5. inicio:
  6. IF Porta.2 = 1 THEN     'si el boton que está en el portb.2 es presionado entonces
  7. x = x + 1                    ' se incrementa el contador de x
  8. if x = 3 then                ' si el contador es 3 en la linea de abajo lo colocamos a 0 para
  9. x = 0                          
  10. endif
  11. endif
  12.  
  13. Branch x, [primero, segundo, tercero]   ' de acuerdo al valor de x elije la rama corres
  14.                                                           'pondiente...
  15. Primero:
  16. High portb.0
  17. Low portb.1
  18. Low portb.2
  19. Pause 250            ' pausa sugerida
  20. goto inicio            ' estos son los goto que te decia que faltaban
  21.                            ' en cada rama asi cuando elige una rama vuelve y espera que presiones
  22. Segundo:              ' el pulsador y asi un nuevo valor de x es generado
  23. Low portb.0
  24. High portb.1
  25. Low portb.2
  26. Pause 250             'pausa sugerida
  27. goto inicio
  28.  
  29. Tercero:
  30. Low portb.0
  31. Low portb.1
  32. High portb.2
  33. Pause 250             'pausa sugerida
  34. Goto inicio
  35. end
Espero esto te ayude a modificar a tu gusto el programa, de la forma planteada esta lo que vos querias que es elegir un led de acuerdo a si se presiona el pulsador.-
una imagen de la simulación en proteus .-



saludos
« Última modificación: 10 de Noviembre de 2006, 21:59:13 por doppel »
" Para ser exitoso no tienes que hacer cosas extraordinarias. Haz cosas ordinarias, extraordinariamente bien "

Desconectado liminix

  • PIC12
  • **
  • Mensajes: 58
Re: duda sobre branch
« Respuesta #6 en: 30 de Diciembre de 2006, 16:08:18 »

hola  amigo ,gracias por la ayudita  aver  si  me puedes ayudar  con  un  programa que  quiero   hacer ,necesito   grabar  unos  datos usando   el  pic16f84, ADC(CONVERTIDOR ANALOGICO DIGITAL)  y  una memoria  eeprom 24c04


Desconectado doppel

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1534
Re: duda sobre branch
« Respuesta #7 en: 30 de Diciembre de 2006, 18:00:01 »
Hola
el pic que propones no tiene ADC por lo que tendrias que utilizar uno externo, en este caso te convendria usar otro pic que si contenga un ADC por cuestiones de precio, de todas formas expone lo que has hecho o la idea que tienes en mente y en lo que pueda ayudarte lo haré.-
seria interesante que habras un nuevo tema para el nuevo proyecto a fin de mantener el orden del foro

saludos

FELIZ AÑO NUEVO A TODOSS!!  :-/
" Para ser exitoso no tienes que hacer cosas extraordinarias. Haz cosas ordinarias, extraordinariamente bien "

Desconectado psykhon

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 823
Re: duda sobre branch
« Respuesta #8 en: 30 de Diciembre de 2006, 21:11:23 »
otra manera de ver la ins branch para aquellos que han programado en pc es como un primitivo SELECT .. CASE
No, no se lo que estoy haciendo. Nadie sabe que estoy haciendo. Por eso se llama "Investigacion".

Desconectado liminix

  • PIC12
  • **
  • Mensajes: 58
Re: duda sobre branch
« Respuesta #9 en: 04 de Enero de 2007, 00:02:22 »
YA DOPPEL ASI LO HARE TIO GRACIAS POR ESCUCHAR :-/ :-)


 

anything