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

1.9.1 Регистры eecon1, eecon2

Регистр EECON1 содержит биты управления косвенной записи/чтения EEPROM памяти данных и FLASH памяти программ. Регистр EECON2 физически не реализован, он используется только при операциях записи с целью предотвращения случайной записи.

Значение бита EEPGD в регистре EECON1 определяет тип памяти, к которой будет выполнено обращение. Если EEPGD = 0, то операции относятся к EEPROM памяти данных. Когда EEPGD=1, обращение происходит к FLASH памяти программ.

В операции чтения используется только один дополнительный бит RD, инициализирующий операцию чтения из указанной памяти. Установив бит RD в '1', значение ячейки памяти будет доступно в регистре данных. Бит RD не может быть сброшен программно в '0', он сбрасывается автоматически по окончании операции чтения. При чтении из EEPROM памяти данные будут доступны в регистре EEDATA в следующем машинном цикле, после установки бита RD. При чтении из FLASH памяти программ, данные будут доступны в регистре EEDATA:EEDATH на втором машинном цикле, после установки бита RD.

В операции записи используется два служебных бита WR, WREN и два бита статуса WRERR, EEIF. Бит WREN применяется для разрешения/запрещения операции записи (WREN = 0 - операция записи запрещена). Перед выполнением записи бит WREN необходимо установить в '1'. Бит WR предназначен для инициализации записи, он аппаратно сбрасывается в '0' по завершении операции записи. Флаг прерывания EEIF устанавливается в '1' по завершении записи. Этот флаг должен быть сброшен программно в '0' перед установкой бита WR.

Для EEPROM памяти данных:

После установки битов WREN, WR в '1' стирается, указанная в регистре EEADR, ячейка EEPROM памяти, а затем происходит запись данных из регистра EEDATA. Операция записи сопровождается выполнением кода программы. По завершении записи устанавливается флаг прерывания EEIF в '1'.

Для FLASH памяти программ:

После установки битов WREN, WR в '1' микроконтроллер приостанавливает выполнение программы. Стирается ячейка памяти программ, указанная в регистре EEADRH:EEADR, затем происходит запись данных из регистра EEDATH:EEDATA. По завершении записи устанавливается флаг прерывания EEIF в '1', а микроконтроллер продолжит выполнять код программы.

Бит WRERR указывает, что произошел сброс микроконтроллера PIC16F877 во время выполнения операции записи. Бит WRERR устанавливается в '1', если во время выполнения записи данных произошел сброс по сигналу -MCLR или по переполнению сторожевого таймера WDT в нормальном режиме. Проверив состояние бита WREER, пользователь может повторить запись (регистры EEDATA и EEADR не изменяют своего значения). Содержимое регистров данных, адреса и бит EEPGD не изменяется после сброса по сигналу -MCLR, по переполнению сторожевого таймера WDT в нормальном режиме.

Ниже приводится назначение каждого из 8 битов регистра. Здесь и далее используются следующие обозначения:

  • R – чтение бита;

  • W – запись бита;

  • U – не реализовано, читается как «0»;

  • -n – значение после POR;

  • -x – неизвестное значение после POR.

Регистр EECON1 (адрес 18Ch)

R/W–x

U–0

U–0

U–0

R/W–x

R/W–0

R/S–0

R/S–0

EEPGD

WRERR

WREN

WR

RD

Бит 7

Бит 6

Бит 5

Бит 4

Бит З

Бит 2

Бит 1

Бит 0

Бит 7:

EEPGD: Бит выбора EEPROM память данных/FLASH память программ

0 = EEPROM память данных (бит не должен изменяться во время выполнения операции чтения/записи)

1 = FLASH память программ

Бит 6:

Бит 5:

Бит 4:

Не используются: читаются как '0'

Бит 3:

WRERR: Флаг ошибки записи данных

0 = запись завершена

1 = запись прервана (произошел один из сбросов: по сигналу -MCLR, по переполнению WDT в нормальном режиме)

Бит 2:

WREN: Разрешение записи данных

0 = запись запрещена

1 = запись разрешена

Бит 1:

WR: Инициализировать запись данных (программно может быть только установлен в '1')

0 = запись завершена

1 = инициализировать запись (сбрасывается в '0' аппаратно)

Бит 0:

RD: Инициализировать чтение данных (программно может быть только установлен в '1')

0 = запись завершена

1 = инициализировать чтение (сбрасывается в '0' аппаратно)

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