Şimdi Ara

bir sayıyı hex2 ye nasıl çeviririz

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
7
Cevap
0
Favori
849
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • sayın arkadaşlar
    pbp de bir program yazdım aslında bitirdim oldu çalışıyor ama ekleme yapacağım yapamıyorum çünkü program 11kb ta geldi
    devrede ds1302 var bunun çıkışını lcd de lcdout $fe,$80,hex2 saat.... olarak okuyabiliyorum ama bunu matrixe yönlendirmek için mesela şöyle bir işlem yapmak zorunda kaldım

    if saniye.4 = 1 then saniye = saniye - 6
    if saniye.5 = 1 then saniye = saniye - 12
    if (saniye.4 = 1) and (saniye.5 = 1) then saniye = saniye - 32
    if saniye.6 = 1 then saniye = saniye - 24

    bu burda kısa gibi görünüyor tabi ama saat dakika tarih vs ile hepsini yapınca (tarih kısmı bunun kadar uzun olmuyor) tabi prog. birazcık büyüdü aceba kısa bir yol varmıdır







  • buda devresi ve şunuda sorayım bu devre için bu hex dosyası büyükmü yoksa normalmi ben daha önceden 11.2 kb tı geçtiğimde devrenin bazı yerlerde saçmaladıgını gördüm (tabi bu isis için geçerli değil 24kb ta bile çalışıyor isiste) peki bunu çözmenin bir yolu varmıdır


    http://rapi-dshare.tv/742918

    herkeze şimdiden teşekkürler
  • programı yollaman mümkünse eğer..Büyük ihtimal programı küçültecek değişiklikler yapabiliriz...Bence tek yolu da bu


    Basic te program yazarken dikkat edilmesi gereken noktalar var;

    -Olabildiğince 2 nin katlarıyla işlem yapmak.
    -Bir sayıyı 2 nin katlarına bölmek ya da çarpmak yerine sağa sola kaydırmak
    -Aynı işlemi yapan program parçalarını tek bir etiket altında toplamak.
    örn: 10 yerde delayms 10 kullanmak yerine, delayms 10 sağlayan tek bir etiketi gerekli yerlerde çağırmak.
    -alt alta if komutları kullanmaktan oldukça kaçınmak.
    vs vs...

    Bu tür teknikler ile program boyutu oldukça küçültülebilir...Programı bunlara dikkat ederek yazdıysan 877 nin hafızasının dolacağını sanmıyorum..Hex dosyasının bilgisayardaki boyutu ile pic teki boyutu da farklı çıkıyor.Bu yüzden de yanılıyor olabilirsin..Programlayıcıya hex i verdiğin zaman kod hafızasının dolup dolmadığını kontrol edebilirsin..



    < Bu mesaj bu kişi tarafından değiştirildi OzanGazi -- 10 Mart 2007; 9:57:38 >




  • quote:

    Orjinalden alıntı: ugurmola

    if saniye.4 = 1 then saniye = saniye - 6
    if saniye.5 = 1 then saniye = saniye - 12
    if (saniye.4 = 1) and (saniye.5 = 1) then saniye = saniye - 32
    if saniye.6 = 1 then saniye = saniye - 24




    Niçin bunları yapmak zorunda olduğunuzu anlayamadım ?
  • quote:


    Orjinalden alıntı: tyilgin1

    Niçin bunları yapmak zorunda olduğunuzu anlayamadım ?


    ds1302 kullanıyorum ondan aldıgım veriyi shiftin le okuyorum ve şöyle bir sonuç çıktı karşıma

    1=1, 2=2, 3=3.........9=9, 10=16, 11=17,12 =18, 13=19, 14 = 20 ,15=21, 16=22, 17=23, 18=24, 19= 25, 20=32, 21=33, 22=34, 23=35, .....29=41, 30=64, 31=65, 32=66, 33=67,34=68............59=89

    eşittirin solundaki olması istediğim rakam, sağındaki aldığım rakam. dediğim gibi aldığım bu veriyi lcd ye şu şekilde yazdığımda
    lcdout $fe,$1, hex2 saat...... diye yazdığım zaman sorun ortadan kalkıyor demekki alınan sayı hex2 ye çevrilmesi gerek ben uğraştım belki bir formul çıkarılabilir diye yapamadım ve öyle bir işlem yapabildim

    quote:


    Orjinalden alıntı:OzanGazi

    programı yollaman mümkünse eğer..Büyük ihtimal programı küçültecek değişiklikler yapabiliriz...Bence tek yolu da bu


    Basic te program yazarken dikkat edilmesi gereken noktalar var;

    -Olabildiğince 2 nin katlarıyla işlem yapmak.
    -Bir sayıyı 2 nin katlarına bölmek ya da çarpmak yerine sağa sola kaydırmak
    -Aynı işlemi yapan program parçalarını tek bir etiket altında toplamak.
    örn: 10 yerde delayms 10 kullanmak yerine, delayms 10 sağlayan tek bir etiketi gerekli yerlerde çağırmak.
    -alt alta if komutları kullanmaktan oldukça kaçınmak.
    vs vs...

    Bu tür teknikler ile program boyutu oldukça küçültülebilir...Programı bunlara dikkat ederek yazdıysan 877 nin hafızasının dolacağını sanmıyorum..Hex dosyasının bilgisayardaki boyutu ile pic teki boyutu da farklı çıkıyor.Bu yüzden de yanılıyor olabilirsin..Programlayıcıya hex i verdiğin zaman kod hafızasının dolup dolmadığını kontrol edebilirsin..




    hocam programda dediğiniz türden çapakların fazla miktarda oldugunu sanmıyorum tek fazlalık yapan if then ler onuda zaten bu çevirme için kullanmıştım bütün prog. sadece 2 tane pause kullanmışım ve bu çevirmeyi yapan if lerden hariç rakam ve noktalamalara gönderen if then ler var başka bir yerde yok

    ödev ve başkasına yazdığım için şu an atamıyorum size pm atmaya çalıştım ama hata var diyor daha sonra tekrar denicem



    < Bu mesaj bu kişi tarafından değiştirildi ugurmola -- 10 Mart 2007; 13:22:08 >




  • Hocam bu BCD kodlama..Bu kodlamada 8 bit değerin ilk 4 biti 10 lar hanesini 2. 4 biti birler hanesini temsil eder...

    in=okunan BCD değer
    x=binary değer

     shin in ' in değerini oku 
    call bcd2bin 'alt programı çağırdığında x değişkeninde in'in binary karşılığını alırsın
    .
    .
    .
    .
    .
    .

    bcd2bin:

    x1=in>>4
    x2=in & %00001111
    x=x1*10+x2

    return



    Bu üç satır ile BCD yi binary e çevirmen mümkün..seni bir sürü if komutundan kurtaracaktır..



    < Bu mesaj bu kişi tarafından değiştirildi OzanGazi -- 10 Mart 2007; 15:38:28 >
  • OzanGazi
    hocam gerçekten çok teşekkür ederim sadece saniye de denedim oldu şimdi hepsine uygulucam ama o if leri sildiğimde de 9kb ta düşmüş program
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.