{CCS C} pic12f675 ile pull up buton sinyalini yakalamak???

abt

Üye
Katılım
8 Ocak 2008
Mesajlar
23
Puanları
1
herkeze merhaba,pic12f675 üzerinde a5 pinine yolladığım yaklaşık 1sn süren negatif sinyale göre işlem yapmak istiyorum ancak denemediğim ne if sorguları kaldı nede sonsuz döngüler yardımınıza muhtacım lünfen yardım yapmak istediğim a5 pinine negatif sinyal gelince a0 pininin çıkışını high yapmak sürekli hatalarla karşılaşıyorum kullandığım bazı if sorguları şöyle ancak hiçbir işe yaramıyorlar

1-
if(input_state(pin_a5)==0) // ne 0 ne de 1 fayda etmedi
{
output_high(pin_a2);
delay_ms(100);
output_low(pin_a2);

2-
int but = input(PIN_A5);
while (input(PIN_A5) != but) {
output_high(pin_a4);
delay_ms(500);
output_low(pin_a4);
}


bunlar böyle uzar gider portları ayarlamak içinde;
output_drive(pin_a0);//çıkış
output_drive(pin_a2);
output_float(pin_a5);//giriş
kullandım ben daha tris olayını çözemedim sümüle ettiğim basit devre çizimimde ektedir
 

Ekli dosyalar

  • isisdevre.PNG
    54.2 KB · Görüntüleme: 18
1-
if(input_state(pin_a5)==0) // ne 0 ne de 1 fayda etmedi
{
output_high(pin_a2);
delay_ms(100);
output_low(pin_a2);

2-
int but = input(PIN_A5);
while (input(PIN_A5) != but) {
output_high(pin_a4);
delay_ms(500);
output_low(pin_a4);
}


input_state() ile pinin giriş/çıkış yönlendirme bitinin (tris) o anki değerini alırsın.
Sorguyu "if(input(pin_a5)==0)" veya kısaca "if(!input(pin_a5))" şeklinde yapmalısın.


Ek olarak CCS'te input(pin_x) veya output_high(pin_x) gibi komutları kullandığında portlar otomatikman gerektiği şekilde giriş ve çıkış olarak ayarlanır, ayrıca tris bitlerinden ayarlaman gerekmez.
(Tris bitlerini manuel olarak ayarlamak için #use fast_io(port ismi) şeklinde bir tanımlama yapman gerekir ki şu an sanırım buna ihtiyaç yok.)

Sonuç olarak şu kodun çalışması lazım:

if(!input(pin_a5)){
output_high(pin_a2);
delay_ms(100);
output_low(pin_a2);}

Başarılar dilerim
 
proteus 8 ve 7 de denedim kodu diğerleri gibi buda çalışmadı :/
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…