Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

shift_right kullanımı

Başlatan conavar, 02 Mayıs 2007, 00:14:05

conavar

anlıyorum fakat daha önceden çalıştığım yerde bu şekilde yaparak display sürüyorlardı..
eski dokumanlarıma da baktım ve oyle çizdim devreyi...
bu şekiLde direk olarak DATA CLK senkronizasyonu  kullanarakOE ve STR  VCC de iken 8 bit veriyi daha önceden hazırlanmış bir pcb de  3 tane 7 segment display sürdüm va çalışmıştı :D gerçi hatırlamıyorum tek sorunum bu hatırlayamamak sanırım :)
ayrıca hocam uyarınız için teşekkir ederim ama
bir arkadaşım bana yazdığı farklı bir kod ile bu devreyi çalıştırmayı başardı...
proteusta simulasyon da da çalıştırmış...ben daha muvaffak olamadım kodlarımı kendim yazmak için çalılıyorum...
en son bu kodlar ile çalıştı:

data[0]=0xFF;
   write_expanded_outputs(&data[0]);
      delay_ms(100);
   data[0]=0x7F;
   write_expanded_outputs(&data[0]);
      delay_ms(100);
   data[0]=0xBF;
   write_expanded_outputs(&data[0]);
      delay_ms(100);
   data[0]=0xDF;
   write_expanded_outputs(&data[0]);
      delay_ms(100);
   data[0]=0xEF;
   write_expanded_outputs(&data[0]);
      delay_ms(100);
   data[0]=0xF7;
   write_expanded_outputs(&data[0]);
      delay_ms(100);
   data[0]=0xFB;
   write_expanded_outputs(&data[0]);
      delay_ms(100);
   data[0]=0xFD;
   write_expanded_outputs(&data[0]);
      delay_ms(100);
   data[0]=0xFE;
   write_expanded_outputs(&data[0]);
      delay_ms(100);
   data[0]=0xFF;
   write_expanded_outputs(&data[0]);
      delay_ms(100);


birde bir C dosyasını include ediyoruz ekstra... bu dosya nerden nasıL cıktı onu anlayamadım gece uyukulu uykulu denedim çaışıyor :)
ama terse kayıyor :D
bugun gene yüzlerde deneme yapıcam...
sonuçları paylaşırım sizlerde ;)

"write_expanded_outputs(eo);  Writes the array eo to the chips " bu yeni yapı nedir peki ?
.::BiLgi Paylaştıkça Çoğalır::.[/url]

conavar

@XX_CİHAN_XX
hocam sanırım hakılısınız :)
biz kaydırma işlemi yapmıyorduk  :oops:
doğru...
peki ne şekilde işlem yapmam gerekiyor olmadı bi türli dananımsal bi hatam mı var acaba ama eğer varsaydı bu nasıL kayıyor hala ?
ya deli olcam...kudurdum küçük bişeye hükmedemiyorum ya...  :evil:
.::BiLgi Paylaştıkça Çoğalır::.[/url]

XX_CİHAN_XX

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.

MURSEL

cihan hocam asm yazdıgınız için cözemedim  
output_bit(PIN_A0,shift_right(&data,1,0)); bu  komutun işleyişinde örn (ra3) btonuna basınca  a  degişkenini recistra yükleyeceegiz 74hc595

int a,b;
while(1)
{
while(!input(pin_a3)); //butona basıldımı? 1 mi
output_low(pin_a2); //  stc ucu 0 yap  veri gönderimini başlat
b=0;
a=5;
while(1)
{
if(b==8)break;         //   1 baytlık veri gittimi
 output_bit(PIN_A0,shift_right(&a,1,0)); // en degerliksiz biti pin a0 yükle  sagdan solo dogru kaydır
 output_high(pin_a1);   //clk palsi 1
delay_us(20);
output_low(pin_a1);    //ckl palsi o
delay_us(20);
++b;                          // her bir bit gönderdiginde b yi 1 artır
}
output_high(pin_a2); stc  ucu 1 yap aldıgı degeri recister cıkışında göstersin
}

bu şekildemi recistra deger yükleyebilirim  output_bit(PIN_A0,shift_right(&a,1,0)); bu komutu gerektigi gibi kullanabilmişmiyim

MURSEL

sanırım yazdıgım yazılımdan dolayı yardım etmeniz zorlaştı
output_bit(PIN_A0,shift_right(&A,1,0));  bu komutu tam olarak acıklayabilirseniz  ben anladıgımı yazayım sizde  dogrulunda yardımcı olursunuz    A degişkenini en degerliksiz bitini pinA0 a yükle sonra A degişkeni sagdan 0 koyarak sola dogru kaydır tekrar A degişkenine yükle
degişken örnek olarak 1 bayt oldugu içinoutput_bit(PIN_A0,shift_right(&A,1,0)); komuttaki 1 bu sebeten yazılmıştır degişken 8 bitlik oldugundan  8 kaydırmadan sonra durdurmalıyız  if(b==8)break; gibi
yardımlarınızı bekliyorum saygılar  :oops:

M_B

Merhaba Arkadas asagıdakı kodda 74595 ıcın yazılmıs program umarım ısıne yarar kolay gelsın.

#IFNDEF EXP_OUT_ENABLE

#define EXP_OUT_ENABLE  PIN_B0
#define EXP_OUT_CLOCK   PIN_B1
#define EXP_OUT_DO      PIN_B2
#define NUMBER_OF_74595 1

#ENDIF


void write_expanded_outputs(byte* eo) {
 byte i;

 output_low(EXP_OUT_CLOCK);
 output_low(EXP_OUT_ENABLE);

 for(i=1;i<=NUMBER_OF_74595*8;++i) {  // Clock out bits from the eo array
   if((*(eo+(NUMBER_OF_74595-1))&0x80)==0)
     output_low(EXP_OUT_DO);
   else
     output_high(EXP_OUT_DO);
  shift_left(eo,NUMBER_OF_74595,0);
  output_high(EXP_OUT_CLOCK);
  output_low(EXP_OUT_CLOCK);
 }
 output_high(EXP_OUT_ENABLE);
}
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet