PIC PROGRAMLAMA SORUNU

Başlatan conqueror3, 28 Şubat 2009, 20:32:57

conqueror3

Arkadaşlar merhabalar.

Ben sıvı seviye ölçümü ile ilgili bir proje yapıyorum. Seviye ölçümü için 5V DC gerilimin + ucunu kabın dibine kablo ile veriyorum. Sonra yükseklikleri farklı 5 noktadan bu gerilimi okuyarak anahtarlama yapıyorum. Böylelikle LCD ekrana seviyeyi yazdırmak istiyorum. Örneğin seviye ilk tele ulaştığında A1 pini tetiklenecek, bir üst sevieye ulaştığında hem A1 hemde A2 tetiklenecek, bir üstteki seviyeye ulaştığında A1,A2 ve A3 beraber tetiklenecek. Bu şekilde bir sistem olucak.



Ancak kodlamada biraz sorun yaşıyorum. Aşağıdaki gibi bir kod düşündüm ama bu sefer hiç bir pin tetiklenmese bile ekranda "Yüzde 20 Dolu" yazısı görünüyor. Ama hiç bir pin tetiklenmiyorsa "Depo Boş" yazmasını istiyorum.



#include <16f877A.h>
#fuses XT,NOWDT,NOPROTECT,BROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use fast_io(b)
#include <lcd.c>

void main()
{
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);

set_tris_d (0x00);
set_tris_a (0xFF);

lcd_init();

while(1)
{

if(PIN_A1==0)
{
printf(lcd_putc, "\f Depo Bos");
delay_ms(1000);
}

else if(PIN_A1==1)
{
printf(lcd_putc, "\f Yuzde 20 Dolu");
delay_ms(1000);
}

else if (PIN_A1==1 & PIN_A2==1)
{
printf(lcd_putc, "\f Yuzde 40 Dolu");
delay_ms(1000);
}

else if (PIN_A1==1 & PIN_A2==1 & PIN_A3==1)
{
printf(lcd_putc, "\f Yuzde 60 Dolu");
delay_ms(1000);
}
}
}



if(PIN_A1==0) kısmını eklersem ekranda hiç yazı görünmüyor, o kısmı silersem bu sefer ekranda sadece "Yüzde 20 Dolu" yazısı yazıyor, diğer pinleri tetiklememe rağmen yüzde 40 yüzde 60 falan yazmıyor.

Ayrıca Yüzde ibaresini " % " şeklinde yazdığımda hata veriyor. O ifadeyi ekranda nasıl yazdırabilirim?

Kodlamada nasıl bir sorun var çözemedim. Tecrübeli arkadaşlar yardımcı olursanız çok sevinirim :(

conqueror3

Arkadaşlar sorunu çözdüm teşekkür ederim. Bu konuyu silme imkanım yok mu acaba ? :S

hasanaliyuruk

Merhabalar akrdeş.sorunu nasıl çözdün??
& veya
&& ve
demek diye hatırlıyorum ama bu şekilde mi çözdün??
Bide sistemi kurdun ii çalışıyor mu sonuçta suyun iletkenliği her zman iyi olmayabilir..a

conqueror3

Değer okutmak istediğimde input_A(); komutunu kullanmam gerekiyor. O komut ile port A nın sayısal değerini bir değişkene attım ve değişkenin durumlarını if ile kontrol ettirdim.

Printf variable count (%) does not match actual count

The number of % format indicators in the printf does not match the actual number of variables that follow. Remember in order to print a single %, you must use %%.


CCS de böyle diyor yani çift %% kullanmak gerekiyomuş =)