Página 1 de 1

Pequena dúvida em C

MensagemEnviado: 26 Nov 2006 11:21
por lpagano
Galera,

Sou iniciante em C para PICs e estou com uma dúvida. Em uma porta do meu PIC (B4) entram bits em sequência. Quando der 100 bits eu quero que ative a saída de outra porta (B0).

Vejam abaixo o que eu fiz até agora:

cpp code
short int x;
x=input(pin_B4);

//código a ser implementado

output_bit(B0);


O que deveria ser mudado para fazer o que eu preciso?

Valeu!!!

Re: Pequena dúvida em C

MensagemEnviado: 27 Nov 2006 08:30
por andre_luis
Essa rotina devera ser executada várias vezes no loop principal.
Assumindo que o default na entrada seja 0 :

Código: Selecionar todos
bool terminou ( void )
{
static short int x;
static bool testar = true ;
if ( input(pin_B4) )
   {
   if ( testar ) x++  ;
   testar = false ;
   }
   else testar = true ;
if ( x>=100 )
   {
   x=0 ;
   testar = true ;
   return (true) ;
   }
   else return (false)             ;
}
...
...
void main ( void )
   {
   ...
   if ( terminou() ) output_bit(B0);
   ...
   }




+++

MensagemEnviado: 27 Nov 2006 14:07
por lpagano
VALEU!!!

MensagemEnviado: 27 Nov 2006 17:14
por zemarlon
bit não tem tempo? ou você está trabalhando apenas com alternância de níveis 1 e 0?

MensagemEnviado: 04 Dez 2006 11:27
por leoabubauru
Use uma interrupção e conte quantas vezes ela aconteceu e acione uma saída:

cpp code
#INT_EXT
void trata_intEXT(void)
{
if(++contador>100)
output_high(PIN_B0);
}


contador deverá estar declarada e iniciada em main() e as interrupções devem estar habilitadas...

MensagemEnviado: 04 Dez 2006 11:33
por ric_vas
Concordo com o Zemarlon. Como são representados os bits nesse sistema? Transição de 0 a 1, de 1 a 0, temporizado? Ou a idéia é apenas contar pulsos?

Ric

MensagemEnviado: 04 Dez 2006 13:50
por lpagano
ric_vaz,

A idéia é somente contar pulsos.
Mas essa dúvida eu já implementei com a ajuda do andre_teprom.

Obrigado a todos pela ajuda.

lpagano