Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций ТСИ.doc
Скачиваний:
5
Добавлен:
26.09.2019
Размер:
1.97 Mб
Скачать

Операция косвенной адресации

Каждому регистру FSR соответствует регистр INDF, плюс еще четыре дополнительных регистра, которые определяют, как изменится FSR при выполнении косвенной адресации:

• При косвенной адресации регистр FSRn не изменяется (обращение к INDFn)

• Автодекремент FSRn после косвенной адресации (обращение к POSTDECn)

• Автодекремент FSRn после косвенной адресации (обращение к POSTINCn)

• Автодекремент FSRn перед косвенной адресацией (обращение к PREINCn)

Значение в регистре WREG используется как смешение к FSRn. После косвенной адресации значение WREG и FSR не изменяется (обращение к PLUSWn).

Состояние FSR не отображается в регистре STATUS при использовании автоинкремента или декремента при косвенной адресации. Например, если значение в FSR становиться равным ‘0’, то бит 7 не будет установлен в ‘1’.

Инкремент и декремент FSR затрагивает все 12 разрядов адреса. Например, переполнение FSRnL вызовет автоматическое увеличение FSRnН. Эти особенности позволяют использовать FSRn как указатель программного стека, в дополнение к операциям с таблицами в памяти данных.

Обращение к PLUSWn позволяет реализовать индексированную косвенную адресацию. К регистру FSR добавляется значение регистра WREG, чтобы сформировать адрес ячейки. Значение регистра при этом не изменяется.

Если регистр FSR содержит значение, которое указывает на один из регистров INDFn, косвенной чтение будет давать результат ‘0’, а запись эквивалентна команде NOР (биты регистра STATUS изменяются).

Если адресатом при косвенной адресации являются регистры FSRnН или FSRnL, то операция записи имеет более высокий приоритет, чем автоинкремент и автодекремент.

Механизм косвенной адресации

Работа с памятью рiс16fххх

Память делится на:

- память программ;

- flash-память;

- оперативная память.

Доступ к функциям записи/чтения ЕЕРRОМ памяти данных и FLASH памяти программ выполняется через шесть регистров специального назначения:

- ЕЕDАТА;

- ЕЕDАТН;

- ЕЕАDR;

- ЕЕАDRН;

- ЕЕСОN1;

- ЕЕСОN2.

Операции чтения/записи ЕЕРRОМ памяти данных не приостанавливают выполнение программы. В регистре ЕЕАDR сохраняется адрес ячейки ЕЕРRОМ памяти данных. Данные сохраняются/читаются из регистра ЕЕDАТА. В микроконтроллерах РIС16F873/874 объем ЕЕРRОМ памяти 128 байт. Старший бит адреса в регистре ЕЕАDR всегда должен равняться нулю, потому что не поддерживается циклическая адресация (т.е. ячейка с адресом 0х80 не отображается на 0х00). В РIС16F876/877 объем ЕЕРRОМ памяти данных 256 байт (используются все 8-разрядов регистра ЕЕАDR).

Чтение FLASH памяти программ не влияет на выполнение программы, а во время операции записи выполнение программы приостановлено. В спаренных регистрах ЕЕАDRН:ЕЕАDR сохраняется 13-разрядный адрес ячейки памяти программ, к которой необходимо сделать обращение. Спаренные регистры ЕЕАDRН:ЕЕАDR содержат 14-разрядные данные для записи или отображают значение из памяти программ при чтении. Также как для ЕЕРRОМ памяти данных, в регистры ЕЕАDRН:ЕЕАDR должен быть загружен адрес физически реализованной памяти программ, потому что циклическая адресация не поддерживается.

При работе с памятью не выполняется проверка на правильность и качество записи. Если попадается некорректное значение адреса или данных, то выполняется NОР.

ЕЕРRОМ рассчитана на 100 000 циклов чтения/записи, а flash-память на 10000 циклов.