Autor Tema: Programa de elevador Planta 0 al 5 y de la planta 5 al 0.  (Leído 1102 veces)

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

Desconectado rodrijon07

  • PIC10
  • *
  • Mensajes: 27
Programa de elevador Planta 0 al 5 y de la planta 5 al 0.
« en: 11 de Febrero de 2014, 04:55:03 »
He realizado un programa para que un elevador vaya de la planta 5 a la planta 0 y viceversa. El programa que vereis a continuación, si el elevador empieza en la planta 0 sube a la 5º y baja correctamente. En cambio si empieza en la 5º planta el motor no se pone en marcha. Repito si lo primero que haces es pulsar el pulsador 5 funciona correctamente el programa

#include <16f887.h>         //Pic a utilizar                   
#fuses INTRC_IO,NOWDT,NOPUT,NOPROTECT,NOCPD,NOLVP      //Configuracion inicial del pic.      
#use delay(clock=4000000)         //Frecuencia del oscilador 4Mhz
#use RS232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  //Configuracion del puerto serie; Velocidad 9600 baudios; Pin_C6 transmision y Pin_C7 recepcion.
#byte osccon=0x8f

#use fast_io(B)
#use fast_io(D)

#bit detect0=0x06.0
#bit detect1=0x06.1
#bit detect2=0x06.2
#bit detect3=0x06.3
#bit detect4=0x06.4
#bit detect5=0x06.5       

#bit puls0=0x05.0
#bit puls1=0x05.1
#bit puls2=0x05.2
#bit puls3=0x05.3
#bit puls4=0x05.4
#bit puls5=0x05.5      

void subir (void);
void bajar (void);
void parar (void);

main()
{                                 
   set_tris_A(0xff);
   set_tris_B(0xff);
   set_tris_D(0x00);
   output_D(0);
   osccon=0x61;
   while(1)
   {                              
         while(puls5==0)            //Si el pin puls5 está a 0 que no haga nada.
         {
         delay_ms(50);
         }
         while(puls5==1)            //Si el pin puls5 está a 1 que no haga nada.         
         {
         delay_ms(50);
         }
            subir();            //Subir
            while(detect5==0);      //Subir mientras que el detector 5 sea 0.
            parar();            //Parar
       
      
                                 
         while(puls0==0)            //Si el pin puls0 está a 0 que no haga nada.
         {
         delay_ms(50);
         }
         while(puls0==1)            //Si el pin puls5 está a 1 que no haga nada.
         {
         delay_ms(50);
         }
         bajar();               //Bajar
         while(detect0==0);         //Bajar mientras el detector 0 sea 0.
         parar();               //Parar
}
}


void subir (void)
{
   output_bit(PIN_D0, 1);            
   output_bit(PIN_D1, 0);

   return;
}

void parar (void)
{
   output_bit(PIN_D0, 0);            
   output_bit(PIN_D1, 0);

   return;
}
void bajar (void)
{
   output_bit(PIN_D0, 0);            
   output_bit(PIN_D1, 1);

   return;
}

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Programa de elevador Planta 0 al 5 y de la planta 5 al 0.
« Respuesta #1 en: 11 de Febrero de 2014, 08:52:35 »
  Como está planteado el programa, lo que dices que hace está perfecto.
  Ten en cuenta que en el programa te quedas esperando sí o sí a presionar y soltar primeramente el pulsador 5 (con los while iniciales). Tendrías que plantear de otra forma el programa.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas


 

anything