Página 1 de 2

Leitura de pulsos.

MensagemEnviado: 25 Set 2007 15:08
por JuniorJ
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?

MensagemEnviado: 25 Set 2007 16:05
por KrafT
Que o Kfer acha disso?

Re: Leitura de pulsos.

MensagemEnviado: 25 Set 2007 16:07
por andre_luis
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 )


+++

MensagemEnviado: 25 Set 2007 17:05
por Maurício
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

MensagemEnviado: 25 Set 2007 17:09
por KrafT
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

MensagemEnviado: 25 Set 2007 17:13
por Maurício
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

MensagemEnviado: 25 Set 2007 17:28
por KrafT
Eu usria o timer do PIC para contar os pulsos...

MensagemEnviado: 25 Set 2007 23:34
por JuniorJ
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.

MensagemEnviado: 26 Set 2007 08:35
por marcospaf
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

MensagemEnviado: 26 Set 2007 08:51
por buiz
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

MensagemEnviado: 28 Set 2007 12:10
por JuniorJ
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.

MensagemEnviado: 28 Set 2007 15:30
por buiz
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

MensagemEnviado: 02 Out 2007 15:01
por wgc
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.

MensagemEnviado: 02 Out 2007 21:32
por proex
O que é 8031?

MensagemEnviado: 02 Out 2007 23:21
por Maurício
O que é PIC?

(Tomou, papudo?? ) 8)

[]'s