Leitura de pulsos.

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Leitura de pulsos.

Mensagempor JuniorJ » 25 Set 2007 15:08

Ola,

Faço dupla com o Kfer na aula da faculdade.
Todo mundo la esta vendo 8031, mas eu nao achei muito pratico pergunte pro prof pq nao podia ser pic e ele mando eu e o Kfer usar pic... Bom a atividade que ele nos passou foi a seguinte:


Ligar um botao no uC apertar ele 20 vezes liga o ld.
Apertar mais 7 vezes desliga o led.
Aperta mais 20 vezes liga o led 2 apertar mais 7 vezes desliga o led.

:S Alguma ideia para fazer isso em asm?
JuniorJ
 
Mensagens: 3
Registrado em: 25 Set 2007 09:50
Localização: Curitiba Parana

Mensagempor KrafT » 25 Set 2007 16:05

Que o Kfer acha disso?
"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Re: Leitura de pulsos.

Mensagempor andre_luis » 25 Set 2007 16:07

JuniorJ escreveu:...Alguma ideia para fazer isso em asm?


sim, faz isso em 'C', usando umas poucas linhas, e depois visualiza o programa gerado em assembly; vai levar pouquissimo tempo. ( se voce for preguiçoso como eu )


+++
"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 Maurício » 25 Set 2007 17:05

Kraft!

Vc que é o "Kfer"? :shock:
Mudou de nick e não falou nada, seu bogus!!! ehehehehehe
Mudando de pau pra toquinho, Blumenau fica perto de Concórdia?
Tou indo aí no mês que vem e se ficar perto, prepara o chucrute que eu já me convido a ir almoçar na sua casa, ehehehehehehe

[]'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

Mensagempor KrafT » 25 Set 2007 17:09

Perto não é mas pode ser caminho...

Teje convidado!

Sou eu não... mas a um post tão estranho, eu não pude resitir. :D
"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Mensagempor Maurício » 25 Set 2007 17:13

Salve, JuniorJ.

Não conheço PIC, mas a lógica é a mesma.
Cria uma variável BIT pra vc saber se é pra ligar ou desligar.
BIT = 0, contagem para ligar. BIT = 1, contagem para desligar.

Conta os pulsos.
Se BIT = 0 e pulsos = 20, liga.
Zera a variável de contagem, e complementa o valor do BIT.
Se BIT = 1 e pulsos = 7, desliga.

E segue o enterro....

[]'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

Mensagempor KrafT » 25 Set 2007 17:28

Eu usria o timer do PIC para contar os pulsos...
"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Mensagempor JuniorJ » 25 Set 2007 23:34

Entao o Kfer, é o caferninha que postou agora pouco. Nos fezemos dupla na aula de microcontroladores. O Wagner é nosso semi pseudo professor particular.

Bom, pelo que nos olhamos no livro o ideial é usar o timer.

So esotu atras de exemplos. A nossa aula o professor explica para o 8051 em asm, mas nos temos que fazer com pic, e as semelhancas sao meras conhecidencias.

Entao o caso é o seguinte. Apertar 20x o botao ele liga o led que deve ficar aceso por mais 7 apertos no botao.

Acho que fazer o led acender com um click eu ja sei :)
Vou dar mais uma estudada.
JuniorJ
 
Mensagens: 3
Registrado em: 25 Set 2007 09:50
Localização: Curitiba Parana

Mensagempor marcospaf » 26 Set 2007 08:35

fala ai cambada .

se vocÊ fizer em "C" não tme graça !!! hehehe

cara peloq ue entendi são 2 leds , na primeira contagem ele atua no led1 , ja na segunda ele atua no led2 certo??? depois ele retorna ao led 1 ( 20 liga e sete desliga).

alem da variavel bit , você deverá criar filtros para o botão , pois os push boton são "f..." as vezes num simples toque o microcontroladores pode reconhecer 2 pulsos.

cara se precisar eu te dou este programa feito é só dizer qual o pic que vai usar , mas seria legal você fazer , abraços
marcospaf
Bit
 
Mensagens: 26
Registrado em: 13 Nov 2006 12:48

Mensagempor buiz » 26 Set 2007 08:51

Olá,

Em C para um LED ficaria mais ou menos assim:



include <16f877a.h>
#use delay(clock=4000000) // fixa frequencia cristal e apos fusiveis
#fuses HS,NOWDT,NOPROTECT,NOLVP

