PIC 16F877A Yardım

xxlxxl

Üye
Katılım
22 Ocak 2010
Mesajlar
70
Puanları
0
Yaş
37
while (TRUE) {
if (getchar() == '1')
output_high(PIN_B1);
if (getchar() == '2')
output_low(PIN_B1);
if (getchar() == '3')
output_high(PIN_4);
if (getchar() == '5')
output_low(PIN_B2);

}
}

arkadaşlar yukarıdaki örnek c kodda 1,2,3,4,5 klavyeden bilgi gönderdiğim zaman ledleri yakıp söndüre biliyorum fakat sadece 9 a kadar rakam gire biliyorum ben 10,11,12,13 veya 25 girmek istiyorum 9 led değilde 20 led yakmak istiyorum nasıl yapa bilirim c kodu yardımı olurmusunuz acil bir türlü işin içinden çıkamadım.... şimdiden teşekkür ederim

9 a kadar herşey normal fakat iki haneli giriş yazdığım zaman kabul etmiyor hata

if (getchar() == '5') normal derleniyor
if (getchar() == '12') hata oluşuyor porttan 12 gönderdiğim zaman led yanmıyor
 
if (getchar() == '1')

dedikten sonra başka bir tuşa basılma oluyor mu onu kontrol etmen lazım.yani 1den sonra 2ye basılırsa 12yi öyle algılar.
 
slm ilgin için tşekür ederim sorunum şu 1 ..9 a akdar herşey normal 9 ledi yaka biliyorum fakat 9 dan sonra değşken tanımladığım sonra neden olmuyor 10-11-12 tanımlamak istiyorum lütfen bu konuda birileri yardım etsin
 
kocaman formda buna çare olan çıkmadı tuhaff
 
Kim uğraşacak bu haliyle ?
Güzelce çalışma dosyalarını eklersin, proteus mu ccs mi her ne gerekiyorsa , yardımcı olmak isteyen indirir açar bakar.
Dener varsa bir bildiği olurunu olmazını söyler.
 

Arkadaşım 10 yada 11 i nasıl algılasın bunu senin yapman lazım önce 1'i sonra arkasından gelecek sayıya bakman lazım ama bunu bir süre zarfında yapman gerekiyor mesela 1sn de.1e bastım eğer 1sn içinde başka tuşa basmazsam sayı 1dir.Tekrar 1e bastım ardından 1sn içinde 5e bastım eğer 1sn içinde başka yuşa basmazsam sayı 15tir.
 
örnek yazabilirmisinz yapamadım
 
örnek yazabilirmisinz yapamadım

Sen kodlarını ve devreni burada paylaş çözecez sorununu...Yoksa ne yapmak istediğini herkes anlayamıyor!
Dediğim gibi getchar() ile öyle yapabilirsin fakat @Kazımugur un dediği gibi gets() ile daha kolay olabilir,nedeni 9dan sonra ascii olarak karakter gönderdiği için sana 10 yerine hex A göndermesi,sende bunu getchar ile aldığından olmuyor...


Bu arada kitap burada daha ucuz...
kitapyurdu: kitap - CCS C İle PIC Programlama - Serdar Çiçek, ccs c İle pic programlama, CCS C İLE PIC PROGRAMLAMA90415709,
 
birinci hamle
1 e basıldı
sayı=basılan değer
beklenen sürede ikinci rakama basıldı atıyorum 5
sayı=(basılan değer+(sayı<<4))// 4 bit sola kaydır
ikinci rakamı ekle
ne oldu 0001 0101
beklenen sürede üçüncü rakama basıldı atıyorum 3
sayı=(basılan değer+(sayı<<4))// 4 bit sola kaydır
üçüncü rakamı ekle
ne oldu 0001 0101 0011
bunun gibi
ayrı ayrı yap araya bir süre koy tabi bu benim fikrim.
bu arada bunlar karakter değil bilgin olsun. başka yolla yapacaksın. veya tüm işlem bitince karaktere dönüştüreceksin.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…