Пусть значения коэффициентов записываются в EEPROM с самого начала (с адреса 0:0, в том же порядке, в котором они расположены в SRAM), а по адресу $10 записывается контрольный байт, равный $АА. Тогда в программе, приведенной в Приложении 5, в конце процедуры начальной загрузки по метке reset вместо всего фрагмента, начинающегося с заголовка «запись коэффициентов» до команды sei (обязательно перед ней, а не после) добавляется текст листинга 15.9.

Листинг 15.9

;чтение коэффициентов из EEPROM =====

       clr ZH  ;ст. адрес =0

       ldi ZL,$10  ;адрес контрольного байта

       rcall ReadEEP

       cpi temp,$AA  ;если он равен $AA

       breq mm_RK  ;то на чтение в ОЗУ

rcall ZapisK  ;иначе запись значений по умолчанию

mm_RK:  ;извлечение коэфф. из EEPROM в SRAM

        clr ZL  ;начальный адрес EEPROM 0:0

          ldi YL,tZH  ;начальный адрес SRAM, см. основной текст

LoopRK:

        rcall ReadEEP  ;читаем байт

        st Y+,temp  ;складываем в ОЗУ

        inc ZL  ;следующий адрес

        cpi ZL,8  ; всего 4 коэффициента, 8 байт

        brne LoopRK

Процедура записи коэффициентов по умолчанию, обозначенная как ZapisK (листинг 15.10), может быть вставлена в любом месте программы.

Листинг 15.10

ZapisK:

;запись предварительных коэффициентов по умолчанию

       clr ZH  ;с нулевого адреса в EEPR

       clr ZL

; Z tempr=471

       ldi temp,High(471)  ;ст.

       rcall WriteEEP

       inc ZL

       ldi temp,Low(471)  ;мл.

       rcall WriteEEP

       inc ZL

; К tempr=1020

       ldi temp,High(1020)  ;ст.

       rcall WriteEEP

       inc ZL

       ldi temp,Low(1020)  ;мл.

       rcall WriteEEP

       inc ZL

; Z press=12

       ldi temp,0x00  ;ст.

       rcall WriteEEP

       inc ZL

       ldi temp,12  ;мл.

       rcall WriteEEP

       inc ZL

; К prs=916

       ldi temp,High(916)  ;ct.

       rcall WriteEEP

       inc ZL

       ldi temp,Low(916)  ;мл.

       rcall WriteEEP

       ldi ZL,$10

       ldi temp,$AA  ;все Ok, записываем

       rcall WriteEEP  ;контрольный байт

ret

Манипулируя значением контрольного байта, можно даже определить, предварительные у нас коэффициенты записаны, или уже окончательные после калибровки, если вдруг возникает такая задача.

Конечно, иногда может понадобиться запись какой-то константы по ходу работы программы: например, если вы делаете электронный регулятор уровня какой-то величины (громкости, освещения, яркости свечения), то будет очень правильно записывать текущее значение в EEPROM, чтобы при следующем включении восстанавливалось установленное состояние, и пользователю не приходилось бы делать регулировку заново. Только при этом следует учесть, что EEPROM все же не RAM, и запись в нее, во-первых, имеет ограниченное (хотя и большое — до 100 000) число циклов, во-вторых, протекает на много порядков медленнее, а в-третьих, ведет к повышенному расходу энергии. Потому использовать EEPROM как ОЗУ, конечно, не стоит.

Кроме записи констант, наиболее часто EEPROM служит для хранения, например, заводского номера и названия прибора, фамилии конструктора-программиста или названия фирмы-изготовителя, и всякой другой полезной информации (ср. данные, которые извлекает операционная система ПК при подсоединении устройства plug&play, например, через USB). Можно заполнять различные поля, вплоть до серийного номера, и вести базу выпущенных экземпляров. Несложно сделать и так, чтобы эта информация выдавалась «наверх» автоматически при подсоединении прибора к компьютеру с загруженной программой, и текущие значения параметров выводились в отдельном окне — тогда можно обойтись без громоздкой и «прожорливой» индикации и получить компактный компьютерный «прибамбас». Только вот как все эти данные извлекать и при необходимости изменять, не затрагивая самой программы? Для этого существуют последовательные интерфейсы, к рассмотрению которых мы сейчас и перейдем.

<p>Глава 16</p><p>Некоторые последовательные интерфейсы МК</p>

Звонок в офис интернет-провайдера:

— Алло! Это Интернет?

— Да, слушаем Вас!

— Соедините с www.yahoo.com.

smeshok.com

Перейти на страницу:

Поиск

Похожие книги