Ir ao conteúdo
  • Cadastre-se

programação de PIC 16F628A


Posts recomendados

Boa tarde,

 

Estou iniciando meus estudos na área de microcontroladores, e preciso de uma ajuda de vocês,

Estou usando o compilador MIkroC e tentei fazer um LED piscar, porém só funciona no proteus. Gravei no chip através do PICKIT2 o arquivo hexa, e não vi efeito.

 

segue abaixo o software escrito para critica de V.S.as. se puderem me ajudar agradeço. (OBS já alterei os tempos e mesmo assim, não funcionou).

 


unsigned int timerStart = 1;            //flag de inicio de tempo
unsigned int count = 0;                 //flag de  contagem

 
void interrupt ()
{
     if(T0IF_bit)                       // flag de estouro de 256 contagens
     {
     count++;                           //variavel de controle de contagem
     T0IF_bit = 1;                      //terminando a contagem, limpa flag de estouro
     }
}

void configura_timer()
{

    
     OPTION_REG = 0x87;                 // conigura prescaler:1/256
     INTCON.GIE = 0x01;                 // habilita interrupções globais
     INTCON.PEIE = 0x01;                // habilita interrupções de periféricos
     INTCON.T0IE = 0x01;                // habilita interrupção por timer

     

}

void main() {
TRISA = 0x00;                           // configura o pot A como output
PORTA = 0x00;                           // inicia todos os pinos em low

configura_timer();

while (1)
{
      if (count == 500)                 // quando a contagem chegar em 500
      {
      RA0_bit = ~RA0_bit;               // inverte estado do pino
      count = 0;                        // inicia contador em 0 para nova contagem

      }
}

}

 

Link para o comentário
Compartilhar em outros sites

Caro colega,

Primeiramente faltou você colocar algumas informações, tipo: valor do cristal, temporização desejada, etc., mas,  já posso adiantar que você cometeu alguns erros no seu código. Tentei dar uma arrumada. Veja se dá certo e poste mais informações sobre o que quer fazer.

//declaração de variáveis
unsigned int timerStart = 1;            //flag de inicio de tempo
unsigned int count = 0;                 //flag de  contagem
//protótipo de função
void configura_timer();

//interrupção
void interrupt ()
{
     if(T0IF_bit)                       // flag de estouro de 256 contagens
     {
       count++;                         //variavel de controle de contagem

      if (count == 500)                 // quando a contagem chegar em 500
      {
      T0IF_bit = 0;                      //terminando a contagem, limpa flag de estouro
      count = 0;                        // inicia contador em 0 para nova contagem
      RA0_bit = ~RA0_bit;               // inverte estado do pino
      }
     }
}

void main() {
TRISA = 0x00;                           // configura o pot A como output
PORTA = 0x00;                           // inicia todos os pinos em low
configura_timer();
while (1)  {}
}
//função
void configura_timer()
{

     OPTION_REG = 0x87;                 // conigura prescaler:1/256
     INTCON.GIE = 0x01;                 // habilita interrupções globais
     INTCON.PEIE = 0x01;                // habilita interrupções de periféricos
     INTCON.T0IE = 0x01;                // habilita interrupção por timer
}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!