Ir ao conteúdo

Posts recomendados

Postado

Eae pessoal, estou tentando fazer um laço FOR, que quando eu segurar S1 o led vai piscar 10 vezes, mas quando eu seguro o S1 ele não para de piscar, como eu posso arrumar isso por favor???(quando aperto e solto ele funciona, mas não é isso q quero)

#define S1 PORTA.RA0
#define led PORTB.RB0

int ii = 0x00;

void main()
{
TRISA = 0xFF;
TRISB = 0x00;
PORTA = 0x00;
PORTB = 0x00;
CMCON = 0x07;

while(1)
{
 if(S1 == 1)
 {
  for(ii=; ii<10; ii++)
  {
   led = 0x01;
   delay_ms(200);
   led = 0x00;
   delay_ms(200);
   
  }
 
 }

}

}

 

  • Membro VIP
Postado

confuso. não sei se entendi direito mas tentemos...

coloque um

 while(!S1);

pra esperar soltar a tecla

Postado

Após o laço for coloque um tempo de espera(delay), para que o botão possa ser pressionado novamente.

 

Outra solução seria verificar quando o botão for solto, logo o algoritmo ficaria mais ou menos assim:

 

bool flag;

se (botao == 1)
	flag = 1

se(botao == 0 && flag == 1)
	for{...}
	flag = 0

Desta maneira a rotina seria executada ao pressionar e soltar o botão. E só funcionaria novamente após piscar as 10 vezes. (EU ACHO)

Visitante
Este tópico está impedido de receber novas respostas.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!