Merhaba Arkadaşlar harici interrupt içerisinde zaman kaybını önlemek için her kesme oluştuğunda buzzerı bir defa açıp kapatma işlemini nasıl yapabilirim ? açıp kapatma işlemi arasındaki delay fonksiyonunu göz önünde bulundurarak Saygılar.
interrupt içerisinde bir değişkene bip süresini girersin.buzzeri aktif edersin.ana döngü içerisinde bu değişkeni değeri sıfırdan farklıysa azaltırsın.değişken değeri 0 olunca buzzeri durdurursun. tekrar kesme gelene kadar değişken değeri sıfır olacağı için buzzer hep susar.
@serdararikan hocam delay fonksiyonum sabit bir değer olacak konuda tam ifade edemedim galiba sadece bip işlemi yapacağım
Sabit olması bir şeyi değiştirmez,
@serdararikan ın dediği gibi yapabilirsin.
__harici_kesme()
{
bip_durumu_ve_suresi = 100;
diğer işlemler...
...
...
}
.
.
.
ana döngü
main()
{
..
..
işlemler
..
..
if(bip_durumu_ve_suresi != 0)
{
LATx.X = 1; //buzzer aktif
bip_durumu_ve_suresi--; //bip süresi
delay-ms(1);
}
else()
LATx.X = 0; //buzzer pasif
}
İstersen bip ____ bip ____ bip vs. de yaptırabilirsin,
veya bip kontrol işini timer ve timer kesmesi kurup
mainden tamamen bağımsız halede getirebilirsin.
Teşekkürler
dikkat!! interrup kesman beep surenden daha kisa olursa beep in surekli calabilir.