Pesquisar neste blog

07/05/2023

Pulso e Frequência com PIC 16F877A

CÓDIGO FEITO EM CCS C Compiler

#include <16F877A.h>
#fuses XT, NOWDT
#use delay(clock = 4MHz)
#include <lcd.c>

int1 nuevoPulso = 0;
int16 inicioPulso = 0, fimPulso = 0, duracaoPulso = 0;
float periodo = 0.0, frequencia = 0.0;

#int_ccp1
void ccp1_int(){
   if (!nuevoPulso){
      inicioPulso = CCP_1;
      nuevoPulso = 1;
   }
   else{
      fimPulso = CCP_1;
      nuevoPulso = 0;
      
      duracaoPulso = fimPulso - inicioPulso;
   }
}

void calcularPeriodoFrequencia(){
   periodo = duracaoPulso * 1.0 / 1000.0;
   frequencia = 1.0 / (periodo / 1000.0);
}

void main(){
   lcd_init();
   setup_timer_1(T1_INTERNAL);
   setup_ccp1(CCP_CAPTURE_RE);
   enable_interrupts(int_ccp1);
   enable_interrupts(global);
   
   while (TRUE){
      if (nuevoPulso){
         calcularPeriodoFrequencia();
         printf(lcd_putc, "\fPulso = %.2f ms\nFreq= %.2f Hz", periodo, frequencia);
         delay_ms(50);
         nuevoPulso = 0;
      }
   }
}

Saída gerada

Nenhum comentário: