Ir ao conteúdo
  • Cadastre-se

PIC FOR + WHILE não funcionam juntos. Por que ?


Posts recomendados

Já fiz de tudo. Não dá certo. Ou funciona o primeiro conjunto de comandos que chama uma função (sensor_ir) dentro do laço for. Ou funciona uma lógicazinha boba referente a dois botões. Já tentei pôr FOR dentro de WHILE e vice-versa, nada. Compila sem erros (ccs), mas os dois juntos não funcionam.

 

Como tem que ficar pra funcionar os dois juntos ? ...alguém sabe (e quer dizer) ? ,,,mas assim, direto, sem mandar eu ler livros, tutoriais, etc. Desconfio que o motivo seja que ambos são laços de repetição infinita, mas preciso que as duas funções funcionem, e não aceita pôr os comandos juntos dentro de for ou dentro de while.

 

GRATO

 

 

for(;;){

      if(sensor_ir()){
        while(sensor_ir()){
        output_high(PIN_B3);
        delay_ms(5);
        }
     }
        output_low(PIN_B3);
   }

   while(TRUE)
   {
     if(input(PIN_B0)==0){
      while(input(PIN_B0)==0)
       delay_ms(100);
       output_high(PIN_B1);
     }

 

Link para o comentário
Compartilhar em outros sites

Olá @eletron1791, no caso esse código esta esturutaro, portanto o segundo laço só será iniciado quando o primeiro laço for encerrado.  Se voce define o primiro laço para rodadar infinitamente ele nunca terminará impossibilitando que o sengundo laço se inicie. Na lógica que está aplicando os dois nunca funcionarão juntos.

Link para o comentário
Compartilhar em outros sites

13 minutos atrás, eletron1791 disse:

Boa ederlap, e como tem que ficar para rorarem juntos ?

Não sei qual seria o  seu projeto mas acho que a forma correta é:

 

for(;;){

   if(sensor_ir()){
     output_high(PIN_B3);
     delay_ms(5);
   }
   
   output_low(PIN_B3);
   
   if(input(PIN_B0)==0){
      output_high(PIN_B1);
      delay_ms(100);
   }
   
   output_low(PIN_B0);
}

//ou

while(TRUE){for(;;){

   if(sensor_ir()){
     output_high(PIN_B3);
     delay_ms(5);
   }
   
   output_low(PIN_B3);
   
   if(input(PIN_B0)==0){
      output_high(PIN_B1);
      delay_ms(100);
   }
   
   output_low(PIN_B0);
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...