#include <16f877.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000) //4 Mhz osilatör hızı
#include <benim_LCD.c>
#define use_portb_lcd TRUE
#byte portc = 0X07
#byte porte = 0x0F //porta tanımlaması
void pwm(void);
#INT_AD
float voltaj=15; // ondalıklı tipte voltaj isminde değişken tanıtılıyor
unsigned long int bilgi; // İşaretsiz 16 bitlik tam sayı tipinde değişken tanımlanıyor
long ADCValue=0;
long ADCValueOld=1;
void main()
{
for(;;)
{
pwm:
if(input(pin_c0==1));
goto lcd
////////////////////// PWM FONKSİYONU ////////////////
void pwm(void)
{
setup_ccp1(ccp_pwm); //Yakalama modu PWM olarak ayarlandı.
setup_timer_2(t2_div_by_16, 255,1); //PWM ferakansı ayarlandı
setup_adc(adc_clock_internal);
set_adc_channel(5);
while(true)
{
voltaj=read_adc();
set_pwm1_duty(voltaj);
}
ADCValue = Read_ADC();
delay_ms(100); // monitor 10 times a second
if ( ADCValue != ADCValueOld )
{
set_pwm1_duty(ADCValue);
ADCValueOld = ADCValue;
}
}
lcd:
/////////////////////////////* lcd**///////////////////
set_tris_e(0x0F); // E portu komple giriş
setup_adc_ports(ALL_ANALOG);
setup_adc(adc_clock_div_32); // ADC clock frekansı fosc/32
lcd_hazirla(); // LCD başlangıç ayarları yaptırılıyor
imlec(1,1); // İmlec 1.satır 1.sütunda
printf(lcd_veri "\fADC_UYGULAMASI"); // LCD'ye yazı yazdırılıyor
delay_ms(1500);
lcd_komut(0x01); // LCD sıfırlanıyor
set_adc_channel(5); // RE0/AN5 ucundaki sinyal A/D işlemine tabi tutulacak
delay_us(20); // Kanal seçiminde sonra bu bekleme süresi verilmelidir
bilgi=read_adc(); // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
voltaj=0.0048828125*bilgi; // Dijitale çevirme işlemine uğrayan sinyalin gerilimi hesaplanıyo
imlec(1,1); // İmlec 1.satır 1.sütunda
printf(lcd_veri,"fAN5_Kanali"); // LCD'ye veri
delay_ms(1000);
imlec(2,4); // İmlec 2.satır 4.sütunda
printf(lcd_veri "\nVoltaj=%fV"voltaj);
imlec(2,4);
delay_ms(1000);
printf(lcd_veri,"\fDijital=%lu"bilgi); // LCD'ye veri yazdırılıyor
delay_ms(1000);
lcd_komut(0x01); // LCD sıfırlanıyor
lcd_komut(0x0E); // İmleç alt çizgi modunda
imlec(1,5); // İmlec 1.satır 5.sütunda
printf(lcd_veri,"x");delay_ms(500);
printf(lcd_veri,"x");delay_ms(500);
printf(lcd_veri,"x");delay_ms(500);
printf(lcd_veri,"x");delay_ms(500);
printf(lcd_veri,"x");delay_ms(500);
printf(lcd_veri," ");
printf(lcd_veri,"x");delay_ms(500);
printf(lcd_veri,"x");delay_ms(500);
printf(lcd_veri,"x");delay_ms(500);
printf(lcd_veri,"x");delay_ms(500);
printf(lcd_veri,"x");delay_ms(500);
printf(lcd_veri,"x"),delay_ms(500);
lcd_komut(0x01); // LCD sıfırlanıyor
delay_ms(1000);
if (input(voltaj) == 1);
goto pwm;
}
}
main icinde fonksiyon blogu olmaz :lol:
ağzına sağlık arkadaş başka dikkat etmem gereken yer varmı.