Senkron iletişim yardım

Başlatan Lütfi AYYILDIZ, 13 Aralık 2005, 13:08:21

vatandas30

o programda dvm01 değişkeni senin dediğin hataya düşmemek için konulmuş . kendi programına dvm01 olan kısımları da ekle.

Lütfi AYYILDIZ

Haklısın evet ekledim ve sorun düzeldi de, örneğin A tuşuna basıyorum decimal 28 değeri lcd de gözüküyor.(28 değerinin karşılığı HEX 1C , A' nın basma değeri) fakat ASC olarak göstermek istediğimde hiçbir değer çıkmıyor. kullandığım komut;

lcdout $fe,$c0, #veri   'ASC de

XX_CİHAN_XX

Alıntı yapılan: "cobra07"Haklısın evet ekledim ve sorun düzeldi de, örneğin A tuşuna basıyorum decimal 28 değeri lcd de gözüküyor.(28 değerinin karşılığı HEX 1C , A' nın basma değeri) fakat ASC olarak göstermek istediğimde hiçbir değer çıkmıyor. kullandığım komut;

lcdout $fe,$c0, #veri   'ASC de
pbp kodlarından pek anlamam ama klavyede a tusuna basıldıgında senın aldıgın kod hex 1C ise dogru kodu alıyorsun demektır.Onu yorumlayıp ASC olarak lcd de gosterebılırsın.Klavyeden ASC olarak hazır kod cıkmaz.
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.

Lütfi AYYILDIZ

Yorumlamak sorun değil.Decimal olarak örneğin A harfi basma  decimal 28 yani ASC 1C. Decimal olarak LCD de lcdout $fe,1,veri ,komutuyla 28 olarak gözüküyorda, lcdout $fe,1,#veri ,1C ASC niye gözükmüyor.
# simgesi lcd de veriyi asc olarak göstermek için değilmi? Sorun bu..

Lütfi AYYILDIZ

klavyeden veri okumak için kullandığım kodlar, belki birinin işine yarar.

reg var byte
veri var byte
dvm var byte
clk var portb.5
kdata var portb.4
pause 1000
lcdout $fe,1,"PS/2 KLAVYE TEST"
PAUSE 1000
rx:
gosub clock:
if reg=1 then goto rx
if reg<10 then  
veri=veri>>1
veri.7=kdata
endif
if reg>10 then
pause 200
lcdout $fe,1,veri
PAUSE 200
reg=0
endif
goto rx
clock:
if clk=1 then dvm=0:goto clock
if dvm=1 then clock
if clk=0 then
reg=reg+1
dvm=1
endif
return
end

XX_CİHAN_XX

Alıntı yapılan: "cobra07"Yorumlamak sorun değil.Decimal olarak örneğin A harfi basma  decimal 28 yani ASC 1C. ...
Sanırım yanlış dusundugun bır sey var.decimal 28 , hex 1C ye eşittir.
ASC 1C nerden cıktı.Sanırım orada yanlış dusundugun bırşeyler var
Alıntı Yap
Decimal olarak LCD de lcdout $fe,1,veri ,komutuyla 28 olarak gözüküyorda, lcdout $fe,1,#veri ,1C ASC niye gözükmüyor.
# simgesi lcd de veriyi asc olarak göstermek için değilmi? Sorun bu..
sanırım bu sorunu pbp yi iyi bilen arkadaşlar cevaplasa daha iyi olur
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.

Lütfi AYYILDIZ

Orada hex olarak 1C  demek istedim

vatandas30

klavyeden alınan hex kodlarla , picin lcd ye yazmak için kullanıdğı hex kodlar bildiğim kadarıyla aynı değil.
örneğin birinci satırın birinci karakterine a yazmak için;
LCDOUT $FE,$80,"A"
yazman yeterli. yani senin picin lcd ye göndereceği kodu bilmene gerek yok.senin A yazmak için kuracağın mantık şu olmalı:
klavyeden alınan veri=$1C ise
LDCOUT $FE,  $80, "A"    
gibi olmalı.

ete

Aslında aşağıdaki komutlar birbirinin aynı işi yaparlar,

LCDOUT $FE,80,"ABC"

LCDOUT $FE,80,65,66,67

Buradan şu anlaşılıyor, karekterin ASC kodunu yaz dediğiniz zaman LCD ekrana karekteri yazar. Burada sorun şudur, PC karekter kodları ile LCD nin karekter kodlarının bir biri ile eşdeğer olup olmadığının kontrolu. BAzı karekterlerde sapma olabilir. LCD de genelde 32 ve sonrası karekterler görünür şekilde yazılırlar. Halbuki PC de daha düşük değerlerin karşılığında bir karekter görüntülenebiliyor. Bana kalırsa LCD nin karekter setini bir inceleyin. Yoksa ana sorununuzu ikinic LCDOUT komutu ile aşarsınız.Şöyle
LCDOUT $FE,80,TUS  
burada TUS değişkeni PC den alınan karekter kodunu temsil etmektedir.

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

XX_CİHAN_XX

Alıntı yapılan: "vatandas30"klavyeden alınan hex kodlarla , picin lcd ye yazmak için kullanıdğı hex kodlar bildiğim kadarıyla aynı değil.
örneğin birinci satırın birinci karakterine a yazmak için;
LCDOUT $FE,$80,"A"
yazman yeterli. yani senin picin lcd ye göndereceği kodu bilmene gerek yok.senin A yazmak için kuracağın mantık şu olmalı:
klavyeden alınan veri=$1C ise
LDCOUT $FE,  $80, "A"    
gibi olmalı.
Kesınlıkle katılıyorum boyle bır rutın yapmaktan baska caren yok.Cunku klavyenın gonderdıgı kodlara lcd de karsılık gelen asc karakterler tamamen farklı.Dolayısıyla klavyeden aldıgın kodu yorumlamadan ilgili karakterı lcd ye gondermen mumkun degıl.
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.

Lütfi AYYILDIZ

LCD yi 4 bit olarak kullanmamın bununla bir alakası olabilirmi.

XX_CİHAN_XX

Alıntı yapılan: "cobra07"LCD yi 4 bit olarak kullanmamın bununla bir alakası olabilirmi.
Hiç birşey fark etmez.lcd yi nasıl kullanırsan kullan hangi karakter lcd yi kullanırsan kullan.Karakter lcd lerın karakter kodları ile klavyenın gonderdıgı pc nın kullandıgı kodlar tamamen farklıdır.Bu yuzden klavyeden aldıgın kodu sorgulayarak hangi karakterın kodu oldugunu ogrenıp o kodun asc karsılıgını lcd ye gondermelısın.
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.

Lütfi AYYILDIZ

Yardımlarınız için teşekkür ederim

vatandas30

bilgisayar klavyesi simülasyonunu proteusta nasıl yapabiliriz. pattern generatör ile denedim olmadı.