21 Ocak 2021 Perşembe

Timer0 Timer1 Timer2 ADC Comparator Hepsi bir arada örnek uygulama

 Timer0 Timer1 Timer2 ADC Comparator Hepsi bir arada örnek uygulama.

timer0 zamanlayıcı , timer bir sayıcı, timer2 sabit frekans zamanlayıcı 133ms olarak sabitlendi

analog giriş ile voltaj ölçümü. Comparator iler 2.81 volt çıkışa ayarlandı.

#include<16f877a.h>

#device ADC=10

#fuses xt,nowdt,nodebug,nolvp

#use delay(clock=4m)

#define use_portd_lcd TRUE

#include <lcd.c> 

unsigned long int data; 

float voltaj;

int sayi,sure,kesme;


#int_timer0

void timer0_sure()

{

set_timer0(60);

sure++;

if(sure==40)

output_high(pin_b3);


if(sure==80)

{

output_low(pin_b3);

}

}


#int_timer1

void timer1_kesme()

{

set_timer1(65528);

sayi++;

setup_timer_0(rtcc_internal | rtcc_div_256);

if(sayi==255)

sayi=0;

}


#int_timer2

void timer2_kesme()

{

kesme++;

output_toggle(pin_b4);

}


void main()

{

set_tris_a(0xf0);

set_tris_e(0xff);

set_tris_c(0xff);

set_tris_b(0x00);


output_b(0x00);

output_c(0xff);

output_a(0x00);


setup_adc(adc_clock_div_32);

setup_adc_ports(all_analog);

setup_comparator(A0_A3_A1_A3);

setup_vref(VREF_A2 | VREF_HIGH | 10.8);


setup_timer_2(T2_DIV_BY_16,255,16);//(mod, periyod, postscale)

enable_interrupts(int_timer2);

enable_interrupts(int_timer0);

enable_interrupts(int_comp);

set_timer0(60);


setup_timer_1(t1_external | t1_div_by_2);

enable_interrupts(int_timer1);

enable_interrupts(global);

set_timer1(65528);

lcd_init();


while(true)

{

set_adc_channel(5); 

data=read_adc();

voltaj=(data * 0.004888);

printf(lcd_putc,"\f\nGerilim: %.2f",voltaj);

delay_ms(500);

}

}





Hiç yorum yok:

Yorum Gönder

Her yorum bilgidir. Araştırmaya devam...