Ir ao conteúdo
  • Cadastre-se

DouglasWDR

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. olá pessoal Eu estou com um problema, sou iniciante e estou tentando resolver o seguinte problema: - O programa inverte o estado de RD0 a cada 500ms. - A porta RD1 deve ter seu estado invertido de acordo uma variável global "tempo". - Quando houver uma interrupção externa em INT1, que é de alta prioridade, RD2 recebe 1 e a variável "tempo" recebe um valor que reverte RD1 a cada 200ms. - Quando houver uma interrupção externa em INT2, que é de baixa prioridade, RD2 recebe 0 e a variável "tempo" recebe um valor que reverte RD1 a cada 1s. Segue meu código unsigned tempo; short conta = 1; void interrupt(){ if(TMR0IF_bit){ TMR0IF_bit = 0; TMR0L = 0x2C; TMR0H = 0Xcf; conta++; if(INT1IF_bit){ INT1IF_bit = 0; RD2_bit = 1; tempo = 0; if ((!tempo)&&(conta == 40)){ RD1_bit = ~RD1_bit; conta = 0; } } } } void interrupt_low(){ if (INT2IF_bit){ INT2IF_bit = 0; RD2_bit = 0; tempo = 1; if ((tempo) && (conta == 200)){ RD1_bit = ~RD1_bit; } } } void main() { TRISB = 0xff; TRISD = 0x00; PORTB = 0xff; PORTD = 0xff; RBPU_bit = 0; ADCON1 = 0x0f; IPEN_bit = 1; GIE_bit = 1; PEIE_bit = 1; INT1IE_bit = 1; INT2IE_bit = 1; INT1IP_bit = 1; INT2IP_bit = 0; TMR0IP_bit = 1; INTEDG1_bit = 0; INTEDG2_bit = 0; T0CON = 0x80; TMR0IE_bit = 1; TMR0L = 0x2C; TMR0H = 0Xcf; while(1){ RD0_bit = ~RD0_bit; delay_ms(500); } } Alguém poderia me dar uma ajuda?

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