Ir ao conteúdo
  • Cadastre-se

Como fazer uma interrupção externa no PIC16F688?


Posts recomendados

Estou com um problema ao tentar fazer uma interrupção externa no PIC16F688, segue o codigo:

 

bit control;

void interrupt()
{
   if(INTF_bit)
   {
       control = ~control;
       INTF_bit = 0x00;
       
       if(control) RC1_bit = 0x01;
       else RC1_bit = 0x00;
   }
}

void main() 
{
   CMCON0 = 0x00;
   CMCON1 = 0x00;
   
   INTCON = 0b11010000;
   
   INTEDG_bit = 0x00;
   
   TRISA = 0b00000100;
   TRISC = 0x00;
   PORTA = 0b00000100;
   PORTC = 0x00;
   
   control = 0x00;
   
   while(1)
   {
      RC0_bit = 0x01;
      delay_ms (2000);
      RC0_bit = 0x00;
      delay_ms (2000);
   }
}

 

Tentei simular no Proteus mas não funcionou. A ideia é um led acender e apagar com delay de 2 segundos e ao aperta o botão que esta no pino RA2/INT ele deveria acender o segundo led e ao pressionar novamente apagar-lo. porém não funciona o cogido para o PIC16F688, mas para o PIC16F648 funcionou direito.

Link para o comentário
Compartilhar em outros sites

Depois de ler mais a fundo o datasheet descobri que é necessário configurar as flags do registrado ANSEL para 0x00. O código fica assim:

 

bit control;

 

void interrupt()
{
   if(INTF_bit)
   {
       control = ~control;
       INTF_bit = 0x00;

       if(control) RC1_bit = 0x01;
       else RC1_bit = 0x00;
   }
}

 

void main()
{
   CMCON0 = 0x07;
   ANSEL = 0x00;

 

   GIE_bit = 0x01;
   INTE_bit = 0x01;
   INTEDG_bit = 0x00;

 

   TRISA = 0b00000100;
   TRISC = 0b00000000;


   PORTA = 0b00000100;
   PORTC = 0b00000000;

 

   control = 0x00;

 

   while(1)
   {
      RC0_bit = 0x01;
      delay_ms (2000);
      RC0_bit = 0x00;
      delay_ms (2000);
   }
}

 

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!