seri haberleşme

feridoo

Üye
Katılım
10 Nis 2007
Mesajlar
14
Puanları
1
Yaş
39
merhaba arkadaşlar. iki mikroişlemci arasında seri haberleşme kullanarak aralarında veri alışverişi yapacağım. programda bir değişken tanımlıyorum örneğin sayı var word şeklinde ve bunu sayi=255 deyip çıkış portundan gönderiyorum.seri haberleşme kısmında sorun yok. diğer pic de bu veriyi okuyor ve lcd ekranda gösteriyor.ancak sayi=256 olursa diğer pic bu veri alamıyor ve ekranda 0 görünüyor. ben neyi gözden kaçırıyorum acaba

program

gonderme
------------------------
sayi var word
basla:
sayi=255
serout porta.0,396,[sayi]
goto basla


alma
-----------------------------
sayi var word
basla:
serin porta.0,396,[sayi]

lcdout $fe,2,@sayi
goto basla
 
256 rakamıı 255+1 olarak gönder.bir baytlık hex sayı ff=255 dir.pic de bilgiler byte byte gider.yani 256 diye bir sayı yoktur.iki baytı ardarda göndererek ff ff seklinde(255 255) 65535 e kadar rakam gönderebilirsin.yapacagın işlem sayı 255 den büyükse tasma verip ardından tasmayı göndermek
örnegin
255 icin 00 ff
256 için 01 00
257 icin 01 01
258 için 01 02 gönderebilirsin.
 
teşekkür ederim alarmko. evet nerde yanlış yaptığımı anladım. tekrar teşekkür ederim.
 
picc de seri haberleşmeyi nasıl yapablirim?
 
tekrar merhaba arkadaşlar

pic ve uln 2003 ile 4 dijit multiplex display devresi yaptım. displayların ortak ucu katot. şimdi displayların ortak ucununa eğer 5v verirsem devre çalışıyor ama displaylar sönük yanıyor. displayların ortak ucuna 5v dan fala bir gerilim uyguladığımda da tüm segmentler yanıyor ve rakamlar birbirine giriyor. pic kodlarını yazıyorum. bir bakarmısınız acaba programda mı hata var yoksa başka biryerdemi hata yapıyorum.

temp1 var word
BIRLER VAR BYTE
ekran var word
BASLA:
temp1=123


birler=temp1 dig 2
gosub convert
low porta.0
delayms 3
high porta.0
delayms 3


birler=temp1 dig 1
gosub convert
low porta.1
delayms 3
high porta.1

delayms 3
birler=temp1 dig 0
gosub convert
low porta.2
delayms 3
high porta.2
delayms 3
GOTO BASLA

convert:

if birler=0 then ekran=63
if birler=1 then ekran=6
if birler=2 then ekran=91
if birler=3 then ekran=79

if birler=4 then ekran=102
if birler=5 then ekran=109
if birler=6 then ekran=125
if birler=7 then ekran=7
if birler=8 then ekran=127
if birler=9 then ekran=111

portb=ekran
return
 
slm 2003 giriş sinyalini eksi (-) ye çevirerek veriri yani sen saten displayin ortağı katot ( - ) ye bağlıyorsun dijitlerin ucunada (uln2003 9 den eksi veriyorsun devrenı simulatörde dijit uçalrına artı ( + ) vererek dene yada 2003 ü iptal et ve portb ye direk bağla
 
display hakkında yanlış bilgi vermişim özür dilerim. display ortak ucu anot..
 
öyleyse programda beklemeden önce seçilen dijit hiç beklemeden geçiyor seçtiğin dijit ten sonra bekleme yapmalısın
high porta.0
pause 3
low porta.0
sen seçt
ğ
n dijit enrji verir vermez diğer dijiyti seçiyor bu sebeple taram hızından dolayı sadece ışık görüyorsun
 
delayms 3 bu süre kısa gelirse ledler zayıf yanar.süreyi ufak ufak arttırıp parlaklık istediğin orana gelince bırakırsın çok fazla yaparsan bu sefer tarama hızın düşer.
 

Forum istatistikleri

Konular
128,371
Mesajlar
917,084
Kullanıcılar
450,245
Son üye
übeyt doksar

Yeni konular

Çevrimiçi üyeler

Geri
Üst