Picproje Elektronik Sitesi

DERLEYİCİLER => Microchip MPLAB C serisi => Microchip C18 => Konuyu başlatan: FEHMİ_ASM - 03 Ekim 2011, 20:41:23

Başlık: Hex'i Ascii'ye çevirmek (C18)
Gönderen: FEHMİ_ASM - 03 Ekim 2011, 20:41:23
       Bir değişken var ve içerisinde örn h'27' yüklü. Bunu görünürde ortadan ikiye bölüyorum ve kaydırarak h'02' elde ediyorum. Buraya kadar herşey tamam. Peki elde ettiğim ve Data1 adlı değişkendeki bu sayının Ascıı kodunun Hex karşılığı olan h'32'ye nasıl alırım? Döngü mü düzenlemeliyim yoksa buna özel bir tanım var mı?
    (C18)
Başlık: Ynt: Hex'i Ascii'ye çevirmek (C18)
Gönderen: esensoy - 03 Ekim 2011, 22:35:12
CCS için ise;
char buf[4];
itoa(0x27,16,buf);

denilirse;
buf[0]=0x32, buf[1]=0x37 olur
en başa da
#INCLUDE <stdlib.h>
eklenmelidir,

ayrıca 16 olan kısım sayı tabanını gösteriyor, 10 yaparsak 10 luk tabana göre (0x27=39 yani buf[0]=3, buf[1]=9) atama yapıyor.
Başlık: Ynt: Hex'i Ascii'ye çevirmek (C18)
Gönderen: FEHMİ_ASM - 03 Ekim 2011, 22:54:16
     Yapamıyorum. Ben dönüşen bu sonucu diziden mi almak zorundayım? Hem diziden değil bir reg.den almak istiyorum. Öyle de denedim. Zaten çevrilmesi istenen rakam sadece şunlar: 0,1,2,3,4,5,6,7,8,,9  ve her seferinde sadece bir rakam çevrilecek. Data1' in içindeki değer her seferinde farklı olabiliyor.
sprintf( Read_Reg_DS1307_x,"%02X",Read_Reg_DS1307_x );  Böyle de denedim. Ancak yukarısına dizi falan eklemedim bu sefer.
Başlık: Ynt: Hex'i Ascii'ye çevirmek (C18)
Gönderen: FEHMİ_ASM - 03 Ekim 2011, 23:43:29
      Yukarıdaki örnekler için sağolunuz. Ancak biraz manuel olsa da sade bir çözüm aklıma geldi.
Read_Reg_DS1307_x = Read_Reg_DS1307_x + 0x30;
     
      Zaman ayırıp ilgilenen arkadaşlara teşekkür ediyorum.
Başlık: Ynt: Hex'i Ascii'ye çevirmek (C18)
Gönderen: esensoy - 04 Ekim 2011, 22:49:36
en basit çözüm en iyi çözümdür, sen en basidini yakalamışsın zaten:)