#define botao pin_b0
#define led pin_b1


main()
{
int pulsos=0;

while (true)
{

if (!input(botao)) {while (!input(botao)); // Soma 1 a cada pulso
pulsos++;}

if (pulsos==20) output_high(led); // quando for igual a 20 pulso acende o LED

if (pulsos==27) {output_low(led); // quando der mais 7 pulsos apaga o LED
pulsos=0;}

delay_ms(100);

}
}


Fica aqui um exemplo!

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

Mensagempor JuniorJ » 28 Set 2007 12:10

Li e nao entendi nadinha :S.

Procurei um monte por apostila de Linguegam C para pic mas so achei uma para 16f84 e varios links quebrados em portugues.

Vamos ver se estou correto entao.

buiz escreveu:Olá,

Em C para um LED ficaria mais ou menos assim:



include <16f877a.h>
#use delay(clock=4000000) // fixa frequencia cristal e apos fusiveis
#fuses HS,NOWDT,NOPROTECT,NOLVP Sao as opcoes do uC?

#define botao pin_b0 Esta definindo o botao no pino B0
#define led pin_b1 Esta definindo o LED no pino B1


main()
{
int pulsos=0; Definiu o pulso inicial = 0

while (true) O True retorna o valor VERDADEIRO se tiver 5v no pino B0 ?

{

if (!input(botao)) Lê o estado do pino indicado ???

{
while (!input(botao)); // Soma 1 a cada pulso quando o corre a mudanda de estado? de 0 para 1 isso?

pulsos++;
}

if (pulsos==20) output_high(led); // quando for igual a 20 pulso acende o LED

if (pulsos==27) {output_low(led); // quando der mais 7 pulsos apaga o LED
pulsos=0;}

delay_ms(100); Qual a funçao desse Delay?

}
}


Fica aqui um exemplo!

Abraços Buiz





Obrigado Buiz.
JuniorJ
 
Mensagens: 3
Registrado em: 25 Set 2007 09:50
Localização: Curitiba Parana

Mensagempor buiz » 28 Set 2007 15:30

include <16f877a.h> // defiine o microprocessador a ser usado
#use delay(clock=4000000) // fixa frequencia cristal
#fuses HS,NOWDT,NOPROTECT,NOLVP // opções do MC fusiveis

#define botao pin_b0 // define saida do led no pino B0
#define led pin_b1 // define leitura do botão no pino B1


main() // inicio do programa
{
int pulsos=0; // define variavel inteira PULSOS = 0 na inicialização

while (true) //laço continuo de testes
{

if (!input(botao)) // se 0 no botão então
{while (!input(botao)); // espera aqui até botão voltar a 1 (filtro para não somar mais de 01 pulso a cada toque no botão)
pulsos++;}// soma 01 pulso

if (pulsos==20) output_high(led); // quando for igual a 20 pulso acende o LED

if (pulsos==27) {output_low(led); // quando der mais 7 pulsos apaga o LED
pulsos=0;// retorna variavel pulsos ao valor inicial}

delay_ms(100); // intervalo de repetição do laço While

}
}

Olha, foi uma dica, testei aqui na proto e funcionou legal, mas cabe a você escolher a melhor maneira para isso, este codigo fiz na corrida apenas para exemplo.

Se você quer começar a programar em C, sugiro que adquira o livro do Fabio ( PIC - Programação em C).

Espero ter ajudado,

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

Mensagempor wgc » 02 Out 2007 15:01

Buiz, acho que ouve um mal entendindo. Pelo que eu sei o junior so estava tentando entender seu codigo, ele ate comendo ao lado das linhas as duvidas dele.


Toda programaçao que eles estao vendo é em asm, mas tanto ele quanto eu, achamos C bem interessante.


Quanto ao livro do Fabio, nao tem na biblioteca da faculdade.

E como eu tenho o Desbravando o Pic e o Microcontroladores PIC, eles estao usando como referencia.
wgc
Bit
 
Mensagens: 12
Registrado em: 18 Jul 2007 10:22

Mensagempor proex » 02 Out 2007 21:32

O que é 8031?
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor Maurício » 02 Out 2007 23:21

O que é PIC?

(Tomou, papudo?? ) 8)

[]'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

Próximo

Voltar para PIC

Quem está online

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

cron

x