bit kaydırma

Başlatan Chan86, 16 Mart 2009, 17:51:33

Chan86

Arkadaşlar iyi akşamlar.
0x10000001 şeklindeki bir veriyi hem
0x10000001>0x00000010>0x00000100... şeklinde hem de
0x10000001>0x00000011>0x00000110... şeklinde kaydırmak istiyorum. Bunlar için komut nedir acaba?
Herkese iyi çalışmalar.

M_B

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

arslan74

Alıntı yapılan: "Chan86"Arkadaşlar iyi akşamlar.
0x10000001 şeklindeki bir veriyi hem
0x10000001>0x00000010>0x00000100... şeklinde hem de
0x10000001>0x00000011>0x00000110... şeklinde kaydırmak istiyorum. Bunlar için komut nedir acaba?
Herkese iyi çalışmalar.

Merhaba,

Hangi PIC'i kullacaksın ? Zira PIC12 ve PIC16 serisinde senin istediğin işlemi yapan bir komut malesef yok. PIC18 veya daha üst versiyonlara bakman gerek.

Selamlar

Chan86

Teşekkür ederim herkese arkadaşlar 16F877 ile kayan yaz için kayma efekleri kullanmak amacıyla bit kaydırma işlemi gerekiyordu ve sağolun yardımlarınızla çözdüm.

X-Fi

Alıntı yapılan: "arslan74"
Alıntı yapılan: "Chan86"Arkadaşlar iyi akşamlar.
0x10000001 şeklindeki bir veriyi hem
0x10000001>0x00000010>0x00000100... şeklinde hem de
0x10000001>0x00000011>0x00000110... şeklinde kaydırmak istiyorum. Bunlar için komut nedir acaba?
Herkese iyi çalışmalar.

Merhaba,

Hangi PIC'i kullacaksın ? Zira PIC12 ve PIC16 serisinde senin istediğin işlemi yapan bir komut malesef yok. PIC18 veya daha üst versiyonlara bakman gerek.

Selamlar

arslan hocam hi-tech de RRF, RLF komutları yokmu bunlar olmadan nasıl seri haberleşme yapıyorsunuz bu çok büyük bir eksik bence asm de olupda C de olmaması :?
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

arslan74

Alıntı Yap
arslan hocam hi-tech de RRF, RLF komutları yokmu bunlar olmadan nasıl seri haberleşme yapıyorsunuz bu çok büyük bir eksik bence asm de olupda C de olmaması

Aslında o kadarda büyük bir sorun değil.

Nedeni C de, ASM ile C birlikte karışık kod yazabilme imkanı vardır. C' nin yetmediği yerde ASM kodu ekleyebilirsin. Dolaysıyla iş sizin C ve ASM bilgisine bağlı kalıyor. Hatta bazı kodlarda daha az yer kaplasın ve daha hızlı çalışsın diye C kodunun içine ASM kodları eklediğini görürsünüz.

Bazen bende ASM kodları ekliyorum. Ama mecbur kalmadıkca kullanmiyorum ASM kod yazmak cok zor ve bircok şeye dikkat etmeniz gerekiyor. C de kod yazmak ASM göre cok daha hızlı ve sizin adınıza bircok şeyi kontrol ediyor.

C'de kod yazmayı seviyorum diyebilirim. Üst seviyede kod yazmak bu kadar zevkli değil. ASM kod yazmak ise Cin işkencesi.

Selamlar

X-Fi

bende artık C de kod yazmaya başladım artık asm ye dönmem heralde o keyfi aldım bikere :D

Chan86 sorunun çözümü bu olabilir:

0x10000001>0x00000011>0x00000110...
if(veri&0x80)  {veri<<=1;veri|=0x01;}  else  {veri<<=1;}


0x10000001>0x00000010>0x00000100...

veri<<=1;
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

XX_CİHAN_XX

Basit bir RLF yada RRF uygulaması için kodları şişirmeye gerek yok bence
arslan hocamın dediği gibi asm ile yapmak daha mantıklı bence

asm("rlf _reg,f");         //sola kaydır
	asm("rrf _reg,f");        //sağa kaydır
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

X-Fi

asm("RRF REG,F");  şeklindede yapılabilir  ben örnek olsun diye paylaşmıştım kimse cvp vermemiş  ;)
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)