Aynı Anda 3 Seri veri Gönderme

Başlatan M_B, 28 Nisan 2014, 22:54:06

M_B

Merhaba;
Şekildeki şemadaki gibi bağlantısı yapılmış olan 595 lere nasıl veriyi gönderebilirim.
Şekilden de göreceğimiz üzerine 595 lerin Data pinleri hariç diğer pinleri ortak
Data pinleri olarak D-1  ; D-2 ; D-3  leri PORTB de RB0 RB1 RB2 ye bağlı.
Örnek olarak  gönderilmesi gereken veri:
D-1 : 0x07 - 0x14 - 0x12 - 0x30
D-2 : 0x05 - 0x25 - 0x23 - 0x16
D-3 : 0x1A - 0x34 - 0x27 - 0x34
ilk gönderilmesi gereken veriler
0x07 -> 0000_0111
0x05 -> 0000_0101
0x1A -> 0001_1010
Bu da PORTB de  sırasıyla 3 , 5 , 3 , 4 , 4 , 0 , 0 , 0 olacaktır.
Yukardaki veriyi nasıl bu şekle cevirebilirim.


ete

#1
Shiftout ile yapılamıyacağı açık. O halde yapılacak şey D1-D2-D3 bitlerini sırası ile Data pinlerine verip bir clk palsi vermnek ve 8 bit tamamlandıktan sonra da bir kilit palsi vermek olmalıdır.
işte şöyle

D1=$07:D2=$05:D3=$1A
for I=7 TO 0 Step-1
PORTB.0=D1.0[I]
PORTB.1=D2.0[I]
PORTB.2=D3.0[I]
SH_CP=1:SH_CP=0
NEXT
ST_CP=1:ST_CP=0


Veya başka bir alternatif ilede şöyle olabilir

D1=$07:D2=$05:D3=$1A
for I=0 TO 7
PORTB.0=D1.7
PORTB.1=D2.7
PORTB.2=D3.7
SH_CP=1:SH_CP=0
D1=D1<<1:D2=D2<<1:D3=D3<<1
NEXT
ST_CP=1:ST_CP=0


Ete

M_B

Tesekkurler Ete Hocam;
sizden ufak bir kıvılcım aldım mı gerisi geliyor.

Benim yaptığım mantık ise şu şekilde

PORTB=((Rr>>yy)&0x01)+(((Gg>>yy)&0x01)<<1)+(((Bb>>yy)&0x01)<<2);


Rr,  Gg , Bb  D-1 D-2 D-3 denk  geliyor.

Powered by EzPortal