Fórum

Duvida PIC12F675 - ...
 
Notifications
Clear all

Duvida PIC12F675 - CCS C Compiler

2 Posts
2 Users
0 Likes
1,919 Leituras
(@rlcardo)
Active Member
Joined: 9 anos ago
Posts: 9
Topic starter  

Olá meu amigo, poderia me ajudar com uma duvida relativamente simples?

Tenho este projeto simples na imagem em anexo.

O funcionamento é simples: Quando pressionamos o botão uma vez, o led pisca duas vezes.

O problema é que se mantivermos o botão pressionado, o led vai ficar piscando direto pois a programação se repete.

Como eu poderia fazer pra que a programação fosse executada apenas uma vez mesmo se mantivermos o botão pressionado e só se repita se soltarmos o botão e pressionarmos de novo?

Abaixo vou postar o código em CCS C Compiler.

#include <main.h>

void main()
{

while(TRUE)
{
if( input(pin_a0 )==0){
delay_ms(400);
output_high(pin_a5);
delay_ms(80);
output_low(pin_a5);
delay_ms(600);
output_high(pin_a5);
delay_ms(80);
output_low(pin_a5);
}

}

}


   
Quote
(@clarios)
Reputable Member Admin
Joined: 12 anos ago
Posts: 357
 

Se não tiver problema que a rotina fique presa até soltar o botão, basta acrescentar um teste do botão a mais. Se ele continuar apertado depois de executar as piscadas fica aguardando ser solto. O delay é para evitar o efeito de debounce (repique da chave) e evitar entrar na rotina uma segunda vez. Veja abaixo:

 

#include <main.h>

void main()
{

while(TRUE)
{
if( input(pin_a0 )==0){
delay_ms(400);
output_high(pin_a5);
delay_ms(80);
output_low(pin_a5);
delay_ms(600);
output_high(pin_a5);
delay_ms(80);
output_low(pin_a5);

while(input(pin_a0)==0)delay_ms(80);//acrescentar para debouce do botão
}

}

}


   
ReplyQuote
(@rlcardo)
Active Member
Joined: 9 anos ago
Posts: 9
Topic starter  

Obrigado mais uma vez Cláudio. Funcionou perfeitamente como eu queria. Forte abraço.


   
ReplyQuote
Back To Top