[an error occurred while processing this directive]
|
* В компиляторе в
* "Make\Linker options ..." вписать:
* -peeloc=2100h
*
* В Сишном файле должно быть:
*
#if sizeof( double ) == sizeof( float )
#asm
dbl2db macro dbl // разбивка double по байтам
db low( float24( dbl ))
db high( float24( dbl ))
db low( highword( float24( dbl )))
endm
#endasm
#else
#asm
dbl2db macro dbl // разбивка double по байтам
db low( dbl )
db high( dbl )
db low( highword( dbl ))
db high( highword( dbl ))
endm
#endasm
#endif
....
#asm
psect eeloc,delta=2,ovrld
global _eeprom_data
st_koef macro K1, Y1, K2, Y2, K3
dbl2db K1
dbl2db Y1
dbl2db K2
dbl2db Y2
dbl2db K3
endm
_eeprom_data
db 100
dbl2db 0.0015
st_koef 11013.85 0.99 -2288.6 2.78 1.0
#endasm
============================
где нибудь в h-ном файле объявляю
typedef struct
{ double k1;
double y1;
double k2;
double y2;
double k3;
} ST_KOEF;
typedef struct // содержимое EEPROM прибора
{ char zyu;
double dyu;
ST_KOEF syu;
} ROM_STRUCTURE;
static ROM_STRUCTURE ee_data @ 0; // фиктивная структура для получения адреса каждого из состaвляющих EEPROM
#define ee_adr( element ) ( (char)&ee_data.element )
и т.д.
E-mail: info@telesys.ru