Autor Tema: Como sumar variales con operaciones matematicas  (Leído 1080 veces)

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

Desconectado coronado88

  • PIC10
  • *
  • Mensajes: 12
Como sumar variales con operaciones matematicas
« en: 17 de Junio de 2016, 15:27:45 »
buenas estoy tratando indicar mediante selectores y mostrar la suma mediante un 7segmento es para indicar el nivel de agua de un tanque.
consiste en lo siguiente; hay cuatro sensores de  nivel mediante la tabla de la me da  cuando es ful: 0b1111, lleno:0b1110, Medio: 0b1100,
bajo: 0b0001. y quiero que me muestre en el Display el 0 cuando no hay agua 1,2,3,4 .
yo ya hice uno pero con indicadores utilizado leds controla la bomba y me funciono si lo quieren me notifican.

Desconectado coronado88

  • PIC10
  • *
  • Mensajes: 12

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Como sumar variales con operaciones matematicas
« Respuesta #2 en: 18 de Junio de 2016, 16:23:59 »
Supongamos que SW4 es lleno y SW1 es bajo.


Código: C
  1. entrada = input_a();
  2.  
  3. do
  4. {
  5.         temp=0;
  6.         if(bit_test(entrada,3)) temp = 4; break;
  7.         if(bit_test(entrada,2)) temp = 3; break;
  8.         if(bit_test(entrada,1)) temp = 2; break;
  9.         if(bit_test(entrada,0)) temp = 1; break;
  10. }while(0);
  11.  
  12. output_b(temp);

El do..while, es para no usar GOTO, de esa forma al poner el break; se sale del mismo.
Aunque a esto le falta "limpiar" la variable entrada antes. Uno presupone que si SW4 esta activo, es por que SW3,2 y 1 lo estan. Pero puede ocurrir un mal funcionamiento y dejarte con SW4 en 1 por ejemplo y lo demas en 0, y vos pensar que esta lleno con este programa, asi que tenes que agregarle algo que verifique correctamente que se cumpla, otra forma seria probar algo asi:

Código: C
  1. entrada = input_a() & 0xF;
  2.  
  3. for( temp = 0 ; bit_test(entrada,0) ; temp++ ) entrada >>= 1;
  4.  
  5. output_b(temp);

No se si funcionaria pero espero que me entiendas
« Última modificación: 18 de Junio de 2016, 16:31:41 por KILLERJC »