c18 byte ters çevirme hk yardım.

Başlatan emrez, 03 Temmuz 2010, 17:30:41

emrez

Selam arkadaşlar örnek 10011101  byte değerini kolay ve kısa bir yöntemle 10111001 olarak ters çevirmek istiyorum. bunu c18 ile nasıl yaparım
_asm _endasm olarak yapayım dedim asm de böyle bir kod bulamadım. yardımınızı rica ederim. her biti tek tek bir işleme tabi tutmak istemiyorum
basit bir yolu olmalı diye düşünüyorum. yapacağım devrenin pcb si lcd nin 4 bit veri yolunu ters sıralama ile kullanacak. yani rb7 lcd nin 4. data pinine .
pcb böyle daha sade oluyor.

fatihinanc

#1
değişkeni bir buffera alıp önce ilk 4 biti sola kaydırarak sonra da bufferdaki son 4 biti sağa kaydırarak olabilir. denemek lazım.         

Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

F493

Selam,

Ben soruyu yanlis anlamisim o nedenle cevabi siliyorum.

Esen kalın.

fatihinanc

Alıntı yapılan: F493 - 03 Temmuz 2010, 19:58:03
Ben soruyu yanlis anlamisim o nedenle cevabi siliyorum.

x=~x; olarak mı anladınız ben de ilk başta öyle anlamıştım sonra değiştirdim. :)

ama yukarıda bahsettiğim yöntemle de olmaz. aslında olur da 3 adımda olmaz.
o işlemleri bit seviyesine inene kadar yapmak lazım o da çok mantıksız olur.
hazır bir fonksiyon var mı bilmiyorum.

eğer çok fazla kullanacaksanız biraz uğraşıp fonksiyon haline getirebilirim fakat elinizle değiştirdiğinizden daha fazla RAM alanını işgal eder.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Tagli

Bu soru daha önce bu başlıkta sorulmuştu. Verilen kod her ne kadar asm dilinde olsa da aynı mantık çok rahat bir şekilde C'de de uygulanabilir.
Gökçe Tağlıoğlu

F493

#5
 :)

picmanya

işlemcinin data memeorisinde 
MODCON
Modulo and Bit Reversed Addressing Controls Register
ayarlaması mevcutmu
işlemcinin ayrıntılı kullanım klavuzunda MODCON register yada Bit Reversed Addressing diye arat böyle bir şey varsa işin kolay ve hızlı - etkin olarak görülür yoksa bitlerle tek tek uğraşman gerekir.

muhittin_kaplan

#7
asm de swapf komutu niblle lar arası değişim yapmıyormuydu arkadaşlar ?
Example: SWAPF REG, 1, 0
Before Instruction
REG = 53h
After Instruction
REG = 35h

muhittin_kaplan

evet bende yanlış anlamışım. böyle bir komut yok :(

mufitsozen

unsigned char BitReverse(unsigned char inByte){
   unsigned char retByte=0;
   int tBitCount;
   for(tBitCount=0; tBitCount < 8; tBitCount++){
      retByte = retByte << 1;
      retByte |= (inByte & 1) ? 1 : 0;
      inByte = inByte >> 1;
   }
   return(retByte);
}
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

emrez

Cok teşekkür ederim arkadaşlar. basit bir lcd c18 dilinde hazırlıyorum. daha doğrusu yabancı formlarda exaple verilip eksik verilen bilgileri tamamlayıp
birşeyler yapmaya çalışıyorum.