Página 1 de 1

PIC 16F628A *POR FAVOR ME AJUDEM, programa em C

MensagemEnviado: 29 Jan 2010 13:20
por adrianoliz
Olá amigos, estou trabalhando num projeto com o pic 16f628a, preciso, que ao pressionar um botão, ele dê um pulso de +- 5 seg numa porta, e um pulso direto em outra, e ao pressionar novamente, desligue o pulso direto, e dê outro pulso de +- 5seg naquela porta, desenvolvi esse programa no CCS, mas ele só realiza um ciclo, não volta ao início após terminar as funções, notei no proteus, que as portas, após o pulso positivo(ponto vermelho no proteus) ficam em descanso negativo(ponto azul), acredito que é isso q está impossibilitando o loop da função, será que é alguma configuração dos #fuses? ou um erro no programa?

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

#define BOTAO PIN_A0


void main(void)



{ while(true){
if(input(BOTAO)){

if (output_low(PIN_A2)){
output_high(PIN_A1);
delay_ms(3000);
output_low(PIN_A1);
output_high(PIN_A2);}

else

{
output_low(PIN_A2);
output_high(PIN_A1);
delay_ms(3000);
output_low(PIN_A1);


}
}


}

}

Re: PIC 16F628A *POR FAVOR ME AJUDEM, programa em C

MensagemEnviado: 29 Jan 2010 14:11
por ze
se sua entrada de projeto for só isso...
adrianoliz escreveu:...preciso, que ao pressionar um botão, ele dê um pulso de +- 5 seg numa porta, e um pulso direto em outra, e ao pressionar novamente, desligue o pulso direto, e dê outro pulso de +- 5seg naquela porta, ...

... é simples:
Código: Selecionar todos
#define bt RA0
for(;;)
{
PORTB=0; //condição inicial
while(bt);while(!bt);//"que ao pressionar um botão"
RB0=1; //"um pulso direto em outra"
RB1=1; delay(5000); //"dê um pulso..."
RB1=0; //"...de +- 5 seg numa porta"
while(bt);while(!bt);//"e ao pressionar novamente"
RB0=0;//"desligue o pulso direto,"
RB1=1; //"e dê outro pulso de..."
delay(5000);//"... +- 5seg naquela porta"
}

há 50% de chance de estar quase perto de se aproximar de estar correto. ou não.
abç