Byte Dizisini LCD ye sayı şeklinde yazdırmak?

Başlatan ertan2002, 04 Temmuz 2012, 19:20:07

ertan2002

Selam,

bir yerde çok küçük hata yapıyorum ama yapamadım nedens..

byte tmpsayi[4];

tmpsayi[0]= input(pin_b1);
 tmpsayi[1]= input(pin_b2);
 tmpsayi[2]= input(pin_b3);
 tmpsayi[3]= input(pin_b4);


printf(lcd_putc, "%d%d%d%d", tmpsayi[3],tmpsayi[2],tmpsayi[1],tmpsayi[0]); //bu şekilde 4 bitlik veriyi yazdırabiliyorum!!!


benim istediğim bu 4 bitin değerini ekrana yazdırtmak..

printf(lcd_putc, tmpsayi); bu ve bunun gibi bir çok şekilde denedim yemedi. bunu nasıl ondalık sayıya çevireceğiz acaba?
Mesela 0010 verisini 2 olarak lcd ye yazdıramadım bi türlü.. 

teşekkürler

pea

Bu haliyle ekrana 4 değişken yazdırılıyor.Hepsini birleştirip tek değişken haline getirmek için bir şey yapmamışsınız.
B portunu okuyup , gelen Byte'ı kaydırarak ya da tüm bitleri 2^n ile çarpıp toplayarak istediğiniz sayıyı elde edebilirsiniz.

ertan2002

#2
2^n li hesaplamayı biliyorum ama döngü kullanmak istemedim.. bit kaydırmayı yapamadım farklı sonuçlar elde ettim hep..


mesaj birleştirme:: 05 Temmuz 2012, 00:30:24

zor oldu ama sorunu  çözdüm :)

dizim burada

const char Tuslar[] = { 1,2,3,0,
                        4,5,6,0
                        7,8,9,0,
                        0,0,0,0};


bu da b portunda bit kaydırmayla elde ettiğim değer  b0 ı kesme olarak kullandım. b1-b2-b3-b4 de de 74c922 deki A-B-C-D ye bağladım. b portnu okutup bitleri önce 3 e sağa kaydırdım sonra 4 sola e kaydırdım çünkü b0 kesme olduğu için onun bilgisi gerekli değil bana.

belki farklı bir yolu vardır ama bu şekilde hallettim, ilgin için sağolasın

printf(lcd_putc,"%d",(Tuslar[((input_b()<<3)>>4)])) ;