XC16'da veri tipi dönüşümü

Başlatan Kabil ATICI, 07 Mayıs 2014, 14:58:42

Kabil ATICI

07 Mayıs 2014, 14:58:42 Son düzenlenme: 07 Mayıs 2014, 14:59:54 ambar7
Pic24 serisine el atınca XC16 başladık. İnterneteki örnek programlar sayesinde bir şekilde ilerleyebiliyoruz. Bir yere kadar. Kesin internette örneği vardır, ama bunu görmek yeni başlayan biri için kolay değil!

Sorum :16 bitlik bir veri nasıl 2 tane 8 bitlik veri haline getirilir?

void TIPDONUS  (unsigned int Veri)
{
  
unsigned char DataL;
  
unsigned char DataH;

//veri tipi dönüşümü nasıl olacak?
YOLLA (DataL);   //RB0...RB7 gönder
YOLLA (DataH);   //RB0...RB7 gönder
}


Teşekkür ederim.
ambar7

Erol YILMAZ

#define BYTELOW(v)   (*(((unsigned char *) (&v) + 1)))
#define BYTEHIGH(v)  (*((unsigned char *) (&v)))

void test1 (void)  {
  
BYTELOW(x) = BYTEHIGH(x);
  
BYTEHIGH (x) = 5;
}


http://www.keil.com/support/docs/2229.htm

Tagli

Allegro hocam, senin kod sanki big endian olmuş. Ben mi yanılıyorum acaba?
Gökçe Tağlıoğlu

fgokcegoz



struct BYTES
{
   
unsigned char low;
   
unsigned char high;
};

union XYZT {
   
unsigned int a;
   
struct BYTES b;
}
degisken;



"degisken.a" ile 16 bitlik değişkene,
"degisken.b.low" ile 16 bitlik değişkenin low byte ına,
"degisken.b.high" ile 16 bitlik değişkenin high byte ına erişebilirsiniz.

(Not:Kullandığınız platform da unsigned int türünün 16 bitlik bir değişken türü olduğunu farzettim.)
"Vicdanın ziyası, ulûm-u diniyedir. Aklın nuru, fünun-u medeniyedir. İkisinin imtizacıyla hakikat tecelli eder." (Bediüzzaman Said Nursi)

Kabil ATICI

Aşağıdaki kod yeterli olacak gibi görünüyor.

 #define LOWBYTE(v)   ((unsigned char) (v))
#define HIGHBYTE(v)  ((unsigned char) (((unsigned int) (v)) >> 8))


void TIPDONUS  (unsigned int Veri)
{
  
unsigned char DataL;
  
unsigned char DataH;

//veri tipi dönüşümü
 
DataL LOWBYTE(Veri);
DataH HIGHBYTE(Veri);

YOLLA (DataL);   //RB0...RB7 gönder
YOLLA (DataH);   //RB0...RB7 gönder
}


http://www.keil.com/support/docs/2229.htm
yardımcı oldu. Cevap veren herkese teşekkür ederim.
ambar7

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.