Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Подскажите. Сохранение переменной во внутренней EEPROM
555serg Дата: Сб, 15.09.2012, 14:57  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 41
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Здравствуйте. Снова возник вопрос, подскажите кто знает. Возникла необходимость сохранения переменной во внутренней памяти EEPROM микроконтроллера PIC16F877A , чтобы после обесточивания , и дальнейшего включения , можно было воспользоваться некоторыми переменными. Есть ли возможность , или оператор для сохранения в памяти десятичного значения,то есть больше чем 256 , интересует максимальное значение соответствующее десятибитному результату преобразования АЦП. Как я понимаю регистры-ачейки памяти у нас восьмибитные, а здесь - нужно задействовать все десять бит. Пробовал при помощи оператора DIG , с последующим сохранением каждого отдельно полученного разряда оператором WRITE , а обратно оператором READ , дальше применяя нехитрые арифметические операции преобразования для восстановления разбитого числа, как то то же не получается. Спасибо за ответы.
Сообщение отредактировал 555serg - Вс, 16.09.2012, 10:19
ЯНДЕКС Дата: 15.09.2012
mikhail09p Дата: Вс, 16.09.2012, 21:07  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Вот как я делаю:
EData Byte 5, Byte 90, Float 3, Float 1, Byte 9, Byte 20, Byte 0, Byte 0, Byte 30, Byte 0
Только читать нужно аккуратно, учитывая размер. То есть, первое число по адресу 0, второе - 1, третье - 2, четвёртое - 6, пятое - 10 и т. д.
Это начальные значения. А потом в программе просто пишешь EWrite 6, [Ru] , примером. И, если у тебя Dim Ru As Float или DWord то оно корректно пропишется в четырёх ячейках ЕЕПРОМ. И читаешь Ru = ERead 6
http://terrarus.ucoz.ru/proton_plus_ide/index.html

Сообщение отредактировал mikhail09p - Вс, 16.09.2012, 21:18
555serg Дата: Пн, 17.09.2012, 15:47  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 41
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Это на языке Протон, я так понимаю, мне очень нужно на Basik Pro. Все равно спасибо , подумаю на счет массива. Есть еще мысль , использовать для этого связку, READCODE - WRITECODE , надеюсь компилятор сам разобьет и разложит в ячейках нужное мне число.

Добавлено (17.09.2012, 15:47)
---------------------------------------------
Спасибо всем за активность , разобрался со своей проблемкой. Тот способ, которым пользовался изначально ( оператор DIG , далее поразрядное сохранение трех значений оператором WRITE , затем извлечение этих чисел оператором READ с последующим арифметическим восстановлением ранее разбитого числа) - верный , ошибочно был указан размер одной переменной , вместо WORD ,было BYTE , и в итоге после процесса восстановления числа его снова обрезало ( оставались младшие восемь разрядов).

Сообщение отредактировал 555serg - Вс, 16.09.2012, 22:35
  • Страница 1 из 1
  • 1
Поиск: