rs 232 yardım

Başlatan , 15 Eylül 2003, 21:54:40

selam;

benım ciddi bir sorunum var bilgisayarın rs232sını pic 16f877 ye bagladım bilgisayarın klavyesinden bastıgım ilk ıkı karakteri almıyacak sonraki altı karakteri tek rakam olarak float bir degiskene atıyacak sonraki iki karakteri gene algılamıyacak sonraki 6 karakteride float olan baska bir degiskene atiyacak bu degiskenler float olmak zorunda cunku uzerinde matematik islemi yapılacak ama bir turlu bu iki degiskene istedigim rakami atayamadim ornek verecek olursa gonderdigim data x+005005y+003003 gibi bir dizi basiyorum bu durumda picdeki x degiskenine 005005 y degiskeninede 003003 gibi bir deger kaydedilmesi gerekiyor ama olmuyor kod olarak pic basic plus kullanıyorum o kısımdakı ornegım soyle
BASLA:   SERIN PORTC.7\PORTC.6 , 6 , [G]
      G=0
      PRINT AT 1,1, DEC GG
      SERIN PORTC.7\PORTC.6 , 6 , [G]
      G=0
      SERIN PORTC.7\PORTC.6 , 6 , [G]
      G=G*100000
      X=X+G
      SERIN PORTC.7\PORTC.6 , 6 , [G]
      G=G*10000
      X=X+G
      SERIN PORTC.7\PORTC.6 , 6 , [G]
      G=G*1000
      X=X+G
      SERIN PORTC.7\PORTC.6 , 6 , [G]
      G=G*100
      X=X+G
      SERIN PORTC.7\PORTC.6 , 6 , [G]
      G=G*10
      X=X+G
      SERIN PORTC.7\PORTC.6 , 6 , [G]
      X=X+G
      X=X/10      
      PRINT AT 1,1,  "X=",DEC X, "mm"
      GOTO BASLA
bunun hatalı oldugunu bılıyorum conku artık burda bıraktım bu durumdayken matematık ıslemı olarak bastıgım rakamı degıl rakamın ascii karsılıgını islem olarak alıyor lutfen bır onerı verın
sımdıden cok sagolun

asm_Coder

1. bu forumda bulunan basic plus 2,00  floting point işlemlerini yapamazsın.çünkü bunlra izin vermiyor.eğer basic plus1,24 kullanıyorsan bunda zatan flot değişken tanımlaması yok.

2.yapacağın işlem bir hesap makinası veya benzeri birşey ise bir trablo oluştur.gelen ascii karakterleri bir değişkene al ve sonra karşılaştır ve bunun sonucunda karşılık gelen 10 lu tabadaki değerini değişkene ata.

3.10 lu tabandaki değeri atarken digit pozisyonunu unutma.yani1ni digit *1 +2nci ,digit*10 + 3ncü digit * 100 + 4 ncü digit * 1000 gibi...bunu flot olarak yapmak istiyorsan basic proda yada plusta direk plot işlemleri yapamazsın.ancak program içerisine dahil edeceğin asmbler kodları ile halledebilirsin.

4.serin yada rsin komutlarını neden kullanıyorsun.hserin yada hrsin kullan.ve osc ye gore doğru baud ayarı sec.
umarım yardımcı olmuşumdur.
y=f(x);

cevap yazdıgın ıcın cok teşekkür ederım yanlız bır ıkı sorum daha olucak oncelıkle ben versiyon olarak 1.24 kullanıyorum ve bıldıgın bır 2.00 adresi varmı ve float islemi yapamazsın derken tam olarak neyı kastetmıstın bırde serin komutu yerıne hrsın - hser,n kullanmam bana ne kazandıracak bıraz acarsan sevınırım
sımdıden cok teşekkür ederım

mmengi

BTIGER dostum forumdaki pbplus 2.0 ile float işlemleri yapılabiliyor en azından ben yaptım. :?

kolay gelsin

Ziya

hyperterminalden veya herhangi bir terminal programından gönderdiğin sayılar seri port üzerinden karakter olarak gönderilir. Yani sen hyperterminalde 1 tuşuna basınca bu bilgi seri porttan "1" olarak gider. Pic tarafında aldığın her karakterden hex30 veya onluk 48 sayısını çıkartıman gerekir.

Gönderdiğiniz floating point rakam formatı ile picbasicpro aynı formatı mı kullanıyor ondan emin ol. ( hitec formatı, microchip formatı, IEEE 754 formatı ve bunların 24 ve 32 bitlik hatta 40 bitlik versiyonları bile var.)

floatconv.exe programı her üç formattada integer fp dönüşümü yapıyor. Gönderdiğiniz sayı sabit ise önceden el yordamıyla(floatconv.exe yi kullanarak) sayıları 32 bit fp formatına dönüştürüp gönderin.

Kolay gelsin
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey