Autor Tema: problema en programa con ADC (PBP)  (Leído 7400 veces)

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

Desconectado hsen

  • PIC12
  • **
  • Mensajes: 84
problema en programa con ADC (PBP)
« en: 28 de Marzo de 2007, 06:02:42 »
Hola Amigod del foro: Estoy intentando hacer un programa para controlar los motores de una silla de ruedas. Empece paso a paso con un simple programa para para ir mejorando y a la vez aprender, pero tropece con un problema simple para ustedes, dificil para mí.
Marca los siguientes errores al compilar:
error line 35: endif without a matching if...then.
error line 36: endif without a matching if...then
Agradezco si me pueden ayudar

 'device: 16f877
      trisc=0
      
        TRISA = %11111111      ' fija porta todas como entrada
        ADCON1 = %00000010      ' 
        portb=0
        portc=0
        adval  var byte      ' Crea variable adval y almacena el resultado
        ledred var portb.0
        ledgreen var portb.1
        Pause 500             ' Wait .5 second

loop:    ADCIN 0, adval               ' Read channel 0 to adval
 
        Pause 100                ' Wait .1 second
       
        if adval => 150 then yf ' si la variable adval es igual o mayor que 150 ir a yf
 
        if adval =< 100 then yb  'si adval es igual o menor que 100 entonces ir a yb      
     endif                         
        endif
        Goto loop
       
 yb:       
     high ledgreen
        pause 500
        low ledgreen        pause 500
        Goto loop      
 yf:
        high ledred           
        pause 500
        low ledred
        pause 500   
        Goto loop
        End                     
                               
« Última modificación: 28 de Marzo de 2007, 06:31:21 por hsen »
Un saludo desde Rocha (Uruguay)

Desconectado PAOLA09

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 332
Re: problema en programa con ADC (PBP)
« Respuesta #1 en: 28 de Marzo de 2007, 11:29:59 »
Hola

te encontre algunos detalles, primero si deseas ir a un label  especifico debes usar goto no solo basta con poner yf ese es parte de uno de los errores. la otra si estas encadenando ambos if deberas aplicar un else en caso de que no esten hilados cada endif debera ir seguido de su repectivo if.  Ahora quedaria tu programa asi:

'device: 16f877
      trisc=0
       
        TRISA = %11111111      ' fija porta todas como entrada
        ADCON1 = %00000010      ' 
        portb=0
        portc=0
        adval  var byte      ' Crea variable adval y almacena el resultado
        symbol ledred = portb.0
        symbol ledgreen = portb.1
        Pause 500             ' Wait .5 second

loop:    ADCIN 0, adval               ' Read channel 0 to adval
 
        Pause 100                ' Wait .1 second
       
        if adval => 150 then
        goto yf ' si la variable adval es igual o mayor que 150 ir a yf
        else
        if adval =< 100 then
        goto yb  'si adval es igual o menor que 100 entonces ir a yb       
l:     
     endif                         
        endif
        Goto loop
       
 yb:       
     high ledgreen
        pause 500
        low ledgreen       
        pause 500
        Goto l     
 yf:
        high ledred           
        pause 500
        low ledred
        pause 500   
        Goto l
        End 

puedes ver que en el yf y yb no puse goto loop ya que debia ir primero a la línea donde cierro los if.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: problema en programa con ADC (PBP)
« Respuesta #2 en: 28 de Marzo de 2007, 11:33:28 »
Es que tienes mal colocados los ENDIFS si los quieres usar de forma anidada usa el IF... ELSE... o bien pon la terminacino de cada ENDIF debajo de cada IF para que el programa lo vea.


Un ejemplo de anidamiento lo puedes ver en los ejemplos de MKB PAO es experta en eso del anidamiento he hizo varios programas de ejemplo usando IFs anidados.

Saludos
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: problema en programa con ADC (PBP)
« Respuesta #3 en: 28 de Marzo de 2007, 11:33:50 »
jajaja me gano Pao
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado PAOLA09

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 332
Re: problema en programa con ADC (PBP)
« Respuesta #4 en: 28 de Marzo de 2007, 11:35:58 »
Uy la primera vez que te gano una Max  :D

Desconectado hsen

  • PIC12
  • **
  • Mensajes: 84
Re: problema en programa con ADC (PBP)
« Respuesta #5 en: 28 de Marzo de 2007, 13:55:34 »
Hola: Gracias Paola09 y Navaismo, me van a disculupar  pero en adelante tengo varias preguntas más, estoy intentando  ayudar hacer un control para una silla de ruedas a un amigo del foro, (esto viene del sub foro Todo en microcontroladores pic)
como verán, mis pobres comocimientos me obligan a apoyarme en ustedes.
Muy buenas sus instrucciones. 

