Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Документ Microsoft Office Word 2007.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
35 Кб
Скачать
☆

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

Чтобы прочитать ячейку памяти данных, необходимо записать адрес в регистровую пару EEADRH:EEADR, сбросить управляющий бит EEPGD (EECON1<7>), и затем установить управляющий бит RD (EECON1<0>). Данные доступны непосредственно на следующем командном цикле, поэтому регистр EEDATA можно считать следующей командой. EEDATA будет хранить это значение до следующей операции чтения, либо пока он не будет перезаписан пользователем (во время операции записи).

Основной процесс показан в Примере 7-1.

Пример 7-1. Чтение данных EEPROM

MOVLW DATA_EE_ADDRH ;

MOVWF EEADRH ; старшие биты адреса читаемой ячейки памяти данных

MOVLW DATA_EE_ADDR ;

MOVWF EEADR ; младшие биты адреса читаемой ячейки памяти данных

BCF EECON1, EEPGD ; указать, доступ что осуществляется к памяти

BCF EECON1, CFGS ; указать, что доступ осуществляется к памяти данных EEPROM

BSF EECON1, RD ; запустить операцию чтения EEPROM

MOVF EEDATA, W ; получить данные (W = EEDATA)

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

Чтобы выполнить запись в ячейку памяти данных EEPROM, сначала необходимо записать адрес в регистровую пару EEADRH:EEADR, а затем записать данные в регистр EEDATA. Для инициации цикла записи необходимо следовать последовательности, приведённой в Примере 7-2.

Пример 7-2. Запись в память данных EEPROM

MOVLW DATA_EE_ADDRH ;

MOVWF EEADRH ; старшие биты адреса записываемой ячейки памяти данных

MOVLW DATA_EE_ADDR ;

MOVWF EEADR ; младшие биты адреса записываемой ячейки памяти данных

MOVLW DATA_EE_DATA ;

MOVWF EEDATA ; значение, записываемое в память данных

BCF EECON1, EPGD ; указать, доступ что осуществляется к памяти

BCF EECON1, CFGS ; указать, что доступ осуществляется к памяти данных EEPROM

BSF EECON1, WREN ; разрешить операции записи

BCF INTCON, GIE ; запретить прерывания

MOVLW 55h ;

Обязательная MOVWF EECON2 ; записать 55h

последова- MOVLW 0AAh ;

тельность MOVWF EECON2 ; записать 0AAh

BSF EECON1, WR ; установить бит WR, чтобы начать запись

BSF INTCON, GIE ; разрешить прерывания

; исполнение кода пользователя

BCF EECON1, WREN ; по завершении записи (установлен флаг EEIF) запретить операции записи

Запись не начнётся, если не следовать последовательности в точности (запись 55h в регистр EECON2, запись 0AAh в EECON2, затем установка бита WR) для каждого байта. Строго рекомендуется отключать прерывания на время этого сегмента кода.

Кроме того, необходимо установить бит WREN в регистре EECON1, чтобы разрешить запись. Этот механизм предотвращает случайную запись в память данных EEPROM из-за непредсказуемого выполнения кода (т.е. выход программного счётчика за пределы программы). Бит WREN должен оставаться сброшенным всё время, исключая запись в EEPROM. Бит WREN не сбрасывается аппаратно.

После инициации последовательности записи регистры EECON1, EEADRH:EEADR и EEDATA не могут быть изменены. Установка бита WR будет запрещена, пока не установится бит WREN. Бит WREN необходимо устанавливать командой, предшествующей установке бита WR. Нельзя установить биты WR и WREN одновременно, т. е. одной командой.

По завершении цикла записи бит WR сбрасывается аппаратно, и устанавливается бит флага прерывания EEPROM (EEIF). Пользователь может или разрешить это прерывание, или опрашивать этот бит. EEIF должен сбрасываться программно.