• Viernes 19 de Abril de 2024, 11:54

Autor Tema:  leer varios pines de un puerto y hacer una determinada cosa.  (Leído 1994 veces)

granaino1988

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
leer varios pines de un puerto y hacer una determinada cosa.
« en: Viernes 16 de Octubre de 2009, 14:14 »
0
necesito hacer un programa que lea 3 pines del puerto b y si se cumplen unas condiciones se ponga en el puerto c un codigo(0b11101001)

les dejo el programa que he trabajado

gracias

#include "16f877a.h" // este include es para definir el tipo de PIC que vamos a utilizar en nuestro caso es el PIC16F877
#byte pa=5 // definimos el puerto A en el bit 5
#byte pb=6 // definimos el puerto B en el bit 6
#byte pc=7 // definimos el puerto C en el bit 7
#byte pd=8 // definimos el puerto D en el bit 8
#use delay(clock=4m)  // aqui declaramos que use el reloj que sera de 4 Mhz.
//#include "stdio.h" // incluimos esta libreria para poder usar mas adelante la funcion printf asi como otras tambien.

int lectura_ldr,lectura_rb0,lectura_rb1;

void ldr_motor() // hacemos una funcion para subir la persiana dependiendo de los finales de carrera y de la LDR.
{
   lectura_ldr=pin_b3;// hacemos que la variable lectura de la LDR sea igual al pin A5 del pic.
   lectura_rb0=pin_b1;// hacemos que la variable lectura del pin rb0 sea igual al pin B0 del pic.
   lectura_rb1=pin_b2;// hacemos que la variable lectura del pin rb1 sea igual al pin B1 del pic.
   // hacemos un while 1 para que se repita lo que tenemos dentro de los corchetes.
   
      if (lectura_ldr==1 && lectura_rb0==1 && lectura_rb1==0)// hacemos un if que si se cumplen lo que ponemos dentro de los parentesis, se haga lo que
      {                                                      // hay dentro de los corchetes que una vez sera subir o bajar o no hacer nada.
       output_high(pin_c7); // hacemos que la salida del pin c7 sea igual a 1 porque queremos que suba la persiana.
          output_low(pin_c6); // hacemos que el pin c6 sea igual a 0 porque el motor necesita un 0 en un pin en 1 y otro a 0 para que suba o baje.
      }
      if (lectura_ldr==1 && lectura_rb0==0 && lectura_rb1==1)// en este if lo que hacemos es que si se cumplen las condiciones en los parentesis
      {                                                      // se haga lo que tenemos en los corchetes.
        output_low(pin_c7); // hacemos que el pin c7 sea 0 porque en esta ocasion no queremos que se suba o se baje la persiana.
         output_low(pin_c6); // hacemos que el pin c6 sea 0 para que ni suba ni baje.
      }
      if (lectura_ldr==0 && lectura_rb0==0 && lectura_rb1==1)// en el if ponemos unas condiciones que si se cumplen se hace lo que tenemos
      {                                                      // en los corchetes.  
         output_low(pin_c7); // ponemos a 0 el pin c7.
         output_high(pin_c6);// ponemos el pin c6 a 1.
      }
      if (lectura_ldr==0 && lectura_rb0==1 && lectura_rb1==0)// en el if ponemos las condiciones que si son ciertas se hace lo de los corchetes.
      {
         output_low(pin_c6);// ponemos a 0 el pin c6.
         output_low(pin_c7);// ponemos a 0 el pin c7 porque en este caso no se movera la persiana.
      }
   
}

void main()
{  
   set_tris_d(0); // declaramos que el puerto D sea de salida, porque aqui es donde vamos a conectar la LCD.
   set_tris_b(0b11111111); // declaramos que el puerto B sea de entrada, porque es donde conectaremos los pulsadores y los finales de carrera.
   set_tris_c(0x00); // declaramos el puerto C como salida, puesto que aqui vamos a conectar el motor y las difentes fases de luz.
   set_tris_a(0xff);
   pc=(0);
   pd=(0);// declaramos que el puerto A sea como entrada puesto que aqui vamos a conectar los dos termometros.
   pa=(0);
   pb=(0);
   ldr_motor();
}

allisap

  • Miembro MUY activo
  • ***
  • Mensajes: 259
  • Nacionalidad: mx
    • Ver Perfil
Re: leer varios pines de un puerto y hacer una determinada cosa.
« Respuesta #1 en: Sábado 14 de Noviembre de 2009, 04:30 »
0
Citar
necesito hacer un programa que lea 3 pines del puerto b y si se cumplen unas condiciones se ponga en el puerto c un codigo(0b11101001)

les dejo el programa que he trabajado

creo que debe funcionar con algo como

Código: C++
  1. if ( input(PIN_B1)&input(PIN_B2)&input(PIN_B3))
  2.      output_c(233) // 233 es 11101001
  3.  




espero te sirva

saludos
Victor Pasilla Campos
Puebla,Pue