Ccs c ile 3 farklı değeri tek değer olarak gösterme

onur1111

Üye
Katılım
31 Ağu 2019
Mesajlar
20
Puanları
1
Yaş
33
Merhabalar ,

Ccs ile eepromdaki verilier okuyor toplamda 3 farklı kayıtlı verim var . Örneğin birinci veri 1 , ikinci veri 2 , üçüncü veri 3 şeklinde ben bunları tek bir veri haline getirmek istiyorum 123 olarak. Bu şekilde yapma amacım veriyi sensorden gelen bilgi ile karşılaştırmak . Ancak bunu çözemedim nasıl yapabilirim bir önerisi olan var mıdır .

Örnek olarak bu sekilde eep1, eep2,eep3 olarak 3 farklı veri kaydediyorum eeprom a sonrasında bunları tek bir değer miş gibi yaparak farklı bir sensor verisi ile karşılaştırıcam.

eep1=read_eeprom(0);
eep2=read_eeprom(1);
eep3=read_eeprom(2);
 
Bu "123" değeri onluk tabanda mı? Yoksa
üç byte lık bir değer mi?

Onluk tabanda ise;
Kod:
(eep1 x 100) + (eep2 x 10) + (eep3)
şeklinde hesaplarsınız.

Üç byte için ise;
başta 32bitlik bir değişken tanımlarsınız.
Kod:
k = (eep1 << 16) | (eep2 << 8) | (eep3)
 
Son düzenleme:
Merhabalar Mehmet bey almak istediğim veri 3 bayt demiş olduğunuz kodu denedim.

ancak sadece son rakamı gorebiliyorum ilk iki rakamı goremıyorum nerede hata yapmıs olabilirim.

Aşağıdaki sekılde kullandım kontrol edebilmeniz mumkun mudur

int32 k;
lcd_gotoxy(1,4);
printf(lcd_putc,"%Ld" , k);

k = (eep1 << 16) | (eep2 << 8) | (eep3);
 
uint32 olarak deneyin, CCS C bilmiyorum.
Printf gerçekten 32bit yazdırıyor mu?
 
uint32 olarak deneyin

bu sekıldede denedim ancak olması

Printf gerçekten 32bit yazdırıyor mu? çok hakım degilim oyuzden emin değilim .

Su sekılde bir durum var gelen sayı 3 degilde 5 haneli olursa istediğim sekılde dogru olarak gösteriyor ancak 3 hane olarak olursa sadece sonuncuyu gosteriyor .
 
Bilgiler için tesekkurler incelemiş olacagım
 
Peki bu kodun mantığı nedir Mehmet bey öğrenme adına sormaktayım .

k = (eep1 << 16) | (eep2 << 8) | (eep3)
 
Üç byte bir sayınız olduğunu söylediniz.
İlk sayı 16 kere sola kaydırılacak, ikinci
sayı 8 kere kaydırılıp "veya" işlemi yapılacak.
 
Bilgi için teşekkür ederim.
Sayım onluk tabadaymıs kusura bakmayınız yanlış işlem yaptım bu kod ile istediğim gibi çalışıyor.
ancak maksimum 255 e kadar işlem yapabiliyorum 256 olunca 0 a dönüyor bunu aşabilmemin bir yolu var mıdır

(eep1 x 100) + (eep2 x 10) + (eep3)
 

Forum istatistikleri

Konular
128,134
Mesajlar
915,322
Kullanıcılar
449,853
Son üye
Megaronn

Yeni konular

Geri
Üst