Página 1 de 1

Ajuda em C

MensagemEnviado: 18 Jul 2008 20:39
por franca-junior
Ola galera, estou aprendendo a programar PIC "sozinho, não tem curso aqui na cidade" :(
Mas estou apanhando um pouco, porem ela não esta funcionado corretamente só fica piscando o LED 1 da minha plaquinha. se algum puder me ajudar agradeço. Abraços



Código: Selecionar todos
void main ()
{
while(1)
{

if ( !input(pin_a4) )
for(;;)
output_high(pin_A0); // LIGA LED1
delay_ms (2000);    // ESPERA 2 SEGUNDOS


output_high(pin_A1); // LIGA LED2
output_low(pin_A0); // DESLIGA LED1
if ( !input(pin_a6) )

output_high(Pin_A2); //LIGA LED3
output_low(Pin_A1); //DESLIGA LED2
delay_ms (2000);   //ESPERA 2 SEGUNDOS
output_low(Pin_A2); //DESLIGA LED3
}

}

Re: Ajuda em C

MensagemEnviado: 18 Jul 2008 20:57
por Jorge_Francisco
Quando for colocar código use o botão "Code", assim fica tudo identado.
O que era para ser feito? Não entendi muito bem, tente explicar melhor, no código está faltando chaves, tente comenta-lo que eu tenho certeza que irão ajuda-lo.

Re: Ajuda em C

MensagemEnviado: 18 Jul 2008 21:48
por Renie
Olá Franca,

Retire o FOR e a chave de fechamento dele,

confira as ligações que deve funcionar (se o hardware estiver correto
também).

MensagemEnviado: 19 Jul 2008 09:57
por buiz
Primeira pergunta, que processador você esta utilizando?

Procure não usar as portas A para sinal digitais, especialmente se você esta iniciando a programar. Utilize as B.

Segundo, informe melhor o que vc queria que o programa fizesse.

Aprenda a fazer 1° uma lógica no papel, depois passe para o programa.

Então de mais detelhes para que possamos ajudar melhor

Um abraço, Buiz.

MensagemEnviado: 19 Jul 2008 10:01
por buiz
Experimenta assim:

Código: Selecionar todos
 

void main ()
{
while(1)
{

if ( !input(pin_a4) )
{output_high(pin_A0); // LIGA LED1
  delay_ms (2000); // ESPERA 2 SEGUNDOS
  output_high(pin_A1); // LIGA LED2
  output_low(pin_A0); // DESLIGA LED1}

if ( !input(pin_a6) )
{output_high(Pin_A2); //LIGA LED3
output_low(Pin_A1); //DESLIGA LED2
delay_ms (2000); //ESPERA 2 SEGUNDOS
output_low(Pin_A2); //DESLIGA LED3}

}
}

MensagemEnviado: 21 Jul 2008 08:35
por xultz
O problema está aqui:
Código: Selecionar todos
for(;;)
output_high(pin_A0);

Nesta situação você fica num loop infinito colocando o pino RA0 em nível alto.[/code]

MensagemEnviado: 21 Jul 2008 22:26
por franca-junior
Consegui fazer o que eu queria com essa rotina. Não sei se é a ideal mas deu certo. Estou usando as portas A por que to usando um Kit os led's e as chaves estão td no Port A, o Port B ta reservado para os Displays;
Valew pela atenção.

Código: Selecionar todos

#include <16F628.h>
#fuses INTRC_IO, NOWDT, PUT, BROWNOUT, NOLVP, MCLR
#use delay(clock=4000000)

void main ()
{

while(true)
{


if ( !input(pin_a4) )
{
output_high(pin_A0); // LIGA LED1
delay_ms (2000); // ESPERA 2 SEGUNDOS
output_high(pin_A1); // LIGA LED2
output_low(pin_A0); // DESLIGA LED1}

while(true)
{

if ( !input(pin_a6) )
{
output_high(Pin_A2); //LIGA LED3
output_low(Pin_A1); //DESLIGA LED2
delay_ms (2000); //ESPERA 2 SEGUNDOS
output_low(Pin_A2); //DESLIGA LED3}
break;
}
}
}
}
}


MensagemEnviado: 21 Jul 2008 23:06
por Maurício
Salve, franca-junior.

Bem vindo ao fórum!

Seria melhor vc descrever o que vc quer fazer, e como está ligado o seu circuito. Fica bem mais fácil pro pessoal poder ajudar.
Poste aqui o circuito elétrico e a finalidade do programa.

Sem informação... sem solução!

[]'s