Case Mod RJ
Olá Convidado, Seja Bem-Vindo(a) ao nosso Forum.

O Nosso Forum possui 15 Categorias.
Ela está Online há 3113 dias.
E conta com 318 Tópicos e 404 Mensagens.

Obs: Se você ainda não for cadastrado por favor, cadastre-se, é grátis assim você poderá ler todos os tópicos e ter acesso aos links.
E por favor colaborem, postem, perguntem, criem e divirtam-se.
Contribuindo vocês me ajundam a manter o forum, pois sempre estarei postando novidades e projetos sobre casemod e eletronica.




Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Parceiros
Seja Parceiro, apenas aqui e entre em contato

Seja Parceiro, apenas aqui e entre em contato

Calculadora de Led’s
Calculadora de led multo util, para você fazer seu projeto.
Calculadora LM317
Calculadora do LM 317 muito util, para você fazer seu projeto.
Calculadora Resistor
Calculadora de resistores multo util, para você fazer seu projeto.

PIC Tutorial - Um simples pisca-pisca de LED

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

PIC Tutorial - Um simples pisca-pisca de LED

Mensagem  CaseModRJ em 02.05.10 16:08

Outro circuito simples é o LED pisca-pisca. Com este tutorial você irá se familiarizar com os atrasos. Ele é muito importante para entender como gerar atrasos na PIC.

Projeto em Ação


[Você precisa estar registrado e conectado para ver este link.]

O Circuito

[Você precisa estar registrado e conectado para ver esta imagem.]

Este circuito é simplesmente um flash LED que a cada meio segundo acende e apaga alternadamente. Para manter a simplicidade do código, não há nenhum interruptor de botão ou outro conencted a ele, pois isso seria um pouco fora do assunto. Abaixo está o código PIC deste tutorial.

Código:
; RAM preserved -----------------------------------------------------------
   cblock 0x20
      WaitCounter,WaitCounter2
   endc
; Main Program ------------------------------------------------------------
Start
            bank1               ;Go to bank 1
            movlw b'11111111'      ;
            movwf TRISA            ;Set the port pin types of the RA

            movlw b'11111110'      ;
            movwf TRISB            ;Set the port pin types of the RB
            bank0               ;Go to bank 0
MainLoop
            call Wait250mSec
            call Wait250mSec
            bsf PORTB,0            ;Set RB0 output
            call Wait250mSec
            call Wait250mSec
            bcf PORTB,0            ;Clear RB0 output
            goto MainLoop

Wait250mSec                    movlw d'250'
            movwf WaitCounter2      
BackWaitLoop2                  movlw d'163'         
                                call WaitWx4Cycle
                                movlw d'163'
                                call WaitWx4Cycles
                 nop
                 nop
                 decf WaitCounter2,f
                 btfss Zero
                 goto BackWaitLoop2      
                 return            



WaitWx4Cycles                  movwf WaitCounter
BackWaitLoop                    decfsz WaitCounter,f
                                goto BackWaitLoop
                                return

No final deste tutorial, você vai encontrar todos os arquivos inclusive o arquivo asm acima de um zip para download e testá-lo.

A primeira coisa a ser notado é que todas as portas são as entradas, exceto a porta RB0. Esta é a nossa única saída, o LED está ligado lá.

Quando o programa chegar ao MainLoop, ele chama para uma etiqueta com o nome 'Wait250mSec. Este selo é o nosso atraso calculado 250mSec. Duas vezes por meio de chamada meia segundo atraso. Agora, como esse atraso trabalham realmente:

Ir para este rótulo a seguir o código. Você vai notar que o número decimal '250 'é carregado para o WaitCounter2 registo definido no início do código. Logo depois, um "rótulo BackWaitLoop2 'é definida. 8 instruções abaixo, há este 'BackWaitLoop2 goto' instrução. Este bloco, vai gerar atraso 1mSec e será chamado tantas vezes quanto o WaitCounter2 carrega, em nosso ocasião em que será igual a 250 vezes 250mSec.

Para gerar o atraso 1mSec, precisamos saber algo sobre o momento da PIC. Cada ciclo de instrução precisa de 4 pulsos de clock para ser executado. Nosso PIC é cronometrado em 4MHz (definido no registo OSCCON no cabeçalho do arquivo Init_normal.inc). Então, se você dividir a 4.000.000 Hz por 4, você obterá o número impressionante de 1.000.000 de instruções por segundo! Nosso PIC é capaz de executar 1.000.000 de instruções por segundo, e este é o nosso tempo base para o cálculo do atraso. Siga o meu pensamento:

1.000.000 instruções precisa de 1 segundo para ser executado
Como muitas instruções necessidades 0,001 segundo para ser executada (0.001Sec 1mSec =)?
A resposta está escondida em matemática simples. A fórmula para o cálculo acima é:

Instruções = 1.000.000
1000

E isso significa que precisamos para executar 1.000 instruções para gerar atraso 1mSec. Essa é a idéia básica de como calcular os atrasos. Durante as aulas intermediárias, haverá plena e explicação sobre como medir o ciclo de instrução e de atraso, porque nem todas as instruções têm o mesmo ciclo. Mas, para evitar toda essa confusão, você pode simplesmente usar o código fornecido para este tutorial. Isso vai funcionar perfeitamente para o oscilador de 4MHz. Pode ser usado em caso de atrasos de 1mSec direto para 256mSec. Basta carregar o valor em milisegundos que você deseja para o WaitCounter2 registrar e chamar a subrotina BackWaitLoop2. Se você quiser mais de 256 mseg de atraso, você pode chamar mais de uma vez a mesma sub-rotina, como foi feito neste tutorial para o atraso (segundo semestre) 500msec.

Agora, de volta ao MainLoop. É muito óbvio o que é feito lá. Em primeiro lugar, um atraso 500msec é chamado. Então, a saída RB0 é definida, o LED acende. Posteriormente, outro 500msec é chamado ea saída RB0 estiver desmarcada, o LED está desligado. Que continua indo ao infinito, e lá está seu LED pisca-pisca!

Código do Pic.

Fonte Pcheaven
avatar
CaseModRJ
Admin

Número de Mensagens : 338
Idade : 36
Pontos : 100000520
Reputação : 61
Data de inscrição : 16/03/2009

http://casemodrj.forumeiro.com

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum