TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: alperez en 10 de Mayo de 2013, 18:47:54

Título: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: alperez en 10 de Mayo de 2013, 18:47:54
A ver si alguien sabe de alguna diferencia entre estas dos expresiones, por que yo pensaba que era lo mismo y he perdido como dos horas.
Realmente no es lo mismo, os lo aseguro.

Compilador CCS 4.134 y pic 16f1825
Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: Nubbeo en 10 de Mayo de 2013, 19:01:55
Obvio que no son lo mismo. Lo que pasa es que la primera está mal escrita si lo que queres es que sean iguales.

if(input(PIN_A4)==1) es lo mismo que if(input(PIN_A4))

Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: Nocturno en 10 de Mayo de 2013, 19:22:06
Claro, porque PIN_A4 es una constante para el compilador, asi que la condicion es falsa siempre.
Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: bmb en 10 de Mayo de 2013, 19:34:33
Yo nunca he tenido problemas con la expresión: if(input(PIN_A4)) Si te fijas en el manual de CCS, así es que aparecen los ejemplos, por lo que creo que el compilador lo que evalúa es el estado del pin. Si se quiere evaluar el estado 0 del pin, entonces sería: if(!input(PIN_A4))

Saludos!
Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: alperez en 10 de Mayo de 2013, 19:41:13
Uf! entonces va a ser que son las 0:40
Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: alperez en 10 de Mayo de 2013, 19:46:10
El problema que tengo es que if(input(PIN_A4)) me apaga el pin
Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: bmb en 10 de Mayo de 2013, 20:04:12
Podrías mostrar la parte de código donde crees que esa expresión te está apagando el pin?

Saludos!
Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: MGLSOFT en 10 de Mayo de 2013, 20:08:47
Tienes un led o algo así conectado a ese pin??

por supuesto que esa instrucción lo apagara, ya que para hacer el test pone el pin como entrada !! :mrgreen: :mrgreen:
Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: alperez en 10 de Mayo de 2013, 20:18:13
Tienes un led o algo así conectado a ese pin??

por supuesto que esa instrucción lo apagara, ya que para hacer el test pone el pin como entrada !! :mrgreen: :mrgreen:

ya pero me imaginaba que despues lo dejaria como estaba  :)

Pero ya está solucionado

Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: bmb en 12 de Mayo de 2013, 12:32:56
Tienes un led o algo así conectado a ese pin??

por supuesto que esa instrucción lo apagara, ya que para hacer el test pone el pin como entrada !! :mrgreen: :mrgreen:

ya pero me imaginaba que despues lo dejaria como estaba  :)

Pero ya está solucionado

Decías que las instrucciones (del título) eran diferentes; por que?  Según lo que dice Marcos, que es correcto, con ambas formas de escribir la instrucción se apagaría la salida.

Saludos!
Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: alperez en 12 de Mayo de 2013, 16:36:32
las dos lo apagaban y pensaba que si lo hacía de la forma correcta el pic lo quedaba en su estado anterior, pero ya he visto que no. Se trata de apagarlo o encenderlo en funcion de su estado anterior
Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: MLO__ en 12 de Mayo de 2013, 20:57:20
Hola

Si quieres que no se modifique el TRIS, utiliza: input_state();

saludos
Título: Re: Diferencia entre if(input(PIN_A4 == 1)) y if(input(PIN_A4))
Publicado por: alperez en 13 de Mayo de 2013, 12:12:09
Hola

Si quieres que no se modifique el TRIS, utiliza: input_state();

saludos

Bravo  :-/