Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

keil c,c++ ?

Başlatan armsistem, 22 Temmuz 2011, 22:15:47

armsistem

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ığı ?

yamak

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.

armsistem

'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)

muuzoo

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.
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

yamak

@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.