ccs te lcd'ye binary değer yazdırma

Başlatan madpic, 10 Temmuz 2007, 18:09:27

madpic

Herkese merabalar.
ccs e yeni başladım! bazı konularda takılıyorum.
mesela bir değeri binary olarak yazdıramıyorum.
lu deyince değeri desimal olarak
lx deyince hex olarak görüyorum fakat benim istediğim değeri binary olarak görmek.
Formu dolaştım hatta ccs forumada baktım bir iki şey buldum ama olmuyor .
yardımcı olursanız sevinirim.

M_B

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

CaFFeiNe

@madpic

printf komutunun format ayarlamalarında binary basmak için bir ayar yok
ama kendin bir fonksiyon yazarak işini halledebilirsin

mesela elinde 0b10101101 (decimal 173) gibi bir değer olsun bunu 8bit olduğu için 8 e kadar sayan bir döngü yaparsın her seferinde shift_left() yada shift_right() yaparsın dönen değere göre ekrana 0 yada 1 basarsın

CaFFeiNe


madpic

herkese teşekkürler bayaa bi uğraş ve araştırmadan sonra bunu yaptım acemilik zor iş.

hane: kac digit görüntülemek istediğimiz
data : görüntülemek istediğimiz değer

kod ise
/////////////////////////////////////////////////////
/////    desimal değeri verilen bir sayıyı  /////////
/////        binary olarak lcd ye yazar     /////////
/////    Mehmet ÇELEBİ    11/07/2007        /////////
/////////////////////////////////////////////////////


int16 gec=0;
void dectobin(int8 hane, int16 data)
{
   hane=hane-1;
   bit_set(gec,hane);
   while(gec)
   {
    if(gec&(data))printf(lcd_putc,"1");
    else printf(lcd_putc,"0");
    gec=gec>>1;
   }
}


bu kodu driver klasörünün içine dectobin.c olarak attım
kullanımı ise programın başında programa dalil ediyorum


.
.
#include <dectobin.C>
.
.
int16 a=0;
.
.
        dectobin (15,a); 
.
.
.


a nın değerini binary olarak 15 haneli biçimde lcd ye yazıyor.
(pbp kullandığımdan ona benzetmek istedim herhalde.)
acaba şimdi bu kodu direk programın içine nasıl gömebilirim.

ferdem

//ferdem
Kısaca:

unsigned a=0b1000000, veri=0b10101010;
int i;
for(i=0;i<=7;i++,a/=2){
printf(lcd_putc,"%d",(a&veri));
}

Düzeltme: (a&veri)!=0 yerine (a&veri) :)