Ir ao conteúdo
  • Cadastre-se

Desligar e ligar led no pic.


neto_e_khelen

Posts recomendados

Estou iniciando agora no mundo dos pics e tenho uma dúvida que pode ser muito boba pra muitos, mas que se alguem me ajudar vai ser muito bom!

É o seguinte: tenho um botao em RA0 que quando precionado e solto acende um led em RB0, mas se o mesmo botao (RAO) for precionado novamente o led se apaga e se mantem assim. Alguem pode me ajudar? Segue o código: (Compilado no CSS).

void main()

{

INT a,b,c;

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

setup_psp(PSP_DISABLED);

setup_spi(SPI_SS_DISABLED);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DISABLED,0,1);

setup_comparator(NC_NC_NC_NC);

setup_vref(FALSE);

a=10;

b=25;

c=a+b;

while(true)

{

if(input(PIN_A0))

{

output_high(PIN_B0);

}

}

}

Niguem sabe me ajudar??

Por favor, é rapidinho! me ajudem!!!! rsrs

Link para o comentário
Compartilhar em outros sites

Eu faria assim:

static boolean led=0;

while(true)

{

if(input(PIN_A0))

{

output_bit(PIN_B0,led); //Quando pressiona A0, manda o bit da variável led para o B0

led=!led; //inverte o bit da variável led

while(input(PIN_A0)) //Este laço deixa o microcontrolador sem fazer nada enquanto

{// o botão A0 ainda estiver pressionado, só voltando a rodar o programa quando soltar

}// o botão A0. Isto evita totalmente que o programa pense que o botão foi

}// pressionado sem querer...

}

Era só isso?

Abraço!

Link para o comentário
Compartilhar em outros sites

Ta explicado ali, da uma olhada...

Existe output_high, output_low e também output_bit que coloca um valor 1 ou 0 na saída que tu especificar. Ele tem que ter 2 comando após, (porta,bit).

O comando !variável serve para inverter uma variável que deve ser booleana(0 ou 1) pois é isto que tu quer fazer, 0 desligar, 1 ligar.

Entendeu?

Faz o seguinte agora.

Tira aquele while(input(PIN_A0)){} e testar como o programa vai ficar.

Ai tu descobre pra que ele serve.

No simulador não sei se vai fazer diferença, mas se tu for apertar com o dedo tu vai ver que as vezes não vai funcionar pois ele vai ficar ligando e desligando o LED sempre.

Porque ele entra no if, faz o q ta ali dentro, sai do if, volta pro começo do programa, e por mais rápido que tu seja, ele vai fazer isto mas tu ainda vai estar com o dedo la no botão. Ai ele vai entrar no if de novo, e desligar o led.

Com o while ali, ele faz o if, entra no while e fica ali até tu soltar o botão.

Assim não tem como dar erro.

Abraço!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!