16f628 rs232 char to float

Başlatan antalyali, 29 Kasım 2013, 11:53:26

antalyali

hocalarim merhabalar içinden cıkamadıgım bir konu var yardımcı olursanız sevinirim.
ccs c ile pic 16f628 uzerinde rs232 den aldıgın karakterleri bir diziye atıyorum
unsignet char tampon[15];   
bu dizinin son altı karakterini alıp float bir degişkene atamak istiyorum
sonra her iki float degişkeni buyuk veya kucuk olmasını karsılastıracagım
Atof() kullandigim zaman ROM yetmiyor
selam ve saygılar

Kabil ATICI

vigülün yeri sabitse ve ortada kabul edelim...
deger1=(tampon1-0x30)*100+(tampon2-0x30)*10+(tampon3-0x30)
deger2=(tampon4-0x30)*100+(tampon5-0x30)*10+(tampon6-0x30)
deger=deger1+deger2/1000
şeklinde olabilir.

Karakter olarak '0' ->0x30 değerine eşittir
'0' ->0x30
'1' ->0x31
'2' ->0x32
.
.
'9' ->0x39
hatta son gönderdiğin karakter eğer satır başı gibi bir şey olursa doğrudan o algılanınca işleme başlanabilir. Vede bir tane satır sonu karakteri.
ambar7

antalyali

Tesekkur ederim hocam .
gelen. verilerin son 6 rakam.  4 farkli şekilde gelebilir
1.00
10.00
-1.00
-10.00
Son 6 dediğim -10.00 değerine gore
Diğer karsilastiracagim float genelde 5.50 olacak

Şimdiden tesekkurler






Kabil ATICI

o zaman işin daha kolay zaten
deger1=(tampon2-0x30)*10+(tampon3-0x30)
deger2=(tampon5-0x30)*10+(tampon6-0x30)
deger=deger1+deger2/100

sadece tampon 1'in "-" işareti için gönderecek şekilde ayarla. Zaten tampon2 "0" olarsa hesapta 0 olarak işlem görecektir.

yani değerlerini  -xx,xx  veya +xx,xx  (x senin sayını temsil ediyor) şeklinde sabit formata gönderecek ve alacak şekilde ayar. Böylece alma ve değerlendirmede fazla sıkıntı duymazsın. Zaten verileri sen gönderip alıyorsun!
ambar7