#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=20000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
int i=0; // Tamsayı tipinde değişken tanımlanıyor
int a=0;
#int_timer2
void timer2_( )
{
while(input(pin_a0))
{
delay_ms(20);
for(i=255;i>100;i--)
{
delay_ms(20);
set_pwm1_duty(i);
set_pwm2_duty(0);
}
set_pwm1_duty(0);
delay_ms(500);
if (i==100)
for (i=255;i>100;i--)
{
delay_ms(20);
set_pwm2_duty(i);
set_pwm1_duty(0);
}
output_a(0);
set_pwm2_duty(0);
}
}
void main ( )
{
setup_spi(SPI_SS_DISABLED); // SPI birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı...burda bir komut vardı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
enable_interrupts(INT_timer2);
enable_interrupts(GLOBAL);
setup_ccp1(CCP_PWM); // CCP1 birimi PWM çıkışı için ayarlandı
setup_timer_2(T2_DIV_BY_16,255,1); // Timer2 ayarları yapılıyor
setup_ccp2(CCP_PWM); // CCP1 birimi PWM çıkışı için ayarlandı
set_pwm1_duty(i); // PWM1 çıkışı görev saykılı belirleniyo
set_pwm2_duty(i);
while(1)
{ }
}