реклама на сайте
подробности

 
 
> AT89S8253 & Keil (C51) & EEPROM, проблема с размещением float в EEPROM
SSB777
сообщение Nov 13 2006, 07:19
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 16-10-06
Пользователь №: 21 343



Господа, помогите советом
Суть проблемы:
устройство на контроллере AT89S8253, программа на СИ пишется в Keil`e

во внутренней EEPROM необходимо хранить информацию - при размещении в EEPROM (xdata) переменных типа char или int все ОК! а вот при попытке разместить переменную типа float полная засада sad.gif

обявления
Код
sfr WMCON = 0x96;   /* Watchdog and Memory Control Register */

#define EEMEN  0x08  /* Internal EEPROM Access Enable: 1=Enabled */
#define EEMWE  0x10  /* Internal EEPROM Write Enable: 1=Enabled */
#define EEMds  0xE7  /* 11100111b Internal EEPROM Access&Write Disable */

float xdata Test;


запись (тупо, для примера)

Код
void WriteTest(void)
{
WMCON=WMCON|EEMEN;
WMCON=WMCON|EEMWE;  
Test=1.1; //0.028941;
WMCON=WMCON&EEMds;  
while (1) { if ((WMCON&0x2)==0x2) break; }
}


чтение

Код
float ReadTest(void)
{
float TempVariable;
WMCON=WMCON|EEMEN;
WMCON=WMCON|EEMWE;  
TempVariable=Test;
WMCON=WMCON&EEMds;  
while (1) { if ((WMCON&0x2)==0x2) break; }
return TempVariable;
}


в результате читаеся что угодно но только не то что записывалось

Сообщение отредактировал SSB777 - Nov 13 2006, 07:25


--------------------
Самое страшное животное - ЖАБА. Это сколько же людей она задушила!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSB777
сообщение Nov 13 2006, 10:00
Сообщение #2





Группа: Участник
Сообщений: 10
Регистрация: 16-10-06
Пользователь №: 21 343



Посмотрел, что Keil делает:
Код
; FUNCTION WriteTest (BEGIN)
0000 439608            ORL     WMCON,#08H
0003 439610            ORL     WMCON,#010H
0006 900000      E     MOV     DPTR,#TestVAR
0009 120000      E     LCALL   ?C?LSTKXDATA
000C 3F                DB      03FH
000D 8C                DB      08CH
000E CC                DB      0CCH
000F CD                DB      0CDH
0010 5396E7            ANL     WMCON,#0E7H
0013         ?C0045:
0013 E596              MOV     A,WMCON
0015 30E1FB            JNB     ACC.1,?C0045
0018         ?C0048:
0018 22                RET    
; FUNCTION WriteTest (END)


что за функция "?C?LSTKXDATA" ?


--------------------
Самое страшное животное - ЖАБА. Это сколько же людей она задушила!
Go to the top of the page
 
+Quote Post
vmp
сообщение Nov 13 2006, 11:48
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070



Цитата(SSB777 @ Nov 13 2006, 13:00) *
что за функция "?C?LSTKXDATA" ?


Загрузи код в симулятор и посмотри.

C51: ?C? LOAD AND STORE LIBRARY ROUTINES
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016