SHIFT_RIGHT()/left

Başlatan mcan, 23 Ocak 2006, 02:33:21

mcan

örneklere baktım ;

shift right için;
// reads 16 bits from pin A1, each bit is read 

// on a low to high on pin A2 

struct {

   byte time;

   byte command : 4;

   byte source  : 4;} msg;

 

for(i=0; i<=16; ++i) {

   while(!input(PIN_A2));

   shift_right(&msg,3,input(PIN_A1));

   while (input(PIN_A2)) ;}

 

// This shifts 8 bits out PIN_A0, LSB first.

for(i=0;i<8;++i)

   output_bit(PIN_A0,shift_right(&data,1,0));


shiftleft için ;
byte buffer[3];

for(i=0; i<=24; ++i){

   // Wait for clock high

   while (!input(PIN_A2));

   shift_left(buffer,3,input(PIN_A3));

   // Wait for clock low

   while (input(PIN_A2));

}

// reads 24 bits from pin A3,each bit is read 

// on a low to high on pin A2


bu ikiindede örneğe göre veri okunuyor fark nerede anlamadım biri sağdan sola siğeri soldan sağamı kaydediyor?ben birinden biri bir baytlık veriyi seri olarak bir pinden çıkarmak için kullanmayı düşünüyordum,shif right olabilir ama ondada anlamadığım bir durum var ;shift_right(&data,1,0 datanın işaretcisi,1 sayısyı 1 baytlık veri,işte son virgülden onraki ıfır ne anlama geliyor value demiş giriş için kullandığında input komutunu buraya yazmış peki 0 yazınca ne oluyor 8 tane 0 ı ard arda göndermiyor heralde ,1 yazsaydık ne değişir ki bunu anlayamadım