Pequena dúvida em C

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Pequena dúvida em C

Mensagempor lpagano » 26 Nov 2006 11:21

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!!!
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23

Re: Pequena dúvida em C

Mensagempor andre_luis » 27 Nov 2006 08:30

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




+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor lpagano » 27 Nov 2006 14:07

VALEU!!!
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23

Mensagempor zemarlon » 27 Nov 2006 17:14

bit não tem tempo? ou você está trabalhando apenas com alternância de níveis 1 e 0?
Teoria1: sempre que descobrem o porquê do universo, ele é imediatamente substituído por algo ainda mais bizarro e inexplicável...
Teoria2: a teoria 2 já aconteceu antes.
[citação resumida de Douglas Adams]
Avatar do usuário
zemarlon
Bit
 
Mensagens: 27
Registrado em: 16 Out 2006 09:48

Mensagempor leoabubauru » 04 Dez 2006 11:27

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...
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor ric_vas » 04 Dez 2006 11:33

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
ric_vas
Nibble
 
Mensagens: 93
Registrado em: 11 Out 2006 22:22
Localização: RS

Mensagempor lpagano » 04 Dez 2006 13:50

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
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 1 visitante

x