seri haberleşme veri gönderimi yardım

Başlatan feridoo0158, 24 Eylül 2012, 15:21:10

feridoo0158

merhaba arkadaşlar bir konuda yardımınıza ihtiyacım var. iki pic arasında asenkron olarak haberleşmeyi yapıyorum.

gonderme prog.

sayi var word
sayi=0
bas:
sayi=255
serout porta.0,396,[sayi]
pause 2
goto bas

alma prog.
sayi var word

bas:
serin portd.0,396,[sayi]
lcdout $fe,2,@sayi
pause 2
goto bas

gonderme tarafında bir değişken tanımlıyorum ve bu değişkenin içeriniği diğer pic'e seri olarak gonderiyorum. diğer pic değişkenin içeriğini 255'e kadar alıyor ancak değişken 256 olursa taşma olduğu için diğer pic bunu göremiyor. ben bu değişkenin içeriği max 999 olacak şekilde diğer pic'e nasıl gönderebilir. bu konuda yardımcı olursanız sevinirim. tşk

Cenk_Unur

Veriyi 2 byte olarak göndermeniz gerekiyor.

1.byte=sayi/256
2.byte=sayi-(1.byte*256)

olarak değeri 2 byte olarak gönderin. alıcı tarafında  bu 2 byte birleştirin

sayi = 1.byte*256+2.byte






serhat1990

#2
Sayıyı 2 ayrı byte olarak gönderebilirsin. @cenkun arkadaşın dediği gibi 0-65535 arası sayıları gönderebilirsin...

Yada sayıların ascii karşılığını gönderirsin. Her basamağın değerini ayrı ayrı toplamda 3 byte'ta sayıyı gönderebilirsin...

İyi çalışmalar.


feridoo0158

tşk ederim arkadaşlar evet 2 byte olarak gönderip sonrada bytleri birleştrince sorun çözüldü. yardımınız için tekrar teşekkür ederim.

ete


SAYI isimli değişkeninizi WORD cinsinden tanımladıktan sonra veri yollarken;
serout porta.0,396,[SAYI.Byte0,SAYI.Byte1] şeklinde yollarsanız. Hiç hesap işi veya bölme birleştirme işine ihtiyaç kalmaz.
Alırkende,
serin portd.0,396,[SAYI.Byte0,SAYI.Byte1]
şeklinde alırsanız yine hiç bir ilave işlem yapmadan SAYI isismli word değişkenine 2 byte yerleşmiş olur.

Ete

Bilgi hazinedir paylaştıkça büyür.            http://etepic.com