Picproje Elektronik Sitesi

DERLEYİCİLER => Diğer Derleyiciler => KEIL => Konuyu başlatan: armsistem - 22 Temmuz 2011, 22:15:47

Başlık: keil c,c++ ?
Gönderen: armsistem - 22 Temmuz 2011, 22:15:47
Arkadaşlar selam ; keil ve c konusunda biraz yeniyim aşağıdaki sorular amatörce olabilir kusura bakmayın. Yardımlarınız için şimdiden teşekkür ederim.

- Aşağıdaki kod 'da integer değer tanımladım eşitledim aşağıda ki doğrumudur ?
- Return'da U0RBR da okunan değeri getchar'a mı aktarmaktadır ? (return mantığını çözemedim)


int deger;
deger=getchar();
if (deger=='deneme'){}

int getchar (void) /* Read character from Serial Port */
  {while (!(U0LSR & 0x01))
{return (U0RBR);}}



- Aşağıda 'unsigned char' ile aynı şeyi yaptım yukarıdakinden farkı varmıdır. 



unsigned char deger;
deger=getchar();
if (deger=='deneme'){}

unsigned char getchar (void) /* Read character from Serial Port */
  {while (!(U0LSR & 0x01))
{return (U0RBR);}}



- Return deyimini okudum fakat pek anlayamadın return(0) , return(1) , veya true , false nedir bu işin tam mantığı ?
Başlık: Ynt: keil c,c++ ?
Gönderen: yamak - 22 Temmuz 2011, 22:59:58
Eğer denemeden kasttediğiniz 8 bitlik bir veri ise yazdığınız doğru returnde de bişey yok fonkisyonun içindeki istenile değeri döndürür.yani o fonksiyonu okuduğunuzda return ile döndürülen değer okunur.
Başlık: Ynt: keil c,c++ ?
Gönderen: armsistem - 22 Temmuz 2011, 23:38:10
'yamak' cevapladığın için teşekkür ederim. Evet 8 bitlik veri datasheet 8 bit okuma gösteriyor ama int ve char arasındaki farkı söylermisin (hangisi dogru)
Başlık: Ynt: keil c,c++ ?
Gönderen: muuzoo - 23 Temmuz 2011, 00:16:57
Alıntı yapılan: armsistem - 22 Temmuz 2011, 23:38:10
'yamak' cevapladığın için teşekkür ederim. Evet 8 bitlik veri datasheet 8 bit okuma gösteriyor ama int ve char arasındaki farkı söylermisin (hangisi dogru)

Merhaba. Yanlış anlamayın ama sanırım siz sanırım bu dili hiç incelememişsiniz. Çünkü sorduğunuz sorudan şunu anlıyorum, yanlışsam lütfen düzeltin; "int" ve "char" ifadelerinin hangisinin doğru olduğunu sormanız c dili hakkında başlangıç seviyesinde de olsa bir şeyler okumadığınızı düşündürttü bana. Kod yazmadan önce internette bulacağınız c dili ile alakalı herhangi bir başlangıç seviyesinde yazı okursanız daha rahat edersiniz.

Gelelim sorunuzun cevabına "char" tanımlaması 8 bitlik data biçimine tekabül eder. char biçiminde tanımladığınız bir değişkene 255 değerinden daha büyük değer atanamaz.int ise genelde 2 byte uzunluğunda bir değişkene tekabül eder. Aslında ayrıntılı tablo için şu adresi gözden geçirebilirsiniz:

http://en.wikipedia.org/wiki/C_variable_types_and_declarations

Hangisi doğru sonucuna gelirsek, uart üzerinden gelen veriler byte olarak iletildiği için char biçiminde bir değişken kullanmak daha mantıkıdır, int tipinde bir değişken kullandığınızda ise hafıza üzerinde gereksiz kullanım yapmış olursunuz.
Başlık: Ynt: keil c,c++ ?
Gönderen: yamak - 23 Temmuz 2011, 00:36:05
@muuzoo nunu dediği doğru int 1 byte tan fazla yer kaplar ama uint8_t,uint32_t,uint16_t gibi ifadeler kullanarak istediğin boyutta yer ayırabilirsin örneiğin uint8_t data; gibi.ve char kullanmak istiyosanda unsigned char kullan çünkü uart uygulamalarında uarttan negatif değer gelmeyeceği için undigned char kullanılır.