O exemplo clássico é "Blink", que é um led piscante.
- Piscar um LED corresponde a mudar o estado lógico de uma saída
- Para termos o efeito visual de piscar um LED é necessário ligar e em sequência desligar uma saída lógica.
- Esta ação deve acontecer de forma repetitiva (loop)
- Como o microcontrolador trabalha sob um circuito de clock elevado (48MHz), as ações efetuadas ocorrem em um tempo muito pequeno, de forma que o olho humano não percebe essas mudanças.
- Visualmente é como se o LED estivesse permanentemente ligado.
- Para poder ver o efeito é necessário incluir um tempo visível ao olho humano .
____________________________________________________________________
- Como o microcontrolador trabalha sob um circuito de clock elevado (48MHz), as ações efetuadas ocorrem em um tempo muito pequeno, de forma que o olho humano não percebe essas mudanças.
- Visualmente é como se o LED estivesse permanentemente ligado.
- Para poder ver o efeito é necessário incluir um tempo visível ao olho humano .
____________________________________________________________________
1. Criando funções de atraso
=========================================================
#define _XTAL_FREQ 48000000
#include <xc.h>
#include "C:\pic18\config_PIC18F4550.h"
void delay_ms( int i ) {
for ( int x = 0; x < i; x++ ) {
__delay_ms( 1 );
}
}
=========================================================
Utilizando as o exemplo acima crie funções de atraso da biblioteca xc.h , construir funções para gerar atrasos de:
- 100ms
____________________________________________________________________
Solução para criar uma função de atraso de 100ms
____________________________________________________________________
#define _XTAL_FREQ 48000000
#define saida LATDbits.LATD0
#include <xc.h>
#include "C:\h\Config_PIC18F4550.h"
// função que gera um atraso de múltiplos de 1ms
void delay_ms( int i ) {
for ( int x = 0; x < i; x++ ) {
__delay_ms( 1 );
}
}
// função que gera um atraso de múltiplos de 100ms
void delay_100ms (int i){
for ( int x = 0; x < i; x++ ) {
delay_ms( 100 );
}
}
void main(void) {
TRISDbits.TRISD0 = 0; // Define a direção de D0 como saída
while (1) {
saida = 1;
delay_100ms(1);
saida = 0;
delay_100ms(1);
}
}
____________________________________________________________________
Use o exemplo acima para criar funções de múltiplos de
- 500ms ou 0,5s
- 1s
Elas podem ser testadas utilizando o osciloscópio do simulador
____________________________________________________________________
____________________________________________________________________
2. Temporização simples
Construir um programa em linguagem C para o PIC18F4550, para fazer um led piscar em D0 com tempo de 1s ligado e 2 segundos desligado. Utilize as funções de atraso presentes na biblioteca xc.h
3. Indicativo de garagem
Construir um programa em linguagem C para o PIC18F4550 para acionar 2 saídas (D2 e D3) de forma que:
- D2 ligada e D3 desligada por 1,5s
- D2 desligada e D3 ligada por 1,5s
____________________________________________________________________
Nenhum comentário:
Postar um comentário