Ir ao conteúdo
  • Cadastre-se

Acionamento de leds com PIC 16F883


Posts recomendados

Boa Noite, desenvolvi um código para quando determinado botão for acionado os LEDS ligados ao PORTB serão acionados de uma sequencia diferente.. o codigo compila e funciona quando gravado no PIC, porém ao desligar a alimentação e ligar novamente o programa foi apagado e não funciona mais nada... Só resolve regravando e assim vai... O que poderia ser ? Segue programa comentado..

 

#define B1 RA3_bit
#define B2 RA4_bit
#define B3 RA5_bit
#define B4 RE3_bit
#define LED1 RB0_bit
#define LED2 RB1_bit
#define LED3 RB2_bit
#define LED4 RB3_bit
#define LED5 RB4_bit
#define LED6 RB5_bit
#define LED7 RB6_bit
#define LED8 RB7_bit

void interrupt ()                             // função de interrupção
{
 if (T0IF_bit)                                // Testa Flag estouro TMR0
 {
  T0IF_bit = 0x00;                            // Limpa flag
  TMR0     = 0x69;                            // Reenicia TMR0

  if (B1 == 0)                                // Se B1 for pressionado segue a sequencia de funcionamento
  {                                           // dos leds
   Delay_us (40);
   LED8   = 1;
   Delay_ms(100);
   LED7   = 1;
   Delay_ms(100);
   LED6   = 1;
   Delay_ms(100);
   LED5   = 1;
   Delay_ms(100);
   LED4   = 1;
   Delay_ms(100);
   LED3   = 1;
   Delay_ms(100);
   LED2   = 1;
   Delay_ms(100);
   LED1   = 1;
   Delay_ms(100);
   PORTB  = 0x00;
   }
     if (B2 == 0)                             // Se B2 foi pressionado segue sequencia
  {                                           // de funcionamento dos leds
   Delay_us (40);
   LED1   = 1;
   Delay_ms(100);
   LED2   = 1;
   Delay_ms(100);
   LED3   = 1;
   Delay_ms(100);
   LED4   = 1;
   Delay_ms(100);
   LED5   = 1;
   Delay_ms(100);
   LED6   = 1;
   Delay_ms(100);
   LED7   = 1;
   Delay_ms(100);
   LED8   = 1;
   Delay_ms(100);
   PORTB  = 0x00;
   }
        if (B3 == 0)                         // Se B3 foi pressionado segue a sequencia
  {                                          // de funcionamento dos leds
   Delay_us (40);
   LED5   = 1;
   Delay_ms(100);
   LED4  = 1;
   Delay_ms(100);
   LED6   = 1;
   Delay_ms(100);
   LED3   = 1;
   Delay_ms(100);
   LED7   = 1;
   Delay_ms(100);
   LED2   = 1;
   Delay_ms(100);
   LED8   = 1;
   Delay_ms(100);
   LED1   = 1;
   Delay_ms(100);
   PORTB  = 0x00;
   }
       if (B4 == 0)                        // Se B4 foi pressionado segue sequencia
 {                                         // de funcionamento dos leds
 PORTB = 0xFF;
 Delay_ms(500);
 PORTB = 0x00;
 Delay_ms(500);
 }

 else  PORTB = 0x00;

 }
}


void main()
{
OPTION_REG    =  0b00001110;                    // TMR0, Prescaller 1:128
GIE_bit       =  0x01;                          // Habilita interrupção geral
PEIE_bit      =  0x01;                          // Habilita interrupção por perifericos internos
T0IE_bit      =  0x01;                          // Habilita interrupção por estouro TMR0
TMR0          =  0x69;                          // Inicia TMR0 para contagem de 150 (tempo de estouro 20ms)
ANSEL         =  0x00;                          // todas como pinos digitais
ANSELH        =  0x00;                          // todos como pinos digitais
TRISB         =  0x00;
TRISA         =  0b00111000;
TRISE.RE3     =  0x01;
TRISC.RC3     =  0x00;
PORTA         =  0b00111000;
PORTB         =  0x00;
RC3_bit       =  0x01;
RE3_bit       =  0x01;


while (1)
{
  PORTB = 0xFF;                               // enquanto nada acontece todos os LEDS ficam acesos
}
}

 

adicionado 1 minuto depois

Segue os fusesbits 

fuses.png

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...