Ir ao conteúdo
  • Cadastre-se

PIC Interrupção com PIC 16F877A


Posts recomendados

Como que eu faço para acionar 3 display com frequência 90Hz, 70Hz e 150Hz usando interrupção no PIC 16F877A ? 

Alguém poderia ajudar e postar seu código aqui !

 

<Como que eu faço para acionar 3 display com frequência 90Hz, 70Hz e 150Hz usando interrupção no PIC 16F877AAlguém poderia ajudar e postar seu código aqui !>

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Antes mostre o que já fez ou tentou fazer. . também mostre esquemas. desenhos e fotos.

Tenho pronto mas to com preguiça de procurar e montar algo personalizado pra você. A essência é "simples": crie uma tabela com o "desenho" do display, crie uma interrupção com a frequência que deseja, nela incremente um indexador até o número de displays, a cada passagem por ela ponha a tabela indexada na porta e ...

 

Link para o comentário
Compartilhar em outros sites

@1hsouza1 ,

 

A dica já foi dada pela@.if , vou dar um reforço:

Como você não forneceu nenhuma informação adicional, a ideia também vai genérica :

 

Você tem 3 Timers nesse PIC, certo ?

Crie uma interrupção para cada um deles, no período de tempo equivalente a cada uma das frequências , e atualize o display em cada uma delas.

O correto é você apenas sinalizar via Flag para o programa principal fazer as atualizações, porque pode demorar essa atualização de display, e não é bom uma interrupção demorar muito tempo.

 

Paulo

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Eu (eu) não entendi direito a ideia do garoto.. se for algo como freq de varredura, a do Paulão não me parece ser fácil de implementar/entender/sincronizar... se é que entendi direito.

Outra interpretação seria algo como.. o garoto quer identificar 3 freq diferentes e fazer algo com elas no display.. de fato tem gente confusa por aqui e acho que só pode ser eu.. só pode... .😜

  • Haha 1
Link para o comentário
Compartilhar em outros sites

3 horas atrás, .if disse:

Eu (eu) não entendi direito a ideia do garoto.. se for algo como freq de varredura, a do Paulão não me parece ser fácil de implementar/entender/sincronizar... se é que entendi direito.

Outra interpretação seria algo como.. o garoto quer identificar 3 freq diferentes e fazer algo com elas no display.. de fato tem gente confusa por aqui e acho que só pode ser eu.. só pode... .😜

 

Pois é, eu não interpretei como varredura de um display não .... ainda mais que isso me lembra do tempo que o display tinha varredura num tubo de raios catódicos kkkkkkk !

 

E cá entre nós, se isso for um display tipo LCD moderno essa taxa é impossível ....  

 

Bom, pelo que foi dado de informação , as respostas estão excelentes kkk !

 

Paulo

 

Link para o comentário
Compartilhar em outros sites

Em 08/04/2022 às 00:39, 1hsouza1 disse:

Como que eu faço para acionar 3 LEDS com frequência 90Hz, 70Hz e 150Hz usando interrupção no PIC 16F877A ? 

Alguém poderia ajudar e postar seu código aqui !

Minha resolução ficou da seguinte forma, porém não sei se está correto.

CÓDIGO FEITO EM CCS C Compiler

 

#include <16F877A.h>
#FUSES NOWDT
#FUSES HS
#FUSES NOPROTECT
#FUSES NODEBUG
#FUSES NOBROWNOUT
#FUSES NOLVP
#FUSES NOCPD
#FUSES NOWRT
#use delay(crystal = 20MHz)

// PISCAR NAS FREQUENCIAS F1 = 90Hz, F2 = 70Hz e F3 = 150Hz
// FREQUENCIA = 1/T 

unsigned int8 tempo1 = 1000/90, tempo2 = 1000/70, tempo3 = 1000/150;

#INT_RTCC
void  RTCC_isr(void) {
   output_toggle(PIN_B0); //pisca a cada 13.1 ms
   delay_ms(tempo1);
   
   output_toggle(PIN_B1);
   delay_ms(tempo2);
   
   output_toggle(PIN_B2);
   delay_ms(tempo3);
   
}

void main(){
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); //overflow en 13.1 
   
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED, 0, 1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_RTCC); // habilita a chave RTCC
   enable_interrupts(GLOBAL);   // habilita a chave geral

   while(TRUE) ; 

}
 

 

 

 

Em 08/04/2022 às 00:39, 1hsouza1 disse:

 

<Como que eu faço para acionar 3 LEDS com frequência 90Hz, 70Hz e 150Hz usando interrupção no PIC 16F877AAlguém poderia ajudar e postar seu código aqui !>

 

 

image.png

  • Confuso 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!