Ir ao conteúdo
  • Cadastre-se
lugonbeest

While + PIC + C

Recommended Posts

Boa tarde galera!

Estou tendo dificuldades em uma rotina while em C, com PIC. (Compilador CCS)

É o seguinte, tenho este código:

...

void main(){

while(true){

while(input(BTANDAR1));
primeiro(); // FUNÇÃO ACENDER LED1
while(!input(BTANDAR1));

while(input(BTANDAR2));
segundo(); //FUNÇÃO ACENDER LED2
while(!input(BTANDAR2));

while(input(BTANDAR3));
terceiro(); //FUNÇÃO ACENDER LED3
while(!input(BTANDAR3));

}
}

Quando eu aperto o BTANDAR1, acende o LED1; quando aperto o BTANDAR2, acende o LED2; quando aperto o BTANDAR3, acende o LED3. Até ai, beleza!

Só que o problema é: eu não posso apertar o BTANDAR2 e acender o LED2 sem antes ter apertado o BTANDAR1!

Ou seja, tenho que seguir a rotina do while. Só posso apertar o BTANDAR3 caso eu tenha apertado o BTANDAR1, BTANDAR2 para o LED3 acender. Compreendem?

Eu tenho que seguir a rotina. Mas eu gostaria de apertar o BTANDAR3 e acender o LED3 independentemente, assim da mesma forma para o BTANDAR1 e BTANDAR2.

Obrigado pessoal, abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Boa tarde galera!

Estou tendo dificuldades em uma rotina while em C, com PIC. (Compilador CCS)

É o seguinte, tenho este código:

...

void main(){

while(true){

while(input(BTANDAR1));

primeiro(); // FUNÇÃO ACENDER LED1

while(!input(BTANDAR1));

while(input(BTANDAR2));

segundo(); //FUNÇÃO ACENDER LED2

while(!input(BTANDAR2));

while(input(BTANDAR3));

terceiro(); //FUNÇÃO ACENDER LED3

while(!input(BTANDAR3));

}

}

Quando eu aperto o BTANDAR1, acende o LED1; quando aperto o BTANDAR2, acende o LED2; quando aperto o BTANDAR3, acende o LED3. Até ai, beleza!

Só que o problema é: eu não posso apertar o BTANDAR2 e acender o LED2 sem antes ter apertado o BTANDAR1!

Ou seja, tenho que seguir a rotina do while. Só posso apertar o BTANDAR3 caso eu tenha apertado o BTANDAR1, BTANDAR2 para o LED3 acender. Compreendem?

Eu tenho que seguir a rotina. Mas eu gostaria de apertar o BTANDAR3 e acender o LED3 independentemente, assim da mesma forma para o BTANDAR1 e BTANDAR2.

Obrigado pessoal, abraço!

Ao invés de usar 2 whiles usa 1 while e outro if, por exemplo.

While(true){

if( pin1 apertado){

ascendepin1

}

if( pin2 apertado){

ascendepin2

}

if( pin3 apertado){

ascendepin3

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ao invés de usar 2 whiles usa 1 while e outro if, por exemplo.

While(true){

if( pin1 apertado){

ascendepin1

}

if( pin2 apertado){

ascendepin2

}

if( pin3 apertado){

ascendepin3

}

}

Olá 001gruder001, eu tentei fazer dessa maneira, não obtive sucesso. O while fica fazendo um loop com as minhas funções. Ou seja, eu não aperto botão nenhum, e minhas funções ficam em loop automático.

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×