Autor Tema: utilizar un AND en una condicion IF  (Leído 2204 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado xabc2007

  • PIC12
  • **
  • Mensajes: 62
utilizar un AND en una condicion IF
« en: 09 de Mayo de 2011, 06:34:59 »
Hola a todo el foro,quiero que al pulsar dos pulsadores a la vez se encienda un led. Yo lo haria de la siguente manera pero

da error al compilar:



if (BIT_TEST(PORTC,0)==1)  AND  (BIT_TEST(PORTC,1)=1    bit_set  ( PORTC, 2 );   


Como puedo en una solo linea de programa que se cumplan dos condiones: BIT_TEST(PORTC,0)==1 y  BIT_TEST(PORTC,1)==1

Gracias de antemano.

Saludos.


El programa que utilizo es este:







#include <16F876.h>

#FUSES XT,NOWDT
#FUSES
#use delay(clock=4000000)


#BYTE TRISC = 0X87
#BYTE PORTC = 0X07

void main()

 { 


  bit_set (TRISC , 0);  // C0 como entrada, para el pulsador
  bit_set (TRISC , 1);  // C1 como entrada, para el pulsador
   
  bit_clear(TRISC , 2); // C2 como salida, para el led
   
   
while (1)
{


   // Esta linea no funciona:

         if (BIT_TEST(PORTC,0)==1)  AND  (BIT_TEST(PORTC,1)=1 bit_set  ( PORTC, 2 );   
   //encedemos el led cuando se producen estas dos condiciones simultaneamente


         if (BIT_TEST(PORTC,0)==0)  bit_clear( PORTC, 2 );// apagamos el led

      delay_ms(100);
   
   
      }
}



Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: utilizar un AND en una condicion IF
« Respuesta #1 en: 09 de Mayo de 2011, 08:26:08 »
Hola xabc2007 :
            Mira esta parte del código   
if (BIT_TEST(PORTC,0)==1)  AND  (BIT_TEST(PORTC,1)=1 bit_set  ( PORTC, 2 );   

El igual que usás que te marqué con rojo es de asignación y no de comparación.
Debés usar doble signo == como hacés con if (BIT_TEST(PORTC,0)==1
        Saludos.
              Jukinch





"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: utilizar un AND en una condicion IF
« Respuesta #2 en: 09 de Mayo de 2011, 08:30:54 »
Da error porque no se escribe AND sino que debes insertarle esto && en vez de AND
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: utilizar un AND en una condicion IF
« Respuesta #3 en: 09 de Mayo de 2011, 09:23:43 »
Además de todo eso, te faltan algunos paréntesis:


if ((BIT_TEST(PORTC,0)==1) &&  (BIT_TEST(PORTC,1)==1))   bit_set( PORTC, 2 );
también lo puedes escribir así:

if (BIT_TEST(PORTC,0)==1 &&  BIT_TEST(PORTC,1)==1)   bit_set( PORTC, 2 );

Desconectado xabc2007

  • PIC12
  • **
  • Mensajes: 62
Re: utilizar un AND en una condicion IF
« Respuesta #4 en: 09 de Mayo de 2011, 09:31:59 »
MUCHAS GRACIAS jukinch, MGLSOFT, pablomanieri, voy a probarlo.

Saludos.



Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: utilizar un AND en una condicion IF
« Respuesta #5 en: 09 de Mayo de 2011, 12:31:24 »
y se puede simplificar mas

if (BIT_TEST(PORTC,0) &&  BIT_TEST(PORTC,1)) bit_set( PORTC, 2 );

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado xabc2007

  • PIC12
  • **
  • Mensajes: 62
Re: utilizar un AND en una condicion IF
« Respuesta #6 en: 09 de Mayo de 2011, 12:50:33 »
PERFECTO, ya funciona. Muy agradecido por TODAS las respuestas.

Un saludo a todo el foro.



Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: utilizar un AND en una condicion IF
« Respuesta #7 en: 09 de Mayo de 2011, 18:07:03 »
O puedes declarar los bit y utilizarlos de una manera mas rapida

Código: [Seleccionar]
#BYTE PORTC=getenv("SFR:PORTC")
#bit RC0=PORTC.0
#bit RC1=PORTC.1
#bit RC2=PORTC.2
...
void main(){
...
if(RC0==1 && RC1==1)RC2=1;
...

La linea del if la puedes cambiar por:
Código: [Seleccionar]
RC2=RC0 & RC1;

Y resultara igual
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado xabc2007

  • PIC12
  • **
  • Mensajes: 62
Re: utilizar un AND en una condicion IF
« Respuesta #8 en: 10 de Mayo de 2011, 06:42:19 »
Gracias bigluis, ya tengo el programa funcionando. Todas las respuestas han sido de gran ayuda.

Saludos.