[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Описывал два свои сегмента, в одном размещал константы, разрешенные изменять прользователям, в другом калибровочные (заводские) константы:
добавка к *.xls файлу:
-! EEPROM memory -!
-Z(ZPAGE)EEPROM1=0-FF
-Z(ZPAGE)EEPROM2=100-1FF
описание переменных в файле ee_def.c:
//*******************************//
#pragma memory = dataseg(EEPROM1)
char No_Use_Byte1;
char CycleCfg;
char AddCorr[3];
struct LvlConst {
int HighLvl;
int LowLvl;
};
struct LvlConst CalcConst[3];
struct LvlConst Threshold[3];
.....
int EEp1CRC;
#pragma memory = default
//*******************************//
#pragma memory = dataseg(EEPROM2)
struct CfgConst {
float MulConst;
float AddConst;
};
struct CfgConst AbsConst[3][3];
char ProdYear[2];
char ProdMonth;
char SerialNum[3];
......
int EEp2CRC;
#pragma memory = default
//*******************************//
Макросы не применял, работал с EEPROM-ом через свои процедуры:
char WriteEEp1 (char Addr,char Val);
char WriteEEp2 (char Addr,char Val);
char ReadEEp1 (char Addr);
char ReadEEp2 (char Addr);
При линковке не обращал внимания на сообщения:
Linking...
Warning[18]: Segment RSTACK overlaps segment EEPROM2
Warning[18]: Segment CSTACK overlaps segment EEPROM2
Работать было достаточно удобно и никаких проблем при этом не возникало. Успехов!
E-mail: info@telesys.ru