Ajuda em C

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Ajuda em C

Mensagempor franca-junior » 18 Jul 2008 20:39

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
}

}
Editado pela última vez por franca-junior em 19 Jul 2008 22:53, em um total de 1 vez.
franca-junior
 
Mensagens: 4
Registrado em: 13 Jul 2008 00:35

Re: Ajuda em C

Mensagempor Jorge_Francisco » 18 Jul 2008 20:57

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.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Re: Ajuda em C

Mensagempor Renie » 18 Jul 2008 21:48

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).
[]'s
Renie
-------------------------------------------------------------------------------------------------------------
Meu velho site com eletrônica praticamente parado http://www.reniemarquet.com
Nosso Blog http://artemadeiraevida.blogspot.com.br
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor buiz » 19 Jul 2008 09:57

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.
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor buiz » 19 Jul 2008 10:01

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}

}
}
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor xultz » 21 Jul 2008 08:35

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]
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor franca-junior » 21 Jul 2008 22:26

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

franca-junior
 
Mensagens: 4
Registrado em: 13 Jul 2008 00:35

Mensagempor Maurício » 21 Jul 2008 23:06

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
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x