CCS C alıştırma Turlarım

Başlatan Mucit23, 10 Şubat 2012, 15:29:51

serhat1990

Alıntı yapılan: muhittin_kaplan - 13 Ağustos 2012, 18:51:45
virgülden kurtarır High ve Low byte olarak 2 bayt da saklarım
örnek
35.5*10=355
355=0000000001100011

Birletirme yi yukarda gördük zaten

Hocama katılıyorum.

Mucit23

Arkadaşlar CCS de 8 bitlik bir değişkenin i ninci bitini alıp herhangi bir pine nasıl yazarım.
örnek
Data Adında bir değişken olsun. Ben bu değişkenin 5. bitini Portb nin 0 bitine yazmak istiyorum.

muhittin_kaplan

Datayı Sağa 4 kaydırır (0. bit e denk gelir)
Data=Data>>4
PortB=PortB | (Data & 00000001)

Kolayı varmı bilmiyorum CCS de

(Belkide Yanlıştır Kontrol gerektirir. Oruç Hali)

necati

#48
output_bit(pin_b0,(i,5));

i nin 5 .ci bit i
[email]entegreterbiyecisi@yahoo.com[/email]

Mucit23

Alıntı yapılan: necati - 14 Ağustos 2012, 12:01:30
output_bit(pin_b0,(i,5));

Bende tam bu komutla uğraşıyordum
Pin_b0 ı anladım
i değişkeni de sanırım almak istediğimiz bitin değerini tutuyor. Peki Bu 5 değeri nedir. Neden i ile 5 parantez içerisine alınmış. Bu komutun çalışmasını ve kullanımını anlatabilirmisiniz.

muhittin_kaplan

i değişkeninin 5 inci bitini portb.0 ınıa output yap dır herhalde

Mucit23

çalıştıramadım bir türlü.  :(
Alıntı yapılan: muhittin_kaplan - 14 Ağustos 2012, 12:07:04
i değişkeninin 5 inci bitini portb.0 ınıa output yap dır herhalde
Hocam dediğiniz gibi olmuyor çıkışın 1 olması için herhangi bir bitin bir olması yeterli oluyor.

serhat1990

#52
Biraz karmaşık şu şekilde yapabilirsin. CCS C ' de komutu varmı bilmiyorum .

örnegin 2 degişkenimiz olsun 1'er bytelik. 5 . Bitin durumuna göre ledi yakıp söndürelim  D0 pinindeki.

unsigned char deger=0xAA;
unsigned char islem=0;
int1 lojik=0;

...
...
...

islem=deger&0x20;
if(islem==0)lojik=0;
else lojik=1;
output_bit(pin_d0(lojik));

...
...

Yanlışım varsa düzeltin. Bence bu şekilde istediğin biti alacak  (ve işlemi) ile maskele değişken degeri 0 ise lojik 0 değil ise lojik 1 ' dir.

vitruvius

Alıntı yapılan: Mucit23 - 14 Ağustos 2012, 11:34:13
Arkadaşlar CCS de 8 bitlik bir değişkenin i ninci bitini alıp herhangi bir pine nasıl yazarım.
örnek
Data Adında bir değişken olsun. Ben bu değişkenin 5. bitini Portb nin 0 bitine yazmak istiyorum.

int data=0x35; // Örnek.
int1 y=0;

while(1)
{  
y=bit_test(data,5);
output_bit(pin_b0,y);
}


Hocam bit_test ile bir değişkenin istenen bitinin değerini öğrenirsiniz.

serhat1990

Herşeyin komutuda var ne güzel... :)

vitruvius


Mucit23

#56
Alıntı yapılan: vitruvius - 14 Ağustos 2012, 13:46:44
int data=0x35; // Örnek.
int1 y=0;

while(1)
{  
y=bit_test(data,5);
output_bit(pin_b0,y);
}


Hocam bit_test ile bir değişkenin istenen bitinin değerini öğrenirsiniz.

Teşekkür ederim aradığım buydu.

mesaj birleştirme:: 14 Ağustos 2012, 19:15:54

Birisi çıkıpta arkadaş bukadarda  sorumu olur.Birazda interneti arastir demesinden korkuyorum. Ama inanın sormadan önce bir sürü internette örnek aradim. Mesela bugün 74Hc595 için bir sürü doğru dürüst çalışan kutuphane aradim.Ccs  nin kendi kutuphanesini bile calistiramadimki en son kendi kendime böylesine çalışmasını ve kullanımını iyi bildiğim bir entegre için hazır kod aramak ayıp olur deyip oturup kendim haberleşme için kutuphane yazdım. Ancak bu şekilde çalıştırdım 74Hc595 i...

Her Çıkmaza girdigimde hemen proje ye koşuyorum ama dediğim gibi sormadan öncede bir sürü araştırıyorum. 
Başlıktan da anlaşılacağı üzre bunlar benim alıştırma turlarim. Hızlı ilerliyebilmem için bazı basamaklari 3er 4er atlamam gerekiyor. Bu sırada fazla soru soruyorum ama zamanla sorular azalacak ins:)Bu konuda beni mazur görün.

Bugünlük soru kotamı  doldurmuş olabilirim ama acelesi yok yarında bi çözüm onerisinde bulunsanız olur. Yarın ihtiyacım olacak aklimdayken sormak istiyorum.

8 bitlik bir degiskeni 1 bit sola kaldırırken en soldaki bite  ne oluyor acaba.
Benim amacım solda dışarıda kalan biti alıp başka bir degiskenin sağından vermek.
2 adet kaskat bağlı shift register  içerisinde bilgi nasıl kayiyorsa bende aynısını 2 veya daha fazla değişken arasında yapmam lazım.

Yarın kayan yazı gibi birşey yapmaya çalışacağım .

vitruvius

Mesaj birleştirme özelliği... Anket yakında sonuçlanıyor, gereken yapılır umarım.

<< ile sola kaydırma yapılırsa en soldaki bit yok olur gider. Sağ taraftan 0 gelir. Bunun haricinde kaydırma yapmak için iki adet daha komut vardır. Shift_left ve rotate_left. Sizin aradığınız galiba rotate_left komutu. Serdar Çiçek'in kitabı varsa sayfa 177'de güzel bir örnekle anlatmış, yoksa anlatmaya çalışırım.

Mucit23

#58
Hocam kitap var inceleyeyim. Aklıma takılan olursa sorarım yine. Teşekkürler.

mesaj birleştirme:: 15 Ağustos 2012, 14:47:04

Hocam merhaba Serdar çiçeğin kitabına baktım177. sayfada kesme registerleri anlatılıyor. Eminmisiniz sayfa 177 den?

mesaj birleştirme:: 15 Ağustos 2012, 16:32:20

Oldum olası şu kayan yazılardan nefret ettmişimdir.

Vitruvius yapamadım :(

Boş bir vaktinde anlatırsan sevinirim dediğim mevzuyu...

frkcn

Sanırım aradığın bu

int1 test_bit;
int x=0x81 // binary = 1000 0001
test_bit = shift_left(&;amp;amp;amp;x,1,0)) // test_bit = 1 olur, en solda 1 vardı çünkü

Emrah Aydın'ın sitesinden alıntı
Bugün ömrümün geride kalan son günü...