Ynt: mikroe degısken uyumsuzlugu

Başlatan klax, 06 Mayıs 2014, 20:54:34

klax

arkadaşlar bu kodu derledıgımde hata verıyor.
islemci pic18f252
derleyıcı mikropascalpro 6.1.0
dahili eepromuna longint degıskenını kaydetmek ıcın oluşturduğum procedurde hata
diyor ama her sey doğru gıbı. bırde sız bakın

30 327 Incompatible types ("constant" to "variable by reference") MyProject.mpas

procedure longint_save_eeprom ( var value : longint;var adr : word);
begin
   eeprom_write(adr,lo(value));
   Delay_ms(20);
   eeprom_write(adr+1,hi(value));
   Delay_ms(20);
   eeprom_write(adr+2,higher(value));
   Delay_ms(20);
   eeprom_write(adr+3,highest(value));
   Delay_ms(20);
end;
procedure pid_p_save_eeprom();
begin
  longint_save_eeprom(pid_p,0);
  longint_save_eeprom(4,pid_i);
  longint_save_eeprom(8,pid_d);
end;


mesaj birleştirme:: 06 Mayıs 2014, 21:31:34

mikroe sayfasında hazır buldum calıstı.

function EEPROM_ReadLongint(addr: byte): longint ;
var b : array[4] of byte ;
    p : ^longint ;
begin
     b[0] := EEprom_read(addr) ;
     b[1] := EEprom_read(addr+1) ;
     b[2] := EEprom_read(addr+2) ;
     b[3] := EEprom_read(addr+3) ;
     p := @b ;
     result := p^ ;
end ;

procedure EEPROM_WriteLongint(addr : byte; value : longint);
begin
  EEprom_write(addr+0,lo(value)) ;
  delay_ms(20);
  EEprom_write(addr+1,hi(value)) ;
  delay_ms(20);
  EEprom_write(addr+2,higher(value)) ;
  delay_ms(20);
  EEprom_write(addr+3,highest(value)) ;
  delay_ms(20);
end;
TB2EOS