dim degisken as float ---- eeproma yazmıyor!

Başlatan isikyasar, 05 Aralık 2012, 21:36:47

isikyasar

Merhaba arkadaşlar. Dim değişkenini FLOAT değilde WORD olarak tanımladığımda EEPROM'a yazıyor ve okuyor. Ama FLOAT olarak yazdığımda değişken değerini değiştiremiyorum. Gerçek devrede test ediyorum.


Device 16F877
Xtal 4

Input PORTC.0
Input PORTC.1
Input PORTC.2


Declare LCD_DTPin PORTD.4
Declare LCD_ENPin PORTD.3
Declare LCD_RSPin PORTD.2


Dim mehmet As float
mehmet=0
DelayMS 10

mehmet = eread 10
delayms 50

  basla:
 
 
If PORTC.1=1 Then
mehmet=mehmet + 0.01
DelayMS 100
End If

If PORTC.2=1 Then
mehmet=mehmet - 0.01
DelayMS 100
End If


  If PORTC.0=1 Then
  EWrite 10, [mehmet]
  DelayMS 50
End If


Print At 1,1, Dec3 mehmet , "     "   


  GoTo basla

Maxim

başka bir hata vardır
ben byte-word-float istediğim gibi eeproma yazıyor ve okuyorum

gerçi bu şekilde kullanılmaz eeprom
yani eepromun bir yazabilme limiti var
datasheetinde yazar kaç kere yazabilirsin eeproma diye?
ondan sonra eeprom artık saçmalamaya başlar
sizin pic eepromun ömrü bitmiş olmasın ?

1,000,000 erase/write cycle Data EEPROM memory typical


not:
End If--> endif


Mucit23

Değişken float olunca yazılmıyorsa demekki float değişkenler yazılmıyordur. Derleyici buna hata vermese bile yazamayabilir.

Sayıyı worde çevirip öyle yaz. Örneğin sayın 0.01 ise bunu 100 ile çarpıp virgülden kurtar. Ardından Float olmayan bir değişkene yükleyip eeproma yaz.
Okurkende aynı şekilde tam sayı olarak okuyup okuduğun değeri 10'e bölüp float tipi bir değişkene yüklersen girişteki sayının aynısını elde edersin.

Maxim

neden bosu bosuna is cikariyorsunuz?

proton ile gayet guzel bir sekilde float sayiyi eeproma yazar ve okursun
tek komut ile

ete

Benim bildiğim Float değişkeni hafızadan 4 byte lık yer alır. Dolayısıyla eproma yazılırken 4 byte olarak yazılmalıdır.
Byte0 , byte1, byte2 byte3 olarak.

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

isikyasar

Dim mehmet As float      değilde   Dim mehmet As word   olarak yazdığımda sorun yok.

ama bana virgülden sonraki değer lazım

0.00
0.01
0.02
.
.
.
1.01
1.02
1.03

gibi.
word değişken değeri yukarıdaki gibi olabilirmi. olursada verimli olurmu?

muhittin_kaplan

ete hocam protonda öyle bir ayrım yok.float ı 4 byte olarak ardışık adreslere yazar.

isikyasar, hocam http://www.compile-it.com/protonds/proton_ds_userguide.pdf adresindeki proton compiler ın user manue ini indiriniz ve oradaki örnekleri deneyiniz.

isikyasar