P.D. Paola, hice la simulacion en proteus y funcionó a la perfección, como no podria ser de otra manera viniendo de ustedes.

 El próximo paso importante será vincular esas salidas a un PWM, los molestaré denuevo.
  
« Última modificación: 28 de Marzo de 2007, 16:22:39 por hsen »
Un saludo desde Rocha (Uruguay)

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: problema en programa con ADC (PBP)
« Respuesta #6 en: 28 de Marzo de 2007, 15:28:28 »
hola

si mi memoria no me falla, en pbp tambien funciona de esta forma:

   if adval => 150 then yf
   if adval =< 100 then yb

no siendo necesaria la instruccion endif ni la instruccion goto.

aunque a nivel de programacion el consejo que te da Paola es mas acertado

un saludo

Desconectado hsen

  • PIC12
  • **
  • Mensajes: 84
Re: problema en programa con ADC (PBP)
« Respuesta #7 en: 28 de Marzo de 2007, 16:25:23 »
Gracias Xocas, si fuera así ahorraría lineas al programar.
Un saludo desde Rocha (Uruguay)

Desconectado hsen

  • PIC12
  • **
  • Mensajes: 84
Re: problema en programa con ADC (PBP)
« Respuesta #8 en: 28 de Marzo de 2007, 21:02:11 »
Hola

 puedes ver que en el yf y yb no puse goto loop ya que debia ir primero a la línea donde cierro los if.

Paola09: No entiendo por que motivo tienes que ir a la línea donde cierras los if, si por lo que (creo ver)
el programa  recorre 2 líneas e indefectiblemente regresa a loop sin hacer otra cosa. Se que lo que dices
está bien pero quisiera aprender el porque.
Un saludo desde Rocha (Uruguay)

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: problema en programa con ADC (PBP)
« Respuesta #9 en: 29 de Marzo de 2007, 06:52:16 »
hola

si recurres a la ayuda del microcode veras que la instruccion if..then tiene dos modos de funcionamiento, uno de ellos es este:
IF Comp {AND/OR Comp...} THEN Label

y el otro este:
IF Comp {AND/OR Comp...} THEN
   Statements...
ELSE
   Statements...
ENDIF

en el primero no es necesario cerrar el if, pero si lo es el segundo. por ello Paola los cierra antes de ir a loop. has de tener bastante cuidado con los anidamientos porque tu programa puede darte muchos quebraderos de cabeza si no lo haces.

en la ayuda de microcode tienes tambien unos ejemplos que espero te dejen mas claro el tema

un saludo

Desconectado hsen

  • PIC12
  • **
  • Mensajes: 84
Re: problema en programa con ADC (PBP)
« Respuesta #10 en: 29 de Marzo de 2007, 20:36:08 »
Hola xocas06:
Gracias por  responder, lo que pasa es que nunca he visto nada relativo a microcode, estoy
intentando aprender en PBP y pensaba  que otro basic me podria causar mayor confusión.
A propósito de PBP, querria hacer unas operaciones matemáticas y quisiera saber si este maneja fracciones decimales, eje: 1,7 * 150..?
« Última modificación: 30 de Marzo de 2007, 21:26:13 por hsen »
Un saludo desde Rocha (Uruguay)

Desconectado hsen

  • PIC12
  • **
  • Mensajes: 84
Re: problema en programa con ADC (PBP)
« Respuesta #11 en: 29 de Marzo de 2007, 20:40:01 »
Hooooo...burrada, microcode es el compilador, pensaba en microbasic, ahora que lo dices ni sabìa
que microcode disponìa de ayuda.
Un saludo desde Rocha (Uruguay)

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: problema en programa con ADC (PBP)
« Respuesta #12 en: 29 de Marzo de 2007, 22:00:51 »
Punto decimal solo con proton o MKB para PBP con rutinas de microchip o div32 busca en el foro sobre esto
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado hsen

  • PIC12
  • **
  • Mensajes: 84
Re: problema en programa con ADC (PBP)
« Respuesta #13 en: 30 de Marzo de 2007, 11:56:19 »
Gracias navaismo, es para acondicionar las lecturas en pote

Un saludo desde Rocha (Uruguay)

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: problema en programa con ADC (PBP)
« Respuesta #14 en: 30 de Marzo de 2007, 13:25:55 »
No uses POT mejor usa un pic con adc y usa ADCIN tiene mas resolucion
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."


 

anything