quarta-feira, 8 de setembro de 2010

Pisca led usando o timer 0

//****************************************************************************************************************************************************
// pisca a cada 1s
//
// Data: 22/10/2007
// Autores: Aguivone
// Descrição: utiliza timer0 para fazer um led piscar a cada 30s
//
//****************************************************************************************************************************************************

#include <16F628A.h>
#fuses NOWDT,XT,PUT, NOPROTECT,NOBROWNOUT, NOLVP, NOCPD,NOMCLR
#use delay(clock=4M)

#int_timer0
void trata_t0 ()//note que a frequencia de cada interrupção é 1,56hz=0,064s cada interrupção(aproximadamente)
{
static boolean led;
static long int conta;
// reinicia o timer0 em 6 mais a contagem que já passou
set_timer0(6+get_timer0());
conta++;
// se já ocorreram 15 interrupções = 30s(aproximadamente (15,6 int.))
if (conta == 15)
{
conta=0;
led = !led; // inverte o led
output_bit (pin_b0,led);
}
}

void main(void)
{
// Configuração do programa
port_b_pullups(TRUE);
set_tris_A(0x00);
set_tris_B(0x02);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);//1mh
set_timer0(6);
enable_interrupts(global|int_timer0);
while(true);//não faz nada e fica esperando interrupção de timer0
}

6 comentários :

  1. não entende essas partes aqui static boolean led;
    static long int conta; e essa outra aqui conta=0;

    carlosfrances7@gmail.com

    ResponderExcluir
  2. Me escrevi no canal youtube , ajuda bastante pra quem nunca pode estudar microcontroladores,vc explica de uma forma mais especifica ,mais a linguagem ccs c é um pouco dificil de entender ,principalmente pra quem é principiante como eu
    tenho duvida sobre essa parte de codigo aqui

    static boolean led;
    static long int conta;
    // reinicia o timer0 em 6 mais a contagem que já passou
    set_timer0(6+get_timer0());
    conta++;
    // se já ocorreram 15 interrupções = 30s(aproximadamente (15,6 int.))
    if (conta == 15)
    {
    conta=0;
    led = !led; // inverte o led
    output_bit (pin_b0,led);
    }

    ResponderExcluir
  3. Olá pessoas, preciso muito que me ajude, como configurar o timer0 do pic 12f1822 para piscar um led na frequencia de um segundo usando CCS Compiler?

    ResponderExcluir

olá,digite aqui seu comentário!