Página 1 de 1
Ajuda em C

Enviado:
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

Enviado:
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

Enviado:
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).

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

Enviado:
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}
}
}

Enviado:
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]

Enviado:
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;
}
}
}
}
}

Enviado:
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