Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PIC16F877.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.15 Mб
Скачать

1.9.2 Чтение из eeprom памяти данных

Для чтения из EEPROM памяти необходимо только записать адрес в регистр EEADR и сбросить бит EEPGD в '0'. После установки в '1' бита RD данные будут доступны в регистре EEDATA на следующем машинном цикле. Данные в регистре EEDATA сохраняются до выполнения следующей операции чтения или записи в EEDATA.

Рекомендованная последовательность действий при чтении из EEPROM памяти данных:

  1. Записать адрес в регистр EEADR. Проверьте, что записанный адрес корректен для данного типа микроконтроллера.

  2. Сбросить в '0' бит EEPGD для обращения к EEPROM памяти данных.

  3. Инициализировать операцию чтения установкой бита RD в '1'.

  4. Прочитать данные из регистра EEDATA.

Пример работы с EEPROM памяти приведён ниже в листинге п/п «RD_EEPROM».

;========================== RD_EEPROM ============================

; П/П считывания измерений EEPROM

; Входные параметры: ADRES – значение адреса считываемой ячейки EEPROM

; Выходные параметры: RESUL - считанное значение из EEPROM

; ==================================================================

RD_EEPROM:

bcf INTCON,GIE ;ЗАПРЕТ ВСЕХ ПРЕРЫВАНИЙ

movf ADRES,W ;ч/з ADRES из вне передаётся значение ячейке EEADR

bcf STATUS,RP0 ;2-банк

bsf STATUS,RP1

movf ADRES,W ; W = ADRES

movwf EEADR ;загрузить EEADR значением ADRES

bsf STATUS,RP0 ;3-банк

bcf EECON1,7 ;EEPGD=0(бит выбора между EEPROM и FLASH-

;памяти программ)

bsf EECON1,RD ;разрешить чтение

bcf STATUS,RP0 ;2-банк

movf EEDATA,W ;чтение из EEPROM(W=EEDATA)

bcf STATUS,RP1 ;0-банк

movwf RESUL ;результат в RESUL

bsf INTCON,GIE ;РАЗРЕШЕНИЕ ВСЕХ ПРЕРЫВАНИЙ

return

1.9.3 Запись в eeprom память данных

Запись данных в EEPROM память несколько сложнее чтения. Адрес ячейки EEPROM памяти и записываемые данные должны быть помешены в соответствующие регистры специального назначения, бит EEPGD сбрасывается в '0'. Бит WREN должен всегда равняться нулю, кроме непосредственной записи в EEPROM память. Бит WR может быть установлен в '1' только, если бит WREN был установлен в предыдущих командах, т.е. биты WR, WREN не могут устанавливаться в '1' одной командой. Бит WREN должен быть сброшен в '0' после инициализации записи (на процесс записи он не влияет).

Перед записью в EEPROM память должна быть выполнена обязательная последовательность команд, предотвращающая случайную запись. Обязательная последовательность выполняется при выключенных прерываниях.

Рекомендованная последовательность действий при записи в EEPROM память:

  1. Если шаг 10 не был выполнен, то необходимо проверить, что не происходит запись (WR=0).

  2. Записать адрес в регистр EEADR. Проверьте, что записанный адрес корректен для данного типа микроконтроллера.

  3. Записать 8-разрядное значение в регистр EEDATA.

  4. Сбросить в '0' бит EEPGD для обращения к EEPROM памяти данных.

  5. Установить бит WREN в '1', разрешив запись в EEPROM память.

  6. Запретить прерывания, если они разрешены.

  7. Выполнить обязательную последовательность из пяти команд:

  • Запись значения 55h в регистр EECON2 (две команды, сначала в W затем в EECON2);

  • Запись значения ААh в регистр EECON2 (две команды, сначала в W затем в EECON2);

  • Установить бит WR в '1'.

  1. Разрешить прерывания (если необходимо).

  2. Сбросить бит WREN в '0'.

  3. После завершения цикла записи сбрасывается в '0' бит WR, устанавливается в '1' флаг прерывания EEIF (сбрасывается программно). Если шаг 1 не выполняется, то необходимо проверить состояние битов EEIF, WR перед началом записи.

Пример работы с EEPROM памяти приведён на рисунке 1.3 в листинге п/п «WR_EEPROM».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]