SERİ İLETİŞİM

Başlatan SERKANOZMEN, 07 Ağustos 2011, 21:26:35

SERKANOZMEN

merhaba arkadaşlar pic basic ile 2 pic arasında seri iletişim yaptırırken aynı anda birden çok fonksiyon nasıl yaptırılabilir örnek olarak 1.pic teki 1 butona basılı tutulduğu sürece 2.pic teki 1. ledi yakacak ancak bunun yanında 2. butona basıldığı sürece de 2. ledi yakacak yazdığım programda illa butonlardan birini bıraktıktan sonra 2. ledi yakabiliyorum fakat aynı anda birden çok fonksiyon yapamıyorum bu konuda yardımlarınızı bekliyorum iyi çalışmalar.

-Hasan-

Verici taraf sürekli sürekli olarak butondan gelen verileri okuyup yollar, alıcı tarafta sürekli veri okuyup ledlere verir olur, yani;

2. PIC ' e gidecek olan 1 byte  ' lık verinin 0. bitine 1. butonun bilgisi, 1. bitine 2. butonun bilgisi verilerek yollanır (bu işlemin sürekli olarak tekrarlanması lazım)
2. PIC ' de sürekli olarak veri okuyarak ledlere verir.

SERKANOZMEN

Hasan bey ilginiz için teşekkürler
1 byte  ' lık verinin 0. bitine 1. butonun bilgisi, 1. bitine 2. butonun bilgisini nasıl ekleyeceğiz örneğin 8 adet buton var

-Hasan-

Verici tarafta 8 adet buton olursa; örneğin butonlar PORTB ' de, haberleşme de 2400 baud ' da PORTA.0 ' dan olsun:

TRISA.0=0 ' Veri yollanacak pin çıkış yapıldı.
TRISB=255 ' Veri okunacak port komple giriş yapıldı.

ANA:

SEROUT2 PORTA.0,396,[PORTB] ' PORTB ' deki butonların bilgisini PORTA.0 ' dan 2400 baud ' da gönderir.

GOTO ANA ' Sürekli buton bilgisi yollanacak.


Alıcı tarafta da PORTB ' de 8 tane led olsun, haberleşme yine PORTA.0 ' dan olsun:

TRISA.0=1 ' Veri alıncak pin giriş yapıldı.
TRISB=0 ' Led bağlanan port komple çıkış yapıldı.

ANA:

SERIN2 PORTA.0,396,[PORTB] ' Gelen buton bilgisini ledlere ver.

GOTO ANA ' Sürekli buton bilgisi ledlere verilecek.

isikyasar

vinç kumandası için yazmıştım kodları. hatta cihazıda yaptım. elimde 1 adet daha var cihazdan. umarım işine yarar kodlar.

VERİCİ KISMI:

device 16f84a

TRISA=%00100
TRISB=%11111111
PORTA=0
PORTB=0

dim VERICI as portb   
   VERICI=0

delayms 200

BASLA:
   porta.3=0

IF PORTA.2=1 THEN
GOTO UNTAS1
ELSE
GOTO UNTAS2
END IF

UNTAS1:
porta.3=0
   VERICI=PORTB
  SEROUT PORTA.0,396 ,["U","N","T","A","S","1", VERICI]
GOTO UNTAS1

UNTAS2:
porta.3=0
   VERICI=PORTB
  SEROUT PORTA.0,396 ,["U","N","T","A","S","2", VERICI]
GOTO UNTAS2

GOTO BASLA
END




ALICI KISMI:


device 16f84

trisa=255
porta=0

OUTPUT PORTB
portb=0

DIM ALICI AS PORTB

delayms 250


  BASLA:
serin PORTA.0,396,5,hata ,[wait("UNTAS1"),ALICI]
goto basla

hata:
ALICI = 0
portb=0
goto basla
end






UMARIM İŞİNE YARAR. BİLGİ PAYLAŞTIKÇA ÇOĞALIR.

isikyasar

1 VERİCİYLE 2 ALICIYI KONTROL EDEBİLİYOR. UNTAS 2 YAZAN YERLERİ KULLANMAK SANA KALMIŞ ARTIK.
1 VERİCİ İLE 1 DEN FAZLA CİHAZ KONTROL EDİLEBİLİYOR.

isikyasar

VERİCİ MODÜL OLARAK 433 MHZ KULLANDIM.

OG

Eklemeleri editleyerek yapın arkadaşım. Arka arkaya mesaj (flood) kirlilik sebebi.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.